]> git.donarmstrong.com Git - biopieces.git/blob - bp_bin/remove_mids
added remove_mids
[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 '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 bp = Biopieces.new
83
84 options = bp.parse(ARGV, casts)
85
86 pos = options[:pos]
87
88 bp.each_record do |record|
89   if record.has_key? :SEQ
90     tag = record[:SEQ][pos ... pos + MID_LEN].upcase
91
92     if mid_hash[tag]
93       record[:SEQ]     = record[:SEQ][pos + MID_LEN ... record[:SEQ].length]
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   bp.puts record
101 end
102
103 # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
104
105
106 __END__