Mercurial > repos > brinkmanlab > mauve_contig_mover
annotate stitch.py @ 5:f8b09693c9c1 draft
"planemo upload for repository https://github.com/brinkmanlab/galaxy-tools/tree/master/mauve_contig_mover commit 2ff4e6332f75579a974b21d362010dfa08c6e238"
author | brinkmanlab |
---|---|
date | Fri, 26 Jun 2020 02:47:48 -0400 |
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) |