from merlin.core import analysistask
[docs]class ExportBarcodes(analysistask.AnalysisTask):
"""
An analysis task that filters barcodes based on area and mean
intensity.
"""
def __init__(self, dataSet, parameters=None, analysisName=None):
super().__init__(dataSet, parameters, analysisName)
if 'columns' not in self.parameters:
self.parameters['columns'] = ['barcode_id', 'global_x',
'global_y', 'cell_index']
if 'exclude_blanks' not in self.parameters:
self.parameters['exclude_blanks'] = True
self.columns = self.parameters['columns']
self.excludeBlanks = self.parameters['exclude_blanks']
[docs] def get_estimated_memory(self):
return 5000
[docs] def get_estimated_time(self):
return 30
[docs] def get_dependencies(self):
return [self.parameters['filter_task']]
def _run_analysis(self):
filterTask = self.dataSet.load_analysis_task(
self.parameters['filter_task'])
barcodeData = filterTask.get_barcode_database().get_barcodes(
columnList=self.columns)
if self.excludeBlanks:
codebook = filterTask.get_codebook()
barcodeData = barcodeData[
barcodeData['barcode_id'].isin(
codebook.get_coding_indexes())]
self.dataSet.save_dataframe_to_csv(barcodeData, 'barcodes', self,
index=False)