Mercurial > repos > yufei-luo > s_mart
annotate smart_toolShed/SMART/Java/Python/GetUpDownStream.py @ 0:e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
| author | yufei-luo | 
|---|---|
| date | Thu, 17 Jan 2013 10:52:14 -0500 | 
| parents | |
| children | 
| rev | line source | 
|---|---|
| 
0
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
1 #! /usr/bin/env python | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
2 # | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
3 # Copyright INRA-URGI 2009-2012 | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
4 # | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
5 # This software is governed by the CeCILL license under French law and | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
6 # abiding by the rules of distribution of free software. You can use, | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
7 # modify and/ or redistribute the software under the terms of the CeCILL | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
8 # license as circulated by CEA, CNRS and INRIA at the following URL | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
9 # "http://www.cecill.info". | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
10 # | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
11 # As a counterpart to the access to the source code and rights to copy, | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
12 # modify and redistribute granted by the license, users are provided only | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
13 # with a limited warranty and the software's author, the holder of the | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
14 # economic rights, and the successive licensors have only limited | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
15 # liability. | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
16 # | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
17 # In this respect, the user's attention is drawn to the risks associated | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
18 # with loading, using, modifying and/or developing or reproducing the | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
19 # software by the user in light of its specific status of free software, | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
20 # that may mean that it is complicated to manipulate, and that also | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
21 # therefore means that it is reserved for developers and experienced | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
22 # professionals having in-depth computer knowledge. Users are therefore | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
23 # encouraged to load and test the software's suitability as regards their | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
24 # requirements in conditions enabling the security of their systems and/or | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
25 # data to be ensured and, more generally, to use and operate it in the | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
26 # same conditions as regards security. | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
27 # | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
28 # The fact that you are presently reading this means that you have had | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
29 # knowledge of the CeCILL license and that you accept its terms. | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
30 # | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
31 import os | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
32 from optparse import OptionParser, OptionGroup | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
33 from commons.core.parsing.ParserChooser import ParserChooser | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
34 from commons.core.writer.Gff3Writer import Gff3Writer | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
35 from SMART.Java.Python.structure.Transcript import Transcript | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
36 from SMART.Java.Python.ncList.NCListFilePickle import NCListFileUnpickle | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
37 from SMART.Java.Python.ncList.FileSorter import FileSorter | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
38 from SMART.Java.Python.misc.Progress import Progress | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
39 from SMART.Java.Python.misc import Utils | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
40 | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
41 | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
42 class GetUpDownStream(object): | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
43 | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
44 def __init__(self, verbosity = 0): | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
45 self.verbosity = verbosity | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
46 self.inputReader = None | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
47 self.outputWriter = None | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
48 self.nbRead = 0 | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
49 self.nbWritten = 0 | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
50 self.nbMerges = 0 | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
51 self.splittedFileNames = {} | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
52 | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
53 def __del__(self): | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
54 for fileName in self.splittedFileNames.values(): | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
55 os.remove(fileName) | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
56 | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
57 def setInputFile(self, fileName, format): | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
58 parserChooser = ParserChooser(self.verbosity) | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
59 parserChooser.findFormat(format, "transcript") | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
60 self.parser = parserChooser.getParser(fileName) | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
61 self.sortedFileName = "%s_sorted.pkl" % (os.path.splitext(fileName)[0]) | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
62 | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
63 def setOutputFile(self, fileName): | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
64 self.outputWriter = Gff3Writer(fileName, self.verbosity) | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
65 | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
66 def setDistances(self, up, down): | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
67 self.upDistance = up | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
68 self.downDistance = down | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
69 | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
70 def _sortFile(self): | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
71 fs = FileSorter(self.parser, self.verbosity-4) | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
72 fs.perChromosome(True) | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
73 fs.setOutputFileName(self.sortedFileName) | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
74 fs.sort() | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
75 self.splittedFileNames = fs.getOutputFileNames() | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
76 self.nbElementsPerChromosome = fs.getNbElementsPerChromosome() | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
77 self.nbRead = fs.getNbElements() | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
78 | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
79 def _write(self, start, end, reference, after): | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
80 if start > end: | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
81 return | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
82 transcript = Transcript() | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
83 transcript.setChromosome(reference.getChromosome()) | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
84 transcript.setStart(start) | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
85 transcript.setEnd(end) | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
86 transcript.setDirection("+") | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
87 transcript.setName("%s_%s" % ("up" if Utils.xor(reference.getDirection() == 1, after) else "down", reference.getName())) | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
88 self.outputWriter.addTranscript(transcript) | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
89 | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
90 def _getFlanking(self, chromosome): | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
91 progress = Progress(self.nbElementsPerChromosome[chromosome], "Analyzing chromosome %s" % (chromosome), self.verbosity) | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
92 parser = NCListFileUnpickle(self.splittedFileNames[chromosome], self.verbosity) | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
93 previous = None | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
94 for transcript in parser.getIterator(): | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
95 progress.inc() | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
96 transcript.removeExons() | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
97 if previous == None: | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
98 distance = self.upDistance if transcript.getDirection() == 1 else self.downDistance | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
99 start = max(1, transcript.getStart() - distance) | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
100 self._write(start, transcript.getStart()-1, transcript, False) | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
101 previous = transcript | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
102 continue | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
103 if previous.include(transcript): | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
104 continue | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
105 if transcript.overlapWith(previous): | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
106 previous = transcript | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
107 continue | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
108 distancePrevious = self.downDistance if previous.getDirection() == 1 else self.upDistance | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
109 distanceCurrent = self.upDistance if transcript.getDirection() == 1 else self.downDistance | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
110 distance = transcript.getDistance(previous) | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
111 if distancePrevious + distanceCurrent == 0: | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
112 previous = transcript | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
113 continue | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
114 if distance >= distancePrevious + distanceCurrent: | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
115 endPrevious = previous.getEnd() + distancePrevious | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
116 startCurrent = transcript.getStart() - distanceCurrent | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
117 else: | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
118 middle = previous.getEnd() + int((distance-1) * float(distancePrevious) / (distancePrevious + distanceCurrent)) | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
119 endPrevious = middle | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
120 startCurrent = middle+1 | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
121 self._write(previous.getEnd() + 1, endPrevious, previous, True) | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
122 self._write(startCurrent, transcript.getStart() - 1, transcript, False) | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
123 previous = transcript | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
124 distance = self.downDistance if previous.getDirection() == 1 else self.upDistance | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
125 self._write(previous.getEnd() + 1, previous.getEnd() + distance, previous, True) | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
126 progress.done() | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
127 | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
128 def run(self): | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
129 self._sortFile() | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
130 for chromosome in sorted(self.nbElementsPerChromosome.keys()): | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
131 self._getFlanking(chromosome) | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
132 self.outputWriter.close() | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
133 | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
134 if __name__ == "__main__": | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
135 | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
136 # parse command line | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
137 description = "Get Up and Down Stream v1.0.0: Get the flanking regions of an annotation. [Category: Data Modification]" | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
138 | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
139 parser = OptionParser(description = description) | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
140 parser.add_option("-i", "--input", dest="inputFileName", action="store", type="string", help="input file [compulsory] [format: file in mapping format given by -f]") | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
141 parser.add_option("-f", "--format", dest="format", action="store", type="string", help="format of the file [compulsory] [format: mapping file format]") | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
142 parser.add_option("-o", "--output", dest="outputFileName", action="store", type="string", help="output file [compulsory] [format: output file in GFF3 format]") | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
143 parser.add_option("-u", "--up", dest="up", action="store", default=0, type="int", help="the upstream distance [format: int]") | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
144 parser.add_option("-d", "--down", dest="down", action="store", default=0, type="int", help="the downstream distance [format: int]") | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
145 parser.add_option("-v", "--verbosity", dest="verbosity", action="store", default=1, type="int", help="trace level [default: 1] [format: int]") | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
146 (options, args) = parser.parse_args() | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
147 | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
148 guds = GetUpDownStream(options.verbosity) | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
149 guds.setInputFile(options.inputFileName, options.format) | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
150 guds.setOutputFile(options.outputFileName) | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
151 guds.setDistances(options.up, options.down) | 
| 
 
e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
 
yufei-luo 
parents:  
diff
changeset
 | 
152 guds.run() | 
