]> git.donarmstrong.com Git - biopieces.git/blob - bp_bin/find_mids
slight cleanup of find_gaps
[biopieces.git] / bp_bin / find_mids
1 #!/usr/bin/env ruby
2
3 # Copyright (C) 2007-2010 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 count MID tags in sequences in the stream.
28
29 # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
30
31
32 require 'biopieces'
33 require 'pp'
34
35 mids = %w{ ACGAGTGCGT ACGCTCGACA AGACGCACTC AGCACTGTAG ATCAGACACG
36            ATATCGCGAG CGTGTCTCTA CTCGCGTGTC TAGTATCAGC TCTCTATGCG
37            TGATACGTCT TACTGAGCTA CATAGTAGTG CGAGAGATAC ATACGACGTA
38            TCACGTACTA CGTCTAGTAC TCTACGTAGC TGTACTACTC ACGACTACAG
39            CGTAGACTAG TACGAGTATG TACTCTCGTG TAGAGACGAG TCGTCGCTCG
40            ACATACGCGT ACGCGAGTAT ACTACTATGT ACTGTACAGT AGACTATACT
41            AGCGTCGTCT AGTACGCTAT ATAGAGTACT CACGCTACGT CAGTAGACGT
42            CGACGTGACT TACACACACT TACACGTGAT TACAGATCGT TACGCTGTCT
43            TAGTGTAGAT TCGATCACGT TCGCACTAGT TCTAGCGACT TCTATACTAT
44            TGACGTATGT TGTGAGTAGT ACAGTATATA ACGCGATCGA ACTAGCAGTA
45            AGCTCACGTA AGTATACATA AGTCGAGAGA AGTGCTACGA CGATCGTATA
46            CGCAGTACGA CGCGTATACA CGTACAGTCA CGTACTCAGA CTACGCTCTA
47            CTATAGCGTA TACGTCATCA TAGTCGCATA TATATATACA TATGCTAGTA
48            TCACGCGAGA TCGATAGTGA TCGCTGCGTA TCTGACGTCA TGAGTCAGTA
49            TGTAGTGTGA TGTCACACGA TGTCGTCGCA ACACATACGC ACAGTCGTGC
50            ACATGACGAC ACGACAGCTC ACGTCTCATC ACTCATCTAC ACTCGCGCAC
51            AGAGCGTCAC AGCGACTAGC AGTAGTGATC AGTGACACAC AGTGTATGTC
52            ATAGATAGAC ATATAGTCGC ATCTACTGAC CACGTAGATC CACGTGTCGC
53            CATACTCTAC CGACACTATC CGAGACGCGC CGTATGCGAC CGTCGATCTC
54            CTACGACTGC CTAGTCACTC CTCTACGCTC CTGTACATAC TAGACTGCAC
55            TAGCGCGCGC TAGCTCTATC TATAGACATC TATGATACGC TCACTCATAC
56            TCATCGAGTC TCGAGCTCTC TCGCAGACAC TCTGTCTCGC TGAGTGACGC
57            TGATGTGTAC TGCTATAGAC TGCTCGCTAC ACGTGCAGCG ACTCACAGAG
58            AGACTCAGCG AGAGAGTGTG AGCTATCGCG AGTCTGACTG AGTGAGCTCG
59            ATAGCTCTCG ATCACGTGCG ATCGTAGCAG ATCGTCTGTG ATGTACGATG
60            ATGTGTCTAG CACACGATAG CACTCGCACG CAGACGTCTG CAGTACTGCG
61            CGACAGCGAG CGATCTGTCG CGCGTGCTAG CGCTCGAGTG CGTGATGACG
62            CTATGTACAG CTCGATATAG CTCGCACGCG CTGCGTCACG CTGTGCGTCG
63            TAGCATACTG TATACATGTG TATCACTCAG TATCTGATAG TCGTGACATG
64            TCTGATCGAG TGACATCTCG TGAGCTAGAG TGATAGAGCG TGCGTGTGCG
65            TGCTAGTCAG TGTATCACAG TGTGCGCGTG ACACGACGAC ACACGTAGTA
66            ACACTACTCG ACGACACGTA ACGAGTAGAC ACGCGTCTAG ACGTACACAC
67            ACGTACTGTG ACGTAGATCG ACTACGTCTC ACTATACGAG ACTCGCGTCG
68 }
69
70
71 count_hash = Hash.new { |hash, key| hash[key] = 0 }
72 mid_hash   = {}
73
74 mids.each_with_index do |mid, i|
75   mid_hash[mid] = true
76 end
77
78 casts = []
79
80 bp = Biopieces.new
81
82 options = bp.parse(ARGV, casts)
83
84 bp.each_record do |record|
85   if record.has_key? :SEQ
86     tag = record[:SEQ][4 ... 14].upcase
87
88     if mid_hash.has_key? tag
89       count_hash[tag] += 1
90     end
91   end
92   bp.puts record
93 end
94
95 mids.each_with_index do |mid, i|
96   if count_hash[mid] > 0
97     record = {}
98     record[:REC_TYPE]  = "MID"
99     record[:MID_NUM]   = i + 1
100     record[:MID_COUNT] = count_hash[mid]
101     record[:MID_SEQ]   = mid
102     bp.puts record
103   end
104 end
105
106 # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
107
108
109 __END__