本文整理汇总了Python中gimmemotifs.config.MotifConfig.get_template_dir方法的典型用法代码示例。如果您正苦于以下问题:Python MotifConfig.get_template_dir方法的具体用法?Python MotifConfig.get_template_dir怎么用?Python MotifConfig.get_template_dir使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类gimmemotifs.config.MotifConfig
的用法示例。
在下文中一共展示了MotifConfig.get_template_dir方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: _write_report
# 需要导入模块: from gimmemotifs.config import MotifConfig [as 别名]
# 或者: from gimmemotifs.config.MotifConfig import get_template_dir [as 别名]
def _write_report(outdir, ids, tree, clusters):
config = MotifConfig()
env = jinja2.Environment(loader=jinja2.FileSystemLoader([config.get_template_dir()]))
template = env.get_template("cluster_template.jinja.html")
result = template.render(motifs=ids)
with open(os.path.join(outdir, "cluster_report.html"), "w") as f:
f.write(result)
f = open(os.path.join(outdir, "cluster_key.txt"), "w")
for motif_id in ids:
f.write("%s\t%s\n" % (motif_id[0], ",".join([x["alt"] for x in motif_id[2]])))
f.close()
f = open(os.path.join(outdir, "clustered_motifs.pwm"), "w")
if len(clusters) == 1 and len(clusters[0][1]) == 1:
f.write("%s\n" % clusters[0][0].to_pwm())
else:
for motif in tree.get_clustered_motifs():
f.write("%s\n" % motif.to_pwm())
f.close()
示例2: cluster
# 需要导入模块: from gimmemotifs.config import MotifConfig [as 别名]
# 或者: from gimmemotifs.config.MotifConfig import get_template_dir [as 别名]
def cluster(args):
revcomp = not args.single
outdir = os.path.abspath(args.outdir)
if not os.path.exists(outdir):
os.mkdir(outdir)
trim_ic = 0.2
clusters = []
motifs = pwmfile_to_motifs(args.inputfile)
if len(motifs) == 1:
clusters = [[motifs[0], motifs]]
else:
tree = cluster_motifs(args.inputfile, "total", "wic", "mean", True, threshold=args.threshold, include_bg=True)
clusters = tree.getResult()
ids = []
mc = MotifComparer()
sys.stderr.write("Creating images\n")
for cluster,members in clusters:
cluster.trim(trim_ic)
cluster.to_img(os.path.join(outdir,"%s.png" % cluster.id), format="PNG")
ids.append([cluster.id, {"src":"%s.png" % cluster.id},[]])
if len(members) > 1:
scores = {}
for motif in members:
scores[motif] = mc.compare_motifs(cluster, motif, "total", "wic", "mean", pval=True)
add_pos = sorted(scores.values(),cmp=lambda x,y: cmp(x[1], y[1]))[0][1]
for motif in members:
score, pos, strand = scores[motif]
add = pos - add_pos
if strand in [1,"+"]:
pass
else:
#print "RC %s" % motif.id
rc = motif.rc()
rc.id = motif.id
motif = rc
#print "%s\t%s" % (motif.id, add)
motif.to_img(os.path.join(outdir, "%s.png" % motif.id.replace(" ", "_")), format="PNG", add_left=add)
ids[-1][2] = [dict([("src", "%s.png" % motif.id.replace(" ", "_")), ("alt", motif.id.replace(" ", "_"))]) for motif in members]
config = MotifConfig()
env = jinja2.Environment(loader=jinja2.FileSystemLoader([config.get_template_dir()]))
template = env.get_template("cluster_template.jinja.html")
result = template.render(motifs=ids)
with open(os.path.join(outdir, "cluster_report.html"), "w") as f:
f.write(result.encode('utf-8'))
f = open(os.path.join(outdir, "cluster_key.txt"), "w")
for id in ids:
f.write("%s\t%s\n" % (id[0], ",".join([x["alt"] for x in id[2]])))
f.close()
f = open(os.path.join(outdir, "clustered_motifs.pwm"), "w")
if len(clusters) == 1 and len(clusters[0][1]) == 1:
f.write("%s\n" % clusters[0][0].to_pwm())
else:
for motif in tree.get_clustered_motifs():
f.write("%s\n" % motif.to_pwm())
f.close()
示例3: _create_graphical_report
# 需要导入模块: from gimmemotifs.config import MotifConfig [as 别名]
# 或者: from gimmemotifs.config.MotifConfig import get_template_dir [as 别名]
def _create_graphical_report(inputfile, pwm, background, closest_match, outdir, stats, best_id=None):
"""Create main gimme_motifs output html report."""
if best_id is None:
best_id = {}
logger.debug("Creating graphical report")
class ReportMotif(object):
"""Placeholder for motif stats."""
pass
config = MotifConfig()
imgdir = os.path.join(outdir, "images")
if not os.path.exists(imgdir):
os.mkdir(imgdir)
motifs = read_motifs(pwm, fmt="pwm")
roc_img_file = "%s_roc.%s"
dbpwm = config.get_default_params()["motif_db"]
pwmdir = config.get_motif_dir()
dbmotifs = read_motifs(os.path.join(pwmdir, dbpwm), as_dict=True)
report_motifs = []
for motif in motifs:
rm = ReportMotif()
rm.id = motif.id
rm.id_href = {"href": "#%s" % motif.id}
rm.id_name = {"name": motif.id}
rm.img = {"src": os.path.join("images", "%s.png" % motif.id)}
motif.to_img(os.path.join(outdir, "images/{}.png".format(motif.id)), fmt="PNG")
# TODO: fix best ID
rm.best = "Gimme"#best_id[motif.id]
rm.consensus = motif.to_consensus()
rm.stars = int(np.mean(
[stats[str(motif)][bg].get("stars", 0) for bg in background]
) + 0.5)
rm.bg = {}
for bg in background:
rm.bg[bg] = {}
this_stats = stats.get(str(motif), {}).get(bg)
# TODO: fix these stats
rm.bg[bg]["e"] = "%0.2f" % this_stats.get("enr_at_fpr", 1.0)
rm.bg[bg]["p"] = "%0.2f" % this_stats.get("phyper_at_fpr", 1.0)
rm.bg[bg]["auc"] = "%0.3f" % this_stats.get("roc_auc", 0.5)
rm.bg[bg]["mncp"] = "%0.3f" % this_stats.get("mncp", 1.0)
rm.bg[bg]["roc_img"] = {"src": "images/" + os.path.basename(roc_img_file % (motif.id, bg)) + ".png"}
rm.bg[bg][u"roc_img_link"] = {u"href": "images/" + os.path.basename(roc_img_file % (motif.id, bg)) + ".png"}
rm.histogram_img = {"data":"images/%s_histogram.svg" % motif.id}
rm.histogram_link= {"href":"images/%s_histogram.svg" % motif.id}
match_id = closest_match[motif.id][0]
dbmotifs[match_id].to_img(os.path.join(outdir, "images/{}.png".format(match_id)), fmt="PNG")
rm.match_img = {"src": "images/{}.png".format(match_id)}
rm.match_id = closest_match[motif.id][0]
rm.match_pval = "%0.2e" % closest_match[motif.id][1][-1]
report_motifs.append(rm)
total_report = os.path.join(outdir, "motif_report.html")
star_img = os.path.join(config.get_template_dir(), "star.png")
shutil.copyfile(star_img, os.path.join(outdir, "images", "star.png"))
env = jinja2.Environment(loader=jinja2.FileSystemLoader([config.get_template_dir()]))
template = env.get_template("report_template.jinja.html")
# TODO: title
result = template.render(
motifs=report_motifs,
inputfile=inputfile,
date=datetime.today().strftime("%d/%m/%Y"),
version=__version__,
bg_types=list(background.keys()))
with open(total_report, "wb") as f:
f.write(result.encode('utf-8'))
示例4: GimmeMotifs
# 需要导入模块: from gimmemotifs.config import MotifConfig [as 别名]
# 或者: from gimmemotifs.config.MotifConfig import get_template_dir [as 别名]
class GimmeMotifs(object):
NAME = "gimme_motifs"
SCAN_THRESHOLD = "0.9"
def __init__(self, name=None):
self.config = MotifConfig()
self.server = None
if not name:
name = "%s_%s" % (self.NAME, datetime.today().strftime("%d_%m_%Y"))
self.name = name
# create a directory for all the intermediate and output files
self._setup_output_dir(name)
# setup logging
self._setup_logging()
self.logger.info("%s version %s", self.NAME, GM_VERSION)
self.logger.info("output dir: %s", self.outdir)
# setup the names of the intermediate and output files
self._setup_filenames()
def job_server(self):
try:
self.server.submit(job_server_ok)
except Exception:
self.server = self._get_job_server()
return self.server
def _setup_output_dir(self, name):
if os.path.exists(name):
sys.stderr.write("Output directory {} already exists!\n".format(name))
sys.stderr.write("Resuming a previous run is not yet implemented. Please specify a different name,\n")
sys.stderr.write("or delete this directory if you really want to overwrite it\n")
#sys.exit(1)
else:
try:
os.makedirs(name)
except OSError:
sys.stderr.write("Can't create output directory {}!\n".format(name))
#sys.exit(1)
self.outdir = name
self.tmpdir = os.path.join(self.outdir, "intermediate_results")
self.imgdir = os.path.join(self.outdir, "images")
try:
os.mkdir(self.tmpdir)
os.mkdir(self.imgdir)
except OSError:
pass
star_img = os.path.join(self.config.get_template_dir(), "star.png")
shutil.copyfile(star_img, os.path.join(self.imgdir, "star.png"))
def _setup_logging(self):
self.logger = logging.getLogger('motif_analysis')
self.logger.setLevel(logging.DEBUG)
self.logger.propagate = 0
# nice format
file_formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
screen_formatter = logging.Formatter("%(asctime)s - %(levelname)s - %(message)s")
# Log to file
logfile = os.path.join(self.name, "%s.log" % self.NAME)
fh = logging.FileHandler(logfile, "w")
fh.setLevel(logging.DEBUG)
fh.setFormatter(file_formatter)
self.logger.addHandler(fh)
# Log to screen
sh = logging.StreamHandler(sys.stdout)
sh.setLevel(logging.INFO)
sh.setFormatter(screen_formatter)
self.logger.addHandler(sh)
self.logger.debug("Logging started")
self.logger.info("log: %s", logfile)
def _setup_filenames(self):
basename = os.path.split(self.name)[-1]
self.basename = basename
self.logger.debug("basename: {}".format(basename))
# Um yes, there is a smarter way, I'm sure! ;)
self.input_bed = os.path.join(self.tmpdir, "%s_peakinputfile.bed" % basename)
self.prediction_bed = os.path.join(self.tmpdir, "%s_prediction.bed" % basename)
self.prediction_fa = os.path.join(self.tmpdir, "%s_prediction.fa" % basename)
self.prediction_bg = os.path.join(self.tmpdir, "%s_prediction_background.fa" % basename)
self.validation_bed = os.path.join(self.tmpdir, "%s_validation.bed" % basename)
self.validation_fa = os.path.join(self.tmpdir, "%s_validation.fa" % basename)
self.validation_gff = os.path.join(self.tmpdir, "%s_validation.gff" % basename)
self.predicted_pfm = os.path.join(self.tmpdir, "%s_all_motifs.pfm" % basename)
self.significant_pfm = os.path.join(self.tmpdir, "%s_significant_motifs.pfm" % basename)
#.........这里部分代码省略.........
示例5: cluster_motifs_with_report
# 需要导入模块: from gimmemotifs.config import MotifConfig [as 别名]
# 或者: from gimmemotifs.config.MotifConfig import get_template_dir [as 别名]
def cluster_motifs_with_report(infile, outfile, outdir, threshold, title=None):
# Cluster significant motifs
if title is None:
title = infile
motifs = read_motifs(infile, fmt="pwm")
trim_ic = 0.2
clusters = []
if len(motifs) == 0:
return []
elif len(motifs) == 1:
clusters = [[motifs[0], motifs]]
else:
logger.info("clustering %d motifs.", len(motifs))
tree = cluster_motifs(
infile,
"total",
"wic",
"mean",
True,
threshold=float(threshold),
include_bg=True,
progress=False
)
clusters = tree.getResult()
ids = []
mc = MotifComparer()
img_dir = os.path.join(outdir, "images")
if not os.path.exists(img_dir):
os.mkdir(img_dir)
for cluster,members in clusters:
cluster.trim(trim_ic)
png = "images/{}.png".format(cluster.id)
cluster.to_img(os.path.join(outdir, png), fmt="PNG")
ids.append([cluster.id, {"src":png},[]])
if len(members) > 1:
scores = {}
for motif in members:
scores[motif] = mc.compare_motifs(cluster, motif, "total", "wic", "mean", pval=True)
add_pos = sorted(scores.values(),key=lambda x: x[1])[0][1]
for motif in members:
score, pos, strand = scores[motif]
add = pos - add_pos
if strand in [1,"+"]:
pass
else:
rc = motif.rc()
rc.id = motif.id
motif = rc
#print "%s\t%s" % (motif.id, add)
png = "images/{}.png".format(motif.id.replace(" ", "_"))
motif.to_img(os.path.join(outdir, png), fmt="PNG", add_left=add)
ids[-1][2] = [dict([("src", "images/{}.png".format(motif.id.replace(" ", "_"))), ("alt", motif.id.replace(" ", "_"))]) for motif in members]
config = MotifConfig()
env = jinja2.Environment(loader=jinja2.FileSystemLoader([config.get_template_dir()]))
template = env.get_template("cluster_template.jinja.html")
result = template.render(
motifs=ids,
inputfile=title,
date=datetime.today().strftime("%d/%m/%Y"),
version=__version__)
cluster_report = os.path.join(outdir, "cluster_report.html")
with open(cluster_report, "wb") as f:
f.write(result.encode('utf-8'))
f = open(outfile, "w")
if len(clusters) == 1 and len(clusters[0][1]) == 1:
f.write("%s\n" % clusters[0][0].to_pwm())
else:
for motif in tree.get_clustered_motifs():
f.write("%s\n" % motif.to_pwm())
f.close()
logger.debug("Clustering done. See the result in %s",
cluster_report)
return clusters