def __call__(self, track, slice=None): edir = EXPORTDIR geneset = track method = self.method rst_text = [] for level in self.levels: for fn in ( "%(edir)s/%(method)s/%(geneset)s_%(method)s_%(level)s_heatmap.png", "%(edir)s/%(method)s/%(geneset)s_%(method)s_%(level)s_scvplot.png", "%(edir)s/%(method)s/%(geneset)s_%(method)s_%(level)s_pvalue_vs_length.png" ): f = fn % locals() if not os.path.exists(f): continue rst_text.append(".. figure:: %(f)s" % locals()) if rst_text: rst_text = ''' %(geneset)s +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ''' % locals() + "\n\n".join(rst_text) else: rst_text = "" return odict((("text", rst_text), ))
def __call__(self, track, slice=None): c = "%s_FPKM" % slice table = track + "_levels" if c not in self.getColumns(table): return None statement = '''SELECT %(slice)s_fpkm FROM %(table)s WHERE %(slice)s_fpkm > %(min_fpkm)f''' data = self.getValues(statement) return odict((("fpkm", data), ))
def __call__(self, track, slice=None): vals = self.getValues("""SELECT avg(FPKM) FROM %(track)s_cuffcompare_tracking AS t, %(track)s_cuffcompare_transcripts AS a WHERE code = '%(slice)s' AND a.transfrag_id = t.transfrag_id GROUP BY a.transfrag_id""" % locals()) return odict((("fpkm", vals), ))
def __call__(self, track, slice=None): c = "%s_FPKM" % slice table = track + "_levels" if c not in self.getColumns(table): return None # divide by two to get relative error statement = '''SELECT (%(slice)s_conf_hi - %(slice)s_conf_lo ) / %(slice)s_fpkm / 2 FROM %(table)s WHERE %(slice)s_fpkm > %(min_fpkm)f''' data = self.getValues(statement) return odict((("relative_error", data), ))
def __call__(self, track, slice=None): c = "%s_FPKM" % slice table = track + "_levels" if c not in self.getColumns(table): return None max_fpkm = float( self.getValue('''SELECT max(%(slice)s_fpkm) FROM %(table)s''')) statement = '''SELECT CAST( %(slice)s_fpkm AS FLOAT) / %(max_fpkm)f FROM %(table)s WHERE %(slice)s_fpkm > %(min_fpkm)f''' data = self.getValues(statement) return odict((("percent of max(fpkm)", data), ))
def __call__(self, track, slice=None): annotations = self.mAnnotations table = self.mTable column, where = self.mColumn, self.mWhere if not slice or slice == "all": data = self.getValues( """SELECT %(column)s FROM %(track)s_%(table)s AS d WHERE %(where)s""" % locals() ) else: data = self.getValues( """SELECT %(column)s FROM %(track)s_%(table)s AS d, %(track)s_%(annotations)s as a WHERE d.gene_id = a.gene_id AND a.is_%(slice)s AND %(where)s""" % locals() ) hist, bins = numpy.histogram( data, bins=numpy.arange(0, max(data) + 1, 1)) return odict(list(zip(list(map(str, bins[:-1])), hist)))
def __call__(self, track, slice=None): pair1, pair2 = track a = self.get( '''SELECT test_id, treatment_name, control_name FROM %(slice)s_%(pair1)s_gene_diff WHERE significant''' ) b = self.get( '''SELECT test_id, treatment_name, control_name FROM %(slice)s_%(pair2)s_gene_diff WHERE significant''' ) a = set(map(str, a)) b = set(map(str, b)) return odict(((pair1, len(a)), (pair2, len(b)), ("shared", len(a.intersection(b)))))
def __call__(self, track, slice=None): data = self.getFirstRow( """SELECT round(sum(length*pGC)/sum(length),3) as mean_GC, round(sum(length*CpG_ObsExp)/sum(length),3) as mean_CpG_ObsExp, round(sum(length*pCpG)/sum(length),3) as mean_CpG FROM annotations.genome WHERE id <> 'total' AND id not like 'chrX%%' AND id not like 'chrY%%' AND id not like 'chrW%%' AND id not like 'chrZ%%' AND id not like 'chrM%%' AND id not like '%%random%%' """ ) mColumns = ["GC content", "CpG Obs/Exp", "CpG density"] return odict(list(zip(mColumns, data)))
def __call__(self, track, slice=None): where = self.mWhere select = self.mSelect table = self.mTable if slice == "all" or slice is None: data = self.getFirstRow( "%(select)s FROM %(track)s_%(table)s WHERE %(where)s" % locals()) else: data = self.getFirstRow( "%(select)s FROM %(track)s_%(table)s WHERE %(where)s AND is_%slices" % locals()) return odict(list(zip(self.mColumns, data)))
def __call__(self, track, slice=None): data = self.getValues( """SELECT count(distinct gene_id) as intervals FROM ( SELECT gene_id, CASE WHEN tss_gene_extended_pover1 > 0 THEN 'TSS' WHEN upstream_flank_pover1 >0 THEN 'Upstream' WHEN genes_pover1 > 0 THEN 'Gene' WHEN downstream_flank_pover1 >0 THEN 'Downstream' ELSE 'Intergenic' END AS feature_class FROM %(track)s_merged_ensembl_gene_overlap) group by feature_class order by feature_class asc""" % locals()) result = odict( list( zip(("Downstream", "Gene", "Intergenic", "TSS", "Upstream"), data))) return result
def __call__(self, track, slice=None): table = self.mTable where = self.mWhere data = self.getValues( """ SELECT count(distinct gene_id) as intervals FROM ( SELECT gene_id, CASE WHEN %(where)s > 0 THEN 'TSS' WHEN genes_pover1 > 0 THEN 'Gene' WHEN upstream_flank_pover1 >0 THEN 'Upstream' WHEN downstream_flank_pover1 >0 THEN 'Downstream' ELSE 'Intergenic' END AS feature_class FROM %(track)s%(table)s) group by feature_class order by feature_class asc""" % locals()) result = odict( list( zip(("Downstream", "Gene", "Intergenic", "TSS", "Upstream"), data))) return result
def __call__(self, track, slice=None): edir, method = EXPORTDIR, self.method rst_text = [] geneset = track for level in self.levels: for x, y in itertools.combinations(EXPERIMENTS, 2): filename = "%(edir)s/%(method)s/%(geneset)s_%(method)s_%(level)s_%(x)s_vs_%(y)s_significance.png" % locals( ) if not os.path.exists(filename): continue rst_text.append(''' %(geneset)s %(level)s %(x)s vs %(y)s +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ .. figure:: %(filename)s ''' % locals()) return odict((("text", "\n".join(rst_text)), ))
def __call__(self, track, slice=None): edir = EXPORTDIR level = "gene" geneset = slice method = self.method filename = "%(edir)s/%(method)s/%(geneset)s_%(method)s_%(level)s_fit_%(track)s.png" % locals( ) # fitting information will not exist if there are no replicates if not os.path.exists(filename): return None rst_text = ''' %(level)s %(track)s %(geneset)s +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ .. figure:: %(edir)s/%(method)s/%(geneset)s_%(method)s_%(level)s_fit_%(track)s.png .. figure:: %(edir)s/%(method)s/%(geneset)s_%(method)s_%(level)s_residuals_%(track)s.png ''' % locals() return odict((("text", rst_text), ))
def __call__(self, track, slice=None): statement = '''SELECT SUM(CASE WHEN nover>0 THEN 1 ELSE 0 END) as with, SUM(CASE WHEN nover=0 THEN 1 ELSE 0 END) AS without FROM %(track)s_merged_repeats ''' return odict( list(zip(("with", "without"), self.getFirstRow(statement))))
def __call__(self, track, slice=None): return odict( (('mean', self.getValues('''SELECT mean FROM %(track)s_mappability''')), ))
def __call__(self, track, slice=None): statement = self.getStatement(track, slice) if not statement: return [] return odict( list(zip(("with", "without"), self.getFirstRow(statement))))