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 csv 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 flag data
my @ones_array;
foreach ( 1 .. 100) {
push @ones_array, "1 1,";
}
push( @{ $data{$id}[ $snp_bins[$index] ] }, @ones_array )
}
}
}
}
####
if ( $snps[$index] )
##
##
SAMPLE,16287215,16287226,16287365,16287649,16287784,16287851,16287912
HG00553,0 0,0 0,0 0,0 0,0 0,0 0,0 0
HG00554,0 0,0 0,0 0,0 0,0 0,0 0,0 0
HG00637,0 0,0 0,0 0,0 0,0 0,0 0,0 0
HG00638,0 0,0 0,0 0,0 0,0 0,1 1,0 0
HG00640,0 0,0 0,0 0,0 0,0 0,1 1,0 0
##
##
{
HG00553 [
[0] undef,
[1] undef,
<<< SNIP>>>
[159] undef,
[160] undef,
[161] undef,
[162] [
[0] "0 0,",
[1] "0 0,",
[2] "0 0,",
[3] "0 0,",
[4] "0 0,",
[5] "0 0,",
[6] "0 0,"
],
[163] undef,
[164] [
[0] "0 0,"
],
[165] undef,
[166] undef,
[167] undef,
[168] undef,
[169] undef,
[170] [
[0] "0 0,",
[1] "0 0,",
[2] "0 0,",
[3] "0 0,",
[4] "0 0,",
[5] "1 1,",
[6] "0 0,",
[7] "0 0,",
[8] "1 1,",
[9] "0 0,",
[10] "0 0,",
[11] "0 0,",
[12] "0 0,"
],
[171] undef,
[172] [
[0] "0 0,",
[1] "0 0,",
[2] "0 0,",
[3] "0 0,",
[4] "0 0,",
[5] "0 0,",
[6] "0 0,",
[7] "0 0,",
[8] "0 0,",
[9] "0 0,",
[10] "0 0,",
[11] "0 0,",
[12] "0 0,"
],
[173] undef,
[174] [
[0] "0 0,",
[1] "0 0,",
[2] "0 0,",
[3] "0 0,",
[4] "0 0,",
[5] "0 0,",
[6] "0 0,",
[7] "0 0,",
[8] "0 0,",
[9] "0 0,",
[10] "0 0,",
[11] "0 0,",
[12] "0 0,",
[13] "1 1,",
[14] "0 0,",
[15] "0 0,",
[16] "0 0,",
[17] "0 0,",
[18] "0 0,",
[19] "0 0,",
[20] "0 0,",
[21] "0 0,",
[22] "0 0,",
[23] "0 0,",
[24] "0 0,",
[25] "0 0,",
[26] "0 0,",
[27] "0 0,",
[28] "0 0,",
[29] "0 0,",
[30] "0 0,",
[31] "0 0,",
[32] "0 0,",
[33] "0 0,",
[34] "0 0,",
[35] "0 0,",
[36] "0 0,",
[37] "0 0,",
[38] "0 0,",
[39] "0 0,",
[40] "0 0,",
[41] "0 0,",
[42] "0 0,",
[43] "0 1,",
[44] "0 1,",
[45] "0 0,",
[46] "0 0,",
[47] "0 0,",
[48] "0 0,",
[49] "0 0,",
[50] "0 0,",
[51] "0 0,",
[52] "0 0,",
[53] "0 0,",
[54] "0 0,"
],
[175] [
[0] "1 0,",
<<< SNIP >>>