from copy import deepcopy
from .plate_to_tables import plate_to_pandas_dataframe
from ..containers.helper_functions import number_to_rowname
[docs]
def plate_to_genesift_sequencing_order_spreadsheet(
plate, output_file, sample_name_function, well_filter=None, direction="row"
):
"""Generate an excel spreadsheet for ordering through Genesift
Parameters
----------
plate
output_file
sample_name_function
A function f(well) => Sample name
well_filter
A function f(well) => True/false
Examples
--------
>>> plate_to_genesift_sequencing_order_spreadsheet(
plate,
output_file="genesift.xls",
sample_name_function= lambda well: data['part_name'] ,
well_filter=lambda well: data.get('part_name', False)
direction='column')
"""
if well_filter is None:
well_filter = lambda w: True
new_plate = deepcopy(plate)
def position_function(well):
return number_to_rowname(well.row) + "%02d" % well.column
def sample_function(well):
return sample_name_function(well) if well_filter(well) else None
new_plate.compute_data_field("Position", position_function)
new_plate.compute_data_field("Sample", sample_function)
dataframe = plate_to_pandas_dataframe(new_plate, direction=direction)
dataframe = dataframe[["Position", "Sample"]]
dataframe = dataframe[[(e is not None) for e in dataframe["Sample"]]]
dataframe.to_excel(output_file, index=False)