annotate interval2maf.py @ 3:7adddc6015c1 draft default tip

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit a59b05dd4a79b1b4e14ab1d78202c07a889ab023
author iuc
date Sat, 22 Apr 2023 20:08:40 +0000
parents 1080e07a2233
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
1 #!/usr/bin/env python
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
2 """
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
3 Reads a list of intervals and a maf. Produces a new maf containing the
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
4 blocks or parts of blocks in the original that overlapped the intervals.
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
5
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
6 If a MAF file, not UID, is provided the MAF file is indexed before being processed.
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
7
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
8 NOTE: If two intervals overlap the same block it will be written twice.
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
9
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
10 usage: %prog maf_file [options]
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
11 -d, --dbkey=d: Database key, ie hg17
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
12 -c, --chromCol=c: Column of Chr
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
13 -s, --startCol=s: Column of Start
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
14 -e, --endCol=e: Column of End
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
15 -S, --strandCol=S: Column of Strand
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
16 -t, --mafType=t: Type of MAF source to use
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
17 -m, --mafFile=m: Path of source MAF file, if not using cached version
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
18 -s, --mafFiles=s: Path of source MAF files, if using cached version
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
19 -I, --mafIndex=I: Path of precomputed source MAF file index, if not using cached version
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
20 -i, --interval_file=i: Input interval file
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
21 -o, --output_file=o: Output MAF file
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
22 -p, --species=p: Species to include in output
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
23 -P, --split_blocks_by_species=P: Split blocks by species
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
24 -r, --remove_all_gap_columns=r: Remove all Gap columns
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
25 -l, --indexLocation=l: Override default maf_index.loc file
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
26 -z, --mafIndexFile=z: Directory of local maf index file ( maf_index.loc or maf_pairwise.loc )
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
27 """
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
28 # Dan Blankenberg
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
29 from __future__ import print_function
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
30
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
31 import bx.align.maf
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
32 import bx.intervals.io
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
33 from bx.cookbook import doc_optparse
2
1080e07a2233 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 9f522562ca2048b8bafa3404abf3f930f72f7f05
iuc
parents: 0
diff changeset
34 from galaxy.datatypes.util import maf_utilities
0
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
35
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
36
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
37 def __main__():
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
38 index = index_filename = None
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
39
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
40 # Parse Command Line
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
41 options, args = doc_optparse.parse(__doc__)
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
42
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
43 if options.dbkey:
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
44 dbkey = options.dbkey
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
45 else:
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
46 dbkey = None
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
47 if dbkey in [None, "?"]:
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
48 maf_utilities.tool_fail("You must specify a proper build in order to extract alignments. You can specify your genome build by clicking on the pencil icon associated with your interval file.")
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
49
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
50 species = maf_utilities.parse_species_option(options.species)
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
51
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
52 if options.chromCol:
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
53 chromCol = int(options.chromCol) - 1
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
54 else:
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
55 maf_utilities.tool_fail("Chromosome column not set, click the pencil icon in the history item to set the metadata attributes.")
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
56
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
57 if options.startCol:
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
58 startCol = int(options.startCol) - 1
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
59 else:
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
60 maf_utilities.tool_fail("Start column not set, click the pencil icon in the history item to set the metadata attributes.")
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
61
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
62 if options.endCol:
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
63 endCol = int(options.endCol) - 1
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
64 else:
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
65 maf_utilities.tool_fail("End column not set, click the pencil icon in the history item to set the metadata attributes.")
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
66
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
67 if options.strandCol:
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
68 strandCol = int(options.strandCol) - 1
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
69 else:
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
70 strandCol = -1
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
71
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
72 if options.interval_file:
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
73 interval_file = options.interval_file
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
74 else:
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
75 maf_utilities.tool_fail("Input interval file has not been specified.")
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
76
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
77 if options.output_file:
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
78 output_file = options.output_file
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
79 else:
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
80 maf_utilities.tool_fail("Output file has not been specified.")
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
81
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
82 split_blocks_by_species = remove_all_gap_columns = False
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
83 if options.split_blocks_by_species and options.split_blocks_by_species == 'split_blocks_by_species':
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
84 split_blocks_by_species = True
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
85 if options.remove_all_gap_columns and options.remove_all_gap_columns == 'remove_all_gap_columns':
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
86 remove_all_gap_columns = True
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
87 else:
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
88 remove_all_gap_columns = True
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
89 # Finish parsing command line
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
90
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
91 # Open indexed access to MAFs
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
92 if options.mafType:
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
93 if options.indexLocation:
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
94 index = maf_utilities.maf_index_by_uid(options.mafType, options.indexLocation)
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
95 else:
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
96 index = maf_utilities.maf_index_by_uid(options.mafType, options.mafIndexFile)
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
97 if index is None:
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
98 maf_utilities.tool_fail("The MAF source specified (%s) appears to be invalid." % (options.mafType))
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
99 elif options.mafFile:
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
100 index, index_filename = maf_utilities.open_or_build_maf_index(options.mafFile, options.mafIndex, species=[dbkey])
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
101 if index is None:
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
102 maf_utilities.tool_fail("Your MAF file appears to be malformed.")
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
103 else:
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
104 maf_utilities.tool_fail("Desired source MAF type has not been specified.")
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
105
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
106 # Create MAF writter
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
107 out = bx.align.maf.Writer(open(output_file, "w"))
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
108
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
109 # Iterate over input regions
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
110 num_blocks = 0
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
111 num_regions = None
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
112 for num_regions, region in enumerate(bx.intervals.io.NiceReaderWrapper(open(interval_file, 'r'), chrom_col=chromCol, start_col=startCol, end_col=endCol, strand_col=strandCol, fix_strand=True, return_header=False, return_comments=False)):
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
113 src = maf_utilities.src_merge(dbkey, region.chrom)
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
114 for block in index.get_as_iterator(src, region.start, region.end):
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
115 if split_blocks_by_species:
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
116 blocks = [new_block for new_block in maf_utilities.iter_blocks_split_by_species(block) if maf_utilities.component_overlaps_region(new_block.get_component_by_src_start(dbkey), region)]
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
117 else:
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
118 blocks = [block]
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
119 for block in blocks:
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
120 block = maf_utilities.chop_block_by_region(block, src, region)
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
121 if block is not None:
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
122 if species is not None:
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
123 block = block.limit_to_species(species)
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
124 block = maf_utilities.orient_block_by_region(block, src, region)
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
125 if remove_all_gap_columns:
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
126 block.remove_all_gap_columns()
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
127 out.write(block)
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
128 num_blocks += 1
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
129
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
130 # Close output MAF
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
131 out.close()
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
132
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
133 # remove index file if created during run
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
134 maf_utilities.remove_temp_index_file(index_filename)
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
135
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
136 if num_blocks:
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
137 print("%i MAF blocks extracted for %i regions." % (num_blocks, (num_regions + 1)))
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
138 elif num_regions is not None:
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
139 print("No MAF blocks could be extracted for %i regions." % (num_regions + 1))
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
140 else:
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
141 print("No valid regions have been provided.")
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
142
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
143
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
144 if __name__ == "__main__":
cfea1d6354db "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/interval2maf/ commit 1db2b3ee758847b8b63f58fb2075961003ff8c22"
iuc
parents:
diff changeset
145 __main__()