Mercurial > repos > abims-sbr > gffalign
annotate GFFalign.py @ 1:afed7e0cf69e draft default tip
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit ca7b7864d099e092042f21d86cdc3c4552e54632"
author | abims-sbr |
---|---|
date | Fri, 08 Jan 2021 15:25:31 +0000 |
parents | 294f5ba28746 |
children |
rev | line source |
---|---|
0
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
1 #!/usr/bin/python3 |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
2 |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
3 import argparse |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
4 import os |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
5 import gffutils |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
6 from Bio import SeqIO |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
7 |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
8 |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
9 class GeneComp: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
10 # This cass aims to discover the position of the genes in the alignment |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
11 # and to extract informations on the genes characteristics |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
12 |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
13 def __init__(self, ccgene, qstart, qend, otgene, dstart, dend, extract, tol, gattr, output=None): |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
14 # d* / ot* are the db result, q* / cc the query |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
15 # gene are the gene from maf-tab file |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
16 # start, end are the coordinates ''' |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
17 self.otbeg = int(otgene.start) - dstart |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
18 self.otend = int(otgene.end) - dstart |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
19 self.ccbeg = int(ccgene.start) - qstart |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
20 self.ccend = int(ccgene.end) - qstart |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
21 self.tol = tol # how much tolerance in nucleotides |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
22 self.ccname = ccgene.chrom |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
23 self.otname = otgene.chrom |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
24 self.q_outstart = qstart+self.otbeg |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
25 self.q_outend = qstart+self.otend |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
26 self.genelist = [] |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
27 self.qstart = qstart |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
28 if extract: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
29 self.fastafile = extract[0] |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
30 self.fastaout = extract[1] |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
31 self.output = output |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
32 self.out = "" |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
33 self.gattr = f"New_annotation='{gattr}'" |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
34 |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
35 def is_equal(self): |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
36 if (self.otbeg - self.tol) <= self.ccbeg <= (self.otbeg + self.tol) and (self.otend - self.tol) <= self.ccend <= (self.otend + self.tol): |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
37 self.out = f"{self.ccname}\tprediction\tgene\t{self.q_outstart}\t{self.q_outend}\t.\t{self.qstart}\t.\tID={self.ccname};{self.gattr};Note=confirmed" |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
38 return self.out |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
39 |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
40 def is_shorter(self): |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
41 if (self.otbeg + self.tol) < self.ccbeg and (self.otend - self.tol) > self.ccend: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
42 self.out = f"{self.ccname}\tprediction\tgene\t{self.q_outstart}\t{self.q_outend}\t.\t{self.qstart}\t.\tID={self.ccname};{self.gattr};Note=shorter" |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
43 return self.out |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
44 elif (self.otbeg - self.tol) <= self.ccbeg <= (self.otbeg + self.tol) and (self.otend - self.tol) > self.ccend: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
45 self.out = f"{self.ccname}\tprediction\tgene\t{self.q_outstart}\t{self.q_outend}\t.\t{self.qstart}\t.\tID={self.ccname};{self.gattr};Note=shorter_right" |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
46 return self.out |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
47 elif (self.otbeg + self.tol) < self.ccbeg and (self.otend - self.tol) <= self.ccend <= (self.otend + self.tol): |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
48 self.out = f"{self.ccname}\tprediction\tgene\t{self.q_outstart}\t{self.q_outend}\t.\t{self.qstart}\t.\tID={self.ccname};{self.gattr};Note=shorter_left" |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
49 return self.out |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
50 |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
51 def is_longer(self): |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
52 if (self.otbeg - self.tol) > self.ccbeg and (self.otend + self.tol) < self.ccend: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
53 self.out = f"{self.ccname}\tprediction\tgene\t{self.q_outstart}\t{self.q_outend}\t.\t{self.qstart}\t.\tID={self.ccname};{self.gattr};Note=longer" |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
54 return self.out |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
55 elif (self.otbeg - self.tol) <= self.ccbeg <= (self.otbeg + self.tol) and (self.otend + self.tol) < self.ccend: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
56 self.out = f"{self.ccname}\tprediction\tgene\t{self.q_outstart}\t{self.q_outend}\t.\t{self.qstart}\t.\tID={self.ccname};{self.gattr};Note=longer_right" |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
57 return self.out |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
58 elif (self.otbeg - self.tol) > self.ccbeg and (self.otend - self.tol) <= self.ccend <= (self.otend + self.tol): |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
59 self.out = f"{self.ccname}\tprediction\tgene\t{self.q_outstart}\t{self.q_outend}\t.\t{self.qstart}\t.\tID={self.ccname};{self.gattr};Note=longer_left" |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
60 return self.out |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
61 |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
62 def is_offset(self): |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
63 if (self.otbeg + self.tol) < self.ccbeg < (self.otend - self.tol) and (self.otend + self.tol) < self.ccend: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
64 self.out = f"{self.ccname}\tprediction\tgene\t{self.q_outstart}\t{self.q_outend}\t.\t{self.qstart}\t.\tID={self.ccname};{self.gattr};Note=offset_right" |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
65 return self.out |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
66 if (self.otbeg - self.tol) > self.ccbeg and (self.otbeg - self.tol) < self.ccend < self.otend + self.tol: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
67 self.out = f"{self.ccname}\tprediction\tgene\t{self.q_outstart}\t{self.q_outend}\t.\t{self.qstart}\t.\tID={self.ccname};{self.gattr};Note=offset_left" |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
68 return self.out |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
69 |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
70 def is_different(self): |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
71 if self.otbeg - self.tol > self.ccend or self.otend + self.tol < self.otbeg: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
72 self.out = f"{self.ccname}\tprediction\tgene\t{self.q_outstart}\t{self.q_outend}\t.\t{self.qstart}\t.\tID={self.ccname};{self.gattr};Note=new" |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
73 return self.out |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
74 |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
75 def extract_fasta(self): |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
76 with open(self.fastaout,"a") as fileout: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
77 with open(self.fastafile) as filefasta: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
78 for record in SeqIO.parse(filefasta,"fasta"): |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
79 if record.id == self.ccname: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
80 fileout.write(f">{self.ccname}_{self.q_outstart}:{self.q_outend}\n{record.seq[self.q_outstart:self.q_outend]}\n") |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
81 |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
82 # def extract_stout(self): |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
83 # with open(self.fastafile) as filefasta: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
84 # for record in SeqIO.parse(filefasta,"fasta"): |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
85 # if record.id == self.ccname: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
86 # print(f">{self.ccname}_{self.q_outstart}:{self.q_outend}\n{record.seq[self.q_outstart:self.q_outend]}") |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
87 |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
88 |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
89 #def __str__(self): |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
90 # return f"{self.ccname}\t{self.q_outstart}\t{self.q_outend}" |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
91 |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
92 |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
93 def fout(self): |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
94 try: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
95 if self.__class__.fout.called: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
96 with open(self.output,"a") as fileout: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
97 fileout.write(self.out+"\n") |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
98 except AttributeError: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
99 try: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
100 if os.path.isfile(self.output): |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
101 os.remove(self.output) |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
102 with open(self.output,"a") as fileout: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
103 #fileout.write("##gff-version 3\n") |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
104 fileout.write(f"##gff-version 3\n{self.out}\n") |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
105 self.__class__.fout.called = True |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
106 self.__class__.fout(self) |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
107 except TypeError: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
108 pass |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
109 |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
110 |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
111 def diff_gene(query_genes, target_genes, dstart, dend, qstart, qend, query_db): |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
112 # are the two genes the same? |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
113 if args.extract: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
114 extract = args.extract |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
115 else: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
116 extract = None |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
117 |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
118 if args.tollerance: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
119 tol = args.tollerance |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
120 else: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
121 tol = 30 |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
122 |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
123 |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
124 for otgene in target_genes: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
125 # gattr is a variable created to store the the annotation of the target gene. |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
126 # It will be use to suggest a functional annotation |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
127 gattr = str(otgene).split("\t")[-1] |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
128 for ccgene in query_genes: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
129 algene = GeneComp(ccgene, qstart, qend, otgene, dstart, dend, extract, tol, gattr) |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
130 if "new" in args.verbosity or "all" in args.verbosity: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
131 if algene.is_different(): |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
132 algene_out = algene.is_different() |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
133 algene_name = algene_out.split("\t")[0] |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
134 algene_start = int(algene_out.split("\t")[3]) |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
135 algene_end = int(algene_out.split("\t")[4]) |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
136 #print(al_name, al_start, al_end) |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
137 #print(list(target_db.region(region=(al_name, al_start, al_end), completely_within=True))) |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
138 if not list(query_db.region(region=(algene_name, algene_start, algene_end), completely_within=False)): |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
139 if args.output: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
140 algene.output=args.output |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
141 algene.fout() |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
142 else: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
143 print(algene.is_different()) |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
144 if args.extract: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
145 algene.extract_fasta() |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
146 |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
147 if "shorter" in args.verbosity or "all" in args.verbosity: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
148 if algene.is_shorter(): |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
149 if args.output: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
150 algene.output=args.output |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
151 algene.fout() |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
152 else: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
153 print(algene.is_shorter()) |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
154 if args.extract: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
155 algene.extract_fasta() |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
156 if "longer" in args.verbosity or "all" in args.verbosity: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
157 if algene.is_longer(): |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
158 if args.output: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
159 algene.output=args.output |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
160 algene.fout() |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
161 else: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
162 print(algene.is_longer()) |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
163 if args.extract: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
164 algene.extract_fasta() |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
165 if "offset" in args.verbosity or "all" in args.verbosity: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
166 if algene.is_offset(): |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
167 if args.output: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
168 algene.output=args.output |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
169 algene.fout() |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
170 else: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
171 print(algene.is_offset()) |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
172 if args.extract: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
173 algene.extract_fasta() |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
174 if "confirmed" in args.verbosity: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
175 if algene.is_equal(): |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
176 if args.output: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
177 algene.output=args.output |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
178 algene.fout() |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
179 else: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
180 print(algene.is_equal()) |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
181 if args.extract: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
182 algene.extract_fasta() |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
183 |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
184 |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
185 def gff_gene_check(GffName, db_name, memory=0): |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
186 # The IDs on the GFFs must be unique. Moreover, because only the gene |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
187 # information are needed, all the other information must be removed |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
188 # from the GFFs. |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
189 tempgff="" |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
190 for line in open(GffName): |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
191 if line[0] != "#": |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
192 if line.split()[2] == "gene": |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
193 tempgff+=line |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
194 |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
195 else: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
196 tempgff+=line |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
197 |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
198 if memory: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
199 # Write the db in memory and return it as variable so it can be used |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
200 # as subclass of _DBCreator |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
201 dbout = gffutils.create_db(tempgff, ":memory:", from_string=True) |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
202 return dbout |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
203 else: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
204 gffutils.create_db(tempgff, db_name, from_string=True) |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
205 |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
206 def check_strand(start,leng,strand): |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
207 if strand == "+": |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
208 end = start+leng |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
209 else: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
210 end = start-leng |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
211 start,end = end,start |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
212 return(start,end) |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
213 |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
214 def check_position(line, query_db,target_db): |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
215 # check if there is a gene in the aligned area |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
216 # lets' start with the coordinatescharacteristics |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
217 elsp = line.split('\t') |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
218 dname = elsp[1] |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
219 dstart = int(elsp[2]) |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
220 dlen = int(elsp[3]) |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
221 dstrand = elsp[4] |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
222 qname = elsp[6] |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
223 qstart = int(elsp[7]) |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
224 qlen = int(elsp[8]) |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
225 qstrand = elsp[9] |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
226 |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
227 # check the strand, if - reverse the start and the end |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
228 qstart,qend = check_strand(qstart,qlen,qstrand) |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
229 dstart,dend = check_strand(dstart,dlen,dstrand) |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
230 |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
231 #counter |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
232 d_counter = 0 |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
233 |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
234 # lists of gene within the coordinates |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
235 target_genes = [ gene for gene in list(target_db.region(region=(dname, dstart, dend), completely_within=True))] |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
236 query_genes = [ gene for gene in list(query_db.region(region=(qname, qstart, qend), completely_within=True))] |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
237 |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
238 if len(target_genes): |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
239 # and len(query_genes): |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
240 ###### |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
241 # PER PROVARE HO TOLTO QUESTO, DA CONTROLLARE |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
242 ###### |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
243 #if len(target_genes) >= len(query_genes): # the number of genes in the aligned area must be bigger in the target (?) |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
244 diff_gene(query_genes, target_genes, dstart, dend, qstart, qend, query_db) |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
245 |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
246 |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
247 if d_counter>=1: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
248 return(d_counter) |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
249 else: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
250 return(0) |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
251 |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
252 |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
253 def main(args): |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
254 fcounter = 0 |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
255 # import the GFF library and create (has to be done only once) |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
256 # the GFF databases |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
257 target_db = query_db = None |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
258 db_query_name=args.queryGff + "_db" |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
259 db_target_name=args.targetGff + "_db" |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
260 |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
261 if args.force_database: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
262 # remove the database if required by user |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
263 os.remove(db_query_name) |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
264 os.remove(db_target_name) |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
265 |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
266 if args.use_query_database: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
267 # use the db passed by the user |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
268 query_db = gffutils.FeatureDB(args.use_query_database) |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
269 else: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
270 #create the db |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
271 #gffutils.create_db(args.queryGff, db_query_name) |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
272 qdbout = gff_gene_check(args.queryGff, db_query_name, args.memory) |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
273 |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
274 if args.memory: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
275 query_db = gffutils.FeatureDB(qdbout.dbfn) |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
276 else: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
277 query_db = gffutils.FeatureDB(db_query_name) |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
278 # except ValueError: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
279 # print("Please check your GFF file") |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
280 # except: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
281 # raise Exception(f"It seems you already have a db called {db_query_name}. Use the -qu if you want to use it or delete the") |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
282 |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
283 |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
284 if args.use_target_database: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
285 target_db = gffutils.FeatureDB(args.use_target_database) |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
286 else: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
287 tdbout = gff_gene_check(args.targetGff, db_target_name, args.memory) |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
288 if args.memory: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
289 target_db = gffutils.FeatureDB(tdbout.dbfn) |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
290 else: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
291 target_db = gffutils.FeatureDB(db_target_name) |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
292 # except ValueError: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
293 # print("Please check your GFF file")if "all" in args.verbosity: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
294 # except: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
295 # raise Exception(f"It seems you already have a db called {db_target_name}. Use the -du if you want to use it or delete the") |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
296 |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
297 # put the content of the DB in objects |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
298 with open(args.aln) as maftab: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
299 for line in maftab: |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
300 if line[0] != "#": |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
301 fcounter += check_position(line, query_db, target_db) |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
302 |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
303 if __name__ == '__main__': |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
304 parser = argparse.ArgumentParser(description = '''Tool to extract genes coordinates from a whole genome alignent. |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
305 This script needs an alignement in TAB format and two gff files''') |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
306 parser.add_argument('aln', help='alignment file in TAB format. The suggested way to obtain it is to run Last and\ |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
307 than convert the file from MAF to TAB with maf-convert') |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
308 parser.add_argument('queryGff', |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
309 help='''Gff file of the query organism. The gene IDs in the GFF must be unique.''') |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
310 parser.add_argument('targetGff', |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
311 help='''Gff file of the "target" organism. The gene IDs in the GFF must be unique.''') |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
312 parser.add_argument("-uq", "--use-query-database", |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
313 help='''Use this parament if you already have a query gffutils formatted database or |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
314 if it\'s not the first time you run this script''', type=str) |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
315 parser.add_argument("-ut", "--use-target-database", |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
316 help='''Use this parament if you already have a target gffutils formatted database or |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
317 if it\'s not the first time you run this script''', type=str) |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
318 parser.add_argument("-fd", "--force-database", help="delete old gffutils databases and create new ones", action='store_true') |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
319 parser.add_argument("-m", "--memory", help='''create an in-memory database. This option can't be used with the other DB options. |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
320 probably usefull in Galaxy integration''', action='store_true' ) |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
321 parser.add_argument("-e", "--extract", |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
322 help='''Extract the fasta sequence of the new suggested gene. It takes two argument: the fasta file |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
323 of the genome and the name of the output file. This will slow down the process A LOT.''', nargs=2, type=str) |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
324 #parser.add_argument("-es", "--extract_stout", help='Like -e but it will print the result in the standard output. FASTER than -e. It need the fasta file', type=str) |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
325 parser.add_argument("-o", "--output", help='Name of the output file. Default output is stout', type=str) |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
326 parser.add_argument("-t", "--tollerance", help='Interval, in nucleotide, within a gene is considered in the same position. Default 30', default=30, type=int) |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
327 parser.add_argument("-v", "--verbosity", |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
328 help='''Output options. If not specify the software shows only the genes that are in the exact position of the |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
329 genes in the target. It\'s possible to show annotated genes that are in aligned regions but that have different lengths or in slightly |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
330 different positions. It's possible to select multiple, space separated, values.''', |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
331 choices=["all","shorter", "longer", "offset", "new", "confirmed"], nargs='*', default='new', type=str) |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
332 #metavar=('all','shorter','longer','shifted','new'), |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
333 #action='append', |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
334 #choices=["all","shorter", "longer", "shifted", "new"], default="new") |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
335 parser.add_argument('--version', action='version', version='0.1.0') |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
336 args = parser.parse_args() |
294f5ba28746
"planemo upload for repository https://github.com/abims-sbr/tools-abims/tools/gffalign commit d8aa0e49353e78e5fd772498a1fcf591e2744f99"
abims-sbr
parents:
diff
changeset
|
337 main(args) |