Mercurial > repos > brinkmanlab > mauve_contig_mover
annotate stitch.py @ 6:4931255f2fcc draft
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 25b7aeca541e258a2bff5d0e34e9298996b4a47b"
| author | brinkmanlab |
|---|---|
| date | Fri, 20 Nov 2020 18:58:52 +0000 |
| parents | 71831ead9e16 |
| children |
| rev | line source |
|---|---|
|
0
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
1 #!/usr/bin/env python |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
2 import sys |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
3 import csv |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
4 import getopt |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
5 |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
6 from Bio import SeqIO, Alphabet |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
7 from Bio.Seq import Seq |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
8 |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
9 usage = """ |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
10 Mauve Contig Mover - Stitch |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
11 Stitch contigs into a single contig. |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
12 Compliments reversed sequences and rewrites all feature coordinates. |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
13 |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
14 Use: stitch.py [-v] [-s 'final sequence id'] <padding length> <draft file path> <draft file format> [MauveCM contigs.tab path] |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
15 \t-v Print version and exit |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
16 \t-s Provide an ID for the final sequence, the first sequence ID will be used otherwise |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
17 Valid draft file formats: |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
18 abi, abi-trim, ace, cif-atom, cif-seqres, clustal, embl, fasta, fasta-2line, fastq-sanger, fastq, fastq-solexa, fastq-illumina, |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
19 genbank, gb, ig, imgt, nexus, pdb-seqres, pdb-atom, phd, phylip, pir, seqxml, sff, sff-trim, stockholm, swiss, tab, qual, uniprot-xml, gff3 |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
20 """ |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
21 |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
22 |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
23 def getOrder(path): |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
24 """ |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
25 Parse MCM contig order file and iterate rows after "Ordered Contigs" |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
26 :param path: path to MCM *_contig.tab |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
27 :return: tuple(type, label, contig_type, strand, left_end, right_end) |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
28 """ |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
29 with open(path, "r") as alignment_file: |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
30 alignments = iter(csv.reader(alignment_file, delimiter="\t")) |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
31 try: |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
32 alignment = next(alignments) |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
33 |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
34 # Jog to beginning of ordered alignments |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
35 while not (len(alignment) and "Ordered Contigs" == alignment[0]): |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
36 alignment = next(alignments) |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
37 |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
38 # Skip column header |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
39 next(alignments) |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
40 |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
41 while True: |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
42 yield next(alignments) |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
43 except StopIteration: |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
44 return |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
45 |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
46 |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
47 def stitch(pad, contigs, order): |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
48 """ |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
49 Reduce contigs to single contig by concatenation. |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
50 Compliments reversed sequences and rewrites all feature coordinates. |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
51 :param pad: Seq or SeqRecord instance to insert between contigs |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
52 :param contigs: dict of SeqRecords keyed on the record name |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
53 :param order: iterable of tuples containing sequence names and orientation |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
54 :return: concatentated SeqRecord |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
55 """ |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
56 result = None |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
57 # Concat in order with padding |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
58 for alignment in order: |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
59 if len(alignment) < 4: continue |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
60 try: |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
61 contig = contigs.pop(alignment[1]) # type: SeqIO.SeqRecord |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
62 if alignment[3] == "complement": |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
63 contig = contig.reverse_complement() |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
64 if result: |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
65 # A lot is happening in the background here. Biopython handles the feature coordinates implicitly. |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
66 result += pad + contig |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
67 else: |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
68 result = contig |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
69 pad.alphabet = result.seq.alphabet |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
70 except KeyError: |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
71 pass |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
72 |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
73 # Concat remaining in arbitrary order |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
74 for unordered in contigs.values(): |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
75 if result: |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
76 result += pad + unordered |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
77 else: |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
78 result = unordered |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
79 |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
80 return result |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
81 |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
82 |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
83 if __name__ == '__main__': |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
84 seqid = None |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
85 # Parse arguments |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
86 try: |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
87 opts, args = getopt.gnu_getopt(sys.argv[1:], 'vs:iq:') |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
88 for opt, val in opts: |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
89 if opt == '-v': |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
90 print('1.0') |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
91 exit(0) |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
92 elif opt == '-s': |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
93 seqid = val |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
94 except getopt.GetoptError as err: |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
95 print("Argument error(" + str(err.opt) + "): " + err.msg, file=sys.stderr) |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
96 args = [] |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
97 |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
98 # Check for minimum number of arguments |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
99 if len(args) < 3: |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
100 print(usage, file=sys.stderr) |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
101 exit(1) |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
102 |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
103 pad_len = int(args[0]) |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
104 if pad_len < 0: |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
105 print("Padding length must be >= 0", file=sys.stderr) |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
106 print(help, file=sys.stderr) |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
107 exit(1) |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
108 |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
109 draft_path = args[1] |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
110 draft_format = args[2] |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
111 |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
112 if len(args) < 4: |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
113 order = () |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
114 else: |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
115 order = getOrder(args[3]) |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
116 |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
117 pad = Seq('N'*pad_len) |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
118 contigs = {seq.name: seq for seq in SeqIO.parse(draft_path, draft_format)} |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
119 |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
120 result = stitch(pad, contigs, order) |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
121 |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
122 if result: |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
123 # Ensure there is only one 'source' feature |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
124 # TODO |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
125 pass |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
126 |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
127 if result and seqid: |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
128 result.id = seqid |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
129 result.description = "" |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
130 |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
131 result.seq.alphabet = Alphabet.generic_dna # TODO Investigate why this is required for some datasets |
|
c14690ec0c9f
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 33b02e08cbc8f76fb4b8537f8c968393f85a1b5e"
brinkmanlab
parents:
diff
changeset
|
132 SeqIO.write(result, sys.stdout, draft_format) |
