annotate bin/last_wrapper.py @ 0:f6ebec6e235e draft

Uploaded
author petrn
date Thu, 19 Dec 2019 13:46:43 +0000
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
f6ebec6e235e Uploaded
petrn
parents:
diff changeset
1 #!/usr/bin/env python3
f6ebec6e235e Uploaded
petrn
parents:
diff changeset
2 '''
f6ebec6e235e Uploaded
petrn
parents:
diff changeset
3 wrapper for last program
f6ebec6e235e Uploaded
petrn
parents:
diff changeset
4 run last with BlastTab+ output and return mgblast like formated output
f6ebec6e235e Uploaded
petrn
parents:
diff changeset
5 last BlastTab+ output column order:
f6ebec6e235e Uploaded
petrn
parents:
diff changeset
6 1 query name
f6ebec6e235e Uploaded
petrn
parents:
diff changeset
7 2 reference name
f6ebec6e235e Uploaded
petrn
parents:
diff changeset
8 3 percent identity
f6ebec6e235e Uploaded
petrn
parents:
diff changeset
9 4 alignment length
f6ebec6e235e Uploaded
petrn
parents:
diff changeset
10 5 mismatches
f6ebec6e235e Uploaded
petrn
parents:
diff changeset
11 6 gap opens
f6ebec6e235e Uploaded
petrn
parents:
diff changeset
12 7 query start
f6ebec6e235e Uploaded
petrn
parents:
diff changeset
13 8 query end
f6ebec6e235e Uploaded
petrn
parents:
diff changeset
14 9 reference start
f6ebec6e235e Uploaded
petrn
parents:
diff changeset
15 10 reference end
f6ebec6e235e Uploaded
petrn
parents:
diff changeset
16 11 e-value
f6ebec6e235e Uploaded
petrn
parents:
diff changeset
17 12 bitscore
f6ebec6e235e Uploaded
petrn
parents:
diff changeset
18 13 length of query
f6ebec6e235e Uploaded
petrn
parents:
diff changeset
19 14 length of reference sequence
f6ebec6e235e Uploaded
petrn
parents:
diff changeset
20 (accordin lastal manual - more column may be added in future)
f6ebec6e235e Uploaded
petrn
parents:
diff changeset
21
f6ebec6e235e Uploaded
petrn
parents:
diff changeset
22 Needed mgblast order:
f6ebec6e235e Uploaded
petrn
parents:
diff changeset
23
f6ebec6e235e Uploaded
petrn
parents:
diff changeset
24 qseqid 1 -> 1
f6ebec6e235e Uploaded
petrn
parents:
diff changeset
25 qlen 2 -> 13
f6ebec6e235e Uploaded
petrn
parents:
diff changeset
26 qstart 3 -> 7
f6ebec6e235e Uploaded
petrn
parents:
diff changeset
27 qend 4 -> 8
f6ebec6e235e Uploaded
petrn
parents:
diff changeset
28 sseqid 5 -> 2
f6ebec6e235e Uploaded
petrn
parents:
diff changeset
29 slen 6 -> 14
f6ebec6e235e Uploaded
petrn
parents:
diff changeset
30 sstart 7 -> 9
f6ebec6e235e Uploaded
petrn
parents:
diff changeset
31 send 8 -> 10
f6ebec6e235e Uploaded
petrn
parents:
diff changeset
32 pident 9 -> 3
f6ebec6e235e Uploaded
petrn
parents:
diff changeset
33 bitscore 10-> 12
f6ebec6e235e Uploaded
petrn
parents:
diff changeset
34 evalue 11-> 11
f6ebec6e235e Uploaded
petrn
parents:
diff changeset
35 sstrand 12-> must be evaluated!
f6ebec6e235e Uploaded
petrn
parents:
diff changeset
36
f6ebec6e235e Uploaded
petrn
parents:
diff changeset
37 '''
f6ebec6e235e Uploaded
petrn
parents:
diff changeset
38 import subprocess
f6ebec6e235e Uploaded
petrn
parents:
diff changeset
39 import sys
f6ebec6e235e Uploaded
petrn
parents:
diff changeset
40 last_command = " ".join(["lastal"] + sys.argv[1:])
f6ebec6e235e Uploaded
petrn
parents:
diff changeset
41 p = subprocess.Popen(last_command, shell=True, stdout=subprocess.PIPE)
f6ebec6e235e Uploaded
petrn
parents:
diff changeset
42 for j in p.stdout:
f6ebec6e235e Uploaded
petrn
parents:
diff changeset
43 line = j.decode()
f6ebec6e235e Uploaded
petrn
parents:
diff changeset
44 if line[0] != "#":
f6ebec6e235e Uploaded
petrn
parents:
diff changeset
45 items = line.split("\t")
f6ebec6e235e Uploaded
petrn
parents:
diff changeset
46 strand = "+" if int(items[6]) < int(items[7]) else "-"
f6ebec6e235e Uploaded
petrn
parents:
diff changeset
47 out = "\t".join([items[i - 1]
f6ebec6e235e Uploaded
petrn
parents:
diff changeset
48 for i in [1, 13, 7, 8, 2, 14, 9, 10, 3, 12, 11]
f6ebec6e235e Uploaded
petrn
parents:
diff changeset
49 ]) + "\t" + strand + "\n"
f6ebec6e235e Uploaded
petrn
parents:
diff changeset
50 print(out, end="")