annotate fasta_filter_by_length.py @ 4:8cacfcf96a52 draft default tip

"planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tools/fasta_filter_by_length commit cd1ed08574b749eee2a3f6e6151dbb0c8ca15bbf"
author devteam
date Sun, 01 Mar 2020 07:24:42 -0500
parents e626b3ff9922
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
16679a7f554a Imported from capsule None
devteam
parents:
diff changeset
1 #!/usr/bin/env python
16679a7f554a Imported from capsule None
devteam
parents:
diff changeset
2 """
16679a7f554a Imported from capsule None
devteam
parents:
diff changeset
3 Input: fasta, minimal length, maximal length
16679a7f554a Imported from capsule None
devteam
parents:
diff changeset
4 Output: fasta
16679a7f554a Imported from capsule None
devteam
parents:
diff changeset
5 Return sequences whose lengths are within the range.
16679a7f554a Imported from capsule None
devteam
parents:
diff changeset
6 """
16679a7f554a Imported from capsule None
devteam
parents:
diff changeset
7
4
8cacfcf96a52 "planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tools/fasta_filter_by_length commit cd1ed08574b749eee2a3f6e6151dbb0c8ca15bbf"
devteam
parents: 3
diff changeset
8 import sys
0
16679a7f554a Imported from capsule None
devteam
parents:
diff changeset
9
4
8cacfcf96a52 "planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tools/fasta_filter_by_length commit cd1ed08574b749eee2a3f6e6151dbb0c8ca15bbf"
devteam
parents: 3
diff changeset
10 assert sys.version_info[:2] >= (2, 4)
0
16679a7f554a Imported from capsule None
devteam
parents:
diff changeset
11
4
8cacfcf96a52 "planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tools/fasta_filter_by_length commit cd1ed08574b749eee2a3f6e6151dbb0c8ca15bbf"
devteam
parents: 3
diff changeset
12
8cacfcf96a52 "planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tools/fasta_filter_by_length commit cd1ed08574b749eee2a3f6e6151dbb0c8ca15bbf"
devteam
parents: 3
diff changeset
13 def stop_err(msg):
8cacfcf96a52 "planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tools/fasta_filter_by_length commit cd1ed08574b749eee2a3f6e6151dbb0c8ca15bbf"
devteam
parents: 3
diff changeset
14 sys.exit(msg)
8cacfcf96a52 "planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tools/fasta_filter_by_length commit cd1ed08574b749eee2a3f6e6151dbb0c8ca15bbf"
devteam
parents: 3
diff changeset
15
0
16679a7f554a Imported from capsule None
devteam
parents:
diff changeset
16
16679a7f554a Imported from capsule None
devteam
parents:
diff changeset
17 def __main__():
16679a7f554a Imported from capsule None
devteam
parents:
diff changeset
18 input_filename = sys.argv[1]
16679a7f554a Imported from capsule None
devteam
parents:
diff changeset
19 try:
4
8cacfcf96a52 "planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tools/fasta_filter_by_length commit cd1ed08574b749eee2a3f6e6151dbb0c8ca15bbf"
devteam
parents: 3
diff changeset
20 min_length = int(sys.argv[2])
8cacfcf96a52 "planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tools/fasta_filter_by_length commit cd1ed08574b749eee2a3f6e6151dbb0c8ca15bbf"
devteam
parents: 3
diff changeset
21 except Exception:
8cacfcf96a52 "planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tools/fasta_filter_by_length commit cd1ed08574b749eee2a3f6e6151dbb0c8ca15bbf"
devteam
parents: 3
diff changeset
22 stop_err("Minimal length of the return sequence requires a numerical value.")
0
16679a7f554a Imported from capsule None
devteam
parents:
diff changeset
23 try:
4
8cacfcf96a52 "planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tools/fasta_filter_by_length commit cd1ed08574b749eee2a3f6e6151dbb0c8ca15bbf"
devteam
parents: 3
diff changeset
24 max_length = int(sys.argv[3])
8cacfcf96a52 "planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tools/fasta_filter_by_length commit cd1ed08574b749eee2a3f6e6151dbb0c8ca15bbf"
devteam
parents: 3
diff changeset
25 except Exception:
8cacfcf96a52 "planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tools/fasta_filter_by_length commit cd1ed08574b749eee2a3f6e6151dbb0c8ca15bbf"
devteam
parents: 3
diff changeset
26 stop_err("Maximum length of the return sequence requires a numerical value.")
0
16679a7f554a Imported from capsule None
devteam
parents:
diff changeset
27 output_filename = sys.argv[4]
4
8cacfcf96a52 "planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tools/fasta_filter_by_length commit cd1ed08574b749eee2a3f6e6151dbb0c8ca15bbf"
devteam
parents: 3
diff changeset
28 tmp_size = 0 # -1
0
16679a7f554a Imported from capsule None
devteam
parents:
diff changeset
29 tmp_buf = ''
16679a7f554a Imported from capsule None
devteam
parents:
diff changeset
30 at_least_one = 0
4
8cacfcf96a52 "planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tools/fasta_filter_by_length commit cd1ed08574b749eee2a3f6e6151dbb0c8ca15bbf"
devteam
parents: 3
diff changeset
31 with open(output_filename, 'w') as output_handle, open(input_filename, 'r') as input_handle:
8cacfcf96a52 "planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tools/fasta_filter_by_length commit cd1ed08574b749eee2a3f6e6151dbb0c8ca15bbf"
devteam
parents: 3
diff changeset
32 for line in input_handle:
8cacfcf96a52 "planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tools/fasta_filter_by_length commit cd1ed08574b749eee2a3f6e6151dbb0c8ca15bbf"
devteam
parents: 3
diff changeset
33 if not line or line.startswith('#'):
8cacfcf96a52 "planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tools/fasta_filter_by_length commit cd1ed08574b749eee2a3f6e6151dbb0c8ca15bbf"
devteam
parents: 3
diff changeset
34 continue
8cacfcf96a52 "planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tools/fasta_filter_by_length commit cd1ed08574b749eee2a3f6e6151dbb0c8ca15bbf"
devteam
parents: 3
diff changeset
35 if line[0] == '>':
8cacfcf96a52 "planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tools/fasta_filter_by_length commit cd1ed08574b749eee2a3f6e6151dbb0c8ca15bbf"
devteam
parents: 3
diff changeset
36 if min_length <= tmp_size <= max_length or (min_length <= tmp_size and max_length == 0):
8cacfcf96a52 "planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tools/fasta_filter_by_length commit cd1ed08574b749eee2a3f6e6151dbb0c8ca15bbf"
devteam
parents: 3
diff changeset
37 output_handle.write(tmp_buf)
8cacfcf96a52 "planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tools/fasta_filter_by_length commit cd1ed08574b749eee2a3f6e6151dbb0c8ca15bbf"
devteam
parents: 3
diff changeset
38 at_least_one = 1
8cacfcf96a52 "planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tools/fasta_filter_by_length commit cd1ed08574b749eee2a3f6e6151dbb0c8ca15bbf"
devteam
parents: 3
diff changeset
39 tmp_buf = line
8cacfcf96a52 "planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tools/fasta_filter_by_length commit cd1ed08574b749eee2a3f6e6151dbb0c8ca15bbf"
devteam
parents: 3
diff changeset
40 tmp_size = 0
8cacfcf96a52 "planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tools/fasta_filter_by_length commit cd1ed08574b749eee2a3f6e6151dbb0c8ca15bbf"
devteam
parents: 3
diff changeset
41 else:
8cacfcf96a52 "planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tools/fasta_filter_by_length commit cd1ed08574b749eee2a3f6e6151dbb0c8ca15bbf"
devteam
parents: 3
diff changeset
42 if max_length == 0 or tmp_size <= max_length:
8cacfcf96a52 "planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tools/fasta_filter_by_length commit cd1ed08574b749eee2a3f6e6151dbb0c8ca15bbf"
devteam
parents: 3
diff changeset
43 tmp_size += len(line.rstrip('\r\n'))
8cacfcf96a52 "planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tools/fasta_filter_by_length commit cd1ed08574b749eee2a3f6e6151dbb0c8ca15bbf"
devteam
parents: 3
diff changeset
44 tmp_buf += line
8cacfcf96a52 "planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tools/fasta_filter_by_length commit cd1ed08574b749eee2a3f6e6151dbb0c8ca15bbf"
devteam
parents: 3
diff changeset
45 # final flush of buffer
8cacfcf96a52 "planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tools/fasta_filter_by_length commit cd1ed08574b749eee2a3f6e6151dbb0c8ca15bbf"
devteam
parents: 3
diff changeset
46 if min_length <= tmp_size <= max_length or (min_length <= tmp_size and max_length == 0):
8cacfcf96a52 "planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tools/fasta_filter_by_length commit cd1ed08574b749eee2a3f6e6151dbb0c8ca15bbf"
devteam
parents: 3
diff changeset
47 output_handle.write(tmp_buf.rstrip('\r\n'))
8cacfcf96a52 "planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tools/fasta_filter_by_length commit cd1ed08574b749eee2a3f6e6151dbb0c8ca15bbf"
devteam
parents: 3
diff changeset
48 at_least_one = 1
0
16679a7f554a Imported from capsule None
devteam
parents:
diff changeset
49 if at_least_one == 0:
4
8cacfcf96a52 "planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tools/fasta_filter_by_length commit cd1ed08574b749eee2a3f6e6151dbb0c8ca15bbf"
devteam
parents: 3
diff changeset
50 print("There is no sequence that falls within your range.")
8cacfcf96a52 "planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tools/fasta_filter_by_length commit cd1ed08574b749eee2a3f6e6151dbb0c8ca15bbf"
devteam
parents: 3
diff changeset
51
0
16679a7f554a Imported from capsule None
devteam
parents:
diff changeset
52
4
8cacfcf96a52 "planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tools/fasta_filter_by_length commit cd1ed08574b749eee2a3f6e6151dbb0c8ca15bbf"
devteam
parents: 3
diff changeset
53 if __name__ == "__main__":
8cacfcf96a52 "planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tools/fasta_filter_by_length commit cd1ed08574b749eee2a3f6e6151dbb0c8ca15bbf"
devteam
parents: 3
diff changeset
54 __main__()