I don't know if anyone is still reading this thread, but I think that the problem that's making the program crash is the undef values in the data structure
I've written some code to attempt to replace each undef with some fake data that flags a window as undef, but what I've written doesn't seem to be modifying the output. Perhaps someone can tell me how to fix this:
while (<$in_file>) {
chomp;
if (/^SAMPLE/) {
my ( $placeholder, @coords ) = split /,/;
foreach my $coord (@coords) {
push @snp_bins, int( $coord / 100_000 );
}
}
else {
my ( $id, @snps ) = split /,/;
foreach my $snp (@snps) { # (@snps[0..$#snps-1]
$snp =~ s/$snp/$snp,/ # put commas back in (preserve cs
+v format)
}
foreach my $index ( 0 .. $#snp_bins ) {
if ( $snps[$index] ) {
push( @{ $data{$id}[ $snp_bins[$index] ] }, $snps[$index]
+); # see note [1]
}
else { # replace 'undef' elements with f
+lag data
my @ones_array;
foreach ( 1 .. 100) {
push @ones_array, "1 1,";
}
push( @{ $data{$id}[ $snp_bins[$index] ] }, @ones_arra
+y )
}
}
}
}
I am assuming that the problem lies with the line
if ( $snps[$index] )
Is this the case, and if so how can I fix it? Help appreciated.
|