def get_reagent_columns(dataset_id): col_field_info = {} for fi in FieldInformation.objects.all().filter( table__in=['smallmolecule','protein','cell','antibody','otherreagent', 'smallmoleculebatch','proteinbatch','cellbatch','antibodybatch','otherreagentbatch']): col_field_info[fi.get_camel_case_dwg_name()] = { 'reagentType': fi.table, 'dwgName': fi.dwg_field_name, 'description': fi.description } data_columns = ( DataColumn.objects.filter(dataset_id=dataset_id) .filter(data_type__in=[ 'small_molecule','cell','protein','antibody','otherreagent']) ) reagent_fields = OrderedDict() meta_field_info = get_listing(DataColumn(),['datacolumn']) for dc in data_columns.order_by('display_order'): specific_name = dc.name field_schema = {} for item in meta_field_info.items(): meta_fi_attr = item[0] meta_fi = item[1]['fieldinformation'] field_schema[meta_fi.get_camel_case_dwg_name()] = ( getattr(dc,meta_fi_attr) ) reagent_fields[specific_name] = field_schema reagent_fields[specific_name]['columns'] = {} for dwg_name in DataSetDataResource2.datapoint_cols[dc.data_type]: col_name = '%s_%s' % (specific_name,dwg_name) reagent_fields[specific_name]['columns'][col_name] = col_field_info.get(dwg_name, {}) return reagent_fields
def get_datapoint_fields(dataset_id): data_columns = ( DataColumn.objects.filter(dataset_id=dataset_id) .exclude(data_type__in=[ 'small_molecule','cell','protein','antibody','otherreagent', 'omero_image']) .exclude(unit__in=['day','hour','minute','second']) ) datapoint_fields = OrderedDict() meta_field_info = get_listing(DataColumn(),['datacolumn']) for dc in data_columns.order_by('display_order'): specific_name = dc.name field_schema = {} for item in meta_field_info.items(): meta_fi_attr = item[0] meta_fi = item[1]['fieldinformation'] field_schema[meta_fi.get_camel_case_dwg_name()] = ( getattr(dc,meta_fi_attr) ) datapoint_fields[specific_name] = field_schema return datapoint_fields
dataset = DataSet(**metadata) logger.info('dataset to save %s' % dataset) dataset.save() logger.debug('read data columns...') col_to_definitions = read_datacolumns(book) small_molecule_col = None col_to_dc_map = {} for i, dc_definition in enumerate(col_to_definitions): dc_definition['dataset'] = dataset if (not 'display_order' in dc_definition or dc_definition['display_order'] == None): dc_definition['display_order'] = i datacolumn = DataColumn(**dc_definition) datacolumn.save() if not small_molecule_col and datacolumn.data_type == 'small_molecule': small_molecule_col = datacolumn logger.debug('datacolumn created: %r' % datacolumn) if datacolumn.worksheet_column: col_to_dc_map[int_for_col( datacolumn.worksheet_column)] = datacolumn logger.debug('final data columns: %s' % col_to_dc_map) logger.debug('read the Data sheet') data_sheet = book.sheet_by_name('Data') for i, label in enumerate(data_sheet.row_values(0)): logger.debug('find datasheet label %r:%r' % (colname(i), label)) if label in meta_columns:
metadata, e))) raise e # Read in the data columns sheet to an array of dict's, # each dict defines a DataColumn. logger.debug('read data columns...') dataColumnDefinitions = readDataColumns(path) # Now that the array of DataColumn dicts is created, # use them to create the DataColumn instances. dataColumns = {} for i,dc in enumerate(dataColumnDefinitions): dc['dataset'] = dataset if(not 'display_order' in dc or dc['display_order']==None): dc['display_order']=i dataColumn = DataColumn(**dc) dataColumn.save() logger.debug(str(('====datacolumn created:', dataColumn))) dataColumns[dataColumn.name] = dataColumn logger.debug('read the Data sheet') sheetname = 'Data' dataSheet = iu.readtable([path, sheetname]) # First, map the sheet column indices to the DataColumns that were created. dataColumnList = {} # Follows are optional columns # Meta columns contain forensic information, all are optional metaColumnDict = {'Control Type':-1, 'batch_id':-1} # What is being studied - at least one is required mappingColumnDict = {
break if not small_mol_col: dc_definitions_found.append(default_reagent_columns['Small Molecule Batch']) logger.info('data column definitions found: %s' % [x['display_name'] for x in dc_definitions_found]) col_to_dc_map = {} first_small_molecule_column = None for i,dc_definition in enumerate(dc_definitions_found): dc_definition['dataset'] = dataset if (not 'display_order' in dc_definition or dc_definition['display_order']==None): dc_definition['display_order']=i datacolumn = DataColumn(**dc_definition) datacolumn.save() if not first_small_molecule_column and datacolumn.data_type == 'small_molecule': first_small_molecule_column = datacolumn logger.debug('datacolumn created: %r' % datacolumn) if datacolumn.worksheet_column: col_to_dc_map[int_for_col(datacolumn.worksheet_column)] = datacolumn logger.debug('final data columns: %s' % col_to_dc_map) read_data(book, col_to_dc_map, first_small_molecule_column, dataset) def read_explicit_reagents(book, dataset): try: reagents_sheet = book.sheet_by_name('Reagents') for row in range(1,reagents_sheet.nrows):