Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
# Plotting
if not self._noplot:
self._plotting(rank_metric=dat2, results=self.results,
graph_num=self.graph_num, outdir=self.outdir,
figsize=self.figsize, format=self.format,
pheno_pos=self.pheno_pos, pheno_neg=self.pheno_neg)
self._logger.info("Congratulations. GSEApy runs successfully................\n")
if self._outdir is None:
self._tmpdir.cleanup()
return
class SingleSampleGSEA(GSEAbase):
"""GSEA extension: single sample GSEA"""
def __init__(self, data, gene_sets, outdir="GSEA_SingleSample", sample_norm_method='rank',
min_size=15, max_size=2000, permutation_num=0, weighted_score_type=0.25,
scale=True, ascending=False, processes=1, figsize=(7,6), format='pdf',
graph_num=20, no_plot=True, seed=None, verbose=False):
self.data=data
self.gene_sets=gene_sets
self.outdir=outdir
self.sample_norm_method=sample_norm_method
self.weighted_score_type=weighted_score_type
self.scale = scale
self.min_size=min_size
self.max_size=max_size
self.permutation_num=int(permutation_num) if int(permutation_num) > 0 else 0
self.ascending=ascending
self.figsize=figsize
f.write('# scale the enrichment scores by number of genes in the gene sets\n')
f.write('# this normalization has not effects on the final NES, ' + \
'as indicated by Barbie et al., 2009, online methods, pg. 2\n')
else:
f.write('# raw enrichment scores of all data\n')
f.write('# no scale es by numbers of genes in the gene sets\n')
samplesRawES.to_csv(f, sep='\t')
outNESfile = os.path.join(outdir, "gseapy.samples.normalized.es.txt")
with open(outNESfile, 'a') as f:
f.write('# normalize enrichment scores by using the entire data set\n')
f.write('# as indicated by Barbie et al., 2009, online methods, pg. 2\n')
samplesNES.to_csv(f, sep='\t')
return
class Replot(GSEAbase):
"""To reproduce GSEA desktop output results."""
def __init__(self, indir, outdir='GSEApy_Replot', weighted_score_type=1,
min_size=3, max_size=1000, figsize=(6.5,6), graph_num=20, format='pdf', verbose=False):
self.indir=indir
self.outdir=outdir
self.weighted_score_type=weighted_score_type
self.min_size=min_size
self.max_size=max_size
self.figsize=figsize
self.fignum=int(graph_num)
self.format=format
self.verbose=bool(verbose)
self.module='replot'
self.gene_sets=None
self.ascending=False
# init logger
pheno_pos=phenoPos, pheno_neg=phenoNeg)
# Plotting
if not self._noplot:
self._plotting(rank_metric=dat2, results=self.results,
graph_num=self.graph_num, outdir=self.outdir,
figsize=self.figsize, format=self.format,
pheno_pos=phenoPos, pheno_neg=phenoNeg)
self._logger.info("Congratulations. GSEApy ran successfully.................\n")
if self._outdir is None:
self._tmpdir.cleanup()
return
class Prerank(GSEAbase):
"""GSEA prerank tool"""
def __init__(self, rnk, gene_sets, outdir='GSEA_prerank',
pheno_pos='Pos', pheno_neg='Neg', min_size=15, max_size=500,
permutation_num=1000, weighted_score_type=1,
ascending=False, processes=1, figsize=(6.5,6), format='pdf',
graph_num=20, no_plot=False, seed=None, verbose=False):
self.rnk =rnk
self.gene_sets=gene_sets
self.outdir=outdir
self.pheno_pos=pheno_pos
self.pheno_neg=pheno_neg
self.min_size=min_size
self.max_size=max_size
self.permutation_num=int(permutation_num) if int(permutation_num) > 0 else 0
self.weighted_score_type=weighted_score_type
if self._outdir is None: return
out = os.path.join(outdir,'gseapy.{b}.{c}.report.csv'.format(b=module, c=permutation_type))
if self.module == 'ssgsea':
out = out.replace(".csv",".txt")
msg = "# normalize enrichment scores calculated by random permutation procedure (GSEA method)\n" +\
"# It's not proper for publication. Please check the original paper!\n"
self._logger.warning(msg)
with open(out, 'a') as f:
f.write(msg)
res_df.to_csv(f, sep='\t')
else:
res_df.to_csv(out)
return
class GSEA(GSEAbase):
"""GSEA main tool"""
def __init__(self, data, gene_sets, classes, outdir='GSEA_ouput',
min_size=15, max_size=500, permutation_num=1000,
weighted_score_type=1, permutation_type='gene_set',
method='log2_ratio_of_classes', ascending=False,
processes=1, figsize=(6.5,6), format='pdf', graph_num=20,
no_plot=False, seed=None, verbose=False):
self.data = data
self.gene_sets=gene_sets
self.classes=classes
self.outdir=outdir
self.permutation_type=permutation_type
self.method=method
self.min_size=min_size
self.max_size=max_size