Julia速度极慢

我写的应该符合你的要求,就是不知道性能咋样

我来试一下,多谢您

我测试了一下,速度大概是你原始代码的4倍(两者的结果一致)。隐去了 prinrln 改为用 cnt 计数,实际中应该是在 println 那里写入文件吧。

我的代码

function uniq2(file::String)
    cnt=0
    for line in eachline(file)
        if startswith(line,"##") #注释
            continue
        end
        cols=split(line, "\t")
        for col in cols[10:end]
            if col[1:3]!="./." && col[1:3]!="0/0"
                cnt+=1
#                 println(line)
                break
            end
        end
    end
    cnt
end

性能评估

julia> using BenchmarkTools
julia> @benchmark uniq2("test.vcf")
BenchmarkTools.Trial: 
  memory estimate:  60.61 MiB
  allocs estimate:  894321
  --------------
  minimum time:     34.431 ms (0.00% GC)
  median time:      44.756 ms (0.00% GC)
  mean time:        46.046 ms (9.56% GC)
  maximum time:     84.316 ms (27.26% GC)
  --------------
  samples:          109
  evals/sample:     1

你的原始代码

function uniq(a::String):String
    cnt=0
    for l::String in eachline(a::String)
        if startswith(l::String,"##")
            continue
        else
            d=split(l,"\t")::Array{SubString{String},1}
            dd=d[10:end]
            for i::Int in 1:33
                if split(dd[i],":")[1]!="./." && split(dd[i],":")[1]!="0/0"
                   cnt+=1
                    break
                end
            end
        end
    end
    cnt
end

性能评估

julia> @benchmark uniq("test.vcf")
BenchmarkTools.Trial: 
  memory estimate:  254.25 MiB
  allocs estimate:  6756309
  --------------
  minimum time:     175.146 ms (6.69% GC)
  median time:      188.476 ms (12.44% GC)
  mean time:        188.458 ms (9.68% GC)
  maximum time:     203.563 ms (11.78% GC)
  --------------
  samples:          27
  evals/sample:     1

我现在有点搞不清楚怎么用高阶函数还更慢了
这是你的

julia> @btime uniq2("test.vcf")
  36.504 ms (894321 allocations: 60.61 MiB)
10000

这是我的

julia> @btime uniq("test.vcf")
  334.940 ms (14034725 allocations: 494.90 MiB)
10000

这是他的

julia> @btime uniq("test.vcf")
  168.504 ms (6756309 allocations: 254.25 MiB)
10000

脸好疼 :rofl: :rofl:

代码

function uniq(path::String)
    count = 0
    fn1 = x->split(x,":")
    fn2 = strs -> strs[1] != "0/0" && strs[1] != "./."
    for line in eachline(path)
        if startswith(line,"##") == false
            datas = split(line,"\t")
            split_words = map(fn1,datas[10:end])
            
            # fn2 = strs-> begin 
            #     if strs[1] != "0/0" && strs[1] != "./."
            #         println(strs)
            #     end
            # end

            if any(fn2,split_words)
                count += 1
            end
        end

    end
    count
end

@an.123123 过滤可以在一些高阶函数调用函数时体现,没有必要刻意用if

感谢,确实快,只用了6分多,多谢两位大神,受益匪浅

我的代码只用了一次 split,你们的都用了两次。不得不承认,你的代码性能还是更强一些

function uniq(path::String)
    count = 0
    fn2 = strs -> strs[1:3] != "0/0" && strs[1:3] != "./."
    for line in eachline(path)
        if startswith(line,"##") == false
            datas = split(line,"\t")
            if any(fn2,datas)
                count += 1
            end
        end

    end
    count
end
julia> @benchmark uniq("test.vcf")
BenchmarkTools.Trial: 
  memory estimate:  43.00 MiB
  allocs estimate:  530273
  --------------
  minimum time:     29.441 ms (0.00% GC)
  median time:      35.775 ms (0.00% GC)
  mean time:        38.088 ms (8.00% GC)
  maximum time:     65.979 ms (42.08% GC)
  --------------
  samples:          132
  evals/sample:     1

吓死我了,我还以为我以后都要用for

julia> function uniq(path::String)
           count = 0
           fn1 = x->split(x,":")
           fn2 = strs -> strs[1:3] != "0/0" && strs[1:3] != "./."
           for line in eachline(path)
               if startswith(line,"##") == false
                   datas = split(line,"\t")
                   split_words = datas[10:end]
                   

                   if any(fn2,split_words)
                       count += 1
                   end
               end

           end
           count
       end
uniq (generic function with 1 method)

julia> @btime uniq("test.vcf")
  40.636 ms (744981 allocations: 54.54 MiB)
10000

其实直接用 if any(fn2,datas) 性能还要更好一些,因为减少了内存分配。我测试了一下也确实如此。 :joy:
if any(fn2,split_words) 的性能如下

BenchmarkTools.Trial: 
  memory estimate:  54.54 MiB
  allocs estimate:  744981
  --------------
  minimum time:     32.445 ms (0.00% GC)
  median time:      40.585 ms (0.00% GC)
  mean time:        44.043 ms (8.98% GC)
  maximum time:     88.102 ms (50.75% GC)
  --------------
  samples:          114
  evals/sample:     1

这个和我的我觉得没有显著差异,也就是说,尽量减少不必要的内存分配才是重点

是出在split 这里,您用一次split 确实很快,我加上后立马就变慢了

如果是不规则的,必须用到两次split,if any(fn2,datas)确实是要好,在、最后请教,if any 和if all 是什么用法,我在书里怎么没看到过。。。。。。。。小白,勿笑

不是 if any, ifany 是分开的,any all这两个函数其实我也是第一次见。我可能会用 maximumminimum.(不要试,更慢)

help?> any
search: any Any any! code_warntype ReadOnlyMemoryError @code_warntype isreadonly

  any(itr) -> Bool

  Test whether any elements of a boolean collection are true, returning true as soon as the first true value in itr is encountered (short-circuiting).

  If the input contains missing values, return missing if all non-missing values are false (or equivalently, if the input contains no true value), following three-valued logic (https://en.wikipedia.org/wiki/Three-valued_logic).

  Examples
  ≡≡≡≡≡≡≡≡≡≡

  julia> a = [true,false,false,true]
  4-element Array{Bool,1}:
   1
   0
   0
   1
  
  julia> any(a)
  true

同理可知 if all.
遇到不知道的函数,如 any,请用在 repl里面用 ?any 查询

受教了两位大神,我一定努力学习,本来我都想放弃Julia了,原来它真的快

不用谢,有可能我学历比你还低几年
ps: 去接触下函数式语言吧,这样不用写太多for,完全不知道再写什么


另外,你在我的代码中很少看到continuebreakfor,都是写函数式写惯了的结果,都习惯用高阶函数来代替了

在这里附一部分数据(字数所限,仅附20行,测试用有10000行),免得后来者看的一头雾水。

Chr1	1441	Chr1__1441	TA	TAA,T	2048.89	PASS	AC=14,10;AF=0.093,0.067;AN=150;BaseQRankSum=0.731;ClippingRankSum=0.731;DP=711;ExcessHet=13.7436;FS=0.000;InbreedingCoeff=-0.1815;MLEAC=14,10;MLEAF=0.093,0.067;MQ=50.00;MQRankSum=-5.730e-01;QD=10.40;ReadPosRankSum=0.747;SNPEFF_EFFECT=INTERGENIC;SNPEFF_IMPACT=MODIFIER;SNPEFF_FUNCTIONAL_CLASS=NONE;SOR=0.687;ANN=T|intergenic_region|MODIFIER|CHR_START-CSS0005497|CHR_START-CSS0005497|intergenic_region|CHR_START-CSS0005497|||n.1442delA||||||,TAA|intergenic_region|MODIFIER|CHR_START-CSS0005497|CHR_START-CSS0005497|intergenic_region|CHR_START-CSS0005497|||n.1442_1443insA||||||	GT:AD:DP:GQ:PGT:PID:PL	0/1:7,1,0:8:21:0|1:1441_T_TA:21,0,320,42,323,365	0/1:8,1,0:9:18:0|1:1441_T_TA:18,0,354,42,357,399	0/0:19,0,0:19:48:.:.:0,48,720,48,720,720	0/0:15,1,0:16:3:0|1:1441_T_TA:0,3,610,45,613,655	0/0:15,0,0:15:33:.:.:0,33,495,33,495,495	0/2:5,0,6:11:99:.:.:129,144,281,0,137,120	0/0:16,0,0:16:33:.:.:0,33,495,33,495,495	0/2:11,5,8:24:84:.:.:154,84,418,0,166,317	0/2:13,0,3:16:44:.:.:44,83,507,0,424,415	0/0:16,0,0:16:27:.:.:0,27,405,27,405,405	0/0:8,0,0:8:18:.:.:0,18,270,18,270,270	0/0:5,0,0:5:15:.:.:0,15,197,15,197,197	0/1:3,2,0:5:75:0|1:1441_T_TA:75,0,105,84,111,195	0/0:12,0,0:12:21:.:.:0,21,315,21,315,315	0/0:12,0,0:12:18:.:.:0,18,270,18,270,270	0/1:3,5,0:8:66:.:.:121,0,66,130,81,211	0/0:8,0,0:8:15:.:.:0,15,225,15,225,225	./.:0,0,0:0:.:.:.:.	./.:0,0,0:0:.:.:.:.	0/0:4,0,0:4:6:.:.:0,6,90,6,90,90	0/0:8,0,0:8:12:.:.:0,12,180,12,180,180	0/0:6,0,0:6:12:.:.:0,12,180,12,180,180	./.:0,0,0:2:.:0|1:1431_A_G:.	0/2:13,0,4:17:71:.:.:71,110,467,0,357,345	0/0:4,0,0:4:6:.:.:0,6,90,6,90,90	0/2:6,0,3:9:65:.:.:65,83,248,0,165,156	0/0:7,0,0:8:21:0|1:1431_A_G:0,21,302,21,302,302	0/0:14,0,0:14:21:.:.:0,21,315,21,315,315	0/0:6,0,0:6:15:.:.:0,15,225,15,225,225	0/1:4,1,0:5:14:.:.:14,0,105,26,108,134
Chr1	1659	Chr1__1659	GA	GAA,G	4210.01	PASS	AC=7,37;AF=0.073,0.385;AN=96;BaseQRankSum=0.727;ClippingRankSum=-7.200e-02;DP=403;ExcessHet=9.0070;FS=2.459;InbreedingCoeff=0.0295;MLEAC=5,38;MLEAF=0.052,0.396;MQ=48.40;MQRankSum=0.103;QD=17.76;ReadPosRankSum=0.101;SNPEFF_EFFECT=INTERGENIC;SNPEFF_IMPACT=MODIFIER;SNPEFF_FUNCTIONAL_CLASS=NONE;SOR=0.510;ANN=G|intergenic_region|MODIFIER|CHR_START-CSS0005497|CHR_START-CSS0005497|intergenic_region|CHR_START-CSS0005497|||n.1660delA||||||,GAA|intergenic_region|MODIFIER|CHR_START-CSS0005497|CHR_START-CSS0005497|intergenic_region|CHR_START-CSS0005497|||n.1660_1661insA||||||	GT:AD:DP:GQ:PL	1/2:2,6,2:10:5:133,5,46,108,0,193	0/1:5,1,0:6:9:9,0,92,23,95,118	0/2:2,0,4:6:35:88,94,141,0,47,35	0/0:10,0,0:10:15:0,15,225,15,225,225	0/2:2,0,3:5:38:64,70,117,0,47,38	2/2:0,0,6:6:18:159,159,159,18,18,0	2/2:0,0,4:4:12:106,106,106,12,12,0	0/2:3,0,15:18:25:327,336,406,0,70,25	2/2:0,0,9:9:27:239,239,239,27,27,0	0/2:9,0,3:12:27:27,54,265,0,211,203	0/2:2,0,5:7:32:95,101,148,0,46,32	./.:0,0,0:1:.:.	0/0:4,0,0:4:0:0,0,84,0,84,84	0/2:5,0,5:10:99:102,117,290,0,173,158	0/2:3,2,5:10:19:103,79,179,0,19,70	0/0:6,0,0:6:0:0,0,26,0,26,26	0/2:2,0,4:6:19:88,94,125,0,31,19	2/2:0,0,3:3:9:63,63,63,9,9,0	./.:0,0,0:0:.:.	./.:0,0,0:0:.:.	./.:0,0,0:2:.:.	./.:0,0,0:0:.:.	./.:0,0,0:0:.:.	0/2:1,0,3:4:14:68,71,94,0,23,14	2/2:0,0,4:4:12:106,106,106,12,12,0	2/2:0,0,6:6:18:159,159,159,18,18,0	./.:5,0,0:5:.:.	./.:1,0,0:1:.:.	0/2:3,0,7:10:86:155,164,272,0,107,86	./.:1,0,0:1:.:.
Chr1	1704	Chr1__1704	T	TGG	5545.22	PASS	AC=53;AF=0.552;AN=96;BaseQRankSum=-2.630e-01;ClippingRankSum=0.988;DP=376;ExcessHet=0.0003;FS=0.000;InbreedingCoeff=0.3698;MLEAC=57;MLEAF=0.594;MQ=48.68;MQRankSum=-1.920e+00;QD=30.98;ReadPosRankSum=0.296;SNPEFF_EFFECT=INTERGENIC;SNPEFF_IMPACT=MODIFIER;SNPEFF_FUNCTIONAL_CLASS=NONE;SOR=0.716;ANN=TGG|intergenic_region|MODIFIER|CHR_START-CSS0005497|CHR_START-CSS0005497|intergenic_region|CHR_START-CSS0005497|||n.1704_1705insGG||||||	GT:AD:DP:GQ:PGT:PID:PL	0/1:4,7:11:99:.:.:282,0,147	0/1:5,3:8:80:.:.:80,0,201	1/1:0,5:5:15:.:.:225,15,0	0/1:5,2:7:69:0|1:1704_T_TGG:69,0,204	1/1:0,6:6:18:.:.:270,18,0	0/0:8,0:8:9:.:.:0,9,135	1/1:0,4:4:12:.:.:180,12,0	0/0:19,0:19:21:.:.:0,21,315	0/0:19,0:19:18:.:.:0,18,270	1/1:0,8:8:24:.:.:350,24,0	0/0:7,0:7:6:.:.:0,6,90	./.:0,0:0:.:.:.:.	0/0:2,0:2:3:.:.:0,3,45	1/1:0,6:6:18:.:.:266,18,0	0/0:10,0:10:15:.:.:0,15,225	./.:3,0:3:.:.:.:.	1/1:0,5:5:15:.:.:212,15,0	0/0:6,0:6:2:.:.:0,2,133	./.:0,0:0:.:.:.:.	./.:0,0:0:.:.:.:.	./.:0,0:0:.:.:.:.	./.:0,0:0:.:.:.:.	./.:0,0:0:.:.:.:.	0/0:9,0:9:0:.:.:0,0,113	0/0:5,0:5:9:.:.:0,9,135	0/0:5,0:5:15:.:.:0,15,225	./.:2,0:2:.:.:.:.	./.:1,0:1:.:.:.:.	0/1:10,1:11:12:.:.:12,0,402	./.:1,0:1:.:.:.:.
Chr1	1745	Chr1__1745	CA	C,CAA	8169.11	PASS	AC=75,8;AF=0.815,0.087;AN=92;BaseQRankSum=-2.240e-01;ClippingRankSum=0.727;DP=323;ExcessHet=0.0336;FS=0.000;InbreedingCoeff=0.3762;MLEAC=77,5;MLEAF=0.837,0.054;MQ=56.10;MQRankSum=0.224;QD=30.60;ReadPosRankSum=0.727;SNPEFF_EFFECT=INTERGENIC;SNPEFF_IMPACT=MODIFIER;SNPEFF_FUNCTIONAL_CLASS=NONE;SOR=0.947;ANN=C|intergenic_region|MODIFIER|CHR_START-CSS0005497|CHR_START-CSS0005497|intergenic_region|CHR_START-CSS0005497|||n.1746delA||||||,CAA|intergenic_region|MODIFIER|CHR_START-CSS0005497|CHR_START-CSS0005497|intergenic_region|CHR_START-CSS0005497|||n.1746_1747insA||||||	GT:AD:DP:GQ:PGT:PID:PL	1/1:0,10,0:10:30:.:.:304,30,0,304,30,304	1/1:0,9,0:9:27:.:.:324,27,0,324,27,324	1/1:0,3,0:3:9:.:.:86,9,0,86,9,86	1/1:0,3,0:3:9:.:.:86,9,0,86,9,86	1/2:0,1,4:5:24:.:.:194,168,165,28,0,24	1/1:0,6,0:6:18:.:.:172,18,0,172,18,172	2/2:0,0,3:3:9:1|1:1745_C_CA:103,103,103,9,9,0	1/1:0,14,0:14:42:.:.:409,42,0,409,42,409	0/1:2,15,0:17:6:.:.:381,0,6,387,52,439	1/1:0,2,0:2:6:.:.:58,6,0,58,6,58	1/1:0,6,0:6:18:.:.:167,18,0,167,18,167	./.:0,0,0:0:.:.:.:.	1/1:0,2,0:2:6:.:.:58,6,0,58,6,58	2/2:0,0,3:3:9:1|1:1745_C_CA:135,135,135,9,9,0	1/1:0,14,0:14:42:.:.:392,42,0,392,42,392	./.:0,0,0:0:.:.:.:.	2/2:0,0,2:2:6:1|1:1745_C_CA:90,90,90,6,6,0	1/1:0,5,0:5:15:.:.:144,15,0,144,15,144	./.:0,0,0:0:.:.:.:.	./.:0,0,0:0:.:.:.:.	./.:0,0,0:0:.:.:.:.	./.:0,0,0:0:.:.:.:.	./.:0,0,0:0:.:.:.:.	1/1:0,9,0:9:27:.:.:259,27,0,259,27,259	1/1:0,4,0:4:12:.:.:115,12,0,115,12,115	1/1:0,2,0:2:6:.:.:58,6,0,58,6,58	./.:0,0,0:0:.:.:.:.	./.:0,0,0:0:.:.:.:.	1/1:0,8,0:8:24:.:.:230,24,0,230,24,230	./.:0,0,0:0:.:.:.:.
Chr1	1822	Chr1__1822	A	AT	906.71	PASS	AC=12;AF=0.133;AN=90;BaseQRankSum=0.546;ClippingRankSum=-7.270e-01;DP=352;ExcessHet=0.0050;FS=0.000;InbreedingCoeff=0.3570;MLEAC=12;MLEAF=0.133;MQ=56.09;MQRankSum=0.194;QD=16.19;ReadPosRankSum=0.720;SNPEFF_EFFECT=INTERGENIC;SNPEFF_IMPACT=MODIFIER;SNPEFF_FUNCTIONAL_CLASS=NONE;SOR=0.598;ANN=AT|intergenic_region|MODIFIER|CHR_START-CSS0005497|CHR_START-CSS0005497|intergenic_region|CHR_START-CSS0005497|||n.1822_1823insT||||||	GT:AD:DP:GQ:PL	0/0:15,0:15:30:0,30,450	0/0:11,0:11:15:0,15,225	0/0:8,0:8:21:0,21,315	0/0:4,0:4:9:0,9,135	1/1:0,4:4:12:122,12,0	0/0:6,0:6:15:0,15,225	1/1:0,2:2:6:61,6,0	0/0:13,0:13:27:0,27,405	0/0:19,0:19:39:0,39,585	0/0:3,0:3:9:0,9,113	0/0:8,0:8:18:0,18,270	./.:0,0:0:.:.	0/0:3,0:3:9:0,9,125	1/1:0,7:7:21:214,21,0	0/0:17,0:17:30:0,30,450	0/0:2,0:2:6:0,6,72	0/1:1,3:4:33:80,0,33	0/0:2,0:2:3:0,3,45	./.:0,0:0:.:.	./.:0,0:0:.:.	./.:0,0:0:.:.	./.:0,0:0:.:.	./.:0,0:0:.:.	0/0:10,0:10:21:0,21,315	0/0:2,0:2:6:0,6,84	./.:0,0:0:.:.	./.:0,0:0:.:.	./.:0,0:0:.:.	0/0:10,0:10:15:0,15,225	./.:0,0:0:.:.
Chr1	1882	Chr1__1882	C	CT	908.32	PASS	AC=7;AF=0.083;AN=84;BaseQRankSum=0.727;ClippingRankSum=0.720;DP=361;ExcessHet=0.0336;FS=0.000;InbreedingCoeff=0.2428;MLEAC=6;MLEAF=0.071;MQ=48.62;MQRankSum=-6.940e-01;QD=25.23;ReadPosRankSum=-7.700e-02;SNPEFF_EFFECT=INTERGENIC;SNPEFF_IMPACT=MODIFIER;SNPEFF_FUNCTIONAL_CLASS=NONE;SOR=0.631;ANN=CT|intergenic_region|MODIFIER|CHR_START-CSS0005497|CHR_START-CSS0005497|intergenic_region|CHR_START-CSS0005497|||n.1882_1883insT||||||	GT:AD:DP:GQ:PGT:PID:PL	0/0:19,0:19:39:.:.:0,39,585	0/0:6,0:6:12:.:.:0,12,180	0/0:11,0:11:33:.:.:0,33,379	0/0:7,0:7:15:.:.:0,15,225	0/1:2,4:6:72:0|1:1869_A_G:162,0,72	0/0:7,0:7:12:.:.:0,12,180	1/1:0,1:1:3:1|1:1869_A_G:45,3,0	0/0:14,0:14:30:.:.:0,30,450	0/0:15,0:15:18:.:.:0,18,270	0/0:3,0:3:6:.:.:0,6,90	0/0:7,0:7:9:.:.:0,9,135	./.:0,0:0:.:.:.:.	0/0:3,0:3:9:.:.:0,9,113	1/1:0,13:13:39:1|1:1869_A_G:542,39,0	0/0:14,0:14:21:.:.:0,21,315	0/0:2,0:2:6:.:.:0,6,72	0/1:1,3:4:33:0|1:1869_A_G:123,0,33	0/0:1,0:1:3:.:.:0,3,30	./.:0,0:0:.:.:.:.	./.:0,0:0:.:.:.:.	./.:0,0:0:.:.:.:.	./.:0,0:0:.:.:.:.	./.:0,0:0:.:.:.:.	0/0:7,0:7:21:.:.:0,21,280	0/0:3,0:3:6:.:.:0,6,90	0/0:2,0:2:6:.:.:0,6,72	./.:0,0:0:.:.:.:.	./.:0,0:0:.:.:.:.	0/0:7,0:7:15:.:.:0,15,225	./.:0,0:0:.:.:.:.
Chr1	1898	Chr1__1898	AT	A	1484.93	PASS	AC=11;AF=0.120;AN=92;BaseQRankSum=0.727;ClippingRankSum=-3.610e-01;DP=361;ExcessHet=2.3098;FS=6.740;InbreedingCoeff=-0.0445;MLEAC=12;MLEAF=0.130;MQ=57.73;MQRankSum=0.00;QD=17.89;ReadPosRankSum=0.198;SNPEFF_EFFECT=INTERGENIC;SNPEFF_IMPACT=MODIFIER;SNPEFF_FUNCTIONAL_CLASS=NONE;SOR=0.802;ANN=A|intergenic_region|MODIFIER|CHR_START-CSS0005497|CHR_START-CSS0005497|intergenic_region|CHR_START-CSS0005497|||n.1899delT||||||	GT:AD:DP:GQ:PGT:PID:PL	0/0:19,0:19:39:.:.:0,39,585	0/0:8,0:8:0:.:.:0,0,197	0/0:11,0:11:27:.:.:0,27,405	0/0:6,0:6:15:.:.:0,15,225	0/0:4,0:6:12:.:.:0,12,180	0/0:4,0:4:9:.:.:0,9,135	./.:0,0:0:.:.:.:.	0/0:15,0:15:24:.:.:0,24,360	0/0:10,0:10:15:.:.:0,15,225	0/0:3,0:3:6:.:.:0,6,90	0/0:9,0:9:15:.:.:0,15,225	./.:0,0:0:.:.:.:.	0/0:3,0:3:9:.:.:0,9,113	0/0:10,0:10:21:.:.:0,21,315	0/0:11,0:11:24:.:.:0,24,360	0/0:3,0:3:9:.:.:0,9,91	0/1:3,1:4:33:0|1:1792_A_G:33,0,123	0/0:1,0:1:3:.:.:0,3,30	./.:0,0:0:.:.:.:.	./.:0,0:0:.:.:.:.	./.:0,0:0:.:.:.:.	./.:0,0:0:.:.:.:.	./.:0,0:0:.:.:.:.	0/0:8,0:8:18:.:.:0,18,270	0/0:4,0:4:9:.:.:0,9,135	0/0:2,0:2:6:.:.:0,6,72	./.:0,0:0:.:.:.:.	./.:0,0:0:.:.:.:.	0/0:8,0:8:18:.:.:0,18,270	./.:0,0:0:.:.:.:.
Chr1	2621	Chr1__2621	G	GA	1473.12	PASS	AC=8;AF=0.070;AN=114;BaseQRankSum=0.248;ClippingRankSum=-6.270e-01;DP=435;ExcessHet=4.1749;FS=0.000;InbreedingCoeff=-0.1615;MLEAC=10;MLEAF=0.088;MQ=47.45;MQRankSum=0.00;QD=15.84;ReadPosRankSum=0.573;SNPEFF_EFFECT=INTERGENIC;SNPEFF_IMPACT=MODIFIER;SNPEFF_FUNCTIONAL_CLASS=NONE;SOR=0.659;ANN=GA|intergenic_region|MODIFIER|CHR_START-CSS0005497|CHR_START-CSS0005497|intergenic_region|CHR_START-CSS0005497|||n.2621_2622insA||||||	GT:AD:DP:GQ:PGT:PID:PL	0/0:4,0:4:6:.:.:0,6,90	0/0:9,0:9:15:.:.:0,15,225	0/1:1,7:8:21:0|1:2621_G_GA:278,0,21	0/1:13,3:16:49:.:.:49,0,413	0/1:3,6:9:99:0|1:2621_G_GA:231,0,108	0/0:2,0:2:6:.:.:0,6,84	./.:0,0:0:.:.:.:.	0/0:30,0:30:60:.:.:0,60,900	0/0:16,0:16:30:.:.:0,30,450	0/1:6,8:14:99:0|1:2621_G_GA:293,0,228	0/0:6,0:6:12:.:.:0,12,180	./.:0,0:0:.:.:.:.	0/0:6,0:6:12:.:.:0,12,180	0/0:2,0:2:6:.:.:0,6,72	0/0:16,0:16:30:.:.:0,30,450	0/1:6,6:12:99:.:.:159,0,234	0/0:1,0:1:3:.:.:0,3,42	0/0:6,0:6:6:.:.:0,6,90	./.:0,0:0:.:.:.:.	./.:0,0:0:.:.:.:.	0/0:2,0:2:6:.:.:0,6,84	0/0:8,0:8:9:.:.:0,9,135	0/0:3,0:3:3:.:.:0,3,45	0/0:3,0:3:3:.:.:0,3,45	0/0:5,0:5:9:.:.:0,9,135	0/0:3,0:3:3:.:.:0,3,45	0/0:4,0:4:3:.:.:0,3,45	0/0:2,0:2:3:.:.:0,3,45	0/0:12,0:12:24:.:.:0,24,360	./.:0,0:0:.:.:.:.
Chr1	2758	Chr1__2758	C	CT	482.86	PASS	AC=7;AF=0.052;AN=134;BaseQRankSum=0.671;ClippingRankSum=-5.600e-02;DP=600;ExcessHet=4.5325;FS=9.248;InbreedingCoeff=-0.1089;MLEAC=8;MLEAF=0.060;MQ=42.08;MQRankSum=-1.067e+00;QD=5.31;ReadPosRankSum=0.322;SNPEFF_EFFECT=INTERGENIC;SNPEFF_IMPACT=MODIFIER;SNPEFF_FUNCTIONAL_CLASS=NONE;SOR=1.818;ANN=CT|intergenic_region|MODIFIER|CHR_START-CSS0005497|CHR_START-CSS0005497|intergenic_region|CHR_START-CSS0005497|||n.2758_2759insT||||||	GT:AD:DP:GQ:PGT:PID:PL	0/0:15,0:15:39:.:.:0,39,585	0/0:16,0:16:0:.:.:0,0,314	0/0:10,0:10:24:.:.:0,24,360	0/0:17,0:17:36:.:.:0,36,540	0/0:4,0:4:12:.:.:0,12,167	0/0:9,0:9:24:.:.:0,24,360	0/0:1,0:1:3:.:.:0,3,30	0/1:16,3:19:75:0|1:2758_C_CT:75,0,663	0/0:17,0:17:9:.:.:0,9,588	0/0:16,0:16:36:.:.:0,36,540	0/0:7,0:7:18:.:.:0,18,270	0/0:4,0:4:12:.:.:0,12,133	0/1:6,2:8:66:0|1:2758_C_CT:66,0,311	0/0:7,0:7:15:.:.:0,15,225	0/0:16,0:16:30:.:.:0,30,450	0/0:12,0:12:15:.:.:0,15,225	0/0:5,0:5:0:.:.:0,0,42	0/0:5,0:5:15:.:.:0,15,129	./.:0,0:0:.:.:.:.	0/0:4,0:4:12:.:.:0,12,155	./.:2,0:2:.:.:.:.	0/0:3,0:3:9:.:.:0,9,125	0/0:8,0:8:24:.:.:0,24,206	0/0:6,0:6:9:.:.:0,9,135	0/0:1,0:1:3:.:.:0,3,42	0/0:5,0:5:15:.:.:0,15,175	0/0:2,0:2:6:.:.:0,6,72	0/0:7,0:7:21:.:.:0,21,178	0/0:6,0:6:18:.:.:0,18,205	0/0:1,0:1:3:.:.:0,3,30
Chr1	3545	Chr1__3545	T	TTAGA	1502.6	PASS	AC=12;AF=0.078;AN=154;BaseQRankSum=0.731;ClippingRankSum=-2.890e-01;DP=1168;ExcessHet=0.0025;FS=1.648;InbreedingCoeff=0.4177;MLEAC=9;MLEAF=0.058;MQ=49.22;MQRankSum=-7.310e-01;QD=25.47;ReadPosRankSum=0.731;SNPEFF_EFFECT=INTERGENIC;SNPEFF_IMPACT=MODIFIER;SNPEFF_FUNCTIONAL_CLASS=NONE;SOR=0.535;ANN=TTAGA|intergenic_region|MODIFIER|CHR_START-CSS0005497|CHR_START-CSS0005497|intergenic_region|CHR_START-CSS0005497|||n.3545_3546insTAGA||||||	GT:AD:DP:GQ:PGT:PID:PL	0/0:20,0:20:42:.:.:0,42,630	0/0:30,0:30:60:.:.:0,60,900	0/0:17,0:17:30:.:.:0,30,450	0/0:27,0:27:51:.:.:0,51,765	0/0:13,0:13:24:.:.:0,24,360	0/0:11,0:11:30:.:.:0,30,450	0/0:13,0:13:21:.:.:0,21,315	0/0:25,0:25:48:.:.:0,48,720	0/0:29,0:29:57:.:.:0,57,855	0/0:25,0:25:45:.:.:0,45,675	0/0:17,0:17:36:.:.:0,36,540	0/0:11,0:11:33:0|1:3538_C_T:0,33,495	0/0:15,0:15:27:.:.:0,27,405	0/0:19,0:19:39:.:.:0,39,585	0/0:12,0:12:27:.:.:0,27,405	0/0:23,0:23:33:.:.:0,33,495	0/0:12,0:12:24:.:.:0,24,360	0/0:14,0:14:15:.:.:0,15,225	./.:0,0:0:.:.:.:.	0/0:17,0:17:27:.:.:0,27,405	0/0:13,0:13:21:.:.:0,21,315	0/0:12,0:12:30:.:.:0,30,450	1/1:0,3:3:9:1|1:3545_T_TTAGA:135,9,0	0/0:16,0:16:39:.:.:0,39,585	0/0:11,0:11:18:.:.:0,18,270	./.:5,0:5:.:.:.:.	0/1:4,8:12:99:0|1:3545_T_TTAGA:366,0,141	0/0:8,0:8:9:.:.:0,9,135	0/1:2,4:6:72:.:.:162,0,72	0/0:8,0:9:24:0|1:3545_T_G:0,24,360
Chr1	3873	Chr1__3873	A	AT	305.88	PASS	AC=4;AF=0.032;AN=126;BaseQRankSum=0.720;ClippingRankSum=0.925;DP=532;ExcessHet=5.3536;FS=7.395;InbreedingCoeff=-0.1491;MLEAC=4;MLEAF=0.032;MQ=53.51;MQRankSum=-7.200e-01;QD=7.46;ReadPosRankSum=0.736;SNPEFF_EFFECT=INTERGENIC;SNPEFF_IMPACT=MODIFIER;SNPEFF_FUNCTIONAL_CLASS=NONE;SOR=1.749;ANN=AT|intergenic_region|MODIFIER|CHR_START-CSS0005497|CHR_START-CSS0005497|intergenic_region|CHR_START-CSS0005497|||n.3873_3874insT||||||	GT:AD:DP:GQ:PGT:PID:PL	0/0:13,0:13:24:.:.:0,24,360	0/0:5,0:6:15:0|1:3792_G_A:0,15,225	0/0:11,0:11:27:.:.:0,27,405	0/0:16,0:16:30:.:.:0,30,450	0/0:12,0:12:21:.:.:0,21,315	0/0:4,0:4:0:.:.:0,0,72	0/0:9,0:9:21:.:.:0,21,315	0/0:15,0:15:45:0|1:3873_A_AT:0,45,655	0/1:9,3:12:99:0|1:3873_A_AT:99,0,394	0/0:20,0:20:18:.:.:0,18,569	0/0:11,0:11:9:.:.:0,9,135	0/0:3,0:3:6:.:.:0,6,90	0/0:9,0:9:0:.:.:0,0,209	0/0:10,0:10:0:.:.:0,0,322	0/0:15,0:15:18:.:.:0,18,270	0/1:4,2:6:72:.:.:72,0,162	0/0:1,0:1:3:.:.:0,3,30	0/0:5,0:5:12:.:.:0,12,180	./.:0,0:0:.:.:.:.	./.:0,0:0:.:.:.:.	./.:0,0:0:.:.:.:.	./.:0,0:0:.:.:.:.	0/0:1,0:1:3:.:.:0,3,25	0/0:11,0:11:0:.:.:0,0,321	0/0:6,0:6:15:.:.:0,15,225	0/0:3,0:3:3:.:.:0,3,45	0/0:5,0:5:6:.:.:0,6,90	./.:0,0:0:.:.:.:.	0/0:4,0:4:3:.:.:0,3,45	0/0:2,0:2:6:.:.:0,6,72
Chr1	4100	Chr1__4100	TAA	TA,T	5421.72	PASS	AC=39,11;AF=0.415,0.117;AN=94;BaseQRankSum=0.404;ClippingRankSum=-7.100e-02;DP=378;ExcessHet=0.0189;FS=3.177;InbreedingCoeff=0.3683;MLEAC=38,9;MLEAF=0.404,0.096;MQ=50.04;MQRankSum=-4.230e-01;QD=20.69;ReadPosRankSum=0.592;SNPEFF_EFFECT=INTERGENIC;SNPEFF_IMPACT=MODIFIER;SNPEFF_FUNCTIONAL_CLASS=NONE;SOR=0.993;ANN=T|intergenic_region|MODIFIER|CHR_START-CSS0005497|CHR_START-CSS0005497|intergenic_region|CHR_START-CSS0005497|||n.4101_4102delAA||||||,TA|intergenic_region|MODIFIER|CHR_START-CSS0005497|CHR_START-CSS0005497|intergenic_region|CHR_START-CSS0005497|||n.4102delA||||||	GT:AD:DP:GQ:PL	1/1:0,14,0:14:42:395,42,0,395,42,395	0/0:9,0,0:9:15:0,15,225,15,225,225	1/1:0,7,0:7:21:198,21,0,198,21,198	0/1:2,7,0:9:29:170,0,29,176,50,227	1/2:1,3,4:8:48:187,85,91,48,0,72	0/0:4,0,0:4:12:0,12,155,12,155,155	2/2:0,0,5:5:15:192,192,192,15,15,0	0/1:3,10,0:13:45:243,0,45,252,75,327	0/0:18,0,0:18:12:0,12,596,12,596,596	0/1:3,13,0:16:18:320,0,18,328,57,386	0/0:4,0,0:4:9:0,9,135,9,135,135	./.:0,0,0:0:.:.	0/0:5,0,0:5:0:0,0,125,0,125,125	2/2:0,0,6:6:18:232,232,232,18,18,0	0/1:13,6,0:19:99:112,0,308,151,326,478	1/1:0,3,0:3:9:135,9,0,135,9,135	2/2:0,0,4:4:12:154,154,154,12,12,0	0/0:1,0,0:1:3:0,3,30,3,30,30	./.:0,0,0:0:.:.	./.:0,0,0:0:.:.	./.:0,0,0:0:.:.	./.:0,0,0:0:.:.	./.:0,0,0:0:.:.	0/0:5,0,0:5:15:0,15,197,15,197,197	0/0:7,0,0:7:15:0,15,225,15,225,225	0/0:4,0,0:4:12:0,12,121,12,121,121	./.:0,0,0:0:.:.	./.:0,0,0:0:.:.	1/1:0,7,0:7:21:198,21,0,198,21,198	./.:0,0,0:0:.:.
Chr1	4221	Chr1__4221	AT	A	1235.1	PASS	AC=13;AF=0.151;AN=86;BaseQRankSum=0.466;ClippingRankSum=0.825;DP=337;ExcessHet=0.0135;FS=0.000;InbreedingCoeff=0.3382;MLEAC=14;MLEAF=0.163;MQ=48.14;MQRankSum=-2.637e+00;QD=16.25;ReadPosRankSum=1.35;SNPEFF_EFFECT=INTERGENIC;SNPEFF_IMPACT=MODIFIER;SNPEFF_FUNCTIONAL_CLASS=NONE;SOR=0.617;ANN=A|intergenic_region|MODIFIER|CHR_START-CSS0005497|CHR_START-CSS0005497|intergenic_region|CHR_START-CSS0005497|||n.4222delT||||||	GT:AD:DP:GQ:PL	0/0:11,0:11:17:0,17,291	0/0:6,0:6:6:0,6,90	0/0:4,0:4:12:0,12,155	0/0:6,0:6:9:0,9,135	./.:2,0:2:.:.	0/0:5,0:5:12:0,12,180	1/1:0,5:5:15:172,15,0	0/0:15,0:15:30:0,30,450	0/0:11,0:11:18:0,18,270	0/0:13,0:13:33:0,33,495	0/0:9,0:9:24:0,24,360	./.:0,0:0:.:.	0/0:6,0:6:9:0,9,135	1/1:0,7:7:21:225,21,0	0/0:17,0:17:30:0,30,450	0/0:4,0:4:12:0,12,143	1/1:0,4:4:12:138,12,0	0/0:2,0:2:6:0,6,40	./.:0,0:0:.:.	./.:0,0:0:.:.	./.:0,0:0:.:.	./.:0,0:0:.:.	./.:0,0:0:.:.	0/0:8,0:8:12:0,12,180	0/0:5,0:5:9:0,9,135	0/0:4,0:4:12:0,12,155	./.:0,0:0:.:.	./.:0,0:0:.:.	0/0:11,0:11:18:0,18,270	./.:0,0:0:.:.
Chr1	4454	Chr1__4454	C	CAAAAAAAAAAAAT,CAAAAAAAAAAAAAT,CAAAAAAAATTTT	1952.88	PASS	AC=9,1,2;AF=0.092,0.010,0.020;AN=98;BaseQRankSum=0.591;ClippingRankSum=0.955;DP=502;ExcessHet=2.6589;FS=0.000;InbreedingCoeff=0.0815;MLEAC=9,1,1;MLEAF=0.092,0.010,0.010;MQ=44.73;MQRankSum=-1.741e+00;QD=15.50;ReadPosRankSum=0.348;SNPEFF_EFFECT=INTERGENIC;SNPEFF_IMPACT=MODIFIER;SNPEFF_FUNCTIONAL_CLASS=NONE;SOR=0.676;ANN=CAAAAAAAAAAAAAT|intergenic_region|MODIFIER|CHR_START-CSS0005497|CHR_START-CSS0005497|intergenic_region|CHR_START-CSS0005497|||n.4454_4455insAAAAAAAAAAAAAT||||||,CAAAAAAAAAAAAT|intergenic_region|MODIFIER|CHR_START-CSS0005497|CHR_START-CSS0005497|intergenic_region|CHR_START-CSS0005497|||n.4454_4455insAAAAAAAAAAAAT||||||,CAAAAAAAATTTT|intergenic_region|MODIFIER|CHR_START-CSS0005497|CHR_START-CSS0005497|intergenic_region|CHR_START-CSS0005497|||n.4454_4455insAAAAAAAATTTT||||||	GT:AD:DP:GQ:PGT:PID:PL	0/0:11,0,0,0:11:27:.:.:0,27,405,27,405,405,27,405,405,405	0/1:7,4,0,0:11:99:.:.:147,0,311,168,323,491,168,323,491,491	0/0:5,0,0,0:5:9:.:.:0,9,135,9,135,135,9,135,135,135	0/1:15,6,0,0:21:99:.:.:184,0,637,230,655,885,230,655,885,885	0/0:12,0,0,0:12:21:.:.:0,21,315,21,315,315,21,315,315,315	0/0:2,0,0,0:2:6:.:.:0,6,84,6,84,84,6,84,84,84	0/0:8,0,0,0:8:0:.:.:0,0,82,0,82,82,0,82,82,82	0/0:16,0,0,0:16:36:.:.:0,36,540,36,540,540,36,540,540,540	0/0:15,0,0,0:15:3:.:.:0,3,390,3,390,390,3,390,390,390	0/0:9,0,0,0:9:21:.:.:0,21,315,21,315,315,21,315,315,315	0/0:12,0,0,0:12:0:.:.:0,0,345,0,345,345,0,345,345,345	./.:2,0,0,0:2:.:.:.:.	0/1:3,2,0,0:5:75:.:.:75,0,154,84,160,244,84,160,244,244	0/0:4,0,0,0:4:6:.:.:0,6,90,6,90,90,6,90,90,90	0/1:13,5,0,0:18:99:.:.:171,0,818,210,833,1043,210,833,1043,1043	0/1:4,5,2,0:11:64:.:.:272,0,144,64,113,208,116,159,214,260	0/0:5,0,0,0:5:15:0|1:4453_G_C:0,15,225,15,225,225,15,225,225,225	./.:4,0,0,0:4:.:.:.:.	./.:0,0,0,0:3:.:.:.:.	./.:1,0,0,0:1:.:.:.:.	./.:5,0,0,0:5:.:.:.:.	./.:5,0,0,0:5:.:.:.:.	./.:0,0,0,0:0:.:.:.:.	0/0:3,0,0,0:3:3:.:.:0,3,45,3,45,45,3,45,45,45	0/0:5,0,0,0:5:12:.:.:0,12,180,12,180,180,12,180,180,180	0/0:5,0,0,0:5:15:.:.:0,15,416,15,416,416,15,416,416,416	./.:0,0,0,0:0:.:.:.:.	./.:9,0,0,0:9:.:.:.:.	0/0:6,0,0,0:8:18:.:.:0,18,270,18,270,270,18,270,270,270	./.:0,0,0,0:2:.:.:.:.
Chr1	4534	Chr1__4534	AT	A	3530.3	PASS	AC=34;AF=0.288;AN=118;BaseQRankSum=0.406;ClippingRankSum=0.00;DP=525;ExcessHet=1.0010;FS=8.888;InbreedingCoeff=-0.0172;MLEAC=34;MLEAF=0.288;MQ=41.21;MQRankSum=0.736;QD=17.83;ReadPosRankSum=0.386;SNPEFF_EFFECT=INTERGENIC;SNPEFF_IMPACT=MODIFIER;SNPEFF_FUNCTIONAL_CLASS=NONE;SOR=1.215;ANN=A|intergenic_region|MODIFIER|CHR_START-CSS0005497|CHR_START-CSS0005497|intergenic_region|CHR_START-CSS0005497|||n.4535delT||||||	GT:AD:DP:GQ:PGT:PID:PL	1/1:1,12:13:10:.:.:406,10,0	0/0:11,1:12:6:.:.:0,6,289	0/0:8,0:8:0:.:.:0,0,81	0/1:8,8:16:99:.:.:192,0,175	0/1:6,3:9:63:.:.:63,0,147	0/0:7,0:7:9:.:.:0,9,135	0/1:1,5:6:11:.:.:132,0,11	0/1:5,6:11:99:.:.:147,0,112	0/0:21,0:21:21:.:.:0,21,631	1/1:0,10:10:30:.:.:289,30,0	0/0:14,0:14:15:.:.:0,15,225	./.:2,0:2:.:.:.:.	0/0:9,0:9:0:.:.:0,0,246	1/1:0,2:2:6:.:.:60,6,0	0/0:10,0:10:0:.:.:0,0,239	0/1:3,2:5:45:.:.:45,0,72	0/1:1,2:3:20:.:.:51,0,20	0/1:1,2:3:36:0|1:4534_AT_A:81,0,36	./.:5,0:5:.:.:.:.	./.:3,0:3:.:.:.:.	0/0:3,0:3:9:.:.:0,9,88	./.:3,0:3:.:.:.:.	./.:0,0:0:.:.:.:.	0/0:3,0:3:6:.:.:0,6,90	0/0:7,0:7:0:.:.:0,0,56	0/0:10,0:10:0:.:.:0,0,227	./.:0,0:0:.:.:.:.	0/0:4,0:4:12:.:.:0,12,116	0/1:1,4:5:14:.:.:105,0,14	./.:1,0:1:.:.:.:.
Chr1	5410	Chr1__5410	A	AG	243.24	PASS	AC=4;AF=0.027;AN=148;BaseQRankSum=1.91;ClippingRankSum=2.44;DP=632;ExcessHet=0.0895;FS=3.528;InbreedingCoeff=0.0696;MLEAC=4;MLEAF=0.027;MQ=43.61;MQRankSum=-1.376e+00;QD=6.40;ReadPosRankSum=1.06;SNPEFF_EFFECT=INTERGENIC;SNPEFF_IMPACT=MODIFIER;SNPEFF_FUNCTIONAL_CLASS=NONE;SOR=1.639;ANN=AG|intergenic_region|MODIFIER|CHR_START-CSS0005497|CHR_START-CSS0005497|intergenic_region|CHR_START-CSS0005497|||n.5410_5411insG||||||	GT:AD:DP:GQ:PL	0/1:10,3:13:79:79,0,330	0/0:13,0:13:21:0,21,315	0/0:23,0:23:39:0,39,585	0/0:11,0:11:12:0,12,180	0/0:8,0:8:12:0,12,180	0/0:9,0:9:15:0,15,225	0/0:11,0:11:18:0,18,270	0/1:17,3:20:58:58,0,569	0/0:25,0:25:60:0,60,900	0/0:26,0:26:45:0,45,675	0/0:9,0:9:18:0,18,270	./.:0,0:0:.:.	0/0:6,0:6:12:0,12,180	0/0:10,0:10:9:0,9,135	0/0:20,0:20:39:0,39,585	0/0:8,0:8:9:0,9,135	0/0:1,0:1:3:0,3,42	0/0:5,0:5:6:0,6,90	./.:0,0:0:.:.	0/0:3,0:3:6:0,6,90	0/0:2,0:2:3:0,3,45	0/0:2,0:2:6:0,6,84	./.:0,0:0:.:.	0/0:11,0:11:18:0,18,270	0/0:15,0:15:18:0,18,270	0/0:6,0:6:12:0,12,180	0/0:2,0:2:6:0,6,84	./.:0,0:0:.:.	1/1:0,5:5:15:196,15,0	./.:0,0:0:.:.
Chr1	6197	Chr1__6197	AT	A	646.62	PASS	AC=12;AF=0.128;AN=94;BaseQRankSum=0.678;ClippingRankSum=0.566;DP=336;ExcessHet=0.0000;FS=9.495;InbreedingCoeff=0.4971;MLEAC=9;MLEAF=0.096;MQ=44.62;MQRankSum=-8.960e-01;QD=15.77;ReadPosRankSum=-3.820e-01;SNPEFF_EFFECT=INTERGENIC;SNPEFF_IMPACT=MODIFIER;SNPEFF_FUNCTIONAL_CLASS=NONE;SOR=1.967;ANN=A|intergenic_region|MODIFIER|CHR_START-CSS0005497|CHR_START-CSS0005497|intergenic_region|CHR_START-CSS0005497|||n.6198delT||||||	GT:AD:DP:GQ:PL	0/0:16,0:16:39:0,39,585	0/0:7,0:7:15:0,15,225	1/1:0,4:4:12:122,12,0	0/0:9,0:9:18:0,18,270	0/1:7,4:11:89:89,0,180	0/0:6,0:6:18:0,18,239	0/0:8,0:8:21:0,21,315	0/0:17,0:17:36:0,36,540	0/0:15,0:15:3:0,3,519	1/1:0,6:6:18:183,18,0	0/0:6,0:6:15:0,15,225	./.:0,0:0:.:.	0/0:2,0:2:6:0,6,84	0/0:6,0:6:12:0,12,180	0/0:11,0:11:24:0,24,360	0/0:5,0:5:12:0,12,180	0/0:8,0:8:18:0,18,270	0/0:6,0:6:12:0,12,180	./.:0,0:0:.:.	./.:0,0:0:.:.	./.:0,0:0:.:.	./.:0,0:0:.:.	./.:0,0:0:.:.	0/0:5,0:5:15:0,15,209	0/0:1,0:1:3:0,3,15	./.:4,0:4:.:.	./.:0,0:0:.:.	./.:0,0:0:.:.	./.:0,0:0:.:.	0/0:1,0:1:3:0,3,42
Chr1	6530	Chr1__6530	GT	G	274.81	PASS	AC=5;AF=0.033;AN=152;BaseQRankSum=0.751;ClippingRankSum=0.337;DP=593;ExcessHet=3.4491;FS=8.112;InbreedingCoeff=-0.0890;MLEAC=4;MLEAF=0.026;MQ=52.37;MQRankSum=0.322;QD=4.29;ReadPosRankSum=0.851;SNPEFF_EFFECT=INTERGENIC;SNPEFF_IMPACT=MODIFIER;SNPEFF_FUNCTIONAL_CLASS=NONE;SOR=0.625;ANN=G|intergenic_region|MODIFIER|CHR_START-CSS0005497|CHR_START-CSS0005497|intergenic_region|CHR_START-CSS0005497|||n.6531delT||||||	GT:AD:DP:GQ:PGT:PID:PL	0/0:17,0:17:33:.:.:0,33,495	0/0:10,0:10:21:.:.:0,21,315	0/0:12,0:12:12:.:.:0,12,180	0/0:25,0:25:42:.:.:0,42,630	0/0:17,0:17:9:.:.:0,9,554	0/0:12,0:12:24:.:.:0,24,360	0/1:12,4:16:99:0|1:6524_C_A:132,0,492	0/0:14,0:14:36:.:.:0,36,540	0/0:18,0:18:51:.:.:0,51,765	0/0:13,0:13:30:.:.:0,30,450	0/0:8,0:8:21:.:.:0,21,315	0/0:5,0:5:12:.:.:0,12,180	0/0:6,0:6:15:.:.:0,15,225	0/0:9,0:9:0:.:.:0,0,258	0/0:13,0:13:36:.:.:0,36,540	0/0:8,0:8:21:.:.:0,21,315	0/1:8,1:9:12:0|1:6524_C_A:12,0,376	0/0:14,0:14:27:.:.:0,27,405	0/0:7,0:7:18:.:.:0,18,270	0/0:1,0:1:3:.:.:0,3,42	0/0:6,0:6:15:.:.:0,15,225	./.:5,0:5:.:.:.:.	0/0:1,0:1:3:.:.:0,3,42	0/0:10,0:10:21:.:.:0,21,315	0/0:12,0:12:30:.:.:0,30,450	0/0:23,0:23:54:.:.:0,54,810	0/0:3,0:3:9:.:.:0,9,125	0/0:3,0:3:6:.:.:0,6,90	0/0:9,0:9:21:.:.:0,21,315	./.:0,0:0:.:.:.:.
Chr1	8901	Chr1__8901	CAG	C	247.26	PASS	AC=6;AF=0.038;AN=160;BaseQRankSum=0.118;ClippingRankSum=0.00;DP=1046;ExcessHet=4.0428;FS=8.326;InbreedingCoeff=-0.0721;MLEAC=6;MLEAF=0.038;MQ=42.53;MQRankSum=-1.917e+00;QD=2.75;ReadPosRankSum=0.354;SNPEFF_EFFECT=INTERGENIC;SNPEFF_IMPACT=MODIFIER;SNPEFF_FUNCTIONAL_CLASS=NONE;SOR=1.332;ANN=C|intergenic_region|MODIFIER|CHR_START-CSS0005497|CHR_START-CSS0005497|intergenic_region|CHR_START-CSS0005497|||n.8902_8903delAG||||||	GT:AD:DP:GQ:PGT:PID:PL	0/1:7,1:8:18:0|1:8901_CAG_C:18,0,305	0/0:17,0:17:36:.:.:0,36,540	0/1:23,2:25:15:.:.:15,0,960	0/0:33,0:33:72:.:.:0,72,1080	0/0:12,0:15:35:.:.:0,35,403	0/0:11,0:11:18:.:.:0,18,270	0/0:12,0:12:20:.:.:0,20,328	0/0:39,0:39:87:.:.:0,87,1305	0/0:17,0:17:35:.:.:0,35,541	0/1:9,2:11:57:.:.:57,0,364	0/0:11,0:11:27:.:.:0,27,405	0/0:4,0:4:6:.:.:0,6,90	0/0:7,0:7:18:.:.:0,18,270	0/0:23,0:23:51:.:.:0,51,765	0/0:17,0:17:36:.:.:0,36,540	0/0:22,0:22:48:.:.:0,48,720	0/0:15,0:15:33:.:.:0,33,495	0/0:9,0:9:18:.:.:0,18,270	0/0:13,0:13:27:.:.:0,27,405	0/0:4,0:4:0:.:.:0,0,110	0/0:9,0:9:12:.:.:0,12,180	0/0:15,0:15:29:.:.:0,29,412	0/0:3,0:3:3:.:.:0,3,45	0/0:22,0:22:51:.:.:0,51,765	0/0:14,0:14:30:.:.:0,30,450	0/0:12,0:14:36:.:.:0,36,419	0/0:5,0:5:0:.:.:0,0,91	0/0:14,0:14:30:.:.:0,30,450	0/0:13,0:13:23:.:.:0,23,340	0/0:14,0:14:33:.:.:0,33,495
Chr1	8960	Chr1__8960	T	TG	2833.68	PASS	AC=26;AF=0.167;AN=156;BaseQRankSum=0.480;ClippingRankSum=-2.960e-01;DP=1085;ExcessHet=3.2526;FS=3.775;InbreedingCoeff=-0.0035;MLEAC=27;MLEAF=0.173;MQ=42.20;MQRankSum=-7.270e-01;QD=10.77;ReadPosRankSum=0.727;SNPEFF_EFFECT=INTERGENIC;SNPEFF_IMPACT=MODIFIER;SNPEFF_FUNCTIONAL_CLASS=NONE;SOR=0.942;ANN=TG|intergenic_region|MODIFIER|CHR_START-CSS0005497|CHR_START-CSS0005497|intergenic_region|CHR_START-CSS0005497|||n.8960_8961insG||||||	GT:AD:DP:GQ:PGT:PID:PL	0/0:7,0:7:12:.:.:0,12,180	0/0:16,0:16:36:.:.:0,36,540	0/0:28,0:28:57:.:.:0,57,855	0/0:31,0:31:57:.:.:0,57,855	0/0:22,0:22:36:.:.:0,36,540	0/1:8,2:10:37:.:.:37,0,243	0/0:11,0:11:21:.:.:0,21,315	0/0:39,0:39:69:.:.:0,69,1035	0/0:14,0:14:0:.:.:0,0,455	0/0:15,0:15:21:.:.:0,21,315	0/0:9,0:9:27:.:.:0,27,308	1/1:0,3:3:9:.:.:100,9,0	0/0:11,0:11:21:.:.:0,21,315	0/0:27,0:27:48:.:.:0,48,720	0/0:16,0:16:24:.:.:0,24,360	0/0:19,0:19:42:.:.:0,42,630	0/0:14,0:14:36:.:.:0,36,540	0/1:3,8:11:69:.:.:232,0,69	0/1:5,7:12:99:.:.:198,0,135	1/1:0,6:6:18:.:.:200,18,0	0/1:3,4:7:87:.:.:92,0,87	0/1:6,7:13:99:.:.:186,0,158	0/0:3,0:3:0:.:.:0,0,42	0/1:11,6:17:99:.:.:127,0,325	0/1:8,2:10:37:.:.:37,0,243	0/1:6,7:13:99:.:.:190,0,188	0/1:1,3:4:22:0|1:8942_GTTGTT_G:99,0,22	1/1:0,10:10:30:.:.:333,30,0	0/0:13,0:13:12:.:.:0,12,180	0/1:5,11:16:99:.:.:312,0,155

startswith返回的是布尔值。

if startswith(line,"##") == false

if !tartswith(line,"##")

可以简洁地写成下面那种形式

问题补充:在上次的基础上,如果我要匹配的字符不是[1:3],而是以冒号分割的第一个字段,则fn2函数需要再次使用 split,速度就会降下来,该如何解决?

这种时候就需要 findfirst 函数了,速度应该会比 split 两次快。

function uniq(path::String)
    count = 0
    function fn2(str)
        idx=findfirst(':',str)
        strs[1:idx] != "some string" && strs[1:idx] != "another string"
    end
    for line in eachline(path)
        if startswith(line,"##") == false
            datas = split(line,"\t")
            if any(fn2,datas)
                count += 1
            end
        end

    end
    count
end

确实,findfirst 很快,日常使用中,怎么发现这些有用的函数呢

多谢,确实简洁!

有好几种方法,都以 findfirst 为例吧。

  1. 看文档,建议把中文文档读完。主页 · Julia中文文档

  2. REPL 里面的 help 模式。根据我的需求,我要找以某个字符(或者字符串分割的第一个字段),那么关键词就是 find.于是我在 repl 里面输入 ?find得到

help?> find
search: findmin findmax findall findprev findnext findmin! findmax! findlast findfirst isdefined @isdefined significand firstindex finally finalize finalizer isfinite UndefInitializer fieldname fieldnames flipsign function Function functionloc

Couldn't find find
Perhaps you meant bind, sind, fill, fd, fld, Cint, asind, in, inv, min, rand, sin, sinc, sinh, tand, end, findall, findmax, findmin, fill!, first, fdio, fld1, fma, foldl, foldr, for, if, Inf, diff, @info, isinf, Main, @cmd, @simd, Cmd or Cuint
  No documentation found.

  Binding find does not exist.

虽然返回是 Binding find does not exist.
但是第一行 search:... 里面的 findfirst 是不是就是我们要找的呢。
同时我们还知道了有其他的函数,如 findmin findlast 等等。

  1. 搜索引擎,如果我知道 python 里面有个函数叫 findfirst, 我想知道 julia 里面有没有类似的, 那么我就可以搜索 julia findfirst.

  2. 平时积累。逛论坛的时候留意一下别人用的函数(鼓励多逛论坛),如 any all 我之前也不知道。