bio-vcf 0.8.1 → 0.8.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.travis.yml +5 -0
- data/Gemfile +4 -4
- data/Gemfile.lock +4 -4
- data/README.md +32 -11
- data/VERSION +1 -1
- data/bin/bio-vcf +18 -9
- data/bio-vcf.gemspec +25 -17
- data/features/cli.feature +11 -1
- data/features/step_definitions/cli-feature.rb +1 -1
- data/features/step_definitions/vcf_header.rb +48 -0
- data/features/vcf_header.feature +35 -0
- data/lib/bio-vcf.rb +1 -0
- data/lib/bio-vcf/vcfheader.rb +88 -4
- data/lib/bio-vcf/vcfheader_line.rb +483 -0
- data/lib/bio-vcf/vcfsample.rb +10 -1
- data/ragel/gen_vcfheaderline_parser.rb +483 -0
- data/ragel/gen_vcfheaderline_parser.rl +122 -0
- data/ragel/generate.sh +5 -0
- data/template/vcf2json_full_header.erb +23 -0
- data/template/vcf2json_use_meta.erb +41 -0
- data/test/data/regression/vcf2json_full_header.ref +261 -0
- metadata +20 -11
@@ -0,0 +1,122 @@
|
|
1
|
+
# Ragel lexer for VCF-header
|
2
|
+
#
|
3
|
+
# This is a partial lexer for the VCF header format. Bio-vcf uses this
|
4
|
+
# to generate meta information in (for example) JSON format. The
|
5
|
+
# advantage of using a full state engine is that it allows for easy
|
6
|
+
# parsing of key-value pairs with syntax checking and, for example,
|
7
|
+
# escaped quotes in quoted string values. This edition validates ID and
|
8
|
+
# Number fields only.
|
9
|
+
#
|
10
|
+
# Note the .rb version is generated from ./ragel/gen_vcfheaderline_parser.rl
|
11
|
+
|
12
|
+
module BioVcf
|
13
|
+
|
14
|
+
module VcfHeaderParser
|
15
|
+
|
16
|
+
module RagelKeyValues
|
17
|
+
|
18
|
+
=begin
|
19
|
+
%%{
|
20
|
+
|
21
|
+
machine simple_lexer;
|
22
|
+
|
23
|
+
action mark { ts=p }
|
24
|
+
action endquoted {
|
25
|
+
emit.call(:value,data,ts,p)
|
26
|
+
}
|
27
|
+
|
28
|
+
action kw {
|
29
|
+
emit.call(:kw,data,ts,p)
|
30
|
+
}
|
31
|
+
|
32
|
+
squote = "'";
|
33
|
+
dquote = '"';
|
34
|
+
not_squote_or_escape = [^'\\];
|
35
|
+
not_dquote_or_escape = [^"\\];
|
36
|
+
escaped_something = /\\./;
|
37
|
+
ss = space* squote ( not_squote_or_escape | escaped_something )* >mark %endquoted squote;
|
38
|
+
dd = space* dquote ( not_dquote_or_escape | escaped_something )* >mark %endquoted dquote;
|
39
|
+
|
40
|
+
integer = ('+'|'-')?digit+;
|
41
|
+
float = ('+'|'-')?digit+'.'digit+;
|
42
|
+
assignment = '=';
|
43
|
+
identifier = (alpha alnum+);
|
44
|
+
str = (ss|dd)* ;
|
45
|
+
boolean = '.';
|
46
|
+
key_word = ( ('Type'|'Description'|'Source'|'Version'|identifier - ('ID'|'Number')) >mark %{ emit.call(:key_word,data,ts,p) } );
|
47
|
+
any_value = ( str|( integer|float|boolean|identifier >mark %{ emit.call(:value,data,ts,p) } ));
|
48
|
+
id_value = ( identifier >mark %{ emit.call(:value,data,ts,p) } );
|
49
|
+
|
50
|
+
number_value = ( ( integer|boolean|'A'|'R'|'G' ) >mark %{ emit.call(:value,data,ts,p) } );
|
51
|
+
|
52
|
+
id_kv = ( ( ('ID') %kw '=' id_value ) @!{ error_code="ID"} );
|
53
|
+
number_kv = ( ( ('Number') %kw '=' number_value ) @!{ error_code="Number"} );
|
54
|
+
key_value = ( id_kv | number_kv | (key_word '=' any_value) ) >mark @!{ error_code="key-value" };
|
55
|
+
|
56
|
+
main := ( '##' ('FILTER'|'FORMAT'|'INFO'|'ALT') '=') (('<'|',') key_value )* ;
|
57
|
+
}%%
|
58
|
+
=end
|
59
|
+
|
60
|
+
%% write data;
|
61
|
+
# %% this just fixes our syntax highlighting...
|
62
|
+
|
63
|
+
def self.run_lexer(buf, options = {})
|
64
|
+
do_debug = (options[:debug] == true)
|
65
|
+
data = buf.unpack("c*") if(buf.is_a?(String))
|
66
|
+
eof = data.length
|
67
|
+
values = []
|
68
|
+
stack = []
|
69
|
+
|
70
|
+
emit = lambda { |type, data, ts, p|
|
71
|
+
# Print the type and text of the last read token
|
72
|
+
# p ts,p
|
73
|
+
puts "#{type}: #{data[ts...p].pack('c*')}" if do_debug
|
74
|
+
values << [type,data[ts...p].pack('c*')]
|
75
|
+
}
|
76
|
+
|
77
|
+
error_code = nil
|
78
|
+
|
79
|
+
%% write init;
|
80
|
+
%% write exec;
|
81
|
+
|
82
|
+
raise "ERROR: "+error_code+" in "+buf if error_code
|
83
|
+
|
84
|
+
begin
|
85
|
+
res = {}
|
86
|
+
# p values
|
87
|
+
values.each_slice(2) do | a,b |
|
88
|
+
# p '*',a,b
|
89
|
+
res[a[1]] = b[1]
|
90
|
+
# p h[:value] if h[:name]==:identifier or h[:name]==:value or h[:name]==:string
|
91
|
+
end
|
92
|
+
rescue
|
93
|
+
print "ERROR: "
|
94
|
+
p values
|
95
|
+
raise
|
96
|
+
end
|
97
|
+
p res if do_debug
|
98
|
+
res
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
if __FILE__ == $0
|
105
|
+
|
106
|
+
lines = <<LINES
|
107
|
+
##FORMAT=<ID=GT,Number=1,Type=String,Description="Genotype">
|
108
|
+
##FORMAT=<ID=DP,Number=1,Type=Integer,Description="Total read depth",Extra="Yes?">
|
109
|
+
##FORMAT=<ID=DP4,Number=4,Type=Integer,Description="# high-quality ref-forward bases, ref-reverse, alt-forward and alt-reverse bases">
|
110
|
+
##INFO=<ID=PM,Number=0,Type=Flag,Description="Variant is Precious(Clinical,Pubmed Cited)">
|
111
|
+
##INFO=<ID=VP,Number=1,Type=String,Description="Variation Property. Documentation is at ftp://ftp.ncbi.nlm.nih.gov/snp/specs/dbSNP_BitField_latest.pdf",Source="dbsnp",Version="138">
|
112
|
+
##INFO=<ID=GENEINFO,Number=1,Type=String,Description="Pairs each of gene symbol:gene id. The gene symbol and id are delimited by a colon (:), and each pair is delimited by a vertical bar (|)">
|
113
|
+
##INFO=<ID=CLNHGVS,Number=.,Type=String,Description="Variant names from HGVS. The order of these variants corresponds to the order of the info in the other clinical INFO tags.">
|
114
|
+
##INFO=<ID=CLNHGVS1,Number=.,Type=String,Description="Variant names from \\"HGVS\\". The order of these 'variants' corresponds to the order of the info in the other clinical INFO tags.">
|
115
|
+
LINES
|
116
|
+
|
117
|
+
lines.strip.split("\n").each { |s|
|
118
|
+
print s,"\n"
|
119
|
+
p BioVcf::VcfHeaderParser::RagelKeyValues.run_lexer(s, debug: false)
|
120
|
+
}
|
121
|
+
|
122
|
+
end # test
|
data/ragel/generate.sh
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
=HEADER
|
2
|
+
<% require 'json' %>
|
3
|
+
[
|
4
|
+
{
|
5
|
+
"HEADER": {
|
6
|
+
"options": <%= options.to_h.to_json %>,
|
7
|
+
"files": <%= ARGV %>,
|
8
|
+
"version": "<%= BIOVCF_VERSION %>",
|
9
|
+
},
|
10
|
+
"COLUMNS": <%= header.column_names.to_json %>,
|
11
|
+
"META": <%= header.meta.to_json %>
|
12
|
+
},
|
13
|
+
=BODY
|
14
|
+
|
15
|
+
{
|
16
|
+
"seq:chr": "<%= rec.chrom %>" ,
|
17
|
+
"seq:pos": <%= rec.pos %> ,
|
18
|
+
"seq:ref": "<%= rec.ref %>" ,
|
19
|
+
"seq:alt": "<%= rec.alt[0] %>"
|
20
|
+
<% if rec.info.dp %> , "dp": <%= rec.info.dp %> <% end %>
|
21
|
+
},
|
22
|
+
=FOOTER
|
23
|
+
]
|
@@ -0,0 +1,41 @@
|
|
1
|
+
=HEADER
|
2
|
+
<% require 'json' %>
|
3
|
+
[
|
4
|
+
{
|
5
|
+
"HEADER": {
|
6
|
+
"options": <%= options.to_h.to_json %>,
|
7
|
+
"files": <%= ARGV %>,
|
8
|
+
"version": "<%= BIOVCF_VERSION %>",
|
9
|
+
},
|
10
|
+
"COLUMNS": <%= header.column_names.to_json %>,
|
11
|
+
"META": <%= header.meta.to_json %>
|
12
|
+
},
|
13
|
+
=BODY
|
14
|
+
<% sample_num = 0
|
15
|
+
sample_name = nil
|
16
|
+
sample_size = header.samples.size
|
17
|
+
%>
|
18
|
+
{
|
19
|
+
"seq:chr": "<%= rec.chrom %>" ,
|
20
|
+
"seq:pos": <%= rec.pos %> ,
|
21
|
+
"seq:ref": "<%= rec.ref %>" ,
|
22
|
+
"seq:alt": "<%= rec.alt[0] %>"
|
23
|
+
<% if rec.info.dp %> , "dp": <%= rec.info.dp %> <% end %>,
|
24
|
+
{
|
25
|
+
<% rec.each_sample do |s| %>
|
26
|
+
<% if not s.empty?
|
27
|
+
|
28
|
+
sample_name = header.samples[sample_num]
|
29
|
+
sample_num += 1
|
30
|
+
%>
|
31
|
+
"<%= sample_name %>": {
|
32
|
+
<% header.meta['FORMAT'].each_key do |k| %>
|
33
|
+
"<%= k %>": <%= s[k].to_json %>,
|
34
|
+
<% end %>
|
35
|
+
} <%= (sample_num<sample_size ? "," : "") %>
|
36
|
+
<% end %>
|
37
|
+
<% end %>
|
38
|
+
}
|
39
|
+
},
|
40
|
+
=FOOTER
|
41
|
+
]
|
@@ -0,0 +1,261 @@
|
|
1
|
+
|
2
|
+
[
|
3
|
+
{
|
4
|
+
"HEADER": {
|
5
|
+
"files": [],
|
6
|
+
},
|
7
|
+
"COLUMNS": ["CHROM","POS","ID","REF","ALT","QUAL","FILTER","INFO","FORMAT","Original","s1t1","s2t1","s3t1","s1t2","s2t2","s3t2"],
|
8
|
+
"META": {"INFO":{"AC":{"ID":"AC","Number":"A","Type":"Integer","Description":"Allele count in genotypes, for each ALT allele, in the same order as listed"},"AF":{"ID":"AF","Number":"A","Type":"Float","Description":"Allele Frequency, for each ALT allele, in the same order as listed"},"AN":{"ID":"AN","Number":"1","Type":"Integer","Description":"Total number of alleles in called genotypes"},"BaseQRankSum":{"ID":"BaseQRankSum","Number":"1","Type":"Float","Description":"Z-score from Wilcoxon rank sum test of Alt Vs. Ref base qualities"},"DP":{"ID":"DP","Number":"1","Type":"Integer","Description":"Approximate read depth; some reads may have been filtered"},"DS":{"ID":"DS","Number":"0","Type":"Flag","Description":"Were any of the samples downsampled?"},"Dels":{"ID":"Dels","Number":"1","Type":"Float","Description":"Fraction of Reads Containing Spanning Deletions"},"FS":{"ID":"FS","Number":"1","Type":"Float","Description":"Phred-scaled p-value using Fisher's exact test to detect strand bias"},"HaplotypeScore":{"ID":"HaplotypeScore","Number":"1","Type":"Float","Description":"Consistency of the site with at most two segregating haplotypes"},"InbreedingCoeff":{"ID":"InbreedingCoeff","Number":"1","Type":"Float","Description":"Inbreeding coefficient as estimated from the genotype likelihoods per-sample when compared against the Hardy-Weinberg expectation"},"MLEAC":{"ID":"MLEAC","Number":"A","Type":"Integer","Description":"Maximum likelihood expectation (MLE) for the allele counts (not necessarily the same as the AC), for each ALT allele, in the same order as listed"},"MLEAF":{"ID":"MLEAF","Number":"A","Type":"Float","Description":"Maximum likelihood expectation (MLE) for the allele frequency (not necessarily the same as the AF), for each ALT allele, in the same order as listed"},"MQ":{"ID":"MQ","Number":"1","Type":"Float","Description":"RMS Mapping Quality"},"MQ0":{"ID":"MQ0","Number":"1","Type":"Integer","Description":"Total Mapping Quality Zero Reads"},"MQRankSum":{"ID":"MQRankSum","Number":"1","Type":"Float","Description":"Z-score From Wilcoxon rank sum test of Alt vs. Ref read mapping qualities"},"QD":{"ID":"QD","Number":"1","Type":"Float","Description":"Variant Confidence/Quality by Depth"},"RPA":{"ID":"RPA","Number":".","Type":"Integer","Description":"Number of times tandem repeat unit is repeated, for each allele (including reference)"},"RU":{"ID":"RU","Number":"1","Type":"String","Description":"Tandem repeat unit (bases)"},"ReadPosRankSum":{"ID":"ReadPosRankSum","Number":"1","Type":"Float","Description":"Z-score from Wilcoxon rank sum test of Alt vs. Ref read position bias"},"STR":{"ID":"STR","Number":"0","Type":"Flag","Description":"Variant is a short tandem repeat"}},"FORMAT":{"AD":{"ID":"AD","Number":".","Type":"Integer","Description":"Allelic depths for the ref and alt alleles in the order listed"},"DP":{"ID":"DP","Number":"1","Type":"Integer","Description":"Approximate read depth (reads with MQ=255 or with bad mates are filtered)"},"GQ":{"ID":"GQ","Number":"1","Type":"Integer","Description":"Genotype Quality"},"GT":{"ID":"GT","Number":"1","Type":"String","Description":"Genotype"},"PL":{"ID":"PL","Number":"G","Type":"Integer","Description":"Normalized, Phred-scaled likelihoods for genotypes as defined in the VCF specification"}},"fileformat":"VCFv4.1","FILTER":"<ID=LowQual,Description=\"Low quality\">","GATKCommandLine":"<ID=UnifiedGenotyper,Version=2.8-1-g932cd3a,Date=\"Sat Jan 25 10:33:56 CET 2014\",Epoch=1390642436187,CommandLineOptions=\"analysis_type=UnifiedGenotyper input_file=[/data_fedor12/BAM/sander/Liver_clones/BIOPSY17513D/mapping/BIOPSY17513D_dedup_realigned_recalibrated.bam, /data_fedor12/BAM/sander/Liver_clones/clone3/mapping/clone3_dedup_realigned_recalibrated.bam, /data_fedor12/BAM/sander/Liver_clones/clone4/mapping/clone4_dedup_realigned_recalibrated.bam, /data_fedor12/BAM/sander/Liver_clones/clone10/mapping/clone10_dedup_realigned_recalibrated.bam, /data_fedor12/BAM/sander/Liver_clones/subclone33/mapping/subclone33_dedup_realigned_recalibrated.bam, /data_fedor12/BAM/sander/Liver_clones/subclone46/mapping/subclone46_dedup_realigned_recalibrated.bam, /data_fedor12/BAM/sander/Liver_clones/subclone105/mapping/subclone105_dedup_realigned_recalibrated.bam] read_buffer_size=null phone_home=AWS gatk_key=null tag=NA read_filter=[] intervals=[/data_fedor13/sander/variant_calling/Liver_clones/.queue/scatterGather/UnifiedGenotyper_noref-1-sg/temp_001_of_500/scatter.intervals] excludeIntervals=null interval_set_rule=UNION interval_merging=ALL interval_padding=0 reference_sequence=/data_fedor13/common_data/references/H_sapiens/GATK_b37_bundle_reference/basespace/human_g1k_v37.fasta nonDeterministicRandomSeed=false disableDithering=false maxRuntime=-1 maxRuntimeUnits=MINUTES downsampling_type=BY_SAMPLE downsample_to_fraction=null downsample_to_coverage=250 baq=OFF baqGapOpenPenalty=40.0 fix_misencoded_quality_scores=false allow_potentially_misencoded_quality_scores=false useOriginalQualities=false defaultBaseQualities=-1 performanceLog=null BQSR=null quantize_quals=0 disable_indel_quals=false emit_original_quals=false preserve_qscores_less_than=6 globalQScorePrior=-1.0 allow_bqsr_on_reduced_bams_despite_repeated_warnings=false validation_strictness=SILENT remove_program_records=false keep_program_records=false sample_rename_mapping_file=null unsafe=null disable_auto_index_creation_and_locking_when_reading_rods=false num_threads=1 num_cpu_threads_per_data_thread=1 num_io_threads=0 monitorThreadEfficiency=false num_bam_file_handles=null read_group_black_list=null pedigree=[] pedigreeString=[] pedigreeValidationType=STRICT allow_intervals_with_unindexed_bam=false generateShadowBCF=false variant_index_type=DYNAMIC_SEEK variant_index_parameter=-1 logging_level=INFO log_to_file=null help=false version=false genotype_likelihoods_model=SNP pcr_error_rate=1.0E-4 computeSLOD=false annotateNDA=false pair_hmm_implementation=LOGLESS_CACHING min_base_quality_score=17 max_deletion_fraction=0.05 allSitePLs=false min_indel_count_for_genotyping=5 min_indel_fraction_per_sample=0.25 indelGapContinuationPenalty=10 indelGapOpenPenalty=45 indelHaplotypeSize=80 indelDebug=false ignoreSNPAlleles=false allReadsSP=false ignoreLaneInfo=false reference_sample_calls=(RodBinding name= source=UNBOUND) reference_sample_name=null sample_ploidy=2 min_quality_score=1 max_quality_score=40 site_quality_prior=20 min_power_threshold_for_calling=0.95 min_reference_depth=100 exclude_filtered_reference_sites=false output_mode=EMIT_VARIANTS_ONLY heterozygosity=0.001 indel_heterozygosity=1.25E-4 genotyping_mode=DISCOVERY standard_min_confidence_threshold_for_calling=30.0 standard_min_confidence_threshold_for_emitting=30.0 alleles=(RodBinding name= source=UNBOUND) max_alternate_alleles=6 input_prior=[] contamination_fraction_to_filter=0.0 contamination_fraction_per_sample_file=null p_nonref_model=EXACT_INDEPENDENT exactcallslog=null dbsnp=(RodBinding name= source=UNBOUND) comp=[] out=org.broadinstitute.sting.gatk.io.stubs.VariantContextWriterStub no_cmdline_in_header=org.broadinstitute.sting.gatk.io.stubs.VariantContextWriterStub sites_only=org.broadinstitute.sting.gatk.io.stubs.VariantContextWriterStub bcf=org.broadinstitute.sting.gatk.io.stubs.VariantContextWriterStub onlyEmitSamples=[] debug_file=null metrics_file=null annotation=[] excludeAnnotation=[] filter_reads_with_N_cigar=false filter_mismatching_base_and_quals=false filter_bases_not_stored=false\">","contig":"<ID=GL000192.1,length=547496,assembly=b37>","reference":"file:human_g1k_v37.fasta"}
|
9
|
+
},
|
10
|
+
{
|
11
|
+
"seq:chr": "1" ,
|
12
|
+
"seq:pos": 10257 ,
|
13
|
+
"seq:ref": "A" ,
|
14
|
+
"seq:alt": "C"
|
15
|
+
, "dp": 1518
|
16
|
+
},
|
17
|
+
{
|
18
|
+
"seq:chr": "1" ,
|
19
|
+
"seq:pos": 10291 ,
|
20
|
+
"seq:ref": "C" ,
|
21
|
+
"seq:alt": "T"
|
22
|
+
, "dp": 1433
|
23
|
+
},
|
24
|
+
{
|
25
|
+
"seq:chr": "1" ,
|
26
|
+
"seq:pos": 10297 ,
|
27
|
+
"seq:ref": "C" ,
|
28
|
+
"seq:alt": "T"
|
29
|
+
, "dp": 1440
|
30
|
+
},
|
31
|
+
{
|
32
|
+
"seq:chr": "1" ,
|
33
|
+
"seq:pos": 10303 ,
|
34
|
+
"seq:ref": "C" ,
|
35
|
+
"seq:alt": "T"
|
36
|
+
, "dp": 1460
|
37
|
+
},
|
38
|
+
{
|
39
|
+
"seq:chr": "1" ,
|
40
|
+
"seq:pos": 10315 ,
|
41
|
+
"seq:ref": "C" ,
|
42
|
+
"seq:alt": "T"
|
43
|
+
, "dp": 1500
|
44
|
+
},
|
45
|
+
{
|
46
|
+
"seq:chr": "1" ,
|
47
|
+
"seq:pos": 10321 ,
|
48
|
+
"seq:ref": "C" ,
|
49
|
+
"seq:alt": "T"
|
50
|
+
, "dp": 1537
|
51
|
+
},
|
52
|
+
{
|
53
|
+
"seq:chr": "1" ,
|
54
|
+
"seq:pos": 10327 ,
|
55
|
+
"seq:ref": "T" ,
|
56
|
+
"seq:alt": "C"
|
57
|
+
, "dp": 1641
|
58
|
+
},
|
59
|
+
{
|
60
|
+
"seq:chr": "1" ,
|
61
|
+
"seq:pos": 10583 ,
|
62
|
+
"seq:ref": "G" ,
|
63
|
+
"seq:alt": "A"
|
64
|
+
, "dp": 129
|
65
|
+
},
|
66
|
+
{
|
67
|
+
"seq:chr": "1" ,
|
68
|
+
"seq:pos": 10665 ,
|
69
|
+
"seq:ref": "C" ,
|
70
|
+
"seq:alt": "G"
|
71
|
+
, "dp": 28
|
72
|
+
},
|
73
|
+
{
|
74
|
+
"seq:chr": "1" ,
|
75
|
+
"seq:pos": 10694 ,
|
76
|
+
"seq:ref": "C" ,
|
77
|
+
"seq:alt": "G"
|
78
|
+
, "dp": 22
|
79
|
+
},
|
80
|
+
{
|
81
|
+
"seq:chr": "1" ,
|
82
|
+
"seq:pos": 10723 ,
|
83
|
+
"seq:ref": "C" ,
|
84
|
+
"seq:alt": "G"
|
85
|
+
, "dp": 18
|
86
|
+
},
|
87
|
+
{
|
88
|
+
"seq:chr": "1" ,
|
89
|
+
"seq:pos": 12783 ,
|
90
|
+
"seq:ref": "G" ,
|
91
|
+
"seq:alt": "A"
|
92
|
+
, "dp": 939
|
93
|
+
},
|
94
|
+
{
|
95
|
+
"seq:chr": "1" ,
|
96
|
+
"seq:pos": 13116 ,
|
97
|
+
"seq:ref": "T" ,
|
98
|
+
"seq:alt": "G"
|
99
|
+
, "dp": 721
|
100
|
+
},
|
101
|
+
{
|
102
|
+
"seq:chr": "1" ,
|
103
|
+
"seq:pos": 13118 ,
|
104
|
+
"seq:ref": "A" ,
|
105
|
+
"seq:alt": "G"
|
106
|
+
, "dp": 703
|
107
|
+
},
|
108
|
+
{
|
109
|
+
"seq:chr": "1" ,
|
110
|
+
"seq:pos": 13178 ,
|
111
|
+
"seq:ref": "G" ,
|
112
|
+
"seq:alt": "A"
|
113
|
+
, "dp": 929
|
114
|
+
},
|
115
|
+
{
|
116
|
+
"seq:chr": "1" ,
|
117
|
+
"seq:pos": 13302 ,
|
118
|
+
"seq:ref": "C" ,
|
119
|
+
"seq:alt": "T"
|
120
|
+
, "dp": 692
|
121
|
+
},
|
122
|
+
{
|
123
|
+
"seq:chr": "1" ,
|
124
|
+
"seq:pos": 13757 ,
|
125
|
+
"seq:ref": "G" ,
|
126
|
+
"seq:alt": "A"
|
127
|
+
, "dp": 1149
|
128
|
+
},
|
129
|
+
{
|
130
|
+
"seq:chr": "1" ,
|
131
|
+
"seq:pos": 13868 ,
|
132
|
+
"seq:ref": "A" ,
|
133
|
+
"seq:alt": "G"
|
134
|
+
, "dp": 1108
|
135
|
+
},
|
136
|
+
{
|
137
|
+
"seq:chr": "1" ,
|
138
|
+
"seq:pos": 13896 ,
|
139
|
+
"seq:ref": "C" ,
|
140
|
+
"seq:alt": "A"
|
141
|
+
, "dp": 830
|
142
|
+
},
|
143
|
+
{
|
144
|
+
"seq:chr": "1" ,
|
145
|
+
"seq:pos": 14354 ,
|
146
|
+
"seq:ref": "C" ,
|
147
|
+
"seq:alt": "A"
|
148
|
+
, "dp": 764
|
149
|
+
},
|
150
|
+
{
|
151
|
+
"seq:chr": "1" ,
|
152
|
+
"seq:pos": 14464 ,
|
153
|
+
"seq:ref": "A" ,
|
154
|
+
"seq:alt": "T"
|
155
|
+
, "dp": 809
|
156
|
+
},
|
157
|
+
{
|
158
|
+
"seq:chr": "1" ,
|
159
|
+
"seq:pos": 14673 ,
|
160
|
+
"seq:ref": "G" ,
|
161
|
+
"seq:alt": "C"
|
162
|
+
, "dp": 754
|
163
|
+
},
|
164
|
+
{
|
165
|
+
"seq:chr": "1" ,
|
166
|
+
"seq:pos": 14699 ,
|
167
|
+
"seq:ref": "C" ,
|
168
|
+
"seq:alt": "G"
|
169
|
+
, "dp": 719
|
170
|
+
},
|
171
|
+
{
|
172
|
+
"seq:chr": "1" ,
|
173
|
+
"seq:pos": 14907 ,
|
174
|
+
"seq:ref": "A" ,
|
175
|
+
"seq:alt": "G"
|
176
|
+
, "dp": 1083
|
177
|
+
},
|
178
|
+
{
|
179
|
+
"seq:chr": "1" ,
|
180
|
+
"seq:pos": 14930 ,
|
181
|
+
"seq:ref": "A" ,
|
182
|
+
"seq:alt": "G"
|
183
|
+
, "dp": 1092
|
184
|
+
},
|
185
|
+
{
|
186
|
+
"seq:chr": "1" ,
|
187
|
+
"seq:pos": 14933 ,
|
188
|
+
"seq:ref": "G" ,
|
189
|
+
"seq:alt": "A"
|
190
|
+
, "dp": 1089
|
191
|
+
},
|
192
|
+
{
|
193
|
+
"seq:chr": "1" ,
|
194
|
+
"seq:pos": 14948 ,
|
195
|
+
"seq:ref": "G" ,
|
196
|
+
"seq:alt": "A"
|
197
|
+
, "dp": 1050
|
198
|
+
},
|
199
|
+
{
|
200
|
+
"seq:chr": "1" ,
|
201
|
+
"seq:pos": 14976 ,
|
202
|
+
"seq:ref": "G" ,
|
203
|
+
"seq:alt": "A"
|
204
|
+
, "dp": 939
|
205
|
+
},
|
206
|
+
{
|
207
|
+
"seq:chr": "1" ,
|
208
|
+
"seq:pos": 15118 ,
|
209
|
+
"seq:ref": "A" ,
|
210
|
+
"seq:alt": "G"
|
211
|
+
, "dp": 1004
|
212
|
+
},
|
213
|
+
{
|
214
|
+
"seq:chr": "1" ,
|
215
|
+
"seq:pos": 15190 ,
|
216
|
+
"seq:ref": "G" ,
|
217
|
+
"seq:alt": "A"
|
218
|
+
, "dp": 1090
|
219
|
+
},
|
220
|
+
{
|
221
|
+
"seq:chr": "1" ,
|
222
|
+
"seq:pos": 15211 ,
|
223
|
+
"seq:ref": "T" ,
|
224
|
+
"seq:alt": "G"
|
225
|
+
, "dp": 992
|
226
|
+
},
|
227
|
+
{
|
228
|
+
"seq:chr": "1" ,
|
229
|
+
"seq:pos": 15274 ,
|
230
|
+
"seq:ref": "A" ,
|
231
|
+
"seq:alt": "G"
|
232
|
+
, "dp": 636
|
233
|
+
},
|
234
|
+
{
|
235
|
+
"seq:chr": "1" ,
|
236
|
+
"seq:pos": 15447 ,
|
237
|
+
"seq:ref": "A" ,
|
238
|
+
"seq:alt": "G"
|
239
|
+
, "dp": 1213
|
240
|
+
},
|
241
|
+
{
|
242
|
+
"seq:chr": "1" ,
|
243
|
+
"seq:pos": 15688 ,
|
244
|
+
"seq:ref": "C" ,
|
245
|
+
"seq:alt": "T"
|
246
|
+
, "dp": 904
|
247
|
+
},
|
248
|
+
{
|
249
|
+
"seq:chr": "1" ,
|
250
|
+
"seq:pos": 16068 ,
|
251
|
+
"seq:ref": "T" ,
|
252
|
+
"seq:alt": "C"
|
253
|
+
, "dp": 398
|
254
|
+
},
|
255
|
+
{
|
256
|
+
"seq:chr": "1" ,
|
257
|
+
"seq:pos": 16103 ,
|
258
|
+
"seq:ref": "T" ,
|
259
|
+
"seq:alt": "G"
|
260
|
+
, "dp": 526
|
261
|
+
},]
|