[Bio] / FigKernelScripts / FFB2_create_binary_kmers.pl Repository:
ViewVC logotype

Diff of /FigKernelScripts/FFB2_create_binary_kmers.pl

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.2, Mon Jul 12 19:30:27 2010 UTC revision 1.3, Fri Oct 29 17:10:34 2010 UTC
# Line 33  Line 33 
33  my $motif_len;  my $motif_len;
34  my $column_sizes;  my $column_sizes;
35    
36    #
37    # Multiline input is of the form
38    #  motif column value
39    # where the column field defines the column into which the data should go.
40    # It is 1-based.
41    #
42    my $multiline;
43    
44  my $rc = GetOptions("size=s" => \$column_sizes,  my $rc = GetOptions("size=s" => \$column_sizes,
45                        "multiline" => \$multiline,
46                        "length=s" => \$motif_len);                        "length=s" => \$motif_len);
47    
48  if (!$rc || @ARGV < 2)  if (!$rc || @ARGV < 2)
# Line 51  Line 60 
60  my $out_file = shift;  my $out_file = shift;
61  my @cols = @ARGV;  my @cols = @ARGV;
62    
   
63  my $input_fh;  my $input_fh;
64  if ($in_file eq '-')  if ($in_file eq '-')
65  {  {
# Line 117  Line 125 
125          push(@lens, $l);          push(@lens, $l);
126      }      }
127  }  }
128    
129    my $num_keys = @lens;
130    
131  print STDERR "Computed max lengths: @max and byte sizes: @lens\n";  print STDERR "Computed max lengths: @max and byte sizes: @lens\n";
132    
133  my $cr = new KmersFileCreator(0xfeedface, $motif_len, 0, \@lens);  my $cr = new KmersFileCreator(0xfeedface, $motif_len, 0, \@lens);
# Line 124  Line 135 
135  $cr->write_file_header();  $cr->write_file_header();
136    
137  my $count = 0;  my $count = 0;
138    
139    if ($multiline)
140    {
141        my @blank_val = map { -1 } 1..$num_keys;
142        my @val = @blank_val;
143    
144        my $cur;
145        while (defined(my $l = <$input_fh>))
146        {
147            if ($l =~ /^(\S+)\t(\d+)\t(\d+)/)
148            {
149                my($motif, $col, $val) = ($1, $2, $3);
150                if ($cur ne $motif)
151                {
152                    if (defined($cur))
153                    {
154                        if (@val != $num_keys)
155                        {
156                            die "Val became invalid: " . Dumper($val);
157                        }
158                        if ($val[0] >= 0)
159                        {
160                            $cr->write_entry($cur, \@val);
161                            $count++;
162                        }
163                        @val = @blank_val;
164                    }
165                    $cur = $motif;
166                }
167                $val[$col - 1] = 0 + $val;
168            }
169            else
170            {
171                warn "Badly formatted input at $.: $l\n";
172            }
173        }
174        if ($val[0] >= 0)
175        {
176            $cr->write_entry($cur, \@val);
177            $count++;
178        }
179    }
180    else
181    {
182  while (<$input_fh>)  while (<$input_fh>)
183  {  {
184      chomp;      chomp;
# Line 135  Line 190 
190      $cr->write_entry($motif, \@vals);      $cr->write_entry($motif, \@vals);
191      $count++;      $count++;
192  }  }
193    }
194  $cr->close_file();  $cr->close_file();
195    
196  print "Loaded $count oligos\n";  print "Loaded $count oligos\n";

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.3

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3