4f7059f9f4121d2dd19c685b3b144838ef8b0c19 bwick Wed Jun 4 13:53:40 2025 -0700 cbImportScanpy now removes metadata fields that have '*_ontology_term_id'. diff --git src/cbPyLib/cellbrowser/cellbrowser.py src/cbPyLib/cellbrowser/cellbrowser.py index 80ef60a..6cd2717 100755 --- src/cbPyLib/cellbrowser/cellbrowser.py +++ src/cbPyLib/cellbrowser/cellbrowser.py @@ -5378,31 +5378,34 @@ sc.pp.log1p(adata) else: logging.info("Looks like expression matrix has already been log2-ed before") adata = runSafeRankGenesGroups(adata, clusterField, minCells=5) markersExported = False # the quickgenes step later needs to know if a markers.tsv file was created. if not skipMarkers: fname = join(outDir, "markers.tsv") saveMarkers(adata, markerField, nb_marker, fname) markersExported = True ##Save metadata if metaFields is None: metaFields = list(adata.obs.columns.values) - else: + + # Filter out any metadata fields that end with 'ontology_term_id' + metaFields = [f for f in metaFields if not f.endswith("ontology_term_id")] + # check that field names exist for name in metaFields: if name not in adata.obs.keys(): logging.warn('There is no annotation field with the name `%s`.' % name) if name not in ["percent_mito", "n_genes", "n_counts"]: # tolerate missing default fields raise ValueError() metaFields = makeDictDefaults(metaFields, metaLabels) meta_df=pd.DataFrame() for metaKey, metaLabel in iterItems(metaFields): logging.debug("getting meta field: %s -> %s" % (metaKey, metaLabel)) if metaKey not in adata.obs: