if( scalar @ARGV < 6 )
{
    print "fpkm_matrix.pl <file prefix> <file name> [0-based ID column] [0-based FPKM column] <output_file> (sample 1) (sample 2) ...\n";
} else {
    $file_prefix = shift(@ARGV);
    $file_suffix = shift(@ARGV);
    $id_col = shift(@ARGV);
    $fpkm_col = shift(@ARGV);;
    $output_file = shift(@ARGV);
    @samples = @ARGV;

    %genes_list = ();
    %fpkms = ();

    for( $i = 0; $i < scalar @samples; $i++ ) {
	open( IN, "<".$file_prefix."/".$samples[$i]."/".$file_suffix );

	while( $nextLine = <IN> ) {
	    chomp( $nextLine );
	    @entries = split( /\t/, $nextLine );
	    
	    $genes_list{ $entries[$id_col] } = 1;
	    $fpkms{ $samples[$i]."\t".$entries[$id_col] } = $entries[$fpkm_col];
	}

	close( IN );
    }

    open( OUT, ">".$output_file);

    print OUT "GENE";
    for( $i = 0; $i < scalar @samples; $i++ ) {
	print OUT "\t".$samples[$i];
    }
    print OUT "\n";

    foreach $key ( sort( keys %genes_list ) ) {
	print OUT $key;

	for( $i = 0; $i < scalar @samples; $i++ ) {
	    if( exists $fpkms{ $samples[$i]."\t".$key } ) {
		print OUT "\t".$fpkms{ $samples[$i]."\t".$key };
	    } else {
		print OUT "\tna";
	    }
	}

	print OUT "\n";
    }

    close( OUT );
}
