Skip to content

Commit 5c58114

Browse files
Jon PalmerJon Palmer
Jon Palmer
authored and
Jon Palmer
committed
fix for EVM path issue and better logging for some modules
1 parent a268d64 commit 5c58114

6 files changed

+31
-11
lines changed

bin/funannotate-functional.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -217,8 +217,8 @@ def runIPRpython(Input):
217217
Transcripts = os.path.join(outputdir, 'annotate_misc', 'genome.transcripts.fasta')
218218
lib.gb2output(genbank, Proteins, Transcripts, Scaffolds)
219219

220-
#get absolute path for all input so there are no problems later
221-
Scaffolds, Proteins, Transcripts, GFF = [os.path.abspath(i) for i in [Scaffolds, Proteins, Transcripts, GFF]] #suggestion via GitHub
220+
#get absolute path for all input so there are no problems later, not using Transcripts yet could be error? so take out here
221+
Scaffolds, Proteins, GFF = [os.path.abspath(i) for i in [Scaffolds, Proteins, GFF]] #suggestion via GitHub
222222
'''
223223
for i in Scaffolds, Proteins, Transcripts, GFF:
224224
i = os.path.abspath(i)

bin/funannotate-p2g.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,13 @@ def tblastnFilter(input, query, cpus, output):
2525
if not os.path.exists(output):
2626
os.makedirs(output)
2727
#start by formatting blast db/dustmasker filtered format
28-
subprocess.call(['dustmasker', '-in', input, '-infmt', 'fasta', '-parse_seqids', '-outfmt', 'maskinfo_asn1_bin', '-out', 'genome_dust.asnb'], cwd = output, stdout = FNULL, stderr = FNULL)
29-
subprocess.call(['makeblastdb', '-in', input, '-dbtype', 'nucl', '-parse_seqids', '-mask_data', 'genome_dust.asnb', '-out', 'genome'], cwd = output, stdout = FNULL, stderr = FNULL)
30-
#okay, now run tblastn using uniprot proteins
31-
subprocess.call(['tblastn', '-num_threads', str(cpus), '-db', 'genome', '-query', query, '-max_target_seqs', '1', '-db_soft_mask', '11', '-threshold', '999', '-max_intron_length', MaxIntron, '-evalue', '1e-10', '-outfmt', '6', '-out', 'filter.tblastn.tab'], cwd = output, stdout = FNULL, stderr = FNULL)
28+
cmd = ['dustmasker', '-in', input, '-infmt', 'fasta', '-parse_seqids', '-outfmt', 'maskinfo_asn1_bin', '-out', 'genome_dust.asnb']
29+
lib.runSubprocess(cmd, output, lib.log)
30+
cmd = ['makeblastdb', '-in', input, '-dbtype', 'nucl', '-parse_seqids', '-mask_data', 'genome_dust.asnb', '-out', 'genome']
31+
lib.runSubprocess(cmd, output, lib.log)
32+
cmd = ['tblastn', '-num_threads', str(cpus), '-db', 'genome', '-query', query, '-max_target_seqs', '1', '-db_soft_mask', '11', '-threshold', '999', '-max_intron_length', MaxIntron, '-evalue', '1e-10', '-outfmt', '6', '-out', 'filter.tblastn.tab']
33+
lib.runSubprocess(cmd, output, lib.log)
34+
3235
#now parse through results, generating a list for exonerate function
3336
with open(os.path.join(output, 'filter.tblastn.tab')) as input:
3437
reader = csv.reader(input, delimiter='\t')

bin/funannotate-predict.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -887,10 +887,14 @@ def __init__(self, prog):
887887

888888
#parse entire EVM command to script
889889
if Exonerate and Transcripts:
890+
Transcripts = os.path.abspath(Transcripts)
891+
Exonerate = os.path.abspath(Exonerate)
890892
evm_cmd = [sys.executable, EVM_script, os.path.join(args.out, 'logfiles', 'funannotate-EVM.log'), str(args.cpus), '--genome', MaskGenome, '--gene_predictions', Predictions, '--protein_alignments', Exonerate, '--transcript_alignments', Transcripts, '--weights', Weights, '--min_intron_length', str(args.min_intronlen), EVM_out]
891893
elif not Exonerate and Transcripts:
894+
Transcripts = os.path.abspath(Transcripts)
892895
evm_cmd = [sys.executable, EVM_script, os.path.join(args.out, 'logfiles', 'funannotate-EVM.log'),str(args.cpus), '--genome', MaskGenome, '--gene_predictions', Predictions, '--transcript_alignments', Transcripts, '--weights', Weights, '--min_intron_length', str(args.min_intronlen), EVM_out]
893896
elif not Transcripts and Exonerate:
897+
Exonerate = os.path.abspath(Exonerate)
894898
evm_cmd = [sys.executable, EVM_script, os.path.join(args.out, 'logfiles', 'funannotate-EVM.log'), str(args.cpus), '--genome', MaskGenome, '--gene_predictions', Predictions, '--protein_alignments', Exonerate, '--weights', Weights, '--min_intron_length', str(args.min_intronlen), EVM_out]
895899
elif not any([Transcripts,Exonerate]):
896900
evm_cmd = [sys.executable, EVM_script, os.path.join(args.out, 'logfiles', 'funannotate-EVM.log'), str(args.cpus), '--genome', MaskGenome, '--gene_predictions', Predictions, '--weights', Weights, '--min_intron_length', str(args.min_intronlen), EVM_out]

bin/funannotate-runEVM.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,8 @@ def safe_run(*args, **kwargs):
7676

7777
#split partitions
7878
lib.log.info("Setting up EVM partitions")
79-
subprocess.call(cmd1, cwd = tmpdir, stdout = FNULL, stderr = FNULL)
79+
lib.runSubprocess(cmd1, tmpdir, lib.log)
80+
#subprocess.call(cmd1, cwd = tmpdir, stdout = FNULL, stderr = FNULL)
8081
#check output
8182
lib.checkinputs(os.path.join(tmpdir, 'partitions_list.out'))
8283

@@ -118,11 +119,14 @@ def safe_run(*args, **kwargs):
118119

119120
#now combine the paritions
120121
lib.log.info("Combining partitioned EVM outputs")
121-
subprocess.call([perl, Combine, '--partitions', 'partitions_list.out', '--output_file_name', 'evm.out'], cwd = tmpdir, stdout = FNULL, stderr = FNULL)
122+
partitioncmd = [perl, Combine, '--partitions', 'partitions_list.out', '--output_file_name', 'evm.out']
123+
lib.runSubprocess(partitioncmd, tmpdir, lib.log)
124+
#subprocess.call([perl, Combine, '--partitions', 'partitions_list.out', '--output_file_name', 'evm.out'], cwd = tmpdir, stdout = FNULL, stderr = FNULL)
122125

123126
#now convert to GFF3
124127
lib.log.info("Converting EVM output to GFF3")
125-
subprocess.call(cmd5, cwd = tmpdir, stdout = FNULL, stderr = FNULL)
128+
lib.runSubprocess(cmd5, tmpdir, lib.log)
129+
#subprocess.call(cmd5, cwd = tmpdir, stdout = FNULL, stderr = FNULL)
126130

127131
#now concatenate all GFF3 files together for a genome then
128132
lib.log.info("Collecting all EVM results")

funannotate.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ def fmtcols(mylist, cols):
3131
for i in range(0,num_lines))
3232
return "\n".join(lines)
3333

34-
version = '0.3.11'
34+
version = '0.3.12'
3535

3636
default_help = """
3737
Usage: funannotate <command> <arguments>

lib/library.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,16 @@ class colr:
5555
GRN = '\033[92m'
5656
END = '\033[0m'
5757
WARN = '\033[93m'
58-
58+
59+
def runSubprocess(cmd, dir, logfile):
60+
logfile.debug(' '.join(cmd))
61+
proc = subprocess.Popen(cmd, cwd=dir, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
62+
stdout, stderr = proc.communicate()
63+
if stdout:
64+
logfile.debug(stdout)
65+
if stderr:
66+
logfile.debug(stderr)
67+
5968
def hashfile(afile, hasher, blocksize=65536):
6069
buf = afile.read(blocksize)
6170
while len(buf) > 0:

0 commit comments

Comments
 (0)