import scanpy as sc, anndata as ad, numpy as np, pandas as pd
from scipy import sparse
from anndata import AnnData
import warnings
import yaml
import os
warnings.filterwarnings('ignore')
sc.settings.verbosity = 3 # verbosity: errors (0), warnings (1), info (2), hints (3)
sc.logging.print_header()
sc.settings.set_figure_params(dpi=30, facecolor='white', figsize=(10,10))
scanpy==1.8.0 anndata==0.8.0 umap==0.4.6 numpy==1.22.2 scipy==1.6.2 pandas==1.2.3 scikit-learn==0.24.1 statsmodels==0.13.5 python-igraph==0.9.1 louvain==0.7.0 leidenalg==0.8.3
outdir = "../data/output"
with open("../data/resources/iPSC_lines_map.yaml", 'r') as f:
iPSC_lines_map = yaml.load(f, Loader=yaml.FullLoader)["lines"]
DownD50 = sc.read_h5ad(outdir+'/adatas/DownD50_raw.h5ad')
UpD50 = sc.read_h5ad(outdir+'/adatas/UpD50_raw.h5ad')
DownD100 = sc.read_h5ad(outdir+'/adatas/DownD100_raw.h5ad')
UpD100_1 = sc.read_h5ad(outdir+'/adatas/UpD100_1_raw.h5ad')
UpD100_2 = sc.read_h5ad(outdir+'/adatas/UpD100_2_raw.h5ad')
DownD250 = sc.read_h5ad(outdir+'/adatas/DownD250_raw.h5ad')
UpD300 = sc.read_h5ad(outdir+'/adatas/UpD300_raw.h5ad')
D50 = ad.concat([DownD50, UpD50],join="inner")
D50.obs_names_make_unique()
D100 = ad.concat([DownD100, UpD100_1, UpD100_2],join="inner")
D100.obs_names_make_unique()
D250 = ad.concat([DownD250, UpD300],join="inner")
D250.obs_names_make_unique()
Multiplexing = ad.concat([D250,D100,D50], join="outer")
Multiplexing.obs_names_make_unique()
Multiplexing
Multiplexing.obs.dataset
AAACCTGAGAGACTAT-1_DownD250 DownD250
AAACCTGCATGGTTGT-1_DownD250 DownD250
AAACCTGTCAGTTAGC-1_DownD250 DownD250
AAACGGGCAGATCGGA-1_DownD250 DownD250
AAACGGGCAGCTATTG-1_DownD250 DownD250
...
TTTGTCATCGCCTGTT-1_UpD50 UpD50
TTTGTCATCGCGTAGC-1_UpD50 UpD50
TTTGTCATCGGTGTTA-1_UpD50 UpD50
TTTGTCATCGTTTATC-1_UpD50 UpD50
TTTGTCATCTCTTGAT-1_UpD50 UpD50
Name: dataset, Length: 34249, dtype: object
Multiplexing.obs.loc[Multiplexing.obs.dataset.isin(["DownD50","UpD50"]),"stage"] = "early"
Multiplexing.obs.loc[Multiplexing.obs.dataset.isin(["DownD100","UpD100_1","UpD100_2"]),"stage"] = "mid"
Multiplexing.obs.loc[Multiplexing.obs.dataset.isin(["DownD250","UpD300"]),"stage"] = "late"
Multiplexing.obs.loc[Multiplexing.obs.dataset.isin(["UpD50","UpD100_1","UpD100_2","UpD300"]),"type"] = "upstream"
Multiplexing.obs.loc[Multiplexing.obs.dataset.isin(["DownD100","DownD50","DownD250"]),"type"] = "downstream"
Multiplexing.obs["id_stage"] = Multiplexing.obs["cellID_newName"].astype("str")+"_"+Multiplexing.obs["stage"].astype("str")
cellID_colors = {}
cellID_newName_colors = {}
cellID_newNames = {}
for line in iPSC_lines_map.keys():
cellID_colors[iPSC_lines_map[line]["oldName"]] = iPSC_lines_map[line]["color"]
cellID_newName_colors[iPSC_lines_map[line]["newName"]] = iPSC_lines_map[line]["color"]
cellID_newNames[iPSC_lines_map[line]["oldName"]] = iPSC_lines_map[line]["newName"]
Multiplexing.obs["cellID"] = Multiplexing.obs["cellID"].astype("category")
Multiplexing.obs["cellID_newName"] = Multiplexing.obs["cellID"].replace(cellID_newNames, inplace=False).astype("category")
Multiplexing.uns["cellID_colors"] = [cellID_colors[line] for line in Multiplexing.obs["cellID"].cat.categories]
Multiplexing.uns["cellID_newName_colors"] = [cellID_newName_colors[line] for line in Multiplexing.obs["cellID_newName"].cat.categories]
stage_colors = {}
type_colors = {}
dataset_colors = {}
cellID_newName_type_colors = {}
with open("../data/resources/iPSC_lines_map.yaml", 'r') as f:
stage_map = yaml.load(f, Loader=yaml.FullLoader)["stage"]
for tpt in stage_map.keys():
stage_colors[tpt] = stage_map[tpt]["color"]
with open("../data/resources/iPSC_lines_map.yaml", 'r') as f:
type_map = yaml.load(f, Loader=yaml.FullLoader)["type"]
for tpt in type_map.keys():
type_colors[tpt] = type_map[tpt]["color"]
with open("../data/resources/iPSC_lines_map.yaml", 'r') as f:
cellID_newName_type_map = yaml.load(f, Loader=yaml.FullLoader)["cellID_newName_type"]
for tpt in cellID_newName_type_map.keys():
cellID_newName_type_colors[tpt] = cellID_newName_type_map[tpt]["color"]
with open("../data/resources/iPSC_lines_map.yaml", 'r') as f:
dataset_map = yaml.load(f, Loader=yaml.FullLoader)["dataset"]
for tpt in dataset_map.keys():
dataset_colors[tpt] = dataset_map[tpt]["color"]
Multiplexing.obs["type"] = Multiplexing.obs["type"].astype("category")
Multiplexing.obs["type"] = Multiplexing.obs["type"].cat.set_categories(["upstream","downstream"], ordered=True)
Multiplexing.obs["stage"] = Multiplexing.obs["stage"].astype("category")
Multiplexing.obs["stage"] = Multiplexing.obs["stage"].cat.set_categories(["early","mid","late"], ordered=True)
Multiplexing.obs["dataset"] = Multiplexing.obs["dataset"].astype("category")
Multiplexing.obs["dataset"] = Multiplexing.obs["dataset"].cat.set_categories(["UpD50","DownD50","UpD100_1","UpD100_2","DownD100","UpD300","DownD250"], ordered=True)
Multiplexing.obs["cellID_newName_type"] = Multiplexing.obs["cellID_newName"].astype("str")+"_"+Multiplexing.obs["type"].astype("str")
Multiplexing.obs["cellID_newName_type"] = Multiplexing.obs["cellID_newName_type"].astype("category")
Multiplexing.obs["cellID_newName_type"] = Multiplexing.obs["cellID_newName_type"].cat.set_categories(["CTL04E_upstream","CTL04E_downstream","CTL02A_upstream","CTL02A_downstream","CTL08A_upstream","CTL08A_downstream","CTL01_upstream","CTL01_downstream"], ordered=True)
Multiplexing.uns["type_colors"] = [type_colors[type] for type in Multiplexing.obs["type"].cat.categories]
Multiplexing.uns["stage_colors"] = [stage_colors[type] for type in Multiplexing.obs["stage"].cat.categories]
Multiplexing.uns["dataset_colors"] = [dataset_colors[type] for type in Multiplexing.obs["dataset"].cat.categories]
Multiplexing.uns["cellID_newName_type_colors"] = [cellID_newName_type_colors[type] for type in Multiplexing.obs["cellID_newName_type"].cat.categories]
#sc.pp.filter_cells(Multiplexing, min_genes=200)
#sc.pp.filter_genes(Multiplexing, min_cells=3)
#Multiplexing
#sc.pp.normalize_total(Multiplexing)
#sc.pp.log1p(Multiplexing)
HVGs=pd.read_csv(outdir+"/HVG_list_intersection_Curated.txt", sep = "\t")["HVG"]
Multiplexing.var["highly_variable"] = Multiplexing.var_names.isin(HVGs)
Multiplexing.var["highly_variable"].sum()
3499
del Multiplexing.obsm
Multiplexing
AnnData object with n_obs × n_vars = 34249 × 33538
obs: 'dataset', 'cellID', 'cellID_newName', 'n_genes_by_counts', 'log1p_n_genes_by_counts', 'total_counts', 'log1p_total_counts', 'total_counts_mt', 'log1p_total_counts_mt', 'pct_counts_mt', 'total_counts_ribo', 'log1p_total_counts_ribo', 'pct_counts_ribo', 'stage', 'type', 'id_stage', 'cellID_newName_type'
var: 'highly_variable'
uns: 'cellID_colors', 'cellID_newName_colors', 'type_colors', 'stage_colors', 'dataset_colors', 'cellID_newName_type_colors'
Multiplexing.write(outdir+'/adatas/MultiplexingPreprocessing_unscaled.h5ad')
Multiplexing
AnnData object with n_obs × n_vars = 34249 × 33538
obs: 'dataset', 'cellID', 'cellID_newName', 'n_genes_by_counts', 'log1p_n_genes_by_counts', 'total_counts', 'log1p_total_counts', 'total_counts_mt', 'log1p_total_counts_mt', 'pct_counts_mt', 'total_counts_ribo', 'log1p_total_counts_ribo', 'pct_counts_ribo', 'stage', 'type', 'id_stage', 'cellID_newName_type'
var: 'highly_variable'
uns: 'cellID_colors', 'cellID_newName_colors', 'type_colors', 'stage_colors', 'dataset_colors', 'cellID_newName_type_colors'