import os
import subprocess as sbprcs
import shutil as shtl
from Bio import SeqIO as SqIO
import matplotlib.pylab as pylb
import matplotlib as mtpltlb
from bx.align import maf
def gt_drs():
cr_wrk_dr = os.getcwd()
hd, tl = os.path.split(cr_wrk_dr)
ast_dr = hd + "/asts"
prgrm_dr = "/usr/local" if not cr_wrk_dr.find("/home/masaki") != -1 else "/home/masaki/prgrms"
cnd_prgrm_dr = "/usr/local/ancnd/envs/rsrch" if not cr_wrk_dr.find("/home/masaki") != -1 else "/home/masaki/prgrms/ancnd/envs/rsrch"
return (cr_wrk_dr, ast_dr, prgrm_dr, cnd_prgrm_dr)
def rmv_al(dr):
for entry in os.listdir(dr):
entry_pth = os.path.join(dr, entry)
if os.path.isfile(entry_pth):
os.unlink(entry_pth)
elif os.path.isdir(entry_pth):
shtl.rmtree(entry_pth)
def rn_cmnd(cmnd):
sb_prcs = sbprcs.Popen(
cmnd,
stdout = sbprcs.PIPE,
shell = True
)
(otpt, er) = sb_prcs.communicate()
rtrn_cd = sb_prcs.wait()
return (otpt, er, rtrn_cd)
def gt_nm_of_prcs():
nslts = os.getenv("NSLOTS")
if nslts is not None:
return int(nslts)
else:
(otpt, er, stts) = rn_cmnd("nproc")
return int(otpt)
def st_dr_cln(dr):
if os.path.isdir(dr):
rmv_al(dr)
else:
os.mkdir(dr)
def int_mtpltlb():
prms = {
"legend.fontsize": "x-large",
"axes.labelsize": "x-large",
"axes.titlesize":"x-large",
"xtick.labelsize":"x-large",
"ytick.labelsize":"x-large"
}
pylb.rcParams.update(prms)
mtpltlb.rcParams['ps.fonttype'] = 42
def gt_prs_algns(algn_fl):
prs_algns = []
for algn in maf.Reader(open(algn_fl)):
prs_algns.append((
gt_algn_e_vl(algn),
algn.components[0].src,
algn.components[1].src
))
return prs_algns
def gt_algn_e_vl(algn):
if "E" in algn.attributes:
return float(algn.attributes["E"])
elif "E1" in algn.attributes:
return float(algn.attributes["E1"])
def gt_prs_hmlg_rlts(inpt_fl):
prs_hmlg_rlts = {}
with open(inpt_fl) as inpt_hndl:
lns = inpt_hndl.readlines()[1 :]
for ln in lns:
hmlg_rlt = ln.split()
prs_hmlg_rlts[hmlg_rlt[0]] = hmlg_rlt[1]
return prs_hmlg_rlts
def is_gn_prdctd(gn, rc_id, rf_sq_fl):
for rc in SqIO.parse(rf_sq_fl, "fasta"):
if rc.id == rc_id:
if str(rc.description).find(gn) != -1:
return True
else:
return False