Example #1
0
def get_processor_data(output_dir, return_path=False):
    path = osp.join(output_dir, cytokit_io.get_processor_data_path())
    proc_data = exec.read_processor_data(path)
    if return_path:
        return proc_data, path
    else:
        return proc_data
Example #2
0
 def processor_data_summary(self):
     logging.info('Running processor data summary operation')
     processor_data_path = osp.join(self.data_dir, cytokit_io.get_processor_data_path())
     nb_name = 'processor_data_analysis.ipynb'
     nb_output_path = osp.join(self.data_dir, osp.dirname(processor_data_path), 'processor_data_analysis.ipynb')
     nb_params = {'processor_data_path': processor_data_path}
     core.run_nb(nb_name, nb_output_path, nb_params)
     logging.info('Processor data summary complete; view results with `jupyter notebook %s`', nb_output_path)
Example #3
0
def record_processor_data(data, output_dir):
    """Save processor data as json file"""
    path = osp.join(output_dir, cytokit_io.get_processor_data_path())
    if not osp.exists(osp.dirname(path)):
        os.makedirs(osp.dirname(path), exist_ok=True)

    # If a data file already exists, merge the two preferring newer entries
    if osp.exists(path):
        past_data = read_processor_data(path)
        past_data.update(data)
        data = past_data

    # Ensure that values in data dict are lists of dicts (not DataFrames already
    # since they will not serialize correctly)
    data = {
        k: v.to_dict(orient='records') if isinstance(v, pd.DataFrame) else v
        for k, v in data.items()
    }

    # Use pandas for serialization as it has built-in numpy type converters
    pd.Series(data).to_json(path, orient='index')
    return path