]> git.donarmstrong.com Git - biopieces.git/blob - bp_bin/remove_mids
committing major ruby overhaul
[biopieces.git] / bp_bin / remove_mids
1 #!/usr/bin/env ruby
2
3 # Copyright (C) 2007-2011 Martin A. Hansen.
4
5 # This program is free software; you can redistribute it and/or
6 # modify it under the terms of the GNU General Public License
7 # as published by the Free Software Foundation; either version 2
8 # of the License, or (at your option) any later version.
9
10 # This program is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 # GNU General Public License for more details.
14
15 # You should have received a copy of the GNU General Public License
16 # along with this program; if not, write to the Free Software
17 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18
19 # http://www.gnu.org/copyleft/gpl.html
20
21 # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
22
23 # This program is part of the Biopieces framework (www.biopieces.org).
24
25 # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> DESCRIPTION <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
26
27 # Find and remove MID tags in sequences in the stream.
28
29 # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
30
31
32 require 'maasha/biopieces'
33 require 'pp'
34
35 MID_LEN = 10
36
37 mids = %w{ ACGAGTGCGT ACGCTCGACA AGACGCACTC AGCACTGTAG ATCAGACACG
38            ATATCGCGAG CGTGTCTCTA CTCGCGTGTC TAGTATCAGC TCTCTATGCG
39            TGATACGTCT TACTGAGCTA CATAGTAGTG CGAGAGATAC ATACGACGTA
40            TCACGTACTA CGTCTAGTAC TCTACGTAGC TGTACTACTC ACGACTACAG
41            CGTAGACTAG TACGAGTATG TACTCTCGTG TAGAGACGAG TCGTCGCTCG
42            ACATACGCGT ACGCGAGTAT ACTACTATGT ACTGTACAGT AGACTATACT
43            AGCGTCGTCT AGTACGCTAT ATAGAGTACT CACGCTACGT CAGTAGACGT
44            CGACGTGACT TACACACACT TACACGTGAT TACAGATCGT TACGCTGTCT
45            TAGTGTAGAT TCGATCACGT TCGCACTAGT TCTAGCGACT TCTATACTAT
46            TGACGTATGT TGTGAGTAGT ACAGTATATA ACGCGATCGA ACTAGCAGTA
47            AGCTCACGTA AGTATACATA AGTCGAGAGA AGTGCTACGA CGATCGTATA
48            CGCAGTACGA CGCGTATACA CGTACAGTCA CGTACTCAGA CTACGCTCTA
49            CTATAGCGTA TACGTCATCA TAGTCGCATA TATATATACA TATGCTAGTA
50            TCACGCGAGA TCGATAGTGA TCGCTGCGTA TCTGACGTCA TGAGTCAGTA
51            TGTAGTGTGA TGTCACACGA TGTCGTCGCA ACACATACGC ACAGTCGTGC
52            ACATGACGAC ACGACAGCTC ACGTCTCATC ACTCATCTAC ACTCGCGCAC
53            AGAGCGTCAC AGCGACTAGC AGTAGTGATC AGTGACACAC AGTGTATGTC
54            ATAGATAGAC ATATAGTCGC ATCTACTGAC CACGTAGATC CACGTGTCGC
55            CATACTCTAC CGACACTATC CGAGACGCGC CGTATGCGAC CGTCGATCTC
56            CTACGACTGC CTAGTCACTC CTCTACGCTC CTGTACATAC TAGACTGCAC
57            TAGCGCGCGC TAGCTCTATC TATAGACATC TATGATACGC TCACTCATAC
58            TCATCGAGTC TCGAGCTCTC TCGCAGACAC TCTGTCTCGC TGAGTGACGC
59            TGATGTGTAC TGCTATAGAC TGCTCGCTAC ACGTGCAGCG ACTCACAGAG
60            AGACTCAGCG AGAGAGTGTG AGCTATCGCG AGTCTGACTG AGTGAGCTCG
61            ATAGCTCTCG ATCACGTGCG ATCGTAGCAG ATCGTCTGTG ATGTACGATG
62            ATGTGTCTAG CACACGATAG CACTCGCACG CAGACGTCTG CAGTACTGCG
63            CGACAGCGAG CGATCTGTCG CGCGTGCTAG CGCTCGAGTG CGTGATGACG
64            CTATGTACAG CTCGATATAG CTCGCACGCG CTGCGTCACG CTGTGCGTCG
65            TAGCATACTG TATACATGTG TATCACTCAG TATCTGATAG TCGTGACATG
66            TCTGATCGAG TGACATCTCG TGAGCTAGAG TGATAGAGCG TGCGTGTGCG
67            TGCTAGTCAG TGTATCACAG TGTGCGCGTG ACACGACGAC ACACGTAGTA
68            ACACTACTCG ACGACACGTA ACGAGTAGAC ACGCGTCTAG ACGTACACAC
69            ACGTACTGTG ACGTAGATCG ACTACGTCTC ACTATACGAG ACTCGCGTCG
70 }
71
72
73 mid_hash = {}
74
75 mids.each_with_index do |mid, i|
76   mid_hash[mid] = i
77 end
78
79 casts = []
80 casts << {:long=>'pos', :short=>'p', :type=>'uint', :mandatory=>false, :default=>0, :allowed=>nil, :disallowed=>nil}
81
82 options = Biopieces.options_parse(ARGV, casts)
83
84 pos = options[:pos]
85
86 Biopieces.open(options[:stream_in], options[:stream_out]) do |input, output|
87   input.each_record do |record|
88     if record.has_key? :SEQ
89       tag = record[:SEQ][pos ... pos + MID_LEN].upcase
90
91       if mid_hash[tag]
92         record[:SEQ]     = record[:SEQ][pos + MID_LEN ... record[:SEQ].length]
93         record[:SCORES]  = record[:SCORES][pos + MID_LEN ... record[:SCORES].length] if record[:SCORES]
94         record[:MID]     = tag
95         record[:MID_NUM] = mid_hash[tag] + 1
96         record[:SEQ_LEN] = record[:SEQ].length
97       end
98     end
99
100     output.puts record
101   end
102 end
103
104
105 # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
106
107
108 __END__