0
|
1 die qq(
|
|
2 Bad numbr of inputs
|
|
3
|
|
4 ) if(!@ARGV);
|
|
5
|
|
6 my $input=$ARGV[0];
|
|
7 my $vcf=$ARGV[1];
|
|
8
|
|
9
|
|
10 # Convert output to VCF format
|
|
11 open(FH, $input) or die "Couldn't open jsm file $input!\n";
|
|
12 open(OUT, ">$vcf") or die "Couldn't create vcf file $vcf!\n";
|
|
13
|
|
14 # print the vcf format we are using
|
|
15 print OUT "##fileformat=VCFv4.1\n";
|
|
16
|
|
17 # grab header which is the first line after the comment lines which start with ##
|
|
18 my $header = <FH>;
|
|
19 while(grep(/^##/, $header))
|
|
20 {
|
|
21 $header = <FH>;
|
|
22 }
|
|
23 my @head = split("\t", $header);
|
|
24
|
|
25 print "Converting jsm output to vcf\n";
|
|
26 # vcf header is
|
|
27 # #CHROM POS ID REF ALT QUAL FILTER INFO
|
|
28 print OUT "#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO\n";
|
|
29 # for each line in jsm transform to vcf, any columns not in vcf concatenate them
|
|
30 # together and place them in the info column
|
|
31 while (my $line = <FH>)
|
|
32 {
|
|
33 chomp $line;
|
|
34 my @fields = split("\t", $line);
|
|
35 # create info column
|
|
36 # tumor_name=MH208_TUMOR;normal_name=MH208_LIVER;...;n_alt_sum=702
|
|
37 my @info;
|
|
38 for(my $index = 4; $index < $#fields; $index++)
|
|
39 {
|
|
40 push @info, "$head[$index]=$fields[$index]";
|
|
41 }
|
|
42 my $infofield = join(";", @info);
|
|
43 $fields[-1] = "PASS";
|
|
44
|
|
45 # print the line
|
|
46 print OUT "$fields[0]\t$fields[1]\t.\t$fields[2]\t$fields[3]\t.\t$fields[-1]\t$infofield\n";
|
|
47 }
|
|
48 close(FH);
|
|
49 close(OUT);
|