Mercurial > repos > devteam > vcf2pgsnp
changeset 0:ae1b0fbd53e8 draft default tip
Imported from capsule None
author | devteam |
---|---|
date | Mon, 28 Jul 2014 11:30:07 -0400 |
parents | |
children | |
files | test-data/vcf2pgSnp_input.vcf test-data/vcf2pgSnp_output.pgSnp vcf2pgSnp.pl vcf2pgSnp.xml |
diffstat | 4 files changed, 267 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/vcf2pgSnp_input.vcf Mon Jul 28 11:30:07 2014 -0400 @@ -0,0 +1,50 @@ +##fileformat=VCFv4.1 +##INFO=<ID=LDAF,Number=1,Type=Float,Description="MLE Allele Frequency Accounting for LD"> +##INFO=<ID=AVGPOST,Number=1,Type=Float,Description="Average posterior probability from MaCH/Thunder"> +##INFO=<ID=RSQ,Number=1,Type=Float,Description="Genotype imputation quality from MaCH/Thunder"> +##INFO=<ID=ERATE,Number=1,Type=Float,Description="Per-marker Mutation rate from MaCH/Thunder"> +##INFO=<ID=THETA,Number=1,Type=Float,Description="Per-marker Transition rate from MaCH/Thunder"> +##INFO=<ID=CIEND,Number=2,Type=Integer,Description="Confidence interval around END for imprecise variants"> +##INFO=<ID=CIPOS,Number=2,Type=Integer,Description="Confidence interval around POS for imprecise variants"> +##INFO=<ID=END,Number=1,Type=Integer,Description="End position of the variant described in this record"> +##INFO=<ID=HOMLEN,Number=.,Type=Integer,Description="Length of base pair identical micro-homology at event breakpoints"> +##INFO=<ID=HOMSEQ,Number=.,Type=String,Description="Sequence of base pair identical micro-homology at event breakpoints"> +##INFO=<ID=SVLEN,Number=1,Type=Integer,Description="Difference in length between REF and ALT alleles"> +##INFO=<ID=SVTYPE,Number=1,Type=String,Description="Type of structural variant"> +##INFO=<ID=AC,Number=.,Type=Integer,Description="Alternate Allele Count"> +##INFO=<ID=AN,Number=1,Type=Integer,Description="Total Allele Count"> +##ALT=<ID=DEL,Description="Deletion"> +##FORMAT=<ID=GT,Number=1,Type=String,Description="Genotype"> +##FORMAT=<ID=DS,Number=1,Type=Float,Description="Genotype dosage from MaCH/Thunder"> +##FORMAT=<ID=GL,Number=.,Type=Float,Description="Genotype Likelihoods"> +##INFO=<ID=AA,Number=1,Type=String,Description="Ancestral Allele, ftp://ftp.1000genomes.ebi.ac.uk/vol1/ftp/pilot_data/technical/reference/ancestral_alignments/README"> +##INFO=<ID=AF,Number=1,Type=Float,Description="Global Allele Frequency based on AC/AN"> +##INFO=<ID=AMR_AF,Number=1,Type=Float,Description="Allele Frequency for samples from AMR based on AC/AN"> +##INFO=<ID=ASN_AF,Number=1,Type=Float,Description="Allele Frequency for samples from ASN based on AC/AN"> +##INFO=<ID=AFR_AF,Number=1,Type=Float,Description="Allele Frequency for samples from AFR based on AC/AN"> +##INFO=<ID=EUR_AF,Number=1,Type=Float,Description="Allele Frequency for samples from EUR based on AC/AN"> +##INFO=<ID=VT,Number=1,Type=String,Description="indicates what type of variant the line represents"> +##INFO=<ID=SNPSOURCE,Number=.,Type=String,Description="indicates if a snp was called when analysing the low coverage or exome alignment data"> +#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT HG00096 HG00097 HG00099 HG00100 +1 10523 . TCCG T 152 PASS VT=INDEL;RSQ=0.5246;ERATE=0.0023;AN=2184;AA=.;THETA=0.0172;AC=5;AVGPOST=0.9954;LDAF=0.0045;AF=0.00;AMR_AF=0.00;AFR_AF=0.01 GT:DS:GL 0|0:0.000:0.00,-1.50,-34.60 0|0:0.000:0.00,-0.90,-20.70 0|0:0.000:0.00,-1.50,-34.50 0|0:0.000:0.00,-0.30,-6.90 +1 10583 rs58108140 G A 100 PASS VT=SNP;SNPSOURCE=LOWCOV;AN=2184;AC=327;LDAF=0.2363;AVGPOST=0.7630;ERATE=0.0098;AA=.;RSQ=0.4161;THETA=0.0197;SNPSOURCE=LOWCOV;AF=0.15;ASN_AF=0.15;AMR_AF=0.18;AFR_AF=0.04;EUR_AF=0.21 GT:DS:GL 0|0:0.250:-0.18,-0.47,-2.42 0|0:0.200:-0.24,-0.44,-1.16 0|0:0.250:-0.15,-0.54,-3.12 0|1:0.750:-0.48,-0.48,-0.48 +1 10611 rs189107123 C G 100 PASS VT=SNP;SNPSOURCE=LOWCOV;THETA=0.0048;RSQ=0.3814;AN=2184;AVGPOST=0.9427;ERATE=0.0024;LDAF=0.0420;AA=.;SNPSOURCE=LOWCOV;AC=39;AF=0.02;ASN_AF=0.02;AMR_AF=0.02;AFR_AF=0.01;EUR_AF=0.02 GT:DS:GL 0|0:0.050:-0.48,-0.48,-0.48 0|0:0.350:-0.24,-0.44,-1.16 0|0:0.100:-0.22,-0.42,-1.80 0|0:0.100:-0.48,-0.48,-0.48 +1 10616 . CCGCCGTTGCAAAGGCGCGCCG C 2781 PASS VT=INDEL;RSQ=0.1048;AN=2184;LDAF=0.7052;AVGPOST=0.5674;ERATE=0.0146;AA=.;THETA=0.0195;AC=1972;AF=0.90;ASN_AF=0.88;AMR_AF=0.92;AFR_AF=0.89;EUR_AF=0.92 GT:DS:GL 1|1:1.450:0,0,0 1|1:1.750:0,0,0 1|1:1.200:0,0,0 0|1:1.150:0,0,0 +1 11540 . T TA 263 PASS VT=INDEL;AVGPOST=0.5915;LDAF=0.2676;AN=2184;RSQ=0.0831;AC=93;THETA=0.0011;AA=.;ERATE=0.0222;AF=0.04;ASN_AF=0.05;AMR_AF=0.04;AFR_AF=0.05;EUR_AF=0.04 GT:DS:GL 0|0:0.700:0,0,0 0|1:0.800:0,0,0 0|0:0.300:0,0,0 0|0:0.450:0,0,0 +1 13302 rs180734498 C T 100 PASS VT=SNP;SNPSOURCE=LOWCOV;THETA=0.0159;LDAF=0.1562;AN=2184;AC=250;AA=.;RSQ=0.6272;ERATE=0.0116;SNPSOURCE=LOWCOV;AVGPOST=0.8877;AF=0.11;ASN_AF=0.02;AMR_AF=0.09;AFR_AF=0.21;EUR_AF=0.13 GT:DS:GL 0|0:0.250:-0.13,-0.58,-3.62 0|1:0.950:-2.45,-0.00,-5.00 0|0:0.450:-0.29,-0.32,-5.00 0|0:0.300:-0.48,-0.48,-0.48 +1 13327 rs144762171 G C 100 PASS VT=SNP;SNPSOURCE=LOWCOV;RSQ=0.6776;THETA=0.0189;AN=2184;AC=57;AA=.;LDAF=0.0342;AVGPOST=0.9733;SNPSOURCE=LOWCOV;ERATE=0.0007;AF=0.03;ASN_AF=0.01;AMR_AF=0.03;AFR_AF=0.02;EUR_AF=0.04 GT:DS:GL 0|0:0.000:-0.03,-1.11,-5.00 0|1:1.000:-1.97,-0.01,-2.51 0|0:0.050:-0.01,-1.69,-5.00 0|0:0.100:-0.48,-0.48,-0.48 +1 13417 . C CGAGA 2788 PASS VT=INDEL;AVGPOST=0.7560;THETA=0.0061;AC=52;AN=2184;AA=.;RSQ=0.1970;LDAF=0.1542;ERATE=0.0127;AF=0.02;ASN_AF=0.02;AMR_AF=0.04;AFR_AF=0.01;EUR_AF=0.03 GT:DS:GL 0|0:0.050:0.00,-0.30,-5.60 0|0:0.250:0,0,0 0|0:0.400:0,0,0 0|0:0.350:0.00,-0.30,-5.60 +1 13957 . TC T 226 PASS VT=INDEL;RSQ=0.2600;AN=2184;AA=.;LDAF=0.0542;THETA=0.0144;AVGPOST=0.9144;ERATE=0.0029;AC=27;AF=0.01;ASN_AF=0.01;AMR_AF=0.01;AFR_AF=0.01;EUR_AF=0.01 GT:DS:GL 0|0:0.150:0,0,0 0|0:0.050:0,0,0 0|0:0.100:0,0,0 0|0:0.100:0,0,0 +1 13980 rs151276478 T C 100 PASS VT=SNP;SNPSOURCE=LOWCOV;ERATE=0.0021;THETA=0.0096;RSQ=0.3995;AN=2184;AC=55;LDAF=0.0628;AVGPOST=0.9128;AA=.;SNPSOURCE=LOWCOV;AF=0.03;ASN_AF=0.02;AMR_AF=0.03;AFR_AF=0.01;EUR_AF=0.03 GT:DS:GL 0|0:0.100:-0.48,-0.48,-0.48 0|1:0.950:-0.48,-0.48,-0.48 0|0:0.050:-0.48,-0.48,-0.48 0|0:0.050:-0.48,-0.48,-0.48 +1 16226 . AG A 104 PASS VT=INDEL;THETA=0.0211;AN=2184;RSQ=0.6096;LDAF=0.0034;AVGPOST=0.9971;AA=A;ERATE=0.0008;AC=4;AF=0.00;AMR_AF=0.00;EUR_AF=0.00 GT:DS:GL 0|0:0.000:0.00,-1.50,-24.00 0|0:0.050:0,0,0 0|0:0.000:0.00,-0.30,-4.80 0|0:0.000:0.00,-0.90,-14.40 +1 17496 . AC A 209 PASS VT=INDEL;AC=7;AN=2184;ERATE=0.0009;AA=A;RSQ=0.7057;THETA=0.0221;AVGPOST=0.9968;LDAF=0.0045;AF=0.00;AFR_AF=0.01 GT:DS:GL 0|0:0.000:0.00,-3.30,-42.90 0|0:0.000:0,0,0 0|0:0.000:0,0,0 0|0:0.000:0,0,0 +1 18869 . ACC A 126 PASS VT=INDEL;LDAF=0.2562;AC=52;AN=2184;ERATE=0.0162;AVGPOST=0.5962;AA=A;RSQ=0.0889;THETA=0.0107;AF=0.02;ASN_AF=0.04;AMR_AF=0.02;AFR_AF=0.02;EUR_AF=0.01 GT:DS:GL 0|0:0.400:0,0,0 0|0:0.350:0,0,0 0|0:0.250:0.00,-0.30,-2.90 0|0:0.550:0,0,0 +1 19083 . G GCA 139 PASS VT=INDEL;AVGPOST=0.7121;AN=2184;AC=13;AA=G;THETA=0.0077;ERATE=0.0123;RSQ=0.0826;LDAF=0.1645;AF=0.01;ASN_AF=0.01;AMR_AF=0.01;AFR_AF=0.01;EUR_AF=0.00 GT:DS:GL 0|0:0.200:0,0,0 0|0:0.400:0,0,0 0|0:0.250:0,0,0 0|0:0.350:0,0,0 +1 19190 . GC G 815 PASS VT=INDEL;AC=131;LDAF=0.2531;AN=2184;AA=G;THETA=0.0161;AVGPOST=0.6408;RSQ=0.1696;ERATE=0.0188;AF=0.06;ASN_AF=0.05;AMR_AF=0.10;AFR_AF=0.07;EUR_AF=0.04 GT:DS:GL 0|0:0.650:0,0,0 0|0:0.200:0,0,0 0|0:0.650:0,0,0 0|0:0.500:0,0,0 +1 20862 . A AG 78 PASS VT=INDEL;ERATE=0.0067;AVGPOST=0.8007;RSQ=0.0827;LDAF=0.8907;AN=2184;THETA=0.0095;AA=A;AC=2178;AF=1.00;ASN_AF=1.00;AMR_AF=1.00;AFR_AF=0.99;EUR_AF=1.00 GT:DS:GL 1|1:1.750:0,0,0 1|1:1.800:0,0,0 1|1:1.850:0,0,0 1|1:1.750:0,0,0 +1 30923 rs140337953 G T 100 PASS VT=SNP;SNPSOURCE=LOWCOV;RSQ=0.5363;LDAF=0.6540;THETA=0.0078;AN=2184;AA=T;ERATE=0.0127;AC=1581;SNPSOURCE=LOWCOV;AVGPOST=0.7309;AF=0.72;ASN_AF=0.88;AMR_AF=0.81;AFR_AF=0.48;EUR_AF=0.72 GT:DS:GL 1|1:1.950:-5.00,-0.61,-0.12 0|0:0.450:-0.10,-0.69,-2.81 0|0:0.450:-0.11,-0.64,-3.49 1|1:1.500:-0.48,-0.48,-0.48 +1 46402 . C CTGT 104 PASS VT=INDEL;RSQ=0.0943;AA=C;AN=2184;AVGPOST=0.8697;THETA=0.0108;AC=5;LDAF=0.0697;ERATE=0.0056;AF=0.00;ASN_AF=0.00;AMR_AF=0.00;AFR_AF=0.01 GT:DS:GL 0|0:0.050:0,0,0 0|0:0.100:0,0,0 0|0:0.050:0,0,0 0|0:0.050:0,0,0 +1 47190 . G GA 868 PASS VT=INDEL;LDAF=0.2298;AN=2184;AC=45;AA=G;RSQ=0.1035;AVGPOST=0.6322;THETA=0.0141;ERATE=0.0127;AF=0.02;ASN_AF=0.00;AMR_AF=0.03;AFR_AF=0.05;EUR_AF=0.01 GT:DS:GL 0|0:0.350:0,0,0 0|0:0.500:0,0,0 0|0:0.550:0,0,0 0|0:0.400:0,0,0 +1 49514 . AG A 449 PASS VT=INDEL;THETA=0.0164;AC=52;AN=2184;RSQ=0.4892;AA=A;LDAF=0.0469;AVGPOST=0.9448;ERATE=0.0053;AF=0.02;ASN_AF=0.02;AMR_AF=0.02;AFR_AF=0.01;EUR_AF=0.03 GT:DS:GL 0|0:0.000:0.00,-0.90,-12.40 0|1:0.800:0,0,0 0|0:0.150:-0.10,0.00,0.00 0|0:0.000:0.00,-0.30,-4.20 +1 49515 . G GA 44 PASS VT=INDEL;THETA=0.0214;AN=2184;AC=13;AA=A;ERATE=0.0008;AVGPOST=0.9879;LDAF=0.0111;RSQ=0.5361;AF=0.01;ASN_AF=0.02;EUR_AF=0.01 GT:DS:GL 0|0:0.050:0.00,-0.90,-9.70 0|0:0.050:0,0,0 0|0:0.000:0,0,0 0|0:0.000:0.00,-0.30,-3.20 +1 50481 . GGT G 2370 PASS VT=INDEL;RSQ=0.3702;THETA=0.0038;AN=2184;AA=G;ERATE=0.0177;AVGPOST=0.7981;AC=142;LDAF=0.1660;AF=0.07;ASN_AF=0.05;AMR_AF=0.13;AFR_AF=0.07;EUR_AF=0.04 GT:DS:GL 0|0:0.250:0,0,0 0|0:0.350:0,0,0 1|0:1.150:-3.00,-0.30,0.00 0|0:0.250:0,0,0
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/vcf2pgSnp_output.pgSnp Mon Jul 28 11:30:07 2014 -0400 @@ -0,0 +1,22 @@ +chr1 10522 10523 TCCG 1 8 0 +chr1 10582 10583 G/A 2 7,1 0,0 +chr1 10610 10611 C 1 8 0 +chr1 10615 10616 CCGCCGTTGCAAAGGCGCGCCG/C 2 1,7 0,0 +chr1 11539 11540 T/T 2 7,1 0,0 +chr1 13301 13302 C/T 2 7,1 0,0 +chr1 13326 13327 G/C 2 7,1 0,0 +chr1 13416 13417 C 1 8 0 +chr1 13956 13957 TC 1 8 0 +chr1 13979 13980 T/C 2 7,1 0,0 +chr1 16225 16226 AG 1 8 0 +chr1 17495 17496 AC 1 8 0 +chr1 18868 18869 ACC 1 8 0 +chr1 19082 19083 G 1 8 0 +chr1 19189 19190 GC 1 8 0 +chr1 20861 20862 A 1 8 0 +chr1 30922 30923 G/T 2 4,4 0,0 +chr1 46401 46402 C 1 8 0 +chr1 47189 47190 G 1 8 0 +chr1 49513 49514 AG/A 2 7,1 0,0 +chr1 49514 49515 G 1 8 0 +chr1 50480 50481 GGT/G 2 7,1 0,0
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vcf2pgSnp.pl Mon Jul 28 11:30:07 2014 -0400 @@ -0,0 +1,116 @@ +#!/usr/bin/perl -w +use strict; + +#convert from a vcf file to a pgSnp file. +#frequency count = chromosome count +#either a single column/individual +#or all columns as a population + +my $in; +my $stCol = 9; +my $endCol; +if (@ARGV && scalar @ARGV == 2) { + $stCol = shift @ARGV; + $in = shift @ARGV; + if ($stCol eq 'all') { $stCol = 10; } + else { $endCol = $stCol; } + $stCol--; #go from 1 based to zero based column number + if ($stCol < 9) { + print "ERROR genotype fields don't start until column 10\n"; + exit; + } +}elsif (@ARGV && scalar @ARGV == 1) { + $in = shift @ARGV; +}elsif (@ARGV) { + print "usage: vcf2pgSnp.pl [indColNum default=all] file.vcf > file.pgSnp\n"; + exit; +} + +open(FH, $in) or die "Couldn't open $in, $!\n"; +while (<FH>) { + chomp; + if (/^\s*#/) { next; } #skip comments/headers + if (/^\s*$/) { next; } #skip blank lines + my @f = split(/\t/); + #chr pos1base ID refNt altNt[,|D#|Int] quality filter info format geno1 ... + my $a; + my %nt; + my %all; + my $cnt = 0; + my $var; + if ($f[3] eq 'N') { next; } #ignore ref=N + if ($f[4] =~ /[DI]/ or $f[3] =~ /[DI]/) { next; } #don't do microsatellite + #if ($f[4] =~ /[ACTG],[ACTG]/) { next; } #only do positions with single alternate + if ($f[6] && !($f[6] eq '.' or $f[6] eq 'PASS')) { next; } #filtered for some reason + my $ind = 0; + if ($f[8] ne 'GT') { #more than just genotype + my @t = split(/:/, $f[8]); + foreach (@t) { if ($_ eq 'GT') { last; } $ind++; } + if ($ind == 0 && $f[8] !~ /^GT/) { die "ERROR couldn't find genotype in format $f[8]\n"; } + } + #count 0's, 1's, 2's + if (!$endCol) { $endCol = $#f; } + foreach my $col ($stCol .. $endCol) { + if ($ind > 0) { + my @t = split(/:/, $f[$col]); + $f[$col] = $t[$ind] . ":"; #only keep genotype part + } + if ($f[$col] =~ /^(0|1|2).(0|1|2)/) { + $nt{$1}++; + $nt{$2}++; + }elsif ($f[$col] =~ /^(0|1|2):/) { #chrY or male chrX, single + $nt{$1}++; + } #else ignore + } + if (%nt) { + if ($f[0] !~ /chr/) { $f[0] = "chr$f[0]"; } + print "$f[0]\t", ($f[1]-1), "\t$f[1]\t"; #position info + my $cnt = scalar(keys %nt); + my $fr; + my $sc; + my $all; + if (exists $nt{0}) { + $all = uc($f[3]); + $fr = $nt{0}; + $sc = 0; + } + if (!exists $nt{0} && exists $nt{1}) { + if ($f[4] =~ /([ACTG]),?/) { + $all = $1; + $fr = $nt{1}; + $sc = 0; + }else { die "bad variant nt $f[4] for nt 1"; } + }elsif (exists $nt{1}) { + if ($f[4] =~ /([ACTG]),?/) { + $all .= '/' . $1; + $fr .= ",$nt{1}"; + $sc .= ",0"; + }else { die "bad variant nt $f[4] for nt 1"; } + } + if (exists $nt{2}) { + if ($f[4] =~ /^[ACTG],([ACTG]),?/) { + $all .= '/' . $1; + $fr .= ",$nt{2}"; + $sc .= ",0"; + }else { die "bad variant nt $f[4] for nt 2"; } + } + if (exists $nt{3}) { + if ($f[4] =~ /^[ACTG],[ACTG],([ACTG])/) { + $all .= '/' . $1; + $fr .= ",$nt{3}"; + $sc .= ",0"; + }else { die "bad variant nt $f[4] for nt 3"; } + } + if (exists $nt{4}) { + if ($f[4] =~ /^[ACTG],[ACTG],[ACTG],([ACTG])/) { + $all .= '/' . $1; + $fr .= ",$nt{4}"; + $sc .= ",0"; + }else { die "bad variant nt $f[4] for nt 4"; } + } + print "$all\t$cnt\t$fr\t$sc\n"; + } +} +close FH; + +exit;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vcf2pgSnp.xml Mon Jul 28 11:30:07 2014 -0400 @@ -0,0 +1,79 @@ +<tool id="vcf2pgSnp" name="VCF to pgSnp" hidden="false" version="1.0.0"> + <description>Convert from VCF to pgSnp format</description> + <command interpreter="perl"> + #if $inType.how == "all" #vcf2pgSnp.pl all $input1 > $out_file1 + #else #vcf2pgSnp.pl $inType.ind_column $input1 > $out_file1 + #end if + </command> + <inputs> + <param format="vcf" name="input1" type="data" label="VCF dataset" /> + <conditional name="inType"> + <param name="how" type="select" label="How to treat individuals"> + <option value="all">Group all as a population</option> + <option value="one">Do just one individual</option> + </param> + <when value="one"> + <param name="ind_column" type="data_column" data_ref="input1" label="Column to convert" value="10" /> + </when> + <when value="all"> + <!-- do nothing --> + </when> + </conditional> + </inputs> + <outputs> + <data format="interval" name="out_file1" /> + </outputs> + <tests> + <test> + <param name="input1" value="vcf2pgSnp_input.vcf" ftype="vcf" /> + <param name="how" value="all" /> + <output name="output" file="vcf2pgSnp_output.pgSnp" /> + </test> + </tests> + + <help> +**Dataset formats** + +The input dataset is VCF_ format. +The output dataset is pgSnp_. (`Dataset missing?`_) + +.. _Dataset missing?: ./static/formatHelp.html +.. _VCF: ./static/formatHelp.html#vcf +.. _pgSnp: ./static/formatHelp.html#pgSnp + +----- + +**What it does** + +This converts a VCF dataset to pgSnp with the frequency counts being +chromosome counts. If there is more than one column of SNP data it will either +accumulate all columns as a population or convert the column indicated +to pgSnp. + +----- + +**Examples** + +- input:: + + 1 13327 rs144762171 G C 100 PASS VT=SNP;SNPSOURCE=LOWCOV GT:DS:GL 0|0:0.000:-0.03,-1.11,-5.00 0|1:1.000:-1.97,-0.01,-2.51 0|0:0.050:-0.01,-1.69,-5.00 0|0:0.100:-0.48,-0.48,-0.48 + 1 13980 rs151276478 T C 100 PASS VT=SNP;SNPSOURCE=LOWCOV GT:DS:GL 0|0:0.100:-0.48,-0.48,-0.48 0|1:0.950:-0.48,-0.48,-0.48 0|0:0.050:-0.48,-0.48,-0.48 0|0:0.050:-0.48,-0.48,-0.48 + 1 30923 rs140337953 G T 100 PASS VT=SNP;SNPSOURCE=LOWCOV GT:DS:GL 1|1:1.950:-5.00,-0.61,-0.12 0|0:0.450:-0.10,-0.69,-2.81 0|0:0.450:-0.11,-0.64,-3.49 1|1:1.500:-0.48,-0.48,-0.48 + etc. + +- output as a population:: + + chr1 13326 13327 G/C 2 7,1 0,0 + chr1 13979 13980 T/C 2 7,1 0,0 + chr1 30922 30923 G/T 2 4,4 0,0 + etc. + +- output for each column separately:: + + chr1 13326 13327 G 1 2 0 G/C 2 1,1 0,0 G 1 2 0 G 1 2 0 + chr1 13979 13980 T 1 2 0 T/C 2 1,1 0,0 T 1 2 0 T 1 2 0 + chr1 30922 30923 T 1 2 0 G 1 2 0 G 1 2 0 T 1 2 0 + etc. + +</help> +</tool>