def main(): gn = Granatum() n_neighbors = gn.get_arg('nNeighbors', 15) neighbor_method = gn.get_arg('neighborMethod', 'gauss') assay = gn.get_import('assay') adata = sc.AnnData(np.array(assay.get('matrix')).transpose()) adata.var_names = assay.get('geneIds') adata.obs_names = assay.get('sampleIds') sc.pp.neighbors(adata, n_neighbors=n_neighbors, use_rep='X', method=neighbor_method) sc.tl.dpt(adata, n_branchings=1) gn._pickle(adata, 'adata') # dpt_groups for spec in [{ 'col': 'dpt_order', 'caption': 'Cell order' }, { 'col': 'dpt_groups', 'caption': 'Cell groups' }]: fig = plt.figure() sc.pl.diffmap(adata, color=spec['col']) gn.add_current_figure_to_results(spec['caption']) gn.export_statically( dict( zip(adata.obs_names.tolist(), adata.obs[spec['col']].values.tolist())), spec['col']) gn.commit()
def main(): tic = time.perf_counter() gn = Granatum() assay = gn.get_import('assay') sample_ids = assay.get('sampleIds') group_dict = gn.get_import('groupVec') group_vec = pd.Categorical([group_dict.get(x) for x in sample_ids]) num_groups = len(group_vec.categories) figheight = 400 * (math.floor((num_groups - 1) / 7) + 1) adata = sc.AnnData(np.array(assay.get('matrix')).transpose()) adata.var_names = assay.get('geneIds') adata.obs_names = assay.get('sampleIds') adata.obs['groupVec'] = group_vec sc.pp.neighbors(adata, n_neighbors=20, use_rep='X', method='gauss') try: sc.tl.rank_genes_groups(adata, 'groupVec', n_genes=100000) sc.pl.rank_genes_groups(adata, n_genes=20) gn.add_current_figure_to_results('One-vs-rest marker genes', dpi=75, height=figheight) gn._pickle(adata, 'adata') rg_res = adata.uns['rank_genes_groups'] for group in rg_res['names'].dtype.names: genes_names = [str(x[group]) for x in rg_res['names']] scores = [float(x[group]) for x in rg_res['scores']] newdict = dict(zip(genes_names, scores)) gn.export(newdict, 'Marker score ({} vs. rest)'.format(group), kind='geneMeta') newdictstr = [ '"' + str(k) + '"' + ", " + str(v) for k, v in newdict.items() ] gn.export("\n".join(newdictstr), 'Marker score {} vs rest.csv'.format(group), kind='raw', meta=None, raw=True) # cluster_assignment = dict(zip(adata.obs_names, adata.obs['louvain'].values.tolist())) # gn.export_statically(cluster_assignment, 'cluster_assignment') toc = time.perf_counter() time_passed = round(toc - tic, 2) timing = "* Finished marker gene identification step in {} seconds*".format( time_passed) gn.add_result(timing, "markdown") gn.commit() except Exception as e: plt.figure() plt.text(0.01, 0.5, 'Incompatible group vector due to insufficent cells') plt.text(0.01, 0.3, 'Please retry the step with a different group vector') plt.axis('off') gn.add_current_figure_to_results('One-vs-rest marker genes') gn.add_result('Error = {}'.format(e), "markdown") gn.commit()