Skip to content

Instantly share code, notes, and snippets.

@Xparx
Last active April 7, 2020 21:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Xparx/33372cb9a51f3a993bb4820e0895f525 to your computer and use it in GitHub Desktop.
Save Xparx/33372cb9a51f3a993bb4820e0895f525 to your computer and use it in GitHub Desktop.
import os
import numpy as np
import scipy as sp
import pandas as pd
import scanpy as sc
import scprocessing.pipeline as scpipe
import scprocessing.preprocessing as scpp
import scprocessing.preprocessing.Svensson2019 as Svensson2019
import scprocessing.plotting.anndata as scpl
import dewakss.decomposition as dede
import dewakss.denoise as dewakss
datadir = '../data/master/Paul2015'
adata = sc.read(os.path.join(datadir, "loaded_data.h5ad"))
adata.obs['n_counts'] = adata.X.sum(axis=1).A1
adata.obs['n_genes'] = adata.X.astype(bool).sum(axis=1).A1
sc.pp.filter_cells(adata, min_counts=1000)
sc.pp.filter_genes(adata, min_cells=10)
adata.layers['counts'] = adata.X.copy()
# sc.pp.normalize_per_cell(adata, counts_per_cell_after=np.median(adata.obs['n_counts']))
sc.pp.normalize_per_cell(adata)
dede.ftt(adata)
adata.raw = adata
# ======================================================================
decay = [1]
set_diags = [0]
modes = ['connectivities', 'distances']
denoisetypes = ['mean']
# denoisetypes = ['median']
# symmetrize = [True, False]
symmetrize = [True, False]
hyperp = {}
n = 0
iterations = 1
# neigbours = [3, 5, 10, 20, 50, 75, 100, 125, 150] # , 200]
neigbours = [20, 50, 75, 100, 125, 150, 200]
# neigbours = [100, 200]
# npcss = [dpca.optimal_, 5, 10, 20, 50, 100, 200, 0]
npcss = [5, 10, 15, 20, 25, 50, 100, 200]
# npcss = [13, 5, 10, 20, 50, 100]
# npcss = [200, 0]
sc.pp.pca(adata, n_comps=max(npcss), random_state=0)
hyperp = []
for denoiset in denoisetypes:
for N in neigbours:
for pcs in npcss:
adata = adata.copy()
sc.pp.neighbors(adata, n_neighbors=N, n_pcs=pcs)
for d in decay:
for m in modes:
for s in symmetrize:
for I in set_diags:
print('decay', 'mode', 'sym', 'diag', 'N', 'nPC')
print(d, m, s, I, N, pcs, denoiset)
dewaxer = dewakss.DEWAKSS(adata, iterations=iterations, init_diag=I, set_diag=(I if I == 0 else None), run2best=False, denoise_type=denoiset, decay=d, mode=m, symmetrize=s, verbose=False, max_dense=1.0)
dewaxer.fit(adata)
performance = pd.DataFrame(dewaxer.prediction_).T
performance.index.name = "iteration"
performance.columns = ['MSE', "R2"]
performance = performance.reset_index()
performance['decay'] = d
performance['mode'] = m
performance["symmetrize"] = s
performance["diag"] = I
performance['neighbors'] = N
performance['pcs'] = pcs
performance['denoisetype'] = denoiset
hyperp.append(performance)
performance_data = pd.concat(hyperp)
performance_data = performance_data.reset_index(drop=True)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment