From d9091c56f9a69afffa0e0bec9cc133f65f427bc0 Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Fri, 30 Aug 2024 11:27:05 +0200 Subject: [PATCH 001/106] Bump version to 0.4.0dev --- CHANGELOG.md | 43 ++++++++++++++++++++++++++++++++++++--- assets/multiqc_config.yml | 2 +- nextflow.config | 2 +- 3 files changed, 42 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d3277ba2..98d8ce78 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,39 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## v0.3.0 - [2024-08-29] +## 0.4.0dev - [XXXX-XX-XX] + +### `Added` + +### `Changed` + +- [#344](https://github.com/genomic-medicine-sweden/nallo/pull/344) - Changed version to 0.4.0dev + +### `Removed` + +### `Fixed` + +### Parameters + +| Old parameter | New parameter | +| ------------- | ------------- | + +> [!NOTE] +> Parameter has been updated if both old and new parameter information is present. +> Parameter has been added if just the new parameter information is present. +> Parameter has been removed if new parameter information isn't present. + +### Module updates + +| Tool | Old version | New version | +| ---- | ----------- | ----------- | + +> [!NOTE] +> Version has been updated if both old and new version information is present. +> Version has been added if just the new version information is present. +> Version has been removed if new version information isn't present. + +## 0.3.0 - [2024-08-29] ### `Added` @@ -129,7 +161,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 | splitubam | | 0.1.1 | | fastp | 0.23.4 | | -## v0.2.0 - [2024-06-26] +> [!NOTE] +> Version has been updated if both old and new version information is present. +> Version has been added if just the new version information is present. +> Version has been removed if new version information isn't present. + +## 0.2.0 - [2024-06-26] ### `Added` @@ -216,7 +253,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 > Version has been added if just the new version information is present. > Version has been removed if new version information isn't present. -## v0.1.0 - [2024-05-08] +## 0.1.0 - [2024-05-08] Initial release of genomic-medicine-sweden/nallo, created with the [nf-core](https://nf-co.re/) template. diff --git a/assets/multiqc_config.yml b/assets/multiqc_config.yml index c829f8e3..436be0b0 100644 --- a/assets/multiqc_config.yml +++ b/assets/multiqc_config.yml @@ -1,6 +1,6 @@ report_comment: > - This report has been generated by the genomic-medicine-sweden/nallo + This report has been generated by the genomic-medicine-sweden/nallo analysis pipeline. report_section_order: diff --git a/nextflow.config b/nextflow.config index 44e6630e..d55bab2b 100644 --- a/nextflow.config +++ b/nextflow.config @@ -288,7 +288,7 @@ manifest { description = """Long-read variant calling pipeline""" mainScript = 'main.nf' nextflowVersion = '!>=23.04.0' - version = '0.3.0' + version = '0.4.0dev' doi = '' } From 16c4139a4c5554ace6015a1cad3da7533074d2d5 Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Fri, 30 Aug 2024 11:38:14 +0200 Subject: [PATCH 002/106] Add metro map --- CHANGELOG.md | 2 ++ README.md | 4 ++++ docs/images/nallo_metromap.png | Bin 0 -> 233999 bytes 3 files changed, 6 insertions(+) create mode 100644 docs/images/nallo_metromap.png diff --git a/CHANGELOG.md b/CHANGELOG.md index 98d8ce78..af8746cc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### `Added` +- [#345](https://github.com/genomic-medicine-sweden/nallo/pull/345) - Added first version of a metro map + ### `Changed` - [#344](https://github.com/genomic-medicine-sweden/nallo/pull/344) - Changed version to 0.4.0dev diff --git a/README.md b/README.md index f22658d0..2a22f7d9 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,10 @@ ## Pipeline summary + + genomic-medicine-sweden/nallo workflow + + ##### QC - FastQC ([`FastQC`](http://www.bioinformatics.babraham.ac.uk/projects/fastqc/)) diff --git a/docs/images/nallo_metromap.png b/docs/images/nallo_metromap.png new file mode 100644 index 0000000000000000000000000000000000000000..887a01a64a76b9f31a5059c5b36ddcb280af054f GIT binary patch literal 233999 zcmeFZby!sE7dAX5s0f@R0@4;JEiDZys0bJcNP|ds_n;`K2#5#>NGMVw-7O*@4&5En zF?7ewxAp*@-+O)UU*F%~zRr=uIJ5T?Yu)R<@Ab@ibyq?5;Kwnmn~!W!D9Ve-zXxvJzc7zNF`;f2IMXL(M!Oa%==R$_ zDrJgBQc6X)wGXO>bZzDLM9z?(oJvO6U7x|0q=xoqy)HQcgyZ zIKTAW{O}nIli~nVDIXy#Eoq;U3$HB|4+I`@cxo?2ACBSdTKyA4)6>nGyTZUM5_Xq@ z}M|?hRG&l;q(ZOi%wB}`G1Rj8a?p-b&8QF*Se}SK_a>msE{p#|unft%r zmWASU|NCvi`gX;CzcmiO_x|s;G1Zq({&!c&fCn^3|Gw3eA%TzN?{6qEh5!G7`>XN) zFX{icpy^%s8^d1=+}(E+r{RjW6!qBNsPHkaej2s1GF-joPwzUFl!otmpeVM|`oOsQ z0Ln8q(em-*^Vt1x+?r~Nm0g>Ya7xb|W4xn_Us+jkAD&Ezb{?bE-s)cqT z?;)ig+v|B{JLV;jm7OBh&7^yAlog{YPvq@a${p6D)OE2`U_}Re+{=-Jk z_Z+ni+K~~y3;}Qa{T1(gi6BCuV%F&7M384Amu%k;KU!_^sA#eZ?n-VkE|P0=5QubA z%=YHL^fIAs`!pNkktg_(dlHC^w$41Qs^IAx4J&!LU&#-#>B+kzAa(u(xLV!BG= z3U1T}> z*wyp|in=jH!)r^K)?X*ECVVtaIhOVh)EJ6XIjiT?KdI8O2IszB``JU^)l@PuV?(pz z65C|t+z&-Z)!VCA(3{=!Yhq&k=k=DLw%bpJs{HE4U#p0S z@V8~YD!QMn86NiPc8&be#SPPrG(oX5-ntm2usiX0*`p%EUG!?~1)oOre_pff>#mmz zlqu<7bf9=$={r}vwArb;*k75T(BA@|Ba*Tj+TN(MRKY~N6J6a=&!h3HdSN^Mr`|%J zDY{Hlg!Zr$wRfn2fdv-_KL?Nal`A~L;l^=Zu1#H|?1Z2)4LfUN`E zS~BNh7~KG|AvUAhyC8a%{zL(0GA zpzysG*IY9+6t87qqi;s-?K`>%zZu!aDa++bb15jYuqF78+Su?0)v)*G|3ma^%qDce zU2t|i^^JekV>{T0kw>}BQiJ}QB{p$MH7*V&tjD!elsM~Z&1{8j^b?h6&OnC8G#T;H z_t-rUppE`O?Sk7dY8crbGzx^|cGEi-QJ1UXtZ&EHKl7)gvwrj=9fQAK*=DocLh||8 z*oEH!Z3g3nJZZeLpXV_zq%)kH9Rye_k4jlVL@myk+4xl26x1bl0A^%8cyMULO(2w( zHJGz(%VM#u&dV5PVi`3;vm&L=(8ed5%PsVw_s#F$3kKBQHSeY?Cnrag2A{f#cikx| z$o(%vu#=Xbq#>Zkp#N6wh1w%aKR4!lp{6gBZOgHrPovlpjuKywwQdJ*7A^)DQmb=*z~>8%~J zDbltDz+bl}KOAak=-7%Od8Xs0r{|{kXSKPxjZNi`fjPA|KqrK+Ay1f@0Ih^JHC?fg zSft({ea)E7f-8f!Zmib8b`)bOkG11mrB-J>3-BzVH~w+-yWoNv{BGPj&5@j#C$Vv% zpey)tdd)c-U90pY&xnt!-Tily?68|FBSQHJ+3J7kpw5Qk0-_R7P}Zq_V{g3FI`%lxS&c_2ceK zk!RC+Xk4NUO6YMj7HO{huGq@g;h^hLnsm<1*kH^`o@REoWTI1Gx=j85m0>1v2-K@3 z0klF@fl3)xQ!_$3Y+2eBeClFEHLS{?`!lyw9H6kJ&=mT)?96F7>FRojKMDgRc+c)t z#YQ%=bS>__O&*kE;|vY0q&A>j73ufVRM>){4ycTetzNP+e8xn5hF)IW*1%@5c4P!1 z5=zMgYoSx2dt;w#M$3chfaKucabaPVHdlr14SWc2#w{G>u(!OPhrYrP>vH@~2H&ok z8n+;UA6jEDR3>5`bD~X|t{>cQzQ#$BAKux4Vz&5}iTK^I1_k+)RugMRsD61Lt!WRJ zumAk1b$GTDen40h|0BP4k@%UI@Cw5ufKi}y#)o2S>w(Rg)>cXJvfaWq@nN4PH?k8y zOC;{O|4CI8YDJ2z-y45{lU9Dr^)dlL{BSc~bH(fRA~kZv&juHZ=ESY< zn`O6Z9q#u7rtshrrFyB-CCZ|nZ+%3X#Z)3t=<`PtgbN)-cCJHZ_wnE7ZIW3rW%%xu z=?LGiP4gX?tgJqBMXjjFKDSgePDg7Om+d;iAjK-NdKhuts9LJ>CCWUtd3gWusZ;9o z`8)SA>EVe?#GDQFS|6i0DSVqm7!ON*QiXVScXr5~q)^xFd)i#-nh_fWcQs$i=$a%1 zv&N=?fIxHo-hwyEmu>AZ3JXmE?G!cRkHD0mrZPHev1vjF|N* zmh(`avv1V;Y>u_DfkB1_?oTJvdUb$!H!joM;`gZlb6f51v|jzKHNCayjGH<4;mHJY z(Nyp!P8fF`8#w2_CSn{(1B^Fdf8`oY3sq^x2Dgf+v|iHYLD`17Ww+FL0|Cs&8~@2N z6c(aApR#wPx%SRtoIq?0tiON$urV-s!sY1z1OP}b18eZ{N*!{q?3KrG3EZ*S3oHXgK^{J%0`NVvAP z3G2oI*lCq(8R~v6?s3Ydz_ks?4|i$Q+YR+2Op*l)M6yw2SH+fQmzLrZK%uQP2r@|E z5IHrBGMk*P4p^fXS#5owjn7Jma+yj>X!bvZB2qAn(;bXKWSl4GURHW8i@7XM;C6_} z+S|9?_^nj0OLV4}mU?j6mZhc5(JD&p)bb9jcXyPAIB*hHmGlw;&jxS0E>GNZn!|N> zt947Eguw>0#+Q3-kuiwwEVq;kM&F|+SX4T^yKkRBBq+%C$sdvps_N=nYiRu1V8npi zSeWIPNT`Rv7`$!}7=zGj28n*vlh+P;Kkd)T$jG4a24UUFc(~esC61o3x1L^q_Gt8K z&u}%Z<6M6m^--73?(S|7^NbP#w+L|V$+cTSWaV0^2@B(enn`J36mO*^42&tBfC_XR z$-0SGNa+6gPrbuf1|@}dLCbT;7LW4+-3|(PCK`UGF-qWIMQ)0~CeWP*TLi79t*woB z8(w%Ukw@aw)DgfqC*m-Zlu(K@B={nV$e;^v?M{vLuhjS4q3kbO8%N^|2~G$p)YX!i zzivq`n2HXRIx3$F@td2QCAB-HrKOgzu)Ga!723%MCQcH_!}ojt^cT$yU_H+pf$LK2 zi03M8i*_If?JOU_AO@bnTC!gZi@BLuFM56u=S2jYX*XYIsN{1%Xoe6zp67?)k+>C7 zq0DyJ{uXBNHC}*2@qBG|yC&X@>^3SQD{ZOsF^ic_JhXAf;R}zvM%< zx)s z=QWFK!6PuqK_qA26TA>f1?X9C-8{-KEMltah+*n!;k@lMJlj_UTm8X-T&D~S6S3{> zB}?>Hk4wcqBa@s{2loR%aH^170&Q=>=_1M_EG&K{qv3#%C(X*HUV+jzPyM= z0v-U57nur8Bfv_|ePcBaH7llQM%G}L%o2G+m}YxNM>Hg0wihB~60VTQ_KuS=_LsP- zSW@qEGZ8uEl5ANcUY&%!uq+KEV=i?xu z$ZLp>79!&BBFVKl-FG;G8`PIh<4sdx_0t_UKV(9UtIXSMf!GqU-D7{Q7VbMs+2^gk zywF_-mZ$7D^u;7@5#(=#fECn*57Fp9;(_#a9AlT}DP^1;} zpi?_iwJon&=8xw8VIn^6|aCFlMtWnX_NRpvGVk(YvMF0{-lVUktZLz9DVGY4H2;SV-zbf9z+ zbj(r@EwCDvv9SeaoxJs~ZnR!OUQ-Ay?g7P};SBwbP1453Iz4zxFcVleqCh~)iQ1hl zvSxo2-F5JKC*~}1GL$H~JG=TO><%*!UP_DJmo&-pAQ57v$Nf!WVSE0x!3ekVEX?~8 z?xksmhZze`LaYP90qR9nA8pw>-4p~ge>jUJy3Aq6h5RtQ2oVxqFU})e_%Ml&qylJZ z&9VFpkjM@uU!P=v4_3s-+hX_m5*EsB2#d*i=hICQwqw;2{?TX9OLh9jP6vFd^Q70t$quri)H3cjIrb9DXQZq`r@L zX@w9uaQB><4>AA+z*_}G>|)fCioun!sRIf=)LUR>&+owuQvcDHq#+u}r!rx|yp0W+ z5**|h=AcEfPOrMWI2yS6=&P>;svMGR{s8gHpg=pi2^P7A$tNJz0SiNOE31EyQfO#d zrczS2^S`{X(5{B=?(T@ePVrqT8%kqoX%slcos@(U>v@Mc=nQM{XVB-@d7t>)j*H*O zp{kFZZl8p)0-XNfz9W9-uvG8i6lGTVw5oSU{=fpNV?%26VOt_L({!nsi8hZ)aVxQc znfWu65o-%#fhFEt%^^87_uWjfR(M#K$&31fjt+uF9%1s99=cZZuY5>GmN-<5W*J#H z8DY`f=UMzDbxcdIqpVcv6bWAH_osI+QNm~dC&7l@aI?{}MBEpf7WU41jS`!SU6SC< zz^Z=+rqkq*oKeI9;s6{GDRMp}(c%WY>0ZfR2-xshy4EyX(SfFC{54*|4G83TDnF~JYXxIg_)6W+SHXn!WHp;z zI@n$)&FoT~GkD`(m{4LA>4{xwTWV$PQke8Oyhi^sk4148-+T@)Xr|TX`^8t^HfTph z`W2;v0S05SK3K+bz$+iE{pwl>gUtLLltxRlSZ*TojjZ@f9vtiN@UEUH21#xim^sdjsGBr)CcwPRa|DKcp>Ui`1qFSUq_WecOUh_l+Zx zVKe#YBiJzlz?Gf4Ta_$mOd@LZ-?2axG(D9Un_LhaFk{U-NqpkOxIHH>b3k}@iU^Vk(dIxmK)S`_|))NUQrf5r=$e#NGp{7&0 zGSwbWzRypYWGg=461e(Pu%EY}E3pHXDn1+VEW|jPI;SMWy|?}#dSgmqc1%lSY%HTZ z!csZnCcs8SokdR1sZf|cTsL>E{`DWbn$unAUM4koQiY`+HXkhR+oaDTen_wY<*3>1 zA}Y@-2Z-Bve`E5)gfcecA}`RT*w^5k5$ShJfz8~2$~ICYKf={I zOdhP!@){0)?5VWIa%f_InegO8Y}UF6!2#i&VWfA0vSQjTnQy_lJ+ZX3Fb48K{K~yc zl(BW-ctbi+DTdB`5s(k*6TJ5-cSk(JaU#F6$hC*8c&n%@1p`%)8NmWs8QC628&~5= zHnwfqnfN$xSXelZpd??D-h3=%vouy$hKs;&PbH_t(;tR(e81ad&`02x5o~Q|2M0yj zDFfRA$Qu_rq~yOklbhP*UpbSiH_ z+CxE$-=xEmTSBp2sF#=HpIUjb;f(alawlum6UtUnaAi9^_;7@TqMG+Dr%5>heh`lG z=1r*q9p+#Ca_QW_)+=;vhT1?)w{5dCI%=-f;m|BlSB(uJ0L<9ZpFo1v<=T%S5I-jHW`c8-q&9DXx<`;|Bq|QK>7nx&DN0s>Yd<70?8HeaMPl{c& zr4N4p$lDG;=O(+(l882hI^R#eNJIiY(g=*i)p`}68gNVFHV`9@>b0X%n4dBeW%MRv8DNwiVJJjBgH|jZW0X@J>soD5h6AI+6e(X`D zJY!Vn?G!}LNj6)~_BxxJ&9wXAwSlbxZj|pG$N0iUqZQ%COj3~_dR2+Fvcb{%=salq zSImPJV7&xI_HiEHb$c>y(#R+K3C5P^ahQG!1m}7rT+@uqkvxC6sK62VtR}!e^MO1; z@hjHg1`3=xUik;;WZvcopK;fPqo~1`TWx6`EA5kv2}qy!@4E1W)dKq0-KhN^`^O>q zA277wWheo#hpew)G34V)L`8b+La@v7d6y%Q#+N%n#rVCLZVH&5SGRxY#gs23CdMP& zUHM#In7DVLueS)pPT@N@P}nxcdhUdvg@zE?16)J-0YUgUR2fl`q74ClY;K*!6=-YL z0W6^xd=W}5`e^xlW)nUfcd%zHu0)8w?|zEX=K*m$*aKY;+-mc?JQ`G|qB}x_4Ph-& zo$832lv`jJtCa@TqpTf@zx8;g@r=bb$Sq(#E_BOlEJQzZosC7n>I71(O~-H;zuqL< zqkXmDTDZ)o*tr0%E=r1XD|)Uq_3Yw$lfw`^fC-l^H&9-j=&o39v* zInF*EA^=RYF%#`C$Dd7zO|sL9&AATjC_oQYC)x~edBFATR>@pdK+7gk7ii>F5e?jA zgO>YB+s?5=^dds&XY!-Tzk#T&8{UTUi_pz+WTse1alpWhlh2uTsX=yuH=Vc5{M`Y! z*--9iRjPGBl6J5AY~=}sG$=*wi@8Cs#lt$YrDlg-VBU;WM~NJ>7grU*Zt~AVNJW zIB00;#DH1TM}IKtK1)*3QC;;;qN4XplhKT>ILh<+KJonAy`9cd*JxDgalOedSjw z51=|9Bqt{)C`RMvE6BFC%7PszJ^P`b!a`forC~t;DKexT26h{G&*2``6sYh0yXOaP z%Kl#rHagHa;07Cz973f_c-W5D`*M}8FI3CHu@0ecG76D}!h&m+!%a;S)juBBT>T03 zsmMdD|7-+?pu(EmeUGDJc4zd=B(8b6hgI;zv%#6x_m8rmq(^PmMT%HP;uaLqs}=wY zq;W;ppLdP}o5(t!y$pw}w$Z67D@xb@Q_A0&*$|l`m!+znNXj}_= zGooxGBHK%n47#)cE7|OCIBSu^1c2XtDWp&~0Vgsv`nUJ&^zyv(g*ju;V=y*|Pr6Hc z=GSw?=vyL3mSZ5-%w=kU z=R)x@cj!#o6J6nEgnoHifS>t8>Aq=xa3B{g?WY zjiiEC0%xtkd-9nM^o658yyVr##rlQ+4u|POgF`UZ@jS!7y?ho|iJz@60LL788gUAm zVyVVH{*SexIR-K#A{jP6*EvU>^d<=^CUj3qAs9?l2_^29$id|p=?ozy)<`-A3)V{5 z7s6Q9iOQb2)-@? zM-xE#FMg?Uu0rHeQ;)}Mtk$bXk5C%XGZ{=;DH)Ti!(Do$K1^LQk|Ak%>F$r1sa5PMMjYspVv0j_xb>;@$Xi~bZ8XV+_0o3 z{YLN%!CVCBa*bP1?e)JX0-|kOQhXr$n$3Gl$UL^(tt^8FEJ9J4#qz+m$T3J{ zW|2ZZ>vd49Lzz(Jl!;B&y);XUmf5~=`Pdh+j>ClW70W-Vp)c5Ln5YDHRhg)3Y(_+< zyevQeyS2IluMVJ=83^f%M22Tc4m6Hi$_wdl*0VzYF4u&mI`_eY*+1d?o#dciXI&4V z1|ATWV2FTT9nE+ZSbM9>EcZ!wy&em47)U-gaPQ7hdzA;d_rw!$Y{F?OntFSsGdlak zCuR*#&#i>RK?`WlnU_w%gdo58?a*5 zT%m#oMSx&rebKi!z`w`jP>orj7MxsWA$h0fty&E=liGlX**RLxf!qYvE7px{RJ#cz zEM%He?MW3CT0faqC5Gq^o#Rj@HmAW{N>Df{hIiATD22xGM^3st55Z(*R&aD>6%f{@ zOAW@O$=7E8vW+p$$50Kx{(#XG*8`A2L;P+M1>@ma6Qg z$c?dJ6|IfQhJJYwkPTnPcGkdb$4@tdZY(qRNJ>ky#4pXPHGpIkd=ezqp?@tKF@8MO`dHd;RdDwrKx~k?M1$>Zr7i{A^ImM>6YmtQ-}*dY zF2U(B6+O`GpfQYSmX+Ue%!?7~k(dmj9u1}=!}^7I3~2lg;xT;pa0TU~QnvZ9`|@f# zB7`O@sqib>cz!IC)k_cpeZ4p^Jwf7C54iDe=&Mwb!S+F0GC=VTaNH0PQR|pFhLlIp zh!!rs%bx2NTB=c2R`%qTK=>&)XgNQL%g^d0WEUI>%4xd?D9Ld0wYcXMl&4lRathu7 zs1cyhO3?uRESA{y+-7h&(Qo_~8W%92K|<8ER=O1lXFb1*cSV;SDaPZr5T5a~PkeJC z_7sc4^?qXCXC&6Y7&_cBj^0%JTmxoJ42 zOybdN^QHSiU_-?z`zFVAnF&N-a_CBns7!NP6FZ>T%f$Y}s6|a@=3EG6f5GaH8Rr@< zMP1%dvD8no_0deQTFSjNmKHEHdWz-4QY>f3RHE0T@&cr$Nb5V;P)64X%RS*)wFVI_gXxBd$CHH9R^?CdTcEqv7 zbXSSS71K*LOI{pGePT>a8t=8VavasYPh(uFr>4GYtCOI zX?`iGxGT`_AY5*{jYLn*Euge%etvMQnDDwM*Dh~ubT8X%OM`_a*iPT2mKQNx=;bC^ z&~R{-?O-hjJhreYtD@F_em0EQGAj zbz=+0ql%oD43@W{x!UuQ3br`PZqEf=j*k$u#0~mLY|r6${0J?s1BTFdJf2fvI*xz56UO$*T3-AMaw4vpVh;AK(xCf=X+mJq{c?tM4n&() zddFhai%k6G*OI_QT#o@hDJdy>dxWKFIR5jzLA3j77mU4UF^+L(LUyiXO>4_6qiW8h ztWNBcI%$2h4%x~YC289K_U;RvWBmTlP0qEGqyfG;7FxDF+S#c}L=@#by&NfmZ^jD2 zgkH+a%OfrPl@)k`#Or9cjnUAc%0GDn9wHvwKTdF6-$Kuq6DqbB0jX^}sMC~?`%I)F7f!esmQ27e)yh$*okoLFd zFGY{VASda0*SQiwe*V*C?`IB_Z7*ULaE$0}>t&&WCFR%`3GwltchEc2+AOlf=*`K5 zg$u(%k`eZ>>JwtSsBYF_npUFB8S3cL3XwY5lAxl3&!>Wp(4f^Vg$=;(8ZFCAzHO`} zS|t4VNA}~$T}0F*qWF64K5OGQJ4EiBgk$AgcL@wZXhPtA8-;l+Pd28pP!uvglfgI;6;b9h)p+1QuJI;=|~v;V&L%@3=QZ>gzK;_jQn0in&v z;e^Xh!+wI{V<+Kc-CDmZ7X$0ZkDS}RwhetHu8vFR?gdfnD8Bf6j);laWzz0v@e<0) zZkM0EeKycr5ae(e^rj_**aGb27JS&;11Br7d9Qe*oCpbJBCfJ+n-&XXIV9Exy^Msc zvlTM6NE+>-jRhQ}X?Pd9OY91vX}y24-+Dly5T9FEOEKUK>Ye`Y0simz?p>mYkB=9J z<0wW;Es7G6;o&YrFQ~#DT*2=bm{Yz)A&y%gc8abWetlr#JM`Q7J&4LVUpVNd3Q? zj|E>`V{=_)C?cPfaWhNi6H13)E1BOSlyE3YHAxPoGSvpc#Tw9`1_{H~2N7?XpQw_f| zuW_^})g+taif>Z^dpOz@f*GAjMXDk+3^T;n=gAyG?_R9-A~Om%n3EXH&dGUb-MWhH z8E{|gW5mt-T$I7M&FjhsA4u%=BHIq@y9m%B(>|7ma;`45wjvA2=@4~H=lA$J1K;wx zBg_%n@KFpJhu#4U4})^TX#KUDoXI@$qg=%+@b(iA#D6U+xj2^Utsn!iU2R;KYWUaPCh& zOu@k?rRB#%rdFN6oMRVBoI8cNWf~U$p63nnRuj|k_92_dsPNy~+C^g<#RpL_&*dF} z`yiJmrQL9qUw^+=Q8MB8n915`35mu5%UdL-;UPRE1s>}YP1`@yo1PXQbn96XQUU6GCD$i2=w-6Skjn4R)&OW1KX<6>}^%joe_-vL*X~Bp0x^y#G4x!OaEkAx&uhUAEe52^# z*E`o)P2lTylGA4iZYT`ad%e!meDattEf?a zVX4W1u{U;_j;^A89%UWlS%)Qk0vI?Rvz{iG9`SMSV+iOOzGoUzu7}~{kXYXSkbkQL zwu6O3EdEY(Xy>OprmIIEvR+*63IL(B=0Nrt)1md~ggCHfd~|Tro+9UU|qX8*%(_ zZAjJSiVwb(g*!NlGVLhGfd`6VUdx9M8o26|jG((li3?K`NFFcdbg;iT=`B5G0YO_} zjN5k3F_4?nebn%^mm#2Ie0p_@ZT}^8g-=iZqDERO>0@))YH?GzrdwcEF>bbC8&tKy4aiL zCvpN7s*(6SS4p;M2WL^T>Ul-+jW3Y!DUZ1+rj8w^Q%IRG>f-&b2p?anwheQj*Cm&|#!b!=i?U1hlPQ=*L!c_PY zo|+45s1bE9b`7(00&NH0=}+Cx`Yv4#Vi3FFb|@>yw`*)1{&(Zyyt z2bBZa#9=N<9jaQZGXrU3H1rAy;dg+sj%CucK)AH_UEmLhxO2gzCgAsv)=-}9&4;?T z2Q)BAumctkF{y>vWb$)QsB5n4aZ*0$Ija6Uv2uH3X-Y2VkxfSM#b;UW6qnYYel#qodgZiy%e!L&MR&nzH}>rV2ZV5Ge~659U*y6s*0A84XQkma z&*P%_A17Sbup-uOW)2SRvuZSYbNwZ-hpqjkeY4V@l!4L3*#bZ7rk{5Y*@W#pxFKMg znwOpMFyhD9+&5!2=E!;p*RbObqdKDahKO$Pms8XAdjcL;dp&y+V-C|6_16=tTB2raUF}Vvr=>p z#-^q%d>l*VK2USb*iYZM(RTM+_d~%a)Rq4x9|=e~kyDxW!t9P|2p?krrZGMIS`Obm zt+qRSg&}^A+c3$~F6E3tsnethExlQvpIf|2R>2IB`dmBR)&F(>EP(qXx#=f813GG> zEv@$M+!Qn?eA>Pmd~OOeYK4rW7dNY!fF@IuS!U7R;t#T^q-o_80Xc=M-A6{BZ~7+o z+(#agGt(afzz9tLT66Q~JL(WIBdGN^lBO4vLi4IT=hVJFPO95J%66sBq72PV@f)pD zTRlwV>dJu)f~Yi_*aP6*hoqO*95$bHXEm8tFM_x8{CmYKVQIX(R8FfW&_E_;YC@t`gX1TE{jlI4LSu2 z(g&@CYUM2gs)y`CuGZHsXBT{%-UN%E=DBzqhVA*UFD)BK44aMlgVb-){9%S){&RQ3hw3c{06b-Q-FMn=(Vm(8XC4?Z!moyKcqU7B!~8!nC;eu>8s zIx|&etl`}}WcT$(ef6-7REK?9g9=XQ;-9Z!cESbeck7vg68x;7`<%*mmeX2W9Kf!CKj8LfX za?1Vn`A(%kC*d*GT4Scw6Oo%MpgxrpskY%*x)cdUL^UJ2x73C(KBLR@oS_}#ye&aX z3+v()6UPn~zibADNlWRw-&& zH_@o&ttV0ZPpBUcS-rYx&Cy~f6bTGOgPmFX_}QbITd!%RbJ@|N0BL^ zn8n;6@s_?^!A+Y3_j`ubvDa*9u={%DHtzsX!#2VDlPep`#Tu4*1KN{JCOL<8c6g%H z&vCK?pD5MgenLG)e7WM1gGpX>%PHdb{9%Q+ng6Xkn6DL`wpw5Pu&lgTJbD;{mGTE~ zQzFf3o4tD*V|3ECG4rWoXMgHn;5qYZqA)ct&(};@>|UHEFlwVK5i`4Aen6qRUkz8Q zi(D}iwi^6y>9It+&jD{t6pG`fl9R`@Uyz%)J!r|cC@a%Z?_IS0IGT0+d9slKdr{9< z)92&{NhU|LOA%yp)057nAia^JaCr{l_6PV>hTCRd$aw_TpT zyafOEmh7*&8k~lXVC*0l{GV2Q(CJ0b9||$JeV_d|{N|V!8J6>a(IYbPc|(U#pl>u8 zYk8;@QndSyRBlR&{BRUq-52Ls9n)>4f23cUDRWL^u^Yw;IdY~RBlpCL2T9}K>wWxiTJid}g86GX0^W$A=U zd7!bGD!s}$ycH=XuiQ+oR)pXm^Pet$XYz20|8iN>RH~pmI0d_fpkpl6kuM)68hb@W^6qdG-#ad83SIDPAdkiHiv$=I3BjK>ZR z%JL);a8srEx6fYbt|U@vyJc9c5HQE{yd<#h zcpxILkD&PETcDUJzf`o;pX(pBJtlbqMhI0z>_RA)X5olKQBQYwDcH;~3^h#Zx!rlwYCyR|ADH{(_* zTZCx!!y(3=H3E%Jl=!y-72XTcld4%HV?iy+<~;Gqr}pr?$XxOHQx(lC(;WkDOLf~( z$+XPH-4XK;%>qk{_t4*+JfhPEF~RcKZe7 zqn`gF(!tY3?a`xu1TA5JsP}Tc#RZv}dXA@2cMT0_^7(k#G{$hqdw&b^EH(@K^)tXX z)&c`VXHp3&wUJz%P#Ll*tZlD^Vvwi5XA8x=itt@Cx6Fg>N^Fah3#}d9CZCTD5D!QH z+L|ll>Hr$_xZ0n7neaulDO3HCi_Lk2@x)6fK*-${WMgBKlS4!bD)^C_+UG8APfDwu zO?zHJH`r8u!EGemz}DRGNxV7?Ig%8i<+f0%&$IEzmut4ar0B}Zo`i-5Nyi*YxM&Skc@V7tE}JU&v?xp@ZInonKtJfu54 zsSl(3a+8&i8@%C}CY+<#yV7R~CCJ{^SD*sb&LUol%JvRoQ7nZhv~gaW?JEOw4N`?C z?EU1B8^j$N+8TAC03t4&p_oydtgNiD-+}{f56t1*#NOq(;!6m)fYH%Wq>R8e_yKkl z7n>pfnGDf8*H_eG#_%mwrK0?6sJ6#disPqg=bPi?5P+C^bZ-AfsF`aBKDSnnk6_y) z?g*RXs%OXJ!9j^*Z_$~8pThb zE+JRUQ$oS=v^j?GUy%2yApgMt>F?*v?0T=8cueQ)&-tcU#H?JU*hv-R~dwICrn*$`D5iqg?6bQKIe{Vbmw)v5xae%yMiKGH#RAUmmUc9+RZ z?hsZ`vVi&gKTtiVH-BY34q^Cyxq_O32KI9?j$F^lXaXe6lf(km+IQ5mh=Eo9jQ+*= zur*TW?)pNWMM0Xv{>6yT_Sb2GHHJ_Iu(4AB{3h$c=G`6>tRa*cRHKVP7eQ>b`{@DES?Ndm$XCDUq zPd{ogP+*Jg&M9)V-LuP4Q*RVNT7CDpTtP1V>j|#_7;6_#9g}Z4dhIO#Q`YAa_J}<1q#f`m?XiS=ZSA$89h`RCwz9pI}oZWNOAI?xb zsV|HnxZ!Vu?1ku_Fa%o~xTv{zQIQCLtbgVTf0W-fax(g*!Ar37v`?P)3s;Ic`0$>QHpT_#YO3#=N5Euf@P%K{zN}i4urL{O(b4 z?OK?f8fP^4&Mn!9Gup9CFV21~4~!moHnTN{!RLEtl=z3!;RSX&0Y~cS59t@4RR7Sm zO+?JoY?E*SD&M3OEBr=pLHBg%b8=9A-I*ODt4^>aa{uOiex&||NG0-9y$-Wm!Fk60%qhNZf0aF9-oZY_ z<>kePX3Ba6-4Gbtm=h?;6Q-64zO<I^mVr6|Fo>NqExlb8#Vq$hiV}*QWGx@ygQgyPX778Ws z5^pbf454t5P?!IX%wX4jbK|fxH82s;NF@!GBmRW$vTs0IKBX3A z1I;&_m}w&4Tp!6K2bV8M%mUn>jM-cOxj65UAJ4+Hrv5(1D*!iu(Er5{tu9wN%W#09Qf(k^D7b$5jbyrEWxvxOiF@$(6>|a z8-b(BYMEK#@nA1ci5r|(&!J5vm-ees3-42FPsD(?L|;6$`GOqOukb%P>Q>fI zT||JeNck50-WF|-GcQrJ?B#Ji9c<#F zQa=bRHKHs40|i!CI_eoJo1F0nVJm*~=Ohp~y2>Ig?CyZ_1IC_jovlw~-80bhD#^BK zZ=xkGj2Iz8B#O0JeDu3DY+nE}r!`%8)S)x8N+%?yDV3XV>Kh$L=F2Xl$*0%eJ2fkC zhJ_9Z+IJpr4DHXW8fGidNGyv6z`#@#JukM?B^kjDz-Rm`b*`|ytWUmB?;C-eNwY#V zy>f7fAg6?r%oV1gtvy&^8U-l|^0=uJJVR3rAadUCn(urD3Tf*zu#Szb*|dEEeEIXu z^7&U5!QG3$zS(fS@td(1?#lD({O&Bf!;q!s%w|21>sJvmUi;nFo#z~Siz8zEO~+N^ zNP~50J0be%Br8uOG|UcmDTj~>mg$#^{6QY;7MgwFVH*T!ebjREN;1(!nr1=CYFsL& zxls?2J%In@6Yn3k0^)BxhgUYe;HV07jX>_V0ZyHBc`7Z+SuEwDnpugKR<}Z38VUOu z4C>v2Qs+L1J9R&ge*VXi-$X*(Yzasm|ARXXQqUaqv3@nnL2U@-8lLk+2BTxH8b<$c z{$gS34xC33g;89p%3Q`Zbc$J5YHC#j6*3X;|Nf9txcF$BBCmFZn%Vhj0pc%BI$?i8 zrNxV4EE=!|l%R;jLCpG+6fu*P+t>NTO}S=DBtZ0MK&}PeoQ{sFCtcG{D26Oq3GpAS zXbLF+8AwP)qnnjKmyKBq(MQSC3Bdx@%Q#P7duYd6qK(Hd(s- zB^#IN=_vm52*?cbp2=tYHn?psjR3G}F{ zIYl8Q3;YtD3`>#WzU$i9i_4FtksSPg4;v$r!e&c^-0uM#4JIom!{8o}iye1=82GBr zv89h2cZQqKb-V-<$3f3Ekuq&Cx3<+0#@F6%a7GAQ~&|U6|xoS5cimxIgVr+$CjC{L+?fKqhX``izPLbKuj%%4s7G(@t;Pa2Y8DBN_ ze(7m&lL0Sn#1TLzn?9$8+j`-~*6kZ(8>GAs@J5`8jn%VT+5r!zN+bXzyNRhNW{J2z z+m{FYQP?5l;HD&!=RnpFTMNZNqB|BO2pCuEP}aOKwIA?=WnF(;Un7>m|9JW}SJV zdoC-?#Yup+7H7xXF>_f{X~&tDmbq}yH&--oB?C77aQ4r-y}W{4fJfCar5{xFciv!P zkHFvonn4W1;x2K%r)Pdpf%dMw@#{5JiB>ZggQtZnc+-~s1yLh$W|YZ&a8SEZH7_pf zZKc7=#7bf$^l5-F6jTP~)FYw;Og0{oA#6R>_G%Y~k~s8cb_uWK;hFha{xHCd8Se$0 zo+%mhmWQlXIJy}Y7KpjVqZ2quTX==w{@v%cT2SRPck-xjXEu9bt@Ze9&zZb;K&ya) zpb?{Ut!~%`xLSXpYs>!t(RrH33_`K2w=H4_p{~oi^-*z)5yx$FMeq=8mY30QTI564 zp&2d=S?K3zrIzC@#cLo z8tvP?K9ic9lHyrHAI0k*@+=&)2ca)~bJZAok+p3emx~FfQgfVi!}a&X#8>d)a|HQ9 z1O1#|s*RTRhiRiD>}!9HU<_b%bSa@u=bVHYoNu;&TU#R+GBq_#o3~z!FuZ$LTm7vb zN-e$CDRym#RvY5HimeMWUhNL>_Ev(*566QzD?oQa=N90tm4@`Z+={dIA=INE2RuhBpxct? zrY%IU#CxyvR&~Tx#igYMI>vsJg{7(85z_hR-2|T+@Gu6o0Qs}%v_2N1{!0L+aYpI@ zHU=OuBdV*fJvjq|@GKrL&G?ApL z-w+J+VbXI4EpJxGC;V@c$Ql@Gh@g?`9S1#Xm6)s*p2x68(o(V?tP#mp34yg1r5$ zAPfgJeonRG@kZm&t(|3cWmT93H_n4uQnb+uEAxV^9eFkNAz(@<1JqR@Wt*Svu+{3e z?YS(ZPa|~#ZD{BNc*uv~I$gFW<6rg7nDuFv6aC%J`ng=Drs@dWZH8RA^>PQwj3tJ_ ze*NjnX-Z@|V`779fnxX@Fa&}A_P0~C6EQ)xoQE_!H925XQid2mkbl3=at7idg^R7! zB;$-%+-ZQ>olplU7No7PY3_Umj8Hh z{}oJrXf;H>ozx^$vut9FL0Q}U;l*m{ut*lg4IGs-D-j9cC;>h}2hSqh{&=p*Q`PaS z@G04XaP}ar0$;KBR$of>1k(x@DX7@nlRDwmJ~cPp*4L*`4yXheT`DpV*Z&O?rXp*p z(X;BAS%K*30+%ZMD5txC97t=FJcBW_Z~z_Ru9`o(AaB@k9q0mh9WnkVQ?n2zKlRC+ z;XR_|xDV;&@feU!jnU=b_o`BSg&3UmOaJ4TD@8&dB(pM~ww23~Fnt`+@n4|1h_`6CemvGiwl+XM=j!V*Ye?V2oqT;9=)y8f1hJe z3=EZ;@K7*r$SbQ1T5{V4AQ>R?&>`$A#KlOSnDPMfjFhy@nOw=tv8$j$g4m?t`U`SF z*hX4tv|Z+{FS;yr%5lrHYg-R5d&(eb&_+k5AE9yUu!==5Oi=yz*n5PJ$N~{5(_6W0~WRRZ(wa8RN9ix2S~6d^_6T zkj9|!&-X{(v)qsih5xHSiC4T&azw2gG+g!F+Df9Msm;;i*V;)4=s}6D+A|h92z5y1 zE}vlPz#ElhY8<9N7pzFacSDR%d|++^1Z>31cD7A-K9A#IK3rMsL0e?q13Yv+dCyvt z^ZK{M)MY0IIFa#oTM7Y>%wG~qDE)x2Y3DKS!T@l%6~p7e#0{Lo$t?#u!q0A%39Q@% z*l)HHFiJ=u5LD?tnGnsXbJ1WiBLLn}czR!sX1z~-f>9r?s=>Wo- zT;L9;0SdgWgBB$ie;(a8%XO&o=llIR?zI{1Ee!!VYqVX%F`Qh?R_-6gt>=*&g*q30 zcPhKa)IdaJ1w)NPfc@Wf|4u4@7U1n&uU6Lqy!ZDnMG%lji4cS~nPHDb1fP(5z&=?r zziwZ$=bF`GSYJ%WDBkNWl3!|Kww2?f2Pl*6ySCt$xYyI^E8Ow9JnLD`rm|H$SSi_MF2rvrMWLWeNLw~HSY@i<$hNTiZg+t~(w;GXj z&RY|MQMGaVJ5psV)8R%xz^odH zmVk6oAYY8yuQL|tU+7QNxYOAd6m-2Xawp6|SGc2ZIpXCLmjXg?bsNdC4xVyw6A`g0 z-4MedO18%YHG^S25h$+4Z^+M_JlbJrtiL{!5z^x$mnyEvM5MUV1WSVH+NC`tH{DMoMyp` zH%$^2@IfyRjW=me?F{dh{}_Kg*6$tKHMfx#lm}+tn2{2`G3Ni+KWYxG+73@_Vm<2x z#@V^OG}c&9T8g#~Nm7xeefQ3IKQ8c%JBl>R@fOEPU0OVaR0{3syxOQQ zGbR3(;f+Vv7h7Amr(2PPk$44fA;G|%6II;l+n|bmm%LA*l6EW0X|Nx``_aV8^f*6Ky`pM;(p2l4?-q0 z5(j!8aRC7dp5VB^3{e>nff4 zSIi!{lD3Gop6NU%6yfJgcff&#T7g5%IYQ7tA&4)W z(0r{Nicg=26c8i*6%O1o%cB!KunXZI%76y*A=1^2D4$_K7fp_EL~MMzT7~RVFi5f0 ze7`0Ee}yALN)`5?dksFT7)X?5^VlZy8BmcvA6}H@7oqie608nKJe&Ie3|#kBKi0_e zrrgOQQPCCb->#ejy~bwKHdvin?~Gnr`D+VL8$;VXE!lh7%HUEQ-`jKeC)(uGRV2YXS#SsawOUvu3hH842ygnz=0boYd-GTemAVltvfBw@0A3EGN?6x15_=-)ZW50=7sZ1>##>t=|N` zk6_JE{KQ`EJz#o-yMfb!Aj9D79l>kZ!G`e{Ajs-Dik4td*xp;-sskK|&-oGcK`=Ny z1=9iS&D@erk*0xpfviXj5{!e5PffYfr_09QI;4ZgBic$&os4})77d6gKt1TRzOZ3u z8*$Qq%U*MiOH=xYFzTg4ly&i&8PE)*^j7Rmt16pw8WO>XKy8mB3TvI)02Se}8y{)1 zZN!15Vi$kdy|!ytS9e2fx4k`CzDLWW06L_C3^Nr7aa60#e+PB(BjoQ9_aQ&9mg5c1 z7R&qHnC<8yAvz9}o!1^f?3xY8g9DoMSJUf(HEXCYAH zxzh9kc6*W*sww==J?A23TK@bKz@2(FLDbFs)t@oCPAt&BbTs7Trw~!GKLjWJ(pTwPI;BR){;Al$?_wmacu!2v!&iY-&ipT18_slJwEiFZ5 zCukPs7cY8##2RZr0yNW789XuQx}$?A3EWuP{w?14_J&+y_bpvV9CKPwVLzGY}KQPjftyXrEZ`^T7U0 z(9ll$qiZQ0`wcqiMW>CxT|)`6UymavR+9B4l-)evYq`#mGD9Zyl^ew7E#+%nRpgRw zlPiKP6X#H}m=?`pIwf!SNh zG#6Xg{_vCfSbEI(*6ynag>&%!9dO4`&Xch{8;3#k9}R*K5gSI65K_u zJ1TfQP+5l-w91|13%h|(MP)Nq@FOVs!E=+3z3bKHhbWKRRpjPFZFRuls?~C7m)id= zHY9)uQA;w+g#Wd2+hSzX5-XEZxx!tl3lIz#z7q6s*Z7;6FbQl-#qth_uuyETK;|@j zkHKL);x@vgx|wd49U!KSKbYi>a&V-DUYte=j;>;l!HW#STz%n&#{IvTt(Ahox0$h z<801cUmv6E=4p*nw`Uv{mdBV|#CICFLCg)S-bMDGkAyeiqBc9{YA}l_$&2Rth992W z9iy%kvD;cUAHs(fa%*lfQgdr_{yO9qa+Zd+>)9N)K23)yA@%%1my*?zYAjRc1N; z_bZI|xio*ztw3#g>8;T?3ER~6QHPy5%&XQ-HEKLGn=beL zoZB;N-6F2Kp$E$*`2P&@=?m3f*Qb~Ho#!NTk9AAh?HAltIf`220asVyVARr?rh48n z)I@M+h>V_w0srcD%Nv9BUgIp~u=B34J4&cw)8_pbmcTHZMj8Wt_zZ(BGK%A#$lAxR zbBZo-I-fxC`Jwi$#-Hz2y$e-Z-h`-01CP=JRSluC|0Kyh<7NHmj>-$D|3LD1CbuEBl z4XPE8J5TH-Aa^aa9SEoQ*m@Vo!-u@uzs_IGdcYfO0V*36A!@&RhAIeZc%6amg&Q&& z?yqWc-2K;szGUe6SfH2itaeT#0*hYhhIFhCiN}k$P$@sbGVk>)W)CPkH-QyGi?2hO zp11))X=T?-5P70z+91s1<$;ezk`T%&m|MV}n@r{*=OE941pI}bTK5`6>QL(Wo<zAlRpE3O)K^N^DR%f?HXLWsjdk?=ekLAY9B*(eZ`PD!PeX2ZpoQUmm#O;=Eh2~i$Qfit-7Ps2J zK@3y$F>@L*lFc!q8}mDTwG2*;AhSfJ@F6E!cMqh2fJx&X_B5fnsH|%t@(Ub8|Bmsi zL3D3-puX-KQb2d!+?-qT4uH*2YE%pbfMM3&1Z(tSW(W$4#n|;}cz?`Th&0`?DuWCc zBybK-8-&~8#&-iy2*C02!BCPiFaI{3NQpoo&3 zFDUpiT`F);)A#@*+YlrloRAbUU@fLaz*J_2|J<}_M9xQT@TcC~*4 zxt;SW+*apaV$B=;XeAf4H|FMGe65}_K@4AQp>v&$xhD4-Bu3L0p^S~IZZ-=sbgYt* zn*QArABdnNg)iG!P!I?$WsyB)I1P{%0;u!S1}+l&ARpvWwd@ZVgpX_E!A?bWwJkCh zoa?ihAeROsSBkc-Vn6IQt=w&}xqzQvK$`2k8So%>++C_gI(sk*Tm7YmrYVUNBG%)K zCrP{Km&b-A@(mRPqw=xuewKj8iWPSnbYL|@&Tt1QK}~=!5|2g7sAoHY&e+*Qcn@!2 zv;aXL|IVubLA%cNm+PyxPGXQ=_Xz$rsZEPz+n?3(@DvrrW%bZ&vh6#**HlZ=ecwC*&F(FN})U zC*(D9hAecP1rNquATQo^%hDXmL%@R>Cs+LzE$gEntESRZN@ZDAYF_KCGjMr5 z_3zPAyO8?F#;6;;xd`0Wy1qg0u+91f3E7}$gjF-@zKm3S8yFf2$T8m_Nml|3%N+5^ z)Kl^ywHaS2BsD<;I;(6T)|rjKq_4h1nk{r*@k|5~S+1SEi8M~w+OyRnz;$cA&n_(6 zPCiED0a)u+UL?_XOJY{4I5u|Am9x<#vxodQ2$NMK&ondM;+mYB%lBW&Pp~QbnXn9; z186?RWdQWjaS_1G17iU`?(-4IJK*{F5^{HbQBmwn&VH`>kOYLhk8&m?eutK66wQs? z2$RIx&E&m_ibcD84we@1z}=YdFLFVX%G)fBjtL0KxM*!|77SeJ(AnuKxK}_e&%OJg zN6T1p&v~p|lD)qW%LUrvr+PD0eT4<)TJ2n^$9nJqZwjxGyvIZHsx_p;3Y`MzmBA=2 z;HxBeZ*O^-q*PurQk7Q#cCU+=5auL?b2@P*JOk}c6e&45DX_mrlp|ft2t_#N42q08 z1BfC1r>Zqvk?IUjJh1M9bVAGh>vMDbjYqn|AbQ(RAh3~qDN4e zfE?D!cx*ZYs&_N{OPt2Ke2Z9{UB1atZss}r#=?agTvm=C-t*W5*a{$w%+ ztrn7(@g|Bfs&MQE&_jEB3m6?dQ-#p{s5yVX{noaBy$ zaZZMY`HL{Kp{qr&{z~51Wu#fr+O&V_`4;0eD!*kCi2y)`Q_qz#=8Tm3S zXRIEB{TzP_nvJ;dcN5@7K#gmQq2=zf)#60Zb4Vvedra29iaSA~s0SuXB~0s;)BIc0 z9<1rHLRUUC>(2N5H&N@ZJF#AcS<)IQ#Ejf=+XETQ`+Qg@JmtMva?A=whjBBmhw|qL zx8!DY^>w#TnO_=)(2$EE_GGjk0J@5mn1zsv{r#2wkK5QYbbsNRVhQxTCJ4R9tdNoi zq!vTZi9y7suAeUq2Nyrgz^%bt1uIBLTP(CLo`>G{ajx4_KSRh-H?PGb;FucbfN|v# zMVS0i@O6zdpuYY7Swu4vSX|Ke1G`5FG%56^(5DF<$0kB3#2MVmPC^K*zTSBrk9HLO@QVN6s=?9CrHsX zHJMG>3va*T3kMf4Gke4J8r5$O-I+8spL}jAsPV0rWGBmEb@CSlQN>aL-M|1(a%w93 zPObUkNhU#)-@1i;E6d9TW&hp9Pd3#=+O(_Z{$@~47uRp0e{-o z+VLeIglD9cxb<;G8MNiLJb$XERn=L9KmEeJ)vj4zTb~v?u2Jg?yzzJ2@Fqqh{qdjxq2w<~iH|DGFD zn1cGQKkTJww0yHY-|v=z5{H$H`uH%0zzXZ`p8~(wpW831G*zU~O2VyD3w zR!mEEoE&YjHf|xjFG`I;L{wBmqnMd5d$KW>M$nravp+M`WV1FISJP5~+D~6xy0#El z2CQXwwG?(nKF45fd6!6Lz-joH1?8DDdWtnAwlh+UyM2W&IVp$upy4GvVYMLd#{bgh zqA0%) zRKzOE$}^j3C)0EmR;Lb?G6aQwUn_h*(LA^^QN|FInkt|mnUTLhI{j{dYX$q@?&xZK z-u~kuE_S1rMv;c?I(ap1W6*R&KEJU0f|!uY&CI5x)YQ=DgG%ZTK|zf?p>c-BMkJn_ zZ{8d(BR;ek+(TKl@l$TgbUZU8e#Mm5@B@^eZ;otFQLCHPqE-8E+IVE%0-Y zA15NJt*y=f{`vFgw{PFVDUdp`mAwC2(=-XXmAet@J9K>>@I<^gUWgn1t*ADM`HCBE z&CNcfDWBY3HbUnvl7nadeJHh0-U$8m4b1O@X z9y6icZg{D0V;jp@pzTn&a${jj!uzqeMJIdC_Pmqo&|0P8e6h>Kg|zvSnV?JaO}geH z6|^yXZWfbaG*nVY_sDM%rBMqKnXfuo56|sT+Zc1)g89Mg1O_1wD+|jhrf-sCuPH9E zvKktB9xV+$H<y!&)GlXWSO#nYCR~0GytS0~^QI>4Al8}}4|(bC z^_z89y5XjtoR#LGfsMC+R#_QL#98V30`)QbtXjSiJ7ZIyBXp=JKHe8?s%F72_){g~ zqSFFkCFmj}cde@o{A!|unQHxu2AIvz<_bad(J%PBU>hpk)+v6{)UJTb4HCG)Xlxd0 z+i*3tg_Zh=vaQ0aSFQAU`$n)7`u5vToSYW6R*D5ReCsb$2WtiBKe)=G1RuoVx^7TU z*uAY-5&3g1t% z=4Yaf^XmCC_Nm7G{oRUT?6nbmwUJR{G-2&mKmWwP_y4IGW!kJ#ewC$tsh|LCR{xkq zN-BF&P2e6QZZ_c=lRLe|^jMg(@|vSqJC=K**Ch8y4vE4CLUk!hw|IHW8LBA_o1=MX zM%FTqsU?W8ETpeChtg>8tp`M$sgm+Of=Nx+vc9J#x?Zt{KfNJJJ#=cY(B3Rf#YZ6R z!-CGr@U)Zbd2}Jgh&YpkFT=gB8a!@eQ+&f^zr(}B@89?Sd;4@A@wLER4ZxX4AlLQPA0| zd%fuR@w@$IS>4xmD6jeIHP@Y>n@~Oro@q+WIuAD$vh_T#=6y&Af7uyn#dTHHg{z!% zRzmOtofE`$q&R%J7MT}^Rp^sUf9{3f#Y*EJ!Soe`M6)@O<7$PH!Ck`^39A~Wqj^{M z?t}l&FJCTO-@UsY%K6~#XL^>XE4cneCaep_RsgZB@PtM{8?i$3p}~O*oAobH#JbJZ z7C)R8WJ?8v+dIw8HI)`?oNf=z!?9$rte|{`9(I~{UCe9n+Q=wAjZTgazV7xLZimcs z*_L>x_>?bwiCnzW=@PL~l_x12zuqvg=<1nh8=EKiulYpKXVJ#h6+cT%Mn=|Gf^K*^1ApsStW_CFd0; z-(xT)efz=xZV#D5l1b(#wqnKY3lZr?>jl-mpXkkv{TdE#DAoPt=we^=Y4_{T&)kz* zC$e+hLul|#3x*{nTY2d2y;mu(1c!)}yaq5ru44m>56?fw&Xy^4;&{OguzG+J9bmS9{Q4M$M$ z>Q>pB8Rg{?lOur34Y8LYJz~_%UMv>Q|M`xACiwGzZtWZV)DEhhS!!*9qyZj|?B?d? z$VkK0%)@H8#v^E4h49Ukm{^Kw?Ft9(QC4%$FdFSVkylj{s!?6UqZ4K5jAG$))IT** z;q`_iw;5+FgjiTuK4B#jhNUyVeEFLgrrj1eXNR?$TAgZNj>lp(7%sE0#EPQ1pd+K} zQ)Oja=f?PFgWHqst`C7Gt~S-N)%f?$x7q?tv6xuxBAz}-(Xnh%XcylYy6}gHXE*)tarfm^B6eU%hk* z*B}HOJW`aHC_Tg9-`4g%EG+E92WI#C3JU0AO+2&ySs@-CMZt3n7cOK#M3S2N9&Uo3 zy22R(nU#SQ0{`kVeF>KZD-`%c3Van|X|Ad2OK*Wo=HugA<2tI=yggL*Jl1DewcK^T zR{-5utT^)#9aOacXXoO##mUId2jn$Q3+khkzgkYQ4hiJ1XI@>Jx^BEYz!>A-*o!r5 zF%${?z%6$6?n-YsM8Os9Sa;z~34iQv?Xe~<9p?$9zCC=-y}qcb@Ih#ztEd?Kj>72q z+EZCsS@$SOykE3AOOlw_eg<`v6E|M|MDn2W(O&}tG2!7Uwq)y)6;2yw`+QqlTX=EL zBOTq{xa#aDT3Yb8LgLcbqS zP{>{ZjR;m(mN4sU=2~&)dO`xOfg2VsjItm1+o9*|PVGA*t-S49qesj$OZv{YO$v*Z zZm;)ZlLQB>MQztit1jrZix-ljDdvt*5m#MMiZGVYth;ce(5ZFx_S^3hD;`2FR#v$w zDRsjZjTP^GeSNcgNr;*7xqn1ghR~-=HeT0+(}Xq}Si`1-qvlC^-kkzs9wdG|sr$;= zx!*)EEF|P5r&l8M%xE2UqZ!Hfr5O2H=dl!wA+fa3YtZSBTUL{uITY`gxEblS@AcgB;r5T) zQYT!7UikR=Et1WW!vzuOjXQ-j98SBWBP(*{+tWRMdy*AmV!PXmizc@h_`JC>(qCL| zi!Iv*uaoXyQ+z-|t}w`suc`ixW%_$qGLX1M+{z%TyI)?*1(_n+v#~9YZ@!>v*~i#x z(fRr=Cqv9#6}b#udp-Lu3*Cfh)YD##kz5+_t-toMtPqu#-hneq@c?sDs47xzu zG(QvOEl2yYMf`eza4kpdzRn@kbz-Dm@}DRDqV-?6jw1N!aC6{-PN_Xlhw#E?bz+>4 zj3lL$_YTR(42CmyQ*>!8>vDg&0MB}t><1}X67=qPSp()&g2#k7T5_|7Xh_p`BPxMv z?<#p#`QE0XM8EUU+%dDKr*vuSxHp4_Jw3_kg|cC{eERgM&d&cL4~IJ&8=JR@DCA9v zf&USQm2E2nfVSiR+$u{$g>uH3=jJDZz@lb?nCXk?2ek7@?Y`FTX2sCf$1FLMy_ON& z)UA6S;WU|B)N7ClPW-m)OeLz={1dg2e)0yFiJCyZ+?K_POCjTaqnD>>kt(O#34H?t z7FO1vfB+AHw4$OSIN&)sJWNbX=|1Pqox2yrKx*tuaYn z9Lex|L&QvVq(>B~V~Q4&2ev2T{4n_9O`XP(tO{m)HNC}JWgNRTi{~|beK$l;28?+u z!{vR@w_olwwc|71YaIJ0U8qovdJE-yAJ2^qH;Xtdzkqv_VIfsiRMp~1-5I10j>SK%a7hK7dsLTLnPNU#s>q_2a5 zLDzwR+Wb2*Z}3fE_J2A@tt3~sIxNL}z9f7lqK^6Hk zc#W@V=3a_?D0k*ugQ_+UVxYr|9%*Xs0#ybLYpz_rT(?3=NqPJBZTO3DLsP8XM;el) z6-`8xHuaz06@DkZvc=-(=L=GlqMJJdn;Amk`*E?tPjs(EXQWb`soKcen+*_n$mT?+ zA~#pE-<7#zPCFkzCFJ%SoYUm&CSGhmnZ3R07yE;U^74aNa~+#*_zpF7l_{-%UkrYo z{5cWT50aA~S3D)x_azGV>xQfNv|>bgN{u@AbOb$tqDznL-RU7eUhZtY@Rkv(yRxrO z$2!R`oO$z7Z2QgN734$w|J&*)w{s6!Jarfuy7V{TysCys3heFn`#|(mzK{EP9^EfK zLAAA1=uLb?&Hn4xD6)>uDXp61*#Rs!AD_|!$QDpG|KlRzH&4syCbEuk(2qfDwpaOmTwE6V9Agi(^&WKDSPX!(Xf}OZtJO~vT-vqlygv4m6IEokd(q<5~i#I11V8BJf68@X!e8zMO>rn zEonXOUtT=?_wQdm!)DkgB3;=Wv?NOb_jEQHv!d%;T5iygIEGQ)CJnf!q;vxy8Wc*A zuU6a`UMrMTSs6=D)?HZ%8EY!E7vnK}G0Vo$fju~J*+=Pxor^w??mU0~9M3vBVt||D zG$3QEvYQAM{J!{EnFv-gI`W~OP!ca6-w|!uhVBU5+wZzUk2W-K-FiLf zfkIKp5nw9c>mzpEVte1ZM}IXJMax^?^$fg12t3@be4mKwxHf*qxTUM(1k?KuA7)~m z%)of9aS^ErNesP^-coW@J^iv{uVnMPAJ{0$)#oaya$0e> z9CnrKK!e3$gcIUPr#*juN5yjKbxDa9_TehzS{E}oGY$n*F;g%y#)XC^xd`*{SWdMi zI%HmL-j~!{sh}pmd@MSak0;u>yTj+NWKw3i_|Re0ML~dCRGW9>lg1;C%`C^p#SPi7 zdU*5@x68>j_0nL1mntyc8-?bRY9~Q5uKRHimK9a43CR^@6(m`=m6S4@3<}h&Oa=eh z$GUbf4nJWY0L<`hGTd@5vp)mQU%7JnI3_OR>(s(RkeNf}hz)dCf)ja9%w?d&mXwqf zt}5ULcwl>%gp?F6DAFA#@^#)#_nyVVxX-H>Cc&R#9f$?bcpw3StO#xTje6D?z3d zDhVkz`OAN}gCD$tf=TF;e5ZP!*xT6fj~qj~=muH2CBjw{b6Ph!N*U+8T%VAT0M7i; zafkxTVHkylXc*t=*+hZ!@|z)>%qWQE{cw7I1v$Panava-5!F6%DMfK}Ua26t&WatC~+l$4ZO z9`uCp^z>wK_#13dNEz1bx6$Fw?P@kMxMM&otw&S&z5v30Nb7d>DvQwz@~#Jht79k;rrdxggXaa(~Eod8*ebUJP|c}X~e6+(Hq8<+%9k( zPGC^cfRy*y4_Et)031Fi{gva|hcaKxcCRttT<4et05{q}_X7DfIDEgq)8o}Q?|J`% zzkw$;)zx}Ng{eBWtqoG|)KoiRddSbaM}rN&b(S);+#_}@gCx%+=Q3>oWVL-p0S$Zy zu~}%u_wTpLWKf}=fq{V*$#C_@rRw8V?cf+!*Vgp)^|eZDuKK@P*n8Gw+kK~3)qwUr zBPMNrh2VKQGN2L8LOBxuoo6U_UhmA?+mj?;>LP+`N}3yYdkbm{6O+t*ZG+*haVH4} zyX|YLV|sBhZg^30%1T5_e&Xx;ddXWN!??k|cI(+1>M{m}N*jlI$*^=b-~A-O|9Io+ z<8i}6UH$2))5$8@$<{Zgwi<_hah;($4WQm z&h5BUR8@tsvbs?3>?D)-MMuywnqOoSBc}b)1r>OxYzsjIM%gSa`rs(<}V73i4DL4K6v2!{UVkOc1JJQ zA;1N1QC0zIpmDw1;KK#K16;6s<_Zsin5%ru11Xk}5Zm+b4h{~0eH_Zsb$D>X5ogTIL+qN zLYzl2?GC}b>OM#L?nk%w%fQ6Ivy$_00g-pwd`_Lt88>jy+}K@d#~xnD%8X4cUdW-= z2_ZV<^Q=jh(-+3(P64(UfUHUym_8nt?`|l5!p2kkYw++SG1J3`5C49joP3E!7mCTt z%BDjWUkh3Y$a*1Pf~T{yv-gg$E>JA+8~luUe-RHbE;C&jISy=M zr?bs7*tL(yND>R(g3ej+Tvs5VAJ@XVx^DCt#ayKa+_E^jIo?`-MyKbvP=AKCX~7h& zK1MspD`as*QE8=dsY|6SjRL+LtWGPk=fD@F{H(22h?9r`UdO!-hm(<&rDtTMmim&M zZ2mj@R^SpjJ~Si*@R)|t>1m^kBbIRCy}W$$=H}*~Kk*n1J=8GW`SZjs7ShtvHt3dy z2K7QSM2jO8v-mUluImn7!#0lfV9SM56T0JkG=}{PmtGV!^0V|AkveM2oN3|Lwc~4Q zYlg_erZt-awp!tkhF_q`6%MJ`DzI>38$@jgzp< zGQL!Fv1L;Wv(|=2ielIZgE=-10M9dZo~o!ofRTUOQ=96+zY*>KCQUw0f)h(j%w%O{ z_4hRu9pv)xbR0LH^Fla}rzo2ovw;%mjd;(cr|wN1>4OF8>LFh{PGrX2KECAf^fVRh ztN*~dmMI18)98g-yO3ZMKx!3$?8WZ$(otK@bHHi$Oky#W3u||%Gut2U%DCf|@HL%H z(rH~8vQp%6Pc1LkW&n=@>oflM@5|voZgxN5FfY4RU#B33sB7}=^I#e>ryj_m|JmG% z`IA!6IRZ&$TCu(gXQ`<-*47AdsM;;~!ckLG0P*uDvr|*OX4h}qVaq)-ER;k}s>@0{ zY%MO19dkW6c)?2w$0y($_dGo)5Tt`SKRr8?;W&kKRhZXp#^}&cDnGg(TA>FWAupCt zX}z@9)00{_a~Q5ROh{lNjQ>|Mo3Gd-Wr2}mb=)x9jvP*)A=l=K%`k_$!hW-r3}LHq)Ok1{M~NM1jOzs(7NT z4BfPW0o^@+?#Ky0ra_ABKQseAs~{}TQKLe+)v%a7SjvhHpdp4ee!G8xotU}17 zIHjr*N^GVcpN;@O5E^EZrp#a?On+;oC^a?K$edgPjiYk-VUSA zWDa!6+L?dA0B(78c6S@=l&`kQEHn7Pbq~Gu?a2x|H!dHiV1}*bU6TuYEP49^-J?rDkAuY>cl!_tZVtG8 z!5c3N)Ra3dWKQ+2sA*`*2p@?AETF6F;sQS*Hlh0H*1EVVSoIi;65N0;>j(5K^xG6| z_;~2r-6C4edn6*q-1C!|BqXLGBBwC6wQb@2H91#^o=Z)Gj2Mzv?_$w4E?pmCKtEJe zsD2?s3MiR~o02AZ)d=9y@y=l$nOsxpSLR79s>VG5A%y(oSc3F5y$;5rgV6tDHrXxczI*3?p zF!$i&S3j{mysgv@6ifA-igNx;dxnISX#q$p_&nfD*Y@=S^Ny3Ru?_28Tldzt2DftmPFa#cWGgRsOv z+XdcHR8$0PN?kn?Nk!e*?(;+h7UtUu(-Q*X_*5fU9|&|cG7{WvHbO$jdritFTCm5D zzgQNke<=$tn3rx$BtiAPX+B^^Ru{6mXV&Z=%d$u-Hqz1-3r2lnTd@xbZvv+yb9$(E z#AgmJN4NGQTvq}1#^zi_N#4pv+MVg{+vKFgOc41nZ`zJ_NHWc9Bz zGaX*pYQW)I2)div6iCqEaZ8;1Tn)3-~aZvu+3`yQI^ zz%H=`NKW@_WOVem9ushF0Exp7PlmTC-{b)|2d8jY!u^0aV@RBUDXnhx?$ZL_wpdLG z+j%hG{f=^{(%c*b(nI|v`G0&^jUcidvzgX{X2Cb_OCX;3aRpZw&5ua4yq-&&oN{ik zQUH><3na$J>&8YQkrL|qg@oZcBoXLeH;3QeWc!=J3H2^?^VRUx;KhA!NyAD7+^>M)wJ8F|5B+(hOfs?;x@95;nj%$F>)iDg*%ylmX5LNnDoHF(R8U>QP z6Rt9!;kF7w>wl3{QkRg%(-u<0*t0;Rjmi(nK*MMC{gA%D?^wC!jgVF1@f2k{YEa1sOs1*Z{A2NjwC zKO-%;WN&PI@7_Hd*a#@aZ^_^I`-}uMI3Qwl?B@02^17|8%yb9Pfr3ux&B+r1L+Qwz zehRhwm5si~hfcl+y@2zS0-Ts1TBcT3%V|1$My957ptSK;f{YWgjz9)+x_NCWZ!N$M z8VM_*EAQ_4IUZ6{=-s}+?oROu?l0hak)NOM*bU5{+y6(_TL4wPeSe@B7f`wpkWfk* z=~e_$knZjfkd`hbBotI6Bn70q1*A))yFnVHyE$(i{Qcj&nRjNc*SX%2^WERQ*IJ)g zYimFOv9+}|f~=}=582EhfFU7ed)**yYM*rxIt|FUQ%ta3Vl?~y2r(4Y zh|Mp)&HfdI-11slqk+Xuj=c}W{j-azXBV-gmu@#h^77}hNqV*Kj z2TbJR5{`^EPQ1dNm8q%o>p2BsA3k(FT>nrp#5b+>&R-qfe$Gd*1+PsXXfEI}!o_O4 z41)ACjr`WGMDPN*sX{OS*DMr#7*JTPvucBfN#LpKkS#2%|ERK7RcfJv>JZzzRDinf z!n^M&mf!&NBvIK{t0vhZW3uXDFKm`EwYB{`Kema90kCd#*i-{wb78gOz^`-TMsfE) z5}<7CExk?M&PwVo^`9ZL`mo(uIA!1h$~S5dvRnsFf$$$WIU zKX_M|)LqNv5N!_0CuB@=TiE=#A`I4(c3=g%1&1eprWV?Pi6toV+0uK=JD(woE5D$3 z+XZ_T4kX1wwHpwQCA239CMwQ6MQboL(W|AU_hF5q6$k)~uwP^y=ZMTnwHfIsx?-Z< zc=ZoQa!Ok8$AW~SqNv!1tnZOq7bz21y?Q0!aBQbCCo7s%05->x5-u?@pEs#Z5RZxF zB6U3?K7S_kd(7K=&{K#C=w4nP(+c*^m?K|13=|QK9vEA+L#NS^Gw*V#gY!%16lG=b zts(;i`d`vNDdoXwW8L8K%celcweTv&RsJyI`1LIhS)PcRRP>atv%um0N~%UkH)4jN z!DW&4Zr%Ar!yk7{Eyp^ArTRK7*_HPUhy+6-<8qDC%GYQ(?jng$qjkOlH_PJ*t{e3a zBVwyoBe~2&LPMgw>SoW+&vmQOv5aqFz|r(tbK^YcvOjR>WV$`^rfS*gB$M*$(HE(? zDNMt{XJU|h1o$pjxVaaciY@nsXj7YD82*H6aR;z*r>EE8O_nxq|KqC0>BbC3>%QiT zjZK2h6Dkz=qCP@;B`r!W+Xj!id4L8h8#7r@cV0NKHOTEVDn84}S-kUV81mf7pmKKh zsXmx0GXoM$&G;rg^WOi3`T#J_Vrq<67ldH?Kw!{3E>Gks16n=+|HU>$n0c``tpbGkSOf1>l zN6=AvfluZ_%m#08VsYISaBu~ib5j%NR+}>rUyF|)8EMQXp&l}nl>Z;+Fh=Wo`h_s! zWm|W`<$xcMgqNI}2u<*U{mI6?H)00Ln&Zyh|0q z-Ljpr3qNNLHe`8;M-Qc<{;9I!FvW($y&XGC%PGg6D=-OGtjW%{HO%LejOmh-G@4x7Xq1L43=7p!M6i zc_Yzu?5o*-HDq(eCFrN4Ws@a{*oWQBE|}vF1pX+2-Hc|~4*Y^vCoKL7glTZAXu5d; zaECyj?vsa${uM*IC9X*%LPAB~iJqWD*dmtu7>5boyi-<&x~l}m1$j{`cjY%Ts&O~Q}HDb zAz-<#{5-BTdSgTU#DtQXF+5K^TT65F3S7EBK;3^80bu#TBbJ@578Usc=>umN`EY*B_bh#Of3qxD{P4a!0zYdWO?oEe48dEksQ9UqOG>j zoHJMrhXwDjlhcSAj}Hkr_JggeV-{CDhL!j$jvCU9_IxQ2IN$#vM!nWhFiCIKLIsC= zpMdIx=|!sh%iX3R^=)}f830#tylKQFL?0lPSJ(Gi{^|*DLEDZJIk{C2DFdudHCBCJ z&nxLi%Nr33{M&?TFQ+y-K;c$?!|ZYwbO0JORdy{ zYfb&dt(xilfyIH1{JAePKnDz%`^>NUK0!e#0sg}T6+%;=*RM@Azh-BHv5-jelRD(3 z>}wbR!NC7jrIqjCMAte#tv4eXk}c!&lilR2vB7 zJ)KI6pELpC@9hxo;f358=om;I-B;nnGoql@-P!eccYCn|*(LWfrorGD2uD+;4%6sRJ&qba00hHBGe|A{^x3D}Sazs(b)hv9FD8`Ol%990T3h^z> z?Y~k;TDq6xtY5uqZ!d~fQetBM9bQr1jVzasJ!_$lpVIc#g_?cQ1G+SzQBqTl8?sxZ z9asD5t_qS=5b+@79OTat5G^hONmi;hP=)w?w(+zj>(JS)Fr(DzD_x-EubvoZRdO+c zJC74z761?DhPLp#xESJ7IUTPyiz6FU(;QSqa+qy(dL&1))#5>ua5;K`7Ny8}9(!9s zu-T1tm<)~xSMTPg^m^0Gu_RxMzHID)d_j$pSLUs!Kx!2*`uzU#dDmK2wmCVTDoI3J zQ_)8HB;x)%94XG{ex~V}nT&Il_5;WIvS9E5v3CX3{=0YYo|B`abUgL(L0l2K$ArLB z>FH7C4FR6rePm@QbC$1*1>frfRwD6V-c7sT zg(2qP-p7a{9Tq;|Yqw22J>7XYpg!zFKPMZ2i|R)sCWg>)Ibt^V{`mE)KvEh?J9tB@ zgG_A4Qe3XM%%~U(Z$Y^A(_n1-gx)IAEgfnZcZ}083W3S-@nS3W_WaMfP6UsA;ZARK z8o-T4rI(-X!`%6vVN$Yi$`5lj^Vd+^vlxA(!JTltGge~WQ%e?EXHi^XEigRE;%_IA zpo=Y~Qf29}Ij?a$T2>bMD+iWnd z%L`z(J3A-iPs-Y;X38_Y?;LNW+&gI~1pUdcmgO8M*j=7Iv3McAi|mfoToz^maWLSu znIG#$c`7pb<$;g3d??ncMAiq7%^zxdU?HG}%I@KtbI!?zb%*W+q+zri_K|P3rRRK~ zRN4G$1;LKHFrdz$iH!qyaLA4sJ%31+!A@?!Xh_7Km3`Wkr+twVIpHQk89k827$R`L z$-2mYcRu`_`vQ@p(8|h+oSdA2L2PI*x1fOi+v9Qkd(1wEW99?>{nnFs z&=yOVSyr|P8%Q*X{V#LJik(#35qWs+BW=8!{PuJH@3G&pO^$SmCT(fAw17PU>Xyb> zbQBF0Ep2VEFy2dqE(qI_v47wyDKe5y9_Cp<8*dKsjuktdYG>BD7T5vwOv$tVI1V^W zG|e>CknwzP`o_?l355dTYIeVhBFuNFiUOPUyh`FhNU`y<+zBHf{*VUTUKuFMd$q2E zS=g~VgAHV>$A7026OErgAE-u8va}UD*zFjP2Bc8Z`~Z&8(v!C4LbIu5H8I$_@)xqj zxO0t*!7_E1O$$O5f!-JI+FfkCTy6U|szra_%&-|Jv<;G<`Vt#k^%5`#9tnjqK(ks7 zDD^YUwITeT|47Krek}GOeJa=}Jx-mXc;Z6rGrT!?gYYAv;JU_6B41V^?{k-}4fdPa zyVT8-<@+815AkMF}JaTsJg;91D$$59YI~Mi;9X6+s%izTjQ$gM>;R~uD^9JU;5hF*(rI}N`zwIEIPCBsp;MQIC3hgnbA>; zk}=S`uCwLo*XfxB!R`Q87tmMipnEkCgN+0tiQbb{!hgEg^|rIaQ#M%JaR0Mt&Es z$Qu#ekai$DR9dN_c0NiJOR_3~tzR6h1%=0MC9rYIFVf+~LdGr5WwAhxzBCX8j}3pl zaU4G7#C{+1Uoq?R?k+T{&>y_IFte}ms5TjTHt5f`nRDXyC07x;dh zqzf35(3o(Ag}A+>KljBz-v|79)!6WJEQqDY2lj!h(9zL(?c&DEZR|M! z`8Q^yh>3cVJ-T+#{e?8_+iq_t&bL!f&_3XuRVKh`161W(oSm%)<27>EU9~4(==v{K zJnF_0gjWbg++=f$QL_@(k><^876^Ls@>FjLB1NHWT@}W z?~hFQ<`nRoK2x|sOMESfWQ6doEvOzXPMq2;ylDuJ^ zxV$UKc@nGE>X~87r+lvNQC0_A!Q;THTw@_)9WHHY%od)UyYY+UFF2PO*b`ZaD_<@u z%R_uqRmB zrH-W1MjAl=@NjeQ|GFRUUp+NCItq5OKp`u7z=lG4Zl>}tvtICmlj;3aXmYSBfnE`8 z5l$BP7q~I{1&K3aUV!Qgok+lx1D6a=C<@}z`Ee!Ai#uFbqzz!#FfMa(s5*hM5$cZr zl+(^2D~fO+`KtJ@YPGuV^~>g{4h!_+N6pVL+qxOpy)I5~V<4%wJ2{c8*5Gt_^jnQw zOxa)rBog)D@vrdatb)k5rG;8dZpV7ca(;!%>p^%~YisgA`U{@}A?2-UJ7$tSHoe*q z>}S>tcRs+2u@sU+jDFufmupShTgToK@66z{6=vL?Ss{ zYMTflKXDYip!lhDE_J$?Xm8t*b`Ny|g!TElc*Gkxc7S#vUuj^?0|FXBF};>nD^<8vN_IQ-0G zWkRy3&-Uao#VR*95oYI4dS#e}f#KuOW_j2nIOlxEpl`~}+iuYbt&kB@&_j2jf7^0w z?5my%nrtyRABqKRdI{HG5dHS+&3LhV;A-~#7Fv+n;=R&2m-Wdz`>1z!BR)6`K*U*1 ziuf|~13=|uxB?QA`+nEXn2k&?D!SSukL+L@9Y|x!Kn?^E0Dwt8^41)Ktd*4&bQfs| zm?pu705+O7_|AdH@~UkQ;sdU?{x(Tuvz_*-*JJiiq{QA?!@j6h4?i+(Y0_|IUCRqv zbd^+m%R5FS-Z|*0PU%ls^TFWvJ{gegg8S7$5;?oL=HSqIIFL5R)%H+ccwi5SJ5e0_ z^9Hu1xdhs^O+my#R*F7GXU=yCnm+d|GqbV5aESK}xCOR!8X+(Z#2@$I>f>Bp^ZmO7 zI#}#$UazUu$lO4Y7#mXu!-gl&nNZLR^T|GYW?^LoEuOd6qRD}KQMBg8M5#{!6qey~ ztKQ*>k?S?E|G>Ennh-(OEKJ(d?jn?5l_I~Y!+V@_23iqu4X_5fA@l-SRexiBeF3eg z@Iv6y`vUb%{337`L6lZim73fH;tmeZt1{GAw89wz%p{+P#bhu{HdYfT$u=GMRaA+% z_9ckb6B*te z`-pPVFLm6)=c!)FINlcp*gZaS{PmOd0WUMh13y3ew;65 zQ+B4$xF|J* ziV1HVG`8-u-a^5}fGyob2DWbUmO4Cebc0#ri7oF703g1Sn_%Cu8p$83zWqn}874b) zU$tJHUOdyFuPeo-=h@kA8HM{V$v7HmC%k>6-Q9;#VkSgVg2z zPmKfi2y-_(+x?dfaM(xc>OFN1cpY=*a|f;_zCv0($VvackuM(v1cKdaoeHr+=RXRK zjZ-!~9UT*3DLOv>f%xUP-2Kwt@VVJrXw}NexS)uMjvg5syHltLofR)`8Bf?#WBc>So(g>gQ*KyH)#e5n;6O74;(){fIFcG>Fv>yOWUY4yM1$@Eur)SND0$$=LPlrqIh5gMB0%*>UQzEqkpeHE%Mh!6ui9cV1PVAK?T z-4@&a&dO%0LUeANn5Lv9g)t;MTg%UI%we=H6xl5|F)%POaNnQ!Hl?PhrXC$FdUc|zZmXni{o!xet?gk#& zj+>OH9*vICQhE!DuUmE&)Z=Tyhoe##lF)Jm;hwu^$WwF%YDBW|T8^zM+-696Z1YgO zfIb4n3v4T-fM__dn9n1!dghl{flYZkC+6Flgel&u1S_#kbgwM1B4zR=;xKc=CFhj2 z@v&78szCiLboKNY$(KBSxq$2CF~SB&TQs1#kPQ$iRL}QqDzdY8<#$%u%AvCzn&R{T ze_n(3%FK1PGYSkE@IG{lwFqI9w16fGU;uU!Zc4{&48j?fW^E<@%a;WoyWu#@P zUb+zcS&hoNx_3#Cp9<(B+Ax8pwkZ7W_V&KUT9D1j`E1^YhH}MqL4Vt>36T6oMk&1T z9i)YZTft+cNRG48Ar7t7K_9@=c;Zy&vG7R>BwO#34t+UU*#j?YP>rAkIJ)lK6z*Mw z&3O;n`${4v+}Z#?F)ya_LnHjm+4K>T7!;j5bn}@0F?n7f=C)h5wHPmUyd8ds_0vmo zD$(N!_TNzVb>Cs_udHUD`5uGNR|ZXXgYPpG5X=-A7F_5X3ypMx8`rZ!QUIPmRAQ-~PLFv3 z4n!5_k)RBUK^b7oKz*&RJ_QFr&DN&Ks_r~luT z%#cqyL==MvEOhw4=62KT8f16x4#lE@HwTU4SIb2kv~Qmk;H1hG^%KuRW}Z_PJ2*@!%sae}tm(Sx`_A39VyBdwY9FMo5fikdi7Gns;}1 z(Rq=>p1=`tKL*`m+HLtRoT$P%*XimVKh9+z`vlixsk0EhGrhgKi{_KV$kkv&frl%% z9|V5?woEhSy&Rs56Q*dv4-G~84J4Ir$YRHgXrOs}aG~HCW{=z&GjKs2o8<$>xx4R& zLo_<>^dt@UySg`nx&}^K;Q@)fKuDQ>*u8=Wr$R&1Y&dV9zHTD2--!iJ%*QFp-iT2U z-l8Jg=ON>3iE5~-Rw@!E`M^&>VIEfc%blC%od#ibXUBdFQ{zl|4J$q(0w#SCIo)Mt z{%P2Ry0HMB$a)S0Cg(Sd#qOc>JJS!7yt(w@mB-ua7XgH4O_DDYEnT&ZILW()(wSK@ ze>N)@93H;4wuZsy8S(LB@91buRFs;I4#j2|03=Hwxqp-(6{WvuTdxtD4n5@2JqWhJ zz)hPZz7@9{E(*bkh5a?jfU3`CaePQaBcZS>?C%ug^t^XboATNPt%jTDBu85;hniD3 z0~$$z+0?Zz!`#V0wH||M6k}^Ut|F9pY0Y_GtV-?{PXypPc#Sn_911%NB!r|eqWVp8 z`wHBD()xC>nKo7N-~>9UHGgJjgQ+4UV+(So&Y zf)OX!in6adhYSQXe47i8sT->~^5Wq)PRrw!1Nhyo~v{L(X`R3+$;Qs^Y2NJ`6c{AwUmwzoK z6-&7sFrX6*J}E{}GXP?_@%AT8y8r!YHs{bA$%Ue&4^~cAUj=3;+fG?uRwQvFCgiQ# zmk<}TKJrea8Uleee-C!z3Ot6^_@=8xy&Xq$viWRRbqB54&VN_b3tbu(GEY8$e7EQ1U(aD#86ay5W4X_~(y-m)FIgKYt>bsV?q9g+08v zX@htGZgQxuA;XMAkdFd87TDm}HO7Ed{jGbXMK!)a>KGs@S@T-?;!n-0SVj!y^KM-4 zY0Vl;65=N7R!#Hx>;vx!T1bQN+zWJ zJ7dVYjgT_QEG#)NE1~iX?^BIHNPy~N(e9UM_5bzpo6u=V8AcDR)|I6&0&xYj0q|Rx zOR=m`-@k|3OntrbLFK=BgI6)JcJQ0GJ|qQ57HCdE(B`wXSp9Q>7LRQs8A;bpq=XRz zW&C?6>P*E2LtZ7q(Lu>Ik$J!kCpi#$12#Hf@mNQM1O=H8gYG!spce!^`|!UD^|)#8 zm|hO2XwD}YvxU)NX*ec66mmvK=lC{Cx&;6F{_(UkW5+$`sfXeYFkR#qlR;#hiFrj@5=_3-Q8wKW1& zW|T+8U#5t3En;wY848593xur&MK?*in^#>tos-2H8*W+NLXN$YU_riplzBA#rmUs1 zu(0hLWKgk_kvD~}3VQICUz3hxQXzJee6vho)s`hv25D<=hY=I4hdi z@cgBbGem}o>MguMNphr(5)}V}r3=p-t!D7#G9WW*F3^TzvjVyuIimKfD!HOX%;OU) z*gcefezLoLI#GrQ_AHdR2Mv6VKg*}V{S70?NKTGR%&SEf2jvhSSFxCF4#5G!Ss zg4J;)qeHyL12dNNFk#V25DWFmq%@#A@v%XpuNr?T-_PyIgc&3o2Bm_ZYIta<#ia{C z0Tw2vgs9#dfDS*V?|F_Qq$Av>p0NFJ}rq^)Xmm!+M~3q^Oo_ixV;n{Y9ih30%=zqiF!Gj>LU-_!>WoS4~K0G%zrzdYC(_ZrUC%u&k= z@jOpDL-6ToKly1}i1xEB->Sj`9sf-T}N`#A0%D;YH_KX%kSVAyK zjqw~X(U+DfGHyM=!!6s(1-m+)!59UffLkp*$BKWR3owUP{n#<-uUnK99ku3dtMRoM zVPOi{R0rMx1?4?l)PAGcmzOo{r^~~ub$R5Pnl-?2vP;wL%^*upF!OTMNroVp1nfpim zm-!9hlSytmepDCjYnyvjG9`XTleY!=eoDF!CHs-ouPolBa8Erdus!rXHrsk9KJt)w z^3=+yF0{2qED3O8osZALJfcn}|7^1>*cOWe-}{z9#sD;$2qr-518>}i9)i76Emnjg zcY<7-k5QKaN9K@ac$;y>#7P7S%7dV49@jt8BX5{}z9s3x8kMu~9rrwlUd-0Ycap3v zZd$_@ZZ`=s&T)+Y^-~%Du!f$ic514xQUoL@F$}$-A z4`d|{Rbg5bLOV+Yp7lrsz{JLc@o0F1!M4|F$-pWLJ3G#}x<dg2Wa)U(w@HPT|sQ-EFD^T@amo<938)oCM*4Qb7 zokEkzC-WZH4L7D$kkD>wa&FZi9;<{pF%5_R{QQGuu3GNp<{D60c-`(WHkQwJ8oG#= zK9Owiv{6Y_cgI)mJ*|Zs!QiZ1gN3M%`SdB#+X`K*`kL>bhy7B@HzC}%mZ%^IIts4E z=_mc+ctIc0ZW3Zgk};4qu<9h3Fyr>=8R6`0l;pr_ z=tllXwYr4iiND{X;Hq`Zbv}LDR#!{fa~%~|Ew1ZAX{0Q4%U+!1VU*Wp1-!Plnl6sl zh>IgBO0vK&M26R6wqCr47K!)wunRn%$XjJ5HWq4(%+(3vPfssKbqJ?uQl(?dttXl9YecVjMq+)6(HBb8UK`hFx$5 z5y;csRl9vxA)5D)V)vqWQ9Al0wrpn_O-)W8x5wcc_4N^9zm4)E@4nYWc>&6@Z^fH9 zc(-5v**?y-^9Mcm<_M&W4y{DuubUOLrgR@_!ZqD=Y9NY5? z#M8l-jEuB_k8yR)dv5DqfB($PtQDm80D$63DrRPZy>#&45;v0#efy-lfAe-~R2jDR z!+V1Sc6wouh+DjppVB{p@wR)z6Y=)o)U+;QvKQ;3<^H>~yq-vw=#pZ8LM)gXH_}xz z__}QBGO;%R<&ng?vycx3>2)9)#T53=*O~6tF)>9gEG>ZoBqeHUU|>L7Ia^g#b#ZniC6tq5^c>Rz zSy0t$AYagXkqT2YZ*ik_8*CKg=~rJHW-8#%zLV{@qLCi_PA9JW=K0;YuXTJCBW6E% zpEg3&{z+f|xA{tKzn%bZ6T7653xyHv`LtQT>nI%f=4>96(^ftPBUGPAQAs6*DRGj> zhb_yXJssS7K&{q4s1-2IQ(N=M%F1dtE8*ec$r}3G4D}~&0=&LYw1HU)KBgK`IaS9S zNtAlq&4G7hI?{>nbH=0d@X$~_AoyKhUk|aT0yxA>Gq@|k1`;7BZJ=gUURGAHGq?ia z)X`m?x-Vb9KEMz5N4}v?&uD*N^#ne>1=gC@APW0K_4#-y7{K&-7OmWh~O=@+>y1DNjp%FfTw08bg!vRO}%dsZG_@$GCn$B zxmh78n#fBorz3*fYPn$XYud{uXMccW2@1IvwV zKjiZntcyc0UTfiV2<&tykC+;5vB4G+@*M+4HZ&7N(AfNRv7fIAeS&3&FLdhkKp}kUrBwIB8{osD$^FVn2oQ9 z@84GZc_^o>M+`AQx^%d|&!SzvZl!+~`xN2_cL_w0ho-lE4qyx?l+ZwxNrm})3d-JG zEXpa%F;3hJo&SN>(Q%6g>%#|TODlmeAxqw*mGyN;eiH!!=}1e-S9vT9@2ETnt;=7# zOysJGKTFoBEzHeTN;M> z(vgk~87?WzWm$2J8`TH za2_x)TYdf)6>dXR*fBNkN&bcA_=InGG|no6eU!ua<(%|&Qk;A@)RDVYK|k!6aHn_$ zb{m499eKlCZpGK@)dd_TTL0ag-Eqy%$+>ZM+e4T#qJ401kdVK{fCE?jc(RbHdP+}U zKPgD*8VY{M^Q55WLSHp2bt=KZad3`J?7Pf(xj+vLO#KP7RUPEgPBhhgt`oKUA*o6? z|21NV$|gD#v76cPI;F&MIZ-6Q!7Zt2XFpx`TvZ%hb}VsaeX{tqRp#-QVu@Qp-!FR# zpTK$kxFO3Dts^qz%K?CJ|Ep<o{N{huJe^le%I~LWOITT7IAZ)1nyRJKuCxuE1W=mai>AhZPtR&ijAA4sqeXQZXwLN-4<`VOON zNTmd4>I`Z`Up#4k#HwEPL)&jcI*K8M)|YcD*4(a*)4cjZBpHK-Ytu}_UXaGb=8e;6 zL(#103GMiUXwjecTXzWv6kjlg-9pH(O|ar&dqZ-ECKxwJo^3_GP~&B`$`j8Jw@uNo ztvgpMWer-Ec}k2LaFAjKLS$1=#zggNG0FncS(d1xqC%U6IHLW_c8K3sF7q(zv+Iv; z8$E2^pYmSl3WN>ddcGF=6;s$=o`Z#X3`QD>xh~)(W9;z3gud9=*dOdxYn$nJ9bXD* zlT|J9hdp(uu%4>2=^_i8hm(Lo!fK=uRenI{zb`;Bad4X8ad*?k$Qx#MZ^pLc6t^x3VN*T$@O{R0*M z>fn&RlkTDoCY{@w&T6wxmaEMhZgoLUd8WjO!Y_qMN7D#u0rC&cWs@g)edl(`m6Zau z$+Li%BzZ2^+z|Ni-t^+-GN1%qb^0U^_!Fwm><7V3#q0S~Vg&F7p0VOB1!8E9Ins43 zT7Sf)q1BXZ`HaTIH0?Q$m5gyBJ$LC@q?zacQTl_~MYPXnHA`-8#>r*7+_P}RAO7y6 zzkrWZ&A4Qb`f;}#iyzMX7arTi9p1sw8TD$S_V!t}N+j6_*;F_8`KRNrT?_hFCTwGR z?(lK*=4a-mwf&23wn@eztuQyE^nUS{Yn@!pn~E0&#Bgs%jYlMtD#SY7f{e=9Z#z1t z4i^Iwks-A#rP^Fr+Ix;SBHG@pF4t@43|atoUp;NA{R0cmK}ijU(s?N@Eix{*;*n)M zZWNA0&IpE7q$%w^+uMM^j2B<;4GzDBVGwz}boH)nCP4smuysyu@HySD3SK49R~V*C zXY}P<16ayOwXt?2aa1?)tn)|QS7qu1Wop*XvfU9W8~V?HjbiC=ubD<~+nTAX%g<-i ztDJ@N0uhLBcjx!#JN=Eet)^>)w4!_0Xw;H(NHY@0cCA4@=~YE}^!pAkpN^1M17zd~ z4LnR^2w8uNi!U#|VadhC5uS?KDr;V%9?Fc-1satO1${7krdr2a{T59m8P=;68FY9h zwRhCWD$?2zUq}zftUAhHm2R-fw(ZKgy(BOaM^7SM+A%)X#ir!1-@+&D)GZk3Yi)hJ z6^&|lCvdFzHFFZ_VKvWHVDm%ueEDL`Hid=3ykj^oe0T^?+*-{lsR^%C(VjNNy#d0I zf$$?_?v2aMeO?h52-9W*KqS6NPaIlOO#d$qIo-s->WSr9Ltg2mZCgX9a;;rONvYUv z&n!6yh5Ex0o1TDI1I8AGRb@ZXNiN`i$L6u%oZANPE0^x*xU9@+W-#3HSd?byZjTmK z@LZnse8Ai~aO0lpRX+#u$uTe;Fs0CD;S8B3`n-cy5T534&a)LyYhPR9&xAD>qBuA@ zx@=sIL5@X!IVF|MNe-xSptvs1Y7r;=kESShVR30`OL$*lfhtHk9tOlg#A(jc&+0o) z*um;R)l0i!5g1v1ws@B(P9QAxhIrXvTC_#V5tR9F@C++D7NhYGo3@G}iw?3ylF9b= zZU=YEjaRrDYHIfC9&48Xv90Ub@;lNy*f3jxtzgh%WfC$0=et0^+CLZ_zu*4bn@cpv zy-Co)@dTRp$)pbl=&w<~Hu;`W(olN?z~jd`dh{O^W7c|QmXW^y(ZapXfUb$FZu_!x z+?m7TimI*p6WsWVl5z6*pye4ViiC~SJI8Lv41xsG?nt@w+4GmS`4>keRrpER4YHJmGyZ7{;?bbLCx(#e?=Nt~ zps0r(0fiR2#`8H(*magRHnq!%9{y}M|0Mm=9Gm@5o|OGAz(kf#j-ieJVEmO$zT)2NX#do1QXC&IUg>G5d1qRrarBX6lU^7(1qERhG0HQhB8|?6 zm`IL>L;4n?vf^y3ZszFI41;_kaKEz`fD-4LZ(Yj?iF&p_r2VExEc_zwK1%zb>((5c zByxAHv!9#wIS-5W|C7|stVGLqT4kr~>(Z!lIDLCF3Y~+@742Q(mfhv<;861`#k3!1 zZ{~!ULpEWp=WlmN!+rv5a!M?bqYd0dBQ|WoZCi7oR!X2=F#J^LKY!DQa6doJBE$dd8$(B04Yk9}T9~OExhs+fD?>RVG z+HrZ9i@A&6e^Z|aTl@3NNK9|svwIxzeyptf#?~Gmp4J^TK|yzpTCK|lB|t4joe_+x zDJy%mo=cX3Du>d@p(of{x3RTX zHPlwInY4FbfEj})aVgNSG&56UcS3!SGAn0oYfFASJsi4*O*=}SPq0Y>YG8*!(>!s= z+KdfDexIawxXJVIWC&gmA%-w(o^p1X0KEYG!ibL?d> zpS+cXmigqOPd>*_lbY;PN=kZW|M1&D1?^S?sODBa9`$p839|97e>Z|=TCG^;wa1&eaKqSF=>@;RTU zsyk^V51tM+9n-CLQCDGkzW+41o&!^M5sF5RSH4Z9x6Me+t`q{TxFPrL`fKAl8<}G| zjL~}+L&v(X%TC%mnnW1{QSZNe13t^gA_!q1a5iJ6D*mn~-Q&cBm7!=0=(#*CCs4~) zfpd&gUb@ahc8dnK+n2O7P$2G%k2tcFK=(hHLY2&l6oCY@JnU*GQBH zsUuyi)3154Q6u*M&kKMTJc|~xX;Gklp8ohvvt7z7H{Qd1*R!LoIsoIFmCK0`ae4Xp zlJ@&1Cw0`-UEuahfVnJ7%^V%YNF2)scDnkWS?{&<#3yf-E0f7_UT^SE+QN8`kJK#8 zZYPUN3DwReEO9?{DZ%qu-&O6W^Iw>G;ZjUi!Gbb*)9C0N9cy6W>B&S9j)KmOBCo08P~dG-4E{W zZvKKw9Rp26QKsqBua`H*`r9K)U~~Xie_tDxfy(b^@;#lM@xlUYht{iu)te@osF3|o zNV&GLiBM{(%}w8t2;+Ho0xbgD4a@zx&rVR&TI2oqhQgzLvy*+Z@6U==L#mTB;*%JN z+PqBBvokY~`-XD#Pg~fH^k(6*n<*IKL?JUL0v(YST=CTR&%?1%ILHKkZhi|kq^u!Z za`fZ)3y79QQ)y=)>5_ZX=Wo|nuI2WO;U4hb)^^Z;EiV0n`c~e_dDk%Dk*BBOXtz1+ z6mGW8W&2w+0S*FFEoNnGEX){n0aV_b!SiiiVPEN|Bk_Cg_|vwsCsdH`=h^jt?5>Y4X@v^CBAkKq$0y=4hYyCRF*HhE4Xmr9>BJc z)CouL;P1|vxonEa!Jx8j-Nj+c^dBnUYbc~16naP5Tw+wtqp&@O*P?fB)ff4j(rK3q zSG$)TlGJguEMoPH24N^il65uQK;sW9(acM3ER*UoBhxn^rB^wPYU6nEr#-;b6b{FV z60!mtwsLwzZTj*-jnj7h8|e@9E2pz}tzX{Ka!zV$sCc6H!$L80)h1ddDuQ4m9iEf} zS$n-9?o5=$se%ORNsKsj9W}S=<=cR4vEe}UdlAaC#-Gr7tHTgRwdKgqUr>RJV)+Ve z>|Z(niNv@Z0PPDne%bEFluboPno1VH(&Ti&{E#cWu+c7>sdaxUr8bzqaabn@4@M}Q6%OJpJ;?R~=r@u~u$yRun{~}uxw$SC{t>XN<*abqj=&sR@k=IbM zO`o(K(+8R_%gpGUZ3$V0d?Y2l*&*#rm#%8psS!0*b_R?KXH-#cv(c)j(}86&#&ee7 zn+e(1d_S@iGyx<03^nfT6}g8Nfi6C+rk>t(6l;&*Dci55fo;t#{{e)kWYyVqT_iM9eXkw68}?(Uqm$LZ zh3ad+)~n9|5bb%nZh?My4{O7@w@&4b4P<1xTxv^3EWXni3kG^y zZm!D4iFXNF@``DxyA-AcEPaMcZgL{!Zh7v>SA4r=?4I5;3rx$dh3;L%nDEuw`wqT? zi)@-Aq|?NssefXL8^p#pL__q#!lg+wHF<1xb7YyH~NWkK8qH z4?GPhj-}KK!pKXk&EN$;UO>ZBbARgdoRN>__yOfW*u^ zWHY+MYfb>v>?uZ;?S!?|+j>%zEi$+R4d0@E8d-C4vKNdlXG^^pon(uiSS;4e3vf6& z#Z7v}_NC)xiOKjv3>%PN5lghU7ac@-H)J%mq(jH7xckkTfbHlAn?+iMeTx?0CFPzu zu8S#27?GZDCr@zL@&E+}=P}TbiH9uE6yj6ACI}z{u8@%q64}m;ZJ~81WAlN1!`ek$1N76P})Gg_t^Wu=g;OZT;bk|FW6XFm{X4^ z`E!&~XH!Yf!+_RRsD|aK=Z6-@<|*|pUc?D&X#qqYh=os#?|W@krIbhc&<1r`iu8@G zo_)iq8U%6bLJm>|5F{3HhNtB-E>gAcLC3%Bs#8i!p?bKl`woW+m@~+rvomtcs@dX| z@uG{y1%0GUzmbh007#XP1Y@EK6DVRp7SX)cM>wj?>nn&hngkK3U_N@7P`Q56a7nq@ zs_>K8GesEDcQT;Cd3i3&3Iwe8O7c7ZSAyCA9pPwxS_w%IM_og z(W2&l-m#EoGq%oV2@>@83AfLFP}4|6Ma-YkVKH-ImYA-o)g5hks=i4!xmr5kLH}NS z6wEECR{x=-V3R_dRwaSZqz8=}+e#xtU3Jxj1w&@bGA_fNzas9*CxvLJ?f%UvxE({D zpPxSs0sgHuDC)-jd>Wby$%eFnG?A|pM9BAso}t2yQX3pbeR@+I4i=|B3KLJPf?<%M zOL%!B`Vm$DedH6}yC)bRkf5Z3vuj?W*Id6jbYgMt#*fk`g|-)v1uq9XfN z_fJUi=4P7S#V%@_d;`j2pX)V}ufSH$R?(OET3vlLDicD&Am8Ja>nP`L!jvE^;RnO; zjf;K*4nji0ZF5(-j1m}+m!;Cb16p0ifIvd`_L@+FT!I`l%O)ly=qe~E=;_&Tkb*Eq z(`>-eo3;{NE1`c|wWPryGe1B5HQfI=VA@1D?-J*a8_|xun;;>96+hTB=e7@tQyX|R z;nuRl!^7<(QG8}#kzY3uJS^fqF9c^qUVJUJy(tRqI~O~PspM%_y1=i&tL%A9C$fIm zgJ)HqIyQmIN$X<;BrFQ`W_cvb$O6;-JHh{^<)PdRfU_itOg09G)~7unc6bsr&5DsN zk35T+^SC8NM25{1Ix`3Pr;#?}MDwxCJ%2_S8RJZ(IT|^8X@wi}ffUmPQ`FxbSC}ic z;q38;!>{4n+42&fGi=_9xEJ&_dIdw4er)*ztDX^U5YJYfv{;D!8hZQs@Ja&>0q-Wr zEt78_xC%pAU{ti?R0WoS8a*n0=JQwmt8hgtQd?`exoJ_Pv2qd?hFzw0*KJ4fQ%UiK zBc=B1CCMX$ZSIm6EMC}eZjfGptl~3zE=DplKUX}Cvn=mXESy9%k29(0Yf1-q=bY~k zAWr((y+4)8x@?Z?Dl12nf&8wEu zVm2+p^b%WA%qC2s)(wXQe(%W*he|-i6S8qP(aKWFhli)S>~(;Y0KPs=x(s--!loiy zLVi#6CI3Tf$SLp%A~A`fPJ=N(XtJ0iBO|an;?KOjYt?d8843MAg8Lz&ePPEHya3|K z-x&P5@A>y?!URoj^K~b|j*gBS84^k~b!MunL{rhIpI*-B!`$qO2`_?nZ;*^-F=f(} z^3<3kr6(pPR&{~whZ&l6mEgXrtxc@M0MA9FG*I6yMqq~tmcdjOm|JhcNF41Qa6k8( zuFnBXZun4~S83`WxdUk2K`rVR*|n$NN4i9Qj&x6vlAS04Fc-=RT_Tj&p}G0&KPX+H zO0TWYnsfDPky4uU ziXLQ6y;RQK1smYE9eWZ%gGgyG`ahuw%Kh3tLs9OZ5SD(7{4WxFqGLVzTRefhwpS@j zrC>x|Rdol;g_RhiYn6%c_RQ0tmStMW3UIr}z+|ER@GzV*%_~EeUk_T&&|lb9u@`9< z?)S|fem&-aQL>&lsI}uvyNIpIv}*L^x6(kUHhI`*!huBv zKj_3p8fV|#3wF$wE`LII=HGCv2paFlC%*tC0fFJ!vu4JE6@e-`X`5yk@UF_4+uI8% z#uDf;KH49*-eeeOYc+kqO-eZg`n;3&vgkz;VhrTtZ>(?~Z5Bh4JJaLPCVmJi{%~dW z6?OYR3lT0MqzirEvPNTXOF`-V^P(fEx!u9x3o@E#D6nOii!XX%Ebd0fBB=``Sh%~y zZ&R%|1NsDF*DZsBB&qFcP8lfs=>A`+U-xn6+15v=ywr*vSR`orqL!1E;0Fe!7Nc2Z z7zf&Ba6EUW08Z66cLR<#CZr~ANa<02px?7XEk9Px8G=86+ob$);e-!a!n_$jwloDs zxayQ-|0y~R{3U$cFZ5yR2~h6=T4H$M;ZSh*XqYdL2K+7lE2TOF>FTg7Y+4&W@{Z)- z1rN(vYR81Mr9<;rdnOU}Lm|O*(rU zEGVx*F*^5y9)b_)n@Y$D|L=)4{PNe4-@+)yFa|1i5LZ5UvNdr4r=UJKJf1u3hxY$a z_LX5(g-f{GMnOO@HX)%%2uOFM64D*gNGsi~w16O~ARr~uNH^jpM7kTKB&9p=Y}9kk z{c(TX^}|Pa*s#8}=9}-Gcix%7?hvVmRIzZ`NXa-OdCKC_;BM5ZUJF6yfBov!1YRe+ zqb^U}q+Zjbv(;c@g$d>$XX^;cQqTTXQ0y97QdKoNwbr5ba$d_l_p>kxa{W2!%9#(d z#ThycV9%Y?uU72XfRAj7K%dMGHR&{#_cRlN*2?ydwfI0n+}7H$No2V+l3m;Qf&ntZ zt}^N{L3R#@hj7J>OtJ?__P+1-!i$m`j&-|?>ka}6YW^2d`VHumd9`zC$<8+hXf=L$&mnd=f8c7OST3IpwKa;Xx6*5rf< z#sUe(#1fqB0^_U#sZSuBD_-0J8xsBwA;|;y(l~73 zxAna=v%i8rVe;PdG_5752lZ6O=NRN%-TOJrc$TtOqhGy#CgmLI3raVM&mEQ>H+BmP zwT+?6=WBNKLEg8xmAL++srH#az@|yULuyGu-G?%?zeSe(h{_Xd98(VV6B20ENDR3J zlbkO3x#!i)X0d$F?fT4!-|f(MUFrJhwdf48RA8l6hK>s8+xZXn7cDB+8WxSl+(A?< z!WnG|?r}+IDNwH!tpbia|`49FtuUOLATc%ZB*Yo;;d$V1;P6g9TUzFcD67-VBn4 zQ%{aahZf>uCNBe2$IrjmZTMQPvZvIf{dq({ft>}l_3t?+rU#3Vmec!trdTDK~Wkcc`G+EMuCJ59jHa0k3 z_q8hOYJFr+P{n)gzN4q{*VlHw1R2}|E*LKF(6KRSkGQ$5U9r7AoaPl2AqG9NY&O<^ zwZ#SI86su)w-j3hRDHhll{*)qMI%Y80lLCs3H{mp)pjQzNSoBuKCi*F4fKixWiQKM zY419<1O`%EFgZCMPZC$q*E-X1j{jzh6)}p@UBv{0Q}|_fWNK<*_!@wBfLvcsHy>au zi64KGinf>Ut{3IHNzLIkaPnt7g+?K$ED!)WDt+_wMCCSV2eY#hzZOn}B3Cr(!2}=> zSfA8Azv*0+*Eu0L+Rs2V&c(jOXg=3K=u$wbQl{G=Ur6lxto#?jq3*^>5HHgqYOgy! zy^`a>y;@^AMMVuoMM(^&FtUv+G{1p@DtYdtJa->KMh+n6I)|-(@B0M5_P=9)cE#mG zCM11Fg7$g7+z}VrKh&hqw{DrK<&>k2?r!)BW?y3n|Ng2H(eF@W&s0j6--}Dx(-Hm- zIbG+Eis?6_BGEzxPICzA7wyW0%Xlq|J~|nk8iVKc2gnJHzF< z+Q0x;Zf?J-Q@ZeV(ar{ErO1ZES0o>Ug~`oGO73yz?X?Wk!e%j<8aCFX=<5i*DM(=@ zN+2X5@3%7_ z`7=mK+m}HotR^j;fYM!DE>_FNLNU^T48}FB<2)mZ5y0@AV@Y%GtmW#90EoWbSDoYD zX#KX~B+1T%zzPChR_-PHG6=R?O+m&10l0Xj$)D$fOr316Z#66sNhYu>(+zk8`A|q* zaVKIDFz}xoZXgW-Os6XnMxRZQr;%dhiECqQ^}YLCj2N|iN+L*sdFU{z(%lsHZ+a$A zeVwMuV%O>^3uLJ?XqJU!Mh9>G)zrMoIQwxj3>k05vC&-a(Hx${x2^IBAK0g}&=hqw z78!K2U6U7&m8oU8$HpJ`)d-q#ha5|EWgX)UDRX3iuK$x%5!9^PUJt|Lf=X7&C6}?j zQ7McG&Nd5Pa&O&t5HgNa)?uNRMhc7|IJCulJteZQ`0&pnr^V_!RwHN>q~m#MY;S}n z^_a3<{q7sG;2UF5GTduw*TK}e%?N5fTdBZ$JjyhQ#*Q_)Y*KQxWvhVvTvif3zYxW*0tfiwl(NJsu{>$5Ch$rkAIc_Ec3FIIU0gF99zImuaNSLx6o3 z4d-7d(~{R27Im?LegVQxNY4QqHDb>3Tc(9ED8H}}t+Q&daP!rLa32m-8DarxBP(K{ zBNH{+@}2{Jv+PWo9%nm!8iH7%_OIk%^~EJ69Bgd$jI@fz?__pF{BiDpIL5DO9=^XZ zm8>ps-?=K@*B1hYN&A2w#bGlU!sIhre7$z48g6gn4tz zp||V()0LOgvnb5rA$&XCj+lSnA-+5mjQl&c5rg$xon-*U?`e+rGz3W>RiNQs`h+!D zJC#)bV8LBdf(7~MKv5p17DVcknPHNFevocJBI|7k&SM}+ZPA@xAkLFJFZ0s}mM}($ z<@?>`9H76>bAZcjxxL;bCJujxVvBUeCm3H;>0FsPEu{$QqMoF>UJVeW6=!Rt0c=#u{v(B^*45qLwv)FLTqk*h++MEnHUXR+&tq8AX!uZ$J1?e`Lz zJ-Q=DDU1po0+JX!0a{6hzLMiZ19V^i^7RUE(c`>(`*%1(gzqrq6b|ERV_Zd1Co5-~ z?DtKrMMOvYnPx3UQ-PVe4wb?dW8~1#)+T+Crkk$#ql6oqd-NGIgdN>eP{Z#yLqy%#8aJWWQ|4Fs&0V-M{2Yy~BaKg6X&?~peaBpyKVf6haeVM6K_y+@6{r6C z+3)1->6#`bHqoq;<~dJ+YA3A@?F4r#-E8Gp7|SF}4V@s-A{{ste1yMPjPs8JhEjl- zn(>R`{a(`|R*~l=!zKs1KEk!R1f>?A!=T({?`A!q{%qxLJGz^g3Cr+P?)8tXV}&j` z^2RSMJs&DjO_ZIUorO@`855efi(VoPk*4{>MqFm`6i?V);7Is>&4?6%R7o%imm%)rU6v?;QPJZmO&ic)zpb-FFW0s?=pcQ#cxz?T`dpzboZruDBk})H`g(5%SzKcYv8tL2ikjBHB1=oU`L@*J>%-A(`9ng zqH-vS;o(`RTL3{PxLnO29Mmn*P%Bc$K|#V*Ufno#xza3MF{6J`frUvDLygN#X#V$w z%(g>bMF&>R&Mw)22~g{TI12^8f^lt0UlR25Jr`3{CgMS&^?=5&Jw zMaNZ0&(XV1j|mSI`r{qe+CLWO4`T1Yz(=v<^M}~zy>lJ3*rkmASjR{{UEIFcP08KN|uXD&Ph5T4^ zl2piWY<54xfu_2xN@u=?QimGow12r1kx&0uNc#=b=S%9pkodKe4{2M%w&YBe6`e_o z{;9(4TnMvg=gi-Hn0L+{5lA!B+g?tN6{FCjGy<{ES4LxuchyYTIOwDsTo|nDb*q_= zOC~=cKjFQHEW|TI!`F`-m+pV1ro;wi3(;o5>{KO;)@v|pX&g=zJL^zryir`e^ z5p)tJo?xt27|?`!>5Z-9sC#R`-*b^U!<$KWI$+{oh!XR25Xu4i>91)0;Ko*77iD9_XX`I5<1bo|cA%R3a0yM9p zH-B?d+zfn+^p&GnP#{)|;5T<)=p%)I%3Y?+(VGyOiNHb50?RP%-qPWcc*KK=ja*ZT8{EH6zkLDtRw0 zHZ5*@pm1buAmeOjq|IxYN~_yjJI4-IWkGn|=1R(1wrS;iMxltfxL^Q2DOo|An=mr( zGX5h_Xy6uo9bx>(HDEw`mW4}#;+q2kAwuw9fhL@ZOc-(`NCt>&0k=x0!3O%#-VWk+ zZ(Ov)=9Z!iZ=53c7EA4d4&aHj7rNYz^4H?@QP|zuyzu{asC6)6?w~+a3*)1Jo70Px z#z#G7W{nRz7elmdJp$8RI*MT2G5%j+PG~;7bv)s3)1LG9Y-)nhYDV-`i>}MqImtX} z?B&qc;%!2QGJiCV(Sd8R4G1y}!}Vu{1n9sQA$H!|SGO`xmChR%%6&4%^MLAE++vl) zI%|E^y|7{1+S@C{qoX3rtP%5v=yVocqEapO)pPay|Fi)4IoY=YCVH53Um3slZWWW6 z1qZy*E^wC#cK(9&-ASOR34cq%u7ZZ2YPRSzEMKDT*`l>Pvwk54t$;I>XvO@o8@ z28Pr!O=nB}Qt?+T^3$ca)4q*Cn6vE`97xc+D35pK9lDI)K(7N0buI@?$g27hK--1B zj!?3SbAr>LIa9kRkag;$#je9sB!)?X7N(})6_5?!!V~&$_g;ti;!hTvqeb-xIuU|Q zsg5qsDIOjVeDMGe6#(VQ?2o@OhZpc4!FIoRsnZUL2owJw$p%du2b1L0SRxYr?cbv= z`#mPY-|f9>8CYF^FZA}ipA7k6&h8+C&nlhn2F5FJwl;WQP6D$H;orw7)Adx0dK(YC zI-l+QT=4i#`36~hWKdcnT)Yh3d+`rgFDqoNw} zv6`8oe(P`;ig_%?_76!DccG6>$+9rumCI=Pv;pT8=z}?IPKfd!3LG6j+ZX> zONM4D6H6wm$q# zuy&%R-M_lioGbF-4wiEhRrbpwbfcz!$f8>4R;e&WfnMk~vQr%TB*A7dg=%nGTC=XY zfD)?&*Vj=fM7ki|O_uNi7zhAbL-fz+X!sxTfIRVX{VBnd6#K* zSyu}Bn>2Vg|D2PaDMD$mA`?h|fFss{&>lFnSJ<+nS{h@_} z>y#K26nsnN8$LhOo0*+kX+3ecm#G4!w9a;8hfYr2=$@$_O(mq$jaXP%)K3hr3HNcZ z^$PR}VsN=FY%b;=9mD6+Wa6U4C~Rii!A_3XSKK&;Mo+fl=Qn@0dz1-dsBImsB=FmD z&mqP~Pd7{hJ%z6*H9dW>0YQ`jglc;wX#1+%+7mdoGNX=qa07uG5VUFA>3#YAdjcrG zg6oPVI!lH4>Ifbmk;2VITR=CoSz0yde3Ux3@+1MJHHOu zGy4OVFRi0;e97to+7J*T$le*_qhd5>AeIWq^fNu$q8+~K`|{{u z67Fmk$Gpz+@R+?YZ?)lIVLj(Ss(Tz=5rAT`pIhTK+xsip!zC~kfDMb%}-$kaiKH=?6lnPP`h> z_zp_AV?7*bipye8+N(}WL_Iy_VP4~Y&wRr35wVbHkClpzU#&*>!oW?{xb64!X7=ya z-(OZLiC#HT3-idyWzk!8$fxKxE>=BF z0i;TH?qLi`mW64CN7hS{_E>@3<1fBuD!CWqtkJGbY^~+}fk*GU!NG)+w`)mtqVCL& z8LWhxk#RLVn8+=>TJG|aJTYs<={d(Z_V2($Aie|~5kaaAT{Zp}hp?9Y06!v&f+ClY zVXaStdhuKPGk(W;Q(q%<>Y^`S-tju(8wpNCQYzCdkEtnK-*HB-I4M8-SsA4YLDTmX zGzXM>a?IxZmCDyiSN(zn1ztkks>;+3Qu|{gn0vM5v8x6xl-7VEtY73EG9Cp&J@i)~ zAaW;X#X=-YzTrGreMR++ii&-+u>2C=sn!jWAS5MKEu(~zsxLz=(NTe#QRqoEDh8rQ zNdw)HMfB717lL}kXOzBfJ`1$O5ygqM3`~+Y+CP-RiIm!yTeGe1iXH<3e|QJ}a8C6G zX$}3q3=(ANU=BSVuxU_s1Nl%0?%s+ip5|1&AKWKzXpj5E31z})#Tv^`sQ(0P#xq_M zS{O$5W^C?gH99Rx?8_<$Bs{u5>eQ20-$rk`P+O2YHpyTy>}`8(>PSsZ!Sdf&_IYWy zU17Btb9MFvNQ%Dh&fdNg!YLAi9NWqzC;jRBH+Kqq)^q7PMbxNyZcdIpcibTXkeSMv z7wBk&(6>{%yciAAN+NqCFp6e_Gt`Y`0!8ol{b3cs zErA>Lm1qAVN5C_;W+1`o>0_beeD?Zh0Xm{x&4TjZTq{g_)Ve zH~aLK{}=0NwRvj8q2vA7`oMU;4GM7KL%)W%Af{9rS0Y|0Fon#I5FQ-wlkZt}PBIMO z)%E9S-ShsyZ@0gh-VJ_lOG*kQ;^!46MzIN1uw?N*phXtcBYtjjTFC>YXL-8gZ*%nv z)Nx2S1x5EKIp4(db`Clv6|flV^cxmI8Jq^l(w&q*;!j8jj3{vF`(}WoTDSi`SHF(s*w1Fl2Y$LTfr5VvO~y z@X?9OFneMKtjlv6$u25^0a6=cduNKpRW}bB;Bpf+w1C)VcriK(!n{T+-Ln-GMJn0{IbH}Q5+|+dzNuJWasO7X>uWN&< zz9bB)iLDT}9)UhfaEjeyw`3Byr7%q3oT{&9N&d|tsSmdSmOZIW4Ns%)DM)%6tv>V< zQ4&-p728iQ@>ZGPk2jXcC#%UlrEPAyJOV1vA5d{N&w9{oH3A8VZxMvXx@v=vyUHQv zXLX(2wL)c%-Z#>%svE+rk2QZYjqkybT1(w#92<)&lk)<&22aEx9_o7QRUSQOPG8wRk3H5%IA<^2 zUWKC`lWk{nUSU&bxpL2n0qx~Q?t+jT6o#(vk-rowJ0}m$gB0s-0;m~+bdk=)lpJX7 zr{)9qC(m!34I=)}_7BB?-25Q{)CxnSnUMin{J>U_{OMnh?)%f$h>+9Csk0C37brC|hT%J^@fv@uUH?U@qdCI=WhiN@$Uo*V27p5ORAl!-N%%U;{HEZd^To1!2Nvv>bcSc04HbP zot`hpBa7T(sPI}JI~rTAs?Rkvz;6nj1l2lWZ{*B0s5pb2Zi7w+L+y+8y(6gQ`_6HZ z=6+b+L*qG+}6=A3|9}*>(zwW~u@{pZXMDzy2x+@5>T($G&!qtR8a-Jc&!wf}kX8 z|9IyfUQ?KbfT{*B3p`?Y;##GvN+myM#*ef*0sx^GAMZzYr%5xMEIS0kw6g-OlOr=$ z5e;6OPsNG4(=)Ac90`UoB}7=D6liUZ{k4Tn=d@Z2XNqVwCp=|}OXDLB-ntru*P#3Y z(tO6-4i#E8pvDpV1)@p)P3JdLoNstK2b(xZer<6P+d>NHZ0=c#GymQ9vgm!^shY7u zKxlpShdHEpN&U7I~yBhM`QX@Urqs?`*u8CJ=@&OY~v|>@tUDQ53Kp-c$urBdM?DpY-@|G z@DF|HxvBm{ty$z1BoXk-5cqISKA+-gJY-0f;e{hq79Z$2^RlkT7)~IwfOoZFcc&P5tQLYEICu7A@cisk7R-!|c#oQ|Ui9;vQ!05;GSR8*>xro?3 z8LZgZ{j|)}exf~riE&qr`5t*gPrmrMddbwR7gq|;pP>{t+LoIx)G#csT{k!NWxo9= zjDP7XyMK#!%sA_#!h6?^+`S~(3p5O0jSLQo*PbaWeEI4qlehkS*ueK%&XQMlm*44l zd3bzyWEcFx_F0o?n0CA93Fn86D%WY*&A`5 zVvpzAz>Hpuy(z(2aFaoEA2V74!wRBg9{t)x>^chHM2x>Lnye3Av#vbqCyf8W_Wx>c zX9t^0yzv|!3XcYZmThnprmjDJTpw3um#Uj6nTMN{mzS5HFR!j;)7NLg&!{P|>!AVuYvA&> ztzQB%iY|_uN*WKkFmlGqV(7R&Q_hdTd3b z&U?%r4knZx|Gsr_vgdK~i=&4B;GiIS%w@$)`($X7!F`R$f<5?cPr<@zDo!)ljn!WJNo6vnYoqBJ*g|a$GfXGP}G^~^}fLH zaq7DzlkRG0iP7%x8&CKUG(7bZ(Wb016>azLKZp`WHHO?iSln8?q`~LD^v+h$7@5q_ zhL5Vkx9Rd67_tCpe-u>s|d^Mm}1zeT=m+0(wGLE@fL) z${Z&*Bl{9=sHLSB=xNdNmrNNCm+g328}Z3A8W_k`Qdj_8F>q~ZUdzU`B&#m(UYc>N zmEF>l*I&_3!C${R^JIZR<)l~JmupvZr5@t}@EpfS#V_(<>Xc5939k+1r$vd&qe7#6 ztgd_cwz$%T9FpTshilrU8gbDKm%M5dR))5`+7D#0?)J=Bjx%Ge069@)f?j8R}|iQm`2PJU+d(c=~$eFRZ;cCq$$l__lSM z<7OGobCVwQzTx2KBx)vH6OAq}*XCb~A5r7lzs!(B=l>WTm!LxNP`A#;O~?eG(1D@g zt1B0LJSMDt!rw!6XX1lzjpL5VC#fBzw;0s$dI?`v7?*w8?;9-Sl)>6bHGEVF03I%X zQd>gbb?9GC{38#$*U<56Z*g(4ac^?}VscRr0(5tN*tbm=jXuAPjEn@B1TP&xd22xAuE;ev9TVv3)maH%;ou@|f4bYUG{f{6+vD4D zV2KxpuWN`4HLRc`W6uFJaCH^$hn~mFpG9~gxvUm?R?ppRi@nvoC8{lFwKkb5ky^O| z#=0+>#`1xtYxfNK)Kude@k@z{OpI4j>MVaMPeaP%Pc$@<+|4+tNZlTjkRZ^K*U`(_ zUh`ydoPfm;23Pk&$ya|rj<%()?nGy@=);hl>S}i=O@vm^V8+P`Uk3`)_r7YbP#^uM z$4{lQKkrg5nwIiq{+U@n!&Ck!o<$GWqreTLy8CMoEkO}tjPrP<9ZS*R1QxuyF%FA3 zN~zn68SpG8rR3I(N=~k%k>=3}e9q`HW)=2FGfVqFXdP~o{y2|Dc3@R!8d;25W4O$e zZE4T@{vj!$Jp!{ZO0WfP71U;cG%(2_hJ~SQ(26C*-TbqfkB?7qa4>+_#5qe9m40Ys z4F@X^_k|#~g9q`PHmPhM-hwIIYlJ~kv)kRF22-^+%M`3P@#EFmM{c39jo$s15k@qj z$rxoI6H9p;;spM3T4-IilBIU{c1^j3HY0MWX7uCK!?Fok2i^3YypOGnB61(7d@U9N z|F%~P1tIKR>G`b$JFMH)r`E51385jll}S3U{&|Eufv|Yuc2$jKSyJ_`1Br)*x&RWZ zy4)fG_YRLsDTA%g5Q!gNOXBA0|0a0C- z{_UIayx>9zPeey=$F5_6+kyQ&y6`+dpE>_A3{{5Nv+8nk&rP*fSk?1(a& z*=)R&x+Ya8dv>&nA;D2*IqPI?i=izcG30b#<{NkQ36dPbptP-YGu4x^&q~BM<$sud>kDvYGSz^3`ii{BGd^ z+jN3KNmG;lHoz4cc|kndG6(5r_~Tb>MM}b$mVJ_6)Dk`1Za_vD3NI)$PZo9pC_~0B zx1jI1r|o2n)hRB@l?2wPxHaVAkV>swq?8EbaO=ay8&i z_uHmIBpP$8*MDdR&L+0ajC2Hr zop*Cu-riumD5YT3+xB#)(khbDPWYWdF@Xw|S_P-UZ%$^h1vkfy^{tSbk^zs=xfZW0 z+qTj10}~6zSX3Nzd?gf2!~)P8U+I2imlDDgqzFpfiMrHJk~?{K4mSvcMO@>F+_xfC zd`-Dr0sWPY`m+(XYJ04>B+jF7uxGr8VD95_15p=2Iy;%j-(8HT?~J>)mU%ioIU7_t znVDvT`3BI{5iVE_xOedLiK;JPTmZEeu^+sy6iXX`T`)mKS6A2F-F=RH4u*JX34DB* zx9OO=-PE-UM+W>N*@Y6oTPM3=VR-Xt^{BEz*lLz@S!u^l+Jh_i^SAfdpYZtO6!~dJcC@Wq66WN3K;Mp=;C>kS<@Wft##Q* zfbT85Qa384n3=0tlLMlxkM9CZkCk4n8@9!4P0D!eFa2tjC)=H^us;HP1E>dl9lK2* z9r+_h+)(usc=t70HOD+50uRiN0R7x7(+DoyOHBU%roGV&MOE zg1A%-G@1y@TX3>uXJ^aHE9b(|1Ab3AOO-q>WTP(c8LUn;gyd?`F+Ck!*5}Whj;lH_ zBnB*jdX(t(qg>T5lXIQP01m)t1wtwr1MU#daf{$1LPq z0l6MbBIwfq%M#8GXFbsqxGiwO8x9{H@k)q`%XJ&ze^pIY&Qy?>kH|T@8zhpv2S665 za(f6TBLfz^X|cv*)0YMC4GoFmd-21?^snj*(xeXBV%R2vG%BApk%mM+2-aaBBmN6^ z1rKFm8_;N;L)7J>ZX2bLSd-_{yIM!F^L(gB-rrW`+l=VXtk8+!q8tbkH zBriPYxZP5>4uW00syHrIWr)Yg@|?Ilp0w$1Kmd)URwzjxN~%TU%XC|MY!$Ad-dwun#OB( zr>OwZ`TGcJ$?#A7m8(rJ8hRgIb^PSyVYKt}w>3{i1qsg={qcHyrpyN~H5V56dp4`H zXuu0^7|rP`0><;C80gk?*7M6uW@=gMqNmhT$4ipP>`Y1hbRR@RLB54OirFH`;C&c> zK^v1SscR>!f&Xr$x)k&3fh&Ki1oHcH_Hd$$j6s?fq+EdMSM@X6dn4n9+{z9X<{~1f z?TJmod1lfL_P%_EY&O}n>&JrWfsI?w#^@%ShnA4NUaCkAY1mhf&5?p#5)x9aKYkE$ zNT=G8BN&U(dh}cyXOh-`8L}jXWnt72^l{|(**Qe<>}uaM^iQjPq{0 zhKZ*A^WmJ55X(hV@sAZdTTvkfQi-SIB8$Ml;gQ@OaCz8ACn4R*=#VPt8fJ|G_Gw-i zL8c74Vz3FM+a-R&k}Ri`fQeT@)rlAXdC9v%GI4p(nKHK3uw*#9dp;uPf*^6(h#Ptn z7)T9nwY_z_qDYg|RV=G=EmKSNLyNus(NuUgB@#uvR6z4!2`aa@qSXdJJh5f4IX8Pc?T-LMb z;Pi>_v;z>V8d6tLsl~<0P_;>njlLU(C(Cg*LhkvGFog7W;r;NGPtRm0?C#&vR|E*} zi7Oob3Brxh7=;Ry$173Tm=ha&8V{mT6UOG|*dEG2Ps0TjoVeeNS%;ppLsIZ(m7Bc0 zyzP7S)|4QK7_?WGr6+SxTvGDlLWTAh?X!V;KGvxz zDaJ)H={sYf0~0Wj7l9t6>ZbW_{m%Q2sk8`OC6n}Y=z||lX&~9wB~!ISlCAs@oX&M! z7mmokw<(6vv_0QX4Fd-I=WTBWJ_ggR^HCduV#9=yp33pwPUNo$BSVG|6Y;ebK#%Cq zjt#y4nC?Re`LV`iA!}%FoR()#KF^`F;!Y^io|71Ed1Xh`OsHnO28NCKp>zudL5Wrv z6)Xw2=j>db&sO(+Izo&5l`gilj7)`vsj?(G-7IGNQcKRA|MxS&8*5koo+n?8@30bI zhH^mr3NW26AE?Nbe@5|P#1asI4OKgGvuolFOE0~h**b}Oc!_NIr#IFCYtyn*2l)-{ z)iMuZj1L0$F+|tP&IjLF3ZilLQ_P~+57Hjb^eI&M#T+}1efx6A#t1xqk-BJ?x+7BF zc3|GNT;qY3?K#NP{lc;DKiS4|16o-bC#S3fX&KN&38Z9 zqNXM6tK29CT=e^SM7K2$dt)m7=(+cM6EqTIH#P(l=~qd>uJgj-FEwbsS^pFp zcIBhdREcOUk0SwWVouAPRD*ZAC-X;-Fv!*GXd8WSg%4LPNSroLc=zWxs@H-=i-uY{ zsjoY1?Dtv~JIJ3axuXq*{9vLG^SGf+TTZ-8H=#WZcIu=U`n1I1Q{#PfSC`xy2&O1@ zmktSlCB+3565LTqsOC2>hI=YcfTw!blkov?%56>5Ova@SNij`8064&Dkh#{zFN4#k z;o7c@fN9N@)@yZ)?L|*)US}S&%4dnkF*e|%lr!z1z>@rFiFuJKUF9-Zp!n3+m*>Wv zvor_Ffqbq&Yd_{R`ki9Wkzo=73K# zErP?zbC+2vPKn1tvv+AGrsuMQmgdP<)I+I}Sw5>-aTU?zt)AsBd>%O3fvglQke&Jd zf<+R2b_b1A2U4Y!u6o7_AI@ovG8Xhr(-%%(7jJ}LQnXRSVTca{b=yJ7-`DqMy&7VD zSM6KC;=kr>vr4RHP2+v@RbqUswKw#;I$FV#($CV_Pr2>dz~+1xls-^vS?sCy?NZ&8 z4w1VDIH1@1#}t@E3){WbP@z0j04j*#eP6X%jiP@FZiKE`Tudvsf5sY)J7|%* zbKpn%oRtuM8b+@}iAPW{Zu-nBycYYaqh_6ztKdj=zftGBVR6u89B@JPcFrvrgAdjU zFJTm_7^xatw^|jk*qxf4Sxj4OH0Fi`&!f)$OChZj%rIa)i%X`)d8`~2B2!;_@i?t5D&yEu()33RG?WcC$;7}w@*2vkQff4hi6 z_wGhtvO}Dym|_=U{8-AMrSKmLx?oQix)uvQ#j^0WJ1o-tG7;@3{ z*efB13oaIDo22d!7tB&Nd-%|+OUWM^5ti=fKY*WGJ$uH(sm!jqpuK^WiEe&wZg;zc z#AR{2hFBaY8>k-u zt$)hf`L(apKAMb4ZAD{9057~fp0KUoRv3cIzDxUrDYwLx_*kdayC?GT;1^oh!a+3P zy$Kh>GLzT9KXlSj%0b2UDHh(9eDNY1H6eT2b+!WY{9y>+_5g#nhZ`%$C^X|OzUsjf z!}I3aORcq~`Us1X6nobU!U_2TmVGVS|Cm!$hV2>gZ!0^1vrZdi1I}9Cb>*)Zt%ly# z)H#D=W7Tj-rFEMC3R5<_t|GDyo4jVNR;{eym*G`BLVmZ@UT0H>Vs(KRdQq%8;MhKI zH`qk_-!8Ge=*8iTB0Vv#jTpEA-nAhH!nEr$@m7ZZma7nzZAq|)Sc_Y=Ep9bDwHXg4 z;)rQAgr42tFA<1`VR)!nb#)PsMXyUZSICKZJec>NQf2n%zA2~*CoH|;lbTYOXYY?Q z^Ot?_lzV8*X?o~h1N{IhM!Dmp=hbl^L^m50sUNv}(A~7Kuz+e+2l#$kI4hTLJ{%KZ z`(*`D(s4GkO&c$z$sZXxs2Dl)%bL79Zab_($IwhvHVrh*V$vxawN|Ke?_$u{v!~gxSbKL4J zaeu$N4soitSXyjSATPn=5RggQCc9Xd^KLuiT)+N?x(UT|_SoUy%H^-mf0BsqByV>) zvR}FnO)h9?-XWtxiQYs-nPnI;e2T{kDy+zRHp5qPdk1Gw@;_&e6c}Loe^IEA>T~v| zwnSJs8HtIt&zJ$3LbcvvRj5ClqLCvs;DHMY2OZ)CNK1)>U+c|93D6$a##~OfB?OC; zeX`n9(cf+#Wcd~l6__o1Y^p#x=)(Gk$4H!z!Wf+$9S{hXB}>#vLQOc1ITh&WJc(Ze zu`msK(GJ@9txqI}#u|k;T_>xbw$EH0%=!=NGl1J{nX#tPJiFXBy8*EUT%Ch$D?8Cq zQRV}AwG);>ZEwWLlrA)D-VUB%y@*W{&#T|D5nWM{1jVtNTc1YvAK@Q6o^HD<`+2_{ z>%b@2ykL*5*CW_`LwoA_xQO5Qccbhp;y@LN@PF8Tyy}O(w@WxAA8LM@!N3{$^3e16 zb2k`j64tGap6Gn{&wb7?HeRt1PhR8y_;1u1RQ=gaiMuK5>8*)ay5rpnC)$gvj=ah5 zk=TP}HdLg~r=%g{RJ74|TQh%ttY|K12D+@3=kMc*d{n8lq%km8fZS#h3?KXCpWHz5*8`D_;S!RJNHA1gw=zer zwJdJk4?{-v^!0@iHGKS(UJ(Dj>aZl_@CfkGLpD6@_dElh5U>wK++?e&&RV@>Mw!xu zo+T?tqp}!t=UtKOo^@_N(Xj*xU`uF)^5e&yfoAg(QAQa0K_&vjFgL%2cx2h$@VJAE z@q8dp2=47`s*F;xgF-UVt((FvZF4-Djs;}N7N5^#jG2|&*#Esroy}{6BwcWmJyhXc z_og1e0bQ>rS4_lOri;bU3 z2pv7;ER%o3-w}x7$;`?EV}gzTN4X>8G6r|uV z^-s585JvEkBW2j({9MS~tPk8))18irvv08a@bqaNKC+fEMjsVK<@} zw2vnP8At@&4=3vb<-NiH4mdzlr!g4!+G$MO^n>AWxACQCm=x=zY%^PL!7T;DBX+l` zigc=T8FLSE(4;};PFdvy^LKeY)di-kayJ$z5B`hl81Wu@bQ6d@V2`B-s|iE9TuI7; z!7N*He+P&b-tjp3GQNi7;6a0*(fIDqrI9QGuQ$AIMRpNp;WJSdq08SGf=&Y7xKPhGVF`9BlJ}Sl*Rkx^Oj^7?_?) z5aFUGX68w@SjifjpYn4l?-gJ=9DF~_anO*OX+Dl+bL*dld1GAFm$a-Hg1|pHMH&iK1W1Qv^{iLl z$YrEzwt6-zcst8kU{QN{HmHB$-S=yRBI_G_uFz3u{{BT%3k!gB*nSV^g+sAk@r}lf zYCch6`k+-4B#qkG*!q%*E?_`~4jT>_7WjnQUiJgQ(BN}4I`sIVkXtP~>X7fa9#p2r z@;cSU79rT;cv#}fAz(%_U*$gRqA7Bo^zKd*70r`q1Xj*66@w__V*M@c!olbHpWdB< zgCcc<(GNlx*D%gM&n2PR&CN7ueIjd=n|`(`Ln7hzKoNemLfbBX<59`YXJaJp15jPr zp5yzLi1IH>lJu&BF)RT!;s5ar3L%m#2P90ZA-Q+^>;`&>5!E53s@G7NO@fusxTGpZ|(1i-o+^k-(DUiQVYj~W=_^+01yFaWd-D}3~!XL@myQ- zuW*KgO-80BwQ5-O1&Yd7fQaR}`M)#H|E4fX%vvkgfnwA(SR@&uTU9#lxaGD?Fm-TM zac!rE)97z|Q4JDY<{cTH%s3odt!noz*N+?4JH5@LnlIzcFND{*RhhU|F&~$`7w|e& zZvU9ulWmZQP1K@(ESc5~vaZ#Kj8hD5dQCJy4zt+~2kVm-6CdQI?rV$!93E+6fgp#1 z4@(D0azY=n61B5WztdPXwpcQpJDw^|fxxmoOqgjK$Tw)lun3&B<*w4Q02my^HC8a0 zyi>=gP25zC)Ug*CxACpuK;E3V2aDu-^xs9^QPS3SE&2gFE$|jY)EhX&)}|UGvqf)4 zKDp;DdnjsJGK{K8Ui=r8$bk(Fm)RJd$A?FPn!qTynm1}5-HV%9GX;{l=g6ktkQjf> zCp8hWvg`3gPX(P__9d^%xY|8|@`FY!wwRV>8Za@PHacis|750%t+nZ+xbtx2;(77<{_ff1(*7eql8_Z;6sdFM zgG+*w!^h)w^Cv{dtB*l2oazJC$b!ULAA9q_L+emQKCLrR>e_f~HSEr(6Ij>+OvKD& z9Kz4JKVeA0g=EbYF=YW~0M%$?(1tNq-v#XjF_YuQ^`d zPZY)=hXb#BK1gR02D9^$$n2_V!KBGf;~<^fx2(b!@q{Ie7!PYV)=kj0=b=bRN`;>O zh=brK3GGzg?>@ENZ>1SC)HoUzJw7h-k>QUoVSIWtSnvZAh<6)1ZN7DsRO^9^wn?ya z?d3)nzAW3oI$oax1#wGjpk^>ZW@XX6mPvrEYi^zsblGS| zDUheNfBQ&6Xk|>Ts=Lw8uB7QZB=1|R+zKo-_R|zv{`y?O9vT8dAQlY^%F4>rY6(Sz zU{?%2k2;v3O}g`HX=SX+1p=Wu9@xh)`>#0;BJDe4*Ze&!itT*_9G!2L1fvnOZ`RY9 z@0jV|uVr6skayliBQF`uY>8$1P-!g;TXS=MS?i@eCZgNhyBJb;ntbxV?R#uQa%g6{ z)HIIcD;HuSo>lC+sG*>rgzXN@4`3G2#_X43xRNeve<|RdbD&@$-g4^O9m0T#<@E87jejTr|7-QazzA7DS9D$Mu>vC)_h@$l zvuAG5>M8V--ne;_gwJ^s76SR?yV}9Z`N{3S?VAY`Vq=LS4RIj2GZ(2WD|@fiBc_)& z^vss9FGE3J1-(gq$!WjiRa9Jbsv1+JO9 z<`De26OS&zffN@ntYKn&8{N=NQ4x!C5OSb>eK&t69oN-*U6Oe6B&kS!iC?B(cG}nX zHnwP?vjN0F`OHoh3r*QK#gs1$5~3v$2xRiKeNAAe3hD5$!FjspD@ThEG5hhfK~4ij zkSnf`3&8WZa{}|F^kVvGY|M^dnQ)R>G(I8wGioP~`#*DB`P{Zk%I!{m(OQ)EE!Ct# z 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ǎ(KOfwgj40s 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%0D{?GH;d- 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

4QrA6x=Xy~{+%Xtw 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 literal 0 HcmV?d00001 From dfafae94ddd0f8c1a4cb61a0b50d8ac922335cf9 Mon Sep 17 00:00:00 2001 From: fellen31 Date: Mon, 2 Sep 2024 11:58:15 +0200 Subject: [PATCH 003/106] Change SV multisample merging to allow for other callers --- CHANGELOG.md | 3 + conf/modules/call_svs.config | 27 +- docs/output.md | 15 +- modules.json | 8 +- modules/local/create_samples_file.nf | 39 + .../bcftools/merge/bcftools-merge.diff | 31 + modules/nf-core/bcftools/merge/main.nf | 11 +- .../bcftools/reheader/bcftools-reheader.diff | 42 +- modules/nf-core/bcftools/reheader/main.nf | 24 +- modules/nf-core/bcftools/reheader/meta.yml | 4 + .../bcftools/reheader/tests/main.nf.test | 233 ++- .../bcftools/reheader/tests/main.nf.test.snap | 289 +++- .../reheader/tests/vcf_gz_index.config | 4 + .../reheader/tests/vcf_gz_index_csi.config | 4 + .../reheader/tests/vcf_gz_index_tbi.config | 5 + subworkflows/local/call_svs/main.nf | 42 +- .../local/call_svs/tests/main.nf.test | 36 +- .../local/call_svs/tests/main.nf.test.snap | 1297 +++++++++-------- .../local/call_svs/tests/nextflow.config | 10 + tests/main.nf.test | 23 +- tests/main.nf.test.snap | 4 +- 21 files changed, 1447 insertions(+), 704 deletions(-) create mode 100644 modules/local/create_samples_file.nf create mode 100644 modules/nf-core/bcftools/merge/bcftools-merge.diff create mode 100644 modules/nf-core/bcftools/reheader/tests/vcf_gz_index.config create mode 100644 modules/nf-core/bcftools/reheader/tests/vcf_gz_index_csi.config create mode 100644 modules/nf-core/bcftools/reheader/tests/vcf_gz_index_tbi.config create mode 100644 subworkflows/local/call_svs/tests/nextflow.config diff --git a/CHANGELOG.md b/CHANGELOG.md index 100d044a..b06f922f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,11 +9,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#345](https://github.com/genomic-medicine-sweden/nallo/pull/345) - Added first version of a metro map - [#346](https://github.com/genomic-medicine-sweden/nallo/pull/#346) - Added nf-test to call_svs +- [#351](https://github.com/genomic-medicine-sweden/nallo/pull/#351) - Added sample name to sniffles2 VCF ### `Changed` - [#344](https://github.com/genomic-medicine-sweden/nallo/pull/344) - Changed version to 0.4.0dev - [#346](https://github.com/genomic-medicine-sweden/nallo/pull/346) - Renamed structural_variant_calling to call_svs +- [#351](https://github.com/genomic-medicine-sweden/nallo/pull/351) - Changed from using sniffles to bcftools to merge SV calls from multiple samples +- [#351](https://github.com/genomic-medicine-sweden/nallo/pull/351) - Renamed the structural variant output files and directories ### `Removed` diff --git a/conf/modules/call_svs.config b/conf/modules/call_svs.config index 30a96289..166fd9fe 100644 --- a/conf/modules/call_svs.config +++ b/conf/modules/call_svs.config @@ -18,20 +18,39 @@ process { ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ + withName: '.*:CALL_SVS:.*' { + publishDir = [ + enabled: false, + ] + } + withName: '.*:CALL_SVS:SNIFFLES' { - ext.prefix = { "${meta.id}_sniffles" } + ext.prefix = { "${meta.id}_sniffles_for_reheader" } ext.args = '--no-qc' + } + + withName: '.*:CALL_SVS:BCFTOOLS_MERGE' { + ext.prefix = { "${meta.id}_svs" } + ext.args = [ + '--force-single', + '--output-type z', + '--write-index=tbi' + ].join(' ') publishDir = [ - path: { "${params.outdir}/sv_calling/sniffles/single_sample/${meta.id}" }, + path: { "${params.outdir}/svs/multi_sample/${meta.id}" }, mode: params.publish_dir_mode, saveAs: { filename -> filename.equals('versions.yml') ? null : filename } ] } - withName: '.*:CALL_SVS:SNIFFLES_MULTISAMPLE' { + withName: '.*:CALL_SVS:REHEADER_SNIFFLES' { ext.prefix = { "${meta.id}_sniffles" } + ext.args2 = [ + '--output-type z', + '--write-index=tbi' + ].join(' ') publishDir = [ - path: { "${params.outdir}/sv_calling/sniffles/multi_sample/${meta.id}" }, + path: { "${params.outdir}/svs/single_sample/${meta.id}" }, mode: params.publish_dir_mode, saveAs: { filename -> filename.equals('versions.yml') ? null : filename } ] diff --git a/docs/output.md b/docs/output.md index ae221835..304fa872 100644 --- a/docs/output.md +++ b/docs/output.md @@ -336,16 +336,15 @@ Results generated by MultiQC collate pipeline QC from supported tools e.g. FastQ ### SV Calling -[Sniffles](https://github.com/fritzsedlazeck/Sniffles) is used to call and merge structural variants. +[Sniffles](https://github.com/fritzsedlazeck/Sniffles) is used to call structural variants.

-Output files from SNV Calling +Output files from SV Calling -- `{outputdir}/sv_calling/multi_sample/{project}` - - `*.vcf.gz`: VCF with variants - - `*.vcf.gz.tbi`: Index of the corresponding VCF file -- `{outputdir}/sv_calling/single_sample/{sample}` - - `*.snf`: Sniffles SNF file - - `*.vcf.gz`: VCF with variants +- `{outputdir}/svs/multi_sample/{project}` + - `{project}_svs.vcf.gz`: VCF file with merged variants + - `{project}_svs.vcf.gz.tbi`: Index of the corresponding VCF file +- `{outputdir}/svs/single_sample/{sample}` + - `*.vcf.gz`: VCF with variants per sample - `*.vcf.gz.tbi`: Index of the corresponding VCF file
diff --git a/modules.json b/modules.json index 86568235..56a13334 100644 --- a/modules.json +++ b/modules.json @@ -23,7 +23,8 @@ "bcftools/merge": { "branch": "master", "git_sha": "a5ba4d59c2b248c0379b0f8aeb4e7e754566cd1f", - "installed_by": ["modules"] + "installed_by": ["modules"], + "patch": "modules/nf-core/bcftools/merge/bcftools-merge.diff" }, "bcftools/norm": { "branch": "master", @@ -37,8 +38,9 @@ }, "bcftools/reheader": { "branch": "master", - "git_sha": "682f789f93070bd047868300dd018faf3d434e7c", - "installed_by": ["modules"] + "git_sha": "c32611ac6813055b9321d2827678e2f8aebcb394", + "installed_by": ["modules"], + "patch": "modules/nf-core/bcftools/reheader/bcftools-reheader.diff" }, "bcftools/sort": { "branch": "master", diff --git a/modules/local/create_samples_file.nf b/modules/local/create_samples_file.nf new file mode 100644 index 00000000..80c9931a --- /dev/null +++ b/modules/local/create_samples_file.nf @@ -0,0 +1,39 @@ +process CREATE_SAMPLES_FILE { + tag "${meta.id}" + label 'process_single' + + conda "anaconda::gawk=5.1.0" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/gawk:5.1.0' : + 'biocontainers/gawk:5.1.0' }" + + input: + val(meta) + + output: + tuple val(meta), path("*.txt"), emit: samples + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + """ + echo SAMPLE "${meta.id}" > ${meta.id}.txt + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + create_samples_file: v1.0 + END_VERSIONS + """ + + stub: + """ + touch ${meta.id}.txt + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + create_samples_file: v1.0 + END_VERSIONS + """ +} diff --git a/modules/nf-core/bcftools/merge/bcftools-merge.diff b/modules/nf-core/bcftools/merge/bcftools-merge.diff new file mode 100644 index 00000000..b71e19b5 --- /dev/null +++ b/modules/nf-core/bcftools/merge/bcftools-merge.diff @@ -0,0 +1,31 @@ +Changes in module 'nf-core/bcftools/merge' +--- modules/nf-core/bcftools/merge/main.nf ++++ modules/nf-core/bcftools/merge/main.nf +@@ -15,6 +15,7 @@ + + output: + tuple val(meta), path("*.{bcf,vcf}{,.gz}"), emit: merged_variants ++ tuple val(meta), path("*.{csi,tbi}") , emit: index , optional: true + path "versions.yml" , emit: versions + + when: +@@ -53,8 +54,16 @@ + args.contains("--output-type z") || args.contains("-Oz") ? "vcf.gz" : + args.contains("--output-type v") || args.contains("-Ov") ? "vcf" : + "vcf" ++ def index = args.contains("--write-index=tbi") || args.contains("-W=tbi") ? "tbi" : ++ args.contains("--write-index=csi") || args.contains("-W=csi") ? "csi" : ++ args.contains("--write-index") || args.contains("-W") ? "csi" : ++ "" ++ def create_cmd = extension.endsWith(".gz") ? "echo '' | gzip >" : "touch" ++ def create_index = extension.endsWith(".gz") && index.matches("csi|tbi") ? "touch ${prefix}.${extension}.${index}" : "" ++ + """ +- touch ${prefix}.${extension} ++ ${create_cmd} ${prefix}.${extension} ++ ${create_index} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + +************************************************************ diff --git a/modules/nf-core/bcftools/merge/main.nf b/modules/nf-core/bcftools/merge/main.nf index 41dc1a0d..d8a3aaeb 100644 --- a/modules/nf-core/bcftools/merge/main.nf +++ b/modules/nf-core/bcftools/merge/main.nf @@ -15,6 +15,7 @@ process BCFTOOLS_MERGE { output: tuple val(meta), path("*.{bcf,vcf}{,.gz}"), emit: merged_variants + tuple val(meta), path("*.{csi,tbi}") , emit: index , optional: true path "versions.yml" , emit: versions when: @@ -53,8 +54,16 @@ process BCFTOOLS_MERGE { args.contains("--output-type z") || args.contains("-Oz") ? "vcf.gz" : args.contains("--output-type v") || args.contains("-Ov") ? "vcf" : "vcf" + def index = args.contains("--write-index=tbi") || args.contains("-W=tbi") ? "tbi" : + args.contains("--write-index=csi") || args.contains("-W=csi") ? "csi" : + args.contains("--write-index") || args.contains("-W") ? "csi" : + "" + def create_cmd = extension.endsWith(".gz") ? "echo '' | gzip >" : "touch" + def create_index = extension.endsWith(".gz") && index.matches("csi|tbi") ? "touch ${prefix}.${extension}.${index}" : "" + """ - touch ${prefix}.${extension} + ${create_cmd} ${prefix}.${extension} + ${create_index} cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/bcftools/reheader/bcftools-reheader.diff b/modules/nf-core/bcftools/reheader/bcftools-reheader.diff index 65ddb0a2..e2c7a9a8 100644 --- a/modules/nf-core/bcftools/reheader/bcftools-reheader.diff +++ b/modules/nf-core/bcftools/reheader/bcftools-reheader.diff @@ -1,28 +1,36 @@ Changes in module 'nf-core/bcftools/reheader' --- modules/nf-core/bcftools/reheader/main.nf +++ modules/nf-core/bcftools/reheader/main.nf -@@ -32,17 +32,14 @@ +@@ -13,6 +13,7 @@ + + output: + tuple val(meta), path("*.{vcf,vcf.gz,bcf,bcf.gz}"), emit: vcf ++ tuple val(meta), path("*.{csi,tbi}") , emit: index, optional: true + path "versions.yml" , emit: versions + + when: +@@ -59,8 +60,16 @@ + args2.contains("--output-type z") || args2.contains("-Oz") ? "vcf.gz" : args2.contains("--output-type v") || args2.contains("-Ov") ? "vcf" : "vcf" - """ -+ echo "${meta.id}" > samples -+ - bcftools \\ - reheader \\ -- $fai_argument \\ -- $header_argument \\ -- $samples_argument \\ -- $args \\ -- --threads $task.cpus \\ -+ -s samples \\ - $vcf \\ -- | bcftools view \\ -- $args2 \\ -- --output ${prefix}.${extension} -+ > ${prefix}.reheader.vcf ++ def index = args2.contains("--write-index=tbi") || args2.contains("-W=tbi") ? "tbi" : ++ args2.contains("--write-index=csi") || args2.contains("-W=csi") ? "csi" : ++ args2.contains("--write-index") || args2.contains("-W") ? "csi" : ++ "" ++ def create_cmd = extension.endsWith(".gz") ? "echo '' | gzip >" : "touch" ++ def create_index = extension.endsWith(".gz") && index.matches("csi|tbi") ? "touch ${prefix}.${extension}.${index}" : "" + + """ +- touch ${prefix}.${extension} ++ ${create_cmd} ${prefix}.${extension} ++ ${create_index} cat <<-END_VERSIONS > versions.yml "${task.process}": +@@ -68,3 +77,4 @@ + END_VERSIONS + """ + } ++ ************************************************************ diff --git a/modules/nf-core/bcftools/reheader/main.nf b/modules/nf-core/bcftools/reheader/main.nf index e1cf0091..9cf6d0d3 100644 --- a/modules/nf-core/bcftools/reheader/main.nf +++ b/modules/nf-core/bcftools/reheader/main.nf @@ -13,6 +13,7 @@ process BCFTOOLS_REHEADER { output: tuple val(meta), path("*.{vcf,vcf.gz,bcf,bcf.gz}"), emit: vcf + tuple val(meta), path("*.{csi,tbi}") , emit: index, optional: true path "versions.yml" , emit: versions when: @@ -32,14 +33,17 @@ process BCFTOOLS_REHEADER { args2.contains("--output-type v") || args2.contains("-Ov") ? "vcf" : "vcf" """ - echo "${meta.id}" > samples - bcftools \\ reheader \\ - -s samples \\ + $fai_argument \\ + $header_argument \\ + $samples_argument \\ + $args \\ + --threads $task.cpus \\ $vcf \\ - > ${prefix}.reheader.vcf - + | bcftools view \\ + $args2 \\ + --output ${prefix}.${extension} cat <<-END_VERSIONS > versions.yml "${task.process}": @@ -56,8 +60,16 @@ process BCFTOOLS_REHEADER { args2.contains("--output-type z") || args2.contains("-Oz") ? "vcf.gz" : args2.contains("--output-type v") || args2.contains("-Ov") ? "vcf" : "vcf" + def index = args2.contains("--write-index=tbi") || args2.contains("-W=tbi") ? "tbi" : + args2.contains("--write-index=csi") || args2.contains("-W=csi") ? "csi" : + args2.contains("--write-index") || args2.contains("-W") ? "csi" : + "" + def create_cmd = extension.endsWith(".gz") ? "echo '' | gzip >" : "touch" + def create_index = extension.endsWith(".gz") && index.matches("csi|tbi") ? "touch ${prefix}.${extension}.${index}" : "" + """ - touch ${prefix}.${extension} + ${create_cmd} ${prefix}.${extension} + ${create_index} cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/bcftools/reheader/meta.yml b/modules/nf-core/bcftools/reheader/meta.yml index 690d4ead..d903cc0f 100644 --- a/modules/nf-core/bcftools/reheader/meta.yml +++ b/modules/nf-core/bcftools/reheader/meta.yml @@ -53,6 +53,10 @@ output: type: file description: VCF with updated header, bgzipped per default pattern: "*.{vcf,vcf.gz,bcf,bcf.gz}" + - index: + type: file + description: Index of VCF with updated header + pattern: "*.{csi,tbi}" authors: - "@bjohnnyd" - "@jemten" diff --git a/modules/nf-core/bcftools/reheader/tests/main.nf.test b/modules/nf-core/bcftools/reheader/tests/main.nf.test index f3200cb3..96c1b7b0 100644 --- a/modules/nf-core/bcftools/reheader/tests/main.nf.test +++ b/modules/nf-core/bcftools/reheader/tests/main.nf.test @@ -17,13 +17,13 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), [], [] ] - input[1] = [ + input[1] = [ [ id:'genome' ], // meta map - file(params.test_data['sarscov2']['genome']['genome_fasta_fai'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) ] """ } @@ -47,13 +47,13 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), [], [] ] - input[1] = [ + input[1] = [ [ id:'genome' ], // meta map - file(params.test_data['sarscov2']['genome']['genome_fasta_fai'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) ] """ } @@ -68,6 +68,111 @@ nextflow_process { } + test("sarscov2 - [vcf, [], []], fai - vcf.gz output - index") { + + config "./vcf_gz_index.config" + when { + + process { + """ + input[0] = [ + [ id:'test', single_end:false ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + [], + [] + ] + input[1] = [ + [ id:'genome' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.vcf, + process.out.index.collect { it.collect { it instanceof Map ? it : file(it).name } }, + process.out.versions + ).match() }, + { assert process.out.index[0][1].endsWith(".csi") } + ) + } + + } + + test("sarscov2 - [vcf, [], []], fai - vcf.gz output - csi index") { + + config "./vcf_gz_index_csi.config" + when { + + process { + """ + input[0] = [ + [ id:'test', single_end:false ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + [], + [] + ] + input[1] = [ + [ id:'genome' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.vcf, + process.out.index.collect { it.collect { it instanceof Map ? it : file(it).name } }, + process.out.versions + ).match() }, + { assert process.out.index[0][1].endsWith(".csi") } + ) + } + + } + + test("sarscov2 - [vcf, [], []], fai - vcf.gz output - tbi index") { + + config "./vcf_gz_index_tbi.config" + when { + + process { + """ + input[0] = [ + [ id:'test', single_end:false ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + [], + [] + ] + input[1] = [ + [ id:'genome' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.vcf, + process.out.index.collect { it.collect { it instanceof Map ? it : file(it).name } }, + process.out.versions + ).match() }, + { assert process.out.index[0][1].endsWith(".tbi") } + ) + } + + } + test("sarscov2 - [vcf, [], []], fai - bcf output") { config "./bcf.config" @@ -77,13 +182,13 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), [], [] ] - input[1] = [ + input[1] = [ [ id:'genome' ], // meta map - file(params.test_data['sarscov2']['genome']['genome_fasta_fai'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) ] """ } @@ -107,11 +212,11 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_vcf'], checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true), [] ] - input[1] = [ + input[1] = [ [ id:'genome' ], // meta map [] ] @@ -137,15 +242,15 @@ nextflow_process { """ ch_no_samples = Channel.of([ [ id:'test', single_end:false ], - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), [] ]) ch_samples = Channel.of(["samples.txt", "new_name"]) .collectFile(newLine:true) input[0] = ch_no_samples.combine(ch_samples) - input[1] = [ + input[1] = [ [ id:'genome' ], // meta map - file(params.test_data['sarscov2']['genome']['genome_fasta_fai'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) ] """ } @@ -170,13 +275,13 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), [], [] ] - input[1] = [ + input[1] = [ [ id:'genome' ], // meta map - file(params.test_data['sarscov2']['genome']['genome_fasta_fai'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) ] """ } @@ -193,5 +298,97 @@ nextflow_process { } } + test("sarscov2 - [vcf, [], []], fai - vcf.gz output - index -stub") { + + options "-stub" + config "./vcf_gz_index.config" + when { + + process { + """ + input[0] = [ + [ id:'test', single_end:false ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + [], + [] + ] + input[1] = [ + [ id:'genome' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("sarscov2 - [vcf, [], []], fai - vcf.gz output - csi index -stub") { + + options "-stub" + config "./vcf_gz_index_csi.config" + when { + + process { + """ + input[0] = [ + [ id:'test', single_end:false ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + [], + [] + ] + input[1] = [ + [ id:'genome' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("sarscov2 - [vcf, [], []], fai - vcf.gz output - tbi index -stub") { + + options "-stub" + config "./vcf_gz_index_tbi.config" + when { + + process { + """ + input[0] = [ + [ id:'test', single_end:false ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + [], + [] + ] + input[1] = [ + [ id:'genome' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } } diff --git a/modules/nf-core/bcftools/reheader/tests/main.nf.test.snap b/modules/nf-core/bcftools/reheader/tests/main.nf.test.snap index 3629393b..87a3654a 100644 --- a/modules/nf-core/bcftools/reheader/tests/main.nf.test.snap +++ b/modules/nf-core/bcftools/reheader/tests/main.nf.test.snap @@ -1,4 +1,140 @@ { + "sarscov2 - [vcf, [], []], fai - vcf.gz output - tbi index": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz:md5,8e722884ffb75155212a3fc053918766" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz.tbi" + ] + ], + [ + "versions.yml:md5,486e3d4ebc1dbf5c0a4dfaebae12ea34" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-09-03T10:09:05.955833763" + }, + "sarscov2 - [vcf, [], []], fai - vcf.gz output - index -stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,486e3d4ebc1dbf5c0a4dfaebae12ea34" + ], + "index": [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "vcf": [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,486e3d4ebc1dbf5c0a4dfaebae12ea34" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-09-03T09:52:41.444952182" + }, + "sarscov2 - [vcf, [], []], fai - vcf.gz output - tbi index -stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,486e3d4ebc1dbf5c0a4dfaebae12ea34" + ], + "index": [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "vcf": [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,486e3d4ebc1dbf5c0a4dfaebae12ea34" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-09-03T09:53:04.314827944" + }, "sarscov2 - [vcf, [], []], fai - vcf output": { "content": [ { @@ -12,7 +148,13 @@ ] ], "1": [ + + ], + "2": [ "versions.yml:md5,486e3d4ebc1dbf5c0a4dfaebae12ea34" + ], + "index": [ + ], "vcf": [ [ @@ -32,7 +174,7 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-03T11:52:56.985565049" + "timestamp": "2024-09-03T09:50:41.983008108" }, "sarscov2 - [vcf, [], []], fai - bcf output": { "content": [ @@ -47,7 +189,13 @@ ] ], "1": [ + + ], + "2": [ "versions.yml:md5,486e3d4ebc1dbf5c0a4dfaebae12ea34" + ], + "index": [ + ], "vcf": [ [ @@ -67,7 +215,7 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-03T11:53:29.509254578" + "timestamp": "2024-09-03T09:51:43.072513252" }, "sarscov2 - [vcf, [], []], fai - vcf.gz output": { "content": [ @@ -82,7 +230,13 @@ ] ], "1": [ + + ], + "2": [ "versions.yml:md5,486e3d4ebc1dbf5c0a4dfaebae12ea34" + ], + "index": [ + ], "vcf": [ [ @@ -102,7 +256,90 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-03T11:53:11.468640381" + "timestamp": "2024-09-03T09:50:53.055630152" + }, + "sarscov2 - [vcf, [], []], fai - vcf.gz output - index": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz:md5,8e722884ffb75155212a3fc053918766" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz.csi" + ] + ], + [ + "versions.yml:md5,486e3d4ebc1dbf5c0a4dfaebae12ea34" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-09-03T10:08:37.999924355" + }, + "sarscov2 - [vcf, [], []], fai - vcf.gz output - csi index -stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,486e3d4ebc1dbf5c0a4dfaebae12ea34" + ], + "index": [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "vcf": [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,486e3d4ebc1dbf5c0a4dfaebae12ea34" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-09-03T09:52:52.512269206" }, "sarscov2 - [vcf, [], []], fai - stub": { "content": [ @@ -117,6 +354,36 @@ }, "timestamp": "2024-05-31T15:16:36.337112514" }, + "sarscov2 - [vcf, [], []], fai - vcf.gz output - csi index": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz:md5,8e722884ffb75155212a3fc053918766" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz.csi" + ] + ], + [ + "versions.yml:md5,486e3d4ebc1dbf5c0a4dfaebae12ea34" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-09-03T10:08:55.434831174" + }, "sarscov2 - [vcf, [], samples], fai": { "content": [ { @@ -130,7 +397,13 @@ ] ], "1": [ + + ], + "2": [ "versions.yml:md5,486e3d4ebc1dbf5c0a4dfaebae12ea34" + ], + "index": [ + ], "vcf": [ [ @@ -150,7 +423,7 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-03T11:54:04.84196388" + "timestamp": "2024-09-03T09:52:12.216002665" }, "sarscov2 - [vcf, header, []], []": { "content": [ @@ -165,7 +438,13 @@ ] ], "1": [ + + ], + "2": [ "versions.yml:md5,486e3d4ebc1dbf5c0a4dfaebae12ea34" + ], + "index": [ + ], "vcf": [ [ @@ -185,6 +464,6 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-03T11:53:44.311122728" + "timestamp": "2024-09-03T09:51:54.062386022" } } \ No newline at end of file diff --git a/modules/nf-core/bcftools/reheader/tests/vcf_gz_index.config b/modules/nf-core/bcftools/reheader/tests/vcf_gz_index.config new file mode 100644 index 00000000..1e050ec7 --- /dev/null +++ b/modules/nf-core/bcftools/reheader/tests/vcf_gz_index.config @@ -0,0 +1,4 @@ +process { + ext.prefix = { "${meta.id}_vcf" } + ext.args2 = "--output-type z --write-index --no-version" +} diff --git a/modules/nf-core/bcftools/reheader/tests/vcf_gz_index_csi.config b/modules/nf-core/bcftools/reheader/tests/vcf_gz_index_csi.config new file mode 100644 index 00000000..536e4b42 --- /dev/null +++ b/modules/nf-core/bcftools/reheader/tests/vcf_gz_index_csi.config @@ -0,0 +1,4 @@ +process { + ext.prefix = { "${meta.id}_vcf" } + ext.args2 = "--output-type z --write-index=csi --no-version" +} diff --git a/modules/nf-core/bcftools/reheader/tests/vcf_gz_index_tbi.config b/modules/nf-core/bcftools/reheader/tests/vcf_gz_index_tbi.config new file mode 100644 index 00000000..91a80db7 --- /dev/null +++ b/modules/nf-core/bcftools/reheader/tests/vcf_gz_index_tbi.config @@ -0,0 +1,5 @@ +process { + ext.prefix = { "${meta.id}_vcf" } + ext.args2 = "--output-type z --write-index=tbi --no-version" + +} diff --git a/subworkflows/local/call_svs/main.nf b/subworkflows/local/call_svs/main.nf index 242d8c31..3f7b7259 100644 --- a/subworkflows/local/call_svs/main.nf +++ b/subworkflows/local/call_svs/main.nf @@ -1,5 +1,7 @@ -include { SNIFFLES as SNIFFLES_MULTISAMPLE } from '../../../modules/nf-core/sniffles/main' -include { SNIFFLES } from '../../../modules/nf-core/sniffles/main' +include { BCFTOOLS_MERGE } from '../../../modules/nf-core/bcftools/merge/main' +include { BCFTOOLS_REHEADER as REHEADER_SNIFFLES } from '../../../modules/nf-core/bcftools/reheader/main' +include { CREATE_SAMPLES_FILE } from '../../../modules/local/create_samples_file.nf' +include { SNIFFLES } from '../../../modules/nf-core/sniffles/main' workflow CALL_SVS { @@ -12,22 +14,34 @@ workflow CALL_SVS { main: ch_versions = Channel.empty() - SNIFFLES (ch_bam_bai, ch_fasta, ch_tandem_repeats, true, true) + SNIFFLES (ch_bam_bai, ch_fasta, ch_tandem_repeats, true, false) + ch_versions = ch_versions.mix(SNIFFLES.out.versions) - SNIFFLES.out.snf - .map { meta, snf -> [ [ 'id': meta.project ], snf ] } - .groupTuple() - .map { meta, snfs -> [ meta, snfs, [] ] } - .set{ ch_multisample_input } + CREATE_SAMPLES_FILE ( SNIFFLES.out.vcf.map { meta, vcf -> meta } ) + ch_versions = ch_versions.mix(CREATE_SAMPLES_FILE.out.versions) - SNIFFLES_MULTISAMPLE( ch_multisample_input, ch_fasta, ch_tandem_repeats, true, false ) + SNIFFLES.out.vcf + .join( CREATE_SAMPLES_FILE.out.samples ) + .map { meta, vcf, samples -> [ meta, vcf, [], samples] } + .set { ch_reheader_sniffles_in } - ch_versions = ch_versions.mix(SNIFFLES.out.versions) - ch_versions = ch_versions.mix(SNIFFLES_MULTISAMPLE.out.versions) + REHEADER_SNIFFLES ( ch_reheader_sniffles_in, [[],[]] ) + ch_versions = ch_versions.mix(REHEADER_SNIFFLES.out.versions) + + REHEADER_SNIFFLES.out.vcf + .join(REHEADER_SNIFFLES.out.index) + .map { meta, vcf, tbi -> [ [ 'id': meta.project ], vcf, tbi ] } + .groupTuple(sort: true) + .set{ ch_bcftools_merge_in } + + BCFTOOLS_MERGE ( ch_bcftools_merge_in, ch_fasta, ch_fai, [] ) + ch_versions = ch_versions.mix(BCFTOOLS_MERGE.out.versions) emit: - ch_sv_calls_vcf = SNIFFLES.out.vcf // channel: [ val(meta), path(vcf) ] - ch_multisample = SNIFFLES_MULTISAMPLE.out.vcf // channel: [ val(meta), path(vcf) ] - versions = ch_versions // channel: [ path(versions.yml) ] + ch_sv_calls_vcf = REHEADER_SNIFFLES.out.vcf // channel: [ val(meta), path(vcf) ] + ch_sv_calls_tbi = REHEADER_SNIFFLES.out.index // channel: [ val(meta), path(tbi) ] + ch_multisample_vcf = BCFTOOLS_MERGE.out.merged_variants // channel: [ val(meta), path(vcf) ] + ch_multisample_tbi = BCFTOOLS_MERGE.out.index // channel: [ val(meta), path(tbi) ] + versions = ch_versions // channel: [ path(versions.yml) ] } diff --git a/subworkflows/local/call_svs/tests/main.nf.test b/subworkflows/local/call_svs/tests/main.nf.test index 6dfe2ead..70c4a02e 100644 --- a/subworkflows/local/call_svs/tests/main.nf.test +++ b/subworkflows/local/call_svs/tests/main.nf.test @@ -3,6 +3,7 @@ nextflow_workflow { name "Test Workflow CALL_SVS" script "../main.nf" workflow "CALL_SVS" + config "./nextflow.config" setup { run("GUNZIP") { @@ -51,10 +52,12 @@ nextflow_workflow { assertAll( { assert workflow.success }, { assert snapshot( - path(workflow.out.ch_sv_calls_vcf.get(0).get(1)).linesGzip[0..2], // Line 3 is timestamp - path(workflow.out.ch_sv_calls_vcf.get(0).get(1)).linesGzip[4..327], - path(workflow.out.ch_multisample.get(0).get(1)).linesGzip[0..2], // Line 3 is timestamp - path(workflow.out.ch_multisample.get(0).get(1)).linesGzip[4..299], + path(workflow.out.ch_sv_calls_vcf.get(0).get(1)).linesGzip[5..239], + path(workflow.out.ch_sv_calls_vcf.get(0).get(1)).linesGzip[241..316], + path(workflow.out.ch_multisample_vcf.get(0).get(1)).linesGzip[5..239], + path(workflow.out.ch_multisample_vcf.get(0).get(1)).linesGzip[241..299], + file(workflow.out.ch_sv_calls_tbi.get(0).get(1)).name, + file(workflow.out.ch_multisample_tbi.get(0).get(1)).name, workflow.out.versions, ).match() } ) @@ -86,10 +89,12 @@ nextflow_workflow { assertAll( { assert workflow.success }, { assert snapshot( - path(workflow.out.ch_sv_calls_vcf.get(0).get(1)).linesGzip[0..2], // Line 3 is timestamp - path(workflow.out.ch_sv_calls_vcf.get(0).get(1)).linesGzip[4..316], - path(workflow.out.ch_multisample.get(0).get(1)).linesGzip[0..2], // Line 3 is timestamp - path(workflow.out.ch_multisample.get(0).get(1)).linesGzip[4..299], + path(workflow.out.ch_sv_calls_vcf.get(0).get(1)).linesGzip[5..239], + path(workflow.out.ch_sv_calls_vcf.get(0).get(1)).linesGzip[241..316], + path(workflow.out.ch_multisample_vcf.get(0).get(1)).linesGzip[5..239], + path(workflow.out.ch_multisample_vcf.get(0).get(1)).linesGzip[241..299], + file(workflow.out.ch_sv_calls_tbi.get(0).get(1)).name, + file(workflow.out.ch_multisample_tbi.get(0).get(1)).name, workflow.out.versions, ).match() } ) @@ -125,12 +130,15 @@ nextflow_workflow { assertAll( { assert workflow.success }, { assert snapshot( - path(workflow.out.ch_sv_calls_vcf.get(0).get(1)).linesGzip[0..2], // Sample 1, line 3 is timestamp - path(workflow.out.ch_sv_calls_vcf.get(0).get(1)).linesGzip[4..326], - path(workflow.out.ch_sv_calls_vcf.get(1).get(1)).linesGzip[0..2], // Sample 2, line 3 is timestamp - path(workflow.out.ch_sv_calls_vcf.get(1).get(1)).linesGzip[4..353], - path(workflow.out.ch_multisample.get(0).get(1)).linesGzip[0..2], // Multisample, line 3 is timestamp - path(workflow.out.ch_multisample.get(0).get(1)).linesGzip[4..317], + path(workflow.out.ch_sv_calls_vcf.get(0).get(1)).linesGzip[5..239], + path(workflow.out.ch_sv_calls_vcf.get(0).get(1)).linesGzip[241..316], + path(workflow.out.ch_sv_calls_vcf.get(1).get(1)).linesGzip[5..239], + path(workflow.out.ch_sv_calls_vcf.get(1).get(1)).linesGzip[241..353], + path(workflow.out.ch_multisample_vcf.get(0).get(1)).linesGzip[5..239], + path(workflow.out.ch_multisample_vcf.get(0).get(1)).linesGzip[241..317], + file(workflow.out.ch_sv_calls_tbi.get(0).get(1)).name, + file(workflow.out.ch_sv_calls_tbi.get(1).get(1)).name, + file(workflow.out.ch_multisample_tbi.get(0).get(1)).name, workflow.out.versions, ).match() } ) diff --git a/subworkflows/local/call_svs/tests/main.nf.test.snap b/subworkflows/local/call_svs/tests/main.nf.test.snap index 7e72ff35..81f08430 100644 --- a/subworkflows/local/call_svs/tests/main.nf.test.snap +++ b/subworkflows/local/call_svs/tests/main.nf.test.snap @@ -1,11 +1,6 @@ { "2 samples - [bam, bai], fasta, fai, []": { "content": [ - [ - "##fileformat=VCFv4.2", - "##source=Sniffles2_2.0.7", - "##command=\"/usr/local/bin/sniffles --input HG002_PacBio_Revio.bam --reference hg38.test.fa -t 4 --vcf test_1.vcf.gz --snf test_1.snf\"" - ], [ "##contig=", "##contig=", @@ -212,7 +207,6 @@ "##FORMAT=", "##FORMAT=", "##FORMAT=", - "##FILTER=", "##FILTER=", "##FILTER=", "##FILTER=", @@ -242,99 +236,85 @@ "##INFO=", "##INFO=", "##INFO=", - "#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO\tFORMAT\tSAMPLE", - "chr16\t81884\tSniffles2.INS.4SF\tN\tCTCCAGGAAGCCCTCCTGAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTATCTCCGGAAGCCCTCCTGAATGCTCCCCACGCTGGCCCCTTCTTCCCACCACCCTACCTCCGGGAAGGCCTCCTGAATGCTCCCCACGCTGGCCCCTTCTTCCCACCACCCTACCTCCGGGAAGCCCTCCTGAATGCTCCCCACGCTGGCCCCTTCTTCCCACCACCCTACCTCCAGGAAGCCCTCCTGAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTATCTCCGGGAAGGCCTCCTGAATGCTCCCCACACTGACCCCTTCTTCCCACCACCCTACCTCCGGGAAGGCCTCCTGAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTAT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=398;END=81884;SUPPORT=12;COVERAGE=22,23,24,23,23;STRAND=+-;AF=0.500;STDEV_LEN=0.000;STDEV_POS=68.361;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:60:12:12", - "chr16\t82169\tSniffles2.INS.1SF\tN\tCTCCGGGAAGGCCTCCTGAATGCTCCCCACACTGACCCCTTCTTCCCACCACCCTAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=57;END=82169;SUPPORT=8;COVERAGE=23,23,23,23,23;STRAND=+-;AF=0.348;STDEV_LEN=0.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:38:15:8", - "chr16\t153120\tSniffles2.INS.5SF\tN\tACAGTGGGGAGGGGACAGTGGGGAGAGGACAGTAAGGAGGGGACCATGGGGAGGAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=56;END=153120;SUPPORT=23;COVERAGE=22,23,23,23,23;STRAND=+-;AF=1.000;STDEV_LEN=0.480;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:60:0:23", - "chr16\t160071\tSniffles2.INS.CSF\tN\tGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGACGGCTTGTGGGACACAGGTTGTGAGAGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTGTGAGGGTGCCCGGGATGGCTTGTGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTGTGAGACGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGAGATGCCCAGGACGGCTTGTGGGGAACAGGCTGTGAGGGTGCCCGGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGAT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=583;END=160071;SUPPORT=24;COVERAGE=28,28,28,30,27;STRAND=+-;AF=0.857;STDEV_LEN=0.953;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:26:4:24", - "chr16\t160389\tSniffles2.INS.BSF\tN\tGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGCTGCAAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGATGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCTGGGACGGCTTGTGGGGCACAGGTTGTGAGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=328;END=160389;SUPPORT=25;COVERAGE=28,30,30,29,27;STRAND=+-;AF=0.833;STDEV_LEN=0.277;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:19:5:25", - "chr16\t160753\tSniffles2.INS.ESF\tN\tGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCAGGATGGCTTGTGGGGCACAGGCTGCAAGAGGTGCCCAGGACGGCTTGTGGGGCACAGGTTGTGAGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=145;END=160753;SUPPORT=27;COVERAGE=30,28,28,27,27;STRAND=+-;AF=0.964;STDEV_LEN=0.352;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:60:1:27", + "##bcftools_viewVersion=1.20+htslib-1.20" + ], + [ + "#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO\tFORMAT\ttest_1", + "chr16\t81884\tSniffles2.INS.4SF\tN\tCTCCAGGAAGCCCTCCTGAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTATCTCCGGAAGCCCTCCTGAATGCTCCCCACGCTGGCCCCTTCTTCCCACCACCCTACCTCCGGGAAGGCCTCCTGAATGCTCCCCACGCTGGCCCCTTCTTCCCACCACCCTACCTCCGGGAAGCCCTCCTGAATGCTCCCCACGCTGGCCCCTTCTTCCCACCACCCTACCTCCAGGAAGCCCTCCTGAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTATCTCCGGGAAGGCCTCCTGAATGCTCCCCACACTGACCCCTTCTTCCCACCACCCTACCTCCGGGAAGGCCTCCTGAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTAT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=398;END=81884;SUPPORT=12;COVERAGE=22,23,24,23,23;STRAND=+-;AF=0.5;STDEV_LEN=0;STDEV_POS=68.361;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:60:12:12", + "chr16\t82169\tSniffles2.INS.1SF\tN\tCTCCGGGAAGGCCTCCTGAATGCTCCCCACACTGACCCCTTCTTCCCACCACCCTAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=57;END=82169;SUPPORT=8;COVERAGE=23,23,23,23,23;STRAND=+-;AF=0.348;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:38:15:8", + "chr16\t153120\tSniffles2.INS.5SF\tN\tACAGTGGGGAGGGGACAGTGGGGAGAGGACAGTAAGGAGGGGACCATGGGGAGGAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=56;END=153120;SUPPORT=23;COVERAGE=22,23,23,23,23;STRAND=+-;AF=1;STDEV_LEN=0.48;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:60:0:23", + "chr16\t160071\tSniffles2.INS.CSF\tN\tGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGACGGCTTGTGGGACACAGGTTGTGAGAGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTGTGAGGGTGCCCGGGATGGCTTGTGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTGTGAGACGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGAGATGCCCAGGACGGCTTGTGGGGAACAGGCTGTGAGGGTGCCCGGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGAT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=583;END=160071;SUPPORT=24;COVERAGE=28,28,28,30,27;STRAND=+-;AF=0.857;STDEV_LEN=0.953;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:26:4:24", + "chr16\t160389\tSniffles2.INS.BSF\tN\tGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGCTGCAAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGATGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCTGGGACGGCTTGTGGGGCACAGGTTGTGAGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=328;END=160389;SUPPORT=25;COVERAGE=28,30,30,29,27;STRAND=+-;AF=0.833;STDEV_LEN=0.277;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:19:5:25", + "chr16\t160753\tSniffles2.INS.ESF\tN\tGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCAGGATGGCTTGTGGGGCACAGGCTGCAAGAGGTGCCCAGGACGGCTTGTGGGGCACAGGTTGTGAGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=145;END=160753;SUPPORT=27;COVERAGE=30,28,28,27,27;STRAND=+-;AF=0.964;STDEV_LEN=0.352;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:60:1:27", "chr16\t163320\tSniffles2.DEL.5DSF\tagtgagtaggagacagtggggagaggacagtggagaggggacagtgaggaggggaccatgggaaggggaccgtggagtggggacagtgaggaggggaccatagggagggga\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-111;END=163431;SUPPORT=7;COVERAGE=23,22,22,22,22;STRAND=+-;AF=0.318;STDEV_LEN=1.095;STDEV_POS=10.733\tGT:GQ:DR:DV\t0/1:28:15:7", - "chr16\t163591\tSniffles2.DEL.5ESF\tggaggggaccgtgggaaggagacagtgaggaggggaccttggggaggggacagtgaggaggggaccatggggaggggacagtgaggaggggacaatggagaggggacagtgaggaggggactgtggggagaggacagtgaggaggggaccatggggagggcacagtggggaggggagagtgaggaagggacagtgaggaggggactgtgg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-210;END=163801;SUPPORT=7;COVERAGE=22,22,22,22,21;STRAND=+-;AF=0.318;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/1:28:15:7", - "chr16\t164801\tSniffles2.INS.FSF\tN\tCGGGGTCGCGGGGCGGGCGGGTCGCGGGGCGGGGTCGCGGGGGCGGGCGAGGTC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=54;END=164801;SUPPORT=8;COVERAGE=21,21,21,21,21;STRAND=+-;AF=0.381;STDEV_LEN=2.160;STDEV_POS=17.972;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:43:13:8", - "chr16\t182789\tSniffles2.INS.10SF\tN\tTGAAACACCGTCTCTACTAAAAATACAAAAATTAGCCAGGCATAGTGGCGGGCGCCTGTAATCCCAGCTGTTCGGGAGGCTGAGGCAGGACAATCACTTAAACCAGGGAAGCAGAGGTTGCAGTGAGCTGAGATCGAGCCACTGCACTCCAGCCTGGGCGACAGACCGAGACTGTCTCAAAAAAAAGACCGGGCACGGTGGCTCACGCCTGTAATCCCACCACTTTGGGAGGCTGAGGCGGGCTGATCACGATGTCAGGAGATCTAGACCATCCTGGCCAACATGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=286;END=182789;SUPPORT=12;COVERAGE=13,12,12,12,12;STRAND=+-;AF=1.000;STDEV_LEN=0.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:33:0:12", - "chr16\t186052\tSniffles2.DEL.5FSF\tggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacgggg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-629;END=186681;SUPPORT=6;COVERAGE=11,11,11,11,11;STRAND=+-;AF=0.545;STDEV_LEN=8.500;STDEV_POS=8.500\tGT:GQ:DR:DV\t0/1:33:5:6", + "chr16\t163591\tSniffles2.DEL.5ESF\tggaggggaccgtgggaaggagacagtgaggaggggaccttggggaggggacagtgaggaggggaccatggggaggggacagtgaggaggggacaatggagaggggacagtgaggaggggactgtggggagaggacagtgaggaggggaccatggggagggcacagtggggaggggagagtgaggaagggacagtgaggaggggactgtgg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-210;END=163801;SUPPORT=7;COVERAGE=22,22,22,22,21;STRAND=+-;AF=0.318;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:28:15:7", + "chr16\t164801\tSniffles2.INS.FSF\tN\tCGGGGTCGCGGGGCGGGCGGGTCGCGGGGCGGGGTCGCGGGGGCGGGCGAGGTC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=54;END=164801;SUPPORT=8;COVERAGE=21,21,21,21,21;STRAND=+-;AF=0.381;STDEV_LEN=2.16;STDEV_POS=17.972;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:43:13:8", + "chr16\t182789\tSniffles2.INS.10SF\tN\tTGAAACACCGTCTCTACTAAAAATACAAAAATTAGCCAGGCATAGTGGCGGGCGCCTGTAATCCCAGCTGTTCGGGAGGCTGAGGCAGGACAATCACTTAAACCAGGGAAGCAGAGGTTGCAGTGAGCTGAGATCGAGCCACTGCACTCCAGCCTGGGCGACAGACCGAGACTGTCTCAAAAAAAAGACCGGGCACGGTGGCTCACGCCTGTAATCCCACCACTTTGGGAGGCTGAGGCGGGCTGATCACGATGTCAGGAGATCTAGACCATCCTGGCCAACATGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=286;END=182789;SUPPORT=12;COVERAGE=13,12,12,12,12;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:33:0:12", + "chr16\t186052\tSniffles2.DEL.5FSF\tggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacgggg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-629;END=186681;SUPPORT=6;COVERAGE=11,11,11,11,11;STRAND=+-;AF=0.545;STDEV_LEN=8.5;STDEV_POS=8.5\tGT:GQ:DR:DV\t0/1:33:5:6", "chr16\t186294\tSniffles2.DEL.60SF\tcagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacgggg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-863;END=187157;SUPPORT=5;COVERAGE=11,11,11,11,10;STRAND=+-;AF=0.455;STDEV_LEN=0.577;STDEV_POS=6.928\tGT:GQ:DR:DV\t0/1:33:6:5", - "chr16\t362990\tSniffles2.INS.12SF\tN\tGACTTAGCACCGGGGGGTCTCGGGCTGCGGCTGCTCTCCCA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=42;END=362990;SUPPORT=3;COVERAGE=7,6,6,6,5;STRAND=+-;AF=0.500;STDEV_LEN=0.577;STDEV_POS=9.238;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:21:3:3", - "chr16\t370391\tSniffles2.INS.13SF\tN\tCTACCCTGCCCCGGCTCTCACCCCCTACCCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCGGCTCTCACCCCCTACCCCGGCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCGCTACCCTGCCCCCGGCTCTCACCGCTACCCCCCGGCTCTCACCCGCTACCCCGCCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCCGGCCCCCCGGCTCTCACCTCCTACCCGGCCCCGGCTCTCACCCGCTCCCCCGGCCCCCGGCTCTCACCCGCTCACCCCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCTCGGCTCTCACCCCCTACCCCGGCCCCGGCTCTCACCCCCTACCCCTGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCCGGCTCTCACCCGCTACCCCGGCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGGCTCTCACTCC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=736;END=370391;SUPPORT=7;COVERAGE=7,7,7,7,7;STRAND=+-;AF=1.000;STDEV_LEN=65.282;STDEV_POS=1.095;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:19:0:7", - "chr16\t378308\tSniffles2.INS.14SF\tN\tCCACTCTGACTGCCATCGCCACTCTGACTGCCATCC\t60\tGT\tPRECISE;SVTYPE=INS;SVLEN=36;END=378308;SUPPORT=4;COVERAGE=17,17,17,18,18;STRAND=+-;AF=0.235;STDEV_LEN=0.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:3:13:4", - "chr16\t378517\tSniffles2.INS.15SF\tN\tGCCATCGCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCTGACTGCCATCGCCACCCACACTGCCATCCCCACCCGCACTGCCATCGCCACCCTGACTGCCATCGCCACCCACAATGCCATCCCCACCCGCACTGCCATCGCCACCCGCACTGCCATCCCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCACACTGCCATC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=240;END=378517;SUPPORT=12;COVERAGE=17,18,18,18,18;STRAND=+-;AF=0.667;STDEV_LEN=0.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:26:6:12", - "chr16\t397717\tSniffles2.INS.16SF\tN\tTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGTGGGGGTGGGGGTGTGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGTGAGGGAGTCGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGTGAGGGAGTCGGGGGGTGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGGC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=491;END=397717;SUPPORT=3;COVERAGE=3,3,3,3,3;STRAND=+-;AF=1.000;STDEV_LEN=2.309;STDEV_POS=5.196;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:8:0:3", - "chr16\t504280\tSniffles2.INS.17SF\tN\tTCCATCTCCTCCTGTACCCCCTCACCTCCTTGTGCACCCCCTCACCTCCTGTACCCCCTCACCTCCTCTGTA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=74;END=504280;SUPPORT=4;COVERAGE=4,4,4,4,4;STRAND=+-;AF=1.000;STDEV_LEN=0.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:11:0:4", - "chr16\t504419\tSniffles2.INS.18SF\tN\tTCACCTCCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCTCACCTCCTCCTGTACCCCTCACCTCCTTGTGCACCCCCTCACCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCCTCACCTCCTCCTGTACCCCCTCACCTCCTTGTGCACCCCCTCACCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCCTCACCTCCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=256;END=504419;SUPPORT=4;COVERAGE=4,4,4,4,5;STRAND=+-;AF=1.000;STDEV_LEN=0.707;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:11:0:4", - "chr16\t507831\tSniffles2.INS.19SF\tN\tTTCAGTATCATCTGCCCGTTCTGAGCCATTTGCTCTCTAGCCCTACCATACAGCTGCCATCCTAAGAGTACGTTTCCCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=81;END=507831;SUPPORT=4;COVERAGE=5,5,5,5,7;STRAND=+-;AF=0.800;STDEV_LEN=0.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:1:1:4", - "chr16\t534179\tSniffles2.INS.1ASF\tN\tGGGCCGTGGTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACGGGGCCGTGGTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACGGGGCCGTGGTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=162;END=534179;SUPPORT=5;COVERAGE=5,5,5,5,4;STRAND=+-;AF=1.000;STDEV_LEN=0.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:13:0:5", - "chr16\t544781\tSniffles2.INS.1BSF\tN\tCGTCTCCCCCACGTCGCCTCCCCCCACGTCGCCTCCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCTCACGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGTCGC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=344;END=544781;SUPPORT=8;COVERAGE=8,8,8,8,8;STRAND=+-;AF=1.000;STDEV_LEN=4.690;STDEV_POS=25.500;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:22:0:8", - "chr16\t550769\tSniffles2.INS.1CSF\tN\tCGGTGAGGGTCCCCGGTCGGTGAGGGCGCCCCGTCAGTGAGGGTCCCGGTCAGTGAGGGCCCCGGTCGGTGAGGGTCCCCGGTCGGTGAGGGCCCCTGTCGGTGAGGGCCCCGGTCGGTGAGGGACCCGGTCGGTGAGGGCCCCCTGTCGGTGAGGGTCCCCTGTCGGTGAGGGCCCCGGTCGGTGAGGGCCCCGGTCGGTGAGGGTCCCCTGTCGGTGAGGGTCCCCTGTCGGTGAGGGTCCCGGTCGGTGAGGGCCCCGGTCGGTGAGGGTGCCCCGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=280;END=550769;SUPPORT=13;COVERAGE=13,13,13,13,13;STRAND=+-;AF=1.000;STDEV_LEN=1.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:36:0:13", - "chr16\t553057\tSniffles2.INS.1DSF\tN\tTGCCCCCCACCCCTGCACAGGTGCCCCCTCCCCTACCCCGCTGCACCCACACCCAACTCGTGCCCCCCCACCCCTGCACAGGTGCCCCCTCCCCTACCCCGCTGCACCCACACCCAACTCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=121;END=553057;SUPPORT=6;COVERAGE=12,11,11,11,10;STRAND=+-;AF=0.545;STDEV_LEN=0.577;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:33:5:6", - "chr16\t571110\tSniffles2.INS.1FSF\tN\tTGGCTAGCCTGTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTGTGTGTGTCTGGCTAGCCTGGTGCCCGTGTGTGTGTGTATGTGTGTGTGTGTGTGTGTGTCTGGCTAGCTGGCGCCCGTGGCTAGCCTGGTGCCCGTGTGTGTGTGTATGTATGTGTCTGGCTAGCCTGGTGCCCGTGGCTAGCCTGGTGCCCGTGTGTGTGTGTGTGGGGGGGGCTAGCCTTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTCTGGCTAGCGTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTGTGTGTGCTAGCCTGGCGCCCGTGTGTGTGTGTGTGTGTGTCTGGCTAGCCTGGCACCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=358;END=571110;SUPPORT=16;COVERAGE=18,17,16,16,18;STRAND=+-;AF=1.000;STDEV_LEN=3.780;STDEV_POS=14.714;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:44:0:16", - "chr16\t579380\tSniffles2.DEL.62SF\tcagagaagagacagacacacagccccgaaggtggtgcaggcacaggccctagaggtgccccgggcccagagactagagatgccccgggcccggagactagaggtgccccgggcccggaga\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-120;END=579500;SUPPORT=6;COVERAGE=11,11,11,11,10;STRAND=+-;AF=0.545;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/1:33:5:6", - "chr16\t579636\tSniffles2.DEL.61SF\tcccggagactagaggtgccccgggcccggagactagaggtgccccgggcccggagacttgaggtgccccggg\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-72;END=579708;SUPPORT=5;COVERAGE=11,11,11,10,10;STRAND=+-;AF=0.455;STDEV_LEN=11.500;STDEV_POS=105.434\tGT:GQ:DR:DV\t0/1:33:6:5", - "chr16\t585059\tSniffles2.DEL.63SF\tcccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctccccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctccccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctc\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-156;END=585215;SUPPORT=6;COVERAGE=6,6,6,6,6;STRAND=+-;AF=1.000;STDEV_LEN=0.500;STDEV_POS=56.518\tGT:GQ:DR:DV\t1/1:16:0:6", - "chr16\t587440\tSniffles2.INS.20SF\tN\tTCCCTCCCTTCACTGGGCCTGCTGCCCCAGAGTCCA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=36;END=587440;SUPPORT=5;COVERAGE=5,5,5,5,5;STRAND=+-;AF=1.000;STDEV_LEN=0.000;STDEV_POS=41.569;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:13:0:5", - "chr16\t611801\tSniffles2.DEL.64SF\tgggacagccgccttcgcctgtagaatcaagagcagggacagccgccctggcctgtagaatcaagagcacgggacagccgccctggcctgtagaatcaagagcacgggacagccgccctggcctgtagaatcaagagcagggacagccgccctggcctgtagaatcaagagcaagggacagccgccctggcctgtagaatcaagagcaagggacagccgcctttgcctgtagaatcaagagcag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-243;END=612044;SUPPORT=4;COVERAGE=3,4,4,4,4;STRAND=+-;AF=1.000;STDEV_LEN=0.707;STDEV_POS=14.142\tGT:GQ:DR:DV\t1/1:11:0:4", - "chr16\t631728\tSniffles2.DEL.65SF\tcttctcccaccccttcactgcctctccttccatcctctcctcccaccctctcctcccatccactcctcccatccacttcttccatcct\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-88;END=631816;SUPPORT=17;COVERAGE=17,17,17,17,16;STRAND=+-;AF=1.000;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t1/1:47:0:17", - "chr16\t660943\tSniffles2.INS.23SF\tN\tCCCCCTGTTCGGCCCCTCCCCAGGCCCCCCCCCGCCCGGCCTCAGGCCCCGCCCCCTGTTCGGCCCCTCCCCAGGCCCGGCCTCAGGCCCCGCCCCCTGTTCGGCCCCTCCCCAG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=115;END=660943;SUPPORT=17;COVERAGE=16,16,15,16,16;STRAND=+-;AF=1.000;STDEV_LEN=1.803;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:47:0:17", - "chr16\t665215\tSniffles2.DEL.66SF\tcctcagtctgcagcctgctagggacgcacggccacactcctgtctttcag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-50;END=665265;SUPPORT=22;COVERAGE=19,21,22,22,21;STRAND=+-;AF=1.000;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t1/1:60:0:22", - "chr16\t696679\tSniffles2.INS.24SF\tN\tCCCACCCCAAAGCCACCATCCGCTCCCACCTCCATAGGGTTGCTGCTGCCCGCCCCTGCCCCCCAGCCCTGTCCCCCCCACCACCCAGCCTGGGCGCACACCCCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=105;END=696679;SUPPORT=10;COVERAGE=11,10,10,10,10;STRAND=+-;AF=1.000;STDEV_LEN=0.408;STDEV_POS=1.633;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:27:0:10", - "chr16\t746237\tSniffles2.DEL.67SF\tgaggtgggttcactgcgggtctgcctggctgggcagcaggagaggaggtgggttcactgcgggtctgcctggctgggcagcaggagaggaggtgggttcactgcaggtctgtctggctgggcagcaggaggggagaggtggggtcactgcgggtctgcagggctgcaggaggggagaggtggggtcactgcaggtctgtctggctgggcagcaggagaggaggtgggttcactgcaggtctgtctgggcgggctgcaggagaggaggtggggtcactgcgggtctgtctgggcgggctgcaggagag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-307;END=746544;SUPPORT=7;COVERAGE=13,13,13,13,11;STRAND=+-;AF=0.538;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/1:40:6:7", - "chr16\t760502\tSniffles2.INS.25SF\tN\tAGCCATGAAACCTGGGCCCGGGCTCCCACTCACACCCCACCCCCACCCAGGGCAGCCGTGAAACCTGGGCCCTGGGCTCCCACCCACGCCCCACACCCACCCAGGGC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=107;END=760502;SUPPORT=16;COVERAGE=16,16,16,16,17;STRAND=+-;AF=1.000;STDEV_LEN=0.518;STDEV_POS=11.667;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:44:0:16", - "chr16\t763776\tSniffles2.INS.26SF\tN\tGCATCCCATCCCCCGTCCCCTCCCCCACACCCCTCCCCCACCCCCACGTCCCCTCCCCACCCCTCCCCCACACCCTCCCCCACCCCTCCCCATGTCCCCTCCCCTACCTCCTCCCCCCGCATCCCCTCCCCCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=133;END=763776;SUPPORT=20;COVERAGE=19,19,20,20,20;STRAND=+-;AF=1.000;STDEV_LEN=0.789;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:55:0:20", - "chr16\t767712\tSniffles2.INS.2ASF\tN\tGCGCATGGGGGGCGTGGGAGGGGGGTGCGTGGAGGAGGGGCGGTGTGGAGGGGGGCGCGTGGGGGTGTGTGGGGGGGGCACGTGGAGGGGGGCGTGTGGGGGGGTGCGTGGAGGAGGGGCGCGTGGAGGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=130;END=767712;SUPPORT=5;COVERAGE=15,15,15,15,14;STRAND=+-;AF=0.333;STDEV_LEN=0.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:22:10:5", - "chr16\t767829\tSniffles2.INS.29SF\tN\tGGTGTGGAGGGGGGCGCGTGGGGGTGTGTGGGGGGGGGCACGTGGAGGGGGCGTGTGGGGGGGTGCGTGGAGGAGGGGCGCGTGGAGGA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=89;END=767829;SUPPORT=9;COVERAGE=15,15,15,15,14;STRAND=+-;AF=0.600;STDEV_LEN=3.715;STDEV_POS=36.697;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:34:6:9", - "chr16\t767989\tSniffles2.INS.28SF\tN\tGGGGCACATGGGGGTGCGTGGGGGGCGTGTGGGGGGTGCGTGGAGGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=47;END=767989;SUPPORT=6;COVERAGE=15,15,15,14,14;STRAND=+-;AF=0.400;STDEV_LEN=1.500;STDEV_POS=11.547;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:34:9:6", - "chr16\t769171\tSniffles2.INS.2BSF\tN\tCCCCGGCCCCGGCCCCAGCCCCGGCCCCACCCCGGCCCCAGCCCCAGCCCCAGCCCCAGCCCCACCCCCGGCCCCAGCCCCAGCCCCAGCCCCAGCCCCGGCCCCACCCCCACCCCCGGCCCCGGCCCCGGCCCCACCCCCGGCCCCGGCCCCGGCCCCACCCCCGGCCCCGGCCCCACCCCCGGCCCCGGCCCCAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=197;END=769171;SUPPORT=6;COVERAGE=14,13,13,13,13;STRAND=+-;AF=0.462;STDEV_LEN=0.816;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:40:7:6", - "chr16\t795446\tSniffles2.INS.2CSF\tN\tCCCCCGTGCTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCTGTGCTGCCCGTGTGGCTGCCCCCGGCCCCGCGCCCTTCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=87;END=795446;SUPPORT=8;COVERAGE=13,13,13,13,13;STRAND=+-;AF=0.615;STDEV_LEN=0.577;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:27:5:8", - "chr16\t795594\tSniffles2.INS.2DSF\tN\tGCTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCTTCTCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCTTCTCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCTGTGCTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCTCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCTTCTCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCGCCCCGCCCCGCCCCTCCCCTCCCCCCCCCCCGC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=621;END=795594;SUPPORT=5;COVERAGE=13,13,13,13,13;STRAND=+-;AF=0.385;STDEV_LEN=2.646;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:27:8:5", - "chr16\t818868\tSniffles2.INS.2ESF\tN\tTGGTGAAGACTGTAGTGATGGTGATGATGGTGAAGACTGTAGTGATGATGGTGGTGAAGACTGTAGTGATGTTGATATTGGTGATGAAGACTATAGTGATAGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTAGTGATGGTGATGATGATGGTGAAGACTGTAGTGATGGTGATGATGGTGAAGACTGTAGCGATGATGGTGAACACTGTAGTGATGTTGATATTGGTGATGAAGACTATAGTGATGGTGATGATAGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTGTAGTGATGGTGATGAGGTGAGACTATCGTGATGGTGATGATAATGGTGAAGACTATAGTGATGTTGATGTCGGTGGTGAAGACTGTAGTGATGGTGATGATAGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTGTAGTGATGGTGATGATGGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTATAGTGATGATGGTGAAGACTGTAGTGATGGTGATGATAGTGGTGAAGACTGTAGTGATGTTAATGGTGAAGGCTATAGTGATGTTGATGGTGGTGAAGACTGTAGCAATGGTTATGATGTTGGTGAAGACAATAGTGATGGTGATGATGGTGAAGACTATAGTGATGGTGATGATGGTGGTGAAGACTGTAGTGATGGTGATGATAGTGGTGAGGACTGTTAGTGATGATAGTGGTGAAGACTGTAGTGATGATGATGGTGAAGACTATAATGATGATGGTGAAGACCGCCGTGATGGTGATGATGGTGAAGACTGTAGCAATGATGATGGTGAAGACTATAGTGATGTTGAGTTGGTGGTGAAGACTGTAGCGATGGTGATGATGATGGTGAAGACTATAGTGATGATGATGTTGAAGACTATAGTGATGATGATGGTGAAGACCGCCGTGATGGTGATGATGGTGAAGACTGTAGCGATGATGATGGTGAAGACTATAGTGATGCTGATGTTGGTGGTGAAGACTGTAGTGATGGTGATGATGATGGTGAAGACTATAGTGATGATGATGGTGAAGACTATAGTGATGATGATGTGAAGACCGCCGTGATGGTGATGATGGTGAAGACTGTAGCGATGATGATGGTGAAGACTATAGTGATGTTGATGTTGG\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=1173;END=818868;SUPPORT=12;COVERAGE=13,12,12,12,12;STRAND=+-;AF=1.000;STDEV_LEN=90.396;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:33:0:12", - "chr16\t824382\tSniffles2.INS.2FSF\tN\tTAGGCCCACGACGGCCAGCAGCGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGGAGCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=150;END=824382;SUPPORT=2;COVERAGE=3,3,3,3,2;STRAND=-;AF=0.667;STDEV_LEN=0.707;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:4:1:2", - "chr16\t824874\tSniffles2.INS.31SF\tN\tCGTCCCGTCCGCGGCACCACCGTCCCATCTGTGGCACCAT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=40;END=824874;SUPPORT=2;COVERAGE=3,2,2,2,2;STRAND=+-;AF=1.000;STDEV_LEN=0.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:5:0:2", - "chr16\t828906\tSniffles2.DEL.68SF\tgcccactggggcccacatcccgcccactgggaccgacatccc\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-42;END=828948;SUPPORT=2;COVERAGE=2,2,2,2,2;STRAND=+-;AF=1.000;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t1/1:5:0:2", - "chr16\t886663\tSniffles2.INS.35SF\tN\tCCACCCTAGGCCCCCGGCGTTCCCCAGGCCCCTCCCACCCTAGGCCCCCGGCGTTCCCCAGGCCCCTCCCACCCTAGGCCCCCGGCGTTCCCCAGGCCCCTCCCACCCTAGGCCCCGGCGTTCCCCAGGCCCCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=134;END=886663;SUPPORT=8;COVERAGE=10,10,10,10,11;STRAND=+-;AF=0.800;STDEV_LEN=0.500;STDEV_POS=22.234;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:2:2:8", - "chr16\t886674\tSniffles2.INS.34SF\tN\tCCCGGCGTTCCCCAGGCCCCTCCCACCCTAGGCCCCCGGCGTTCCCCAGGCCCCTCCCACCCTAGGCCCCCGCGTTCCCCAGGCCCCTCCCACCCTAGG\t60\tGT\tIMPRECISE;SVTYPE=INS;SVLEN=66;END=886674;SUPPORT=2;COVERAGE=10,10,10,10,11;STRAND=+-;AF=0.200;STDEV_LEN=19.348;STDEV_POS=113.694;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/0:2:8:2", - "chr16\t894215\tSniffles2.INS.36SF\tN\tCTGGCTGTCCGCCCACCCATCCCCTGTCCACCGGACCGTCCGCCCACCCGTCCCCATGTCCATCAGACCGTCCGTCCACCTGTCCCCCTGTCCCCTGTCCACCGGACCATTCGCCCACCCATCCCCCTGTCCACCTGGCCATCCGCCCACCTGTCTCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCACTGGACTGTCCGCCCACCTGTCCCCCTGTCCCCTGTCCACCGGACCGTCTGCCCACCCGTCCCCCTGTCCACCTGGCCATCCGCCCACCCATCCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCAGGTCCCCCTGTCCAGCGGACCGTCCACCCACCCGTCCCCCTGTCCACTGGACCGTCCGCCCACCTGTCCCCCTGTCCACCTGGCAGTGCGCCCACCCATCCCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCAGCGGACCGTCCACCCACCT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=521;END=894215;SUPPORT=17;COVERAGE=17,17,17,17,17;STRAND=+-;AF=1.000;STDEV_LEN=57.393;STDEV_POS=5.500;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:47:0:17", - "chr16\t895843\tSniffles2.INS.37SF\tN\tACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCACGGTCCACAG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=59;END=895843;SUPPORT=4;COVERAGE=17,16,16,16,14;STRAND=+-;AF=0.250;STDEV_LEN=0.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:6:12:4", - "chr16\t895843\tSniffles2.INS.39SF\tN\tACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCATGGTCCACAGACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCACGGTCCACAGACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCACGGTCCACAG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=177;END=895843;SUPPORT=8;COVERAGE=17,16,16,16,14;STRAND=+-;AF=0.500;STDEV_LEN=0.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:57:8:8", - "chr16\t896053\tSniffles2.INS.3BSF\tN\tCCACACGCAGGCTGCACGGTCCACAGACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCACGGTCCACACACACGCCTCGGAGGGGTTGTGAGGCTCAGCCAT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=118;END=896053;SUPPORT=8;COVERAGE=17,16,16,16,14;STRAND=+-;AF=0.500;STDEV_LEN=0.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:57:8:8", + "chr16\t362990\tSniffles2.INS.12SF\tN\tGACTTAGCACCGGGGGGTCTCGGGCTGCGGCTGCTCTCCCA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=42;END=362990;SUPPORT=3;COVERAGE=7,6,6,6,5;STRAND=+-;AF=0.5;STDEV_LEN=0.577;STDEV_POS=9.238;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:21:3:3", + "chr16\t370391\tSniffles2.INS.13SF\tN\tCTACCCTGCCCCGGCTCTCACCCCCTACCCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCGGCTCTCACCCCCTACCCCGGCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCGCTACCCTGCCCCCGGCTCTCACCGCTACCCCCCGGCTCTCACCCGCTACCCCGCCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCCGGCCCCCCGGCTCTCACCTCCTACCCGGCCCCGGCTCTCACCCGCTCCCCCGGCCCCCGGCTCTCACCCGCTCACCCCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCTCGGCTCTCACCCCCTACCCCGGCCCCGGCTCTCACCCCCTACCCCTGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCCGGCTCTCACCCGCTACCCCGGCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGGCTCTCACTCC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=736;END=370391;SUPPORT=7;COVERAGE=7,7,7,7,7;STRAND=+-;AF=1;STDEV_LEN=65.282;STDEV_POS=1.095;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:19:0:7", + "chr16\t378308\tSniffles2.INS.14SF\tN\tCCACTCTGACTGCCATCGCCACTCTGACTGCCATCC\t60\tGT\tPRECISE;SVTYPE=INS;SVLEN=36;END=378308;SUPPORT=4;COVERAGE=17,17,17,18,18;STRAND=+-;AF=0.235;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:3:13:4", + "chr16\t378517\tSniffles2.INS.15SF\tN\tGCCATCGCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCTGACTGCCATCGCCACCCACACTGCCATCCCCACCCGCACTGCCATCGCCACCCTGACTGCCATCGCCACCCACAATGCCATCCCCACCCGCACTGCCATCGCCACCCGCACTGCCATCCCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCACACTGCCATC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=240;END=378517;SUPPORT=12;COVERAGE=17,18,18,18,18;STRAND=+-;AF=0.667;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:26:6:12", + "chr16\t397717\tSniffles2.INS.16SF\tN\tTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGTGGGGGTGGGGGTGTGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGTGAGGGAGTCGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGTGAGGGAGTCGGGGGGTGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGGC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=491;END=397717;SUPPORT=3;COVERAGE=3,3,3,3,3;STRAND=+-;AF=1;STDEV_LEN=2.309;STDEV_POS=5.196;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:8:0:3", + "chr16\t504280\tSniffles2.INS.17SF\tN\tTCCATCTCCTCCTGTACCCCCTCACCTCCTTGTGCACCCCCTCACCTCCTGTACCCCCTCACCTCCTCTGTA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=74;END=504280;SUPPORT=4;COVERAGE=4,4,4,4,4;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:11:0:4", + "chr16\t504419\tSniffles2.INS.18SF\tN\tTCACCTCCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCTCACCTCCTCCTGTACCCCTCACCTCCTTGTGCACCCCCTCACCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCCTCACCTCCTCCTGTACCCCCTCACCTCCTTGTGCACCCCCTCACCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCCTCACCTCCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=256;END=504419;SUPPORT=4;COVERAGE=4,4,4,4,5;STRAND=+-;AF=1;STDEV_LEN=0.707;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:11:0:4", + "chr16\t507831\tSniffles2.INS.19SF\tN\tTTCAGTATCATCTGCCCGTTCTGAGCCATTTGCTCTCTAGCCCTACCATACAGCTGCCATCCTAAGAGTACGTTTCCCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=81;END=507831;SUPPORT=4;COVERAGE=5,5,5,5,7;STRAND=+-;AF=0.8;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:1:1:4", + "chr16\t534179\tSniffles2.INS.1ASF\tN\tGGGCCGTGGTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACGGGGCCGTGGTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACGGGGCCGTGGTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=162;END=534179;SUPPORT=5;COVERAGE=5,5,5,5,4;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:13:0:5", + "chr16\t544781\tSniffles2.INS.1BSF\tN\tCGTCTCCCCCACGTCGCCTCCCCCCACGTCGCCTCCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCTCACGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGTCGC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=344;END=544781;SUPPORT=8;COVERAGE=8,8,8,8,8;STRAND=+-;AF=1;STDEV_LEN=4.69;STDEV_POS=25.5;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:22:0:8", + "chr16\t550769\tSniffles2.INS.1CSF\tN\tCGGTGAGGGTCCCCGGTCGGTGAGGGCGCCCCGTCAGTGAGGGTCCCGGTCAGTGAGGGCCCCGGTCGGTGAGGGTCCCCGGTCGGTGAGGGCCCCTGTCGGTGAGGGCCCCGGTCGGTGAGGGACCCGGTCGGTGAGGGCCCCCTGTCGGTGAGGGTCCCCTGTCGGTGAGGGCCCCGGTCGGTGAGGGCCCCGGTCGGTGAGGGTCCCCTGTCGGTGAGGGTCCCCTGTCGGTGAGGGTCCCGGTCGGTGAGGGCCCCGGTCGGTGAGGGTGCCCCGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=280;END=550769;SUPPORT=13;COVERAGE=13,13,13,13,13;STRAND=+-;AF=1;STDEV_LEN=1;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:36:0:13", + "chr16\t553057\tSniffles2.INS.1DSF\tN\tTGCCCCCCACCCCTGCACAGGTGCCCCCTCCCCTACCCCGCTGCACCCACACCCAACTCGTGCCCCCCCACCCCTGCACAGGTGCCCCCTCCCCTACCCCGCTGCACCCACACCCAACTCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=121;END=553057;SUPPORT=6;COVERAGE=12,11,11,11,10;STRAND=+-;AF=0.545;STDEV_LEN=0.577;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:33:5:6", + "chr16\t571110\tSniffles2.INS.1FSF\tN\tTGGCTAGCCTGTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTGTGTGTGTCTGGCTAGCCTGGTGCCCGTGTGTGTGTGTATGTGTGTGTGTGTGTGTGTGTCTGGCTAGCTGGCGCCCGTGGCTAGCCTGGTGCCCGTGTGTGTGTGTATGTATGTGTCTGGCTAGCCTGGTGCCCGTGGCTAGCCTGGTGCCCGTGTGTGTGTGTGTGGGGGGGGCTAGCCTTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTCTGGCTAGCGTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTGTGTGTGCTAGCCTGGCGCCCGTGTGTGTGTGTGTGTGTGTCTGGCTAGCCTGGCACCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=358;END=571110;SUPPORT=16;COVERAGE=18,17,16,16,18;STRAND=+-;AF=1;STDEV_LEN=3.78;STDEV_POS=14.714;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:44:0:16", + "chr16\t579380\tSniffles2.DEL.62SF\tcagagaagagacagacacacagccccgaaggtggtgcaggcacaggccctagaggtgccccgggcccagagactagagatgccccgggcccggagactagaggtgccccgggcccggaga\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-120;END=579500;SUPPORT=6;COVERAGE=11,11,11,11,10;STRAND=+-;AF=0.545;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:33:5:6", + "chr16\t579636\tSniffles2.DEL.61SF\tcccggagactagaggtgccccgggcccggagactagaggtgccccgggcccggagacttgaggtgccccggg\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-72;END=579708;SUPPORT=5;COVERAGE=11,11,11,10,10;STRAND=+-;AF=0.455;STDEV_LEN=11.5;STDEV_POS=105.434\tGT:GQ:DR:DV\t0/1:33:6:5", + "chr16\t585059\tSniffles2.DEL.63SF\tcccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctccccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctccccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctc\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-156;END=585215;SUPPORT=6;COVERAGE=6,6,6,6,6;STRAND=+-;AF=1;STDEV_LEN=0.5;STDEV_POS=56.518\tGT:GQ:DR:DV\t1/1:16:0:6", + "chr16\t587440\tSniffles2.INS.20SF\tN\tTCCCTCCCTTCACTGGGCCTGCTGCCCCAGAGTCCA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=36;END=587440;SUPPORT=5;COVERAGE=5,5,5,5,5;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=41.569;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:13:0:5", + "chr16\t611801\tSniffles2.DEL.64SF\tgggacagccgccttcgcctgtagaatcaagagcagggacagccgccctggcctgtagaatcaagagcacgggacagccgccctggcctgtagaatcaagagcacgggacagccgccctggcctgtagaatcaagagcagggacagccgccctggcctgtagaatcaagagcaagggacagccgccctggcctgtagaatcaagagcaagggacagccgcctttgcctgtagaatcaagagcag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-243;END=612044;SUPPORT=4;COVERAGE=3,4,4,4,4;STRAND=+-;AF=1;STDEV_LEN=0.707;STDEV_POS=14.142\tGT:GQ:DR:DV\t1/1:11:0:4", + "chr16\t631728\tSniffles2.DEL.65SF\tcttctcccaccccttcactgcctctccttccatcctctcctcccaccctctcctcccatccactcctcccatccacttcttccatcct\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-88;END=631816;SUPPORT=17;COVERAGE=17,17,17,17,16;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t1/1:47:0:17", + "chr16\t660943\tSniffles2.INS.23SF\tN\tCCCCCTGTTCGGCCCCTCCCCAGGCCCCCCCCCGCCCGGCCTCAGGCCCCGCCCCCTGTTCGGCCCCTCCCCAGGCCCGGCCTCAGGCCCCGCCCCCTGTTCGGCCCCTCCCCAG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=115;END=660943;SUPPORT=17;COVERAGE=16,16,15,16,16;STRAND=+-;AF=1;STDEV_LEN=1.803;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:47:0:17", + "chr16\t665215\tSniffles2.DEL.66SF\tcctcagtctgcagcctgctagggacgcacggccacactcctgtctttcag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-50;END=665265;SUPPORT=22;COVERAGE=19,21,22,22,21;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t1/1:60:0:22", + "chr16\t696679\tSniffles2.INS.24SF\tN\tCCCACCCCAAAGCCACCATCCGCTCCCACCTCCATAGGGTTGCTGCTGCCCGCCCCTGCCCCCCAGCCCTGTCCCCCCCACCACCCAGCCTGGGCGCACACCCCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=105;END=696679;SUPPORT=10;COVERAGE=11,10,10,10,10;STRAND=+-;AF=1;STDEV_LEN=0.408;STDEV_POS=1.633;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:27:0:10", + "chr16\t746237\tSniffles2.DEL.67SF\tgaggtgggttcactgcgggtctgcctggctgggcagcaggagaggaggtgggttcactgcgggtctgcctggctgggcagcaggagaggaggtgggttcactgcaggtctgtctggctgggcagcaggaggggagaggtggggtcactgcgggtctgcagggctgcaggaggggagaggtggggtcactgcaggtctgtctggctgggcagcaggagaggaggtgggttcactgcaggtctgtctgggcgggctgcaggagaggaggtggggtcactgcgggtctgtctgggcgggctgcaggagag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-307;END=746544;SUPPORT=7;COVERAGE=13,13,13,13,11;STRAND=+-;AF=0.538;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:40:6:7", + "chr16\t760502\tSniffles2.INS.25SF\tN\tAGCCATGAAACCTGGGCCCGGGCTCCCACTCACACCCCACCCCCACCCAGGGCAGCCGTGAAACCTGGGCCCTGGGCTCCCACCCACGCCCCACACCCACCCAGGGC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=107;END=760502;SUPPORT=16;COVERAGE=16,16,16,16,17;STRAND=+-;AF=1;STDEV_LEN=0.518;STDEV_POS=11.667;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:44:0:16", + "chr16\t763776\tSniffles2.INS.26SF\tN\tGCATCCCATCCCCCGTCCCCTCCCCCACACCCCTCCCCCACCCCCACGTCCCCTCCCCACCCCTCCCCCACACCCTCCCCCACCCCTCCCCATGTCCCCTCCCCTACCTCCTCCCCCCGCATCCCCTCCCCCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=133;END=763776;SUPPORT=20;COVERAGE=19,19,20,20,20;STRAND=+-;AF=1;STDEV_LEN=0.789;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:55:0:20", + "chr16\t767712\tSniffles2.INS.2ASF\tN\tGCGCATGGGGGGCGTGGGAGGGGGGTGCGTGGAGGAGGGGCGGTGTGGAGGGGGGCGCGTGGGGGTGTGTGGGGGGGGCACGTGGAGGGGGGCGTGTGGGGGGGTGCGTGGAGGAGGGGCGCGTGGAGGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=130;END=767712;SUPPORT=5;COVERAGE=15,15,15,15,14;STRAND=+-;AF=0.333;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:22:10:5", + "chr16\t767829\tSniffles2.INS.29SF\tN\tGGTGTGGAGGGGGGCGCGTGGGGGTGTGTGGGGGGGGGCACGTGGAGGGGGCGTGTGGGGGGGTGCGTGGAGGAGGGGCGCGTGGAGGA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=89;END=767829;SUPPORT=9;COVERAGE=15,15,15,15,14;STRAND=+-;AF=0.6;STDEV_LEN=3.715;STDEV_POS=36.697;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:34:6:9", + "chr16\t767989\tSniffles2.INS.28SF\tN\tGGGGCACATGGGGGTGCGTGGGGGGCGTGTGGGGGGTGCGTGGAGGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=47;END=767989;SUPPORT=6;COVERAGE=15,15,15,14,14;STRAND=+-;AF=0.4;STDEV_LEN=1.5;STDEV_POS=11.547;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:34:9:6", + "chr16\t769171\tSniffles2.INS.2BSF\tN\tCCCCGGCCCCGGCCCCAGCCCCGGCCCCACCCCGGCCCCAGCCCCAGCCCCAGCCCCAGCCCCACCCCCGGCCCCAGCCCCAGCCCCAGCCCCAGCCCCGGCCCCACCCCCACCCCCGGCCCCGGCCCCGGCCCCACCCCCGGCCCCGGCCCCGGCCCCACCCCCGGCCCCGGCCCCACCCCCGGCCCCGGCCCCAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=197;END=769171;SUPPORT=6;COVERAGE=14,13,13,13,13;STRAND=+-;AF=0.462;STDEV_LEN=0.816;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:40:7:6", + "chr16\t795446\tSniffles2.INS.2CSF\tN\tCCCCCGTGCTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCTGTGCTGCCCGTGTGGCTGCCCCCGGCCCCGCGCCCTTCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=87;END=795446;SUPPORT=8;COVERAGE=13,13,13,13,13;STRAND=+-;AF=0.615;STDEV_LEN=0.577;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:27:5:8", + "chr16\t795594\tSniffles2.INS.2DSF\tN\tGCTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCTTCTCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCTTCTCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCTGTGCTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCTCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCTTCTCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCGCCCCGCCCCGCCCCTCCCCTCCCCCCCCCCCGC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=621;END=795594;SUPPORT=5;COVERAGE=13,13,13,13,13;STRAND=+-;AF=0.385;STDEV_LEN=2.646;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:27:8:5", + "chr16\t818868\tSniffles2.INS.2ESF\tN\tTGGTGAAGACTGTAGTGATGGTGATGATGGTGAAGACTGTAGTGATGATGGTGGTGAAGACTGTAGTGATGTTGATATTGGTGATGAAGACTATAGTGATAGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTAGTGATGGTGATGATGATGGTGAAGACTGTAGTGATGGTGATGATGGTGAAGACTGTAGCGATGATGGTGAACACTGTAGTGATGTTGATATTGGTGATGAAGACTATAGTGATGGTGATGATAGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTGTAGTGATGGTGATGAGGTGAGACTATCGTGATGGTGATGATAATGGTGAAGACTATAGTGATGTTGATGTCGGTGGTGAAGACTGTAGTGATGGTGATGATAGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTGTAGTGATGGTGATGATGGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTATAGTGATGATGGTGAAGACTGTAGTGATGGTGATGATAGTGGTGAAGACTGTAGTGATGTTAATGGTGAAGGCTATAGTGATGTTGATGGTGGTGAAGACTGTAGCAATGGTTATGATGTTGGTGAAGACAATAGTGATGGTGATGATGGTGAAGACTATAGTGATGGTGATGATGGTGGTGAAGACTGTAGTGATGGTGATGATAGTGGTGAGGACTGTTAGTGATGATAGTGGTGAAGACTGTAGTGATGATGATGGTGAAGACTATAATGATGATGGTGAAGACCGCCGTGATGGTGATGATGGTGAAGACTGTAGCAATGATGATGGTGAAGACTATAGTGATGTTGAGTTGGTGGTGAAGACTGTAGCGATGGTGATGATGATGGTGAAGACTATAGTGATGATGATGTTGAAGACTATAGTGATGATGATGGTGAAGACCGCCGTGATGGTGATGATGGTGAAGACTGTAGCGATGATGATGGTGAAGACTATAGTGATGCTGATGTTGGTGGTGAAGACTGTAGTGATGGTGATGATGATGGTGAAGACTATAGTGATGATGATGGTGAAGACTATAGTGATGATGATGTGAAGACCGCCGTGATGGTGATGATGGTGAAGACTGTAGCGATGATGATGGTGAAGACTATAGTGATGTTGATGTTGG\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=1173;END=818868;SUPPORT=12;COVERAGE=13,12,12,12,12;STRAND=+-;AF=1;STDEV_LEN=90.396;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:33:0:12", + "chr16\t824382\tSniffles2.INS.2FSF\tN\tTAGGCCCACGACGGCCAGCAGCGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGGAGCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=150;END=824382;SUPPORT=2;COVERAGE=3,3,3,3,2;STRAND=-;AF=0.667;STDEV_LEN=0.707;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:4:1:2", + "chr16\t824874\tSniffles2.INS.31SF\tN\tCGTCCCGTCCGCGGCACCACCGTCCCATCTGTGGCACCAT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=40;END=824874;SUPPORT=2;COVERAGE=3,2,2,2,2;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:5:0:2", + "chr16\t828906\tSniffles2.DEL.68SF\tgcccactggggcccacatcccgcccactgggaccgacatccc\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-42;END=828948;SUPPORT=2;COVERAGE=2,2,2,2,2;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t1/1:5:0:2", + "chr16\t886663\tSniffles2.INS.35SF\tN\tCCACCCTAGGCCCCCGGCGTTCCCCAGGCCCCTCCCACCCTAGGCCCCCGGCGTTCCCCAGGCCCCTCCCACCCTAGGCCCCCGGCGTTCCCCAGGCCCCTCCCACCCTAGGCCCCGGCGTTCCCCAGGCCCCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=134;END=886663;SUPPORT=8;COVERAGE=10,10,10,10,11;STRAND=+-;AF=0.8;STDEV_LEN=0.5;STDEV_POS=22.234;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:2:2:8", + "chr16\t886674\tSniffles2.INS.34SF\tN\tCCCGGCGTTCCCCAGGCCCCTCCCACCCTAGGCCCCCGGCGTTCCCCAGGCCCCTCCCACCCTAGGCCCCCGCGTTCCCCAGGCCCCTCCCACCCTAGG\t60\tGT\tIMPRECISE;SVTYPE=INS;SVLEN=66;END=886674;SUPPORT=2;COVERAGE=10,10,10,10,11;STRAND=+-;AF=0.2;STDEV_LEN=19.348;STDEV_POS=113.694;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/0:2:8:2", + "chr16\t894215\tSniffles2.INS.36SF\tN\tCTGGCTGTCCGCCCACCCATCCCCTGTCCACCGGACCGTCCGCCCACCCGTCCCCATGTCCATCAGACCGTCCGTCCACCTGTCCCCCTGTCCCCTGTCCACCGGACCATTCGCCCACCCATCCCCCTGTCCACCTGGCCATCCGCCCACCTGTCTCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCACTGGACTGTCCGCCCACCTGTCCCCCTGTCCCCTGTCCACCGGACCGTCTGCCCACCCGTCCCCCTGTCCACCTGGCCATCCGCCCACCCATCCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCAGGTCCCCCTGTCCAGCGGACCGTCCACCCACCCGTCCCCCTGTCCACTGGACCGTCCGCCCACCTGTCCCCCTGTCCACCTGGCAGTGCGCCCACCCATCCCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCAGCGGACCGTCCACCCACCT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=521;END=894215;SUPPORT=17;COVERAGE=17,17,17,17,17;STRAND=+-;AF=1;STDEV_LEN=57.393;STDEV_POS=5.5;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:47:0:17", + "chr16\t895843\tSniffles2.INS.37SF\tN\tACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCACGGTCCACAG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=59;END=895843;SUPPORT=4;COVERAGE=17,16,16,16,14;STRAND=+-;AF=0.25;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:6:12:4", + "chr16\t895843\tSniffles2.INS.39SF\tN\tACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCATGGTCCACAGACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCACGGTCCACAGACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCACGGTCCACAG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=177;END=895843;SUPPORT=8;COVERAGE=17,16,16,16,14;STRAND=+-;AF=0.5;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:57:8:8", + "chr16\t896053\tSniffles2.INS.3BSF\tN\tCCACACGCAGGCTGCACGGTCCACAGACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCACGGTCCACACACACGCCTCGGAGGGGTTGTGAGGCTCAGCCAT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=118;END=896053;SUPPORT=8;COVERAGE=17,16,16,16,14;STRAND=+-;AF=0.5;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:57:8:8", "chr16\t896059\tSniffles2.INS.3ASF\tN\tGCAGGCTGCACGGTCCACAGACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACA\t60\tGT\tIMPRECISE;SVTYPE=INS;SVLEN=58;END=896059;SUPPORT=3;COVERAGE=17,16,16,16,14;STRAND=+-;AF=0.188;STDEV_LEN=0.577;STDEV_POS=38.553;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/0:6:13:3", - "chr16\t903595\tSniffles2.INS.3ESF\tN\tGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTATCTCTGCTGTGTGGTGGTGACCTTTGCACTGCCCGTGGGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCCGTCTCTGCTGTGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCCACAGGACGCCTGTCTCTGCTGTGTGGTGGTGACCTTTGCACTGCCCGTGGGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCTGTCTCTGCTGTGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCCGTCTCTGCTGCGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=600;END=903595;SUPPORT=6;COVERAGE=8,8,8,8,8;STRAND=+-;AF=0.750;STDEV_LEN=0.577;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:3:2:6", - "chr16\t949510\tSniffles2.DEL.6ESF\taatgacagagtcagccaacgacagagtcagagccaacgacagagtcagagacaatgacagagtcagagacaacgacagagtcagagacgacagagtcagagacgacagagtcagagccaatgacagagtcagccaatgacagagtcagagccaacgacagagtcagccaatgacagagtcagagacaacgacagagtcagagacaacgacagagtcagagacgacagagtcagagacgacagagtcagagccaatgacagagtcagccaatgacagagtcagagccaacgacagagtcagccaatgacagagtcagagacaacgacagagttagagacaacgacagagtcagccaaggacagcgtcagccaacgacagaatcagagacaacgacagagtcagccaacgacagagtcagagccaatgagagtcagagccaacgacagagtcagagacgacagagtcagagccaacgacagagtcagccaacgacagagtcagagccaacgacagagtcagccaacgacagagtcagagccaacgacagagtcagccaacgacagagtcagagacaacgacagagtcagagccaacgacagagtcagagacgaaagactcagagccaatgacagagtcagagccaatgacagagtcagccaacgacagagtcagagccaacgacagagtcagccaatgacagagtcagagacagcgacagagttagagacaat\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-731;END=950241;SUPPORT=14;COVERAGE=22,22,22,23,22;STRAND=+-;AF=0.636;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/1:40:8:14", - "chr16\t950488\tSniffles2.INS.40SF\tN\tCAACGACAGAGTCAGAGACAACGACAGAGTCAGAGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=36;END=950488;SUPPORT=14;COVERAGE=22,23,23,23,23;STRAND=+-;AF=0.609;STDEV_LEN=0.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:50:9:14", - "chr16\t952880\tSniffles2.DEL.71SF\ttccacacagacacccaccccaaaccagcctcctacacgtccacacagacacccaccccaaaccagcctcctgcacgtccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacacg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-178;END=953058;SUPPORT=16;COVERAGE=24,24,25,25,25;STRAND=+-;AF=0.640;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/1:45:9:16", - "chr16\t953293\tSniffles2.DEL.72SF\tcaaaccagcctcctacacgtccacacagacacccaccccaaaccagcttcctacacgttcacacagacacgg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-72;END=953365;SUPPORT=15;COVERAGE=24,25,25,25,25;STRAND=+-;AF=0.600;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/1:58:10:15", - "chr16\t953349\tSniffles2.DEL.75SF\tgttcacacagacacggaccccaaaccagcctcctacacgtccacacagacacccaccccaaaccagcctcctacacgttcacacagacacggaccccacaccagcctcctacacgtccacacagacacccaccccaaaccagcctcctgcacgtccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacacgtccacacagacacccactccaaaccagcctcctacacgtccacacagacaccccaaaccagcctcctacatgtccacacagacacccaccccaaaccagcctcctacatgtccacacagacacccaccccaaaccagcctcctacatgtccacacagacacccaccccaaaccagcctcctacat\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-440;END=953789;SUPPORT=9;COVERAGE=25,25,25,25,25;STRAND=+-;AF=0.360;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/1:45:16:9", - "chr16\t953507\tSniffles2.DEL.73SF\tacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacacgtccacacag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-106;END=953613;SUPPORT=15;COVERAGE=25,25,25,25,25;STRAND=+-;AF=0.600;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/1:58:10:15", - "chr16\t954972\tSniffles2.INS.41SF\tN\tCTAAGCGAACCAGACACGTTACATAAAATGCGTGCCTGCAGCAGACGGGGTCTGTGCACACACACACACAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=71;END=954972;SUPPORT=13;COVERAGE=25,24,24,26,26;STRAND=+-;AF=0.542;STDEV_LEN=0.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:60:11:13", - "chr16\t955127\tSniffles2.INS.44SF\tN\tAACCAGACACGTTACATAAAATGCGTGCCTGCTGCAGACGTGGTGTGTGTATACACACACACACATCTAAGTAAACCAGACACGTTACATAAAATGCGTGCCCGCAGCAGACGTAGTGTGTGCATCCACACACACACATCTAAGTAAACTAGACACGTTACATAAAATGCGTGCCCACAGCAGACGCGGTGTGTGCGTACACACACACACATCTAAGTAAACTAGACACGTTACATAAAATGCGTGCCCGCAGCAGACGCAGTGTGTGCATACACATCTAAGTG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=284;END=955127;SUPPORT=13;COVERAGE=27,26,26,26,27;STRAND=+-;AF=0.500;STDEV_LEN=0.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:60:13:13", - "chr16\t955473\tSniffles2.INS.45SF\tN\tACACACACACACACACATCTAAGTGAACCAGACACGTTACATAAAATGCGTGCCTGCAGCAGATGCGGTGTGTGCATACACACACACACATCTAAGTAAACCAGACACGTTACATAAAATGCGTGCCTGCAGCAGACGTAGTGTGTGCATCCACACACACACATCTAAGTAAACTAGACACGTTACATAAAATGCGTGCCCGCAGCAGAGACGGTGTGTGCGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=223;END=955473;SUPPORT=15;COVERAGE=24,26,26,27,27;STRAND=+-;AF=0.577;STDEV_LEN=0.500;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:60:11:15", - "chr16\t955933\tSniffles2.INS.46SF\tN\tCACGGCACCCACCCCACGACGGCTCTCTCACATCCACAGGTCTCCGAGTTCACGTCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=57;END=955933;SUPPORT=12;COVERAGE=26,27,27,29,29;STRAND=+-;AF=0.444;STDEV_LEN=0.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:60:15:12", + "chr16\t903595\tSniffles2.INS.3ESF\tN\tGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTATCTCTGCTGTGTGGTGGTGACCTTTGCACTGCCCGTGGGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCCGTCTCTGCTGTGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCCACAGGACGCCTGTCTCTGCTGTGTGGTGGTGACCTTTGCACTGCCCGTGGGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCTGTCTCTGCTGTGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCCGTCTCTGCTGCGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=600;END=903595;SUPPORT=6;COVERAGE=8,8,8,8,8;STRAND=+-;AF=0.75;STDEV_LEN=0.577;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:3:2:6", + "chr16\t949510\tSniffles2.DEL.6ESF\taatgacagagtcagccaacgacagagtcagagccaacgacagagtcagagacaatgacagagtcagagacaacgacagagtcagagacgacagagtcagagacgacagagtcagagccaatgacagagtcagccaatgacagagtcagagccaacgacagagtcagccaatgacagagtcagagacaacgacagagtcagagacaacgacagagtcagagacgacagagtcagagacgacagagtcagagccaatgacagagtcagccaatgacagagtcagagccaacgacagagtcagccaatgacagagtcagagacaacgacagagttagagacaacgacagagtcagccaaggacagcgtcagccaacgacagaatcagagacaacgacagagtcagccaacgacagagtcagagccaatgagagtcagagccaacgacagagtcagagacgacagagtcagagccaacgacagagtcagccaacgacagagtcagagccaacgacagagtcagccaacgacagagtcagagccaacgacagagtcagccaacgacagagtcagagacaacgacagagtcagagccaacgacagagtcagagacgaaagactcagagccaatgacagagtcagagccaatgacagagtcagccaacgacagagtcagagccaacgacagagtcagccaatgacagagtcagagacagcgacagagttagagacaat\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-731;END=950241;SUPPORT=14;COVERAGE=22,22,22,23,22;STRAND=+-;AF=0.636;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:40:8:14", + "chr16\t950488\tSniffles2.INS.40SF\tN\tCAACGACAGAGTCAGAGACAACGACAGAGTCAGAGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=36;END=950488;SUPPORT=14;COVERAGE=22,23,23,23,23;STRAND=+-;AF=0.609;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:50:9:14", + "chr16\t952880\tSniffles2.DEL.71SF\ttccacacagacacccaccccaaaccagcctcctacacgtccacacagacacccaccccaaaccagcctcctgcacgtccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacacg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-178;END=953058;SUPPORT=16;COVERAGE=24,24,25,25,25;STRAND=+-;AF=0.64;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:45:9:16", + "chr16\t953293\tSniffles2.DEL.72SF\tcaaaccagcctcctacacgtccacacagacacccaccccaaaccagcttcctacacgttcacacagacacgg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-72;END=953365;SUPPORT=15;COVERAGE=24,25,25,25,25;STRAND=+-;AF=0.6;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:58:10:15", + "chr16\t953349\tSniffles2.DEL.75SF\tgttcacacagacacggaccccaaaccagcctcctacacgtccacacagacacccaccccaaaccagcctcctacacgttcacacagacacggaccccacaccagcctcctacacgtccacacagacacccaccccaaaccagcctcctgcacgtccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacacgtccacacagacacccactccaaaccagcctcctacacgtccacacagacaccccaaaccagcctcctacatgtccacacagacacccaccccaaaccagcctcctacatgtccacacagacacccaccccaaaccagcctcctacatgtccacacagacacccaccccaaaccagcctcctacat\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-440;END=953789;SUPPORT=9;COVERAGE=25,25,25,25,25;STRAND=+-;AF=0.36;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:45:16:9", + "chr16\t953507\tSniffles2.DEL.73SF\tacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacacgtccacacag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-106;END=953613;SUPPORT=15;COVERAGE=25,25,25,25,25;STRAND=+-;AF=0.6;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:58:10:15", + "chr16\t954972\tSniffles2.INS.41SF\tN\tCTAAGCGAACCAGACACGTTACATAAAATGCGTGCCTGCAGCAGACGGGGTCTGTGCACACACACACACAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=71;END=954972;SUPPORT=13;COVERAGE=25,24,24,26,26;STRAND=+-;AF=0.542;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:60:11:13", + "chr16\t955127\tSniffles2.INS.44SF\tN\tAACCAGACACGTTACATAAAATGCGTGCCTGCTGCAGACGTGGTGTGTGTATACACACACACACATCTAAGTAAACCAGACACGTTACATAAAATGCGTGCCCGCAGCAGACGTAGTGTGTGCATCCACACACACACATCTAAGTAAACTAGACACGTTACATAAAATGCGTGCCCACAGCAGACGCGGTGTGTGCGTACACACACACACATCTAAGTAAACTAGACACGTTACATAAAATGCGTGCCCGCAGCAGACGCAGTGTGTGCATACACATCTAAGTG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=284;END=955127;SUPPORT=13;COVERAGE=27,26,26,26,27;STRAND=+-;AF=0.5;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:60:13:13", + "chr16\t955473\tSniffles2.INS.45SF\tN\tACACACACACACACACATCTAAGTGAACCAGACACGTTACATAAAATGCGTGCCTGCAGCAGATGCGGTGTGTGCATACACACACACACATCTAAGTAAACCAGACACGTTACATAAAATGCGTGCCTGCAGCAGACGTAGTGTGTGCATCCACACACACACATCTAAGTAAACTAGACACGTTACATAAAATGCGTGCCCGCAGCAGAGACGGTGTGTGCGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=223;END=955473;SUPPORT=15;COVERAGE=24,26,26,27,27;STRAND=+-;AF=0.577;STDEV_LEN=0.5;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:60:11:15", + "chr16\t955933\tSniffles2.INS.46SF\tN\tCACGGCACCCACCCCACGACGGCTCTCTCACATCCACAGGTCTCCGAGTTCACGTCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=57;END=955933;SUPPORT=12;COVERAGE=26,27,27,29,29;STRAND=+-;AF=0.444;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:60:15:12", "chr16\t956173\tSniffles2.INS.47SF\tN\tCCCACGACGGCTCTCTCACATCCACAGGTCTCCGAGTTCACGTCTCACGGCGCCCA\t60\tGT\tPRECISE;SVTYPE=INS;SVLEN=57;END=956173;SUPPORT=5;COVERAGE=27,29,29,29,29;STRAND=+-;AF=0.172;STDEV_LEN=0.577;STDEV_POS=10.392;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/0:16:24:5", - "chr16\t960401\tSniffles2.DEL.7CSF\tacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacaacactggatcacaacccagacaccatctcatggtgacaacacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacaacacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacaacacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagac\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-864;END=961265;SUPPORT=13;COVERAGE=31,31,31,30,30;STRAND=+-;AF=0.419;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/1:60:18:13", - "chr16\t960535\tSniffles2.DEL.78SF\tcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacaacacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-262;END=960797;SUPPORT=14;COVERAGE=31,31,31,31,30;STRAND=+-;AF=0.452;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/1:60:17:14", - "chr16\t961793\tSniffles2.DEL.7ESF\tacagactcacggtgacagcacgggatcacgacccag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-36;END=961829;SUPPORT=13;COVERAGE=30,30,30,30,30;STRAND=+-;AF=0.433;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/1:60:17:13", - "chr16\t961981\tSniffles2.DEL.7FSF\tacagactcacggtgacagcacgggatcaccacccag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-36;END=962017;SUPPORT=12;COVERAGE=30,30,30,30,30;STRAND=+-;AF=0.400;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/1:60:18:12", - "chr16\t1075978\tSniffles2.INS.4ASF\tN\tCCCTCCTCCCCTCCCCCTCCTTTCCCTCCCTCTCTCCCTCTCTCCTCCCCGCCTCCCCATCCCTCTCCCTCTCCCTCCTCTCTCTCTCCCCTACCCTGTCTTTCTCTCTGCCTCCCCGCCTCCCCTTCCCTCTCCCCATACCCTGTCTTTCTCTCTCCCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=160;END=1075978;SUPPORT=5;COVERAGE=8,5,5,5,4;STRAND=+-;AF=1.000;STDEV_LEN=1.155;STDEV_POS=8.737;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:13:0:5", - "chr16\t1076128\tSniffles2.DEL.84SF\tcctccccgcctccccatccctctccctctccctcctctctctctccccctaccctgttttctctctc\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-67;END=1076195;SUPPORT=2;COVERAGE=6,5,4,4,3;STRAND=+;AF=0.500;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/1:14:2:2", - "chr16\t1190923\tSniffles2.INS.4ESF\tN\tGGGTTTCGCTGACCCAGCAGGCTGGCCTGGTTGTGTGGCCTCAGGCACACTCGGGGTTTCGGTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTCTGACTCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTCTGACTCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTCTTACTCAGCAGGCTGGCCTGGCTGTGTGGCCTCCGGCACACTCGGGGTCTCTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTTTCGGTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCAGGGTTTTGGTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTTGGGGTCTCTGACCCAGTAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=523;END=1190923;SUPPORT=3;COVERAGE=10,10,10,10,11;STRAND=+;AF=0.300;STDEV_LEN=2.646;STDEV_POS=50.013;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:10:7:3", - "chr16\t1191001\tSniffles2.DEL.86SF\tcctggctgtgtggcctcaggcacactcggggtctctgacccagcaggctggcctggctgtgtggcctcaggcacactcggggtctctctgactcagcaggctggcctggctgtgtggcctcaggcacactcggggtctctctgactcagcaggctggcctggctgtgtggcctcaggcacactcggggtctctcttactcagcaggctgg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-210;END=1191211;SUPPORT=7;COVERAGE=10,10,11,11,11;STRAND=+-;AF=0.636;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/1:20:4:7", - "chr16\t1204953\tSniffles2.INS.50SF\tN\tGGGCCCCAGATCAGTGCCGGGGAGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGGCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGGCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=418;END=1204953;SUPPORT=8;COVERAGE=17,16,15,15,15;STRAND=+-;AF=0.533;STDEV_LEN=0.816;STDEV_POS=64.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:47:7:8", - "chr16\t1204961\tSniffles2.INS.4FSF\tN\tAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=209;END=1204961;SUPPORT=8;COVERAGE=17,16,15,15,15;STRAND=+-;AF=0.533;STDEV_LEN=0.577;STDEV_POS=91.065;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:47:7:8", - "chr16\t1231234\tSniffles2.INS.52SF\tN\tCCCAGCTCCCCATGGACTAGTCCCAGCCCCAGCCCAGCTCCCCATGGTCTCACCCCCAGCCCCAGCCCAGCTCCCCATGGACTAGTCCCATCCCCCGGCCCCAGCTCCCCATGGTCTCACCCCCAGCTCCA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=132;END=1231234;SUPPORT=4;COVERAGE=14,14,14,14,14;STRAND=-;AF=0.286;STDEV_LEN=0.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:12:10:4", - "chr16\t1231416\tSniffles2.INS.53SF\tN\tCTCACCCCCAGCCCCAGCCCAGCTCCCCATGGACTAGTCGCAGCCCCCGGCCCCAGCTCCCCATGGTCTCACCCCCAGCTCCCCATGGACTAGTCCCAGCCCCAGCCCAGCTCCCCATGGTCTCACCCCCAGCCCCAGCCCAGCTCCCCATGGACTAGTCCCAGCCCCCGGCCCCAGCTCCCCATGGTCTCACCCCCAGCTCCAGCCCAGCTCCCCATGGACTAGTCCCAGCCCCAGCCCAGCTCCCCATGGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=252;END=1231416;SUPPORT=4;COVERAGE=14,14,14,14,13;STRAND=-;AF=0.286;STDEV_LEN=0.707;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:12:10:4", - "chr16\t1248124\tSniffles2.DEL.8CSF\tcactcacacatgtacacatgtgtgtgcacacacgcacacatatg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-44;END=1248168;SUPPORT=4;COVERAGE=1,4,4,4,5;STRAND=+-;AF=1.000;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t1/1:11:0:4", - "chr16\t1248322\tSniffles2.DEL.8DSF\tgcacatatgcacacacggatgttcacatgcacacacgaacacatgcacacattcacaca\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-59;END=1248381;SUPPORT=4;COVERAGE=4,4,4,4,6;STRAND=+-;AF=1.000;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t1/1:11:0:4", - "chr16\t1254908\tSniffles2.DEL.8ESF\tccatggggagctggggccgggggctgggactagtccatggggagctgggctggggctgggggtgaga\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-67;END=1254975;SUPPORT=8;COVERAGE=14,14,14,14,14;STRAND=+-;AF=0.571;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/1:37:6:8", - "chr16\t1254975\tSniffles2.INS.57SF\tN\tCCATGGGGAGCTGGGCTGGGGCTGGGACTAGTCCATGGGGAGCTGGGCTGGGGCTGGGACTAGTTCATGGGGAGCTGGGCTGGGGCTGGGACTAGTTCATGGGAGCTGGGCTGGGGCTGGGACTAGTCCATGGGGAGCTGGGCTGGGGCTGGGACTAGTTCATGGGGAGCTGGGCTGGGGCTGGGGGTGAGTCCATGGGGAGCTGGGCTGGGGCTGGGGGTGAGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=225;END=1254975;SUPPORT=6;COVERAGE=14,14,14,14,14;STRAND=+-;AF=0.429;STDEV_LEN=0.577;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:37:8:6", - "chr16\t1258684\tSniffles2.INS.58SF\tN\tTGAGCCCCCTCCCCCACCCTGAGCCCCCTCCCCTGTCTTGAGCCCCTGCTCCATCCTGAGTCCCCTCCCCCACACTGAGCCCCCTCCCCTTTCTTGAGCCCCTCATCCATCCTGAGCCCCTCCTCCATCCTGAGCCCCCTCCCCCATCCTGGGCCCCCTCCCCTTTCTTGAGCCCCCCTCCCCCACCCTGAGCCCCCTCCCCTTTCTTGAGCCCCCTCCCCCACCTGAGCCCCTTCCCCTTTCTTGAGTCCCTCCTCCATCCTGAGCCCCCTCCCCTTTCTTGAGCCCCTCCTCCACCCTCAGCCCCCTCCCCTTTCTTGAGCCCCTCCTCCACCCTCAGCCCCCTCCCCTTTCT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=355;END=1258684;SUPPORT=14;COVERAGE=14,14,14,14,14;STRAND=+-;AF=1.000;STDEV_LEN=37.175;STDEV_POS=1.690;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:39:0:14", - "chr16\t1260690\tSniffles2.INS.59SF\tN\tAGCCCGGAGACCCACGTCCACACACAGCCCGGAGACCCACATCCACACAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=50;END=1260690;SUPPORT=7;COVERAGE=15,15,15,16,16;STRAND=+-;AF=0.467;STDEV_LEN=0.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:47:8:7", - "chr16\t1264730\tSniffles2.DEL.90SF\ttgtgtgtatgcgtgtgcatatgtaaggatgtgtgcg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-36;END=1264766;SUPPORT=6;COVERAGE=15,15,13,12,12;STRAND=+-;AF=0.462;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/1:40:7:6", - "chr16\t1308390\tSniffles2.DEL.91SF\ttgagtgagggagggaatgagtgagggagggaatgag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-36;END=1308426;SUPPORT=12;COVERAGE=12,12,12,12,12;STRAND=+-;AF=1.000;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t1/1:33:0:12", - "chr16\t1345656\tSniffles2.INS.5BSF\tN\tGCAACCCCAGCCTCCCCAGCCTCCCCAGCAACCCCAGCCTCCCCAGCAACCCCAGCCTCCTCA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=63;END=1345656;SUPPORT=14;COVERAGE=26,26,26,25,24;STRAND=+-;AF=0.538;STDEV_LEN=0.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:60:12:14" - ], - [ - "##fileformat=VCFv4.2", - "##source=Sniffles2_2.0.7", - "##command=\"/usr/local/bin/sniffles --input HG002_ONT.bam --reference hg38.test.fa -t 4 --vcf test_2.vcf.gz --snf test_2.snf\"" + "chr16\t960401\tSniffles2.DEL.7CSF\tacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacaacactggatcacaacccagacaccatctcatggtgacaacacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacaacacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacaacacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagac\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-864;END=961265;SUPPORT=13;COVERAGE=31,31,31,30,30;STRAND=+-;AF=0.419;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:60:18:13", + "chr16\t960535\tSniffles2.DEL.78SF\tcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacaacacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-262;END=960797;SUPPORT=14;COVERAGE=31,31,31,31,30;STRAND=+-;AF=0.452;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:60:17:14", + "chr16\t961793\tSniffles2.DEL.7ESF\tacagactcacggtgacagcacgggatcacgacccag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-36;END=961829;SUPPORT=13;COVERAGE=30,30,30,30,30;STRAND=+-;AF=0.433;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:60:17:13", + "chr16\t961981\tSniffles2.DEL.7FSF\tacagactcacggtgacagcacgggatcaccacccag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-36;END=962017;SUPPORT=12;COVERAGE=30,30,30,30,30;STRAND=+-;AF=0.4;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:60:18:12", + "chr16\t1075978\tSniffles2.INS.4ASF\tN\tCCCTCCTCCCCTCCCCCTCCTTTCCCTCCCTCTCTCCCTCTCTCCTCCCCGCCTCCCCATCCCTCTCCCTCTCCCTCCTCTCTCTCTCCCCTACCCTGTCTTTCTCTCTGCCTCCCCGCCTCCCCTTCCCTCTCCCCATACCCTGTCTTTCTCTCTCCCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=160;END=1075978;SUPPORT=5;COVERAGE=8,5,5,5,4;STRAND=+-;AF=1;STDEV_LEN=1.155;STDEV_POS=8.737;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:13:0:5", + "chr16\t1076128\tSniffles2.DEL.84SF\tcctccccgcctccccatccctctccctctccctcctctctctctccccctaccctgttttctctctc\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-67;END=1076195;SUPPORT=2;COVERAGE=6,5,4,4,3;STRAND=+;AF=0.5;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:14:2:2", + "chr16\t1190923\tSniffles2.INS.4ESF\tN\tGGGTTTCGCTGACCCAGCAGGCTGGCCTGGTTGTGTGGCCTCAGGCACACTCGGGGTTTCGGTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTCTGACTCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTCTGACTCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTCTTACTCAGCAGGCTGGCCTGGCTGTGTGGCCTCCGGCACACTCGGGGTCTCTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTTTCGGTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCAGGGTTTTGGTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTTGGGGTCTCTGACCCAGTAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=523;END=1190923;SUPPORT=3;COVERAGE=10,10,10,10,11;STRAND=+;AF=0.3;STDEV_LEN=2.646;STDEV_POS=50.013;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:10:7:3", + "chr16\t1191001\tSniffles2.DEL.86SF\tcctggctgtgtggcctcaggcacactcggggtctctgacccagcaggctggcctggctgtgtggcctcaggcacactcggggtctctctgactcagcaggctggcctggctgtgtggcctcaggcacactcggggtctctctgactcagcaggctggcctggctgtgtggcctcaggcacactcggggtctctcttactcagcaggctgg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-210;END=1191211;SUPPORT=7;COVERAGE=10,10,11,11,11;STRAND=+-;AF=0.636;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:20:4:7", + "chr16\t1204953\tSniffles2.INS.50SF\tN\tGGGCCCCAGATCAGTGCCGGGGAGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGGCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGGCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=418;END=1204953;SUPPORT=8;COVERAGE=17,16,15,15,15;STRAND=+-;AF=0.533;STDEV_LEN=0.816;STDEV_POS=64;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:47:7:8" ], [ "##contig=", @@ -542,7 +522,6 @@ "##FORMAT=", "##FORMAT=", "##FORMAT=", - "##FILTER=", "##FILTER=", "##FILTER=", "##FILTER=", @@ -572,126 +551,122 @@ "##INFO=", "##INFO=", "##INFO=", - "#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO\tFORMAT\tSAMPLE", + "##bcftools_viewVersion=1.20+htslib-1.20" + ], + [ + "#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO\tFORMAT\ttest_2", "chr16\t81981\tSniffles2.INS.1SF\tN\tCTTGATCACCCTACCTCCGGGAAGGCCTCCTGAATGCTCCCCACGCTGGCCCC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=56;END=81981;SUPPORT=10;COVERAGE=21,21,21,21,23;STRAND=+-;AF=0.476;STDEV_LEN=1.952;STDEV_POS=96.236;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:60:11:10", - "chr16\t82055\tSniffles2.INS.3SF\tN\tCTCCGGGAAGCCCTCCTGAATGCTCCCCACGCTGGCCCCTTCTTCCCACCACCCTACCTCCAGGAAGCCCTCCTGAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTATCTCCGGGAAGGCCTCCTCCCTATGCTCCCCACACTGACCCCTTCTTCCCACCACCCTACCTCCGGGAAGGCCTCCTGAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTATCTCCGGGAAGGCCTCCTGAATGCTCCCCACACTGACCCCTTCTTCCCACCACCCTACCTCCGGGAAGGCCTCCTGAGTCACCCGCGCTGACCCCTTCTTCCCACCACCCTATCTCCGGGAAGCCCTCCTAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTAT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=391;END=82055;SUPPORT=7;COVERAGE=20,21,21,22,23;STRAND=+-;AF=0.333;STDEV_LEN=4.147;STDEV_POS=104.550;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:30:14:7", + "chr16\t82055\tSniffles2.INS.3SF\tN\tCTCCGGGAAGCCCTCCTGAATGCTCCCCACGCTGGCCCCTTCTTCCCACCACCCTACCTCCAGGAAGCCCTCCTGAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTATCTCCGGGAAGGCCTCCTCCCTATGCTCCCCACACTGACCCCTTCTTCCCACCACCCTACCTCCGGGAAGGCCTCCTGAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTATCTCCGGGAAGGCCTCCTGAATGCTCCCCACACTGACCCCTTCTTCCCACCACCCTACCTCCGGGAAGGCCTCCTGAGTCACCCGCGCTGACCCCTTCTTCCCACCACCCTATCTCCGGGAAGCCCTCCTAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTAT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=391;END=82055;SUPPORT=7;COVERAGE=20,21,21,22,23;STRAND=+-;AF=0.333;STDEV_LEN=4.147;STDEV_POS=104.55;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:30:14:7", "chr16\t82180\tSniffles2.INS.2SF\tN\tCTCCTGAATGCTCCCCACACTGACCCCTTCTTCCCACCACCCTACCTCCGGGAAGGAATGCTCCCCACACTGACCCCTTCTTCCCACCACCCTACCTCCGGGGAAGGCCCCTC\t60\tGT\tIMPRECISE;SVTYPE=INS;SVLEN=111;END=82180;SUPPORT=3;COVERAGE=20,21,22,23,23;STRAND=+-;AF=0.136;STDEV_LEN=3.055;STDEV_POS=113.212;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/0:22:19:3", "chr16\t153120\tSniffles2.INS.6SF\tN\tACAGTGGGGAGGGGACAGTGGGGAGAGGACAGTAAGGAGGGGACCATGGGGAGGAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=56;END=153120;SUPPORT=13;COVERAGE=14,14,14,14,14;STRAND=+-;AF=0.929;STDEV_LEN=0.916;STDEV_POS=1.061;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:26:1:13", "chr16\t160091\tSniffles2.INS.CSF\tN\tTGAGAGGTGCCCGGGACGGCTTGTGGGACACAGGTTGTGAGAGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTGTGAGACGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGAGATGCCCAGGACGGCTTGTGGGGAACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGATGGCTTGTGGGGCACAGGTTG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=584;END=160091;SUPPORT=15;COVERAGE=18,19,19,20,20;STRAND=+-;AF=0.789;STDEV_LEN=1.356;STDEV_POS=10.025;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:1:4:15", - "chr16\t160389\tSniffles2.INS.BSF\tN\tGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGCTGCAAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGATGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCTGGGACGGCTTGTGGGGCACAGGTTGTGAGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=328;END=160389;SUPPORT=15;COVERAGE=19,20,20,21,19;STRAND=+-;AF=0.750;STDEV_LEN=0.744;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:8:5:15", - "chr16\t160753\tSniffles2.INS.9SF\tN\tGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCAGGATGGCTTGTGGGGCACAGGCTGCAAGAGGTGCCCAGGACGGCTTGTGGGGCACAGGTTGTGAGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=145;END=160753;SUPPORT=17;COVERAGE=20,19,19,19,20;STRAND=+-;AF=0.895;STDEV_LEN=1.612;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:27:2:17", - "chr16\t163320\tSniffles2.DEL.8FSF\tagtgagtaggagacagtggggagaggacagtggagaggggacagtgaggaggggaccatgggaaggggaccgtggagtggggacagtgaggaggggaccatagggagggga\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-111;END=163431;SUPPORT=8;COVERAGE=19,19,19,19,18;STRAND=+-;AF=0.421;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/1:49:11:8", - "chr16\t163594\tSniffles2.DEL.92SF\tggggaccgtgggaaggagacagtgaggaggggaccttggggaggggacagtgaggaggggaccatggggaggggacagtgaggaggggacaatggagaggggacagtgaggaggggactgtggggagaggacagtgaggaggggaccatggggagggcacagtggggaggggagagtgaggaagggacagtgaggaggggactgtgggg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-209;END=163803;SUPPORT=8;COVERAGE=20,19,19,18,18;STRAND=+-;AF=0.421;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/1:49:11:8", + "chr16\t160389\tSniffles2.INS.BSF\tN\tGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGCTGCAAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGATGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCTGGGACGGCTTGTGGGGCACAGGTTGTGAGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=328;END=160389;SUPPORT=15;COVERAGE=19,20,20,21,19;STRAND=+-;AF=0.75;STDEV_LEN=0.744;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:8:5:15", + "chr16\t160753\tSniffles2.INS.9SF\tN\tGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCAGGATGGCTTGTGGGGCACAGGCTGCAAGAGGTGCCCAGGACGGCTTGTGGGGCACAGGTTGTGAGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=145;END=160753;SUPPORT=17;COVERAGE=20,19,19,19,20;STRAND=+-;AF=0.895;STDEV_LEN=1.612;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:27:2:17", + "chr16\t163320\tSniffles2.DEL.8FSF\tagtgagtaggagacagtggggagaggacagtggagaggggacagtgaggaggggaccatgggaaggggaccgtggagtggggacagtgaggaggggaccatagggagggga\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-111;END=163431;SUPPORT=8;COVERAGE=19,19,19,19,18;STRAND=+-;AF=0.421;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:49:11:8", + "chr16\t163594\tSniffles2.DEL.92SF\tggggaccgtgggaaggagacagtgaggaggggaccttggggaggggacagtgaggaggggaccatggggaggggacagtgaggaggggacaatggagaggggacagtgaggaggggactgtggggagaggacagtgaggaggggaccatggggagggcacagtggggaggggagagtgaggaagggacagtgaggaggggactgtgggg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-209;END=163803;SUPPORT=8;COVERAGE=20,19,19,18,18;STRAND=+-;AF=0.421;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:49:11:8", "chr16\t164801\tSniffles2.INS.ESF\tN\tCGGGGGCGGCCGGGCGGGGGCCGGGTCGCGGGGCGGGGTTGCGGGGGCGGGGCGAGGTC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=59;END=164801;SUPPORT=8;COVERAGE=18,18,18,18,17;STRAND=+-;AF=0.444;STDEV_LEN=5.565;STDEV_POS=38.821;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:52:10:8", - "chr16\t182789\tSniffles2.INS.FSF\tN\tTGAAACACCGTCTCTACTAAAAATACAAAAATTAGCCAGGCATAGTGGCGGGCGCCTGTAATCCCAGCTGTTCGGGAGGCTGAGGCAGGACAATCACTTAAACCAGGGAAGCAGAGGTTGCAGTGAGCTGAGATCGAGCCACTGCACTCCAGCCTGGGCGACAGACCGAGACTGTCTCAAAAAAAAGACCGGGCACGGTGGCTCACGCCTGTAATCCCACCACTTTGGGAGGCTGAGGCGGGCTGATCACGATGTCAGGAGATCTAGACCATCCTGGCCAACATGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=286;END=182789;SUPPORT=8;COVERAGE=10,10,10,10,10;STRAND=+-;AF=0.800;STDEV_LEN=0.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:2:2:8", - "chr16\t186313\tSniffles2.DEL.96SF\tgcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacgggggga\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-830;END=187143;SUPPORT=7;COVERAGE=10,10,10,10,10;STRAND=+-;AF=0.700;STDEV_LEN=9.815;STDEV_POS=21.245\tGT:GQ:DR:DV\t0/1:10:3:7", - "chr16\t239176\tSniffles2.INS.10SF\tN\tTGTAGTCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATGGCGTGAACCCGGGAGGCGGGGCTTGCAGTGAGCCGAGATCACGCCACTACACTCGAGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAAAAGCAAACATAATGAAAATTAAAAAATTTTTAAAAAAACCCTGCAAACTTGGTGAATTTTTTACCGACTCGTGCTTTGCAAAATTCTTCATGGAACTTAGATTATATCAGGAAGATGTTAAAAAAAAAAAAAAAAAAAAGAATGCTGACTCCTAACCAAATAACTATGAAGCAGATGCTGAGAGATCAAAGGAGCAAATCTAAAAATCATCAGAGATGGGGCCTGGGGGAGAAGTATGCTGGCTTATAGATGAAAATGACTGGCTCTGTGTTGATAACTGTTGATAACTGTTGGACCTGGGTAATGGGTTTATGAGGCTGGTGTTCTCTACTTTTGTTAATGTTTGAGCATTTACATAATAAAGGTTTTTTTTTTTCATTGTATATAGAAATGGACTCACTATGTTGCCCAGGCTGGCCTCAAATTCCCGGGCTCAAGTAGTCCTCCCTCCTCTGCCTCTTGAAGTGCTGAGATTATAGGCATGAGACACCACACCTGGATCAAAGGTTAAAAAAATAATGATAAAAGAAGTAAGTTGAGGCTACTGTGGGCACACTGCCCATGGGTTAGCCCTGCTGTGCAAGGATCAGAAAAAAAAAAAAAAAAGAAATTGAAGCTAAGGCCTAATTAACTGGCTTATCTTGTAGAGTTTAGCAGAAGTGACCAAGTTTAGAGTTATACTTTATCTTTTTCTTTCTCTGCCCCCTACTTAATGAAGGACAAAAATGAGTAACATGGCTGGGTGTGGTGGCTCACGCCTGTCATCCCAGCACTTTGGGAGGCCGAGGTGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCATGGCCAACATGATGAAACCAAAATACAAAAGTTAGCCAGGCGTGGTGGCGGGCGTA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=1020;END=239176;SUPPORT=2;COVERAGE=2,2,2,2,4;STRAND=+;AF=1.000;STDEV_LEN=1.414;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:5:0:2", - "chr16\t318898\tSniffles2.INS.12SF\tN\tGCCAGGGCCTTGGTGAGAGCGGCTCTGACCCCTGGCTGTGCGGAGAGAATGCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=53;END=318898;SUPPORT=4;COVERAGE=12,12,12,12,12;STRAND=+-;AF=0.333;STDEV_LEN=2.082;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:17:8:4", - "chr16\t321645\tSniffles2.INS.13SF\tN\tGGATTCCAACCCACGAAGGGTTAAACCCTCTCATAGCTGGGAATATGAGGTAGAAGGCGGATGCCAACCCACGAAGGGTTAAACCCTCTCATAGCTGGGAATATGAGGTAGAAGGC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=116;END=321645;SUPPORT=8;COVERAGE=16,16,16,15,16;STRAND=+-;AF=0.500;STDEV_LEN=0.548;STDEV_POS=45.616;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:57:8:8", - "chr16\t362984\tSniffles2.INS.14SF\tN\tTCCCAGGACTTAGCACCGGGGGGTCTCGGGCTGCGGCTGCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=41;END=362984;SUPPORT=12;COVERAGE=20,20,20,20,19;STRAND=+-;AF=0.600;STDEV_LEN=0.408;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:46:8:12", - "chr16\t370391\tSniffles2.INS.16SF\tN\tCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCTCCTAACCCGGCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCCCTACCCCTGCCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCCCTACCCGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGGCTCTCACT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=648;END=370391;SUPPORT=12;COVERAGE=18,15,15,15,18;STRAND=+-;AF=0.800;STDEV_LEN=59.300;STDEV_POS=1.069;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:3:3:12", - "chr16\t378308\tSniffles2.INS.18SF\tN\tCCACTCTGACTGCCATCGCCACTCTGACTGCCATCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=36;END=378308;SUPPORT=8;COVERAGE=19,18,18,18,18;STRAND=+-;AF=0.444;STDEV_LEN=0.447;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:52:10:8", - "chr16\t378517\tSniffles2.INS.1ASF\tN\tGCCATCGCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCTGACTGCCATCGCCACCCACACTGCCATCCCCACCCGCACTGCCATCGCCACCCTGACTGCCATCGCCACCCACAATGCCATCCCCACCCGCACTGCCATCGCCACCCGCACTGCCATCCCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCACACTGCCATC\t60\tGT\tPRECISE;SVTYPE=INS;SVLEN=240;END=378517;SUPPORT=3;COVERAGE=19,18,18,18,18;STRAND=+-;AF=0.167;STDEV_LEN=0.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/0:11:15:3", + "chr16\t182789\tSniffles2.INS.FSF\tN\tTGAAACACCGTCTCTACTAAAAATACAAAAATTAGCCAGGCATAGTGGCGGGCGCCTGTAATCCCAGCTGTTCGGGAGGCTGAGGCAGGACAATCACTTAAACCAGGGAAGCAGAGGTTGCAGTGAGCTGAGATCGAGCCACTGCACTCCAGCCTGGGCGACAGACCGAGACTGTCTCAAAAAAAAGACCGGGCACGGTGGCTCACGCCTGTAATCCCACCACTTTGGGAGGCTGAGGCGGGCTGATCACGATGTCAGGAGATCTAGACCATCCTGGCCAACATGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=286;END=182789;SUPPORT=8;COVERAGE=10,10,10,10,10;STRAND=+-;AF=0.8;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:2:2:8", + "chr16\t186313\tSniffles2.DEL.96SF\tgcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacgggggga\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-830;END=187143;SUPPORT=7;COVERAGE=10,10,10,10,10;STRAND=+-;AF=0.7;STDEV_LEN=9.815;STDEV_POS=21.245\tGT:GQ:DR:DV\t0/1:10:3:7", + "chr16\t239176\tSniffles2.INS.10SF\tN\tTGTAGTCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATGGCGTGAACCCGGGAGGCGGGGCTTGCAGTGAGCCGAGATCACGCCACTACACTCGAGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAAAAGCAAACATAATGAAAATTAAAAAATTTTTAAAAAAACCCTGCAAACTTGGTGAATTTTTTACCGACTCGTGCTTTGCAAAATTCTTCATGGAACTTAGATTATATCAGGAAGATGTTAAAAAAAAAAAAAAAAAAAAGAATGCTGACTCCTAACCAAATAACTATGAAGCAGATGCTGAGAGATCAAAGGAGCAAATCTAAAAATCATCAGAGATGGGGCCTGGGGGAGAAGTATGCTGGCTTATAGATGAAAATGACTGGCTCTGTGTTGATAACTGTTGATAACTGTTGGACCTGGGTAATGGGTTTATGAGGCTGGTGTTCTCTACTTTTGTTAATGTTTGAGCATTTACATAATAAAGGTTTTTTTTTTTCATTGTATATAGAAATGGACTCACTATGTTGCCCAGGCTGGCCTCAAATTCCCGGGCTCAAGTAGTCCTCCCTCCTCTGCCTCTTGAAGTGCTGAGATTATAGGCATGAGACACCACACCTGGATCAAAGGTTAAAAAAATAATGATAAAAGAAGTAAGTTGAGGCTACTGTGGGCACACTGCCCATGGGTTAGCCCTGCTGTGCAAGGATCAGAAAAAAAAAAAAAAAAGAAATTGAAGCTAAGGCCTAATTAACTGGCTTATCTTGTAGAGTTTAGCAGAAGTGACCAAGTTTAGAGTTATACTTTATCTTTTTCTTTCTCTGCCCCCTACTTAATGAAGGACAAAAATGAGTAACATGGCTGGGTGTGGTGGCTCACGCCTGTCATCCCAGCACTTTGGGAGGCCGAGGTGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCATGGCCAACATGATGAAACCAAAATACAAAAGTTAGCCAGGCGTGGTGGCGGGCGTA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=1020;END=239176;SUPPORT=2;COVERAGE=2,2,2,2,4;STRAND=+;AF=1;STDEV_LEN=1.414;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:5:0:2", + "chr16\t318898\tSniffles2.INS.12SF\tN\tGCCAGGGCCTTGGTGAGAGCGGCTCTGACCCCTGGCTGTGCGGAGAGAATGCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=53;END=318898;SUPPORT=4;COVERAGE=12,12,12,12,12;STRAND=+-;AF=0.333;STDEV_LEN=2.082;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:17:8:4", + "chr16\t321645\tSniffles2.INS.13SF\tN\tGGATTCCAACCCACGAAGGGTTAAACCCTCTCATAGCTGGGAATATGAGGTAGAAGGCGGATGCCAACCCACGAAGGGTTAAACCCTCTCATAGCTGGGAATATGAGGTAGAAGGC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=116;END=321645;SUPPORT=8;COVERAGE=16,16,16,15,16;STRAND=+-;AF=0.5;STDEV_LEN=0.548;STDEV_POS=45.616;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:57:8:8", + "chr16\t362984\tSniffles2.INS.14SF\tN\tTCCCAGGACTTAGCACCGGGGGGTCTCGGGCTGCGGCTGCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=41;END=362984;SUPPORT=12;COVERAGE=20,20,20,20,19;STRAND=+-;AF=0.6;STDEV_LEN=0.408;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:46:8:12", + "chr16\t370391\tSniffles2.INS.16SF\tN\tCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCTCCTAACCCGGCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCCCTACCCCTGCCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCCCTACCCGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGGCTCTCACT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=648;END=370391;SUPPORT=12;COVERAGE=18,15,15,15,18;STRAND=+-;AF=0.8;STDEV_LEN=59.3;STDEV_POS=1.069;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:3:3:12", + "chr16\t378308\tSniffles2.INS.18SF\tN\tCCACTCTGACTGCCATCGCCACTCTGACTGCCATCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=36;END=378308;SUPPORT=8;COVERAGE=19,18,18,18,18;STRAND=+-;AF=0.444;STDEV_LEN=0.447;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:52:10:8", + "chr16\t378517\tSniffles2.INS.1ASF\tN\tGCCATCGCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCTGACTGCCATCGCCACCCACACTGCCATCCCCACCCGCACTGCCATCGCCACCCTGACTGCCATCGCCACCCACAATGCCATCCCCACCCGCACTGCCATCGCCACCCGCACTGCCATCCCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCACACTGCCATC\t60\tGT\tPRECISE;SVTYPE=INS;SVLEN=240;END=378517;SUPPORT=3;COVERAGE=19,18,18,18,18;STRAND=+-;AF=0.167;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/0:11:15:3", "chr16\t397727\tSniffles2.INS.1DSF\tN\tGGGGGGTGGGGGTGGGGGGGTGGGGGATGAGGGGGGTGGGGGTGGGGGTGGGGGGTGAGGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGGTGAGGGAGTGGGGGGTGGGGGTGGGGGGGTGGGGGGGTGGGGGATGAGGGGGGTGGGGGTGGGGGTGGGGGGGTGGGAGTGGGGGGTGGGGGTGGGGGTGGGGGGTGAGGGAGTAGGGGGGTGGGGGGTGGGGGTGGGGGGGTGAGGGGAGTGGGGGGTGGGGTGGGGGTGTGGGGGGGTGAGGGAGTGGGGGGTGGGTGTGGGGGGGGTGGGGGATGGGGGGGTGGGGGTGGGGGTGTGGGGGGGTGAGGGAGTGGGGGGTGGGGGTGGGGGTGGGGGGGTGGGGGTCGGGGGGGTGGGGGTGGGGGTGGGGGGGTGAGGGGAGTCGGGGGGTGGGGGTGGGGGGGTGGGGATCGGGGGGTGGGGGTGGGGGTGGGGGGCTGAGGGGAGTA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=506;END=397727;SUPPORT=11;COVERAGE=18,15,15,15,16;STRAND=+-;AF=0.733;STDEV_LEN=34.854;STDEV_POS=7.448;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:9:4:11", - "chr16\t410360\tSniffles2.DEL.99SF\ttcttccgggtgggtgcctcgtgcgctctgtgagaag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-36;END=410396;SUPPORT=7;COVERAGE=15,14,14,14,12;STRAND=+-;AF=0.500;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/1:50:7:7", - "chr16\t433138\tSniffles2.INS.21SF\tN\tATTCTCCTGCCTCAGCCTCCCAAGAAGCTGGGACTACAGGCGCCCGCCACCACGCCCGGCTAATTTTTATATTTTTAGTAGAGACGAAGTTTCACCATGTTAGCCAGGATGGTCTCCATCTCCTGACCTCGTGATCTGCCCACCTCGGCCTCCCAAAGTGCTGGGATTACAGGCATGAGCTACTGTGCCCGGCCTGTCATTTTTATATATTGGGAAAGTTTTGAGTCCTTTCTCTAGGTATGTTGAAATATACAGGCATGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGTCCGAGGCGGGTGAATCACGAGGTCAGGAGATCGAGACCATCCTGGCTAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAAAAATTAGCCAGGCATGGTGGTGGGCGCCTGTAGTCCCAGCTACTCCAGAGGCTGAGGCAGGAGAATGGCGTGAACCTGAGCTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACTGAGCAAGACTCTGTCTCAAAAAAAAAAAAAAAGAAATATACAATATATTGTTGTTAAATTTAGTCACCCTACTCTGCTACCAAACATTAGAACTTATCCTTTGTCTCATTGTAATTTTTTTTTTTTTGAGATGGGGTCTCGCTCTGTCGCCCAGGCTGGAGTGCAGTGGCGCTATCTTGGCTCACTGCAACCTCCACCTCCCAGGTTCAAGCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=725;END=433138;SUPPORT=2;COVERAGE=4,4,4,4,3;STRAND=+-;AF=0.500;STDEV_LEN=0.707;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:14:2:2", - "chr16\t433317\tSniffles2.DEL.9CSF\tcaccgctcattgcatatttctaaccattaaccgtgctctttaccctcctgatgcttcccagcctctgatatcaatcgctctattctctacctccattagatccacttttctagctcccacataagagtaaaaacgtgatatttgtctttctctgcctgtct\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-161;END=433478;SUPPORT=2;COVERAGE=4,4,4,3,3;STRAND=+-;AF=0.500;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/1:14:2:2", - "chr16\t492363\tSniffles2.INS.22SF\tN\tTCCCGGGGGACCCGAGGCCACCCCGGCCCTCCCGGGAGACCCGAGGCCGCCCAGGGCCCTCCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCGGGAGACCCGAGGCCGCCCCAAGCCCCCTCCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCGGGAGACCCGCGAGGCCGCCCAGAGCCCTCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCCGGGAGACCCGAGGCCGTCCAGGGCCCTCCCCGGGAGACCCGAGGCCGCCCAGGGCCCTTCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCGGGGAGACCCGAGGCCGCCCAGGGCCCTCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCCGGGAGACCCGGGAGCGATCCCAGGGCCCCTCCCGGGGAGACCCGAGGCCGCCCAGGGCCCTCCCCGGGAGACCCGAGGCCGCCCAGGGCCCTTCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCGGGGAGACCCGAGGCCGCCCAGGGCCCTCCCGGGAGACCCGAGGCCGCCCCAAGCCCTCCCCGGGAGACCCGAGGCCGTCCAGGGCCCTTCCCGGGGAGACCCGAGGCCGCCCAGGGCCCTCCCCGGGAGACCCGAGGCCGCCCAGGGCCCTTCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCGGGGAGACCCGAGGCCGCCCAGGGCCCTCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCCGGGAGACCCGAGGCCGCCCAGGGCCCTCCCGGGAGACCCGAGGCCGCCCAGGGCCCTCCCCGGGAGACCCGAGGCCGCCCAGGGCCCTCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCCGGGAGACCCGAGGCCGCCCAGGGCCCTCCCCGGGAGACCCGAGGCCGCCCCAGGGCCCTCCCCGGGAGACCCGAGGCCGCCCAGGGCCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=1083;END=492363;SUPPORT=2;COVERAGE=2,2,2,2,2;STRAND=+;AF=1.000;STDEV_LEN=4.243;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:5:0:2", - "chr16\t494828\tSniffles2.INS.23SF\tN\tGGGAGGTCGAGGCTGCAGAGGTGGCAGGATCACATGATCCTGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCAGAGGTGGCAGGATCACATGATCCTGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCAGAGGTGGCAGGATCACATGATCCTGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATAGCATGAGCCTGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGATCCTGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGATCCTGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGGCGGATCACATGAGCCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=2706;END=494828;SUPPORT=2;COVERAGE=2,2,2,2,2;STRAND=+;AF=1.000;STDEV_LEN=2.121;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:11:0:4", - "chr16\t504280\tSniffles2.INS.24SF\tN\tTCCCATCTCCTCCTGTACCCCCTCACCTCCTTGTGCACCCCCTCACCTCCTGTACCCCCTCACCTCCTCCTGTA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=74;END=504280;SUPPORT=7;COVERAGE=9,9,9,10,13;STRAND=+-;AF=0.778;STDEV_LEN=0.000;STDEV_POS=13.416;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:0:2:7", - "chr16\t504419\tSniffles2.INS.26SF\tN\tTCCTGTACCCCCTCACCTCCTCTTGCACCCCCCTTGCCTCCTGTACCCCCTCACCTCCTTGTGCACCCCTCACCTCCTGTACCCCCCTCACCTCCTCCTGTACCCGCCTCACCTCCTCCTGCACTCCCATCTCCTCCTGTACCCCCTCACCTCCTTGTGCACCCCCTCACCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=224;END=504419;SUPPORT=7;COVERAGE=9,10,11,11,13;STRAND=+-;AF=0.636;STDEV_LEN=15.566;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:20:4:7", - "chr16\t507740\tSniffles2.INS.28SF\tN\tCGTTTCCCGTTTTCAGTATCATCTGCCCGTTCTGAGCCATTTGCTCTCTAGCCCTACCATACAGCTGTCATCCTAAGGTCC\t60\tGT\tPRECISE;SVTYPE=INS;SVLEN=81;END=507740;SUPPORT=3;COVERAGE=14,14,14,14,16;STRAND=+;AF=0.214;STDEV_LEN=0.000;STDEV_POS=0.577;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/0:0:11:3", + "chr16\t410360\tSniffles2.DEL.99SF\ttcttccgggtgggtgcctcgtgcgctctgtgagaag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-36;END=410396;SUPPORT=7;COVERAGE=15,14,14,14,12;STRAND=+-;AF=0.5;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:50:7:7", + "chr16\t433138\tSniffles2.INS.21SF\tN\tATTCTCCTGCCTCAGCCTCCCAAGAAGCTGGGACTACAGGCGCCCGCCACCACGCCCGGCTAATTTTTATATTTTTAGTAGAGACGAAGTTTCACCATGTTAGCCAGGATGGTCTCCATCTCCTGACCTCGTGATCTGCCCACCTCGGCCTCCCAAAGTGCTGGGATTACAGGCATGAGCTACTGTGCCCGGCCTGTCATTTTTATATATTGGGAAAGTTTTGAGTCCTTTCTCTAGGTATGTTGAAATATACAGGCATGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGTCCGAGGCGGGTGAATCACGAGGTCAGGAGATCGAGACCATCCTGGCTAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAAAAATTAGCCAGGCATGGTGGTGGGCGCCTGTAGTCCCAGCTACTCCAGAGGCTGAGGCAGGAGAATGGCGTGAACCTGAGCTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACTGAGCAAGACTCTGTCTCAAAAAAAAAAAAAAAGAAATATACAATATATTGTTGTTAAATTTAGTCACCCTACTCTGCTACCAAACATTAGAACTTATCCTTTGTCTCATTGTAATTTTTTTTTTTTTGAGATGGGGTCTCGCTCTGTCGCCCAGGCTGGAGTGCAGTGGCGCTATCTTGGCTCACTGCAACCTCCACCTCCCAGGTTCAAGCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=725;END=433138;SUPPORT=2;COVERAGE=4,4,4,4,3;STRAND=+-;AF=0.5;STDEV_LEN=0.707;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:14:2:2", + "chr16\t433317\tSniffles2.DEL.9CSF\tcaccgctcattgcatatttctaaccattaaccgtgctctttaccctcctgatgcttcccagcctctgatatcaatcgctctattctctacctccattagatccacttttctagctcccacataagagtaaaaacgtgatatttgtctttctctgcctgtct\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-161;END=433478;SUPPORT=2;COVERAGE=4,4,4,3,3;STRAND=+-;AF=0.5;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:14:2:2", + "chr16\t492363\tSniffles2.INS.22SF\tN\tTCCCGGGGGACCCGAGGCCACCCCGGCCCTCCCGGGAGACCCGAGGCCGCCCAGGGCCCTCCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCGGGAGACCCGAGGCCGCCCCAAGCCCCCTCCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCGGGAGACCCGCGAGGCCGCCCAGAGCCCTCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCCGGGAGACCCGAGGCCGTCCAGGGCCCTCCCCGGGAGACCCGAGGCCGCCCAGGGCCCTTCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCGGGGAGACCCGAGGCCGCCCAGGGCCCTCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCCGGGAGACCCGGGAGCGATCCCAGGGCCCCTCCCGGGGAGACCCGAGGCCGCCCAGGGCCCTCCCCGGGAGACCCGAGGCCGCCCAGGGCCCTTCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCGGGGAGACCCGAGGCCGCCCAGGGCCCTCCCGGGAGACCCGAGGCCGCCCCAAGCCCTCCCCGGGAGACCCGAGGCCGTCCAGGGCCCTTCCCGGGGAGACCCGAGGCCGCCCAGGGCCCTCCCCGGGAGACCCGAGGCCGCCCAGGGCCCTTCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCGGGGAGACCCGAGGCCGCCCAGGGCCCTCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCCGGGAGACCCGAGGCCGCCCAGGGCCCTCCCGGGAGACCCGAGGCCGCCCAGGGCCCTCCCCGGGAGACCCGAGGCCGCCCAGGGCCCTCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCCGGGAGACCCGAGGCCGCCCAGGGCCCTCCCCGGGAGACCCGAGGCCGCCCCAGGGCCCTCCCCGGGAGACCCGAGGCCGCCCAGGGCCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=1083;END=492363;SUPPORT=2;COVERAGE=2,2,2,2,2;STRAND=+;AF=1;STDEV_LEN=4.243;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:5:0:2", + "chr16\t494828\tSniffles2.INS.23SF\tN\tGGGAGGTCGAGGCTGCAGAGGTGGCAGGATCACATGATCCTGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCAGAGGTGGCAGGATCACATGATCCTGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCAGAGGTGGCAGGATCACATGATCCTGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATAGCATGAGCCTGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGATCCTGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGATCCTGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGGCGGATCACATGAGCCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=2706;END=494828;SUPPORT=2;COVERAGE=2,2,2,2,2;STRAND=+;AF=1;STDEV_LEN=2.121;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:11:0:4", + "chr16\t504280\tSniffles2.INS.24SF\tN\tTCCCATCTCCTCCTGTACCCCCTCACCTCCTTGTGCACCCCCTCACCTCCTGTACCCCCTCACCTCCTCCTGTA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=74;END=504280;SUPPORT=7;COVERAGE=9,9,9,10,13;STRAND=+-;AF=0.778;STDEV_LEN=0;STDEV_POS=13.416;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:0:2:7", + "chr16\t504419\tSniffles2.INS.26SF\tN\tTCCTGTACCCCCTCACCTCCTCTTGCACCCCCCTTGCCTCCTGTACCCCCTCACCTCCTTGTGCACCCCTCACCTCCTGTACCCCCCTCACCTCCTCCTGTACCCGCCTCACCTCCTCCTGCACTCCCATCTCCTCCTGTACCCCCTCACCTCCTTGTGCACCCCCTCACCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=224;END=504419;SUPPORT=7;COVERAGE=9,10,11,11,13;STRAND=+-;AF=0.636;STDEV_LEN=15.566;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:20:4:7", + "chr16\t507740\tSniffles2.INS.28SF\tN\tCGTTTCCCGTTTTCAGTATCATCTGCCCGTTCTGAGCCATTTGCTCTCTAGCCCTACCATACAGCTGTCATCCTAAGGTCC\t60\tGT\tPRECISE;SVTYPE=INS;SVLEN=81;END=507740;SUPPORT=3;COVERAGE=14,14,14,14,16;STRAND=+;AF=0.214;STDEV_LEN=0;STDEV_POS=0.577;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/0:0:11:3", "chr16\t534179\tSniffles2.INS.2CSF\tN\tGGGCCGTGGTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACGGGGCCGTGTTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACGGGGCCGTGTTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACGGGGCCGTGGTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=216;END=534179;SUPPORT=15;COVERAGE=19,18,18,17,17;STRAND=+-;AF=0.833;STDEV_LEN=18.992;STDEV_POS=1.897;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:11:3:15", "chr16\t544781\tSniffles2.INS.2DSF\tN\tCGTCTCCCCCACGCCGCCTCCCCCCACGTCGCCTCCCCCCACGTCGCCTCCCCCACGCCGCCTCCCCCACGCCGCCTCCCCCACGTCGCCGCCGTCTCCCCCACGCCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGCCGCCGTCTCCCCCACGCCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGCCGCCTCCCCCACGCCGCCTCCCCTCACGTCGCCTCCCCCACGCCGTCGCCTCCCTCCACGCCGC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=348;END=544781;SUPPORT=15;COVERAGE=17,17,17,17,17;STRAND=+-;AF=0.882;STDEV_LEN=5.196;STDEV_POS=28.465;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:21:2:15", - "chr16\t550769\tSniffles2.INS.2ESF\tN\tCGGTGAGGGTCCCCGGTCGGTGAGGGCGCCCCGTCAGTGAGGGTCCCGGTCAGTGAGGGCCCCGGTCGGTGAGGGTCCCCGGTCGGTGAGGGCCCCTGTCGGTGAGGGCCCCGGTCGGTGAGGGACCCGGTCGGTGAGGGCCCCCTGTCGGTGAGGGTCCCCTGTCGGTGAGGGCCCCGGTCGGTGAGGGCCCCGGTCGGTGAGGGTCCCCTGTCGGTGAGGGTCCCCTGTCGGTGAGGGTCCCGGTCGGTGAGGGCCCCGGTCGGTGAGGGTGCCCCGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=280;END=550769;SUPPORT=21;COVERAGE=23,23,23,23,24;STRAND=+-;AF=0.913;STDEV_LEN=0.650;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:38:2:21", - "chr16\t553059\tSniffles2.INS.2FSF\tN\tCCCCCCCACCCCTGCACAGGTGCCCCCTCCCCTACCCCGCTGCACCCACACCCAAACTCGTGCCCCCCCACCCCTGCACAGGTGCCCCCTCCCCTACCCCGCTGCACCCACACCCAACTCGTGC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=122;END=553059;SUPPORT=9;COVERAGE=21,20,20,20,19;STRAND=+-;AF=0.450;STDEV_LEN=0.983;STDEV_POS=9.709;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:59:11:9", + "chr16\t550769\tSniffles2.INS.2ESF\tN\tCGGTGAGGGTCCCCGGTCGGTGAGGGCGCCCCGTCAGTGAGGGTCCCGGTCAGTGAGGGCCCCGGTCGGTGAGGGTCCCCGGTCGGTGAGGGCCCCTGTCGGTGAGGGCCCCGGTCGGTGAGGGACCCGGTCGGTGAGGGCCCCCTGTCGGTGAGGGTCCCCTGTCGGTGAGGGCCCCGGTCGGTGAGGGCCCCGGTCGGTGAGGGTCCCCTGTCGGTGAGGGTCCCCTGTCGGTGAGGGTCCCGGTCGGTGAGGGCCCCGGTCGGTGAGGGTGCCCCGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=280;END=550769;SUPPORT=21;COVERAGE=23,23,23,23,24;STRAND=+-;AF=0.913;STDEV_LEN=0.65;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:38:2:21", + "chr16\t553059\tSniffles2.INS.2FSF\tN\tCCCCCCCACCCCTGCACAGGTGCCCCCTCCCCTACCCCGCTGCACCCACACCCAAACTCGTGCCCCCCCACCCCTGCACAGGTGCCCCCTCCCCTACCCCGCTGCACCCACACCCAACTCGTGC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=122;END=553059;SUPPORT=9;COVERAGE=21,20,20,20,19;STRAND=+-;AF=0.45;STDEV_LEN=0.983;STDEV_POS=9.709;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:59:11:9", "chr16\t571110\tSniffles2.INS.30SF\tN\tTGGCTAGCCTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTGTGTGTGTCTGGCTAGCCTGGTGCCCGTGTGTGTGTGTATGTGTGTGTGTGTGTGTGTGTCTGGCTAGCCTGGCGCCCGTGGCTAGCCTGGTGCCCGTGTGTGTGTGTATGTATGTGTCTGGCTAGCCTGGTGCCCGTGGCTAGCCTGGTGCCCGTGTGTGTGTGTGTGGGGGGGCTAGCCTTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTCTGGCTAGCGTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTGTGTGTGGCTAGCCTGGCGCCCGTGTGTGTGTGTGTGTGTGTGTCTGGGTGAGCCTGGCACCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=356;END=571110;SUPPORT=8;COVERAGE=15,13,13,13,13;STRAND=+-;AF=0.615;STDEV_LEN=3.578;STDEV_POS=15.652;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:27:5:8", - "chr16\t579477\tSniffles2.DEL.A0SF\ttagaggtgccccgggcccggagactagaggtgccccgggcccggagactagaggtgccccgggcccggagact\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-73;END=579550;SUPPORT=16;COVERAGE=18,18,20,22,22;STRAND=+-;AF=0.800;STDEV_LEN=18.145;STDEV_POS=50.055\tGT:GQ:DR:DV\t1/1:4:4:16", + "chr16\t579477\tSniffles2.DEL.A0SF\ttagaggtgccccgggcccggagactagaggtgccccgggcccggagactagaggtgccccgggcccggagact\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-73;END=579550;SUPPORT=16;COVERAGE=18,18,20,22,22;STRAND=+-;AF=0.8;STDEV_LEN=18.145;STDEV_POS=50.055\tGT:GQ:DR:DV\t1/1:4:4:16", "chr16\t584946\tSniffles2.DEL.A2SF\tctcccgctccccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctccccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctccccccagctgcccaccgggtccaccaacacccccaacctgtg\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-155;END=585101;SUPPORT=18;COVERAGE=23,23,23,22,21;STRAND=+-;AF=0.783;STDEV_LEN=0.775;STDEV_POS=76.512\tGT:GQ:DR:DV\t1/1:0:5:18", - "chr16\t587440\tSniffles2.INS.33SF\tN\tTCCCTCCCTTCACTGGGCCTGCTGCCCCAGAGTCCA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=36;END=587440;SUPPORT=16;COVERAGE=20,20,18,17,17;STRAND=+-;AF=0.889;STDEV_LEN=0.000;STDEV_POS=29.087;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:24:2:16", - "chr16\t599821\tSniffles2.INS.34SF\tN\tAAGGTTTGTTTCCTCGTGGCATCAGTCAGCGTGGATTGGGCAAGGTTTTGTTCCCTCGTGGCATCAGTCAGCGTGGACG\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=81;END=599821;SUPPORT=9;COVERAGE=10,10,10,10,8;STRAND=+-;AF=0.900;STDEV_LEN=1.169;STDEV_POS=76.821;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:15:1:9", - "chr16\t606435\tSniffles2.INS.35SF\tN\tCAGTCCTGCTTTTCTTGGTCCCTCAGTCCAGTGTGGGTTTCCCTGGGCTGAAGTCAAGGTGTTGGCTGACACA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=66;END=606435;SUPPORT=10;COVERAGE=8,10,10,10,14;STRAND=+-;AF=1.000;STDEV_LEN=1.225;STDEV_POS=97.931;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:27:0:10", - "chr16\t611747\tSniffles2.DEL.A4SF\tgcctgtagattcaagagcagggacagccgccctggcctgtagaatcaagagcaagggacagccgccttc\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-69;END=611816;SUPPORT=7;COVERAGE=12,12,12,12,12;STRAND=+-;AF=0.583;STDEV_LEN=0.000;STDEV_POS=49.641\tGT:GQ:DR:DV\t0/1:30:5:7", + "chr16\t587440\tSniffles2.INS.33SF\tN\tTCCCTCCCTTCACTGGGCCTGCTGCCCCAGAGTCCA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=36;END=587440;SUPPORT=16;COVERAGE=20,20,18,17,17;STRAND=+-;AF=0.889;STDEV_LEN=0;STDEV_POS=29.087;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:24:2:16", + "chr16\t599821\tSniffles2.INS.34SF\tN\tAAGGTTTGTTTCCTCGTGGCATCAGTCAGCGTGGATTGGGCAAGGTTTTGTTCCCTCGTGGCATCAGTCAGCGTGGACG\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=81;END=599821;SUPPORT=9;COVERAGE=10,10,10,10,8;STRAND=+-;AF=0.9;STDEV_LEN=1.169;STDEV_POS=76.821;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:15:1:9", + "chr16\t606435\tSniffles2.INS.35SF\tN\tCAGTCCTGCTTTTCTTGGTCCCTCAGTCCAGTGTGGGTTTCCCTGGGCTGAAGTCAAGGTGTTGGCTGACACA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=66;END=606435;SUPPORT=10;COVERAGE=8,10,10,10,14;STRAND=+-;AF=1;STDEV_LEN=1.225;STDEV_POS=97.931;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:27:0:10", + "chr16\t611747\tSniffles2.DEL.A4SF\tgcctgtagattcaagagcagggacagccgccctggcctgtagaatcaagagcaagggacagccgccttc\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-69;END=611816;SUPPORT=7;COVERAGE=12,12,12,12,12;STRAND=+-;AF=0.583;STDEV_LEN=0;STDEV_POS=49.641\tGT:GQ:DR:DV\t0/1:30:5:7", "chr16\t611793\tSniffles2.DEL.A8SF\taagagcaagggacagccgccttcgcctgtagaatcaagagcagggacagccgccctggcctgtagaatcaagagcacgggacagccgccctggcctgtagaatcaagagcacgggacagccgccctggcctgtagaatcaagagcagggacagccgccctggcctgtagaatcaagagcaagggacagccgccctggcctgtagaatcaagagcaagggacagccgcctttgcctgtagaat\tN\t60\tGT\tPRECISE;SVTYPE=DEL;SVLEN=-242;END=612035;SUPPORT=2;COVERAGE=12,12,12,12,12;STRAND=-;AF=0.167;STDEV_LEN=0.707;STDEV_POS=7.778\tGT:GQ:DR:DV\t0/0:7:10:2", - "chr16\t611989\tSniffles2.DEL.A5SF\tgcctgtagaatcaagagcaagggacagccgccttt\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-35;END=612024;SUPPORT=4;COVERAGE=12,12,12,12,12;STRAND=+-;AF=0.333;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/1:17:8:4", - "chr16\t612007\tSniffles2.DEL.A6SF\taagggacagccgcctttgcctgtagaatcaagagcagggacagccgccctggcctgtagcatcaagagca\tN\t60\tGT\tIMPRECISE;SVTYPE=DEL;SVLEN=-70;END=612077;SUPPORT=2;COVERAGE=12,12,12,12,12;STRAND=-;AF=0.167;STDEV_LEN=1.414;STDEV_POS=26.870\tGT:GQ:DR:DV\t0/0:7:10:2", - "chr16\t612374\tSniffles2.DEL.ABSF\tttcaagagcagggacagccgccctggcctgtagaatcaagagcaagggacagccgccttcgcctgtaga\tN\t60\tGT\tPRECISE;SVTYPE=DEL;SVLEN=-69;END=612443;SUPPORT=3;COVERAGE=12,12,12,12,13;STRAND=+-;AF=0.250;STDEV_LEN=0.577;STDEV_POS=5.196\tGT:GQ:DR:DV\t0/1:4:9:3", - "chr16\t612593\tSniffles2.DEL.AFSF\tggacagccgccctggcctgtagaatcaagagcaagggacagccgcctttgcctgtagaatcaagagcagggacagctgccctggcctgtagcatcaagagca\tN\t60\tGT\tIMPRECISE;SVTYPE=DEL;SVLEN=-102;END=612695;SUPPORT=2;COVERAGE=12,12,12,12,13;STRAND=-;AF=0.167;STDEV_LEN=26.163;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/0:7:10:2", + "chr16\t611989\tSniffles2.DEL.A5SF\tgcctgtagaatcaagagcaagggacagccgccttt\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-35;END=612024;SUPPORT=4;COVERAGE=12,12,12,12,12;STRAND=+-;AF=0.333;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:17:8:4", + "chr16\t612007\tSniffles2.DEL.A6SF\taagggacagccgcctttgcctgtagaatcaagagcagggacagccgccctggcctgtagcatcaagagca\tN\t60\tGT\tIMPRECISE;SVTYPE=DEL;SVLEN=-70;END=612077;SUPPORT=2;COVERAGE=12,12,12,12,12;STRAND=-;AF=0.167;STDEV_LEN=1.414;STDEV_POS=26.87\tGT:GQ:DR:DV\t0/0:7:10:2", + "chr16\t612374\tSniffles2.DEL.ABSF\tttcaagagcagggacagccgccctggcctgtagaatcaagagcaagggacagccgccttcgcctgtaga\tN\t60\tGT\tPRECISE;SVTYPE=DEL;SVLEN=-69;END=612443;SUPPORT=3;COVERAGE=12,12,12,12,13;STRAND=+-;AF=0.25;STDEV_LEN=0.577;STDEV_POS=5.196\tGT:GQ:DR:DV\t0/1:4:9:3", + "chr16\t612593\tSniffles2.DEL.AFSF\tggacagccgccctggcctgtagaatcaagagcaagggacagccgcctttgcctgtagaatcaagagcagggacagctgccctggcctgtagcatcaagagca\tN\t60\tGT\tIMPRECISE;SVTYPE=DEL;SVLEN=-102;END=612695;SUPPORT=2;COVERAGE=12,12,12,12,13;STRAND=-;AF=0.167;STDEV_LEN=26.163;STDEV_POS=0\tGT:GQ:DR:DV\t0/0:7:10:2", "chr16\t612625\tSniffles2.DEL.AESF\taagggacagccgcctttgcctgtagaatcaagagcagggacagctgccctggcctgtagcatcaagagca\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-70;END=612695;SUPPORT=7;COVERAGE=12,12,12,12,13;STRAND=+-;AF=0.583;STDEV_LEN=0.894;STDEV_POS=2.683\tGT:GQ:DR:DV\t0/1:30:5:7", - "chr16\t631728\tSniffles2.DEL.B3SF\tcttctcccaccccttcactgcctctccttccatcctctcctcccaccctctcctcccatccactcctcccatccacttcttccatcct\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-88;END=631816;SUPPORT=14;COVERAGE=13,13,12,14,12;STRAND=+-;AF=1.000;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t1/1:39:0:14", + "chr16\t631728\tSniffles2.DEL.B3SF\tcttctcccaccccttcactgcctctccttccatcctctcctcccaccctctcctcccatccactcctcccatccacttcttccatcct\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-88;END=631816;SUPPORT=14;COVERAGE=13,13,12,14,12;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t1/1:39:0:14", "chr16\t660943\tSniffles2.INS.3ASF\tN\tCCCCTGTTCGGCCCCTCCCCAGGCCCCCCCCCCGCCCGGCCTCGGCCCCACCCTGTTCGGCCCCTCCCCCAGCCGGCCTCGGCCCCGCCCCCTGTTCGGCCCCTCCCCAGG\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=111;END=660943;SUPPORT=16;COVERAGE=22,22,22,22,19;STRAND=+-;AF=0.727;STDEV_LEN=9.233;STDEV_POS=23.011;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:15:6:16", - "chr16\t665215\tSniffles2.DEL.B4SF\tcctcagtctgcagcctgctagggacgcacggccacactcctgtctttcag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-50;END=665265;SUPPORT=18;COVERAGE=22,22,22,22,22;STRAND=+-;AF=0.818;STDEV_LEN=0.000;STDEV_POS=2.530\tGT:GQ:DR:DV\t1/1:10:4:18", + "chr16\t665215\tSniffles2.DEL.B4SF\tcctcagtctgcagcctgctagggacgcacggccacactcctgtctttcag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-50;END=665265;SUPPORT=18;COVERAGE=22,22,22,22,22;STRAND=+-;AF=0.818;STDEV_LEN=0;STDEV_POS=2.53\tGT:GQ:DR:DV\t1/1:10:4:18", "chr16\t696679\tSniffles2.INS.3CSF\tN\tCCCACCCCAAAGCCACCATCCGCTCCCACCTCCATAGGGTTGCTGCTGCCCGCCCCTGCCCCCCAGCCCTGTCCCCCCCACCACCCAGCCTGGGCGCACACCCCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=105;END=696679;SUPPORT=16;COVERAGE=19,19,19,19,18;STRAND=+-;AF=0.842;STDEV_LEN=0.833;STDEV_POS=22.394;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:14:3:16", - "chr16\t746243\tSniffles2.DEL.B7SF\tggttcactgcgggtctgcctggctgggcagcaggagaggaggtgggttcactgcgggtctgcctggctgggcagcaggagaggaggtgggttcactgcaggtctgtctggctgggcagcaggaggggagaggtggggtcactgcgggtctgcagggctgcaggaggggagaggtggggtcactgcaggtctgtctggctgggcagcaggagaggaggtgggttcactgcaggtctgtctgggcgggctgcaggagaggaggtggggtcactgcgggtctgtctgggcgggctgcaggagaggaggt\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-306;END=746549;SUPPORT=6;COVERAGE=21,21,21,21,21;STRAND=+-;AF=0.286;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/1:18:15:6", + "chr16\t746243\tSniffles2.DEL.B7SF\tggttcactgcgggtctgcctggctgggcagcaggagaggaggtgggttcactgcgggtctgcctggctgggcagcaggagaggaggtgggttcactgcaggtctgtctggctgggcagcaggaggggagaggtggggtcactgcgggtctgcagggctgcaggaggggagaggtggggtcactgcaggtctgtctggctgggcagcaggagaggaggtgggttcactgcaggtctgtctgggcgggctgcaggagaggaggtggggtcactgcgggtctgtctgggcgggctgcaggagaggaggt\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-306;END=746549;SUPPORT=6;COVERAGE=21,21,21,21,21;STRAND=+-;AF=0.286;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:18:15:6", "chr16\t760502\tSniffles2.INS.3ESF\tN\tAGCCATGAAACCTGGGCCCGGGCTCCCACTCACACCCCACCCCCACCCAGGGCAGCCGTGAAACCTGGGCCCTGGGCTCCCACCCACGCCCCACACCCACCCAGGGC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=107;END=760502;SUPPORT=19;COVERAGE=20,20,21,21,23;STRAND=+-;AF=0.905;STDEV_LEN=0.674;STDEV_POS=4.221;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:32:2:19", "chr16\t763776\tSniffles2.INS.3FSF\tN\tGCATCCCATCCCCCGTCCCCTCCCCCACACCCCTCCCCCACCCCCACGTCCCCTCCCCACCCCTCCCCCACACCCTCCCCCACCCCTCCCCATGTCCCCTCCCCTACCTCCTCCCCCCGCGTCCCCTCCCCCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=133;END=763776;SUPPORT=21;COVERAGE=22,22,22,22,23;STRAND=+-;AF=0.955;STDEV_LEN=1.092;STDEV_POS=1.391;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:48:1:21", "chr16\t767868\tSniffles2.INS.41SF\tN\tGGGGCGCGTGGGAGGGGGCGCGTGGGGGGGTGTGGAGGGGGGCGCATGGGGGTGCGTGGGGGGGCGCGTGGGAGGGGGGGCGTGTGGGGCGTGGGGGGGTGTGGAGGGGGGCACATGGGGGTGCGTGGGGGGG\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=135;END=767868;SUPPORT=5;COVERAGE=23,16,17,16,17;STRAND=+-;AF=0.294;STDEV_LEN=3.215;STDEV_POS=90.067;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:16:12:5", - "chr16\t767969\tSniffles2.INS.40SF\tN\tGCGTGGGGGGGTGTGGAGGGGGGCACATGGGGGTGCGTGGGGGGG\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=45;END=767969;SUPPORT=12;COVERAGE=21,17,16,16,17;STRAND=+-;AF=0.750;STDEV_LEN=16.098;STDEV_POS=66.865;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:6:4:12", - "chr16\t769187\tSniffles2.INS.42SF\tN\tAGCCCCGGCCCCACCCCCGGCCCCAGCCCCAGCCCCAGCCCCAGCCCCACCCCCGGCCCCAGCCCCAGCCCCAGCCCCAGCCCCGGCCCCACCCCCACCCCCGGCCCCGGCCCCGGCCCCACCCCCGGCCCCGGCCCCGGCCCCACCCCCGGCCCCGGCCCCACCCCCGGCCCCGGCCCCACCCCCGGCCCCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=193;END=769187;SUPPORT=8;COVERAGE=17,18,18,18,18;STRAND=+-;AF=0.444;STDEV_LEN=0.577;STDEV_POS=5.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:52:10:8", - "chr16\t795446\tSniffles2.INS.44SF\tN\tCCCCCGTGCTGCCCGTGTGGCTGCCCCGGCCCCGTGCCCGCCCCCCTGTGCTGCCCGTGTGGCTGCCCCCGGCCCCGCGCCCTTCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=86;END=795446;SUPPORT=7;COVERAGE=20,18,18,18,18;STRAND=+-;AF=0.389;STDEV_LEN=0.816;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:39:11:7", - "chr16\t795594\tSniffles2.INS.46SF\tN\tGCTGCCCGTGTGGCTGCCCCCGGCCCCCGTGCCCCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCTTCTCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCCAAACACACTGCCCGTGTGGCTGCCCCGGCCCCGTGCCCGCCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCTTCTCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCTGTGCTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCTCCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCGGTGCCCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCTTCTCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCGGCCCCGTGCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCGCCCCGCCCGCCCCTCCCCTCCCCCCCCCCCGC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=617;END=795594;SUPPORT=6;COVERAGE=20,18,18,18,18;STRAND=+-;AF=0.333;STDEV_LEN=2.500;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:26:12:6", - "chr16\t818868\tSniffles2.INS.47SF\tN\tTGGTGAAGACTGTAGTGATGGTGATGATGGTGAAGACTGTAGTGATGATGGTGGTGAAGACTGTAGTGATGTTGATATTGGTGATGAAGACTATAGTGATAGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTAGTGATGGTGATGATGATGGTGAAGACTGTAGTGATGGTGATGATGGTGAAGACTGTAGCGATGATGGTGAACACTGTAGTGATGTTGATATTGGTGATGAAGACTATAGTGATGGTGATGATAGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTGTAGTGATGGTGATGATGGTGAAGACTATCGTGATGGTGATGATAATGGTGAAGACTATAGTGATGTTGATGTCGGTGGTGAAGACTGTAGTGATGGTGATGATAGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTGTAGTGATGGTGATGATGGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTATAGTGATGATGGTGAAGACTGTAGTGATGGTGATGATAGTGGTGAAGACTGTAGTGATGTTAATGGTGAAGGCTATAGTGATGTTGATGGTGGTGAAGACTGTAGCAATGGTTATGATGTTGGTGAAGACAATAGTGATGGTGATGATGGTGAAGACTATAGTGATGGTGATGATGGTGGTGAAGACTGTAGTGATGGTGATGATAGTGGTGAGGACTGTAGTGATGATAGTGGTGAAGACTGTAGTGATGATGATGGTGAAGACTATAATGATGATGGTGAAGACCGCCGTGATGGTGATGATGGTGAAGACTGTAGCAATGATGATGGTGAAGACTATAGTGATGTTGATGTTGGTGGTGAAGACTGTAGCGATGGTGATGATGATGGTGAAGACTATAGTGATGATGATGGTGAAGACTATAGTGATGATGATGGTGAAGACCGCCGTGATGGTGATGATGGTGAAGACTGTAGCGATGATGATGGTGAAGACTATAGTGATGCTGATGTTGGTGGTGAAGACTGTAGTGATGGTGATGATGATGGTGAAGACTATAGTGATGATGATGGTGAAGACTATAGTGATGATGATTGTGAAGACCGCCGTGATGGTGATGATGGTGAAGACTGTAGCGATGATGATGGTGAAGACTATAGTGATGTTGATGTTGG\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=1180;END=818868;SUPPORT=9;COVERAGE=14,11,11,11,11;STRAND=+-;AF=0.818;STDEV_LEN=66.808;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:5:2:9", - "chr16\t824382\tSniffles2.INS.48SF\tN\tTAGGCCCACGACGGCCAGCAGCGGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGGAGCT\t60\tGT\tPRECISE;SVTYPE=INS;SVLEN=152;END=824382;SUPPORT=2;COVERAGE=9,8,8,8,8;STRAND=+;AF=0.250;STDEV_LEN=0.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:3:6:2", - "chr16\t824382\tSniffles2.INS.49SF\tN\tTAGGCCCACGACGGCCAGCAGCGGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGCAGCTCGTCACACCGTCACACTAGGCCCACGACGGCCAGCAGTGGGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGCAGCTCACATGAGGCCCACGACGGCCAGCAGCGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGGAGCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=475;END=824382;SUPPORT=4;COVERAGE=9,8,8,8,8;STRAND=+-;AF=0.500;STDEV_LEN=4.031;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:28:4:4", - "chr16\t824874\tSniffles2.INS.4ASF\tN\tCGTCCCGTCCGCGGCACCACCGTCCCATCTGTGGCACCAT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=40;END=824874;SUPPORT=6;COVERAGE=8,8,8,8,8;STRAND=+-;AF=0.750;STDEV_LEN=0.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:3:2:6", - "chr16\t828085\tSniffles2.INS.4BSF\tN\tCCGGGGGAAATGAACTCTCGGCCTCCAGGGCAGCCAGGCAGGGGTCTGGCCCAGTCCTCA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=58;END=828085;SUPPORT=4;COVERAGE=8,8,8,8,8;STRAND=+-;AF=0.500;STDEV_LEN=1.500;STDEV_POS=22.765;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:28:4:4", - "chr16\t828906\tSniffles2.DEL.BBSF\tgcccactggggcccacatcccgcccactgggaccgacatccc\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-42;END=828948;SUPPORT=6;COVERAGE=8,8,8,8,8;STRAND=+-;AF=0.750;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/1:3:2:6", + "chr16\t767969\tSniffles2.INS.40SF\tN\tGCGTGGGGGGGTGTGGAGGGGGGCACATGGGGGTGCGTGGGGGGG\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=45;END=767969;SUPPORT=12;COVERAGE=21,17,16,16,17;STRAND=+-;AF=0.75;STDEV_LEN=16.098;STDEV_POS=66.865;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:6:4:12", + "chr16\t769187\tSniffles2.INS.42SF\tN\tAGCCCCGGCCCCACCCCCGGCCCCAGCCCCAGCCCCAGCCCCAGCCCCACCCCCGGCCCCAGCCCCAGCCCCAGCCCCAGCCCCGGCCCCACCCCCACCCCCGGCCCCGGCCCCGGCCCCACCCCCGGCCCCGGCCCCGGCCCCACCCCCGGCCCCGGCCCCACCCCCGGCCCCGGCCCCACCCCCGGCCCCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=193;END=769187;SUPPORT=8;COVERAGE=17,18,18,18,18;STRAND=+-;AF=0.444;STDEV_LEN=0.577;STDEV_POS=5;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:52:10:8", + "chr16\t795446\tSniffles2.INS.44SF\tN\tCCCCCGTGCTGCCCGTGTGGCTGCCCCGGCCCCGTGCCCGCCCCCCTGTGCTGCCCGTGTGGCTGCCCCCGGCCCCGCGCCCTTCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=86;END=795446;SUPPORT=7;COVERAGE=20,18,18,18,18;STRAND=+-;AF=0.389;STDEV_LEN=0.816;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:39:11:7", + "chr16\t795594\tSniffles2.INS.46SF\tN\tGCTGCCCGTGTGGCTGCCCCCGGCCCCCGTGCCCCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCTTCTCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCCAAACACACTGCCCGTGTGGCTGCCCCGGCCCCGTGCCCGCCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCTTCTCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCTGTGCTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCTCCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCGGTGCCCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCTTCTCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCGGCCCCGTGCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCGCCCCGCCCGCCCCTCCCCTCCCCCCCCCCCGC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=617;END=795594;SUPPORT=6;COVERAGE=20,18,18,18,18;STRAND=+-;AF=0.333;STDEV_LEN=2.5;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:26:12:6", + "chr16\t818868\tSniffles2.INS.47SF\tN\tTGGTGAAGACTGTAGTGATGGTGATGATGGTGAAGACTGTAGTGATGATGGTGGTGAAGACTGTAGTGATGTTGATATTGGTGATGAAGACTATAGTGATAGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTAGTGATGGTGATGATGATGGTGAAGACTGTAGTGATGGTGATGATGGTGAAGACTGTAGCGATGATGGTGAACACTGTAGTGATGTTGATATTGGTGATGAAGACTATAGTGATGGTGATGATAGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTGTAGTGATGGTGATGATGGTGAAGACTATCGTGATGGTGATGATAATGGTGAAGACTATAGTGATGTTGATGTCGGTGGTGAAGACTGTAGTGATGGTGATGATAGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTGTAGTGATGGTGATGATGGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTATAGTGATGATGGTGAAGACTGTAGTGATGGTGATGATAGTGGTGAAGACTGTAGTGATGTTAATGGTGAAGGCTATAGTGATGTTGATGGTGGTGAAGACTGTAGCAATGGTTATGATGTTGGTGAAGACAATAGTGATGGTGATGATGGTGAAGACTATAGTGATGGTGATGATGGTGGTGAAGACTGTAGTGATGGTGATGATAGTGGTGAGGACTGTAGTGATGATAGTGGTGAAGACTGTAGTGATGATGATGGTGAAGACTATAATGATGATGGTGAAGACCGCCGTGATGGTGATGATGGTGAAGACTGTAGCAATGATGATGGTGAAGACTATAGTGATGTTGATGTTGGTGGTGAAGACTGTAGCGATGGTGATGATGATGGTGAAGACTATAGTGATGATGATGGTGAAGACTATAGTGATGATGATGGTGAAGACCGCCGTGATGGTGATGATGGTGAAGACTGTAGCGATGATGATGGTGAAGACTATAGTGATGCTGATGTTGGTGGTGAAGACTGTAGTGATGGTGATGATGATGGTGAAGACTATAGTGATGATGATGGTGAAGACTATAGTGATGATGATTGTGAAGACCGCCGTGATGGTGATGATGGTGAAGACTGTAGCGATGATGATGGTGAAGACTATAGTGATGTTGATGTTGG\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=1180;END=818868;SUPPORT=9;COVERAGE=14,11,11,11,11;STRAND=+-;AF=0.818;STDEV_LEN=66.808;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:5:2:9", + "chr16\t824382\tSniffles2.INS.48SF\tN\tTAGGCCCACGACGGCCAGCAGCGGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGGAGCT\t60\tGT\tPRECISE;SVTYPE=INS;SVLEN=152;END=824382;SUPPORT=2;COVERAGE=9,8,8,8,8;STRAND=+;AF=0.25;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:3:6:2", + "chr16\t824382\tSniffles2.INS.49SF\tN\tTAGGCCCACGACGGCCAGCAGCGGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGCAGCTCGTCACACCGTCACACTAGGCCCACGACGGCCAGCAGTGGGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGCAGCTCACATGAGGCCCACGACGGCCAGCAGCGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGGAGCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=475;END=824382;SUPPORT=4;COVERAGE=9,8,8,8,8;STRAND=+-;AF=0.5;STDEV_LEN=4.031;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:28:4:4", + "chr16\t824874\tSniffles2.INS.4ASF\tN\tCGTCCCGTCCGCGGCACCACCGTCCCATCTGTGGCACCAT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=40;END=824874;SUPPORT=6;COVERAGE=8,8,8,8,8;STRAND=+-;AF=0.75;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:3:2:6", + "chr16\t828085\tSniffles2.INS.4BSF\tN\tCCGGGGGAAATGAACTCTCGGCCTCCAGGGCAGCCAGGCAGGGGTCTGGCCCAGTCCTCA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=58;END=828085;SUPPORT=4;COVERAGE=8,8,8,8,8;STRAND=+-;AF=0.5;STDEV_LEN=1.5;STDEV_POS=22.765;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:28:4:4", + "chr16\t828906\tSniffles2.DEL.BBSF\tgcccactggggcccacatcccgcccactgggaccgacatccc\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-42;END=828948;SUPPORT=6;COVERAGE=8,8,8,8,8;STRAND=+-;AF=0.75;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:3:2:6", "chr16\t886701\tSniffles2.INS.4DSF\tN\tCCTAGGCCCCCAGCATCCCAGGCCCCTCCCCACCCTCAGGCCCCCGGCGTTCCCCAGGCCCCTCCCACCCTAGGCCCCCGGCGTTCCCCAGCCTCCACCCTAGGCCCCCGGCGTTCCCCCAGCCCCTGCCA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=131;END=886701;SUPPORT=10;COVERAGE=14,14,14,14,14;STRAND=+-;AF=0.714;STDEV_LEN=16.561;STDEV_POS=60.663;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:12:4:10", - "chr16\t894226\tSniffles2.INS.53SF\tN\tCCCACCCATCCCCTGTCCACCGGACCGTCCGCCCACCCGTCCCCATGTCCATCAGACCGTCCGTCCACCTGTCCCCCTGTCCCCTGTCCACCGGACCATTCGCCCACCCATCCCCCTGTCCACCTGGCCATCCGCCCACCTGTCTCCTGTCCACCGGACCGTCCACCCACCCCGTCCCCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCACTGGACTGTCCGCCCACCTGTCCCCCTGTCCCCTGTCCACCGGACCGTCTGCCCACCCGTCCCCCTGTCCACCTGGCCATCCGCCCACCCATCCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCAGCGGACCGTCCACGTCCCCCTGTCCAGCGGACCGTCCACCACCCGTCCCCCTGTCCACTGGACCGTCCGCCCACCTGTCCCCTGTCCACCTGGCAGTGCGCCCACCCATCCCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCAGCGGACCGTCCACCCACCT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=532;END=894226;SUPPORT=9;COVERAGE=17,17,17,17,17;STRAND=+-;AF=0.529;STDEV_LEN=71.587;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:54:8:9", - "chr16\t895843\tSniffles2.INS.57SF\tN\tACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCATGGTCCACAGACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCACGGTCCACAGACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCACGGTCCACAG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=177;END=895843;SUPPORT=6;COVERAGE=15,15,15,15,15;STRAND=+-;AF=0.400;STDEV_LEN=1.949;STDEV_POS=8.944;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:34:9:6", - "chr16\t895870\tSniffles2.INS.55SF\tN\tAGCCACCCACACGCAGGCTGCACGGTCCACAGACACGCCTCGGAGGGGTTGTGACTTTTA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=59;END=895870;SUPPORT=5;COVERAGE=15,15,15,15,15;STRAND=+-;AF=0.333;STDEV_LEN=0.000;STDEV_POS=15.588;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:22:10:5", - "chr16\t896053\tSniffles2.INS.56SF\tN\tCCACACGCAGGCTGCACGGTCCACAGACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCACGGTCCACACACACGCCTCGGAGGGGCTGTGAGGCTCAGCCAT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=118;END=896053;SUPPORT=6;COVERAGE=15,15,15,15,15;STRAND=+-;AF=0.400;STDEV_LEN=0.447;STDEV_POS=64.631;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:34:9:6", + "chr16\t894226\tSniffles2.INS.53SF\tN\tCCCACCCATCCCCTGTCCACCGGACCGTCCGCCCACCCGTCCCCATGTCCATCAGACCGTCCGTCCACCTGTCCCCCTGTCCCCTGTCCACCGGACCATTCGCCCACCCATCCCCCTGTCCACCTGGCCATCCGCCCACCTGTCTCCTGTCCACCGGACCGTCCACCCACCCCGTCCCCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCACTGGACTGTCCGCCCACCTGTCCCCCTGTCCCCTGTCCACCGGACCGTCTGCCCACCCGTCCCCCTGTCCACCTGGCCATCCGCCCACCCATCCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCAGCGGACCGTCCACGTCCCCCTGTCCAGCGGACCGTCCACCACCCGTCCCCCTGTCCACTGGACCGTCCGCCCACCTGTCCCCTGTCCACCTGGCAGTGCGCCCACCCATCCCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCAGCGGACCGTCCACCCACCT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=532;END=894226;SUPPORT=9;COVERAGE=17,17,17,17,17;STRAND=+-;AF=0.529;STDEV_LEN=71.587;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:54:8:9", + "chr16\t895843\tSniffles2.INS.57SF\tN\tACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCATGGTCCACAGACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCACGGTCCACAGACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCACGGTCCACAG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=177;END=895843;SUPPORT=6;COVERAGE=15,15,15,15,15;STRAND=+-;AF=0.4;STDEV_LEN=1.949;STDEV_POS=8.944;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:34:9:6", + "chr16\t895870\tSniffles2.INS.55SF\tN\tAGCCACCCACACGCAGGCTGCACGGTCCACAGACACGCCTCGGAGGGGTTGTGACTTTTA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=59;END=895870;SUPPORT=5;COVERAGE=15,15,15,15,15;STRAND=+-;AF=0.333;STDEV_LEN=0;STDEV_POS=15.588;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:22:10:5", + "chr16\t896053\tSniffles2.INS.56SF\tN\tCCACACGCAGGCTGCACGGTCCACAGACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCACGGTCCACACACACGCCTCGGAGGGGCTGTGAGGCTCAGCCAT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=118;END=896053;SUPPORT=6;COVERAGE=15,15,15,15,15;STRAND=+-;AF=0.4;STDEV_LEN=0.447;STDEV_POS=64.631;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:34:9:6", "chr16\t903595\tSniffles2.INS.5ASF\tN\tGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTATCTCTGCTGTGTGGTGGTGACCTTTGCACTGCCCGTGGGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCCGTCTCTGCTGTGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTCCGTGGGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCCACAGGACGCCTGTCTCTGCTGTGTGGTGGTGACCTTTGCACTGCCCGTGGGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCTGTCTCTGCTGTGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCCGTCTCTGCTGCGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGG\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=600;END=903595;SUPPORT=2;COVERAGE=7,7,7,7,7;STRAND=+-;AF=0.286;STDEV_LEN=0.707;STDEV_POS=54.447;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:6:5:2", "chr16\t904025\tSniffles2.INS.5DSF\tN\tGCCCGCTGGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCTGTCTCTGCTGTGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCCGTCTCTGCTGCGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGGGCTACCTCCTCCCCGCGGCATCGCCCACAGGACGCCTGCGTCCCTGCTGCGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGGCGACCTCTGCATCGCCACAGGACGCCTATCTCTGCTGTGTGGTGGTGACCTTTGCACTGCCCGTGGGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCCGTCTCTGCTGTGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCCACAGGACGCCTGTCTCTGCTGTGTGGTGGTGACCTCTGCACTGCCCACAGGACGCCTGTCTCTGCTGTGTGGTGGTGACCTTTGCATG\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=613;END=904025;SUPPORT=2;COVERAGE=7,7,7,7,7;STRAND=+-;AF=0.286;STDEV_LEN=7.071;STDEV_POS=25.456;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:6:5:2", - "chr16\t949565\tSniffles2.DEL.C0SF\tgacagagtcagagacaacgacagagtcagagacgacagagtcagagacgacagagtcagagccaatgacagagtcagccaatgacagagtcagagccaac\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-100;END=949665;SUPPORT=8;COVERAGE=31,30,32,32,32;STRAND=+-;AF=0.258;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/1:15:23:8", - "chr16\t949708\tSniffles2.DEL.C3SF\tagagacaacgacagagtcagagacgacagagtcagagacgacagagtcagagccaatgacagagtcagccaatgacagagtcagagccaacgacagagtcagccaatgacagagtcagagacaacgacagagttagagacaacgacagagtcagccaaggacagcgtcagccaacgacagaatcagagacaacgacagagtcagccaacgacagagtcagagccaatgagagtcagagccaacgacagagtcagagacgacagagtcag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-269;END=949977;SUPPORT=8;COVERAGE=31,32,32,32,32;STRAND=+-;AF=0.250;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/1:13:24:8", + "chr16\t949565\tSniffles2.DEL.C0SF\tgacagagtcagagacaacgacagagtcagagacgacagagtcagagacgacagagtcagagccaatgacagagtcagccaatgacagagtcagagccaac\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-100;END=949665;SUPPORT=8;COVERAGE=31,30,32,32,32;STRAND=+-;AF=0.258;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:15:23:8", + "chr16\t949708\tSniffles2.DEL.C3SF\tagagacaacgacagagtcagagacgacagagtcagagacgacagagtcagagccaatgacagagtcagccaatgacagagtcagagccaacgacagagtcagccaatgacagagtcagagacaacgacagagttagagacaacgacagagtcagccaaggacagcgtcagccaacgacagaatcagagacaacgacagagtcagccaacgacagagtcagagccaatgagagtcagagccaacgacagagtcagagacgacagagtcag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-269;END=949977;SUPPORT=8;COVERAGE=31,32,32,32,32;STRAND=+-;AF=0.25;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:13:24:8", "chr16\t950298\tSniffles2.DEL.C6SF\ttcagccaatgacagagtcagagacaacgacagagtcagccaacaacagtcagccaacgacagagtcaggccaacgacagagtcagccaatgacagagtcagagccaacgacagagtcagagacaacgacagagttagagacaacgacagagtc\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-153;END=950451;SUPPORT=10;COVERAGE=32,32,32,32,32;STRAND=+-;AF=0.312;STDEV_LEN=7.311;STDEV_POS=128.469\tGT:GQ:DR:DV\t0/1:38:22:10", - "chr16\t952880\tSniffles2.DEL.C8SF\ttccacacagacacccaccccaaaccagcctcctacacgtccacacagacacccaccccaaaccagcctcctgcacgtccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacacg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-178;END=953058;SUPPORT=10;COVERAGE=31,31,31,31,31;STRAND=+-;AF=0.323;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/1:41:21:10", - "chr16\t953293\tSniffles2.DEL.C9SF\tcaaaccagcctcctacacgtccacacagacacccaccccaaaccagcttcctacacgttcacacagacacgg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-72;END=953365;SUPPORT=10;COVERAGE=31,31,31,31,31;STRAND=+-;AF=0.323;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/1:41:21:10", - "chr16\t953349\tSniffles2.DEL.CDSF\tgttcacacagacacggaccccaaaccagcctcctacacgtccacacagacacccaccccaaaccagcctcctacacgttcacacagacacggaccccacaccagcctcctacacgtccacacagacacccaccccaaaccagcctcctgcacgtccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacacgtccacacagacacccactccaaaccagcctcctacacgtccacacagacaccccaaaccagcctcctacatgtccacacagacacccaccccaaaccagcctcctacatgtccacacagacacccaccccaaaccagcctcctacatgtccacacagacacccaccccaaaccagcctcctacat\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-440;END=953789;SUPPORT=16;COVERAGE=31,31,31,31,31;STRAND=+-;AF=0.516;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/1:60:15:16", - "chr16\t953507\tSniffles2.DEL.CBSF\tacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacacgtccacacag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-106;END=953613;SUPPORT=9;COVERAGE=31,31,31,31,31;STRAND=+-;AF=0.290;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/1:28:22:9", + "chr16\t952880\tSniffles2.DEL.C8SF\ttccacacagacacccaccccaaaccagcctcctacacgtccacacagacacccaccccaaaccagcctcctgcacgtccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacacg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-178;END=953058;SUPPORT=10;COVERAGE=31,31,31,31,31;STRAND=+-;AF=0.323;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:41:21:10", + "chr16\t953293\tSniffles2.DEL.C9SF\tcaaaccagcctcctacacgtccacacagacacccaccccaaaccagcttcctacacgttcacacagacacgg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-72;END=953365;SUPPORT=10;COVERAGE=31,31,31,31,31;STRAND=+-;AF=0.323;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:41:21:10", + "chr16\t953349\tSniffles2.DEL.CDSF\tgttcacacagacacggaccccaaaccagcctcctacacgtccacacagacacccaccccaaaccagcctcctacacgttcacacagacacggaccccacaccagcctcctacacgtccacacagacacccaccccaaaccagcctcctgcacgtccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacacgtccacacagacacccactccaaaccagcctcctacacgtccacacagacaccccaaaccagcctcctacatgtccacacagacacccaccccaaaccagcctcctacatgtccacacagacacccaccccaaaccagcctcctacatgtccacacagacacccaccccaaaccagcctcctacat\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-440;END=953789;SUPPORT=16;COVERAGE=31,31,31,31,31;STRAND=+-;AF=0.516;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:60:15:16", + "chr16\t953507\tSniffles2.DEL.CBSF\tacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacacgtccacacag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-106;END=953613;SUPPORT=9;COVERAGE=31,31,31,31,31;STRAND=+-;AF=0.29;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:28:22:9", "chr16\t954972\tSniffles2.INS.60SF\tN\tCTAAGCGAACCAGACACGTTACATAAAATGCGTGCCTGCAGCAGACGGGGTCTGTGCACACACACACACAC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=71;END=954972;SUPPORT=8;COVERAGE=32,31,31,32,33;STRAND=+-;AF=0.258;STDEV_LEN=2.345;STDEV_POS=27.353;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:15:23:8", "chr16\t955136\tSniffles2.INS.61SF\tN\tCGTTACATAAAATGCGTGCCTGCTGCAGACGTGGTGTGTGTATACACACACACACATCTAAGTAAACCAGACACGTTACATAAAATGCGTGCCCGCAGCAGACGTAGTGTGTGCATCCACACACACACATCTTAAGTAAACTAGACACGTTACATAAAATGCGTGCCCACAGCAGACGCGGTGTGTGCGTACACACACACACATCTAAGTAAACTAGACACGTTACATAAAATGCGTGCCCGCAGCAGACGCAGTGTGTGCATACACATCTAAGTGAACCAGAC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=286;END=955136;SUPPORT=11;COVERAGE=30,32,33,33,33;STRAND=+-;AF=0.333;STDEV_LEN=3.599;STDEV_POS=75.588;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:48:22:11", - "chr16\t955473\tSniffles2.INS.64SF\tN\tACACACACACACACACATCTAAGTGAACCAGACACGTTACATAAAATGCGTGCCTGCAGCAGATGCGGTGTGTGCATACACACACACACATCTAAGTAAACCAGACACGTTACATAAAATGCGTGCCTGCAGCAGACGTAGTGTGTGCATCCACACACACACATCTAAGTAAACTAGACACGTTACATAAAATGCGTGCCCGCAGCAGAGACGGTGTGTGCGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=223;END=955473;SUPPORT=12;COVERAGE=31,33,33,33,33;STRAND=+-;AF=0.364;STDEV_LEN=0.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:60:21:12", + "chr16\t955473\tSniffles2.INS.64SF\tN\tACACACACACACACACATCTAAGTGAACCAGACACGTTACATAAAATGCGTGCCTGCAGCAGATGCGGTGTGTGCATACACACACACACATCTAAGTAAACCAGACACGTTACATAAAATGCGTGCCTGCAGCAGACGTAGTGTGTGCATCCACACACACACATCTAAGTAAACTAGACACGTTACATAAAATGCGTGCCCGCAGCAGAGACGGTGTGTGCGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=223;END=955473;SUPPORT=12;COVERAGE=31,33,33,33,33;STRAND=+-;AF=0.364;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:60:21:12", "chr16\t955933\tSniffles2.INS.65SF\tN\tCACGGCACCCACCCCACGACGGCTCTCTCACATCCACAGGTCTCCGAGTTCACGTCC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=57;END=955933;SUPPORT=12;COVERAGE=33,33,33,31,31;STRAND=+-;AF=0.364;STDEV_LEN=0.756;STDEV_POS=42.601;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:60:21:12", "chr16\t960535\tSniffles2.DEL.D1SF\tcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacaacacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacag\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-262;END=960797;SUPPORT=12;COVERAGE=27,27,27,27,27;STRAND=+-;AF=0.444;STDEV_LEN=1.833;STDEV_POS=50.328\tGT:GQ:DR:DV\t0/1:60:15:12", "chr16\t960552\tSniffles2.DEL.D3SF\tgacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacaacacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacaacacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagac\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-713;END=961265;SUPPORT=11;COVERAGE=27,27,27,27,27;STRAND=+-;AF=0.407;STDEV_LEN=61.173;STDEV_POS=14.697\tGT:GQ:DR:DV\t0/1:60:16:11", - "chr16\t961793\tSniffles2.DEL.D4SF\tacagactcacggtgacagcacgggatcacgacccag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-36;END=961829;SUPPORT=7;COVERAGE=27,27,27,27,27;STRAND=+-;AF=0.259;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/1:14:20:7", - "chr16\t961981\tSniffles2.DEL.D5SF\tacagactcacggtgacagcacgggatcaccacccag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-36;END=962017;SUPPORT=7;COVERAGE=27,27,27,27,26;STRAND=+-;AF=0.259;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/1:14:20:7", - "chr16\t1040567\tSniffles2.INS.67SF\tN\tCCTGCCAAAGTCCCCACCGAGGTTCCCTCCGAGGTTCCCGCCGAGGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=47;END=1040567;SUPPORT=2;COVERAGE=2,2,2,2,2;STRAND=-;AF=1.000;STDEV_LEN=0.707;STDEV_POS=5.657;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:5:0:2", - "chr16\t1043243\tSniffles2.DEL.DBSF\tggtcagggacccctcgggtcagccttggggccgttctggggggtggtcagggacccctcgggtcagccttggggccgttccaggggggt\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-89;END=1043332;SUPPORT=4;COVERAGE=4,4,4,4,5;STRAND=+-;AF=1.000;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t1/1:11:0:4", + "chr16\t961793\tSniffles2.DEL.D4SF\tacagactcacggtgacagcacgggatcacgacccag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-36;END=961829;SUPPORT=7;COVERAGE=27,27,27,27,27;STRAND=+-;AF=0.259;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:14:20:7", + "chr16\t961981\tSniffles2.DEL.D5SF\tacagactcacggtgacagcacgggatcaccacccag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-36;END=962017;SUPPORT=7;COVERAGE=27,27,27,27,26;STRAND=+-;AF=0.259;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:14:20:7", + "chr16\t1040567\tSniffles2.INS.67SF\tN\tCCTGCCAAAGTCCCCACCGAGGTTCCCTCCGAGGTTCCCGCCGAGGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=47;END=1040567;SUPPORT=2;COVERAGE=2,2,2,2,2;STRAND=-;AF=1;STDEV_LEN=0.707;STDEV_POS=5.657;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:5:0:2", + "chr16\t1043243\tSniffles2.DEL.DBSF\tggtcagggacccctcgggtcagccttggggccgttctggggggtggtcagggacccctcgggtcagccttggggccgttccaggggggt\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-89;END=1043332;SUPPORT=4;COVERAGE=4,4,4,4,5;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t1/1:11:0:4", "chr16\t1075983\tSniffles2.INS.6ASF\tN\tCCTCCCCTCCCCCTCCCTTTCCCTCCCTCTCTCCCTCTCTCCTCCCCGCCTCCCCATCCCTCTCCCTCTCCCTCCTCTCTCTCTCCCCTACCCTGTCTTTCTCTGCCTCCCCGCCTCCCCTTCCCTCTCCCCATACCCTGTCTTTCTCTCTCCCTCCCCG\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=157;END=1075983;SUPPORT=13;COVERAGE=17,17,16,16,16;STRAND=+-;AF=0.812;STDEV_LEN=38.003;STDEV_POS=38.833;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:6:3:13", - "chr16\t1185669\tSniffles2.INS.6ESF\tN\tGGCGGGGTACGTGGGGGGCGGGTGAGTAGACGGTCGGCGTGCGTAGGGGCCGGAGGCGGGTGTGGACGGGGCGGGTGAGTACGGTCGGCGTGCGCAGGGGCGGAGCGGGGTACGTGGGGGGCGGGTGAGAGACGGTCGGCATGCATAGGGCCGGGGGCGGGGTACGTGGGGGGGCGGGTGAGTAGACGGTCGGCGTGCGTAGGGGCCGGAGGCGTGGTGTGTAGACGGGGCGGGTGAGTAGACGGTCGGCGGGGTACGTGGGGGGCGGGTGAGGGCAGACGGTCGGCATGCATAGGGCCGGGGGCGGGGGTACGTGGGGGGCGGGTGAGTAGACGGTCGGCGTGCGTAGGGGCCGGTAGGCGCGCGCGGACGGGGCGGGTGAGTAGACGGTCGGTGCGGGGGTGTGTACGGGGCGGGTGAGTAGACGGTCGGCGTGCGTAGGGGCCGGAGGCGGGGTACGTGGGGGGCGGGTGAGAGGACGGCGTGCGTAGGGCGCAGGCGGTGTGCAGACGGGGCGGGTGAGTAGACGGTCGGCGTGCATAGGGGCCGAAGGCGGGGTGTGTACGGGGCGGGTGAGTAGACGGCGTAGGGGCCAGGTAGACGGCGGTGCATAGGGGCCGGAGGGTGGGTGTGCACGGGCGGGCGAG\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=725;END=1185669;SUPPORT=3;COVERAGE=5,6,6,6,7;STRAND=+-;AF=0.500;STDEV_LEN=55.154;STDEV_POS=139.300;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:21:3:3", + "chr16\t1185669\tSniffles2.INS.6ESF\tN\tGGCGGGGTACGTGGGGGGCGGGTGAGTAGACGGTCGGCGTGCGTAGGGGCCGGAGGCGGGTGTGGACGGGGCGGGTGAGTACGGTCGGCGTGCGCAGGGGCGGAGCGGGGTACGTGGGGGGCGGGTGAGAGACGGTCGGCATGCATAGGGCCGGGGGCGGGGTACGTGGGGGGGCGGGTGAGTAGACGGTCGGCGTGCGTAGGGGCCGGAGGCGTGGTGTGTAGACGGGGCGGGTGAGTAGACGGTCGGCGGGGTACGTGGGGGGCGGGTGAGGGCAGACGGTCGGCATGCATAGGGCCGGGGGCGGGGGTACGTGGGGGGCGGGTGAGTAGACGGTCGGCGTGCGTAGGGGCCGGTAGGCGCGCGCGGACGGGGCGGGTGAGTAGACGGTCGGTGCGGGGGTGTGTACGGGGCGGGTGAGTAGACGGTCGGCGTGCGTAGGGGCCGGAGGCGGGGTACGTGGGGGGCGGGTGAGAGGACGGCGTGCGTAGGGCGCAGGCGGTGTGCAGACGGGGCGGGTGAGTAGACGGTCGGCGTGCATAGGGGCCGAAGGCGGGGTGTGTACGGGGCGGGTGAGTAGACGGCGTAGGGGCCAGGTAGACGGCGGTGCATAGGGGCCGGAGGGTGGGTGTGCACGGGCGGGCGAG\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=725;END=1185669;SUPPORT=3;COVERAGE=5,6,6,6,7;STRAND=+-;AF=0.5;STDEV_LEN=55.154;STDEV_POS=139.3;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:21:3:3", "chr16\t1185837\tSniffles2.INS.6FSF\tN\tGGGTGCAGTGGGGGGCGGGTGAGTAGACGGCATGTGTAGGGGCAAGGGCAGGGGTGCGTGGGGGGCGGGTGAGTAGACGGTCGGCGTGCATAGGGGCCGGGGGCGGGGTGTGTACGGGGCGGGTGAATAGACGGTCGGCATGCATAGGGCCGGGGGCGGGGTACGTGGGGGGCGGGTGAGTAGACGGTCGGCGTGCGTAGGGGCCGGAGGCGTGGTGTGTACGGGGCGGGTGAGTTAGACGGTCGGGCGGGGTGTGTACGGGGCGGGTGAGTAGACGGTCGGCGTGCGTAGGGGCCGGAGGCGGGGTACGTGGGGGGCGGGTGAGTAGACGGCGTGCGTAGGGGCCGGAGGCGGGGTGTGTACGGGGCGGGTGAGTAGACGGTCGGCGTGGATTGGGGCCGAAGGCAGGCGGGGTGTGTACGGGGCGGGTGAGTAGACGGTCGGCGTGCGTAGGGGCCGGAGGCGGGGTGTGTACGGGGCAGGTGAGTATAGACGGCGTGCATAGGGGCCGGAGGCGGGGTGTGTATGGGGCGGGTGAGTAGACGGTCGGCGTGCGTGGGCCGGAGGCGGGGTGTGTACGGGGCGGGTGAGTCAGCGTGGGGCCGACGGGCCGGAGGCGGGGTGTGTACGGGGCGGGTGAGTAGACGGCGTAGGGGCCGGAGGCGGGGTGTGTACGGGGCAGGTGAGTAGACGGCGTGCGTAGGGGCCGGAGGAGCGAGGTGGACGTGGGGGGCGGGTGAGTAGACGGCATGTGTAGGGGCCGGAGGCGGGGTGTGTACGGGGCGGGTGAGTAGACGGTCGGCGTGCGTTGGGGCCGGAGGCGGGGTGTGTACGGGGCAGGTGAGTAGACGGTCGGCGTGCGTAGGGGCCGGAGGCGGGGTACGTGGGGGGCGGGTGAGTAGACGGTCGGCGTGCGTAGGGGCCGGAGGCGGGGTGTGTACGGGGCGGGTGAGTAGACGGTCAGCGTGCGTAGGGGCCGGAGGCGGGGTACGTGGGGGGCGGGTGAGTAGACGGTCGGCGTGCATAGGGGCCGGAGGCGGGGAGGGGTGTGTACGGGGCGGGTGAGTAGACGGTCAGCGTGCGTAGGGGCCGGAGGCGGGCCGGGTACGTGGGGGGCGGGTGAGTAGACGGTCGGCGTGCGTAGGGGCCGGAGGCGTGGTGTGTACGGGGCGGGTGAGTAGACGGTCGGGCGGGGTGTGTACGGGGCGGGTGAGTAGACGGTCGGCGTGCGTAGGGGCCGGGAGGCGGGGTACGTGGGGGGCGGGTGAGTAGACGGCGTGCGTAGGGGCCGGAGGCGGGGTGTGTACGGGGCGGGTGAGTAGACGGTCGGCGTGCATAGGGGCCGAAGGCGGGGTGTGTACGGGGCGCATGTAGACGGCGTAGGGGCCAGAGGCGGGGTGTGTACGGGGCGGGTGAGTAGACGGTCGGCGTGCGTAGGGGCCGGAGGCGGGGTGTGTACGGGGCAGGTGAGTAGACGGCGTGCATAGGGGCCGGAGGCGGGGTGTGTATGGGGCGGGTGAGTAGACGGTCGGCGTGCGTAGGGGCCGGAGGCGGGGTGTGTACGGGGCGGGTGAGTACGCGTGGGGACGGGCGTGTGGGCGGGTGGGTGGGGAGGGGTGGGCGGGCCGGGGCGCTCGGGGCAGGTGGGTGGCGGGGTGGCGCGT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=1414;END=1185837;SUPPORT=5;COVERAGE=6,6,7,7,7;STRAND=+-;AF=0.714;STDEV_LEN=153.895;STDEV_POS=111.482;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:6:2:5", - "chr16\t1190943\tSniffles2.INS.70SF\tN\tGCTGGCCTGGTTGTGTGGCCTCAGGCACACTCGGGGTTTCGGTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTCTGACTCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTCTGACTCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTCTTACTCAGCAGGCTGGCCTGGCTGTGTGGCCTCCGGCACACTCGGGGTCTCTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTTTCGGTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCAGGGTTTTGGTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTTGGGGTCTCTGACCCAGTAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTTTCGCTGACCCAGCAT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=524;END=1190943;SUPPORT=5;COVERAGE=9,10,10,10,10;STRAND=+-;AF=0.500;STDEV_LEN=2.887;STDEV_POS=35.907;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:36:5:5", - "chr16\t1191090\tSniffles2.DEL.DESF\tgactcagcaggctggcctggctgtgtggcctcaggcacactcggggtctctctgactcagcaggctggcctggctgtgtggcctcaggcacactcggggtctctcttactcagcaggctggcctggctgtgtggcctcaggcacactcggggtctctgacccagcaggctggcctggctgtgtggcctcaggcacactcggggtctctct\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-210;END=1191300;SUPPORT=3;COVERAGE=9,10,10,10,10;STRAND=+-;AF=0.300;STDEV_LEN=0.577;STDEV_POS=51.384\tGT:GQ:DR:DV\t0/1:10:7:3", + "chr16\t1190943\tSniffles2.INS.70SF\tN\tGCTGGCCTGGTTGTGTGGCCTCAGGCACACTCGGGGTTTCGGTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTCTGACTCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTCTGACTCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTCTTACTCAGCAGGCTGGCCTGGCTGTGTGGCCTCCGGCACACTCGGGGTCTCTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTTTCGGTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCAGGGTTTTGGTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTTGGGGTCTCTGACCCAGTAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTTTCGCTGACCCAGCAT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=524;END=1190943;SUPPORT=5;COVERAGE=9,10,10,10,10;STRAND=+-;AF=0.5;STDEV_LEN=2.887;STDEV_POS=35.907;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:36:5:5", + "chr16\t1191090\tSniffles2.DEL.DESF\tgactcagcaggctggcctggctgtgtggcctcaggcacactcggggtctctctgactcagcaggctggcctggctgtgtggcctcaggcacactcggggtctctcttactcagcaggctggcctggctgtgtggcctcaggcacactcggggtctctgacccagcaggctggcctggctgtgtggcctcaggcacactcggggtctctct\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-210;END=1191300;SUPPORT=3;COVERAGE=9,10,10,10,10;STRAND=+-;AF=0.3;STDEV_LEN=0.577;STDEV_POS=51.384\tGT:GQ:DR:DV\t0/1:10:7:3", "chr16\t1204953\tSniffles2.INS.74SF\tN\tGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGACCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGACCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGGCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=417;END=1204953;SUPPORT=10;COVERAGE=17,16,16,16,16;STRAND=+-;AF=0.625;STDEV_LEN=5.563;STDEV_POS=20.004;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:32:6:10", - "chr16\t1204971\tSniffles2.INS.73SF\tN\tGGGGAGGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGGTAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGG\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=210;END=1204971;SUPPORT=4;COVERAGE=17,16,16,16,16;STRAND=+-;AF=0.250;STDEV_LEN=0.000;STDEV_POS=72.125;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:6:12:4", - "chr16\t1230996\tSniffles2.DEL.E1SF\tccccagcccagctccccatggactcacccccagccccagcccagctccccatggactcacccccagccccagcccagctgcccatggactagtcccagccccagccccagctccccatggactcacccccagccccagcccagctccccatggactcacccccagccccagcccagctccccatggactagtcgcagcccccggccccagctccccatggtctcacccccag\tN\t60\tGT\tPRECISE;SVTYPE=DEL;SVLEN=-232;END=1231228;SUPPORT=2;COVERAGE=13,13,13,13,13;STRAND=-;AF=0.154;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/0:10:11:2", + "chr16\t1204971\tSniffles2.INS.73SF\tN\tGGGGAGGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGGTAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGG\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=210;END=1204971;SUPPORT=4;COVERAGE=17,16,16,16,16;STRAND=+-;AF=0.25;STDEV_LEN=0;STDEV_POS=72.125;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:6:12:4", + "chr16\t1230996\tSniffles2.DEL.E1SF\tccccagcccagctccccatggactcacccccagccccagcccagctccccatggactcacccccagccccagcccagctgcccatggactagtcccagccccagccccagctccccatggactcacccccagccccagcccagctccccatggactcacccccagccccagcccagctccccatggactagtcgcagcccccggccccagctccccatggtctcacccccag\tN\t60\tGT\tPRECISE;SVTYPE=DEL;SVLEN=-232;END=1231228;SUPPORT=2;COVERAGE=13,13,13,13,13;STRAND=-;AF=0.154;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/0:10:11:2", "chr16\t1231235\tSniffles2.INS.76SF\tN\tCCCAGCTCCCCATGGACTAGTCCCAGCCCCAGCCCAGCTCCCCATGGTCTCACCCCCAGCCCCAGCCCAGCTCCCCATGGACTAGTCCCATCCCCCGGCCCCAGCTCCCCATGGTCTCACCCCCAGCTCCAG\t60\tGT\tIMPRECISE;SVTYPE=INS;SVLEN=135;END=1231235;SUPPORT=2;COVERAGE=13,13,13,13,13;STRAND=-;AF=0.154;STDEV_LEN=2.121;STDEV_POS=29.698;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/0:10:11:2", - "chr16\t1231287\tSniffles2.DEL.E2SF\tcccccagccccagcccagctccccatggactagtcccatcccccggccccagctccccatggtctcacccccagccccagcccagctccccatggtctcacccccagccccagcccagctccccatggactcacccccagccccagcccagctccccatggactagtcccagcccccggccccagctccccatggtctcacccccagccccagcccagctccccatggtctcacccccggccccagctccctgtggacttg\tN\t60\tGT\tPRECISE;SVTYPE=DEL;SVLEN=-261;END=1231548;SUPPORT=2;COVERAGE=13,13,13,13,13;STRAND=-;AF=0.154;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/0:10:11:2", + "chr16\t1231287\tSniffles2.DEL.E2SF\tcccccagccccagcccagctccccatggactagtcccatcccccggccccagctccccatggtctcacccccagccccagcccagctccccatggtctcacccccagccccagcccagctccccatggactcacccccagccccagcccagctccccatggactagtcccagcccccggccccagctccccatggtctcacccccagccccagcccagctccccatggtctcacccccggccccagctccctgtggacttg\tN\t60\tGT\tPRECISE;SVTYPE=DEL;SVLEN=-261;END=1231548;SUPPORT=2;COVERAGE=13,13,13,13,13;STRAND=-;AF=0.154;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/0:10:11:2", "chr16\t1231356\tSniffles2.INS.78SF\tN\tCCCAGCTCCAGCCCAGCTCCCCATGGACTAGTCCCAGCCCCAGCCCAGCTCCCCATGGTCTCACCCCCAGCCCCAGCCCAGCTCCCCATGGACTAGTCCCATCCCCCGGCCCCAGCTCCCCATGGTCTCACCCCCAGCCCCAGCCCAGCTCCCCATGGTCTCACCCCCAGCCCCAGCCCAGCTCCCCATGGACTCACCCCCAGCCCCAGCCCAGCTCCCCATGGACTAGTCGCAGCCCCCGGCCCCAGCTCCCCATGGTCTCACCCCCAGCTCCCCATGGACTAGTCTAGTCCCAGCCCCCGGCCCCAGCTCCCCATGGTCTCACCCCCAGCTCCAGCCCAGCTCCCCATGGACTAGTCCCAGCCCCAGCCCAGCTCCCCATGGT\t60\tGT\tIMPRECISE;SVTYPE=INS;SVLEN=385;END=1231356;SUPPORT=2;COVERAGE=13,13,13,13,13;STRAND=+-;AF=0.154;STDEV_LEN=7.778;STDEV_POS=24.749;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/0:10:11:2", "chr16\t1231446\tSniffles2.INS.77SF\tN\tGGACTAGTCGCAGCCCCCGGCCCCAGCTCCCCAGCTGCCTCCACCCCCAGCTCCCCATGGACTAGTCCCAGCCCCAGCCCAGCTCCCCATGGTCTCACCCCCAGCCCCAGCCCAGCTCCCCATGGACTAGTCCCAGCCCCCGGCCCCAGCTCCCCATGGTCTCACCCCCAGCTCCAGCCCAGCTCCCCATGGACTAGTCCCAGCCCCAGCCCAGCTCCCCATGGTCTCACCCCCAGCCCCAGCCCAGCTCCCCATG\t60\tGT\tPRECISE;SVTYPE=INS;SVLEN=256;END=1231446;SUPPORT=2;COVERAGE=13,13,13,13,13;STRAND=-;AF=0.154;STDEV_LEN=2.121;STDEV_POS=21.213;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/0:10:11:2", - "chr16\t1238068\tSniffles2.INS.79SF\tN\tGTGTGTGAATGTGTGCATGTGTTCGTGTGTGCATGTGAACATCCGTGTGTGCATATGTGCATGTGAGTGCACAGATGTGCGGTGTGTGTGCA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=92;END=1238068;SUPPORT=3;COVERAGE=8,8,8,8,2;STRAND=+-;AF=0.375;STDEV_LEN=0.577;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:16:5:3", - "chr16\t1238210\tSniffles2.INS.7ASF\tN\tGTGCATATGTGTGCGTGTGTGCACACACGTGTGTACATGTGTGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=44;END=1238210;SUPPORT=6;COVERAGE=8,8,8,8,2;STRAND=+-;AF=0.750;STDEV_LEN=0.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:3:2:6", - "chr16\t1248124\tSniffles2.DEL.ECSF\tcactcacacatgtacacatgtgtgtgcacacacgcacacatatg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-44;END=1248168;SUPPORT=4;COVERAGE=2,4,4,4,4;STRAND=+-;AF=1.000;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t1/1:11:0:4", - "chr16\t1248302\tSniffles2.DEL.EDSF\tgcacatctgtgcactcacatgcacatatgcacacacggatgttcacatgcacacacgaa\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-59;END=1248361;SUPPORT=4;COVERAGE=3,4,4,4,4;STRAND=+-;AF=1.000;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t1/1:11:0:4", - "chr16\t1254909\tSniffles2.DEL.EESF\tcatggggagctggggccgggggctgggactagtccatggggagctgggctggggctgggggtgaga\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-66;END=1254975;SUPPORT=2;COVERAGE=5,5,5,5,7;STRAND=-;AF=0.400;STDEV_LEN=0.707;STDEV_POS=11.314\tGT:GQ:DR:DV\t0/1:11:3:2", - "chr16\t1254975\tSniffles2.INS.7CSF\tN\tCCATGGGGAGCTGGGCTGGGGCTGGGACTAGTCCATGGGGAGCTGGGCTGGGGCTGGGACTAGTTCATGGGGAGCTGGGCTGGGGCTGGGACTAGTTCATGGGGAGCTGGGCTGGGGCTGGGACTAGTCCATGGGGAGCTGGGCTGGGGCTGGGACTAGTTCATGGGGAGCTGGGCTGGGGCTGGGGGTGAGTCCATGGGGAGCTGGGCTGGGGCTGGGGGTGAGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=226;END=1254975;SUPPORT=2;COVERAGE=5,5,5,5,7;STRAND=+-;AF=0.400;STDEV_LEN=0.707;STDEV_POS=21.920;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:11:3:2", - "chr16\t1258685\tSniffles2.INS.7ESF\tN\tCCCCTCCCCCACCCTGAGCCCCCTCCCCTGTCTTGAGCCACTGCTCCATCCTGAGTCCCCTCCCCCACACTGAGCCCCCTCCCCTTTCTTGAGCCCCTCATCCATCCTGAGCCCCTCCTCCATCCTGAGCCCCCTCCCCCATCCTGGGCCCCCTCCCCTTTCTGGAGCCCCCTCCCCCACCCTGAGCCCCCTCCCCTTCTTGAGCCCCCTCCCCACCCTGAGCCCCTTCCCCTTTCTTCAGTCCCTCCTCCATCCTGAGCCCCCTCCCTTTCTTGAGCCCTTCCTCCACCCTCAGCCCCCTCCCTTTCTTGAGCCCCTCCCCCACCCTGAGCCCCTTCCCCTTCTTGAGTCCCTCCCCCACCCTGAGCCCCCTCCCTTTCTTGAGTCCCTCCCCCACCCTGAGCCCCTTCCCCTTTCTTGAGCC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=424;END=1258685;SUPPORT=11;COVERAGE=9,11,11,11,15;STRAND=+-;AF=1.000;STDEV_LEN=34.141;STDEV_POS=1.890;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:30:0:11", - "chr16\t1260690\tSniffles2.INS.7FSF\tN\tAGCCCGGAGACCCACGTCCACACACAGCCCGGAGACCCACATCCACACAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=50;END=1260690;SUPPORT=8;COVERAGE=17,17,17,17,16;STRAND=+-;AF=0.471;STDEV_LEN=0.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:54:9:8", - "chr16\t1264730\tSniffles2.DEL.EFSF\ttgtgtgtatgcgtgtgcatatgtaaggatgtgtgcg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-36;END=1264766;SUPPORT=8;COVERAGE=14,14,14,14,14;STRAND=+-;AF=0.571;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/1:37:6:8", - "chr16\t1285139\tSniffles2.INS.80SF\tN\tACTCTCCACTATTCCAGGGCCTCATCCCACTCCAGGGCCCTCTCACTATTCCAGGGCCCTCTCCCCCCA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=80;END=1285139;SUPPORT=3;COVERAGE=4,4,4,4,4;STRAND=+-;AF=0.750;STDEV_LEN=12.530;STDEV_POS=50.013;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:1:1:3", - "chr16\t1285239\tSniffles2.INS.81SF\tN\tCCAGGGCCCTCTCCACTATTCCAGGGCCCTCTCCACCACTCCAGGGCCCTCTCCACTATTCCAGGGCCCTCTCCACCACCCCAGGGCCCTCTCCACCACCCCAGGGCCCTCTCCACTATTCCAGGGCCCTCTCCACCACCCCAGGGCCCTCTCCACTATTCCAGGGCCCTCTCCACCACC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=182;END=1285239;SUPPORT=3;COVERAGE=4,4,4,4,4;STRAND=+-;AF=0.750;STDEV_LEN=3.055;STDEV_POS=222.264;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:1:1:3", - "chr16\t1308390\tSniffles2.DEL.F1SF\ttgagtgagggagggaatgagtgagggagggaatgag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-36;END=1308426;SUPPORT=15;COVERAGE=18,18,18,19,19;STRAND=+-;AF=0.833;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t1/1:11:3:15", - "chr16\t1345656\tSniffles2.INS.84SF\tN\tGCAACCCCAGCCTCCCCAGCCTCCCCAGCAACCCCAGCCTCCCCAGCAACCCCAGCCTCCTCA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=63;END=1345656;SUPPORT=8;COVERAGE=19,19,19,19,18;STRAND=+-;AF=0.421;STDEV_LEN=0.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:49:11:8", - "chr16\t1356874\tSniffles2.DEL.F9SF\t\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-42;END=1356916;SUPPORT=4;COVERAGE=10,10,10,10,8;STRAND=+-;AF=0.400;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/1:23:6:4", - "chr16\t1367562\tSniffles2.DEL.FASF\t\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-53;END=1367615;SUPPORT=2;COVERAGE=3,3,3,3,3;STRAND=+-;AF=0.667;STDEV_LEN=2.121;STDEV_POS=5.657\tGT:GQ:DR:DV\t0/1:4:1:2" - ], - [ - "##fileformat=VCFv4.2", - "##source=Sniffles2_2.0.7", - "##command=\"/usr/local/bin/sniffles --input test_1.snf test_2.snf --reference hg38.test.fa -t 4 --vcf project.vcf.gz\"" + "chr16\t1238068\tSniffles2.INS.79SF\tN\tGTGTGTGAATGTGTGCATGTGTTCGTGTGTGCATGTGAACATCCGTGTGTGCATATGTGCATGTGAGTGCACAGATGTGCGGTGTGTGTGCA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=92;END=1238068;SUPPORT=3;COVERAGE=8,8,8,8,2;STRAND=+-;AF=0.375;STDEV_LEN=0.577;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:16:5:3", + "chr16\t1238210\tSniffles2.INS.7ASF\tN\tGTGCATATGTGTGCGTGTGTGCACACACGTGTGTACATGTGTGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=44;END=1238210;SUPPORT=6;COVERAGE=8,8,8,8,2;STRAND=+-;AF=0.75;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:3:2:6", + "chr16\t1248124\tSniffles2.DEL.ECSF\tcactcacacatgtacacatgtgtgtgcacacacgcacacatatg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-44;END=1248168;SUPPORT=4;COVERAGE=2,4,4,4,4;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t1/1:11:0:4", + "chr16\t1248302\tSniffles2.DEL.EDSF\tgcacatctgtgcactcacatgcacatatgcacacacggatgttcacatgcacacacgaa\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-59;END=1248361;SUPPORT=4;COVERAGE=3,4,4,4,4;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t1/1:11:0:4", + "chr16\t1254909\tSniffles2.DEL.EESF\tcatggggagctggggccgggggctgggactagtccatggggagctgggctggggctgggggtgaga\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-66;END=1254975;SUPPORT=2;COVERAGE=5,5,5,5,7;STRAND=-;AF=0.4;STDEV_LEN=0.707;STDEV_POS=11.314\tGT:GQ:DR:DV\t0/1:11:3:2", + "chr16\t1254975\tSniffles2.INS.7CSF\tN\tCCATGGGGAGCTGGGCTGGGGCTGGGACTAGTCCATGGGGAGCTGGGCTGGGGCTGGGACTAGTTCATGGGGAGCTGGGCTGGGGCTGGGACTAGTTCATGGGGAGCTGGGCTGGGGCTGGGACTAGTCCATGGGGAGCTGGGCTGGGGCTGGGACTAGTTCATGGGGAGCTGGGCTGGGGCTGGGGGTGAGTCCATGGGGAGCTGGGCTGGGGCTGGGGGTGAGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=226;END=1254975;SUPPORT=2;COVERAGE=5,5,5,5,7;STRAND=+-;AF=0.4;STDEV_LEN=0.707;STDEV_POS=21.92;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:11:3:2", + "chr16\t1258685\tSniffles2.INS.7ESF\tN\tCCCCTCCCCCACCCTGAGCCCCCTCCCCTGTCTTGAGCCACTGCTCCATCCTGAGTCCCCTCCCCCACACTGAGCCCCCTCCCCTTTCTTGAGCCCCTCATCCATCCTGAGCCCCTCCTCCATCCTGAGCCCCCTCCCCCATCCTGGGCCCCCTCCCCTTTCTGGAGCCCCCTCCCCCACCCTGAGCCCCCTCCCCTTCTTGAGCCCCCTCCCCACCCTGAGCCCCTTCCCCTTTCTTCAGTCCCTCCTCCATCCTGAGCCCCCTCCCTTTCTTGAGCCCTTCCTCCACCCTCAGCCCCCTCCCTTTCTTGAGCCCCTCCCCCACCCTGAGCCCCTTCCCCTTCTTGAGTCCCTCCCCCACCCTGAGCCCCCTCCCTTTCTTGAGTCCCTCCCCCACCCTGAGCCCCTTCCCCTTTCTTGAGCC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=424;END=1258685;SUPPORT=11;COVERAGE=9,11,11,11,15;STRAND=+-;AF=1;STDEV_LEN=34.141;STDEV_POS=1.89;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:30:0:11", + "chr16\t1260690\tSniffles2.INS.7FSF\tN\tAGCCCGGAGACCCACGTCCACACACAGCCCGGAGACCCACATCCACACAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=50;END=1260690;SUPPORT=8;COVERAGE=17,17,17,17,16;STRAND=+-;AF=0.471;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:54:9:8", + "chr16\t1264730\tSniffles2.DEL.EFSF\ttgtgtgtatgcgtgtgcatatgtaaggatgtgtgcg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-36;END=1264766;SUPPORT=8;COVERAGE=14,14,14,14,14;STRAND=+-;AF=0.571;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:37:6:8", + "chr16\t1285139\tSniffles2.INS.80SF\tN\tACTCTCCACTATTCCAGGGCCTCATCCCACTCCAGGGCCCTCTCACTATTCCAGGGCCCTCTCCCCCCA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=80;END=1285139;SUPPORT=3;COVERAGE=4,4,4,4,4;STRAND=+-;AF=0.75;STDEV_LEN=12.53;STDEV_POS=50.013;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:1:1:3", + "chr16\t1285239\tSniffles2.INS.81SF\tN\tCCAGGGCCCTCTCCACTATTCCAGGGCCCTCTCCACCACTCCAGGGCCCTCTCCACTATTCCAGGGCCCTCTCCACCACCCCAGGGCCCTCTCCACCACCCCAGGGCCCTCTCCACTATTCCAGGGCCCTCTCCACCACCCCAGGGCCCTCTCCACTATTCCAGGGCCCTCTCCACCACC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=182;END=1285239;SUPPORT=3;COVERAGE=4,4,4,4,4;STRAND=+-;AF=0.75;STDEV_LEN=3.055;STDEV_POS=222.264;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:1:1:3", + "chr16\t1308390\tSniffles2.DEL.F1SF\ttgagtgagggagggaatgagtgagggagggaatgag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-36;END=1308426;SUPPORT=15;COVERAGE=18,18,18,19,19;STRAND=+-;AF=0.833;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t1/1:11:3:15", + "chr16\t1345656\tSniffles2.INS.84SF\tN\tGCAACCCCAGCCTCCCCAGCCTCCCCAGCAACCCCAGCCTCCCCAGCAACCCCAGCCTCCTCA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=63;END=1345656;SUPPORT=8;COVERAGE=19,19,19,19,18;STRAND=+-;AF=0.421;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:49:11:8" ], [ "##contig=", @@ -899,7 +874,6 @@ "##FORMAT=", "##FORMAT=", "##FORMAT=", - "##FILTER=", "##FILTER=", "##FILTER=", "##FILTER=", @@ -929,97 +903,105 @@ "##INFO=", "##INFO=", "##INFO=", - "#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO\tFORMAT\ttest_1\ttest_2", - "chr16\t82018\tSniffles2.INS.0MF\tN\tCTCCTGAATGCTCCCCACACTGACCCCTTCTTCCCACCACCCTACCTCCGGGAAGGAATGCTCCCCACACTGACCCCTTCTTCCCACCACCCTACCTCCGGGGAAGGCCCCTC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=140;END=82018;SUPPORT=6;COVERAGE=22,22,22,23,23;STRAND=+-;AC=2;STDEV_LEN=141.564;STDEV_POS=161.771;SUPP_VEC=11\tGT:GQ:DR:DV:ID\t0/1:38:15:8:Sniffles2.INS.4SF,Sniffles2.INS.1SF,Sniffles2.INS.0SF,Sniffles2.INS.3SF,Sniffles2.INS.2SF\t0/1:30:14:7:Sniffles2.INS.1SF,Sniffles2.INS.3SF,Sniffles2.INS.2SF", - "chr16\t153120\tSniffles2.INS.2MF\tN\tACAGTGGGGAGGGGACAGTGGGGAGAGGACAGTAAGGAGGGGACCATGGGGAGGAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=56;END=153120;SUPPORT=18;COVERAGE=18,18,18,18,18;STRAND=+-;AC=4;STDEV_LEN=0.000;STDEV_POS=0.000;SUPP_VEC=11\tGT:GQ:DR:DV:ID\t1/1:60:0:23:Sniffles2.INS.5SF\t1/1:26:1:13:Sniffles2.INS.6SF", - "chr16\t160389\tSniffles2.INS.1MF\tN\tGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCAGGATGGCTTGTGGGGCACAGGCTGCAAGAGGTGCCCAGGACGGCTTGTGGGGCACAGGTTGTGAGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=145;END=160389;SUPPORT=9;COVERAGE=25,25,25,25,24;STRAND=+-;AC=4;STDEV_LEN=198.559;STDEV_POS=260.098;SUPP_VEC=11\tGT:GQ:DR:DV:ID\t1/1:26:4:24:Sniffles2.INS.ESF,Sniffles2.INS.BSF,Sniffles2.INS.CSF,Sniffles2.INS.7SF,Sniffles2.INS.6SF,Sniffles2.INS.ASF,Sniffles2.INS.8SF,Sniffles2.INS.9SF,Sniffles2.INS.DSF\t1/1:1:4:15:Sniffles2.INS.9SF,Sniffles2.INS.CSF,Sniffles2.INS.BSF,Sniffles2.INS.7SF,Sniffles2.INS.8SF,Sniffles2.INS.ASF", - "chr16\t163460\tSniffles2.DEL.4MF\tcgtggggaggggacagtgaggaggggaccgtggggaggagacagtgaggaggggaccgtagggaggggacagtgaggaggggaccgtggggaggggacagtgaggagggga\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-111;END=163571;SUPPORT=5;COVERAGE=20,20,20,20,19;STRAND=+-;AC=2;STDEV_LEN=73.252;STDEV_POS=169.517;SUPP_VEC=11\tGT:GQ:DR:DV:ID\t0/1:28:15:7:Sniffles2.DEL.5DSF,Sniffles2.DEL.5ESF\t0/1:49:11:8:Sniffles2.DEL.8FSF,Sniffles2.DEL.92SF,Sniffles2.DEL.90SF,Sniffles2.DEL.8ESF,Sniffles2.DEL.91SF", - "chr16\t164801\tSniffles2.INS.3MF\tN\tCGGGGTCGCGGGGCGGGCGGGTCGCGGGGCGGGGTCGCGGGGGCGGGCGAGGTC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=56;END=164801;SUPPORT=8;COVERAGE=20,20,20,20,19;STRAND=+-;AC=2;STDEV_LEN=3.536;STDEV_POS=0.000;SUPP_VEC=11\tGT:GQ:DR:DV:ID\t0/1:43:13:8:Sniffles2.INS.FSF\t0/1:52:10:8:Sniffles2.INS.ESF", - "chr16\t182789\tSniffles2.INS.5MF\tN\tTGAAACACCGTCTCTACTAAAAATACAAAAATTAGCCAGGCATAGTGGCGGGCGCCTGTAATCCCAGCTGTTCGGGAGGCTGAGGCAGGACAATCACTTAAACCAGGGAAGCAGAGGTTGCAGTGAGCTGAGATCGAGCCACTGCACTCCAGCCTGGGCGACAGACCGAGACTGTCTCAAAAAAAAGACCGGGCACGGTGGCTCACGCCTGTAATCCCACCACTTTGGGAGGCTGAGGCGGGCTGATCACGATGTCAGGAGATCTAGACCATCCTGGCCAACATGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=286;END=182789;SUPPORT=10;COVERAGE=12,11,11,11,11;STRAND=+-;AC=4;STDEV_LEN=0.000;STDEV_POS=0.000;SUPP_VEC=11\tGT:GQ:DR:DV:ID\t1/1:33:0:12:Sniffles2.INS.10SF\t1/1:2:2:8:Sniffles2.INS.FSF", - "chr16\t186173\tSniffles2.DEL.7MF\taacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-738;END=186911;SUPPORT=5;COVERAGE=10,10,10,10,10;STRAND=+-;AC=2;STDEV_LEN=121.614;STDEV_POS=150.471;SUPP_VEC=11\tGT:GQ:DR:DV:ID\t0/1:33:6:5:Sniffles2.DEL.5FSF,Sniffles2.DEL.60SF\t0/1:10:3:7:Sniffles2.DEL.96SF,Sniffles2.DEL.95SF", - "chr16\t239176\tSniffles2.INS.6MF\tN\tTGTAGTCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATGGCGTGAACCCGGGAGGCGGGGCTTGCAGTGAGCCGAGATCACGCCACTACACTCGAGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAAAAGCAAACATAATGAAAATTAAAAAATTTTTAAAAAAACCCTGCAAACTTGGTGAATTTTTTACCGACTCGTGCTTTGCAAAATTCTTCATGGAACTTAGATTATATCAGGAAGATGTTAAAAAAAAAAAAAAAAAAAAGAATGCTGACTCCTAACCAAATAACTATGAAGCAGATGCTGAGAGATCAAAGGAGCAAATCTAAAAATCATCAGAGATGGGGCCTGGGGGAGAAGTATGCTGGCTTATAGATGAAAATGACTGGCTCTGTGTTGATAACTGTTGATAACTGTTGGACCTGGGTAATGGGTTTATGAGGCTGGTGTTCTCTACTTTTGTTAATGTTTGAGCATTTACATAATAAAGGTTTTTTTTTTTCATTGTATATAGAAATGGACTCACTATGTTGCCCAGGCTGGCCTCAAATTCCCGGGCTCAAGTAGTCCTCCCTCCTCTGCCTCTTGAAGTGCTGAGATTATAGGCATGAGACACCACACCTGGATCAAAGGTTAAAAAAATAATGATAAAAGAAGTAAGTTGAGGCTACTGTGGGCACACTGCCCATGGGTTAGCCCTGCTGTGCAAGGATCAGAAAAAAAAAAAAAAAAGAAATTGAAGCTAAGGCCTAATTAACTGGCTTATCTTGTAGAGTTTAGCAGAAGTGACCAAGTTTAGAGTTATACTTTATCTTTTTCTTTCTCTGCCCCCTACTTAATGAAGGACAAAAATGAGTAACATGGCTGGGTGTGGTGGCTCACGCCTGTCATCCCAGCACTTTGGGAGGCCGAGGTGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCATGGCCAACATGATGAAACCAAAATACAAAAGTTAGCCAGGCGTGGTGGCGGGCGTA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=1020;END=239176;SUPPORT=2;COVERAGE=2,2,2,2,4;STRAND=+;AC=2;STDEV_LEN=0;STDEV_POS=0;SUPP_VEC=01\tGT:GQ:DR:DV:ID\t./.:0:0:0:NULL\t1/1:5:0:2:Sniffles2.INS.10SF", - "chr16\t318898\tSniffles2.INS.CMF\tN\tGCCAGGGCCTTGGTGAGAGCGGCTCTGACCCCTGGCTGTGCGGAGAGAATGCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=53;END=318898;SUPPORT=2;COVERAGE=8,8,8,8,8;STRAND=+-;AC=1;STDEV_LEN=0.000;STDEV_POS=0.000;SUPP_VEC=11\tGT:GQ:DR:DV:ID\t0/0:1:4:1:Sniffles2.INS.11SF\t0/1:17:8:4:Sniffles2.INS.12SF", - "chr16\t321645\tSniffles2.INS.BMF\tN\tGGATTCCAACCCACGAAGGGTTAAACCCTCTCATAGCTGGGAATATGAGGTAGAAGGCGGATGCCAACCCACGAAGGGTTAAACCCTCTCATAGCTGGGAATATGAGGTAGAAGGC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=116;END=321645;SUPPORT=8;COVERAGE=16,16,16,15,16;STRAND=+-;AC=1;STDEV_LEN=0;STDEV_POS=0;SUPP_VEC=01\tGT:GQ:DR:DV:ID\t./.:0:3:0:NULL\t0/1:57:8:8:Sniffles2.INS.13SF", - "chr16\t362987\tSniffles2.INS.8MF\tN\tTCCCAGGACTTAGCACCGGGGGGTCTCGGGCTGCGGCTGCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=41;END=362987;SUPPORT=8;COVERAGE=14,13,13,13,12;STRAND=+-;AC=2;STDEV_LEN=0.707;STDEV_POS=4.243;SUPP_VEC=11\tGT:GQ:DR:DV:ID\t0/1:21:3:3:Sniffles2.INS.12SF\t0/1:46:8:12:Sniffles2.INS.14SF", - "chr16\t370391\tSniffles2.INS.9MF\tN\tCTACCCTGCCCCGGCTCTCACCCCCTACCCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCGGCTCTCACCCCCTACCCCGGCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCGCTACCCTGCCCCCGGCTCTCACCGCTACCCCCCGGCTCTCACCCGCTACCCCGCCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCCGGCCCCCCGGCTCTCACCTCCTACCCGGCCCCGGCTCTCACCCGCTCCCCCGGCCCCCGGCTCTCACCCGCTCACCCCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCTCGGCTCTCACCCCCTACCCCGGCCCCGGCTCTCACCCCCTACCCCTGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCCGGCTCTCACCCGCTACCCCGGCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGGCTCTCACTCC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=692;END=370391;SUPPORT=5;COVERAGE=15,13,13,13,15;STRAND=+-;AC=4;STDEV_LEN=492.627;STDEV_POS=60.000;SUPP_VEC=11\tGT:GQ:DR:DV:ID\t1/1:19:0:7:Sniffles2.INS.13SF\t1/1:3:3:12:Sniffles2.INS.16SF,Sniffles2.INS.15SF,Sniffles2.INS.17SF", - "chr16\t378412\tSniffles2.INS.AMF\tN\tGCCATCGCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCTGACTGCCATCGCCACCCACACTGCCATCCCCACCCGCACTGCCATCGCCACCCTGACTGCCATCGCCACCCACAATGCCATCCCCACCCGCACTGCCATCGCCACCCGCACTGCCATCCCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCACACTGCCATC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=188;END=378412;SUPPORT=5;COVERAGE=18,18,18,18,18;STRAND=+-;AC=2;STDEV_LEN=166.924;STDEV_POS=139.035;SUPP_VEC=11\tGT:GQ:DR:DV:ID\t0/1:3:13:4:Sniffles2.INS.15SF,Sniffles2.INS.14SF\t0/1:52:10:8:Sniffles2.INS.18SF,Sniffles2.INS.1ASF,Sniffles2.INS.1BSF,Sniffles2.INS.19SF", - "chr16\t397717\tSniffles2.INS.DMF\tN\tTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGTGGGGGTGGGGGTGTGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGTGAGGGAGTCGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGTGAGGGAGTCGGGGGGTGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGGC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=506;END=397717;SUPPORT=5;COVERAGE=13,11,11,11,12;STRAND=+-;AC=3;STDEV_LEN=350.820;STDEV_POS=5.774;SUPP_VEC=11\tGT:GQ:DR:DV:ID\t1/1:8:0:3:Sniffles2.INS.16SF\t0/1:9:4:11:Sniffles2.INS.1DSF,Sniffles2.INS.1ESF", - "chr16\t410342\tSniffles2.DEL.FMF\tgtgtgctctatgagaagttcttccgggtgggtgcctcgtgcgctctgtgagaag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-54;END=410396;SUPPORT=4;COVERAGE=15,14,14,14,12;STRAND=+-;AC=1;STDEV_LEN=25.456;STDEV_POS=25.456;SUPP_VEC=01\tGT:GQ:DR:DV:ID\t./.:0:1:0:NULL\t0/1:50:7:7:Sniffles2.DEL.99SF,Sniffles2.DEL.9ASF", - "chr16\t433138\tSniffles2.INS.EMF\tN\tATTCTCCTGCCTCAGCCTCCCAAGAAGCTGGGACTACAGGCGCCCGCCACCACGCCCGGCTAATTTTTATATTTTTAGTAGAGACGAAGTTTCACCATGTTAGCCAGGATGGTCTCCATCTCCTGACCTCGTGATCTGCCCACCTCGGCCTCCCAAAGTGCTGGGATTACAGGCATGAGCTACTGTGCCCGGCCTGTCATTTTTATATATTGGGAAAGTTTTGAGTCCTTTCTCTAGGTATGTTGAAATATACAGGCATGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGTCCGAGGCGGGTGAATCACGAGGTCAGGAGATCGAGACCATCCTGGCTAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAAAAATTAGCCAGGCATGGTGGTGGGCGCCTGTAGTCCCAGCTACTCCAGAGGCTGAGGCAGGAGAATGGCGTGAACCTGAGCTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACTGAGCAAGACTCTGTCTCAAAAAAAAAAAAAAAGAAATATACAATATATTGTTGTTAAATTTAGTCACCCTACTCTGCTACCAAACATTAGAACTTATCCTTTGTCTCATTGTAATTTTTTTTTTTTTGAGATGGGGTCTCGCTCTGTCGCCCAGGCTGGAGTGCAGTGGCGCTATCTTGGCTCACTGCAACCTCCACCTCCCAGGTTCAAGCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=725;END=433138;SUPPORT=2;COVERAGE=4,4,4,4,3;STRAND=+-;AC=1;STDEV_LEN=0;STDEV_POS=0;SUPP_VEC=01\tGT:GQ:DR:DV:ID\t./.:0:0:0:NULL\t0/1:14:2:2:Sniffles2.INS.21SF", - "chr16\t433638\tSniffles2.DEL.1AMF\tggagatcgagaccatcctagctaacacggtgaaaccctgtctctactaaaaatacaaaaaaaaaaaaaattagctgggtgtggttgcgggcgcctgtagacccacctacttgggaggctgaggcaggagaatggcgtgaacctgggaggtggagcttg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-158;END=433796;SUPPORT=2;COVERAGE=4,4,4,2,2;STRAND=+-;AC=1;STDEV_LEN=3.536;STDEV_POS=453.963;SUPP_VEC=01\tGT:GQ:DR:DV:ID\t./.:0:0:0:NULL\t0/1:4:2:1:Sniffles2.DEL.9CSF,Sniffles2.DEL.9DSF", - "chr16\t492363\tSniffles2.INS.10MF\tN\tTCCCGGGGGACCCGAGGCCACCCCGGCCCTCCCGGGAGACCCGAGGCCGCCCAGGGCCCTCCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCGGGAGACCCGAGGCCGCCCCAAGCCCCCTCCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCGGGAGACCCGCGAGGCCGCCCAGAGCCCTCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCCGGGAGACCCGAGGCCGTCCAGGGCCCTCCCCGGGAGACCCGAGGCCGCCCAGGGCCCTTCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCGGGGAGACCCGAGGCCGCCCAGGGCCCTCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCCGGGAGACCCGGGAGCGATCCCAGGGCCCCTCCCGGGGAGACCCGAGGCCGCCCAGGGCCCTCCCCGGGAGACCCGAGGCCGCCCAGGGCCCTTCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCGGGGAGACCCGAGGCCGCCCAGGGCCCTCCCGGGAGACCCGAGGCCGCCCCAAGCCCTCCCCGGGAGACCCGAGGCCGTCCAGGGCCCTTCCCGGGGAGACCCGAGGCCGCCCAGGGCCCTCCCCGGGAGACCCGAGGCCGCCCAGGGCCCTTCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCGGGGAGACCCGAGGCCGCCCAGGGCCCTCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCCGGGAGACCCGAGGCCGCCCAGGGCCCTCCCGGGAGACCCGAGGCCGCCCAGGGCCCTCCCCGGGAGACCCGAGGCCGCCCAGGGCCCTCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCCGGGAGACCCGAGGCCGCCCAGGGCCCTCCCCGGGAGACCCGAGGCCGCCCCAGGGCCCTCCCCGGGAGACCCGAGGCCGCCCAGGGCCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=1083;END=492363;SUPPORT=2;COVERAGE=2,2,2,2,2;STRAND=+;AC=2;STDEV_LEN=0;STDEV_POS=0;SUPP_VEC=01\tGT:GQ:DR:DV:ID\t./.:0:0:0:NULL\t1/1:5:0:2:Sniffles2.INS.22SF", - "chr16\t494828\tSniffles2.INS.11MF\tN\tGGGAGGTCGAGGCTGCAGAGGTGGCAGGATCACATGATCCTGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCAGAGGTGGCAGGATCACATGATCCTGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCAGAGGTGGCAGGATCACATGATCCTGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATAGCATGAGCCTGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGATCCTGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGATCCTGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGGCGGATCACATGAGCCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=2706;END=494828;SUPPORT=2;COVERAGE=2,2,2,2,2;STRAND=+;AC=2;STDEV_LEN=0;STDEV_POS=0;SUPP_VEC=01\tGT:GQ:DR:DV:ID\t./.:0:0:0:NULL\t1/1:11:0:4:Sniffles2.INS.23SF", - "chr16\t504349\tSniffles2.INS.17MF\tN\tCCTCCTGTACCCCCTCACCTCCTCCTGCACTCCCATCTCCTCCTGTACCCCCTCAGCTCCTTGTGTACCCCTCACCTCCTGTACCCCCTCACCTCCTCCTGCACTCCCATCTCCTGTACCCCCTCAGCTCCTTGTGTACCCCTCA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=184;END=504349;SUPPORT=4;COVERAGE=7,8,8,8,10;STRAND=+-;AC=3;STDEV_LEN=165.544;STDEV_POS=82.343;SUPP_VEC=11\tGT:GQ:DR:DV:ID\t1/1:11:0:4:Sniffles2.INS.17SF,Sniffles2.INS.18SF\t0/1:20:4:7:Sniffles2.INS.24SF,Sniffles2.INS.26SF,Sniffles2.INS.25SF,Sniffles2.INS.27SF", - "chr16\t507785\tSniffles2.INS.18MF\tN\tCGTTTCCCGTTTTCAGTATCATCTGCCCGTTCTGAGCCATTTGCTCTCTAGCCCTACCATACAGCTGTCATCCTAAGGTCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=81;END=507785;SUPPORT=2;COVERAGE=12,12,12,12,14;STRAND=+-;AC=2;STDEV_LEN=40.500;STDEV_POS=98.902;SUPP_VEC=11\tGT:GQ:DR:DV:ID\t1/1:1:1:4:Sniffles2.INS.19SF\t0/0:31:15:1:Sniffles2.INS.28SF,Sniffles2.INS.29SF,Sniffles2.INS.2ASF", - "chr16\t534179\tSniffles2.INS.14MF\tN\tGGGCCGTGGTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACGGGGCCGTGTTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACGGGGCCGTGTTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACGGGGCCGTGGTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=189;END=534179;SUPPORT=10;COVERAGE=12,12,12,11,10;STRAND=+-;AC=4;STDEV_LEN=38.184;STDEV_POS=0.000;SUPP_VEC=11\tGT:GQ:DR:DV:ID\t1/1:13:0:5:Sniffles2.INS.1ASF\t1/1:11:3:15:Sniffles2.INS.2CSF", - "chr16\t544781\tSniffles2.INS.15MF\tN\tCGTCTCCCCCACGCCGCCTCCCCCCACGTCGCCTCCCCCCACGTCGCCTCCCCCACGCCGCCTCCCCCACGCCGCCTCCCCCACGTCGCCGCCGTCTCCCCCACGCCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGCCGCCGTCTCCCCCACGCCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGCCGCCTCCCCCACGCCGCCTCCCCTCACGTCGCCTCCCCCACGCCGTCGCCTCCCTCCACGCCGC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=346;END=544781;SUPPORT=12;COVERAGE=12,12,12,12,12;STRAND=+-;AC=4;STDEV_LEN=2.828;STDEV_POS=0.000;SUPP_VEC=11\tGT:GQ:DR:DV:ID\t1/1:22:0:8:Sniffles2.INS.1BSF\t1/1:21:2:15:Sniffles2.INS.2DSF", - "chr16\t550769\tSniffles2.INS.12MF\tN\tCGGTGAGGGTCCCCGGTCGGTGAGGGCGCCCCGTCAGTGAGGGTCCCGGTCAGTGAGGGCCCCGGTCGGTGAGGGTCCCCGGTCGGTGAGGGCCCCTGTCGGTGAGGGCCCCGGTCGGTGAGGGACCCGGTCGGTGAGGGCCCCCTGTCGGTGAGGGTCCCCTGTCGGTGAGGGCCCCGGTCGGTGAGGGCCCCGGTCGGTGAGGGTCCCCTGTCGGTGAGGGTCCCCTGTCGGTGAGGGTCCCGGTCGGTGAGGGCCCCGGTCGGTGAGGGTGCCCCGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=280;END=550769;SUPPORT=17;COVERAGE=18,18,18,18,18;STRAND=+-;AC=4;STDEV_LEN=0.000;STDEV_POS=0.000;SUPP_VEC=11\tGT:GQ:DR:DV:ID\t1/1:36:0:13:Sniffles2.INS.1CSF\t1/1:38:2:21:Sniffles2.INS.2ESF", - "chr16\t553058\tSniffles2.INS.16MF\tN\tTGCCCCCCACCCCTGCACAGGTGCCCCCTCCCCTACCCCGCTGCACCCACACCCAACTCGTGCCCCCCCACCCCTGCACAGGTGCCCCCTCCCCTACCCCGCTGCACCCACACCCAACTCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=121;END=553058;SUPPORT=8;COVERAGE=16,16,16,16,14;STRAND=+-;AC=2;STDEV_LEN=0.707;STDEV_POS=1.414;SUPP_VEC=11\tGT:GQ:DR:DV:ID\t0/1:33:5:6:Sniffles2.INS.1DSF\t0/1:59:11:9:Sniffles2.INS.2FSF", - "chr16\t571110\tSniffles2.INS.13MF\tN\tTGGCTAGCCTGTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTGTGTGTGTCTGGCTAGCCTGGTGCCCGTGTGTGTGTGTATGTGTGTGTGTGTGTGTGTGTCTGGCTAGCTGGCGCCCGTGGCTAGCCTGGTGCCCGTGTGTGTGTGTATGTATGTGTCTGGCTAGCCTGGTGCCCGTGGCTAGCCTGGTGCCCGTGTGTGTGTGTGTGGGGGGGGCTAGCCTTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTCTGGCTAGCGTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTGTGTGTGCTAGCCTGGCGCCCGTGTGTGTGTGTGTGTGTGTCTGGCTAGCCTGGCACCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=357;END=571110;SUPPORT=7;COVERAGE=16,15,14,14,16;STRAND=+-;AC=3;STDEV_LEN=236.989;STDEV_POS=22.000;SUPP_VEC=11\tGT:GQ:DR:DV:ID\t1/1:44:0:16:Sniffles2.INS.1FSF,Sniffles2.INS.1ESF\t0/1:27:5:8:Sniffles2.INS.30SF,Sniffles2.INS.31SF", - "chr16\t579428\tSniffles2.DEL.1BMF\tctagaggtgccccgggcccagagactagagatgccccgggcccggagactagaggtgccccgggcccggagactagaggtgccccgggcccggaga\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-96;END=579524;SUPPORT=7;COVERAGE=14,14,16,16,16;STRAND=+-;AC=3;STDEV_LEN=67.176;STDEV_POS=133.234;SUPP_VEC=11\tGT:GQ:DR:DV:ID\t0/1:33:6:5:Sniffles2.DEL.62SF,Sniffles2.DEL.61SF\t1/1:4:4:16:Sniffles2.DEL.A0SF,Sniffles2.DEL.A1SF", - "chr16\t585009\tSniffles2.DEL.1FMF\tcccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctccccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctccccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctccc\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-156;END=585165;SUPPORT=8;COVERAGE=17,17,17,17,16;STRAND=+-;AC=4;STDEV_LEN=89.779;STDEV_POS=56.624;SUPP_VEC=11\tGT:GQ:DR:DV:ID\t1/1:16:0:6:Sniffles2.DEL.63SF\t1/1:0:5:18:Sniffles2.DEL.A2SF,Sniffles2.DEL.A3SF", - "chr16\t587440\tSniffles2.INS.19MF\tN\tTCCCTCCCTTCACTGGGCCTGCTGCCCCAGAGTCCA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=36;END=587440;SUPPORT=10;COVERAGE=12,12,12,11,11;STRAND=+-;AC=4;STDEV_LEN=0.000;STDEV_POS=0.000;SUPP_VEC=11\tGT:GQ:DR:DV:ID\t1/1:13:0:5:Sniffles2.INS.20SF\t1/1:24:2:16:Sniffles2.INS.33SF", - "chr16\t599821\tSniffles2.INS.1CMF\tN\tAAGGTTTGTTTCCTCGTGGCATCAGTCAGCGTGGATTGGGCAAGGTTTTGTTCCCTCGTGGCATCAGTCAGCGTGGACG\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=81;END=599821;SUPPORT=9;COVERAGE=10,10,10,10,8;STRAND=+-;AC=2;STDEV_LEN=0;STDEV_POS=0;SUPP_VEC=01\tGT:GQ:DR:DV:ID\t./.:0:0:0:NULL\t1/1:15:1:9:Sniffles2.INS.34SF", - "chr16\t606369\tSniffles2.INS.1EMF\tN\tCAGTCCTCTCGGTCCTCAGTCCAGTGTGGTTTCCCTGGGCTGAAGTCAAGGTGTTGGCTGACACG\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=65;END=606369;SUPPORT=6;COVERAGE=4,6,6,6,8;STRAND=+-;AC=4;STDEV_LEN=0.707;STDEV_POS=93.338;SUPP_VEC=11\tGT:GQ:DR:DV:ID\t1/1:2:0:1:Sniffles2.INS.21SF\t1/1:27:0:10:Sniffles2.INS.35SF", - "chr16\t612144\tSniffles2.DEL.21MF\tcagggacagccgccctggcctgtagaatcaagagcagggacagccgccctggcctgtagaatcaagagca\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-70;END=612214;SUPPORT=3;COVERAGE=11,12,12,12,12;STRAND=+-;AC=3;STDEV_LEN=108.879;STDEV_POS=415.848;SUPP_VEC=11\tGT:GQ:DR:DV:ID\t1/1:11:0:4:Sniffles2.DEL.64SF\t0/1:4:9:3:Sniffles2.DEL.A4SF,Sniffles2.DEL.AESF,Sniffles2.DEL.AASF,Sniffles2.DEL.A5SF,Sniffles2.DEL.ABSF,Sniffles2.DEL.A8SF,Sniffles2.DEL.A6SF,Sniffles2.DEL.AFSF,Sniffles2.DEL.A9SF,Sniffles2.DEL.A7SF,Sniffles2.DEL.ACSF,Sniffles2.DEL.ADSF,Sniffles2.DEL.B0SF", - "chr16\t631728\tSniffles2.DEL.20MF\tcttctcccaccccttcactgcctctccttccatcctctcctcccaccctctcctcccatccactcctcccatccacttcttccatcct\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-88;END=631816;SUPPORT=16;COVERAGE=15,15,14,16,14;STRAND=+-;AC=4;STDEV_LEN=0.000;STDEV_POS=0.000;SUPP_VEC=11\tGT:GQ:DR:DV:ID\t1/1:47:0:17:Sniffles2.DEL.65SF\t1/1:39:0:14:Sniffles2.DEL.B3SF", - "chr16\t660943\tSniffles2.INS.1DMF\tN\tCCCCCTGTTCGGCCCCTCCCCAGGCCCCCCCCCGCCCGGCCTCAGGCCCCGCCCCCTGTTCGGCCCCTCCCCAGGCCCGGCCTCAGGCCCCGCCCCCTGTTCGGCCCCTCCCCAG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=113;END=660943;SUPPORT=9;COVERAGE=20,20,20,20,18;STRAND=+-;AC=3;STDEV_LEN=81.590;STDEV_POS=30.000;SUPP_VEC=11\tGT:GQ:DR:DV:ID\t1/1:47:0:17:Sniffles2.INS.23SF\t0/1:15:6:16:Sniffles2.INS.3ASF,Sniffles2.INS.3BSF,Sniffles2.INS.39SF", - "chr16\t665215\tSniffles2.DEL.27MF\tcctcagtctgcagcctgctagggacgcacggccacactcctgtctttcag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-50;END=665265;SUPPORT=14;COVERAGE=21,22,22,22,22;STRAND=+-;AC=4;STDEV_LEN=51.962;STDEV_POS=32.909;SUPP_VEC=11\tGT:GQ:DR:DV:ID\t1/1:60:0:22:Sniffles2.DEL.66SF\t1/1:10:4:18:Sniffles2.DEL.B4SF,Sniffles2.DEL.B5SF", - "chr16\t696679\tSniffles2.INS.22MF\tN\tCCCACCCCAAAGCCACCATCCGCTCCCACCTCCATAGGGTTGCTGCTGCCCGCCCCTGCCCCCCAGCCCTGTCCCCCCCACCACCCAGCCTGGGCGCACACCCCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=105;END=696679;SUPPORT=9;COVERAGE=16,16,16,16,15;STRAND=+-;AC=4;STDEV_LEN=60.044;STDEV_POS=0.000;SUPP_VEC=11\tGT:GQ:DR:DV:ID\t1/1:27:0:10:Sniffles2.INS.24SF\t1/1:14:3:16:Sniffles2.INS.3CSF,Sniffles2.INS.3DSF", - "chr16\t746240\tSniffles2.DEL.28MF\tgtgggttcactgcgggtctgcctggctgggcagcaggagaggaggtgggttcactgcgggtctgcctggctgggcagcaggagaggaggtgggttcactgcaggtctgtctggctgggcagcaggaggggagaggtggggtcactgcgggtctgcagggctgcaggaggggagaggtggggtcactgcaggtctgtctggctgggcagcaggagaggaggtgggttcactgcaggtctgtctgggcgggctgcaggagaggaggtggggtcactgcgggtctgtctgggcgggctgcaggagagga\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-306;END=746546;SUPPORT=6;COVERAGE=17,17,17,17,16;STRAND=+-;AC=2;STDEV_LEN=0.707;STDEV_POS=4.243;SUPP_VEC=11\tGT:GQ:DR:DV:ID\t0/1:40:6:7:Sniffles2.DEL.67SF\t0/1:18:15:6:Sniffles2.DEL.B7SF", - "chr16\t760502\tSniffles2.INS.24MF\tN\tAGCCATGAAACCTGGGCCCGGGCTCCCACTCACACCCCACCCCCACCCAGGGCAGCCGTGAAACCTGGGCCCTGGGCTCCCACCCACGCCCCACACCCACCCAGGGC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=107;END=760502;SUPPORT=18;COVERAGE=18,18,18,18,20;STRAND=+-;AC=4;STDEV_LEN=0.000;STDEV_POS=0.000;SUPP_VEC=11\tGT:GQ:DR:DV:ID\t1/1:44:0:16:Sniffles2.INS.25SF\t1/1:32:2:19:Sniffles2.INS.3ESF", - "chr16\t763776\tSniffles2.INS.23MF\tN\tGCATCCCATCCCCCGTCCCCTCCCCCACACCCCTCCCCCACCCCCACGTCCCCTCCCCACCCCTCCCCCACACCCTCCCCCACCCCTCCCCATGTCCCCTCCCCTACCTCCTCCCCCCGCGTCCCCTCCCCCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=133;END=763776;SUPPORT=20;COVERAGE=20,20,21,21,22;STRAND=+-;AC=4;STDEV_LEN=0.000;STDEV_POS=0.000;SUPP_VEC=11\tGT:GQ:DR:DV:ID\t1/1:55:0:20:Sniffles2.INS.26SF\t1/1:48:1:21:Sniffles2.INS.3FSF", - "chr16\t767848\tSniffles2.INS.25MF\tN\tGGTGTGGAGGGGGGCGCGTGGGGGTGTGTGGGGGGGGGCACGTGGAGGGGGCGTGTGGGGGGGTGCGTGGAGGAGGGGCGCGTGGAGGA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=91;END=767848;SUPPORT=6;COVERAGE=18,16,16,15,15;STRAND=+-;AC=2;STDEV_LEN=38.753;STDEV_POS=165.958;SUPP_VEC=11\tGT:GQ:DR:DV:ID\t0/1:22:10:5:Sniffles2.INS.29SF,Sniffles2.INS.28SF,Sniffles2.INS.2ASF,Sniffles2.INS.27SF\t0/1:16:12:5:Sniffles2.INS.40SF,Sniffles2.INS.41SF", - "chr16\t769177\tSniffles2.INS.26MF\tN\tCCCCGGCCCCGGCCCCAGCCCCGGCCCCACCCCGGCCCCAGCCCCAGCCCCAGCCCCAGCCCCACCCCCGGCCCCAGCCCCAGCCCCAGCCCCAGCCCCGGCCCCACCCCCACCCCCGGCCCCGGCCCCGGCCCCACCCCCGGCCCCGGCCCCGGCCCCACCCCCGGCCCCGGCCCCACCCCCGGCCCCGGCCCCAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=197;END=769177;SUPPORT=5;COVERAGE=16,16,16,16,16;STRAND=+-;AC=2;STDEV_LEN=113.756;STDEV_POS=8.083;SUPP_VEC=11\tGT:GQ:DR:DV:ID\t0/1:40:7:6:Sniffles2.INS.2BSF\t0/1:52:10:8:Sniffles2.INS.42SF,Sniffles2.INS.43SF", - "chr16\t795446\tSniffles2.INS.29MF\tN\tCTGCCCCCGGCCCCGTGCCCGCCCCCCTTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCCGTGCTGCCCGTGTGGCCGTGCTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCTGTCCCCGTGTGGCTGCCCCCGGCCCCGCGCCCTTCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=162;END=795446;SUPPORT=5;COVERAGE=17,16,16,16,16;STRAND=+-;AC=2;STDEV_LEN=279.586;STDEV_POS=96.933;SUPP_VEC=11\tGT:GQ:DR:DV:ID\t0/1:27:8:5:Sniffles2.INS.2CSF,Sniffles2.INS.2DSF\t0/1:26:12:6:Sniffles2.INS.44SF,Sniffles2.INS.46SF,Sniffles2.INS.45SF", - "chr16\t818868\tSniffles2.INS.2AMF\tN\tTGGTGAAGACTGTAGTGATGGTGATGATGGTGAAGACTGTAGTGATGATGGTGGTGAAGACTGTAGTGATGTTGATATTGGTGATGAAGACTATAGTGATAGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTAGTGATGGTGATGATGATGGTGAAGACTGTAGTGATGGTGATGATGGTGAAGACTGTAGCGATGATGGTGAACACTGTAGTGATGTTGATATTGGTGATGAAGACTATAGTGATGGTGATGATAGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTGTAGTGATGGTGATGAGGTGAGACTATCGTGATGGTGATGATAATGGTGAAGACTATAGTGATGTTGATGTCGGTGGTGAAGACTGTAGTGATGGTGATGATAGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTGTAGTGATGGTGATGATGGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTATAGTGATGATGGTGAAGACTGTAGTGATGGTGATGATAGTGGTGAAGACTGTAGTGATGTTAATGGTGAAGGCTATAGTGATGTTGATGGTGGTGAAGACTGTAGCAATGGTTATGATGTTGGTGAAGACAATAGTGATGGTGATGATGGTGAAGACTATAGTGATGGTGATGATGGTGGTGAAGACTGTAGTGATGGTGATGATAGTGGTGAGGACTGTTAGTGATGATAGTGGTGAAGACTGTAGTGATGATGATGGTGAAGACTATAATGATGATGGTGAAGACCGCCGTGATGGTGATGATGGTGAAGACTGTAGCAATGATGATGGTGAAGACTATAGTGATGTTGAGTTGGTGGTGAAGACTGTAGCGATGGTGATGATGATGGTGAAGACTATAGTGATGATGATGTTGAAGACTATAGTGATGATGATGGTGAAGACCGCCGTGATGGTGATGATGGTGAAGACTGTAGCGATGATGATGGTGAAGACTATAGTGATGCTGATGTTGGTGGTGAAGACTGTAGTGATGGTGATGATGATGGTGAAGACTATAGTGATGATGATGGTGAAGACTATAGTGATGATGATGTGAAGACCGCCGTGATGGTGATGATGGTGAAGACTGTAGCGATGATGATGGTGAAGACTATAGTGATGTTGATGTTGG\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=1176;END=818868;SUPPORT=10;COVERAGE=14,12,12,12,12;STRAND=+-;AC=4;STDEV_LEN=4.950;STDEV_POS=0.000;SUPP_VEC=11\tGT:GQ:DR:DV:ID\t1/1:33:0:12:Sniffles2.INS.2ESF\t1/1:5:2:9:Sniffles2.INS.47SF", - "chr16\t824382\tSniffles2.INS.2CMF\tN\tTAGGCCCACGACGGCCAGCAGCGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGGAGCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=151;END=824382;SUPPORT=3;COVERAGE=6,5,5,5,5;STRAND=+-;AC=3;STDEV_LEN=203.421;STDEV_POS=254.068;SUPP_VEC=11\tGT:GQ:DR:DV:ID\t1/1:5:0:2:Sniffles2.INS.2FSF,Sniffles2.INS.31SF,Sniffles2.INS.30SF\t0/1:3:6:2:Sniffles2.INS.4ASF,Sniffles2.INS.49SF,Sniffles2.INS.48SF", - "chr16\t828068\tSniffles2.INS.2DMF\tN\tCCGGGGGAAATGAACTCTCGGCCTCCAGGGCAGCCAGGCAGGGGTCTGGCCCAGTCCTCA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=59;END=828068;SUPPORT=2;COVERAGE=5,5,5,5,5;STRAND=+-;AC=2;STDEV_LEN=1.414;STDEV_POS=23.335;SUPP_VEC=11\tGT:GQ:DR:DV:ID\t0/1:7:1:1:Sniffles2.INS.32SF\t0/1:28:4:4:Sniffles2.INS.4BSF", - "chr16\t828906\tSniffles2.DEL.2EMF\tgcccactggggcccacatcccgcccactgggaccgacatccc\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-42;END=828948;SUPPORT=4;COVERAGE=5,5,5,5,5;STRAND=+-;AC=3;STDEV_LEN=0.000;STDEV_POS=0.000;SUPP_VEC=11\tGT:GQ:DR:DV:ID\t1/1:5:0:2:Sniffles2.DEL.68SF\t0/1:3:2:6:Sniffles2.DEL.BBSF", - "chr16\t886700\tSniffles2.INS.2BMF\tN\tCCCGGCGTTCCCCAGGCCCCTCCCACCCTAGGCCCCCGGCGTTCCCCAGGCCCCTCCCACCCTAGGCCCCCGCGTTCCCCAGGCCCCTCCCACCCTAGG\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=98;END=886700;SUPPORT=4;COVERAGE=12,12,12,12,12;STRAND=+-;AC=3;STDEV_LEN=88.834;STDEV_POS=70.424;SUPP_VEC=11\tGT:GQ:DR:DV:ID\t1/1:2:2:8:Sniffles2.INS.35SF,Sniffles2.INS.34SF,Sniffles2.INS.33SF\t0/1:12:4:10:Sniffles2.INS.4DSF,Sniffles2.INS.4CSF,Sniffles2.INS.4ESF", - "chr16\t894226\tSniffles2.INS.2FMF\tN\tCCCACCCATCCCCTGTCCACCGGACCGTCCGCCCACCCGTCCATGTCCATCAGACCGTCCGTCCACCTGTCCCCCTGTCCCCTGTCCACCGGACCATTCGCCCACCCATCCCCCTGTCCACCTGGCCATCCGCCCACCTGTCTCCTGTCCACCGGACCGTCCACCCACCCCGTCCCCCTGTCCACCGGACCGTCCACCCCACCCCCGTCCCCCTGTCCACTGGACTGTCCGCCCACCTGTCCCCCTGTCCCCTGTCCACCGGACCGTCTGCCCACCCGTCCCCCCTGTCCCACCTGGCCATCCGCCCACCCATCCCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCAGCGGACCGTCCA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=367;END=894226;SUPPORT=5;COVERAGE=17,17,17,17,17;STRAND=+-;AC=3;STDEV_LEN=422.390;STDEV_POS=55.151;SUPP_VEC=11\tGT:GQ:DR:DV:ID\t1/1:47:0:17:Sniffles2.INS.36SF\t0/1:54:8:9:Sniffles2.INS.53SF,Sniffles2.INS.54SF,Sniffles2.INS.51SF,Sniffles2.INS.52SF,Sniffles2.INS.4FSF,Sniffles2.INS.50SF", - "chr16\t896008\tSniffles2.INS.30MF\tN\tCCACACGCAGGCTGCACGGTCCACAGACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCACGGTCCACACACACGCCTCGGAGGGGTTGTGAGGCTCAGCCAT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=147;END=896008;SUPPORT=4;COVERAGE=16,16,16,16,14;STRAND=+-;AC=2;STDEV_LEN=101.806;STDEV_POS=101.355;SUPP_VEC=11\tGT:GQ:DR:DV:ID\t0/1:57:8:8:Sniffles2.INS.39SF,Sniffles2.INS.37SF,Sniffles2.INS.38SF,Sniffles2.INS.3BSF,Sniffles2.INS.3ASF,Sniffles2.INS.3CSF,Sniffles2.INS.3DSF\t0/1:34:9:6:Sniffles2.INS.57SF,Sniffles2.INS.55SF,Sniffles2.INS.56SF,Sniffles2.INS.58SF,Sniffles2.INS.59SF", - "chr16\t903595\tSniffles2.INS.33MF\tN\tGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTATCTCTGCTGTGTGGTGGTGACCTTTGCACTGCCCGTGGGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCCGTCTCTGCTGTGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCCACAGGACGCCTGTCTCTGCTGTGTGGTGGTGACCTTTGCACTGCCCGTGGGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCTGTCTCTGCTGTGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCCGTCTCTGCTGCGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=600;END=903595;SUPPORT=2;COVERAGE=7,7,7,7,7;STRAND=+-;AC=2;STDEV_LEN=268.176;STDEV_POS=187.726;SUPP_VEC=11\tGT:GQ:DR:DV:ID\t0/1:3:2:6:Sniffles2.INS.3ESF\t0/1:6:5:2:Sniffles2.INS.5ASF,Sniffles2.INS.5DSF,Sniffles2.INS.5BSF,Sniffles2.INS.5CSF", - "chr16\t949708\tSniffles2.DEL.35MF\tagagacaacgacagagtcagagacgacagagtcagagacgacagagtcagagccaatgacagagtcagccaatgacagagtcagagccaacgacagagtcagccaatgacagagtcagagacaacgacagagttagagacaacgacagagtcagccaaggacagcgtcagccaacgacagaatcagagacaacgacagagtcagccaacgacagagtcagagccaatgagagtcagagccaacgacaga\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-249;END=949957;SUPPORT=4;COVERAGE=27,27,28,28,28;STRAND=+-;AC=2;STDEV_LEN=201.312;STDEV_POS=354.999;SUPP_VEC=11\tGT:GQ:DR:DV:ID\t0/1:40:8:14:Sniffles2.DEL.6ESF,Sniffles2.DEL.6CSF,Sniffles2.DEL.6DSF,Sniffles2.DEL.6FSF\t0/1:13:24:8:Sniffles2.DEL.C0SF,Sniffles2.DEL.C3SF,Sniffles2.DEL.C1SF,Sniffles2.DEL.C2SF,Sniffles2.DEL.C7SF", - "chr16\t950372\tSniffles2.DEL.34MF\tgacagagtcagccaatgacagagtcagagccaacgacagagtcagagacaacgacagagttagagacaacgacagagtcagc\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-82;END=950454;SUPPORT=7;COVERAGE=30,30,30,30,30;STRAND=+-;AC=2;STDEV_LEN=56.921;STDEV_POS=368.006;SUPP_VEC=11\tGT:GQ:DR:DV:ID\t0/1:38:8:15:Sniffles2.DEL.70SF\t0/1:38:22:10:Sniffles2.DEL.C6SF,Sniffles2.DEL.C4SF,Sniffles2.DEL.C5SF", - "chr16\t950488\tSniffles2.INS.32MF\tN\tCAACGACAGAGTCAGAGACAACGACAGAGTCAGAGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=36;END=950488;SUPPORT=14;COVERAGE=22,23,23,23,23;STRAND=+-;AC=1;STDEV_LEN=0;STDEV_POS=0;SUPP_VEC=10\tGT:GQ:DR:DV:ID\t0/1:50:9:14:Sniffles2.INS.40SF\t0/0:0:32:0:NULL", - "chr16\t953349\tSniffles2.DEL.36MF\tgttcacacagacacggaccccaaaccagcctcctacacgtccacacagacacccaccccaaaccagcctcctacacgttcacacagacacggaccccacaccagcctcctacacgtccacacagacacccaccccaaaccagcctcctgcacgtccacacagacaccccaaaccagc\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-177;END=953526;SUPPORT=9;COVERAGE=28,28,28,28,28;STRAND=+-;AC=2;STDEV_LEN=138.135;STDEV_POS=241.513;SUPP_VEC=11\tGT:GQ:DR:DV:ID\t0/1:45:16:9:Sniffles2.DEL.71SF,Sniffles2.DEL.72SF,Sniffles2.DEL.73SF,Sniffles2.DEL.75SF,Sniffles2.DEL.74SF\t0/1:28:22:9:Sniffles2.DEL.CDSF,Sniffles2.DEL.C8SF,Sniffles2.DEL.C9SF,Sniffles2.DEL.CBSF,Sniffles2.DEL.CCSF,Sniffles2.DEL.CASF", - "chr16\t955403\tSniffles2.INS.31MF\tN\tCACACACATCTAAGTAAACCAGACACGTTACAGAATGCGTGCCTGCAGCAGACGGGGTCTGTGCACACACACACACA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=77;END=955403;SUPPORT=8;COVERAGE=28,29,29,30,30;STRAND=+-;AC=2;STDEV_LEN=109.360;STDEV_POS=400.447;SUPP_VEC=11\tGT:GQ:DR:DV:ID\t0/1:60:15:12:Sniffles2.INS.45SF,Sniffles2.INS.41SF,Sniffles2.INS.44SF,Sniffles2.INS.46SF,Sniffles2.INS.47SF,Sniffles2.INS.42SF,Sniffles2.INS.43SF\t0/1:15:23:8:Sniffles2.INS.64SF,Sniffles2.INS.65SF,Sniffles2.INS.61SF,Sniffles2.INS.60SF,Sniffles2.INS.62SF,Sniffles2.INS.63SF", - "chr16\t960535\tSniffles2.DEL.37MF\tcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacaacacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-262;END=960797;SUPPORT=6;COVERAGE=29,29,29,29,29;STRAND=+-;AC=2;STDEV_LEN=293.762;STDEV_POS=192.457;SUPP_VEC=11\tGT:GQ:DR:DV:ID\t0/1:60:18:13:Sniffles2.DEL.78SF,Sniffles2.DEL.7CSF,Sniffles2.DEL.79SF,Sniffles2.DEL.7ASF,Sniffles2.DEL.76SF,Sniffles2.DEL.77SF\t0/1:60:16:11:Sniffles2.DEL.D1SF,Sniffles2.DEL.D3SF,Sniffles2.DEL.D2SF,Sniffles2.DEL.CFSF", - "chr16\t961793\tSniffles2.DEL.38MF\tacagactcacggtgacagcacgggatcacgacccagac\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-38;END=961831;SUPPORT=4;COVERAGE=29,28,28,28,28;STRAND=+-;AC=2;STDEV_LEN=105.234;STDEV_POS=280.993;SUPP_VEC=11\tGT:GQ:DR:DV:ID\t0/1:60:18:12:Sniffles2.DEL.7ESF,Sniffles2.DEL.7FSF,Sniffles2.DEL.7BSF,Sniffles2.DEL.7DSF,Sniffles2.DEL.81SF,Sniffles2.DEL.80SF\t0/1:14:20:7:Sniffles2.DEL.D4SF,Sniffles2.DEL.D5SF,Sniffles2.DEL.D0SF,Sniffles2.DEL.CESF,Sniffles2.DEL.D6SF,Sniffles2.DEL.D7SF,Sniffles2.DEL.D8SF", - "chr16\t1040563\tSniffles2.INS.3AMF\tN\tCCTGCCAAAGTCCCCACCGAGGTTCCCTCCGAGGTTCCCGCCGAGGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=46;END=1040563;SUPPORT=2;COVERAGE=2,2,2,2,2;STRAND=+-;AC=4;STDEV_LEN=1.414;STDEV_POS=5.657;SUPP_VEC=11\tGT:GQ:DR:DV:ID\t1/1:2:0:1:Sniffles2.INS.48SF\t1/1:5:0:2:Sniffles2.INS.67SF", - "chr16\t1043240\tSniffles2.DEL.3BMF\tggcggtcagggacccctcgggtcagccttggggccgttctggggggtggtcagggacccctcgggtcagccttggggccgttccaggg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-88;END=1043328;SUPPORT=2;COVERAGE=2,2,2,2,3;STRAND=+-;AC=4;STDEV_LEN=0.707;STDEV_POS=4.243;SUPP_VEC=11\tGT:GQ:DR:DV:ID\t1/1:2:0:1:Sniffles2.DEL.83SF\t1/1:11:0:4:Sniffles2.DEL.DBSF", - "chr16\t1076028\tSniffles2.INS.39MF\tN\tCCTACCCTGTCTTTCTCTCTGCCTCCCCGCCTCCCCTTCCCTCTCCCCATACCCTGTCTTT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=109;END=1076028;SUPPORT=5;COVERAGE=12,11,10,10,10;STRAND=+-;AC=4;STDEV_LEN=65.393;STDEV_POS=56.736;SUPP_VEC=11\tGT:GQ:DR:DV:ID\t1/1:13:0:5:Sniffles2.INS.4ASF,Sniffles2.INS.49SF\t1/1:6:3:13:Sniffles2.INS.6ASF,Sniffles2.INS.69SF", - "chr16\t1076128\tSniffles2.DEL.3DMF\tcctccccgcctccccatccctctccctctccctcctctctctctccccctaccctgttttctctctc\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-67;END=1076195;SUPPORT=2;COVERAGE=6,5,4,4,3;STRAND=+;AC=1;STDEV_LEN=0;STDEV_POS=0;SUPP_VEC=10\tGT:GQ:DR:DV:ID\t0/1:14:2:2:Sniffles2.DEL.84SF\t0/0:0:17:0:NULL", - "chr16\t1185753\tSniffles2.INS.3CMF\tN\tGGCGGGTGAGTAGACGGTCGGCATGCATAGGGCCGGGGGCGGGGTACGTGGGGGGCGGGCGAGTAGACGGCATGTGTAGGGGCCGGAGGCGGGGTGTGTACGGGGCAGGTGAGTAGACGGTCGGCGGTGCATAGGGCCGGGGGCGGGGTGTGTACGGGGCGGGTGAGTAGACGGTCAGCGTGCGTAGGGGCCGGAGGCGGGGTGTGTACGGTAGGGCCGGGGCGGGGGTACGTGGGGGGCGGGTGAGTAGACGGTCGGCGTGCGTAGGGGCCGGAGGCGGGGTGTGTACGGGGCGGGTGAGTAGACGGTCGGCGTGCGTAGGGGCCGGAGGCGGGTACGTGGGGGGCGGGTGAGTAGACGGTCGGCATGCATAGGGCCGGGGGGCGGGTACGTGGGGGGCGGGTGAGTAGACGGTCGGCGTGCGTAGGGGCCGGAGGCGTGGTGTGTACGGGGCGGGTGAGTAGACGGTCGGGCGGGGTGTGTACGGGGCGGGTGAGTAGACGGTCGGCGTGCGTAGGGGCCGGAGGCGGGTACGTGGGGGGCGGGTGAGTAGACGGTCGGCATGCATAGGGCCGGGGGCGGGTACGTGGGGGGCGGGTGAGTAGACGGTCGGCGTGCGTAGGGGCCGGAGGCGTGGTGTGTACGGGGCGGGTGAGTAGACGGTCGGGCGGGTGTGTACGGGGCGGGGTGAGTAGACGGTCGGGTGCGTAGGGCCGGAGGCGGGTACGTGGGGGGCGGGTGAGTAGACGGCGTGCGTAGGGGCCGGAGGCGGGTGTGTACGGGGCGGGTGAGTAGACGGTCGGCGTGCATAGGGCCGAAGGCGGGGTGTGTACGGGGCGGGTGAGTAGACGGCG\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=1134;END=1185753;SUPPORT=2;COVERAGE=3,4,4,4,5;STRAND=+-;AC=3;STDEV_LEN=366.681;STDEV_POS=154.852;SUPP_VEC=11\tGT:GQ:DR:DV:ID\t1/1:2:0:1:Sniffles2.INS.4CSF,Sniffles2.INS.4DSF\t0/1:21:3:3:Sniffles2.INS.6FSF,Sniffles2.INS.6ESF", - "chr16\t1190933\tSniffles2.INS.3EMF\tN\tGGGTTTCGCTGACCCAGCAGGCTGGCCTGGTTGTGTGGCCTCAGGCACACTCGGGGTTTCGGTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTCTGACTCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTCTGACTCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTCTTACTCAGCAGGCTGGCCTGGCTGTGTGGCCTCCGGCACACTCGGGGTCTCTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTTTCGGTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCAGGGTTTTGGTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTTGGGGTCTCTGACCCAGTAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=523;END=1190933;SUPPORT=4;COVERAGE=10,10,10,10,10;STRAND=+-;AC=2;STDEV_LEN=0.707;STDEV_POS=14.142;SUPP_VEC=11\tGT:GQ:DR:DV:ID\t0/1:10:7:3:Sniffles2.INS.4ESF\t0/1:36:5:5:Sniffles2.INS.70SF", - "chr16\t1191045\tSniffles2.DEL.45MF\taggctggcctggctgtgtggcctcaggcacactcggggtctctctgactcagcaggctggcctggctgtgtggcctcaggcacactcggggtctctctgactcagcaggctggcctggctgtgtggcctcaggcacactcggggtctctcttactcagcaggctggcctggctgtgtggcctcaggcacactcggggtctctgacccagc\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-210;END=1191255;SUPPORT=3;COVERAGE=10,10,10,10,10;STRAND=+-;AC=2;STDEV_LEN=149.576;STDEV_POS=266.740;SUPP_VEC=11\tGT:GQ:DR:DV:ID\t0/1:20:4:7:Sniffles2.DEL.86SF\t0/1:10:7:3:Sniffles2.DEL.DESF,Sniffles2.DEL.DFSF,Sniffles2.DEL.E0SF", - "chr16\t1204957\tSniffles2.INS.3FMF\tN\tAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=209;END=1204957;SUPPORT=5;COVERAGE=17,16,16,16,16;STRAND=+-;AC=2;STDEV_LEN=143.302;STDEV_POS=88.850;SUPP_VEC=11\tGT:GQ:DR:DV:ID\t0/1:47:7:8:Sniffles2.INS.4FSF,Sniffles2.INS.50SF\t0/1:6:12:4:Sniffles2.INS.74SF,Sniffles2.INS.73SF,Sniffles2.INS.71SF,Sniffles2.INS.72SF", - "chr16\t1231386\tSniffles2.INS.40MF\tN\tCTCACCCCCAGCCCCAGCCCAGCTCCCCATGGACTAGTCGCAGCCCCCGGCCCCAGCTCCCCATGGTCTCACCCCCAGCTCCCCATGGACTAGTCCCAGCCCCAGCCCAGCTCCCCATGGTCTCACCCCCAGCCCCAGCCCAGCTCCCCATGGACTAGTCCCAGCCCCCGGCCCCAGCTCCCCATGGTCTCACCCCCAGCTCCAGCCCAGCTCCCCATGGACTAGTCCCAGCCCCAGCCCAGCTCCCCATGGT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=193;END=1231386;SUPPORT=4;COVERAGE=14,14,14,14,13;STRAND=+-;AC=2;STDEV_LEN=140.666;STDEV_POS=113.493;SUPP_VEC=11\tGT:GQ:DR:DV:ID\t0/1:12:10:4:Sniffles2.INS.51SF,Sniffles2.INS.52SF,Sniffles2.INS.53SF,Sniffles2.INS.54SF\t0/1:27:8:5:Sniffles2.INS.75SF,Sniffles2.INS.76SF,Sniffles2.INS.78SF,Sniffles2.INS.77SF", - "chr16\t1238139\tSniffles2.INS.41MF\tN\tGTGCATATGTGTGCGTGTGTGCACACACGTGTGTACATGTGTGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=67;END=1238139;SUPPORT=3;COVERAGE=6,5,5,5,2;STRAND=+-;AC=2;STDEV_LEN=27.427;STDEV_POS=81.984;SUPP_VEC=11\tGT:GQ:DR:DV:ID\t0/1:7:1:1:Sniffles2.INS.55SF,Sniffles2.INS.56SF\t0/1:16:5:3:Sniffles2.INS.7ASF,Sniffles2.INS.79SF", - "chr16\t1248213\tSniffles2.DEL.47MF\tcatctgtgcactcacatgcacatatgcacacacggatgtacacatgcacac\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-51;END=1248264;SUPPORT=4;COVERAGE=2,4,4,4,5;STRAND=+-;AC=4;STDEV_LEN=8.660;STDEV_POS=108.849;SUPP_VEC=11\tGT:GQ:DR:DV:ID\t1/1:11:0:4:Sniffles2.DEL.8CSF,Sniffles2.DEL.8DSF\t1/1:11:0:4:Sniffles2.DEL.ECSF,Sniffles2.DEL.EDSF", - "chr16\t1254909\tSniffles2.DEL.46MF\tcatggggagctggggccgggggctgggactagtccatggggagctgggctggggctgggggtgagac\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-67;END=1254976;SUPPORT=4;COVERAGE=11,11,11,11,12;STRAND=+-;AC=2;STDEV_LEN=155.597;STDEV_POS=9.539;SUPP_VEC=11\tGT:GQ:DR:DV:ID\t0/1:37:6:8:Sniffles2.DEL.8ESF,Sniffles2.DEL.8FSF\t0/1:11:3:2:Sniffles2.DEL.EESF", - "chr16\t1254975\tSniffles2.INS.42MF\tN\tTCCATGGGGAGCTGGGCTGGGCTGGGTGGCACTGGAGTGGGGCCTCAGGTGGGAAGCGCTCATGGGAGTAGGTGAGGGGCTGGGGGTGAGTCCATGGGGAGCTGAGGCTGAGGCTGTGGTGGGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=174;END=1254975;SUPPORT=2;COVERAGE=7,7,7,7,9;STRAND=+-;AC=2;STDEV_LEN=67.658;STDEV_POS=64.335;SUPP_VEC=11\tGT:GQ:DR:DV:ID\t0/1:37:8:6:Sniffles2.INS.57SF\t0/1:11:3:2:Sniffles2.INS.7CSF,Sniffles2.INS.7BSF,Sniffles2.INS.7DSF", - "chr16\t1258684\tSniffles2.INS.43MF\tN\tTGAGCCCCCTCCCCCACCCTGAGCCCCCTCCCCTGTCTTGAGCCCCTGCTCCATCCTGAGTCCCCTCCCCCACACTGAGCCCCCTCCCCTTTCTTGAGCCCCTCATCCATCCTGAGCCCCTCCTCCATCCTGAGCCCCCTCCCCCATCCTGGGCCCCCTCCCCTTTCTTGAGCCCCCCTCCCCCACCCTGAGCCCCCTCCCCTTTCTTGAGCCCCCTCCCCCACCTGAGCCCCTTCCCCTTTCTTGAGTCCCTCCTCCATCCTGAGCCCCCTCCCCTTTCTTGAGCCCCTCCTCCACCCTCAGCCCCCTCCCCTTTCTTGAGCCCCTCCTCCACCCTCAGCCCCCTCCCCTTTCT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=389;END=1258684;SUPPORT=12;COVERAGE=12,12,12,12,14;STRAND=+-;AC=4;STDEV_LEN=48.790;STDEV_POS=0.707;SUPP_VEC=11\tGT:GQ:DR:DV:ID\t1/1:39:0:14:Sniffles2.INS.58SF\t1/1:30:0:11:Sniffles2.INS.7ESF", - "chr16\t1260690\tSniffles2.INS.44MF\tN\tAGCCCGGAGACCCACGTCCACACACAGCCCGGAGACCCACATCCACACAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=50;END=1260690;SUPPORT=8;COVERAGE=16,16,16,16,16;STRAND=+-;AC=2;STDEV_LEN=0.000;STDEV_POS=0.000;SUPP_VEC=11\tGT:GQ:DR:DV:ID\t0/1:47:8:7:Sniffles2.INS.59SF\t0/1:54:9:8:Sniffles2.INS.7FSF", - "chr16\t1264730\tSniffles2.DEL.4AMF\ttgtgtgtatgcgtgtgcatatgtaaggatgtgtgcg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-36;END=1264766;SUPPORT=5;COVERAGE=14,14,14,13,13;STRAND=+-;AC=2;STDEV_LEN=1.732;STDEV_POS=417.424;SUPP_VEC=11\tGT:GQ:DR:DV:ID\t0/1:40:7:6:Sniffles2.DEL.90SF\t0/1:37:6:8:Sniffles2.DEL.EFSF,Sniffles2.DEL.F0SF", - "chr16\t1285119\tSniffles2.INS.48MF\tN\tCCAGGGCCCTCTCCACTATTCCAGGGCCCTCTCCACCACTCCAGGGCCCTCTCCACTATTCCAGGGCCCTCTCCACCACCCCAGGGCCCTCTCCACCACCCCAGGGCCCTCTCCACTATTCCAGGGCCCTCTCCACCACCCCAGGGCCCTCTCCACTATTCCAGGGCCCTCTCCACCACC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=131;END=1285119;SUPPORT=2;COVERAGE=3,3,3,3,3;STRAND=+-;AC=1;STDEV_LEN=95.922;STDEV_POS=77.244;SUPP_VEC=01\tGT:GQ:DR:DV:ID\t./.:0:0:1:Sniffles2.INS.5ASF\t0/1:1:3:1:Sniffles2.INS.80SF,Sniffles2.INS.81SF,Sniffles2.INS.82SF", - "chr16\t1308390\tSniffles2.DEL.4BMF\ttgagtgagggagggaatgagtgagggagggaatgagtgagtgagggagggaatg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-54;END=1308444;SUPPORT=7;COVERAGE=15,15,15,16,16;STRAND=+-;AC=4;STDEV_LEN=112.784;STDEV_POS=22.984;SUPP_VEC=11\tGT:GQ:DR:DV:ID\t1/1:33:0:12:Sniffles2.DEL.91SF,Sniffles2.DEL.92SF\t1/1:11:3:15:Sniffles2.DEL.F1SF,Sniffles2.DEL.F2SF", - "chr16\t1345656\tSniffles2.INS.49MF\tN\tGCAACCCCAGCCTCCCCAGCCTCCCCAGCAACCCCAGCCTCCCCAGCAACCCCAGCCTCCTCA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=63;END=1345656;SUPPORT=8;COVERAGE=21,21,21,21,20;STRAND=+-;AC=2;STDEV_LEN=36.373;STDEV_POS=0.000;SUPP_VEC=11\tGT:GQ:DR:DV:ID\t0/1:60:12:14:Sniffles2.INS.5BSF\t0/1:49:11:8:Sniffles2.INS.84SF,Sniffles2.INS.85SF", - "chr16\t1356874\tSniffles2.DEL.4CMF\t\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-42;END=1356916;SUPPORT=4;COVERAGE=8,8,8,8,6;STRAND=+-;AC=2;STDEV_LEN=0.000;STDEV_POS=0.000;SUPP_VEC=11\tGT:GQ:DR:DV:ID\t0/1:11:2:3:Sniffles2.DEL.93SF\t0/1:23:6:4:Sniffles2.DEL.F9SF", - "chr16\t1367562\tSniffles2.DEL.4DMF\t\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-53;END=1367615;SUPPORT=2;COVERAGE=3,3,3,3,3;STRAND=+-;AC=1;STDEV_LEN=0;STDEV_POS=0;SUPP_VEC=01\tGT:GQ:DR:DV:ID\t./.:0:0:0:NULL\t0/1:4:1:2:Sniffles2.DEL.FASF" + "##bcftools_viewVersion=1.20+htslib-1.20" + ], + [ + "#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO\tFORMAT\ttest_2\ttest_1", + "chr16\t81884\tSniffles2.INS.4SF\tN\tCTCCAGGAAGCCCTCCTGAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTATCTCCGGAAGCCCTCCTGAATGCTCCCCACGCTGGCCCCTTCTTCCCACCACCCTACCTCCGGGAAGGCCTCCTGAATGCTCCCCACGCTGGCCCCTTCTTCCCACCACCCTACCTCCGGGAAGCCCTCCTGAATGCTCCCCACGCTGGCCCCTTCTTCCCACCACCCTACCTCCAGGAAGCCCTCCTGAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTATCTCCGGGAAGGCCTCCTGAATGCTCCCCACACTGACCCCTTCTTCCCACCACCCTACCTCCGGGAAGGCCTCCTGAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTAT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=398;END=81884;SUPPORT=12;COVERAGE=22,23,24,23,23;STRAND=+-;AF=0.5;STDEV_LEN=0;STDEV_POS=68.361;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:60:12:12", + "chr16\t81981\tSniffles2.INS.1SF\tN\tCTTGATCACCCTACCTCCGGGAAGGCCTCCTGAATGCTCCCCACGCTGGCCCC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=56;END=81981;SUPPORT=10;COVERAGE=21,21,21,21,23;STRAND=+-;AF=0.476;STDEV_LEN=1.952;STDEV_POS=96.236;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:60:11:10\t./.:.:.:.", + "chr16\t82055\tSniffles2.INS.3SF\tN\tCTCCGGGAAGCCCTCCTGAATGCTCCCCACGCTGGCCCCTTCTTCCCACCACCCTACCTCCAGGAAGCCCTCCTGAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTATCTCCGGGAAGGCCTCCTCCCTATGCTCCCCACACTGACCCCTTCTTCCCACCACCCTACCTCCGGGAAGGCCTCCTGAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTATCTCCGGGAAGGCCTCCTGAATGCTCCCCACACTGACCCCTTCTTCCCACCACCCTACCTCCGGGAAGGCCTCCTGAGTCACCCGCGCTGACCCCTTCTTCCCACCACCCTATCTCCGGGAAGCCCTCCTAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTAT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=391;END=82055;SUPPORT=7;COVERAGE=20,21,21,22,23;STRAND=+-;AF=0.333;STDEV_LEN=4.147;STDEV_POS=104.55;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:30:14:7\t./.:.:.:.", + "chr16\t82169\tSniffles2.INS.1SF\tN\tCTCCGGGAAGGCCTCCTGAATGCTCCCCACACTGACCCCTTCTTCCCACCACCCTAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=57;END=82169;SUPPORT=8;COVERAGE=23,23,23,23,23;STRAND=+-;AF=0.348;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:38:15:8", + "chr16\t82180\tSniffles2.INS.2SF\tN\tCTCCTGAATGCTCCCCACACTGACCCCTTCTTCCCACCACCCTACCTCCGGGAAGGAATGCTCCCCACACTGACCCCTTCTTCCCACCACCCTACCTCCGGGGAAGGCCCCTC\t60\tGT\tIMPRECISE;SVTYPE=INS;SVLEN=111;END=82180;SUPPORT=3;COVERAGE=20,21,22,23,23;STRAND=+-;AF=0.136;STDEV_LEN=3.055;STDEV_POS=113.212;SUPPORT_LONG=0;AC=0\tGT:GQ:DR:DV\t0/0:22:19:3\t./.:.:.:.", + "chr16\t153120\tSniffles2.INS.6SF;Sniffles2.INS.5SF\tN\tACAGTGGGGAGGGGACAGTGGGGAGAGGACAGTAAGGAGGGGACCATGGGGAGGAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=56;END=153120;SUPPORT=13;COVERAGE=14,14,14,14,14;STRAND=+-;AF=0.929;STDEV_LEN=0.916;STDEV_POS=1.061;SUPPORT_LONG=0;AC=4\tGT:GQ:DR:DV\t1/1:26:1:13\t1/1:60:0:23", + "chr16\t160071\tSniffles2.INS.CSF\tN\tGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGACGGCTTGTGGGACACAGGTTGTGAGAGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTGTGAGGGTGCCCGGGATGGCTTGTGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTGTGAGACGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGAGATGCCCAGGACGGCTTGTGGGGAACAGGCTGTGAGGGTGCCCGGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGAT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=583;END=160071;SUPPORT=24;COVERAGE=28,28,28,30,27;STRAND=+-;AF=0.857;STDEV_LEN=0.953;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t./.:.:.:.\t1/1:26:4:24", + "chr16\t160091\tSniffles2.INS.CSF\tN\tTGAGAGGTGCCCGGGACGGCTTGTGGGACACAGGTTGTGAGAGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTGTGAGACGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGAGATGCCCAGGACGGCTTGTGGGGAACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGATGGCTTGTGGGGCACAGGTTG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=584;END=160091;SUPPORT=15;COVERAGE=18,19,19,20,20;STRAND=+-;AF=0.789;STDEV_LEN=1.356;STDEV_POS=10.025;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:1:4:15\t./.:.:.:.", + "chr16\t160389\tSniffles2.INS.BSF\tN\tGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGCTGCAAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGATGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCTGGGACGGCTTGTGGGGCACAGGTTGTGAGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=328;END=160389;SUPPORT=15;COVERAGE=19,20,20,21,19;STRAND=+-;AF=0.75;STDEV_LEN=0.744;STDEV_POS=0;SUPPORT_LONG=0;AC=3\tGT:GQ:DR:DV\t0/1:8:5:15\t1/1:19:5:25", + "chr16\t160753\tSniffles2.INS.9SF;Sniffles2.INS.ESF\tN\tGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCAGGATGGCTTGTGGGGCACAGGCTGCAAGAGGTGCCCAGGACGGCTTGTGGGGCACAGGTTGTGAGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=145;END=160753;SUPPORT=17;COVERAGE=20,19,19,19,20;STRAND=+-;AF=0.895;STDEV_LEN=1.612;STDEV_POS=0;SUPPORT_LONG=0;AC=4\tGT:GQ:DR:DV\t1/1:27:2:17\t1/1:60:1:27", + "chr16\t163320\tSniffles2.DEL.8FSF;Sniffles2.DEL.5DSF\tagtgagtaggagacagtggggagaggacagtggagaggggacagtgaggaggggaccatgggaaggggaccgtggagtggggacagtgaggaggggaccatagggagggga\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-111;END=163431;SUPPORT=8;COVERAGE=19,19,19,19,18;STRAND=+-;AF=0.421;STDEV_LEN=0;STDEV_POS=0;AC=2\tGT:GQ:DR:DV\t0/1:49:11:8\t0/1:28:15:7", + "chr16\t163591\tSniffles2.DEL.5ESF\tggaggggaccgtgggaaggagacagtgaggaggggaccttggggaggggacagtgaggaggggaccatggggaggggacagtgaggaggggacaatggagaggggacagtgaggaggggactgtggggagaggacagtgaggaggggaccatggggagggcacagtggggaggggagagtgaggaagggacagtgaggaggggactgtgg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-210;END=163801;SUPPORT=7;COVERAGE=22,22,22,22,21;STRAND=+-;AF=0.318;STDEV_LEN=0;STDEV_POS=0;AC=1\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:28:15:7", + "chr16\t163594\tSniffles2.DEL.92SF\tggggaccgtgggaaggagacagtgaggaggggaccttggggaggggacagtgaggaggggaccatggggaggggacagtgaggaggggacaatggagaggggacagtgaggaggggactgtggggagaggacagtgaggaggggaccatggggagggcacagtggggaggggagagtgaggaagggacagtgaggaggggactgtgggg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-209;END=163803;SUPPORT=8;COVERAGE=20,19,19,18,18;STRAND=+-;AF=0.421;STDEV_LEN=0;STDEV_POS=0;AC=1\tGT:GQ:DR:DV\t0/1:49:11:8\t./.:.:.:.", + "chr16\t164801\tSniffles2.INS.ESF\tN\tCGGGGGCGGCCGGGCGGGGGCCGGGTCGCGGGGCGGGGTTGCGGGGGCGGGGCGAGGTC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=59;END=164801;SUPPORT=8;COVERAGE=18,18,18,18,17;STRAND=+-;AF=0.444;STDEV_LEN=5.565;STDEV_POS=38.821;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:52:10:8\t./.:.:.:.", + "chr16\t164801\tSniffles2.INS.FSF\tN\tCGGGGTCGCGGGGCGGGCGGGTCGCGGGGCGGGGTCGCGGGGGCGGGCGAGGTC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=54;END=164801;SUPPORT=8;COVERAGE=21,21,21,21,21;STRAND=+-;AF=0.381;STDEV_LEN=2.16;STDEV_POS=17.972;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:43:13:8", + "chr16\t182789\tSniffles2.INS.FSF;Sniffles2.INS.10SF\tN\tTGAAACACCGTCTCTACTAAAAATACAAAAATTAGCCAGGCATAGTGGCGGGCGCCTGTAATCCCAGCTGTTCGGGAGGCTGAGGCAGGACAATCACTTAAACCAGGGAAGCAGAGGTTGCAGTGAGCTGAGATCGAGCCACTGCACTCCAGCCTGGGCGACAGACCGAGACTGTCTCAAAAAAAAGACCGGGCACGGTGGCTCACGCCTGTAATCCCACCACTTTGGGAGGCTGAGGCGGGCTGATCACGATGTCAGGAGATCTAGACCATCCTGGCCAACATGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=286;END=182789;SUPPORT=8;COVERAGE=10,10,10,10,10;STRAND=+-;AF=0.8;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;AC=4\tGT:GQ:DR:DV\t1/1:2:2:8\t1/1:33:0:12", + "chr16\t186052\tSniffles2.DEL.5FSF\tggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacgggg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-629;END=186681;SUPPORT=6;COVERAGE=11,11,11,11,11;STRAND=+-;AF=0.545;STDEV_LEN=8.5;STDEV_POS=8.5;AC=1\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:33:5:6", + "chr16\t186294\tSniffles2.DEL.60SF\tcagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacgggg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-863;END=187157;SUPPORT=5;COVERAGE=11,11,11,11,10;STRAND=+-;AF=0.455;STDEV_LEN=0.577;STDEV_POS=6.928;AC=1\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:33:6:5", + "chr16\t186313\tSniffles2.DEL.96SF\tgcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacgggggga\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-830;END=187143;SUPPORT=7;COVERAGE=10,10,10,10,10;STRAND=+-;AF=0.7;STDEV_LEN=9.815;STDEV_POS=21.245;AC=1\tGT:GQ:DR:DV\t0/1:10:3:7\t./.:.:.:.", + "chr16\t239176\tSniffles2.INS.10SF\tN\tTGTAGTCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATGGCGTGAACCCGGGAGGCGGGGCTTGCAGTGAGCCGAGATCACGCCACTACACTCGAGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAAAAGCAAACATAATGAAAATTAAAAAATTTTTAAAAAAACCCTGCAAACTTGGTGAATTTTTTACCGACTCGTGCTTTGCAAAATTCTTCATGGAACTTAGATTATATCAGGAAGATGTTAAAAAAAAAAAAAAAAAAAAGAATGCTGACTCCTAACCAAATAACTATGAAGCAGATGCTGAGAGATCAAAGGAGCAAATCTAAAAATCATCAGAGATGGGGCCTGGGGGAGAAGTATGCTGGCTTATAGATGAAAATGACTGGCTCTGTGTTGATAACTGTTGATAACTGTTGGACCTGGGTAATGGGTTTATGAGGCTGGTGTTCTCTACTTTTGTTAATGTTTGAGCATTTACATAATAAAGGTTTTTTTTTTTCATTGTATATAGAAATGGACTCACTATGTTGCCCAGGCTGGCCTCAAATTCCCGGGCTCAAGTAGTCCTCCCTCCTCTGCCTCTTGAAGTGCTGAGATTATAGGCATGAGACACCACACCTGGATCAAAGGTTAAAAAAATAATGATAAAAGAAGTAAGTTGAGGCTACTGTGGGCACACTGCCCATGGGTTAGCCCTGCTGTGCAAGGATCAGAAAAAAAAAAAAAAAAGAAATTGAAGCTAAGGCCTAATTAACTGGCTTATCTTGTAGAGTTTAGCAGAAGTGACCAAGTTTAGAGTTATACTTTATCTTTTTCTTTCTCTGCCCCCTACTTAATGAAGGACAAAAATGAGTAACATGGCTGGGTGTGGTGGCTCACGCCTGTCATCCCAGCACTTTGGGAGGCCGAGGTGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCATGGCCAACATGATGAAACCAAAATACAAAAGTTAGCCAGGCGTGGTGGCGGGCGTA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=1020;END=239176;SUPPORT=2;COVERAGE=2,2,2,2,4;STRAND=+;AF=1;STDEV_LEN=1.414;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:5:0:2\t./.:.:.:.", + "chr16\t318898\tSniffles2.INS.12SF\tN\tGCCAGGGCCTTGGTGAGAGCGGCTCTGACCCCTGGCTGTGCGGAGAGAATGCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=53;END=318898;SUPPORT=4;COVERAGE=12,12,12,12,12;STRAND=+-;AF=0.333;STDEV_LEN=2.082;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:17:8:4\t./.:.:.:.", + "chr16\t321645\tSniffles2.INS.13SF\tN\tGGATTCCAACCCACGAAGGGTTAAACCCTCTCATAGCTGGGAATATGAGGTAGAAGGCGGATGCCAACCCACGAAGGGTTAAACCCTCTCATAGCTGGGAATATGAGGTAGAAGGC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=116;END=321645;SUPPORT=8;COVERAGE=16,16,16,15,16;STRAND=+-;AF=0.5;STDEV_LEN=0.548;STDEV_POS=45.616;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:57:8:8\t./.:.:.:.", + "chr16\t362984\tSniffles2.INS.14SF\tN\tTCCCAGGACTTAGCACCGGGGGGTCTCGGGCTGCGGCTGCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=41;END=362984;SUPPORT=12;COVERAGE=20,20,20,20,19;STRAND=+-;AF=0.6;STDEV_LEN=0.408;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:46:8:12\t./.:.:.:.", + "chr16\t362990\tSniffles2.INS.12SF\tN\tGACTTAGCACCGGGGGGTCTCGGGCTGCGGCTGCTCTCCCA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=42;END=362990;SUPPORT=3;COVERAGE=7,6,6,6,5;STRAND=+-;AF=0.5;STDEV_LEN=0.577;STDEV_POS=9.238;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:21:3:3", + "chr16\t370391\tSniffles2.INS.16SF\tN\tCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCTCCTAACCCGGCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCCCTACCCCTGCCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCCCTACCCGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGGCTCTCACT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=648;END=370391;SUPPORT=12;COVERAGE=18,15,15,15,18;STRAND=+-;AF=0.8;STDEV_LEN=59.3;STDEV_POS=1.069;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:3:3:12\t./.:.:.:.", + "chr16\t370391\tSniffles2.INS.13SF\tN\tCTACCCTGCCCCGGCTCTCACCCCCTACCCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCGGCTCTCACCCCCTACCCCGGCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCGCTACCCTGCCCCCGGCTCTCACCGCTACCCCCCGGCTCTCACCCGCTACCCCGCCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCCGGCCCCCCGGCTCTCACCTCCTACCCGGCCCCGGCTCTCACCCGCTCCCCCGGCCCCCGGCTCTCACCCGCTCACCCCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCTCGGCTCTCACCCCCTACCCCGGCCCCGGCTCTCACCCCCTACCCCTGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCCGGCTCTCACCCGCTACCCCGGCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGGCTCTCACTCC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=736;END=370391;SUPPORT=7;COVERAGE=7,7,7,7,7;STRAND=+-;AF=1;STDEV_LEN=65.282;STDEV_POS=1.095;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t./.:.:.:.\t1/1:19:0:7", + "chr16\t378308\tSniffles2.INS.18SF;Sniffles2.INS.14SF\tN\tCCACTCTGACTGCCATCGCCACTCTGACTGCCATCC\t60\tGT\tPRECISE;SVTYPE=INS;SVLEN=36;END=378308;SUPPORT=8;COVERAGE=19,18,18,18,18;STRAND=+-;AF=0.444;STDEV_LEN=0.447;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t0/1:52:10:8\t0/1:3:13:4", + "chr16\t378517\tSniffles2.INS.1ASF;Sniffles2.INS.15SF\tN\tGCCATCGCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCTGACTGCCATCGCCACCCACACTGCCATCCCCACCCGCACTGCCATCGCCACCCTGACTGCCATCGCCACCCACAATGCCATCCCCACCCGCACTGCCATCGCCACCCGCACTGCCATCCCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCACACTGCCATC\t60\tGT\tPRECISE;SVTYPE=INS;SVLEN=240;END=378517;SUPPORT=3;COVERAGE=19,18,18,18,18;STRAND=+-;AF=0.167;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/0:11:15:3\t0/1:26:6:12", + "chr16\t397717\tSniffles2.INS.16SF\tN\tTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGTGGGGGTGGGGGTGTGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGTGAGGGAGTCGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGTGAGGGAGTCGGGGGGTGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGGC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=491;END=397717;SUPPORT=3;COVERAGE=3,3,3,3,3;STRAND=+-;AF=1;STDEV_LEN=2.309;STDEV_POS=5.196;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t./.:.:.:.\t1/1:8:0:3", + "chr16\t397727\tSniffles2.INS.1DSF\tN\tGGGGGGTGGGGGTGGGGGGGTGGGGGATGAGGGGGGTGGGGGTGGGGGTGGGGGGTGAGGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGGTGAGGGAGTGGGGGGTGGGGGTGGGGGGGTGGGGGGGTGGGGGATGAGGGGGGTGGGGGTGGGGGTGGGGGGGTGGGAGTGGGGGGTGGGGGTGGGGGTGGGGGGTGAGGGAGTAGGGGGGTGGGGGGTGGGGGTGGGGGGGTGAGGGGAGTGGGGGGTGGGGTGGGGGTGTGGGGGGGTGAGGGAGTGGGGGGTGGGTGTGGGGGGGGTGGGGGATGGGGGGGTGGGGGTGGGGGTGTGGGGGGGTGAGGGAGTGGGGGGTGGGGGTGGGGGTGGGGGGGTGGGGGTCGGGGGGGTGGGGGTGGGGGTGGGGGGGTGAGGGGAGTCGGGGGGTGGGGGTGGGGGGGTGGGGATCGGGGGGTGGGGGTGGGGGTGGGGGGCTGAGGGGAGTA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=506;END=397727;SUPPORT=11;COVERAGE=18,15,15,15,16;STRAND=+-;AF=0.733;STDEV_LEN=34.854;STDEV_POS=7.448;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:9:4:11\t./.:.:.:.", + "chr16\t410360\tSniffles2.DEL.99SF\ttcttccgggtgggtgcctcgtgcgctctgtgagaag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-36;END=410396;SUPPORT=7;COVERAGE=15,14,14,14,12;STRAND=+-;AF=0.5;STDEV_LEN=0;STDEV_POS=0;AC=1\tGT:GQ:DR:DV\t0/1:50:7:7\t./.:.:.:.", + "chr16\t433138\tSniffles2.INS.21SF\tN\tATTCTCCTGCCTCAGCCTCCCAAGAAGCTGGGACTACAGGCGCCCGCCACCACGCCCGGCTAATTTTTATATTTTTAGTAGAGACGAAGTTTCACCATGTTAGCCAGGATGGTCTCCATCTCCTGACCTCGTGATCTGCCCACCTCGGCCTCCCAAAGTGCTGGGATTACAGGCATGAGCTACTGTGCCCGGCCTGTCATTTTTATATATTGGGAAAGTTTTGAGTCCTTTCTCTAGGTATGTTGAAATATACAGGCATGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGTCCGAGGCGGGTGAATCACGAGGTCAGGAGATCGAGACCATCCTGGCTAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAAAAATTAGCCAGGCATGGTGGTGGGCGCCTGTAGTCCCAGCTACTCCAGAGGCTGAGGCAGGAGAATGGCGTGAACCTGAGCTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACTGAGCAAGACTCTGTCTCAAAAAAAAAAAAAAAGAAATATACAATATATTGTTGTTAAATTTAGTCACCCTACTCTGCTACCAAACATTAGAACTTATCCTTTGTCTCATTGTAATTTTTTTTTTTTTGAGATGGGGTCTCGCTCTGTCGCCCAGGCTGGAGTGCAGTGGCGCTATCTTGGCTCACTGCAACCTCCACCTCCCAGGTTCAAGCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=725;END=433138;SUPPORT=2;COVERAGE=4,4,4,4,3;STRAND=+-;AF=0.5;STDEV_LEN=0.707;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:14:2:2\t./.:.:.:.", + "chr16\t433317\tSniffles2.DEL.9CSF\tcaccgctcattgcatatttctaaccattaaccgtgctctttaccctcctgatgcttcccagcctctgatatcaatcgctctattctctacctccattagatccacttttctagctcccacataagagtaaaaacgtgatatttgtctttctctgcctgtct\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-161;END=433478;SUPPORT=2;COVERAGE=4,4,4,3,3;STRAND=+-;AF=0.5;STDEV_LEN=0;STDEV_POS=0;AC=1\tGT:GQ:DR:DV\t0/1:14:2:2\t./.:.:.:.", + "chr16\t492363\tSniffles2.INS.22SF\tN\tTCCCGGGGGACCCGAGGCCACCCCGGCCCTCCCGGGAGACCCGAGGCCGCCCAGGGCCCTCCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCGGGAGACCCGAGGCCGCCCCAAGCCCCCTCCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCGGGAGACCCGCGAGGCCGCCCAGAGCCCTCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCCGGGAGACCCGAGGCCGTCCAGGGCCCTCCCCGGGAGACCCGAGGCCGCCCAGGGCCCTTCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCGGGGAGACCCGAGGCCGCCCAGGGCCCTCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCCGGGAGACCCGGGAGCGATCCCAGGGCCCCTCCCGGGGAGACCCGAGGCCGCCCAGGGCCCTCCCCGGGAGACCCGAGGCCGCCCAGGGCCCTTCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCGGGGAGACCCGAGGCCGCCCAGGGCCCTCCCGGGAGACCCGAGGCCGCCCCAAGCCCTCCCCGGGAGACCCGAGGCCGTCCAGGGCCCTTCCCGGGGAGACCCGAGGCCGCCCAGGGCCCTCCCCGGGAGACCCGAGGCCGCCCAGGGCCCTTCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCGGGGAGACCCGAGGCCGCCCAGGGCCCTCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCCGGGAGACCCGAGGCCGCCCAGGGCCCTCCCGGGAGACCCGAGGCCGCCCAGGGCCCTCCCCGGGAGACCCGAGGCCGCCCAGGGCCCTCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCCGGGAGACCCGAGGCCGCCCAGGGCCCTCCCCGGGAGACCCGAGGCCGCCCCAGGGCCCTCCCCGGGAGACCCGAGGCCGCCCAGGGCCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=1083;END=492363;SUPPORT=2;COVERAGE=2,2,2,2,2;STRAND=+;AF=1;STDEV_LEN=4.243;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:5:0:2\t./.:.:.:.", + "chr16\t494828\tSniffles2.INS.23SF\tN\tGGGAGGTCGAGGCTGCAGAGGTGGCAGGATCACATGATCCTGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCAGAGGTGGCAGGATCACATGATCCTGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCAGAGGTGGCAGGATCACATGATCCTGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATAGCATGAGCCTGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGATCCTGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGATCCTGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGGCGGATCACATGAGCCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=2706;END=494828;SUPPORT=2;COVERAGE=2,2,2,2,2;STRAND=+;AF=1;STDEV_LEN=2.121;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:11:0:4\t./.:.:.:.", + "chr16\t504280\tSniffles2.INS.24SF\tN\tTCCCATCTCCTCCTGTACCCCCTCACCTCCTTGTGCACCCCCTCACCTCCTGTACCCCCTCACCTCCTCCTGTA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=74;END=504280;SUPPORT=7;COVERAGE=9,9,9,10,13;STRAND=+-;AF=0.778;STDEV_LEN=0;STDEV_POS=13.416;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:0:2:7\t./.:.:.:.", + "chr16\t504280\tSniffles2.INS.17SF\tN\tTCCATCTCCTCCTGTACCCCCTCACCTCCTTGTGCACCCCCTCACCTCCTGTACCCCCTCACCTCCTCTGTA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=74;END=504280;SUPPORT=4;COVERAGE=4,4,4,4,4;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t./.:.:.:.\t1/1:11:0:4", + "chr16\t504419\tSniffles2.INS.26SF\tN\tTCCTGTACCCCCTCACCTCCTCTTGCACCCCCCTTGCCTCCTGTACCCCCTCACCTCCTTGTGCACCCCTCACCTCCTGTACCCCCCTCACCTCCTCCTGTACCCGCCTCACCTCCTCCTGCACTCCCATCTCCTCCTGTACCCCCTCACCTCCTTGTGCACCCCCTCACCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=224;END=504419;SUPPORT=7;COVERAGE=9,10,11,11,13;STRAND=+-;AF=0.636;STDEV_LEN=15.566;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:20:4:7\t./.:.:.:.", + "chr16\t504419\tSniffles2.INS.18SF\tN\tTCACCTCCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCTCACCTCCTCCTGTACCCCTCACCTCCTTGTGCACCCCCTCACCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCCTCACCTCCTCCTGTACCCCCTCACCTCCTTGTGCACCCCCTCACCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCCTCACCTCCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=256;END=504419;SUPPORT=4;COVERAGE=4,4,4,4,5;STRAND=+-;AF=1;STDEV_LEN=0.707;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t./.:.:.:.\t1/1:11:0:4", + "chr16\t507740\tSniffles2.INS.28SF\tN\tCGTTTCCCGTTTTCAGTATCATCTGCCCGTTCTGAGCCATTTGCTCTCTAGCCCTACCATACAGCTGTCATCCTAAGGTCC\t60\tGT\tPRECISE;SVTYPE=INS;SVLEN=81;END=507740;SUPPORT=3;COVERAGE=14,14,14,14,16;STRAND=+;AF=0.214;STDEV_LEN=0;STDEV_POS=0.577;SUPPORT_LONG=0;AC=0\tGT:GQ:DR:DV\t0/0:0:11:3\t./.:.:.:.", + "chr16\t507831\tSniffles2.INS.19SF\tN\tTTCAGTATCATCTGCCCGTTCTGAGCCATTTGCTCTCTAGCCCTACCATACAGCTGCCATCCTAAGAGTACGTTTCCCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=81;END=507831;SUPPORT=4;COVERAGE=5,5,5,5,7;STRAND=+-;AF=0.8;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t./.:.:.:.\t1/1:1:1:4", + "chr16\t534179\tSniffles2.INS.2CSF\tN\tGGGCCGTGGTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACGGGGCCGTGTTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACGGGGCCGTGTTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACGGGGCCGTGGTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=216;END=534179;SUPPORT=15;COVERAGE=19,18,18,17,17;STRAND=+-;AF=0.833;STDEV_LEN=18.992;STDEV_POS=1.897;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:11:3:15\t./.:.:.:.", + "chr16\t534179\tSniffles2.INS.1ASF\tN\tGGGCCGTGGTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACGGGGCCGTGGTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACGGGGCCGTGGTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=162;END=534179;SUPPORT=5;COVERAGE=5,5,5,5,4;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t./.:.:.:.\t1/1:13:0:5", + "chr16\t544781\tSniffles2.INS.2DSF\tN\tCGTCTCCCCCACGCCGCCTCCCCCCACGTCGCCTCCCCCCACGTCGCCTCCCCCACGCCGCCTCCCCCACGCCGCCTCCCCCACGTCGCCGCCGTCTCCCCCACGCCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGCCGCCGTCTCCCCCACGCCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGCCGCCTCCCCCACGCCGCCTCCCCTCACGTCGCCTCCCCCACGCCGTCGCCTCCCTCCACGCCGC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=348;END=544781;SUPPORT=15;COVERAGE=17,17,17,17,17;STRAND=+-;AF=0.882;STDEV_LEN=5.196;STDEV_POS=28.465;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:21:2:15\t./.:.:.:.", + "chr16\t544781\tSniffles2.INS.1BSF\tN\tCGTCTCCCCCACGTCGCCTCCCCCCACGTCGCCTCCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCTCACGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGTCGC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=344;END=544781;SUPPORT=8;COVERAGE=8,8,8,8,8;STRAND=+-;AF=1;STDEV_LEN=4.69;STDEV_POS=25.5;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t./.:.:.:.\t1/1:22:0:8", + "chr16\t550769\tSniffles2.INS.2ESF;Sniffles2.INS.1CSF\tN\tCGGTGAGGGTCCCCGGTCGGTGAGGGCGCCCCGTCAGTGAGGGTCCCGGTCAGTGAGGGCCCCGGTCGGTGAGGGTCCCCGGTCGGTGAGGGCCCCTGTCGGTGAGGGCCCCGGTCGGTGAGGGACCCGGTCGGTGAGGGCCCCCTGTCGGTGAGGGTCCCCTGTCGGTGAGGGCCCCGGTCGGTGAGGGCCCCGGTCGGTGAGGGTCCCCTGTCGGTGAGGGTCCCCTGTCGGTGAGGGTCCCGGTCGGTGAGGGCCCCGGTCGGTGAGGGTGCCCCGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=280;END=550769;SUPPORT=21;COVERAGE=23,23,23,23,24;STRAND=+-;AF=0.913;STDEV_LEN=0.65;STDEV_POS=0;SUPPORT_LONG=0;AC=4\tGT:GQ:DR:DV\t1/1:38:2:21\t1/1:36:0:13", + "chr16\t553057\tSniffles2.INS.1DSF\tN\tTGCCCCCCACCCCTGCACAGGTGCCCCCTCCCCTACCCCGCTGCACCCACACCCAACTCGTGCCCCCCCACCCCTGCACAGGTGCCCCCTCCCCTACCCCGCTGCACCCACACCCAACTCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=121;END=553057;SUPPORT=6;COVERAGE=12,11,11,11,10;STRAND=+-;AF=0.545;STDEV_LEN=0.577;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:33:5:6", + "chr16\t553059\tSniffles2.INS.2FSF\tN\tCCCCCCCACCCCTGCACAGGTGCCCCCTCCCCTACCCCGCTGCACCCACACCCAAACTCGTGCCCCCCCACCCCTGCACAGGTGCCCCCTCCCCTACCCCGCTGCACCCACACCCAACTCGTGC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=122;END=553059;SUPPORT=9;COVERAGE=21,20,20,20,19;STRAND=+-;AF=0.45;STDEV_LEN=0.983;STDEV_POS=9.709;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:59:11:9\t./.:.:.:.", + "chr16\t571110\tSniffles2.INS.30SF\tN\tTGGCTAGCCTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTGTGTGTGTCTGGCTAGCCTGGTGCCCGTGTGTGTGTGTATGTGTGTGTGTGTGTGTGTGTCTGGCTAGCCTGGCGCCCGTGGCTAGCCTGGTGCCCGTGTGTGTGTGTATGTATGTGTCTGGCTAGCCTGGTGCCCGTGGCTAGCCTGGTGCCCGTGTGTGTGTGTGTGGGGGGGCTAGCCTTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTCTGGCTAGCGTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTGTGTGTGGCTAGCCTGGCGCCCGTGTGTGTGTGTGTGTGTGTGTCTGGGTGAGCCTGGCACCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=356;END=571110;SUPPORT=8;COVERAGE=15,13,13,13,13;STRAND=+-;AF=0.615;STDEV_LEN=3.578;STDEV_POS=15.652;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:27:5:8\t./.:.:.:.", + "chr16\t571110\tSniffles2.INS.1FSF\tN\tTGGCTAGCCTGTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTGTGTGTGTCTGGCTAGCCTGGTGCCCGTGTGTGTGTGTATGTGTGTGTGTGTGTGTGTGTCTGGCTAGCTGGCGCCCGTGGCTAGCCTGGTGCCCGTGTGTGTGTGTATGTATGTGTCTGGCTAGCCTGGTGCCCGTGGCTAGCCTGGTGCCCGTGTGTGTGTGTGTGGGGGGGGCTAGCCTTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTCTGGCTAGCGTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTGTGTGTGCTAGCCTGGCGCCCGTGTGTGTGTGTGTGTGTGTCTGGCTAGCCTGGCACCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=358;END=571110;SUPPORT=16;COVERAGE=18,17,16,16,18;STRAND=+-;AF=1;STDEV_LEN=3.78;STDEV_POS=14.714;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t./.:.:.:.\t1/1:44:0:16", + "chr16\t579380\tSniffles2.DEL.62SF\tcagagaagagacagacacacagccccgaaggtggtgcaggcacaggccctagaggtgccccgggcccagagactagagatgccccgggcccggagactagaggtgccccgggcccggaga\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-120;END=579500;SUPPORT=6;COVERAGE=11,11,11,11,10;STRAND=+-;AF=0.545;STDEV_LEN=0;STDEV_POS=0;AC=1\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:33:5:6", + "chr16\t579477\tSniffles2.DEL.A0SF\ttagaggtgccccgggcccggagactagaggtgccccgggcccggagactagaggtgccccgggcccggagact\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-73;END=579550;SUPPORT=16;COVERAGE=18,18,20,22,22;STRAND=+-;AF=0.8;STDEV_LEN=18.145;STDEV_POS=50.055;AC=2\tGT:GQ:DR:DV\t1/1:4:4:16\t./.:.:.:.", + "chr16\t579636\tSniffles2.DEL.61SF\tcccggagactagaggtgccccgggcccggagactagaggtgccccgggcccggagacttgaggtgccccggg\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-72;END=579708;SUPPORT=5;COVERAGE=11,11,11,10,10;STRAND=+-;AF=0.455;STDEV_LEN=11.5;STDEV_POS=105.434;AC=1\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:33:6:5", + "chr16\t584946\tSniffles2.DEL.A2SF\tctcccgctccccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctccccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctccccccagctgcccaccgggtccaccaacacccccaacctgtg\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-155;END=585101;SUPPORT=18;COVERAGE=23,23,23,22,21;STRAND=+-;AF=0.783;STDEV_LEN=0.775;STDEV_POS=76.512;AC=2\tGT:GQ:DR:DV\t1/1:0:5:18\t./.:.:.:.", + "chr16\t585059\tSniffles2.DEL.63SF\tcccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctccccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctccccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctc\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-156;END=585215;SUPPORT=6;COVERAGE=6,6,6,6,6;STRAND=+-;AF=1;STDEV_LEN=0.5;STDEV_POS=56.518;AC=2\tGT:GQ:DR:DV\t./.:.:.:.\t1/1:16:0:6", + "chr16\t587440\tSniffles2.INS.33SF;Sniffles2.INS.20SF\tN\tTCCCTCCCTTCACTGGGCCTGCTGCCCCAGAGTCCA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=36;END=587440;SUPPORT=16;COVERAGE=20,20,18,17,17;STRAND=+-;AF=0.889;STDEV_LEN=0;STDEV_POS=29.087;SUPPORT_LONG=0;AC=4\tGT:GQ:DR:DV\t1/1:24:2:16\t1/1:13:0:5", + "chr16\t599821\tSniffles2.INS.34SF\tN\tAAGGTTTGTTTCCTCGTGGCATCAGTCAGCGTGGATTGGGCAAGGTTTTGTTCCCTCGTGGCATCAGTCAGCGTGGACG\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=81;END=599821;SUPPORT=9;COVERAGE=10,10,10,10,8;STRAND=+-;AF=0.9;STDEV_LEN=1.169;STDEV_POS=76.821;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:15:1:9\t./.:.:.:.", + "chr16\t606435\tSniffles2.INS.35SF\tN\tCAGTCCTGCTTTTCTTGGTCCCTCAGTCCAGTGTGGGTTTCCCTGGGCTGAAGTCAAGGTGTTGGCTGACACA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=66;END=606435;SUPPORT=10;COVERAGE=8,10,10,10,14;STRAND=+-;AF=1;STDEV_LEN=1.225;STDEV_POS=97.931;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:27:0:10\t./.:.:.:.", + "chr16\t611747\tSniffles2.DEL.A4SF\tgcctgtagattcaagagcagggacagccgccctggcctgtagaatcaagagcaagggacagccgccttc\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-69;END=611816;SUPPORT=7;COVERAGE=12,12,12,12,12;STRAND=+-;AF=0.583;STDEV_LEN=0;STDEV_POS=49.641;AC=1\tGT:GQ:DR:DV\t0/1:30:5:7\t./.:.:.:.", + "chr16\t611793\tSniffles2.DEL.A8SF\taagagcaagggacagccgccttcgcctgtagaatcaagagcagggacagccgccctggcctgtagaatcaagagcacgggacagccgccctggcctgtagaatcaagagcacgggacagccgccctggcctgtagaatcaagagcagggacagccgccctggcctgtagaatcaagagcaagggacagccgccctggcctgtagaatcaagagcaagggacagccgcctttgcctgtagaat\tN\t60\tGT\tPRECISE;SVTYPE=DEL;SVLEN=-242;END=612035;SUPPORT=2;COVERAGE=12,12,12,12,12;STRAND=-;AF=0.167;STDEV_LEN=0.707;STDEV_POS=7.778;AC=0\tGT:GQ:DR:DV\t0/0:7:10:2\t./.:.:.:.", + "chr16\t611801\tSniffles2.DEL.64SF\tgggacagccgccttcgcctgtagaatcaagagcagggacagccgccctggcctgtagaatcaagagcacgggacagccgccctggcctgtagaatcaagagcacgggacagccgccctggcctgtagaatcaagagcagggacagccgccctggcctgtagaatcaagagcaagggacagccgccctggcctgtagaatcaagagcaagggacagccgcctttgcctgtagaatcaagagcag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-243;END=612044;SUPPORT=4;COVERAGE=3,4,4,4,4;STRAND=+-;AF=1;STDEV_LEN=0.707;STDEV_POS=14.142;AC=2\tGT:GQ:DR:DV\t./.:.:.:.\t1/1:11:0:4", + "chr16\t611989\tSniffles2.DEL.A5SF\tgcctgtagaatcaagagcaagggacagccgccttt\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-35;END=612024;SUPPORT=4;COVERAGE=12,12,12,12,12;STRAND=+-;AF=0.333;STDEV_LEN=0;STDEV_POS=0;AC=1\tGT:GQ:DR:DV\t0/1:17:8:4\t./.:.:.:.", + "chr16\t612007\tSniffles2.DEL.A6SF\taagggacagccgcctttgcctgtagaatcaagagcagggacagccgccctggcctgtagcatcaagagca\tN\t60\tGT\tIMPRECISE;SVTYPE=DEL;SVLEN=-70;END=612077;SUPPORT=2;COVERAGE=12,12,12,12,12;STRAND=-;AF=0.167;STDEV_LEN=1.414;STDEV_POS=26.87;AC=0\tGT:GQ:DR:DV\t0/0:7:10:2\t./.:.:.:.", + "chr16\t612374\tSniffles2.DEL.ABSF\tttcaagagcagggacagccgccctggcctgtagaatcaagagcaagggacagccgccttcgcctgtaga\tN\t60\tGT\tPRECISE;SVTYPE=DEL;SVLEN=-69;END=612443;SUPPORT=3;COVERAGE=12,12,12,12,13;STRAND=+-;AF=0.25;STDEV_LEN=0.577;STDEV_POS=5.196;AC=1\tGT:GQ:DR:DV\t0/1:4:9:3\t./.:.:.:.", + "chr16\t612593\tSniffles2.DEL.AFSF\tggacagccgccctggcctgtagaatcaagagcaagggacagccgcctttgcctgtagaatcaagagcagggacagctgccctggcctgtagcatcaagagca\tN\t60\tGT\tIMPRECISE;SVTYPE=DEL;SVLEN=-102;END=612695;SUPPORT=2;COVERAGE=12,12,12,12,13;STRAND=-;AF=0.167;STDEV_LEN=26.163;STDEV_POS=0;AC=0\tGT:GQ:DR:DV\t0/0:7:10:2\t./.:.:.:.", + "chr16\t612625\tSniffles2.DEL.AESF\taagggacagccgcctttgcctgtagaatcaagagcagggacagctgccctggcctgtagcatcaagagca\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-70;END=612695;SUPPORT=7;COVERAGE=12,12,12,12,13;STRAND=+-;AF=0.583;STDEV_LEN=0.894;STDEV_POS=2.683;AC=1\tGT:GQ:DR:DV\t0/1:30:5:7\t./.:.:.:.", + "chr16\t631728\tSniffles2.DEL.B3SF;Sniffles2.DEL.65SF\tcttctcccaccccttcactgcctctccttccatcctctcctcccaccctctcctcccatccactcctcccatccacttcttccatcct\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-88;END=631816;SUPPORT=14;COVERAGE=13,13,12,14,12;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;AC=4\tGT:GQ:DR:DV\t1/1:39:0:14\t1/1:47:0:17", + "chr16\t660943\tSniffles2.INS.3ASF\tN\tCCCCTGTTCGGCCCCTCCCCAGGCCCCCCCCCCGCCCGGCCTCGGCCCCACCCTGTTCGGCCCCTCCCCCAGCCGGCCTCGGCCCCGCCCCCTGTTCGGCCCCTCCCCAGG\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=111;END=660943;SUPPORT=16;COVERAGE=22,22,22,22,19;STRAND=+-;AF=0.727;STDEV_LEN=9.233;STDEV_POS=23.011;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:15:6:16\t./.:.:.:.", + "chr16\t660943\tSniffles2.INS.23SF\tN\tCCCCCTGTTCGGCCCCTCCCCAGGCCCCCCCCCGCCCGGCCTCAGGCCCCGCCCCCTGTTCGGCCCCTCCCCAGGCCCGGCCTCAGGCCCCGCCCCCTGTTCGGCCCCTCCCCAG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=115;END=660943;SUPPORT=17;COVERAGE=16,16,15,16,16;STRAND=+-;AF=1;STDEV_LEN=1.803;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t./.:.:.:.\t1/1:47:0:17", + "chr16\t665215\tSniffles2.DEL.B4SF;Sniffles2.DEL.66SF\tcctcagtctgcagcctgctagggacgcacggccacactcctgtctttcag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-50;END=665265;SUPPORT=18;COVERAGE=22,22,22,22,22;STRAND=+-;AF=0.818;STDEV_LEN=0;STDEV_POS=2.53;AC=4\tGT:GQ:DR:DV\t1/1:10:4:18\t1/1:60:0:22", + "chr16\t696679\tSniffles2.INS.3CSF;Sniffles2.INS.24SF\tN\tCCCACCCCAAAGCCACCATCCGCTCCCACCTCCATAGGGTTGCTGCTGCCCGCCCCTGCCCCCCAGCCCTGTCCCCCCCACCACCCAGCCTGGGCGCACACCCCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=105;END=696679;SUPPORT=16;COVERAGE=19,19,19,19,18;STRAND=+-;AF=0.842;STDEV_LEN=0.833;STDEV_POS=22.394;SUPPORT_LONG=0;AC=4\tGT:GQ:DR:DV\t1/1:14:3:16\t1/1:27:0:10", + "chr16\t746237\tSniffles2.DEL.67SF\tgaggtgggttcactgcgggtctgcctggctgggcagcaggagaggaggtgggttcactgcgggtctgcctggctgggcagcaggagaggaggtgggttcactgcaggtctgtctggctgggcagcaggaggggagaggtggggtcactgcgggtctgcagggctgcaggaggggagaggtggggtcactgcaggtctgtctggctgggcagcaggagaggaggtgggttcactgcaggtctgtctgggcgggctgcaggagaggaggtggggtcactgcgggtctgtctgggcgggctgcaggagag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-307;END=746544;SUPPORT=7;COVERAGE=13,13,13,13,11;STRAND=+-;AF=0.538;STDEV_LEN=0;STDEV_POS=0;AC=1\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:40:6:7", + "chr16\t746243\tSniffles2.DEL.B7SF\tggttcactgcgggtctgcctggctgggcagcaggagaggaggtgggttcactgcgggtctgcctggctgggcagcaggagaggaggtgggttcactgcaggtctgtctggctgggcagcaggaggggagaggtggggtcactgcgggtctgcagggctgcaggaggggagaggtggggtcactgcaggtctgtctggctgggcagcaggagaggaggtgggttcactgcaggtctgtctgggcgggctgcaggagaggaggtggggtcactgcgggtctgtctgggcgggctgcaggagaggaggt\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-306;END=746549;SUPPORT=6;COVERAGE=21,21,21,21,21;STRAND=+-;AF=0.286;STDEV_LEN=0;STDEV_POS=0;AC=1\tGT:GQ:DR:DV\t0/1:18:15:6\t./.:.:.:.", + "chr16\t760502\tSniffles2.INS.3ESF;Sniffles2.INS.25SF\tN\tAGCCATGAAACCTGGGCCCGGGCTCCCACTCACACCCCACCCCCACCCAGGGCAGCCGTGAAACCTGGGCCCTGGGCTCCCACCCACGCCCCACACCCACCCAGGGC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=107;END=760502;SUPPORT=19;COVERAGE=20,20,21,21,23;STRAND=+-;AF=0.905;STDEV_LEN=0.674;STDEV_POS=4.221;SUPPORT_LONG=0;AC=4\tGT:GQ:DR:DV\t1/1:32:2:19\t1/1:44:0:16", + "chr16\t763776\tSniffles2.INS.3FSF\tN\tGCATCCCATCCCCCGTCCCCTCCCCCACACCCCTCCCCCACCCCCACGTCCCCTCCCCACCCCTCCCCCACACCCTCCCCCACCCCTCCCCATGTCCCCTCCCCTACCTCCTCCCCCCGCGTCCCCTCCCCCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=133;END=763776;SUPPORT=21;COVERAGE=22,22,22,22,23;STRAND=+-;AF=0.955;STDEV_LEN=1.092;STDEV_POS=1.391;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:48:1:21\t./.:.:.:.", + "chr16\t763776\tSniffles2.INS.26SF\tN\tGCATCCCATCCCCCGTCCCCTCCCCCACACCCCTCCCCCACCCCCACGTCCCCTCCCCACCCCTCCCCCACACCCTCCCCCACCCCTCCCCATGTCCCCTCCCCTACCTCCTCCCCCCGCATCCCCTCCCCCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=133;END=763776;SUPPORT=20;COVERAGE=19,19,20,20,20;STRAND=+-;AF=1;STDEV_LEN=0.789;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t./.:.:.:.\t1/1:55:0:20" ], + "test_1_reheader.vcf.gz.tbi", + "test_2_reheader.vcf.gz.tbi", + "project.vcf.gz.tbi", [ + "versions.yml:md5,2188f00d20a376929f9f35f824e94667", + "versions.yml:md5,2188f00d20a376929f9f35f824e94667", + "versions.yml:md5,572bfd042014333af194207291d12b95", "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", - "versions.yml:md5,b5313b7af7b889d4faee264548c6862c" + "versions.yml:md5,ebb9b3d0bcc3aae3f54dfebd041e5cff", + "versions.yml:md5,ebb9b3d0bcc3aae3f54dfebd041e5cff" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.04.4" + "nextflow": "24.04.3" }, - "timestamp": "2024-08-30T11:36:39.479107382" + "timestamp": "2024-09-03T15:25:42.491226738" }, "1 sample - [bam, bai], fasta, fai, [] -stub": { "content": [ @@ -1031,10 +1013,20 @@ "single_end": false, "project": "project" }, - "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + "test_reheader.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "1": [ + [ + { + "id": "test", + "single_end": false, + "project": "project" + }, + "test_reheader.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ [ { "id": "project" @@ -1042,11 +1034,29 @@ "project.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], - "2": [ + "3": [ + [ + { + "id": "project" + }, + "project.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + "versions.yml:md5,2188f00d20a376929f9f35f824e94667", + "versions.yml:md5,572bfd042014333af194207291d12b95", "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", - "versions.yml:md5,b5313b7af7b889d4faee264548c6862c" + "versions.yml:md5,ebb9b3d0bcc3aae3f54dfebd041e5cff" + ], + "ch_multisample_tbi": [ + [ + { + "id": "project" + }, + "project.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] ], - "ch_multisample": [ + "ch_multisample_vcf": [ [ { "id": "project" @@ -1054,6 +1064,16 @@ "project.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], + "ch_sv_calls_tbi": [ + [ + { + "id": "test", + "single_end": false, + "project": "project" + }, + "test_reheader.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], "ch_sv_calls_vcf": [ [ { @@ -1061,12 +1081,14 @@ "single_end": false, "project": "project" }, - "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + "test_reheader.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "versions": [ + "versions.yml:md5,2188f00d20a376929f9f35f824e94667", + "versions.yml:md5,572bfd042014333af194207291d12b95", "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", - "versions.yml:md5,b5313b7af7b889d4faee264548c6862c" + "versions.yml:md5,ebb9b3d0bcc3aae3f54dfebd041e5cff" ] } ], @@ -1074,7 +1096,7 @@ "nf-test": "0.8.4", "nextflow": "24.04.3" }, - "timestamp": "2024-08-30T14:25:14.76824985" + "timestamp": "2024-09-03T12:26:40.148741281" }, "1 sample - [bam, bai], fasta, fai, bed -stub": { "content": [ @@ -1086,10 +1108,20 @@ "single_end": false, "project": "project" }, - "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + "test_reheader.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "1": [ + [ + { + "id": "test", + "single_end": false, + "project": "project" + }, + "test_reheader.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ [ { "id": "project" @@ -1097,11 +1129,29 @@ "project.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], - "2": [ + "3": [ + [ + { + "id": "project" + }, + "project.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + "versions.yml:md5,2188f00d20a376929f9f35f824e94667", + "versions.yml:md5,572bfd042014333af194207291d12b95", "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", - "versions.yml:md5,b5313b7af7b889d4faee264548c6862c" + "versions.yml:md5,ebb9b3d0bcc3aae3f54dfebd041e5cff" ], - "ch_multisample": [ + "ch_multisample_tbi": [ + [ + { + "id": "project" + }, + "project.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "ch_multisample_vcf": [ [ { "id": "project" @@ -1109,6 +1159,16 @@ "project.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], + "ch_sv_calls_tbi": [ + [ + { + "id": "test", + "single_end": false, + "project": "project" + }, + "test_reheader.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], "ch_sv_calls_vcf": [ [ { @@ -1116,12 +1176,14 @@ "single_end": false, "project": "project" }, - "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + "test_reheader.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "versions": [ + "versions.yml:md5,2188f00d20a376929f9f35f824e94667", + "versions.yml:md5,572bfd042014333af194207291d12b95", "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", - "versions.yml:md5,b5313b7af7b889d4faee264548c6862c" + "versions.yml:md5,ebb9b3d0bcc3aae3f54dfebd041e5cff" ] } ], @@ -1129,15 +1191,10 @@ "nf-test": "0.8.4", "nextflow": "24.04.3" }, - "timestamp": "2024-08-30T14:25:23.298403638" + "timestamp": "2024-09-03T12:28:23.511767701" }, "1 sample - [bam, bai], fasta, fai, bed": { "content": [ - [ - "##fileformat=VCFv4.2", - "##source=Sniffles2_2.0.7", - "##command=\"/usr/local/bin/sniffles --input HG002_PacBio_Revio.bam --reference hg38.test.fa -t 4 --tandem-repeats human_GRCh38_no_alt_analysis_set.trf.bed --vcf test.vcf.gz --snf test.snf\"" - ], [ "##contig=", "##contig=", @@ -1344,7 +1401,6 @@ "##FORMAT=", "##FORMAT=", "##FORMAT=", - "##FILTER=", "##FILTER=", "##FILTER=", "##FILTER=", @@ -1374,89 +1430,85 @@ "##INFO=", "##INFO=", "##INFO=", - "#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO\tFORMAT\tSAMPLE", - "chr16\t81884\tSniffles2.INS.3SF\tN\tCTCCAGGAAGCCCTCCTGAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTATCTCCGGAAGCCCTCCTGAATGCTCCCCACGCTGGCCCCTTCTTCCCACCACCCTACCTCCGGGAAGGCCTCCTGAATGCTCCCCACGCTGGCCCCTTCTTCCCACCACCCTACCTCCGGGAAGCCCTCCTGAATGCTCCCCACGCTGGCCCCTTCTTCCCACCACCCTACCTCCAGGAAGCCCTCCTGAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTATCTCCGGGAAGGCCTCCTGAATGCTCCCCACACTGACCCCTTCTTCCCACCACCCTACCTCCGGGAAGGCCTCCTGAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTAT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=398;END=81884;SUPPORT=13;COVERAGE=22,23,24,23,23;STRAND=+-;AF=0.542;STDEV_LEN=0.000;STDEV_POS=62.598;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:60:11:13", - "chr16\t82169\tSniffles2.INS.1SF\tN\tCTCCGGGAAGGCCTCCTGAATGCTCCCCACACTGACCCCTTCTTCCCACCACCCTAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=57;END=82169;SUPPORT=8;COVERAGE=23,23,23,23,23;STRAND=+-;AF=0.348;STDEV_LEN=0.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:38:15:8", - "chr16\t153120\tSniffles2.INS.4SF\tN\tACAGTGGGGAGGGGACAGTGGGGAGAGGACAGTAAGGAGGGGACCATGGGGAGGAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=56;END=153120;SUPPORT=23;COVERAGE=22,23,23,23,23;STRAND=+-;AF=1.000;STDEV_LEN=0.480;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:60:0:23", - "chr16\t160071\tSniffles2.INS.9SF\tN\tGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGACGGCTTGTGGGACACAGGTTGTGAGAGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTGTGAGGGTGCCCGGGATGGCTTGTGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTGTGAGACGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGAGATGCCCAGGACGGCTTGTGGGGAACAGGCTGTGAGGGTGCCCGGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGATGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGCTGCAAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGATGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCTGGGACGGCTTGTGGGGCACAGGTTGTGAGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=911;END=160071;SUPPORT=25;COVERAGE=28,28,28,30,27;STRAND=+-;AF=0.893;STDEV_LEN=1.050;STDEV_POS=14.700;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:39:3:25", - "chr16\t160753\tSniffles2.INS.BSF\tN\tGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCAGGATGGCTTGTGGGGCACAGGCTGCAAGAGGTGCCCAGGACGGCTTGTGGGGCACAGGTTGTGAGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=145;END=160753;SUPPORT=27;COVERAGE=30,28,28,27,27;STRAND=+-;AF=0.964;STDEV_LEN=0.352;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:60:1:27", + "##bcftools_viewVersion=1.20+htslib-1.20" + ], + [ + "#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO\tFORMAT\ttest", + "chr16\t81884\tSniffles2.INS.3SF\tN\tCTCCAGGAAGCCCTCCTGAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTATCTCCGGAAGCCCTCCTGAATGCTCCCCACGCTGGCCCCTTCTTCCCACCACCCTACCTCCGGGAAGGCCTCCTGAATGCTCCCCACGCTGGCCCCTTCTTCCCACCACCCTACCTCCGGGAAGCCCTCCTGAATGCTCCCCACGCTGGCCCCTTCTTCCCACCACCCTACCTCCAGGAAGCCCTCCTGAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTATCTCCGGGAAGGCCTCCTGAATGCTCCCCACACTGACCCCTTCTTCCCACCACCCTACCTCCGGGAAGGCCTCCTGAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTAT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=398;END=81884;SUPPORT=13;COVERAGE=22,23,24,23,23;STRAND=+-;AF=0.542;STDEV_LEN=0;STDEV_POS=62.598;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:60:11:13", + "chr16\t82169\tSniffles2.INS.1SF\tN\tCTCCGGGAAGGCCTCCTGAATGCTCCCCACACTGACCCCTTCTTCCCACCACCCTAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=57;END=82169;SUPPORT=8;COVERAGE=23,23,23,23,23;STRAND=+-;AF=0.348;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:38:15:8", + "chr16\t153120\tSniffles2.INS.4SF\tN\tACAGTGGGGAGGGGACAGTGGGGAGAGGACAGTAAGGAGGGGACCATGGGGAGGAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=56;END=153120;SUPPORT=23;COVERAGE=22,23,23,23,23;STRAND=+-;AF=1;STDEV_LEN=0.48;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:60:0:23", + "chr16\t160071\tSniffles2.INS.9SF\tN\tGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGACGGCTTGTGGGACACAGGTTGTGAGAGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTGTGAGGGTGCCCGGGATGGCTTGTGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTGTGAGACGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGAGATGCCCAGGACGGCTTGTGGGGAACAGGCTGTGAGGGTGCCCGGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGATGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGCTGCAAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGATGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCTGGGACGGCTTGTGGGGCACAGGTTGTGAGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=911;END=160071;SUPPORT=25;COVERAGE=28,28,28,30,27;STRAND=+-;AF=0.893;STDEV_LEN=1.05;STDEV_POS=14.7;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:39:3:25", + "chr16\t160753\tSniffles2.INS.BSF\tN\tGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCAGGATGGCTTGTGGGGCACAGGCTGCAAGAGGTGCCCAGGACGGCTTGTGGGGCACAGGTTGTGAGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=145;END=160753;SUPPORT=27;COVERAGE=30,28,28,27,27;STRAND=+-;AF=0.964;STDEV_LEN=0.352;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:60:1:27", "chr16\t163110\tSniffles2.DEL.4DSF\tcaccctgccgccatgtctctgaccaagacttaggggaccatcattgtgtccatgtgggccaagatctccacgcaggccgacaccatcggcaccgagactctggagaggtgagtgtcagatgggactgccagagggactgggtgggaggccaggtatgtgagtggggacagtggggagcgggcagtggggaggggaccgtggggaggggacagtgagtaggagacagtggggagaggacagtggagaggggacagtgaggaggggaccatgggaaggggaccgtggagtggggacagtgaggaggggaccatagggagggga\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-321;END=163431;SUPPORT=7;COVERAGE=23,22,22,22,22;STRAND=+-;AF=0.318;STDEV_LEN=0.894;STDEV_POS=10.733\tGT:GQ:DR:DV\t0/1:28:15:7", - "chr16\t164801\tSniffles2.INS.CSF\tN\tCGGGGTCGCGGGGCGGGCGGGTCGCGGGGCGGGGTCGCGGGGGCGGGCGAGGTC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=54;END=164801;SUPPORT=8;COVERAGE=21,21,21,21,21;STRAND=+-;AF=0.381;STDEV_LEN=2.160;STDEV_POS=17.972;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:43:13:8", - "chr16\t182789\tSniffles2.INS.DSF\tN\tTGAAACACCGTCTCTACTAAAAATACAAAAATTAGCCAGGCATAGTGGCGGGCGCCTGTAATCCCAGCTGTTCGGGAGGCTGAGGCAGGACAATCACTTAAACCAGGGAAGCAGAGGTTGCAGTGAGCTGAGATCGAGCCACTGCACTCCAGCCTGGGCGACAGACCGAGACTGTCTCAAAAAAAAGACCGGGCACGGTGGCTCACGCCTGTAATCCCACCACTTTGGGAGGCTGAGGCGGGCTGATCACGATGTCAGGAGATCTAGACCATCCTGGCCAACATGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=286;END=182789;SUPPORT=12;COVERAGE=13,12,12,12,12;STRAND=+-;AF=1.000;STDEV_LEN=0.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:33:0:12", - "chr16\t186052\tSniffles2.DEL.4ESF\tggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacgggg\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-646;END=186698;SUPPORT=11;COVERAGE=11,11,11,11,11;STRAND=+-;AF=1.000;STDEV_LEN=113.878;STDEV_POS=251.483\tGT:GQ:DR:DV\t1/1:30:0:11", - "chr16\t362990\tSniffles2.INS.FSF\tN\tGACTTAGCACCGGGGGGTCTCGGGCTGCGGCTGCTCTCCCA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=42;END=362990;SUPPORT=3;COVERAGE=7,6,6,6,5;STRAND=+-;AF=0.500;STDEV_LEN=0.577;STDEV_POS=9.238;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:21:3:3", - "chr16\t370391\tSniffles2.INS.10SF\tN\tCTACCCTGCCCCGGCTCTCACCCCCTACCCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCGGCTCTCACCCCCTACCCCGGCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCGCTACCCTGCCCCCGGCTCTCACCGCTACCCCCCGGCTCTCACCCGCTACCCCGCCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCCGGCCCCCCGGCTCTCACCTCCTACCCGGCCCCGGCTCTCACCCGCTCCCCCGGCCCCCGGCTCTCACCCGCTCACCCCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCTCGGCTCTCACCCCCTACCCCGGCCCCGGCTCTCACCCCCTACCCCTGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCCGGCTCTCACCCGCTACCCCGGCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGGCTCTCACTCC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=736;END=370391;SUPPORT=7;COVERAGE=7,7,7,7,7;STRAND=+-;AF=1.000;STDEV_LEN=65.282;STDEV_POS=1.095;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:19:0:7", - "chr16\t378308\tSniffles2.INS.11SF\tN\tCCACTCTGACTGCCATCGCCACTCTGACTGCCATCC\t60\tGT\tPRECISE;SVTYPE=INS;SVLEN=36;END=378308;SUPPORT=4;COVERAGE=17,17,17,18,18;STRAND=+-;AF=0.235;STDEV_LEN=0.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:3:13:4", - "chr16\t378517\tSniffles2.INS.12SF\tN\tGCCATCGCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCTGACTGCCATCGCCACCCACACTGCCATCCCCACCCGCACTGCCATCGCCACCCTGACTGCCATCGCCACCCACAATGCCATCCCCACCCGCACTGCCATCGCCACCCGCACTGCCATCCCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCACACTGCCATC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=240;END=378517;SUPPORT=12;COVERAGE=17,18,18,18,18;STRAND=+-;AF=0.667;STDEV_LEN=0.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:26:6:12", - "chr16\t397717\tSniffles2.INS.13SF\tN\tTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGTGGGGGTGGGGGTGTGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGTGAGGGAGTCGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGTGAGGGAGTCGGGGGGTGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGGC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=491;END=397717;SUPPORT=3;COVERAGE=3,3,3,3,3;STRAND=+-;AF=1.000;STDEV_LEN=2.309;STDEV_POS=5.196;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:8:0:3", - "chr16\t504280\tSniffles2.INS.14SF\tN\tTCCATCTCCTCCTGTACCCCCTCACCTCCTTGTGCACCCCCTCACCTCCTGTACCCCCTCACCTCCTCTGTATACCACCTCCTCCTGTACCCCCTCACCTCCTCTTGCACCCCCCTTGCCTCCTGTACCCCCTCACCTCCTTGTGCACCCCCTCACCTCCTGTACCCCCTCACCTCCTCCTGTACCCGCCTCACCTCCTCCTGCACTCCCATCTCCCCTGTACCCCCTCACCTCCCTTGTGCACCCCCTCACCTCCTGTACCCCCTCACTCCTCCTCTGTACCCCTCACCTCCTCCTGTA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=331;END=504280;SUPPORT=4;COVERAGE=4,4,4,4,4;STRAND=+-;AF=1.000;STDEV_LEN=1.414;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:11:0:4", - "chr16\t507831\tSniffles2.INS.15SF\tN\tTTCAGTATCATCTGCCCGTTCTGAGCCATTTGCTCTCTAGCCCTACCATACAGCTGCCATCCTAAGAGTACGTTTCCCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=81;END=507831;SUPPORT=4;COVERAGE=5,5,5,5,7;STRAND=+-;AF=0.800;STDEV_LEN=0.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:1:1:4", - "chr16\t534179\tSniffles2.INS.16SF\tN\tGGGCCGTGGTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACGGGGCCGTGGTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACGGGGCCGTGGTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=162;END=534179;SUPPORT=5;COVERAGE=5,5,5,5,4;STRAND=+-;AF=1.000;STDEV_LEN=0.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:13:0:5", - "chr16\t544781\tSniffles2.INS.17SF\tN\tCGTCTCCCCCACGTCGCCTCCCCCCACGTCGCCTCCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCTCACGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGTCGC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=344;END=544781;SUPPORT=8;COVERAGE=8,8,8,8,8;STRAND=+-;AF=1.000;STDEV_LEN=4.690;STDEV_POS=25.500;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:22:0:8", - "chr16\t550769\tSniffles2.INS.18SF\tN\tCGGTGAGGGTCCCCGGTCGGTGAGGGCGCCCCGTCAGTGAGGGTCCCGGTCAGTGAGGGCCCCGGTCGGTGAGGGTCCCCGGTCGGTGAGGGCCCCTGTCGGTGAGGGCCCCGGTCGGTGAGGGACCCGGTCGGTGAGGGCCCCCTGTCGGTGAGGGTCCCCTGTCGGTGAGGGCCCCGGTCGGTGAGGGCCCCGGTCGGTGAGGGTCCCCTGTCGGTGAGGGTCCCCTGTCGGTGAGGGTCCCGGTCGGTGAGGGCCCCGGTCGGTGAGGGTGCCCCGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=280;END=550769;SUPPORT=13;COVERAGE=13,13,13,13,13;STRAND=+-;AF=1.000;STDEV_LEN=1.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:36:0:13", - "chr16\t553057\tSniffles2.INS.19SF\tN\tTGCCCCCCACCCCTGCACAGGTGCCCCCTCCCCTACCCCGCTGCACCCACACCCAACTCGTGCCCCCCCACCCCTGCACAGGTGCCCCCTCCCCTACCCCGCTGCACCCACACCCAACTCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=121;END=553057;SUPPORT=6;COVERAGE=12,11,11,11,10;STRAND=+-;AF=0.545;STDEV_LEN=0.577;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:33:5:6", - "chr16\t571110\tSniffles2.INS.1BSF\tN\tTGGCTAGCCTGTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTGTGTGTGTCTGGCTAGCCTGGTGCCCGTGTGTGTGTGTATGTGTGTGTGTGTGTGTGTGTCTGGCTAGCTGGCGCCCGTGGCTAGCCTGGTGCCCGTGTGTGTGTGTATGTATGTGTCTGGCTAGCCTGGTGCCCGTGGCTAGCCTGGTGCCCGTGTGTGTGTGTGTGGGGGGGGCTAGCCTTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTCTGGCTAGCGTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTGTGTGTGCTAGCCTGGCGCCCGTGTGTGTGTGTGTGTGTGTCTGGCTAGCCTGGCACCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=358;END=571110;SUPPORT=16;COVERAGE=18,17,16,16,18;STRAND=+-;AF=1.000;STDEV_LEN=3.780;STDEV_POS=14.714;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:44:0:16", - "chr16\t579380\tSniffles2.DEL.4FSF\tcagagaagagacagacacacagccccgaaggtggtgcaggcacaggccctagaggtgccccgggcccagagactagagatgccccgggcccggagactagaggtgccccgggcccggaga\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-120;END=579500;SUPPORT=11;COVERAGE=11,11,11,11,10;STRAND=+-;AF=1.000;STDEV_LEN=0.488;STDEV_POS=0.000\tGT:GQ:DR:DV\t1/1:30:0:11", - "chr16\t585059\tSniffles2.DEL.50SF\tcccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctccccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctccccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctc\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-156;END=585215;SUPPORT=6;COVERAGE=6,6,6,6,6;STRAND=+-;AF=1.000;STDEV_LEN=0.500;STDEV_POS=56.518\tGT:GQ:DR:DV\t1/1:16:0:6", - "chr16\t587440\tSniffles2.INS.1CSF\tN\tTCCCTCCCTTCACTGGGCCTGCTGCCCCAGAGTCCA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=36;END=587440;SUPPORT=5;COVERAGE=5,5,5,5,5;STRAND=+-;AF=1.000;STDEV_LEN=0.000;STDEV_POS=41.569;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:13:0:5", - "chr16\t611801\tSniffles2.DEL.51SF\tgggacagccgccttcgcctgtagaatcaagagcagggacagccgccctggcctgtagaatcaagagcacgggacagccgccctggcctgtagaatcaagagcacgggacagccgccctggcctgtagaatcaagagcagggacagccgccctggcctgtagaatcaagagcaagggacagccgccctggcctgtagaatcaagagcaagggacagccgcctttgcctgtagaatcaagagcag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-243;END=612044;SUPPORT=4;COVERAGE=3,4,4,4,4;STRAND=+-;AF=1.000;STDEV_LEN=0.707;STDEV_POS=14.142\tGT:GQ:DR:DV\t1/1:11:0:4", - "chr16\t631728\tSniffles2.DEL.52SF\tcttctcccaccccttcactgcctctccttccatcctctcctcccaccctctcctcccatccactcctcccatccacttcttccatcct\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-88;END=631816;SUPPORT=17;COVERAGE=17,17,17,17,16;STRAND=+-;AF=1.000;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t1/1:47:0:17", - "chr16\t660943\tSniffles2.INS.1FSF\tN\tCCCCCTGTTCGGCCCCTCCCCAGGCCCCCCCCCGCCCGGCCTCAGGCCCCGCCCCCTGTTCGGCCCCTCCCCAGGCCCGGCCTCAGGCCCCGCCCCCTGTTCGGCCCCTCCCCAG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=115;END=660943;SUPPORT=17;COVERAGE=16,16,15,16,16;STRAND=+-;AF=1.000;STDEV_LEN=1.803;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:47:0:17", - "chr16\t665215\tSniffles2.DEL.53SF\tcctcagtctgcagcctgctagggacgcacggccacactcctgtctttcag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-50;END=665265;SUPPORT=22;COVERAGE=19,21,22,22,21;STRAND=+-;AF=1.000;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t1/1:60:0:22", - "chr16\t696679\tSniffles2.INS.20SF\tN\tCCCACCCCAAAGCCACCATCCGCTCCCACCTCCATAGGGTTGCTGCTGCCCGCCCCTGCCCCCCAGCCCTGTCCCCCCCACCACCCAGCCTGGGCGCACACCCCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=105;END=696679;SUPPORT=10;COVERAGE=11,10,10,10,10;STRAND=+-;AF=1.000;STDEV_LEN=0.408;STDEV_POS=1.633;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:27:0:10", - "chr16\t746237\tSniffles2.DEL.54SF\tgaggtgggttcactgcgggtctgcctggctgggcagcaggagaggaggtgggttcactgcgggtctgcctggctgggcagcaggagaggaggtgggttcactgcaggtctgtctggctgggcagcaggaggggagaggtggggtcactgcgggtctgcagggctgcaggaggggagaggtggggtcactgcaggtctgtctggctgggcagcaggagaggaggtgggttcactgcaggtctgtctgggcgggctgcaggagaggaggtggggtcactgcgggtctgtctgggcgggctgcaggagag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-307;END=746544;SUPPORT=7;COVERAGE=13,13,13,13,11;STRAND=+-;AF=0.538;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/1:40:6:7", - "chr16\t760502\tSniffles2.INS.21SF\tN\tAGCCATGAAACCTGGGCCCGGGCTCCCACTCACACCCCACCCCCACCCAGGGCAGCCGTGAAACCTGGGCCCTGGGCTCCCACCCACGCCCCACACCCACCCAGGGC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=107;END=760502;SUPPORT=16;COVERAGE=16,16,16,16,17;STRAND=+-;AF=1.000;STDEV_LEN=0.518;STDEV_POS=11.667;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:44:0:16", - "chr16\t763776\tSniffles2.INS.22SF\tN\tGCATCCCATCCCCCGTCCCCTCCCCCACACCCCTCCCCCACCCCCACGTCCCCTCCCCACCCCTCCCCCACACCCTCCCCCACCCCTCCCCATGTCCCCTCCCCTACCTCCTCCCCCCGCATCCCCTCCCCCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=133;END=763776;SUPPORT=20;COVERAGE=19,19,20,20,20;STRAND=+-;AF=1.000;STDEV_LEN=0.789;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:55:0:20", + "chr16\t164801\tSniffles2.INS.CSF\tN\tCGGGGTCGCGGGGCGGGCGGGTCGCGGGGCGGGGTCGCGGGGGCGGGCGAGGTC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=54;END=164801;SUPPORT=8;COVERAGE=21,21,21,21,21;STRAND=+-;AF=0.381;STDEV_LEN=2.16;STDEV_POS=17.972;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:43:13:8", + "chr16\t182789\tSniffles2.INS.DSF\tN\tTGAAACACCGTCTCTACTAAAAATACAAAAATTAGCCAGGCATAGTGGCGGGCGCCTGTAATCCCAGCTGTTCGGGAGGCTGAGGCAGGACAATCACTTAAACCAGGGAAGCAGAGGTTGCAGTGAGCTGAGATCGAGCCACTGCACTCCAGCCTGGGCGACAGACCGAGACTGTCTCAAAAAAAAGACCGGGCACGGTGGCTCACGCCTGTAATCCCACCACTTTGGGAGGCTGAGGCGGGCTGATCACGATGTCAGGAGATCTAGACCATCCTGGCCAACATGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=286;END=182789;SUPPORT=12;COVERAGE=13,12,12,12,12;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:33:0:12", + "chr16\t186052\tSniffles2.DEL.4ESF\tggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacgggg\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-646;END=186698;SUPPORT=11;COVERAGE=11,11,11,11,11;STRAND=+-;AF=1;STDEV_LEN=113.878;STDEV_POS=251.483\tGT:GQ:DR:DV\t1/1:30:0:11", + "chr16\t362990\tSniffles2.INS.FSF\tN\tGACTTAGCACCGGGGGGTCTCGGGCTGCGGCTGCTCTCCCA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=42;END=362990;SUPPORT=3;COVERAGE=7,6,6,6,5;STRAND=+-;AF=0.5;STDEV_LEN=0.577;STDEV_POS=9.238;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:21:3:3", + "chr16\t370391\tSniffles2.INS.10SF\tN\tCTACCCTGCCCCGGCTCTCACCCCCTACCCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCGGCTCTCACCCCCTACCCCGGCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCGCTACCCTGCCCCCGGCTCTCACCGCTACCCCCCGGCTCTCACCCGCTACCCCGCCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCCGGCCCCCCGGCTCTCACCTCCTACCCGGCCCCGGCTCTCACCCGCTCCCCCGGCCCCCGGCTCTCACCCGCTCACCCCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCTCGGCTCTCACCCCCTACCCCGGCCCCGGCTCTCACCCCCTACCCCTGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCCGGCTCTCACCCGCTACCCCGGCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGGCTCTCACTCC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=736;END=370391;SUPPORT=7;COVERAGE=7,7,7,7,7;STRAND=+-;AF=1;STDEV_LEN=65.282;STDEV_POS=1.095;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:19:0:7", + "chr16\t378308\tSniffles2.INS.11SF\tN\tCCACTCTGACTGCCATCGCCACTCTGACTGCCATCC\t60\tGT\tPRECISE;SVTYPE=INS;SVLEN=36;END=378308;SUPPORT=4;COVERAGE=17,17,17,18,18;STRAND=+-;AF=0.235;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:3:13:4", + "chr16\t378517\tSniffles2.INS.12SF\tN\tGCCATCGCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCTGACTGCCATCGCCACCCACACTGCCATCCCCACCCGCACTGCCATCGCCACCCTGACTGCCATCGCCACCCACAATGCCATCCCCACCCGCACTGCCATCGCCACCCGCACTGCCATCCCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCACACTGCCATC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=240;END=378517;SUPPORT=12;COVERAGE=17,18,18,18,18;STRAND=+-;AF=0.667;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:26:6:12", + "chr16\t397717\tSniffles2.INS.13SF\tN\tTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGTGGGGGTGGGGGTGTGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGTGAGGGAGTCGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGTGAGGGAGTCGGGGGGTGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGGC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=491;END=397717;SUPPORT=3;COVERAGE=3,3,3,3,3;STRAND=+-;AF=1;STDEV_LEN=2.309;STDEV_POS=5.196;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:8:0:3", + "chr16\t504280\tSniffles2.INS.14SF\tN\tTCCATCTCCTCCTGTACCCCCTCACCTCCTTGTGCACCCCCTCACCTCCTGTACCCCCTCACCTCCTCTGTATACCACCTCCTCCTGTACCCCCTCACCTCCTCTTGCACCCCCCTTGCCTCCTGTACCCCCTCACCTCCTTGTGCACCCCCTCACCTCCTGTACCCCCTCACCTCCTCCTGTACCCGCCTCACCTCCTCCTGCACTCCCATCTCCCCTGTACCCCCTCACCTCCCTTGTGCACCCCCTCACCTCCTGTACCCCCTCACTCCTCCTCTGTACCCCTCACCTCCTCCTGTA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=331;END=504280;SUPPORT=4;COVERAGE=4,4,4,4,4;STRAND=+-;AF=1;STDEV_LEN=1.414;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:11:0:4", + "chr16\t507831\tSniffles2.INS.15SF\tN\tTTCAGTATCATCTGCCCGTTCTGAGCCATTTGCTCTCTAGCCCTACCATACAGCTGCCATCCTAAGAGTACGTTTCCCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=81;END=507831;SUPPORT=4;COVERAGE=5,5,5,5,7;STRAND=+-;AF=0.8;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:1:1:4", + "chr16\t534179\tSniffles2.INS.16SF\tN\tGGGCCGTGGTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACGGGGCCGTGGTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACGGGGCCGTGGTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=162;END=534179;SUPPORT=5;COVERAGE=5,5,5,5,4;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:13:0:5", + "chr16\t544781\tSniffles2.INS.17SF\tN\tCGTCTCCCCCACGTCGCCTCCCCCCACGTCGCCTCCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCTCACGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGTCGC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=344;END=544781;SUPPORT=8;COVERAGE=8,8,8,8,8;STRAND=+-;AF=1;STDEV_LEN=4.69;STDEV_POS=25.5;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:22:0:8", + "chr16\t550769\tSniffles2.INS.18SF\tN\tCGGTGAGGGTCCCCGGTCGGTGAGGGCGCCCCGTCAGTGAGGGTCCCGGTCAGTGAGGGCCCCGGTCGGTGAGGGTCCCCGGTCGGTGAGGGCCCCTGTCGGTGAGGGCCCCGGTCGGTGAGGGACCCGGTCGGTGAGGGCCCCCTGTCGGTGAGGGTCCCCTGTCGGTGAGGGCCCCGGTCGGTGAGGGCCCCGGTCGGTGAGGGTCCCCTGTCGGTGAGGGTCCCCTGTCGGTGAGGGTCCCGGTCGGTGAGGGCCCCGGTCGGTGAGGGTGCCCCGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=280;END=550769;SUPPORT=13;COVERAGE=13,13,13,13,13;STRAND=+-;AF=1;STDEV_LEN=1;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:36:0:13", + "chr16\t553057\tSniffles2.INS.19SF\tN\tTGCCCCCCACCCCTGCACAGGTGCCCCCTCCCCTACCCCGCTGCACCCACACCCAACTCGTGCCCCCCCACCCCTGCACAGGTGCCCCCTCCCCTACCCCGCTGCACCCACACCCAACTCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=121;END=553057;SUPPORT=6;COVERAGE=12,11,11,11,10;STRAND=+-;AF=0.545;STDEV_LEN=0.577;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:33:5:6", + "chr16\t571110\tSniffles2.INS.1BSF\tN\tTGGCTAGCCTGTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTGTGTGTGTCTGGCTAGCCTGGTGCCCGTGTGTGTGTGTATGTGTGTGTGTGTGTGTGTGTCTGGCTAGCTGGCGCCCGTGGCTAGCCTGGTGCCCGTGTGTGTGTGTATGTATGTGTCTGGCTAGCCTGGTGCCCGTGGCTAGCCTGGTGCCCGTGTGTGTGTGTGTGGGGGGGGCTAGCCTTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTCTGGCTAGCGTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTGTGTGTGCTAGCCTGGCGCCCGTGTGTGTGTGTGTGTGTGTCTGGCTAGCCTGGCACCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=358;END=571110;SUPPORT=16;COVERAGE=18,17,16,16,18;STRAND=+-;AF=1;STDEV_LEN=3.78;STDEV_POS=14.714;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:44:0:16", + "chr16\t579380\tSniffles2.DEL.4FSF\tcagagaagagacagacacacagccccgaaggtggtgcaggcacaggccctagaggtgccccgggcccagagactagagatgccccgggcccggagactagaggtgccccgggcccggaga\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-120;END=579500;SUPPORT=11;COVERAGE=11,11,11,11,10;STRAND=+-;AF=1;STDEV_LEN=0.488;STDEV_POS=0\tGT:GQ:DR:DV\t1/1:30:0:11", + "chr16\t585059\tSniffles2.DEL.50SF\tcccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctccccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctccccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctc\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-156;END=585215;SUPPORT=6;COVERAGE=6,6,6,6,6;STRAND=+-;AF=1;STDEV_LEN=0.5;STDEV_POS=56.518\tGT:GQ:DR:DV\t1/1:16:0:6", + "chr16\t587440\tSniffles2.INS.1CSF\tN\tTCCCTCCCTTCACTGGGCCTGCTGCCCCAGAGTCCA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=36;END=587440;SUPPORT=5;COVERAGE=5,5,5,5,5;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=41.569;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:13:0:5", + "chr16\t611801\tSniffles2.DEL.51SF\tgggacagccgccttcgcctgtagaatcaagagcagggacagccgccctggcctgtagaatcaagagcacgggacagccgccctggcctgtagaatcaagagcacgggacagccgccctggcctgtagaatcaagagcagggacagccgccctggcctgtagaatcaagagcaagggacagccgccctggcctgtagaatcaagagcaagggacagccgcctttgcctgtagaatcaagagcag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-243;END=612044;SUPPORT=4;COVERAGE=3,4,4,4,4;STRAND=+-;AF=1;STDEV_LEN=0.707;STDEV_POS=14.142\tGT:GQ:DR:DV\t1/1:11:0:4", + "chr16\t631728\tSniffles2.DEL.52SF\tcttctcccaccccttcactgcctctccttccatcctctcctcccaccctctcctcccatccactcctcccatccacttcttccatcct\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-88;END=631816;SUPPORT=17;COVERAGE=17,17,17,17,16;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t1/1:47:0:17", + "chr16\t660943\tSniffles2.INS.1FSF\tN\tCCCCCTGTTCGGCCCCTCCCCAGGCCCCCCCCCGCCCGGCCTCAGGCCCCGCCCCCTGTTCGGCCCCTCCCCAGGCCCGGCCTCAGGCCCCGCCCCCTGTTCGGCCCCTCCCCAG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=115;END=660943;SUPPORT=17;COVERAGE=16,16,15,16,16;STRAND=+-;AF=1;STDEV_LEN=1.803;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:47:0:17", + "chr16\t665215\tSniffles2.DEL.53SF\tcctcagtctgcagcctgctagggacgcacggccacactcctgtctttcag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-50;END=665265;SUPPORT=22;COVERAGE=19,21,22,22,21;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t1/1:60:0:22", + "chr16\t696679\tSniffles2.INS.20SF\tN\tCCCACCCCAAAGCCACCATCCGCTCCCACCTCCATAGGGTTGCTGCTGCCCGCCCCTGCCCCCCAGCCCTGTCCCCCCCACCACCCAGCCTGGGCGCACACCCCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=105;END=696679;SUPPORT=10;COVERAGE=11,10,10,10,10;STRAND=+-;AF=1;STDEV_LEN=0.408;STDEV_POS=1.633;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:27:0:10", + "chr16\t746237\tSniffles2.DEL.54SF\tgaggtgggttcactgcgggtctgcctggctgggcagcaggagaggaggtgggttcactgcgggtctgcctggctgggcagcaggagaggaggtgggttcactgcaggtctgtctggctgggcagcaggaggggagaggtggggtcactgcgggtctgcagggctgcaggaggggagaggtggggtcactgcaggtctgtctggctgggcagcaggagaggaggtgggttcactgcaggtctgtctgggcgggctgcaggagaggaggtggggtcactgcgggtctgtctgggcgggctgcaggagag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-307;END=746544;SUPPORT=7;COVERAGE=13,13,13,13,11;STRAND=+-;AF=0.538;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:40:6:7", + "chr16\t760502\tSniffles2.INS.21SF\tN\tAGCCATGAAACCTGGGCCCGGGCTCCCACTCACACCCCACCCCCACCCAGGGCAGCCGTGAAACCTGGGCCCTGGGCTCCCACCCACGCCCCACACCCACCCAGGGC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=107;END=760502;SUPPORT=16;COVERAGE=16,16,16,16,17;STRAND=+-;AF=1;STDEV_LEN=0.518;STDEV_POS=11.667;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:44:0:16", + "chr16\t763776\tSniffles2.INS.22SF\tN\tGCATCCCATCCCCCGTCCCCTCCCCCACACCCCTCCCCCACCCCCACGTCCCCTCCCCACCCCTCCCCCACACCCTCCCCCACCCCTCCCCATGTCCCCTCCCCTACCTCCTCCCCCCGCATCCCCTCCCCCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=133;END=763776;SUPPORT=20;COVERAGE=19,19,20,20,20;STRAND=+-;AF=1;STDEV_LEN=0.789;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:55:0:20", "chr16\t767762\tSniffles2.INS.26SF\tN\tGGGGCACGTGGAGGGGTCGCGTGGAGGAGGGGCGCGTGGAGGGGGCGCGTGGAGGAGGAGGGGCGCATGGGGGGGTGTGGAGGGCACATGGGGGTGCGTGGGGGGGCGTGTGGGGGGGTGCGTGGAGGA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=130;END=767762;SUPPORT=10;COVERAGE=15,15,15,15,14;STRAND=+-;AF=0.667;STDEV_LEN=1.835;STDEV_POS=27.386;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:22:5:10", - "chr16\t767829\tSniffles2.INS.25SF\tN\tGGTGTGGAGGGGGGCGCGTGGGGGTGTGTGGGGGGGGGCACGTGGAGGGGGCGTGTGGGGGGGTGCGTGGAGGAGGGGCGCGTGGAGGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=89;END=767829;SUPPORT=4;COVERAGE=15,15,15,15,14;STRAND=+-;AF=0.267;STDEV_LEN=0.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:9:11:4", - "chr16\t769171\tSniffles2.INS.27SF\tN\tCCCCGGCCCCGGCCCCAGCCCCGGCCCCACCCCGGCCCCAGCCCCAGCCCCAGCCCCAGCCCCACCCCCGGCCCCAGCCCCAGCCCCAGCCCCAGCCCCGGCCCCACCCCCACCCCCGGCCCCGGCCCCGGCCCCACCCCCGGCCCCGGCCCCGGCCCCACCCCCGGCCCCGGCCCCACCCCCGGCCCCGGCCCCAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=197;END=769171;SUPPORT=6;COVERAGE=14,13,13,13,13;STRAND=+-;AF=0.462;STDEV_LEN=0.816;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:40:7:6", - "chr16\t795446\tSniffles2.INS.28SF\tN\tCCCCCGTGCTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCTGTGCTGCCCGTGTGGCTGCCCCCGGCCCCGCGCCCTTCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=87;END=795446;SUPPORT=8;COVERAGE=13,13,13,13,13;STRAND=+-;AF=0.615;STDEV_LEN=0.577;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:27:5:8", - "chr16\t795594\tSniffles2.INS.29SF\tN\tGCTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCTTCTCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCTTCTCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCTGTGCTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCTCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCTTCTCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCGCCCCGCCCCGCCCCTCCCCTCCCCCCCCCCCGC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=621;END=795594;SUPPORT=5;COVERAGE=13,13,13,13,13;STRAND=+-;AF=0.385;STDEV_LEN=2.646;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:27:8:5", - "chr16\t818868\tSniffles2.INS.2ASF\tN\tTGGTGAAGACTGTAGTGATGGTGATGATGGTGAAGACTGTAGTGATGATGGTGGTGAAGACTGTAGTGATGTTGATATTGGTGATGAAGACTATAGTGATAGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTAGTGATGGTGATGATGATGGTGAAGACTGTAGTGATGGTGATGATGGTGAAGACTGTAGCGATGATGGTGAACACTGTAGTGATGTTGATATTGGTGATGAAGACTATAGTGATGGTGATGATAGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTGTAGTGATGGTGATGAGGTGAGACTATCGTGATGGTGATGATAATGGTGAAGACTATAGTGATGTTGATGTCGGTGGTGAAGACTGTAGTGATGGTGATGATAGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTGTAGTGATGGTGATGATGGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTATAGTGATGATGGTGAAGACTGTAGTGATGGTGATGATAGTGGTGAAGACTGTAGTGATGTTAATGGTGAAGGCTATAGTGATGTTGATGGTGGTGAAGACTGTAGCAATGGTTATGATGTTGGTGAAGACAATAGTGATGGTGATGATGGTGAAGACTATAGTGATGGTGATGATGGTGGTGAAGACTGTAGTGATGGTGATGATAGTGGTGAGGACTGTTAGTGATGATAGTGGTGAAGACTGTAGTGATGATGATGGTGAAGACTATAATGATGATGGTGAAGACCGCCGTGATGGTGATGATGGTGAAGACTGTAGCAATGATGATGGTGAAGACTATAGTGATGTTGAGTTGGTGGTGAAGACTGTAGCGATGGTGATGATGATGGTGAAGACTATAGTGATGATGATGTTGAAGACTATAGTGATGATGATGGTGAAGACCGCCGTGATGGTGATGATGGTGAAGACTGTAGCGATGATGATGGTGAAGACTATAGTGATGCTGATGTTGGTGGTGAAGACTGTAGTGATGGTGATGATGATGGTGAAGACTATAGTGATGATGATGGTGAAGACTATAGTGATGATGATGTGAAGACCGCCGTGATGGTGATGATGGTGAAGACTGTAGCGATGATGATGGTGAAGACTATAGTGATGTTGATGTTGG\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=1173;END=818868;SUPPORT=12;COVERAGE=13,12,12,12,12;STRAND=+-;AF=1.000;STDEV_LEN=90.396;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:33:0:12", - "chr16\t824382\tSniffles2.INS.2BSF\tN\tTAGGCCCACGACGGCCAGCAGCGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGGAGCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=150;END=824382;SUPPORT=2;COVERAGE=3,3,3,3,2;STRAND=-;AF=0.667;STDEV_LEN=0.707;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:4:1:2", - "chr16\t824874\tSniffles2.INS.2DSF\tN\tCGTCCCGTCCGCGGCACCACCGTCCCATCTGTGGCACCAT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=40;END=824874;SUPPORT=2;COVERAGE=3,2,2,2,2;STRAND=+-;AF=1.000;STDEV_LEN=0.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:5:0:2", - "chr16\t828906\tSniffles2.DEL.55SF\tgcccactggggcccacatcccgcccactgggaccgacatccc\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-42;END=828948;SUPPORT=2;COVERAGE=2,2,2,2,2;STRAND=+-;AF=1.000;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t1/1:5:0:2", - "chr16\t886663\tSniffles2.INS.30SF\tN\tCCACCCTAGGCCCCCGGCGTTCCCCAGGCCCCTCCCACCCTAGGCCCCCGGCGTTCCCCAGGCCCCTCCCACCCTAGGCCCCCGGCGTTCCCCAGGCCCCTCCCACCCTAGGCCCCGGCGTTCCCCAGGCCCCT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=133;END=886663;SUPPORT=10;COVERAGE=10,10,10,10,11;STRAND=+-;AF=1.000;STDEV_LEN=0.983;STDEV_POS=48.673;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:27:0:10", - "chr16\t894215\tSniffles2.INS.31SF\tN\tCTGGCTGTCCGCCCACCCATCCCCTGTCCACCGGACCGTCCGCCCACCCGTCCCCATGTCCATCAGACCGTCCGTCCACCTGTCCCCCTGTCCCCTGTCCACCGGACCATTCGCCCACCCATCCCCCTGTCCACCTGGCCATCCGCCCACCTGTCTCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCACTGGACTGTCCGCCCACCTGTCCCCCTGTCCCCTGTCCACCGGACCGTCTGCCCACCCGTCCCCCTGTCCACCTGGCCATCCGCCCACCCATCCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCAGGTCCCCCTGTCCAGCGGACCGTCCACCCACCCGTCCCCCTGTCCACTGGACCGTCCGCCCACCTGTCCCCCTGTCCACCTGGCAGTGCGCCCACCCATCCCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCAGCGGACCGTCCACCCACCT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=521;END=894215;SUPPORT=17;COVERAGE=17,17,17,17,17;STRAND=+-;AF=1.000;STDEV_LEN=57.393;STDEV_POS=5.500;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:47:0:17", - "chr16\t895843\tSniffles2.INS.33SF\tN\tACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCATGGTCCACAGACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCACGGTCCACAGACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCACGGTCCACAGCCACACGCAGGCTGCACGGTCCACAGACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCACGGTCCACACACACGCCTCGGAGGGGTTGTGAGGCTCAGCCAT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=295;END=895843;SUPPORT=10;COVERAGE=17,16,16,16,14;STRAND=+-;AF=0.625;STDEV_LEN=0.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:32:6:10", + "chr16\t767829\tSniffles2.INS.25SF\tN\tGGTGTGGAGGGGGGCGCGTGGGGGTGTGTGGGGGGGGGCACGTGGAGGGGGCGTGTGGGGGGGTGCGTGGAGGAGGGGCGCGTGGAGGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=89;END=767829;SUPPORT=4;COVERAGE=15,15,15,15,14;STRAND=+-;AF=0.267;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:9:11:4", + "chr16\t769171\tSniffles2.INS.27SF\tN\tCCCCGGCCCCGGCCCCAGCCCCGGCCCCACCCCGGCCCCAGCCCCAGCCCCAGCCCCAGCCCCACCCCCGGCCCCAGCCCCAGCCCCAGCCCCAGCCCCGGCCCCACCCCCACCCCCGGCCCCGGCCCCGGCCCCACCCCCGGCCCCGGCCCCGGCCCCACCCCCGGCCCCGGCCCCACCCCCGGCCCCGGCCCCAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=197;END=769171;SUPPORT=6;COVERAGE=14,13,13,13,13;STRAND=+-;AF=0.462;STDEV_LEN=0.816;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:40:7:6", + "chr16\t795446\tSniffles2.INS.28SF\tN\tCCCCCGTGCTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCTGTGCTGCCCGTGTGGCTGCCCCCGGCCCCGCGCCCTTCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=87;END=795446;SUPPORT=8;COVERAGE=13,13,13,13,13;STRAND=+-;AF=0.615;STDEV_LEN=0.577;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:27:5:8", + "chr16\t795594\tSniffles2.INS.29SF\tN\tGCTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCTTCTCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCTTCTCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCTGTGCTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCTCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCTTCTCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCGCCCCGCCCCGCCCCTCCCCTCCCCCCCCCCCGC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=621;END=795594;SUPPORT=5;COVERAGE=13,13,13,13,13;STRAND=+-;AF=0.385;STDEV_LEN=2.646;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:27:8:5", + "chr16\t818868\tSniffles2.INS.2ASF\tN\tTGGTGAAGACTGTAGTGATGGTGATGATGGTGAAGACTGTAGTGATGATGGTGGTGAAGACTGTAGTGATGTTGATATTGGTGATGAAGACTATAGTGATAGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTAGTGATGGTGATGATGATGGTGAAGACTGTAGTGATGGTGATGATGGTGAAGACTGTAGCGATGATGGTGAACACTGTAGTGATGTTGATATTGGTGATGAAGACTATAGTGATGGTGATGATAGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTGTAGTGATGGTGATGAGGTGAGACTATCGTGATGGTGATGATAATGGTGAAGACTATAGTGATGTTGATGTCGGTGGTGAAGACTGTAGTGATGGTGATGATAGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTGTAGTGATGGTGATGATGGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTATAGTGATGATGGTGAAGACTGTAGTGATGGTGATGATAGTGGTGAAGACTGTAGTGATGTTAATGGTGAAGGCTATAGTGATGTTGATGGTGGTGAAGACTGTAGCAATGGTTATGATGTTGGTGAAGACAATAGTGATGGTGATGATGGTGAAGACTATAGTGATGGTGATGATGGTGGTGAAGACTGTAGTGATGGTGATGATAGTGGTGAGGACTGTTAGTGATGATAGTGGTGAAGACTGTAGTGATGATGATGGTGAAGACTATAATGATGATGGTGAAGACCGCCGTGATGGTGATGATGGTGAAGACTGTAGCAATGATGATGGTGAAGACTATAGTGATGTTGAGTTGGTGGTGAAGACTGTAGCGATGGTGATGATGATGGTGAAGACTATAGTGATGATGATGTTGAAGACTATAGTGATGATGATGGTGAAGACCGCCGTGATGGTGATGATGGTGAAGACTGTAGCGATGATGATGGTGAAGACTATAGTGATGCTGATGTTGGTGGTGAAGACTGTAGTGATGGTGATGATGATGGTGAAGACTATAGTGATGATGATGGTGAAGACTATAGTGATGATGATGTGAAGACCGCCGTGATGGTGATGATGGTGAAGACTGTAGCGATGATGATGGTGAAGACTATAGTGATGTTGATGTTGG\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=1173;END=818868;SUPPORT=12;COVERAGE=13,12,12,12,12;STRAND=+-;AF=1;STDEV_LEN=90.396;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:33:0:12", + "chr16\t824382\tSniffles2.INS.2BSF\tN\tTAGGCCCACGACGGCCAGCAGCGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGGAGCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=150;END=824382;SUPPORT=2;COVERAGE=3,3,3,3,2;STRAND=-;AF=0.667;STDEV_LEN=0.707;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:4:1:2", + "chr16\t824874\tSniffles2.INS.2DSF\tN\tCGTCCCGTCCGCGGCACCACCGTCCCATCTGTGGCACCAT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=40;END=824874;SUPPORT=2;COVERAGE=3,2,2,2,2;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:5:0:2", + "chr16\t828906\tSniffles2.DEL.55SF\tgcccactggggcccacatcccgcccactgggaccgacatccc\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-42;END=828948;SUPPORT=2;COVERAGE=2,2,2,2,2;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t1/1:5:0:2", + "chr16\t886663\tSniffles2.INS.30SF\tN\tCCACCCTAGGCCCCCGGCGTTCCCCAGGCCCCTCCCACCCTAGGCCCCCGGCGTTCCCCAGGCCCCTCCCACCCTAGGCCCCCGGCGTTCCCCAGGCCCCTCCCACCCTAGGCCCCGGCGTTCCCCAGGCCCCT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=133;END=886663;SUPPORT=10;COVERAGE=10,10,10,10,11;STRAND=+-;AF=1;STDEV_LEN=0.983;STDEV_POS=48.673;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:27:0:10", + "chr16\t894215\tSniffles2.INS.31SF\tN\tCTGGCTGTCCGCCCACCCATCCCCTGTCCACCGGACCGTCCGCCCACCCGTCCCCATGTCCATCAGACCGTCCGTCCACCTGTCCCCCTGTCCCCTGTCCACCGGACCATTCGCCCACCCATCCCCCTGTCCACCTGGCCATCCGCCCACCTGTCTCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCACTGGACTGTCCGCCCACCTGTCCCCCTGTCCCCTGTCCACCGGACCGTCTGCCCACCCGTCCCCCTGTCCACCTGGCCATCCGCCCACCCATCCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCAGGTCCCCCTGTCCAGCGGACCGTCCACCCACCCGTCCCCCTGTCCACTGGACCGTCCGCCCACCTGTCCCCCTGTCCACCTGGCAGTGCGCCCACCCATCCCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCAGCGGACCGTCCACCCACCT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=521;END=894215;SUPPORT=17;COVERAGE=17,17,17,17,17;STRAND=+-;AF=1;STDEV_LEN=57.393;STDEV_POS=5.5;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:47:0:17", + "chr16\t895843\tSniffles2.INS.33SF\tN\tACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCATGGTCCACAGACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCACGGTCCACAGACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCACGGTCCACAGCCACACGCAGGCTGCACGGTCCACAGACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCACGGTCCACACACACGCCTCGGAGGGGTTGTGAGGCTCAGCCAT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=295;END=895843;SUPPORT=10;COVERAGE=17,16,16,16,14;STRAND=+-;AF=0.625;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:32:6:10", "chr16\t896059\tSniffles2.INS.32SF\tN\tGCAGGCTGCACGGTCCACAGACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=58;END=896059;SUPPORT=6;COVERAGE=17,16,16,16,14;STRAND=+-;AF=0.375;STDEV_LEN=0.577;STDEV_POS=110.531;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:32:10:6", - "chr16\t903595\tSniffles2.INS.34SF\tN\tGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTATCTCTGCTGTGTGGTGGTGACCTTTGCACTGCCCGTGGGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCCGTCTCTGCTGTGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCCACAGGACGCCTGTCTCTGCTGTGTGGTGGTGACCTTTGCACTGCCCGTGGGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCTGTCTCTGCTGTGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCCGTCTCTGCTGCGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=600;END=903595;SUPPORT=6;COVERAGE=8,8,8,8,8;STRAND=+-;AF=0.750;STDEV_LEN=0.577;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:3:2:6", - "chr16\t949510\tSniffles2.DEL.5ASF\taatgacagagtcagccaacgacagagtcagagccaacgacagagtcagagacaatgacagagtcagagacaacgacagagtcagagacgacagagtcagagacgacagagtcagagccaatgacagagtcagccaatgacagagtcagagccaacgacagagtcagccaatgacagagtcagagacaacgacagagtcagagacaacgacagagtcagagacgacagagtcagagacgacagagtcagagccaatgacagagtcagccaatgacagagtcagagccaacgacagagtcagccaatgacagagtcagagacaacgacagagttagagacaacgacagagtcagccaaggacagcgtcagccaacgacagaatcagagacaacgacagagtcagccaacgacagagtcagagccaatgagagtcagagccaacgacagagtcagagacgacagagtcagagccaacgacagagtcagccaacgacagagtcagagccaacgacagagtcagccaacgacagagtcagagccaacgacagagtcagccaacgacagagtcagagacaacgacagagtcagagccaacgacagagtcagagacgaaagactcagagccaatgacagagtcagagccaatgacagagtcagccaacgacagagtcagagccaacgacagagtcagccaatgacagagtcagagacagcgacagagttagagacaat\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-731;END=950241;SUPPORT=15;COVERAGE=22,22,22,23,22;STRAND=+-;AF=0.682;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/1:28:7:15", - "chr16\t950488\tSniffles2.INS.36SF\tN\tCAACGACAGAGTCAGAGACAACGACAGAGTCAGAGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=36;END=950488;SUPPORT=14;COVERAGE=22,23,23,23,23;STRAND=+-;AF=0.609;STDEV_LEN=0.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:50:9:14", - "chr16\t952880\tSniffles2.DEL.5CSF\ttccacacagacacccaccccaaaccagcctcctacacgtccacacagacacccaccccaaaccagcctcctgcacgtccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacacg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-178;END=953058;SUPPORT=16;COVERAGE=24,24,25,25,25;STRAND=+-;AF=0.640;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/1:45:9:16", - "chr16\t953293\tSniffles2.DEL.5DSF\tcaaaccagcctcctacacgtccacacagacacccaccccaaaccagcttcctacacgttcacacagacacgg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-72;END=953365;SUPPORT=15;COVERAGE=24,25,25,25,25;STRAND=+-;AF=0.600;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/1:58:10:15", - "chr16\t953349\tSniffles2.DEL.60SF\tgttcacacagacacggaccccaaaccagcctcctacacgtccacacagacacccaccccaaaccagcctcctacacgttcacacagacacggaccccacaccagcctcctacacgtccacacagacacccaccccaaaccagcctcctgcacgtccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacacgtccacacagacacccactccaaaccagcctcctacacgtccacacagacaccccaaaccagcctcctacatgtccacacagacacccaccccaaaccagcctcctacatgtccacacagacacccaccccaaaccagcctcctacatgtccacacagacacccaccccaaaccagcctcctacat\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-440;END=953789;SUPPORT=9;COVERAGE=25,25,25,25,25;STRAND=+-;AF=0.360;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/1:45:16:9", - "chr16\t953507\tSniffles2.DEL.5ESF\tacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacacgtccacacag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-106;END=953613;SUPPORT=15;COVERAGE=25,25,25,25,25;STRAND=+-;AF=0.600;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/1:58:10:15", - "chr16\t954972\tSniffles2.INS.37SF\tN\tCTAAGCGAACCAGACACGTTACATAAAATGCGTGCCTGCAGCAGACGGGGTCTGTGCACACACACACACACAACCAGACACGTTACATAAAATGCGTGCCTGCTGCAGACGTGGTGTGTGTATACACACACACACATCTAAGTAAACCAGACACGTTACATAAAATGCGTGCCCGCAGCAGACGTAGTGTGTGCATCCACACACACACATCTAAGTAAACTAGACACGTTACATAAAATGCGTGCCCACAGCAGACGCGGTGTGTGCGTACACACACACACATCTAAGTAAACTAGACACGTTACATAAAATGCGTGCCCGCAGCAGACGCAGTGTGTGCATACACATCTAAGTG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=355;END=954972;SUPPORT=15;COVERAGE=25,24,24,26,26;STRAND=+-;AF=0.625;STDEV_LEN=0.333;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:48:9:15", - "chr16\t955473\tSniffles2.INS.38SF\tN\tACACACACACACACACATCTAAGTGAACCAGACACGTTACATAAAATGCGTGCCTGCAGCAGATGCGGTGTGTGCATACACACACACACATCTAAGTAAACCAGACACGTTACATAAAATGCGTGCCTGCAGCAGACGTAGTGTGTGCATCCACACACACACATCTAAGTAAACTAGACACGTTACATAAAATGCGTGCCCGCAGCAGAGACGGTGTGTGCGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=223;END=955473;SUPPORT=15;COVERAGE=24,26,26,27,27;STRAND=+-;AF=0.577;STDEV_LEN=0.500;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:60:11:15", - "chr16\t955933\tSniffles2.INS.39SF\tN\tCACGGCACCCACCCCACGACGGCTCTCTCACATCCACAGGTCTCCGAGTTCACGTCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=57;END=955933;SUPPORT=12;COVERAGE=26,27,27,29,29;STRAND=+-;AF=0.444;STDEV_LEN=0.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:60:15:12", + "chr16\t903595\tSniffles2.INS.34SF\tN\tGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTATCTCTGCTGTGTGGTGGTGACCTTTGCACTGCCCGTGGGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCCGTCTCTGCTGTGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCCACAGGACGCCTGTCTCTGCTGTGTGGTGGTGACCTTTGCACTGCCCGTGGGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCTGTCTCTGCTGTGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCCGTCTCTGCTGCGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=600;END=903595;SUPPORT=6;COVERAGE=8,8,8,8,8;STRAND=+-;AF=0.75;STDEV_LEN=0.577;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:3:2:6", + "chr16\t949510\tSniffles2.DEL.5ASF\taatgacagagtcagccaacgacagagtcagagccaacgacagagtcagagacaatgacagagtcagagacaacgacagagtcagagacgacagagtcagagacgacagagtcagagccaatgacagagtcagccaatgacagagtcagagccaacgacagagtcagccaatgacagagtcagagacaacgacagagtcagagacaacgacagagtcagagacgacagagtcagagacgacagagtcagagccaatgacagagtcagccaatgacagagtcagagccaacgacagagtcagccaatgacagagtcagagacaacgacagagttagagacaacgacagagtcagccaaggacagcgtcagccaacgacagaatcagagacaacgacagagtcagccaacgacagagtcagagccaatgagagtcagagccaacgacagagtcagagacgacagagtcagagccaacgacagagtcagccaacgacagagtcagagccaacgacagagtcagccaacgacagagtcagagccaacgacagagtcagccaacgacagagtcagagacaacgacagagtcagagccaacgacagagtcagagacgaaagactcagagccaatgacagagtcagagccaatgacagagtcagccaacgacagagtcagagccaacgacagagtcagccaatgacagagtcagagacagcgacagagttagagacaat\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-731;END=950241;SUPPORT=15;COVERAGE=22,22,22,23,22;STRAND=+-;AF=0.682;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:28:7:15", + "chr16\t950488\tSniffles2.INS.36SF\tN\tCAACGACAGAGTCAGAGACAACGACAGAGTCAGAGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=36;END=950488;SUPPORT=14;COVERAGE=22,23,23,23,23;STRAND=+-;AF=0.609;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:50:9:14", + "chr16\t952880\tSniffles2.DEL.5CSF\ttccacacagacacccaccccaaaccagcctcctacacgtccacacagacacccaccccaaaccagcctcctgcacgtccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacacg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-178;END=953058;SUPPORT=16;COVERAGE=24,24,25,25,25;STRAND=+-;AF=0.64;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:45:9:16", + "chr16\t953293\tSniffles2.DEL.5DSF\tcaaaccagcctcctacacgtccacacagacacccaccccaaaccagcttcctacacgttcacacagacacgg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-72;END=953365;SUPPORT=15;COVERAGE=24,25,25,25,25;STRAND=+-;AF=0.6;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:58:10:15", + "chr16\t953349\tSniffles2.DEL.60SF\tgttcacacagacacggaccccaaaccagcctcctacacgtccacacagacacccaccccaaaccagcctcctacacgttcacacagacacggaccccacaccagcctcctacacgtccacacagacacccaccccaaaccagcctcctgcacgtccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacacgtccacacagacacccactccaaaccagcctcctacacgtccacacagacaccccaaaccagcctcctacatgtccacacagacacccaccccaaaccagcctcctacatgtccacacagacacccaccccaaaccagcctcctacatgtccacacagacacccaccccaaaccagcctcctacat\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-440;END=953789;SUPPORT=9;COVERAGE=25,25,25,25,25;STRAND=+-;AF=0.36;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:45:16:9", + "chr16\t953507\tSniffles2.DEL.5ESF\tacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacacgtccacacag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-106;END=953613;SUPPORT=15;COVERAGE=25,25,25,25,25;STRAND=+-;AF=0.6;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:58:10:15", + "chr16\t954972\tSniffles2.INS.37SF\tN\tCTAAGCGAACCAGACACGTTACATAAAATGCGTGCCTGCAGCAGACGGGGTCTGTGCACACACACACACACAACCAGACACGTTACATAAAATGCGTGCCTGCTGCAGACGTGGTGTGTGTATACACACACACACATCTAAGTAAACCAGACACGTTACATAAAATGCGTGCCCGCAGCAGACGTAGTGTGTGCATCCACACACACACATCTAAGTAAACTAGACACGTTACATAAAATGCGTGCCCACAGCAGACGCGGTGTGTGCGTACACACACACACATCTAAGTAAACTAGACACGTTACATAAAATGCGTGCCCGCAGCAGACGCAGTGTGTGCATACACATCTAAGTG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=355;END=954972;SUPPORT=15;COVERAGE=25,24,24,26,26;STRAND=+-;AF=0.625;STDEV_LEN=0.333;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:48:9:15", + "chr16\t955473\tSniffles2.INS.38SF\tN\tACACACACACACACACATCTAAGTGAACCAGACACGTTACATAAAATGCGTGCCTGCAGCAGATGCGGTGTGTGCATACACACACACACATCTAAGTAAACCAGACACGTTACATAAAATGCGTGCCTGCAGCAGACGTAGTGTGTGCATCCACACACACACATCTAAGTAAACTAGACACGTTACATAAAATGCGTGCCCGCAGCAGAGACGGTGTGTGCGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=223;END=955473;SUPPORT=15;COVERAGE=24,26,26,27,27;STRAND=+-;AF=0.577;STDEV_LEN=0.5;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:60:11:15", + "chr16\t955933\tSniffles2.INS.39SF\tN\tCACGGCACCCACCCCACGACGGCTCTCTCACATCCACAGGTCTCCGAGTTCACGTCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=57;END=955933;SUPPORT=12;COVERAGE=26,27,27,29,29;STRAND=+-;AF=0.444;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:60:15:12", "chr16\t956173\tSniffles2.INS.3ASF\tN\tCCCACGACGGCTCTCTCACATCCACAGGTCTCCGAGTTCACGTCTCACGGCGCCCA\t60\tGT\tPRECISE;SVTYPE=INS;SVLEN=57;END=956173;SUPPORT=5;COVERAGE=27,29,29,29,29;STRAND=+-;AF=0.172;STDEV_LEN=0.577;STDEV_POS=10.392;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/0:16:24:5", - "chr16\t960401\tSniffles2.DEL.63SF\tacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacaacactggatcacaacccagacaccatctcatggtgacaacacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacaacacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacaacacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagac\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-864;END=961265;SUPPORT=14;COVERAGE=31,31,31,30,30;STRAND=+-;AF=0.452;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/1:60:17:14", - "chr16\t960535\tSniffles2.DEL.62SF\tcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacaacacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-262;END=960797;SUPPORT=16;COVERAGE=31,31,31,31,30;STRAND=+-;AF=0.516;STDEV_LEN=0.000;STDEV_POS=4.596\tGT:GQ:DR:DV\t0/1:60:15:16", - "chr16\t961793\tSniffles2.DEL.65SF\tacagactcacggtgacagcacgggatcacgacccag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-36;END=961829;SUPPORT=13;COVERAGE=30,30,30,30,30;STRAND=+-;AF=0.433;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/1:60:17:13", - "chr16\t961981\tSniffles2.DEL.66SF\tacagactcacggtgacagcacgggatcaccacccag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-36;END=962017;SUPPORT=12;COVERAGE=30,30,30,30,30;STRAND=+-;AF=0.400;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/1:60:18:12", - "chr16\t1075978\tSniffles2.INS.3DSF\tN\tCCCTCCTCCCCTCCCCCTCCTTTCCCTCCCTCTCTCCCTCTCTCCTCCCCGCCTCCCCATCCCTCTCCCTCTCCCTCCTCTCTCTCTCCCCTACCCTGTCTTTCTCTCTGCCTCCCCGCCTCCCCTTCCCTCTCCCCATACCCTGTCTTTCTCTCTCCCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=160;END=1075978;SUPPORT=5;COVERAGE=8,5,5,5,4;STRAND=+-;AF=1.000;STDEV_LEN=1.155;STDEV_POS=8.737;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:13:0:5", - "chr16\t1076128\tSniffles2.DEL.6BSF\tcctccccgcctccccatccctctccctctccctcctctctctctccccctaccctgttttctctctc\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-67;END=1076195;SUPPORT=2;COVERAGE=6,5,4,4,3;STRAND=+;AF=0.500;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/1:14:2:2", - "chr16\t1190923\tSniffles2.INS.40SF\tN\tGGGTTTCGCTGACCCAGCAGGCTGGCCTGGTTGTGTGGCCTCAGGCACACTCGGGGTTTCGGTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTCTGACTCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTCTGACTCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTCTTACTCAGCAGGCTGGCCTGGCTGTGTGGCCTCCGGCACACTCGGGGTCTCTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTTTCGGTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCAGGGTTTTGGTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTTGGGGTCTCTGACCCAGTAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=523;END=1190923;SUPPORT=3;COVERAGE=10,10,10,10,11;STRAND=+;AF=0.300;STDEV_LEN=2.646;STDEV_POS=50.013;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:10:7:3", - "chr16\t1191001\tSniffles2.DEL.6DSF\tcctggctgtgtggcctcaggcacactcggggtctctgacccagcaggctggcctggctgtgtggcctcaggcacactcggggtctctctgactcagcaggctggcctggctgtgtggcctcaggcacactcggggtctctctgactcagcaggctggcctggctgtgtggcctcaggcacactcggggtctctcttactcagcaggctgg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-210;END=1191211;SUPPORT=7;COVERAGE=10,10,11,11,11;STRAND=+-;AF=0.636;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/1:20:4:7", - "chr16\t1204953\tSniffles2.INS.42SF\tN\tGGGCCCCAGATCAGTGCCGGGGAGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGGCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGGCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=418;END=1204953;SUPPORT=8;COVERAGE=17,16,15,15,15;STRAND=+-;AF=0.533;STDEV_LEN=0.816;STDEV_POS=64.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:47:7:8", + "chr16\t960401\tSniffles2.DEL.63SF\tacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacaacactggatcacaacccagacaccatctcatggtgacaacacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacaacacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacaacacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagac\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-864;END=961265;SUPPORT=14;COVERAGE=31,31,31,30,30;STRAND=+-;AF=0.452;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:60:17:14", + "chr16\t960535\tSniffles2.DEL.62SF\tcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacaacacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-262;END=960797;SUPPORT=16;COVERAGE=31,31,31,31,30;STRAND=+-;AF=0.516;STDEV_LEN=0;STDEV_POS=4.596\tGT:GQ:DR:DV\t0/1:60:15:16", + "chr16\t961793\tSniffles2.DEL.65SF\tacagactcacggtgacagcacgggatcacgacccag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-36;END=961829;SUPPORT=13;COVERAGE=30,30,30,30,30;STRAND=+-;AF=0.433;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:60:17:13", + "chr16\t961981\tSniffles2.DEL.66SF\tacagactcacggtgacagcacgggatcaccacccag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-36;END=962017;SUPPORT=12;COVERAGE=30,30,30,30,30;STRAND=+-;AF=0.4;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:60:18:12", + "chr16\t1075978\tSniffles2.INS.3DSF\tN\tCCCTCCTCCCCTCCCCCTCCTTTCCCTCCCTCTCTCCCTCTCTCCTCCCCGCCTCCCCATCCCTCTCCCTCTCCCTCCTCTCTCTCTCCCCTACCCTGTCTTTCTCTCTGCCTCCCCGCCTCCCCTTCCCTCTCCCCATACCCTGTCTTTCTCTCTCCCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=160;END=1075978;SUPPORT=5;COVERAGE=8,5,5,5,4;STRAND=+-;AF=1;STDEV_LEN=1.155;STDEV_POS=8.737;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:13:0:5", + "chr16\t1076128\tSniffles2.DEL.6BSF\tcctccccgcctccccatccctctccctctccctcctctctctctccccctaccctgttttctctctc\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-67;END=1076195;SUPPORT=2;COVERAGE=6,5,4,4,3;STRAND=+;AF=0.5;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:14:2:2", + "chr16\t1190923\tSniffles2.INS.40SF\tN\tGGGTTTCGCTGACCCAGCAGGCTGGCCTGGTTGTGTGGCCTCAGGCACACTCGGGGTTTCGGTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTCTGACTCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTCTGACTCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTCTTACTCAGCAGGCTGGCCTGGCTGTGTGGCCTCCGGCACACTCGGGGTCTCTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTTTCGGTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCAGGGTTTTGGTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTTGGGGTCTCTGACCCAGTAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=523;END=1190923;SUPPORT=3;COVERAGE=10,10,10,10,11;STRAND=+;AF=0.3;STDEV_LEN=2.646;STDEV_POS=50.013;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:10:7:3", + "chr16\t1191001\tSniffles2.DEL.6DSF\tcctggctgtgtggcctcaggcacactcggggtctctgacccagcaggctggcctggctgtgtggcctcaggcacactcggggtctctctgactcagcaggctggcctggctgtgtggcctcaggcacactcggggtctctctgactcagcaggctggcctggctgtgtggcctcaggcacactcggggtctctcttactcagcaggctgg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-210;END=1191211;SUPPORT=7;COVERAGE=10,10,11,11,11;STRAND=+-;AF=0.636;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:20:4:7", + "chr16\t1204953\tSniffles2.INS.42SF\tN\tGGGCCCCAGATCAGTGCCGGGGAGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGGCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGGCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=418;END=1204953;SUPPORT=8;COVERAGE=17,16,15,15,15;STRAND=+-;AF=0.533;STDEV_LEN=0.816;STDEV_POS=64;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:47:7:8", "chr16\t1204961\tSniffles2.INS.41SF\tN\tAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=209;END=1204961;SUPPORT=8;COVERAGE=17,16,15,15,15;STRAND=+-;AF=0.533;STDEV_LEN=0.577;STDEV_POS=91.065;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:47:7:8", - "chr16\t1231101\tSniffles2.INS.43SF\tN\tCCCAGCTCCCCATGGACTCACCCACAGCCCCAGCTCACCCCCAGCCCCAGCCCAGCTCCCCTTGGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=66;END=1231101;SUPPORT=7;COVERAGE=14,14,14,14,14;STRAND=+-;AF=0.500;STDEV_LEN=0.447;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:50:7:7", - "chr16\t1231234\tSniffles2.INS.44SF\tN\tCCCAGCTCCCCATGGACTAGTCCCAGCCCCAGCCCAGCTCCCCATGGTCTCACCCCCAGCCCCAGCCCAGCTCCCCATGGACTAGTCCCATCCCCCGGCCCCAGCTCCCCATGGTCTCACCCCCAGCTCCACCCAGCCCCAGCCCAGCTCCCCATGGACTCACCCCCAGCCCCAGCCCAGCTCCCCATGGACTAGTCGCAGCCCCGGCCCCAGCTCCCCATGGTCTCACCCCCAGCTCCCCATGGACTAGTCCCAGCCCCAGCCCAGCTCCCCATGGTCTCACCCCCAGCCCCAGCCCAGCTCCCCATGGACTAGTCCCAGCCCCCGGCCCCAGCTCCCCATGGTCTCACCCCCAGCTCCAGCCCAGCTCCCCATGGACTAGT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=383;END=1231234;SUPPORT=6;COVERAGE=14,14,14,14,14;STRAND=+-;AF=0.429;STDEV_LEN=0.957;STDEV_POS=61.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:37:8:6", - "chr16\t1248065\tSniffles2.DEL.71SF\tacatatacatgcacatgcacacacacgaatgttcacatgcacacacggacacacatgcacactcacacatgtacacatgtgtgtgcacacacgcacacatatg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-103;END=1248168;SUPPORT=3;COVERAGE=1,4,4,4,5;STRAND=+-;AF=0.750;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/1:1:1:3", - "chr16\t1254908\tSniffles2.DEL.73SF\tccatggggagctggggccgggggctgggactagtccatggggagctgggctggggctgggggtgaga\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-67;END=1254975;SUPPORT=8;COVERAGE=14,14,14,14,14;STRAND=+-;AF=0.571;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/1:37:6:8", - "chr16\t1254975\tSniffles2.INS.47SF\tN\tCCATGGGGAGCTGGGCTGGGGCTGGGACTAGTCCATGGGGAGCTGGGCTGGGGCTGGGACTAGTTCATGGGGAGCTGGGCTGGGGCTGGGACTAGTTCATGGGAGCTGGGCTGGGGCTGGGACTAGTCCATGGGGAGCTGGGCTGGGGCTGGGACTAGTTCATGGGGAGCTGGGCTGGGGCTGGGGGTGAGTCCATGGGGAGCTGGGCTGGGGCTGGGGGTGAGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=225;END=1254975;SUPPORT=6;COVERAGE=14,14,14,14,14;STRAND=+-;AF=0.429;STDEV_LEN=0.577;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:37:8:6", - "chr16\t1258684\tSniffles2.INS.48SF\tN\tTGAGCCCCCTCCCCCACCCTGAGCCCCCTCCCCTGTCTTGAGCCCCTGCTCCATCCTGAGTCCCCTCCCCCACACTGAGCCCCCTCCCCTTTCTTGAGCCCCTCATCCATCCTGAGCCCCTCCTCCATCCTGAGCCCCCTCCCCCATCCTGGGCCCCCTCCCCTTTCTTGAGCCCCCCTCCCCCACCCTGAGCCCCCTCCCCTTTCTTGAGCCCCCTCCCCCACCTGAGCCCCTTCCCCTTTCTTGAGTCCCTCCTCCATCCTGAGCCCCCTCCCCTTTCTTGAGCCCCTCCTCCACCCTCAGCCCCCTCCCCTTTCTTGAGCCCCTCCTCCACCCTCAGCCCCCTCCCCTTTCT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=355;END=1258684;SUPPORT=14;COVERAGE=14,14,14,14,14;STRAND=+-;AF=1.000;STDEV_LEN=37.175;STDEV_POS=1.690;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:39:0:14", - "chr16\t1260690\tSniffles2.INS.49SF\tN\tAGCCCGGAGACCCACGTCCACACACAGCCCGGAGACCCACATCCACACAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=50;END=1260690;SUPPORT=7;COVERAGE=15,15,15,16,16;STRAND=+-;AF=0.467;STDEV_LEN=0.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:47:8:7", - "chr16\t1264730\tSniffles2.DEL.75SF\ttgtgtgtatgcgtgtgcatatgtaaggatgtgtgcg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-36;END=1264766;SUPPORT=6;COVERAGE=15,15,13,12,12;STRAND=+-;AF=0.462;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/1:40:7:6", - "chr16\t1308390\tSniffles2.DEL.76SF\ttgagtgagggagggaatgagtgagggagggaatgag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-36;END=1308426;SUPPORT=11;COVERAGE=12,12,12,12,12;STRAND=+-;AF=0.917;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t1/1:20:1:11", - "chr16\t1345656\tSniffles2.INS.4BSF\tN\tGCAACCCCAGCCTCCCCAGCCTCCCCAGCAACCCCAGCCTCCCCAGCAACCCCAGCCTCCTCA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=63;END=1345656;SUPPORT=14;COVERAGE=26,26,26,25,24;STRAND=+-;AF=0.538;STDEV_LEN=0.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:60:12:14", - "chr16\t1356874\tSniffles2.DEL.78SF\t\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-42;END=1356916;SUPPORT=3;COVERAGE=6,5,5,5,5;STRAND=+-;AF=0.600;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/1:11:2:3" - ], - [ - "##fileformat=VCFv4.2", - "##source=Sniffles2_2.0.7", - "##command=\"/usr/local/bin/sniffles --input test.snf --reference hg38.test.fa -t 4 --tandem-repeats human_GRCh38_no_alt_analysis_set.trf.bed --vcf project.vcf.gz\"" + "chr16\t1231101\tSniffles2.INS.43SF\tN\tCCCAGCTCCCCATGGACTCACCCACAGCCCCAGCTCACCCCCAGCCCCAGCCCAGCTCCCCTTGGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=66;END=1231101;SUPPORT=7;COVERAGE=14,14,14,14,14;STRAND=+-;AF=0.5;STDEV_LEN=0.447;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:50:7:7", + "chr16\t1231234\tSniffles2.INS.44SF\tN\tCCCAGCTCCCCATGGACTAGTCCCAGCCCCAGCCCAGCTCCCCATGGTCTCACCCCCAGCCCCAGCCCAGCTCCCCATGGACTAGTCCCATCCCCCGGCCCCAGCTCCCCATGGTCTCACCCCCAGCTCCACCCAGCCCCAGCCCAGCTCCCCATGGACTCACCCCCAGCCCCAGCCCAGCTCCCCATGGACTAGTCGCAGCCCCGGCCCCAGCTCCCCATGGTCTCACCCCCAGCTCCCCATGGACTAGTCCCAGCCCCAGCCCAGCTCCCCATGGTCTCACCCCCAGCCCCAGCCCAGCTCCCCATGGACTAGTCCCAGCCCCCGGCCCCAGCTCCCCATGGTCTCACCCCCAGCTCCAGCCCAGCTCCCCATGGACTAGT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=383;END=1231234;SUPPORT=6;COVERAGE=14,14,14,14,14;STRAND=+-;AF=0.429;STDEV_LEN=0.957;STDEV_POS=61;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:37:8:6", + "chr16\t1248065\tSniffles2.DEL.71SF\tacatatacatgcacatgcacacacacgaatgttcacatgcacacacggacacacatgcacactcacacatgtacacatgtgtgtgcacacacgcacacatatg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-103;END=1248168;SUPPORT=3;COVERAGE=1,4,4,4,5;STRAND=+-;AF=0.75;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:1:1:3", + "chr16\t1254908\tSniffles2.DEL.73SF\tccatggggagctggggccgggggctgggactagtccatggggagctgggctggggctgggggtgaga\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-67;END=1254975;SUPPORT=8;COVERAGE=14,14,14,14,14;STRAND=+-;AF=0.571;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:37:6:8", + "chr16\t1254975\tSniffles2.INS.47SF\tN\tCCATGGGGAGCTGGGCTGGGGCTGGGACTAGTCCATGGGGAGCTGGGCTGGGGCTGGGACTAGTTCATGGGGAGCTGGGCTGGGGCTGGGACTAGTTCATGGGAGCTGGGCTGGGGCTGGGACTAGTCCATGGGGAGCTGGGCTGGGGCTGGGACTAGTTCATGGGGAGCTGGGCTGGGGCTGGGGGTGAGTCCATGGGGAGCTGGGCTGGGGCTGGGGGTGAGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=225;END=1254975;SUPPORT=6;COVERAGE=14,14,14,14,14;STRAND=+-;AF=0.429;STDEV_LEN=0.577;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:37:8:6", + "chr16\t1258684\tSniffles2.INS.48SF\tN\tTGAGCCCCCTCCCCCACCCTGAGCCCCCTCCCCTGTCTTGAGCCCCTGCTCCATCCTGAGTCCCCTCCCCCACACTGAGCCCCCTCCCCTTTCTTGAGCCCCTCATCCATCCTGAGCCCCTCCTCCATCCTGAGCCCCCTCCCCCATCCTGGGCCCCCTCCCCTTTCTTGAGCCCCCCTCCCCCACCCTGAGCCCCCTCCCCTTTCTTGAGCCCCCTCCCCCACCTGAGCCCCTTCCCCTTTCTTGAGTCCCTCCTCCATCCTGAGCCCCCTCCCCTTTCTTGAGCCCCTCCTCCACCCTCAGCCCCCTCCCCTTTCTTGAGCCCCTCCTCCACCCTCAGCCCCCTCCCCTTTCT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=355;END=1258684;SUPPORT=14;COVERAGE=14,14,14,14,14;STRAND=+-;AF=1;STDEV_LEN=37.175;STDEV_POS=1.69;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:39:0:14", + "chr16\t1260690\tSniffles2.INS.49SF\tN\tAGCCCGGAGACCCACGTCCACACACAGCCCGGAGACCCACATCCACACAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=50;END=1260690;SUPPORT=7;COVERAGE=15,15,15,16,16;STRAND=+-;AF=0.467;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:47:8:7", + "chr16\t1264730\tSniffles2.DEL.75SF\ttgtgtgtatgcgtgtgcatatgtaaggatgtgtgcg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-36;END=1264766;SUPPORT=6;COVERAGE=15,15,13,12,12;STRAND=+-;AF=0.462;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:40:7:6", + "chr16\t1308390\tSniffles2.DEL.76SF\ttgagtgagggagggaatgagtgagggagggaatgag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-36;END=1308426;SUPPORT=11;COVERAGE=12,12,12,12,12;STRAND=+-;AF=0.917;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t1/1:20:1:11" ], [ "##contig=", @@ -1664,7 +1716,6 @@ "##FORMAT=", "##FORMAT=", "##FORMAT=", - "##FILTER=", "##FILTER=", "##FILTER=", "##FILTER=", @@ -1694,78 +1745,83 @@ "##INFO=", "##INFO=", "##INFO=", + "##bcftools_viewVersion=1.20+htslib-1.20" + ], + [ "#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO\tFORMAT\ttest", - "chr16\t81855\tSniffles2.INS.0MF\tN\tCTCGGGAAGCCTCCTGAATGCTCCCCACGCTGGCCCCTTCTTCCCACCACCCTACCTCCGGGAAGGCCTCCTGAATGCTCCCCACGCTGGCCCCTCTTCCCACCACCCTACCTCCGGGAAGCCCTCCTGAATGCTCCCCACGCTGGCCCCTTCTTCCCACCACCCTACCTCCAGGAAGCCCTCCTGAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCTATCTCCGGGAAGGCTCTGAATGCTCCCCACACTGACCCCTTCTTCCCACCACCCTAC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=193;END=81855;SUPPORT=6;COVERAGE=22,23,24,23,23;STRAND=+-;STDEV_LEN=156.968;STDEV_POS=174.334\tGT:GQ:DR:DV:ID\t0/1:38:15:8:Sniffles2.INS.3SF,Sniffles2.INS.1SF,Sniffles2.INS.0SF,Sniffles2.INS.2SF", - "chr16\t153120\tSniffles2.INS.3MF\tN\tACAGTGGGGAGGGGACAGTGGGGAGAGGACAGTAAGGAGGGGACCATGGGGAGGAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=56;END=153120;SUPPORT=23;COVERAGE=22,23,23,23,23;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t1/1:60:0:23:Sniffles2.INS.4SF", - "chr16\t160071\tSniffles2.INS.2MF\tN\tGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGACGGCTTGTGGGACACAGGTTGTGAGAGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTGTGAGGGTGCCCGGGATGGCTTGTGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTGTGAGACGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGAGATGCCCAGGACGGCTTGTGGGGAACAGGCTGTGAGGGTGCCCGGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGATGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGCTGCAAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGATGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCTGGGACGGCTTGTGGGGCACAGGTTGTGAGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=911;END=160071;SUPPORT=25;COVERAGE=28,28,28,30,27;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t1/1:39:3:25:Sniffles2.INS.9SF", - "chr16\t160498\tSniffles2.INS.1MF\tN\tAGATGCCCAGGACGGCTTGTGGGGAACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGTTGTGAGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=92;END=160498;SUPPORT=5;COVERAGE=29,29,29,28,27;STRAND=+-;STDEV_LEN=83.243;STDEV_POS=187.373\tGT:GQ:DR:DV:ID\t1/1:60:1:27:Sniffles2.INS.BSF,Sniffles2.INS.8SF,Sniffles2.INS.5SF,Sniffles2.INS.6SF,Sniffles2.INS.7SF,Sniffles2.INS.ASF", - "chr16\t163110\tSniffles2.DEL.5MF\tcaccctgccgccatgtctctgaccaagacttaggggaccatcattgtgtccatgtgggccaagatctccacgcaggccgacaccatcggcaccgagactctggagaggtgagtgtcagatgggactgccagagggactgggtgggaggccaggtatgtgagtggggacagtggggagcgggcagtggggaggggaccgtggggaggggacagtgagtaggagacagtggggagaggacagtggagaggggacagtgaggaggggaccatgggaaggggaccgtggagtggggacagtgaggaggggaccatagggagggga\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-321;END=163431;SUPPORT=7;COVERAGE=23,22,22,22,22;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t0/1:28:15:7:Sniffles2.DEL.4DSF", - "chr16\t164801\tSniffles2.INS.4MF\tN\tCGGGGTCGCGGGGCGGGCGGGTCGCGGGGCGGGGTCGCGGGGGCGGGCGAGGTC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=54;END=164801;SUPPORT=8;COVERAGE=21,21,21,21,21;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t0/1:43:13:8:Sniffles2.INS.CSF", - "chr16\t182789\tSniffles2.INS.6MF\tN\tTGAAACACCGTCTCTACTAAAAATACAAAAATTAGCCAGGCATAGTGGCGGGCGCCTGTAATCCCAGCTGTTCGGGAGGCTGAGGCAGGACAATCACTTAAACCAGGGAAGCAGAGGTTGCAGTGAGCTGAGATCGAGCCACTGCACTCCAGCCTGGGCGACAGACCGAGACTGTCTCAAAAAAAAGACCGGGCACGGTGGCTCACGCCTGTAATCCCACCACTTTGGGAGGCTGAGGCGGGCTGATCACGATGTCAGGAGATCTAGACCATCCTGGCCAACATGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=286;END=182789;SUPPORT=12;COVERAGE=13,12,12,12,12;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t1/1:33:0:12:Sniffles2.INS.DSF", - "chr16\t186052\tSniffles2.DEL.12MF\tggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacgggg\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-646;END=186698;SUPPORT=11;COVERAGE=11,11,11,11,11;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t1/1:30:0:11:Sniffles2.DEL.4ESF", - "chr16\t362990\tSniffles2.INS.9MF\tN\tGACTTAGCACCGGGGGGTCTCGGGCTGCGGCTGCTCTCCCA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=42;END=362990;SUPPORT=3;COVERAGE=7,6,6,6,5;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t0/1:21:3:3:Sniffles2.INS.FSF", - "chr16\t370391\tSniffles2.INS.8MF\tN\tCTACCCTGCCCCGGCTCTCACCCCCTACCCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCGGCTCTCACCCCCTACCCCGGCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCGCTACCCTGCCCCCGGCTCTCACCGCTACCCCCCGGCTCTCACCCGCTACCCCGCCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCCGGCCCCCCGGCTCTCACCTCCTACCCGGCCCCGGCTCTCACCCGCTCCCCCGGCCCCCGGCTCTCACCCGCTCACCCCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCTCGGCTCTCACCCCCTACCCCGGCCCCGGCTCTCACCCCCTACCCCTGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCCGGCTCTCACCCGCTACCCCGGCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGGCTCTCACTCC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=736;END=370391;SUPPORT=7;COVERAGE=7,7,7,7,7;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t1/1:19:0:7:Sniffles2.INS.10SF", - "chr16\t378412\tSniffles2.INS.7MF\tN\tGCCATCGCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCTGACTGCCATCGCCACCCACACTGCCATCCCCACCCGCACTGCCATCGCCACCCTGACTGCCATCGCCACCCACAATGCCATCCCCACCCGCACTGCCATCGCCACCCGCACTGCCATCCCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCACACTGCCATC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=138;END=378412;SUPPORT=8;COVERAGE=17,18,18,18,18;STRAND=+-;STDEV_LEN=144.250;STDEV_POS=147.785\tGT:GQ:DR:DV:ID\t0/1:3:13:4:Sniffles2.INS.12SF,Sniffles2.INS.11SF", - "chr16\t397717\tSniffles2.INS.AMF\tN\tTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGTGGGGGTGGGGGTGTGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGTGAGGGAGTCGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGTGAGGGAGTCGGGGGGTGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGGC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=491;END=397717;SUPPORT=3;COVERAGE=3,3,3,3,3;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t1/1:8:0:3:Sniffles2.INS.13SF", - "chr16\t504280\tSniffles2.INS.10MF\tN\tTCCATCTCCTCCTGTACCCCCTCACCTCCTTGTGCACCCCCTCACCTCCTGTACCCCCTCACCTCCTCTGTATACCACCTCCTCCTGTACCCCCTCACCTCCTCTTGCACCCCCCTTGCCTCCTGTACCCCCTCACCTCCTTGTGCACCCCCTCACCTCCTGTACCCCCTCACCTCCTCCTGTACCCGCCTCACCTCCTCCTGCACTCCCATCTCCCCTGTACCCCCTCACCTCCCTTGTGCACCCCCTCACCTCCTGTACCCCCTCACTCCTCCTCTGTACCCCTCACCTCCTCCTGTA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=331;END=504280;SUPPORT=4;COVERAGE=4,4,4,4,4;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t1/1:11:0:4:Sniffles2.INS.14SF", - "chr16\t507831\tSniffles2.INS.11MF\tN\tTTCAGTATCATCTGCCCGTTCTGAGCCATTTGCTCTCTAGCCCTACCATACAGCTGCCATCCTAAGAGTACGTTTCCCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=81;END=507831;SUPPORT=4;COVERAGE=5,5,5,5,7;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t1/1:1:1:4:Sniffles2.INS.15SF", - "chr16\t534179\tSniffles2.INS.FMF\tN\tGGGCCGTGGTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACGGGGCCGTGGTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACGGGGCCGTGGTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=162;END=534179;SUPPORT=5;COVERAGE=5,5,5,5,4;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t1/1:13:0:5:Sniffles2.INS.16SF", - "chr16\t544781\tSniffles2.INS.DMF\tN\tCGTCTCCCCCACGTCGCCTCCCCCCACGTCGCCTCCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCTCACGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGTCGC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=344;END=544781;SUPPORT=8;COVERAGE=8,8,8,8,8;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t1/1:22:0:8:Sniffles2.INS.17SF", - "chr16\t550769\tSniffles2.INS.CMF\tN\tCGGTGAGGGTCCCCGGTCGGTGAGGGCGCCCCGTCAGTGAGGGTCCCGGTCAGTGAGGGCCCCGGTCGGTGAGGGTCCCCGGTCGGTGAGGGCCCCTGTCGGTGAGGGCCCCGGTCGGTGAGGGACCCGGTCGGTGAGGGCCCCCTGTCGGTGAGGGTCCCCTGTCGGTGAGGGCCCCGGTCGGTGAGGGCCCCGGTCGGTGAGGGTCCCCTGTCGGTGAGGGTCCCCTGTCGGTGAGGGTCCCGGTCGGTGAGGGCCCCGGTCGGTGAGGGTGCCCCGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=280;END=550769;SUPPORT=13;COVERAGE=13,13,13,13,13;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t1/1:36:0:13:Sniffles2.INS.18SF", - "chr16\t553057\tSniffles2.INS.EMF\tN\tTGCCCCCCACCCCTGCACAGGTGCCCCCTCCCCTACCCCGCTGCACCCACACCCAACTCGTGCCCCCCCACCCCTGCACAGGTGCCCCCTCCCCTACCCCGCTGCACCCACACCCAACTCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=121;END=553057;SUPPORT=6;COVERAGE=12,11,11,11,10;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t0/1:33:5:6:Sniffles2.INS.19SF", - "chr16\t571110\tSniffles2.INS.BMF\tN\tTGGCTAGCCTGTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTGTGTGTGTCTGGCTAGCCTGGTGCCCGTGTGTGTGTGTATGTGTGTGTGTGTGTGTGTGTCTGGCTAGCTGGCGCCCGTGGCTAGCCTGGTGCCCGTGTGTGTGTGTATGTATGTGTCTGGCTAGCCTGGTGCCCGTGGCTAGCCTGGTGCCCGTGTGTGTGTGTGTGGGGGGGGCTAGCCTTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTCTGGCTAGCGTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTGTGTGTGCTAGCCTGGCGCCCGTGTGTGTGTGTGTGTGTGTCTGGCTAGCCTGGCACCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=239;END=571110;SUPPORT=8;COVERAGE=18,17,16,16,18;STRAND=+-;STDEV_LEN=168.291;STDEV_POS=0.000\tGT:GQ:DR:DV:ID\t1/1:44:0:16:Sniffles2.INS.1BSF,Sniffles2.INS.1ASF", - "chr16\t579380\tSniffles2.DEL.13MF\tcagagaagagacagacacacagccccgaaggtggtgcaggcacaggccctagaggtgccccgggcccagagactagagatgccccgggcccggagactagaggtgccccgggcccggaga\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-120;END=579500;SUPPORT=11;COVERAGE=11,11,11,11,10;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t1/1:30:0:11:Sniffles2.DEL.4FSF", - "chr16\t585059\tSniffles2.DEL.16MF\tcccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctccccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctccccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctc\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-156;END=585215;SUPPORT=6;COVERAGE=6,6,6,6,6;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t1/1:16:0:6:Sniffles2.DEL.50SF", - "chr16\t587440\tSniffles2.INS.14MF\tN\tTCCCTCCCTTCACTGGGCCTGCTGCCCCAGAGTCCA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=36;END=587440;SUPPORT=5;COVERAGE=5,5,5,5,5;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t1/1:13:0:5:Sniffles2.INS.1CSF", - "chr16\t611801\tSniffles2.DEL.18MF\tgggacagccgccttcgcctgtagaatcaagagcagggacagccgccctggcctgtagaatcaagagcacgggacagccgccctggcctgtagaatcaagagcacgggacagccgccctggcctgtagaatcaagagcagggacagccgccctggcctgtagaatcaagagcaagggacagccgccctggcctgtagaatcaagagcaagggacagccgcctttgcctgtagaatcaagagcag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-243;END=612044;SUPPORT=4;COVERAGE=3,4,4,4,4;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t1/1:11:0:4:Sniffles2.DEL.51SF", - "chr16\t631728\tSniffles2.DEL.17MF\tcttctcccaccccttcactgcctctccttccatcctctcctcccaccctctcctcccatccactcctcccatccacttcttccatcct\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-88;END=631816;SUPPORT=17;COVERAGE=17,17,17,17,16;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t1/1:47:0:17:Sniffles2.DEL.52SF", - "chr16\t660943\tSniffles2.INS.15MF\tN\tCCCCCTGTTCGGCCCCTCCCCAGGCCCCCCCCCGCCCGGCCTCAGGCCCCGCCCCCTGTTCGGCCCCTCCCCAGGCCCGGCCTCAGGCCCCGCCCCCTGTTCGGCCCCTCCCCAG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=115;END=660943;SUPPORT=17;COVERAGE=16,16,15,16,16;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t1/1:47:0:17:Sniffles2.INS.1FSF", - "chr16\t665215\tSniffles2.DEL.1EMF\tcctcagtctgcagcctgctagggacgcacggccacactcctgtctttcag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-50;END=665265;SUPPORT=22;COVERAGE=19,21,22,22,21;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t1/1:60:0:22:Sniffles2.DEL.53SF", - "chr16\t696679\tSniffles2.INS.19MF\tN\tCCCACCCCAAAGCCACCATCCGCTCCCACCTCCATAGGGTTGCTGCTGCCCGCCCCTGCCCCCCAGCCCTGTCCCCCCCACCACCCAGCCTGGGCGCACACCCCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=105;END=696679;SUPPORT=10;COVERAGE=11,10,10,10,10;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t1/1:27:0:10:Sniffles2.INS.20SF", - "chr16\t746237\tSniffles2.DEL.23MF\tgaggtgggttcactgcgggtctgcctggctgggcagcaggagaggaggtgggttcactgcgggtctgcctggctgggcagcaggagaggaggtgggttcactgcaggtctgtctggctgggcagcaggaggggagaggtggggtcactgcgggtctgcagggctgcaggaggggagaggtggggtcactgcaggtctgtctggctgggcagcaggagaggaggtgggttcactgcaggtctgtctgggcgggctgcaggagaggaggtggggtcactgcgggtctgtctgggcgggctgcaggagag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-307;END=746544;SUPPORT=7;COVERAGE=13,13,13,13,11;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t0/1:40:6:7:Sniffles2.DEL.54SF", - "chr16\t760502\tSniffles2.INS.1BMF\tN\tAGCCATGAAACCTGGGCCCGGGCTCCCACTCACACCCCACCCCCACCCAGGGCAGCCGTGAAACCTGGGCCCTGGGCTCCCACCCACGCCCCACACCCACCCAGGGC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=107;END=760502;SUPPORT=16;COVERAGE=16,16,16,16,17;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t1/1:44:0:16:Sniffles2.INS.21SF", - "chr16\t763776\tSniffles2.INS.1AMF\tN\tGCATCCCATCCCCCGTCCCCTCCCCCACACCCCTCCCCCACCCCCACGTCCCCTCCCCACCCCTCCCCCACACCCTCCCCCACCCCTCCCCATGTCCCCTCCCCTACCTCCTCCCCCCGCATCCCCTCCCCCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=133;END=763776;SUPPORT=20;COVERAGE=19,19,20,20,20;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t1/1:55:0:20:Sniffles2.INS.22SF", - "chr16\t767795\tSniffles2.INS.1CMF\tN\tGGTGTGGAGGGGGGCGCGTGGGGGTGTGTGGGGGGGGGCACGTGGAGGGGGCGTGTGGGGGGGTGCGTGGAGGAGGGGCGCGTGGAGGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=91;END=767795;SUPPORT=4;COVERAGE=15,15,15,15,14;STRAND=+-;STDEV_LEN=33.536;STDEV_POS=181.917\tGT:GQ:DR:DV:ID\t0/1:9:11:4:Sniffles2.INS.26SF,Sniffles2.INS.25SF,Sniffles2.INS.23SF,Sniffles2.INS.24SF", - "chr16\t769171\tSniffles2.INS.1DMF\tN\tCCCCGGCCCCGGCCCCAGCCCCGGCCCCACCCCGGCCCCAGCCCCAGCCCCAGCCCCAGCCCCACCCCCGGCCCCAGCCCCAGCCCCAGCCCCAGCCCCGGCCCCACCCCCACCCCCGGCCCCGGCCCCGGCCCCACCCCCGGCCCCGGCCCCGGCCCCACCCCCGGCCCCGGCCCCACCCCCGGCCCCGGCCCCAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=197;END=769171;SUPPORT=6;COVERAGE=14,13,13,13,13;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t0/1:40:7:6:Sniffles2.INS.27SF", - "chr16\t795520\tSniffles2.INS.1FMF\tN\tCCCCCGTGCTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCTGTGCTGCCCGTGTGGCTGCCCCCGGCCCCGCGCCCTTCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=354;END=795520;SUPPORT=6;COVERAGE=13,13,13,13,13;STRAND=+-;STDEV_LEN=377.595;STDEV_POS=104.652\tGT:GQ:DR:DV:ID\t0/1:27:8:5:Sniffles2.INS.28SF,Sniffles2.INS.29SF", - "chr16\t818868\tSniffles2.INS.20MF\tN\tTGGTGAAGACTGTAGTGATGGTGATGATGGTGAAGACTGTAGTGATGATGGTGGTGAAGACTGTAGTGATGTTGATATTGGTGATGAAGACTATAGTGATAGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTAGTGATGGTGATGATGATGGTGAAGACTGTAGTGATGGTGATGATGGTGAAGACTGTAGCGATGATGGTGAACACTGTAGTGATGTTGATATTGGTGATGAAGACTATAGTGATGGTGATGATAGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTGTAGTGATGGTGATGAGGTGAGACTATCGTGATGGTGATGATAATGGTGAAGACTATAGTGATGTTGATGTCGGTGGTGAAGACTGTAGTGATGGTGATGATAGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTGTAGTGATGGTGATGATGGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTATAGTGATGATGGTGAAGACTGTAGTGATGGTGATGATAGTGGTGAAGACTGTAGTGATGTTAATGGTGAAGGCTATAGTGATGTTGATGGTGGTGAAGACTGTAGCAATGGTTATGATGTTGGTGAAGACAATAGTGATGGTGATGATGGTGAAGACTATAGTGATGGTGATGATGGTGGTGAAGACTGTAGTGATGGTGATGATAGTGGTGAGGACTGTTAGTGATGATAGTGGTGAAGACTGTAGTGATGATGATGGTGAAGACTATAATGATGATGGTGAAGACCGCCGTGATGGTGATGATGGTGAAGACTGTAGCAATGATGATGGTGAAGACTATAGTGATGTTGAGTTGGTGGTGAAGACTGTAGCGATGGTGATGATGATGGTGAAGACTATAGTGATGATGATGTTGAAGACTATAGTGATGATGATGGTGAAGACCGCCGTGATGGTGATGATGGTGAAGACTGTAGCGATGATGATGGTGAAGACTATAGTGATGCTGATGTTGGTGGTGAAGACTGTAGTGATGGTGATGATGATGGTGAAGACTATAGTGATGATGATGGTGAAGACTATAGTGATGATGATGTGAAGACCGCCGTGATGGTGATGATGGTGAAGACTGTAGCGATGATGATGGTGAAGACTATAGTGATGTTGATGTTGG\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=1173;END=818868;SUPPORT=12;COVERAGE=13,12,12,12,12;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t1/1:33:0:12:Sniffles2.INS.2ASF", - "chr16\t824382\tSniffles2.INS.22MF\tN\tTAGGCCCACGACGGCCAGCAGCGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGGAGCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=150;END=824382;SUPPORT=2;COVERAGE=3,3,3,3,2;STRAND=+-;STDEV_LEN=228.983;STDEV_POS=284.056\tGT:GQ:DR:DV:ID\t1/1:5:0:2:Sniffles2.INS.2BSF,Sniffles2.INS.2DSF,Sniffles2.INS.2CSF", - "chr16\t828906\tSniffles2.DEL.28MF\tgcccactggggcccacatcccgcccactgggaccgacatccc\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-42;END=828948;SUPPORT=2;COVERAGE=2,2,2,2,2;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t1/1:5:0:2:Sniffles2.DEL.55SF", - "chr16\t886759\tSniffles2.INS.21MF\tN\tCCCAGGCCCCTCCCACCCTAGGCCCCCGGCGTT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=83;END=886759;SUPPORT=6;COVERAGE=10,10,10,10,11;STRAND=+-;STDEV_LEN=70.711;STDEV_POS=135.765\tGT:GQ:DR:DV:ID\t1/1:27:0:10:Sniffles2.INS.30SF,Sniffles2.INS.2FSF", - "chr16\t894215\tSniffles2.INS.24MF\tN\tCTGGCTGTCCGCCCACCCATCCCCTGTCCACCGGACCGTCCGCCCACCCGTCCCCATGTCCATCAGACCGTCCGTCCACCTGTCCCCCTGTCCCCTGTCCACCGGACCATTCGCCCACCCATCCCCCTGTCCACCTGGCCATCCGCCCACCTGTCTCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCACTGGACTGTCCGCCCACCTGTCCCCCTGTCCCCTGTCCACCGGACCGTCTGCCCACCCGTCCCCCTGTCCACCTGGCCATCCGCCCACCCATCCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCAGGTCCCCCTGTCCAGCGGACCGTCCACCCACCCGTCCCCCTGTCCACTGGACCGTCCGCCCACCTGTCCCCCTGTCCACCTGGCAGTGCGCCCACCCATCCCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCAGCGGACCGTCCACCCACCT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=521;END=894215;SUPPORT=17;COVERAGE=17,17,17,17,17;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t1/1:47:0:17:Sniffles2.INS.31SF", - "chr16\t895951\tSniffles2.INS.25MF\tN\tGCAGGCTGCACGGTCCACAGACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=176;END=895951;SUPPORT=8;COVERAGE=17,16,16,16,14;STRAND=+-;STDEV_LEN=167.584;STDEV_POS=152.735\tGT:GQ:DR:DV:ID\t0/1:32:10:6:Sniffles2.INS.33SF,Sniffles2.INS.32SF", - "chr16\t903595\tSniffles2.INS.27MF\tN\tGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTATCTCTGCTGTGTGGTGGTGACCTTTGCACTGCCCGTGGGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCCGTCTCTGCTGTGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCCACAGGACGCCTGTCTCTGCTGTGTGGTGGTGACCTTTGCACTGCCCGTGGGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCTGTCTCTGCTGTGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCCGTCTCTGCTGCGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=600;END=903595;SUPPORT=6;COVERAGE=8,8,8,8,8;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t0/1:3:2:6:Sniffles2.INS.34SF", - "chr16\t949510\tSniffles2.DEL.2AMF\taatgacagagtcagccaacgacagagtcagagccaacgacagagtcagagacaatgacagagtcagagacaacgacagagtcagagacgacagagtcagagacgacagagtcagagccaatgacagagtcagccaatgacagagtcagagccaacgacagagtcagccaatgacagagtcagagacaacgacagagtcagagacaacgacagagtcagagacgacagagtcagagacgacagagtcagagccaatgacagagtcagccaatgacagagtcagagccaacgacagagtcagccaatgacagagtcagagacaacgacagagttagagacaacgacagagtcagccaaggacagcgtcagccaacgacagaatcagagacaacgacagagtcagccaacgacagagtcagagccaatgagagtcagagccaacgacagagtcagagacgacagagtcagagccaacgacagagtcagccaacgacagagtcagagccaacgacagagtcagccaacgacagagtcagagccaacgacagagtcagccaacgacagagtcagagacaacgacagagtcagagccaacgacagagtcagagacgaaagactcagagccaatgacagagtcagagccaatgacagagtcagccaacgacagagtcagagccaacgacagagtcagccaatgacagagtcagagacagcgacagagttagagacaat\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-731;END=950241;SUPPORT=15;COVERAGE=22,22,22,23,22;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t0/1:28:7:15:Sniffles2.DEL.5ASF", - "chr16\t950488\tSniffles2.INS.26MF\tN\tCAACGACAGAGTCAGAGACAACGACAGAGTCAGAGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=36;END=950488;SUPPORT=14;COVERAGE=22,23,23,23,23;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t0/1:50:9:14:Sniffles2.INS.36SF", - "chr16\t953349\tSniffles2.DEL.29MF\tgttcacacagacacggaccccaaaccagcctcctacacgtccacacagacacccaccccaaaccagcctcctacacgttcacacagacacggaccccacaccagcctcctacacgtccacacagacacccaccccaaaccagcctcctgcacgtccacacagacaccccaaaccagcc\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-178;END=953527;SUPPORT=11;COVERAGE=25,25,25,25,25;STRAND=+-;STDEV_LEN=144.533;STDEV_POS=244.489\tGT:GQ:DR:DV:ID\t0/1:45:16:9:Sniffles2.DEL.5CSF,Sniffles2.DEL.5DSF,Sniffles2.DEL.5ESF,Sniffles2.DEL.60SF,Sniffles2.DEL.5FSF", - "chr16\t955703\tSniffles2.INS.2BMF\tN\tACACACACACACACACATCTAAGTGAACCAGACACGTTACATAAAATGCGTGCCTGCAGCAGATGCGGTGTGTGCATACACACACACACATCTAAGTAAACCAGACACGTTACATAAAATGCGTGCCTGCAGCAGACGTAGTGTGTGCATCCACACACACACATCTAAGTAAACTAGACACGTTACATAAAATGCGTGCCCGCAGCAGAGACGGTGTGTGCGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=140;END=955703;SUPPORT=12;COVERAGE=26,26,26,28,28;STRAND=+-;STDEV_LEN=144.379;STDEV_POS=530.418\tGT:GQ:DR:DV:ID\t0/1:60:15:12:Sniffles2.INS.37SF,Sniffles2.INS.38SF,Sniffles2.INS.39SF,Sniffles2.INS.3ASF", - "chr16\t960423\tSniffles2.DEL.2CMF\tcgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacaacactggatcacaacccagacaccatctcatggtgacaacacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacaacacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-262;END=960685;SUPPORT=10;COVERAGE=31,31,31,31,30;STRAND=+-;STDEV_LEN=397.997;STDEV_POS=71.861\tGT:GQ:DR:DV:ID\t0/1:60:17:14:Sniffles2.DEL.62SF,Sniffles2.DEL.63SF,Sniffles2.DEL.61SF", - "chr16\t961867\tSniffles2.DEL.2DMF\tacagactcacggtgacagcacgggatcacgacccagac\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-38;END=961905;SUPPORT=6;COVERAGE=30,30,30,30,30;STRAND=+-;STDEV_LEN=53.393;STDEV_POS=158.969\tGT:GQ:DR:DV:ID\t0/1:60:18:12:Sniffles2.DEL.65SF,Sniffles2.DEL.66SF,Sniffles2.DEL.64SF,Sniffles2.DEL.68SF,Sniffles2.DEL.67SF", - "chr16\t1076026\tSniffles2.INS.2EMF\tN\tCCTACCCTGTCTTTCTCTCTGCCTCCCCGCCTCCCCTTCCCTCTCCCCATACCCTGTCTTT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=110;END=1076026;SUPPORT=3;COVERAGE=8,5,5,4,4;STRAND=+-;STDEV_LEN=70.004;STDEV_POS=67.882\tGT:GQ:DR:DV:ID\t1/1:13:0:5:Sniffles2.INS.3DSF,Sniffles2.INS.3CSF", - "chr16\t1076128\tSniffles2.DEL.2FMF\tcctccccgcctccccatccctctccctctccctcctctctctctccccctaccctgttttctctctc\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-67;END=1076195;SUPPORT=2;COVERAGE=6,5,4,4,3;STRAND=+;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t0/1:14:2:2:Sniffles2.DEL.6BSF", - "chr16\t1190923\tSniffles2.INS.30MF\tN\tGGGTTTCGCTGACCCAGCAGGCTGGCCTGGTTGTGTGGCCTCAGGCACACTCGGGGTTTCGGTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTCTGACTCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTCTGACTCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTCTTACTCAGCAGGCTGGCCTGGCTGTGTGGCCTCCGGCACACTCGGGGTCTCTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTTTCGGTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCAGGGTTTTGGTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTTGGGGTCTCTGACCCAGTAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=523;END=1190923;SUPPORT=3;COVERAGE=10,10,10,10,11;STRAND=+;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t0/1:10:7:3:Sniffles2.INS.40SF", - "chr16\t1191001\tSniffles2.DEL.36MF\tcctggctgtgtggcctcaggcacactcggggtctctgacccagcaggctggcctggctgtgtggcctcaggcacactcggggtctctctgactcagcaggctggcctggctgtgtggcctcaggcacactcggggtctctctgactcagcaggctggcctggctgtgtggcctcaggcacactcggggtctctcttactcagcaggctgg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-210;END=1191211;SUPPORT=7;COVERAGE=10,10,11,11,11;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t0/1:20:4:7:Sniffles2.DEL.6DSF", - "chr16\t1204957\tSniffles2.INS.32MF\tN\tAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=313;END=1204957;SUPPORT=8;COVERAGE=17,16,15,15,15;STRAND=+-;STDEV_LEN=147.785;STDEV_POS=5.657\tGT:GQ:DR:DV:ID\t0/1:47:7:8:Sniffles2.INS.41SF,Sniffles2.INS.42SF", - "chr16\t1231167\tSniffles2.INS.33MF\tN\tCCCAGCTCCCCATGGACTCACCCACAGCCCCAGCTCACCCCCAGCCCCAGCCCAGCTCCCCTTGGT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=224;END=1231167;SUPPORT=6;COVERAGE=14,14,14,14,14;STRAND=+-;STDEV_LEN=224.153;STDEV_POS=94.045\tGT:GQ:DR:DV:ID\t0/1:37:8:6:Sniffles2.INS.43SF,Sniffles2.INS.44SF", - "chr16\t1248065\tSniffles2.DEL.38MF\tacatatacatgcacatgcacacacacgaatgttcacatgcacacacggacacacatgcacactcacacatgtacacatgtgtgtgcacacacgcacacatatg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-103;END=1248168;SUPPORT=3;COVERAGE=1,4,4,4,5;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t0/1:1:1:3:Sniffles2.DEL.71SF", - "chr16\t1254916\tSniffles2.DEL.37MF\tagctggggccgggggctgggactagtccatggggagctgggctggggctgggggtgagaccatggggagctgggctggggctgggactagtccatggggagctgggctggggctgggactagttcatggggagctgggctggggctgggggtgagtccatggggagctgggctggggctgggggtgagtccatggggagct\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-201;END=1255117;SUPPORT=4;COVERAGE=14,14,14,14,14;STRAND=+-;STDEV_LEN=190.212;STDEV_POS=12.021\tGT:GQ:DR:DV:ID\t0/1:37:6:8:Sniffles2.DEL.73SF,Sniffles2.DEL.74SF", - "chr16\t1254975\tSniffles2.INS.35MF\tN\tCCATGGGGAGCTGGGCTGGGGCTGGGACTAGTCCATGGGGAGCTGGGCTGGGGCTGGGACTAGTTCATGGGGAGCTGGGCTGGGGCTGGGACTAGTTCATGGGAGCTGGGCTGGGGCTGGGACTAGTCCATGGGGAGCTGGGCTGGGGCTGGGACTAGTTCATGGGGAGCTGGGCTGGGGCTGGGGGTGAGTCCATGGGGAGCTGGGCTGGGGCTGGGGGTGAGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=225;END=1254975;SUPPORT=6;COVERAGE=14,14,14,14,14;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t0/1:37:8:6:Sniffles2.INS.47SF", - "chr16\t1258684\tSniffles2.INS.31MF\tN\tTGAGCCCCCTCCCCCACCCTGAGCCCCCTCCCCTGTCTTGAGCCCCTGCTCCATCCTGAGTCCCCTCCCCCACACTGAGCCCCCTCCCCTTTCTTGAGCCCCTCATCCATCCTGAGCCCCTCCTCCATCCTGAGCCCCCTCCCCCATCCTGGGCCCCCTCCCCTTTCTTGAGCCCCCCTCCCCCACCCTGAGCCCCCTCCCCTTTCTTGAGCCCCCTCCCCCACCTGAGCCCCTTCCCCTTTCTTGAGTCCCTCCTCCATCCTGAGCCCCCTCCCCTTTCTTGAGCCCCTCCTCCACCCTCAGCCCCCTCCCCTTTCTTGAGCCCCTCCTCCACCCTCAGCCCCCTCCCCTTTCT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=355;END=1258684;SUPPORT=14;COVERAGE=14,14,14,14,14;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t1/1:39:0:14:Sniffles2.INS.48SF", - "chr16\t1260690\tSniffles2.INS.34MF\tN\tAGCCCGGAGACCCACGTCCACACACAGCCCGGAGACCCACATCCACACAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=50;END=1260690;SUPPORT=7;COVERAGE=15,15,15,16,16;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t0/1:47:8:7:Sniffles2.INS.49SF", - "chr16\t1264730\tSniffles2.DEL.39MF\ttgtgtgtatgcgtgtgcatatgtaaggatgtgtgcg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-36;END=1264766;SUPPORT=6;COVERAGE=15,15,13,12,12;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t0/1:40:7:6:Sniffles2.DEL.75SF", - "chr16\t1308194\tSniffles2.DEL.3AMF\ttgaatgaatcagtgagggagggaatcagtgagggagggaatgagtgagtgagggagggagggaatgaatgagagagggaatgagtgagggagggaaggaatgaatgagggtgggaatgaatgaatgagggcgggaatgaatgaatgagggcgggaatgagtgagagtga\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-169;END=1308363;SUPPORT=6;COVERAGE=12,12,12,12,12;STRAND=+-;STDEV_LEN=188.090;STDEV_POS=276.479\tGT:GQ:DR:DV:ID\t1/1:20:1:11:Sniffles2.DEL.76SF,Sniffles2.DEL.77SF", - "chr16\t1345656\tSniffles2.INS.3BMF\tN\tGCAACCCCAGCCTCCCCAGCCTCCCCAGCAACCCCAGCCTCCCCAGCAACCCCAGCCTCCTCA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=63;END=1345656;SUPPORT=14;COVERAGE=26,26,26,25,24;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t0/1:60:12:14:Sniffles2.INS.4BSF" + "chr16\t81884\tSniffles2.INS.3SF\tN\tCTCCAGGAAGCCCTCCTGAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTATCTCCGGAAGCCCTCCTGAATGCTCCCCACGCTGGCCCCTTCTTCCCACCACCCTACCTCCGGGAAGGCCTCCTGAATGCTCCCCACGCTGGCCCCTTCTTCCCACCACCCTACCTCCGGGAAGCCCTCCTGAATGCTCCCCACGCTGGCCCCTTCTTCCCACCACCCTACCTCCAGGAAGCCCTCCTGAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTATCTCCGGGAAGGCCTCCTGAATGCTCCCCACACTGACCCCTTCTTCCCACCACCCTACCTCCGGGAAGGCCTCCTGAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTAT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=398;END=81884;SUPPORT=13;COVERAGE=22,23,24,23,23;STRAND=+-;AF=0.542;STDEV_LEN=0;STDEV_POS=62.598;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:60:11:13", + "chr16\t82169\tSniffles2.INS.1SF\tN\tCTCCGGGAAGGCCTCCTGAATGCTCCCCACACTGACCCCTTCTTCCCACCACCCTAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=57;END=82169;SUPPORT=8;COVERAGE=23,23,23,23,23;STRAND=+-;AF=0.348;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:38:15:8", + "chr16\t153120\tSniffles2.INS.4SF\tN\tACAGTGGGGAGGGGACAGTGGGGAGAGGACAGTAAGGAGGGGACCATGGGGAGGAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=56;END=153120;SUPPORT=23;COVERAGE=22,23,23,23,23;STRAND=+-;AF=1;STDEV_LEN=0.48;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:60:0:23", + "chr16\t160071\tSniffles2.INS.9SF\tN\tGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGACGGCTTGTGGGACACAGGTTGTGAGAGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTGTGAGGGTGCCCGGGATGGCTTGTGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTGTGAGACGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGAGATGCCCAGGACGGCTTGTGGGGAACAGGCTGTGAGGGTGCCCGGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGATGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGCTGCAAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGATGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCTGGGACGGCTTGTGGGGCACAGGTTGTGAGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=911;END=160071;SUPPORT=25;COVERAGE=28,28,28,30,27;STRAND=+-;AF=0.893;STDEV_LEN=1.05;STDEV_POS=14.7;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:39:3:25", + "chr16\t160753\tSniffles2.INS.BSF\tN\tGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCAGGATGGCTTGTGGGGCACAGGCTGCAAGAGGTGCCCAGGACGGCTTGTGGGGCACAGGTTGTGAGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=145;END=160753;SUPPORT=27;COVERAGE=30,28,28,27,27;STRAND=+-;AF=0.964;STDEV_LEN=0.352;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:60:1:27", + "chr16\t163110\tSniffles2.DEL.4DSF\tcaccctgccgccatgtctctgaccaagacttaggggaccatcattgtgtccatgtgggccaagatctccacgcaggccgacaccatcggcaccgagactctggagaggtgagtgtcagatgggactgccagagggactgggtgggaggccaggtatgtgagtggggacagtggggagcgggcagtggggaggggaccgtggggaggggacagtgagtaggagacagtggggagaggacagtggagaggggacagtgaggaggggaccatgggaaggggaccgtggagtggggacagtgaggaggggaccatagggagggga\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-321;END=163431;SUPPORT=7;COVERAGE=23,22,22,22,22;STRAND=+-;AF=0.318;STDEV_LEN=0.894;STDEV_POS=10.733;AC=1\tGT:GQ:DR:DV\t0/1:28:15:7", + "chr16\t164801\tSniffles2.INS.CSF\tN\tCGGGGTCGCGGGGCGGGCGGGTCGCGGGGCGGGGTCGCGGGGGCGGGCGAGGTC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=54;END=164801;SUPPORT=8;COVERAGE=21,21,21,21,21;STRAND=+-;AF=0.381;STDEV_LEN=2.16;STDEV_POS=17.972;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:43:13:8", + "chr16\t182789\tSniffles2.INS.DSF\tN\tTGAAACACCGTCTCTACTAAAAATACAAAAATTAGCCAGGCATAGTGGCGGGCGCCTGTAATCCCAGCTGTTCGGGAGGCTGAGGCAGGACAATCACTTAAACCAGGGAAGCAGAGGTTGCAGTGAGCTGAGATCGAGCCACTGCACTCCAGCCTGGGCGACAGACCGAGACTGTCTCAAAAAAAAGACCGGGCACGGTGGCTCACGCCTGTAATCCCACCACTTTGGGAGGCTGAGGCGGGCTGATCACGATGTCAGGAGATCTAGACCATCCTGGCCAACATGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=286;END=182789;SUPPORT=12;COVERAGE=13,12,12,12,12;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:33:0:12", + "chr16\t186052\tSniffles2.DEL.4ESF\tggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacgggg\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-646;END=186698;SUPPORT=11;COVERAGE=11,11,11,11,11;STRAND=+-;AF=1;STDEV_LEN=113.878;STDEV_POS=251.483;AC=2\tGT:GQ:DR:DV\t1/1:30:0:11", + "chr16\t362990\tSniffles2.INS.FSF\tN\tGACTTAGCACCGGGGGGTCTCGGGCTGCGGCTGCTCTCCCA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=42;END=362990;SUPPORT=3;COVERAGE=7,6,6,6,5;STRAND=+-;AF=0.5;STDEV_LEN=0.577;STDEV_POS=9.238;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:21:3:3", + "chr16\t370391\tSniffles2.INS.10SF\tN\tCTACCCTGCCCCGGCTCTCACCCCCTACCCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCGGCTCTCACCCCCTACCCCGGCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCGCTACCCTGCCCCCGGCTCTCACCGCTACCCCCCGGCTCTCACCCGCTACCCCGCCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCCGGCCCCCCGGCTCTCACCTCCTACCCGGCCCCGGCTCTCACCCGCTCCCCCGGCCCCCGGCTCTCACCCGCTCACCCCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCTCGGCTCTCACCCCCTACCCCGGCCCCGGCTCTCACCCCCTACCCCTGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCCGGCTCTCACCCGCTACCCCGGCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGGCTCTCACTCC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=736;END=370391;SUPPORT=7;COVERAGE=7,7,7,7,7;STRAND=+-;AF=1;STDEV_LEN=65.282;STDEV_POS=1.095;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:19:0:7", + "chr16\t378308\tSniffles2.INS.11SF\tN\tCCACTCTGACTGCCATCGCCACTCTGACTGCCATCC\t60\tGT\tPRECISE;SVTYPE=INS;SVLEN=36;END=378308;SUPPORT=4;COVERAGE=17,17,17,18,18;STRAND=+-;AF=0.235;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:3:13:4", + "chr16\t378517\tSniffles2.INS.12SF\tN\tGCCATCGCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCTGACTGCCATCGCCACCCACACTGCCATCCCCACCCGCACTGCCATCGCCACCCTGACTGCCATCGCCACCCACAATGCCATCCCCACCCGCACTGCCATCGCCACCCGCACTGCCATCCCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCACACTGCCATC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=240;END=378517;SUPPORT=12;COVERAGE=17,18,18,18,18;STRAND=+-;AF=0.667;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:26:6:12", + "chr16\t397717\tSniffles2.INS.13SF\tN\tTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGTGGGGGTGGGGGTGTGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGTGAGGGAGTCGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGTGAGGGAGTCGGGGGGTGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGGC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=491;END=397717;SUPPORT=3;COVERAGE=3,3,3,3,3;STRAND=+-;AF=1;STDEV_LEN=2.309;STDEV_POS=5.196;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:8:0:3", + "chr16\t504280\tSniffles2.INS.14SF\tN\tTCCATCTCCTCCTGTACCCCCTCACCTCCTTGTGCACCCCCTCACCTCCTGTACCCCCTCACCTCCTCTGTATACCACCTCCTCCTGTACCCCCTCACCTCCTCTTGCACCCCCCTTGCCTCCTGTACCCCCTCACCTCCTTGTGCACCCCCTCACCTCCTGTACCCCCTCACCTCCTCCTGTACCCGCCTCACCTCCTCCTGCACTCCCATCTCCCCTGTACCCCCTCACCTCCCTTGTGCACCCCCTCACCTCCTGTACCCCCTCACTCCTCCTCTGTACCCCTCACCTCCTCCTGTA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=331;END=504280;SUPPORT=4;COVERAGE=4,4,4,4,4;STRAND=+-;AF=1;STDEV_LEN=1.414;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:11:0:4", + "chr16\t507831\tSniffles2.INS.15SF\tN\tTTCAGTATCATCTGCCCGTTCTGAGCCATTTGCTCTCTAGCCCTACCATACAGCTGCCATCCTAAGAGTACGTTTCCCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=81;END=507831;SUPPORT=4;COVERAGE=5,5,5,5,7;STRAND=+-;AF=0.8;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:1:1:4", + "chr16\t534179\tSniffles2.INS.16SF\tN\tGGGCCGTGGTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACGGGGCCGTGGTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACGGGGCCGTGGTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=162;END=534179;SUPPORT=5;COVERAGE=5,5,5,5,4;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:13:0:5", + "chr16\t544781\tSniffles2.INS.17SF\tN\tCGTCTCCCCCACGTCGCCTCCCCCCACGTCGCCTCCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCTCACGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGTCGC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=344;END=544781;SUPPORT=8;COVERAGE=8,8,8,8,8;STRAND=+-;AF=1;STDEV_LEN=4.69;STDEV_POS=25.5;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:22:0:8", + "chr16\t550769\tSniffles2.INS.18SF\tN\tCGGTGAGGGTCCCCGGTCGGTGAGGGCGCCCCGTCAGTGAGGGTCCCGGTCAGTGAGGGCCCCGGTCGGTGAGGGTCCCCGGTCGGTGAGGGCCCCTGTCGGTGAGGGCCCCGGTCGGTGAGGGACCCGGTCGGTGAGGGCCCCCTGTCGGTGAGGGTCCCCTGTCGGTGAGGGCCCCGGTCGGTGAGGGCCCCGGTCGGTGAGGGTCCCCTGTCGGTGAGGGTCCCCTGTCGGTGAGGGTCCCGGTCGGTGAGGGCCCCGGTCGGTGAGGGTGCCCCGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=280;END=550769;SUPPORT=13;COVERAGE=13,13,13,13,13;STRAND=+-;AF=1;STDEV_LEN=1;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:36:0:13", + "chr16\t553057\tSniffles2.INS.19SF\tN\tTGCCCCCCACCCCTGCACAGGTGCCCCCTCCCCTACCCCGCTGCACCCACACCCAACTCGTGCCCCCCCACCCCTGCACAGGTGCCCCCTCCCCTACCCCGCTGCACCCACACCCAACTCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=121;END=553057;SUPPORT=6;COVERAGE=12,11,11,11,10;STRAND=+-;AF=0.545;STDEV_LEN=0.577;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:33:5:6", + "chr16\t571110\tSniffles2.INS.1BSF\tN\tTGGCTAGCCTGTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTGTGTGTGTCTGGCTAGCCTGGTGCCCGTGTGTGTGTGTATGTGTGTGTGTGTGTGTGTGTCTGGCTAGCTGGCGCCCGTGGCTAGCCTGGTGCCCGTGTGTGTGTGTATGTATGTGTCTGGCTAGCCTGGTGCCCGTGGCTAGCCTGGTGCCCGTGTGTGTGTGTGTGGGGGGGGCTAGCCTTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTCTGGCTAGCGTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTGTGTGTGCTAGCCTGGCGCCCGTGTGTGTGTGTGTGTGTGTCTGGCTAGCCTGGCACCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=358;END=571110;SUPPORT=16;COVERAGE=18,17,16,16,18;STRAND=+-;AF=1;STDEV_LEN=3.78;STDEV_POS=14.714;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:44:0:16", + "chr16\t579380\tSniffles2.DEL.4FSF\tcagagaagagacagacacacagccccgaaggtggtgcaggcacaggccctagaggtgccccgggcccagagactagagatgccccgggcccggagactagaggtgccccgggcccggaga\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-120;END=579500;SUPPORT=11;COVERAGE=11,11,11,11,10;STRAND=+-;AF=1;STDEV_LEN=0.488;STDEV_POS=0;AC=2\tGT:GQ:DR:DV\t1/1:30:0:11", + "chr16\t585059\tSniffles2.DEL.50SF\tcccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctccccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctccccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctc\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-156;END=585215;SUPPORT=6;COVERAGE=6,6,6,6,6;STRAND=+-;AF=1;STDEV_LEN=0.5;STDEV_POS=56.518;AC=2\tGT:GQ:DR:DV\t1/1:16:0:6", + "chr16\t587440\tSniffles2.INS.1CSF\tN\tTCCCTCCCTTCACTGGGCCTGCTGCCCCAGAGTCCA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=36;END=587440;SUPPORT=5;COVERAGE=5,5,5,5,5;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=41.569;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:13:0:5", + "chr16\t611801\tSniffles2.DEL.51SF\tgggacagccgccttcgcctgtagaatcaagagcagggacagccgccctggcctgtagaatcaagagcacgggacagccgccctggcctgtagaatcaagagcacgggacagccgccctggcctgtagaatcaagagcagggacagccgccctggcctgtagaatcaagagcaagggacagccgccctggcctgtagaatcaagagcaagggacagccgcctttgcctgtagaatcaagagcag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-243;END=612044;SUPPORT=4;COVERAGE=3,4,4,4,4;STRAND=+-;AF=1;STDEV_LEN=0.707;STDEV_POS=14.142;AC=2\tGT:GQ:DR:DV\t1/1:11:0:4", + "chr16\t631728\tSniffles2.DEL.52SF\tcttctcccaccccttcactgcctctccttccatcctctcctcccaccctctcctcccatccactcctcccatccacttcttccatcct\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-88;END=631816;SUPPORT=17;COVERAGE=17,17,17,17,16;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;AC=2\tGT:GQ:DR:DV\t1/1:47:0:17", + "chr16\t660943\tSniffles2.INS.1FSF\tN\tCCCCCTGTTCGGCCCCTCCCCAGGCCCCCCCCCGCCCGGCCTCAGGCCCCGCCCCCTGTTCGGCCCCTCCCCAGGCCCGGCCTCAGGCCCCGCCCCCTGTTCGGCCCCTCCCCAG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=115;END=660943;SUPPORT=17;COVERAGE=16,16,15,16,16;STRAND=+-;AF=1;STDEV_LEN=1.803;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:47:0:17", + "chr16\t665215\tSniffles2.DEL.53SF\tcctcagtctgcagcctgctagggacgcacggccacactcctgtctttcag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-50;END=665265;SUPPORT=22;COVERAGE=19,21,22,22,21;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;AC=2\tGT:GQ:DR:DV\t1/1:60:0:22", + "chr16\t696679\tSniffles2.INS.20SF\tN\tCCCACCCCAAAGCCACCATCCGCTCCCACCTCCATAGGGTTGCTGCTGCCCGCCCCTGCCCCCCAGCCCTGTCCCCCCCACCACCCAGCCTGGGCGCACACCCCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=105;END=696679;SUPPORT=10;COVERAGE=11,10,10,10,10;STRAND=+-;AF=1;STDEV_LEN=0.408;STDEV_POS=1.633;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:27:0:10", + "chr16\t746237\tSniffles2.DEL.54SF\tgaggtgggttcactgcgggtctgcctggctgggcagcaggagaggaggtgggttcactgcgggtctgcctggctgggcagcaggagaggaggtgggttcactgcaggtctgtctggctgggcagcaggaggggagaggtggggtcactgcgggtctgcagggctgcaggaggggagaggtggggtcactgcaggtctgtctggctgggcagcaggagaggaggtgggttcactgcaggtctgtctgggcgggctgcaggagaggaggtggggtcactgcgggtctgtctgggcgggctgcaggagag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-307;END=746544;SUPPORT=7;COVERAGE=13,13,13,13,11;STRAND=+-;AF=0.538;STDEV_LEN=0;STDEV_POS=0;AC=1\tGT:GQ:DR:DV\t0/1:40:6:7", + "chr16\t760502\tSniffles2.INS.21SF\tN\tAGCCATGAAACCTGGGCCCGGGCTCCCACTCACACCCCACCCCCACCCAGGGCAGCCGTGAAACCTGGGCCCTGGGCTCCCACCCACGCCCCACACCCACCCAGGGC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=107;END=760502;SUPPORT=16;COVERAGE=16,16,16,16,17;STRAND=+-;AF=1;STDEV_LEN=0.518;STDEV_POS=11.667;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:44:0:16", + "chr16\t763776\tSniffles2.INS.22SF\tN\tGCATCCCATCCCCCGTCCCCTCCCCCACACCCCTCCCCCACCCCCACGTCCCCTCCCCACCCCTCCCCCACACCCTCCCCCACCCCTCCCCATGTCCCCTCCCCTACCTCCTCCCCCCGCATCCCCTCCCCCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=133;END=763776;SUPPORT=20;COVERAGE=19,19,20,20,20;STRAND=+-;AF=1;STDEV_LEN=0.789;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:55:0:20", + "chr16\t767762\tSniffles2.INS.26SF\tN\tGGGGCACGTGGAGGGGTCGCGTGGAGGAGGGGCGCGTGGAGGGGGCGCGTGGAGGAGGAGGGGCGCATGGGGGGGTGTGGAGGGCACATGGGGGTGCGTGGGGGGGCGTGTGGGGGGGTGCGTGGAGGA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=130;END=767762;SUPPORT=10;COVERAGE=15,15,15,15,14;STRAND=+-;AF=0.667;STDEV_LEN=1.835;STDEV_POS=27.386;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:22:5:10", + "chr16\t767829\tSniffles2.INS.25SF\tN\tGGTGTGGAGGGGGGCGCGTGGGGGTGTGTGGGGGGGGGCACGTGGAGGGGGCGTGTGGGGGGGTGCGTGGAGGAGGGGCGCGTGGAGGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=89;END=767829;SUPPORT=4;COVERAGE=15,15,15,15,14;STRAND=+-;AF=0.267;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:9:11:4", + "chr16\t769171\tSniffles2.INS.27SF\tN\tCCCCGGCCCCGGCCCCAGCCCCGGCCCCACCCCGGCCCCAGCCCCAGCCCCAGCCCCAGCCCCACCCCCGGCCCCAGCCCCAGCCCCAGCCCCAGCCCCGGCCCCACCCCCACCCCCGGCCCCGGCCCCGGCCCCACCCCCGGCCCCGGCCCCGGCCCCACCCCCGGCCCCGGCCCCACCCCCGGCCCCGGCCCCAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=197;END=769171;SUPPORT=6;COVERAGE=14,13,13,13,13;STRAND=+-;AF=0.462;STDEV_LEN=0.816;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:40:7:6", + "chr16\t795446\tSniffles2.INS.28SF\tN\tCCCCCGTGCTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCTGTGCTGCCCGTGTGGCTGCCCCCGGCCCCGCGCCCTTCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=87;END=795446;SUPPORT=8;COVERAGE=13,13,13,13,13;STRAND=+-;AF=0.615;STDEV_LEN=0.577;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:27:5:8", + "chr16\t795594\tSniffles2.INS.29SF\tN\tGCTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCTTCTCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCTTCTCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCTGTGCTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCTCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCTTCTCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCGCCCCGCCCCGCCCCTCCCCTCCCCCCCCCCCGC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=621;END=795594;SUPPORT=5;COVERAGE=13,13,13,13,13;STRAND=+-;AF=0.385;STDEV_LEN=2.646;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:27:8:5", + "chr16\t818868\tSniffles2.INS.2ASF\tN\tTGGTGAAGACTGTAGTGATGGTGATGATGGTGAAGACTGTAGTGATGATGGTGGTGAAGACTGTAGTGATGTTGATATTGGTGATGAAGACTATAGTGATAGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTAGTGATGGTGATGATGATGGTGAAGACTGTAGTGATGGTGATGATGGTGAAGACTGTAGCGATGATGGTGAACACTGTAGTGATGTTGATATTGGTGATGAAGACTATAGTGATGGTGATGATAGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTGTAGTGATGGTGATGAGGTGAGACTATCGTGATGGTGATGATAATGGTGAAGACTATAGTGATGTTGATGTCGGTGGTGAAGACTGTAGTGATGGTGATGATAGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTGTAGTGATGGTGATGATGGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTATAGTGATGATGGTGAAGACTGTAGTGATGGTGATGATAGTGGTGAAGACTGTAGTGATGTTAATGGTGAAGGCTATAGTGATGTTGATGGTGGTGAAGACTGTAGCAATGGTTATGATGTTGGTGAAGACAATAGTGATGGTGATGATGGTGAAGACTATAGTGATGGTGATGATGGTGGTGAAGACTGTAGTGATGGTGATGATAGTGGTGAGGACTGTTAGTGATGATAGTGGTGAAGACTGTAGTGATGATGATGGTGAAGACTATAATGATGATGGTGAAGACCGCCGTGATGGTGATGATGGTGAAGACTGTAGCAATGATGATGGTGAAGACTATAGTGATGTTGAGTTGGTGGTGAAGACTGTAGCGATGGTGATGATGATGGTGAAGACTATAGTGATGATGATGTTGAAGACTATAGTGATGATGATGGTGAAGACCGCCGTGATGGTGATGATGGTGAAGACTGTAGCGATGATGATGGTGAAGACTATAGTGATGCTGATGTTGGTGGTGAAGACTGTAGTGATGGTGATGATGATGGTGAAGACTATAGTGATGATGATGGTGAAGACTATAGTGATGATGATGTGAAGACCGCCGTGATGGTGATGATGGTGAAGACTGTAGCGATGATGATGGTGAAGACTATAGTGATGTTGATGTTGG\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=1173;END=818868;SUPPORT=12;COVERAGE=13,12,12,12,12;STRAND=+-;AF=1;STDEV_LEN=90.396;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:33:0:12", + "chr16\t824382\tSniffles2.INS.2BSF\tN\tTAGGCCCACGACGGCCAGCAGCGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGGAGCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=150;END=824382;SUPPORT=2;COVERAGE=3,3,3,3,2;STRAND=-;AF=0.667;STDEV_LEN=0.707;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:4:1:2", + "chr16\t824874\tSniffles2.INS.2DSF\tN\tCGTCCCGTCCGCGGCACCACCGTCCCATCTGTGGCACCAT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=40;END=824874;SUPPORT=2;COVERAGE=3,2,2,2,2;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:5:0:2", + "chr16\t828906\tSniffles2.DEL.55SF\tgcccactggggcccacatcccgcccactgggaccgacatccc\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-42;END=828948;SUPPORT=2;COVERAGE=2,2,2,2,2;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;AC=2\tGT:GQ:DR:DV\t1/1:5:0:2", + "chr16\t886663\tSniffles2.INS.30SF\tN\tCCACCCTAGGCCCCCGGCGTTCCCCAGGCCCCTCCCACCCTAGGCCCCCGGCGTTCCCCAGGCCCCTCCCACCCTAGGCCCCCGGCGTTCCCCAGGCCCCTCCCACCCTAGGCCCCGGCGTTCCCCAGGCCCCT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=133;END=886663;SUPPORT=10;COVERAGE=10,10,10,10,11;STRAND=+-;AF=1;STDEV_LEN=0.983;STDEV_POS=48.673;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:27:0:10", + "chr16\t894215\tSniffles2.INS.31SF\tN\tCTGGCTGTCCGCCCACCCATCCCCTGTCCACCGGACCGTCCGCCCACCCGTCCCCATGTCCATCAGACCGTCCGTCCACCTGTCCCCCTGTCCCCTGTCCACCGGACCATTCGCCCACCCATCCCCCTGTCCACCTGGCCATCCGCCCACCTGTCTCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCACTGGACTGTCCGCCCACCTGTCCCCCTGTCCCCTGTCCACCGGACCGTCTGCCCACCCGTCCCCCTGTCCACCTGGCCATCCGCCCACCCATCCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCAGGTCCCCCTGTCCAGCGGACCGTCCACCCACCCGTCCCCCTGTCCACTGGACCGTCCGCCCACCTGTCCCCCTGTCCACCTGGCAGTGCGCCCACCCATCCCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCAGCGGACCGTCCACCCACCT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=521;END=894215;SUPPORT=17;COVERAGE=17,17,17,17,17;STRAND=+-;AF=1;STDEV_LEN=57.393;STDEV_POS=5.5;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:47:0:17", + "chr16\t895843\tSniffles2.INS.33SF\tN\tACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCATGGTCCACAGACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCACGGTCCACAGACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCACGGTCCACAGCCACACGCAGGCTGCACGGTCCACAGACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCACGGTCCACACACACGCCTCGGAGGGGTTGTGAGGCTCAGCCAT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=295;END=895843;SUPPORT=10;COVERAGE=17,16,16,16,14;STRAND=+-;AF=0.625;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:32:6:10", + "chr16\t896059\tSniffles2.INS.32SF\tN\tGCAGGCTGCACGGTCCACAGACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=58;END=896059;SUPPORT=6;COVERAGE=17,16,16,16,14;STRAND=+-;AF=0.375;STDEV_LEN=0.577;STDEV_POS=110.531;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:32:10:6", + "chr16\t903595\tSniffles2.INS.34SF\tN\tGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTATCTCTGCTGTGTGGTGGTGACCTTTGCACTGCCCGTGGGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCCGTCTCTGCTGTGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCCACAGGACGCCTGTCTCTGCTGTGTGGTGGTGACCTTTGCACTGCCCGTGGGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCTGTCTCTGCTGTGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCCGTCTCTGCTGCGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=600;END=903595;SUPPORT=6;COVERAGE=8,8,8,8,8;STRAND=+-;AF=0.75;STDEV_LEN=0.577;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:3:2:6", + "chr16\t949510\tSniffles2.DEL.5ASF\taatgacagagtcagccaacgacagagtcagagccaacgacagagtcagagacaatgacagagtcagagacaacgacagagtcagagacgacagagtcagagacgacagagtcagagccaatgacagagtcagccaatgacagagtcagagccaacgacagagtcagccaatgacagagtcagagacaacgacagagtcagagacaacgacagagtcagagacgacagagtcagagacgacagagtcagagccaatgacagagtcagccaatgacagagtcagagccaacgacagagtcagccaatgacagagtcagagacaacgacagagttagagacaacgacagagtcagccaaggacagcgtcagccaacgacagaatcagagacaacgacagagtcagccaacgacagagtcagagccaatgagagtcagagccaacgacagagtcagagacgacagagtcagagccaacgacagagtcagccaacgacagagtcagagccaacgacagagtcagccaacgacagagtcagagccaacgacagagtcagccaacgacagagtcagagacaacgacagagtcagagccaacgacagagtcagagacgaaagactcagagccaatgacagagtcagagccaatgacagagtcagccaacgacagagtcagagccaacgacagagtcagccaatgacagagtcagagacagcgacagagttagagacaat\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-731;END=950241;SUPPORT=15;COVERAGE=22,22,22,23,22;STRAND=+-;AF=0.682;STDEV_LEN=0;STDEV_POS=0;AC=1\tGT:GQ:DR:DV\t0/1:28:7:15", + "chr16\t950488\tSniffles2.INS.36SF\tN\tCAACGACAGAGTCAGAGACAACGACAGAGTCAGAGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=36;END=950488;SUPPORT=14;COVERAGE=22,23,23,23,23;STRAND=+-;AF=0.609;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:50:9:14", + "chr16\t952880\tSniffles2.DEL.5CSF\ttccacacagacacccaccccaaaccagcctcctacacgtccacacagacacccaccccaaaccagcctcctgcacgtccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacacg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-178;END=953058;SUPPORT=16;COVERAGE=24,24,25,25,25;STRAND=+-;AF=0.64;STDEV_LEN=0;STDEV_POS=0;AC=1\tGT:GQ:DR:DV\t0/1:45:9:16", + "chr16\t953293\tSniffles2.DEL.5DSF\tcaaaccagcctcctacacgtccacacagacacccaccccaaaccagcttcctacacgttcacacagacacgg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-72;END=953365;SUPPORT=15;COVERAGE=24,25,25,25,25;STRAND=+-;AF=0.6;STDEV_LEN=0;STDEV_POS=0;AC=1\tGT:GQ:DR:DV\t0/1:58:10:15", + "chr16\t953349\tSniffles2.DEL.60SF\tgttcacacagacacggaccccaaaccagcctcctacacgtccacacagacacccaccccaaaccagcctcctacacgttcacacagacacggaccccacaccagcctcctacacgtccacacagacacccaccccaaaccagcctcctgcacgtccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacacgtccacacagacacccactccaaaccagcctcctacacgtccacacagacaccccaaaccagcctcctacatgtccacacagacacccaccccaaaccagcctcctacatgtccacacagacacccaccccaaaccagcctcctacatgtccacacagacacccaccccaaaccagcctcctacat\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-440;END=953789;SUPPORT=9;COVERAGE=25,25,25,25,25;STRAND=+-;AF=0.36;STDEV_LEN=0;STDEV_POS=0;AC=1\tGT:GQ:DR:DV\t0/1:45:16:9", + "chr16\t953507\tSniffles2.DEL.5ESF\tacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacacgtccacacag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-106;END=953613;SUPPORT=15;COVERAGE=25,25,25,25,25;STRAND=+-;AF=0.6;STDEV_LEN=0;STDEV_POS=0;AC=1\tGT:GQ:DR:DV\t0/1:58:10:15", + "chr16\t954972\tSniffles2.INS.37SF\tN\tCTAAGCGAACCAGACACGTTACATAAAATGCGTGCCTGCAGCAGACGGGGTCTGTGCACACACACACACACAACCAGACACGTTACATAAAATGCGTGCCTGCTGCAGACGTGGTGTGTGTATACACACACACACATCTAAGTAAACCAGACACGTTACATAAAATGCGTGCCCGCAGCAGACGTAGTGTGTGCATCCACACACACACATCTAAGTAAACTAGACACGTTACATAAAATGCGTGCCCACAGCAGACGCGGTGTGTGCGTACACACACACACATCTAAGTAAACTAGACACGTTACATAAAATGCGTGCCCGCAGCAGACGCAGTGTGTGCATACACATCTAAGTG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=355;END=954972;SUPPORT=15;COVERAGE=25,24,24,26,26;STRAND=+-;AF=0.625;STDEV_LEN=0.333;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:48:9:15", + "chr16\t955473\tSniffles2.INS.38SF\tN\tACACACACACACACACATCTAAGTGAACCAGACACGTTACATAAAATGCGTGCCTGCAGCAGATGCGGTGTGTGCATACACACACACACATCTAAGTAAACCAGACACGTTACATAAAATGCGTGCCTGCAGCAGACGTAGTGTGTGCATCCACACACACACATCTAAGTAAACTAGACACGTTACATAAAATGCGTGCCCGCAGCAGAGACGGTGTGTGCGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=223;END=955473;SUPPORT=15;COVERAGE=24,26,26,27,27;STRAND=+-;AF=0.577;STDEV_LEN=0.5;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:60:11:15", + "chr16\t955933\tSniffles2.INS.39SF\tN\tCACGGCACCCACCCCACGACGGCTCTCTCACATCCACAGGTCTCCGAGTTCACGTCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=57;END=955933;SUPPORT=12;COVERAGE=26,27,27,29,29;STRAND=+-;AF=0.444;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:60:15:12", + "chr16\t956173\tSniffles2.INS.3ASF\tN\tCCCACGACGGCTCTCTCACATCCACAGGTCTCCGAGTTCACGTCTCACGGCGCCCA\t60\tGT\tPRECISE;SVTYPE=INS;SVLEN=57;END=956173;SUPPORT=5;COVERAGE=27,29,29,29,29;STRAND=+-;AF=0.172;STDEV_LEN=0.577;STDEV_POS=10.392;SUPPORT_LONG=0;AC=0\tGT:GQ:DR:DV\t0/0:16:24:5", + "chr16\t960401\tSniffles2.DEL.63SF\tacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacaacactggatcacaacccagacaccatctcatggtgacaacacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacaacacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacaacacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagac\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-864;END=961265;SUPPORT=14;COVERAGE=31,31,31,30,30;STRAND=+-;AF=0.452;STDEV_LEN=0;STDEV_POS=0;AC=1\tGT:GQ:DR:DV\t0/1:60:17:14", + "chr16\t960535\tSniffles2.DEL.62SF\tcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacaacacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-262;END=960797;SUPPORT=16;COVERAGE=31,31,31,31,30;STRAND=+-;AF=0.516;STDEV_LEN=0;STDEV_POS=4.596;AC=1\tGT:GQ:DR:DV\t0/1:60:15:16" ], + "test_reheader.vcf.gz.tbi", + "project.vcf.gz.tbi", [ + "versions.yml:md5,2188f00d20a376929f9f35f824e94667", + "versions.yml:md5,572bfd042014333af194207291d12b95", "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", - "versions.yml:md5,b5313b7af7b889d4faee264548c6862c" + "versions.yml:md5,ebb9b3d0bcc3aae3f54dfebd041e5cff" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.04.4" + "nextflow": "24.04.3" }, - "timestamp": "2024-08-30T11:36:12.813853636" + "timestamp": "2024-09-03T14:22:30.170494561" }, "2 samples - [bam, bai], fasta, fai, [] -stub": { "content": [ @@ -1777,7 +1833,7 @@ "single_end": false, "project": "project" }, - "test_1.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + "test_1_reheader.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ], [ { @@ -1785,10 +1841,28 @@ "single_end": false, "project": "project" }, - "test_2.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + "test_2_reheader.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "1": [ + [ + { + "id": "test_1", + "single_end": false, + "project": "project" + }, + "test_1_reheader.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "test_2", + "single_end": false, + "project": "project" + }, + "test_2_reheader.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ [ { "id": "project" @@ -1796,12 +1870,32 @@ "project.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], - "2": [ + "3": [ + [ + { + "id": "project" + }, + "project.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + "versions.yml:md5,2188f00d20a376929f9f35f824e94667", + "versions.yml:md5,2188f00d20a376929f9f35f824e94667", + "versions.yml:md5,572bfd042014333af194207291d12b95", "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", - "versions.yml:md5,b5313b7af7b889d4faee264548c6862c" + "versions.yml:md5,ebb9b3d0bcc3aae3f54dfebd041e5cff", + "versions.yml:md5,ebb9b3d0bcc3aae3f54dfebd041e5cff" ], - "ch_multisample": [ + "ch_multisample_tbi": [ + [ + { + "id": "project" + }, + "project.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "ch_multisample_vcf": [ [ { "id": "project" @@ -1809,6 +1903,24 @@ "project.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], + "ch_sv_calls_tbi": [ + [ + { + "id": "test_1", + "single_end": false, + "project": "project" + }, + "test_1_reheader.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "test_2", + "single_end": false, + "project": "project" + }, + "test_2_reheader.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], "ch_sv_calls_vcf": [ [ { @@ -1816,7 +1928,7 @@ "single_end": false, "project": "project" }, - "test_1.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + "test_1_reheader.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ], [ { @@ -1824,29 +1936,28 @@ "single_end": false, "project": "project" }, - "test_2.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + "test_2_reheader.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "versions": [ + "versions.yml:md5,2188f00d20a376929f9f35f824e94667", + "versions.yml:md5,2188f00d20a376929f9f35f824e94667", + "versions.yml:md5,572bfd042014333af194207291d12b95", "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", - "versions.yml:md5,b5313b7af7b889d4faee264548c6862c" + "versions.yml:md5,ebb9b3d0bcc3aae3f54dfebd041e5cff", + "versions.yml:md5,ebb9b3d0bcc3aae3f54dfebd041e5cff" ] } ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.04.4" + "nextflow": "24.04.3" }, - "timestamp": "2024-08-30T11:37:32.1659659" + "timestamp": "2024-09-03T12:28:35.279015767" }, "1 sample - [bam, bai], fasta, fai, []": { "content": [ - [ - "##fileformat=VCFv4.2", - "##source=Sniffles2_2.0.7", - "##command=\"/usr/local/bin/sniffles --input HG002_PacBio_Revio.bam --reference hg38.test.fa -t 4 --vcf test.vcf.gz --snf test.snf\"" - ], [ "##contig=", "##contig=", @@ -2053,7 +2164,6 @@ "##FORMAT=", "##FORMAT=", "##FORMAT=", - "##FILTER=", "##FILTER=", "##FILTER=", "##FILTER=", @@ -2083,100 +2193,85 @@ "##INFO=", "##INFO=", "##INFO=", - "#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO\tFORMAT\tSAMPLE", - "chr16\t81884\tSniffles2.INS.4SF\tN\tCTCCAGGAAGCCCTCCTGAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTATCTCCGGAAGCCCTCCTGAATGCTCCCCACGCTGGCCCCTTCTTCCCACCACCCTACCTCCGGGAAGGCCTCCTGAATGCTCCCCACGCTGGCCCCTTCTTCCCACCACCCTACCTCCGGGAAGCCCTCCTGAATGCTCCCCACGCTGGCCCCTTCTTCCCACCACCCTACCTCCAGGAAGCCCTCCTGAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTATCTCCGGGAAGGCCTCCTGAATGCTCCCCACACTGACCCCTTCTTCCCACCACCCTACCTCCGGGAAGGCCTCCTGAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTAT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=398;END=81884;SUPPORT=12;COVERAGE=22,23,24,23,23;STRAND=+-;AF=0.500;STDEV_LEN=0.000;STDEV_POS=68.361;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:60:12:12", - "chr16\t82169\tSniffles2.INS.1SF\tN\tCTCCGGGAAGGCCTCCTGAATGCTCCCCACACTGACCCCTTCTTCCCACCACCCTAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=57;END=82169;SUPPORT=8;COVERAGE=23,23,23,23,23;STRAND=+-;AF=0.348;STDEV_LEN=0.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:38:15:8", - "chr16\t153120\tSniffles2.INS.5SF\tN\tACAGTGGGGAGGGGACAGTGGGGAGAGGACAGTAAGGAGGGGACCATGGGGAGGAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=56;END=153120;SUPPORT=23;COVERAGE=22,23,23,23,23;STRAND=+-;AF=1.000;STDEV_LEN=0.480;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:60:0:23", - "chr16\t160071\tSniffles2.INS.CSF\tN\tGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGACGGCTTGTGGGACACAGGTTGTGAGAGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTGTGAGGGTGCCCGGGATGGCTTGTGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTGTGAGACGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGAGATGCCCAGGACGGCTTGTGGGGAACAGGCTGTGAGGGTGCCCGGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGAT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=583;END=160071;SUPPORT=24;COVERAGE=28,28,28,30,27;STRAND=+-;AF=0.857;STDEV_LEN=0.953;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:26:4:24", - "chr16\t160389\tSniffles2.INS.BSF\tN\tGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGCTGCAAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGATGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCTGGGACGGCTTGTGGGGCACAGGTTGTGAGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=328;END=160389;SUPPORT=25;COVERAGE=28,30,30,29,27;STRAND=+-;AF=0.833;STDEV_LEN=0.277;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:19:5:25", - "chr16\t160753\tSniffles2.INS.ESF\tN\tGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCAGGATGGCTTGTGGGGCACAGGCTGCAAGAGGTGCCCAGGACGGCTTGTGGGGCACAGGTTGTGAGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=145;END=160753;SUPPORT=27;COVERAGE=30,28,28,27,27;STRAND=+-;AF=0.964;STDEV_LEN=0.352;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:60:1:27", + "##bcftools_viewVersion=1.20+htslib-1.20" + ], + [ + "#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO\tFORMAT\ttest", + "chr16\t81884\tSniffles2.INS.4SF\tN\tCTCCAGGAAGCCCTCCTGAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTATCTCCGGAAGCCCTCCTGAATGCTCCCCACGCTGGCCCCTTCTTCCCACCACCCTACCTCCGGGAAGGCCTCCTGAATGCTCCCCACGCTGGCCCCTTCTTCCCACCACCCTACCTCCGGGAAGCCCTCCTGAATGCTCCCCACGCTGGCCCCTTCTTCCCACCACCCTACCTCCAGGAAGCCCTCCTGAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTATCTCCGGGAAGGCCTCCTGAATGCTCCCCACACTGACCCCTTCTTCCCACCACCCTACCTCCGGGAAGGCCTCCTGAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTAT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=398;END=81884;SUPPORT=12;COVERAGE=22,23,24,23,23;STRAND=+-;AF=0.5;STDEV_LEN=0;STDEV_POS=68.361;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:60:12:12", + "chr16\t82169\tSniffles2.INS.1SF\tN\tCTCCGGGAAGGCCTCCTGAATGCTCCCCACACTGACCCCTTCTTCCCACCACCCTAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=57;END=82169;SUPPORT=8;COVERAGE=23,23,23,23,23;STRAND=+-;AF=0.348;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:38:15:8", + "chr16\t153120\tSniffles2.INS.5SF\tN\tACAGTGGGGAGGGGACAGTGGGGAGAGGACAGTAAGGAGGGGACCATGGGGAGGAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=56;END=153120;SUPPORT=23;COVERAGE=22,23,23,23,23;STRAND=+-;AF=1;STDEV_LEN=0.48;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:60:0:23", + "chr16\t160071\tSniffles2.INS.CSF\tN\tGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGACGGCTTGTGGGACACAGGTTGTGAGAGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTGTGAGGGTGCCCGGGATGGCTTGTGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTGTGAGACGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGAGATGCCCAGGACGGCTTGTGGGGAACAGGCTGTGAGGGTGCCCGGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGAT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=583;END=160071;SUPPORT=24;COVERAGE=28,28,28,30,27;STRAND=+-;AF=0.857;STDEV_LEN=0.953;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:26:4:24", + "chr16\t160389\tSniffles2.INS.BSF\tN\tGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGCTGCAAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGATGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCTGGGACGGCTTGTGGGGCACAGGTTGTGAGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=328;END=160389;SUPPORT=25;COVERAGE=28,30,30,29,27;STRAND=+-;AF=0.833;STDEV_LEN=0.277;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:19:5:25", + "chr16\t160753\tSniffles2.INS.ESF\tN\tGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCAGGATGGCTTGTGGGGCACAGGCTGCAAGAGGTGCCCAGGACGGCTTGTGGGGCACAGGTTGTGAGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=145;END=160753;SUPPORT=27;COVERAGE=30,28,28,27,27;STRAND=+-;AF=0.964;STDEV_LEN=0.352;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:60:1:27", "chr16\t163320\tSniffles2.DEL.5DSF\tagtgagtaggagacagtggggagaggacagtggagaggggacagtgaggaggggaccatgggaaggggaccgtggagtggggacagtgaggaggggaccatagggagggga\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-111;END=163431;SUPPORT=7;COVERAGE=23,22,22,22,22;STRAND=+-;AF=0.318;STDEV_LEN=1.095;STDEV_POS=10.733\tGT:GQ:DR:DV\t0/1:28:15:7", - "chr16\t163591\tSniffles2.DEL.5ESF\tggaggggaccgtgggaaggagacagtgaggaggggaccttggggaggggacagtgaggaggggaccatggggaggggacagtgaggaggggacaatggagaggggacagtgaggaggggactgtggggagaggacagtgaggaggggaccatggggagggcacagtggggaggggagagtgaggaagggacagtgaggaggggactgtgg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-210;END=163801;SUPPORT=7;COVERAGE=22,22,22,22,21;STRAND=+-;AF=0.318;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/1:28:15:7", - "chr16\t164801\tSniffles2.INS.FSF\tN\tCGGGGTCGCGGGGCGGGCGGGTCGCGGGGCGGGGTCGCGGGGGCGGGCGAGGTC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=54;END=164801;SUPPORT=8;COVERAGE=21,21,21,21,21;STRAND=+-;AF=0.381;STDEV_LEN=2.160;STDEV_POS=17.972;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:43:13:8", - "chr16\t182789\tSniffles2.INS.10SF\tN\tTGAAACACCGTCTCTACTAAAAATACAAAAATTAGCCAGGCATAGTGGCGGGCGCCTGTAATCCCAGCTGTTCGGGAGGCTGAGGCAGGACAATCACTTAAACCAGGGAAGCAGAGGTTGCAGTGAGCTGAGATCGAGCCACTGCACTCCAGCCTGGGCGACAGACCGAGACTGTCTCAAAAAAAAGACCGGGCACGGTGGCTCACGCCTGTAATCCCACCACTTTGGGAGGCTGAGGCGGGCTGATCACGATGTCAGGAGATCTAGACCATCCTGGCCAACATGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=286;END=182789;SUPPORT=12;COVERAGE=13,12,12,12,12;STRAND=+-;AF=1.000;STDEV_LEN=0.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:33:0:12", - "chr16\t186052\tSniffles2.DEL.5FSF\tggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacgggg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-629;END=186681;SUPPORT=6;COVERAGE=11,11,11,11,11;STRAND=+-;AF=0.545;STDEV_LEN=8.500;STDEV_POS=8.500\tGT:GQ:DR:DV\t0/1:33:5:6", + "chr16\t163591\tSniffles2.DEL.5ESF\tggaggggaccgtgggaaggagacagtgaggaggggaccttggggaggggacagtgaggaggggaccatggggaggggacagtgaggaggggacaatggagaggggacagtgaggaggggactgtggggagaggacagtgaggaggggaccatggggagggcacagtggggaggggagagtgaggaagggacagtgaggaggggactgtgg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-210;END=163801;SUPPORT=7;COVERAGE=22,22,22,22,21;STRAND=+-;AF=0.318;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:28:15:7", + "chr16\t164801\tSniffles2.INS.FSF\tN\tCGGGGTCGCGGGGCGGGCGGGTCGCGGGGCGGGGTCGCGGGGGCGGGCGAGGTC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=54;END=164801;SUPPORT=8;COVERAGE=21,21,21,21,21;STRAND=+-;AF=0.381;STDEV_LEN=2.16;STDEV_POS=17.972;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:43:13:8", + "chr16\t182789\tSniffles2.INS.10SF\tN\tTGAAACACCGTCTCTACTAAAAATACAAAAATTAGCCAGGCATAGTGGCGGGCGCCTGTAATCCCAGCTGTTCGGGAGGCTGAGGCAGGACAATCACTTAAACCAGGGAAGCAGAGGTTGCAGTGAGCTGAGATCGAGCCACTGCACTCCAGCCTGGGCGACAGACCGAGACTGTCTCAAAAAAAAGACCGGGCACGGTGGCTCACGCCTGTAATCCCACCACTTTGGGAGGCTGAGGCGGGCTGATCACGATGTCAGGAGATCTAGACCATCCTGGCCAACATGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=286;END=182789;SUPPORT=12;COVERAGE=13,12,12,12,12;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:33:0:12", + "chr16\t186052\tSniffles2.DEL.5FSF\tggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacgggg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-629;END=186681;SUPPORT=6;COVERAGE=11,11,11,11,11;STRAND=+-;AF=0.545;STDEV_LEN=8.5;STDEV_POS=8.5\tGT:GQ:DR:DV\t0/1:33:5:6", "chr16\t186294\tSniffles2.DEL.60SF\tcagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacgggg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-863;END=187157;SUPPORT=5;COVERAGE=11,11,11,11,10;STRAND=+-;AF=0.455;STDEV_LEN=0.577;STDEV_POS=6.928\tGT:GQ:DR:DV\t0/1:33:6:5", - "chr16\t362990\tSniffles2.INS.12SF\tN\tGACTTAGCACCGGGGGGTCTCGGGCTGCGGCTGCTCTCCCA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=42;END=362990;SUPPORT=3;COVERAGE=7,6,6,6,5;STRAND=+-;AF=0.500;STDEV_LEN=0.577;STDEV_POS=9.238;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:21:3:3", - "chr16\t370391\tSniffles2.INS.13SF\tN\tCTACCCTGCCCCGGCTCTCACCCCCTACCCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCGGCTCTCACCCCCTACCCCGGCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCGCTACCCTGCCCCCGGCTCTCACCGCTACCCCCCGGCTCTCACCCGCTACCCCGCCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCCGGCCCCCCGGCTCTCACCTCCTACCCGGCCCCGGCTCTCACCCGCTCCCCCGGCCCCCGGCTCTCACCCGCTCACCCCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCTCGGCTCTCACCCCCTACCCCGGCCCCGGCTCTCACCCCCTACCCCTGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCCGGCTCTCACCCGCTACCCCGGCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGGCTCTCACTCC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=736;END=370391;SUPPORT=7;COVERAGE=7,7,7,7,7;STRAND=+-;AF=1.000;STDEV_LEN=65.282;STDEV_POS=1.095;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:19:0:7", - "chr16\t378308\tSniffles2.INS.14SF\tN\tCCACTCTGACTGCCATCGCCACTCTGACTGCCATCC\t60\tGT\tPRECISE;SVTYPE=INS;SVLEN=36;END=378308;SUPPORT=4;COVERAGE=17,17,17,18,18;STRAND=+-;AF=0.235;STDEV_LEN=0.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:3:13:4", - "chr16\t378517\tSniffles2.INS.15SF\tN\tGCCATCGCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCTGACTGCCATCGCCACCCACACTGCCATCCCCACCCGCACTGCCATCGCCACCCTGACTGCCATCGCCACCCACAATGCCATCCCCACCCGCACTGCCATCGCCACCCGCACTGCCATCCCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCACACTGCCATC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=240;END=378517;SUPPORT=12;COVERAGE=17,18,18,18,18;STRAND=+-;AF=0.667;STDEV_LEN=0.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:26:6:12", - "chr16\t397717\tSniffles2.INS.16SF\tN\tTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGTGGGGGTGGGGGTGTGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGTGAGGGAGTCGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGTGAGGGAGTCGGGGGGTGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGGC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=491;END=397717;SUPPORT=3;COVERAGE=3,3,3,3,3;STRAND=+-;AF=1.000;STDEV_LEN=2.309;STDEV_POS=5.196;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:8:0:3", - "chr16\t504280\tSniffles2.INS.17SF\tN\tTCCATCTCCTCCTGTACCCCCTCACCTCCTTGTGCACCCCCTCACCTCCTGTACCCCCTCACCTCCTCTGTA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=74;END=504280;SUPPORT=4;COVERAGE=4,4,4,4,4;STRAND=+-;AF=1.000;STDEV_LEN=0.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:11:0:4", - "chr16\t504419\tSniffles2.INS.18SF\tN\tTCACCTCCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCTCACCTCCTCCTGTACCCCTCACCTCCTTGTGCACCCCCTCACCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCCTCACCTCCTCCTGTACCCCCTCACCTCCTTGTGCACCCCCTCACCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCCTCACCTCCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=256;END=504419;SUPPORT=4;COVERAGE=4,4,4,4,5;STRAND=+-;AF=1.000;STDEV_LEN=0.707;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:11:0:4", - "chr16\t507831\tSniffles2.INS.19SF\tN\tTTCAGTATCATCTGCCCGTTCTGAGCCATTTGCTCTCTAGCCCTACCATACAGCTGCCATCCTAAGAGTACGTTTCCCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=81;END=507831;SUPPORT=4;COVERAGE=5,5,5,5,7;STRAND=+-;AF=0.800;STDEV_LEN=0.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:1:1:4", - "chr16\t534179\tSniffles2.INS.1ASF\tN\tGGGCCGTGGTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACGGGGCCGTGGTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACGGGGCCGTGGTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=162;END=534179;SUPPORT=5;COVERAGE=5,5,5,5,4;STRAND=+-;AF=1.000;STDEV_LEN=0.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:13:0:5", - "chr16\t544781\tSniffles2.INS.1BSF\tN\tCGTCTCCCCCACGTCGCCTCCCCCCACGTCGCCTCCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCTCACGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGTCGC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=344;END=544781;SUPPORT=8;COVERAGE=8,8,8,8,8;STRAND=+-;AF=1.000;STDEV_LEN=4.690;STDEV_POS=25.500;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:22:0:8", - "chr16\t550769\tSniffles2.INS.1CSF\tN\tCGGTGAGGGTCCCCGGTCGGTGAGGGCGCCCCGTCAGTGAGGGTCCCGGTCAGTGAGGGCCCCGGTCGGTGAGGGTCCCCGGTCGGTGAGGGCCCCTGTCGGTGAGGGCCCCGGTCGGTGAGGGACCCGGTCGGTGAGGGCCCCCTGTCGGTGAGGGTCCCCTGTCGGTGAGGGCCCCGGTCGGTGAGGGCCCCGGTCGGTGAGGGTCCCCTGTCGGTGAGGGTCCCCTGTCGGTGAGGGTCCCGGTCGGTGAGGGCCCCGGTCGGTGAGGGTGCCCCGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=280;END=550769;SUPPORT=13;COVERAGE=13,13,13,13,13;STRAND=+-;AF=1.000;STDEV_LEN=1.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:36:0:13", - "chr16\t553057\tSniffles2.INS.1DSF\tN\tTGCCCCCCACCCCTGCACAGGTGCCCCCTCCCCTACCCCGCTGCACCCACACCCAACTCGTGCCCCCCCACCCCTGCACAGGTGCCCCCTCCCCTACCCCGCTGCACCCACACCCAACTCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=121;END=553057;SUPPORT=6;COVERAGE=12,11,11,11,10;STRAND=+-;AF=0.545;STDEV_LEN=0.577;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:33:5:6", - "chr16\t571110\tSniffles2.INS.1FSF\tN\tTGGCTAGCCTGTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTGTGTGTGTCTGGCTAGCCTGGTGCCCGTGTGTGTGTGTATGTGTGTGTGTGTGTGTGTGTCTGGCTAGCTGGCGCCCGTGGCTAGCCTGGTGCCCGTGTGTGTGTGTATGTATGTGTCTGGCTAGCCTGGTGCCCGTGGCTAGCCTGGTGCCCGTGTGTGTGTGTGTGGGGGGGGCTAGCCTTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTCTGGCTAGCGTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTGTGTGTGCTAGCCTGGCGCCCGTGTGTGTGTGTGTGTGTGTCTGGCTAGCCTGGCACCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=358;END=571110;SUPPORT=16;COVERAGE=18,17,16,16,18;STRAND=+-;AF=1.000;STDEV_LEN=3.780;STDEV_POS=14.714;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:44:0:16", - "chr16\t579380\tSniffles2.DEL.62SF\tcagagaagagacagacacacagccccgaaggtggtgcaggcacaggccctagaggtgccccgggcccagagactagagatgccccgggcccggagactagaggtgccccgggcccggaga\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-120;END=579500;SUPPORT=6;COVERAGE=11,11,11,11,10;STRAND=+-;AF=0.545;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/1:33:5:6", - "chr16\t579636\tSniffles2.DEL.61SF\tcccggagactagaggtgccccgggcccggagactagaggtgccccgggcccggagacttgaggtgccccggg\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-72;END=579708;SUPPORT=5;COVERAGE=11,11,11,10,10;STRAND=+-;AF=0.455;STDEV_LEN=11.500;STDEV_POS=105.434\tGT:GQ:DR:DV\t0/1:33:6:5", - "chr16\t585059\tSniffles2.DEL.63SF\tcccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctccccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctccccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctc\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-156;END=585215;SUPPORT=6;COVERAGE=6,6,6,6,6;STRAND=+-;AF=1.000;STDEV_LEN=0.500;STDEV_POS=56.518\tGT:GQ:DR:DV\t1/1:16:0:6", - "chr16\t587440\tSniffles2.INS.20SF\tN\tTCCCTCCCTTCACTGGGCCTGCTGCCCCAGAGTCCA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=36;END=587440;SUPPORT=5;COVERAGE=5,5,5,5,5;STRAND=+-;AF=1.000;STDEV_LEN=0.000;STDEV_POS=41.569;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:13:0:5", - "chr16\t611801\tSniffles2.DEL.64SF\tgggacagccgccttcgcctgtagaatcaagagcagggacagccgccctggcctgtagaatcaagagcacgggacagccgccctggcctgtagaatcaagagcacgggacagccgccctggcctgtagaatcaagagcagggacagccgccctggcctgtagaatcaagagcaagggacagccgccctggcctgtagaatcaagagcaagggacagccgcctttgcctgtagaatcaagagcag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-243;END=612044;SUPPORT=4;COVERAGE=3,4,4,4,4;STRAND=+-;AF=1.000;STDEV_LEN=0.707;STDEV_POS=14.142\tGT:GQ:DR:DV\t1/1:11:0:4", - "chr16\t631728\tSniffles2.DEL.65SF\tcttctcccaccccttcactgcctctccttccatcctctcctcccaccctctcctcccatccactcctcccatccacttcttccatcct\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-88;END=631816;SUPPORT=17;COVERAGE=17,17,17,17,16;STRAND=+-;AF=1.000;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t1/1:47:0:17", - "chr16\t660943\tSniffles2.INS.23SF\tN\tCCCCCTGTTCGGCCCCTCCCCAGGCCCCCCCCCGCCCGGCCTCAGGCCCCGCCCCCTGTTCGGCCCCTCCCCAGGCCCGGCCTCAGGCCCCGCCCCCTGTTCGGCCCCTCCCCAG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=115;END=660943;SUPPORT=17;COVERAGE=16,16,15,16,16;STRAND=+-;AF=1.000;STDEV_LEN=1.803;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:47:0:17", - "chr16\t665215\tSniffles2.DEL.66SF\tcctcagtctgcagcctgctagggacgcacggccacactcctgtctttcag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-50;END=665265;SUPPORT=22;COVERAGE=19,21,22,22,21;STRAND=+-;AF=1.000;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t1/1:60:0:22", - "chr16\t696679\tSniffles2.INS.24SF\tN\tCCCACCCCAAAGCCACCATCCGCTCCCACCTCCATAGGGTTGCTGCTGCCCGCCCCTGCCCCCCAGCCCTGTCCCCCCCACCACCCAGCCTGGGCGCACACCCCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=105;END=696679;SUPPORT=10;COVERAGE=11,10,10,10,10;STRAND=+-;AF=1.000;STDEV_LEN=0.408;STDEV_POS=1.633;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:27:0:10", - "chr16\t746237\tSniffles2.DEL.67SF\tgaggtgggttcactgcgggtctgcctggctgggcagcaggagaggaggtgggttcactgcgggtctgcctggctgggcagcaggagaggaggtgggttcactgcaggtctgtctggctgggcagcaggaggggagaggtggggtcactgcgggtctgcagggctgcaggaggggagaggtggggtcactgcaggtctgtctggctgggcagcaggagaggaggtgggttcactgcaggtctgtctgggcgggctgcaggagaggaggtggggtcactgcgggtctgtctgggcgggctgcaggagag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-307;END=746544;SUPPORT=7;COVERAGE=13,13,13,13,11;STRAND=+-;AF=0.538;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/1:40:6:7", - "chr16\t760502\tSniffles2.INS.25SF\tN\tAGCCATGAAACCTGGGCCCGGGCTCCCACTCACACCCCACCCCCACCCAGGGCAGCCGTGAAACCTGGGCCCTGGGCTCCCACCCACGCCCCACACCCACCCAGGGC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=107;END=760502;SUPPORT=16;COVERAGE=16,16,16,16,17;STRAND=+-;AF=1.000;STDEV_LEN=0.518;STDEV_POS=11.667;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:44:0:16", - "chr16\t763776\tSniffles2.INS.26SF\tN\tGCATCCCATCCCCCGTCCCCTCCCCCACACCCCTCCCCCACCCCCACGTCCCCTCCCCACCCCTCCCCCACACCCTCCCCCACCCCTCCCCATGTCCCCTCCCCTACCTCCTCCCCCCGCATCCCCTCCCCCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=133;END=763776;SUPPORT=20;COVERAGE=19,19,20,20,20;STRAND=+-;AF=1.000;STDEV_LEN=0.789;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:55:0:20", - "chr16\t767712\tSniffles2.INS.2ASF\tN\tGCGCATGGGGGGCGTGGGAGGGGGGTGCGTGGAGGAGGGGCGGTGTGGAGGGGGGCGCGTGGGGGTGTGTGGGGGGGGCACGTGGAGGGGGGCGTGTGGGGGGGTGCGTGGAGGAGGGGCGCGTGGAGGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=130;END=767712;SUPPORT=5;COVERAGE=15,15,15,15,14;STRAND=+-;AF=0.333;STDEV_LEN=0.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:22:10:5", - "chr16\t767829\tSniffles2.INS.29SF\tN\tGGTGTGGAGGGGGGCGCGTGGGGGTGTGTGGGGGGGGGCACGTGGAGGGGGCGTGTGGGGGGGTGCGTGGAGGAGGGGCGCGTGGAGGA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=89;END=767829;SUPPORT=9;COVERAGE=15,15,15,15,14;STRAND=+-;AF=0.600;STDEV_LEN=3.715;STDEV_POS=36.697;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:34:6:9", - "chr16\t767989\tSniffles2.INS.28SF\tN\tGGGGCACATGGGGGTGCGTGGGGGGCGTGTGGGGGGTGCGTGGAGGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=47;END=767989;SUPPORT=6;COVERAGE=15,15,15,14,14;STRAND=+-;AF=0.400;STDEV_LEN=1.500;STDEV_POS=11.547;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:34:9:6", - "chr16\t769171\tSniffles2.INS.2BSF\tN\tCCCCGGCCCCGGCCCCAGCCCCGGCCCCACCCCGGCCCCAGCCCCAGCCCCAGCCCCAGCCCCACCCCCGGCCCCAGCCCCAGCCCCAGCCCCAGCCCCGGCCCCACCCCCACCCCCGGCCCCGGCCCCGGCCCCACCCCCGGCCCCGGCCCCGGCCCCACCCCCGGCCCCGGCCCCACCCCCGGCCCCGGCCCCAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=197;END=769171;SUPPORT=6;COVERAGE=14,13,13,13,13;STRAND=+-;AF=0.462;STDEV_LEN=0.816;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:40:7:6", - "chr16\t795446\tSniffles2.INS.2CSF\tN\tCCCCCGTGCTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCTGTGCTGCCCGTGTGGCTGCCCCCGGCCCCGCGCCCTTCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=87;END=795446;SUPPORT=8;COVERAGE=13,13,13,13,13;STRAND=+-;AF=0.615;STDEV_LEN=0.577;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:27:5:8", - "chr16\t795594\tSniffles2.INS.2DSF\tN\tGCTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCTTCTCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCTTCTCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCTGTGCTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCTCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCTTCTCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCGCCCCGCCCCGCCCCTCCCCTCCCCCCCCCCCGC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=621;END=795594;SUPPORT=5;COVERAGE=13,13,13,13,13;STRAND=+-;AF=0.385;STDEV_LEN=2.646;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:27:8:5", - "chr16\t818868\tSniffles2.INS.2ESF\tN\tTGGTGAAGACTGTAGTGATGGTGATGATGGTGAAGACTGTAGTGATGATGGTGGTGAAGACTGTAGTGATGTTGATATTGGTGATGAAGACTATAGTGATAGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTAGTGATGGTGATGATGATGGTGAAGACTGTAGTGATGGTGATGATGGTGAAGACTGTAGCGATGATGGTGAACACTGTAGTGATGTTGATATTGGTGATGAAGACTATAGTGATGGTGATGATAGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTGTAGTGATGGTGATGAGGTGAGACTATCGTGATGGTGATGATAATGGTGAAGACTATAGTGATGTTGATGTCGGTGGTGAAGACTGTAGTGATGGTGATGATAGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTGTAGTGATGGTGATGATGGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTATAGTGATGATGGTGAAGACTGTAGTGATGGTGATGATAGTGGTGAAGACTGTAGTGATGTTAATGGTGAAGGCTATAGTGATGTTGATGGTGGTGAAGACTGTAGCAATGGTTATGATGTTGGTGAAGACAATAGTGATGGTGATGATGGTGAAGACTATAGTGATGGTGATGATGGTGGTGAAGACTGTAGTGATGGTGATGATAGTGGTGAGGACTGTTAGTGATGATAGTGGTGAAGACTGTAGTGATGATGATGGTGAAGACTATAATGATGATGGTGAAGACCGCCGTGATGGTGATGATGGTGAAGACTGTAGCAATGATGATGGTGAAGACTATAGTGATGTTGAGTTGGTGGTGAAGACTGTAGCGATGGTGATGATGATGGTGAAGACTATAGTGATGATGATGTTGAAGACTATAGTGATGATGATGGTGAAGACCGCCGTGATGGTGATGATGGTGAAGACTGTAGCGATGATGATGGTGAAGACTATAGTGATGCTGATGTTGGTGGTGAAGACTGTAGTGATGGTGATGATGATGGTGAAGACTATAGTGATGATGATGGTGAAGACTATAGTGATGATGATGTGAAGACCGCCGTGATGGTGATGATGGTGAAGACTGTAGCGATGATGATGGTGAAGACTATAGTGATGTTGATGTTGG\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=1173;END=818868;SUPPORT=12;COVERAGE=13,12,12,12,12;STRAND=+-;AF=1.000;STDEV_LEN=90.396;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:33:0:12", - "chr16\t824382\tSniffles2.INS.2FSF\tN\tTAGGCCCACGACGGCCAGCAGCGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGGAGCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=150;END=824382;SUPPORT=2;COVERAGE=3,3,3,3,2;STRAND=-;AF=0.667;STDEV_LEN=0.707;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:4:1:2", - "chr16\t824874\tSniffles2.INS.31SF\tN\tCGTCCCGTCCGCGGCACCACCGTCCCATCTGTGGCACCAT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=40;END=824874;SUPPORT=2;COVERAGE=3,2,2,2,2;STRAND=+-;AF=1.000;STDEV_LEN=0.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:5:0:2", - "chr16\t828906\tSniffles2.DEL.68SF\tgcccactggggcccacatcccgcccactgggaccgacatccc\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-42;END=828948;SUPPORT=2;COVERAGE=2,2,2,2,2;STRAND=+-;AF=1.000;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t1/1:5:0:2", - "chr16\t886663\tSniffles2.INS.35SF\tN\tCCACCCTAGGCCCCCGGCGTTCCCCAGGCCCCTCCCACCCTAGGCCCCCGGCGTTCCCCAGGCCCCTCCCACCCTAGGCCCCCGGCGTTCCCCAGGCCCCTCCCACCCTAGGCCCCGGCGTTCCCCAGGCCCCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=134;END=886663;SUPPORT=8;COVERAGE=10,10,10,10,11;STRAND=+-;AF=0.800;STDEV_LEN=0.500;STDEV_POS=22.234;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:2:2:8", - "chr16\t886674\tSniffles2.INS.34SF\tN\tCCCGGCGTTCCCCAGGCCCCTCCCACCCTAGGCCCCCGGCGTTCCCCAGGCCCCTCCCACCCTAGGCCCCCGCGTTCCCCAGGCCCCTCCCACCCTAGG\t60\tGT\tIMPRECISE;SVTYPE=INS;SVLEN=66;END=886674;SUPPORT=2;COVERAGE=10,10,10,10,11;STRAND=+-;AF=0.200;STDEV_LEN=19.348;STDEV_POS=113.694;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/0:2:8:2", - "chr16\t894215\tSniffles2.INS.36SF\tN\tCTGGCTGTCCGCCCACCCATCCCCTGTCCACCGGACCGTCCGCCCACCCGTCCCCATGTCCATCAGACCGTCCGTCCACCTGTCCCCCTGTCCCCTGTCCACCGGACCATTCGCCCACCCATCCCCCTGTCCACCTGGCCATCCGCCCACCTGTCTCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCACTGGACTGTCCGCCCACCTGTCCCCCTGTCCCCTGTCCACCGGACCGTCTGCCCACCCGTCCCCCTGTCCACCTGGCCATCCGCCCACCCATCCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCAGGTCCCCCTGTCCAGCGGACCGTCCACCCACCCGTCCCCCTGTCCACTGGACCGTCCGCCCACCTGTCCCCCTGTCCACCTGGCAGTGCGCCCACCCATCCCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCAGCGGACCGTCCACCCACCT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=521;END=894215;SUPPORT=17;COVERAGE=17,17,17,17,17;STRAND=+-;AF=1.000;STDEV_LEN=57.393;STDEV_POS=5.500;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:47:0:17", - "chr16\t895843\tSniffles2.INS.37SF\tN\tACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCACGGTCCACAG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=59;END=895843;SUPPORT=4;COVERAGE=17,16,16,16,14;STRAND=+-;AF=0.250;STDEV_LEN=0.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:6:12:4", - "chr16\t895843\tSniffles2.INS.39SF\tN\tACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCATGGTCCACAGACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCACGGTCCACAGACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCACGGTCCACAG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=177;END=895843;SUPPORT=8;COVERAGE=17,16,16,16,14;STRAND=+-;AF=0.500;STDEV_LEN=0.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:57:8:8", - "chr16\t896053\tSniffles2.INS.3BSF\tN\tCCACACGCAGGCTGCACGGTCCACAGACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCACGGTCCACACACACGCCTCGGAGGGGTTGTGAGGCTCAGCCAT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=118;END=896053;SUPPORT=8;COVERAGE=17,16,16,16,14;STRAND=+-;AF=0.500;STDEV_LEN=0.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:57:8:8", + "chr16\t362990\tSniffles2.INS.12SF\tN\tGACTTAGCACCGGGGGGTCTCGGGCTGCGGCTGCTCTCCCA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=42;END=362990;SUPPORT=3;COVERAGE=7,6,6,6,5;STRAND=+-;AF=0.5;STDEV_LEN=0.577;STDEV_POS=9.238;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:21:3:3", + "chr16\t370391\tSniffles2.INS.13SF\tN\tCTACCCTGCCCCGGCTCTCACCCCCTACCCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCGGCTCTCACCCCCTACCCCGGCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCGCTACCCTGCCCCCGGCTCTCACCGCTACCCCCCGGCTCTCACCCGCTACCCCGCCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCCGGCCCCCCGGCTCTCACCTCCTACCCGGCCCCGGCTCTCACCCGCTCCCCCGGCCCCCGGCTCTCACCCGCTCACCCCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCTCGGCTCTCACCCCCTACCCCGGCCCCGGCTCTCACCCCCTACCCCTGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCCGGCTCTCACCCGCTACCCCGGCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGGCTCTCACTCC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=736;END=370391;SUPPORT=7;COVERAGE=7,7,7,7,7;STRAND=+-;AF=1;STDEV_LEN=65.282;STDEV_POS=1.095;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:19:0:7", + "chr16\t378308\tSniffles2.INS.14SF\tN\tCCACTCTGACTGCCATCGCCACTCTGACTGCCATCC\t60\tGT\tPRECISE;SVTYPE=INS;SVLEN=36;END=378308;SUPPORT=4;COVERAGE=17,17,17,18,18;STRAND=+-;AF=0.235;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:3:13:4", + "chr16\t378517\tSniffles2.INS.15SF\tN\tGCCATCGCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCTGACTGCCATCGCCACCCACACTGCCATCCCCACCCGCACTGCCATCGCCACCCTGACTGCCATCGCCACCCACAATGCCATCCCCACCCGCACTGCCATCGCCACCCGCACTGCCATCCCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCACACTGCCATC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=240;END=378517;SUPPORT=12;COVERAGE=17,18,18,18,18;STRAND=+-;AF=0.667;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:26:6:12", + "chr16\t397717\tSniffles2.INS.16SF\tN\tTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGTGGGGGTGGGGGTGTGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGTGAGGGAGTCGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGTGAGGGAGTCGGGGGGTGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGGC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=491;END=397717;SUPPORT=3;COVERAGE=3,3,3,3,3;STRAND=+-;AF=1;STDEV_LEN=2.309;STDEV_POS=5.196;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:8:0:3", + "chr16\t504280\tSniffles2.INS.17SF\tN\tTCCATCTCCTCCTGTACCCCCTCACCTCCTTGTGCACCCCCTCACCTCCTGTACCCCCTCACCTCCTCTGTA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=74;END=504280;SUPPORT=4;COVERAGE=4,4,4,4,4;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:11:0:4", + "chr16\t504419\tSniffles2.INS.18SF\tN\tTCACCTCCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCTCACCTCCTCCTGTACCCCTCACCTCCTTGTGCACCCCCTCACCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCCTCACCTCCTCCTGTACCCCCTCACCTCCTTGTGCACCCCCTCACCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCCTCACCTCCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=256;END=504419;SUPPORT=4;COVERAGE=4,4,4,4,5;STRAND=+-;AF=1;STDEV_LEN=0.707;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:11:0:4", + "chr16\t507831\tSniffles2.INS.19SF\tN\tTTCAGTATCATCTGCCCGTTCTGAGCCATTTGCTCTCTAGCCCTACCATACAGCTGCCATCCTAAGAGTACGTTTCCCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=81;END=507831;SUPPORT=4;COVERAGE=5,5,5,5,7;STRAND=+-;AF=0.8;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:1:1:4", + "chr16\t534179\tSniffles2.INS.1ASF\tN\tGGGCCGTGGTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACGGGGCCGTGGTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACGGGGCCGTGGTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=162;END=534179;SUPPORT=5;COVERAGE=5,5,5,5,4;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:13:0:5", + "chr16\t544781\tSniffles2.INS.1BSF\tN\tCGTCTCCCCCACGTCGCCTCCCCCCACGTCGCCTCCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCTCACGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGTCGC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=344;END=544781;SUPPORT=8;COVERAGE=8,8,8,8,8;STRAND=+-;AF=1;STDEV_LEN=4.69;STDEV_POS=25.5;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:22:0:8", + "chr16\t550769\tSniffles2.INS.1CSF\tN\tCGGTGAGGGTCCCCGGTCGGTGAGGGCGCCCCGTCAGTGAGGGTCCCGGTCAGTGAGGGCCCCGGTCGGTGAGGGTCCCCGGTCGGTGAGGGCCCCTGTCGGTGAGGGCCCCGGTCGGTGAGGGACCCGGTCGGTGAGGGCCCCCTGTCGGTGAGGGTCCCCTGTCGGTGAGGGCCCCGGTCGGTGAGGGCCCCGGTCGGTGAGGGTCCCCTGTCGGTGAGGGTCCCCTGTCGGTGAGGGTCCCGGTCGGTGAGGGCCCCGGTCGGTGAGGGTGCCCCGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=280;END=550769;SUPPORT=13;COVERAGE=13,13,13,13,13;STRAND=+-;AF=1;STDEV_LEN=1;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:36:0:13", + "chr16\t553057\tSniffles2.INS.1DSF\tN\tTGCCCCCCACCCCTGCACAGGTGCCCCCTCCCCTACCCCGCTGCACCCACACCCAACTCGTGCCCCCCCACCCCTGCACAGGTGCCCCCTCCCCTACCCCGCTGCACCCACACCCAACTCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=121;END=553057;SUPPORT=6;COVERAGE=12,11,11,11,10;STRAND=+-;AF=0.545;STDEV_LEN=0.577;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:33:5:6", + "chr16\t571110\tSniffles2.INS.1FSF\tN\tTGGCTAGCCTGTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTGTGTGTGTCTGGCTAGCCTGGTGCCCGTGTGTGTGTGTATGTGTGTGTGTGTGTGTGTGTCTGGCTAGCTGGCGCCCGTGGCTAGCCTGGTGCCCGTGTGTGTGTGTATGTATGTGTCTGGCTAGCCTGGTGCCCGTGGCTAGCCTGGTGCCCGTGTGTGTGTGTGTGGGGGGGGCTAGCCTTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTCTGGCTAGCGTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTGTGTGTGCTAGCCTGGCGCCCGTGTGTGTGTGTGTGTGTGTCTGGCTAGCCTGGCACCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=358;END=571110;SUPPORT=16;COVERAGE=18,17,16,16,18;STRAND=+-;AF=1;STDEV_LEN=3.78;STDEV_POS=14.714;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:44:0:16", + "chr16\t579380\tSniffles2.DEL.62SF\tcagagaagagacagacacacagccccgaaggtggtgcaggcacaggccctagaggtgccccgggcccagagactagagatgccccgggcccggagactagaggtgccccgggcccggaga\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-120;END=579500;SUPPORT=6;COVERAGE=11,11,11,11,10;STRAND=+-;AF=0.545;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:33:5:6", + "chr16\t579636\tSniffles2.DEL.61SF\tcccggagactagaggtgccccgggcccggagactagaggtgccccgggcccggagacttgaggtgccccggg\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-72;END=579708;SUPPORT=5;COVERAGE=11,11,11,10,10;STRAND=+-;AF=0.455;STDEV_LEN=11.5;STDEV_POS=105.434\tGT:GQ:DR:DV\t0/1:33:6:5", + "chr16\t585059\tSniffles2.DEL.63SF\tcccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctccccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctccccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctc\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-156;END=585215;SUPPORT=6;COVERAGE=6,6,6,6,6;STRAND=+-;AF=1;STDEV_LEN=0.5;STDEV_POS=56.518\tGT:GQ:DR:DV\t1/1:16:0:6", + "chr16\t587440\tSniffles2.INS.20SF\tN\tTCCCTCCCTTCACTGGGCCTGCTGCCCCAGAGTCCA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=36;END=587440;SUPPORT=5;COVERAGE=5,5,5,5,5;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=41.569;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:13:0:5", + "chr16\t611801\tSniffles2.DEL.64SF\tgggacagccgccttcgcctgtagaatcaagagcagggacagccgccctggcctgtagaatcaagagcacgggacagccgccctggcctgtagaatcaagagcacgggacagccgccctggcctgtagaatcaagagcagggacagccgccctggcctgtagaatcaagagcaagggacagccgccctggcctgtagaatcaagagcaagggacagccgcctttgcctgtagaatcaagagcag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-243;END=612044;SUPPORT=4;COVERAGE=3,4,4,4,4;STRAND=+-;AF=1;STDEV_LEN=0.707;STDEV_POS=14.142\tGT:GQ:DR:DV\t1/1:11:0:4", + "chr16\t631728\tSniffles2.DEL.65SF\tcttctcccaccccttcactgcctctccttccatcctctcctcccaccctctcctcccatccactcctcccatccacttcttccatcct\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-88;END=631816;SUPPORT=17;COVERAGE=17,17,17,17,16;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t1/1:47:0:17", + "chr16\t660943\tSniffles2.INS.23SF\tN\tCCCCCTGTTCGGCCCCTCCCCAGGCCCCCCCCCGCCCGGCCTCAGGCCCCGCCCCCTGTTCGGCCCCTCCCCAGGCCCGGCCTCAGGCCCCGCCCCCTGTTCGGCCCCTCCCCAG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=115;END=660943;SUPPORT=17;COVERAGE=16,16,15,16,16;STRAND=+-;AF=1;STDEV_LEN=1.803;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:47:0:17", + "chr16\t665215\tSniffles2.DEL.66SF\tcctcagtctgcagcctgctagggacgcacggccacactcctgtctttcag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-50;END=665265;SUPPORT=22;COVERAGE=19,21,22,22,21;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t1/1:60:0:22", + "chr16\t696679\tSniffles2.INS.24SF\tN\tCCCACCCCAAAGCCACCATCCGCTCCCACCTCCATAGGGTTGCTGCTGCCCGCCCCTGCCCCCCAGCCCTGTCCCCCCCACCACCCAGCCTGGGCGCACACCCCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=105;END=696679;SUPPORT=10;COVERAGE=11,10,10,10,10;STRAND=+-;AF=1;STDEV_LEN=0.408;STDEV_POS=1.633;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:27:0:10", + "chr16\t746237\tSniffles2.DEL.67SF\tgaggtgggttcactgcgggtctgcctggctgggcagcaggagaggaggtgggttcactgcgggtctgcctggctgggcagcaggagaggaggtgggttcactgcaggtctgtctggctgggcagcaggaggggagaggtggggtcactgcgggtctgcagggctgcaggaggggagaggtggggtcactgcaggtctgtctggctgggcagcaggagaggaggtgggttcactgcaggtctgtctgggcgggctgcaggagaggaggtggggtcactgcgggtctgtctgggcgggctgcaggagag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-307;END=746544;SUPPORT=7;COVERAGE=13,13,13,13,11;STRAND=+-;AF=0.538;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:40:6:7", + "chr16\t760502\tSniffles2.INS.25SF\tN\tAGCCATGAAACCTGGGCCCGGGCTCCCACTCACACCCCACCCCCACCCAGGGCAGCCGTGAAACCTGGGCCCTGGGCTCCCACCCACGCCCCACACCCACCCAGGGC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=107;END=760502;SUPPORT=16;COVERAGE=16,16,16,16,17;STRAND=+-;AF=1;STDEV_LEN=0.518;STDEV_POS=11.667;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:44:0:16", + "chr16\t763776\tSniffles2.INS.26SF\tN\tGCATCCCATCCCCCGTCCCCTCCCCCACACCCCTCCCCCACCCCCACGTCCCCTCCCCACCCCTCCCCCACACCCTCCCCCACCCCTCCCCATGTCCCCTCCCCTACCTCCTCCCCCCGCATCCCCTCCCCCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=133;END=763776;SUPPORT=20;COVERAGE=19,19,20,20,20;STRAND=+-;AF=1;STDEV_LEN=0.789;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:55:0:20", + "chr16\t767712\tSniffles2.INS.2ASF\tN\tGCGCATGGGGGGCGTGGGAGGGGGGTGCGTGGAGGAGGGGCGGTGTGGAGGGGGGCGCGTGGGGGTGTGTGGGGGGGGCACGTGGAGGGGGGCGTGTGGGGGGGTGCGTGGAGGAGGGGCGCGTGGAGGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=130;END=767712;SUPPORT=5;COVERAGE=15,15,15,15,14;STRAND=+-;AF=0.333;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:22:10:5", + "chr16\t767829\tSniffles2.INS.29SF\tN\tGGTGTGGAGGGGGGCGCGTGGGGGTGTGTGGGGGGGGGCACGTGGAGGGGGCGTGTGGGGGGGTGCGTGGAGGAGGGGCGCGTGGAGGA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=89;END=767829;SUPPORT=9;COVERAGE=15,15,15,15,14;STRAND=+-;AF=0.6;STDEV_LEN=3.715;STDEV_POS=36.697;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:34:6:9", + "chr16\t767989\tSniffles2.INS.28SF\tN\tGGGGCACATGGGGGTGCGTGGGGGGCGTGTGGGGGGTGCGTGGAGGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=47;END=767989;SUPPORT=6;COVERAGE=15,15,15,14,14;STRAND=+-;AF=0.4;STDEV_LEN=1.5;STDEV_POS=11.547;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:34:9:6", + "chr16\t769171\tSniffles2.INS.2BSF\tN\tCCCCGGCCCCGGCCCCAGCCCCGGCCCCACCCCGGCCCCAGCCCCAGCCCCAGCCCCAGCCCCACCCCCGGCCCCAGCCCCAGCCCCAGCCCCAGCCCCGGCCCCACCCCCACCCCCGGCCCCGGCCCCGGCCCCACCCCCGGCCCCGGCCCCGGCCCCACCCCCGGCCCCGGCCCCACCCCCGGCCCCGGCCCCAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=197;END=769171;SUPPORT=6;COVERAGE=14,13,13,13,13;STRAND=+-;AF=0.462;STDEV_LEN=0.816;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:40:7:6", + "chr16\t795446\tSniffles2.INS.2CSF\tN\tCCCCCGTGCTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCTGTGCTGCCCGTGTGGCTGCCCCCGGCCCCGCGCCCTTCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=87;END=795446;SUPPORT=8;COVERAGE=13,13,13,13,13;STRAND=+-;AF=0.615;STDEV_LEN=0.577;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:27:5:8", + "chr16\t795594\tSniffles2.INS.2DSF\tN\tGCTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCTTCTCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCTTCTCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCTGTGCTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCTCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCTTCTCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCGCCCCGCCCCGCCCCTCCCCTCCCCCCCCCCCGC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=621;END=795594;SUPPORT=5;COVERAGE=13,13,13,13,13;STRAND=+-;AF=0.385;STDEV_LEN=2.646;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:27:8:5", + "chr16\t818868\tSniffles2.INS.2ESF\tN\tTGGTGAAGACTGTAGTGATGGTGATGATGGTGAAGACTGTAGTGATGATGGTGGTGAAGACTGTAGTGATGTTGATATTGGTGATGAAGACTATAGTGATAGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTAGTGATGGTGATGATGATGGTGAAGACTGTAGTGATGGTGATGATGGTGAAGACTGTAGCGATGATGGTGAACACTGTAGTGATGTTGATATTGGTGATGAAGACTATAGTGATGGTGATGATAGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTGTAGTGATGGTGATGAGGTGAGACTATCGTGATGGTGATGATAATGGTGAAGACTATAGTGATGTTGATGTCGGTGGTGAAGACTGTAGTGATGGTGATGATAGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTGTAGTGATGGTGATGATGGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTATAGTGATGATGGTGAAGACTGTAGTGATGGTGATGATAGTGGTGAAGACTGTAGTGATGTTAATGGTGAAGGCTATAGTGATGTTGATGGTGGTGAAGACTGTAGCAATGGTTATGATGTTGGTGAAGACAATAGTGATGGTGATGATGGTGAAGACTATAGTGATGGTGATGATGGTGGTGAAGACTGTAGTGATGGTGATGATAGTGGTGAGGACTGTTAGTGATGATAGTGGTGAAGACTGTAGTGATGATGATGGTGAAGACTATAATGATGATGGTGAAGACCGCCGTGATGGTGATGATGGTGAAGACTGTAGCAATGATGATGGTGAAGACTATAGTGATGTTGAGTTGGTGGTGAAGACTGTAGCGATGGTGATGATGATGGTGAAGACTATAGTGATGATGATGTTGAAGACTATAGTGATGATGATGGTGAAGACCGCCGTGATGGTGATGATGGTGAAGACTGTAGCGATGATGATGGTGAAGACTATAGTGATGCTGATGTTGGTGGTGAAGACTGTAGTGATGGTGATGATGATGGTGAAGACTATAGTGATGATGATGGTGAAGACTATAGTGATGATGATGTGAAGACCGCCGTGATGGTGATGATGGTGAAGACTGTAGCGATGATGATGGTGAAGACTATAGTGATGTTGATGTTGG\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=1173;END=818868;SUPPORT=12;COVERAGE=13,12,12,12,12;STRAND=+-;AF=1;STDEV_LEN=90.396;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:33:0:12", + "chr16\t824382\tSniffles2.INS.2FSF\tN\tTAGGCCCACGACGGCCAGCAGCGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGGAGCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=150;END=824382;SUPPORT=2;COVERAGE=3,3,3,3,2;STRAND=-;AF=0.667;STDEV_LEN=0.707;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:4:1:2", + "chr16\t824874\tSniffles2.INS.31SF\tN\tCGTCCCGTCCGCGGCACCACCGTCCCATCTGTGGCACCAT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=40;END=824874;SUPPORT=2;COVERAGE=3,2,2,2,2;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:5:0:2", + "chr16\t828906\tSniffles2.DEL.68SF\tgcccactggggcccacatcccgcccactgggaccgacatccc\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-42;END=828948;SUPPORT=2;COVERAGE=2,2,2,2,2;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t1/1:5:0:2", + "chr16\t886663\tSniffles2.INS.35SF\tN\tCCACCCTAGGCCCCCGGCGTTCCCCAGGCCCCTCCCACCCTAGGCCCCCGGCGTTCCCCAGGCCCCTCCCACCCTAGGCCCCCGGCGTTCCCCAGGCCCCTCCCACCCTAGGCCCCGGCGTTCCCCAGGCCCCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=134;END=886663;SUPPORT=8;COVERAGE=10,10,10,10,11;STRAND=+-;AF=0.8;STDEV_LEN=0.5;STDEV_POS=22.234;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:2:2:8", + "chr16\t886674\tSniffles2.INS.34SF\tN\tCCCGGCGTTCCCCAGGCCCCTCCCACCCTAGGCCCCCGGCGTTCCCCAGGCCCCTCCCACCCTAGGCCCCCGCGTTCCCCAGGCCCCTCCCACCCTAGG\t60\tGT\tIMPRECISE;SVTYPE=INS;SVLEN=66;END=886674;SUPPORT=2;COVERAGE=10,10,10,10,11;STRAND=+-;AF=0.2;STDEV_LEN=19.348;STDEV_POS=113.694;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/0:2:8:2", + "chr16\t894215\tSniffles2.INS.36SF\tN\tCTGGCTGTCCGCCCACCCATCCCCTGTCCACCGGACCGTCCGCCCACCCGTCCCCATGTCCATCAGACCGTCCGTCCACCTGTCCCCCTGTCCCCTGTCCACCGGACCATTCGCCCACCCATCCCCCTGTCCACCTGGCCATCCGCCCACCTGTCTCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCACTGGACTGTCCGCCCACCTGTCCCCCTGTCCCCTGTCCACCGGACCGTCTGCCCACCCGTCCCCCTGTCCACCTGGCCATCCGCCCACCCATCCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCAGGTCCCCCTGTCCAGCGGACCGTCCACCCACCCGTCCCCCTGTCCACTGGACCGTCCGCCCACCTGTCCCCCTGTCCACCTGGCAGTGCGCCCACCCATCCCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCAGCGGACCGTCCACCCACCT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=521;END=894215;SUPPORT=17;COVERAGE=17,17,17,17,17;STRAND=+-;AF=1;STDEV_LEN=57.393;STDEV_POS=5.5;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:47:0:17", + "chr16\t895843\tSniffles2.INS.37SF\tN\tACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCACGGTCCACAG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=59;END=895843;SUPPORT=4;COVERAGE=17,16,16,16,14;STRAND=+-;AF=0.25;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:6:12:4", + "chr16\t895843\tSniffles2.INS.39SF\tN\tACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCATGGTCCACAGACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCACGGTCCACAGACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCACGGTCCACAG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=177;END=895843;SUPPORT=8;COVERAGE=17,16,16,16,14;STRAND=+-;AF=0.5;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:57:8:8", + "chr16\t896053\tSniffles2.INS.3BSF\tN\tCCACACGCAGGCTGCACGGTCCACAGACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCACGGTCCACACACACGCCTCGGAGGGGTTGTGAGGCTCAGCCAT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=118;END=896053;SUPPORT=8;COVERAGE=17,16,16,16,14;STRAND=+-;AF=0.5;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:57:8:8", "chr16\t896059\tSniffles2.INS.3ASF\tN\tGCAGGCTGCACGGTCCACAGACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACA\t60\tGT\tIMPRECISE;SVTYPE=INS;SVLEN=58;END=896059;SUPPORT=3;COVERAGE=17,16,16,16,14;STRAND=+-;AF=0.188;STDEV_LEN=0.577;STDEV_POS=38.553;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/0:6:13:3", - "chr16\t903595\tSniffles2.INS.3ESF\tN\tGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTATCTCTGCTGTGTGGTGGTGACCTTTGCACTGCCCGTGGGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCCGTCTCTGCTGTGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCCACAGGACGCCTGTCTCTGCTGTGTGGTGGTGACCTTTGCACTGCCCGTGGGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCTGTCTCTGCTGTGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCCGTCTCTGCTGCGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=600;END=903595;SUPPORT=6;COVERAGE=8,8,8,8,8;STRAND=+-;AF=0.750;STDEV_LEN=0.577;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:3:2:6", - "chr16\t949510\tSniffles2.DEL.6ESF\taatgacagagtcagccaacgacagagtcagagccaacgacagagtcagagacaatgacagagtcagagacaacgacagagtcagagacgacagagtcagagacgacagagtcagagccaatgacagagtcagccaatgacagagtcagagccaacgacagagtcagccaatgacagagtcagagacaacgacagagtcagagacaacgacagagtcagagacgacagagtcagagacgacagagtcagagccaatgacagagtcagccaatgacagagtcagagccaacgacagagtcagccaatgacagagtcagagacaacgacagagttagagacaacgacagagtcagccaaggacagcgtcagccaacgacagaatcagagacaacgacagagtcagccaacgacagagtcagagccaatgagagtcagagccaacgacagagtcagagacgacagagtcagagccaacgacagagtcagccaacgacagagtcagagccaacgacagagtcagccaacgacagagtcagagccaacgacagagtcagccaacgacagagtcagagacaacgacagagtcagagccaacgacagagtcagagacgaaagactcagagccaatgacagagtcagagccaatgacagagtcagccaacgacagagtcagagccaacgacagagtcagccaatgacagagtcagagacagcgacagagttagagacaat\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-731;END=950241;SUPPORT=14;COVERAGE=22,22,22,23,22;STRAND=+-;AF=0.636;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/1:40:8:14", - "chr16\t950488\tSniffles2.INS.40SF\tN\tCAACGACAGAGTCAGAGACAACGACAGAGTCAGAGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=36;END=950488;SUPPORT=14;COVERAGE=22,23,23,23,23;STRAND=+-;AF=0.609;STDEV_LEN=0.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:50:9:14", - "chr16\t952880\tSniffles2.DEL.71SF\ttccacacagacacccaccccaaaccagcctcctacacgtccacacagacacccaccccaaaccagcctcctgcacgtccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacacg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-178;END=953058;SUPPORT=16;COVERAGE=24,24,25,25,25;STRAND=+-;AF=0.640;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/1:45:9:16", - "chr16\t953293\tSniffles2.DEL.72SF\tcaaaccagcctcctacacgtccacacagacacccaccccaaaccagcttcctacacgttcacacagacacgg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-72;END=953365;SUPPORT=15;COVERAGE=24,25,25,25,25;STRAND=+-;AF=0.600;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/1:58:10:15", - "chr16\t953349\tSniffles2.DEL.75SF\tgttcacacagacacggaccccaaaccagcctcctacacgtccacacagacacccaccccaaaccagcctcctacacgttcacacagacacggaccccacaccagcctcctacacgtccacacagacacccaccccaaaccagcctcctgcacgtccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacacgtccacacagacacccactccaaaccagcctcctacacgtccacacagacaccccaaaccagcctcctacatgtccacacagacacccaccccaaaccagcctcctacatgtccacacagacacccaccccaaaccagcctcctacatgtccacacagacacccaccccaaaccagcctcctacat\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-440;END=953789;SUPPORT=9;COVERAGE=25,25,25,25,25;STRAND=+-;AF=0.360;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/1:45:16:9", - "chr16\t953507\tSniffles2.DEL.73SF\tacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacacgtccacacag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-106;END=953613;SUPPORT=15;COVERAGE=25,25,25,25,25;STRAND=+-;AF=0.600;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/1:58:10:15", - "chr16\t954972\tSniffles2.INS.41SF\tN\tCTAAGCGAACCAGACACGTTACATAAAATGCGTGCCTGCAGCAGACGGGGTCTGTGCACACACACACACAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=71;END=954972;SUPPORT=13;COVERAGE=25,24,24,26,26;STRAND=+-;AF=0.542;STDEV_LEN=0.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:60:11:13", - "chr16\t955127\tSniffles2.INS.44SF\tN\tAACCAGACACGTTACATAAAATGCGTGCCTGCTGCAGACGTGGTGTGTGTATACACACACACACATCTAAGTAAACCAGACACGTTACATAAAATGCGTGCCCGCAGCAGACGTAGTGTGTGCATCCACACACACACATCTAAGTAAACTAGACACGTTACATAAAATGCGTGCCCACAGCAGACGCGGTGTGTGCGTACACACACACACATCTAAGTAAACTAGACACGTTACATAAAATGCGTGCCCGCAGCAGACGCAGTGTGTGCATACACATCTAAGTG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=284;END=955127;SUPPORT=13;COVERAGE=27,26,26,26,27;STRAND=+-;AF=0.500;STDEV_LEN=0.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:60:13:13", - "chr16\t955473\tSniffles2.INS.45SF\tN\tACACACACACACACACATCTAAGTGAACCAGACACGTTACATAAAATGCGTGCCTGCAGCAGATGCGGTGTGTGCATACACACACACACATCTAAGTAAACCAGACACGTTACATAAAATGCGTGCCTGCAGCAGACGTAGTGTGTGCATCCACACACACACATCTAAGTAAACTAGACACGTTACATAAAATGCGTGCCCGCAGCAGAGACGGTGTGTGCGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=223;END=955473;SUPPORT=15;COVERAGE=24,26,26,27,27;STRAND=+-;AF=0.577;STDEV_LEN=0.500;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:60:11:15", - "chr16\t955933\tSniffles2.INS.46SF\tN\tCACGGCACCCACCCCACGACGGCTCTCTCACATCCACAGGTCTCCGAGTTCACGTCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=57;END=955933;SUPPORT=12;COVERAGE=26,27,27,29,29;STRAND=+-;AF=0.444;STDEV_LEN=0.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:60:15:12", + "chr16\t903595\tSniffles2.INS.3ESF\tN\tGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTATCTCTGCTGTGTGGTGGTGACCTTTGCACTGCCCGTGGGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCCGTCTCTGCTGTGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCCACAGGACGCCTGTCTCTGCTGTGTGGTGGTGACCTTTGCACTGCCCGTGGGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCTGTCTCTGCTGTGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCCGTCTCTGCTGCGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=600;END=903595;SUPPORT=6;COVERAGE=8,8,8,8,8;STRAND=+-;AF=0.75;STDEV_LEN=0.577;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:3:2:6", + "chr16\t949510\tSniffles2.DEL.6ESF\taatgacagagtcagccaacgacagagtcagagccaacgacagagtcagagacaatgacagagtcagagacaacgacagagtcagagacgacagagtcagagacgacagagtcagagccaatgacagagtcagccaatgacagagtcagagccaacgacagagtcagccaatgacagagtcagagacaacgacagagtcagagacaacgacagagtcagagacgacagagtcagagacgacagagtcagagccaatgacagagtcagccaatgacagagtcagagccaacgacagagtcagccaatgacagagtcagagacaacgacagagttagagacaacgacagagtcagccaaggacagcgtcagccaacgacagaatcagagacaacgacagagtcagccaacgacagagtcagagccaatgagagtcagagccaacgacagagtcagagacgacagagtcagagccaacgacagagtcagccaacgacagagtcagagccaacgacagagtcagccaacgacagagtcagagccaacgacagagtcagccaacgacagagtcagagacaacgacagagtcagagccaacgacagagtcagagacgaaagactcagagccaatgacagagtcagagccaatgacagagtcagccaacgacagagtcagagccaacgacagagtcagccaatgacagagtcagagacagcgacagagttagagacaat\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-731;END=950241;SUPPORT=14;COVERAGE=22,22,22,23,22;STRAND=+-;AF=0.636;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:40:8:14", + "chr16\t950488\tSniffles2.INS.40SF\tN\tCAACGACAGAGTCAGAGACAACGACAGAGTCAGAGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=36;END=950488;SUPPORT=14;COVERAGE=22,23,23,23,23;STRAND=+-;AF=0.609;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:50:9:14", + "chr16\t952880\tSniffles2.DEL.71SF\ttccacacagacacccaccccaaaccagcctcctacacgtccacacagacacccaccccaaaccagcctcctgcacgtccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacacg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-178;END=953058;SUPPORT=16;COVERAGE=24,24,25,25,25;STRAND=+-;AF=0.64;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:45:9:16", + "chr16\t953293\tSniffles2.DEL.72SF\tcaaaccagcctcctacacgtccacacagacacccaccccaaaccagcttcctacacgttcacacagacacgg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-72;END=953365;SUPPORT=15;COVERAGE=24,25,25,25,25;STRAND=+-;AF=0.6;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:58:10:15", + "chr16\t953349\tSniffles2.DEL.75SF\tgttcacacagacacggaccccaaaccagcctcctacacgtccacacagacacccaccccaaaccagcctcctacacgttcacacagacacggaccccacaccagcctcctacacgtccacacagacacccaccccaaaccagcctcctgcacgtccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacacgtccacacagacacccactccaaaccagcctcctacacgtccacacagacaccccaaaccagcctcctacatgtccacacagacacccaccccaaaccagcctcctacatgtccacacagacacccaccccaaaccagcctcctacatgtccacacagacacccaccccaaaccagcctcctacat\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-440;END=953789;SUPPORT=9;COVERAGE=25,25,25,25,25;STRAND=+-;AF=0.36;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:45:16:9", + "chr16\t953507\tSniffles2.DEL.73SF\tacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacacgtccacacag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-106;END=953613;SUPPORT=15;COVERAGE=25,25,25,25,25;STRAND=+-;AF=0.6;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:58:10:15", + "chr16\t954972\tSniffles2.INS.41SF\tN\tCTAAGCGAACCAGACACGTTACATAAAATGCGTGCCTGCAGCAGACGGGGTCTGTGCACACACACACACAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=71;END=954972;SUPPORT=13;COVERAGE=25,24,24,26,26;STRAND=+-;AF=0.542;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:60:11:13", + "chr16\t955127\tSniffles2.INS.44SF\tN\tAACCAGACACGTTACATAAAATGCGTGCCTGCTGCAGACGTGGTGTGTGTATACACACACACACATCTAAGTAAACCAGACACGTTACATAAAATGCGTGCCCGCAGCAGACGTAGTGTGTGCATCCACACACACACATCTAAGTAAACTAGACACGTTACATAAAATGCGTGCCCACAGCAGACGCGGTGTGTGCGTACACACACACACATCTAAGTAAACTAGACACGTTACATAAAATGCGTGCCCGCAGCAGACGCAGTGTGTGCATACACATCTAAGTG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=284;END=955127;SUPPORT=13;COVERAGE=27,26,26,26,27;STRAND=+-;AF=0.5;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:60:13:13", + "chr16\t955473\tSniffles2.INS.45SF\tN\tACACACACACACACACATCTAAGTGAACCAGACACGTTACATAAAATGCGTGCCTGCAGCAGATGCGGTGTGTGCATACACACACACACATCTAAGTAAACCAGACACGTTACATAAAATGCGTGCCTGCAGCAGACGTAGTGTGTGCATCCACACACACACATCTAAGTAAACTAGACACGTTACATAAAATGCGTGCCCGCAGCAGAGACGGTGTGTGCGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=223;END=955473;SUPPORT=15;COVERAGE=24,26,26,27,27;STRAND=+-;AF=0.577;STDEV_LEN=0.5;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:60:11:15", + "chr16\t955933\tSniffles2.INS.46SF\tN\tCACGGCACCCACCCCACGACGGCTCTCTCACATCCACAGGTCTCCGAGTTCACGTCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=57;END=955933;SUPPORT=12;COVERAGE=26,27,27,29,29;STRAND=+-;AF=0.444;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:60:15:12", "chr16\t956173\tSniffles2.INS.47SF\tN\tCCCACGACGGCTCTCTCACATCCACAGGTCTCCGAGTTCACGTCTCACGGCGCCCA\t60\tGT\tPRECISE;SVTYPE=INS;SVLEN=57;END=956173;SUPPORT=5;COVERAGE=27,29,29,29,29;STRAND=+-;AF=0.172;STDEV_LEN=0.577;STDEV_POS=10.392;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/0:16:24:5", - "chr16\t960401\tSniffles2.DEL.7CSF\tacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacaacactggatcacaacccagacaccatctcatggtgacaacacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacaacacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacaacacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagac\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-864;END=961265;SUPPORT=13;COVERAGE=31,31,31,30,30;STRAND=+-;AF=0.419;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/1:60:18:13", - "chr16\t960535\tSniffles2.DEL.78SF\tcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacaacacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-262;END=960797;SUPPORT=14;COVERAGE=31,31,31,31,30;STRAND=+-;AF=0.452;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/1:60:17:14", - "chr16\t961793\tSniffles2.DEL.7ESF\tacagactcacggtgacagcacgggatcacgacccag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-36;END=961829;SUPPORT=13;COVERAGE=30,30,30,30,30;STRAND=+-;AF=0.433;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/1:60:17:13", - "chr16\t961981\tSniffles2.DEL.7FSF\tacagactcacggtgacagcacgggatcaccacccag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-36;END=962017;SUPPORT=12;COVERAGE=30,30,30,30,30;STRAND=+-;AF=0.400;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/1:60:18:12", - "chr16\t1075978\tSniffles2.INS.4ASF\tN\tCCCTCCTCCCCTCCCCCTCCTTTCCCTCCCTCTCTCCCTCTCTCCTCCCCGCCTCCCCATCCCTCTCCCTCTCCCTCCTCTCTCTCTCCCCTACCCTGTCTTTCTCTCTGCCTCCCCGCCTCCCCTTCCCTCTCCCCATACCCTGTCTTTCTCTCTCCCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=160;END=1075978;SUPPORT=5;COVERAGE=8,5,5,5,4;STRAND=+-;AF=1.000;STDEV_LEN=1.155;STDEV_POS=8.737;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:13:0:5", - "chr16\t1076128\tSniffles2.DEL.84SF\tcctccccgcctccccatccctctccctctccctcctctctctctccccctaccctgttttctctctc\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-67;END=1076195;SUPPORT=2;COVERAGE=6,5,4,4,3;STRAND=+;AF=0.500;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/1:14:2:2", - "chr16\t1190923\tSniffles2.INS.4ESF\tN\tGGGTTTCGCTGACCCAGCAGGCTGGCCTGGTTGTGTGGCCTCAGGCACACTCGGGGTTTCGGTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTCTGACTCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTCTGACTCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTCTTACTCAGCAGGCTGGCCTGGCTGTGTGGCCTCCGGCACACTCGGGGTCTCTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTTTCGGTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCAGGGTTTTGGTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTTGGGGTCTCTGACCCAGTAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=523;END=1190923;SUPPORT=3;COVERAGE=10,10,10,10,11;STRAND=+;AF=0.300;STDEV_LEN=2.646;STDEV_POS=50.013;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:10:7:3", - "chr16\t1191001\tSniffles2.DEL.86SF\tcctggctgtgtggcctcaggcacactcggggtctctgacccagcaggctggcctggctgtgtggcctcaggcacactcggggtctctctgactcagcaggctggcctggctgtgtggcctcaggcacactcggggtctctctgactcagcaggctggcctggctgtgtggcctcaggcacactcggggtctctcttactcagcaggctgg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-210;END=1191211;SUPPORT=7;COVERAGE=10,10,11,11,11;STRAND=+-;AF=0.636;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/1:20:4:7", - "chr16\t1204953\tSniffles2.INS.50SF\tN\tGGGCCCCAGATCAGTGCCGGGGAGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGGCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGGCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=418;END=1204953;SUPPORT=8;COVERAGE=17,16,15,15,15;STRAND=+-;AF=0.533;STDEV_LEN=0.816;STDEV_POS=64.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:47:7:8", - "chr16\t1204961\tSniffles2.INS.4FSF\tN\tAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=209;END=1204961;SUPPORT=8;COVERAGE=17,16,15,15,15;STRAND=+-;AF=0.533;STDEV_LEN=0.577;STDEV_POS=91.065;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:47:7:8", - "chr16\t1231234\tSniffles2.INS.52SF\tN\tCCCAGCTCCCCATGGACTAGTCCCAGCCCCAGCCCAGCTCCCCATGGTCTCACCCCCAGCCCCAGCCCAGCTCCCCATGGACTAGTCCCATCCCCCGGCCCCAGCTCCCCATGGTCTCACCCCCAGCTCCA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=132;END=1231234;SUPPORT=4;COVERAGE=14,14,14,14,14;STRAND=-;AF=0.286;STDEV_LEN=0.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:12:10:4", - "chr16\t1231416\tSniffles2.INS.53SF\tN\tCTCACCCCCAGCCCCAGCCCAGCTCCCCATGGACTAGTCGCAGCCCCCGGCCCCAGCTCCCCATGGTCTCACCCCCAGCTCCCCATGGACTAGTCCCAGCCCCAGCCCAGCTCCCCATGGTCTCACCCCCAGCCCCAGCCCAGCTCCCCATGGACTAGTCCCAGCCCCCGGCCCCAGCTCCCCATGGTCTCACCCCCAGCTCCAGCCCAGCTCCCCATGGACTAGTCCCAGCCCCAGCCCAGCTCCCCATGGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=252;END=1231416;SUPPORT=4;COVERAGE=14,14,14,14,13;STRAND=-;AF=0.286;STDEV_LEN=0.707;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:12:10:4", - "chr16\t1248124\tSniffles2.DEL.8CSF\tcactcacacatgtacacatgtgtgtgcacacacgcacacatatg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-44;END=1248168;SUPPORT=4;COVERAGE=1,4,4,4,5;STRAND=+-;AF=1.000;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t1/1:11:0:4", - "chr16\t1248322\tSniffles2.DEL.8DSF\tgcacatatgcacacacggatgttcacatgcacacacgaacacatgcacacattcacaca\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-59;END=1248381;SUPPORT=4;COVERAGE=4,4,4,4,6;STRAND=+-;AF=1.000;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t1/1:11:0:4", - "chr16\t1254908\tSniffles2.DEL.8ESF\tccatggggagctggggccgggggctgggactagtccatggggagctgggctggggctgggggtgaga\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-67;END=1254975;SUPPORT=8;COVERAGE=14,14,14,14,14;STRAND=+-;AF=0.571;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/1:37:6:8", - "chr16\t1254975\tSniffles2.INS.57SF\tN\tCCATGGGGAGCTGGGCTGGGGCTGGGACTAGTCCATGGGGAGCTGGGCTGGGGCTGGGACTAGTTCATGGGGAGCTGGGCTGGGGCTGGGACTAGTTCATGGGAGCTGGGCTGGGGCTGGGACTAGTCCATGGGGAGCTGGGCTGGGGCTGGGACTAGTTCATGGGGAGCTGGGCTGGGGCTGGGGGTGAGTCCATGGGGAGCTGGGCTGGGGCTGGGGGTGAGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=225;END=1254975;SUPPORT=6;COVERAGE=14,14,14,14,14;STRAND=+-;AF=0.429;STDEV_LEN=0.577;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:37:8:6", - "chr16\t1258684\tSniffles2.INS.58SF\tN\tTGAGCCCCCTCCCCCACCCTGAGCCCCCTCCCCTGTCTTGAGCCCCTGCTCCATCCTGAGTCCCCTCCCCCACACTGAGCCCCCTCCCCTTTCTTGAGCCCCTCATCCATCCTGAGCCCCTCCTCCATCCTGAGCCCCCTCCCCCATCCTGGGCCCCCTCCCCTTTCTTGAGCCCCCCTCCCCCACCCTGAGCCCCCTCCCCTTTCTTGAGCCCCCTCCCCCACCTGAGCCCCTTCCCCTTTCTTGAGTCCCTCCTCCATCCTGAGCCCCCTCCCCTTTCTTGAGCCCCTCCTCCACCCTCAGCCCCCTCCCCTTTCTTGAGCCCCTCCTCCACCCTCAGCCCCCTCCCCTTTCT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=355;END=1258684;SUPPORT=14;COVERAGE=14,14,14,14,14;STRAND=+-;AF=1.000;STDEV_LEN=37.175;STDEV_POS=1.690;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:39:0:14", - "chr16\t1260690\tSniffles2.INS.59SF\tN\tAGCCCGGAGACCCACGTCCACACACAGCCCGGAGACCCACATCCACACAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=50;END=1260690;SUPPORT=7;COVERAGE=15,15,15,16,16;STRAND=+-;AF=0.467;STDEV_LEN=0.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:47:8:7", - "chr16\t1264730\tSniffles2.DEL.90SF\ttgtgtgtatgcgtgtgcatatgtaaggatgtgtgcg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-36;END=1264766;SUPPORT=6;COVERAGE=15,15,13,12,12;STRAND=+-;AF=0.462;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/1:40:7:6", - "chr16\t1308390\tSniffles2.DEL.91SF\ttgagtgagggagggaatgagtgagggagggaatgag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-36;END=1308426;SUPPORT=12;COVERAGE=12,12,12,12,12;STRAND=+-;AF=1.000;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t1/1:33:0:12", - "chr16\t1345656\tSniffles2.INS.5BSF\tN\tGCAACCCCAGCCTCCCCAGCCTCCCCAGCAACCCCAGCCTCCCCAGCAACCCCAGCCTCCTCA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=63;END=1345656;SUPPORT=14;COVERAGE=26,26,26,25,24;STRAND=+-;AF=0.538;STDEV_LEN=0.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:60:12:14", - "chr16\t1356874\tSniffles2.DEL.93SF\t\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-42;END=1356916;SUPPORT=3;COVERAGE=6,5,5,5,5;STRAND=+-;AF=0.600;STDEV_LEN=0.000;STDEV_POS=0.000\tGT:GQ:DR:DV\t0/1:11:2:3" - ], - [ - "##fileformat=VCFv4.2", - "##source=Sniffles2_2.0.7", - "##command=\"/usr/local/bin/sniffles --input test.snf --reference hg38.test.fa -t 4 --vcf project.vcf.gz\"" + "chr16\t960401\tSniffles2.DEL.7CSF\tacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacaacactggatcacaacccagacaccatctcatggtgacaacacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacaacacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacaacacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagac\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-864;END=961265;SUPPORT=13;COVERAGE=31,31,31,30,30;STRAND=+-;AF=0.419;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:60:18:13", + "chr16\t960535\tSniffles2.DEL.78SF\tcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacaacacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-262;END=960797;SUPPORT=14;COVERAGE=31,31,31,31,30;STRAND=+-;AF=0.452;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:60:17:14", + "chr16\t961793\tSniffles2.DEL.7ESF\tacagactcacggtgacagcacgggatcacgacccag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-36;END=961829;SUPPORT=13;COVERAGE=30,30,30,30,30;STRAND=+-;AF=0.433;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:60:17:13", + "chr16\t961981\tSniffles2.DEL.7FSF\tacagactcacggtgacagcacgggatcaccacccag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-36;END=962017;SUPPORT=12;COVERAGE=30,30,30,30,30;STRAND=+-;AF=0.4;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:60:18:12", + "chr16\t1075978\tSniffles2.INS.4ASF\tN\tCCCTCCTCCCCTCCCCCTCCTTTCCCTCCCTCTCTCCCTCTCTCCTCCCCGCCTCCCCATCCCTCTCCCTCTCCCTCCTCTCTCTCTCCCCTACCCTGTCTTTCTCTCTGCCTCCCCGCCTCCCCTTCCCTCTCCCCATACCCTGTCTTTCTCTCTCCCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=160;END=1075978;SUPPORT=5;COVERAGE=8,5,5,5,4;STRAND=+-;AF=1;STDEV_LEN=1.155;STDEV_POS=8.737;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:13:0:5", + "chr16\t1076128\tSniffles2.DEL.84SF\tcctccccgcctccccatccctctccctctccctcctctctctctccccctaccctgttttctctctc\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-67;END=1076195;SUPPORT=2;COVERAGE=6,5,4,4,3;STRAND=+;AF=0.5;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:14:2:2", + "chr16\t1190923\tSniffles2.INS.4ESF\tN\tGGGTTTCGCTGACCCAGCAGGCTGGCCTGGTTGTGTGGCCTCAGGCACACTCGGGGTTTCGGTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTCTGACTCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTCTGACTCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTCTTACTCAGCAGGCTGGCCTGGCTGTGTGGCCTCCGGCACACTCGGGGTCTCTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTTTCGGTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCAGGGTTTTGGTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTTGGGGTCTCTGACCCAGTAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=523;END=1190923;SUPPORT=3;COVERAGE=10,10,10,10,11;STRAND=+;AF=0.3;STDEV_LEN=2.646;STDEV_POS=50.013;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:10:7:3", + "chr16\t1191001\tSniffles2.DEL.86SF\tcctggctgtgtggcctcaggcacactcggggtctctgacccagcaggctggcctggctgtgtggcctcaggcacactcggggtctctctgactcagcaggctggcctggctgtgtggcctcaggcacactcggggtctctctgactcagcaggctggcctggctgtgtggcctcaggcacactcggggtctctcttactcagcaggctgg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-210;END=1191211;SUPPORT=7;COVERAGE=10,10,11,11,11;STRAND=+-;AF=0.636;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:20:4:7", + "chr16\t1204953\tSniffles2.INS.50SF\tN\tGGGCCCCAGATCAGTGCCGGGGAGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGGCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGGCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=418;END=1204953;SUPPORT=8;COVERAGE=17,16,15,15,15;STRAND=+-;AF=0.533;STDEV_LEN=0.816;STDEV_POS=64;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:47:7:8" ], [ "##contig=", @@ -2384,7 +2479,6 @@ "##FORMAT=", "##FORMAT=", "##FORMAT=", - "##FILTER=", "##FILTER=", "##FILTER=", "##FILTER=", @@ -2414,77 +2508,82 @@ "##INFO=", "##INFO=", "##INFO=", + "##bcftools_viewVersion=1.20+htslib-1.20" + ], + [ "#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO\tFORMAT\ttest", - "chr16\t81919\tSniffles2.INS.0MF\tN\tCCCCTTCTTCCCACCACCCTATCTCCGGGAAGCCCTCCTGAATGCTCCCACGCTGGCCCCTTCTTCCCACCACCCTACCTCCGGGAAGGCCTCCTGAATGCTCCCCACGCTGGCCCCTTCTTCCCACCACCCTACCTCCGGGAAGCCCTCCTGAATGCTCCCCACGCTGG\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=170;END=81919;SUPPORT=5;COVERAGE=22,23,23,23,23;STRAND=+-;STDEV_LEN=137.140;STDEV_POS=195.377\tGT:GQ:DR:DV:ID\t0/1:38:15:8:Sniffles2.INS.4SF,Sniffles2.INS.1SF,Sniffles2.INS.0SF,Sniffles2.INS.3SF,Sniffles2.INS.2SF", - "chr16\t153120\tSniffles2.INS.2MF\tN\tACAGTGGGGAGGGGACAGTGGGGAGAGGACAGTAAGGAGGGGACCATGGGGAGGAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=56;END=153120;SUPPORT=23;COVERAGE=22,23,23,23,23;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t1/1:60:0:23:Sniffles2.INS.5SF", - "chr16\t160389\tSniffles2.INS.1MF\tN\tGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCAGGATGGCTTGTGGGGCACAGGCTGCAAGAGGTGCCCAGGACGGCTTGTGGGGCACAGGTTGTGAGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=145;END=160389;SUPPORT=9;COVERAGE=28,29,29,28,27;STRAND=+-;STDEV_LEN=208.153;STDEV_POS=274.819\tGT:GQ:DR:DV:ID\t1/1:26:4:24:Sniffles2.INS.ESF,Sniffles2.INS.BSF,Sniffles2.INS.CSF,Sniffles2.INS.7SF,Sniffles2.INS.6SF,Sniffles2.INS.ASF,Sniffles2.INS.8SF,Sniffles2.INS.9SF,Sniffles2.INS.DSF", - "chr16\t163455\tSniffles2.DEL.4MF\tgggaccgtggggaggggacagtgaggaggggaccgtggggaggagacagtgaggaggggaccgtagggaggggacagtgaggaggggaccgtggggaggggacagtgaggaggggaccgtggggaggggacagtgaggaggggaccgtgggaaggagaca\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-160;END=163615;SUPPORT=7;COVERAGE=22,22,22,22,22;STRAND=+-;STDEV_LEN=70.004;STDEV_POS=191.626\tGT:GQ:DR:DV:ID\t0/1:28:15:7:Sniffles2.DEL.5DSF,Sniffles2.DEL.5ESF", - "chr16\t164801\tSniffles2.INS.3MF\tN\tCGGGGTCGCGGGGCGGGCGGGTCGCGGGGCGGGGTCGCGGGGGCGGGCGAGGTC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=54;END=164801;SUPPORT=8;COVERAGE=21,21,21,21,21;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t0/1:43:13:8:Sniffles2.INS.FSF", - "chr16\t182789\tSniffles2.INS.5MF\tN\tTGAAACACCGTCTCTACTAAAAATACAAAAATTAGCCAGGCATAGTGGCGGGCGCCTGTAATCCCAGCTGTTCGGGAGGCTGAGGCAGGACAATCACTTAAACCAGGGAAGCAGAGGTTGCAGTGAGCTGAGATCGAGCCACTGCACTCCAGCCTGGGCGACAGACCGAGACTGTCTCAAAAAAAAGACCGGGCACGGTGGCTCACGCCTGTAATCCCACCACTTTGGGAGGCTGAGGCGGGCTGATCACGATGTCAGGAGATCTAGACCATCCTGGCCAACATGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=286;END=182789;SUPPORT=12;COVERAGE=13,12,12,12,12;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t1/1:33:0:12:Sniffles2.INS.10SF", - "chr16\t186173\tSniffles2.DEL.11MF\taacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacgggg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-746;END=186919;SUPPORT=6;COVERAGE=11,11,11,11,10;STRAND=+-;STDEV_LEN=165.463;STDEV_POS=171.120\tGT:GQ:DR:DV:ID\t0/1:33:6:5:Sniffles2.DEL.5FSF,Sniffles2.DEL.60SF", - "chr16\t362990\tSniffles2.INS.8MF\tN\tGACTTAGCACCGGGGGGTCTCGGGCTGCGGCTGCTCTCCCA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=42;END=362990;SUPPORT=3;COVERAGE=7,6,6,6,5;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t0/1:21:3:3:Sniffles2.INS.12SF", - "chr16\t370391\tSniffles2.INS.7MF\tN\tCTACCCTGCCCCGGCTCTCACCCCCTACCCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCGGCTCTCACCCCCTACCCCGGCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCGCTACCCTGCCCCCGGCTCTCACCGCTACCCCCCGGCTCTCACCCGCTACCCCGCCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCCGGCCCCCCGGCTCTCACCTCCTACCCGGCCCCGGCTCTCACCCGCTCCCCCGGCCCCCGGCTCTCACCCGCTCACCCCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCTCGGCTCTCACCCCCTACCCCGGCCCCGGCTCTCACCCCCTACCCCTGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCCGGCTCTCACCCGCTACCCCGGCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGGCTCTCACTCC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=736;END=370391;SUPPORT=7;COVERAGE=7,7,7,7,7;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t1/1:19:0:7:Sniffles2.INS.13SF", - "chr16\t378412\tSniffles2.INS.6MF\tN\tGCCATCGCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCTGACTGCCATCGCCACCCACACTGCCATCCCCACCCGCACTGCCATCGCCACCCTGACTGCCATCGCCACCCACAATGCCATCCCCACCCGCACTGCCATCGCCACCCGCACTGCCATCCCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCACACTGCCATC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=138;END=378412;SUPPORT=8;COVERAGE=17,18,18,18,18;STRAND=+-;STDEV_LEN=144.250;STDEV_POS=147.785\tGT:GQ:DR:DV:ID\t0/1:3:13:4:Sniffles2.INS.15SF,Sniffles2.INS.14SF", - "chr16\t397717\tSniffles2.INS.9MF\tN\tTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGTGGGGGTGGGGGTGTGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGTGAGGGAGTCGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGTGAGGGAGTCGGGGGGTGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGGC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=491;END=397717;SUPPORT=3;COVERAGE=3,3,3,3,3;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t1/1:8:0:3:Sniffles2.INS.16SF", - "chr16\t504349\tSniffles2.INS.FMF\tN\tTCACCTCCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCTCACCTCCTCCTGTACCCCTCACCTCCTTGTGCACCCCCTCACCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCCTCACCTCCTCCTGTACCCCCTCACCTCCTTGTGCACCCCCTCACCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCCTCACCTCCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=165;END=504349;SUPPORT=4;COVERAGE=4,4,4,4,4;STRAND=+-;STDEV_LEN=128.693;STDEV_POS=98.288\tGT:GQ:DR:DV:ID\t1/1:11:0:4:Sniffles2.INS.17SF,Sniffles2.INS.18SF", - "chr16\t507831\tSniffles2.INS.10MF\tN\tTTCAGTATCATCTGCCCGTTCTGAGCCATTTGCTCTCTAGCCCTACCATACAGCTGCCATCCTAAGAGTACGTTTCCCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=81;END=507831;SUPPORT=4;COVERAGE=5,5,5,5,7;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t1/1:1:1:4:Sniffles2.INS.19SF", - "chr16\t534179\tSniffles2.INS.EMF\tN\tGGGCCGTGGTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACGGGGCCGTGGTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACGGGGCCGTGGTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=162;END=534179;SUPPORT=5;COVERAGE=5,5,5,5,4;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t1/1:13:0:5:Sniffles2.INS.1ASF", - "chr16\t544781\tSniffles2.INS.CMF\tN\tCGTCTCCCCCACGTCGCCTCCCCCCACGTCGCCTCCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCTCACGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGTCGC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=344;END=544781;SUPPORT=8;COVERAGE=8,8,8,8,8;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t1/1:22:0:8:Sniffles2.INS.1BSF", - "chr16\t550769\tSniffles2.INS.BMF\tN\tCGGTGAGGGTCCCCGGTCGGTGAGGGCGCCCCGTCAGTGAGGGTCCCGGTCAGTGAGGGCCCCGGTCGGTGAGGGTCCCCGGTCGGTGAGGGCCCCTGTCGGTGAGGGCCCCGGTCGGTGAGGGACCCGGTCGGTGAGGGCCCCCTGTCGGTGAGGGTCCCCTGTCGGTGAGGGCCCCGGTCGGTGAGGGCCCCGGTCGGTGAGGGTCCCCTGTCGGTGAGGGTCCCCTGTCGGTGAGGGTCCCGGTCGGTGAGGGCCCCGGTCGGTGAGGGTGCCCCGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=280;END=550769;SUPPORT=13;COVERAGE=13,13,13,13,13;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t1/1:36:0:13:Sniffles2.INS.1CSF", - "chr16\t553057\tSniffles2.INS.DMF\tN\tTGCCCCCCACCCCTGCACAGGTGCCCCCTCCCCTACCCCGCTGCACCCACACCCAACTCGTGCCCCCCCACCCCTGCACAGGTGCCCCCTCCCCTACCCCGCTGCACCCACACCCAACTCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=121;END=553057;SUPPORT=6;COVERAGE=12,11,11,11,10;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t0/1:33:5:6:Sniffles2.INS.1DSF", - "chr16\t571110\tSniffles2.INS.AMF\tN\tTGGCTAGCCTGTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTGTGTGTGTCTGGCTAGCCTGGTGCCCGTGTGTGTGTGTATGTGTGTGTGTGTGTGTGTGTCTGGCTAGCTGGCGCCCGTGGCTAGCCTGGTGCCCGTGTGTGTGTGTATGTATGTGTCTGGCTAGCCTGGTGCCCGTGGCTAGCCTGGTGCCCGTGTGTGTGTGTGTGGGGGGGGCTAGCCTTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTCTGGCTAGCGTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTGTGTGTGCTAGCCTGGCGCCCGTGTGTGTGTGTGTGTGTGTCTGGCTAGCCTGGCACCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=239;END=571110;SUPPORT=8;COVERAGE=18,17,16,16,18;STRAND=+-;STDEV_LEN=168.291;STDEV_POS=0.000\tGT:GQ:DR:DV:ID\t1/1:44:0:16:Sniffles2.INS.1FSF,Sniffles2.INS.1ESF", - "chr16\t579508\tSniffles2.DEL.12MF\tgccccgggcccggagactagaggtgccccgggcccggagactagaggtgccccgggcccggagacttgaggtgccccgggcccggagactagaggt\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-96;END=579604;SUPPORT=6;COVERAGE=11,11,11,10,10;STRAND=+-;STDEV_LEN=33.941;STDEV_POS=181.019\tGT:GQ:DR:DV:ID\t0/1:33:6:5:Sniffles2.DEL.62SF,Sniffles2.DEL.61SF", - "chr16\t585059\tSniffles2.DEL.15MF\tcccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctccccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctccccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctc\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-156;END=585215;SUPPORT=6;COVERAGE=6,6,6,6,6;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t1/1:16:0:6:Sniffles2.DEL.63SF", - "chr16\t587440\tSniffles2.INS.13MF\tN\tTCCCTCCCTTCACTGGGCCTGCTGCCCCAGAGTCCA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=36;END=587440;SUPPORT=5;COVERAGE=5,5,5,5,5;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t1/1:13:0:5:Sniffles2.INS.20SF", - "chr16\t611801\tSniffles2.DEL.17MF\tgggacagccgccttcgcctgtagaatcaagagcagggacagccgccctggcctgtagaatcaagagcacgggacagccgccctggcctgtagaatcaagagcacgggacagccgccctggcctgtagaatcaagagcagggacagccgccctggcctgtagaatcaagagcaagggacagccgccctggcctgtagaatcaagagcaagggacagccgcctttgcctgtagaatcaagagcag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-243;END=612044;SUPPORT=4;COVERAGE=3,4,4,4,4;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t1/1:11:0:4:Sniffles2.DEL.64SF", - "chr16\t631728\tSniffles2.DEL.16MF\tcttctcccaccccttcactgcctctccttccatcctctcctcccaccctctcctcccatccactcctcccatccacttcttccatcct\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-88;END=631816;SUPPORT=17;COVERAGE=17,17,17,17,16;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t1/1:47:0:17:Sniffles2.DEL.65SF", - "chr16\t660943\tSniffles2.INS.14MF\tN\tCCCCCTGTTCGGCCCCTCCCCAGGCCCCCCCCCGCCCGGCCTCAGGCCCCGCCCCCTGTTCGGCCCCTCCCCAGGCCCGGCCTCAGGCCCCGCCCCCTGTTCGGCCCCTCCCCAG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=115;END=660943;SUPPORT=17;COVERAGE=16,16,15,16,16;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t1/1:47:0:17:Sniffles2.INS.23SF", - "chr16\t665215\tSniffles2.DEL.1DMF\tcctcagtctgcagcctgctagggacgcacggccacactcctgtctttcag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-50;END=665265;SUPPORT=22;COVERAGE=19,21,22,22,21;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t1/1:60:0:22:Sniffles2.DEL.66SF", - "chr16\t696679\tSniffles2.INS.18MF\tN\tCCCACCCCAAAGCCACCATCCGCTCCCACCTCCATAGGGTTGCTGCTGCCCGCCCCTGCCCCCCAGCCCTGTCCCCCCCACCACCCAGCCTGGGCGCACACCCCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=105;END=696679;SUPPORT=10;COVERAGE=11,10,10,10,10;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t1/1:27:0:10:Sniffles2.INS.24SF", - "chr16\t746237\tSniffles2.DEL.22MF\tgaggtgggttcactgcgggtctgcctggctgggcagcaggagaggaggtgggttcactgcgggtctgcctggctgggcagcaggagaggaggtgggttcactgcaggtctgtctggctgggcagcaggaggggagaggtggggtcactgcgggtctgcagggctgcaggaggggagaggtggggtcactgcaggtctgtctggctgggcagcaggagaggaggtgggttcactgcaggtctgtctgggcgggctgcaggagaggaggtggggtcactgcgggtctgtctgggcgggctgcaggagag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-307;END=746544;SUPPORT=7;COVERAGE=13,13,13,13,11;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t0/1:40:6:7:Sniffles2.DEL.67SF", - "chr16\t760502\tSniffles2.INS.1AMF\tN\tAGCCATGAAACCTGGGCCCGGGCTCCCACTCACACCCCACCCCCACCCAGGGCAGCCGTGAAACCTGGGCCCTGGGCTCCCACCCACGCCCCACACCCACCCAGGGC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=107;END=760502;SUPPORT=16;COVERAGE=16,16,16,16,17;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t1/1:44:0:16:Sniffles2.INS.25SF", - "chr16\t763776\tSniffles2.INS.19MF\tN\tGCATCCCATCCCCCGTCCCCTCCCCCACACCCCTCCCCCACCCCCACGTCCCCTCCCCACCCCTCCCCCACACCCTCCCCCACCCCTCCCCATGTCCCCTCCCCTACCTCCTCCCCCCGCATCCCCTCCCCCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=133;END=763776;SUPPORT=20;COVERAGE=19,19,20,20,20;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t1/1:55:0:20:Sniffles2.INS.26SF", - "chr16\t767770\tSniffles2.INS.1BMF\tN\tGGTGTGGAGGGGGGCGCGTGGGGGTGTGTGGGGGGGGGCACGTGGAGGGGGCGTGTGGGGGGGTGCGTGGAGGAGGGGCGCGTGGAGGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=91;END=767770;SUPPORT=5;COVERAGE=15,15,15,15,14;STRAND=+-;STDEV_LEN=33.955;STDEV_POS=185.478\tGT:GQ:DR:DV:ID\t0/1:22:10:5:Sniffles2.INS.29SF,Sniffles2.INS.28SF,Sniffles2.INS.2ASF,Sniffles2.INS.27SF", - "chr16\t769171\tSniffles2.INS.1CMF\tN\tCCCCGGCCCCGGCCCCAGCCCCGGCCCCACCCCGGCCCCAGCCCCAGCCCCAGCCCCAGCCCCACCCCCGGCCCCAGCCCCAGCCCCAGCCCCAGCCCCGGCCCCACCCCCACCCCCGGCCCCGGCCCCGGCCCCACCCCCGGCCCCGGCCCCGGCCCCACCCCCGGCCCCGGCCCCACCCCCGGCCCCGGCCCCAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=197;END=769171;SUPPORT=6;COVERAGE=14,13,13,13,13;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t0/1:40:7:6:Sniffles2.INS.2BSF", - "chr16\t795520\tSniffles2.INS.1EMF\tN\tCCCCCGTGCTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCTGTGCTGCCCGTGTGGCTGCCCCCGGCCCCGCGCCCTTCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=354;END=795520;SUPPORT=6;COVERAGE=13,13,13,13,13;STRAND=+-;STDEV_LEN=377.595;STDEV_POS=104.652\tGT:GQ:DR:DV:ID\t0/1:27:8:5:Sniffles2.INS.2CSF,Sniffles2.INS.2DSF", - "chr16\t818868\tSniffles2.INS.1FMF\tN\tTGGTGAAGACTGTAGTGATGGTGATGATGGTGAAGACTGTAGTGATGATGGTGGTGAAGACTGTAGTGATGTTGATATTGGTGATGAAGACTATAGTGATAGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTAGTGATGGTGATGATGATGGTGAAGACTGTAGTGATGGTGATGATGGTGAAGACTGTAGCGATGATGGTGAACACTGTAGTGATGTTGATATTGGTGATGAAGACTATAGTGATGGTGATGATAGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTGTAGTGATGGTGATGAGGTGAGACTATCGTGATGGTGATGATAATGGTGAAGACTATAGTGATGTTGATGTCGGTGGTGAAGACTGTAGTGATGGTGATGATAGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTGTAGTGATGGTGATGATGGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTATAGTGATGATGGTGAAGACTGTAGTGATGGTGATGATAGTGGTGAAGACTGTAGTGATGTTAATGGTGAAGGCTATAGTGATGTTGATGGTGGTGAAGACTGTAGCAATGGTTATGATGTTGGTGAAGACAATAGTGATGGTGATGATGGTGAAGACTATAGTGATGGTGATGATGGTGGTGAAGACTGTAGTGATGGTGATGATAGTGGTGAGGACTGTTAGTGATGATAGTGGTGAAGACTGTAGTGATGATGATGGTGAAGACTATAATGATGATGGTGAAGACCGCCGTGATGGTGATGATGGTGAAGACTGTAGCAATGATGATGGTGAAGACTATAGTGATGTTGAGTTGGTGGTGAAGACTGTAGCGATGGTGATGATGATGGTGAAGACTATAGTGATGATGATGTTGAAGACTATAGTGATGATGATGGTGAAGACCGCCGTGATGGTGATGATGGTGAAGACTGTAGCGATGATGATGGTGAAGACTATAGTGATGCTGATGTTGGTGGTGAAGACTGTAGTGATGGTGATGATGATGGTGAAGACTATAGTGATGATGATGGTGAAGACTATAGTGATGATGATGTGAAGACCGCCGTGATGGTGATGATGGTGAAGACTGTAGCGATGATGATGGTGAAGACTATAGTGATGTTGATGTTGG\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=1173;END=818868;SUPPORT=12;COVERAGE=13,12,12,12,12;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t1/1:33:0:12:Sniffles2.INS.2ESF", - "chr16\t824382\tSniffles2.INS.21MF\tN\tTAGGCCCACGACGGCCAGCAGCGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGGAGCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=150;END=824382;SUPPORT=2;COVERAGE=3,3,3,3,2;STRAND=+-;STDEV_LEN=228.983;STDEV_POS=284.056\tGT:GQ:DR:DV:ID\t1/1:5:0:2:Sniffles2.INS.2FSF,Sniffles2.INS.31SF,Sniffles2.INS.30SF", - "chr16\t828906\tSniffles2.DEL.27MF\tgcccactggggcccacatcccgcccactgggaccgacatccc\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-42;END=828948;SUPPORT=2;COVERAGE=2,2,2,2,2;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t1/1:5:0:2:Sniffles2.DEL.68SF", - "chr16\t886674\tSniffles2.INS.20MF\tN\tCCCGGCGTTCCCCAGGCCCCTCCCACCCTAGGCCCCCGGCGTTCCCCAGGCCCCTCCCACCCTAGGCCCCCGCGTTCCCCAGGCCCCTCCCACCCTAGG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=66;END=886674;SUPPORT=4;COVERAGE=10,10,10,10,11;STRAND=+-;STDEV_LEN=51.501;STDEV_POS=107.816\tGT:GQ:DR:DV:ID\t1/1:2:2:8:Sniffles2.INS.35SF,Sniffles2.INS.34SF,Sniffles2.INS.33SF", - "chr16\t894215\tSniffles2.INS.23MF\tN\tCTGGCTGTCCGCCCACCCATCCCCTGTCCACCGGACCGTCCGCCCACCCGTCCCCATGTCCATCAGACCGTCCGTCCACCTGTCCCCCTGTCCCCTGTCCACCGGACCATTCGCCCACCCATCCCCCTGTCCACCTGGCCATCCGCCCACCTGTCTCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCACTGGACTGTCCGCCCACCTGTCCCCCTGTCCCCTGTCCACCGGACCGTCTGCCCACCCGTCCCCCTGTCCACCTGGCCATCCGCCCACCCATCCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCAGGTCCCCCTGTCCAGCGGACCGTCCACCCACCCGTCCCCCTGTCCACTGGACCGTCCGCCCACCTGTCCCCCTGTCCACCTGGCAGTGCGCCCACCCATCCCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCAGCGGACCGTCCACCCACCT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=521;END=894215;SUPPORT=17;COVERAGE=17,17,17,17,17;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t1/1:47:0:17:Sniffles2.INS.36SF", - "chr16\t896053\tSniffles2.INS.24MF\tN\tCCACACGCAGGCTGCACGGTCCACAGACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCACGGTCCACACACACGCCTCGGAGGGGTTGTGAGGCTCAGCCAT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=118;END=896053;SUPPORT=4;COVERAGE=17,16,16,16,14;STRAND=+-;STDEV_LEN=66.083;STDEV_POS=110.840\tGT:GQ:DR:DV:ID\t0/1:6:12:4:Sniffles2.INS.39SF,Sniffles2.INS.3BSF,Sniffles2.INS.37SF,Sniffles2.INS.3ASF,Sniffles2.INS.38SF,Sniffles2.INS.3CSF,Sniffles2.INS.3DSF", - "chr16\t903595\tSniffles2.INS.26MF\tN\tGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTATCTCTGCTGTGTGGTGGTGACCTTTGCACTGCCCGTGGGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCCGTCTCTGCTGTGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCCACAGGACGCCTGTCTCTGCTGTGTGGTGGTGACCTTTGCACTGCCCGTGGGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCTGTCTCTGCTGTGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCCGTCTCTGCTGCGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=600;END=903595;SUPPORT=6;COVERAGE=8,8,8,8,8;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t0/1:3:2:6:Sniffles2.INS.3ESF", - "chr16\t949731\tSniffles2.DEL.29MF\tcgacagagtcagagacgacagagtcagagccaatgacagagtcagccaatgacagagtcagagccaacgacagagtcagccaatgacagagtcagagacaacgacagagttagagacaacgacagagtcagccaaggacagcgtcagccaacgacagaatcagagacaacgacagagtcagccaacgacagagtcagagccaatgagagtcagagccaacgacagagtcagagacgacagagtcagagccaacgacagagtcagccaacgacagagtcagagccaacgacagagtcagccaacgacagagtcagagccaacgacagagtcagccaacgacagagtcagagacaacgacagagtcagagccaacgacagagtcagagacgaaagactcagagcca\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-404;END=950135;SUPPORT=5;COVERAGE=22,22,22,23,23;STRAND=+-;STDEV_LEN=246.062;STDEV_POS=278.350\tGT:GQ:DR:DV:ID\t0/1:40:8:14:Sniffles2.DEL.6ESF,Sniffles2.DEL.6DSF,Sniffles2.DEL.6FSF", - "chr16\t950488\tSniffles2.INS.25MF\tN\tCAACGACAGAGTCAGAGACAACGACAGAGTCAGAGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=36;END=950488;SUPPORT=14;COVERAGE=22,23,23,23,23;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t0/1:50:9:14:Sniffles2.INS.40SF", - "chr16\t953349\tSniffles2.DEL.28MF\tgttcacacagacacggaccccaaaccagcctcctacacgtccacacagacacccaccccaaaccagcctcctacacgttcacacagacacggaccccacaccagcctcctacacgtccacacagacacccaccccaaaccagcctcctgcacgtccacacagacaccccaaaccagcc\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-178;END=953527;SUPPORT=11;COVERAGE=25,25,25,25,25;STRAND=+-;STDEV_LEN=144.533;STDEV_POS=244.489\tGT:GQ:DR:DV:ID\t0/1:45:16:9:Sniffles2.DEL.71SF,Sniffles2.DEL.72SF,Sniffles2.DEL.73SF,Sniffles2.DEL.75SF,Sniffles2.DEL.74SF", - "chr16\t955179\tSniffles2.INS.2AMF\tN\tCTAAGCGAACCAGACACGTTACATAAAATGCGTGCCTGCAGCAGACGGGGTCTGTGCACACACACACACAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=71;END=955179;SUPPORT=9;COVERAGE=26,26,26,27,27;STRAND=+-;STDEV_LEN=128.289;STDEV_POS=478.986\tGT:GQ:DR:DV:ID\t0/1:60:15:12:Sniffles2.INS.45SF,Sniffles2.INS.41SF,Sniffles2.INS.44SF,Sniffles2.INS.46SF,Sniffles2.INS.47SF,Sniffles2.INS.42SF,Sniffles2.INS.43SF", - "chr16\t960497\tSniffles2.DEL.2BMF\tcactggatcacaacccagacaccatctcatggtgacaacacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacaacacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-262;END=960759;SUPPORT=5;COVERAGE=31,31,31,30,30;STRAND=+-;STDEV_LEN=334.079;STDEV_POS=199.370\tGT:GQ:DR:DV:ID\t0/1:60:18:13:Sniffles2.DEL.78SF,Sniffles2.DEL.7CSF,Sniffles2.DEL.79SF,Sniffles2.DEL.7ASF,Sniffles2.DEL.76SF,Sniffles2.DEL.77SF", - "chr16\t961830\tSniffles2.DEL.2CMF\tcagactcacggtgacagcacgggatcacgacccagac\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-37;END=961867;SUPPORT=5;COVERAGE=30,30,30,30,30;STRAND=+-;STDEV_LEN=50.263;STDEV_POS=250.845\tGT:GQ:DR:DV:ID\t0/1:60:18:12:Sniffles2.DEL.7ESF,Sniffles2.DEL.7FSF,Sniffles2.DEL.7BSF,Sniffles2.DEL.7DSF,Sniffles2.DEL.81SF,Sniffles2.DEL.80SF", - "chr16\t1076026\tSniffles2.INS.2DMF\tN\tCCTACCCTGTCTTTCTCTCTGCCTCCCCGCCTCCCCTTCCCTCTCCCCATACCCTGTCTTT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=110;END=1076026;SUPPORT=3;COVERAGE=8,5,5,4,4;STRAND=+-;STDEV_LEN=70.004;STDEV_POS=67.882\tGT:GQ:DR:DV:ID\t1/1:13:0:5:Sniffles2.INS.4ASF,Sniffles2.INS.49SF", - "chr16\t1076128\tSniffles2.DEL.2EMF\tcctccccgcctccccatccctctccctctccctcctctctctctccccctaccctgttttctctctc\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-67;END=1076195;SUPPORT=2;COVERAGE=6,5,4,4,3;STRAND=+;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t0/1:14:2:2:Sniffles2.DEL.84SF", - "chr16\t1190923\tSniffles2.INS.2FMF\tN\tGGGTTTCGCTGACCCAGCAGGCTGGCCTGGTTGTGTGGCCTCAGGCACACTCGGGGTTTCGGTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTCTGACTCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTCTGACTCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTCTTACTCAGCAGGCTGGCCTGGCTGTGTGGCCTCCGGCACACTCGGGGTCTCTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTTTCGGTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCAGGGTTTTGGTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTTGGGGTCTCTGACCCAGTAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=523;END=1190923;SUPPORT=3;COVERAGE=10,10,10,10,11;STRAND=+;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t0/1:10:7:3:Sniffles2.INS.4ESF", - "chr16\t1191001\tSniffles2.DEL.35MF\tcctggctgtgtggcctcaggcacactcggggtctctgacccagcaggctggcctggctgtgtggcctcaggcacactcggggtctctctgactcagcaggctggcctggctgtgtggcctcaggcacactcggggtctctctgactcagcaggctggcctggctgtgtggcctcaggcacactcggggtctctcttactcagcaggctgg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-210;END=1191211;SUPPORT=7;COVERAGE=10,10,11,11,11;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t0/1:20:4:7:Sniffles2.DEL.86SF", - "chr16\t1204957\tSniffles2.INS.31MF\tN\tAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=313;END=1204957;SUPPORT=8;COVERAGE=17,16,15,15,15;STRAND=+-;STDEV_LEN=147.785;STDEV_POS=5.657\tGT:GQ:DR:DV:ID\t0/1:47:7:8:Sniffles2.INS.4FSF,Sniffles2.INS.50SF", - "chr16\t1231386\tSniffles2.INS.32MF\tN\tCCCAGCTCCCCATGGACTAGTCCCAGCCCCAGCCCAGCTCCCCATGGTCTCACCCCCAGCCCCAGCCCAGCTCCCCATGGACTAGTCCCATCCCCCGGCCCCAGCTCCCCATGGTCTCACCCCCAGCTCCA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=192;END=1231386;SUPPORT=4;COVERAGE=14,14,14,14,14;STRAND=+-;STDEV_LEN=151.334;STDEV_POS=128.917\tGT:GQ:DR:DV:ID\t0/1:12:10:4:Sniffles2.INS.51SF,Sniffles2.INS.52SF,Sniffles2.INS.53SF,Sniffles2.INS.54SF", - "chr16\t1248223\tSniffles2.DEL.37MF\tctcacatgcacatatgcacacacggatgtacacatgcacacattcacacac\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-51;END=1248274;SUPPORT=4;COVERAGE=2,4,4,4,6;STRAND=+-;STDEV_LEN=10.607;STDEV_POS=140.007\tGT:GQ:DR:DV:ID\t1/1:11:0:4:Sniffles2.DEL.8CSF,Sniffles2.DEL.8DSF", - "chr16\t1254916\tSniffles2.DEL.36MF\tagctggggccgggggctgggactagtccatggggagctgggctggggctgggggtgagaccatggggagctgggctggggctgggactagtccatggggagctgggctggggctgggactagttcatggggagctgggctggggctgggggtgagtccatggggagctgggctggggctgggggtgagtccatggggagct\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-201;END=1255117;SUPPORT=4;COVERAGE=14,14,14,14,14;STRAND=+-;STDEV_LEN=190.212;STDEV_POS=12.021\tGT:GQ:DR:DV:ID\t0/1:37:6:8:Sniffles2.DEL.8ESF,Sniffles2.DEL.8FSF", - "chr16\t1254975\tSniffles2.INS.34MF\tN\tCCATGGGGAGCTGGGCTGGGGCTGGGACTAGTCCATGGGGAGCTGGGCTGGGGCTGGGACTAGTTCATGGGGAGCTGGGCTGGGGCTGGGACTAGTTCATGGGAGCTGGGCTGGGGCTGGGACTAGTCCATGGGGAGCTGGGCTGGGGCTGGGACTAGTTCATGGGGAGCTGGGCTGGGGCTGGGGGTGAGTCCATGGGGAGCTGGGCTGGGGCTGGGGGTGAGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=225;END=1254975;SUPPORT=6;COVERAGE=14,14,14,14,14;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t0/1:37:8:6:Sniffles2.INS.57SF", - "chr16\t1258684\tSniffles2.INS.30MF\tN\tTGAGCCCCCTCCCCCACCCTGAGCCCCCTCCCCTGTCTTGAGCCCCTGCTCCATCCTGAGTCCCCTCCCCCACACTGAGCCCCCTCCCCTTTCTTGAGCCCCTCATCCATCCTGAGCCCCTCCTCCATCCTGAGCCCCCTCCCCCATCCTGGGCCCCCTCCCCTTTCTTGAGCCCCCCTCCCCCACCCTGAGCCCCCTCCCCTTTCTTGAGCCCCCTCCCCCACCTGAGCCCCTTCCCCTTTCTTGAGTCCCTCCTCCATCCTGAGCCCCCTCCCCTTTCTTGAGCCCCTCCTCCACCCTCAGCCCCCTCCCCTTTCTTGAGCCCCTCCTCCACCCTCAGCCCCCTCCCCTTTCT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=355;END=1258684;SUPPORT=14;COVERAGE=14,14,14,14,14;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t1/1:39:0:14:Sniffles2.INS.58SF", - "chr16\t1260690\tSniffles2.INS.33MF\tN\tAGCCCGGAGACCCACGTCCACACACAGCCCGGAGACCCACATCCACACAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=50;END=1260690;SUPPORT=7;COVERAGE=15,15,15,16,16;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t0/1:47:8:7:Sniffles2.INS.59SF", - "chr16\t1264730\tSniffles2.DEL.38MF\ttgtgtgtatgcgtgtgcatatgtaaggatgtgtgcg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-36;END=1264766;SUPPORT=6;COVERAGE=15,15,13,12,12;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t0/1:40:7:6:Sniffles2.DEL.90SF", - "chr16\t1308399\tSniffles2.DEL.39MF\tgagggaatgagtgagggagggaatgagtgagtgagggagggaatgagtgagggagggaatgagtgagtgagggagggaatgagtgagtgggaatgaatgagtaagtgagggagggaatgagtgagtgagggtggcaatgaatgagtaagtgag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-153;END=1308552;SUPPORT=6;COVERAGE=12,12,12,12,12;STRAND=+-;STDEV_LEN=166.170;STDEV_POS=13.435\tGT:GQ:DR:DV:ID\t1/1:33:0:12:Sniffles2.DEL.91SF,Sniffles2.DEL.92SF", - "chr16\t1345656\tSniffles2.INS.3AMF\tN\tGCAACCCCAGCCTCCCCAGCCTCCCCAGCAACCCCAGCCTCCCCAGCAACCCCAGCCTCCTCA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=63;END=1345656;SUPPORT=14;COVERAGE=26,26,26,25,24;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t0/1:60:12:14:Sniffles2.INS.5BSF", - "chr16\t1356874\tSniffles2.DEL.3BMF\t\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-42;END=1356916;SUPPORT=3;COVERAGE=6,5,5,5,5;STRAND=+-;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV:ID\t0/1:11:2:3:Sniffles2.DEL.93SF" + "chr16\t81884\tSniffles2.INS.4SF\tN\tCTCCAGGAAGCCCTCCTGAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTATCTCCGGAAGCCCTCCTGAATGCTCCCCACGCTGGCCCCTTCTTCCCACCACCCTACCTCCGGGAAGGCCTCCTGAATGCTCCCCACGCTGGCCCCTTCTTCCCACCACCCTACCTCCGGGAAGCCCTCCTGAATGCTCCCCACGCTGGCCCCTTCTTCCCACCACCCTACCTCCAGGAAGCCCTCCTGAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTATCTCCGGGAAGGCCTCCTGAATGCTCCCCACACTGACCCCTTCTTCCCACCACCCTACCTCCGGGAAGGCCTCCTGAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTAT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=398;END=81884;SUPPORT=12;COVERAGE=22,23,24,23,23;STRAND=+-;AF=0.5;STDEV_LEN=0;STDEV_POS=68.361;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:60:12:12", + "chr16\t82169\tSniffles2.INS.1SF\tN\tCTCCGGGAAGGCCTCCTGAATGCTCCCCACACTGACCCCTTCTTCCCACCACCCTAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=57;END=82169;SUPPORT=8;COVERAGE=23,23,23,23,23;STRAND=+-;AF=0.348;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:38:15:8", + "chr16\t153120\tSniffles2.INS.5SF\tN\tACAGTGGGGAGGGGACAGTGGGGAGAGGACAGTAAGGAGGGGACCATGGGGAGGAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=56;END=153120;SUPPORT=23;COVERAGE=22,23,23,23,23;STRAND=+-;AF=1;STDEV_LEN=0.48;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:60:0:23", + "chr16\t160071\tSniffles2.INS.CSF\tN\tGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGACGGCTTGTGGGACACAGGTTGTGAGAGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTGTGAGGGTGCCCGGGATGGCTTGTGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTGTGAGACGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGAGATGCCCAGGACGGCTTGTGGGGAACAGGCTGTGAGGGTGCCCGGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGAT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=583;END=160071;SUPPORT=24;COVERAGE=28,28,28,30,27;STRAND=+-;AF=0.857;STDEV_LEN=0.953;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:26:4:24", + "chr16\t160389\tSniffles2.INS.BSF\tN\tGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGCTGCAAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGATGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCTGGGACGGCTTGTGGGGCACAGGTTGTGAGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=328;END=160389;SUPPORT=25;COVERAGE=28,30,30,29,27;STRAND=+-;AF=0.833;STDEV_LEN=0.277;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:19:5:25", + "chr16\t160753\tSniffles2.INS.ESF\tN\tGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCAGGATGGCTTGTGGGGCACAGGCTGCAAGAGGTGCCCAGGACGGCTTGTGGGGCACAGGTTGTGAGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=145;END=160753;SUPPORT=27;COVERAGE=30,28,28,27,27;STRAND=+-;AF=0.964;STDEV_LEN=0.352;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:60:1:27", + "chr16\t163320\tSniffles2.DEL.5DSF\tagtgagtaggagacagtggggagaggacagtggagaggggacagtgaggaggggaccatgggaaggggaccgtggagtggggacagtgaggaggggaccatagggagggga\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-111;END=163431;SUPPORT=7;COVERAGE=23,22,22,22,22;STRAND=+-;AF=0.318;STDEV_LEN=1.095;STDEV_POS=10.733;AC=1\tGT:GQ:DR:DV\t0/1:28:15:7", + "chr16\t163591\tSniffles2.DEL.5ESF\tggaggggaccgtgggaaggagacagtgaggaggggaccttggggaggggacagtgaggaggggaccatggggaggggacagtgaggaggggacaatggagaggggacagtgaggaggggactgtggggagaggacagtgaggaggggaccatggggagggcacagtggggaggggagagtgaggaagggacagtgaggaggggactgtgg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-210;END=163801;SUPPORT=7;COVERAGE=22,22,22,22,21;STRAND=+-;AF=0.318;STDEV_LEN=0;STDEV_POS=0;AC=1\tGT:GQ:DR:DV\t0/1:28:15:7", + "chr16\t164801\tSniffles2.INS.FSF\tN\tCGGGGTCGCGGGGCGGGCGGGTCGCGGGGCGGGGTCGCGGGGGCGGGCGAGGTC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=54;END=164801;SUPPORT=8;COVERAGE=21,21,21,21,21;STRAND=+-;AF=0.381;STDEV_LEN=2.16;STDEV_POS=17.972;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:43:13:8", + "chr16\t182789\tSniffles2.INS.10SF\tN\tTGAAACACCGTCTCTACTAAAAATACAAAAATTAGCCAGGCATAGTGGCGGGCGCCTGTAATCCCAGCTGTTCGGGAGGCTGAGGCAGGACAATCACTTAAACCAGGGAAGCAGAGGTTGCAGTGAGCTGAGATCGAGCCACTGCACTCCAGCCTGGGCGACAGACCGAGACTGTCTCAAAAAAAAGACCGGGCACGGTGGCTCACGCCTGTAATCCCACCACTTTGGGAGGCTGAGGCGGGCTGATCACGATGTCAGGAGATCTAGACCATCCTGGCCAACATGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=286;END=182789;SUPPORT=12;COVERAGE=13,12,12,12,12;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:33:0:12", + "chr16\t186052\tSniffles2.DEL.5FSF\tggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacgggg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-629;END=186681;SUPPORT=6;COVERAGE=11,11,11,11,11;STRAND=+-;AF=0.545;STDEV_LEN=8.5;STDEV_POS=8.5;AC=1\tGT:GQ:DR:DV\t0/1:33:5:6", + "chr16\t186294\tSniffles2.DEL.60SF\tcagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacgggg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-863;END=187157;SUPPORT=5;COVERAGE=11,11,11,11,10;STRAND=+-;AF=0.455;STDEV_LEN=0.577;STDEV_POS=6.928;AC=1\tGT:GQ:DR:DV\t0/1:33:6:5", + "chr16\t362990\tSniffles2.INS.12SF\tN\tGACTTAGCACCGGGGGGTCTCGGGCTGCGGCTGCTCTCCCA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=42;END=362990;SUPPORT=3;COVERAGE=7,6,6,6,5;STRAND=+-;AF=0.5;STDEV_LEN=0.577;STDEV_POS=9.238;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:21:3:3", + "chr16\t370391\tSniffles2.INS.13SF\tN\tCTACCCTGCCCCGGCTCTCACCCCCTACCCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCGGCTCTCACCCCCTACCCCGGCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCGCTACCCTGCCCCCGGCTCTCACCGCTACCCCCCGGCTCTCACCCGCTACCCCGCCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCCGGCCCCCCGGCTCTCACCTCCTACCCGGCCCCGGCTCTCACCCGCTCCCCCGGCCCCCGGCTCTCACCCGCTCACCCCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCTCGGCTCTCACCCCCTACCCCGGCCCCGGCTCTCACCCCCTACCCCTGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCCGGCTCTCACCCGCTACCCCGGCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGGCTCTCACTCC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=736;END=370391;SUPPORT=7;COVERAGE=7,7,7,7,7;STRAND=+-;AF=1;STDEV_LEN=65.282;STDEV_POS=1.095;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:19:0:7", + "chr16\t378308\tSniffles2.INS.14SF\tN\tCCACTCTGACTGCCATCGCCACTCTGACTGCCATCC\t60\tGT\tPRECISE;SVTYPE=INS;SVLEN=36;END=378308;SUPPORT=4;COVERAGE=17,17,17,18,18;STRAND=+-;AF=0.235;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:3:13:4", + "chr16\t378517\tSniffles2.INS.15SF\tN\tGCCATCGCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCTGACTGCCATCGCCACCCACACTGCCATCCCCACCCGCACTGCCATCGCCACCCTGACTGCCATCGCCACCCACAATGCCATCCCCACCCGCACTGCCATCGCCACCCGCACTGCCATCCCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCACACTGCCATC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=240;END=378517;SUPPORT=12;COVERAGE=17,18,18,18,18;STRAND=+-;AF=0.667;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:26:6:12", + "chr16\t397717\tSniffles2.INS.16SF\tN\tTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGTGGGGGTGGGGGTGTGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGTGAGGGAGTCGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGTGAGGGAGTCGGGGGGTGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGGC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=491;END=397717;SUPPORT=3;COVERAGE=3,3,3,3,3;STRAND=+-;AF=1;STDEV_LEN=2.309;STDEV_POS=5.196;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:8:0:3", + "chr16\t504280\tSniffles2.INS.17SF\tN\tTCCATCTCCTCCTGTACCCCCTCACCTCCTTGTGCACCCCCTCACCTCCTGTACCCCCTCACCTCCTCTGTA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=74;END=504280;SUPPORT=4;COVERAGE=4,4,4,4,4;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:11:0:4", + "chr16\t504419\tSniffles2.INS.18SF\tN\tTCACCTCCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCTCACCTCCTCCTGTACCCCTCACCTCCTTGTGCACCCCCTCACCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCCTCACCTCCTCCTGTACCCCCTCACCTCCTTGTGCACCCCCTCACCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCCTCACCTCCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=256;END=504419;SUPPORT=4;COVERAGE=4,4,4,4,5;STRAND=+-;AF=1;STDEV_LEN=0.707;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:11:0:4", + "chr16\t507831\tSniffles2.INS.19SF\tN\tTTCAGTATCATCTGCCCGTTCTGAGCCATTTGCTCTCTAGCCCTACCATACAGCTGCCATCCTAAGAGTACGTTTCCCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=81;END=507831;SUPPORT=4;COVERAGE=5,5,5,5,7;STRAND=+-;AF=0.8;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:1:1:4", + "chr16\t534179\tSniffles2.INS.1ASF\tN\tGGGCCGTGGTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACGGGGCCGTGGTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACGGGGCCGTGGTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=162;END=534179;SUPPORT=5;COVERAGE=5,5,5,5,4;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:13:0:5", + "chr16\t544781\tSniffles2.INS.1BSF\tN\tCGTCTCCCCCACGTCGCCTCCCCCCACGTCGCCTCCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCTCACGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGTCGC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=344;END=544781;SUPPORT=8;COVERAGE=8,8,8,8,8;STRAND=+-;AF=1;STDEV_LEN=4.69;STDEV_POS=25.5;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:22:0:8", + "chr16\t550769\tSniffles2.INS.1CSF\tN\tCGGTGAGGGTCCCCGGTCGGTGAGGGCGCCCCGTCAGTGAGGGTCCCGGTCAGTGAGGGCCCCGGTCGGTGAGGGTCCCCGGTCGGTGAGGGCCCCTGTCGGTGAGGGCCCCGGTCGGTGAGGGACCCGGTCGGTGAGGGCCCCCTGTCGGTGAGGGTCCCCTGTCGGTGAGGGCCCCGGTCGGTGAGGGCCCCGGTCGGTGAGGGTCCCCTGTCGGTGAGGGTCCCCTGTCGGTGAGGGTCCCGGTCGGTGAGGGCCCCGGTCGGTGAGGGTGCCCCGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=280;END=550769;SUPPORT=13;COVERAGE=13,13,13,13,13;STRAND=+-;AF=1;STDEV_LEN=1;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:36:0:13", + "chr16\t553057\tSniffles2.INS.1DSF\tN\tTGCCCCCCACCCCTGCACAGGTGCCCCCTCCCCTACCCCGCTGCACCCACACCCAACTCGTGCCCCCCCACCCCTGCACAGGTGCCCCCTCCCCTACCCCGCTGCACCCACACCCAACTCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=121;END=553057;SUPPORT=6;COVERAGE=12,11,11,11,10;STRAND=+-;AF=0.545;STDEV_LEN=0.577;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:33:5:6", + "chr16\t571110\tSniffles2.INS.1FSF\tN\tTGGCTAGCCTGTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTGTGTGTGTCTGGCTAGCCTGGTGCCCGTGTGTGTGTGTATGTGTGTGTGTGTGTGTGTGTCTGGCTAGCTGGCGCCCGTGGCTAGCCTGGTGCCCGTGTGTGTGTGTATGTATGTGTCTGGCTAGCCTGGTGCCCGTGGCTAGCCTGGTGCCCGTGTGTGTGTGTGTGGGGGGGGCTAGCCTTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTCTGGCTAGCGTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTGTGTGTGCTAGCCTGGCGCCCGTGTGTGTGTGTGTGTGTGTCTGGCTAGCCTGGCACCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=358;END=571110;SUPPORT=16;COVERAGE=18,17,16,16,18;STRAND=+-;AF=1;STDEV_LEN=3.78;STDEV_POS=14.714;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:44:0:16", + "chr16\t579380\tSniffles2.DEL.62SF\tcagagaagagacagacacacagccccgaaggtggtgcaggcacaggccctagaggtgccccgggcccagagactagagatgccccgggcccggagactagaggtgccccgggcccggaga\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-120;END=579500;SUPPORT=6;COVERAGE=11,11,11,11,10;STRAND=+-;AF=0.545;STDEV_LEN=0;STDEV_POS=0;AC=1\tGT:GQ:DR:DV\t0/1:33:5:6", + "chr16\t579636\tSniffles2.DEL.61SF\tcccggagactagaggtgccccgggcccggagactagaggtgccccgggcccggagacttgaggtgccccggg\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-72;END=579708;SUPPORT=5;COVERAGE=11,11,11,10,10;STRAND=+-;AF=0.455;STDEV_LEN=11.5;STDEV_POS=105.434;AC=1\tGT:GQ:DR:DV\t0/1:33:6:5", + "chr16\t585059\tSniffles2.DEL.63SF\tcccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctccccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctccccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctc\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-156;END=585215;SUPPORT=6;COVERAGE=6,6,6,6,6;STRAND=+-;AF=1;STDEV_LEN=0.5;STDEV_POS=56.518;AC=2\tGT:GQ:DR:DV\t1/1:16:0:6", + "chr16\t587440\tSniffles2.INS.20SF\tN\tTCCCTCCCTTCACTGGGCCTGCTGCCCCAGAGTCCA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=36;END=587440;SUPPORT=5;COVERAGE=5,5,5,5,5;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=41.569;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:13:0:5", + "chr16\t611801\tSniffles2.DEL.64SF\tgggacagccgccttcgcctgtagaatcaagagcagggacagccgccctggcctgtagaatcaagagcacgggacagccgccctggcctgtagaatcaagagcacgggacagccgccctggcctgtagaatcaagagcagggacagccgccctggcctgtagaatcaagagcaagggacagccgccctggcctgtagaatcaagagcaagggacagccgcctttgcctgtagaatcaagagcag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-243;END=612044;SUPPORT=4;COVERAGE=3,4,4,4,4;STRAND=+-;AF=1;STDEV_LEN=0.707;STDEV_POS=14.142;AC=2\tGT:GQ:DR:DV\t1/1:11:0:4", + "chr16\t631728\tSniffles2.DEL.65SF\tcttctcccaccccttcactgcctctccttccatcctctcctcccaccctctcctcccatccactcctcccatccacttcttccatcct\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-88;END=631816;SUPPORT=17;COVERAGE=17,17,17,17,16;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;AC=2\tGT:GQ:DR:DV\t1/1:47:0:17", + "chr16\t660943\tSniffles2.INS.23SF\tN\tCCCCCTGTTCGGCCCCTCCCCAGGCCCCCCCCCGCCCGGCCTCAGGCCCCGCCCCCTGTTCGGCCCCTCCCCAGGCCCGGCCTCAGGCCCCGCCCCCTGTTCGGCCCCTCCCCAG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=115;END=660943;SUPPORT=17;COVERAGE=16,16,15,16,16;STRAND=+-;AF=1;STDEV_LEN=1.803;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:47:0:17", + "chr16\t665215\tSniffles2.DEL.66SF\tcctcagtctgcagcctgctagggacgcacggccacactcctgtctttcag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-50;END=665265;SUPPORT=22;COVERAGE=19,21,22,22,21;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;AC=2\tGT:GQ:DR:DV\t1/1:60:0:22", + "chr16\t696679\tSniffles2.INS.24SF\tN\tCCCACCCCAAAGCCACCATCCGCTCCCACCTCCATAGGGTTGCTGCTGCCCGCCCCTGCCCCCCAGCCCTGTCCCCCCCACCACCCAGCCTGGGCGCACACCCCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=105;END=696679;SUPPORT=10;COVERAGE=11,10,10,10,10;STRAND=+-;AF=1;STDEV_LEN=0.408;STDEV_POS=1.633;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:27:0:10", + "chr16\t746237\tSniffles2.DEL.67SF\tgaggtgggttcactgcgggtctgcctggctgggcagcaggagaggaggtgggttcactgcgggtctgcctggctgggcagcaggagaggaggtgggttcactgcaggtctgtctggctgggcagcaggaggggagaggtggggtcactgcgggtctgcagggctgcaggaggggagaggtggggtcactgcaggtctgtctggctgggcagcaggagaggaggtgggttcactgcaggtctgtctgggcgggctgcaggagaggaggtggggtcactgcgggtctgtctgggcgggctgcaggagag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-307;END=746544;SUPPORT=7;COVERAGE=13,13,13,13,11;STRAND=+-;AF=0.538;STDEV_LEN=0;STDEV_POS=0;AC=1\tGT:GQ:DR:DV\t0/1:40:6:7", + "chr16\t760502\tSniffles2.INS.25SF\tN\tAGCCATGAAACCTGGGCCCGGGCTCCCACTCACACCCCACCCCCACCCAGGGCAGCCGTGAAACCTGGGCCCTGGGCTCCCACCCACGCCCCACACCCACCCAGGGC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=107;END=760502;SUPPORT=16;COVERAGE=16,16,16,16,17;STRAND=+-;AF=1;STDEV_LEN=0.518;STDEV_POS=11.667;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:44:0:16", + "chr16\t763776\tSniffles2.INS.26SF\tN\tGCATCCCATCCCCCGTCCCCTCCCCCACACCCCTCCCCCACCCCCACGTCCCCTCCCCACCCCTCCCCCACACCCTCCCCCACCCCTCCCCATGTCCCCTCCCCTACCTCCTCCCCCCGCATCCCCTCCCCCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=133;END=763776;SUPPORT=20;COVERAGE=19,19,20,20,20;STRAND=+-;AF=1;STDEV_LEN=0.789;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:55:0:20", + "chr16\t767712\tSniffles2.INS.2ASF\tN\tGCGCATGGGGGGCGTGGGAGGGGGGTGCGTGGAGGAGGGGCGGTGTGGAGGGGGGCGCGTGGGGGTGTGTGGGGGGGGCACGTGGAGGGGGGCGTGTGGGGGGGTGCGTGGAGGAGGGGCGCGTGGAGGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=130;END=767712;SUPPORT=5;COVERAGE=15,15,15,15,14;STRAND=+-;AF=0.333;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:22:10:5", + "chr16\t767829\tSniffles2.INS.29SF\tN\tGGTGTGGAGGGGGGCGCGTGGGGGTGTGTGGGGGGGGGCACGTGGAGGGGGCGTGTGGGGGGGTGCGTGGAGGAGGGGCGCGTGGAGGA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=89;END=767829;SUPPORT=9;COVERAGE=15,15,15,15,14;STRAND=+-;AF=0.6;STDEV_LEN=3.715;STDEV_POS=36.697;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:34:6:9", + "chr16\t767989\tSniffles2.INS.28SF\tN\tGGGGCACATGGGGGTGCGTGGGGGGCGTGTGGGGGGTGCGTGGAGGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=47;END=767989;SUPPORT=6;COVERAGE=15,15,15,14,14;STRAND=+-;AF=0.4;STDEV_LEN=1.5;STDEV_POS=11.547;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:34:9:6", + "chr16\t769171\tSniffles2.INS.2BSF\tN\tCCCCGGCCCCGGCCCCAGCCCCGGCCCCACCCCGGCCCCAGCCCCAGCCCCAGCCCCAGCCCCACCCCCGGCCCCAGCCCCAGCCCCAGCCCCAGCCCCGGCCCCACCCCCACCCCCGGCCCCGGCCCCGGCCCCACCCCCGGCCCCGGCCCCGGCCCCACCCCCGGCCCCGGCCCCACCCCCGGCCCCGGCCCCAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=197;END=769171;SUPPORT=6;COVERAGE=14,13,13,13,13;STRAND=+-;AF=0.462;STDEV_LEN=0.816;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:40:7:6", + "chr16\t795446\tSniffles2.INS.2CSF\tN\tCCCCCGTGCTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCTGTGCTGCCCGTGTGGCTGCCCCCGGCCCCGCGCCCTTCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=87;END=795446;SUPPORT=8;COVERAGE=13,13,13,13,13;STRAND=+-;AF=0.615;STDEV_LEN=0.577;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:27:5:8", + "chr16\t795594\tSniffles2.INS.2DSF\tN\tGCTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCTTCTCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCTTCTCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCTGTGCTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCTCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCTTCTCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCGCCCCGCCCCGCCCCTCCCCTCCCCCCCCCCCGC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=621;END=795594;SUPPORT=5;COVERAGE=13,13,13,13,13;STRAND=+-;AF=0.385;STDEV_LEN=2.646;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:27:8:5", + "chr16\t818868\tSniffles2.INS.2ESF\tN\tTGGTGAAGACTGTAGTGATGGTGATGATGGTGAAGACTGTAGTGATGATGGTGGTGAAGACTGTAGTGATGTTGATATTGGTGATGAAGACTATAGTGATAGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTAGTGATGGTGATGATGATGGTGAAGACTGTAGTGATGGTGATGATGGTGAAGACTGTAGCGATGATGGTGAACACTGTAGTGATGTTGATATTGGTGATGAAGACTATAGTGATGGTGATGATAGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTGTAGTGATGGTGATGAGGTGAGACTATCGTGATGGTGATGATAATGGTGAAGACTATAGTGATGTTGATGTCGGTGGTGAAGACTGTAGTGATGGTGATGATAGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTGTAGTGATGGTGATGATGGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTATAGTGATGATGGTGAAGACTGTAGTGATGGTGATGATAGTGGTGAAGACTGTAGTGATGTTAATGGTGAAGGCTATAGTGATGTTGATGGTGGTGAAGACTGTAGCAATGGTTATGATGTTGGTGAAGACAATAGTGATGGTGATGATGGTGAAGACTATAGTGATGGTGATGATGGTGGTGAAGACTGTAGTGATGGTGATGATAGTGGTGAGGACTGTTAGTGATGATAGTGGTGAAGACTGTAGTGATGATGATGGTGAAGACTATAATGATGATGGTGAAGACCGCCGTGATGGTGATGATGGTGAAGACTGTAGCAATGATGATGGTGAAGACTATAGTGATGTTGAGTTGGTGGTGAAGACTGTAGCGATGGTGATGATGATGGTGAAGACTATAGTGATGATGATGTTGAAGACTATAGTGATGATGATGGTGAAGACCGCCGTGATGGTGATGATGGTGAAGACTGTAGCGATGATGATGGTGAAGACTATAGTGATGCTGATGTTGGTGGTGAAGACTGTAGTGATGGTGATGATGATGGTGAAGACTATAGTGATGATGATGGTGAAGACTATAGTGATGATGATGTGAAGACCGCCGTGATGGTGATGATGGTGAAGACTGTAGCGATGATGATGGTGAAGACTATAGTGATGTTGATGTTGG\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=1173;END=818868;SUPPORT=12;COVERAGE=13,12,12,12,12;STRAND=+-;AF=1;STDEV_LEN=90.396;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:33:0:12", + "chr16\t824382\tSniffles2.INS.2FSF\tN\tTAGGCCCACGACGGCCAGCAGCGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGGAGCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=150;END=824382;SUPPORT=2;COVERAGE=3,3,3,3,2;STRAND=-;AF=0.667;STDEV_LEN=0.707;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:4:1:2", + "chr16\t824874\tSniffles2.INS.31SF\tN\tCGTCCCGTCCGCGGCACCACCGTCCCATCTGTGGCACCAT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=40;END=824874;SUPPORT=2;COVERAGE=3,2,2,2,2;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:5:0:2", + "chr16\t828906\tSniffles2.DEL.68SF\tgcccactggggcccacatcccgcccactgggaccgacatccc\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-42;END=828948;SUPPORT=2;COVERAGE=2,2,2,2,2;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;AC=2\tGT:GQ:DR:DV\t1/1:5:0:2", + "chr16\t886663\tSniffles2.INS.35SF\tN\tCCACCCTAGGCCCCCGGCGTTCCCCAGGCCCCTCCCACCCTAGGCCCCCGGCGTTCCCCAGGCCCCTCCCACCCTAGGCCCCCGGCGTTCCCCAGGCCCCTCCCACCCTAGGCCCCGGCGTTCCCCAGGCCCCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=134;END=886663;SUPPORT=8;COVERAGE=10,10,10,10,11;STRAND=+-;AF=0.8;STDEV_LEN=0.5;STDEV_POS=22.234;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:2:2:8", + "chr16\t886674\tSniffles2.INS.34SF\tN\tCCCGGCGTTCCCCAGGCCCCTCCCACCCTAGGCCCCCGGCGTTCCCCAGGCCCCTCCCACCCTAGGCCCCCGCGTTCCCCAGGCCCCTCCCACCCTAGG\t60\tGT\tIMPRECISE;SVTYPE=INS;SVLEN=66;END=886674;SUPPORT=2;COVERAGE=10,10,10,10,11;STRAND=+-;AF=0.2;STDEV_LEN=19.348;STDEV_POS=113.694;SUPPORT_LONG=0;AC=0\tGT:GQ:DR:DV\t0/0:2:8:2", + "chr16\t894215\tSniffles2.INS.36SF\tN\tCTGGCTGTCCGCCCACCCATCCCCTGTCCACCGGACCGTCCGCCCACCCGTCCCCATGTCCATCAGACCGTCCGTCCACCTGTCCCCCTGTCCCCTGTCCACCGGACCATTCGCCCACCCATCCCCCTGTCCACCTGGCCATCCGCCCACCTGTCTCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCACTGGACTGTCCGCCCACCTGTCCCCCTGTCCCCTGTCCACCGGACCGTCTGCCCACCCGTCCCCCTGTCCACCTGGCCATCCGCCCACCCATCCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCAGGTCCCCCTGTCCAGCGGACCGTCCACCCACCCGTCCCCCTGTCCACTGGACCGTCCGCCCACCTGTCCCCCTGTCCACCTGGCAGTGCGCCCACCCATCCCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCAGCGGACCGTCCACCCACCT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=521;END=894215;SUPPORT=17;COVERAGE=17,17,17,17,17;STRAND=+-;AF=1;STDEV_LEN=57.393;STDEV_POS=5.5;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:47:0:17", + "chr16\t895843\tSniffles2.INS.37SF\tN\tACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCACGGTCCACAG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=59;END=895843;SUPPORT=4;COVERAGE=17,16,16,16,14;STRAND=+-;AF=0.25;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:6:12:4", + "chr16\t895843\tSniffles2.INS.39SF\tN\tACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCATGGTCCACAGACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCACGGTCCACAGACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCACGGTCCACAG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=177;END=895843;SUPPORT=8;COVERAGE=17,16,16,16,14;STRAND=+-;AF=0.5;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:57:8:8", + "chr16\t896053\tSniffles2.INS.3BSF\tN\tCCACACGCAGGCTGCACGGTCCACAGACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCACGGTCCACACACACGCCTCGGAGGGGTTGTGAGGCTCAGCCAT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=118;END=896053;SUPPORT=8;COVERAGE=17,16,16,16,14;STRAND=+-;AF=0.5;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:57:8:8", + "chr16\t896059\tSniffles2.INS.3ASF\tN\tGCAGGCTGCACGGTCCACAGACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACA\t60\tGT\tIMPRECISE;SVTYPE=INS;SVLEN=58;END=896059;SUPPORT=3;COVERAGE=17,16,16,16,14;STRAND=+-;AF=0.188;STDEV_LEN=0.577;STDEV_POS=38.553;SUPPORT_LONG=0;AC=0\tGT:GQ:DR:DV\t0/0:6:13:3", + "chr16\t903595\tSniffles2.INS.3ESF\tN\tGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTATCTCTGCTGTGTGGTGGTGACCTTTGCACTGCCCGTGGGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCCGTCTCTGCTGTGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCCACAGGACGCCTGTCTCTGCTGTGTGGTGGTGACCTTTGCACTGCCCGTGGGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCTGTCTCTGCTGTGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCCGTCTCTGCTGCGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=600;END=903595;SUPPORT=6;COVERAGE=8,8,8,8,8;STRAND=+-;AF=0.75;STDEV_LEN=0.577;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:3:2:6", + "chr16\t949510\tSniffles2.DEL.6ESF\taatgacagagtcagccaacgacagagtcagagccaacgacagagtcagagacaatgacagagtcagagacaacgacagagtcagagacgacagagtcagagacgacagagtcagagccaatgacagagtcagccaatgacagagtcagagccaacgacagagtcagccaatgacagagtcagagacaacgacagagtcagagacaacgacagagtcagagacgacagagtcagagacgacagagtcagagccaatgacagagtcagccaatgacagagtcagagccaacgacagagtcagccaatgacagagtcagagacaacgacagagttagagacaacgacagagtcagccaaggacagcgtcagccaacgacagaatcagagacaacgacagagtcagccaacgacagagtcagagccaatgagagtcagagccaacgacagagtcagagacgacagagtcagagccaacgacagagtcagccaacgacagagtcagagccaacgacagagtcagccaacgacagagtcagagccaacgacagagtcagccaacgacagagtcagagacaacgacagagtcagagccaacgacagagtcagagacgaaagactcagagccaatgacagagtcagagccaatgacagagtcagccaacgacagagtcagagccaacgacagagtcagccaatgacagagtcagagacagcgacagagttagagacaat\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-731;END=950241;SUPPORT=14;COVERAGE=22,22,22,23,22;STRAND=+-;AF=0.636;STDEV_LEN=0;STDEV_POS=0;AC=1\tGT:GQ:DR:DV\t0/1:40:8:14", + "chr16\t950488\tSniffles2.INS.40SF\tN\tCAACGACAGAGTCAGAGACAACGACAGAGTCAGAGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=36;END=950488;SUPPORT=14;COVERAGE=22,23,23,23,23;STRAND=+-;AF=0.609;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:50:9:14", + "chr16\t952880\tSniffles2.DEL.71SF\ttccacacagacacccaccccaaaccagcctcctacacgtccacacagacacccaccccaaaccagcctcctgcacgtccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacacg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-178;END=953058;SUPPORT=16;COVERAGE=24,24,25,25,25;STRAND=+-;AF=0.64;STDEV_LEN=0;STDEV_POS=0;AC=1\tGT:GQ:DR:DV\t0/1:45:9:16" ], + "test_reheader.vcf.gz.tbi", + "project.vcf.gz.tbi", [ + "versions.yml:md5,2188f00d20a376929f9f35f824e94667", + "versions.yml:md5,572bfd042014333af194207291d12b95", "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", - "versions.yml:md5,b5313b7af7b889d4faee264548c6862c" + "versions.yml:md5,ebb9b3d0bcc3aae3f54dfebd041e5cff" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.04.4" + "nextflow": "24.04.3" }, - "timestamp": "2024-08-30T10:43:14.628617596" + "timestamp": "2024-09-03T14:22:17.296103193" } } \ No newline at end of file diff --git a/subworkflows/local/call_svs/tests/nextflow.config b/subworkflows/local/call_svs/tests/nextflow.config new file mode 100644 index 00000000..bcbf4f7d --- /dev/null +++ b/subworkflows/local/call_svs/tests/nextflow.config @@ -0,0 +1,10 @@ +process { + withName: 'BCFTOOLS_MERGE' { + ext.args = '--force-single --output-type z --no-version --write-index=tbi' + } + + withName: 'REHEADER_SNIFFLES' { + ext.prefix = { "${meta.id}_reheader" } + ext.args2 = '--output-type z --write-index=tbi' + } +} diff --git a/tests/main.nf.test b/tests/main.nf.test index 7584d5ad..983923b2 100644 --- a/tests/main.nf.test +++ b/tests/main.nf.test @@ -99,8 +99,8 @@ nextflow_pipeline { { assert new File("$outputDir/repeat_calling/trgt/multi_sample/test/test.vcf.gz.tbi").exists() }, { assert new File("$outputDir/snvs/multi_sample/test/test_snv_annotated_ranked.vcf.gz").exists() }, { assert new File("$outputDir/snvs/multi_sample/test/test_snv_annotated_ranked.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/sv_calling/sniffles/multi_sample/test/test_sniffles.vcf.gz").exists() }, - { assert new File("$outputDir/sv_calling/sniffles/multi_sample/test/test_sniffles.vcf.gz.tbi").exists() }, + { assert new File("$outputDir/svs/multi_sample/test/test_svs.vcf.gz").exists() }, + { assert new File("$outputDir/svs/multi_sample/test/test_svs.vcf.gz.tbi").exists() }, // Assert exists HG002_Revio { assert new File("$outputDir/aligned_reads/HG002_Revio/HG002_Revio_phased.bam.bai").exists() }, { assert new File("$outputDir/assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap1.bam.bai").exists() }, @@ -131,9 +131,8 @@ nextflow_pipeline { { assert new File("$outputDir/repeat_calling/trgt/single_sample/HG002_Revio/HG002_Revio_spanning_sorted.bam.bai").exists() }, { assert new File("$outputDir/snvs/single_sample/HG002_Revio/HG002_Revio_snv_annotated_ranked.vcf.gz").exists() }, { assert new File("$outputDir/snvs/single_sample/HG002_Revio/HG002_Revio_snv_annotated_ranked.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/sv_calling/sniffles/single_sample/HG002_Revio/HG002_Revio_sniffles.snf").exists() }, - { assert new File("$outputDir/sv_calling/sniffles/single_sample/HG002_Revio/HG002_Revio_sniffles.vcf.gz").exists() }, - { assert new File("$outputDir/sv_calling/sniffles/single_sample/HG002_Revio/HG002_Revio_sniffles.vcf.gz.tbi").exists() } + { assert new File("$outputDir/svs/single_sample/HG002_Revio/HG002_Revio_sniffles.vcf.gz").exists() }, + { assert new File("$outputDir/svs/single_sample/HG002_Revio/HG002_Revio_sniffles.vcf.gz.tbi").exists() } ) } } @@ -267,8 +266,8 @@ nextflow_pipeline { { assert new File("$outputDir/multiqc/multiqc_data/multiqc_software_versions.txt").exists() }, { assert new File("$outputDir/snvs/multi_sample/test/test_snv_annotated_ranked.vcf.gz").exists() }, { assert new File("$outputDir/snvs/multi_sample/test/test_snv_annotated_ranked.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/sv_calling/sniffles/multi_sample/test/test_sniffles.vcf.gz").exists() }, - { assert new File("$outputDir/sv_calling/sniffles/multi_sample/test/test_sniffles.vcf.gz.tbi").exists() }, + { assert new File("$outputDir/svs/multi_sample/test/test_svs.vcf.gz").exists() }, + { assert new File("$outputDir/svs/multi_sample/test/test_svs.vcf.gz.tbi").exists() }, { assert new File("$outputDir/repeat_calling/trgt/multi_sample/test/test.vcf.gz").exists() }, { assert new File("$outputDir/repeat_calling/trgt/multi_sample/test/test.vcf.gz.tbi").exists() }, // Assert exists HG002_Revio_A @@ -302,9 +301,8 @@ nextflow_pipeline { { assert new File("$outputDir/repeat_calling/trgt/single_sample/HG002_Revio_A/HG002_Revio_A_spanning_sorted.bam.bai").exists() }, { assert new File("$outputDir/snvs/single_sample/HG002_Revio_A/HG002_Revio_A_snv_annotated_ranked.vcf.gz").exists() }, { assert new File("$outputDir/snvs/single_sample/HG002_Revio_A/HG002_Revio_A_snv_annotated_ranked.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/sv_calling/sniffles/single_sample/HG002_Revio_A/HG002_Revio_A_sniffles.snf").exists() }, - { assert new File("$outputDir/sv_calling/sniffles/single_sample/HG002_Revio_A/HG002_Revio_A_sniffles.vcf.gz").exists() }, - { assert new File("$outputDir/sv_calling/sniffles/single_sample/HG002_Revio_A/HG002_Revio_A_sniffles.vcf.gz.tbi").exists() }, + { assert new File("$outputDir/svs/single_sample/HG002_Revio_A/HG002_Revio_A_sniffles.vcf.gz").exists() }, + { assert new File("$outputDir/svs/single_sample/HG002_Revio_A/HG002_Revio_A_sniffles.vcf.gz.tbi").exists() }, // Assert exists HG002_Revio_B { assert new File("$outputDir/aligned_reads/HG002_Revio_B/HG002_Revio_B_phased.bam.bai").exists() }, { assert new File("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap1.bam.bai").exists() }, @@ -336,9 +334,8 @@ nextflow_pipeline { { assert new File("$outputDir/repeat_calling/trgt/single_sample/HG002_Revio_B/HG002_Revio_B_spanning_sorted.bam.bai").exists() }, { assert new File("$outputDir/snvs/single_sample/HG002_Revio_B/HG002_Revio_B_snv_annotated_ranked.vcf.gz").exists() }, { assert new File("$outputDir/snvs/single_sample/HG002_Revio_B/HG002_Revio_B_snv_annotated_ranked.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/sv_calling/sniffles/single_sample/HG002_Revio_B/HG002_Revio_B_sniffles.snf").exists() }, - { assert new File("$outputDir/sv_calling/sniffles/single_sample/HG002_Revio_B/HG002_Revio_B_sniffles.vcf.gz").exists() }, - { assert new File("$outputDir/sv_calling/sniffles/single_sample/HG002_Revio_B/HG002_Revio_B_sniffles.vcf.gz.tbi").exists() } + { assert new File("$outputDir/svs/single_sample/HG002_Revio_B/HG002_Revio_B_sniffles.vcf.gz").exists() }, + { assert new File("$outputDir/svs/single_sample/HG002_Revio_B/HG002_Revio_B_sniffles.vcf.gz.tbi").exists() } ) } } diff --git a/tests/main.nf.test.snap b/tests/main.nf.test.snap index a3412aba..2a6d0ac6 100644 --- a/tests/main.nf.test.snap +++ b/tests/main.nf.test.snap @@ -53,7 +53,7 @@ "nf-test": "0.8.4", "nextflow": "24.04.3" }, - "timestamp": "2024-08-29T10:42:09.011660883" + "timestamp": "2024-09-03T15:03:43.310119902" }, "test profile - multisample": { "content": [ @@ -145,6 +145,6 @@ "nf-test": "0.8.4", "nextflow": "24.04.3" }, - "timestamp": "2024-08-29T10:45:44.41793623" + "timestamp": "2024-09-03T15:07:20.976381275" } } \ No newline at end of file From d6b8f35d3901819603e96f2401c0f976aeaf45d9 Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Tue, 3 Sep 2024 15:43:46 +0200 Subject: [PATCH 004/106] Delete modules/nf-core/bcftools/reheader/bcftools-reheader.diff --- .../bcftools/reheader/bcftools-reheader.diff | 36 ------------------- 1 file changed, 36 deletions(-) delete mode 100644 modules/nf-core/bcftools/reheader/bcftools-reheader.diff diff --git a/modules/nf-core/bcftools/reheader/bcftools-reheader.diff b/modules/nf-core/bcftools/reheader/bcftools-reheader.diff deleted file mode 100644 index e2c7a9a8..00000000 --- a/modules/nf-core/bcftools/reheader/bcftools-reheader.diff +++ /dev/null @@ -1,36 +0,0 @@ -Changes in module 'nf-core/bcftools/reheader' ---- modules/nf-core/bcftools/reheader/main.nf -+++ modules/nf-core/bcftools/reheader/main.nf -@@ -13,6 +13,7 @@ - - output: - tuple val(meta), path("*.{vcf,vcf.gz,bcf,bcf.gz}"), emit: vcf -+ tuple val(meta), path("*.{csi,tbi}") , emit: index, optional: true - path "versions.yml" , emit: versions - - when: -@@ -59,8 +60,16 @@ - args2.contains("--output-type z") || args2.contains("-Oz") ? "vcf.gz" : - args2.contains("--output-type v") || args2.contains("-Ov") ? "vcf" : - "vcf" -+ def index = args2.contains("--write-index=tbi") || args2.contains("-W=tbi") ? "tbi" : -+ args2.contains("--write-index=csi") || args2.contains("-W=csi") ? "csi" : -+ args2.contains("--write-index") || args2.contains("-W") ? "csi" : -+ "" -+ def create_cmd = extension.endsWith(".gz") ? "echo '' | gzip >" : "touch" -+ def create_index = extension.endsWith(".gz") && index.matches("csi|tbi") ? "touch ${prefix}.${extension}.${index}" : "" -+ - """ -- touch ${prefix}.${extension} -+ ${create_cmd} ${prefix}.${extension} -+ ${create_index} - - cat <<-END_VERSIONS > versions.yml - "${task.process}": -@@ -68,3 +77,4 @@ - END_VERSIONS - """ - } -+ - -************************************************************ From 690dadcf45c28ebe6c73304c76e1b4b247a55df8 Mon Sep 17 00:00:00 2001 From: fellen31 Date: Fri, 6 Sep 2024 10:59:50 +0200 Subject: [PATCH 005/106] Update paraphase to compress and index VCFs within the module --- CHANGELOG.md | 1 + conf/modules/call_paralogs.config | 13 - modules.json | 2 +- modules/nf-core/paraphase/environment.yml | 3 - modules/nf-core/paraphase/main.nf | 32 +- modules/nf-core/paraphase/meta.yml | 8 +- modules/nf-core/paraphase/tests/main.nf.test | 104 +- .../nf-core/paraphase/tests/main.nf.test.snap | 2173 ++--------------- .../paraphase/tests/nextflow.csi_index.config | 6 + subworkflows/local/call_paralogs.nf | 20 +- 10 files changed, 358 insertions(+), 2004 deletions(-) create mode 100644 modules/nf-core/paraphase/tests/nextflow.csi_index.config diff --git a/CHANGELOG.md b/CHANGELOG.md index 100d044a..8b4394e9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#344](https://github.com/genomic-medicine-sweden/nallo/pull/344) - Changed version to 0.4.0dev - [#346](https://github.com/genomic-medicine-sweden/nallo/pull/346) - Renamed structural_variant_calling to call_svs +- [#355](https://github.com/genomic-medicine-sweden/nallo/pull/355) - Updated paraphase to compress and index VCFs within the module ### `Removed` diff --git a/conf/modules/call_paralogs.config b/conf/modules/call_paralogs.config index a258a177..2451c7aa 100644 --- a/conf/modules/call_paralogs.config +++ b/conf/modules/call_paralogs.config @@ -19,23 +19,10 @@ process { */ withName: '.*:CALL_PARALOGS:PARAPHASE' { - publishDir = [ path: { "${params.outdir}/paraphase/${meta.id}" }, mode: params.publish_dir_mode, saveAs: { filename -> filename.equals('versions.yml') || filename.endsWith('.vcf') ? null : filename } ] } - - withName: '.*:CALL_PARALOGS:TABIX_BGZIPTABIX' { - - ext.prefix = { "${input.simpleName}" } - - publishDir = [ - path: { "${params.outdir}/paraphase/${meta.id}/${meta.id}_paraphase_vcfs" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] - } - } diff --git a/modules.json b/modules.json index 86568235..d92916d3 100644 --- a/modules.json +++ b/modules.json @@ -162,7 +162,7 @@ }, "paraphase": { "branch": "master", - "git_sha": "54b51b69634128ca63568e87387ab1140a5c9410", + "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", "installed_by": ["modules"] }, "samtools/faidx": { diff --git a/modules/nf-core/paraphase/environment.yml b/modules/nf-core/paraphase/environment.yml index 3c9f5526..3722ded7 100644 --- a/modules/nf-core/paraphase/environment.yml +++ b/modules/nf-core/paraphase/environment.yml @@ -1,9 +1,6 @@ -name: paraphase - channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::minimap2=2.28 diff --git a/modules/nf-core/paraphase/main.nf b/modules/nf-core/paraphase/main.nf index ddaa33ec..8474427e 100644 --- a/modules/nf-core/paraphase/main.nf +++ b/modules/nf-core/paraphase/main.nf @@ -14,17 +14,20 @@ process PARAPHASE { tuple val(meta3), path(config) output: - tuple val(meta), path("*.paraphase.json") , emit: json - tuple val(meta), path("*.paraphase.bam") , emit: bam - tuple val(meta), path("*.paraphase.bam.bai") , emit: bai - tuple val(meta), path("${prefix}_paraphase_vcfs/*.vcf"), emit: vcf, optional: true - path "versions.yml" , emit: versions + tuple val(meta), path("*.paraphase.json") , emit: json + tuple val(meta), path("*.paraphase.bam") , emit: bam + tuple val(meta), path("*.paraphase.bam.bai") , emit: bai + tuple val(meta), path("${prefix}_paraphase_vcfs/*.vcf.gz") , emit: vcf , optional: true + tuple val(meta), path("${prefix}_paraphase_vcfs/*.vcf.gz.{csi,tbi}"), emit: vcf_index, optional: true + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when script: def args = task.ext.args ?: '' + def args2 = task.ext.args2 ?: '' + def args3 = task.ext.args3 ?: '' prefix = task.ext.prefix ?: "${meta.id}" def config_file = config ? "--config $config" : "" """ @@ -37,6 +40,18 @@ process PARAPHASE { $config_file \\ --out . + for vcf in ${prefix}_paraphase_vcfs/*.vcf; + do + bgzip \\ + $args2 \\ + --threads $task.cpus \\ + \$vcf; + tabix \\ + $args3 \\ + --threads $task.cpus \\ + \$vcf.gz; + done + cat <<-END_VERSIONS > versions.yml "${task.process}": minimap2: \$(minimap2 --version 2>&1) @@ -46,15 +61,18 @@ process PARAPHASE { """ stub: - def args = task.ext.args ?: '' + def args3 = task.ext.args3 ?: '' prefix = task.ext.prefix ?: "${meta.id}" + + def index = args3.contains('--csi') ? 'csi' : 'tbi' """ mkdir ${prefix}_paraphase_vcfs touch ${prefix}.paraphase.json touch ${prefix}.paraphase.bam touch ${prefix}.paraphase.bam.bai - touch ${prefix}_paraphase_vcfs/${prefix}_stub.vcf + echo '' | gzip > ${prefix}_paraphase_vcfs/${prefix}_stub.vcf.gz + touch ${prefix}_paraphase_vcfs/${prefix}_stub.vcf.gz.${index} cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/paraphase/meta.yml b/modules/nf-core/paraphase/meta.yml index 4dae0dd8..e6cc6d63 100644 --- a/modules/nf-core/paraphase/meta.yml +++ b/modules/nf-core/paraphase/meta.yml @@ -74,8 +74,12 @@ output: pattern: "*.paraphase.json" - vcf: type: file - description: VCF file(s) per gene - pattern: "*.vcf" + description: compressed VCF file(s) per gene + pattern: "*.vcf.gz" + - vcf_index: + type: file + description: compressed VCF file index + pattern: "*.vcf.gz.{tbi,csi}" authors: - "@fellen31" diff --git a/modules/nf-core/paraphase/tests/main.nf.test b/modules/nf-core/paraphase/tests/main.nf.test index ff35588f..e34d6699 100644 --- a/modules/nf-core/paraphase/tests/main.nf.test +++ b/modules/nf-core/paraphase/tests/main.nf.test @@ -3,7 +3,6 @@ nextflow_process { name "Test Process PARAPHASE" script "../main.nf" process "PARAPHASE" - config "./nextflow.config" tag "modules" tag "modules_nfcore" @@ -25,6 +24,9 @@ nextflow_process { } test("homo_sapiens - [ bam, bai ], []") { + + config "./nextflow.config" + when { process { """ @@ -45,16 +47,16 @@ nextflow_process { then { assertAll( { assert process.success }, + { assert process.out.vcf_index.get(0).get(1).endsWith("tbi") }, { assert snapshot( file(process.out.json.get(0).get(1)).readLines()[0..39], - process.out.versions, - file(process.out.vcf.get(0).get(1)).readLines()[0..962], - process.out.bam ==~ "test.paraphase.bam", - process.out.bai ==~ "test.paraphase.bam.bai", + path(process.out.vcf.get(0).get(1)).linesGzip[10], + bam(process.out.bam.get(0).get(1)).getReadsMD5(), + file(process.out.bai.get(0).get(1)).name, + file(process.out.vcf_index.get(0).get(1)).name, + process.out.versions ).match() - }, - { assert process.out.bam.get(0).get(1) =~ "test.paraphase.bam" }, - { assert process.out.bai.get(0).get(1) =~ "test.paraphase.bam.bai" }, + } ) } @@ -62,6 +64,46 @@ nextflow_process { test("homo_sapiens - [ bam, bai ], config") { + config "./nextflow.config" + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:true ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/pacbio/bam/test.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/pacbio/bam/test.sorted.bam.bai', checkIfExists: true), + ] + input[1] = TABIX_BGZIP.out.output + input[2] = [ + [ id:'test_config' ], + file(params.modules_testdata_base_path + 'generic/config/paraphase_config.yaml', checkIfExists: true), + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert process.out.vcf_index.get(0).get(1).endsWith("tbi") }, + { assert snapshot( + file(process.out.json.get(0).get(1)).readLines()[0..39], + path(process.out.vcf.get(0).get(1)).linesGzip[10], + bam(process.out.bam.get(0).get(1)).getReadsMD5(), + file(process.out.bai.get(0).get(1)).name, + file(process.out.vcf_index.get(0).get(1)).name, + process.out.versions + ).match() + } + ) + } + } + + test("homo_sapiens - [ bam, bai ], config - csi_index") { + + config "./nextflow.csi_index.config" + when { process { """ @@ -82,16 +124,16 @@ nextflow_process { then { assertAll( { assert process.success }, + { assert process.out.vcf_index.get(0).get(1).endsWith("csi") }, { assert snapshot( file(process.out.json.get(0).get(1)).readLines()[0..39], - process.out.versions, - file(process.out.vcf.get(0).get(1)).readLines()[0..962], - process.out.bam ==~ "test.paraphase.bam", - process.out.bai ==~ "test.paraphase.bam.bai", + path(process.out.vcf.get(0).get(1)).linesGzip[10], + bam(process.out.bam.get(0).get(1)).getReadsMD5(), + file(process.out.bai.get(0).get(1)).name, + file(process.out.vcf_index.get(0).get(1)).name, + process.out.versions ).match() - }, - { assert process.out.bam.get(0).get(1) =~ "test.paraphase.bam" }, - { assert process.out.bai.get(0).get(1) =~ "test.paraphase.bam.bai" }, + } ) } } @@ -99,6 +141,7 @@ nextflow_process { test("homo_sapiens - [ bam, bai ], [] - stub") { options "-stub" + config "./nextflow.config" when { process { @@ -128,6 +171,37 @@ nextflow_process { test("homo_sapiens - [ bam, bai ], config - stub") { options "-stub" + config "./nextflow.config" + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:true ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/pacbio/bam/test.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/pacbio/bam/test.sorted.bam.bai', checkIfExists: true), + ] + input[1] = TABIX_BGZIP.out.output + input[2] = [ + [ id:'test_config' ], + file(params.modules_testdata_base_path + 'generic/config/paraphase_config.yaml', checkIfExists: true), + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("homo_sapiens - [ bam, bai ], config - stub - csi_index") { + + options "-stub" + config "./nextflow.csi_index.config" when { process { diff --git a/modules/nf-core/paraphase/tests/main.nf.test.snap b/modules/nf-core/paraphase/tests/main.nf.test.snap index 32242c1c..b80a3443 100644 --- a/modules/nf-core/paraphase/tests/main.nf.test.snap +++ b/modules/nf-core/paraphase/tests/main.nf.test.snap @@ -43,982 +43,19 @@ " \"unique_supporting_reads\": {", " \"12222212222111211221\": [" ], + "chr22\t18912284\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:7:0,7\t1:5:0,5", + "add24d02bf7f37b3ca30771c44ab4ee2", + "test.paraphase.bam.bai", + "test_PRODH.vcf.gz.tbi", [ "versions.yml:md5,9162c83cfe9e915e8743a1c9d64d64eb" - ], - [ - "##fileformat=VCFv4.2", - "##FILTER=", - "##INFO=", - "##FORMAT=", - "##FORMAT=", - "##FORMAT=", - "##contig=", - "##paraphase_version=3.1.1", - "##paraphase_command=paraphase --gene PRODH --threads 2 --bam test.sorted.bam --reference test_ref.fa --prefix test --out .", - "#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO\tFORMAT\tPRODH_hap1\tPRODH_hap2", - "chr22\t18912284\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:7:0,7\t1:5:0,5", - "chr22\t18912285\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912286\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912287\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912288\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912289\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912290\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912291\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912292\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912293\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912294\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,10\t1:6:0,6", - "chr22\t18912295\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:8:0,7\t.:3:0,3", - "chr22\t18912296\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912297\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912298\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t.:3:0,3", - "chr22\t18912299\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:5:0,5\t.:3:0,1", - "chr22\t18912300\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912301\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912302\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912303\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:8:0,8\t1:7:0,7", - "chr22\t18912304\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912305\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912306\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912307\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912308\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912309\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912310\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,9\t1:7:0,7", - "chr22\t18912311\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,7\t.:3:0,3", - "chr22\t18912312\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912313\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912314\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912315\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,5", - "chr22\t18912316\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t.:6:0,4", - "chr22\t18912317\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912318\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912319\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912320\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912321\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912322\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912323\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912324\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912325\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912326\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912327\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912328\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912329\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:6:0,6", - "chr22\t18912330\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912331\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912332\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912333\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:5:0,5", - "chr22\t18912334\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912335\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912336\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912337\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912338\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912339\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912340\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912341\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912342\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:4:0,4", - "chr22\t18912343\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912344\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912345\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912346\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,5", - "chr22\t18912347\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:7:0,7\t1:4:0,3", - "chr22\t18912348\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912349\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912350\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912351\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912352\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,11\t1:7:0,7", - "chr22\t18912353\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:6:0,5\t.:2:0,2", - "chr22\t18912354\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912355\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912356\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912357\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912358\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912359\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912360\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912361\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,11\t1:6:0,6", - "chr22\t18912362\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912363\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912364\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912365\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912366\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912367\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912368\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912369\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:5:0,5", - "chr22\t18912370\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912371\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912372\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912373\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18912374\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,5", - "chr22\t18912375\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912376\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:5:0,5", - "chr22\t18912377\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,10\t1:7:0,7", - "chr22\t18912378\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:4:0,4", - "chr22\t18912379\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912380\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:5:0,4", - "chr22\t18912381\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:4:0,4", - "chr22\t18912382\t.\ta\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,5", - "chr22\t18912383\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912384\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912385\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912386\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,6", - "chr22\t18912387\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912388\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912389\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912390\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912391\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912392\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912393\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912394\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:6:0,6", - "chr22\t18912395\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912396\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912397\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912398\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912399\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912400\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912401\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912402\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912403\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912404\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912405\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912406\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:5:0,5", - "chr22\t18912407\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912408\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912409\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912410\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:4:0,4", - "chr22\t18912411\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912412\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912413\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912414\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912415\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912416\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912417\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912418\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,6", - "chr22\t18912419\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t.:3:0,3", - "chr22\t18912420\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912421\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912422\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912423\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912424\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t.:3:0,3", - "chr22\t18912425\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912426\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:5:0,5", - "chr22\t18912427\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912428\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912429\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912430\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912431\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912432\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912433\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912434\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912435\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912436\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912437\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,6", - "chr22\t18912438\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,5", - "chr22\t18912439\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912440\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912441\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912442\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:4:0,4", - "chr22\t18912443\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912444\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912445\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912446\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912447\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912448\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912449\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912450\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912451\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912452\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912453\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912454\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912455\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912456\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912457\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912458\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:8:0,8\t.:3:0,3", - "chr22\t18912459\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912460\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912461\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:5:0,5", - "chr22\t18912462\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912463\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,11\t1:6:0,6", - "chr22\t18912464\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912465\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912466\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912467\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912468\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18912469\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912470\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912471\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912472\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912473\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:4:0,4", - "chr22\t18912474\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912475\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912476\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912477\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912478\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912479\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912480\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912481\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:4:0,4", - "chr22\t18912482\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912483\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912484\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912485\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912486\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18912487\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912488\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912489\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912490\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912491\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912492\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912493\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912494\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912495\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912496\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912497\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912498\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912499\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912500\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:8:0,8\t1:4:0,4", - "chr22\t18912501\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912502\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912503\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912504\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912505\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912506\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t.:2:0,2", - "chr22\t18912507\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912508\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912509\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912510\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912511\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912512\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912513\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912514\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912515\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912516\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912517\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912518\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912519\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912520\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912521\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912522\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:5:0,5", - "chr22\t18912523\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912524\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912525\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912526\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912527\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912528\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,4", - "chr22\t18912529\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t.:2:0,2", - "chr22\t18912530\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912531\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912532\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:5:0,5", - "chr22\t18912533\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912534\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912535\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912536\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912537\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912538\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18912539\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912540\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912541\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912542\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912543\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912544\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912545\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912546\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912547\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912548\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912549\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912550\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912551\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912552\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912553\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912554\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912555\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912556\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912557\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912558\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,11\t1:7:0,5", - "chr22\t18912559\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,8\t.:4:0,2", - "chr22\t18912560\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912561\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912562\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:6:0,6", - "chr22\t18912563\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912564\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912565\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912566\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912567\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912568\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912569\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912570\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912571\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18912572\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,4", - "chr22\t18912573\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t.:3:0,3", - "chr22\t18912574\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912575\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,6", - "chr22\t18912576\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,4", - "chr22\t18912577\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912578\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912579\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:4:0,4", - "chr22\t18912580\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912581\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912582\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912583\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912584\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:4:0,4", - "chr22\t18912585\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912586\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912587\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:4:0,4", - "chr22\t18912588\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912589\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912590\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912591\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912592\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912593\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912594\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:5:0,5", - "chr22\t18912595\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912596\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:6:0,6", - "chr22\t18912597\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912598\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912599\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912600\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912601\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912602\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912603\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912604\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912605\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912606\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912607\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912608\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912609\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912610\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912611\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:4:0,4", - "chr22\t18912612\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912613\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:8:0,8\t1:6:0,6", - "chr22\t18912614\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912615\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:5:0,5", - "chr22\t18912616\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:7:0,7\t.:2:0,2", - "chr22\t18912617\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912618\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912619\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912620\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:7:0,7\t1:6:0,6", - "chr22\t18912621\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912622\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912623\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912624\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912625\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912626\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912627\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912628\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912629\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912630\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t.:3:0,3", - "chr22\t18912631\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912632\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912633\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912634\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912635\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912636\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:6:0,6", - "chr22\t18912637\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912638\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912639\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912640\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912641\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912642\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912643\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t.:3:0,3", - "chr22\t18912644\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912645\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912646\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912647\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912648\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912649\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912650\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912651\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912652\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,11\t1:6:0,6", - "chr22\t18912653\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t.:3:0,3", - "chr22\t18912654\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912655\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:6:0,6", - "chr22\t18912656\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18912657\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912658\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912659\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912660\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,10\t1:7:0,6", - "chr22\t18912661\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:8:0,7\t.:2:0,2", - "chr22\t18912662\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912663\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912664\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912665\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:5:0,5", - "chr22\t18912666\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912667\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18912668\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912669\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912670\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912671\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912672\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912673\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18912674\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912675\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912676\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912677\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912678\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912679\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912680\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912681\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912682\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912683\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912684\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912685\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912686\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,5", - "chr22\t18912687\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912688\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912689\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912690\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:6:0,6", - "chr22\t18912691\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912692\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,5", - "chr22\t18912693\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,5", - "chr22\t18912694\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912695\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,11\t1:7:0,6", - "chr22\t18912696\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:4:0,4", - "chr22\t18912697\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912698\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912699\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912700\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912701\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912702\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912703\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912704\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912705\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912706\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18912707\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912708\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912709\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912710\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912711\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912712\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912713\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,6", - "chr22\t18912714\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:7:0,6", - "chr22\t18912715\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912716\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912717\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912718\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912719\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912720\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912721\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912722\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912723\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912724\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18912725\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:4:0,4", - "chr22\t18912726\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912727\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912728\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912729\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,6", - "chr22\t18912730\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:4:0,3", - "chr22\t18912731\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912732\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912733\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912734\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912735\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912736\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912737\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912738\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912739\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912740\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912741\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912742\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912743\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912744\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:6:0,6", - "chr22\t18912745\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912746\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912747\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912748\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912749\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912750\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912751\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912752\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912753\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912754\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912755\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912756\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912757\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912758\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912759\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912760\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912761\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912762\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912763\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,10\t1:4:0,4", - "chr22\t18912764\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912765\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912766\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912767\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912768\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912769\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912770\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t.:3:0,3", - "chr22\t18912771\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912772\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912773\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912774\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912775\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912776\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,10\t1:7:0,7", - "chr22\t18912777\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912778\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912779\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912780\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912781\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912782\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912783\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912784\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912785\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912786\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912787\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912788\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912789\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912790\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912791\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912792\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912793\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912794\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912795\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:4:0,4", - "chr22\t18912796\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912797\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912798\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912799\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912800\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912801\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18912802\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912803\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912804\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912805\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912806\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912807\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912808\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912809\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912810\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912811\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912812\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912813\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912814\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,11\t1:7:0,7", - "chr22\t18912815\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:7:0,6\t1:4:0,4", - "chr22\t18912816\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912817\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912818\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:6:0,6", - "chr22\t18912819\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912820\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,6", - "chr22\t18912821\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:5:0,5", - "chr22\t18912822\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912823\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:6:0,6", - "chr22\t18912824\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912825\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912826\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912827\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912828\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912829\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912830\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912831\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912832\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912833\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,6", - "chr22\t18912834\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:8:0,8\t1:4:0,3", - "chr22\t18912835\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912836\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912837\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912838\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,10\t1:7:0,7", - "chr22\t18912839\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,5", - "chr22\t18912840\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t.:3:0,2", - "chr22\t18912841\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912842\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912843\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912844\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912845\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912846\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,5", - "chr22\t18912847\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:8:0,8\t1:4:0,4", - "chr22\t18912848\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912849\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912850\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912851\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912852\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912853\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912854\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912855\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912856\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:5:0,5", - "chr22\t18912857\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912858\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912859\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912860\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912861\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:5:0,5", - "chr22\t18912862\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912863\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912864\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912865\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912866\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,6", - "chr22\t18912867\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t.:3:0,3", - "chr22\t18912868\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912869\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912870\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912871\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912872\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912873\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912874\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912875\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912876\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912877\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912878\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912879\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912880\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,6", - "chr22\t18912881\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:4:0,4", - "chr22\t18912882\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912883\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912884\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912885\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912886\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912887\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912888\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912889\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912890\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912891\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912892\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912893\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:4:0,4", - "chr22\t18912894\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912895\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912896\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,6", - "chr22\t18912897\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,5", - "chr22\t18912898\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912899\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912900\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912901\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912902\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,6", - "chr22\t18912903\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:7:0,7\t.:3:0,2", - "chr22\t18912904\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912905\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912906\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912907\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912908\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912909\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912910\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912911\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912912\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912913\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912914\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912915\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912916\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912917\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,10\t1:7:0,7", - "chr22\t18912918\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:7:0,6\t.:2:0,2", - "chr22\t18912919\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912920\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912921\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912922\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:8:0,8\t1:6:0,6", - "chr22\t18912923\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912924\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912925\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912926\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912927\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:4:0,4", - "chr22\t18912928\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912929\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:7:0,7", - "chr22\t18912930\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:7:0,7\t.:3:0,3", - "chr22\t18912931\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912932\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:6:0,6", - "chr22\t18912933\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912934\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912935\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912936\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912937\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:5:0,5", - "chr22\t18912938\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,11\t1:6:0,6", - "chr22\t18912939\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912940\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912941\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912942\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912943\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912944\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912945\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912946\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912947\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912948\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912949\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912950\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912951\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t.:3:0,3", - "chr22\t18912952\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912953\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,8\t1:6:0,6", - "chr22\t18912954\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,8\t1:4:0,4", - "chr22\t18912955\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912956\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912957\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912958\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912959\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912960\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912961\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912962\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912963\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912964\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912965\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18912966\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:7:0,7", - "chr22\t18912967\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912968\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912969\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912970\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912971\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912972\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912973\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:5:0,5", - "chr22\t18912974\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912975\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912976\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912977\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912978\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912979\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912980\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912981\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912982\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912983\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912984\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912985\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912986\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912987\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912988\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912989\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912990\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912991\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912992\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18912993\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912994\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912995\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:8:0,8\t1:4:0,4", - "chr22\t18912996\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912997\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912998\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912999\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913000\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,11\t1:7:0,7", - "chr22\t18913001\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913002\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913003\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913004\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913005\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913006\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913007\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913008\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913009\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t.:3:0,3", - "chr22\t18913010\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913011\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913012\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913013\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913014\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913015\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913016\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913017\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913018\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913019\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18913020\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913021\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913022\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913023\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913024\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:4:0,4", - "chr22\t18913025\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913026\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913027\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913028\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,11\t1:6:0,6", - "chr22\t18913029\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:4:0,4", - "chr22\t18913030\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913031\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913032\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913033\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:4:0,4", - "chr22\t18913034\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913035\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913036\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913037\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913038\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913039\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913040\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913041\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913042\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913043\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913044\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913045\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913046\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913047\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913048\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913049\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913050\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18913051\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913052\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913053\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913054\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913055\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913056\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913057\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913058\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913059\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913060\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913061\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913062\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18913063\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913064\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913065\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18913066\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913067\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913068\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,11\t1:7:0,7", - "chr22\t18913069\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:8:0,7\t.:2:0,2", - "chr22\t18913070\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913071\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913072\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913073\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,6", - "chr22\t18913074\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913075\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:5:0,5", - "chr22\t18913076\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913077\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913078\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913079\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913080\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913081\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18913082\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913083\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913084\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913085\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913086\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913087\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913088\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913089\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913090\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913091\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18913092\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913093\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913094\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913095\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913096\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913097\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913098\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913099\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913100\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:8:0,8\t.:3:0,3", - "chr22\t18913101\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913102\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913103\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:8:0,8\t1:5:0,5", - "chr22\t18913104\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:8:0,8\t1:5:0,5", - "chr22\t18913105\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913106\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913107\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913108\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913109\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913110\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913111\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913112\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913113\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913114\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913115\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913116\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913117\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913118\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18913119\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913120\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913121\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913122\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913123\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913124\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913125\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913126\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913127\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913128\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913129\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:5:0,5", - "chr22\t18913130\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913131\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913132\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,11\t1:7:0,6", - "chr22\t18913133\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:6:0,5\t.:3:0,2", - "chr22\t18913134\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913135\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913136\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913137\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913138\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,5", - "chr22\t18913139\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:7:0,7\t.:3:0,1", - "chr22\t18913140\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913141\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913142\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913143\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913144\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913145\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18913146\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913147\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913148\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913149\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18913150\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913151\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913152\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913153\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913154\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913155\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913156\t.\ta\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913157\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913158\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:8:0,8\t.:2:0,2", - "chr22\t18913159\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913160\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:7:0,7", - "chr22\t18913161\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:5:0,5", - "chr22\t18913162\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913163\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18913164\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913165\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913166\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913167\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913168\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913169\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913170\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:4:0,4", - "chr22\t18913171\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913172\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:5:0,5", - "chr22\t18913173\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913174\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913175\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913176\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913177\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913178\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:5:0,5", - "chr22\t18913179\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18913180\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913181\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913182\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:4:0,4", - "chr22\t18913183\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913184\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18913185\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913186\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913187\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913188\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913189\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913190\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913191\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913192\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913193\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18913194\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,11\t1:6:0,6", - "chr22\t18913195\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18913196\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913197\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913198\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913199\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913200\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913201\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913202\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18913203\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,6", - "chr22\t18913204\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,5", - "chr22\t18913205\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913206\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913207\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t.:3:0,3", - "chr22\t18913208\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913209\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913210\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913211\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18913212\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913213\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913214\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913215\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913216\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913217\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913218\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913219\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913220\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913221\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913222\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913223\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913224\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913225\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:5:0,5", - "chr22\t18913226\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913227\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913228\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913229\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913230\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913231\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18913232\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913233\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913234\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913235\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913236\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5" - ], - false, - false + ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-05-29T15:14:21.054789211" + "timestamp": "2024-09-06T06:20:55.135067843" }, "homo_sapiens - [ bam, bai ], config - stub": { "content": [ @@ -1056,10 +93,19 @@ "id": "test", "single_end": true }, - "test_stub.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" + "test_stub.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "4": [ + [ + { + "id": "test", + "single_end": true + }, + "test_stub.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ "versions.yml:md5,9162c83cfe9e915e8743a1c9d64d64eb" ], "bai": [ @@ -1095,7 +141,16 @@ "id": "test", "single_end": true }, - "test_stub.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" + "test_stub.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "vcf_index": [ + [ + { + "id": "test", + "single_end": true + }, + "test_stub.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "versions": [ @@ -1105,9 +160,67 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-05-29T17:44:03.275093922" + "timestamp": "2024-09-03T12:04:30.019868621" + }, + "homo_sapiens - [ bam, bai ], config - csi_index": { + "content": [ + [ + "{", + " \"PRODH\": {", + " \"total_cn\": 2,", + " \"gene_cn\": null,", + " \"final_haplotypes\": {", + " \"12222212222111211221\": \"PRODH_hap1\",", + " \"21111121111222122112\": \"PRODH_hap2\"", + " },", + " \"two_copy_haplotypes\": [],", + " \"alleles_final\": [],", + " \"hap_links\": {},", + " \"highest_total_cn\": 2,", + " \"assembled_haplotypes\": [", + " \"12222212222111211221\",", + " \"21111121111222122112\"", + " ],", + " \"sites_for_phasing\": [", + " \"18913237_G_A\",", + " \"18917224_G_A\",", + " \"18917246_A_C\",", + " \"18917262_G_A\",", + " \"18917266_T_C\",", + " \"18917362_C_A\",", + " \"18918010_C_T\",", + " \"18918465_G_A\",", + " \"18918847_T_C\",", + " \"18919892_G_T\",", + " \"18920342_G_A\",", + " \"18920484_C_T\",", + " \"18921128_C_T\",", + " \"18921213_T_C\",", + " \"18921638_T_G\",", + " \"18921763_T_C\",", + " \"18922744_C_T\",", + " \"18923032_C_T\",", + " \"18923315_T_G\",", + " \"18923644_G_A\"", + " ],", + " \"unique_supporting_reads\": {", + " \"12222212222111211221\": [" + ], + "chr22\t18912284\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:7:0,7\t1:5:0,5", + "add24d02bf7f37b3ca30771c44ab4ee2", + "test.paraphase.bam.bai", + "test_PRODH.vcf.gz.csi", + [ + "versions.yml:md5,9162c83cfe9e915e8743a1c9d64d64eb" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-06T06:24:48.142490096" }, "homo_sapiens - [ bam, bai ], [] - stub": { "content": [ @@ -1145,10 +258,19 @@ "id": "test", "single_end": true }, - "test_stub.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" + "test_stub.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "4": [ + [ + { + "id": "test", + "single_end": true + }, + "test_stub.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ "versions.yml:md5,9162c83cfe9e915e8743a1c9d64d64eb" ], "bai": [ @@ -1184,7 +306,16 @@ "id": "test", "single_end": true }, - "test_stub.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" + "test_stub.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "vcf_index": [ + [ + { + "id": "test", + "single_end": true + }, + "test_stub.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "versions": [ @@ -1194,9 +325,9 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-05-29T17:43:56.008820548" + "timestamp": "2024-09-03T12:04:14.370756094" }, "homo_sapiens - [ bam, bai ], config": { "content": [ @@ -1242,981 +373,125 @@ " \"unique_supporting_reads\": {", " \"12222212222111211221\": [" ], + "chr22\t18912284\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:7:0,7\t1:5:0,5", + "add24d02bf7f37b3ca30771c44ab4ee2", + "test.paraphase.bam.bai", + "test_PRODH.vcf.gz.tbi", [ "versions.yml:md5,9162c83cfe9e915e8743a1c9d64d64eb" - ], - [ - "##fileformat=VCFv4.2", - "##FILTER=", - "##INFO=", - "##FORMAT=", - "##FORMAT=", - "##FORMAT=", - "##contig=", - "##paraphase_version=3.1.1", - "##paraphase_command=paraphase --gene PRODH --threads 2 --bam test.sorted.bam --reference test_ref.fa --prefix test --config paraphase_config.yaml --out .", - "#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO\tFORMAT\tPRODH_hap1\tPRODH_hap2", - "chr22\t18912284\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:7:0,7\t1:5:0,5", - "chr22\t18912285\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912286\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912287\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912288\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912289\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912290\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912291\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912292\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912293\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912294\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,10\t1:6:0,6", - "chr22\t18912295\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:8:0,7\t.:3:0,3", - "chr22\t18912296\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912297\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912298\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t.:3:0,3", - "chr22\t18912299\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:5:0,5\t.:3:0,1", - "chr22\t18912300\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912301\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912302\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912303\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:8:0,8\t1:7:0,7", - "chr22\t18912304\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912305\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912306\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912307\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912308\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912309\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912310\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,9\t1:7:0,7", - "chr22\t18912311\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,7\t.:3:0,3", - "chr22\t18912312\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912313\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912314\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912315\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,5", - "chr22\t18912316\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t.:6:0,4", - "chr22\t18912317\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912318\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912319\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912320\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912321\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912322\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912323\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912324\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912325\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912326\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912327\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912328\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912329\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:6:0,6", - "chr22\t18912330\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912331\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912332\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912333\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:5:0,5", - "chr22\t18912334\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912335\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912336\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912337\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912338\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912339\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912340\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912341\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912342\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:4:0,4", - "chr22\t18912343\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912344\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912345\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912346\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,5", - "chr22\t18912347\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:7:0,7\t1:4:0,3", - "chr22\t18912348\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912349\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912350\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912351\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912352\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,11\t1:7:0,7", - "chr22\t18912353\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:6:0,5\t.:2:0,2", - "chr22\t18912354\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912355\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912356\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912357\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912358\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912359\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912360\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912361\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,11\t1:6:0,6", - "chr22\t18912362\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912363\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912364\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912365\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912366\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912367\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912368\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912369\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:5:0,5", - "chr22\t18912370\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912371\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912372\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912373\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18912374\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,5", - "chr22\t18912375\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912376\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:5:0,5", - "chr22\t18912377\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,10\t1:7:0,7", - "chr22\t18912378\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:4:0,4", - "chr22\t18912379\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912380\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:5:0,4", - "chr22\t18912381\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:4:0,4", - "chr22\t18912382\t.\ta\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,5", - "chr22\t18912383\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912384\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912385\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912386\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,6", - "chr22\t18912387\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912388\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912389\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912390\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912391\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912392\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912393\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912394\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:6:0,6", - "chr22\t18912395\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912396\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912397\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912398\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912399\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912400\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912401\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912402\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912403\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912404\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912405\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912406\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:5:0,5", - "chr22\t18912407\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912408\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912409\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912410\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:4:0,4", - "chr22\t18912411\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912412\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912413\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912414\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912415\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912416\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912417\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912418\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,6", - "chr22\t18912419\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t.:3:0,3", - "chr22\t18912420\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912421\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912422\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912423\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912424\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t.:3:0,3", - "chr22\t18912425\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912426\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:5:0,5", - "chr22\t18912427\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912428\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912429\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912430\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912431\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912432\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912433\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912434\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912435\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912436\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912437\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,6", - "chr22\t18912438\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,5", - "chr22\t18912439\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912440\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912441\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912442\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:4:0,4", - "chr22\t18912443\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912444\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912445\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912446\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912447\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912448\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912449\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912450\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912451\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912452\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912453\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912454\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912455\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912456\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912457\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912458\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:8:0,8\t.:3:0,3", - "chr22\t18912459\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912460\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912461\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:5:0,5", - "chr22\t18912462\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912463\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,11\t1:6:0,6", - "chr22\t18912464\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912465\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912466\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912467\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912468\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18912469\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912470\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912471\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912472\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912473\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:4:0,4", - "chr22\t18912474\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912475\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912476\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912477\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912478\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912479\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912480\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912481\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:4:0,4", - "chr22\t18912482\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912483\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912484\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912485\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912486\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18912487\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912488\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912489\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912490\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912491\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912492\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912493\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912494\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912495\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912496\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912497\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912498\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912499\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912500\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:8:0,8\t1:4:0,4", - "chr22\t18912501\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912502\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912503\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912504\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912505\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912506\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t.:2:0,2", - "chr22\t18912507\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912508\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912509\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912510\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912511\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912512\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912513\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912514\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912515\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912516\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912517\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912518\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912519\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912520\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912521\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912522\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:5:0,5", - "chr22\t18912523\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912524\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912525\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912526\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912527\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912528\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,4", - "chr22\t18912529\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t.:2:0,2", - "chr22\t18912530\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912531\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912532\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:5:0,5", - "chr22\t18912533\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912534\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912535\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912536\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912537\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912538\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18912539\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912540\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912541\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912542\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912543\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912544\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912545\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912546\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912547\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912548\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912549\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912550\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912551\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912552\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912553\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912554\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912555\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912556\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912557\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912558\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,11\t1:7:0,5", - "chr22\t18912559\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,8\t.:4:0,2", - "chr22\t18912560\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912561\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912562\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:6:0,6", - "chr22\t18912563\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912564\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912565\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912566\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912567\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912568\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912569\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912570\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912571\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18912572\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,4", - "chr22\t18912573\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t.:3:0,3", - "chr22\t18912574\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912575\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,6", - "chr22\t18912576\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,4", - "chr22\t18912577\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912578\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912579\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:4:0,4", - "chr22\t18912580\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912581\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912582\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912583\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912584\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:4:0,4", - "chr22\t18912585\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912586\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912587\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:4:0,4", - "chr22\t18912588\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912589\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912590\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912591\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912592\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912593\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912594\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:5:0,5", - "chr22\t18912595\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912596\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:6:0,6", - "chr22\t18912597\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912598\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912599\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912600\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912601\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912602\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912603\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912604\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912605\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912606\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912607\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912608\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912609\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912610\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912611\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:4:0,4", - "chr22\t18912612\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912613\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:8:0,8\t1:6:0,6", - "chr22\t18912614\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912615\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:5:0,5", - "chr22\t18912616\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:7:0,7\t.:2:0,2", - "chr22\t18912617\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912618\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912619\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912620\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:7:0,7\t1:6:0,6", - "chr22\t18912621\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912622\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912623\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912624\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912625\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912626\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912627\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912628\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912629\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912630\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t.:3:0,3", - "chr22\t18912631\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912632\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912633\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912634\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912635\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912636\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:6:0,6", - "chr22\t18912637\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912638\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912639\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912640\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912641\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912642\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912643\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t.:3:0,3", - "chr22\t18912644\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912645\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912646\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912647\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912648\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912649\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912650\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912651\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912652\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,11\t1:6:0,6", - "chr22\t18912653\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t.:3:0,3", - "chr22\t18912654\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912655\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:6:0,6", - "chr22\t18912656\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18912657\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912658\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912659\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912660\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,10\t1:7:0,6", - "chr22\t18912661\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:8:0,7\t.:2:0,2", - "chr22\t18912662\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912663\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912664\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912665\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:5:0,5", - "chr22\t18912666\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912667\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18912668\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912669\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912670\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912671\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912672\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912673\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18912674\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912675\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912676\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912677\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912678\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912679\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912680\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912681\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912682\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912683\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912684\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912685\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912686\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,5", - "chr22\t18912687\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912688\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912689\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912690\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:6:0,6", - "chr22\t18912691\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912692\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,5", - "chr22\t18912693\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,5", - "chr22\t18912694\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912695\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,11\t1:7:0,6", - "chr22\t18912696\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:4:0,4", - "chr22\t18912697\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912698\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912699\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912700\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912701\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912702\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912703\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912704\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912705\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912706\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18912707\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912708\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912709\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912710\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912711\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912712\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912713\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,6", - "chr22\t18912714\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:7:0,6", - "chr22\t18912715\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912716\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912717\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912718\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912719\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912720\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912721\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912722\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912723\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912724\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18912725\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:4:0,4", - "chr22\t18912726\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912727\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912728\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912729\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,6", - "chr22\t18912730\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:4:0,3", - "chr22\t18912731\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912732\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912733\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912734\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912735\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912736\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912737\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912738\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912739\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912740\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912741\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912742\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912743\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912744\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:6:0,6", - "chr22\t18912745\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912746\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912747\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912748\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912749\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912750\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912751\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912752\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912753\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912754\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912755\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912756\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912757\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912758\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912759\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912760\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912761\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912762\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912763\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,10\t1:4:0,4", - "chr22\t18912764\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912765\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912766\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912767\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912768\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912769\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912770\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t.:3:0,3", - "chr22\t18912771\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912772\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912773\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912774\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912775\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912776\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,10\t1:7:0,7", - "chr22\t18912777\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912778\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912779\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912780\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912781\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912782\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912783\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912784\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912785\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912786\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912787\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912788\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912789\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912790\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912791\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912792\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912793\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912794\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912795\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:4:0,4", - "chr22\t18912796\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912797\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912798\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912799\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912800\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912801\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18912802\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912803\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912804\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912805\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912806\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912807\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912808\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912809\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912810\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912811\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912812\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912813\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912814\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,11\t1:7:0,7", - "chr22\t18912815\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:7:0,6\t1:4:0,4", - "chr22\t18912816\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912817\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912818\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:6:0,6", - "chr22\t18912819\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912820\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,6", - "chr22\t18912821\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:5:0,5", - "chr22\t18912822\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912823\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:6:0,6", - "chr22\t18912824\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912825\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912826\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912827\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912828\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912829\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912830\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912831\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912832\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912833\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,6", - "chr22\t18912834\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:8:0,8\t1:4:0,3", - "chr22\t18912835\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912836\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912837\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912838\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,10\t1:7:0,7", - "chr22\t18912839\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,5", - "chr22\t18912840\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t.:3:0,2", - "chr22\t18912841\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912842\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912843\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912844\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912845\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912846\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,5", - "chr22\t18912847\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:8:0,8\t1:4:0,4", - "chr22\t18912848\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912849\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912850\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912851\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912852\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912853\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912854\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912855\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912856\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:5:0,5", - "chr22\t18912857\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912858\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912859\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912860\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912861\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:5:0,5", - "chr22\t18912862\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912863\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912864\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912865\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912866\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,6", - "chr22\t18912867\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t.:3:0,3", - "chr22\t18912868\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912869\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912870\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912871\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912872\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912873\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912874\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912875\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912876\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912877\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912878\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912879\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912880\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,6", - "chr22\t18912881\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:4:0,4", - "chr22\t18912882\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912883\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912884\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912885\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912886\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912887\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912888\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912889\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912890\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912891\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912892\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912893\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:4:0,4", - "chr22\t18912894\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912895\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912896\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,6", - "chr22\t18912897\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,5", - "chr22\t18912898\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912899\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912900\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912901\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912902\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,6", - "chr22\t18912903\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:7:0,7\t.:3:0,2", - "chr22\t18912904\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912905\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912906\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912907\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912908\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912909\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912910\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912911\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912912\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912913\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912914\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912915\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912916\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912917\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,10\t1:7:0,7", - "chr22\t18912918\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:7:0,6\t.:2:0,2", - "chr22\t18912919\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912920\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912921\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912922\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:8:0,8\t1:6:0,6", - "chr22\t18912923\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912924\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912925\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912926\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912927\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:4:0,4", - "chr22\t18912928\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912929\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:7:0,7", - "chr22\t18912930\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:7:0,7\t.:3:0,3", - "chr22\t18912931\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912932\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:6:0,6", - "chr22\t18912933\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912934\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912935\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912936\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912937\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:5:0,5", - "chr22\t18912938\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,11\t1:6:0,6", - "chr22\t18912939\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912940\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912941\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912942\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912943\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912944\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912945\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912946\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912947\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912948\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912949\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912950\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912951\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t.:3:0,3", - "chr22\t18912952\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912953\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,8\t1:6:0,6", - "chr22\t18912954\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,8\t1:4:0,4", - "chr22\t18912955\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912956\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912957\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912958\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912959\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912960\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912961\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912962\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912963\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912964\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912965\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18912966\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:7:0,7", - "chr22\t18912967\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912968\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912969\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912970\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912971\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912972\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912973\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:5:0,5", - "chr22\t18912974\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912975\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912976\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912977\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912978\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912979\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912980\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912981\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912982\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912983\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912984\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912985\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912986\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912987\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912988\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912989\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912990\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912991\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912992\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18912993\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912994\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912995\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:8:0,8\t1:4:0,4", - "chr22\t18912996\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912997\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912998\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912999\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913000\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,11\t1:7:0,7", - "chr22\t18913001\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913002\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913003\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913004\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913005\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913006\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913007\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913008\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913009\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t.:3:0,3", - "chr22\t18913010\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913011\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913012\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913013\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913014\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913015\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913016\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913017\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913018\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913019\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18913020\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913021\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913022\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913023\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913024\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:4:0,4", - "chr22\t18913025\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913026\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913027\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913028\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,11\t1:6:0,6", - "chr22\t18913029\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:4:0,4", - "chr22\t18913030\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913031\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913032\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913033\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:4:0,4", - "chr22\t18913034\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913035\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913036\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913037\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913038\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913039\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913040\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913041\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913042\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913043\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913044\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913045\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913046\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913047\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913048\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913049\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913050\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18913051\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913052\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913053\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913054\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913055\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913056\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913057\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913058\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913059\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913060\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913061\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913062\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18913063\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913064\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913065\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18913066\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913067\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913068\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,11\t1:7:0,7", - "chr22\t18913069\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:8:0,7\t.:2:0,2", - "chr22\t18913070\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913071\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913072\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913073\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,6", - "chr22\t18913074\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913075\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:5:0,5", - "chr22\t18913076\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913077\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913078\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913079\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913080\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913081\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18913082\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913083\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913084\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913085\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913086\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913087\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913088\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913089\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913090\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913091\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18913092\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913093\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913094\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913095\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913096\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913097\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913098\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913099\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913100\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:8:0,8\t.:3:0,3", - "chr22\t18913101\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913102\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913103\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:8:0,8\t1:5:0,5", - "chr22\t18913104\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:8:0,8\t1:5:0,5", - "chr22\t18913105\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913106\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913107\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913108\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913109\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913110\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913111\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913112\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913113\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913114\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913115\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913116\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913117\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913118\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18913119\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913120\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913121\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913122\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913123\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913124\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913125\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913126\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913127\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913128\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913129\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:5:0,5", - "chr22\t18913130\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913131\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913132\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,11\t1:7:0,6", - "chr22\t18913133\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:6:0,5\t.:3:0,2", - "chr22\t18913134\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913135\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913136\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913137\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913138\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,5", - "chr22\t18913139\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:7:0,7\t.:3:0,1", - "chr22\t18913140\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913141\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913142\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913143\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913144\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913145\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18913146\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913147\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913148\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913149\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18913150\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913151\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913152\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913153\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913154\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913155\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913156\t.\ta\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913157\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913158\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:8:0,8\t.:2:0,2", - "chr22\t18913159\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913160\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:7:0,7", - "chr22\t18913161\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:5:0,5", - "chr22\t18913162\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913163\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18913164\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913165\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913166\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913167\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913168\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913169\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913170\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:4:0,4", - "chr22\t18913171\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913172\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:5:0,5", - "chr22\t18913173\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913174\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913175\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913176\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913177\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913178\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:5:0,5", - "chr22\t18913179\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18913180\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913181\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913182\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:4:0,4", - "chr22\t18913183\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913184\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18913185\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913186\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913187\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913188\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913189\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913190\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913191\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913192\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913193\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18913194\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,11\t1:6:0,6", - "chr22\t18913195\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18913196\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913197\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913198\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913199\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913200\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913201\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913202\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18913203\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,6", - "chr22\t18913204\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,5", - "chr22\t18913205\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913206\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913207\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t.:3:0,3", - "chr22\t18913208\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913209\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913210\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913211\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18913212\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913213\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913214\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913215\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913216\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913217\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913218\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913219\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913220\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913221\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913222\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913223\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913224\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913225\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:5:0,5", - "chr22\t18913226\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913227\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913228\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913229\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913230\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913231\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18913232\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913233\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913234\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913235\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913236\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5" - ], - false, - false + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-06T06:24:34.443854854" + }, + "homo_sapiens - [ bam, bai ], config - stub - csi_index": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": true + }, + "test.paraphase.json:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": true + }, + "test.paraphase.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": true + }, + "test.paraphase.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "test", + "single_end": true + }, + "test_stub.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "4": [ + [ + { + "id": "test", + "single_end": true + }, + "test_stub.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ + "versions.yml:md5,9162c83cfe9e915e8743a1c9d64d64eb" + ], + "bai": [ + [ + { + "id": "test", + "single_end": true + }, + "test.paraphase.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "bam": [ + [ + { + "id": "test", + "single_end": true + }, + "test.paraphase.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "json": [ + [ + { + "id": "test", + "single_end": true + }, + "test.paraphase.json:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "vcf": [ + [ + { + "id": "test", + "single_end": true + }, + "test_stub.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "vcf_index": [ + [ + { + "id": "test", + "single_end": true + }, + "test_stub.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,9162c83cfe9e915e8743a1c9d64d64eb" + ] + } ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-05-29T15:14:33.451355236" + "timestamp": "2024-09-03T12:10:23.256066977" } } \ No newline at end of file diff --git a/modules/nf-core/paraphase/tests/nextflow.csi_index.config b/modules/nf-core/paraphase/tests/nextflow.csi_index.config new file mode 100644 index 00000000..df8ee6c3 --- /dev/null +++ b/modules/nf-core/paraphase/tests/nextflow.csi_index.config @@ -0,0 +1,6 @@ +process { + withName: 'PARAPHASE' { + ext.args = '--gene PRODH' + ext.args3 = '--csi' + } +} diff --git a/subworkflows/local/call_paralogs.nf b/subworkflows/local/call_paralogs.nf index 88c62403..bb4a931d 100644 --- a/subworkflows/local/call_paralogs.nf +++ b/subworkflows/local/call_paralogs.nf @@ -1,5 +1,4 @@ -include { PARAPHASE } from '../../modules/nf-core/paraphase/main' -include { TABIX_BGZIPTABIX } from '../../modules/nf-core/tabix/bgziptabix/main' +include { PARAPHASE } from '../../modules/nf-core/paraphase/main' workflow CALL_PARALOGS { @@ -13,19 +12,12 @@ workflow CALL_PARALOGS { PARAPHASE ( bam_bai, fasta, [[],[]] ) ch_versions = ch_versions.mix(PARAPHASE.out.versions) - PARAPHASE.out.vcf - .transpose() // Does create ~160 jobs per sample by default in hg38 - .set { bgzip_paraphase_vcfs } - - TABIX_BGZIPTABIX ( bgzip_paraphase_vcfs ) - ch_versions = ch_versions.mix(TABIX_BGZIPTABIX.out.versions) - emit: - bam = PARAPHASE.out.bam // channel: [ val(meta), bam ] - bai = PARAPHASE.out.bai // channel: [ val(meta), bai ] - json = PARAPHASE.out.json // channel: [ val(meta), json ] - vcf = TABIX_BGZIPTABIX.out.gz_tbi // channel: [ val(meta), gz, tbi ] - + bam = PARAPHASE.out.bam // channel: [ val(meta), path(bam) ] + bai = PARAPHASE.out.bai // channel: [ val(meta), path(bai) ] + json = PARAPHASE.out.json // channel: [ val(meta), path(json) ] + vcf = PARAPHASE.out.vcf // channel: [ val(meta), path(vcfs) ] + tbi = PARAPHASE.out.vcf_index // channel: [ val(meta), path(tbis) ] versions = ch_versions // channel: [ versions.yml ] } From 34c4bbde679e760269fd7865f01eba8f65a4070a Mon Sep 17 00:00:00 2001 From: fellen31 Date: Mon, 2 Sep 2024 11:58:15 +0200 Subject: [PATCH 006/106] Change SV multisample merging to allow for other callers --- modules.json | 15 +- .../bcftools/merge/bcftools-merge.diff | 31 - .../nf-core/bcftools/merge/environment.yml | 1 - modules/nf-core/bcftools/merge/main.nf | 13 +- modules/nf-core/bcftools/merge/meta.yml | 23 +- .../nf-core/bcftools/merge/tests/bcf.config | 3 + .../bcftools/merge/tests/bcf_gz.config | 3 + .../nf-core/bcftools/merge/tests/main.nf.test | 853 ++++++++++++++++++ .../bcftools/merge/tests/main.nf.test.snap | 607 +++++++++++++ .../bcftools/merge/tests/nextflow.config | 5 + .../bcftools/merge/tests/nextflow.gvcf.config | 5 + modules/nf-core/bcftools/merge/tests/tags.yml | 2 + .../nf-core/bcftools/merge/tests/vcf.config | 3 + .../bcftools/merge/tests/vcf_gz.config | 3 + .../bcftools/merge/tests/vcf_gz_index.config | 3 + .../merge/tests/vcf_gz_index_csi.config | 3 + .../merge/tests/vcf_gz_index_tbi.config | 3 + .../bcftools/reheader/bcftools-reheader.diff | 36 + .../ensemblvep/vep/ensemblvep-vep.diff | 6 +- .../nf-core/ensemblvep/vep/tests/main.nf.test | 6 +- .../ensemblvep/vep/tests/main.nf.test.snap | 12 +- .../ensemblvep/vep/tests/nextflow.config | 2 +- modules/nf-core/sniffles/sniffles.diff | 88 +- nf-test.config | 1 + .../local/call_repeat_expansions/main.nf | 4 +- subworkflows/local/call_svs/main.nf | 14 +- .../local/call_svs/tests/main.nf.test | 34 +- .../local/call_svs/tests/main.nf.test.snap | 738 ++------------- 28 files changed, 1692 insertions(+), 825 deletions(-) delete mode 100644 modules/nf-core/bcftools/merge/bcftools-merge.diff create mode 100644 modules/nf-core/bcftools/merge/tests/bcf.config create mode 100644 modules/nf-core/bcftools/merge/tests/bcf_gz.config create mode 100644 modules/nf-core/bcftools/merge/tests/main.nf.test create mode 100644 modules/nf-core/bcftools/merge/tests/main.nf.test.snap create mode 100644 modules/nf-core/bcftools/merge/tests/nextflow.config create mode 100644 modules/nf-core/bcftools/merge/tests/nextflow.gvcf.config create mode 100644 modules/nf-core/bcftools/merge/tests/tags.yml create mode 100644 modules/nf-core/bcftools/merge/tests/vcf.config create mode 100644 modules/nf-core/bcftools/merge/tests/vcf_gz.config create mode 100644 modules/nf-core/bcftools/merge/tests/vcf_gz_index.config create mode 100644 modules/nf-core/bcftools/merge/tests/vcf_gz_index_csi.config create mode 100644 modules/nf-core/bcftools/merge/tests/vcf_gz_index_tbi.config create mode 100644 modules/nf-core/bcftools/reheader/bcftools-reheader.diff diff --git a/modules.json b/modules.json index 56a13334..b285b748 100644 --- a/modules.json +++ b/modules.json @@ -22,9 +22,8 @@ }, "bcftools/merge": { "branch": "master", - "git_sha": "a5ba4d59c2b248c0379b0f8aeb4e7e754566cd1f", - "installed_by": ["modules"], - "patch": "modules/nf-core/bcftools/merge/bcftools-merge.diff" + "git_sha": "99a7e61b359f7b7b379cee49259879942d2d2533", + "installed_by": ["modules"] }, "bcftools/norm": { "branch": "master", @@ -39,8 +38,7 @@ "bcftools/reheader": { "branch": "master", "git_sha": "c32611ac6813055b9321d2827678e2f8aebcb394", - "installed_by": ["modules"], - "patch": "modules/nf-core/bcftools/reheader/bcftools-reheader.diff" + "installed_by": ["modules"] }, "bcftools/sort": { "branch": "master", @@ -84,8 +82,9 @@ }, "ensemblvep/vep": { "branch": "master", - "git_sha": "e1938f8ecb13b9b82ff488d4b35269c84aa965e8", - "installed_by": ["modules"] + "git_sha": "54c183cba37cac58860d9967feaae54acf9cc3e0", + "installed_by": ["modules"], + "patch": "modules/nf-core/ensemblvep/vep/ensemblvep-vep.diff" }, "fastqc": { "branch": "master", @@ -179,7 +178,7 @@ }, "samtools/import": { "branch": "master", - "git_sha": "04fbbc7c43cebc0b95d5b126f6d9fe4effa33519", + "git_sha": "90b63cde0f838ca4da3a88a37a5309888cae97b9", "installed_by": ["modules"] }, "samtools/index": { diff --git a/modules/nf-core/bcftools/merge/bcftools-merge.diff b/modules/nf-core/bcftools/merge/bcftools-merge.diff deleted file mode 100644 index b71e19b5..00000000 --- a/modules/nf-core/bcftools/merge/bcftools-merge.diff +++ /dev/null @@ -1,31 +0,0 @@ -Changes in module 'nf-core/bcftools/merge' ---- modules/nf-core/bcftools/merge/main.nf -+++ modules/nf-core/bcftools/merge/main.nf -@@ -15,6 +15,7 @@ - - output: - tuple val(meta), path("*.{bcf,vcf}{,.gz}"), emit: merged_variants -+ tuple val(meta), path("*.{csi,tbi}") , emit: index , optional: true - path "versions.yml" , emit: versions - - when: -@@ -53,8 +54,16 @@ - args.contains("--output-type z") || args.contains("-Oz") ? "vcf.gz" : - args.contains("--output-type v") || args.contains("-Ov") ? "vcf" : - "vcf" -+ def index = args.contains("--write-index=tbi") || args.contains("-W=tbi") ? "tbi" : -+ args.contains("--write-index=csi") || args.contains("-W=csi") ? "csi" : -+ args.contains("--write-index") || args.contains("-W") ? "csi" : -+ "" -+ def create_cmd = extension.endsWith(".gz") ? "echo '' | gzip >" : "touch" -+ def create_index = extension.endsWith(".gz") && index.matches("csi|tbi") ? "touch ${prefix}.${extension}.${index}" : "" -+ - """ -- touch ${prefix}.${extension} -+ ${create_cmd} ${prefix}.${extension} -+ ${create_index} - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - -************************************************************ diff --git a/modules/nf-core/bcftools/merge/environment.yml b/modules/nf-core/bcftools/merge/environment.yml index 51f1fb75..71e39be3 100644 --- a/modules/nf-core/bcftools/merge/environment.yml +++ b/modules/nf-core/bcftools/merge/environment.yml @@ -2,6 +2,5 @@ name: bcftools_merge channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bcftools=1.20 diff --git a/modules/nf-core/bcftools/merge/main.nf b/modules/nf-core/bcftools/merge/main.nf index d8a3aaeb..facb14ea 100644 --- a/modules/nf-core/bcftools/merge/main.nf +++ b/modules/nf-core/bcftools/merge/main.nf @@ -11,20 +11,21 @@ process BCFTOOLS_MERGE { tuple val(meta), path(vcfs), path(tbis) tuple val(meta2), path(fasta) tuple val(meta3), path(fai) - path(bed) + tuple val(meta4), path(bed) output: - tuple val(meta), path("*.{bcf,vcf}{,.gz}"), emit: merged_variants - tuple val(meta), path("*.{csi,tbi}") , emit: index , optional: true + tuple val(meta), path("*.{bcf,vcf}{,.gz}"), emit: vcf + tuple val(meta), path("*.{csi,tbi}") , emit: index, optional: true path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when script: - def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def input = (vcfs.collect().size() > 1) ? vcfs.sort{ it.name } : vcfs def regions = bed ? "--regions-file $bed" : "" def extension = args.contains("--output-type b") || args.contains("-Ob") ? "bcf.gz" : args.contains("--output-type u") || args.contains("-Ou") ? "bcf" : @@ -38,7 +39,7 @@ process BCFTOOLS_MERGE { $regions \\ --threads $task.cpus \\ --output ${prefix}.${extension} \\ - $vcfs + $input cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/bcftools/merge/meta.yml b/modules/nf-core/bcftools/merge/meta.yml index 87707140..2caf644e 100644 --- a/modules/nf-core/bcftools/merge/meta.yml +++ b/modules/nf-core/bcftools/merge/meta.yml @@ -46,6 +46,11 @@ input: type: file description: "(Optional) The fasta reference file index (only necessary for the `--gvcf FILE` parameter)" pattern: "*.fai" + - meta4: + type: map + description: | + Groovy Map containing bed information + e.g. [ id:'genome' ] - bed: type: file description: "(Optional) The bed regions to merge on" @@ -56,22 +61,14 @@ output: description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - - vcf_gz: - type: file - description: VCF merged output file (bgzipped) => when `--output-type z` is used - pattern: "*.vcf.gz" - vcf: type: file - description: VCF merged output file => when `--output-type v` is used - pattern: "*.vcf" - - bcf_gz: - type: file - description: BCF merged output file (bgzipped) => when `--output-type b` is used - pattern: "*.bcf.gz" - - bcf: + description: merged output file + pattern: "*.{vcf,vcf.gz,bcf,bcf.gz}" + - index: type: file - description: BCF merged output file => when `--output-type u` is used - pattern: "*.bcf" + description: index of merged output + pattern: "*.{csi,tbi}" - versions: type: file description: File containing software versions diff --git a/modules/nf-core/bcftools/merge/tests/bcf.config b/modules/nf-core/bcftools/merge/tests/bcf.config new file mode 100644 index 00000000..4467d07d --- /dev/null +++ b/modules/nf-core/bcftools/merge/tests/bcf.config @@ -0,0 +1,3 @@ +process { + ext.args = '--output-type u --no-version' +} diff --git a/modules/nf-core/bcftools/merge/tests/bcf_gz.config b/modules/nf-core/bcftools/merge/tests/bcf_gz.config new file mode 100644 index 00000000..280de8db --- /dev/null +++ b/modules/nf-core/bcftools/merge/tests/bcf_gz.config @@ -0,0 +1,3 @@ +process { + ext.args = '--output-type b --no-version' +} diff --git a/modules/nf-core/bcftools/merge/tests/main.nf.test b/modules/nf-core/bcftools/merge/tests/main.nf.test new file mode 100644 index 00000000..3995fc1a --- /dev/null +++ b/modules/nf-core/bcftools/merge/tests/main.nf.test @@ -0,0 +1,853 @@ +nextflow_process { + + name "Test Process BCFTOOLS_MERGE" + script "../main.nf" + process "BCFTOOLS_MERGE" + + tag "modules" + tag "modules_nfcore" + tag "bcftools" + tag "bcftools/merge" + + test("sarscov2 - [vcf, tbi], [], [], []") { + + config "./nextflow.config" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true) + ], + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz.tbi', checkIfExists: true), + ] + ] + input[1] = [[],[]] + input[2] = [[],[]] + input[3] = [[],[]] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert process.out.vcf.get(0).get(1).endsWith("vcf") }, + { assert snapshot( + path(process.out.vcf.get(0).get(1)).vcf.variantsMD5, + process.out.versions, + ).match() } + ) + } + + } + + test("sarscov2 - [vcf, tbi], [], [], [] - vcf output") { + + config "./vcf.config" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true) + ], + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz.tbi', checkIfExists: true), + ] + ] + input[1] = [[],[]] + input[2] = [[],[]] + input[3] = [[],[]] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert process.out.vcf.get(0).get(1).endsWith("vcf") }, + { assert snapshot( + path(process.out.vcf.get(0).get(1)).md5, + process.out.versions, + ).match() } + ) + } + + } + + test("sarscov2 - [vcf, tbi], [], [], [] - vcf.gz output") { + + config "./vcf_gz.config" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true) + ], + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz.tbi', checkIfExists: true), + ] + ] + input[1] = [[],[]] + input[2] = [[],[]] + input[3] = [[],[]] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert process.out.vcf.get(0).get(1).endsWith("vcf.gz") }, + { assert snapshot( + path(process.out.vcf.get(0).get(1)).vcf.variantsMD5, + process.out.versions, + ).match() } + ) + } + + } + + test("sarscov2 - [vcf, tbi], [], [], [] - bcf output") { + + config "./bcf.config" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true) + ], + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz.tbi', checkIfExists: true), + ] + ] + input[1] = [[],[]] + input[2] = [[],[]] + input[3] = [[],[]] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert process.out.vcf.get(0).get(1).endsWith("bcf") }, + { assert snapshot( + file(process.out.vcf.get(0).get(1)).name, + process.out.versions, + ).match() } + ) + } + + } + + test("sarscov2 - [vcf, tbi], [], [], [] - bcf.gz output") { + + config "./bcf_gz.config" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true) + ], + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz.tbi', checkIfExists: true), + ] + ] + input[1] = [[],[]] + input[2] = [[],[]] + input[3] = [[],[]] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert process.out.vcf.get(0).get(1).endsWith("bcf.gz") }, + { assert snapshot( + file(process.out.vcf.get(0).get(1)).name, + process.out.versions, + ).match() } + ) + } + + } + + test("sarscov2 - [vcf, tbi], [], [], [] - vcf.gz output - index") { + + config "./vcf_gz_index.config" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true) + ], + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz.tbi', checkIfExists: true), + ] + ] + input[1] = [[],[]] + input[2] = [[],[]] + input[3] = [[],[]] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert process.out.vcf.get(0).get(1).endsWith("vcf.gz") }, + { assert process.out.index.get(0).get(1).endsWith("csi") }, + { assert snapshot( + path(process.out.vcf.get(0).get(1)).vcf.variantsMD5, + file(process.out.index.get(0).get(1)).name, + process.out.versions, + ).match() } + ) + } + + } + + test("sarscov2 - [vcf, tbi], [], [], [] - vcf.gz output - csi index") { + + config "./vcf_gz_index_csi.config" + + when { + + process { + """ + input[0] = [ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true) + ], + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz.tbi', checkIfExists: true), + ] + ] + input[1] = [[],[]] + input[2] = [[],[]] + input[3] = [[],[]] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert process.out.vcf.get(0).get(1).endsWith("vcf.gz") }, + { assert process.out.index.get(0).get(1).endsWith("csi") }, + { assert snapshot( + path(process.out.vcf.get(0).get(1)).vcf.variantsMD5, + file(process.out.index.get(0).get(1)).name, + process.out.versions, + ).match() } + ) + } + + } + + test("sarscov2 - [vcf, tbi], [], [], [] - vcf.gz output - tbi index") { + + config "./vcf_gz_index_tbi.config" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true) + ], + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz.tbi', checkIfExists: true), + ] + ] + input[1] = [[],[]] + input[2] = [[],[]] + input[3] = [[],[]] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert process.out.vcf.get(0).get(1).endsWith("vcf.gz") }, + { assert process.out.index.get(0).get(1).endsWith("tbi") }, + { assert snapshot( + path(process.out.vcf.get(0).get(1)).vcf.variantsMD5, + file(process.out.index.get(0).get(1)).name, + process.out.versions, + ).match() } + ) + } + + } + + test("sarscov2 - [vcf, tbi], [], [], bed") { + + config "./nextflow.config" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true) + ], + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz.tbi', checkIfExists: true), + ] + ] + input[1] = [[],[]] + input[2] = [[],[]] + input[3] = [ + [ id:'test' ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test.bed', checkIfExists: true) ] + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert process.out.vcf.get(0).get(1).endsWith("vcf") }, + { assert snapshot( + path(process.out.vcf.get(0).get(1)).md5, + process.out.versions, + ).match() } + ) + } + + } + + test("homo_sapiens - [vcf, tbi], fasta, fai, bed - vcf.gz output") { + + config "./nextflow.gvcf.config" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test.genome.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test2.genome.vcf.gz', checkIfExists: true) + ], + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test.genome.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test2.genome.vcf.gz.tbi', checkIfExists: true), + ] + ] + input[1] = [ + [ id:'test' ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) ] + ] + input[2] = [ + [ id:'test' ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) ] + ] + input[3] = [ + [ id:'test' ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.bed', checkIfExists: true) ] + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert process.out.vcf.get(0).get(1).endsWith("vcf.gz") }, + { assert snapshot( + path(process.out.vcf.get(0).get(1)).vcf.variantsMD5, + process.out.versions, + ).match() } + ) + } + + } + + test("sarscov2 - [vcf, tbi], [], [], [] - one sample") { + + config "./nextflow.config" + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true) + ], + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true) + ] + ] + input[1] = [[],[]] + input[2] = [[],[]] + input[3] = [[],[]] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert process.out.vcf.get(0).get(1).endsWith("vcf") }, + { assert snapshot( + path(process.out.vcf.get(0).get(1)).md5, + process.out.versions, + ).match() } + ) + } + + } + + test("sarscov2 - [vcf, tbi], [], [], [] - stub") { + + options "-stub" + config "./nextflow.config" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true) + ], + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz.tbi', checkIfExists: true), + ] + ] + input[1] = [[],[]] + input[2] = [[],[]] + input[3] = [[],[]] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert process.out.vcf.get(0).get(1).endsWith("vcf") }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("sarscov2 - [vcf, tbi], [], [], [] - vcf output - stub") { + + options "-stub" + config "./vcf.config" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true) + ], + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz.tbi', checkIfExists: true), + ] + ] + input[1] = [[],[]] + input[2] = [[],[]] + input[3] = [[],[]] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert process.out.vcf.get(0).get(1).endsWith("vcf") }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("sarscov2 - [vcf, tbi], [], [], [] - vcf.gz output - stub") { + + options "-stub" + config "./vcf_gz.config" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true) + ], + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz.tbi', checkIfExists: true), + ] + ] + input[1] = [[],[]] + input[2] = [[],[]] + input[3] = [[],[]] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert process.out.vcf.get(0).get(1).endsWith("vcf.gz") }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("sarscov2 - [vcf, tbi], [], [], [] - bcf output - stub") { + + options "-stub" + config "./bcf.config" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true) + ], + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz.tbi', checkIfExists: true), + ] + ] + input[1] = [[],[]] + input[2] = [[],[]] + input[3] = [[],[]] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert process.out.vcf.get(0).get(1).endsWith("bcf") }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("sarscov2 - [vcf, tbi], [], [], [] - bcf.gz output - stub") { + + options "-stub" + config "./bcf_gz.config" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true) + ], + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz.tbi', checkIfExists: true), + ] + ] + input[1] = [[],[]] + input[2] = [[],[]] + input[3] = [[],[]] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert process.out.vcf.get(0).get(1).endsWith("bcf.gz") }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("sarscov2 - [vcf, tbi], [], [], [] - vcf.gz output - index - stub") { + + options "-stub" + config "./vcf_gz_index.config" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true) + ], + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz.tbi', checkIfExists: true), + ] + ] + input[1] = [[],[]] + input[2] = [[],[]] + input[3] = [[],[]] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert process.out.vcf.get(0).get(1).endsWith("vcf.gz") }, + { assert process.out.index.get(0).get(1).endsWith("csi") }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("sarscov2 - [vcf, tbi], [], [], [] - vcf.gz output - csi index - stub") { + + options "-stub" + config "./vcf_gz_index_csi.config" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true) + ], + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz.tbi', checkIfExists: true), + ] + ] + input[1] = [[],[]] + input[2] = [[],[]] + input[3] = [[],[]] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert process.out.vcf.get(0).get(1).endsWith("vcf.gz") }, + { assert process.out.index.get(0).get(1).endsWith("csi") }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("sarscov2 - [vcf, tbi], [], [], [] - vcf.gz output - tbi index - stub") { + + options "-stub" + config "./vcf_gz_index_tbi.config" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true) + ], + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz.tbi', checkIfExists: true), + ] + ] + input[1] = [[],[]] + input[2] = [[],[]] + input[3] = [[],[]] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert process.out.vcf.get(0).get(1).endsWith("vcf.gz") }, + { assert process.out.index.get(0).get(1).endsWith("tbi") }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("sarscov2 - [vcf, tbi], [], [], bed - stub") { + + options "-stub" + config "./nextflow.config" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true) + ], + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz.tbi', checkIfExists: true), + ] + ] + input[1] = [[],[]] + input[2] = [[],[]] + input[3] = [ + [ id:'test' ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test.bed', checkIfExists: true) ] + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert process.out.vcf.get(0).get(1).endsWith("vcf") }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("homo_sapiens - [vcf, tbi], fasta, fai, bed - vcf.gz output - stub") { + + options "-stub" + config "./nextflow.gvcf.config" + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test.genome.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test2.genome.vcf.gz', checkIfExists: true) + ], + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test.genome.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test2.genome.vcf.gz.tbi', checkIfExists: true), + ] + ] + input[1] = [ + [ id:'test' ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) ] + ] + input[2] = [ + [ id:'test' ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) ] + ] + input[3] = [ + [ id:'test' ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.bed', checkIfExists: true) ] + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert process.out.vcf.get(0).get(1).endsWith("vcf.gz") }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("sarscov2 - [vcf, tbi], [], [], [] - one sample - stub") { + + options "-stub" + config "./nextflow.config" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true) + ], + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true) + ] + ] + input[1] = [[],[]] + input[2] = [[],[]] + input[3] = [[],[]] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert process.out.vcf.get(0).get(1).endsWith("vcf") }, + { assert snapshot(process.out).match() } + ) + } + + } +} diff --git a/modules/nf-core/bcftools/merge/tests/main.nf.test.snap b/modules/nf-core/bcftools/merge/tests/main.nf.test.snap new file mode 100644 index 00000000..b3b62556 --- /dev/null +++ b/modules/nf-core/bcftools/merge/tests/main.nf.test.snap @@ -0,0 +1,607 @@ +{ + "sarscov2 - [vcf, tbi], [], [], [] - vcf.gz output - tbi index": { + "content": [ + "e0de448dc8e712956a03ce68d79a0b3a", + "test.vcf.gz.tbi", + [ + "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-09-05T12:34:16.977726522" + }, + "sarscov2 - [vcf, tbi], [], [], [] - vcf output - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + + ], + "2": [ + "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + ], + "index": [ + + ], + "vcf": [ + [ + { + "id": "test" + }, + "test.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-05T13:17:34.532910365" + }, + "sarscov2 - [vcf, tbi], [], [], bed": { + "content": [ + "febdcfb851dcfc83d8248520830aef10", + [ + "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-05T13:29:48.630057872" + }, + "sarscov2 - [vcf, tbi], [], [], [] - vcf.gz output - index - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + ], + "index": [ + [ + { + "id": "test" + }, + "test.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "vcf": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-05T13:17:59.983157569" + }, + "sarscov2 - [vcf, tbi], [], [], [] - vcf output": { + "content": [ + "57bb84274f336465d0a0946b532093b0", + [ + "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-05T13:29:05.528412678" + }, + "sarscov2 - [vcf, tbi], [], [], [] - bcf.gz output - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.bcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + + ], + "2": [ + "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + ], + "index": [ + + ], + "vcf": [ + [ + { + "id": "test" + }, + "test.bcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-09-05T11:58:46.619657457" + }, + "sarscov2 - [vcf, tbi], [], [], [] - vcf.gz output - tbi index - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + ], + "index": [ + [ + { + "id": "test" + }, + "test.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "vcf": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-05T13:18:12.848227353" + }, + "sarscov2 - [vcf, tbi], [], [], [] - vcf.gz output - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + + ], + "2": [ + "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + ], + "index": [ + + ], + "vcf": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-09-05T11:23:15.794389239" + }, + "sarscov2 - [vcf, tbi], [], [], [] - vcf.gz output - csi index": { + "content": [ + "e0de448dc8e712956a03ce68d79a0b3a", + "test.vcf.gz.csi", + [ + "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-09-05T11:57:16.850641473" + }, + "sarscov2 - [vcf, tbi], [], [], [] - vcf.gz output": { + "content": [ + "e0de448dc8e712956a03ce68d79a0b3a", + [ + "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-09-05T11:56:27.949031071" + }, + "sarscov2 - [vcf, tbi], [], [], bed - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + + ], + "2": [ + "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + ], + "index": [ + + ], + "vcf": [ + [ + { + "id": "test" + }, + "test.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-05T13:18:19.273064822" + }, + "sarscov2 - [vcf, tbi], [], [], [] - bcf output": { + "content": [ + "test.bcf", + [ + "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-09-05T11:56:38.567500859" + }, + "sarscov2 - [vcf, tbi], [], [], [] - bcf output - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.bcf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + + ], + "2": [ + "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + ], + "index": [ + + ], + "vcf": [ + [ + { + "id": "test" + }, + "test.bcf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-05T13:17:47.356328326" + }, + "sarscov2 - [vcf, tbi], [], [], [] - one sample - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + + ], + "2": [ + "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + ], + "index": [ + + ], + "vcf": [ + [ + { + "id": "test" + }, + "test.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-05T15:13:18.708495878" + }, + "homo_sapiens - [vcf, tbi], fasta, fai, bed - vcf.gz output - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + + ], + "2": [ + "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + ], + "index": [ + + ], + "vcf": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-05T13:56:45.706125286" + }, + "sarscov2 - [vcf, tbi], [], [], [] - vcf.gz output - index": { + "content": [ + "e0de448dc8e712956a03ce68d79a0b3a", + "test.vcf.gz.csi", + [ + "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-09-05T12:33:43.639646108" + }, + "homo_sapiens - [vcf, tbi], fasta, fai, bed - vcf.gz output": { + "content": [ + "645b7f7f9131bfe350a9ec3cf82c17fe", + [ + "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-05T13:55:44.299812124" + }, + "sarscov2 - [vcf, tbi], [], [], [] - one sample": { + "content": [ + "2a374cf02f0c32cf607646167e7f153b", + [ + "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-05T15:37:38.491844702" + }, + "sarscov2 - [vcf, tbi], [], [], [] - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + + ], + "2": [ + "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + ], + "index": [ + + ], + "vcf": [ + [ + { + "id": "test" + }, + "test.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-05T13:17:28.188178904" + }, + "sarscov2 - [vcf, tbi], [], [], [] - vcf.gz output - csi index - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + ], + "index": [ + [ + { + "id": "test" + }, + "test.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "vcf": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-05T13:18:06.430943593" + }, + "sarscov2 - [vcf, tbi], [], [], []": { + "content": [ + "e0de448dc8e712956a03ce68d79a0b3a", + [ + "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-09-05T12:31:03.893007442" + }, + "sarscov2 - [vcf, tbi], [], [], [] - bcf.gz output": { + "content": [ + "test.bcf.gz", + [ + "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-09-05T11:56:56.416361069" + } +} \ No newline at end of file diff --git a/modules/nf-core/bcftools/merge/tests/nextflow.config b/modules/nf-core/bcftools/merge/tests/nextflow.config new file mode 100644 index 00000000..c3f0b715 --- /dev/null +++ b/modules/nf-core/bcftools/merge/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: BCFTOOLS_MERGE { + ext.args = '--force-samples --force-single --no-version' + } +} diff --git a/modules/nf-core/bcftools/merge/tests/nextflow.gvcf.config b/modules/nf-core/bcftools/merge/tests/nextflow.gvcf.config new file mode 100644 index 00000000..8c457b71 --- /dev/null +++ b/modules/nf-core/bcftools/merge/tests/nextflow.gvcf.config @@ -0,0 +1,5 @@ +process { + withName: BCFTOOLS_MERGE { + ext.args = { "--force-samples --no-version --output-type z --gvcf $fasta" } + } +} diff --git a/modules/nf-core/bcftools/merge/tests/tags.yml b/modules/nf-core/bcftools/merge/tests/tags.yml new file mode 100644 index 00000000..1464d0c1 --- /dev/null +++ b/modules/nf-core/bcftools/merge/tests/tags.yml @@ -0,0 +1,2 @@ +bcftools/merge: + - "modules/nf-core/bcftools/merge/**" diff --git a/modules/nf-core/bcftools/merge/tests/vcf.config b/modules/nf-core/bcftools/merge/tests/vcf.config new file mode 100644 index 00000000..759222e5 --- /dev/null +++ b/modules/nf-core/bcftools/merge/tests/vcf.config @@ -0,0 +1,3 @@ +process { + ext.args = '--output-type v --no-version' +} diff --git a/modules/nf-core/bcftools/merge/tests/vcf_gz.config b/modules/nf-core/bcftools/merge/tests/vcf_gz.config new file mode 100644 index 00000000..8b6ad8b4 --- /dev/null +++ b/modules/nf-core/bcftools/merge/tests/vcf_gz.config @@ -0,0 +1,3 @@ +process { + ext.args = '--output-type z --no-version' +} diff --git a/modules/nf-core/bcftools/merge/tests/vcf_gz_index.config b/modules/nf-core/bcftools/merge/tests/vcf_gz_index.config new file mode 100644 index 00000000..9f1e9b1d --- /dev/null +++ b/modules/nf-core/bcftools/merge/tests/vcf_gz_index.config @@ -0,0 +1,3 @@ +process { + ext.args = "--output-type z --write-index --no-version" +} diff --git a/modules/nf-core/bcftools/merge/tests/vcf_gz_index_csi.config b/modules/nf-core/bcftools/merge/tests/vcf_gz_index_csi.config new file mode 100644 index 00000000..8308ee1a --- /dev/null +++ b/modules/nf-core/bcftools/merge/tests/vcf_gz_index_csi.config @@ -0,0 +1,3 @@ +process { + ext.args = "--output-type z --write-index=csi --no-version" +} diff --git a/modules/nf-core/bcftools/merge/tests/vcf_gz_index_tbi.config b/modules/nf-core/bcftools/merge/tests/vcf_gz_index_tbi.config new file mode 100644 index 00000000..9be4075b --- /dev/null +++ b/modules/nf-core/bcftools/merge/tests/vcf_gz_index_tbi.config @@ -0,0 +1,3 @@ +process { + ext.args = "--output-type z --write-index=tbi --no-version" +} diff --git a/modules/nf-core/bcftools/reheader/bcftools-reheader.diff b/modules/nf-core/bcftools/reheader/bcftools-reheader.diff new file mode 100644 index 00000000..e2c7a9a8 --- /dev/null +++ b/modules/nf-core/bcftools/reheader/bcftools-reheader.diff @@ -0,0 +1,36 @@ +Changes in module 'nf-core/bcftools/reheader' +--- modules/nf-core/bcftools/reheader/main.nf ++++ modules/nf-core/bcftools/reheader/main.nf +@@ -13,6 +13,7 @@ + + output: + tuple val(meta), path("*.{vcf,vcf.gz,bcf,bcf.gz}"), emit: vcf ++ tuple val(meta), path("*.{csi,tbi}") , emit: index, optional: true + path "versions.yml" , emit: versions + + when: +@@ -59,8 +60,16 @@ + args2.contains("--output-type z") || args2.contains("-Oz") ? "vcf.gz" : + args2.contains("--output-type v") || args2.contains("-Ov") ? "vcf" : + "vcf" ++ def index = args2.contains("--write-index=tbi") || args2.contains("-W=tbi") ? "tbi" : ++ args2.contains("--write-index=csi") || args2.contains("-W=csi") ? "csi" : ++ args2.contains("--write-index") || args2.contains("-W") ? "csi" : ++ "" ++ def create_cmd = extension.endsWith(".gz") ? "echo '' | gzip >" : "touch" ++ def create_index = extension.endsWith(".gz") && index.matches("csi|tbi") ? "touch ${prefix}.${extension}.${index}" : "" ++ + """ +- touch ${prefix}.${extension} ++ ${create_cmd} ${prefix}.${extension} ++ ${create_index} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": +@@ -68,3 +77,4 @@ + END_VERSIONS + """ + } ++ + +************************************************************ diff --git a/modules/nf-core/ensemblvep/vep/ensemblvep-vep.diff b/modules/nf-core/ensemblvep/vep/ensemblvep-vep.diff index 8626a663..7c37a0de 100644 --- a/modules/nf-core/ensemblvep/vep/ensemblvep-vep.diff +++ b/modules/nf-core/ensemblvep/vep/ensemblvep-vep.diff @@ -5,8 +5,8 @@ Changes in module 'nf-core/ensemblvep/vep' conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? -- 'https://depot.galaxyproject.org/singularity/ensembl-vep:111.0--pl5321h2a3209d_0' : -- 'biocontainers/ensembl-vep:111.0--pl5321h2a3209d_0' }" +- 'https://depot.galaxyproject.org/singularity/ensembl-vep:112.0--pl5321h2a3209d_0' : +- 'biocontainers/ensembl-vep:112.0--pl5321h2a3209d_0' }" + 'https://depot.galaxyproject.org/singularity/ensembl-vep:110.0--pl5321h2a3209d_0' : + 'biocontainers/ensembl-vep:110.0--pl5321h2a3209d_0' }" @@ -19,7 +19,7 @@ Changes in module 'nf-core/ensemblvep/vep' - bioconda - defaults dependencies: -- - bioconda::ensembl-vep=111.0 +- - bioconda::ensembl-vep=112.0 + - bioconda::ensembl-vep=110.0 ************************************************************ diff --git a/modules/nf-core/ensemblvep/vep/tests/main.nf.test b/modules/nf-core/ensemblvep/vep/tests/main.nf.test index 4aff84a3..e68fff3c 100644 --- a/modules/nf-core/ensemblvep/vep/tests/main.nf.test +++ b/modules/nf-core/ensemblvep/vep/tests/main.nf.test @@ -21,7 +21,7 @@ nextflow_process { process { """ input[0] = Channel.of([ - [id:"111_WBcel235"], + [id:"112_WBcel235"], params.vep_genome, params.vep_species, params.vep_cache_version @@ -72,7 +72,7 @@ nextflow_process { process { """ input[0] = Channel.of([ - [id:"111_WBcel235"], + [id:"112_WBcel235"], params.vep_genome, params.vep_species, params.vep_cache_version @@ -107,7 +107,7 @@ nextflow_process { assertAll( { assert process.success }, { assert snapshot(process.out.versions).match() }, - { assert path(process.out.tab.get(0).get(1)).linesGzip.contains("## ENSEMBL VARIANT EFFECT PREDICTOR v111.0") } + { assert path(process.out.tab.get(0).get(1)).linesGzip.contains("## ENSEMBL VARIANT EFFECT PREDICTOR v112.0") } ) } } diff --git a/modules/nf-core/ensemblvep/vep/tests/main.nf.test.snap b/modules/nf-core/ensemblvep/vep/tests/main.nf.test.snap index f937b299..1c4c0e4e 100644 --- a/modules/nf-core/ensemblvep/vep/tests/main.nf.test.snap +++ b/modules/nf-core/ensemblvep/vep/tests/main.nf.test.snap @@ -2,25 +2,25 @@ "test_ensemblvep_vep_fasta_tab_gz": { "content": [ [ - "versions.yml:md5,bd2ba1b4741a7d0a224160b50859f4ba" + "versions.yml:md5,d06f1eb60f534489026d682eb3aa5559" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.03.0" + "nextflow": "24.04.4" }, - "timestamp": "2024-04-15T17:35:20.694114" + "timestamp": "2024-09-02T10:15:18.228927" }, "test_ensemblvep_vep_fasta_vcf": { "content": [ [ - "versions.yml:md5,bd2ba1b4741a7d0a224160b50859f4ba" + "versions.yml:md5,d06f1eb60f534489026d682eb3aa5559" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.03.0" + "nextflow": "24.04.4" }, - "timestamp": "2024-04-15T17:34:41.093843" + "timestamp": "2024-09-02T10:14:50.193861" } } \ No newline at end of file diff --git a/modules/nf-core/ensemblvep/vep/tests/nextflow.config b/modules/nf-core/ensemblvep/vep/tests/nextflow.config index 882bce41..9aa48164 100644 --- a/modules/nf-core/ensemblvep/vep/tests/nextflow.config +++ b/modules/nf-core/ensemblvep/vep/tests/nextflow.config @@ -1,5 +1,5 @@ params { - vep_cache_version = "111" + vep_cache_version = "112" vep_genome = "WBcel235" vep_species = "caenorhabditis_elegans" } diff --git a/modules/nf-core/sniffles/sniffles.diff b/modules/nf-core/sniffles/sniffles.diff index 422bd6fc..b36fb319 100644 --- a/modules/nf-core/sniffles/sniffles.diff +++ b/modules/nf-core/sniffles/sniffles.diff @@ -1,4 +1,48 @@ Changes in module 'nf-core/sniffles' +--- modules/nf-core/sniffles/meta.yml ++++ modules/nf-core/sniffles/meta.yml +@@ -17,10 +17,10 @@ + description: | + Groovy Map containing sample information + e.g. [ id:'test' ] +- - bam: ++ - input: + type: file +- description: BAM file +- pattern: "*.bam" ++ description: BAM or SNF file ++ pattern: "*.{bam, snf}" + - bai: + type: file + description: Index of BAM file +@@ -34,6 +34,15 @@ + type: file + description: | + Reference database in FASTA format ++ - meta3: ++ type: map ++ description: | ++ Groovy Map containing tandem repeat file information ++ e.g. [ id:'tandem_repeats' ] ++ - tandem_file: ++ type: file ++ description: | ++ Tandem repeats file in BED format + output: + - meta: + type: map +@@ -46,8 +55,8 @@ + pattern: "*.vcf.gz" + - snf: + type: file +- description: Compressed SNF file +- pattern: "*.snf.gz" ++ description: SNF file ++ pattern: "*.snf" + - versions: + type: file + description: File containing software versions + --- modules/nf-core/sniffles/main.nf +++ modules/nf-core/sniffles/main.nf @@ -8,14 +8,17 @@ @@ -63,48 +107,4 @@ Changes in module 'nf-core/sniffles' "${task.process}": sniffles: \$(sniffles --help 2>&1 | grep Version |sed 's/^.*Version //') ---- modules/nf-core/sniffles/meta.yml -+++ modules/nf-core/sniffles/meta.yml -@@ -17,10 +17,10 @@ - description: | - Groovy Map containing sample information - e.g. [ id:'test' ] -- - bam: -+ - input: - type: file -- description: BAM file -- pattern: "*.bam" -+ description: BAM or SNF file -+ pattern: "*.{bam, snf}" - - bai: - type: file - description: Index of BAM file -@@ -34,6 +34,15 @@ - type: file - description: | - Reference database in FASTA format -+ - meta3: -+ type: map -+ description: | -+ Groovy Map containing tandem repeat file information -+ e.g. [ id:'tandem_repeats' ] -+ - tandem_file: -+ type: file -+ description: | -+ Tandem repeats file in BED format - output: - - meta: - type: map -@@ -46,8 +55,8 @@ - pattern: "*.vcf.gz" - - snf: - type: file -- description: Compressed SNF file -- pattern: "*.snf.gz" -+ description: SNF file -+ pattern: "*.snf" - - versions: - type: file - description: File containing software versions - ************************************************************ diff --git a/nf-test.config b/nf-test.config index 67cadb45..d847be4d 100644 --- a/nf-test.config +++ b/nf-test.config @@ -1,6 +1,7 @@ config { plugins { load "nft-bam@0.3.0" + load "nft-vcf@1.0.7" } stage { copy './nextflow_schema.json' diff --git a/subworkflows/local/call_repeat_expansions/main.nf b/subworkflows/local/call_repeat_expansions/main.nf index 8b71453e..ff745b25 100644 --- a/subworkflows/local/call_repeat_expansions/main.nf +++ b/subworkflows/local/call_repeat_expansions/main.nf @@ -37,9 +37,9 @@ workflow CALL_REPEAT_EXPANSIONS { .groupTuple() .set{ ch_bcftools_merge_in } - BCFTOOLS_MERGE ( ch_bcftools_merge_in, ch_fasta, ch_fai, [] ) + BCFTOOLS_MERGE ( ch_bcftools_merge_in, ch_fasta, ch_fai, [[],[]] ) - BCFTOOLS_INDEX_MERGE ( BCFTOOLS_MERGE.out.merged_variants ) + BCFTOOLS_INDEX_MERGE ( BCFTOOLS_MERGE.out.vcf ) ch_versions = ch_versions.mix(TRGT.out.versions) ch_versions = ch_versions.mix(SAMTOOLS_SORT_TRGT.out.versions) diff --git a/subworkflows/local/call_svs/main.nf b/subworkflows/local/call_svs/main.nf index 3f7b7259..85481982 100644 --- a/subworkflows/local/call_svs/main.nf +++ b/subworkflows/local/call_svs/main.nf @@ -31,17 +31,17 @@ workflow CALL_SVS { REHEADER_SNIFFLES.out.vcf .join(REHEADER_SNIFFLES.out.index) .map { meta, vcf, tbi -> [ [ 'id': meta.project ], vcf, tbi ] } - .groupTuple(sort: true) + .groupTuple() .set{ ch_bcftools_merge_in } - BCFTOOLS_MERGE ( ch_bcftools_merge_in, ch_fasta, ch_fai, [] ) + BCFTOOLS_MERGE ( ch_bcftools_merge_in, ch_fasta, ch_fai, [[],[]] ) ch_versions = ch_versions.mix(BCFTOOLS_MERGE.out.versions) emit: - ch_sv_calls_vcf = REHEADER_SNIFFLES.out.vcf // channel: [ val(meta), path(vcf) ] - ch_sv_calls_tbi = REHEADER_SNIFFLES.out.index // channel: [ val(meta), path(tbi) ] - ch_multisample_vcf = BCFTOOLS_MERGE.out.merged_variants // channel: [ val(meta), path(vcf) ] - ch_multisample_tbi = BCFTOOLS_MERGE.out.index // channel: [ val(meta), path(tbi) ] - versions = ch_versions // channel: [ path(versions.yml) ] + ch_sv_calls_vcf = REHEADER_SNIFFLES.out.vcf // channel: [ val(meta), path(vcf) ] + ch_sv_calls_tbi = REHEADER_SNIFFLES.out.index // channel: [ val(meta), path(tbi) ] + ch_multisample_vcf = BCFTOOLS_MERGE.out.vcf // channel: [ val(meta), path(vcf) ] + ch_multisample_tbi = BCFTOOLS_MERGE.out.index // channel: [ val(meta), path(tbi) ] + versions = ch_versions // channel: [ path(versions.yml) ] } diff --git a/subworkflows/local/call_svs/tests/main.nf.test b/subworkflows/local/call_svs/tests/main.nf.test index 70c4a02e..c2c0e106 100644 --- a/subworkflows/local/call_svs/tests/main.nf.test +++ b/subworkflows/local/call_svs/tests/main.nf.test @@ -51,13 +51,13 @@ nextflow_workflow { then { assertAll( { assert workflow.success }, + { assert workflow.out.ch_sv_calls_tbi.get(0).get(1).endsWith("tbi") }, + { assert workflow.out.ch_multisample_tbi.get(0).get(1).endsWith("tbi") }, { assert snapshot( path(workflow.out.ch_sv_calls_vcf.get(0).get(1)).linesGzip[5..239], - path(workflow.out.ch_sv_calls_vcf.get(0).get(1)).linesGzip[241..316], + path(workflow.out.ch_sv_calls_vcf.get(0).get(1)).vcf.variantsMD5, path(workflow.out.ch_multisample_vcf.get(0).get(1)).linesGzip[5..239], - path(workflow.out.ch_multisample_vcf.get(0).get(1)).linesGzip[241..299], - file(workflow.out.ch_sv_calls_tbi.get(0).get(1)).name, - file(workflow.out.ch_multisample_tbi.get(0).get(1)).name, + path(workflow.out.ch_multisample_vcf.get(0).get(1)).vcf.variantsMD5, workflow.out.versions, ).match() } ) @@ -88,13 +88,13 @@ nextflow_workflow { then { assertAll( { assert workflow.success }, + { assert workflow.out.ch_sv_calls_tbi.get(0).get(1).endsWith("tbi") }, + { assert workflow.out.ch_multisample_tbi.get(0).get(1).endsWith("tbi") }, { assert snapshot( path(workflow.out.ch_sv_calls_vcf.get(0).get(1)).linesGzip[5..239], - path(workflow.out.ch_sv_calls_vcf.get(0).get(1)).linesGzip[241..316], + path(workflow.out.ch_sv_calls_vcf.get(0).get(1)).vcf.variantsMD5, path(workflow.out.ch_multisample_vcf.get(0).get(1)).linesGzip[5..239], - path(workflow.out.ch_multisample_vcf.get(0).get(1)).linesGzip[241..299], - file(workflow.out.ch_sv_calls_tbi.get(0).get(1)).name, - file(workflow.out.ch_multisample_tbi.get(0).get(1)).name, + path(workflow.out.ch_multisample_vcf.get(0).get(1)).vcf.variantsMD5, workflow.out.versions, ).match() } ) @@ -129,16 +129,14 @@ nextflow_workflow { then { assertAll( { assert workflow.success }, + { assert workflow.out.ch_sv_calls_tbi.get(0).get(1).endsWith("tbi") }, + { assert workflow.out.ch_sv_calls_tbi.get(1).get(1).endsWith("tbi") }, + { assert workflow.out.ch_multisample_tbi.get(0).get(1).endsWith("tbi") }, { assert snapshot( path(workflow.out.ch_sv_calls_vcf.get(0).get(1)).linesGzip[5..239], - path(workflow.out.ch_sv_calls_vcf.get(0).get(1)).linesGzip[241..316], + workflow.out.ch_sv_calls_vcf.collect { file(it[1]).name }.sort().toString(), // don't know the order of the output VCFs path(workflow.out.ch_sv_calls_vcf.get(1).get(1)).linesGzip[5..239], - path(workflow.out.ch_sv_calls_vcf.get(1).get(1)).linesGzip[241..353], path(workflow.out.ch_multisample_vcf.get(0).get(1)).linesGzip[5..239], - path(workflow.out.ch_multisample_vcf.get(0).get(1)).linesGzip[241..317], - file(workflow.out.ch_sv_calls_tbi.get(0).get(1)).name, - file(workflow.out.ch_sv_calls_tbi.get(1).get(1)).name, - file(workflow.out.ch_multisample_tbi.get(0).get(1)).name, workflow.out.versions, ).match() } ) @@ -234,7 +232,13 @@ nextflow_workflow { then { assertAll( { assert workflow.success }, - { assert snapshot(workflow.out).match() } + { assert snapshot( + workflow.out.ch_sv_calls_vcf.collect { file(it[1]).name }.sort().toString(), // don't know the order of the output VCFs + workflow.out.ch_sv_calls_tbi, + workflow.out.ch_multisample_vcf, + workflow.out.ch_multisample_tbi, + workflow.out.versions, + ).match() } ) } diff --git a/subworkflows/local/call_svs/tests/main.nf.test.snap b/subworkflows/local/call_svs/tests/main.nf.test.snap index 81f08430..e5e55862 100644 --- a/subworkflows/local/call_svs/tests/main.nf.test.snap +++ b/subworkflows/local/call_svs/tests/main.nf.test.snap @@ -238,84 +238,7 @@ "##INFO=", "##bcftools_viewVersion=1.20+htslib-1.20" ], - [ - "#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO\tFORMAT\ttest_1", - "chr16\t81884\tSniffles2.INS.4SF\tN\tCTCCAGGAAGCCCTCCTGAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTATCTCCGGAAGCCCTCCTGAATGCTCCCCACGCTGGCCCCTTCTTCCCACCACCCTACCTCCGGGAAGGCCTCCTGAATGCTCCCCACGCTGGCCCCTTCTTCCCACCACCCTACCTCCGGGAAGCCCTCCTGAATGCTCCCCACGCTGGCCCCTTCTTCCCACCACCCTACCTCCAGGAAGCCCTCCTGAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTATCTCCGGGAAGGCCTCCTGAATGCTCCCCACACTGACCCCTTCTTCCCACCACCCTACCTCCGGGAAGGCCTCCTGAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTAT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=398;END=81884;SUPPORT=12;COVERAGE=22,23,24,23,23;STRAND=+-;AF=0.5;STDEV_LEN=0;STDEV_POS=68.361;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:60:12:12", - "chr16\t82169\tSniffles2.INS.1SF\tN\tCTCCGGGAAGGCCTCCTGAATGCTCCCCACACTGACCCCTTCTTCCCACCACCCTAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=57;END=82169;SUPPORT=8;COVERAGE=23,23,23,23,23;STRAND=+-;AF=0.348;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:38:15:8", - "chr16\t153120\tSniffles2.INS.5SF\tN\tACAGTGGGGAGGGGACAGTGGGGAGAGGACAGTAAGGAGGGGACCATGGGGAGGAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=56;END=153120;SUPPORT=23;COVERAGE=22,23,23,23,23;STRAND=+-;AF=1;STDEV_LEN=0.48;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:60:0:23", - "chr16\t160071\tSniffles2.INS.CSF\tN\tGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGACGGCTTGTGGGACACAGGTTGTGAGAGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTGTGAGGGTGCCCGGGATGGCTTGTGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTGTGAGACGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGAGATGCCCAGGACGGCTTGTGGGGAACAGGCTGTGAGGGTGCCCGGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGAT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=583;END=160071;SUPPORT=24;COVERAGE=28,28,28,30,27;STRAND=+-;AF=0.857;STDEV_LEN=0.953;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:26:4:24", - "chr16\t160389\tSniffles2.INS.BSF\tN\tGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGCTGCAAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGATGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCTGGGACGGCTTGTGGGGCACAGGTTGTGAGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=328;END=160389;SUPPORT=25;COVERAGE=28,30,30,29,27;STRAND=+-;AF=0.833;STDEV_LEN=0.277;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:19:5:25", - "chr16\t160753\tSniffles2.INS.ESF\tN\tGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCAGGATGGCTTGTGGGGCACAGGCTGCAAGAGGTGCCCAGGACGGCTTGTGGGGCACAGGTTGTGAGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=145;END=160753;SUPPORT=27;COVERAGE=30,28,28,27,27;STRAND=+-;AF=0.964;STDEV_LEN=0.352;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:60:1:27", - "chr16\t163320\tSniffles2.DEL.5DSF\tagtgagtaggagacagtggggagaggacagtggagaggggacagtgaggaggggaccatgggaaggggaccgtggagtggggacagtgaggaggggaccatagggagggga\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-111;END=163431;SUPPORT=7;COVERAGE=23,22,22,22,22;STRAND=+-;AF=0.318;STDEV_LEN=1.095;STDEV_POS=10.733\tGT:GQ:DR:DV\t0/1:28:15:7", - "chr16\t163591\tSniffles2.DEL.5ESF\tggaggggaccgtgggaaggagacagtgaggaggggaccttggggaggggacagtgaggaggggaccatggggaggggacagtgaggaggggacaatggagaggggacagtgaggaggggactgtggggagaggacagtgaggaggggaccatggggagggcacagtggggaggggagagtgaggaagggacagtgaggaggggactgtgg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-210;END=163801;SUPPORT=7;COVERAGE=22,22,22,22,21;STRAND=+-;AF=0.318;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:28:15:7", - "chr16\t164801\tSniffles2.INS.FSF\tN\tCGGGGTCGCGGGGCGGGCGGGTCGCGGGGCGGGGTCGCGGGGGCGGGCGAGGTC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=54;END=164801;SUPPORT=8;COVERAGE=21,21,21,21,21;STRAND=+-;AF=0.381;STDEV_LEN=2.16;STDEV_POS=17.972;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:43:13:8", - "chr16\t182789\tSniffles2.INS.10SF\tN\tTGAAACACCGTCTCTACTAAAAATACAAAAATTAGCCAGGCATAGTGGCGGGCGCCTGTAATCCCAGCTGTTCGGGAGGCTGAGGCAGGACAATCACTTAAACCAGGGAAGCAGAGGTTGCAGTGAGCTGAGATCGAGCCACTGCACTCCAGCCTGGGCGACAGACCGAGACTGTCTCAAAAAAAAGACCGGGCACGGTGGCTCACGCCTGTAATCCCACCACTTTGGGAGGCTGAGGCGGGCTGATCACGATGTCAGGAGATCTAGACCATCCTGGCCAACATGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=286;END=182789;SUPPORT=12;COVERAGE=13,12,12,12,12;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:33:0:12", - "chr16\t186052\tSniffles2.DEL.5FSF\tggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacgggg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-629;END=186681;SUPPORT=6;COVERAGE=11,11,11,11,11;STRAND=+-;AF=0.545;STDEV_LEN=8.5;STDEV_POS=8.5\tGT:GQ:DR:DV\t0/1:33:5:6", - "chr16\t186294\tSniffles2.DEL.60SF\tcagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacgggg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-863;END=187157;SUPPORT=5;COVERAGE=11,11,11,11,10;STRAND=+-;AF=0.455;STDEV_LEN=0.577;STDEV_POS=6.928\tGT:GQ:DR:DV\t0/1:33:6:5", - "chr16\t362990\tSniffles2.INS.12SF\tN\tGACTTAGCACCGGGGGGTCTCGGGCTGCGGCTGCTCTCCCA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=42;END=362990;SUPPORT=3;COVERAGE=7,6,6,6,5;STRAND=+-;AF=0.5;STDEV_LEN=0.577;STDEV_POS=9.238;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:21:3:3", - "chr16\t370391\tSniffles2.INS.13SF\tN\tCTACCCTGCCCCGGCTCTCACCCCCTACCCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCGGCTCTCACCCCCTACCCCGGCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCGCTACCCTGCCCCCGGCTCTCACCGCTACCCCCCGGCTCTCACCCGCTACCCCGCCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCCGGCCCCCCGGCTCTCACCTCCTACCCGGCCCCGGCTCTCACCCGCTCCCCCGGCCCCCGGCTCTCACCCGCTCACCCCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCTCGGCTCTCACCCCCTACCCCGGCCCCGGCTCTCACCCCCTACCCCTGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCCGGCTCTCACCCGCTACCCCGGCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGGCTCTCACTCC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=736;END=370391;SUPPORT=7;COVERAGE=7,7,7,7,7;STRAND=+-;AF=1;STDEV_LEN=65.282;STDEV_POS=1.095;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:19:0:7", - "chr16\t378308\tSniffles2.INS.14SF\tN\tCCACTCTGACTGCCATCGCCACTCTGACTGCCATCC\t60\tGT\tPRECISE;SVTYPE=INS;SVLEN=36;END=378308;SUPPORT=4;COVERAGE=17,17,17,18,18;STRAND=+-;AF=0.235;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:3:13:4", - "chr16\t378517\tSniffles2.INS.15SF\tN\tGCCATCGCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCTGACTGCCATCGCCACCCACACTGCCATCCCCACCCGCACTGCCATCGCCACCCTGACTGCCATCGCCACCCACAATGCCATCCCCACCCGCACTGCCATCGCCACCCGCACTGCCATCCCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCACACTGCCATC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=240;END=378517;SUPPORT=12;COVERAGE=17,18,18,18,18;STRAND=+-;AF=0.667;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:26:6:12", - "chr16\t397717\tSniffles2.INS.16SF\tN\tTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGTGGGGGTGGGGGTGTGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGTGAGGGAGTCGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGTGAGGGAGTCGGGGGGTGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGGC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=491;END=397717;SUPPORT=3;COVERAGE=3,3,3,3,3;STRAND=+-;AF=1;STDEV_LEN=2.309;STDEV_POS=5.196;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:8:0:3", - "chr16\t504280\tSniffles2.INS.17SF\tN\tTCCATCTCCTCCTGTACCCCCTCACCTCCTTGTGCACCCCCTCACCTCCTGTACCCCCTCACCTCCTCTGTA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=74;END=504280;SUPPORT=4;COVERAGE=4,4,4,4,4;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:11:0:4", - "chr16\t504419\tSniffles2.INS.18SF\tN\tTCACCTCCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCTCACCTCCTCCTGTACCCCTCACCTCCTTGTGCACCCCCTCACCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCCTCACCTCCTCCTGTACCCCCTCACCTCCTTGTGCACCCCCTCACCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCCTCACCTCCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=256;END=504419;SUPPORT=4;COVERAGE=4,4,4,4,5;STRAND=+-;AF=1;STDEV_LEN=0.707;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:11:0:4", - "chr16\t507831\tSniffles2.INS.19SF\tN\tTTCAGTATCATCTGCCCGTTCTGAGCCATTTGCTCTCTAGCCCTACCATACAGCTGCCATCCTAAGAGTACGTTTCCCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=81;END=507831;SUPPORT=4;COVERAGE=5,5,5,5,7;STRAND=+-;AF=0.8;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:1:1:4", - "chr16\t534179\tSniffles2.INS.1ASF\tN\tGGGCCGTGGTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACGGGGCCGTGGTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACGGGGCCGTGGTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=162;END=534179;SUPPORT=5;COVERAGE=5,5,5,5,4;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:13:0:5", - "chr16\t544781\tSniffles2.INS.1BSF\tN\tCGTCTCCCCCACGTCGCCTCCCCCCACGTCGCCTCCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCTCACGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGTCGC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=344;END=544781;SUPPORT=8;COVERAGE=8,8,8,8,8;STRAND=+-;AF=1;STDEV_LEN=4.69;STDEV_POS=25.5;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:22:0:8", - "chr16\t550769\tSniffles2.INS.1CSF\tN\tCGGTGAGGGTCCCCGGTCGGTGAGGGCGCCCCGTCAGTGAGGGTCCCGGTCAGTGAGGGCCCCGGTCGGTGAGGGTCCCCGGTCGGTGAGGGCCCCTGTCGGTGAGGGCCCCGGTCGGTGAGGGACCCGGTCGGTGAGGGCCCCCTGTCGGTGAGGGTCCCCTGTCGGTGAGGGCCCCGGTCGGTGAGGGCCCCGGTCGGTGAGGGTCCCCTGTCGGTGAGGGTCCCCTGTCGGTGAGGGTCCCGGTCGGTGAGGGCCCCGGTCGGTGAGGGTGCCCCGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=280;END=550769;SUPPORT=13;COVERAGE=13,13,13,13,13;STRAND=+-;AF=1;STDEV_LEN=1;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:36:0:13", - "chr16\t553057\tSniffles2.INS.1DSF\tN\tTGCCCCCCACCCCTGCACAGGTGCCCCCTCCCCTACCCCGCTGCACCCACACCCAACTCGTGCCCCCCCACCCCTGCACAGGTGCCCCCTCCCCTACCCCGCTGCACCCACACCCAACTCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=121;END=553057;SUPPORT=6;COVERAGE=12,11,11,11,10;STRAND=+-;AF=0.545;STDEV_LEN=0.577;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:33:5:6", - "chr16\t571110\tSniffles2.INS.1FSF\tN\tTGGCTAGCCTGTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTGTGTGTGTCTGGCTAGCCTGGTGCCCGTGTGTGTGTGTATGTGTGTGTGTGTGTGTGTGTCTGGCTAGCTGGCGCCCGTGGCTAGCCTGGTGCCCGTGTGTGTGTGTATGTATGTGTCTGGCTAGCCTGGTGCCCGTGGCTAGCCTGGTGCCCGTGTGTGTGTGTGTGGGGGGGGCTAGCCTTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTCTGGCTAGCGTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTGTGTGTGCTAGCCTGGCGCCCGTGTGTGTGTGTGTGTGTGTCTGGCTAGCCTGGCACCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=358;END=571110;SUPPORT=16;COVERAGE=18,17,16,16,18;STRAND=+-;AF=1;STDEV_LEN=3.78;STDEV_POS=14.714;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:44:0:16", - "chr16\t579380\tSniffles2.DEL.62SF\tcagagaagagacagacacacagccccgaaggtggtgcaggcacaggccctagaggtgccccgggcccagagactagagatgccccgggcccggagactagaggtgccccgggcccggaga\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-120;END=579500;SUPPORT=6;COVERAGE=11,11,11,11,10;STRAND=+-;AF=0.545;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:33:5:6", - "chr16\t579636\tSniffles2.DEL.61SF\tcccggagactagaggtgccccgggcccggagactagaggtgccccgggcccggagacttgaggtgccccggg\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-72;END=579708;SUPPORT=5;COVERAGE=11,11,11,10,10;STRAND=+-;AF=0.455;STDEV_LEN=11.5;STDEV_POS=105.434\tGT:GQ:DR:DV\t0/1:33:6:5", - "chr16\t585059\tSniffles2.DEL.63SF\tcccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctccccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctccccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctc\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-156;END=585215;SUPPORT=6;COVERAGE=6,6,6,6,6;STRAND=+-;AF=1;STDEV_LEN=0.5;STDEV_POS=56.518\tGT:GQ:DR:DV\t1/1:16:0:6", - "chr16\t587440\tSniffles2.INS.20SF\tN\tTCCCTCCCTTCACTGGGCCTGCTGCCCCAGAGTCCA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=36;END=587440;SUPPORT=5;COVERAGE=5,5,5,5,5;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=41.569;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:13:0:5", - "chr16\t611801\tSniffles2.DEL.64SF\tgggacagccgccttcgcctgtagaatcaagagcagggacagccgccctggcctgtagaatcaagagcacgggacagccgccctggcctgtagaatcaagagcacgggacagccgccctggcctgtagaatcaagagcagggacagccgccctggcctgtagaatcaagagcaagggacagccgccctggcctgtagaatcaagagcaagggacagccgcctttgcctgtagaatcaagagcag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-243;END=612044;SUPPORT=4;COVERAGE=3,4,4,4,4;STRAND=+-;AF=1;STDEV_LEN=0.707;STDEV_POS=14.142\tGT:GQ:DR:DV\t1/1:11:0:4", - "chr16\t631728\tSniffles2.DEL.65SF\tcttctcccaccccttcactgcctctccttccatcctctcctcccaccctctcctcccatccactcctcccatccacttcttccatcct\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-88;END=631816;SUPPORT=17;COVERAGE=17,17,17,17,16;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t1/1:47:0:17", - "chr16\t660943\tSniffles2.INS.23SF\tN\tCCCCCTGTTCGGCCCCTCCCCAGGCCCCCCCCCGCCCGGCCTCAGGCCCCGCCCCCTGTTCGGCCCCTCCCCAGGCCCGGCCTCAGGCCCCGCCCCCTGTTCGGCCCCTCCCCAG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=115;END=660943;SUPPORT=17;COVERAGE=16,16,15,16,16;STRAND=+-;AF=1;STDEV_LEN=1.803;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:47:0:17", - "chr16\t665215\tSniffles2.DEL.66SF\tcctcagtctgcagcctgctagggacgcacggccacactcctgtctttcag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-50;END=665265;SUPPORT=22;COVERAGE=19,21,22,22,21;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t1/1:60:0:22", - "chr16\t696679\tSniffles2.INS.24SF\tN\tCCCACCCCAAAGCCACCATCCGCTCCCACCTCCATAGGGTTGCTGCTGCCCGCCCCTGCCCCCCAGCCCTGTCCCCCCCACCACCCAGCCTGGGCGCACACCCCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=105;END=696679;SUPPORT=10;COVERAGE=11,10,10,10,10;STRAND=+-;AF=1;STDEV_LEN=0.408;STDEV_POS=1.633;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:27:0:10", - "chr16\t746237\tSniffles2.DEL.67SF\tgaggtgggttcactgcgggtctgcctggctgggcagcaggagaggaggtgggttcactgcgggtctgcctggctgggcagcaggagaggaggtgggttcactgcaggtctgtctggctgggcagcaggaggggagaggtggggtcactgcgggtctgcagggctgcaggaggggagaggtggggtcactgcaggtctgtctggctgggcagcaggagaggaggtgggttcactgcaggtctgtctgggcgggctgcaggagaggaggtggggtcactgcgggtctgtctgggcgggctgcaggagag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-307;END=746544;SUPPORT=7;COVERAGE=13,13,13,13,11;STRAND=+-;AF=0.538;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:40:6:7", - "chr16\t760502\tSniffles2.INS.25SF\tN\tAGCCATGAAACCTGGGCCCGGGCTCCCACTCACACCCCACCCCCACCCAGGGCAGCCGTGAAACCTGGGCCCTGGGCTCCCACCCACGCCCCACACCCACCCAGGGC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=107;END=760502;SUPPORT=16;COVERAGE=16,16,16,16,17;STRAND=+-;AF=1;STDEV_LEN=0.518;STDEV_POS=11.667;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:44:0:16", - "chr16\t763776\tSniffles2.INS.26SF\tN\tGCATCCCATCCCCCGTCCCCTCCCCCACACCCCTCCCCCACCCCCACGTCCCCTCCCCACCCCTCCCCCACACCCTCCCCCACCCCTCCCCATGTCCCCTCCCCTACCTCCTCCCCCCGCATCCCCTCCCCCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=133;END=763776;SUPPORT=20;COVERAGE=19,19,20,20,20;STRAND=+-;AF=1;STDEV_LEN=0.789;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:55:0:20", - "chr16\t767712\tSniffles2.INS.2ASF\tN\tGCGCATGGGGGGCGTGGGAGGGGGGTGCGTGGAGGAGGGGCGGTGTGGAGGGGGGCGCGTGGGGGTGTGTGGGGGGGGCACGTGGAGGGGGGCGTGTGGGGGGGTGCGTGGAGGAGGGGCGCGTGGAGGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=130;END=767712;SUPPORT=5;COVERAGE=15,15,15,15,14;STRAND=+-;AF=0.333;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:22:10:5", - "chr16\t767829\tSniffles2.INS.29SF\tN\tGGTGTGGAGGGGGGCGCGTGGGGGTGTGTGGGGGGGGGCACGTGGAGGGGGCGTGTGGGGGGGTGCGTGGAGGAGGGGCGCGTGGAGGA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=89;END=767829;SUPPORT=9;COVERAGE=15,15,15,15,14;STRAND=+-;AF=0.6;STDEV_LEN=3.715;STDEV_POS=36.697;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:34:6:9", - "chr16\t767989\tSniffles2.INS.28SF\tN\tGGGGCACATGGGGGTGCGTGGGGGGCGTGTGGGGGGTGCGTGGAGGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=47;END=767989;SUPPORT=6;COVERAGE=15,15,15,14,14;STRAND=+-;AF=0.4;STDEV_LEN=1.5;STDEV_POS=11.547;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:34:9:6", - "chr16\t769171\tSniffles2.INS.2BSF\tN\tCCCCGGCCCCGGCCCCAGCCCCGGCCCCACCCCGGCCCCAGCCCCAGCCCCAGCCCCAGCCCCACCCCCGGCCCCAGCCCCAGCCCCAGCCCCAGCCCCGGCCCCACCCCCACCCCCGGCCCCGGCCCCGGCCCCACCCCCGGCCCCGGCCCCGGCCCCACCCCCGGCCCCGGCCCCACCCCCGGCCCCGGCCCCAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=197;END=769171;SUPPORT=6;COVERAGE=14,13,13,13,13;STRAND=+-;AF=0.462;STDEV_LEN=0.816;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:40:7:6", - "chr16\t795446\tSniffles2.INS.2CSF\tN\tCCCCCGTGCTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCTGTGCTGCCCGTGTGGCTGCCCCCGGCCCCGCGCCCTTCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=87;END=795446;SUPPORT=8;COVERAGE=13,13,13,13,13;STRAND=+-;AF=0.615;STDEV_LEN=0.577;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:27:5:8", - "chr16\t795594\tSniffles2.INS.2DSF\tN\tGCTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCTTCTCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCTTCTCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCTGTGCTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCTCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCTTCTCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCGCCCCGCCCCGCCCCTCCCCTCCCCCCCCCCCGC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=621;END=795594;SUPPORT=5;COVERAGE=13,13,13,13,13;STRAND=+-;AF=0.385;STDEV_LEN=2.646;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:27:8:5", - "chr16\t818868\tSniffles2.INS.2ESF\tN\tTGGTGAAGACTGTAGTGATGGTGATGATGGTGAAGACTGTAGTGATGATGGTGGTGAAGACTGTAGTGATGTTGATATTGGTGATGAAGACTATAGTGATAGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTAGTGATGGTGATGATGATGGTGAAGACTGTAGTGATGGTGATGATGGTGAAGACTGTAGCGATGATGGTGAACACTGTAGTGATGTTGATATTGGTGATGAAGACTATAGTGATGGTGATGATAGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTGTAGTGATGGTGATGAGGTGAGACTATCGTGATGGTGATGATAATGGTGAAGACTATAGTGATGTTGATGTCGGTGGTGAAGACTGTAGTGATGGTGATGATAGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTGTAGTGATGGTGATGATGGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTATAGTGATGATGGTGAAGACTGTAGTGATGGTGATGATAGTGGTGAAGACTGTAGTGATGTTAATGGTGAAGGCTATAGTGATGTTGATGGTGGTGAAGACTGTAGCAATGGTTATGATGTTGGTGAAGACAATAGTGATGGTGATGATGGTGAAGACTATAGTGATGGTGATGATGGTGGTGAAGACTGTAGTGATGGTGATGATAGTGGTGAGGACTGTTAGTGATGATAGTGGTGAAGACTGTAGTGATGATGATGGTGAAGACTATAATGATGATGGTGAAGACCGCCGTGATGGTGATGATGGTGAAGACTGTAGCAATGATGATGGTGAAGACTATAGTGATGTTGAGTTGGTGGTGAAGACTGTAGCGATGGTGATGATGATGGTGAAGACTATAGTGATGATGATGTTGAAGACTATAGTGATGATGATGGTGAAGACCGCCGTGATGGTGATGATGGTGAAGACTGTAGCGATGATGATGGTGAAGACTATAGTGATGCTGATGTTGGTGGTGAAGACTGTAGTGATGGTGATGATGATGGTGAAGACTATAGTGATGATGATGGTGAAGACTATAGTGATGATGATGTGAAGACCGCCGTGATGGTGATGATGGTGAAGACTGTAGCGATGATGATGGTGAAGACTATAGTGATGTTGATGTTGG\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=1173;END=818868;SUPPORT=12;COVERAGE=13,12,12,12,12;STRAND=+-;AF=1;STDEV_LEN=90.396;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:33:0:12", - "chr16\t824382\tSniffles2.INS.2FSF\tN\tTAGGCCCACGACGGCCAGCAGCGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGGAGCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=150;END=824382;SUPPORT=2;COVERAGE=3,3,3,3,2;STRAND=-;AF=0.667;STDEV_LEN=0.707;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:4:1:2", - "chr16\t824874\tSniffles2.INS.31SF\tN\tCGTCCCGTCCGCGGCACCACCGTCCCATCTGTGGCACCAT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=40;END=824874;SUPPORT=2;COVERAGE=3,2,2,2,2;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:5:0:2", - "chr16\t828906\tSniffles2.DEL.68SF\tgcccactggggcccacatcccgcccactgggaccgacatccc\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-42;END=828948;SUPPORT=2;COVERAGE=2,2,2,2,2;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t1/1:5:0:2", - "chr16\t886663\tSniffles2.INS.35SF\tN\tCCACCCTAGGCCCCCGGCGTTCCCCAGGCCCCTCCCACCCTAGGCCCCCGGCGTTCCCCAGGCCCCTCCCACCCTAGGCCCCCGGCGTTCCCCAGGCCCCTCCCACCCTAGGCCCCGGCGTTCCCCAGGCCCCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=134;END=886663;SUPPORT=8;COVERAGE=10,10,10,10,11;STRAND=+-;AF=0.8;STDEV_LEN=0.5;STDEV_POS=22.234;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:2:2:8", - "chr16\t886674\tSniffles2.INS.34SF\tN\tCCCGGCGTTCCCCAGGCCCCTCCCACCCTAGGCCCCCGGCGTTCCCCAGGCCCCTCCCACCCTAGGCCCCCGCGTTCCCCAGGCCCCTCCCACCCTAGG\t60\tGT\tIMPRECISE;SVTYPE=INS;SVLEN=66;END=886674;SUPPORT=2;COVERAGE=10,10,10,10,11;STRAND=+-;AF=0.2;STDEV_LEN=19.348;STDEV_POS=113.694;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/0:2:8:2", - "chr16\t894215\tSniffles2.INS.36SF\tN\tCTGGCTGTCCGCCCACCCATCCCCTGTCCACCGGACCGTCCGCCCACCCGTCCCCATGTCCATCAGACCGTCCGTCCACCTGTCCCCCTGTCCCCTGTCCACCGGACCATTCGCCCACCCATCCCCCTGTCCACCTGGCCATCCGCCCACCTGTCTCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCACTGGACTGTCCGCCCACCTGTCCCCCTGTCCCCTGTCCACCGGACCGTCTGCCCACCCGTCCCCCTGTCCACCTGGCCATCCGCCCACCCATCCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCAGGTCCCCCTGTCCAGCGGACCGTCCACCCACCCGTCCCCCTGTCCACTGGACCGTCCGCCCACCTGTCCCCCTGTCCACCTGGCAGTGCGCCCACCCATCCCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCAGCGGACCGTCCACCCACCT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=521;END=894215;SUPPORT=17;COVERAGE=17,17,17,17,17;STRAND=+-;AF=1;STDEV_LEN=57.393;STDEV_POS=5.5;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:47:0:17", - "chr16\t895843\tSniffles2.INS.37SF\tN\tACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCACGGTCCACAG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=59;END=895843;SUPPORT=4;COVERAGE=17,16,16,16,14;STRAND=+-;AF=0.25;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:6:12:4", - "chr16\t895843\tSniffles2.INS.39SF\tN\tACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCATGGTCCACAGACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCACGGTCCACAGACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCACGGTCCACAG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=177;END=895843;SUPPORT=8;COVERAGE=17,16,16,16,14;STRAND=+-;AF=0.5;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:57:8:8", - "chr16\t896053\tSniffles2.INS.3BSF\tN\tCCACACGCAGGCTGCACGGTCCACAGACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCACGGTCCACACACACGCCTCGGAGGGGTTGTGAGGCTCAGCCAT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=118;END=896053;SUPPORT=8;COVERAGE=17,16,16,16,14;STRAND=+-;AF=0.5;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:57:8:8", - "chr16\t896059\tSniffles2.INS.3ASF\tN\tGCAGGCTGCACGGTCCACAGACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACA\t60\tGT\tIMPRECISE;SVTYPE=INS;SVLEN=58;END=896059;SUPPORT=3;COVERAGE=17,16,16,16,14;STRAND=+-;AF=0.188;STDEV_LEN=0.577;STDEV_POS=38.553;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/0:6:13:3", - "chr16\t903595\tSniffles2.INS.3ESF\tN\tGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTATCTCTGCTGTGTGGTGGTGACCTTTGCACTGCCCGTGGGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCCGTCTCTGCTGTGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCCACAGGACGCCTGTCTCTGCTGTGTGGTGGTGACCTTTGCACTGCCCGTGGGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCTGTCTCTGCTGTGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCCGTCTCTGCTGCGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=600;END=903595;SUPPORT=6;COVERAGE=8,8,8,8,8;STRAND=+-;AF=0.75;STDEV_LEN=0.577;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:3:2:6", - "chr16\t949510\tSniffles2.DEL.6ESF\taatgacagagtcagccaacgacagagtcagagccaacgacagagtcagagacaatgacagagtcagagacaacgacagagtcagagacgacagagtcagagacgacagagtcagagccaatgacagagtcagccaatgacagagtcagagccaacgacagagtcagccaatgacagagtcagagacaacgacagagtcagagacaacgacagagtcagagacgacagagtcagagacgacagagtcagagccaatgacagagtcagccaatgacagagtcagagccaacgacagagtcagccaatgacagagtcagagacaacgacagagttagagacaacgacagagtcagccaaggacagcgtcagccaacgacagaatcagagacaacgacagagtcagccaacgacagagtcagagccaatgagagtcagagccaacgacagagtcagagacgacagagtcagagccaacgacagagtcagccaacgacagagtcagagccaacgacagagtcagccaacgacagagtcagagccaacgacagagtcagccaacgacagagtcagagacaacgacagagtcagagccaacgacagagtcagagacgaaagactcagagccaatgacagagtcagagccaatgacagagtcagccaacgacagagtcagagccaacgacagagtcagccaatgacagagtcagagacagcgacagagttagagacaat\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-731;END=950241;SUPPORT=14;COVERAGE=22,22,22,23,22;STRAND=+-;AF=0.636;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:40:8:14", - "chr16\t950488\tSniffles2.INS.40SF\tN\tCAACGACAGAGTCAGAGACAACGACAGAGTCAGAGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=36;END=950488;SUPPORT=14;COVERAGE=22,23,23,23,23;STRAND=+-;AF=0.609;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:50:9:14", - "chr16\t952880\tSniffles2.DEL.71SF\ttccacacagacacccaccccaaaccagcctcctacacgtccacacagacacccaccccaaaccagcctcctgcacgtccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacacg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-178;END=953058;SUPPORT=16;COVERAGE=24,24,25,25,25;STRAND=+-;AF=0.64;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:45:9:16", - "chr16\t953293\tSniffles2.DEL.72SF\tcaaaccagcctcctacacgtccacacagacacccaccccaaaccagcttcctacacgttcacacagacacgg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-72;END=953365;SUPPORT=15;COVERAGE=24,25,25,25,25;STRAND=+-;AF=0.6;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:58:10:15", - "chr16\t953349\tSniffles2.DEL.75SF\tgttcacacagacacggaccccaaaccagcctcctacacgtccacacagacacccaccccaaaccagcctcctacacgttcacacagacacggaccccacaccagcctcctacacgtccacacagacacccaccccaaaccagcctcctgcacgtccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacacgtccacacagacacccactccaaaccagcctcctacacgtccacacagacaccccaaaccagcctcctacatgtccacacagacacccaccccaaaccagcctcctacatgtccacacagacacccaccccaaaccagcctcctacatgtccacacagacacccaccccaaaccagcctcctacat\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-440;END=953789;SUPPORT=9;COVERAGE=25,25,25,25,25;STRAND=+-;AF=0.36;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:45:16:9", - "chr16\t953507\tSniffles2.DEL.73SF\tacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacacgtccacacag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-106;END=953613;SUPPORT=15;COVERAGE=25,25,25,25,25;STRAND=+-;AF=0.6;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:58:10:15", - "chr16\t954972\tSniffles2.INS.41SF\tN\tCTAAGCGAACCAGACACGTTACATAAAATGCGTGCCTGCAGCAGACGGGGTCTGTGCACACACACACACAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=71;END=954972;SUPPORT=13;COVERAGE=25,24,24,26,26;STRAND=+-;AF=0.542;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:60:11:13", - "chr16\t955127\tSniffles2.INS.44SF\tN\tAACCAGACACGTTACATAAAATGCGTGCCTGCTGCAGACGTGGTGTGTGTATACACACACACACATCTAAGTAAACCAGACACGTTACATAAAATGCGTGCCCGCAGCAGACGTAGTGTGTGCATCCACACACACACATCTAAGTAAACTAGACACGTTACATAAAATGCGTGCCCACAGCAGACGCGGTGTGTGCGTACACACACACACATCTAAGTAAACTAGACACGTTACATAAAATGCGTGCCCGCAGCAGACGCAGTGTGTGCATACACATCTAAGTG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=284;END=955127;SUPPORT=13;COVERAGE=27,26,26,26,27;STRAND=+-;AF=0.5;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:60:13:13", - "chr16\t955473\tSniffles2.INS.45SF\tN\tACACACACACACACACATCTAAGTGAACCAGACACGTTACATAAAATGCGTGCCTGCAGCAGATGCGGTGTGTGCATACACACACACACATCTAAGTAAACCAGACACGTTACATAAAATGCGTGCCTGCAGCAGACGTAGTGTGTGCATCCACACACACACATCTAAGTAAACTAGACACGTTACATAAAATGCGTGCCCGCAGCAGAGACGGTGTGTGCGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=223;END=955473;SUPPORT=15;COVERAGE=24,26,26,27,27;STRAND=+-;AF=0.577;STDEV_LEN=0.5;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:60:11:15", - "chr16\t955933\tSniffles2.INS.46SF\tN\tCACGGCACCCACCCCACGACGGCTCTCTCACATCCACAGGTCTCCGAGTTCACGTCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=57;END=955933;SUPPORT=12;COVERAGE=26,27,27,29,29;STRAND=+-;AF=0.444;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:60:15:12", - "chr16\t956173\tSniffles2.INS.47SF\tN\tCCCACGACGGCTCTCTCACATCCACAGGTCTCCGAGTTCACGTCTCACGGCGCCCA\t60\tGT\tPRECISE;SVTYPE=INS;SVLEN=57;END=956173;SUPPORT=5;COVERAGE=27,29,29,29,29;STRAND=+-;AF=0.172;STDEV_LEN=0.577;STDEV_POS=10.392;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/0:16:24:5", - "chr16\t960401\tSniffles2.DEL.7CSF\tacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacaacactggatcacaacccagacaccatctcatggtgacaacacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacaacacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacaacacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagac\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-864;END=961265;SUPPORT=13;COVERAGE=31,31,31,30,30;STRAND=+-;AF=0.419;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:60:18:13", - "chr16\t960535\tSniffles2.DEL.78SF\tcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacaacacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-262;END=960797;SUPPORT=14;COVERAGE=31,31,31,31,30;STRAND=+-;AF=0.452;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:60:17:14", - "chr16\t961793\tSniffles2.DEL.7ESF\tacagactcacggtgacagcacgggatcacgacccag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-36;END=961829;SUPPORT=13;COVERAGE=30,30,30,30,30;STRAND=+-;AF=0.433;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:60:17:13", - "chr16\t961981\tSniffles2.DEL.7FSF\tacagactcacggtgacagcacgggatcaccacccag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-36;END=962017;SUPPORT=12;COVERAGE=30,30,30,30,30;STRAND=+-;AF=0.4;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:60:18:12", - "chr16\t1075978\tSniffles2.INS.4ASF\tN\tCCCTCCTCCCCTCCCCCTCCTTTCCCTCCCTCTCTCCCTCTCTCCTCCCCGCCTCCCCATCCCTCTCCCTCTCCCTCCTCTCTCTCTCCCCTACCCTGTCTTTCTCTCTGCCTCCCCGCCTCCCCTTCCCTCTCCCCATACCCTGTCTTTCTCTCTCCCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=160;END=1075978;SUPPORT=5;COVERAGE=8,5,5,5,4;STRAND=+-;AF=1;STDEV_LEN=1.155;STDEV_POS=8.737;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:13:0:5", - "chr16\t1076128\tSniffles2.DEL.84SF\tcctccccgcctccccatccctctccctctccctcctctctctctccccctaccctgttttctctctc\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-67;END=1076195;SUPPORT=2;COVERAGE=6,5,4,4,3;STRAND=+;AF=0.5;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:14:2:2", - "chr16\t1190923\tSniffles2.INS.4ESF\tN\tGGGTTTCGCTGACCCAGCAGGCTGGCCTGGTTGTGTGGCCTCAGGCACACTCGGGGTTTCGGTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTCTGACTCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTCTGACTCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTCTTACTCAGCAGGCTGGCCTGGCTGTGTGGCCTCCGGCACACTCGGGGTCTCTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTTTCGGTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCAGGGTTTTGGTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTTGGGGTCTCTGACCCAGTAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=523;END=1190923;SUPPORT=3;COVERAGE=10,10,10,10,11;STRAND=+;AF=0.3;STDEV_LEN=2.646;STDEV_POS=50.013;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:10:7:3", - "chr16\t1191001\tSniffles2.DEL.86SF\tcctggctgtgtggcctcaggcacactcggggtctctgacccagcaggctggcctggctgtgtggcctcaggcacactcggggtctctctgactcagcaggctggcctggctgtgtggcctcaggcacactcggggtctctctgactcagcaggctggcctggctgtgtggcctcaggcacactcggggtctctcttactcagcaggctgg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-210;END=1191211;SUPPORT=7;COVERAGE=10,10,11,11,11;STRAND=+-;AF=0.636;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:20:4:7", - "chr16\t1204953\tSniffles2.INS.50SF\tN\tGGGCCCCAGATCAGTGCCGGGGAGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGGCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGGCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=418;END=1204953;SUPPORT=8;COVERAGE=17,16,15,15,15;STRAND=+-;AF=0.533;STDEV_LEN=0.816;STDEV_POS=64;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:47:7:8" - ], + "[test_1_reheader.vcf.gz, test_2_reheader.vcf.gz]", [ "##contig=", "##contig=", @@ -553,121 +476,6 @@ "##INFO=", "##bcftools_viewVersion=1.20+htslib-1.20" ], - [ - "#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO\tFORMAT\ttest_2", - "chr16\t81981\tSniffles2.INS.1SF\tN\tCTTGATCACCCTACCTCCGGGAAGGCCTCCTGAATGCTCCCCACGCTGGCCCC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=56;END=81981;SUPPORT=10;COVERAGE=21,21,21,21,23;STRAND=+-;AF=0.476;STDEV_LEN=1.952;STDEV_POS=96.236;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:60:11:10", - "chr16\t82055\tSniffles2.INS.3SF\tN\tCTCCGGGAAGCCCTCCTGAATGCTCCCCACGCTGGCCCCTTCTTCCCACCACCCTACCTCCAGGAAGCCCTCCTGAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTATCTCCGGGAAGGCCTCCTCCCTATGCTCCCCACACTGACCCCTTCTTCCCACCACCCTACCTCCGGGAAGGCCTCCTGAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTATCTCCGGGAAGGCCTCCTGAATGCTCCCCACACTGACCCCTTCTTCCCACCACCCTACCTCCGGGAAGGCCTCCTGAGTCACCCGCGCTGACCCCTTCTTCCCACCACCCTATCTCCGGGAAGCCCTCCTAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTAT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=391;END=82055;SUPPORT=7;COVERAGE=20,21,21,22,23;STRAND=+-;AF=0.333;STDEV_LEN=4.147;STDEV_POS=104.55;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:30:14:7", - "chr16\t82180\tSniffles2.INS.2SF\tN\tCTCCTGAATGCTCCCCACACTGACCCCTTCTTCCCACCACCCTACCTCCGGGAAGGAATGCTCCCCACACTGACCCCTTCTTCCCACCACCCTACCTCCGGGGAAGGCCCCTC\t60\tGT\tIMPRECISE;SVTYPE=INS;SVLEN=111;END=82180;SUPPORT=3;COVERAGE=20,21,22,23,23;STRAND=+-;AF=0.136;STDEV_LEN=3.055;STDEV_POS=113.212;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/0:22:19:3", - "chr16\t153120\tSniffles2.INS.6SF\tN\tACAGTGGGGAGGGGACAGTGGGGAGAGGACAGTAAGGAGGGGACCATGGGGAGGAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=56;END=153120;SUPPORT=13;COVERAGE=14,14,14,14,14;STRAND=+-;AF=0.929;STDEV_LEN=0.916;STDEV_POS=1.061;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:26:1:13", - "chr16\t160091\tSniffles2.INS.CSF\tN\tTGAGAGGTGCCCGGGACGGCTTGTGGGACACAGGTTGTGAGAGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTGTGAGACGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGAGATGCCCAGGACGGCTTGTGGGGAACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGATGGCTTGTGGGGCACAGGTTG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=584;END=160091;SUPPORT=15;COVERAGE=18,19,19,20,20;STRAND=+-;AF=0.789;STDEV_LEN=1.356;STDEV_POS=10.025;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:1:4:15", - "chr16\t160389\tSniffles2.INS.BSF\tN\tGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGCTGCAAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGATGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCTGGGACGGCTTGTGGGGCACAGGTTGTGAGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=328;END=160389;SUPPORT=15;COVERAGE=19,20,20,21,19;STRAND=+-;AF=0.75;STDEV_LEN=0.744;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:8:5:15", - "chr16\t160753\tSniffles2.INS.9SF\tN\tGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCAGGATGGCTTGTGGGGCACAGGCTGCAAGAGGTGCCCAGGACGGCTTGTGGGGCACAGGTTGTGAGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=145;END=160753;SUPPORT=17;COVERAGE=20,19,19,19,20;STRAND=+-;AF=0.895;STDEV_LEN=1.612;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:27:2:17", - "chr16\t163320\tSniffles2.DEL.8FSF\tagtgagtaggagacagtggggagaggacagtggagaggggacagtgaggaggggaccatgggaaggggaccgtggagtggggacagtgaggaggggaccatagggagggga\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-111;END=163431;SUPPORT=8;COVERAGE=19,19,19,19,18;STRAND=+-;AF=0.421;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:49:11:8", - "chr16\t163594\tSniffles2.DEL.92SF\tggggaccgtgggaaggagacagtgaggaggggaccttggggaggggacagtgaggaggggaccatggggaggggacagtgaggaggggacaatggagaggggacagtgaggaggggactgtggggagaggacagtgaggaggggaccatggggagggcacagtggggaggggagagtgaggaagggacagtgaggaggggactgtgggg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-209;END=163803;SUPPORT=8;COVERAGE=20,19,19,18,18;STRAND=+-;AF=0.421;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:49:11:8", - "chr16\t164801\tSniffles2.INS.ESF\tN\tCGGGGGCGGCCGGGCGGGGGCCGGGTCGCGGGGCGGGGTTGCGGGGGCGGGGCGAGGTC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=59;END=164801;SUPPORT=8;COVERAGE=18,18,18,18,17;STRAND=+-;AF=0.444;STDEV_LEN=5.565;STDEV_POS=38.821;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:52:10:8", - "chr16\t182789\tSniffles2.INS.FSF\tN\tTGAAACACCGTCTCTACTAAAAATACAAAAATTAGCCAGGCATAGTGGCGGGCGCCTGTAATCCCAGCTGTTCGGGAGGCTGAGGCAGGACAATCACTTAAACCAGGGAAGCAGAGGTTGCAGTGAGCTGAGATCGAGCCACTGCACTCCAGCCTGGGCGACAGACCGAGACTGTCTCAAAAAAAAGACCGGGCACGGTGGCTCACGCCTGTAATCCCACCACTTTGGGAGGCTGAGGCGGGCTGATCACGATGTCAGGAGATCTAGACCATCCTGGCCAACATGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=286;END=182789;SUPPORT=8;COVERAGE=10,10,10,10,10;STRAND=+-;AF=0.8;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:2:2:8", - "chr16\t186313\tSniffles2.DEL.96SF\tgcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacgggggga\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-830;END=187143;SUPPORT=7;COVERAGE=10,10,10,10,10;STRAND=+-;AF=0.7;STDEV_LEN=9.815;STDEV_POS=21.245\tGT:GQ:DR:DV\t0/1:10:3:7", - "chr16\t239176\tSniffles2.INS.10SF\tN\tTGTAGTCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATGGCGTGAACCCGGGAGGCGGGGCTTGCAGTGAGCCGAGATCACGCCACTACACTCGAGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAAAAGCAAACATAATGAAAATTAAAAAATTTTTAAAAAAACCCTGCAAACTTGGTGAATTTTTTACCGACTCGTGCTTTGCAAAATTCTTCATGGAACTTAGATTATATCAGGAAGATGTTAAAAAAAAAAAAAAAAAAAAGAATGCTGACTCCTAACCAAATAACTATGAAGCAGATGCTGAGAGATCAAAGGAGCAAATCTAAAAATCATCAGAGATGGGGCCTGGGGGAGAAGTATGCTGGCTTATAGATGAAAATGACTGGCTCTGTGTTGATAACTGTTGATAACTGTTGGACCTGGGTAATGGGTTTATGAGGCTGGTGTTCTCTACTTTTGTTAATGTTTGAGCATTTACATAATAAAGGTTTTTTTTTTTCATTGTATATAGAAATGGACTCACTATGTTGCCCAGGCTGGCCTCAAATTCCCGGGCTCAAGTAGTCCTCCCTCCTCTGCCTCTTGAAGTGCTGAGATTATAGGCATGAGACACCACACCTGGATCAAAGGTTAAAAAAATAATGATAAAAGAAGTAAGTTGAGGCTACTGTGGGCACACTGCCCATGGGTTAGCCCTGCTGTGCAAGGATCAGAAAAAAAAAAAAAAAAGAAATTGAAGCTAAGGCCTAATTAACTGGCTTATCTTGTAGAGTTTAGCAGAAGTGACCAAGTTTAGAGTTATACTTTATCTTTTTCTTTCTCTGCCCCCTACTTAATGAAGGACAAAAATGAGTAACATGGCTGGGTGTGGTGGCTCACGCCTGTCATCCCAGCACTTTGGGAGGCCGAGGTGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCATGGCCAACATGATGAAACCAAAATACAAAAGTTAGCCAGGCGTGGTGGCGGGCGTA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=1020;END=239176;SUPPORT=2;COVERAGE=2,2,2,2,4;STRAND=+;AF=1;STDEV_LEN=1.414;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:5:0:2", - "chr16\t318898\tSniffles2.INS.12SF\tN\tGCCAGGGCCTTGGTGAGAGCGGCTCTGACCCCTGGCTGTGCGGAGAGAATGCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=53;END=318898;SUPPORT=4;COVERAGE=12,12,12,12,12;STRAND=+-;AF=0.333;STDEV_LEN=2.082;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:17:8:4", - "chr16\t321645\tSniffles2.INS.13SF\tN\tGGATTCCAACCCACGAAGGGTTAAACCCTCTCATAGCTGGGAATATGAGGTAGAAGGCGGATGCCAACCCACGAAGGGTTAAACCCTCTCATAGCTGGGAATATGAGGTAGAAGGC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=116;END=321645;SUPPORT=8;COVERAGE=16,16,16,15,16;STRAND=+-;AF=0.5;STDEV_LEN=0.548;STDEV_POS=45.616;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:57:8:8", - "chr16\t362984\tSniffles2.INS.14SF\tN\tTCCCAGGACTTAGCACCGGGGGGTCTCGGGCTGCGGCTGCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=41;END=362984;SUPPORT=12;COVERAGE=20,20,20,20,19;STRAND=+-;AF=0.6;STDEV_LEN=0.408;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:46:8:12", - "chr16\t370391\tSniffles2.INS.16SF\tN\tCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCTCCTAACCCGGCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCCCTACCCCTGCCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCCCTACCCGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGGCTCTCACT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=648;END=370391;SUPPORT=12;COVERAGE=18,15,15,15,18;STRAND=+-;AF=0.8;STDEV_LEN=59.3;STDEV_POS=1.069;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:3:3:12", - "chr16\t378308\tSniffles2.INS.18SF\tN\tCCACTCTGACTGCCATCGCCACTCTGACTGCCATCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=36;END=378308;SUPPORT=8;COVERAGE=19,18,18,18,18;STRAND=+-;AF=0.444;STDEV_LEN=0.447;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:52:10:8", - "chr16\t378517\tSniffles2.INS.1ASF\tN\tGCCATCGCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCTGACTGCCATCGCCACCCACACTGCCATCCCCACCCGCACTGCCATCGCCACCCTGACTGCCATCGCCACCCACAATGCCATCCCCACCCGCACTGCCATCGCCACCCGCACTGCCATCCCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCACACTGCCATC\t60\tGT\tPRECISE;SVTYPE=INS;SVLEN=240;END=378517;SUPPORT=3;COVERAGE=19,18,18,18,18;STRAND=+-;AF=0.167;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/0:11:15:3", - "chr16\t397727\tSniffles2.INS.1DSF\tN\tGGGGGGTGGGGGTGGGGGGGTGGGGGATGAGGGGGGTGGGGGTGGGGGTGGGGGGTGAGGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGGTGAGGGAGTGGGGGGTGGGGGTGGGGGGGTGGGGGGGTGGGGGATGAGGGGGGTGGGGGTGGGGGTGGGGGGGTGGGAGTGGGGGGTGGGGGTGGGGGTGGGGGGTGAGGGAGTAGGGGGGTGGGGGGTGGGGGTGGGGGGGTGAGGGGAGTGGGGGGTGGGGTGGGGGTGTGGGGGGGTGAGGGAGTGGGGGGTGGGTGTGGGGGGGGTGGGGGATGGGGGGGTGGGGGTGGGGGTGTGGGGGGGTGAGGGAGTGGGGGGTGGGGGTGGGGGTGGGGGGGTGGGGGTCGGGGGGGTGGGGGTGGGGGTGGGGGGGTGAGGGGAGTCGGGGGGTGGGGGTGGGGGGGTGGGGATCGGGGGGTGGGGGTGGGGGTGGGGGGCTGAGGGGAGTA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=506;END=397727;SUPPORT=11;COVERAGE=18,15,15,15,16;STRAND=+-;AF=0.733;STDEV_LEN=34.854;STDEV_POS=7.448;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:9:4:11", - "chr16\t410360\tSniffles2.DEL.99SF\ttcttccgggtgggtgcctcgtgcgctctgtgagaag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-36;END=410396;SUPPORT=7;COVERAGE=15,14,14,14,12;STRAND=+-;AF=0.5;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:50:7:7", - "chr16\t433138\tSniffles2.INS.21SF\tN\tATTCTCCTGCCTCAGCCTCCCAAGAAGCTGGGACTACAGGCGCCCGCCACCACGCCCGGCTAATTTTTATATTTTTAGTAGAGACGAAGTTTCACCATGTTAGCCAGGATGGTCTCCATCTCCTGACCTCGTGATCTGCCCACCTCGGCCTCCCAAAGTGCTGGGATTACAGGCATGAGCTACTGTGCCCGGCCTGTCATTTTTATATATTGGGAAAGTTTTGAGTCCTTTCTCTAGGTATGTTGAAATATACAGGCATGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGTCCGAGGCGGGTGAATCACGAGGTCAGGAGATCGAGACCATCCTGGCTAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAAAAATTAGCCAGGCATGGTGGTGGGCGCCTGTAGTCCCAGCTACTCCAGAGGCTGAGGCAGGAGAATGGCGTGAACCTGAGCTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACTGAGCAAGACTCTGTCTCAAAAAAAAAAAAAAAGAAATATACAATATATTGTTGTTAAATTTAGTCACCCTACTCTGCTACCAAACATTAGAACTTATCCTTTGTCTCATTGTAATTTTTTTTTTTTTGAGATGGGGTCTCGCTCTGTCGCCCAGGCTGGAGTGCAGTGGCGCTATCTTGGCTCACTGCAACCTCCACCTCCCAGGTTCAAGCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=725;END=433138;SUPPORT=2;COVERAGE=4,4,4,4,3;STRAND=+-;AF=0.5;STDEV_LEN=0.707;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:14:2:2", - "chr16\t433317\tSniffles2.DEL.9CSF\tcaccgctcattgcatatttctaaccattaaccgtgctctttaccctcctgatgcttcccagcctctgatatcaatcgctctattctctacctccattagatccacttttctagctcccacataagagtaaaaacgtgatatttgtctttctctgcctgtct\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-161;END=433478;SUPPORT=2;COVERAGE=4,4,4,3,3;STRAND=+-;AF=0.5;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:14:2:2", - "chr16\t492363\tSniffles2.INS.22SF\tN\tTCCCGGGGGACCCGAGGCCACCCCGGCCCTCCCGGGAGACCCGAGGCCGCCCAGGGCCCTCCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCGGGAGACCCGAGGCCGCCCCAAGCCCCCTCCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCGGGAGACCCGCGAGGCCGCCCAGAGCCCTCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCCGGGAGACCCGAGGCCGTCCAGGGCCCTCCCCGGGAGACCCGAGGCCGCCCAGGGCCCTTCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCGGGGAGACCCGAGGCCGCCCAGGGCCCTCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCCGGGAGACCCGGGAGCGATCCCAGGGCCCCTCCCGGGGAGACCCGAGGCCGCCCAGGGCCCTCCCCGGGAGACCCGAGGCCGCCCAGGGCCCTTCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCGGGGAGACCCGAGGCCGCCCAGGGCCCTCCCGGGAGACCCGAGGCCGCCCCAAGCCCTCCCCGGGAGACCCGAGGCCGTCCAGGGCCCTTCCCGGGGAGACCCGAGGCCGCCCAGGGCCCTCCCCGGGAGACCCGAGGCCGCCCAGGGCCCTTCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCGGGGAGACCCGAGGCCGCCCAGGGCCCTCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCCGGGAGACCCGAGGCCGCCCAGGGCCCTCCCGGGAGACCCGAGGCCGCCCAGGGCCCTCCCCGGGAGACCCGAGGCCGCCCAGGGCCCTCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCCGGGAGACCCGAGGCCGCCCAGGGCCCTCCCCGGGAGACCCGAGGCCGCCCCAGGGCCCTCCCCGGGAGACCCGAGGCCGCCCAGGGCCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=1083;END=492363;SUPPORT=2;COVERAGE=2,2,2,2,2;STRAND=+;AF=1;STDEV_LEN=4.243;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:5:0:2", - "chr16\t494828\tSniffles2.INS.23SF\tN\tGGGAGGTCGAGGCTGCAGAGGTGGCAGGATCACATGATCCTGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCAGAGGTGGCAGGATCACATGATCCTGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCAGAGGTGGCAGGATCACATGATCCTGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATAGCATGAGCCTGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGATCCTGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGATCCTGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGGCGGATCACATGAGCCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=2706;END=494828;SUPPORT=2;COVERAGE=2,2,2,2,2;STRAND=+;AF=1;STDEV_LEN=2.121;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:11:0:4", - "chr16\t504280\tSniffles2.INS.24SF\tN\tTCCCATCTCCTCCTGTACCCCCTCACCTCCTTGTGCACCCCCTCACCTCCTGTACCCCCTCACCTCCTCCTGTA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=74;END=504280;SUPPORT=7;COVERAGE=9,9,9,10,13;STRAND=+-;AF=0.778;STDEV_LEN=0;STDEV_POS=13.416;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:0:2:7", - "chr16\t504419\tSniffles2.INS.26SF\tN\tTCCTGTACCCCCTCACCTCCTCTTGCACCCCCCTTGCCTCCTGTACCCCCTCACCTCCTTGTGCACCCCTCACCTCCTGTACCCCCCTCACCTCCTCCTGTACCCGCCTCACCTCCTCCTGCACTCCCATCTCCTCCTGTACCCCCTCACCTCCTTGTGCACCCCCTCACCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=224;END=504419;SUPPORT=7;COVERAGE=9,10,11,11,13;STRAND=+-;AF=0.636;STDEV_LEN=15.566;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:20:4:7", - "chr16\t507740\tSniffles2.INS.28SF\tN\tCGTTTCCCGTTTTCAGTATCATCTGCCCGTTCTGAGCCATTTGCTCTCTAGCCCTACCATACAGCTGTCATCCTAAGGTCC\t60\tGT\tPRECISE;SVTYPE=INS;SVLEN=81;END=507740;SUPPORT=3;COVERAGE=14,14,14,14,16;STRAND=+;AF=0.214;STDEV_LEN=0;STDEV_POS=0.577;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/0:0:11:3", - "chr16\t534179\tSniffles2.INS.2CSF\tN\tGGGCCGTGGTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACGGGGCCGTGTTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACGGGGCCGTGTTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACGGGGCCGTGGTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=216;END=534179;SUPPORT=15;COVERAGE=19,18,18,17,17;STRAND=+-;AF=0.833;STDEV_LEN=18.992;STDEV_POS=1.897;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:11:3:15", - "chr16\t544781\tSniffles2.INS.2DSF\tN\tCGTCTCCCCCACGCCGCCTCCCCCCACGTCGCCTCCCCCCACGTCGCCTCCCCCACGCCGCCTCCCCCACGCCGCCTCCCCCACGTCGCCGCCGTCTCCCCCACGCCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGCCGCCGTCTCCCCCACGCCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGCCGCCTCCCCCACGCCGCCTCCCCTCACGTCGCCTCCCCCACGCCGTCGCCTCCCTCCACGCCGC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=348;END=544781;SUPPORT=15;COVERAGE=17,17,17,17,17;STRAND=+-;AF=0.882;STDEV_LEN=5.196;STDEV_POS=28.465;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:21:2:15", - "chr16\t550769\tSniffles2.INS.2ESF\tN\tCGGTGAGGGTCCCCGGTCGGTGAGGGCGCCCCGTCAGTGAGGGTCCCGGTCAGTGAGGGCCCCGGTCGGTGAGGGTCCCCGGTCGGTGAGGGCCCCTGTCGGTGAGGGCCCCGGTCGGTGAGGGACCCGGTCGGTGAGGGCCCCCTGTCGGTGAGGGTCCCCTGTCGGTGAGGGCCCCGGTCGGTGAGGGCCCCGGTCGGTGAGGGTCCCCTGTCGGTGAGGGTCCCCTGTCGGTGAGGGTCCCGGTCGGTGAGGGCCCCGGTCGGTGAGGGTGCCCCGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=280;END=550769;SUPPORT=21;COVERAGE=23,23,23,23,24;STRAND=+-;AF=0.913;STDEV_LEN=0.65;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:38:2:21", - "chr16\t553059\tSniffles2.INS.2FSF\tN\tCCCCCCCACCCCTGCACAGGTGCCCCCTCCCCTACCCCGCTGCACCCACACCCAAACTCGTGCCCCCCCACCCCTGCACAGGTGCCCCCTCCCCTACCCCGCTGCACCCACACCCAACTCGTGC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=122;END=553059;SUPPORT=9;COVERAGE=21,20,20,20,19;STRAND=+-;AF=0.45;STDEV_LEN=0.983;STDEV_POS=9.709;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:59:11:9", - "chr16\t571110\tSniffles2.INS.30SF\tN\tTGGCTAGCCTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTGTGTGTGTCTGGCTAGCCTGGTGCCCGTGTGTGTGTGTATGTGTGTGTGTGTGTGTGTGTCTGGCTAGCCTGGCGCCCGTGGCTAGCCTGGTGCCCGTGTGTGTGTGTATGTATGTGTCTGGCTAGCCTGGTGCCCGTGGCTAGCCTGGTGCCCGTGTGTGTGTGTGTGGGGGGGCTAGCCTTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTCTGGCTAGCGTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTGTGTGTGGCTAGCCTGGCGCCCGTGTGTGTGTGTGTGTGTGTGTCTGGGTGAGCCTGGCACCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=356;END=571110;SUPPORT=8;COVERAGE=15,13,13,13,13;STRAND=+-;AF=0.615;STDEV_LEN=3.578;STDEV_POS=15.652;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:27:5:8", - "chr16\t579477\tSniffles2.DEL.A0SF\ttagaggtgccccgggcccggagactagaggtgccccgggcccggagactagaggtgccccgggcccggagact\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-73;END=579550;SUPPORT=16;COVERAGE=18,18,20,22,22;STRAND=+-;AF=0.8;STDEV_LEN=18.145;STDEV_POS=50.055\tGT:GQ:DR:DV\t1/1:4:4:16", - "chr16\t584946\tSniffles2.DEL.A2SF\tctcccgctccccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctccccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctccccccagctgcccaccgggtccaccaacacccccaacctgtg\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-155;END=585101;SUPPORT=18;COVERAGE=23,23,23,22,21;STRAND=+-;AF=0.783;STDEV_LEN=0.775;STDEV_POS=76.512\tGT:GQ:DR:DV\t1/1:0:5:18", - "chr16\t587440\tSniffles2.INS.33SF\tN\tTCCCTCCCTTCACTGGGCCTGCTGCCCCAGAGTCCA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=36;END=587440;SUPPORT=16;COVERAGE=20,20,18,17,17;STRAND=+-;AF=0.889;STDEV_LEN=0;STDEV_POS=29.087;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:24:2:16", - "chr16\t599821\tSniffles2.INS.34SF\tN\tAAGGTTTGTTTCCTCGTGGCATCAGTCAGCGTGGATTGGGCAAGGTTTTGTTCCCTCGTGGCATCAGTCAGCGTGGACG\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=81;END=599821;SUPPORT=9;COVERAGE=10,10,10,10,8;STRAND=+-;AF=0.9;STDEV_LEN=1.169;STDEV_POS=76.821;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:15:1:9", - "chr16\t606435\tSniffles2.INS.35SF\tN\tCAGTCCTGCTTTTCTTGGTCCCTCAGTCCAGTGTGGGTTTCCCTGGGCTGAAGTCAAGGTGTTGGCTGACACA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=66;END=606435;SUPPORT=10;COVERAGE=8,10,10,10,14;STRAND=+-;AF=1;STDEV_LEN=1.225;STDEV_POS=97.931;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:27:0:10", - "chr16\t611747\tSniffles2.DEL.A4SF\tgcctgtagattcaagagcagggacagccgccctggcctgtagaatcaagagcaagggacagccgccttc\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-69;END=611816;SUPPORT=7;COVERAGE=12,12,12,12,12;STRAND=+-;AF=0.583;STDEV_LEN=0;STDEV_POS=49.641\tGT:GQ:DR:DV\t0/1:30:5:7", - "chr16\t611793\tSniffles2.DEL.A8SF\taagagcaagggacagccgccttcgcctgtagaatcaagagcagggacagccgccctggcctgtagaatcaagagcacgggacagccgccctggcctgtagaatcaagagcacgggacagccgccctggcctgtagaatcaagagcagggacagccgccctggcctgtagaatcaagagcaagggacagccgccctggcctgtagaatcaagagcaagggacagccgcctttgcctgtagaat\tN\t60\tGT\tPRECISE;SVTYPE=DEL;SVLEN=-242;END=612035;SUPPORT=2;COVERAGE=12,12,12,12,12;STRAND=-;AF=0.167;STDEV_LEN=0.707;STDEV_POS=7.778\tGT:GQ:DR:DV\t0/0:7:10:2", - "chr16\t611989\tSniffles2.DEL.A5SF\tgcctgtagaatcaagagcaagggacagccgccttt\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-35;END=612024;SUPPORT=4;COVERAGE=12,12,12,12,12;STRAND=+-;AF=0.333;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:17:8:4", - "chr16\t612007\tSniffles2.DEL.A6SF\taagggacagccgcctttgcctgtagaatcaagagcagggacagccgccctggcctgtagcatcaagagca\tN\t60\tGT\tIMPRECISE;SVTYPE=DEL;SVLEN=-70;END=612077;SUPPORT=2;COVERAGE=12,12,12,12,12;STRAND=-;AF=0.167;STDEV_LEN=1.414;STDEV_POS=26.87\tGT:GQ:DR:DV\t0/0:7:10:2", - "chr16\t612374\tSniffles2.DEL.ABSF\tttcaagagcagggacagccgccctggcctgtagaatcaagagcaagggacagccgccttcgcctgtaga\tN\t60\tGT\tPRECISE;SVTYPE=DEL;SVLEN=-69;END=612443;SUPPORT=3;COVERAGE=12,12,12,12,13;STRAND=+-;AF=0.25;STDEV_LEN=0.577;STDEV_POS=5.196\tGT:GQ:DR:DV\t0/1:4:9:3", - "chr16\t612593\tSniffles2.DEL.AFSF\tggacagccgccctggcctgtagaatcaagagcaagggacagccgcctttgcctgtagaatcaagagcagggacagctgccctggcctgtagcatcaagagca\tN\t60\tGT\tIMPRECISE;SVTYPE=DEL;SVLEN=-102;END=612695;SUPPORT=2;COVERAGE=12,12,12,12,13;STRAND=-;AF=0.167;STDEV_LEN=26.163;STDEV_POS=0\tGT:GQ:DR:DV\t0/0:7:10:2", - "chr16\t612625\tSniffles2.DEL.AESF\taagggacagccgcctttgcctgtagaatcaagagcagggacagctgccctggcctgtagcatcaagagca\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-70;END=612695;SUPPORT=7;COVERAGE=12,12,12,12,13;STRAND=+-;AF=0.583;STDEV_LEN=0.894;STDEV_POS=2.683\tGT:GQ:DR:DV\t0/1:30:5:7", - "chr16\t631728\tSniffles2.DEL.B3SF\tcttctcccaccccttcactgcctctccttccatcctctcctcccaccctctcctcccatccactcctcccatccacttcttccatcct\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-88;END=631816;SUPPORT=14;COVERAGE=13,13,12,14,12;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t1/1:39:0:14", - "chr16\t660943\tSniffles2.INS.3ASF\tN\tCCCCTGTTCGGCCCCTCCCCAGGCCCCCCCCCCGCCCGGCCTCGGCCCCACCCTGTTCGGCCCCTCCCCCAGCCGGCCTCGGCCCCGCCCCCTGTTCGGCCCCTCCCCAGG\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=111;END=660943;SUPPORT=16;COVERAGE=22,22,22,22,19;STRAND=+-;AF=0.727;STDEV_LEN=9.233;STDEV_POS=23.011;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:15:6:16", - "chr16\t665215\tSniffles2.DEL.B4SF\tcctcagtctgcagcctgctagggacgcacggccacactcctgtctttcag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-50;END=665265;SUPPORT=18;COVERAGE=22,22,22,22,22;STRAND=+-;AF=0.818;STDEV_LEN=0;STDEV_POS=2.53\tGT:GQ:DR:DV\t1/1:10:4:18", - "chr16\t696679\tSniffles2.INS.3CSF\tN\tCCCACCCCAAAGCCACCATCCGCTCCCACCTCCATAGGGTTGCTGCTGCCCGCCCCTGCCCCCCAGCCCTGTCCCCCCCACCACCCAGCCTGGGCGCACACCCCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=105;END=696679;SUPPORT=16;COVERAGE=19,19,19,19,18;STRAND=+-;AF=0.842;STDEV_LEN=0.833;STDEV_POS=22.394;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:14:3:16", - "chr16\t746243\tSniffles2.DEL.B7SF\tggttcactgcgggtctgcctggctgggcagcaggagaggaggtgggttcactgcgggtctgcctggctgggcagcaggagaggaggtgggttcactgcaggtctgtctggctgggcagcaggaggggagaggtggggtcactgcgggtctgcagggctgcaggaggggagaggtggggtcactgcaggtctgtctggctgggcagcaggagaggaggtgggttcactgcaggtctgtctgggcgggctgcaggagaggaggtggggtcactgcgggtctgtctgggcgggctgcaggagaggaggt\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-306;END=746549;SUPPORT=6;COVERAGE=21,21,21,21,21;STRAND=+-;AF=0.286;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:18:15:6", - "chr16\t760502\tSniffles2.INS.3ESF\tN\tAGCCATGAAACCTGGGCCCGGGCTCCCACTCACACCCCACCCCCACCCAGGGCAGCCGTGAAACCTGGGCCCTGGGCTCCCACCCACGCCCCACACCCACCCAGGGC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=107;END=760502;SUPPORT=19;COVERAGE=20,20,21,21,23;STRAND=+-;AF=0.905;STDEV_LEN=0.674;STDEV_POS=4.221;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:32:2:19", - "chr16\t763776\tSniffles2.INS.3FSF\tN\tGCATCCCATCCCCCGTCCCCTCCCCCACACCCCTCCCCCACCCCCACGTCCCCTCCCCACCCCTCCCCCACACCCTCCCCCACCCCTCCCCATGTCCCCTCCCCTACCTCCTCCCCCCGCGTCCCCTCCCCCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=133;END=763776;SUPPORT=21;COVERAGE=22,22,22,22,23;STRAND=+-;AF=0.955;STDEV_LEN=1.092;STDEV_POS=1.391;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:48:1:21", - "chr16\t767868\tSniffles2.INS.41SF\tN\tGGGGCGCGTGGGAGGGGGCGCGTGGGGGGGTGTGGAGGGGGGCGCATGGGGGTGCGTGGGGGGGCGCGTGGGAGGGGGGGCGTGTGGGGCGTGGGGGGGTGTGGAGGGGGGCACATGGGGGTGCGTGGGGGGG\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=135;END=767868;SUPPORT=5;COVERAGE=23,16,17,16,17;STRAND=+-;AF=0.294;STDEV_LEN=3.215;STDEV_POS=90.067;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:16:12:5", - "chr16\t767969\tSniffles2.INS.40SF\tN\tGCGTGGGGGGGTGTGGAGGGGGGCACATGGGGGTGCGTGGGGGGG\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=45;END=767969;SUPPORT=12;COVERAGE=21,17,16,16,17;STRAND=+-;AF=0.75;STDEV_LEN=16.098;STDEV_POS=66.865;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:6:4:12", - "chr16\t769187\tSniffles2.INS.42SF\tN\tAGCCCCGGCCCCACCCCCGGCCCCAGCCCCAGCCCCAGCCCCAGCCCCACCCCCGGCCCCAGCCCCAGCCCCAGCCCCAGCCCCGGCCCCACCCCCACCCCCGGCCCCGGCCCCGGCCCCACCCCCGGCCCCGGCCCCGGCCCCACCCCCGGCCCCGGCCCCACCCCCGGCCCCGGCCCCACCCCCGGCCCCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=193;END=769187;SUPPORT=8;COVERAGE=17,18,18,18,18;STRAND=+-;AF=0.444;STDEV_LEN=0.577;STDEV_POS=5;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:52:10:8", - "chr16\t795446\tSniffles2.INS.44SF\tN\tCCCCCGTGCTGCCCGTGTGGCTGCCCCGGCCCCGTGCCCGCCCCCCTGTGCTGCCCGTGTGGCTGCCCCCGGCCCCGCGCCCTTCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=86;END=795446;SUPPORT=7;COVERAGE=20,18,18,18,18;STRAND=+-;AF=0.389;STDEV_LEN=0.816;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:39:11:7", - "chr16\t795594\tSniffles2.INS.46SF\tN\tGCTGCCCGTGTGGCTGCCCCCGGCCCCCGTGCCCCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCTTCTCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCCAAACACACTGCCCGTGTGGCTGCCCCGGCCCCGTGCCCGCCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCTTCTCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCTGTGCTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCTCCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCGGTGCCCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCTTCTCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCGGCCCCGTGCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCGCCCCGCCCGCCCCTCCCCTCCCCCCCCCCCGC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=617;END=795594;SUPPORT=6;COVERAGE=20,18,18,18,18;STRAND=+-;AF=0.333;STDEV_LEN=2.5;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:26:12:6", - "chr16\t818868\tSniffles2.INS.47SF\tN\tTGGTGAAGACTGTAGTGATGGTGATGATGGTGAAGACTGTAGTGATGATGGTGGTGAAGACTGTAGTGATGTTGATATTGGTGATGAAGACTATAGTGATAGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTAGTGATGGTGATGATGATGGTGAAGACTGTAGTGATGGTGATGATGGTGAAGACTGTAGCGATGATGGTGAACACTGTAGTGATGTTGATATTGGTGATGAAGACTATAGTGATGGTGATGATAGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTGTAGTGATGGTGATGATGGTGAAGACTATCGTGATGGTGATGATAATGGTGAAGACTATAGTGATGTTGATGTCGGTGGTGAAGACTGTAGTGATGGTGATGATAGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTGTAGTGATGGTGATGATGGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTATAGTGATGATGGTGAAGACTGTAGTGATGGTGATGATAGTGGTGAAGACTGTAGTGATGTTAATGGTGAAGGCTATAGTGATGTTGATGGTGGTGAAGACTGTAGCAATGGTTATGATGTTGGTGAAGACAATAGTGATGGTGATGATGGTGAAGACTATAGTGATGGTGATGATGGTGGTGAAGACTGTAGTGATGGTGATGATAGTGGTGAGGACTGTAGTGATGATAGTGGTGAAGACTGTAGTGATGATGATGGTGAAGACTATAATGATGATGGTGAAGACCGCCGTGATGGTGATGATGGTGAAGACTGTAGCAATGATGATGGTGAAGACTATAGTGATGTTGATGTTGGTGGTGAAGACTGTAGCGATGGTGATGATGATGGTGAAGACTATAGTGATGATGATGGTGAAGACTATAGTGATGATGATGGTGAAGACCGCCGTGATGGTGATGATGGTGAAGACTGTAGCGATGATGATGGTGAAGACTATAGTGATGCTGATGTTGGTGGTGAAGACTGTAGTGATGGTGATGATGATGGTGAAGACTATAGTGATGATGATGGTGAAGACTATAGTGATGATGATTGTGAAGACCGCCGTGATGGTGATGATGGTGAAGACTGTAGCGATGATGATGGTGAAGACTATAGTGATGTTGATGTTGG\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=1180;END=818868;SUPPORT=9;COVERAGE=14,11,11,11,11;STRAND=+-;AF=0.818;STDEV_LEN=66.808;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:5:2:9", - "chr16\t824382\tSniffles2.INS.48SF\tN\tTAGGCCCACGACGGCCAGCAGCGGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGGAGCT\t60\tGT\tPRECISE;SVTYPE=INS;SVLEN=152;END=824382;SUPPORT=2;COVERAGE=9,8,8,8,8;STRAND=+;AF=0.25;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:3:6:2", - "chr16\t824382\tSniffles2.INS.49SF\tN\tTAGGCCCACGACGGCCAGCAGCGGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGCAGCTCGTCACACCGTCACACTAGGCCCACGACGGCCAGCAGTGGGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGCAGCTCACATGAGGCCCACGACGGCCAGCAGCGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGGAGCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=475;END=824382;SUPPORT=4;COVERAGE=9,8,8,8,8;STRAND=+-;AF=0.5;STDEV_LEN=4.031;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:28:4:4", - "chr16\t824874\tSniffles2.INS.4ASF\tN\tCGTCCCGTCCGCGGCACCACCGTCCCATCTGTGGCACCAT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=40;END=824874;SUPPORT=6;COVERAGE=8,8,8,8,8;STRAND=+-;AF=0.75;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:3:2:6", - "chr16\t828085\tSniffles2.INS.4BSF\tN\tCCGGGGGAAATGAACTCTCGGCCTCCAGGGCAGCCAGGCAGGGGTCTGGCCCAGTCCTCA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=58;END=828085;SUPPORT=4;COVERAGE=8,8,8,8,8;STRAND=+-;AF=0.5;STDEV_LEN=1.5;STDEV_POS=22.765;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:28:4:4", - "chr16\t828906\tSniffles2.DEL.BBSF\tgcccactggggcccacatcccgcccactgggaccgacatccc\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-42;END=828948;SUPPORT=6;COVERAGE=8,8,8,8,8;STRAND=+-;AF=0.75;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:3:2:6", - "chr16\t886701\tSniffles2.INS.4DSF\tN\tCCTAGGCCCCCAGCATCCCAGGCCCCTCCCCACCCTCAGGCCCCCGGCGTTCCCCAGGCCCCTCCCACCCTAGGCCCCCGGCGTTCCCCAGCCTCCACCCTAGGCCCCCGGCGTTCCCCCAGCCCCTGCCA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=131;END=886701;SUPPORT=10;COVERAGE=14,14,14,14,14;STRAND=+-;AF=0.714;STDEV_LEN=16.561;STDEV_POS=60.663;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:12:4:10", - "chr16\t894226\tSniffles2.INS.53SF\tN\tCCCACCCATCCCCTGTCCACCGGACCGTCCGCCCACCCGTCCCCATGTCCATCAGACCGTCCGTCCACCTGTCCCCCTGTCCCCTGTCCACCGGACCATTCGCCCACCCATCCCCCTGTCCACCTGGCCATCCGCCCACCTGTCTCCTGTCCACCGGACCGTCCACCCACCCCGTCCCCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCACTGGACTGTCCGCCCACCTGTCCCCCTGTCCCCTGTCCACCGGACCGTCTGCCCACCCGTCCCCCTGTCCACCTGGCCATCCGCCCACCCATCCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCAGCGGACCGTCCACGTCCCCCTGTCCAGCGGACCGTCCACCACCCGTCCCCCTGTCCACTGGACCGTCCGCCCACCTGTCCCCTGTCCACCTGGCAGTGCGCCCACCCATCCCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCAGCGGACCGTCCACCCACCT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=532;END=894226;SUPPORT=9;COVERAGE=17,17,17,17,17;STRAND=+-;AF=0.529;STDEV_LEN=71.587;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:54:8:9", - "chr16\t895843\tSniffles2.INS.57SF\tN\tACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCATGGTCCACAGACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCACGGTCCACAGACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCACGGTCCACAG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=177;END=895843;SUPPORT=6;COVERAGE=15,15,15,15,15;STRAND=+-;AF=0.4;STDEV_LEN=1.949;STDEV_POS=8.944;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:34:9:6", - "chr16\t895870\tSniffles2.INS.55SF\tN\tAGCCACCCACACGCAGGCTGCACGGTCCACAGACACGCCTCGGAGGGGTTGTGACTTTTA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=59;END=895870;SUPPORT=5;COVERAGE=15,15,15,15,15;STRAND=+-;AF=0.333;STDEV_LEN=0;STDEV_POS=15.588;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:22:10:5", - "chr16\t896053\tSniffles2.INS.56SF\tN\tCCACACGCAGGCTGCACGGTCCACAGACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCACGGTCCACACACACGCCTCGGAGGGGCTGTGAGGCTCAGCCAT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=118;END=896053;SUPPORT=6;COVERAGE=15,15,15,15,15;STRAND=+-;AF=0.4;STDEV_LEN=0.447;STDEV_POS=64.631;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:34:9:6", - "chr16\t903595\tSniffles2.INS.5ASF\tN\tGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTATCTCTGCTGTGTGGTGGTGACCTTTGCACTGCCCGTGGGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCCGTCTCTGCTGTGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTCCGTGGGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCCACAGGACGCCTGTCTCTGCTGTGTGGTGGTGACCTTTGCACTGCCCGTGGGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCTGTCTCTGCTGTGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCCGTCTCTGCTGCGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGG\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=600;END=903595;SUPPORT=2;COVERAGE=7,7,7,7,7;STRAND=+-;AF=0.286;STDEV_LEN=0.707;STDEV_POS=54.447;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:6:5:2", - "chr16\t904025\tSniffles2.INS.5DSF\tN\tGCCCGCTGGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCTGTCTCTGCTGTGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCCGTCTCTGCTGCGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGGGCTACCTCCTCCCCGCGGCATCGCCCACAGGACGCCTGCGTCCCTGCTGCGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGGCGACCTCTGCATCGCCACAGGACGCCTATCTCTGCTGTGTGGTGGTGACCTTTGCACTGCCCGTGGGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCCGTCTCTGCTGTGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCCACAGGACGCCTGTCTCTGCTGTGTGGTGGTGACCTCTGCACTGCCCACAGGACGCCTGTCTCTGCTGTGTGGTGGTGACCTTTGCATG\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=613;END=904025;SUPPORT=2;COVERAGE=7,7,7,7,7;STRAND=+-;AF=0.286;STDEV_LEN=7.071;STDEV_POS=25.456;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:6:5:2", - "chr16\t949565\tSniffles2.DEL.C0SF\tgacagagtcagagacaacgacagagtcagagacgacagagtcagagacgacagagtcagagccaatgacagagtcagccaatgacagagtcagagccaac\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-100;END=949665;SUPPORT=8;COVERAGE=31,30,32,32,32;STRAND=+-;AF=0.258;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:15:23:8", - "chr16\t949708\tSniffles2.DEL.C3SF\tagagacaacgacagagtcagagacgacagagtcagagacgacagagtcagagccaatgacagagtcagccaatgacagagtcagagccaacgacagagtcagccaatgacagagtcagagacaacgacagagttagagacaacgacagagtcagccaaggacagcgtcagccaacgacagaatcagagacaacgacagagtcagccaacgacagagtcagagccaatgagagtcagagccaacgacagagtcagagacgacagagtcag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-269;END=949977;SUPPORT=8;COVERAGE=31,32,32,32,32;STRAND=+-;AF=0.25;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:13:24:8", - "chr16\t950298\tSniffles2.DEL.C6SF\ttcagccaatgacagagtcagagacaacgacagagtcagccaacaacagtcagccaacgacagagtcaggccaacgacagagtcagccaatgacagagtcagagccaacgacagagtcagagacaacgacagagttagagacaacgacagagtc\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-153;END=950451;SUPPORT=10;COVERAGE=32,32,32,32,32;STRAND=+-;AF=0.312;STDEV_LEN=7.311;STDEV_POS=128.469\tGT:GQ:DR:DV\t0/1:38:22:10", - "chr16\t952880\tSniffles2.DEL.C8SF\ttccacacagacacccaccccaaaccagcctcctacacgtccacacagacacccaccccaaaccagcctcctgcacgtccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacacg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-178;END=953058;SUPPORT=10;COVERAGE=31,31,31,31,31;STRAND=+-;AF=0.323;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:41:21:10", - "chr16\t953293\tSniffles2.DEL.C9SF\tcaaaccagcctcctacacgtccacacagacacccaccccaaaccagcttcctacacgttcacacagacacgg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-72;END=953365;SUPPORT=10;COVERAGE=31,31,31,31,31;STRAND=+-;AF=0.323;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:41:21:10", - "chr16\t953349\tSniffles2.DEL.CDSF\tgttcacacagacacggaccccaaaccagcctcctacacgtccacacagacacccaccccaaaccagcctcctacacgttcacacagacacggaccccacaccagcctcctacacgtccacacagacacccaccccaaaccagcctcctgcacgtccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacacgtccacacagacacccactccaaaccagcctcctacacgtccacacagacaccccaaaccagcctcctacatgtccacacagacacccaccccaaaccagcctcctacatgtccacacagacacccaccccaaaccagcctcctacatgtccacacagacacccaccccaaaccagcctcctacat\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-440;END=953789;SUPPORT=16;COVERAGE=31,31,31,31,31;STRAND=+-;AF=0.516;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:60:15:16", - "chr16\t953507\tSniffles2.DEL.CBSF\tacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacacgtccacacag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-106;END=953613;SUPPORT=9;COVERAGE=31,31,31,31,31;STRAND=+-;AF=0.29;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:28:22:9", - "chr16\t954972\tSniffles2.INS.60SF\tN\tCTAAGCGAACCAGACACGTTACATAAAATGCGTGCCTGCAGCAGACGGGGTCTGTGCACACACACACACAC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=71;END=954972;SUPPORT=8;COVERAGE=32,31,31,32,33;STRAND=+-;AF=0.258;STDEV_LEN=2.345;STDEV_POS=27.353;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:15:23:8", - "chr16\t955136\tSniffles2.INS.61SF\tN\tCGTTACATAAAATGCGTGCCTGCTGCAGACGTGGTGTGTGTATACACACACACACATCTAAGTAAACCAGACACGTTACATAAAATGCGTGCCCGCAGCAGACGTAGTGTGTGCATCCACACACACACATCTTAAGTAAACTAGACACGTTACATAAAATGCGTGCCCACAGCAGACGCGGTGTGTGCGTACACACACACACATCTAAGTAAACTAGACACGTTACATAAAATGCGTGCCCGCAGCAGACGCAGTGTGTGCATACACATCTAAGTGAACCAGAC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=286;END=955136;SUPPORT=11;COVERAGE=30,32,33,33,33;STRAND=+-;AF=0.333;STDEV_LEN=3.599;STDEV_POS=75.588;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:48:22:11", - "chr16\t955473\tSniffles2.INS.64SF\tN\tACACACACACACACACATCTAAGTGAACCAGACACGTTACATAAAATGCGTGCCTGCAGCAGATGCGGTGTGTGCATACACACACACACATCTAAGTAAACCAGACACGTTACATAAAATGCGTGCCTGCAGCAGACGTAGTGTGTGCATCCACACACACACATCTAAGTAAACTAGACACGTTACATAAAATGCGTGCCCGCAGCAGAGACGGTGTGTGCGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=223;END=955473;SUPPORT=12;COVERAGE=31,33,33,33,33;STRAND=+-;AF=0.364;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:60:21:12", - "chr16\t955933\tSniffles2.INS.65SF\tN\tCACGGCACCCACCCCACGACGGCTCTCTCACATCCACAGGTCTCCGAGTTCACGTCC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=57;END=955933;SUPPORT=12;COVERAGE=33,33,33,31,31;STRAND=+-;AF=0.364;STDEV_LEN=0.756;STDEV_POS=42.601;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:60:21:12", - "chr16\t960535\tSniffles2.DEL.D1SF\tcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacaacacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacag\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-262;END=960797;SUPPORT=12;COVERAGE=27,27,27,27,27;STRAND=+-;AF=0.444;STDEV_LEN=1.833;STDEV_POS=50.328\tGT:GQ:DR:DV\t0/1:60:15:12", - "chr16\t960552\tSniffles2.DEL.D3SF\tgacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacaacacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacaacacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagac\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-713;END=961265;SUPPORT=11;COVERAGE=27,27,27,27,27;STRAND=+-;AF=0.407;STDEV_LEN=61.173;STDEV_POS=14.697\tGT:GQ:DR:DV\t0/1:60:16:11", - "chr16\t961793\tSniffles2.DEL.D4SF\tacagactcacggtgacagcacgggatcacgacccag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-36;END=961829;SUPPORT=7;COVERAGE=27,27,27,27,27;STRAND=+-;AF=0.259;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:14:20:7", - "chr16\t961981\tSniffles2.DEL.D5SF\tacagactcacggtgacagcacgggatcaccacccag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-36;END=962017;SUPPORT=7;COVERAGE=27,27,27,27,26;STRAND=+-;AF=0.259;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:14:20:7", - "chr16\t1040567\tSniffles2.INS.67SF\tN\tCCTGCCAAAGTCCCCACCGAGGTTCCCTCCGAGGTTCCCGCCGAGGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=47;END=1040567;SUPPORT=2;COVERAGE=2,2,2,2,2;STRAND=-;AF=1;STDEV_LEN=0.707;STDEV_POS=5.657;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:5:0:2", - "chr16\t1043243\tSniffles2.DEL.DBSF\tggtcagggacccctcgggtcagccttggggccgttctggggggtggtcagggacccctcgggtcagccttggggccgttccaggggggt\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-89;END=1043332;SUPPORT=4;COVERAGE=4,4,4,4,5;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t1/1:11:0:4", - "chr16\t1075983\tSniffles2.INS.6ASF\tN\tCCTCCCCTCCCCCTCCCTTTCCCTCCCTCTCTCCCTCTCTCCTCCCCGCCTCCCCATCCCTCTCCCTCTCCCTCCTCTCTCTCTCCCCTACCCTGTCTTTCTCTGCCTCCCCGCCTCCCCTTCCCTCTCCCCATACCCTGTCTTTCTCTCTCCCTCCCCG\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=157;END=1075983;SUPPORT=13;COVERAGE=17,17,16,16,16;STRAND=+-;AF=0.812;STDEV_LEN=38.003;STDEV_POS=38.833;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:6:3:13", - "chr16\t1185669\tSniffles2.INS.6ESF\tN\tGGCGGGGTACGTGGGGGGCGGGTGAGTAGACGGTCGGCGTGCGTAGGGGCCGGAGGCGGGTGTGGACGGGGCGGGTGAGTACGGTCGGCGTGCGCAGGGGCGGAGCGGGGTACGTGGGGGGCGGGTGAGAGACGGTCGGCATGCATAGGGCCGGGGGCGGGGTACGTGGGGGGGCGGGTGAGTAGACGGTCGGCGTGCGTAGGGGCCGGAGGCGTGGTGTGTAGACGGGGCGGGTGAGTAGACGGTCGGCGGGGTACGTGGGGGGCGGGTGAGGGCAGACGGTCGGCATGCATAGGGCCGGGGGCGGGGGTACGTGGGGGGCGGGTGAGTAGACGGTCGGCGTGCGTAGGGGCCGGTAGGCGCGCGCGGACGGGGCGGGTGAGTAGACGGTCGGTGCGGGGGTGTGTACGGGGCGGGTGAGTAGACGGTCGGCGTGCGTAGGGGCCGGAGGCGGGGTACGTGGGGGGCGGGTGAGAGGACGGCGTGCGTAGGGCGCAGGCGGTGTGCAGACGGGGCGGGTGAGTAGACGGTCGGCGTGCATAGGGGCCGAAGGCGGGGTGTGTACGGGGCGGGTGAGTAGACGGCGTAGGGGCCAGGTAGACGGCGGTGCATAGGGGCCGGAGGGTGGGTGTGCACGGGCGGGCGAG\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=725;END=1185669;SUPPORT=3;COVERAGE=5,6,6,6,7;STRAND=+-;AF=0.5;STDEV_LEN=55.154;STDEV_POS=139.3;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:21:3:3", - "chr16\t1185837\tSniffles2.INS.6FSF\tN\tGGGTGCAGTGGGGGGCGGGTGAGTAGACGGCATGTGTAGGGGCAAGGGCAGGGGTGCGTGGGGGGCGGGTGAGTAGACGGTCGGCGTGCATAGGGGCCGGGGGCGGGGTGTGTACGGGGCGGGTGAATAGACGGTCGGCATGCATAGGGCCGGGGGCGGGGTACGTGGGGGGCGGGTGAGTAGACGGTCGGCGTGCGTAGGGGCCGGAGGCGTGGTGTGTACGGGGCGGGTGAGTTAGACGGTCGGGCGGGGTGTGTACGGGGCGGGTGAGTAGACGGTCGGCGTGCGTAGGGGCCGGAGGCGGGGTACGTGGGGGGCGGGTGAGTAGACGGCGTGCGTAGGGGCCGGAGGCGGGGTGTGTACGGGGCGGGTGAGTAGACGGTCGGCGTGGATTGGGGCCGAAGGCAGGCGGGGTGTGTACGGGGCGGGTGAGTAGACGGTCGGCGTGCGTAGGGGCCGGAGGCGGGGTGTGTACGGGGCAGGTGAGTATAGACGGCGTGCATAGGGGCCGGAGGCGGGGTGTGTATGGGGCGGGTGAGTAGACGGTCGGCGTGCGTGGGCCGGAGGCGGGGTGTGTACGGGGCGGGTGAGTCAGCGTGGGGCCGACGGGCCGGAGGCGGGGTGTGTACGGGGCGGGTGAGTAGACGGCGTAGGGGCCGGAGGCGGGGTGTGTACGGGGCAGGTGAGTAGACGGCGTGCGTAGGGGCCGGAGGAGCGAGGTGGACGTGGGGGGCGGGTGAGTAGACGGCATGTGTAGGGGCCGGAGGCGGGGTGTGTACGGGGCGGGTGAGTAGACGGTCGGCGTGCGTTGGGGCCGGAGGCGGGGTGTGTACGGGGCAGGTGAGTAGACGGTCGGCGTGCGTAGGGGCCGGAGGCGGGGTACGTGGGGGGCGGGTGAGTAGACGGTCGGCGTGCGTAGGGGCCGGAGGCGGGGTGTGTACGGGGCGGGTGAGTAGACGGTCAGCGTGCGTAGGGGCCGGAGGCGGGGTACGTGGGGGGCGGGTGAGTAGACGGTCGGCGTGCATAGGGGCCGGAGGCGGGGAGGGGTGTGTACGGGGCGGGTGAGTAGACGGTCAGCGTGCGTAGGGGCCGGAGGCGGGCCGGGTACGTGGGGGGCGGGTGAGTAGACGGTCGGCGTGCGTAGGGGCCGGAGGCGTGGTGTGTACGGGGCGGGTGAGTAGACGGTCGGGCGGGGTGTGTACGGGGCGGGTGAGTAGACGGTCGGCGTGCGTAGGGGCCGGGAGGCGGGGTACGTGGGGGGCGGGTGAGTAGACGGCGTGCGTAGGGGCCGGAGGCGGGGTGTGTACGGGGCGGGTGAGTAGACGGTCGGCGTGCATAGGGGCCGAAGGCGGGGTGTGTACGGGGCGCATGTAGACGGCGTAGGGGCCAGAGGCGGGGTGTGTACGGGGCGGGTGAGTAGACGGTCGGCGTGCGTAGGGGCCGGAGGCGGGGTGTGTACGGGGCAGGTGAGTAGACGGCGTGCATAGGGGCCGGAGGCGGGGTGTGTATGGGGCGGGTGAGTAGACGGTCGGCGTGCGTAGGGGCCGGAGGCGGGGTGTGTACGGGGCGGGTGAGTACGCGTGGGGACGGGCGTGTGGGCGGGTGGGTGGGGAGGGGTGGGCGGGCCGGGGCGCTCGGGGCAGGTGGGTGGCGGGGTGGCGCGT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=1414;END=1185837;SUPPORT=5;COVERAGE=6,6,7,7,7;STRAND=+-;AF=0.714;STDEV_LEN=153.895;STDEV_POS=111.482;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:6:2:5", - "chr16\t1190943\tSniffles2.INS.70SF\tN\tGCTGGCCTGGTTGTGTGGCCTCAGGCACACTCGGGGTTTCGGTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTCTGACTCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTCTGACTCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTCTTACTCAGCAGGCTGGCCTGGCTGTGTGGCCTCCGGCACACTCGGGGTCTCTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTTTCGGTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCAGGGTTTTGGTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTTGGGGTCTCTGACCCAGTAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTTTCGCTGACCCAGCAT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=524;END=1190943;SUPPORT=5;COVERAGE=9,10,10,10,10;STRAND=+-;AF=0.5;STDEV_LEN=2.887;STDEV_POS=35.907;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:36:5:5", - "chr16\t1191090\tSniffles2.DEL.DESF\tgactcagcaggctggcctggctgtgtggcctcaggcacactcggggtctctctgactcagcaggctggcctggctgtgtggcctcaggcacactcggggtctctcttactcagcaggctggcctggctgtgtggcctcaggcacactcggggtctctgacccagcaggctggcctggctgtgtggcctcaggcacactcggggtctctct\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-210;END=1191300;SUPPORT=3;COVERAGE=9,10,10,10,10;STRAND=+-;AF=0.3;STDEV_LEN=0.577;STDEV_POS=51.384\tGT:GQ:DR:DV\t0/1:10:7:3", - "chr16\t1204953\tSniffles2.INS.74SF\tN\tGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGACCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGACCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGGCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=417;END=1204953;SUPPORT=10;COVERAGE=17,16,16,16,16;STRAND=+-;AF=0.625;STDEV_LEN=5.563;STDEV_POS=20.004;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:32:6:10", - "chr16\t1204971\tSniffles2.INS.73SF\tN\tGGGGAGGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGGTAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGG\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=210;END=1204971;SUPPORT=4;COVERAGE=17,16,16,16,16;STRAND=+-;AF=0.25;STDEV_LEN=0;STDEV_POS=72.125;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:6:12:4", - "chr16\t1230996\tSniffles2.DEL.E1SF\tccccagcccagctccccatggactcacccccagccccagcccagctccccatggactcacccccagccccagcccagctgcccatggactagtcccagccccagccccagctccccatggactcacccccagccccagcccagctccccatggactcacccccagccccagcccagctccccatggactagtcgcagcccccggccccagctccccatggtctcacccccag\tN\t60\tGT\tPRECISE;SVTYPE=DEL;SVLEN=-232;END=1231228;SUPPORT=2;COVERAGE=13,13,13,13,13;STRAND=-;AF=0.154;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/0:10:11:2", - "chr16\t1231235\tSniffles2.INS.76SF\tN\tCCCAGCTCCCCATGGACTAGTCCCAGCCCCAGCCCAGCTCCCCATGGTCTCACCCCCAGCCCCAGCCCAGCTCCCCATGGACTAGTCCCATCCCCCGGCCCCAGCTCCCCATGGTCTCACCCCCAGCTCCAG\t60\tGT\tIMPRECISE;SVTYPE=INS;SVLEN=135;END=1231235;SUPPORT=2;COVERAGE=13,13,13,13,13;STRAND=-;AF=0.154;STDEV_LEN=2.121;STDEV_POS=29.698;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/0:10:11:2", - "chr16\t1231287\tSniffles2.DEL.E2SF\tcccccagccccagcccagctccccatggactagtcccatcccccggccccagctccccatggtctcacccccagccccagcccagctccccatggtctcacccccagccccagcccagctccccatggactcacccccagccccagcccagctccccatggactagtcccagcccccggccccagctccccatggtctcacccccagccccagcccagctccccatggtctcacccccggccccagctccctgtggacttg\tN\t60\tGT\tPRECISE;SVTYPE=DEL;SVLEN=-261;END=1231548;SUPPORT=2;COVERAGE=13,13,13,13,13;STRAND=-;AF=0.154;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/0:10:11:2", - "chr16\t1231356\tSniffles2.INS.78SF\tN\tCCCAGCTCCAGCCCAGCTCCCCATGGACTAGTCCCAGCCCCAGCCCAGCTCCCCATGGTCTCACCCCCAGCCCCAGCCCAGCTCCCCATGGACTAGTCCCATCCCCCGGCCCCAGCTCCCCATGGTCTCACCCCCAGCCCCAGCCCAGCTCCCCATGGTCTCACCCCCAGCCCCAGCCCAGCTCCCCATGGACTCACCCCCAGCCCCAGCCCAGCTCCCCATGGACTAGTCGCAGCCCCCGGCCCCAGCTCCCCATGGTCTCACCCCCAGCTCCCCATGGACTAGTCTAGTCCCAGCCCCCGGCCCCAGCTCCCCATGGTCTCACCCCCAGCTCCAGCCCAGCTCCCCATGGACTAGTCCCAGCCCCAGCCCAGCTCCCCATGGT\t60\tGT\tIMPRECISE;SVTYPE=INS;SVLEN=385;END=1231356;SUPPORT=2;COVERAGE=13,13,13,13,13;STRAND=+-;AF=0.154;STDEV_LEN=7.778;STDEV_POS=24.749;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/0:10:11:2", - "chr16\t1231446\tSniffles2.INS.77SF\tN\tGGACTAGTCGCAGCCCCCGGCCCCAGCTCCCCAGCTGCCTCCACCCCCAGCTCCCCATGGACTAGTCCCAGCCCCAGCCCAGCTCCCCATGGTCTCACCCCCAGCCCCAGCCCAGCTCCCCATGGACTAGTCCCAGCCCCCGGCCCCAGCTCCCCATGGTCTCACCCCCAGCTCCAGCCCAGCTCCCCATGGACTAGTCCCAGCCCCAGCCCAGCTCCCCATGGTCTCACCCCCAGCCCCAGCCCAGCTCCCCATG\t60\tGT\tPRECISE;SVTYPE=INS;SVLEN=256;END=1231446;SUPPORT=2;COVERAGE=13,13,13,13,13;STRAND=-;AF=0.154;STDEV_LEN=2.121;STDEV_POS=21.213;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/0:10:11:2", - "chr16\t1238068\tSniffles2.INS.79SF\tN\tGTGTGTGAATGTGTGCATGTGTTCGTGTGTGCATGTGAACATCCGTGTGTGCATATGTGCATGTGAGTGCACAGATGTGCGGTGTGTGTGCA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=92;END=1238068;SUPPORT=3;COVERAGE=8,8,8,8,2;STRAND=+-;AF=0.375;STDEV_LEN=0.577;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:16:5:3", - "chr16\t1238210\tSniffles2.INS.7ASF\tN\tGTGCATATGTGTGCGTGTGTGCACACACGTGTGTACATGTGTGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=44;END=1238210;SUPPORT=6;COVERAGE=8,8,8,8,2;STRAND=+-;AF=0.75;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:3:2:6", - "chr16\t1248124\tSniffles2.DEL.ECSF\tcactcacacatgtacacatgtgtgtgcacacacgcacacatatg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-44;END=1248168;SUPPORT=4;COVERAGE=2,4,4,4,4;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t1/1:11:0:4", - "chr16\t1248302\tSniffles2.DEL.EDSF\tgcacatctgtgcactcacatgcacatatgcacacacggatgttcacatgcacacacgaa\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-59;END=1248361;SUPPORT=4;COVERAGE=3,4,4,4,4;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t1/1:11:0:4", - "chr16\t1254909\tSniffles2.DEL.EESF\tcatggggagctggggccgggggctgggactagtccatggggagctgggctggggctgggggtgaga\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-66;END=1254975;SUPPORT=2;COVERAGE=5,5,5,5,7;STRAND=-;AF=0.4;STDEV_LEN=0.707;STDEV_POS=11.314\tGT:GQ:DR:DV\t0/1:11:3:2", - "chr16\t1254975\tSniffles2.INS.7CSF\tN\tCCATGGGGAGCTGGGCTGGGGCTGGGACTAGTCCATGGGGAGCTGGGCTGGGGCTGGGACTAGTTCATGGGGAGCTGGGCTGGGGCTGGGACTAGTTCATGGGGAGCTGGGCTGGGGCTGGGACTAGTCCATGGGGAGCTGGGCTGGGGCTGGGACTAGTTCATGGGGAGCTGGGCTGGGGCTGGGGGTGAGTCCATGGGGAGCTGGGCTGGGGCTGGGGGTGAGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=226;END=1254975;SUPPORT=2;COVERAGE=5,5,5,5,7;STRAND=+-;AF=0.4;STDEV_LEN=0.707;STDEV_POS=21.92;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:11:3:2", - "chr16\t1258685\tSniffles2.INS.7ESF\tN\tCCCCTCCCCCACCCTGAGCCCCCTCCCCTGTCTTGAGCCACTGCTCCATCCTGAGTCCCCTCCCCCACACTGAGCCCCCTCCCCTTTCTTGAGCCCCTCATCCATCCTGAGCCCCTCCTCCATCCTGAGCCCCCTCCCCCATCCTGGGCCCCCTCCCCTTTCTGGAGCCCCCTCCCCCACCCTGAGCCCCCTCCCCTTCTTGAGCCCCCTCCCCACCCTGAGCCCCTTCCCCTTTCTTCAGTCCCTCCTCCATCCTGAGCCCCCTCCCTTTCTTGAGCCCTTCCTCCACCCTCAGCCCCCTCCCTTTCTTGAGCCCCTCCCCCACCCTGAGCCCCTTCCCCTTCTTGAGTCCCTCCCCCACCCTGAGCCCCCTCCCTTTCTTGAGTCCCTCCCCCACCCTGAGCCCCTTCCCCTTTCTTGAGCC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=424;END=1258685;SUPPORT=11;COVERAGE=9,11,11,11,15;STRAND=+-;AF=1;STDEV_LEN=34.141;STDEV_POS=1.89;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:30:0:11", - "chr16\t1260690\tSniffles2.INS.7FSF\tN\tAGCCCGGAGACCCACGTCCACACACAGCCCGGAGACCCACATCCACACAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=50;END=1260690;SUPPORT=8;COVERAGE=17,17,17,17,16;STRAND=+-;AF=0.471;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:54:9:8", - "chr16\t1264730\tSniffles2.DEL.EFSF\ttgtgtgtatgcgtgtgcatatgtaaggatgtgtgcg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-36;END=1264766;SUPPORT=8;COVERAGE=14,14,14,14,14;STRAND=+-;AF=0.571;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:37:6:8", - "chr16\t1285139\tSniffles2.INS.80SF\tN\tACTCTCCACTATTCCAGGGCCTCATCCCACTCCAGGGCCCTCTCACTATTCCAGGGCCCTCTCCCCCCA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=80;END=1285139;SUPPORT=3;COVERAGE=4,4,4,4,4;STRAND=+-;AF=0.75;STDEV_LEN=12.53;STDEV_POS=50.013;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:1:1:3", - "chr16\t1285239\tSniffles2.INS.81SF\tN\tCCAGGGCCCTCTCCACTATTCCAGGGCCCTCTCCACCACTCCAGGGCCCTCTCCACTATTCCAGGGCCCTCTCCACCACCCCAGGGCCCTCTCCACCACCCCAGGGCCCTCTCCACTATTCCAGGGCCCTCTCCACCACCCCAGGGCCCTCTCCACTATTCCAGGGCCCTCTCCACCACC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=182;END=1285239;SUPPORT=3;COVERAGE=4,4,4,4,4;STRAND=+-;AF=0.75;STDEV_LEN=3.055;STDEV_POS=222.264;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:1:1:3", - "chr16\t1308390\tSniffles2.DEL.F1SF\ttgagtgagggagggaatgagtgagggagggaatgag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-36;END=1308426;SUPPORT=15;COVERAGE=18,18,18,19,19;STRAND=+-;AF=0.833;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t1/1:11:3:15", - "chr16\t1345656\tSniffles2.INS.84SF\tN\tGCAACCCCAGCCTCCCCAGCCTCCCCAGCAACCCCAGCCTCCCCAGCAACCCCAGCCTCCTCA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=63;END=1345656;SUPPORT=8;COVERAGE=19,19,19,19,18;STRAND=+-;AF=0.421;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:49:11:8" - ], [ "##contig=", "##contig=", @@ -905,88 +713,6 @@ "##INFO=", "##bcftools_viewVersion=1.20+htslib-1.20" ], - [ - "#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO\tFORMAT\ttest_2\ttest_1", - "chr16\t81884\tSniffles2.INS.4SF\tN\tCTCCAGGAAGCCCTCCTGAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTATCTCCGGAAGCCCTCCTGAATGCTCCCCACGCTGGCCCCTTCTTCCCACCACCCTACCTCCGGGAAGGCCTCCTGAATGCTCCCCACGCTGGCCCCTTCTTCCCACCACCCTACCTCCGGGAAGCCCTCCTGAATGCTCCCCACGCTGGCCCCTTCTTCCCACCACCCTACCTCCAGGAAGCCCTCCTGAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTATCTCCGGGAAGGCCTCCTGAATGCTCCCCACACTGACCCCTTCTTCCCACCACCCTACCTCCGGGAAGGCCTCCTGAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTAT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=398;END=81884;SUPPORT=12;COVERAGE=22,23,24,23,23;STRAND=+-;AF=0.5;STDEV_LEN=0;STDEV_POS=68.361;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:60:12:12", - "chr16\t81981\tSniffles2.INS.1SF\tN\tCTTGATCACCCTACCTCCGGGAAGGCCTCCTGAATGCTCCCCACGCTGGCCCC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=56;END=81981;SUPPORT=10;COVERAGE=21,21,21,21,23;STRAND=+-;AF=0.476;STDEV_LEN=1.952;STDEV_POS=96.236;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:60:11:10\t./.:.:.:.", - "chr16\t82055\tSniffles2.INS.3SF\tN\tCTCCGGGAAGCCCTCCTGAATGCTCCCCACGCTGGCCCCTTCTTCCCACCACCCTACCTCCAGGAAGCCCTCCTGAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTATCTCCGGGAAGGCCTCCTCCCTATGCTCCCCACACTGACCCCTTCTTCCCACCACCCTACCTCCGGGAAGGCCTCCTGAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTATCTCCGGGAAGGCCTCCTGAATGCTCCCCACACTGACCCCTTCTTCCCACCACCCTACCTCCGGGAAGGCCTCCTGAGTCACCCGCGCTGACCCCTTCTTCCCACCACCCTATCTCCGGGAAGCCCTCCTAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTAT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=391;END=82055;SUPPORT=7;COVERAGE=20,21,21,22,23;STRAND=+-;AF=0.333;STDEV_LEN=4.147;STDEV_POS=104.55;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:30:14:7\t./.:.:.:.", - "chr16\t82169\tSniffles2.INS.1SF\tN\tCTCCGGGAAGGCCTCCTGAATGCTCCCCACACTGACCCCTTCTTCCCACCACCCTAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=57;END=82169;SUPPORT=8;COVERAGE=23,23,23,23,23;STRAND=+-;AF=0.348;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:38:15:8", - "chr16\t82180\tSniffles2.INS.2SF\tN\tCTCCTGAATGCTCCCCACACTGACCCCTTCTTCCCACCACCCTACCTCCGGGAAGGAATGCTCCCCACACTGACCCCTTCTTCCCACCACCCTACCTCCGGGGAAGGCCCCTC\t60\tGT\tIMPRECISE;SVTYPE=INS;SVLEN=111;END=82180;SUPPORT=3;COVERAGE=20,21,22,23,23;STRAND=+-;AF=0.136;STDEV_LEN=3.055;STDEV_POS=113.212;SUPPORT_LONG=0;AC=0\tGT:GQ:DR:DV\t0/0:22:19:3\t./.:.:.:.", - "chr16\t153120\tSniffles2.INS.6SF;Sniffles2.INS.5SF\tN\tACAGTGGGGAGGGGACAGTGGGGAGAGGACAGTAAGGAGGGGACCATGGGGAGGAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=56;END=153120;SUPPORT=13;COVERAGE=14,14,14,14,14;STRAND=+-;AF=0.929;STDEV_LEN=0.916;STDEV_POS=1.061;SUPPORT_LONG=0;AC=4\tGT:GQ:DR:DV\t1/1:26:1:13\t1/1:60:0:23", - "chr16\t160071\tSniffles2.INS.CSF\tN\tGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGACGGCTTGTGGGACACAGGTTGTGAGAGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTGTGAGGGTGCCCGGGATGGCTTGTGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTGTGAGACGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGAGATGCCCAGGACGGCTTGTGGGGAACAGGCTGTGAGGGTGCCCGGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGAT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=583;END=160071;SUPPORT=24;COVERAGE=28,28,28,30,27;STRAND=+-;AF=0.857;STDEV_LEN=0.953;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t./.:.:.:.\t1/1:26:4:24", - "chr16\t160091\tSniffles2.INS.CSF\tN\tTGAGAGGTGCCCGGGACGGCTTGTGGGACACAGGTTGTGAGAGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTGTGAGACGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGAGATGCCCAGGACGGCTTGTGGGGAACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGATGGCTTGTGGGGCACAGGTTG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=584;END=160091;SUPPORT=15;COVERAGE=18,19,19,20,20;STRAND=+-;AF=0.789;STDEV_LEN=1.356;STDEV_POS=10.025;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:1:4:15\t./.:.:.:.", - "chr16\t160389\tSniffles2.INS.BSF\tN\tGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGCTGCAAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGATGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCTGGGACGGCTTGTGGGGCACAGGTTGTGAGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=328;END=160389;SUPPORT=15;COVERAGE=19,20,20,21,19;STRAND=+-;AF=0.75;STDEV_LEN=0.744;STDEV_POS=0;SUPPORT_LONG=0;AC=3\tGT:GQ:DR:DV\t0/1:8:5:15\t1/1:19:5:25", - "chr16\t160753\tSniffles2.INS.9SF;Sniffles2.INS.ESF\tN\tGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCAGGATGGCTTGTGGGGCACAGGCTGCAAGAGGTGCCCAGGACGGCTTGTGGGGCACAGGTTGTGAGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=145;END=160753;SUPPORT=17;COVERAGE=20,19,19,19,20;STRAND=+-;AF=0.895;STDEV_LEN=1.612;STDEV_POS=0;SUPPORT_LONG=0;AC=4\tGT:GQ:DR:DV\t1/1:27:2:17\t1/1:60:1:27", - "chr16\t163320\tSniffles2.DEL.8FSF;Sniffles2.DEL.5DSF\tagtgagtaggagacagtggggagaggacagtggagaggggacagtgaggaggggaccatgggaaggggaccgtggagtggggacagtgaggaggggaccatagggagggga\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-111;END=163431;SUPPORT=8;COVERAGE=19,19,19,19,18;STRAND=+-;AF=0.421;STDEV_LEN=0;STDEV_POS=0;AC=2\tGT:GQ:DR:DV\t0/1:49:11:8\t0/1:28:15:7", - "chr16\t163591\tSniffles2.DEL.5ESF\tggaggggaccgtgggaaggagacagtgaggaggggaccttggggaggggacagtgaggaggggaccatggggaggggacagtgaggaggggacaatggagaggggacagtgaggaggggactgtggggagaggacagtgaggaggggaccatggggagggcacagtggggaggggagagtgaggaagggacagtgaggaggggactgtgg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-210;END=163801;SUPPORT=7;COVERAGE=22,22,22,22,21;STRAND=+-;AF=0.318;STDEV_LEN=0;STDEV_POS=0;AC=1\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:28:15:7", - "chr16\t163594\tSniffles2.DEL.92SF\tggggaccgtgggaaggagacagtgaggaggggaccttggggaggggacagtgaggaggggaccatggggaggggacagtgaggaggggacaatggagaggggacagtgaggaggggactgtggggagaggacagtgaggaggggaccatggggagggcacagtggggaggggagagtgaggaagggacagtgaggaggggactgtgggg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-209;END=163803;SUPPORT=8;COVERAGE=20,19,19,18,18;STRAND=+-;AF=0.421;STDEV_LEN=0;STDEV_POS=0;AC=1\tGT:GQ:DR:DV\t0/1:49:11:8\t./.:.:.:.", - "chr16\t164801\tSniffles2.INS.ESF\tN\tCGGGGGCGGCCGGGCGGGGGCCGGGTCGCGGGGCGGGGTTGCGGGGGCGGGGCGAGGTC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=59;END=164801;SUPPORT=8;COVERAGE=18,18,18,18,17;STRAND=+-;AF=0.444;STDEV_LEN=5.565;STDEV_POS=38.821;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:52:10:8\t./.:.:.:.", - "chr16\t164801\tSniffles2.INS.FSF\tN\tCGGGGTCGCGGGGCGGGCGGGTCGCGGGGCGGGGTCGCGGGGGCGGGCGAGGTC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=54;END=164801;SUPPORT=8;COVERAGE=21,21,21,21,21;STRAND=+-;AF=0.381;STDEV_LEN=2.16;STDEV_POS=17.972;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:43:13:8", - "chr16\t182789\tSniffles2.INS.FSF;Sniffles2.INS.10SF\tN\tTGAAACACCGTCTCTACTAAAAATACAAAAATTAGCCAGGCATAGTGGCGGGCGCCTGTAATCCCAGCTGTTCGGGAGGCTGAGGCAGGACAATCACTTAAACCAGGGAAGCAGAGGTTGCAGTGAGCTGAGATCGAGCCACTGCACTCCAGCCTGGGCGACAGACCGAGACTGTCTCAAAAAAAAGACCGGGCACGGTGGCTCACGCCTGTAATCCCACCACTTTGGGAGGCTGAGGCGGGCTGATCACGATGTCAGGAGATCTAGACCATCCTGGCCAACATGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=286;END=182789;SUPPORT=8;COVERAGE=10,10,10,10,10;STRAND=+-;AF=0.8;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;AC=4\tGT:GQ:DR:DV\t1/1:2:2:8\t1/1:33:0:12", - "chr16\t186052\tSniffles2.DEL.5FSF\tggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacgggg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-629;END=186681;SUPPORT=6;COVERAGE=11,11,11,11,11;STRAND=+-;AF=0.545;STDEV_LEN=8.5;STDEV_POS=8.5;AC=1\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:33:5:6", - "chr16\t186294\tSniffles2.DEL.60SF\tcagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacgggg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-863;END=187157;SUPPORT=5;COVERAGE=11,11,11,11,10;STRAND=+-;AF=0.455;STDEV_LEN=0.577;STDEV_POS=6.928;AC=1\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:33:6:5", - "chr16\t186313\tSniffles2.DEL.96SF\tgcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacgggggga\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-830;END=187143;SUPPORT=7;COVERAGE=10,10,10,10,10;STRAND=+-;AF=0.7;STDEV_LEN=9.815;STDEV_POS=21.245;AC=1\tGT:GQ:DR:DV\t0/1:10:3:7\t./.:.:.:.", - "chr16\t239176\tSniffles2.INS.10SF\tN\tTGTAGTCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATGGCGTGAACCCGGGAGGCGGGGCTTGCAGTGAGCCGAGATCACGCCACTACACTCGAGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAAAAGCAAACATAATGAAAATTAAAAAATTTTTAAAAAAACCCTGCAAACTTGGTGAATTTTTTACCGACTCGTGCTTTGCAAAATTCTTCATGGAACTTAGATTATATCAGGAAGATGTTAAAAAAAAAAAAAAAAAAAAGAATGCTGACTCCTAACCAAATAACTATGAAGCAGATGCTGAGAGATCAAAGGAGCAAATCTAAAAATCATCAGAGATGGGGCCTGGGGGAGAAGTATGCTGGCTTATAGATGAAAATGACTGGCTCTGTGTTGATAACTGTTGATAACTGTTGGACCTGGGTAATGGGTTTATGAGGCTGGTGTTCTCTACTTTTGTTAATGTTTGAGCATTTACATAATAAAGGTTTTTTTTTTTCATTGTATATAGAAATGGACTCACTATGTTGCCCAGGCTGGCCTCAAATTCCCGGGCTCAAGTAGTCCTCCCTCCTCTGCCTCTTGAAGTGCTGAGATTATAGGCATGAGACACCACACCTGGATCAAAGGTTAAAAAAATAATGATAAAAGAAGTAAGTTGAGGCTACTGTGGGCACACTGCCCATGGGTTAGCCCTGCTGTGCAAGGATCAGAAAAAAAAAAAAAAAAGAAATTGAAGCTAAGGCCTAATTAACTGGCTTATCTTGTAGAGTTTAGCAGAAGTGACCAAGTTTAGAGTTATACTTTATCTTTTTCTTTCTCTGCCCCCTACTTAATGAAGGACAAAAATGAGTAACATGGCTGGGTGTGGTGGCTCACGCCTGTCATCCCAGCACTTTGGGAGGCCGAGGTGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCATGGCCAACATGATGAAACCAAAATACAAAAGTTAGCCAGGCGTGGTGGCGGGCGTA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=1020;END=239176;SUPPORT=2;COVERAGE=2,2,2,2,4;STRAND=+;AF=1;STDEV_LEN=1.414;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:5:0:2\t./.:.:.:.", - "chr16\t318898\tSniffles2.INS.12SF\tN\tGCCAGGGCCTTGGTGAGAGCGGCTCTGACCCCTGGCTGTGCGGAGAGAATGCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=53;END=318898;SUPPORT=4;COVERAGE=12,12,12,12,12;STRAND=+-;AF=0.333;STDEV_LEN=2.082;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:17:8:4\t./.:.:.:.", - "chr16\t321645\tSniffles2.INS.13SF\tN\tGGATTCCAACCCACGAAGGGTTAAACCCTCTCATAGCTGGGAATATGAGGTAGAAGGCGGATGCCAACCCACGAAGGGTTAAACCCTCTCATAGCTGGGAATATGAGGTAGAAGGC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=116;END=321645;SUPPORT=8;COVERAGE=16,16,16,15,16;STRAND=+-;AF=0.5;STDEV_LEN=0.548;STDEV_POS=45.616;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:57:8:8\t./.:.:.:.", - "chr16\t362984\tSniffles2.INS.14SF\tN\tTCCCAGGACTTAGCACCGGGGGGTCTCGGGCTGCGGCTGCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=41;END=362984;SUPPORT=12;COVERAGE=20,20,20,20,19;STRAND=+-;AF=0.6;STDEV_LEN=0.408;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:46:8:12\t./.:.:.:.", - "chr16\t362990\tSniffles2.INS.12SF\tN\tGACTTAGCACCGGGGGGTCTCGGGCTGCGGCTGCTCTCCCA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=42;END=362990;SUPPORT=3;COVERAGE=7,6,6,6,5;STRAND=+-;AF=0.5;STDEV_LEN=0.577;STDEV_POS=9.238;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:21:3:3", - "chr16\t370391\tSniffles2.INS.16SF\tN\tCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCTCCTAACCCGGCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCCCTACCCCTGCCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCCCTACCCGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGGCTCTCACT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=648;END=370391;SUPPORT=12;COVERAGE=18,15,15,15,18;STRAND=+-;AF=0.8;STDEV_LEN=59.3;STDEV_POS=1.069;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:3:3:12\t./.:.:.:.", - "chr16\t370391\tSniffles2.INS.13SF\tN\tCTACCCTGCCCCGGCTCTCACCCCCTACCCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCGGCTCTCACCCCCTACCCCGGCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCGCTACCCTGCCCCCGGCTCTCACCGCTACCCCCCGGCTCTCACCCGCTACCCCGCCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCCGGCCCCCCGGCTCTCACCTCCTACCCGGCCCCGGCTCTCACCCGCTCCCCCGGCCCCCGGCTCTCACCCGCTCACCCCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCTCGGCTCTCACCCCCTACCCCGGCCCCGGCTCTCACCCCCTACCCCTGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCCGGCTCTCACCCGCTACCCCGGCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGGCTCTCACTCC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=736;END=370391;SUPPORT=7;COVERAGE=7,7,7,7,7;STRAND=+-;AF=1;STDEV_LEN=65.282;STDEV_POS=1.095;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t./.:.:.:.\t1/1:19:0:7", - "chr16\t378308\tSniffles2.INS.18SF;Sniffles2.INS.14SF\tN\tCCACTCTGACTGCCATCGCCACTCTGACTGCCATCC\t60\tGT\tPRECISE;SVTYPE=INS;SVLEN=36;END=378308;SUPPORT=8;COVERAGE=19,18,18,18,18;STRAND=+-;AF=0.444;STDEV_LEN=0.447;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t0/1:52:10:8\t0/1:3:13:4", - "chr16\t378517\tSniffles2.INS.1ASF;Sniffles2.INS.15SF\tN\tGCCATCGCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCTGACTGCCATCGCCACCCACACTGCCATCCCCACCCGCACTGCCATCGCCACCCTGACTGCCATCGCCACCCACAATGCCATCCCCACCCGCACTGCCATCGCCACCCGCACTGCCATCCCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCACACTGCCATC\t60\tGT\tPRECISE;SVTYPE=INS;SVLEN=240;END=378517;SUPPORT=3;COVERAGE=19,18,18,18,18;STRAND=+-;AF=0.167;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/0:11:15:3\t0/1:26:6:12", - "chr16\t397717\tSniffles2.INS.16SF\tN\tTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGTGGGGGTGGGGGTGTGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGTGAGGGAGTCGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGTGAGGGAGTCGGGGGGTGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGGC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=491;END=397717;SUPPORT=3;COVERAGE=3,3,3,3,3;STRAND=+-;AF=1;STDEV_LEN=2.309;STDEV_POS=5.196;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t./.:.:.:.\t1/1:8:0:3", - "chr16\t397727\tSniffles2.INS.1DSF\tN\tGGGGGGTGGGGGTGGGGGGGTGGGGGATGAGGGGGGTGGGGGTGGGGGTGGGGGGTGAGGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGGTGAGGGAGTGGGGGGTGGGGGTGGGGGGGTGGGGGGGTGGGGGATGAGGGGGGTGGGGGTGGGGGTGGGGGGGTGGGAGTGGGGGGTGGGGGTGGGGGTGGGGGGTGAGGGAGTAGGGGGGTGGGGGGTGGGGGTGGGGGGGTGAGGGGAGTGGGGGGTGGGGTGGGGGTGTGGGGGGGTGAGGGAGTGGGGGGTGGGTGTGGGGGGGGTGGGGGATGGGGGGGTGGGGGTGGGGGTGTGGGGGGGTGAGGGAGTGGGGGGTGGGGGTGGGGGTGGGGGGGTGGGGGTCGGGGGGGTGGGGGTGGGGGTGGGGGGGTGAGGGGAGTCGGGGGGTGGGGGTGGGGGGGTGGGGATCGGGGGGTGGGGGTGGGGGTGGGGGGCTGAGGGGAGTA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=506;END=397727;SUPPORT=11;COVERAGE=18,15,15,15,16;STRAND=+-;AF=0.733;STDEV_LEN=34.854;STDEV_POS=7.448;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:9:4:11\t./.:.:.:.", - "chr16\t410360\tSniffles2.DEL.99SF\ttcttccgggtgggtgcctcgtgcgctctgtgagaag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-36;END=410396;SUPPORT=7;COVERAGE=15,14,14,14,12;STRAND=+-;AF=0.5;STDEV_LEN=0;STDEV_POS=0;AC=1\tGT:GQ:DR:DV\t0/1:50:7:7\t./.:.:.:.", - "chr16\t433138\tSniffles2.INS.21SF\tN\tATTCTCCTGCCTCAGCCTCCCAAGAAGCTGGGACTACAGGCGCCCGCCACCACGCCCGGCTAATTTTTATATTTTTAGTAGAGACGAAGTTTCACCATGTTAGCCAGGATGGTCTCCATCTCCTGACCTCGTGATCTGCCCACCTCGGCCTCCCAAAGTGCTGGGATTACAGGCATGAGCTACTGTGCCCGGCCTGTCATTTTTATATATTGGGAAAGTTTTGAGTCCTTTCTCTAGGTATGTTGAAATATACAGGCATGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGTCCGAGGCGGGTGAATCACGAGGTCAGGAGATCGAGACCATCCTGGCTAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAAAAATTAGCCAGGCATGGTGGTGGGCGCCTGTAGTCCCAGCTACTCCAGAGGCTGAGGCAGGAGAATGGCGTGAACCTGAGCTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACTGAGCAAGACTCTGTCTCAAAAAAAAAAAAAAAGAAATATACAATATATTGTTGTTAAATTTAGTCACCCTACTCTGCTACCAAACATTAGAACTTATCCTTTGTCTCATTGTAATTTTTTTTTTTTTGAGATGGGGTCTCGCTCTGTCGCCCAGGCTGGAGTGCAGTGGCGCTATCTTGGCTCACTGCAACCTCCACCTCCCAGGTTCAAGCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=725;END=433138;SUPPORT=2;COVERAGE=4,4,4,4,3;STRAND=+-;AF=0.5;STDEV_LEN=0.707;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:14:2:2\t./.:.:.:.", - "chr16\t433317\tSniffles2.DEL.9CSF\tcaccgctcattgcatatttctaaccattaaccgtgctctttaccctcctgatgcttcccagcctctgatatcaatcgctctattctctacctccattagatccacttttctagctcccacataagagtaaaaacgtgatatttgtctttctctgcctgtct\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-161;END=433478;SUPPORT=2;COVERAGE=4,4,4,3,3;STRAND=+-;AF=0.5;STDEV_LEN=0;STDEV_POS=0;AC=1\tGT:GQ:DR:DV\t0/1:14:2:2\t./.:.:.:.", - "chr16\t492363\tSniffles2.INS.22SF\tN\tTCCCGGGGGACCCGAGGCCACCCCGGCCCTCCCGGGAGACCCGAGGCCGCCCAGGGCCCTCCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCGGGAGACCCGAGGCCGCCCCAAGCCCCCTCCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCGGGAGACCCGCGAGGCCGCCCAGAGCCCTCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCCGGGAGACCCGAGGCCGTCCAGGGCCCTCCCCGGGAGACCCGAGGCCGCCCAGGGCCCTTCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCGGGGAGACCCGAGGCCGCCCAGGGCCCTCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCCGGGAGACCCGGGAGCGATCCCAGGGCCCCTCCCGGGGAGACCCGAGGCCGCCCAGGGCCCTCCCCGGGAGACCCGAGGCCGCCCAGGGCCCTTCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCGGGGAGACCCGAGGCCGCCCAGGGCCCTCCCGGGAGACCCGAGGCCGCCCCAAGCCCTCCCCGGGAGACCCGAGGCCGTCCAGGGCCCTTCCCGGGGAGACCCGAGGCCGCCCAGGGCCCTCCCCGGGAGACCCGAGGCCGCCCAGGGCCCTTCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCGGGGAGACCCGAGGCCGCCCAGGGCCCTCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCCGGGAGACCCGAGGCCGCCCAGGGCCCTCCCGGGAGACCCGAGGCCGCCCAGGGCCCTCCCCGGGAGACCCGAGGCCGCCCAGGGCCCTCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCCGGGAGACCCGAGGCCGCCCAGGGCCCTCCCCGGGAGACCCGAGGCCGCCCCAGGGCCCTCCCCGGGAGACCCGAGGCCGCCCAGGGCCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=1083;END=492363;SUPPORT=2;COVERAGE=2,2,2,2,2;STRAND=+;AF=1;STDEV_LEN=4.243;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:5:0:2\t./.:.:.:.", - "chr16\t494828\tSniffles2.INS.23SF\tN\tGGGAGGTCGAGGCTGCAGAGGTGGCAGGATCACATGATCCTGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCAGAGGTGGCAGGATCACATGATCCTGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCAGAGGTGGCAGGATCACATGATCCTGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATAGCATGAGCCTGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGATCCTGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGATCCTGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGGCGGATCACATGAGCCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=2706;END=494828;SUPPORT=2;COVERAGE=2,2,2,2,2;STRAND=+;AF=1;STDEV_LEN=2.121;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:11:0:4\t./.:.:.:.", - "chr16\t504280\tSniffles2.INS.24SF\tN\tTCCCATCTCCTCCTGTACCCCCTCACCTCCTTGTGCACCCCCTCACCTCCTGTACCCCCTCACCTCCTCCTGTA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=74;END=504280;SUPPORT=7;COVERAGE=9,9,9,10,13;STRAND=+-;AF=0.778;STDEV_LEN=0;STDEV_POS=13.416;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:0:2:7\t./.:.:.:.", - "chr16\t504280\tSniffles2.INS.17SF\tN\tTCCATCTCCTCCTGTACCCCCTCACCTCCTTGTGCACCCCCTCACCTCCTGTACCCCCTCACCTCCTCTGTA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=74;END=504280;SUPPORT=4;COVERAGE=4,4,4,4,4;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t./.:.:.:.\t1/1:11:0:4", - "chr16\t504419\tSniffles2.INS.26SF\tN\tTCCTGTACCCCCTCACCTCCTCTTGCACCCCCCTTGCCTCCTGTACCCCCTCACCTCCTTGTGCACCCCTCACCTCCTGTACCCCCCTCACCTCCTCCTGTACCCGCCTCACCTCCTCCTGCACTCCCATCTCCTCCTGTACCCCCTCACCTCCTTGTGCACCCCCTCACCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=224;END=504419;SUPPORT=7;COVERAGE=9,10,11,11,13;STRAND=+-;AF=0.636;STDEV_LEN=15.566;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:20:4:7\t./.:.:.:.", - "chr16\t504419\tSniffles2.INS.18SF\tN\tTCACCTCCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCTCACCTCCTCCTGTACCCCTCACCTCCTTGTGCACCCCCTCACCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCCTCACCTCCTCCTGTACCCCCTCACCTCCTTGTGCACCCCCTCACCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCCTCACCTCCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=256;END=504419;SUPPORT=4;COVERAGE=4,4,4,4,5;STRAND=+-;AF=1;STDEV_LEN=0.707;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t./.:.:.:.\t1/1:11:0:4", - "chr16\t507740\tSniffles2.INS.28SF\tN\tCGTTTCCCGTTTTCAGTATCATCTGCCCGTTCTGAGCCATTTGCTCTCTAGCCCTACCATACAGCTGTCATCCTAAGGTCC\t60\tGT\tPRECISE;SVTYPE=INS;SVLEN=81;END=507740;SUPPORT=3;COVERAGE=14,14,14,14,16;STRAND=+;AF=0.214;STDEV_LEN=0;STDEV_POS=0.577;SUPPORT_LONG=0;AC=0\tGT:GQ:DR:DV\t0/0:0:11:3\t./.:.:.:.", - "chr16\t507831\tSniffles2.INS.19SF\tN\tTTCAGTATCATCTGCCCGTTCTGAGCCATTTGCTCTCTAGCCCTACCATACAGCTGCCATCCTAAGAGTACGTTTCCCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=81;END=507831;SUPPORT=4;COVERAGE=5,5,5,5,7;STRAND=+-;AF=0.8;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t./.:.:.:.\t1/1:1:1:4", - "chr16\t534179\tSniffles2.INS.2CSF\tN\tGGGCCGTGGTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACGGGGCCGTGTTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACGGGGCCGTGTTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACGGGGCCGTGGTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=216;END=534179;SUPPORT=15;COVERAGE=19,18,18,17,17;STRAND=+-;AF=0.833;STDEV_LEN=18.992;STDEV_POS=1.897;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:11:3:15\t./.:.:.:.", - "chr16\t534179\tSniffles2.INS.1ASF\tN\tGGGCCGTGGTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACGGGGCCGTGGTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACGGGGCCGTGGTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=162;END=534179;SUPPORT=5;COVERAGE=5,5,5,5,4;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t./.:.:.:.\t1/1:13:0:5", - "chr16\t544781\tSniffles2.INS.2DSF\tN\tCGTCTCCCCCACGCCGCCTCCCCCCACGTCGCCTCCCCCCACGTCGCCTCCCCCACGCCGCCTCCCCCACGCCGCCTCCCCCACGTCGCCGCCGTCTCCCCCACGCCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGCCGCCGTCTCCCCCACGCCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGCCGCCTCCCCCACGCCGCCTCCCCTCACGTCGCCTCCCCCACGCCGTCGCCTCCCTCCACGCCGC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=348;END=544781;SUPPORT=15;COVERAGE=17,17,17,17,17;STRAND=+-;AF=0.882;STDEV_LEN=5.196;STDEV_POS=28.465;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:21:2:15\t./.:.:.:.", - "chr16\t544781\tSniffles2.INS.1BSF\tN\tCGTCTCCCCCACGTCGCCTCCCCCCACGTCGCCTCCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCTCACGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGTCGC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=344;END=544781;SUPPORT=8;COVERAGE=8,8,8,8,8;STRAND=+-;AF=1;STDEV_LEN=4.69;STDEV_POS=25.5;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t./.:.:.:.\t1/1:22:0:8", - "chr16\t550769\tSniffles2.INS.2ESF;Sniffles2.INS.1CSF\tN\tCGGTGAGGGTCCCCGGTCGGTGAGGGCGCCCCGTCAGTGAGGGTCCCGGTCAGTGAGGGCCCCGGTCGGTGAGGGTCCCCGGTCGGTGAGGGCCCCTGTCGGTGAGGGCCCCGGTCGGTGAGGGACCCGGTCGGTGAGGGCCCCCTGTCGGTGAGGGTCCCCTGTCGGTGAGGGCCCCGGTCGGTGAGGGCCCCGGTCGGTGAGGGTCCCCTGTCGGTGAGGGTCCCCTGTCGGTGAGGGTCCCGGTCGGTGAGGGCCCCGGTCGGTGAGGGTGCCCCGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=280;END=550769;SUPPORT=21;COVERAGE=23,23,23,23,24;STRAND=+-;AF=0.913;STDEV_LEN=0.65;STDEV_POS=0;SUPPORT_LONG=0;AC=4\tGT:GQ:DR:DV\t1/1:38:2:21\t1/1:36:0:13", - "chr16\t553057\tSniffles2.INS.1DSF\tN\tTGCCCCCCACCCCTGCACAGGTGCCCCCTCCCCTACCCCGCTGCACCCACACCCAACTCGTGCCCCCCCACCCCTGCACAGGTGCCCCCTCCCCTACCCCGCTGCACCCACACCCAACTCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=121;END=553057;SUPPORT=6;COVERAGE=12,11,11,11,10;STRAND=+-;AF=0.545;STDEV_LEN=0.577;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:33:5:6", - "chr16\t553059\tSniffles2.INS.2FSF\tN\tCCCCCCCACCCCTGCACAGGTGCCCCCTCCCCTACCCCGCTGCACCCACACCCAAACTCGTGCCCCCCCACCCCTGCACAGGTGCCCCCTCCCCTACCCCGCTGCACCCACACCCAACTCGTGC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=122;END=553059;SUPPORT=9;COVERAGE=21,20,20,20,19;STRAND=+-;AF=0.45;STDEV_LEN=0.983;STDEV_POS=9.709;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:59:11:9\t./.:.:.:.", - "chr16\t571110\tSniffles2.INS.30SF\tN\tTGGCTAGCCTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTGTGTGTGTCTGGCTAGCCTGGTGCCCGTGTGTGTGTGTATGTGTGTGTGTGTGTGTGTGTCTGGCTAGCCTGGCGCCCGTGGCTAGCCTGGTGCCCGTGTGTGTGTGTATGTATGTGTCTGGCTAGCCTGGTGCCCGTGGCTAGCCTGGTGCCCGTGTGTGTGTGTGTGGGGGGGCTAGCCTTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTCTGGCTAGCGTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTGTGTGTGGCTAGCCTGGCGCCCGTGTGTGTGTGTGTGTGTGTGTCTGGGTGAGCCTGGCACCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=356;END=571110;SUPPORT=8;COVERAGE=15,13,13,13,13;STRAND=+-;AF=0.615;STDEV_LEN=3.578;STDEV_POS=15.652;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:27:5:8\t./.:.:.:.", - "chr16\t571110\tSniffles2.INS.1FSF\tN\tTGGCTAGCCTGTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTGTGTGTGTCTGGCTAGCCTGGTGCCCGTGTGTGTGTGTATGTGTGTGTGTGTGTGTGTGTCTGGCTAGCTGGCGCCCGTGGCTAGCCTGGTGCCCGTGTGTGTGTGTATGTATGTGTCTGGCTAGCCTGGTGCCCGTGGCTAGCCTGGTGCCCGTGTGTGTGTGTGTGGGGGGGGCTAGCCTTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTCTGGCTAGCGTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTGTGTGTGCTAGCCTGGCGCCCGTGTGTGTGTGTGTGTGTGTCTGGCTAGCCTGGCACCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=358;END=571110;SUPPORT=16;COVERAGE=18,17,16,16,18;STRAND=+-;AF=1;STDEV_LEN=3.78;STDEV_POS=14.714;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t./.:.:.:.\t1/1:44:0:16", - "chr16\t579380\tSniffles2.DEL.62SF\tcagagaagagacagacacacagccccgaaggtggtgcaggcacaggccctagaggtgccccgggcccagagactagagatgccccgggcccggagactagaggtgccccgggcccggaga\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-120;END=579500;SUPPORT=6;COVERAGE=11,11,11,11,10;STRAND=+-;AF=0.545;STDEV_LEN=0;STDEV_POS=0;AC=1\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:33:5:6", - "chr16\t579477\tSniffles2.DEL.A0SF\ttagaggtgccccgggcccggagactagaggtgccccgggcccggagactagaggtgccccgggcccggagact\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-73;END=579550;SUPPORT=16;COVERAGE=18,18,20,22,22;STRAND=+-;AF=0.8;STDEV_LEN=18.145;STDEV_POS=50.055;AC=2\tGT:GQ:DR:DV\t1/1:4:4:16\t./.:.:.:.", - "chr16\t579636\tSniffles2.DEL.61SF\tcccggagactagaggtgccccgggcccggagactagaggtgccccgggcccggagacttgaggtgccccggg\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-72;END=579708;SUPPORT=5;COVERAGE=11,11,11,10,10;STRAND=+-;AF=0.455;STDEV_LEN=11.5;STDEV_POS=105.434;AC=1\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:33:6:5", - "chr16\t584946\tSniffles2.DEL.A2SF\tctcccgctccccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctccccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctccccccagctgcccaccgggtccaccaacacccccaacctgtg\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-155;END=585101;SUPPORT=18;COVERAGE=23,23,23,22,21;STRAND=+-;AF=0.783;STDEV_LEN=0.775;STDEV_POS=76.512;AC=2\tGT:GQ:DR:DV\t1/1:0:5:18\t./.:.:.:.", - "chr16\t585059\tSniffles2.DEL.63SF\tcccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctccccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctccccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctc\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-156;END=585215;SUPPORT=6;COVERAGE=6,6,6,6,6;STRAND=+-;AF=1;STDEV_LEN=0.5;STDEV_POS=56.518;AC=2\tGT:GQ:DR:DV\t./.:.:.:.\t1/1:16:0:6", - "chr16\t587440\tSniffles2.INS.33SF;Sniffles2.INS.20SF\tN\tTCCCTCCCTTCACTGGGCCTGCTGCCCCAGAGTCCA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=36;END=587440;SUPPORT=16;COVERAGE=20,20,18,17,17;STRAND=+-;AF=0.889;STDEV_LEN=0;STDEV_POS=29.087;SUPPORT_LONG=0;AC=4\tGT:GQ:DR:DV\t1/1:24:2:16\t1/1:13:0:5", - "chr16\t599821\tSniffles2.INS.34SF\tN\tAAGGTTTGTTTCCTCGTGGCATCAGTCAGCGTGGATTGGGCAAGGTTTTGTTCCCTCGTGGCATCAGTCAGCGTGGACG\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=81;END=599821;SUPPORT=9;COVERAGE=10,10,10,10,8;STRAND=+-;AF=0.9;STDEV_LEN=1.169;STDEV_POS=76.821;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:15:1:9\t./.:.:.:.", - "chr16\t606435\tSniffles2.INS.35SF\tN\tCAGTCCTGCTTTTCTTGGTCCCTCAGTCCAGTGTGGGTTTCCCTGGGCTGAAGTCAAGGTGTTGGCTGACACA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=66;END=606435;SUPPORT=10;COVERAGE=8,10,10,10,14;STRAND=+-;AF=1;STDEV_LEN=1.225;STDEV_POS=97.931;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:27:0:10\t./.:.:.:.", - "chr16\t611747\tSniffles2.DEL.A4SF\tgcctgtagattcaagagcagggacagccgccctggcctgtagaatcaagagcaagggacagccgccttc\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-69;END=611816;SUPPORT=7;COVERAGE=12,12,12,12,12;STRAND=+-;AF=0.583;STDEV_LEN=0;STDEV_POS=49.641;AC=1\tGT:GQ:DR:DV\t0/1:30:5:7\t./.:.:.:.", - "chr16\t611793\tSniffles2.DEL.A8SF\taagagcaagggacagccgccttcgcctgtagaatcaagagcagggacagccgccctggcctgtagaatcaagagcacgggacagccgccctggcctgtagaatcaagagcacgggacagccgccctggcctgtagaatcaagagcagggacagccgccctggcctgtagaatcaagagcaagggacagccgccctggcctgtagaatcaagagcaagggacagccgcctttgcctgtagaat\tN\t60\tGT\tPRECISE;SVTYPE=DEL;SVLEN=-242;END=612035;SUPPORT=2;COVERAGE=12,12,12,12,12;STRAND=-;AF=0.167;STDEV_LEN=0.707;STDEV_POS=7.778;AC=0\tGT:GQ:DR:DV\t0/0:7:10:2\t./.:.:.:.", - "chr16\t611801\tSniffles2.DEL.64SF\tgggacagccgccttcgcctgtagaatcaagagcagggacagccgccctggcctgtagaatcaagagcacgggacagccgccctggcctgtagaatcaagagcacgggacagccgccctggcctgtagaatcaagagcagggacagccgccctggcctgtagaatcaagagcaagggacagccgccctggcctgtagaatcaagagcaagggacagccgcctttgcctgtagaatcaagagcag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-243;END=612044;SUPPORT=4;COVERAGE=3,4,4,4,4;STRAND=+-;AF=1;STDEV_LEN=0.707;STDEV_POS=14.142;AC=2\tGT:GQ:DR:DV\t./.:.:.:.\t1/1:11:0:4", - "chr16\t611989\tSniffles2.DEL.A5SF\tgcctgtagaatcaagagcaagggacagccgccttt\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-35;END=612024;SUPPORT=4;COVERAGE=12,12,12,12,12;STRAND=+-;AF=0.333;STDEV_LEN=0;STDEV_POS=0;AC=1\tGT:GQ:DR:DV\t0/1:17:8:4\t./.:.:.:.", - "chr16\t612007\tSniffles2.DEL.A6SF\taagggacagccgcctttgcctgtagaatcaagagcagggacagccgccctggcctgtagcatcaagagca\tN\t60\tGT\tIMPRECISE;SVTYPE=DEL;SVLEN=-70;END=612077;SUPPORT=2;COVERAGE=12,12,12,12,12;STRAND=-;AF=0.167;STDEV_LEN=1.414;STDEV_POS=26.87;AC=0\tGT:GQ:DR:DV\t0/0:7:10:2\t./.:.:.:.", - "chr16\t612374\tSniffles2.DEL.ABSF\tttcaagagcagggacagccgccctggcctgtagaatcaagagcaagggacagccgccttcgcctgtaga\tN\t60\tGT\tPRECISE;SVTYPE=DEL;SVLEN=-69;END=612443;SUPPORT=3;COVERAGE=12,12,12,12,13;STRAND=+-;AF=0.25;STDEV_LEN=0.577;STDEV_POS=5.196;AC=1\tGT:GQ:DR:DV\t0/1:4:9:3\t./.:.:.:.", - "chr16\t612593\tSniffles2.DEL.AFSF\tggacagccgccctggcctgtagaatcaagagcaagggacagccgcctttgcctgtagaatcaagagcagggacagctgccctggcctgtagcatcaagagca\tN\t60\tGT\tIMPRECISE;SVTYPE=DEL;SVLEN=-102;END=612695;SUPPORT=2;COVERAGE=12,12,12,12,13;STRAND=-;AF=0.167;STDEV_LEN=26.163;STDEV_POS=0;AC=0\tGT:GQ:DR:DV\t0/0:7:10:2\t./.:.:.:.", - "chr16\t612625\tSniffles2.DEL.AESF\taagggacagccgcctttgcctgtagaatcaagagcagggacagctgccctggcctgtagcatcaagagca\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-70;END=612695;SUPPORT=7;COVERAGE=12,12,12,12,13;STRAND=+-;AF=0.583;STDEV_LEN=0.894;STDEV_POS=2.683;AC=1\tGT:GQ:DR:DV\t0/1:30:5:7\t./.:.:.:.", - "chr16\t631728\tSniffles2.DEL.B3SF;Sniffles2.DEL.65SF\tcttctcccaccccttcactgcctctccttccatcctctcctcccaccctctcctcccatccactcctcccatccacttcttccatcct\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-88;END=631816;SUPPORT=14;COVERAGE=13,13,12,14,12;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;AC=4\tGT:GQ:DR:DV\t1/1:39:0:14\t1/1:47:0:17", - "chr16\t660943\tSniffles2.INS.3ASF\tN\tCCCCTGTTCGGCCCCTCCCCAGGCCCCCCCCCCGCCCGGCCTCGGCCCCACCCTGTTCGGCCCCTCCCCCAGCCGGCCTCGGCCCCGCCCCCTGTTCGGCCCCTCCCCAGG\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=111;END=660943;SUPPORT=16;COVERAGE=22,22,22,22,19;STRAND=+-;AF=0.727;STDEV_LEN=9.233;STDEV_POS=23.011;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:15:6:16\t./.:.:.:.", - "chr16\t660943\tSniffles2.INS.23SF\tN\tCCCCCTGTTCGGCCCCTCCCCAGGCCCCCCCCCGCCCGGCCTCAGGCCCCGCCCCCTGTTCGGCCCCTCCCCAGGCCCGGCCTCAGGCCCCGCCCCCTGTTCGGCCCCTCCCCAG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=115;END=660943;SUPPORT=17;COVERAGE=16,16,15,16,16;STRAND=+-;AF=1;STDEV_LEN=1.803;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t./.:.:.:.\t1/1:47:0:17", - "chr16\t665215\tSniffles2.DEL.B4SF;Sniffles2.DEL.66SF\tcctcagtctgcagcctgctagggacgcacggccacactcctgtctttcag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-50;END=665265;SUPPORT=18;COVERAGE=22,22,22,22,22;STRAND=+-;AF=0.818;STDEV_LEN=0;STDEV_POS=2.53;AC=4\tGT:GQ:DR:DV\t1/1:10:4:18\t1/1:60:0:22", - "chr16\t696679\tSniffles2.INS.3CSF;Sniffles2.INS.24SF\tN\tCCCACCCCAAAGCCACCATCCGCTCCCACCTCCATAGGGTTGCTGCTGCCCGCCCCTGCCCCCCAGCCCTGTCCCCCCCACCACCCAGCCTGGGCGCACACCCCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=105;END=696679;SUPPORT=16;COVERAGE=19,19,19,19,18;STRAND=+-;AF=0.842;STDEV_LEN=0.833;STDEV_POS=22.394;SUPPORT_LONG=0;AC=4\tGT:GQ:DR:DV\t1/1:14:3:16\t1/1:27:0:10", - "chr16\t746237\tSniffles2.DEL.67SF\tgaggtgggttcactgcgggtctgcctggctgggcagcaggagaggaggtgggttcactgcgggtctgcctggctgggcagcaggagaggaggtgggttcactgcaggtctgtctggctgggcagcaggaggggagaggtggggtcactgcgggtctgcagggctgcaggaggggagaggtggggtcactgcaggtctgtctggctgggcagcaggagaggaggtgggttcactgcaggtctgtctgggcgggctgcaggagaggaggtggggtcactgcgggtctgtctgggcgggctgcaggagag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-307;END=746544;SUPPORT=7;COVERAGE=13,13,13,13,11;STRAND=+-;AF=0.538;STDEV_LEN=0;STDEV_POS=0;AC=1\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:40:6:7", - "chr16\t746243\tSniffles2.DEL.B7SF\tggttcactgcgggtctgcctggctgggcagcaggagaggaggtgggttcactgcgggtctgcctggctgggcagcaggagaggaggtgggttcactgcaggtctgtctggctgggcagcaggaggggagaggtggggtcactgcgggtctgcagggctgcaggaggggagaggtggggtcactgcaggtctgtctggctgggcagcaggagaggaggtgggttcactgcaggtctgtctgggcgggctgcaggagaggaggtggggtcactgcgggtctgtctgggcgggctgcaggagaggaggt\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-306;END=746549;SUPPORT=6;COVERAGE=21,21,21,21,21;STRAND=+-;AF=0.286;STDEV_LEN=0;STDEV_POS=0;AC=1\tGT:GQ:DR:DV\t0/1:18:15:6\t./.:.:.:.", - "chr16\t760502\tSniffles2.INS.3ESF;Sniffles2.INS.25SF\tN\tAGCCATGAAACCTGGGCCCGGGCTCCCACTCACACCCCACCCCCACCCAGGGCAGCCGTGAAACCTGGGCCCTGGGCTCCCACCCACGCCCCACACCCACCCAGGGC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=107;END=760502;SUPPORT=19;COVERAGE=20,20,21,21,23;STRAND=+-;AF=0.905;STDEV_LEN=0.674;STDEV_POS=4.221;SUPPORT_LONG=0;AC=4\tGT:GQ:DR:DV\t1/1:32:2:19\t1/1:44:0:16", - "chr16\t763776\tSniffles2.INS.3FSF\tN\tGCATCCCATCCCCCGTCCCCTCCCCCACACCCCTCCCCCACCCCCACGTCCCCTCCCCACCCCTCCCCCACACCCTCCCCCACCCCTCCCCATGTCCCCTCCCCTACCTCCTCCCCCCGCGTCCCCTCCCCCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=133;END=763776;SUPPORT=21;COVERAGE=22,22,22,22,23;STRAND=+-;AF=0.955;STDEV_LEN=1.092;STDEV_POS=1.391;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:48:1:21\t./.:.:.:.", - "chr16\t763776\tSniffles2.INS.26SF\tN\tGCATCCCATCCCCCGTCCCCTCCCCCACACCCCTCCCCCACCCCCACGTCCCCTCCCCACCCCTCCCCCACACCCTCCCCCACCCCTCCCCATGTCCCCTCCCCTACCTCCTCCCCCCGCATCCCCTCCCCCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=133;END=763776;SUPPORT=20;COVERAGE=19,19,20,20,20;STRAND=+-;AF=1;STDEV_LEN=0.789;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t./.:.:.:.\t1/1:55:0:20" - ], - "test_1_reheader.vcf.gz.tbi", - "test_2_reheader.vcf.gz.tbi", - "project.vcf.gz.tbi", [ "versions.yml:md5,2188f00d20a376929f9f35f824e94667", "versions.yml:md5,2188f00d20a376929f9f35f824e94667", @@ -1001,7 +727,7 @@ "nf-test": "0.8.4", "nextflow": "24.04.3" }, - "timestamp": "2024-09-03T15:25:42.491226738" + "timestamp": "2024-09-06T11:29:28.671005178" }, "1 sample - [bam, bai], fasta, fai, [] -stub": { "content": [ @@ -1096,7 +822,7 @@ "nf-test": "0.8.4", "nextflow": "24.04.3" }, - "timestamp": "2024-09-03T12:26:40.148741281" + "timestamp": "2024-09-05T19:07:34.521780648" }, "1 sample - [bam, bai], fasta, fai, bed -stub": { "content": [ @@ -1191,7 +917,7 @@ "nf-test": "0.8.4", "nextflow": "24.04.3" }, - "timestamp": "2024-09-03T12:28:23.511767701" + "timestamp": "2024-09-05T19:07:45.413681853" }, "1 sample - [bam, bai], fasta, fai, bed": { "content": [ @@ -1432,84 +1158,7 @@ "##INFO=", "##bcftools_viewVersion=1.20+htslib-1.20" ], - [ - "#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO\tFORMAT\ttest", - "chr16\t81884\tSniffles2.INS.3SF\tN\tCTCCAGGAAGCCCTCCTGAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTATCTCCGGAAGCCCTCCTGAATGCTCCCCACGCTGGCCCCTTCTTCCCACCACCCTACCTCCGGGAAGGCCTCCTGAATGCTCCCCACGCTGGCCCCTTCTTCCCACCACCCTACCTCCGGGAAGCCCTCCTGAATGCTCCCCACGCTGGCCCCTTCTTCCCACCACCCTACCTCCAGGAAGCCCTCCTGAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTATCTCCGGGAAGGCCTCCTGAATGCTCCCCACACTGACCCCTTCTTCCCACCACCCTACCTCCGGGAAGGCCTCCTGAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTAT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=398;END=81884;SUPPORT=13;COVERAGE=22,23,24,23,23;STRAND=+-;AF=0.542;STDEV_LEN=0;STDEV_POS=62.598;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:60:11:13", - "chr16\t82169\tSniffles2.INS.1SF\tN\tCTCCGGGAAGGCCTCCTGAATGCTCCCCACACTGACCCCTTCTTCCCACCACCCTAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=57;END=82169;SUPPORT=8;COVERAGE=23,23,23,23,23;STRAND=+-;AF=0.348;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:38:15:8", - "chr16\t153120\tSniffles2.INS.4SF\tN\tACAGTGGGGAGGGGACAGTGGGGAGAGGACAGTAAGGAGGGGACCATGGGGAGGAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=56;END=153120;SUPPORT=23;COVERAGE=22,23,23,23,23;STRAND=+-;AF=1;STDEV_LEN=0.48;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:60:0:23", - "chr16\t160071\tSniffles2.INS.9SF\tN\tGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGACGGCTTGTGGGACACAGGTTGTGAGAGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTGTGAGGGTGCCCGGGATGGCTTGTGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTGTGAGACGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGAGATGCCCAGGACGGCTTGTGGGGAACAGGCTGTGAGGGTGCCCGGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGATGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGCTGCAAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGATGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCTGGGACGGCTTGTGGGGCACAGGTTGTGAGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=911;END=160071;SUPPORT=25;COVERAGE=28,28,28,30,27;STRAND=+-;AF=0.893;STDEV_LEN=1.05;STDEV_POS=14.7;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:39:3:25", - "chr16\t160753\tSniffles2.INS.BSF\tN\tGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCAGGATGGCTTGTGGGGCACAGGCTGCAAGAGGTGCCCAGGACGGCTTGTGGGGCACAGGTTGTGAGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=145;END=160753;SUPPORT=27;COVERAGE=30,28,28,27,27;STRAND=+-;AF=0.964;STDEV_LEN=0.352;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:60:1:27", - "chr16\t163110\tSniffles2.DEL.4DSF\tcaccctgccgccatgtctctgaccaagacttaggggaccatcattgtgtccatgtgggccaagatctccacgcaggccgacaccatcggcaccgagactctggagaggtgagtgtcagatgggactgccagagggactgggtgggaggccaggtatgtgagtggggacagtggggagcgggcagtggggaggggaccgtggggaggggacagtgagtaggagacagtggggagaggacagtggagaggggacagtgaggaggggaccatgggaaggggaccgtggagtggggacagtgaggaggggaccatagggagggga\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-321;END=163431;SUPPORT=7;COVERAGE=23,22,22,22,22;STRAND=+-;AF=0.318;STDEV_LEN=0.894;STDEV_POS=10.733\tGT:GQ:DR:DV\t0/1:28:15:7", - "chr16\t164801\tSniffles2.INS.CSF\tN\tCGGGGTCGCGGGGCGGGCGGGTCGCGGGGCGGGGTCGCGGGGGCGGGCGAGGTC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=54;END=164801;SUPPORT=8;COVERAGE=21,21,21,21,21;STRAND=+-;AF=0.381;STDEV_LEN=2.16;STDEV_POS=17.972;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:43:13:8", - "chr16\t182789\tSniffles2.INS.DSF\tN\tTGAAACACCGTCTCTACTAAAAATACAAAAATTAGCCAGGCATAGTGGCGGGCGCCTGTAATCCCAGCTGTTCGGGAGGCTGAGGCAGGACAATCACTTAAACCAGGGAAGCAGAGGTTGCAGTGAGCTGAGATCGAGCCACTGCACTCCAGCCTGGGCGACAGACCGAGACTGTCTCAAAAAAAAGACCGGGCACGGTGGCTCACGCCTGTAATCCCACCACTTTGGGAGGCTGAGGCGGGCTGATCACGATGTCAGGAGATCTAGACCATCCTGGCCAACATGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=286;END=182789;SUPPORT=12;COVERAGE=13,12,12,12,12;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:33:0:12", - "chr16\t186052\tSniffles2.DEL.4ESF\tggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacgggg\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-646;END=186698;SUPPORT=11;COVERAGE=11,11,11,11,11;STRAND=+-;AF=1;STDEV_LEN=113.878;STDEV_POS=251.483\tGT:GQ:DR:DV\t1/1:30:0:11", - "chr16\t362990\tSniffles2.INS.FSF\tN\tGACTTAGCACCGGGGGGTCTCGGGCTGCGGCTGCTCTCCCA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=42;END=362990;SUPPORT=3;COVERAGE=7,6,6,6,5;STRAND=+-;AF=0.5;STDEV_LEN=0.577;STDEV_POS=9.238;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:21:3:3", - "chr16\t370391\tSniffles2.INS.10SF\tN\tCTACCCTGCCCCGGCTCTCACCCCCTACCCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCGGCTCTCACCCCCTACCCCGGCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCGCTACCCTGCCCCCGGCTCTCACCGCTACCCCCCGGCTCTCACCCGCTACCCCGCCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCCGGCCCCCCGGCTCTCACCTCCTACCCGGCCCCGGCTCTCACCCGCTCCCCCGGCCCCCGGCTCTCACCCGCTCACCCCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCTCGGCTCTCACCCCCTACCCCGGCCCCGGCTCTCACCCCCTACCCCTGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCCGGCTCTCACCCGCTACCCCGGCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGGCTCTCACTCC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=736;END=370391;SUPPORT=7;COVERAGE=7,7,7,7,7;STRAND=+-;AF=1;STDEV_LEN=65.282;STDEV_POS=1.095;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:19:0:7", - "chr16\t378308\tSniffles2.INS.11SF\tN\tCCACTCTGACTGCCATCGCCACTCTGACTGCCATCC\t60\tGT\tPRECISE;SVTYPE=INS;SVLEN=36;END=378308;SUPPORT=4;COVERAGE=17,17,17,18,18;STRAND=+-;AF=0.235;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:3:13:4", - "chr16\t378517\tSniffles2.INS.12SF\tN\tGCCATCGCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCTGACTGCCATCGCCACCCACACTGCCATCCCCACCCGCACTGCCATCGCCACCCTGACTGCCATCGCCACCCACAATGCCATCCCCACCCGCACTGCCATCGCCACCCGCACTGCCATCCCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCACACTGCCATC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=240;END=378517;SUPPORT=12;COVERAGE=17,18,18,18,18;STRAND=+-;AF=0.667;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:26:6:12", - "chr16\t397717\tSniffles2.INS.13SF\tN\tTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGTGGGGGTGGGGGTGTGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGTGAGGGAGTCGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGTGAGGGAGTCGGGGGGTGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGGC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=491;END=397717;SUPPORT=3;COVERAGE=3,3,3,3,3;STRAND=+-;AF=1;STDEV_LEN=2.309;STDEV_POS=5.196;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:8:0:3", - "chr16\t504280\tSniffles2.INS.14SF\tN\tTCCATCTCCTCCTGTACCCCCTCACCTCCTTGTGCACCCCCTCACCTCCTGTACCCCCTCACCTCCTCTGTATACCACCTCCTCCTGTACCCCCTCACCTCCTCTTGCACCCCCCTTGCCTCCTGTACCCCCTCACCTCCTTGTGCACCCCCTCACCTCCTGTACCCCCTCACCTCCTCCTGTACCCGCCTCACCTCCTCCTGCACTCCCATCTCCCCTGTACCCCCTCACCTCCCTTGTGCACCCCCTCACCTCCTGTACCCCCTCACTCCTCCTCTGTACCCCTCACCTCCTCCTGTA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=331;END=504280;SUPPORT=4;COVERAGE=4,4,4,4,4;STRAND=+-;AF=1;STDEV_LEN=1.414;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:11:0:4", - "chr16\t507831\tSniffles2.INS.15SF\tN\tTTCAGTATCATCTGCCCGTTCTGAGCCATTTGCTCTCTAGCCCTACCATACAGCTGCCATCCTAAGAGTACGTTTCCCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=81;END=507831;SUPPORT=4;COVERAGE=5,5,5,5,7;STRAND=+-;AF=0.8;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:1:1:4", - "chr16\t534179\tSniffles2.INS.16SF\tN\tGGGCCGTGGTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACGGGGCCGTGGTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACGGGGCCGTGGTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=162;END=534179;SUPPORT=5;COVERAGE=5,5,5,5,4;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:13:0:5", - "chr16\t544781\tSniffles2.INS.17SF\tN\tCGTCTCCCCCACGTCGCCTCCCCCCACGTCGCCTCCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCTCACGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGTCGC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=344;END=544781;SUPPORT=8;COVERAGE=8,8,8,8,8;STRAND=+-;AF=1;STDEV_LEN=4.69;STDEV_POS=25.5;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:22:0:8", - "chr16\t550769\tSniffles2.INS.18SF\tN\tCGGTGAGGGTCCCCGGTCGGTGAGGGCGCCCCGTCAGTGAGGGTCCCGGTCAGTGAGGGCCCCGGTCGGTGAGGGTCCCCGGTCGGTGAGGGCCCCTGTCGGTGAGGGCCCCGGTCGGTGAGGGACCCGGTCGGTGAGGGCCCCCTGTCGGTGAGGGTCCCCTGTCGGTGAGGGCCCCGGTCGGTGAGGGCCCCGGTCGGTGAGGGTCCCCTGTCGGTGAGGGTCCCCTGTCGGTGAGGGTCCCGGTCGGTGAGGGCCCCGGTCGGTGAGGGTGCCCCGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=280;END=550769;SUPPORT=13;COVERAGE=13,13,13,13,13;STRAND=+-;AF=1;STDEV_LEN=1;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:36:0:13", - "chr16\t553057\tSniffles2.INS.19SF\tN\tTGCCCCCCACCCCTGCACAGGTGCCCCCTCCCCTACCCCGCTGCACCCACACCCAACTCGTGCCCCCCCACCCCTGCACAGGTGCCCCCTCCCCTACCCCGCTGCACCCACACCCAACTCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=121;END=553057;SUPPORT=6;COVERAGE=12,11,11,11,10;STRAND=+-;AF=0.545;STDEV_LEN=0.577;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:33:5:6", - "chr16\t571110\tSniffles2.INS.1BSF\tN\tTGGCTAGCCTGTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTGTGTGTGTCTGGCTAGCCTGGTGCCCGTGTGTGTGTGTATGTGTGTGTGTGTGTGTGTGTCTGGCTAGCTGGCGCCCGTGGCTAGCCTGGTGCCCGTGTGTGTGTGTATGTATGTGTCTGGCTAGCCTGGTGCCCGTGGCTAGCCTGGTGCCCGTGTGTGTGTGTGTGGGGGGGGCTAGCCTTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTCTGGCTAGCGTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTGTGTGTGCTAGCCTGGCGCCCGTGTGTGTGTGTGTGTGTGTCTGGCTAGCCTGGCACCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=358;END=571110;SUPPORT=16;COVERAGE=18,17,16,16,18;STRAND=+-;AF=1;STDEV_LEN=3.78;STDEV_POS=14.714;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:44:0:16", - "chr16\t579380\tSniffles2.DEL.4FSF\tcagagaagagacagacacacagccccgaaggtggtgcaggcacaggccctagaggtgccccgggcccagagactagagatgccccgggcccggagactagaggtgccccgggcccggaga\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-120;END=579500;SUPPORT=11;COVERAGE=11,11,11,11,10;STRAND=+-;AF=1;STDEV_LEN=0.488;STDEV_POS=0\tGT:GQ:DR:DV\t1/1:30:0:11", - "chr16\t585059\tSniffles2.DEL.50SF\tcccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctccccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctccccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctc\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-156;END=585215;SUPPORT=6;COVERAGE=6,6,6,6,6;STRAND=+-;AF=1;STDEV_LEN=0.5;STDEV_POS=56.518\tGT:GQ:DR:DV\t1/1:16:0:6", - "chr16\t587440\tSniffles2.INS.1CSF\tN\tTCCCTCCCTTCACTGGGCCTGCTGCCCCAGAGTCCA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=36;END=587440;SUPPORT=5;COVERAGE=5,5,5,5,5;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=41.569;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:13:0:5", - "chr16\t611801\tSniffles2.DEL.51SF\tgggacagccgccttcgcctgtagaatcaagagcagggacagccgccctggcctgtagaatcaagagcacgggacagccgccctggcctgtagaatcaagagcacgggacagccgccctggcctgtagaatcaagagcagggacagccgccctggcctgtagaatcaagagcaagggacagccgccctggcctgtagaatcaagagcaagggacagccgcctttgcctgtagaatcaagagcag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-243;END=612044;SUPPORT=4;COVERAGE=3,4,4,4,4;STRAND=+-;AF=1;STDEV_LEN=0.707;STDEV_POS=14.142\tGT:GQ:DR:DV\t1/1:11:0:4", - "chr16\t631728\tSniffles2.DEL.52SF\tcttctcccaccccttcactgcctctccttccatcctctcctcccaccctctcctcccatccactcctcccatccacttcttccatcct\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-88;END=631816;SUPPORT=17;COVERAGE=17,17,17,17,16;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t1/1:47:0:17", - "chr16\t660943\tSniffles2.INS.1FSF\tN\tCCCCCTGTTCGGCCCCTCCCCAGGCCCCCCCCCGCCCGGCCTCAGGCCCCGCCCCCTGTTCGGCCCCTCCCCAGGCCCGGCCTCAGGCCCCGCCCCCTGTTCGGCCCCTCCCCAG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=115;END=660943;SUPPORT=17;COVERAGE=16,16,15,16,16;STRAND=+-;AF=1;STDEV_LEN=1.803;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:47:0:17", - "chr16\t665215\tSniffles2.DEL.53SF\tcctcagtctgcagcctgctagggacgcacggccacactcctgtctttcag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-50;END=665265;SUPPORT=22;COVERAGE=19,21,22,22,21;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t1/1:60:0:22", - "chr16\t696679\tSniffles2.INS.20SF\tN\tCCCACCCCAAAGCCACCATCCGCTCCCACCTCCATAGGGTTGCTGCTGCCCGCCCCTGCCCCCCAGCCCTGTCCCCCCCACCACCCAGCCTGGGCGCACACCCCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=105;END=696679;SUPPORT=10;COVERAGE=11,10,10,10,10;STRAND=+-;AF=1;STDEV_LEN=0.408;STDEV_POS=1.633;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:27:0:10", - "chr16\t746237\tSniffles2.DEL.54SF\tgaggtgggttcactgcgggtctgcctggctgggcagcaggagaggaggtgggttcactgcgggtctgcctggctgggcagcaggagaggaggtgggttcactgcaggtctgtctggctgggcagcaggaggggagaggtggggtcactgcgggtctgcagggctgcaggaggggagaggtggggtcactgcaggtctgtctggctgggcagcaggagaggaggtgggttcactgcaggtctgtctgggcgggctgcaggagaggaggtggggtcactgcgggtctgtctgggcgggctgcaggagag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-307;END=746544;SUPPORT=7;COVERAGE=13,13,13,13,11;STRAND=+-;AF=0.538;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:40:6:7", - "chr16\t760502\tSniffles2.INS.21SF\tN\tAGCCATGAAACCTGGGCCCGGGCTCCCACTCACACCCCACCCCCACCCAGGGCAGCCGTGAAACCTGGGCCCTGGGCTCCCACCCACGCCCCACACCCACCCAGGGC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=107;END=760502;SUPPORT=16;COVERAGE=16,16,16,16,17;STRAND=+-;AF=1;STDEV_LEN=0.518;STDEV_POS=11.667;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:44:0:16", - "chr16\t763776\tSniffles2.INS.22SF\tN\tGCATCCCATCCCCCGTCCCCTCCCCCACACCCCTCCCCCACCCCCACGTCCCCTCCCCACCCCTCCCCCACACCCTCCCCCACCCCTCCCCATGTCCCCTCCCCTACCTCCTCCCCCCGCATCCCCTCCCCCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=133;END=763776;SUPPORT=20;COVERAGE=19,19,20,20,20;STRAND=+-;AF=1;STDEV_LEN=0.789;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:55:0:20", - "chr16\t767762\tSniffles2.INS.26SF\tN\tGGGGCACGTGGAGGGGTCGCGTGGAGGAGGGGCGCGTGGAGGGGGCGCGTGGAGGAGGAGGGGCGCATGGGGGGGTGTGGAGGGCACATGGGGGTGCGTGGGGGGGCGTGTGGGGGGGTGCGTGGAGGA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=130;END=767762;SUPPORT=10;COVERAGE=15,15,15,15,14;STRAND=+-;AF=0.667;STDEV_LEN=1.835;STDEV_POS=27.386;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:22:5:10", - "chr16\t767829\tSniffles2.INS.25SF\tN\tGGTGTGGAGGGGGGCGCGTGGGGGTGTGTGGGGGGGGGCACGTGGAGGGGGCGTGTGGGGGGGTGCGTGGAGGAGGGGCGCGTGGAGGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=89;END=767829;SUPPORT=4;COVERAGE=15,15,15,15,14;STRAND=+-;AF=0.267;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:9:11:4", - "chr16\t769171\tSniffles2.INS.27SF\tN\tCCCCGGCCCCGGCCCCAGCCCCGGCCCCACCCCGGCCCCAGCCCCAGCCCCAGCCCCAGCCCCACCCCCGGCCCCAGCCCCAGCCCCAGCCCCAGCCCCGGCCCCACCCCCACCCCCGGCCCCGGCCCCGGCCCCACCCCCGGCCCCGGCCCCGGCCCCACCCCCGGCCCCGGCCCCACCCCCGGCCCCGGCCCCAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=197;END=769171;SUPPORT=6;COVERAGE=14,13,13,13,13;STRAND=+-;AF=0.462;STDEV_LEN=0.816;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:40:7:6", - "chr16\t795446\tSniffles2.INS.28SF\tN\tCCCCCGTGCTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCTGTGCTGCCCGTGTGGCTGCCCCCGGCCCCGCGCCCTTCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=87;END=795446;SUPPORT=8;COVERAGE=13,13,13,13,13;STRAND=+-;AF=0.615;STDEV_LEN=0.577;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:27:5:8", - "chr16\t795594\tSniffles2.INS.29SF\tN\tGCTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCTTCTCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCTTCTCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCTGTGCTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCTCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCTTCTCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCGCCCCGCCCCGCCCCTCCCCTCCCCCCCCCCCGC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=621;END=795594;SUPPORT=5;COVERAGE=13,13,13,13,13;STRAND=+-;AF=0.385;STDEV_LEN=2.646;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:27:8:5", - "chr16\t818868\tSniffles2.INS.2ASF\tN\tTGGTGAAGACTGTAGTGATGGTGATGATGGTGAAGACTGTAGTGATGATGGTGGTGAAGACTGTAGTGATGTTGATATTGGTGATGAAGACTATAGTGATAGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTAGTGATGGTGATGATGATGGTGAAGACTGTAGTGATGGTGATGATGGTGAAGACTGTAGCGATGATGGTGAACACTGTAGTGATGTTGATATTGGTGATGAAGACTATAGTGATGGTGATGATAGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTGTAGTGATGGTGATGAGGTGAGACTATCGTGATGGTGATGATAATGGTGAAGACTATAGTGATGTTGATGTCGGTGGTGAAGACTGTAGTGATGGTGATGATAGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTGTAGTGATGGTGATGATGGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTATAGTGATGATGGTGAAGACTGTAGTGATGGTGATGATAGTGGTGAAGACTGTAGTGATGTTAATGGTGAAGGCTATAGTGATGTTGATGGTGGTGAAGACTGTAGCAATGGTTATGATGTTGGTGAAGACAATAGTGATGGTGATGATGGTGAAGACTATAGTGATGGTGATGATGGTGGTGAAGACTGTAGTGATGGTGATGATAGTGGTGAGGACTGTTAGTGATGATAGTGGTGAAGACTGTAGTGATGATGATGGTGAAGACTATAATGATGATGGTGAAGACCGCCGTGATGGTGATGATGGTGAAGACTGTAGCAATGATGATGGTGAAGACTATAGTGATGTTGAGTTGGTGGTGAAGACTGTAGCGATGGTGATGATGATGGTGAAGACTATAGTGATGATGATGTTGAAGACTATAGTGATGATGATGGTGAAGACCGCCGTGATGGTGATGATGGTGAAGACTGTAGCGATGATGATGGTGAAGACTATAGTGATGCTGATGTTGGTGGTGAAGACTGTAGTGATGGTGATGATGATGGTGAAGACTATAGTGATGATGATGGTGAAGACTATAGTGATGATGATGTGAAGACCGCCGTGATGGTGATGATGGTGAAGACTGTAGCGATGATGATGGTGAAGACTATAGTGATGTTGATGTTGG\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=1173;END=818868;SUPPORT=12;COVERAGE=13,12,12,12,12;STRAND=+-;AF=1;STDEV_LEN=90.396;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:33:0:12", - "chr16\t824382\tSniffles2.INS.2BSF\tN\tTAGGCCCACGACGGCCAGCAGCGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGGAGCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=150;END=824382;SUPPORT=2;COVERAGE=3,3,3,3,2;STRAND=-;AF=0.667;STDEV_LEN=0.707;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:4:1:2", - "chr16\t824874\tSniffles2.INS.2DSF\tN\tCGTCCCGTCCGCGGCACCACCGTCCCATCTGTGGCACCAT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=40;END=824874;SUPPORT=2;COVERAGE=3,2,2,2,2;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:5:0:2", - "chr16\t828906\tSniffles2.DEL.55SF\tgcccactggggcccacatcccgcccactgggaccgacatccc\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-42;END=828948;SUPPORT=2;COVERAGE=2,2,2,2,2;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t1/1:5:0:2", - "chr16\t886663\tSniffles2.INS.30SF\tN\tCCACCCTAGGCCCCCGGCGTTCCCCAGGCCCCTCCCACCCTAGGCCCCCGGCGTTCCCCAGGCCCCTCCCACCCTAGGCCCCCGGCGTTCCCCAGGCCCCTCCCACCCTAGGCCCCGGCGTTCCCCAGGCCCCT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=133;END=886663;SUPPORT=10;COVERAGE=10,10,10,10,11;STRAND=+-;AF=1;STDEV_LEN=0.983;STDEV_POS=48.673;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:27:0:10", - "chr16\t894215\tSniffles2.INS.31SF\tN\tCTGGCTGTCCGCCCACCCATCCCCTGTCCACCGGACCGTCCGCCCACCCGTCCCCATGTCCATCAGACCGTCCGTCCACCTGTCCCCCTGTCCCCTGTCCACCGGACCATTCGCCCACCCATCCCCCTGTCCACCTGGCCATCCGCCCACCTGTCTCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCACTGGACTGTCCGCCCACCTGTCCCCCTGTCCCCTGTCCACCGGACCGTCTGCCCACCCGTCCCCCTGTCCACCTGGCCATCCGCCCACCCATCCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCAGGTCCCCCTGTCCAGCGGACCGTCCACCCACCCGTCCCCCTGTCCACTGGACCGTCCGCCCACCTGTCCCCCTGTCCACCTGGCAGTGCGCCCACCCATCCCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCAGCGGACCGTCCACCCACCT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=521;END=894215;SUPPORT=17;COVERAGE=17,17,17,17,17;STRAND=+-;AF=1;STDEV_LEN=57.393;STDEV_POS=5.5;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:47:0:17", - "chr16\t895843\tSniffles2.INS.33SF\tN\tACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCATGGTCCACAGACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCACGGTCCACAGACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCACGGTCCACAGCCACACGCAGGCTGCACGGTCCACAGACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCACGGTCCACACACACGCCTCGGAGGGGTTGTGAGGCTCAGCCAT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=295;END=895843;SUPPORT=10;COVERAGE=17,16,16,16,14;STRAND=+-;AF=0.625;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:32:6:10", - "chr16\t896059\tSniffles2.INS.32SF\tN\tGCAGGCTGCACGGTCCACAGACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=58;END=896059;SUPPORT=6;COVERAGE=17,16,16,16,14;STRAND=+-;AF=0.375;STDEV_LEN=0.577;STDEV_POS=110.531;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:32:10:6", - "chr16\t903595\tSniffles2.INS.34SF\tN\tGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTATCTCTGCTGTGTGGTGGTGACCTTTGCACTGCCCGTGGGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCCGTCTCTGCTGTGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCCACAGGACGCCTGTCTCTGCTGTGTGGTGGTGACCTTTGCACTGCCCGTGGGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCTGTCTCTGCTGTGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCCGTCTCTGCTGCGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=600;END=903595;SUPPORT=6;COVERAGE=8,8,8,8,8;STRAND=+-;AF=0.75;STDEV_LEN=0.577;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:3:2:6", - "chr16\t949510\tSniffles2.DEL.5ASF\taatgacagagtcagccaacgacagagtcagagccaacgacagagtcagagacaatgacagagtcagagacaacgacagagtcagagacgacagagtcagagacgacagagtcagagccaatgacagagtcagccaatgacagagtcagagccaacgacagagtcagccaatgacagagtcagagacaacgacagagtcagagacaacgacagagtcagagacgacagagtcagagacgacagagtcagagccaatgacagagtcagccaatgacagagtcagagccaacgacagagtcagccaatgacagagtcagagacaacgacagagttagagacaacgacagagtcagccaaggacagcgtcagccaacgacagaatcagagacaacgacagagtcagccaacgacagagtcagagccaatgagagtcagagccaacgacagagtcagagacgacagagtcagagccaacgacagagtcagccaacgacagagtcagagccaacgacagagtcagccaacgacagagtcagagccaacgacagagtcagccaacgacagagtcagagacaacgacagagtcagagccaacgacagagtcagagacgaaagactcagagccaatgacagagtcagagccaatgacagagtcagccaacgacagagtcagagccaacgacagagtcagccaatgacagagtcagagacagcgacagagttagagacaat\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-731;END=950241;SUPPORT=15;COVERAGE=22,22,22,23,22;STRAND=+-;AF=0.682;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:28:7:15", - "chr16\t950488\tSniffles2.INS.36SF\tN\tCAACGACAGAGTCAGAGACAACGACAGAGTCAGAGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=36;END=950488;SUPPORT=14;COVERAGE=22,23,23,23,23;STRAND=+-;AF=0.609;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:50:9:14", - "chr16\t952880\tSniffles2.DEL.5CSF\ttccacacagacacccaccccaaaccagcctcctacacgtccacacagacacccaccccaaaccagcctcctgcacgtccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacacg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-178;END=953058;SUPPORT=16;COVERAGE=24,24,25,25,25;STRAND=+-;AF=0.64;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:45:9:16", - "chr16\t953293\tSniffles2.DEL.5DSF\tcaaaccagcctcctacacgtccacacagacacccaccccaaaccagcttcctacacgttcacacagacacgg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-72;END=953365;SUPPORT=15;COVERAGE=24,25,25,25,25;STRAND=+-;AF=0.6;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:58:10:15", - "chr16\t953349\tSniffles2.DEL.60SF\tgttcacacagacacggaccccaaaccagcctcctacacgtccacacagacacccaccccaaaccagcctcctacacgttcacacagacacggaccccacaccagcctcctacacgtccacacagacacccaccccaaaccagcctcctgcacgtccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacacgtccacacagacacccactccaaaccagcctcctacacgtccacacagacaccccaaaccagcctcctacatgtccacacagacacccaccccaaaccagcctcctacatgtccacacagacacccaccccaaaccagcctcctacatgtccacacagacacccaccccaaaccagcctcctacat\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-440;END=953789;SUPPORT=9;COVERAGE=25,25,25,25,25;STRAND=+-;AF=0.36;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:45:16:9", - "chr16\t953507\tSniffles2.DEL.5ESF\tacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacacgtccacacag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-106;END=953613;SUPPORT=15;COVERAGE=25,25,25,25,25;STRAND=+-;AF=0.6;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:58:10:15", - "chr16\t954972\tSniffles2.INS.37SF\tN\tCTAAGCGAACCAGACACGTTACATAAAATGCGTGCCTGCAGCAGACGGGGTCTGTGCACACACACACACACAACCAGACACGTTACATAAAATGCGTGCCTGCTGCAGACGTGGTGTGTGTATACACACACACACATCTAAGTAAACCAGACACGTTACATAAAATGCGTGCCCGCAGCAGACGTAGTGTGTGCATCCACACACACACATCTAAGTAAACTAGACACGTTACATAAAATGCGTGCCCACAGCAGACGCGGTGTGTGCGTACACACACACACATCTAAGTAAACTAGACACGTTACATAAAATGCGTGCCCGCAGCAGACGCAGTGTGTGCATACACATCTAAGTG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=355;END=954972;SUPPORT=15;COVERAGE=25,24,24,26,26;STRAND=+-;AF=0.625;STDEV_LEN=0.333;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:48:9:15", - "chr16\t955473\tSniffles2.INS.38SF\tN\tACACACACACACACACATCTAAGTGAACCAGACACGTTACATAAAATGCGTGCCTGCAGCAGATGCGGTGTGTGCATACACACACACACATCTAAGTAAACCAGACACGTTACATAAAATGCGTGCCTGCAGCAGACGTAGTGTGTGCATCCACACACACACATCTAAGTAAACTAGACACGTTACATAAAATGCGTGCCCGCAGCAGAGACGGTGTGTGCGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=223;END=955473;SUPPORT=15;COVERAGE=24,26,26,27,27;STRAND=+-;AF=0.577;STDEV_LEN=0.5;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:60:11:15", - "chr16\t955933\tSniffles2.INS.39SF\tN\tCACGGCACCCACCCCACGACGGCTCTCTCACATCCACAGGTCTCCGAGTTCACGTCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=57;END=955933;SUPPORT=12;COVERAGE=26,27,27,29,29;STRAND=+-;AF=0.444;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:60:15:12", - "chr16\t956173\tSniffles2.INS.3ASF\tN\tCCCACGACGGCTCTCTCACATCCACAGGTCTCCGAGTTCACGTCTCACGGCGCCCA\t60\tGT\tPRECISE;SVTYPE=INS;SVLEN=57;END=956173;SUPPORT=5;COVERAGE=27,29,29,29,29;STRAND=+-;AF=0.172;STDEV_LEN=0.577;STDEV_POS=10.392;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/0:16:24:5", - "chr16\t960401\tSniffles2.DEL.63SF\tacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacaacactggatcacaacccagacaccatctcatggtgacaacacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacaacacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacaacacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagac\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-864;END=961265;SUPPORT=14;COVERAGE=31,31,31,30,30;STRAND=+-;AF=0.452;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:60:17:14", - "chr16\t960535\tSniffles2.DEL.62SF\tcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacaacacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-262;END=960797;SUPPORT=16;COVERAGE=31,31,31,31,30;STRAND=+-;AF=0.516;STDEV_LEN=0;STDEV_POS=4.596\tGT:GQ:DR:DV\t0/1:60:15:16", - "chr16\t961793\tSniffles2.DEL.65SF\tacagactcacggtgacagcacgggatcacgacccag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-36;END=961829;SUPPORT=13;COVERAGE=30,30,30,30,30;STRAND=+-;AF=0.433;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:60:17:13", - "chr16\t961981\tSniffles2.DEL.66SF\tacagactcacggtgacagcacgggatcaccacccag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-36;END=962017;SUPPORT=12;COVERAGE=30,30,30,30,30;STRAND=+-;AF=0.4;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:60:18:12", - "chr16\t1075978\tSniffles2.INS.3DSF\tN\tCCCTCCTCCCCTCCCCCTCCTTTCCCTCCCTCTCTCCCTCTCTCCTCCCCGCCTCCCCATCCCTCTCCCTCTCCCTCCTCTCTCTCTCCCCTACCCTGTCTTTCTCTCTGCCTCCCCGCCTCCCCTTCCCTCTCCCCATACCCTGTCTTTCTCTCTCCCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=160;END=1075978;SUPPORT=5;COVERAGE=8,5,5,5,4;STRAND=+-;AF=1;STDEV_LEN=1.155;STDEV_POS=8.737;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:13:0:5", - "chr16\t1076128\tSniffles2.DEL.6BSF\tcctccccgcctccccatccctctccctctccctcctctctctctccccctaccctgttttctctctc\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-67;END=1076195;SUPPORT=2;COVERAGE=6,5,4,4,3;STRAND=+;AF=0.5;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:14:2:2", - "chr16\t1190923\tSniffles2.INS.40SF\tN\tGGGTTTCGCTGACCCAGCAGGCTGGCCTGGTTGTGTGGCCTCAGGCACACTCGGGGTTTCGGTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTCTGACTCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTCTGACTCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTCTTACTCAGCAGGCTGGCCTGGCTGTGTGGCCTCCGGCACACTCGGGGTCTCTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTTTCGGTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCAGGGTTTTGGTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTTGGGGTCTCTGACCCAGTAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=523;END=1190923;SUPPORT=3;COVERAGE=10,10,10,10,11;STRAND=+;AF=0.3;STDEV_LEN=2.646;STDEV_POS=50.013;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:10:7:3", - "chr16\t1191001\tSniffles2.DEL.6DSF\tcctggctgtgtggcctcaggcacactcggggtctctgacccagcaggctggcctggctgtgtggcctcaggcacactcggggtctctctgactcagcaggctggcctggctgtgtggcctcaggcacactcggggtctctctgactcagcaggctggcctggctgtgtggcctcaggcacactcggggtctctcttactcagcaggctgg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-210;END=1191211;SUPPORT=7;COVERAGE=10,10,11,11,11;STRAND=+-;AF=0.636;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:20:4:7", - "chr16\t1204953\tSniffles2.INS.42SF\tN\tGGGCCCCAGATCAGTGCCGGGGAGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGGCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGGCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=418;END=1204953;SUPPORT=8;COVERAGE=17,16,15,15,15;STRAND=+-;AF=0.533;STDEV_LEN=0.816;STDEV_POS=64;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:47:7:8", - "chr16\t1204961\tSniffles2.INS.41SF\tN\tAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=209;END=1204961;SUPPORT=8;COVERAGE=17,16,15,15,15;STRAND=+-;AF=0.533;STDEV_LEN=0.577;STDEV_POS=91.065;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:47:7:8", - "chr16\t1231101\tSniffles2.INS.43SF\tN\tCCCAGCTCCCCATGGACTCACCCACAGCCCCAGCTCACCCCCAGCCCCAGCCCAGCTCCCCTTGGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=66;END=1231101;SUPPORT=7;COVERAGE=14,14,14,14,14;STRAND=+-;AF=0.5;STDEV_LEN=0.447;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:50:7:7", - "chr16\t1231234\tSniffles2.INS.44SF\tN\tCCCAGCTCCCCATGGACTAGTCCCAGCCCCAGCCCAGCTCCCCATGGTCTCACCCCCAGCCCCAGCCCAGCTCCCCATGGACTAGTCCCATCCCCCGGCCCCAGCTCCCCATGGTCTCACCCCCAGCTCCACCCAGCCCCAGCCCAGCTCCCCATGGACTCACCCCCAGCCCCAGCCCAGCTCCCCATGGACTAGTCGCAGCCCCGGCCCCAGCTCCCCATGGTCTCACCCCCAGCTCCCCATGGACTAGTCCCAGCCCCAGCCCAGCTCCCCATGGTCTCACCCCCAGCCCCAGCCCAGCTCCCCATGGACTAGTCCCAGCCCCCGGCCCCAGCTCCCCATGGTCTCACCCCCAGCTCCAGCCCAGCTCCCCATGGACTAGT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=383;END=1231234;SUPPORT=6;COVERAGE=14,14,14,14,14;STRAND=+-;AF=0.429;STDEV_LEN=0.957;STDEV_POS=61;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:37:8:6", - "chr16\t1248065\tSniffles2.DEL.71SF\tacatatacatgcacatgcacacacacgaatgttcacatgcacacacggacacacatgcacactcacacatgtacacatgtgtgtgcacacacgcacacatatg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-103;END=1248168;SUPPORT=3;COVERAGE=1,4,4,4,5;STRAND=+-;AF=0.75;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:1:1:3", - "chr16\t1254908\tSniffles2.DEL.73SF\tccatggggagctggggccgggggctgggactagtccatggggagctgggctggggctgggggtgaga\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-67;END=1254975;SUPPORT=8;COVERAGE=14,14,14,14,14;STRAND=+-;AF=0.571;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:37:6:8", - "chr16\t1254975\tSniffles2.INS.47SF\tN\tCCATGGGGAGCTGGGCTGGGGCTGGGACTAGTCCATGGGGAGCTGGGCTGGGGCTGGGACTAGTTCATGGGGAGCTGGGCTGGGGCTGGGACTAGTTCATGGGAGCTGGGCTGGGGCTGGGACTAGTCCATGGGGAGCTGGGCTGGGGCTGGGACTAGTTCATGGGGAGCTGGGCTGGGGCTGGGGGTGAGTCCATGGGGAGCTGGGCTGGGGCTGGGGGTGAGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=225;END=1254975;SUPPORT=6;COVERAGE=14,14,14,14,14;STRAND=+-;AF=0.429;STDEV_LEN=0.577;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:37:8:6", - "chr16\t1258684\tSniffles2.INS.48SF\tN\tTGAGCCCCCTCCCCCACCCTGAGCCCCCTCCCCTGTCTTGAGCCCCTGCTCCATCCTGAGTCCCCTCCCCCACACTGAGCCCCCTCCCCTTTCTTGAGCCCCTCATCCATCCTGAGCCCCTCCTCCATCCTGAGCCCCCTCCCCCATCCTGGGCCCCCTCCCCTTTCTTGAGCCCCCCTCCCCCACCCTGAGCCCCCTCCCCTTTCTTGAGCCCCCTCCCCCACCTGAGCCCCTTCCCCTTTCTTGAGTCCCTCCTCCATCCTGAGCCCCCTCCCCTTTCTTGAGCCCCTCCTCCACCCTCAGCCCCCTCCCCTTTCTTGAGCCCCTCCTCCACCCTCAGCCCCCTCCCCTTTCT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=355;END=1258684;SUPPORT=14;COVERAGE=14,14,14,14,14;STRAND=+-;AF=1;STDEV_LEN=37.175;STDEV_POS=1.69;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:39:0:14", - "chr16\t1260690\tSniffles2.INS.49SF\tN\tAGCCCGGAGACCCACGTCCACACACAGCCCGGAGACCCACATCCACACAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=50;END=1260690;SUPPORT=7;COVERAGE=15,15,15,16,16;STRAND=+-;AF=0.467;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:47:8:7", - "chr16\t1264730\tSniffles2.DEL.75SF\ttgtgtgtatgcgtgtgcatatgtaaggatgtgtgcg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-36;END=1264766;SUPPORT=6;COVERAGE=15,15,13,12,12;STRAND=+-;AF=0.462;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:40:7:6", - "chr16\t1308390\tSniffles2.DEL.76SF\ttgagtgagggagggaatgagtgagggagggaatgag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-36;END=1308426;SUPPORT=11;COVERAGE=12,12,12,12,12;STRAND=+-;AF=0.917;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t1/1:20:1:11" - ], + "13d352d7a4dd922085f653a3da950bce", [ "##contig=", "##contig=", @@ -1747,69 +1396,7 @@ "##INFO=", "##bcftools_viewVersion=1.20+htslib-1.20" ], - [ - "#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO\tFORMAT\ttest", - "chr16\t81884\tSniffles2.INS.3SF\tN\tCTCCAGGAAGCCCTCCTGAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTATCTCCGGAAGCCCTCCTGAATGCTCCCCACGCTGGCCCCTTCTTCCCACCACCCTACCTCCGGGAAGGCCTCCTGAATGCTCCCCACGCTGGCCCCTTCTTCCCACCACCCTACCTCCGGGAAGCCCTCCTGAATGCTCCCCACGCTGGCCCCTTCTTCCCACCACCCTACCTCCAGGAAGCCCTCCTGAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTATCTCCGGGAAGGCCTCCTGAATGCTCCCCACACTGACCCCTTCTTCCCACCACCCTACCTCCGGGAAGGCCTCCTGAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTAT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=398;END=81884;SUPPORT=13;COVERAGE=22,23,24,23,23;STRAND=+-;AF=0.542;STDEV_LEN=0;STDEV_POS=62.598;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:60:11:13", - "chr16\t82169\tSniffles2.INS.1SF\tN\tCTCCGGGAAGGCCTCCTGAATGCTCCCCACACTGACCCCTTCTTCCCACCACCCTAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=57;END=82169;SUPPORT=8;COVERAGE=23,23,23,23,23;STRAND=+-;AF=0.348;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:38:15:8", - "chr16\t153120\tSniffles2.INS.4SF\tN\tACAGTGGGGAGGGGACAGTGGGGAGAGGACAGTAAGGAGGGGACCATGGGGAGGAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=56;END=153120;SUPPORT=23;COVERAGE=22,23,23,23,23;STRAND=+-;AF=1;STDEV_LEN=0.48;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:60:0:23", - "chr16\t160071\tSniffles2.INS.9SF\tN\tGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGACGGCTTGTGGGACACAGGTTGTGAGAGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTGTGAGGGTGCCCGGGATGGCTTGTGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTGTGAGACGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGAGATGCCCAGGACGGCTTGTGGGGAACAGGCTGTGAGGGTGCCCGGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGATGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGCTGCAAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGATGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCTGGGACGGCTTGTGGGGCACAGGTTGTGAGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=911;END=160071;SUPPORT=25;COVERAGE=28,28,28,30,27;STRAND=+-;AF=0.893;STDEV_LEN=1.05;STDEV_POS=14.7;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:39:3:25", - "chr16\t160753\tSniffles2.INS.BSF\tN\tGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCAGGATGGCTTGTGGGGCACAGGCTGCAAGAGGTGCCCAGGACGGCTTGTGGGGCACAGGTTGTGAGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=145;END=160753;SUPPORT=27;COVERAGE=30,28,28,27,27;STRAND=+-;AF=0.964;STDEV_LEN=0.352;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:60:1:27", - "chr16\t163110\tSniffles2.DEL.4DSF\tcaccctgccgccatgtctctgaccaagacttaggggaccatcattgtgtccatgtgggccaagatctccacgcaggccgacaccatcggcaccgagactctggagaggtgagtgtcagatgggactgccagagggactgggtgggaggccaggtatgtgagtggggacagtggggagcgggcagtggggaggggaccgtggggaggggacagtgagtaggagacagtggggagaggacagtggagaggggacagtgaggaggggaccatgggaaggggaccgtggagtggggacagtgaggaggggaccatagggagggga\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-321;END=163431;SUPPORT=7;COVERAGE=23,22,22,22,22;STRAND=+-;AF=0.318;STDEV_LEN=0.894;STDEV_POS=10.733;AC=1\tGT:GQ:DR:DV\t0/1:28:15:7", - "chr16\t164801\tSniffles2.INS.CSF\tN\tCGGGGTCGCGGGGCGGGCGGGTCGCGGGGCGGGGTCGCGGGGGCGGGCGAGGTC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=54;END=164801;SUPPORT=8;COVERAGE=21,21,21,21,21;STRAND=+-;AF=0.381;STDEV_LEN=2.16;STDEV_POS=17.972;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:43:13:8", - "chr16\t182789\tSniffles2.INS.DSF\tN\tTGAAACACCGTCTCTACTAAAAATACAAAAATTAGCCAGGCATAGTGGCGGGCGCCTGTAATCCCAGCTGTTCGGGAGGCTGAGGCAGGACAATCACTTAAACCAGGGAAGCAGAGGTTGCAGTGAGCTGAGATCGAGCCACTGCACTCCAGCCTGGGCGACAGACCGAGACTGTCTCAAAAAAAAGACCGGGCACGGTGGCTCACGCCTGTAATCCCACCACTTTGGGAGGCTGAGGCGGGCTGATCACGATGTCAGGAGATCTAGACCATCCTGGCCAACATGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=286;END=182789;SUPPORT=12;COVERAGE=13,12,12,12,12;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:33:0:12", - "chr16\t186052\tSniffles2.DEL.4ESF\tggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacgggg\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-646;END=186698;SUPPORT=11;COVERAGE=11,11,11,11,11;STRAND=+-;AF=1;STDEV_LEN=113.878;STDEV_POS=251.483;AC=2\tGT:GQ:DR:DV\t1/1:30:0:11", - "chr16\t362990\tSniffles2.INS.FSF\tN\tGACTTAGCACCGGGGGGTCTCGGGCTGCGGCTGCTCTCCCA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=42;END=362990;SUPPORT=3;COVERAGE=7,6,6,6,5;STRAND=+-;AF=0.5;STDEV_LEN=0.577;STDEV_POS=9.238;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:21:3:3", - "chr16\t370391\tSniffles2.INS.10SF\tN\tCTACCCTGCCCCGGCTCTCACCCCCTACCCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCGGCTCTCACCCCCTACCCCGGCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCGCTACCCTGCCCCCGGCTCTCACCGCTACCCCCCGGCTCTCACCCGCTACCCCGCCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCCGGCCCCCCGGCTCTCACCTCCTACCCGGCCCCGGCTCTCACCCGCTCCCCCGGCCCCCGGCTCTCACCCGCTCACCCCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCTCGGCTCTCACCCCCTACCCCGGCCCCGGCTCTCACCCCCTACCCCTGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCCGGCTCTCACCCGCTACCCCGGCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGGCTCTCACTCC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=736;END=370391;SUPPORT=7;COVERAGE=7,7,7,7,7;STRAND=+-;AF=1;STDEV_LEN=65.282;STDEV_POS=1.095;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:19:0:7", - "chr16\t378308\tSniffles2.INS.11SF\tN\tCCACTCTGACTGCCATCGCCACTCTGACTGCCATCC\t60\tGT\tPRECISE;SVTYPE=INS;SVLEN=36;END=378308;SUPPORT=4;COVERAGE=17,17,17,18,18;STRAND=+-;AF=0.235;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:3:13:4", - "chr16\t378517\tSniffles2.INS.12SF\tN\tGCCATCGCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCTGACTGCCATCGCCACCCACACTGCCATCCCCACCCGCACTGCCATCGCCACCCTGACTGCCATCGCCACCCACAATGCCATCCCCACCCGCACTGCCATCGCCACCCGCACTGCCATCCCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCACACTGCCATC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=240;END=378517;SUPPORT=12;COVERAGE=17,18,18,18,18;STRAND=+-;AF=0.667;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:26:6:12", - "chr16\t397717\tSniffles2.INS.13SF\tN\tTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGTGGGGGTGGGGGTGTGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGTGAGGGAGTCGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGTGAGGGAGTCGGGGGGTGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGGC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=491;END=397717;SUPPORT=3;COVERAGE=3,3,3,3,3;STRAND=+-;AF=1;STDEV_LEN=2.309;STDEV_POS=5.196;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:8:0:3", - "chr16\t504280\tSniffles2.INS.14SF\tN\tTCCATCTCCTCCTGTACCCCCTCACCTCCTTGTGCACCCCCTCACCTCCTGTACCCCCTCACCTCCTCTGTATACCACCTCCTCCTGTACCCCCTCACCTCCTCTTGCACCCCCCTTGCCTCCTGTACCCCCTCACCTCCTTGTGCACCCCCTCACCTCCTGTACCCCCTCACCTCCTCCTGTACCCGCCTCACCTCCTCCTGCACTCCCATCTCCCCTGTACCCCCTCACCTCCCTTGTGCACCCCCTCACCTCCTGTACCCCCTCACTCCTCCTCTGTACCCCTCACCTCCTCCTGTA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=331;END=504280;SUPPORT=4;COVERAGE=4,4,4,4,4;STRAND=+-;AF=1;STDEV_LEN=1.414;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:11:0:4", - "chr16\t507831\tSniffles2.INS.15SF\tN\tTTCAGTATCATCTGCCCGTTCTGAGCCATTTGCTCTCTAGCCCTACCATACAGCTGCCATCCTAAGAGTACGTTTCCCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=81;END=507831;SUPPORT=4;COVERAGE=5,5,5,5,7;STRAND=+-;AF=0.8;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:1:1:4", - "chr16\t534179\tSniffles2.INS.16SF\tN\tGGGCCGTGGTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACGGGGCCGTGGTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACGGGGCCGTGGTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=162;END=534179;SUPPORT=5;COVERAGE=5,5,5,5,4;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:13:0:5", - "chr16\t544781\tSniffles2.INS.17SF\tN\tCGTCTCCCCCACGTCGCCTCCCCCCACGTCGCCTCCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCTCACGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGTCGC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=344;END=544781;SUPPORT=8;COVERAGE=8,8,8,8,8;STRAND=+-;AF=1;STDEV_LEN=4.69;STDEV_POS=25.5;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:22:0:8", - "chr16\t550769\tSniffles2.INS.18SF\tN\tCGGTGAGGGTCCCCGGTCGGTGAGGGCGCCCCGTCAGTGAGGGTCCCGGTCAGTGAGGGCCCCGGTCGGTGAGGGTCCCCGGTCGGTGAGGGCCCCTGTCGGTGAGGGCCCCGGTCGGTGAGGGACCCGGTCGGTGAGGGCCCCCTGTCGGTGAGGGTCCCCTGTCGGTGAGGGCCCCGGTCGGTGAGGGCCCCGGTCGGTGAGGGTCCCCTGTCGGTGAGGGTCCCCTGTCGGTGAGGGTCCCGGTCGGTGAGGGCCCCGGTCGGTGAGGGTGCCCCGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=280;END=550769;SUPPORT=13;COVERAGE=13,13,13,13,13;STRAND=+-;AF=1;STDEV_LEN=1;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:36:0:13", - "chr16\t553057\tSniffles2.INS.19SF\tN\tTGCCCCCCACCCCTGCACAGGTGCCCCCTCCCCTACCCCGCTGCACCCACACCCAACTCGTGCCCCCCCACCCCTGCACAGGTGCCCCCTCCCCTACCCCGCTGCACCCACACCCAACTCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=121;END=553057;SUPPORT=6;COVERAGE=12,11,11,11,10;STRAND=+-;AF=0.545;STDEV_LEN=0.577;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:33:5:6", - "chr16\t571110\tSniffles2.INS.1BSF\tN\tTGGCTAGCCTGTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTGTGTGTGTCTGGCTAGCCTGGTGCCCGTGTGTGTGTGTATGTGTGTGTGTGTGTGTGTGTCTGGCTAGCTGGCGCCCGTGGCTAGCCTGGTGCCCGTGTGTGTGTGTATGTATGTGTCTGGCTAGCCTGGTGCCCGTGGCTAGCCTGGTGCCCGTGTGTGTGTGTGTGGGGGGGGCTAGCCTTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTCTGGCTAGCGTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTGTGTGTGCTAGCCTGGCGCCCGTGTGTGTGTGTGTGTGTGTCTGGCTAGCCTGGCACCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=358;END=571110;SUPPORT=16;COVERAGE=18,17,16,16,18;STRAND=+-;AF=1;STDEV_LEN=3.78;STDEV_POS=14.714;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:44:0:16", - "chr16\t579380\tSniffles2.DEL.4FSF\tcagagaagagacagacacacagccccgaaggtggtgcaggcacaggccctagaggtgccccgggcccagagactagagatgccccgggcccggagactagaggtgccccgggcccggaga\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-120;END=579500;SUPPORT=11;COVERAGE=11,11,11,11,10;STRAND=+-;AF=1;STDEV_LEN=0.488;STDEV_POS=0;AC=2\tGT:GQ:DR:DV\t1/1:30:0:11", - "chr16\t585059\tSniffles2.DEL.50SF\tcccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctccccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctccccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctc\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-156;END=585215;SUPPORT=6;COVERAGE=6,6,6,6,6;STRAND=+-;AF=1;STDEV_LEN=0.5;STDEV_POS=56.518;AC=2\tGT:GQ:DR:DV\t1/1:16:0:6", - "chr16\t587440\tSniffles2.INS.1CSF\tN\tTCCCTCCCTTCACTGGGCCTGCTGCCCCAGAGTCCA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=36;END=587440;SUPPORT=5;COVERAGE=5,5,5,5,5;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=41.569;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:13:0:5", - "chr16\t611801\tSniffles2.DEL.51SF\tgggacagccgccttcgcctgtagaatcaagagcagggacagccgccctggcctgtagaatcaagagcacgggacagccgccctggcctgtagaatcaagagcacgggacagccgccctggcctgtagaatcaagagcagggacagccgccctggcctgtagaatcaagagcaagggacagccgccctggcctgtagaatcaagagcaagggacagccgcctttgcctgtagaatcaagagcag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-243;END=612044;SUPPORT=4;COVERAGE=3,4,4,4,4;STRAND=+-;AF=1;STDEV_LEN=0.707;STDEV_POS=14.142;AC=2\tGT:GQ:DR:DV\t1/1:11:0:4", - "chr16\t631728\tSniffles2.DEL.52SF\tcttctcccaccccttcactgcctctccttccatcctctcctcccaccctctcctcccatccactcctcccatccacttcttccatcct\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-88;END=631816;SUPPORT=17;COVERAGE=17,17,17,17,16;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;AC=2\tGT:GQ:DR:DV\t1/1:47:0:17", - "chr16\t660943\tSniffles2.INS.1FSF\tN\tCCCCCTGTTCGGCCCCTCCCCAGGCCCCCCCCCGCCCGGCCTCAGGCCCCGCCCCCTGTTCGGCCCCTCCCCAGGCCCGGCCTCAGGCCCCGCCCCCTGTTCGGCCCCTCCCCAG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=115;END=660943;SUPPORT=17;COVERAGE=16,16,15,16,16;STRAND=+-;AF=1;STDEV_LEN=1.803;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:47:0:17", - "chr16\t665215\tSniffles2.DEL.53SF\tcctcagtctgcagcctgctagggacgcacggccacactcctgtctttcag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-50;END=665265;SUPPORT=22;COVERAGE=19,21,22,22,21;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;AC=2\tGT:GQ:DR:DV\t1/1:60:0:22", - "chr16\t696679\tSniffles2.INS.20SF\tN\tCCCACCCCAAAGCCACCATCCGCTCCCACCTCCATAGGGTTGCTGCTGCCCGCCCCTGCCCCCCAGCCCTGTCCCCCCCACCACCCAGCCTGGGCGCACACCCCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=105;END=696679;SUPPORT=10;COVERAGE=11,10,10,10,10;STRAND=+-;AF=1;STDEV_LEN=0.408;STDEV_POS=1.633;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:27:0:10", - "chr16\t746237\tSniffles2.DEL.54SF\tgaggtgggttcactgcgggtctgcctggctgggcagcaggagaggaggtgggttcactgcgggtctgcctggctgggcagcaggagaggaggtgggttcactgcaggtctgtctggctgggcagcaggaggggagaggtggggtcactgcgggtctgcagggctgcaggaggggagaggtggggtcactgcaggtctgtctggctgggcagcaggagaggaggtgggttcactgcaggtctgtctgggcgggctgcaggagaggaggtggggtcactgcgggtctgtctgggcgggctgcaggagag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-307;END=746544;SUPPORT=7;COVERAGE=13,13,13,13,11;STRAND=+-;AF=0.538;STDEV_LEN=0;STDEV_POS=0;AC=1\tGT:GQ:DR:DV\t0/1:40:6:7", - "chr16\t760502\tSniffles2.INS.21SF\tN\tAGCCATGAAACCTGGGCCCGGGCTCCCACTCACACCCCACCCCCACCCAGGGCAGCCGTGAAACCTGGGCCCTGGGCTCCCACCCACGCCCCACACCCACCCAGGGC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=107;END=760502;SUPPORT=16;COVERAGE=16,16,16,16,17;STRAND=+-;AF=1;STDEV_LEN=0.518;STDEV_POS=11.667;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:44:0:16", - "chr16\t763776\tSniffles2.INS.22SF\tN\tGCATCCCATCCCCCGTCCCCTCCCCCACACCCCTCCCCCACCCCCACGTCCCCTCCCCACCCCTCCCCCACACCCTCCCCCACCCCTCCCCATGTCCCCTCCCCTACCTCCTCCCCCCGCATCCCCTCCCCCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=133;END=763776;SUPPORT=20;COVERAGE=19,19,20,20,20;STRAND=+-;AF=1;STDEV_LEN=0.789;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:55:0:20", - "chr16\t767762\tSniffles2.INS.26SF\tN\tGGGGCACGTGGAGGGGTCGCGTGGAGGAGGGGCGCGTGGAGGGGGCGCGTGGAGGAGGAGGGGCGCATGGGGGGGTGTGGAGGGCACATGGGGGTGCGTGGGGGGGCGTGTGGGGGGGTGCGTGGAGGA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=130;END=767762;SUPPORT=10;COVERAGE=15,15,15,15,14;STRAND=+-;AF=0.667;STDEV_LEN=1.835;STDEV_POS=27.386;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:22:5:10", - "chr16\t767829\tSniffles2.INS.25SF\tN\tGGTGTGGAGGGGGGCGCGTGGGGGTGTGTGGGGGGGGGCACGTGGAGGGGGCGTGTGGGGGGGTGCGTGGAGGAGGGGCGCGTGGAGGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=89;END=767829;SUPPORT=4;COVERAGE=15,15,15,15,14;STRAND=+-;AF=0.267;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:9:11:4", - "chr16\t769171\tSniffles2.INS.27SF\tN\tCCCCGGCCCCGGCCCCAGCCCCGGCCCCACCCCGGCCCCAGCCCCAGCCCCAGCCCCAGCCCCACCCCCGGCCCCAGCCCCAGCCCCAGCCCCAGCCCCGGCCCCACCCCCACCCCCGGCCCCGGCCCCGGCCCCACCCCCGGCCCCGGCCCCGGCCCCACCCCCGGCCCCGGCCCCACCCCCGGCCCCGGCCCCAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=197;END=769171;SUPPORT=6;COVERAGE=14,13,13,13,13;STRAND=+-;AF=0.462;STDEV_LEN=0.816;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:40:7:6", - "chr16\t795446\tSniffles2.INS.28SF\tN\tCCCCCGTGCTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCTGTGCTGCCCGTGTGGCTGCCCCCGGCCCCGCGCCCTTCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=87;END=795446;SUPPORT=8;COVERAGE=13,13,13,13,13;STRAND=+-;AF=0.615;STDEV_LEN=0.577;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:27:5:8", - "chr16\t795594\tSniffles2.INS.29SF\tN\tGCTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCTTCTCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCTTCTCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCTGTGCTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCTCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCTTCTCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCGCCCCGCCCCGCCCCTCCCCTCCCCCCCCCCCGC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=621;END=795594;SUPPORT=5;COVERAGE=13,13,13,13,13;STRAND=+-;AF=0.385;STDEV_LEN=2.646;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:27:8:5", - "chr16\t818868\tSniffles2.INS.2ASF\tN\tTGGTGAAGACTGTAGTGATGGTGATGATGGTGAAGACTGTAGTGATGATGGTGGTGAAGACTGTAGTGATGTTGATATTGGTGATGAAGACTATAGTGATAGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTAGTGATGGTGATGATGATGGTGAAGACTGTAGTGATGGTGATGATGGTGAAGACTGTAGCGATGATGGTGAACACTGTAGTGATGTTGATATTGGTGATGAAGACTATAGTGATGGTGATGATAGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTGTAGTGATGGTGATGAGGTGAGACTATCGTGATGGTGATGATAATGGTGAAGACTATAGTGATGTTGATGTCGGTGGTGAAGACTGTAGTGATGGTGATGATAGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTGTAGTGATGGTGATGATGGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTATAGTGATGATGGTGAAGACTGTAGTGATGGTGATGATAGTGGTGAAGACTGTAGTGATGTTAATGGTGAAGGCTATAGTGATGTTGATGGTGGTGAAGACTGTAGCAATGGTTATGATGTTGGTGAAGACAATAGTGATGGTGATGATGGTGAAGACTATAGTGATGGTGATGATGGTGGTGAAGACTGTAGTGATGGTGATGATAGTGGTGAGGACTGTTAGTGATGATAGTGGTGAAGACTGTAGTGATGATGATGGTGAAGACTATAATGATGATGGTGAAGACCGCCGTGATGGTGATGATGGTGAAGACTGTAGCAATGATGATGGTGAAGACTATAGTGATGTTGAGTTGGTGGTGAAGACTGTAGCGATGGTGATGATGATGGTGAAGACTATAGTGATGATGATGTTGAAGACTATAGTGATGATGATGGTGAAGACCGCCGTGATGGTGATGATGGTGAAGACTGTAGCGATGATGATGGTGAAGACTATAGTGATGCTGATGTTGGTGGTGAAGACTGTAGTGATGGTGATGATGATGGTGAAGACTATAGTGATGATGATGGTGAAGACTATAGTGATGATGATGTGAAGACCGCCGTGATGGTGATGATGGTGAAGACTGTAGCGATGATGATGGTGAAGACTATAGTGATGTTGATGTTGG\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=1173;END=818868;SUPPORT=12;COVERAGE=13,12,12,12,12;STRAND=+-;AF=1;STDEV_LEN=90.396;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:33:0:12", - "chr16\t824382\tSniffles2.INS.2BSF\tN\tTAGGCCCACGACGGCCAGCAGCGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGGAGCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=150;END=824382;SUPPORT=2;COVERAGE=3,3,3,3,2;STRAND=-;AF=0.667;STDEV_LEN=0.707;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:4:1:2", - "chr16\t824874\tSniffles2.INS.2DSF\tN\tCGTCCCGTCCGCGGCACCACCGTCCCATCTGTGGCACCAT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=40;END=824874;SUPPORT=2;COVERAGE=3,2,2,2,2;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:5:0:2", - "chr16\t828906\tSniffles2.DEL.55SF\tgcccactggggcccacatcccgcccactgggaccgacatccc\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-42;END=828948;SUPPORT=2;COVERAGE=2,2,2,2,2;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;AC=2\tGT:GQ:DR:DV\t1/1:5:0:2", - "chr16\t886663\tSniffles2.INS.30SF\tN\tCCACCCTAGGCCCCCGGCGTTCCCCAGGCCCCTCCCACCCTAGGCCCCCGGCGTTCCCCAGGCCCCTCCCACCCTAGGCCCCCGGCGTTCCCCAGGCCCCTCCCACCCTAGGCCCCGGCGTTCCCCAGGCCCCT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=133;END=886663;SUPPORT=10;COVERAGE=10,10,10,10,11;STRAND=+-;AF=1;STDEV_LEN=0.983;STDEV_POS=48.673;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:27:0:10", - "chr16\t894215\tSniffles2.INS.31SF\tN\tCTGGCTGTCCGCCCACCCATCCCCTGTCCACCGGACCGTCCGCCCACCCGTCCCCATGTCCATCAGACCGTCCGTCCACCTGTCCCCCTGTCCCCTGTCCACCGGACCATTCGCCCACCCATCCCCCTGTCCACCTGGCCATCCGCCCACCTGTCTCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCACTGGACTGTCCGCCCACCTGTCCCCCTGTCCCCTGTCCACCGGACCGTCTGCCCACCCGTCCCCCTGTCCACCTGGCCATCCGCCCACCCATCCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCAGGTCCCCCTGTCCAGCGGACCGTCCACCCACCCGTCCCCCTGTCCACTGGACCGTCCGCCCACCTGTCCCCCTGTCCACCTGGCAGTGCGCCCACCCATCCCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCAGCGGACCGTCCACCCACCT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=521;END=894215;SUPPORT=17;COVERAGE=17,17,17,17,17;STRAND=+-;AF=1;STDEV_LEN=57.393;STDEV_POS=5.5;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:47:0:17", - "chr16\t895843\tSniffles2.INS.33SF\tN\tACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCATGGTCCACAGACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCACGGTCCACAGACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCACGGTCCACAGCCACACGCAGGCTGCACGGTCCACAGACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCACGGTCCACACACACGCCTCGGAGGGGTTGTGAGGCTCAGCCAT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=295;END=895843;SUPPORT=10;COVERAGE=17,16,16,16,14;STRAND=+-;AF=0.625;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:32:6:10", - "chr16\t896059\tSniffles2.INS.32SF\tN\tGCAGGCTGCACGGTCCACAGACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=58;END=896059;SUPPORT=6;COVERAGE=17,16,16,16,14;STRAND=+-;AF=0.375;STDEV_LEN=0.577;STDEV_POS=110.531;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:32:10:6", - "chr16\t903595\tSniffles2.INS.34SF\tN\tGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTATCTCTGCTGTGTGGTGGTGACCTTTGCACTGCCCGTGGGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCCGTCTCTGCTGTGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCCACAGGACGCCTGTCTCTGCTGTGTGGTGGTGACCTTTGCACTGCCCGTGGGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCTGTCTCTGCTGTGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCCGTCTCTGCTGCGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=600;END=903595;SUPPORT=6;COVERAGE=8,8,8,8,8;STRAND=+-;AF=0.75;STDEV_LEN=0.577;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:3:2:6", - "chr16\t949510\tSniffles2.DEL.5ASF\taatgacagagtcagccaacgacagagtcagagccaacgacagagtcagagacaatgacagagtcagagacaacgacagagtcagagacgacagagtcagagacgacagagtcagagccaatgacagagtcagccaatgacagagtcagagccaacgacagagtcagccaatgacagagtcagagacaacgacagagtcagagacaacgacagagtcagagacgacagagtcagagacgacagagtcagagccaatgacagagtcagccaatgacagagtcagagccaacgacagagtcagccaatgacagagtcagagacaacgacagagttagagacaacgacagagtcagccaaggacagcgtcagccaacgacagaatcagagacaacgacagagtcagccaacgacagagtcagagccaatgagagtcagagccaacgacagagtcagagacgacagagtcagagccaacgacagagtcagccaacgacagagtcagagccaacgacagagtcagccaacgacagagtcagagccaacgacagagtcagccaacgacagagtcagagacaacgacagagtcagagccaacgacagagtcagagacgaaagactcagagccaatgacagagtcagagccaatgacagagtcagccaacgacagagtcagagccaacgacagagtcagccaatgacagagtcagagacagcgacagagttagagacaat\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-731;END=950241;SUPPORT=15;COVERAGE=22,22,22,23,22;STRAND=+-;AF=0.682;STDEV_LEN=0;STDEV_POS=0;AC=1\tGT:GQ:DR:DV\t0/1:28:7:15", - "chr16\t950488\tSniffles2.INS.36SF\tN\tCAACGACAGAGTCAGAGACAACGACAGAGTCAGAGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=36;END=950488;SUPPORT=14;COVERAGE=22,23,23,23,23;STRAND=+-;AF=0.609;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:50:9:14", - "chr16\t952880\tSniffles2.DEL.5CSF\ttccacacagacacccaccccaaaccagcctcctacacgtccacacagacacccaccccaaaccagcctcctgcacgtccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacacg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-178;END=953058;SUPPORT=16;COVERAGE=24,24,25,25,25;STRAND=+-;AF=0.64;STDEV_LEN=0;STDEV_POS=0;AC=1\tGT:GQ:DR:DV\t0/1:45:9:16", - "chr16\t953293\tSniffles2.DEL.5DSF\tcaaaccagcctcctacacgtccacacagacacccaccccaaaccagcttcctacacgttcacacagacacgg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-72;END=953365;SUPPORT=15;COVERAGE=24,25,25,25,25;STRAND=+-;AF=0.6;STDEV_LEN=0;STDEV_POS=0;AC=1\tGT:GQ:DR:DV\t0/1:58:10:15", - "chr16\t953349\tSniffles2.DEL.60SF\tgttcacacagacacggaccccaaaccagcctcctacacgtccacacagacacccaccccaaaccagcctcctacacgttcacacagacacggaccccacaccagcctcctacacgtccacacagacacccaccccaaaccagcctcctgcacgtccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacacgtccacacagacacccactccaaaccagcctcctacacgtccacacagacaccccaaaccagcctcctacatgtccacacagacacccaccccaaaccagcctcctacatgtccacacagacacccaccccaaaccagcctcctacatgtccacacagacacccaccccaaaccagcctcctacat\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-440;END=953789;SUPPORT=9;COVERAGE=25,25,25,25,25;STRAND=+-;AF=0.36;STDEV_LEN=0;STDEV_POS=0;AC=1\tGT:GQ:DR:DV\t0/1:45:16:9", - "chr16\t953507\tSniffles2.DEL.5ESF\tacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacacgtccacacag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-106;END=953613;SUPPORT=15;COVERAGE=25,25,25,25,25;STRAND=+-;AF=0.6;STDEV_LEN=0;STDEV_POS=0;AC=1\tGT:GQ:DR:DV\t0/1:58:10:15", - "chr16\t954972\tSniffles2.INS.37SF\tN\tCTAAGCGAACCAGACACGTTACATAAAATGCGTGCCTGCAGCAGACGGGGTCTGTGCACACACACACACACAACCAGACACGTTACATAAAATGCGTGCCTGCTGCAGACGTGGTGTGTGTATACACACACACACATCTAAGTAAACCAGACACGTTACATAAAATGCGTGCCCGCAGCAGACGTAGTGTGTGCATCCACACACACACATCTAAGTAAACTAGACACGTTACATAAAATGCGTGCCCACAGCAGACGCGGTGTGTGCGTACACACACACACATCTAAGTAAACTAGACACGTTACATAAAATGCGTGCCCGCAGCAGACGCAGTGTGTGCATACACATCTAAGTG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=355;END=954972;SUPPORT=15;COVERAGE=25,24,24,26,26;STRAND=+-;AF=0.625;STDEV_LEN=0.333;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:48:9:15", - "chr16\t955473\tSniffles2.INS.38SF\tN\tACACACACACACACACATCTAAGTGAACCAGACACGTTACATAAAATGCGTGCCTGCAGCAGATGCGGTGTGTGCATACACACACACACATCTAAGTAAACCAGACACGTTACATAAAATGCGTGCCTGCAGCAGACGTAGTGTGTGCATCCACACACACACATCTAAGTAAACTAGACACGTTACATAAAATGCGTGCCCGCAGCAGAGACGGTGTGTGCGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=223;END=955473;SUPPORT=15;COVERAGE=24,26,26,27,27;STRAND=+-;AF=0.577;STDEV_LEN=0.5;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:60:11:15", - "chr16\t955933\tSniffles2.INS.39SF\tN\tCACGGCACCCACCCCACGACGGCTCTCTCACATCCACAGGTCTCCGAGTTCACGTCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=57;END=955933;SUPPORT=12;COVERAGE=26,27,27,29,29;STRAND=+-;AF=0.444;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:60:15:12", - "chr16\t956173\tSniffles2.INS.3ASF\tN\tCCCACGACGGCTCTCTCACATCCACAGGTCTCCGAGTTCACGTCTCACGGCGCCCA\t60\tGT\tPRECISE;SVTYPE=INS;SVLEN=57;END=956173;SUPPORT=5;COVERAGE=27,29,29,29,29;STRAND=+-;AF=0.172;STDEV_LEN=0.577;STDEV_POS=10.392;SUPPORT_LONG=0;AC=0\tGT:GQ:DR:DV\t0/0:16:24:5", - "chr16\t960401\tSniffles2.DEL.63SF\tacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacaacactggatcacaacccagacaccatctcatggtgacaacacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacaacacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacaacacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagac\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-864;END=961265;SUPPORT=14;COVERAGE=31,31,31,30,30;STRAND=+-;AF=0.452;STDEV_LEN=0;STDEV_POS=0;AC=1\tGT:GQ:DR:DV\t0/1:60:17:14", - "chr16\t960535\tSniffles2.DEL.62SF\tcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacaacacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-262;END=960797;SUPPORT=16;COVERAGE=31,31,31,31,30;STRAND=+-;AF=0.516;STDEV_LEN=0;STDEV_POS=4.596;AC=1\tGT:GQ:DR:DV\t0/1:60:15:16" - ], - "test_reheader.vcf.gz.tbi", - "project.vcf.gz.tbi", + "28ed9eefcf5bb27fed8c55f615219f33", [ "versions.yml:md5,2188f00d20a376929f9f35f824e94667", "versions.yml:md5,572bfd042014333af194207291d12b95", @@ -1821,140 +1408,60 @@ "nf-test": "0.8.4", "nextflow": "24.04.3" }, - "timestamp": "2024-09-03T14:22:30.170494561" + "timestamp": "2024-09-05T14:17:59.191541065" }, "2 samples - [bam, bai], fasta, fai, [] -stub": { "content": [ - { - "0": [ - [ - { - "id": "test_1", - "single_end": false, - "project": "project" - }, - "test_1_reheader.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ], - [ - { - "id": "test_2", - "single_end": false, - "project": "project" - }, - "test_2_reheader.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ] - ], - "1": [ - [ - { - "id": "test_1", - "single_end": false, - "project": "project" - }, - "test_1_reheader.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - [ - { - "id": "test_2", - "single_end": false, - "project": "project" - }, - "test_2_reheader.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "2": [ - [ - { - "id": "project" - }, - "project.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ] - ], - "3": [ - [ - { - "id": "project" - }, - "project.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "4": [ - "versions.yml:md5,2188f00d20a376929f9f35f824e94667", - "versions.yml:md5,2188f00d20a376929f9f35f824e94667", - "versions.yml:md5,572bfd042014333af194207291d12b95", - "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", - "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", - "versions.yml:md5,ebb9b3d0bcc3aae3f54dfebd041e5cff", - "versions.yml:md5,ebb9b3d0bcc3aae3f54dfebd041e5cff" - ], - "ch_multisample_tbi": [ - [ - { - "id": "project" - }, - "project.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "ch_multisample_vcf": [ - [ - { - "id": "project" - }, - "project.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ] - ], - "ch_sv_calls_tbi": [ - [ - { - "id": "test_1", - "single_end": false, - "project": "project" - }, - "test_1_reheader.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - [ - { - "id": "test_2", - "single_end": false, - "project": "project" - }, - "test_2_reheader.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "ch_sv_calls_vcf": [ - [ - { - "id": "test_1", - "single_end": false, - "project": "project" - }, - "test_1_reheader.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ], - [ - { - "id": "test_2", - "single_end": false, - "project": "project" - }, - "test_2_reheader.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ] + "[test_1_reheader.vcf.gz, test_2_reheader.vcf.gz]", + [ + [ + { + "id": "test_1", + "single_end": false, + "project": "project" + }, + "test_1_reheader.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ], - "versions": [ - "versions.yml:md5,2188f00d20a376929f9f35f824e94667", - "versions.yml:md5,2188f00d20a376929f9f35f824e94667", - "versions.yml:md5,572bfd042014333af194207291d12b95", - "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", - "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", - "versions.yml:md5,ebb9b3d0bcc3aae3f54dfebd041e5cff", - "versions.yml:md5,ebb9b3d0bcc3aae3f54dfebd041e5cff" + [ + { + "id": "test_2", + "single_end": false, + "project": "project" + }, + "test_2_reheader.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ] - } + ], + [ + [ + { + "id": "project" + }, + "project.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + [ + [ + { + "id": "project" + }, + "project.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + [ + "versions.yml:md5,2188f00d20a376929f9f35f824e94667", + "versions.yml:md5,2188f00d20a376929f9f35f824e94667", + "versions.yml:md5,572bfd042014333af194207291d12b95", + "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", + "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", + "versions.yml:md5,ebb9b3d0bcc3aae3f54dfebd041e5cff", + "versions.yml:md5,ebb9b3d0bcc3aae3f54dfebd041e5cff" + ] ], "meta": { "nf-test": "0.8.4", "nextflow": "24.04.3" }, - "timestamp": "2024-09-03T12:28:35.279015767" + "timestamp": "2024-09-06T11:30:02.189652169" }, "1 sample - [bam, bai], fasta, fai, []": { "content": [ @@ -2195,84 +1702,7 @@ "##INFO=", "##bcftools_viewVersion=1.20+htslib-1.20" ], - [ - "#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO\tFORMAT\ttest", - "chr16\t81884\tSniffles2.INS.4SF\tN\tCTCCAGGAAGCCCTCCTGAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTATCTCCGGAAGCCCTCCTGAATGCTCCCCACGCTGGCCCCTTCTTCCCACCACCCTACCTCCGGGAAGGCCTCCTGAATGCTCCCCACGCTGGCCCCTTCTTCCCACCACCCTACCTCCGGGAAGCCCTCCTGAATGCTCCCCACGCTGGCCCCTTCTTCCCACCACCCTACCTCCAGGAAGCCCTCCTGAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTATCTCCGGGAAGGCCTCCTGAATGCTCCCCACACTGACCCCTTCTTCCCACCACCCTACCTCCGGGAAGGCCTCCTGAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTAT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=398;END=81884;SUPPORT=12;COVERAGE=22,23,24,23,23;STRAND=+-;AF=0.5;STDEV_LEN=0;STDEV_POS=68.361;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:60:12:12", - "chr16\t82169\tSniffles2.INS.1SF\tN\tCTCCGGGAAGGCCTCCTGAATGCTCCCCACACTGACCCCTTCTTCCCACCACCCTAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=57;END=82169;SUPPORT=8;COVERAGE=23,23,23,23,23;STRAND=+-;AF=0.348;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:38:15:8", - "chr16\t153120\tSniffles2.INS.5SF\tN\tACAGTGGGGAGGGGACAGTGGGGAGAGGACAGTAAGGAGGGGACCATGGGGAGGAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=56;END=153120;SUPPORT=23;COVERAGE=22,23,23,23,23;STRAND=+-;AF=1;STDEV_LEN=0.48;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:60:0:23", - "chr16\t160071\tSniffles2.INS.CSF\tN\tGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGACGGCTTGTGGGACACAGGTTGTGAGAGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTGTGAGGGTGCCCGGGATGGCTTGTGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTGTGAGACGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGAGATGCCCAGGACGGCTTGTGGGGAACAGGCTGTGAGGGTGCCCGGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGAT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=583;END=160071;SUPPORT=24;COVERAGE=28,28,28,30,27;STRAND=+-;AF=0.857;STDEV_LEN=0.953;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:26:4:24", - "chr16\t160389\tSniffles2.INS.BSF\tN\tGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGCTGCAAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGATGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCTGGGACGGCTTGTGGGGCACAGGTTGTGAGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=328;END=160389;SUPPORT=25;COVERAGE=28,30,30,29,27;STRAND=+-;AF=0.833;STDEV_LEN=0.277;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:19:5:25", - "chr16\t160753\tSniffles2.INS.ESF\tN\tGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCAGGATGGCTTGTGGGGCACAGGCTGCAAGAGGTGCCCAGGACGGCTTGTGGGGCACAGGTTGTGAGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=145;END=160753;SUPPORT=27;COVERAGE=30,28,28,27,27;STRAND=+-;AF=0.964;STDEV_LEN=0.352;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:60:1:27", - "chr16\t163320\tSniffles2.DEL.5DSF\tagtgagtaggagacagtggggagaggacagtggagaggggacagtgaggaggggaccatgggaaggggaccgtggagtggggacagtgaggaggggaccatagggagggga\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-111;END=163431;SUPPORT=7;COVERAGE=23,22,22,22,22;STRAND=+-;AF=0.318;STDEV_LEN=1.095;STDEV_POS=10.733\tGT:GQ:DR:DV\t0/1:28:15:7", - "chr16\t163591\tSniffles2.DEL.5ESF\tggaggggaccgtgggaaggagacagtgaggaggggaccttggggaggggacagtgaggaggggaccatggggaggggacagtgaggaggggacaatggagaggggacagtgaggaggggactgtggggagaggacagtgaggaggggaccatggggagggcacagtggggaggggagagtgaggaagggacagtgaggaggggactgtgg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-210;END=163801;SUPPORT=7;COVERAGE=22,22,22,22,21;STRAND=+-;AF=0.318;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:28:15:7", - "chr16\t164801\tSniffles2.INS.FSF\tN\tCGGGGTCGCGGGGCGGGCGGGTCGCGGGGCGGGGTCGCGGGGGCGGGCGAGGTC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=54;END=164801;SUPPORT=8;COVERAGE=21,21,21,21,21;STRAND=+-;AF=0.381;STDEV_LEN=2.16;STDEV_POS=17.972;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:43:13:8", - "chr16\t182789\tSniffles2.INS.10SF\tN\tTGAAACACCGTCTCTACTAAAAATACAAAAATTAGCCAGGCATAGTGGCGGGCGCCTGTAATCCCAGCTGTTCGGGAGGCTGAGGCAGGACAATCACTTAAACCAGGGAAGCAGAGGTTGCAGTGAGCTGAGATCGAGCCACTGCACTCCAGCCTGGGCGACAGACCGAGACTGTCTCAAAAAAAAGACCGGGCACGGTGGCTCACGCCTGTAATCCCACCACTTTGGGAGGCTGAGGCGGGCTGATCACGATGTCAGGAGATCTAGACCATCCTGGCCAACATGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=286;END=182789;SUPPORT=12;COVERAGE=13,12,12,12,12;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:33:0:12", - "chr16\t186052\tSniffles2.DEL.5FSF\tggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacgggg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-629;END=186681;SUPPORT=6;COVERAGE=11,11,11,11,11;STRAND=+-;AF=0.545;STDEV_LEN=8.5;STDEV_POS=8.5\tGT:GQ:DR:DV\t0/1:33:5:6", - "chr16\t186294\tSniffles2.DEL.60SF\tcagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacgggg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-863;END=187157;SUPPORT=5;COVERAGE=11,11,11,11,10;STRAND=+-;AF=0.455;STDEV_LEN=0.577;STDEV_POS=6.928\tGT:GQ:DR:DV\t0/1:33:6:5", - "chr16\t362990\tSniffles2.INS.12SF\tN\tGACTTAGCACCGGGGGGTCTCGGGCTGCGGCTGCTCTCCCA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=42;END=362990;SUPPORT=3;COVERAGE=7,6,6,6,5;STRAND=+-;AF=0.5;STDEV_LEN=0.577;STDEV_POS=9.238;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:21:3:3", - "chr16\t370391\tSniffles2.INS.13SF\tN\tCTACCCTGCCCCGGCTCTCACCCCCTACCCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCGGCTCTCACCCCCTACCCCGGCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCGCTACCCTGCCCCCGGCTCTCACCGCTACCCCCCGGCTCTCACCCGCTACCCCGCCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCCGGCCCCCCGGCTCTCACCTCCTACCCGGCCCCGGCTCTCACCCGCTCCCCCGGCCCCCGGCTCTCACCCGCTCACCCCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCTCGGCTCTCACCCCCTACCCCGGCCCCGGCTCTCACCCCCTACCCCTGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCCGGCTCTCACCCGCTACCCCGGCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGGCTCTCACTCC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=736;END=370391;SUPPORT=7;COVERAGE=7,7,7,7,7;STRAND=+-;AF=1;STDEV_LEN=65.282;STDEV_POS=1.095;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:19:0:7", - "chr16\t378308\tSniffles2.INS.14SF\tN\tCCACTCTGACTGCCATCGCCACTCTGACTGCCATCC\t60\tGT\tPRECISE;SVTYPE=INS;SVLEN=36;END=378308;SUPPORT=4;COVERAGE=17,17,17,18,18;STRAND=+-;AF=0.235;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:3:13:4", - "chr16\t378517\tSniffles2.INS.15SF\tN\tGCCATCGCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCTGACTGCCATCGCCACCCACACTGCCATCCCCACCCGCACTGCCATCGCCACCCTGACTGCCATCGCCACCCACAATGCCATCCCCACCCGCACTGCCATCGCCACCCGCACTGCCATCCCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCACACTGCCATC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=240;END=378517;SUPPORT=12;COVERAGE=17,18,18,18,18;STRAND=+-;AF=0.667;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:26:6:12", - "chr16\t397717\tSniffles2.INS.16SF\tN\tTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGTGGGGGTGGGGGTGTGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGTGAGGGAGTCGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGTGAGGGAGTCGGGGGGTGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGGC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=491;END=397717;SUPPORT=3;COVERAGE=3,3,3,3,3;STRAND=+-;AF=1;STDEV_LEN=2.309;STDEV_POS=5.196;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:8:0:3", - "chr16\t504280\tSniffles2.INS.17SF\tN\tTCCATCTCCTCCTGTACCCCCTCACCTCCTTGTGCACCCCCTCACCTCCTGTACCCCCTCACCTCCTCTGTA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=74;END=504280;SUPPORT=4;COVERAGE=4,4,4,4,4;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:11:0:4", - "chr16\t504419\tSniffles2.INS.18SF\tN\tTCACCTCCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCTCACCTCCTCCTGTACCCCTCACCTCCTTGTGCACCCCCTCACCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCCTCACCTCCTCCTGTACCCCCTCACCTCCTTGTGCACCCCCTCACCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCCTCACCTCCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=256;END=504419;SUPPORT=4;COVERAGE=4,4,4,4,5;STRAND=+-;AF=1;STDEV_LEN=0.707;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:11:0:4", - "chr16\t507831\tSniffles2.INS.19SF\tN\tTTCAGTATCATCTGCCCGTTCTGAGCCATTTGCTCTCTAGCCCTACCATACAGCTGCCATCCTAAGAGTACGTTTCCCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=81;END=507831;SUPPORT=4;COVERAGE=5,5,5,5,7;STRAND=+-;AF=0.8;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:1:1:4", - "chr16\t534179\tSniffles2.INS.1ASF\tN\tGGGCCGTGGTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACGGGGCCGTGGTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACGGGGCCGTGGTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=162;END=534179;SUPPORT=5;COVERAGE=5,5,5,5,4;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:13:0:5", - "chr16\t544781\tSniffles2.INS.1BSF\tN\tCGTCTCCCCCACGTCGCCTCCCCCCACGTCGCCTCCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCTCACGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGTCGC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=344;END=544781;SUPPORT=8;COVERAGE=8,8,8,8,8;STRAND=+-;AF=1;STDEV_LEN=4.69;STDEV_POS=25.5;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:22:0:8", - "chr16\t550769\tSniffles2.INS.1CSF\tN\tCGGTGAGGGTCCCCGGTCGGTGAGGGCGCCCCGTCAGTGAGGGTCCCGGTCAGTGAGGGCCCCGGTCGGTGAGGGTCCCCGGTCGGTGAGGGCCCCTGTCGGTGAGGGCCCCGGTCGGTGAGGGACCCGGTCGGTGAGGGCCCCCTGTCGGTGAGGGTCCCCTGTCGGTGAGGGCCCCGGTCGGTGAGGGCCCCGGTCGGTGAGGGTCCCCTGTCGGTGAGGGTCCCCTGTCGGTGAGGGTCCCGGTCGGTGAGGGCCCCGGTCGGTGAGGGTGCCCCGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=280;END=550769;SUPPORT=13;COVERAGE=13,13,13,13,13;STRAND=+-;AF=1;STDEV_LEN=1;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:36:0:13", - "chr16\t553057\tSniffles2.INS.1DSF\tN\tTGCCCCCCACCCCTGCACAGGTGCCCCCTCCCCTACCCCGCTGCACCCACACCCAACTCGTGCCCCCCCACCCCTGCACAGGTGCCCCCTCCCCTACCCCGCTGCACCCACACCCAACTCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=121;END=553057;SUPPORT=6;COVERAGE=12,11,11,11,10;STRAND=+-;AF=0.545;STDEV_LEN=0.577;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:33:5:6", - "chr16\t571110\tSniffles2.INS.1FSF\tN\tTGGCTAGCCTGTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTGTGTGTGTCTGGCTAGCCTGGTGCCCGTGTGTGTGTGTATGTGTGTGTGTGTGTGTGTGTCTGGCTAGCTGGCGCCCGTGGCTAGCCTGGTGCCCGTGTGTGTGTGTATGTATGTGTCTGGCTAGCCTGGTGCCCGTGGCTAGCCTGGTGCCCGTGTGTGTGTGTGTGGGGGGGGCTAGCCTTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTCTGGCTAGCGTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTGTGTGTGCTAGCCTGGCGCCCGTGTGTGTGTGTGTGTGTGTCTGGCTAGCCTGGCACCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=358;END=571110;SUPPORT=16;COVERAGE=18,17,16,16,18;STRAND=+-;AF=1;STDEV_LEN=3.78;STDEV_POS=14.714;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:44:0:16", - "chr16\t579380\tSniffles2.DEL.62SF\tcagagaagagacagacacacagccccgaaggtggtgcaggcacaggccctagaggtgccccgggcccagagactagagatgccccgggcccggagactagaggtgccccgggcccggaga\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-120;END=579500;SUPPORT=6;COVERAGE=11,11,11,11,10;STRAND=+-;AF=0.545;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:33:5:6", - "chr16\t579636\tSniffles2.DEL.61SF\tcccggagactagaggtgccccgggcccggagactagaggtgccccgggcccggagacttgaggtgccccggg\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-72;END=579708;SUPPORT=5;COVERAGE=11,11,11,10,10;STRAND=+-;AF=0.455;STDEV_LEN=11.5;STDEV_POS=105.434\tGT:GQ:DR:DV\t0/1:33:6:5", - "chr16\t585059\tSniffles2.DEL.63SF\tcccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctccccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctccccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctc\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-156;END=585215;SUPPORT=6;COVERAGE=6,6,6,6,6;STRAND=+-;AF=1;STDEV_LEN=0.5;STDEV_POS=56.518\tGT:GQ:DR:DV\t1/1:16:0:6", - "chr16\t587440\tSniffles2.INS.20SF\tN\tTCCCTCCCTTCACTGGGCCTGCTGCCCCAGAGTCCA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=36;END=587440;SUPPORT=5;COVERAGE=5,5,5,5,5;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=41.569;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:13:0:5", - "chr16\t611801\tSniffles2.DEL.64SF\tgggacagccgccttcgcctgtagaatcaagagcagggacagccgccctggcctgtagaatcaagagcacgggacagccgccctggcctgtagaatcaagagcacgggacagccgccctggcctgtagaatcaagagcagggacagccgccctggcctgtagaatcaagagcaagggacagccgccctggcctgtagaatcaagagcaagggacagccgcctttgcctgtagaatcaagagcag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-243;END=612044;SUPPORT=4;COVERAGE=3,4,4,4,4;STRAND=+-;AF=1;STDEV_LEN=0.707;STDEV_POS=14.142\tGT:GQ:DR:DV\t1/1:11:0:4", - "chr16\t631728\tSniffles2.DEL.65SF\tcttctcccaccccttcactgcctctccttccatcctctcctcccaccctctcctcccatccactcctcccatccacttcttccatcct\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-88;END=631816;SUPPORT=17;COVERAGE=17,17,17,17,16;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t1/1:47:0:17", - "chr16\t660943\tSniffles2.INS.23SF\tN\tCCCCCTGTTCGGCCCCTCCCCAGGCCCCCCCCCGCCCGGCCTCAGGCCCCGCCCCCTGTTCGGCCCCTCCCCAGGCCCGGCCTCAGGCCCCGCCCCCTGTTCGGCCCCTCCCCAG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=115;END=660943;SUPPORT=17;COVERAGE=16,16,15,16,16;STRAND=+-;AF=1;STDEV_LEN=1.803;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:47:0:17", - "chr16\t665215\tSniffles2.DEL.66SF\tcctcagtctgcagcctgctagggacgcacggccacactcctgtctttcag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-50;END=665265;SUPPORT=22;COVERAGE=19,21,22,22,21;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t1/1:60:0:22", - "chr16\t696679\tSniffles2.INS.24SF\tN\tCCCACCCCAAAGCCACCATCCGCTCCCACCTCCATAGGGTTGCTGCTGCCCGCCCCTGCCCCCCAGCCCTGTCCCCCCCACCACCCAGCCTGGGCGCACACCCCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=105;END=696679;SUPPORT=10;COVERAGE=11,10,10,10,10;STRAND=+-;AF=1;STDEV_LEN=0.408;STDEV_POS=1.633;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:27:0:10", - "chr16\t746237\tSniffles2.DEL.67SF\tgaggtgggttcactgcgggtctgcctggctgggcagcaggagaggaggtgggttcactgcgggtctgcctggctgggcagcaggagaggaggtgggttcactgcaggtctgtctggctgggcagcaggaggggagaggtggggtcactgcgggtctgcagggctgcaggaggggagaggtggggtcactgcaggtctgtctggctgggcagcaggagaggaggtgggttcactgcaggtctgtctgggcgggctgcaggagaggaggtggggtcactgcgggtctgtctgggcgggctgcaggagag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-307;END=746544;SUPPORT=7;COVERAGE=13,13,13,13,11;STRAND=+-;AF=0.538;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:40:6:7", - "chr16\t760502\tSniffles2.INS.25SF\tN\tAGCCATGAAACCTGGGCCCGGGCTCCCACTCACACCCCACCCCCACCCAGGGCAGCCGTGAAACCTGGGCCCTGGGCTCCCACCCACGCCCCACACCCACCCAGGGC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=107;END=760502;SUPPORT=16;COVERAGE=16,16,16,16,17;STRAND=+-;AF=1;STDEV_LEN=0.518;STDEV_POS=11.667;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:44:0:16", - "chr16\t763776\tSniffles2.INS.26SF\tN\tGCATCCCATCCCCCGTCCCCTCCCCCACACCCCTCCCCCACCCCCACGTCCCCTCCCCACCCCTCCCCCACACCCTCCCCCACCCCTCCCCATGTCCCCTCCCCTACCTCCTCCCCCCGCATCCCCTCCCCCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=133;END=763776;SUPPORT=20;COVERAGE=19,19,20,20,20;STRAND=+-;AF=1;STDEV_LEN=0.789;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:55:0:20", - "chr16\t767712\tSniffles2.INS.2ASF\tN\tGCGCATGGGGGGCGTGGGAGGGGGGTGCGTGGAGGAGGGGCGGTGTGGAGGGGGGCGCGTGGGGGTGTGTGGGGGGGGCACGTGGAGGGGGGCGTGTGGGGGGGTGCGTGGAGGAGGGGCGCGTGGAGGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=130;END=767712;SUPPORT=5;COVERAGE=15,15,15,15,14;STRAND=+-;AF=0.333;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:22:10:5", - "chr16\t767829\tSniffles2.INS.29SF\tN\tGGTGTGGAGGGGGGCGCGTGGGGGTGTGTGGGGGGGGGCACGTGGAGGGGGCGTGTGGGGGGGTGCGTGGAGGAGGGGCGCGTGGAGGA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=89;END=767829;SUPPORT=9;COVERAGE=15,15,15,15,14;STRAND=+-;AF=0.6;STDEV_LEN=3.715;STDEV_POS=36.697;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:34:6:9", - "chr16\t767989\tSniffles2.INS.28SF\tN\tGGGGCACATGGGGGTGCGTGGGGGGCGTGTGGGGGGTGCGTGGAGGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=47;END=767989;SUPPORT=6;COVERAGE=15,15,15,14,14;STRAND=+-;AF=0.4;STDEV_LEN=1.5;STDEV_POS=11.547;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:34:9:6", - "chr16\t769171\tSniffles2.INS.2BSF\tN\tCCCCGGCCCCGGCCCCAGCCCCGGCCCCACCCCGGCCCCAGCCCCAGCCCCAGCCCCAGCCCCACCCCCGGCCCCAGCCCCAGCCCCAGCCCCAGCCCCGGCCCCACCCCCACCCCCGGCCCCGGCCCCGGCCCCACCCCCGGCCCCGGCCCCGGCCCCACCCCCGGCCCCGGCCCCACCCCCGGCCCCGGCCCCAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=197;END=769171;SUPPORT=6;COVERAGE=14,13,13,13,13;STRAND=+-;AF=0.462;STDEV_LEN=0.816;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:40:7:6", - "chr16\t795446\tSniffles2.INS.2CSF\tN\tCCCCCGTGCTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCTGTGCTGCCCGTGTGGCTGCCCCCGGCCCCGCGCCCTTCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=87;END=795446;SUPPORT=8;COVERAGE=13,13,13,13,13;STRAND=+-;AF=0.615;STDEV_LEN=0.577;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:27:5:8", - "chr16\t795594\tSniffles2.INS.2DSF\tN\tGCTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCTTCTCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCTTCTCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCTGTGCTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCTCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCTTCTCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCGCCCCGCCCCGCCCCTCCCCTCCCCCCCCCCCGC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=621;END=795594;SUPPORT=5;COVERAGE=13,13,13,13,13;STRAND=+-;AF=0.385;STDEV_LEN=2.646;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:27:8:5", - "chr16\t818868\tSniffles2.INS.2ESF\tN\tTGGTGAAGACTGTAGTGATGGTGATGATGGTGAAGACTGTAGTGATGATGGTGGTGAAGACTGTAGTGATGTTGATATTGGTGATGAAGACTATAGTGATAGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTAGTGATGGTGATGATGATGGTGAAGACTGTAGTGATGGTGATGATGGTGAAGACTGTAGCGATGATGGTGAACACTGTAGTGATGTTGATATTGGTGATGAAGACTATAGTGATGGTGATGATAGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTGTAGTGATGGTGATGAGGTGAGACTATCGTGATGGTGATGATAATGGTGAAGACTATAGTGATGTTGATGTCGGTGGTGAAGACTGTAGTGATGGTGATGATAGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTGTAGTGATGGTGATGATGGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTATAGTGATGATGGTGAAGACTGTAGTGATGGTGATGATAGTGGTGAAGACTGTAGTGATGTTAATGGTGAAGGCTATAGTGATGTTGATGGTGGTGAAGACTGTAGCAATGGTTATGATGTTGGTGAAGACAATAGTGATGGTGATGATGGTGAAGACTATAGTGATGGTGATGATGGTGGTGAAGACTGTAGTGATGGTGATGATAGTGGTGAGGACTGTTAGTGATGATAGTGGTGAAGACTGTAGTGATGATGATGGTGAAGACTATAATGATGATGGTGAAGACCGCCGTGATGGTGATGATGGTGAAGACTGTAGCAATGATGATGGTGAAGACTATAGTGATGTTGAGTTGGTGGTGAAGACTGTAGCGATGGTGATGATGATGGTGAAGACTATAGTGATGATGATGTTGAAGACTATAGTGATGATGATGGTGAAGACCGCCGTGATGGTGATGATGGTGAAGACTGTAGCGATGATGATGGTGAAGACTATAGTGATGCTGATGTTGGTGGTGAAGACTGTAGTGATGGTGATGATGATGGTGAAGACTATAGTGATGATGATGGTGAAGACTATAGTGATGATGATGTGAAGACCGCCGTGATGGTGATGATGGTGAAGACTGTAGCGATGATGATGGTGAAGACTATAGTGATGTTGATGTTGG\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=1173;END=818868;SUPPORT=12;COVERAGE=13,12,12,12,12;STRAND=+-;AF=1;STDEV_LEN=90.396;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:33:0:12", - "chr16\t824382\tSniffles2.INS.2FSF\tN\tTAGGCCCACGACGGCCAGCAGCGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGGAGCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=150;END=824382;SUPPORT=2;COVERAGE=3,3,3,3,2;STRAND=-;AF=0.667;STDEV_LEN=0.707;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:4:1:2", - "chr16\t824874\tSniffles2.INS.31SF\tN\tCGTCCCGTCCGCGGCACCACCGTCCCATCTGTGGCACCAT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=40;END=824874;SUPPORT=2;COVERAGE=3,2,2,2,2;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:5:0:2", - "chr16\t828906\tSniffles2.DEL.68SF\tgcccactggggcccacatcccgcccactgggaccgacatccc\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-42;END=828948;SUPPORT=2;COVERAGE=2,2,2,2,2;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t1/1:5:0:2", - "chr16\t886663\tSniffles2.INS.35SF\tN\tCCACCCTAGGCCCCCGGCGTTCCCCAGGCCCCTCCCACCCTAGGCCCCCGGCGTTCCCCAGGCCCCTCCCACCCTAGGCCCCCGGCGTTCCCCAGGCCCCTCCCACCCTAGGCCCCGGCGTTCCCCAGGCCCCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=134;END=886663;SUPPORT=8;COVERAGE=10,10,10,10,11;STRAND=+-;AF=0.8;STDEV_LEN=0.5;STDEV_POS=22.234;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:2:2:8", - "chr16\t886674\tSniffles2.INS.34SF\tN\tCCCGGCGTTCCCCAGGCCCCTCCCACCCTAGGCCCCCGGCGTTCCCCAGGCCCCTCCCACCCTAGGCCCCCGCGTTCCCCAGGCCCCTCCCACCCTAGG\t60\tGT\tIMPRECISE;SVTYPE=INS;SVLEN=66;END=886674;SUPPORT=2;COVERAGE=10,10,10,10,11;STRAND=+-;AF=0.2;STDEV_LEN=19.348;STDEV_POS=113.694;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/0:2:8:2", - "chr16\t894215\tSniffles2.INS.36SF\tN\tCTGGCTGTCCGCCCACCCATCCCCTGTCCACCGGACCGTCCGCCCACCCGTCCCCATGTCCATCAGACCGTCCGTCCACCTGTCCCCCTGTCCCCTGTCCACCGGACCATTCGCCCACCCATCCCCCTGTCCACCTGGCCATCCGCCCACCTGTCTCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCACTGGACTGTCCGCCCACCTGTCCCCCTGTCCCCTGTCCACCGGACCGTCTGCCCACCCGTCCCCCTGTCCACCTGGCCATCCGCCCACCCATCCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCAGGTCCCCCTGTCCAGCGGACCGTCCACCCACCCGTCCCCCTGTCCACTGGACCGTCCGCCCACCTGTCCCCCTGTCCACCTGGCAGTGCGCCCACCCATCCCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCAGCGGACCGTCCACCCACCT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=521;END=894215;SUPPORT=17;COVERAGE=17,17,17,17,17;STRAND=+-;AF=1;STDEV_LEN=57.393;STDEV_POS=5.5;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:47:0:17", - "chr16\t895843\tSniffles2.INS.37SF\tN\tACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCACGGTCCACAG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=59;END=895843;SUPPORT=4;COVERAGE=17,16,16,16,14;STRAND=+-;AF=0.25;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:6:12:4", - "chr16\t895843\tSniffles2.INS.39SF\tN\tACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCATGGTCCACAGACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCACGGTCCACAGACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCACGGTCCACAG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=177;END=895843;SUPPORT=8;COVERAGE=17,16,16,16,14;STRAND=+-;AF=0.5;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:57:8:8", - "chr16\t896053\tSniffles2.INS.3BSF\tN\tCCACACGCAGGCTGCACGGTCCACAGACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCACGGTCCACACACACGCCTCGGAGGGGTTGTGAGGCTCAGCCAT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=118;END=896053;SUPPORT=8;COVERAGE=17,16,16,16,14;STRAND=+-;AF=0.5;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:57:8:8", - "chr16\t896059\tSniffles2.INS.3ASF\tN\tGCAGGCTGCACGGTCCACAGACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACA\t60\tGT\tIMPRECISE;SVTYPE=INS;SVLEN=58;END=896059;SUPPORT=3;COVERAGE=17,16,16,16,14;STRAND=+-;AF=0.188;STDEV_LEN=0.577;STDEV_POS=38.553;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/0:6:13:3", - "chr16\t903595\tSniffles2.INS.3ESF\tN\tGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTATCTCTGCTGTGTGGTGGTGACCTTTGCACTGCCCGTGGGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCCGTCTCTGCTGTGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCCACAGGACGCCTGTCTCTGCTGTGTGGTGGTGACCTTTGCACTGCCCGTGGGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCTGTCTCTGCTGTGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCCGTCTCTGCTGCGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=600;END=903595;SUPPORT=6;COVERAGE=8,8,8,8,8;STRAND=+-;AF=0.75;STDEV_LEN=0.577;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:3:2:6", - "chr16\t949510\tSniffles2.DEL.6ESF\taatgacagagtcagccaacgacagagtcagagccaacgacagagtcagagacaatgacagagtcagagacaacgacagagtcagagacgacagagtcagagacgacagagtcagagccaatgacagagtcagccaatgacagagtcagagccaacgacagagtcagccaatgacagagtcagagacaacgacagagtcagagacaacgacagagtcagagacgacagagtcagagacgacagagtcagagccaatgacagagtcagccaatgacagagtcagagccaacgacagagtcagccaatgacagagtcagagacaacgacagagttagagacaacgacagagtcagccaaggacagcgtcagccaacgacagaatcagagacaacgacagagtcagccaacgacagagtcagagccaatgagagtcagagccaacgacagagtcagagacgacagagtcagagccaacgacagagtcagccaacgacagagtcagagccaacgacagagtcagccaacgacagagtcagagccaacgacagagtcagccaacgacagagtcagagacaacgacagagtcagagccaacgacagagtcagagacgaaagactcagagccaatgacagagtcagagccaatgacagagtcagccaacgacagagtcagagccaacgacagagtcagccaatgacagagtcagagacagcgacagagttagagacaat\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-731;END=950241;SUPPORT=14;COVERAGE=22,22,22,23,22;STRAND=+-;AF=0.636;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:40:8:14", - "chr16\t950488\tSniffles2.INS.40SF\tN\tCAACGACAGAGTCAGAGACAACGACAGAGTCAGAGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=36;END=950488;SUPPORT=14;COVERAGE=22,23,23,23,23;STRAND=+-;AF=0.609;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:50:9:14", - "chr16\t952880\tSniffles2.DEL.71SF\ttccacacagacacccaccccaaaccagcctcctacacgtccacacagacacccaccccaaaccagcctcctgcacgtccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacacg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-178;END=953058;SUPPORT=16;COVERAGE=24,24,25,25,25;STRAND=+-;AF=0.64;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:45:9:16", - "chr16\t953293\tSniffles2.DEL.72SF\tcaaaccagcctcctacacgtccacacagacacccaccccaaaccagcttcctacacgttcacacagacacgg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-72;END=953365;SUPPORT=15;COVERAGE=24,25,25,25,25;STRAND=+-;AF=0.6;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:58:10:15", - "chr16\t953349\tSniffles2.DEL.75SF\tgttcacacagacacggaccccaaaccagcctcctacacgtccacacagacacccaccccaaaccagcctcctacacgttcacacagacacggaccccacaccagcctcctacacgtccacacagacacccaccccaaaccagcctcctgcacgtccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacacgtccacacagacacccactccaaaccagcctcctacacgtccacacagacaccccaaaccagcctcctacatgtccacacagacacccaccccaaaccagcctcctacatgtccacacagacacccaccccaaaccagcctcctacatgtccacacagacacccaccccaaaccagcctcctacat\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-440;END=953789;SUPPORT=9;COVERAGE=25,25,25,25,25;STRAND=+-;AF=0.36;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:45:16:9", - "chr16\t953507\tSniffles2.DEL.73SF\tacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacacgtccacacag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-106;END=953613;SUPPORT=15;COVERAGE=25,25,25,25,25;STRAND=+-;AF=0.6;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:58:10:15", - "chr16\t954972\tSniffles2.INS.41SF\tN\tCTAAGCGAACCAGACACGTTACATAAAATGCGTGCCTGCAGCAGACGGGGTCTGTGCACACACACACACAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=71;END=954972;SUPPORT=13;COVERAGE=25,24,24,26,26;STRAND=+-;AF=0.542;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:60:11:13", - "chr16\t955127\tSniffles2.INS.44SF\tN\tAACCAGACACGTTACATAAAATGCGTGCCTGCTGCAGACGTGGTGTGTGTATACACACACACACATCTAAGTAAACCAGACACGTTACATAAAATGCGTGCCCGCAGCAGACGTAGTGTGTGCATCCACACACACACATCTAAGTAAACTAGACACGTTACATAAAATGCGTGCCCACAGCAGACGCGGTGTGTGCGTACACACACACACATCTAAGTAAACTAGACACGTTACATAAAATGCGTGCCCGCAGCAGACGCAGTGTGTGCATACACATCTAAGTG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=284;END=955127;SUPPORT=13;COVERAGE=27,26,26,26,27;STRAND=+-;AF=0.5;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:60:13:13", - "chr16\t955473\tSniffles2.INS.45SF\tN\tACACACACACACACACATCTAAGTGAACCAGACACGTTACATAAAATGCGTGCCTGCAGCAGATGCGGTGTGTGCATACACACACACACATCTAAGTAAACCAGACACGTTACATAAAATGCGTGCCTGCAGCAGACGTAGTGTGTGCATCCACACACACACATCTAAGTAAACTAGACACGTTACATAAAATGCGTGCCCGCAGCAGAGACGGTGTGTGCGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=223;END=955473;SUPPORT=15;COVERAGE=24,26,26,27,27;STRAND=+-;AF=0.577;STDEV_LEN=0.5;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:60:11:15", - "chr16\t955933\tSniffles2.INS.46SF\tN\tCACGGCACCCACCCCACGACGGCTCTCTCACATCCACAGGTCTCCGAGTTCACGTCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=57;END=955933;SUPPORT=12;COVERAGE=26,27,27,29,29;STRAND=+-;AF=0.444;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:60:15:12", - "chr16\t956173\tSniffles2.INS.47SF\tN\tCCCACGACGGCTCTCTCACATCCACAGGTCTCCGAGTTCACGTCTCACGGCGCCCA\t60\tGT\tPRECISE;SVTYPE=INS;SVLEN=57;END=956173;SUPPORT=5;COVERAGE=27,29,29,29,29;STRAND=+-;AF=0.172;STDEV_LEN=0.577;STDEV_POS=10.392;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/0:16:24:5", - "chr16\t960401\tSniffles2.DEL.7CSF\tacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacaacactggatcacaacccagacaccatctcatggtgacaacacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacaacacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacaacacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagac\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-864;END=961265;SUPPORT=13;COVERAGE=31,31,31,30,30;STRAND=+-;AF=0.419;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:60:18:13", - "chr16\t960535\tSniffles2.DEL.78SF\tcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacaacacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-262;END=960797;SUPPORT=14;COVERAGE=31,31,31,31,30;STRAND=+-;AF=0.452;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:60:17:14", - "chr16\t961793\tSniffles2.DEL.7ESF\tacagactcacggtgacagcacgggatcacgacccag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-36;END=961829;SUPPORT=13;COVERAGE=30,30,30,30,30;STRAND=+-;AF=0.433;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:60:17:13", - "chr16\t961981\tSniffles2.DEL.7FSF\tacagactcacggtgacagcacgggatcaccacccag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-36;END=962017;SUPPORT=12;COVERAGE=30,30,30,30,30;STRAND=+-;AF=0.4;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:60:18:12", - "chr16\t1075978\tSniffles2.INS.4ASF\tN\tCCCTCCTCCCCTCCCCCTCCTTTCCCTCCCTCTCTCCCTCTCTCCTCCCCGCCTCCCCATCCCTCTCCCTCTCCCTCCTCTCTCTCTCCCCTACCCTGTCTTTCTCTCTGCCTCCCCGCCTCCCCTTCCCTCTCCCCATACCCTGTCTTTCTCTCTCCCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=160;END=1075978;SUPPORT=5;COVERAGE=8,5,5,5,4;STRAND=+-;AF=1;STDEV_LEN=1.155;STDEV_POS=8.737;SUPPORT_LONG=0\tGT:GQ:DR:DV\t1/1:13:0:5", - "chr16\t1076128\tSniffles2.DEL.84SF\tcctccccgcctccccatccctctccctctccctcctctctctctccccctaccctgttttctctctc\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-67;END=1076195;SUPPORT=2;COVERAGE=6,5,4,4,3;STRAND=+;AF=0.5;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:14:2:2", - "chr16\t1190923\tSniffles2.INS.4ESF\tN\tGGGTTTCGCTGACCCAGCAGGCTGGCCTGGTTGTGTGGCCTCAGGCACACTCGGGGTTTCGGTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTCTGACTCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTCTGACTCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTCTTACTCAGCAGGCTGGCCTGGCTGTGTGGCCTCCGGCACACTCGGGGTCTCTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTTTCGGTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCAGGGTTTTGGTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTTGGGGTCTCTGACCCAGTAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=523;END=1190923;SUPPORT=3;COVERAGE=10,10,10,10,11;STRAND=+;AF=0.3;STDEV_LEN=2.646;STDEV_POS=50.013;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:10:7:3", - "chr16\t1191001\tSniffles2.DEL.86SF\tcctggctgtgtggcctcaggcacactcggggtctctgacccagcaggctggcctggctgtgtggcctcaggcacactcggggtctctctgactcagcaggctggcctggctgtgtggcctcaggcacactcggggtctctctgactcagcaggctggcctggctgtgtggcctcaggcacactcggggtctctcttactcagcaggctgg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-210;END=1191211;SUPPORT=7;COVERAGE=10,10,11,11,11;STRAND=+-;AF=0.636;STDEV_LEN=0;STDEV_POS=0\tGT:GQ:DR:DV\t0/1:20:4:7", - "chr16\t1204953\tSniffles2.INS.50SF\tN\tGGGCCCCAGATCAGTGCCGGGGAGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGGCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGGCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=418;END=1204953;SUPPORT=8;COVERAGE=17,16,15,15,15;STRAND=+-;AF=0.533;STDEV_LEN=0.816;STDEV_POS=64;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:47:7:8" - ], + "5cdf920b1f44a66de3a28ead8d3efb24", [ "##contig=", "##contig=", @@ -2510,69 +1940,7 @@ "##INFO=", "##bcftools_viewVersion=1.20+htslib-1.20" ], - [ - "#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO\tFORMAT\ttest", - "chr16\t81884\tSniffles2.INS.4SF\tN\tCTCCAGGAAGCCCTCCTGAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTATCTCCGGAAGCCCTCCTGAATGCTCCCCACGCTGGCCCCTTCTTCCCACCACCCTACCTCCGGGAAGGCCTCCTGAATGCTCCCCACGCTGGCCCCTTCTTCCCACCACCCTACCTCCGGGAAGCCCTCCTGAATGCTCCCCACGCTGGCCCCTTCTTCCCACCACCCTACCTCCAGGAAGCCCTCCTGAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTATCTCCGGGAAGGCCTCCTGAATGCTCCCCACACTGACCCCTTCTTCCCACCACCCTACCTCCGGGAAGGCCTCCTGAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTAT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=398;END=81884;SUPPORT=12;COVERAGE=22,23,24,23,23;STRAND=+-;AF=0.5;STDEV_LEN=0;STDEV_POS=68.361;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:60:12:12", - "chr16\t82169\tSniffles2.INS.1SF\tN\tCTCCGGGAAGGCCTCCTGAATGCTCCCCACACTGACCCCTTCTTCCCACCACCCTAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=57;END=82169;SUPPORT=8;COVERAGE=23,23,23,23,23;STRAND=+-;AF=0.348;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:38:15:8", - "chr16\t153120\tSniffles2.INS.5SF\tN\tACAGTGGGGAGGGGACAGTGGGGAGAGGACAGTAAGGAGGGGACCATGGGGAGGAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=56;END=153120;SUPPORT=23;COVERAGE=22,23,23,23,23;STRAND=+-;AF=1;STDEV_LEN=0.48;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:60:0:23", - "chr16\t160071\tSniffles2.INS.CSF\tN\tGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGACGGCTTGTGGGACACAGGTTGTGAGAGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTGTGAGGGTGCCCGGGATGGCTTGTGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTGTGAGACGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGAGATGCCCAGGACGGCTTGTGGGGAACAGGCTGTGAGGGTGCCCGGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGAT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=583;END=160071;SUPPORT=24;COVERAGE=28,28,28,30,27;STRAND=+-;AF=0.857;STDEV_LEN=0.953;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:26:4:24", - "chr16\t160389\tSniffles2.INS.BSF\tN\tGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGCTGCAAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGATGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCTGGGACGGCTTGTGGGGCACAGGTTGTGAGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=328;END=160389;SUPPORT=25;COVERAGE=28,30,30,29,27;STRAND=+-;AF=0.833;STDEV_LEN=0.277;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:19:5:25", - "chr16\t160753\tSniffles2.INS.ESF\tN\tGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCAGGATGGCTTGTGGGGCACAGGCTGCAAGAGGTGCCCAGGACGGCTTGTGGGGCACAGGTTGTGAGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=145;END=160753;SUPPORT=27;COVERAGE=30,28,28,27,27;STRAND=+-;AF=0.964;STDEV_LEN=0.352;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:60:1:27", - "chr16\t163320\tSniffles2.DEL.5DSF\tagtgagtaggagacagtggggagaggacagtggagaggggacagtgaggaggggaccatgggaaggggaccgtggagtggggacagtgaggaggggaccatagggagggga\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-111;END=163431;SUPPORT=7;COVERAGE=23,22,22,22,22;STRAND=+-;AF=0.318;STDEV_LEN=1.095;STDEV_POS=10.733;AC=1\tGT:GQ:DR:DV\t0/1:28:15:7", - "chr16\t163591\tSniffles2.DEL.5ESF\tggaggggaccgtgggaaggagacagtgaggaggggaccttggggaggggacagtgaggaggggaccatggggaggggacagtgaggaggggacaatggagaggggacagtgaggaggggactgtggggagaggacagtgaggaggggaccatggggagggcacagtggggaggggagagtgaggaagggacagtgaggaggggactgtgg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-210;END=163801;SUPPORT=7;COVERAGE=22,22,22,22,21;STRAND=+-;AF=0.318;STDEV_LEN=0;STDEV_POS=0;AC=1\tGT:GQ:DR:DV\t0/1:28:15:7", - "chr16\t164801\tSniffles2.INS.FSF\tN\tCGGGGTCGCGGGGCGGGCGGGTCGCGGGGCGGGGTCGCGGGGGCGGGCGAGGTC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=54;END=164801;SUPPORT=8;COVERAGE=21,21,21,21,21;STRAND=+-;AF=0.381;STDEV_LEN=2.16;STDEV_POS=17.972;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:43:13:8", - "chr16\t182789\tSniffles2.INS.10SF\tN\tTGAAACACCGTCTCTACTAAAAATACAAAAATTAGCCAGGCATAGTGGCGGGCGCCTGTAATCCCAGCTGTTCGGGAGGCTGAGGCAGGACAATCACTTAAACCAGGGAAGCAGAGGTTGCAGTGAGCTGAGATCGAGCCACTGCACTCCAGCCTGGGCGACAGACCGAGACTGTCTCAAAAAAAAGACCGGGCACGGTGGCTCACGCCTGTAATCCCACCACTTTGGGAGGCTGAGGCGGGCTGATCACGATGTCAGGAGATCTAGACCATCCTGGCCAACATGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=286;END=182789;SUPPORT=12;COVERAGE=13,12,12,12,12;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:33:0:12", - "chr16\t186052\tSniffles2.DEL.5FSF\tggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacgggg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-629;END=186681;SUPPORT=6;COVERAGE=11,11,11,11,11;STRAND=+-;AF=0.545;STDEV_LEN=8.5;STDEV_POS=8.5;AC=1\tGT:GQ:DR:DV\t0/1:33:5:6", - "chr16\t186294\tSniffles2.DEL.60SF\tcagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacgggg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-863;END=187157;SUPPORT=5;COVERAGE=11,11,11,11,10;STRAND=+-;AF=0.455;STDEV_LEN=0.577;STDEV_POS=6.928;AC=1\tGT:GQ:DR:DV\t0/1:33:6:5", - "chr16\t362990\tSniffles2.INS.12SF\tN\tGACTTAGCACCGGGGGGTCTCGGGCTGCGGCTGCTCTCCCA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=42;END=362990;SUPPORT=3;COVERAGE=7,6,6,6,5;STRAND=+-;AF=0.5;STDEV_LEN=0.577;STDEV_POS=9.238;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:21:3:3", - "chr16\t370391\tSniffles2.INS.13SF\tN\tCTACCCTGCCCCGGCTCTCACCCCCTACCCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCGGCTCTCACCCCCTACCCCGGCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCGCTACCCTGCCCCCGGCTCTCACCGCTACCCCCCGGCTCTCACCCGCTACCCCGCCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCCGGCCCCCCGGCTCTCACCTCCTACCCGGCCCCGGCTCTCACCCGCTCCCCCGGCCCCCGGCTCTCACCCGCTCACCCCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCTCGGCTCTCACCCCCTACCCCGGCCCCGGCTCTCACCCCCTACCCCTGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCCGGCTCTCACCCGCTACCCCGGCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGGCTCTCACTCC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=736;END=370391;SUPPORT=7;COVERAGE=7,7,7,7,7;STRAND=+-;AF=1;STDEV_LEN=65.282;STDEV_POS=1.095;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:19:0:7", - "chr16\t378308\tSniffles2.INS.14SF\tN\tCCACTCTGACTGCCATCGCCACTCTGACTGCCATCC\t60\tGT\tPRECISE;SVTYPE=INS;SVLEN=36;END=378308;SUPPORT=4;COVERAGE=17,17,17,18,18;STRAND=+-;AF=0.235;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:3:13:4", - "chr16\t378517\tSniffles2.INS.15SF\tN\tGCCATCGCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCTGACTGCCATCGCCACCCACACTGCCATCCCCACCCGCACTGCCATCGCCACCCTGACTGCCATCGCCACCCACAATGCCATCCCCACCCGCACTGCCATCGCCACCCGCACTGCCATCCCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCACACTGCCATC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=240;END=378517;SUPPORT=12;COVERAGE=17,18,18,18,18;STRAND=+-;AF=0.667;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:26:6:12", - "chr16\t397717\tSniffles2.INS.16SF\tN\tTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGTGGGGGTGGGGGTGTGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGTGAGGGAGTCGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGTGAGGGAGTCGGGGGGTGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGGC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=491;END=397717;SUPPORT=3;COVERAGE=3,3,3,3,3;STRAND=+-;AF=1;STDEV_LEN=2.309;STDEV_POS=5.196;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:8:0:3", - "chr16\t504280\tSniffles2.INS.17SF\tN\tTCCATCTCCTCCTGTACCCCCTCACCTCCTTGTGCACCCCCTCACCTCCTGTACCCCCTCACCTCCTCTGTA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=74;END=504280;SUPPORT=4;COVERAGE=4,4,4,4,4;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:11:0:4", - "chr16\t504419\tSniffles2.INS.18SF\tN\tTCACCTCCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCTCACCTCCTCCTGTACCCCTCACCTCCTTGTGCACCCCCTCACCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCCTCACCTCCTCCTGTACCCCCTCACCTCCTTGTGCACCCCCTCACCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCCTCACCTCCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=256;END=504419;SUPPORT=4;COVERAGE=4,4,4,4,5;STRAND=+-;AF=1;STDEV_LEN=0.707;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:11:0:4", - "chr16\t507831\tSniffles2.INS.19SF\tN\tTTCAGTATCATCTGCCCGTTCTGAGCCATTTGCTCTCTAGCCCTACCATACAGCTGCCATCCTAAGAGTACGTTTCCCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=81;END=507831;SUPPORT=4;COVERAGE=5,5,5,5,7;STRAND=+-;AF=0.8;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:1:1:4", - "chr16\t534179\tSniffles2.INS.1ASF\tN\tGGGCCGTGGTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACGGGGCCGTGGTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACGGGGCCGTGGTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=162;END=534179;SUPPORT=5;COVERAGE=5,5,5,5,4;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:13:0:5", - "chr16\t544781\tSniffles2.INS.1BSF\tN\tCGTCTCCCCCACGTCGCCTCCCCCCACGTCGCCTCCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCTCACGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGTCGC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=344;END=544781;SUPPORT=8;COVERAGE=8,8,8,8,8;STRAND=+-;AF=1;STDEV_LEN=4.69;STDEV_POS=25.5;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:22:0:8", - "chr16\t550769\tSniffles2.INS.1CSF\tN\tCGGTGAGGGTCCCCGGTCGGTGAGGGCGCCCCGTCAGTGAGGGTCCCGGTCAGTGAGGGCCCCGGTCGGTGAGGGTCCCCGGTCGGTGAGGGCCCCTGTCGGTGAGGGCCCCGGTCGGTGAGGGACCCGGTCGGTGAGGGCCCCCTGTCGGTGAGGGTCCCCTGTCGGTGAGGGCCCCGGTCGGTGAGGGCCCCGGTCGGTGAGGGTCCCCTGTCGGTGAGGGTCCCCTGTCGGTGAGGGTCCCGGTCGGTGAGGGCCCCGGTCGGTGAGGGTGCCCCGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=280;END=550769;SUPPORT=13;COVERAGE=13,13,13,13,13;STRAND=+-;AF=1;STDEV_LEN=1;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:36:0:13", - "chr16\t553057\tSniffles2.INS.1DSF\tN\tTGCCCCCCACCCCTGCACAGGTGCCCCCTCCCCTACCCCGCTGCACCCACACCCAACTCGTGCCCCCCCACCCCTGCACAGGTGCCCCCTCCCCTACCCCGCTGCACCCACACCCAACTCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=121;END=553057;SUPPORT=6;COVERAGE=12,11,11,11,10;STRAND=+-;AF=0.545;STDEV_LEN=0.577;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:33:5:6", - "chr16\t571110\tSniffles2.INS.1FSF\tN\tTGGCTAGCCTGTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTGTGTGTGTCTGGCTAGCCTGGTGCCCGTGTGTGTGTGTATGTGTGTGTGTGTGTGTGTGTCTGGCTAGCTGGCGCCCGTGGCTAGCCTGGTGCCCGTGTGTGTGTGTATGTATGTGTCTGGCTAGCCTGGTGCCCGTGGCTAGCCTGGTGCCCGTGTGTGTGTGTGTGGGGGGGGCTAGCCTTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTCTGGCTAGCGTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTGTGTGTGCTAGCCTGGCGCCCGTGTGTGTGTGTGTGTGTGTCTGGCTAGCCTGGCACCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=358;END=571110;SUPPORT=16;COVERAGE=18,17,16,16,18;STRAND=+-;AF=1;STDEV_LEN=3.78;STDEV_POS=14.714;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:44:0:16", - "chr16\t579380\tSniffles2.DEL.62SF\tcagagaagagacagacacacagccccgaaggtggtgcaggcacaggccctagaggtgccccgggcccagagactagagatgccccgggcccggagactagaggtgccccgggcccggaga\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-120;END=579500;SUPPORT=6;COVERAGE=11,11,11,11,10;STRAND=+-;AF=0.545;STDEV_LEN=0;STDEV_POS=0;AC=1\tGT:GQ:DR:DV\t0/1:33:5:6", - "chr16\t579636\tSniffles2.DEL.61SF\tcccggagactagaggtgccccgggcccggagactagaggtgccccgggcccggagacttgaggtgccccggg\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-72;END=579708;SUPPORT=5;COVERAGE=11,11,11,10,10;STRAND=+-;AF=0.455;STDEV_LEN=11.5;STDEV_POS=105.434;AC=1\tGT:GQ:DR:DV\t0/1:33:6:5", - "chr16\t585059\tSniffles2.DEL.63SF\tcccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctccccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctccccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctc\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-156;END=585215;SUPPORT=6;COVERAGE=6,6,6,6,6;STRAND=+-;AF=1;STDEV_LEN=0.5;STDEV_POS=56.518;AC=2\tGT:GQ:DR:DV\t1/1:16:0:6", - "chr16\t587440\tSniffles2.INS.20SF\tN\tTCCCTCCCTTCACTGGGCCTGCTGCCCCAGAGTCCA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=36;END=587440;SUPPORT=5;COVERAGE=5,5,5,5,5;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=41.569;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:13:0:5", - "chr16\t611801\tSniffles2.DEL.64SF\tgggacagccgccttcgcctgtagaatcaagagcagggacagccgccctggcctgtagaatcaagagcacgggacagccgccctggcctgtagaatcaagagcacgggacagccgccctggcctgtagaatcaagagcagggacagccgccctggcctgtagaatcaagagcaagggacagccgccctggcctgtagaatcaagagcaagggacagccgcctttgcctgtagaatcaagagcag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-243;END=612044;SUPPORT=4;COVERAGE=3,4,4,4,4;STRAND=+-;AF=1;STDEV_LEN=0.707;STDEV_POS=14.142;AC=2\tGT:GQ:DR:DV\t1/1:11:0:4", - "chr16\t631728\tSniffles2.DEL.65SF\tcttctcccaccccttcactgcctctccttccatcctctcctcccaccctctcctcccatccactcctcccatccacttcttccatcct\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-88;END=631816;SUPPORT=17;COVERAGE=17,17,17,17,16;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;AC=2\tGT:GQ:DR:DV\t1/1:47:0:17", - "chr16\t660943\tSniffles2.INS.23SF\tN\tCCCCCTGTTCGGCCCCTCCCCAGGCCCCCCCCCGCCCGGCCTCAGGCCCCGCCCCCTGTTCGGCCCCTCCCCAGGCCCGGCCTCAGGCCCCGCCCCCTGTTCGGCCCCTCCCCAG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=115;END=660943;SUPPORT=17;COVERAGE=16,16,15,16,16;STRAND=+-;AF=1;STDEV_LEN=1.803;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:47:0:17", - "chr16\t665215\tSniffles2.DEL.66SF\tcctcagtctgcagcctgctagggacgcacggccacactcctgtctttcag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-50;END=665265;SUPPORT=22;COVERAGE=19,21,22,22,21;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;AC=2\tGT:GQ:DR:DV\t1/1:60:0:22", - "chr16\t696679\tSniffles2.INS.24SF\tN\tCCCACCCCAAAGCCACCATCCGCTCCCACCTCCATAGGGTTGCTGCTGCCCGCCCCTGCCCCCCAGCCCTGTCCCCCCCACCACCCAGCCTGGGCGCACACCCCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=105;END=696679;SUPPORT=10;COVERAGE=11,10,10,10,10;STRAND=+-;AF=1;STDEV_LEN=0.408;STDEV_POS=1.633;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:27:0:10", - "chr16\t746237\tSniffles2.DEL.67SF\tgaggtgggttcactgcgggtctgcctggctgggcagcaggagaggaggtgggttcactgcgggtctgcctggctgggcagcaggagaggaggtgggttcactgcaggtctgtctggctgggcagcaggaggggagaggtggggtcactgcgggtctgcagggctgcaggaggggagaggtggggtcactgcaggtctgtctggctgggcagcaggagaggaggtgggttcactgcaggtctgtctgggcgggctgcaggagaggaggtggggtcactgcgggtctgtctgggcgggctgcaggagag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-307;END=746544;SUPPORT=7;COVERAGE=13,13,13,13,11;STRAND=+-;AF=0.538;STDEV_LEN=0;STDEV_POS=0;AC=1\tGT:GQ:DR:DV\t0/1:40:6:7", - "chr16\t760502\tSniffles2.INS.25SF\tN\tAGCCATGAAACCTGGGCCCGGGCTCCCACTCACACCCCACCCCCACCCAGGGCAGCCGTGAAACCTGGGCCCTGGGCTCCCACCCACGCCCCACACCCACCCAGGGC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=107;END=760502;SUPPORT=16;COVERAGE=16,16,16,16,17;STRAND=+-;AF=1;STDEV_LEN=0.518;STDEV_POS=11.667;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:44:0:16", - "chr16\t763776\tSniffles2.INS.26SF\tN\tGCATCCCATCCCCCGTCCCCTCCCCCACACCCCTCCCCCACCCCCACGTCCCCTCCCCACCCCTCCCCCACACCCTCCCCCACCCCTCCCCATGTCCCCTCCCCTACCTCCTCCCCCCGCATCCCCTCCCCCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=133;END=763776;SUPPORT=20;COVERAGE=19,19,20,20,20;STRAND=+-;AF=1;STDEV_LEN=0.789;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:55:0:20", - "chr16\t767712\tSniffles2.INS.2ASF\tN\tGCGCATGGGGGGCGTGGGAGGGGGGTGCGTGGAGGAGGGGCGGTGTGGAGGGGGGCGCGTGGGGGTGTGTGGGGGGGGCACGTGGAGGGGGGCGTGTGGGGGGGTGCGTGGAGGAGGGGCGCGTGGAGGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=130;END=767712;SUPPORT=5;COVERAGE=15,15,15,15,14;STRAND=+-;AF=0.333;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:22:10:5", - "chr16\t767829\tSniffles2.INS.29SF\tN\tGGTGTGGAGGGGGGCGCGTGGGGGTGTGTGGGGGGGGGCACGTGGAGGGGGCGTGTGGGGGGGTGCGTGGAGGAGGGGCGCGTGGAGGA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=89;END=767829;SUPPORT=9;COVERAGE=15,15,15,15,14;STRAND=+-;AF=0.6;STDEV_LEN=3.715;STDEV_POS=36.697;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:34:6:9", - "chr16\t767989\tSniffles2.INS.28SF\tN\tGGGGCACATGGGGGTGCGTGGGGGGCGTGTGGGGGGTGCGTGGAGGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=47;END=767989;SUPPORT=6;COVERAGE=15,15,15,14,14;STRAND=+-;AF=0.4;STDEV_LEN=1.5;STDEV_POS=11.547;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:34:9:6", - "chr16\t769171\tSniffles2.INS.2BSF\tN\tCCCCGGCCCCGGCCCCAGCCCCGGCCCCACCCCGGCCCCAGCCCCAGCCCCAGCCCCAGCCCCACCCCCGGCCCCAGCCCCAGCCCCAGCCCCAGCCCCGGCCCCACCCCCACCCCCGGCCCCGGCCCCGGCCCCACCCCCGGCCCCGGCCCCGGCCCCACCCCCGGCCCCGGCCCCACCCCCGGCCCCGGCCCCAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=197;END=769171;SUPPORT=6;COVERAGE=14,13,13,13,13;STRAND=+-;AF=0.462;STDEV_LEN=0.816;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:40:7:6", - "chr16\t795446\tSniffles2.INS.2CSF\tN\tCCCCCGTGCTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCTGTGCTGCCCGTGTGGCTGCCCCCGGCCCCGCGCCCTTCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=87;END=795446;SUPPORT=8;COVERAGE=13,13,13,13,13;STRAND=+-;AF=0.615;STDEV_LEN=0.577;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:27:5:8", - "chr16\t795594\tSniffles2.INS.2DSF\tN\tGCTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCTTCTCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCTTCTCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCTGTGCTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCTCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCTTCTCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCGCCCCGCCCCGCCCCTCCCCTCCCCCCCCCCCGC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=621;END=795594;SUPPORT=5;COVERAGE=13,13,13,13,13;STRAND=+-;AF=0.385;STDEV_LEN=2.646;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:27:8:5", - "chr16\t818868\tSniffles2.INS.2ESF\tN\tTGGTGAAGACTGTAGTGATGGTGATGATGGTGAAGACTGTAGTGATGATGGTGGTGAAGACTGTAGTGATGTTGATATTGGTGATGAAGACTATAGTGATAGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTAGTGATGGTGATGATGATGGTGAAGACTGTAGTGATGGTGATGATGGTGAAGACTGTAGCGATGATGGTGAACACTGTAGTGATGTTGATATTGGTGATGAAGACTATAGTGATGGTGATGATAGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTGTAGTGATGGTGATGAGGTGAGACTATCGTGATGGTGATGATAATGGTGAAGACTATAGTGATGTTGATGTCGGTGGTGAAGACTGTAGTGATGGTGATGATAGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTGTAGTGATGGTGATGATGGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTATAGTGATGATGGTGAAGACTGTAGTGATGGTGATGATAGTGGTGAAGACTGTAGTGATGTTAATGGTGAAGGCTATAGTGATGTTGATGGTGGTGAAGACTGTAGCAATGGTTATGATGTTGGTGAAGACAATAGTGATGGTGATGATGGTGAAGACTATAGTGATGGTGATGATGGTGGTGAAGACTGTAGTGATGGTGATGATAGTGGTGAGGACTGTTAGTGATGATAGTGGTGAAGACTGTAGTGATGATGATGGTGAAGACTATAATGATGATGGTGAAGACCGCCGTGATGGTGATGATGGTGAAGACTGTAGCAATGATGATGGTGAAGACTATAGTGATGTTGAGTTGGTGGTGAAGACTGTAGCGATGGTGATGATGATGGTGAAGACTATAGTGATGATGATGTTGAAGACTATAGTGATGATGATGGTGAAGACCGCCGTGATGGTGATGATGGTGAAGACTGTAGCGATGATGATGGTGAAGACTATAGTGATGCTGATGTTGGTGGTGAAGACTGTAGTGATGGTGATGATGATGGTGAAGACTATAGTGATGATGATGGTGAAGACTATAGTGATGATGATGTGAAGACCGCCGTGATGGTGATGATGGTGAAGACTGTAGCGATGATGATGGTGAAGACTATAGTGATGTTGATGTTGG\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=1173;END=818868;SUPPORT=12;COVERAGE=13,12,12,12,12;STRAND=+-;AF=1;STDEV_LEN=90.396;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:33:0:12", - "chr16\t824382\tSniffles2.INS.2FSF\tN\tTAGGCCCACGACGGCCAGCAGCGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGGAGCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=150;END=824382;SUPPORT=2;COVERAGE=3,3,3,3,2;STRAND=-;AF=0.667;STDEV_LEN=0.707;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:4:1:2", - "chr16\t824874\tSniffles2.INS.31SF\tN\tCGTCCCGTCCGCGGCACCACCGTCCCATCTGTGGCACCAT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=40;END=824874;SUPPORT=2;COVERAGE=3,2,2,2,2;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:5:0:2", - "chr16\t828906\tSniffles2.DEL.68SF\tgcccactggggcccacatcccgcccactgggaccgacatccc\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-42;END=828948;SUPPORT=2;COVERAGE=2,2,2,2,2;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;AC=2\tGT:GQ:DR:DV\t1/1:5:0:2", - "chr16\t886663\tSniffles2.INS.35SF\tN\tCCACCCTAGGCCCCCGGCGTTCCCCAGGCCCCTCCCACCCTAGGCCCCCGGCGTTCCCCAGGCCCCTCCCACCCTAGGCCCCCGGCGTTCCCCAGGCCCCTCCCACCCTAGGCCCCGGCGTTCCCCAGGCCCCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=134;END=886663;SUPPORT=8;COVERAGE=10,10,10,10,11;STRAND=+-;AF=0.8;STDEV_LEN=0.5;STDEV_POS=22.234;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:2:2:8", - "chr16\t886674\tSniffles2.INS.34SF\tN\tCCCGGCGTTCCCCAGGCCCCTCCCACCCTAGGCCCCCGGCGTTCCCCAGGCCCCTCCCACCCTAGGCCCCCGCGTTCCCCAGGCCCCTCCCACCCTAGG\t60\tGT\tIMPRECISE;SVTYPE=INS;SVLEN=66;END=886674;SUPPORT=2;COVERAGE=10,10,10,10,11;STRAND=+-;AF=0.2;STDEV_LEN=19.348;STDEV_POS=113.694;SUPPORT_LONG=0;AC=0\tGT:GQ:DR:DV\t0/0:2:8:2", - "chr16\t894215\tSniffles2.INS.36SF\tN\tCTGGCTGTCCGCCCACCCATCCCCTGTCCACCGGACCGTCCGCCCACCCGTCCCCATGTCCATCAGACCGTCCGTCCACCTGTCCCCCTGTCCCCTGTCCACCGGACCATTCGCCCACCCATCCCCCTGTCCACCTGGCCATCCGCCCACCTGTCTCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCACTGGACTGTCCGCCCACCTGTCCCCCTGTCCCCTGTCCACCGGACCGTCTGCCCACCCGTCCCCCTGTCCACCTGGCCATCCGCCCACCCATCCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCAGGTCCCCCTGTCCAGCGGACCGTCCACCCACCCGTCCCCCTGTCCACTGGACCGTCCGCCCACCTGTCCCCCTGTCCACCTGGCAGTGCGCCCACCCATCCCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCAGCGGACCGTCCACCCACCT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=521;END=894215;SUPPORT=17;COVERAGE=17,17,17,17,17;STRAND=+-;AF=1;STDEV_LEN=57.393;STDEV_POS=5.5;SUPPORT_LONG=0;AC=2\tGT:GQ:DR:DV\t1/1:47:0:17", - "chr16\t895843\tSniffles2.INS.37SF\tN\tACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCACGGTCCACAG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=59;END=895843;SUPPORT=4;COVERAGE=17,16,16,16,14;STRAND=+-;AF=0.25;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:6:12:4", - "chr16\t895843\tSniffles2.INS.39SF\tN\tACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCATGGTCCACAGACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCACGGTCCACAGACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCACGGTCCACAG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=177;END=895843;SUPPORT=8;COVERAGE=17,16,16,16,14;STRAND=+-;AF=0.5;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:57:8:8", - "chr16\t896053\tSniffles2.INS.3BSF\tN\tCCACACGCAGGCTGCACGGTCCACAGACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCACGGTCCACACACACGCCTCGGAGGGGTTGTGAGGCTCAGCCAT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=118;END=896053;SUPPORT=8;COVERAGE=17,16,16,16,14;STRAND=+-;AF=0.5;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:57:8:8", - "chr16\t896059\tSniffles2.INS.3ASF\tN\tGCAGGCTGCACGGTCCACAGACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACA\t60\tGT\tIMPRECISE;SVTYPE=INS;SVLEN=58;END=896059;SUPPORT=3;COVERAGE=17,16,16,16,14;STRAND=+-;AF=0.188;STDEV_LEN=0.577;STDEV_POS=38.553;SUPPORT_LONG=0;AC=0\tGT:GQ:DR:DV\t0/0:6:13:3", - "chr16\t903595\tSniffles2.INS.3ESF\tN\tGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTATCTCTGCTGTGTGGTGGTGACCTTTGCACTGCCCGTGGGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCCGTCTCTGCTGTGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCCACAGGACGCCTGTCTCTGCTGTGTGGTGGTGACCTTTGCACTGCCCGTGGGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCTGTCTCTGCTGTGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCCGTCTCTGCTGCGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=600;END=903595;SUPPORT=6;COVERAGE=8,8,8,8,8;STRAND=+-;AF=0.75;STDEV_LEN=0.577;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:3:2:6", - "chr16\t949510\tSniffles2.DEL.6ESF\taatgacagagtcagccaacgacagagtcagagccaacgacagagtcagagacaatgacagagtcagagacaacgacagagtcagagacgacagagtcagagacgacagagtcagagccaatgacagagtcagccaatgacagagtcagagccaacgacagagtcagccaatgacagagtcagagacaacgacagagtcagagacaacgacagagtcagagacgacagagtcagagacgacagagtcagagccaatgacagagtcagccaatgacagagtcagagccaacgacagagtcagccaatgacagagtcagagacaacgacagagttagagacaacgacagagtcagccaaggacagcgtcagccaacgacagaatcagagacaacgacagagtcagccaacgacagagtcagagccaatgagagtcagagccaacgacagagtcagagacgacagagtcagagccaacgacagagtcagccaacgacagagtcagagccaacgacagagtcagccaacgacagagtcagagccaacgacagagtcagccaacgacagagtcagagacaacgacagagtcagagccaacgacagagtcagagacgaaagactcagagccaatgacagagtcagagccaatgacagagtcagccaacgacagagtcagagccaacgacagagtcagccaatgacagagtcagagacagcgacagagttagagacaat\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-731;END=950241;SUPPORT=14;COVERAGE=22,22,22,23,22;STRAND=+-;AF=0.636;STDEV_LEN=0;STDEV_POS=0;AC=1\tGT:GQ:DR:DV\t0/1:40:8:14", - "chr16\t950488\tSniffles2.INS.40SF\tN\tCAACGACAGAGTCAGAGACAACGACAGAGTCAGAGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=36;END=950488;SUPPORT=14;COVERAGE=22,23,23,23,23;STRAND=+-;AF=0.609;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;AC=1\tGT:GQ:DR:DV\t0/1:50:9:14", - "chr16\t952880\tSniffles2.DEL.71SF\ttccacacagacacccaccccaaaccagcctcctacacgtccacacagacacccaccccaaaccagcctcctgcacgtccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacacg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-178;END=953058;SUPPORT=16;COVERAGE=24,24,25,25,25;STRAND=+-;AF=0.64;STDEV_LEN=0;STDEV_POS=0;AC=1\tGT:GQ:DR:DV\t0/1:45:9:16" - ], - "test_reheader.vcf.gz.tbi", - "project.vcf.gz.tbi", + "fe2e9b5e8f54e993c262331759006346", [ "versions.yml:md5,2188f00d20a376929f9f35f824e94667", "versions.yml:md5,572bfd042014333af194207291d12b95", @@ -2584,6 +1952,6 @@ "nf-test": "0.8.4", "nextflow": "24.04.3" }, - "timestamp": "2024-09-03T14:22:17.296103193" + "timestamp": "2024-09-05T14:17:46.151263963" } } \ No newline at end of file From ae40b9d95cfa8f7fbb12682b395fd0c2f7ba254d Mon Sep 17 00:00:00 2001 From: fellen31 Date: Fri, 6 Sep 2024 11:49:43 +0200 Subject: [PATCH 007/106] Remove filter_vep, add missing SNV section and PED file information to output docs --- CHANGELOG.md | 3 +++ docs/output.md | 61 +++++++++++++++++++++++++++++++++++--------------- 2 files changed, 46 insertions(+), 18 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8b4394e9..b07fee6d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,9 +15,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#344](https://github.com/genomic-medicine-sweden/nallo/pull/344) - Changed version to 0.4.0dev - [#346](https://github.com/genomic-medicine-sweden/nallo/pull/346) - Renamed structural_variant_calling to call_svs - [#355](https://github.com/genomic-medicine-sweden/nallo/pull/355) - Updated paraphase to compress and index VCFs within the module +- [#356](https://github.com/genomic-medicine-sweden/nallo/pull/356) - Added SNV and PED file to output documentation ### `Removed` +- [#356](https://github.com/genomic-medicine-sweden/nallo/pull/356) - Removed filter_vep section from output documentation since it is not in the pipeline + ### `Fixed` ### Parameters diff --git a/docs/output.md b/docs/output.md index ae221835..78458c23 100644 --- a/docs/output.md +++ b/docs/output.md @@ -22,7 +22,10 @@ - [FastQC](#fastqc) - [Repeat calling](#repeat-calling) - [Repeat annotation](#repeat-annotation) - - [SNV Annotation](#snv-annotation) + - [SNVs](#snvs) + - [Calling](#calling) + - [Annotation](#annotation) + - [Ranking](#ranking) - [Ranked Variants](#ranked-variants) - [SV Calling](#sv-calling) @@ -34,17 +37,19 @@ The directories listed below will be created in the results directory after the - `assembly_haplotypes` - `assembly_variant_calling` - `cnv_calling` +- `databases` - `methylation` - `multiqc` - `paraphase` +- `pedigree` - `phasing` - `pipeline_info` - `qc_aligned_reads` - `qc_raw_reads` +- `repeat_annotation` - `repeat_calling` -- `snv_annotation` -- `snv_calling` -- `sv_calling` +- `snvs` +- `svs` ### Alignment @@ -245,6 +250,7 @@ Results generated by MultiQC collate pipeline QC from supported tools e.g. FastQ
Output files from Somalier +- `{outputdir}/predigree/{project}.ped`: A PED file with updated sex - `{outputdir}/qc_aligned_reads/somalier/relate/{project}/` - `{project}.html`: HTML report - `{project}.pairs.tsv`: Output information in sample pairs @@ -296,35 +302,54 @@ Results generated by MultiQC collate pipeline QC from supported tools e.g. FastQ - `*.vcf.gz.tbi`: Index of the corresponding VCF file
-### SNV Annotation +### SNVs -[echtvar](https://github.com/brentp/echtvar) and [VEP](https://www.ensembl.org/vep) are used to annotate small variants. -[bcftools](https://samtools.github.io/bcftools/) is used to generate statistics. +#### Calling + +[DeepVariant](https://github.com/google/deepvariant) is used to call variants, [bcftools](https://samtools.github.io/bcftools/bcftools.html) and [GLnexus](https://github.com/dnanexus-rnd/GLnexus) are used to merge variants.
-Output files from SNV Annotation +Output files from SNV calling -- `{outputdir}/databases/echtvar/encode/{project}/` - - `*.zip`: Database with AF and AC for all samples run -- `{outputdir}/snvs/{single_sample,multi_sample/{project}/` - - `*_snvs_annotated*.vcf.gz`: VCF with annotated variants - - `*_snvs_annotated*.vcf.gz.tbi`: Index of the corresponding VCF file +> [!NOTE] +> Variants are only output without annotation and ranking if these subworkflows are turned off. + +- `{outputdir}/snvs/single_sample/{sample}/` + - `{sample}_snv.vcf.gz`: VCF with called variants + - `{sample}_snv.vcf.gz.tbi`: Index of the corresponding VCF file +- `{outputdir}/snvs/multi_sample/{project}/` + - `{project}_snv.vcf.gz`: VCF with called variants + - `{project}_snv.vcf.gz.tbi`: Index of the corresponding VCF file - `{outputdir}/snvs/stats/single_sample/` - `*.stats.txt`: Variant statistics
-### Ranked variants +#### Annotation -#### Filter_vep +[echtvar](https://github.com/brentp/echtvar) and [VEP](https://www.ensembl.org/vep) are used to annotate SNVs. [CADD](https://cadd.gs.washington.edu/) is used to annotate INDELs with CADD scores. -[filter_vep from VEP](https://www.ensembl.org/info/docs/tools/vep/script/vep_filter.html) is used to subset the variants based on a list of HGNC ID:s. Typical use case is that you want to filter your results to only include variants in a predefined set of clinically relevant genes. This step is optional and can be disabled by using the flag `--skip_vep_filter`. You will always get the complete VCF together with the clinical VCF. +
+Output files from SNV Annotation -#### GENMOD +> [!NOTE] +> Variants are only output without ranking if that subworkflows are turned off. + +- `{outputdir}/databases/echtvar/encode/{project}/` + - `*.zip`: Database with AF and AC for all samples run +- `{outputdir}/snvs/single_sample/{sample}/` + - `{sample}_snv_annotated.vcf.gz`: VCF with annotated variants + - `{sample}_snv_annotated.vcf.gz.tbi`: Index of the corresponding VCF file +- `{outputdir}/snvs/multi_sample/{project}/` + - `{project}_snv_annotated.vcf.gz`: VCF with annotated variants + - `{project}_snv_annotated.vcf.gz.tbi`: Index of the corresponding VCF file +
+ +#### Ranking [GENMOD](https://github.com/Clinical-Genomics/genmod) is a simple to use command line tool for annotating and analyzing genomic variations in the VCF file format. GENMOD can annotate genetic patterns of inheritance in vcf files with single or multiple families of arbitrary size. Each variant will be assigned a predicted pathogenicity score. The score will be given both as a raw score and a normalized score with values between 0 and 1. The tags in the INFO field are `RankScore` and `RankScoreNormalized`. The score can be configured to fit your annotations and preferences by modifying the score config file.
-Output files +Output files from SNV ranking - `{outputdir}/snvs/single_sample/{sample}/` - `{sample}_snv_annotated_ranked.vcf.gz`: VCF with annotated and ranked variants From d423172825aced35fb32c6badffd683f4654db11 Mon Sep 17 00:00:00 2001 From: fellen31 Date: Fri, 6 Sep 2024 13:20:30 +0200 Subject: [PATCH 008/106] Fix VEP sha in modules.json --- modules.json | 2 +- modules/nf-core/ensemblvep/vep/ensemblvep-vep.diff | 4 ++-- modules/nf-core/ensemblvep/vep/environment.yml | 2 -- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/modules.json b/modules.json index 85d948fd..104fbfd9 100644 --- a/modules.json +++ b/modules.json @@ -82,7 +82,7 @@ }, "ensemblvep/vep": { "branch": "master", - "git_sha": "54c183cba37cac58860d9967feaae54acf9cc3e0", + "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", "installed_by": ["modules"], "patch": "modules/nf-core/ensemblvep/vep/ensemblvep-vep.diff" }, diff --git a/modules/nf-core/ensemblvep/vep/ensemblvep-vep.diff b/modules/nf-core/ensemblvep/vep/ensemblvep-vep.diff index 7c37a0de..b786e64b 100644 --- a/modules/nf-core/ensemblvep/vep/ensemblvep-vep.diff +++ b/modules/nf-core/ensemblvep/vep/ensemblvep-vep.diff @@ -15,9 +15,9 @@ Changes in module 'nf-core/ensemblvep/vep' --- modules/nf-core/ensemblvep/vep/environment.yml +++ modules/nf-core/ensemblvep/vep/environment.yml -@@ -4,4 +4,4 @@ +@@ -2,4 +2,4 @@ + - conda-forge - bioconda - - defaults dependencies: - - bioconda::ensembl-vep=112.0 + - bioconda::ensembl-vep=110.0 diff --git a/modules/nf-core/ensemblvep/vep/environment.yml b/modules/nf-core/ensemblvep/vep/environment.yml index 7a127746..bf25a4da 100644 --- a/modules/nf-core/ensemblvep/vep/environment.yml +++ b/modules/nf-core/ensemblvep/vep/environment.yml @@ -1,7 +1,5 @@ -name: ensemblvep_vep channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::ensembl-vep=110.0 From 79aaae5e51e87683632fef1e9041b664655f70b2 Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Tue, 10 Sep 2024 13:35:58 +0200 Subject: [PATCH 009/106] Remove fastq QC concatenation (#352) * Remove fastq QC concatenation * Fix configs * Fix outputs and tests * fix config formatting * fix schema * Fix CHANGELOG.md --- CHANGELOG.md | 17 +- CITATIONS.md | 2 - conf/modules/assembly_variant_calling.config | 2 - conf/modules/bam_infer_sex.config | 2 +- conf/modules/call_paralogs.config | 1 + conf/modules/general.config | 37 +- conf/modules/genome_assembly.config | 13 +- conf/modules/methylation.config | 23 +- conf/modules/phasing.config | 3 +- conf/modules/qc_aligned_reads.config | 13 +- conf/modules/snv_annotation.config | 1 + conf/test.config | 94 ++--- docs/output.md | 51 ++- docs/parameters.md | 333 +++++++++--------- docs/usage.md | 10 +- modules/local/fqcrs/Dockerfile | 9 - modules/local/fqcrs/main.nf | 37 -- nextflow.config | 24 +- nextflow_schema.json | 30 +- subworkflows/local/convert_input_files.nf | 13 +- subworkflows/local/qc_aligned_reads.nf | 5 + .../local/utils_nfcore_nallo_pipeline/main.nf | 17 +- tests/main.nf.test | 93 ++--- tests/main.nf.test.snap | 115 +++--- tests/nextflow.config | 35 -- workflows/nallo.nf | 47 +-- 26 files changed, 440 insertions(+), 587 deletions(-) delete mode 100644 modules/local/fqcrs/Dockerfile delete mode 100644 modules/local/fqcrs/main.nf diff --git a/CHANGELOG.md b/CHANGELOG.md index 60549054..628c9509 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#345](https://github.com/genomic-medicine-sweden/nallo/pull/345) - Added first version of a metro map - [#346](https://github.com/genomic-medicine-sweden/nallo/pull/#346) - Added nf-test to call_svs - [#351](https://github.com/genomic-medicine-sweden/nallo/pull/#351) - Added sample name to sniffles2 VCF +- [#352](https://github.com/genomic-medicine-sweden/nallo/pull/352) - Added (hidden) `params.extra__options` for the test profile to modkit, vep, paraphase and hifiasm ### `Changed` @@ -17,19 +18,26 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#346](https://github.com/genomic-medicine-sweden/nallo/pull/346) - Renamed structural_variant_calling to call_svs - [#351](https://github.com/genomic-medicine-sweden/nallo/pull/351) - Changed from using sniffles to bcftools to merge SV calls from multiple samples - [#351](https://github.com/genomic-medicine-sweden/nallo/pull/351) - Renamed the structural variant output files and directories +- [#352](https://github.com/genomic-medicine-sweden/nallo/pull/352) - Changed fastq conversion to run only when the assembly workflow is active +- [#352](https://github.com/genomic-medicine-sweden/nallo/pull/352) - Changed FastQC to run on BAM files to remove concatenation of fastq files +- [#352](https://github.com/genomic-medicine-sweden/nallo/pull/352) - Changed FastQC from the main workflow to QC_ALIGNED_READS, updated output directories and documentation +- [#352](https://github.com/genomic-medicine-sweden/nallo/pull/352) - Combined `--skip_raw_read_qc` and `--skip_aligned_read_qc` parameters into `--skip_qc` - [#355](https://github.com/genomic-medicine-sweden/nallo/pull/355) - Updated paraphase to compress and index VCFs within the module - [#356](https://github.com/genomic-medicine-sweden/nallo/pull/356) - Added SNV and PED file to output documentation ### `Removed` +- [#352](https://github.com/genomic-medicine-sweden/nallo/pull/352) - Removed the fqcrs module - [#356](https://github.com/genomic-medicine-sweden/nallo/pull/356) - Removed filter_vep section from output documentation since it is not in the pipeline ### `Fixed` ### Parameters -| Old parameter | New parameter | -| ------------- | ------------- | +| Old parameter | New parameter | +| ------------------------ | ------------- | +| `--skip_aligned_read_qc` | `--skip_qc` | +| `--skip_raw_read_qc` | `--skip_qc` | > [!NOTE] > Parameter has been updated if both old and new parameter information is present. @@ -38,8 +46,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Module updates -| Tool | Old version | New version | -| ---- | ----------- | ----------- | +| Tool | Old version | New version | +| ----- | ----------- | ----------- | +| fqcrs | 0.1.0 | > [!NOTE] > Version has been updated if both old and new version information is present. diff --git a/CITATIONS.md b/CITATIONS.md index 811889b7..c531a6ea 100644 --- a/CITATIONS.md +++ b/CITATIONS.md @@ -48,8 +48,6 @@ > Andrews, S. (2010). FastQC: A Quality Control Tool for High Throughput Sequence Data [Online]. -- [fqcrs](https://github.com/fellen31/fqcrs) - - [Genmod](https://github.com/Clinical-Genomics/genmod) > Magnusson M, Hughes T, Glabilloy, Bitdeli Chef. genmod: Version 3.7.3. Published online November 15, 2018. doi:10.5281/ZENODO.3841142 diff --git a/conf/modules/assembly_variant_calling.config b/conf/modules/assembly_variant_calling.config index acd8344b..c31206cd 100644 --- a/conf/modules/assembly_variant_calling.config +++ b/conf/modules/assembly_variant_calling.config @@ -19,9 +19,7 @@ process { } withName: '.*:ASSEMBLY_VARIANT_CALLING:DIPCALL' { - ext.args = '--cs' - publishDir = [ path: { "${params.outdir}/assembly_variant_calling/dipcall/${meta.id}" }, mode: params.publish_dir_mode, diff --git a/conf/modules/bam_infer_sex.config b/conf/modules/bam_infer_sex.config index d247a841..0cd27975 100644 --- a/conf/modules/bam_infer_sex.config +++ b/conf/modules/bam_infer_sex.config @@ -31,7 +31,7 @@ process { withName: '.*:BAM_INFER_SEX:RELATE_RELATE' { ext.args = '--infer' publishDir = [ - path: { "${params.outdir}/qc_aligned_reads/somalier/relate/${meta.id}" }, + path: { "${params.outdir}/qc/somalier/relate/${meta.id}" }, mode: params.publish_dir_mode, saveAs: { filename -> filename.equals('versions.yml') ? null : filename } ] diff --git a/conf/modules/call_paralogs.config b/conf/modules/call_paralogs.config index 2451c7aa..4ef63135 100644 --- a/conf/modules/call_paralogs.config +++ b/conf/modules/call_paralogs.config @@ -19,6 +19,7 @@ process { */ withName: '.*:CALL_PARALOGS:PARAPHASE' { + ext.args = { "${params.extra_paraphase_options}" } publishDir = [ path: { "${params.outdir}/paraphase/${meta.id}" }, mode: params.publish_dir_mode, diff --git a/conf/modules/general.config b/conf/modules/general.config index 3f5ad9f1..1ab8f545 100644 --- a/conf/modules/general.config +++ b/conf/modules/general.config @@ -69,29 +69,6 @@ process { } ] } - withName: '.*:NALLO:FASTQC' { - ext.args = '--quiet' - publishDir = [ - path: { "${params.outdir}/qc_raw_reads/fastqc/${meta.id}" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] - } - - withName: '.*:NALLO:FQCRS' { - ext.prefix = { "${reads}" } - publishDir = [ - path: { "${params.outdir}/qc_raw_reads/fqcrs/${meta.id}" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] - } - - withName: '.*:NALLO:CAT_FASTQ' { - publishDir = [ - enabled: false - ] - } withName: '.*:NALLO:SAMPLESHEET_PED' { publishDir = [ @@ -140,13 +117,13 @@ process { ].join(' ') } ext.args4 = '-T \\*' publishDir = [ - mode: params.publish_dir_mode, - path: { "${params.outdir}/aligned_reads/${meta.id}" }, - // only a single BAM file per sample - saveAs: { filename -> - filename.equals('versions.yml') ? null : (meta.n_files == 1 && params.skip_phasing_wf ? filename : null) - } - ] + mode: params.publish_dir_mode, + path: { "${params.outdir}/aligned_reads/${meta.id}" }, + // only a single BAM file per sample + saveAs: { filename -> + filename.equals('versions.yml') ? null : (meta.n_files == 1 && params.skip_phasing_wf ? filename : null) + } + ] } withName: '.*:NALLO:SAMTOOLS_MERGE' { diff --git a/conf/modules/genome_assembly.config b/conf/modules/genome_assembly.config index 761f1eb0..43637246 100644 --- a/conf/modules/genome_assembly.config +++ b/conf/modules/genome_assembly.config @@ -24,29 +24,30 @@ process { ] } - withName: '.*:ASSEMBLY:YAK_PATERNAL' { + withName: '.*:ASSEMBLY:HIFIASM' { + ext.args = { "${params.extra_hifiasm_options}" } + publishDir = [ + enabled: false, + ] + } + withName: '.*:ASSEMBLY:YAK_PATERNAL' { ext.prefix = { "${meta.paternal_id}_yak" } - publishDir = [ enabled: false, ] } withName: '.*:ASSEMBLY:YAK_MATERNAL' { - ext.prefix = { "${meta.maternal_id}_yak" } - publishDir = [ enabled: false, ] } withName: '.*:ASSEMBLY:GFASTATS.*' { - ext.args = '--discover-paths' ext.prefix = { "${assembly.baseName}" } - publishDir = [ path: { "${params.outdir}/assembly_haplotypes/gfastats/${meta.id}" }, mode: params.publish_dir_mode, diff --git a/conf/modules/methylation.config b/conf/modules/methylation.config index 2101bd30..b6c79cec 100644 --- a/conf/modules/methylation.config +++ b/conf/modules/methylation.config @@ -25,10 +25,13 @@ process { } withName: '.*:METHYLATION:MODKIT_PILEUP_UNPHASED' { - - ext.args = '--combine-mods --cpg --combine-strands' + ext.args = { [ + "${params.extra_modkit_options}", + '--combine-mods', + '--cpg', + '--combine-strands', + ].join(' ') } ext.prefix = { "${meta.id}_modkit_pileup" } - publishDir = [ path: { "${params.outdir}/methylation/modkit/pileup/unphased/${meta.id}" }, mode: params.publish_dir_mode, @@ -37,10 +40,14 @@ process { } withName: '.*:METHYLATION:MODKIT_PILEUP_PHASED' { - - ext.args = '--combine-mods --cpg --combine-strands --partition-tag HP' + ext.args = { [ + "${params.extra_modkit_options}", + '--combine-mods', + '--cpg', + '--combine-strands', + '--partition-tag HP' + ].join(' ') } ext.prefix = { "${meta.id}_modkit_pileup_phased" } - publishDir = [ path: { "${params.outdir}/methylation/modkit/pileup/phased/${meta.id}" }, mode: params.publish_dir_mode, @@ -50,9 +57,7 @@ process { } withName: '.*:METHYLATION:BGZIP_MODKIT_PILEUP_UNPHASED' { - ext.prefix = { "${input.simpleName}" } - publishDir = [ path: { "${params.outdir}/methylation/modkit/pileup/unphased/${meta.id}" }, mode: params.publish_dir_mode, @@ -61,9 +66,7 @@ process { } withName: '.*:METHYLATION:BGZIP_MODKIT_PILEUP_PHASED' { - ext.prefix = { "${input.simpleName}" } - publishDir = [ path: { "${params.outdir}/methylation/modkit/pileup/phased/${meta.id}" }, mode: params.publish_dir_mode, diff --git a/conf/modules/phasing.config b/conf/modules/phasing.config index e747b420..1342807a 100644 --- a/conf/modules/phasing.config +++ b/conf/modules/phasing.config @@ -32,7 +32,6 @@ process { "--blocks-file ${meta.id}_phased.blocks.tsv", "--summary-file ${meta.id}_phased.summary.tsv" ].join(' ') } - publishDir = [ path: { "${params.outdir}/" }, mode: params.publish_dir_mode, @@ -105,7 +104,7 @@ process { ].join(' ') ext.prefix = { "${meta.id}_cramino_aligned_phased" } publishDir = [ - path: { "${params.outdir}/qc_aligned_reads/cramino/phased/${meta.id}" }, + path: { "${params.outdir}/qc/cramino/phased/${meta.id}" }, mode: params.publish_dir_mode, saveAs: { filename -> filename.equals('versions.yml') ? null : filename } ] diff --git a/conf/modules/qc_aligned_reads.config b/conf/modules/qc_aligned_reads.config index dda307bb..181f97a7 100644 --- a/conf/modules/qc_aligned_reads.config +++ b/conf/modules/qc_aligned_reads.config @@ -22,7 +22,16 @@ process { ext.args = '--karyotype' ext.prefix = { "${meta.id}_cramino_aligned" } publishDir = [ - path: { "${params.outdir}/qc_aligned_reads/cramino/unphased/${meta.id}" }, + path: { "${params.outdir}/qc/cramino/unphased/${meta.id}" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } + + withName: '.*:QC_ALIGNED_READS:FASTQC' { + ext.args = '--quiet --format bam' + publishDir = [ + path: { "${params.outdir}/qc/fastqc/${meta.id}" }, mode: params.publish_dir_mode, saveAs: { filename -> filename.equals('versions.yml') ? null : filename } ] @@ -35,7 +44,7 @@ process { params.bed ? '' : '--by 500' ].join(' ') } publishDir = [ - path: { "${params.outdir}/qc_aligned_reads/mosdepth/${meta.id}" }, + path: { "${params.outdir}/qc/mosdepth/${meta.id}" }, mode: params.publish_dir_mode, saveAs: { filename -> filename.equals('versions.yml') ? null : filename } ] diff --git a/conf/modules/snv_annotation.config b/conf/modules/snv_annotation.config index 36be4406..9f2b393d 100644 --- a/conf/modules/snv_annotation.config +++ b/conf/modules/snv_annotation.config @@ -39,6 +39,7 @@ process { withName: '.*:SNV_ANNOTATION:ENSEMBLVEP_VEP' { ext.prefix = { "${meta.id}_vep" } ext.args = { [ + "${params.extra_vep_options}", "--dir_plugins .", "--plugin LoFtool,LoFtool_scores.txt", "--plugin pLI,pLI_values.txt", diff --git a/conf/test.config b/conf/test.config index 8cc9b923..269ae157 100644 --- a/conf/test.config +++ b/conf/test.config @@ -18,87 +18,51 @@ params { max_memory = '15.GB' max_time = '6.h' - // Input data - - // Genome references - - fasta = params.pipelines_testdata_base_path + 'nallo/reference/hg38.test.fa.gz' - input = 'https://github.com/genomic-medicine-sweden/test-datasets/raw/2948776ddf24ea131f527aa1f2dc23a43bb7b952/testdata/samplesheet.csv' - - bed = params.pipelines_testdata_base_path + 'nallo/reference/test_data.bed' - - // HiFiCNV - hificnv_xy = params.pipelines_testdata_base_path + 'nallo/reference/expected_cn.hg38.XY.bed' - hificnv_xx = params.pipelines_testdata_base_path + 'nallo/reference/expected_cn.hg38.XX.bed' - hificnv_exclude = params.pipelines_testdata_base_path + 'nallo/reference/empty.bed' - - // Dipcall - par_regions = params.pipelines_testdata_base_path + 'nallo/reference/hs38.PAR.bed' - - // Repeats - trgt_repeats = params.pipelines_testdata_base_path + 'nallo/reference/pathogenic_repeats.hg38.bed' - variant_catalog = params.pipelines_testdata_base_path + 'nallo/reference/variant_catalog_grch38.json' - - // SNV Annotation - vep_cache = params.pipelines_testdata_base_path + 'nallo/reference/vep_cache_test_data.tar.gz' - vep_plugin_files = params.pipelines_testdata_base_path + 'nallo/reference/vep_plugin_files.csv' - snp_db = params.pipelines_testdata_base_path + 'nallo/testdata/snp_dbs.csv' - - // Rank variants + // References + fasta = params.pipelines_testdata_base_path + 'nallo/reference/hg38.test.fa.gz' + input = 'https://github.com/genomic-medicine-sweden/test-datasets/raw/2948776ddf24ea131f527aa1f2dc23a43bb7b952/testdata/samplesheet.csv' + bed = params.pipelines_testdata_base_path + 'nallo/reference/test_data.bed' + hificnv_xy = params.pipelines_testdata_base_path + 'nallo/reference/expected_cn.hg38.XY.bed' + hificnv_xx = params.pipelines_testdata_base_path + 'nallo/reference/expected_cn.hg38.XX.bed' + hificnv_exclude = params.pipelines_testdata_base_path + 'nallo/reference/empty.bed' + par_regions = params.pipelines_testdata_base_path + 'nallo/reference/hs38.PAR.bed' + trgt_repeats = params.pipelines_testdata_base_path + 'nallo/reference/pathogenic_repeats.hg38.bed' + variant_catalog = params.pipelines_testdata_base_path + 'nallo/reference/variant_catalog_grch38.json' + vep_cache = params.pipelines_testdata_base_path + 'nallo/reference/vep_cache_test_data.tar.gz' + vep_plugin_files = params.pipelines_testdata_base_path + 'nallo/reference/vep_plugin_files.csv' + snp_db = params.pipelines_testdata_base_path + 'nallo/testdata/snp_dbs.csv' reduced_penetrance = params.pipelines_testdata_base_path + 'nallo/reference/reduced_penetrance.tsv' score_config_snv = params.pipelines_testdata_base_path + 'nallo/reference/rank_model_snv.ini' variant_consequences_snv = params.pipelines_testdata_base_path + 'nallo/reference/variant_consequences_v2.txt' + somalier_sites = params.pipelines_testdata_base_path + 'nallo/reference/somalier_sites.vcf.gz' - // Somalier - somalier_sites = params.pipelines_testdata_base_path + 'nallo/reference/somalier_sites.vcf.gz' - - parallel_snv = 2 // Create 2 parallel DeepVariant processes - preset = "revio" + // Pipeline options + parallel_snv = 2 + preset = "revio" + // Test config options + extra_modkit_options = '--seed 1 --sampling-frac 0.1' + extra_vep_options = '--plugin SpliceAI,snv=spliceai_21_scores_raw_snv_-v1.3-.vcf.gz,indel=spliceai_21_scores_raw_snv_-v1.3-.vcf.gz' + extra_paraphase_options = '--gene hba' + extra_hifiasm_options = '-f0 -k30 -w30 -D10 -r1 -N1' } process { - withName: '.*:NALLO:ASSEMBLY:HIFIASM' { - ext.args = '-f0 -k30 -w30 -D10 -r1 -N1' - } - withName: '.*:CALL_PARALOGS:PARAPHASE' { - ext.args = '--gene hba' - } - - withName: '.*:SNV_ANNOTATION:ENSEMBLVEP_VEP' { - ext.prefix = { "${meta.id}_vep" } - ext.args = { [ - "--dir_plugins .", - "--plugin LoFtool,LoFtool_scores.txt", - "--plugin pLI,pLI_values.txt", - "--plugin SpliceAI,snv=spliceai_21_scores_raw_snv_-v1.3-.vcf.gz,indel=spliceai_21_scores_raw_snv_-v1.3-.vcf.gz", - '--distance 5000', - '--buffer_size 20000', - '--format vcf --max_sv_size 248387328', - '--appris --biotype --cache --canonical --ccds --compress_output bgzip', - '--domains --exclude_predicted --force_overwrite', - '--hgvs --humdiv --no_progress --numbers', - '--polyphen p --protein --offline --regulatory --sift p --symbol --tsl', - '--uniprot --vcf', - '--no_stats' - ].join(' ') } + withLabel: 'process_high' { + cpus = 4 } - withName: '.*:NALLO:PHASING:WHATSHAP_PHASE' { - ext.args = '--ignore-read-groups --indels --distrust-genotypes --include-homozygous' + withLabel: 'process_medium' { + cpus = 2 } - withName: 'FASTQC|MINIMAP2_INDEX_DIPCALL|PARAPHASE|SNIFFLES|GFASTATS_PATERNAL|GFASTATS_MATERNAL|HIFICNV' { + withLabel: 'process_low' { cpus = 1 } - withName: 'MINIMAP2_INDEX|HIFIASM' { - cpus = 2 - } - - withName: 'SAMTOOLS_FASTQ|FASTP|MINIMAP2_ALIGN|GLNEXUS|ENSEMBLVEP_VEP|MODKIT_PILEUP|MODKIT_PILEUP_HAPLOTYPES' { - cpus = 4 + withLabel: 'process_single' { + cpus = 1 } } diff --git a/docs/output.md b/docs/output.md index 6dbc4c6f..bf3af809 100644 --- a/docs/output.md +++ b/docs/output.md @@ -14,12 +14,11 @@ - [Paraphase](#paraphase) - [Phasing](#phasing) - [Pipeline information](#pipeline-information) - - [Aligned read QC](#aligned-read-qc) + - [QC](#qc) + - [FastQC](#fastqc) - [Mosdepth](#mosdepth) - [Cramino](#cramino) - [Somalier](#somalier) - - [Raw read QC](#raw-read-qc) - - [FastQC](#fastqc) - [Repeat calling](#repeat-calling) - [Repeat annotation](#repeat-annotation) - [SNVs](#snvs) @@ -44,9 +43,7 @@ The directories listed below will be created in the results directory after the - `pedigree` - `phasing` - `pipeline_info` -- `qc_aligned_reads` -- `qc_raw_reads` -- `repeat_annotation` +- `qc` - `repeat_calling` - `snvs` - `svs` @@ -209,9 +206,21 @@ Results generated by MultiQC collate pipeline QC from supported tools e.g. FastQ
-### Aligned read QC +### QC + +[FastQC](http://www.bioinformatics.babraham.ac.uk/projects/fastqc/), [cramino](https://github.com/wdecoster/cramino), [mosdepth](https://github.com/brentp/mosdepth) and [somalier](https://github.com/brentp/somalier) are used for read QC. + +##### FastQC + +[FastQC](http://www.bioinformatics.babraham.ac.uk/projects/fastqc/) gives general quality metrics about your sequenced reads. It provides information about the quality score distribution across your reads, per base sequence content (%A/T/G/C), adapter contamination and overrepresented sequences. For further reading and documentation see the [FastQC help pages](http://www.bioinformatics.babraham.ac.uk/projects/fastqc/Help/). -[cramino](https://github.com/wdecoster/cramino), [mosdepth](https://github.com/brentp/mosdepth) and [somalier](https://github.com/brentp/somalier) are used for aligned read QC. +
+Output files + +- `{outputdir}/qc/fastqc/{sample}/` + - `*_fastqc.html`: FastQC report containing quality metrics. + - `*_fastqc.zip`: Zip archive containing the FastQC report, tab-delimited data file and plot images. +
##### Mosdepth @@ -220,7 +229,7 @@ Results generated by MultiQC collate pipeline QC from supported tools e.g. FastQ
Output files from Mosdepth -- `{outputdir}/qc_aligned_reads/mosdepth/{sample}` +- `{outputdir}/qc/mosdepth/{sample}` - `*.mosdepth.global.dist.txt`: This file contains a cumulative distribution indicating the proportion of total bases that were covered for at least a given coverage value across each chromosome and the whole genome - `*.mosdepth.region.dist.txt`: This file contains a cumulative distribution indicating the proportion of total bases that were covered for at least a given coverage value across each region, is output if running the pipeline with a BED-file - `*.mosdepth.summary.txt`: Mosdepth ummary file @@ -235,10 +244,10 @@ Results generated by MultiQC collate pipeline QC from supported tools e.g. FastQ
Output files from Cramino -- `{outputdir}/qc_aligned_reads/cramino/phased/{sample}` +- `{outputdir}/qc/cramino/phased/{sample}` - `*.arrow`: Read length and quality in [Apache Arrow](https://arrow.apache.org/docs/format/Columnar.html) format - `*.txt`: Summary information in text format -- `{outputdir}/qc_aligned_reads/cramino/unphased/{sample}` +- `{outputdir}/qc/cramino/unphased/{sample}` - `*.arrow`: Read length and quality in [Apache Arrow](https://arrow.apache.org/docs/format/Columnar.html) format - `*.txt`: Summary information in text format
@@ -250,29 +259,13 @@ Results generated by MultiQC collate pipeline QC from supported tools e.g. FastQ
Output files from Somalier -- `{outputdir}/predigree/{project}.ped`: A PED file with updated sex -- `{outputdir}/qc_aligned_reads/somalier/relate/{project}/` +- `{outputdir}/predigree/{project}.ped`: A PED file with updated from somalier sex +- `{outputdir}/qc/somalier/relate/{project}/` - `{project}.html`: HTML report - `{project}.pairs.tsv`: Output information in sample pairs - `{project}.samples.tsv`: Output information per sample
-### Raw read QC - -[cramino](https://github.com/wdecoster/cramino), [mosdepth](https://github.com/brentp/mosdepth) and [somalier](https://github.com/brentp/somalier) are used for aligned read QC. - -##### FastQC - -[FastQC](http://www.bioinformatics.babraham.ac.uk/projects/fastqc/) gives general quality metrics about your sequenced reads. It provides information about the quality score distribution across your reads, per base sequence content (%A/T/G/C), adapter contamination and overrepresented sequences. For further reading and documentation see the [FastQC help pages](http://www.bioinformatics.babraham.ac.uk/projects/fastqc/Help/). - -
-Output files - -- `{outputdir}/qc_raw_reads/fastqc/{sample}/` - - `*_fastqc.html`: FastQC report containing quality metrics. - - `*_fastqc.zip`: Zip archive containing the FastQC report, tab-delimited data file and plot images. -
- ### Repeat calling [TRGT](https://github.com/PacificBiosciences/trgt) is used to call repeats. diff --git a/docs/parameters.md b/docs/parameters.md index 890af543..821a0c1c 100644 --- a/docs/parameters.md +++ b/docs/parameters.md @@ -1,177 +1,164 @@ -# genomic-medicine-sweden/nallo pipeline parameters - -Long-read variant calling pipeline - -## Workflow skip options - -Allows skipping certain parts of the pipeline - -| Parameter | Description | Type | Default | Required | Hidden | -|-----------|-----------|-----------|-----------|-----------|-----------| -| `skip_aligned_read_qc` | Skip QC of aligned reads | `boolean` | False | | | -| `skip_raw_read_qc` | Skip QC of unaligned (raw) reads | `boolean` | False | | | -| `skip_short_variant_calling` | Skip short variant calling | `boolean` | False | | | -| `skip_assembly_wf` | Skip genome assembly and assembly variant calling | `boolean` | False | | | -| `skip_mapping_wf` | Skip read mapping (alignment) | `boolean` | False | | | -| `skip_methylation_wf` | Skip generation of methylation pileups | `boolean` | False | | | -| `skip_repeat_calling` | Skip tandem repeat calling | `boolean` | False | | | -| `skip_repeat_annotation` | Skip tandem repeat annotation | `boolean` | False | | | -| `skip_phasing_wf` | Skip phasing of variants and haplotagging of reads | `boolean` | False | | | -| `skip_snv_annotation` | Skip short variant annotation | `boolean` | False | | | -| `skip_cnv_calling` | Skip CNV calling | `boolean` | False | | | -| `skip_call_paralogs` | Skip the calling of specific paralogous genes | `boolean` | False | | | -| `skip_rank_variants` | Skip ranking of short variants | `boolean` | False | | | - -## Input/output options - -Define where the pipeline should find input data and save output data. - -| Parameter | Description | Type | Default | Required | Hidden | -|-----------|-----------|-----------|-----------|-----------|-----------| -| `input` | Path to comma-separated file containing information about the samples in the experiment.
HelpYou will -need to create a design file with information about the samples in your experiment before running the pipeline. Use this parameter to specify its -location. It has to be a comma-separated file with 3 columns, and a header row.
| `string` | | True | | -| `outdir` | The output directory where the results will be saved. You have to use absolute paths to storage on Cloud infrastructure. | `string` | -| True | | -| `email` | Email address for completion summary.
HelpSet this parameter to your e-mail address to get a summary -e-mail with details of the run sent to you when the workflow exits. If set in your user config file (`~/.nextflow/config`) then you don't need to -specify this on the command line for every run.
| `string` | | | | -| `multiqc_title` | MultiQC report title. Printed as page header, used for filename if not otherwise specified. | `string` | | | | - -## Reference genome options - -Reference genome related files and options required for the workflow. - -| Parameter | Description | Type | Default | Required | Hidden | -|-----------|-----------|-----------|-----------|-----------|-----------| -| `fasta` | Reference genome | `string` | | | | -| `genome` | Name of iGenomes reference.
HelpIf using a reference genome configured in the pipeline using -iGenomes, use this parameter to give the ID for the reference. This is then used to build the full paths for all required reference genome files -e.g. `--genome GRCh38`.

See the [nf-core website docs](https://nf-co.re/usage/reference_genomes) for more details.
| -`string` | | | | -| `igenomes_ignore` | Do not load the iGenomes reference config.
HelpDo not load `igenomes.config` when running -the pipeline. You may choose this option if you observe clashes between custom parameters and those supplied in -`igenomes.config`.
| `boolean` | True | | True | - -## Institutional config options - -Parameters used to describe centralised config profiles. These should not be edited. - -| Parameter | Description | Type | Default | Required | Hidden | -|-----------|-----------|-----------|-----------|-----------|-----------| -| `custom_config_version` | Git commit id for Institutional configs. | `string` | master | | True | -| `custom_config_base` | Base directory for Institutional configs.
HelpIf you're running offline, Nextflow will -not be able to fetch the institutional config files from the internet. If you don't need them, then this is not a problem. If you do need them, you -should download the files from the repo and tell Nextflow where to find them with this parameter.
| `string` | -https://raw.githubusercontent.com/nf-core/configs/master | | True | -| `config_profile_name` | Institutional config name. | `string` | | | True | -| `config_profile_description` | Institutional config description. | `string` | | | True | -| `config_profile_contact` | Institutional config contact information. | `string` | | | True | -| `config_profile_url` | Institutional config URL link. | `string` | | | True | - -## Max job request options - -Set the top limit for requested resources for any single job. - -| Parameter | Description | Type | Default | Required | Hidden | -|-----------|-----------|-----------|-----------|-----------|-----------| -| `max_cpus` | Maximum number of CPUs that can be requested for any single job.
HelpUse to set an upper-limit for -the CPU requirement for each process. Should be an integer e.g. `--max_cpus 1`
| `integer` | 16 | | True | -| `max_memory` | Maximum amount of memory that can be requested for any single job.
HelpUse to set an upper-limit -for the memory requirement for each process. Should be a string in the format integer-unit e.g. `--max_memory '8.GB'`
| `string` | -128.GB | | True | -| `max_time` | Maximum amount of time that can be requested for any single job.
HelpUse to set an upper-limit for -the time requirement for each process. Should be a string in the format integer-unit e.g. `--max_time '2.h'`
| `string` | 240.h | -| True | - -## Generic options - -Less common options for the pipeline, typically set in a config file. - -| Parameter | Description | Type | Default | Required | Hidden | -|-----------|-----------|-----------|-----------|-----------|-----------| -| `help` | Display help text. | `boolean` | | | True | -| `version` | Display version and exit. | `boolean` | | | True | -| `publish_dir_mode` | Method used to save pipeline results to output directory.
HelpThe Nextflow `publishDir` -option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move -these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.
| `string` | copy | | -True | -| `email_on_fail` | Email address for completion summary, only when pipeline fails.
HelpAn email address to send -a summary email to when the pipeline is completed - ONLY sent if the pipeline does not exit successfully.
| `string` | | | True | -| `plaintext_email` | Send plain-text email instead of HTML. | `boolean` | | | True | -| `max_multiqc_email_size` | File size limit when attaching MultiQC reports to summary emails. | `string` | 25.MB | | True | -| `monochrome_logs` | Do not use coloured log outputs. | `boolean` | | | True | -| `hook_url` | Incoming hook URL for messaging service
HelpIncoming hook URL for messaging service. Currently, MS -Teams and Slack are supported.
| `string` | | | True | -| `multiqc_config` | Custom config file to supply to MultiQC. | `string` | | | True | -| `multiqc_logo` | Custom logo file to supply to MultiQC. File name must also be set in the MultiQC config file | `string` | | | True | -| `multiqc_methods_description` | Custom MultiQC yaml file containing HTML including a methods description. | `string` | | | | -| `validate_params` | Boolean whether to validate parameters against the schema at runtime | `boolean` | True | | True | -| `validationShowHiddenParams` | Show all params when using `--help`
HelpBy default, parameters set as _hidden_ -in the schema are not shown on the command line when a user runs with `--help`. Specifying this option will tell the pipeline to show all -parameters.
| `boolean` | | | True | -| `validationSkipDuplicateCheck` | nf-validation related parameter | `boolean` | | | True | -| `validationS3PathCheck` | Boolean whether to validate validate AWS S3 paths | `boolean` | | | True | -| `monochromeLogs` | Boolean whether to color nf-validation logs | `boolean` | | | True | - -## Workflow options - -Workflow options specific to genomic-medicine-sweden/nallo - -| Parameter | Description | Type | Default | Required | Hidden | -|-----------|-----------|-----------|-----------|-----------|-----------| -| `preset` | Enable or disable certain parts of the pipeline by default, depending on data type (`revio`, `pacbio`, `ONT_R10`) | `string` | revio | -True | | -| `variant_caller` | Which short variant software to use (`deepvariant`) | `string` | deepvariant | | | -| `phaser` | Which phasing software to use (`whatshap`, `hiphase_snv`, `hiphase_sv`) | `string` | whatshap | | | -| `hifiasm_mode` | Run hifiasm in hifi-only or hifi-trio mode (`hifi-only`, `trio-binning`) | `string` | hifi-only | | | -| `parallel_alignments` | If parallel_alignments is bigger than 1, input files will be split and aligned in parallel to reduce processing time. | -`integer` | 1 | | | -| `parallel_snv` | If parallel_snv is bigger than 1, short variant calling will be done in parallel to reduce processing time. | `integer` | 13 | | -| -| `vep_cache_version` | VEP cache version | `integer` | 110 | | | -| `vep_plugin_files` | A csv file with paths to vep plugin files. pLI and LoFtool are required. | `string` | | | | -| `deepvariant_model_type` | Sets the model type used for DeepVariant. This is set automatically using `--preset` by default. | `string` | PACBIO | -| True | - -## File inputs - -The different files that are required. Some are only required by certain workflows, see the usage documentation. - -| Parameter | Description | Type | Default | Required | Hidden | -|-----------|-----------|-----------|-----------|-----------|-----------| -| `cadd_prescored` | Path to a directory containing prescored indels for CADD.
HelpThis folder contains the -compressed files and indexes that would otherwise be in data/prescored folder as described in -https://github.com/kircherlab/CADD-scripts/#manual-installation.
| `string` | | | | -| `cadd_resources` | Path to a directory containing CADD annotations.
HelpThis folder contains the uncompressed -files that would otherwise be in data/annotation folder as described in -https://github.com/kircherlab/CADD-scripts/#manual-installation.
| `string` | | | | -| `par_regions` | Provide a bed file of chrX and chrY PAR regions for dipcall and DeepVariant | `string` | | | | -| `tandem_repeats` | A tandem repeat BED file for sniffles | `string` | | | | -| `trgt_repeats` | A BED file with repeats to be genotyped with TRGT | `string` | | | | -| `snp_db` | A csv file with echtvar databases to annotate SNVs with | `string` | | | | -| `variant_catalog` | A variant catalog json-file for stranger | `string` | | | | -| `variant_consequences_snv` | File containing list of SO terms listed in the order of severity from most severe to lease severe for annotating -genomic SNVs.
HelpFor more information check -https://ensembl.org/info/genome/variation/prediction/predicted_data.html
| `string` | | | | -| `vep_cache` | A path to the VEP cache location | `string` | | | | -| `bed` | A BED file with regions of interest, used to limit short variant calling. | `string` | | | | -| `hificnv_xy` | A BED file containing expected copy number regions for XY samples. | `string` | | | | -| `hificnv_xx` | A BED file containing expected copy number regions for XX samples. | `string` | | | | -| `hificnv_exclude` | A BED file specifying regions to exclude with HiFiCNV, such as centromeres. | `string` | | | | -| `reduced_penetrance` | A file with gene ids that have reduced penetrance. For use with genmod. | `string` | | | | -| `score_config_snv` | A SNV rank model config file for genmod. | `string` | | | | -| `somalier_sites` | A VCF of known polymorphic sites for somalier | `string` | | | | -| `validationFailUnrecognisedParams` | Validation of parameters fails when an unrecognised parameter is found. -
HelpBy default, when an unrecognised parameter is found, it returns a warning.
| `boolean` | | -| True | -| `validationLenientMode` | Validation of parameters in lenient more.
HelpAllows string values that are parseable -as numbers or booleans. For further information see [JSONSchema docs](https://github.com/everit-org/json-schema#lenient-mode).
| -`boolean` | | | True | -| `pipelines_testdata_base_path` | Base URL or local path to location of pipeline test dataset files | `string` | -https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/ | | True | - +# genomic-medicine-sweden/nallo pipeline parameters + +Long-read variant calling pipeline + +## Workflow skip options + +Allows skipping certain parts of the pipeline + +| Parameter | Description | Type | Default | Required | Hidden | +|-----------|-----------|-----------|-----------|-----------|-----------| +| `skip_qc` | Skip QC of reads | `boolean` | False | | | +| `skip_short_variant_calling` | Skip short variant calling | `boolean` | False | | | +| `skip_assembly_wf` | Skip genome assembly and assembly variant calling | `boolean` | False | | | +| `skip_mapping_wf` | Skip read mapping (alignment) | `boolean` | False | | | +| `skip_methylation_wf` | Skip generation of methylation pileups | `boolean` | False | | | +| `skip_repeat_calling` | Skip tandem repeat calling | `boolean` | False | | | +| `skip_repeat_annotation` | Skip tandem repeat annotation | `boolean` | False | | | +| `skip_phasing_wf` | Skip phasing of variants and haplotagging of reads | `boolean` | False | | | +| `skip_snv_annotation` | Skip short variant annotation | `boolean` | False | | | +| `skip_cnv_calling` | Skip CNV calling | `boolean` | False | | | +| `skip_call_paralogs` | Skip the calling of specific paralogous genes | `boolean` | False | | | +| `skip_rank_variants` | Skip ranking of short variants | `boolean` | False | | | + +## Input/output options + +Define where the pipeline should find input data and save output data. + +| Parameter | Description | Type | Default | Required | Hidden | +|-----------|-----------|-----------|-----------|-----------|-----------| +| `input` | Path to comma-separated file containing information about the samples in the experiment.
HelpYou will need to create a design +file with information about the samples in your experiment before running the pipeline. Use this parameter to specify its location. It has to be a comma-separated file with 3 +columns, and a header row.
| `string` | | True | | +| `outdir` | The output directory where the results will be saved. You have to use absolute paths to storage on Cloud infrastructure. | `string` | | True | | +| `email` | Email address for completion summary.
HelpSet this parameter to your e-mail address to get a summary e-mail with details of the +run sent to you when the workflow exits. If set in your user config file (`~/.nextflow/config`) then you don't need to specify this on the command line for every +run.
| `string` | | | | +| `multiqc_title` | MultiQC report title. Printed as page header, used for filename if not otherwise specified. | `string` | | | | + +## Reference genome options + +Reference genome related files and options required for the workflow. + +| Parameter | Description | Type | Default | Required | Hidden | +|-----------|-----------|-----------|-----------|-----------|-----------| +| `fasta` | Reference genome | `string` | | | | +| `genome` | Name of iGenomes reference.
HelpIf using a reference genome configured in the pipeline using iGenomes, use this parameter to +give the ID for the reference. This is then used to build the full paths for all required reference genome files e.g. `--genome GRCh38`.

See the [nf-core website +docs](https://nf-co.re/usage/reference_genomes) for more details.
| `string` | | | | +| `igenomes_ignore` | Do not load the iGenomes reference config.
HelpDo not load `igenomes.config` when running the pipeline. You may choose +this option if you observe clashes between custom parameters and those supplied in `igenomes.config`.
| `boolean` | True | | True | + +## Institutional config options + +Parameters used to describe centralised config profiles. These should not be edited. + +| Parameter | Description | Type | Default | Required | Hidden | +|-----------|-----------|-----------|-----------|-----------|-----------| +| `custom_config_version` | Git commit id for Institutional configs. | `string` | master | | True | +| `custom_config_base` | Base directory for Institutional configs.
HelpIf you're running offline, Nextflow will not be able to fetch the +institutional config files from the internet. If you don't need them, then this is not a problem. If you do need them, you should download the files from the repo and tell +Nextflow where to find them with this parameter.
| `string` | https://raw.githubusercontent.com/nf-core/configs/master | | True | +| `config_profile_name` | Institutional config name. | `string` | | | True | +| `config_profile_description` | Institutional config description. | `string` | | | True | +| `config_profile_contact` | Institutional config contact information. | `string` | | | True | +| `config_profile_url` | Institutional config URL link. | `string` | | | True | + +## Max job request options + +Set the top limit for requested resources for any single job. + +| Parameter | Description | Type | Default | Required | Hidden | +|-----------|-----------|-----------|-----------|-----------|-----------| +| `max_cpus` | Maximum number of CPUs that can be requested for any single job.
HelpUse to set an upper-limit for the CPU requirement for +each process. Should be an integer e.g. `--max_cpus 1`
| `integer` | 16 | | True | +| `max_memory` | Maximum amount of memory that can be requested for any single job.
HelpUse to set an upper-limit for the memory requirement +for each process. Should be a string in the format integer-unit e.g. `--max_memory '8.GB'`
| `string` | 128.GB | | True | +| `max_time` | Maximum amount of time that can be requested for any single job.
HelpUse to set an upper-limit for the time requirement for +each process. Should be a string in the format integer-unit e.g. `--max_time '2.h'`
| `string` | 240.h | | True | + +## Generic options + +Less common options for the pipeline, typically set in a config file. + +| Parameter | Description | Type | Default | Required | Hidden | +|-----------|-----------|-----------|-----------|-----------|-----------| +| `help` | Display help text. | `boolean` | | | True | +| `version` | Display version and exit. | `boolean` | | | True | +| `publish_dir_mode` | Method used to save pipeline results to output directory.
HelpThe Nextflow `publishDir` option specifies which +intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow +docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.
| `string` | copy | | True | +| `email_on_fail` | Email address for completion summary, only when pipeline fails.
HelpAn email address to send a summary email to when the +pipeline is completed - ONLY sent if the pipeline does not exit successfully.
| `string` | | | True | +| `plaintext_email` | Send plain-text email instead of HTML. | `boolean` | | | True | +| `max_multiqc_email_size` | File size limit when attaching MultiQC reports to summary emails. | `string` | 25.MB | | True | +| `monochrome_logs` | Do not use coloured log outputs. | `boolean` | | | True | +| `hook_url` | Incoming hook URL for messaging service
HelpIncoming hook URL for messaging service. Currently, MS Teams and Slack are +supported.
| `string` | | | True | +| `multiqc_config` | Custom config file to supply to MultiQC. | `string` | | | True | +| `multiqc_logo` | Custom logo file to supply to MultiQC. File name must also be set in the MultiQC config file | `string` | | | True | +| `multiqc_methods_description` | Custom MultiQC yaml file containing HTML including a methods description. | `string` | | | | +| `validate_params` | Boolean whether to validate parameters against the schema at runtime | `boolean` | True | | True | +| `validationShowHiddenParams` | Show all params when using `--help`
HelpBy default, parameters set as _hidden_ in the schema are not shown +on the command line when a user runs with `--help`. Specifying this option will tell the pipeline to show all parameters.
| `boolean` | | | True | +| `validationSkipDuplicateCheck` | nf-validation related parameter | `boolean` | | | True | +| `validationS3PathCheck` | Boolean whether to validate validate AWS S3 paths | `boolean` | | | True | +| `monochromeLogs` | Boolean whether to color nf-validation logs | `boolean` | | | True | + +## Workflow options + +Workflow options specific to genomic-medicine-sweden/nallo + +| Parameter | Description | Type | Default | Required | Hidden | +|-----------|-----------|-----------|-----------|-----------|-----------| +| `preset` | Enable or disable certain parts of the pipeline by default, depending on data type (`revio`, `pacbio`, `ONT_R10`) | `string` | revio | True | | +| `variant_caller` | Which short variant software to use (`deepvariant`) | `string` | deepvariant | | | +| `phaser` | Which phasing software to use (`whatshap`, `hiphase_snv`, `hiphase_sv`) | `string` | whatshap | | | +| `hifiasm_mode` | Run hifiasm in hifi-only or hifi-trio mode (`hifi-only`, `trio-binning`) | `string` | hifi-only | | | +| `parallel_alignments` | If parallel_alignments is bigger than 1, input files will be split and aligned in parallel to reduce processing time. | `integer` | 1 | | | +| `parallel_snv` | If parallel_snv is bigger than 1, short variant calling will be done in parallel to reduce processing time. | `integer` | 13 | | | +| `vep_cache_version` | VEP cache version | `integer` | 110 | | | +| `vep_plugin_files` | A csv file with paths to vep plugin files. pLI and LoFtool are required. | `string` | | | | +| `deepvariant_model_type` | Sets the model type used for DeepVariant. This is set automatically using `--preset` by default. | `string` | PACBIO | | True | +| `extra_modkit_options` | Extra options to modkit, used for test profile. | `string` | | | True | +| `extra_vep_options` | Extra options to VEP, used for test profile. | `string` | | | True | +| `extra_paraphase_options` | Extra options to Paraphase, used for test profile. | `string` | | | True | +| `extra_hifiasm_options` | Extra options to hifiasm, used for test profile. | `string` | | | True | + +## File inputs + +The different files that are required. Some are only required by certain workflows, see the usage documentation. + +| Parameter | Description | Type | Default | Required | Hidden | +|-----------|-----------|-----------|-----------|-----------|-----------| +| `cadd_prescored` | Path to a directory containing prescored indels for CADD.
HelpThis folder contains the compressed files and indexes +that would otherwise be in data/prescored folder as described in https://github.com/kircherlab/CADD-scripts/#manual-installation.
| `string` | | | | +| `cadd_resources` | Path to a directory containing CADD annotations.
HelpThis folder contains the uncompressed files that would otherwise +be in data/annotation folder as described in https://github.com/kircherlab/CADD-scripts/#manual-installation.
| `string` | | | | +| `par_regions` | Provide a bed file of chrX and chrY PAR regions for dipcall and DeepVariant | `string` | | | | +| `tandem_repeats` | A tandem repeat BED file for sniffles | `string` | | | | +| `trgt_repeats` | A BED file with repeats to be genotyped with TRGT | `string` | | | | +| `snp_db` | A csv file with echtvar databases to annotate SNVs with | `string` | | | | +| `variant_catalog` | A variant catalog json-file for stranger | `string` | | | | +| `variant_consequences_snv` | File containing list of SO terms listed in the order of severity from most severe to lease severe for annotating genomic SNVs. +
HelpFor more information check https://ensembl.org/info/genome/variation/prediction/predicted_data.html
| `string` | | | +| +| `vep_cache` | A path to the VEP cache location | `string` | | | | +| `bed` | A BED file with regions of interest, used to limit short variant calling. | `string` | | | | +| `hificnv_xy` | A BED file containing expected copy number regions for XY samples. | `string` | | | | +| `hificnv_xx` | A BED file containing expected copy number regions for XX samples. | `string` | | | | +| `hificnv_exclude` | A BED file specifying regions to exclude with HiFiCNV, such as centromeres. | `string` | | | | +| `reduced_penetrance` | A file with gene ids that have reduced penetrance. For use with genmod. | `string` | | | | +| `score_config_snv` | A SNV rank model config file for genmod. | `string` | | | | +| `somalier_sites` | A VCF of known polymorphic sites for somalier | `string` | | | | +| `validationFailUnrecognisedParams` | Validation of parameters fails when an unrecognised parameter is found.
HelpBy default, when an +unrecognised parameter is found, it returns a warning.
| `boolean` | | | True | +| `validationLenientMode` | Validation of parameters in lenient more.
HelpAllows string values that are parseable as numbers or booleans. +For further information see [JSONSchema docs](https://github.com/everit-org/json-schema#lenient-mode).
| `boolean` | | | True | +| `pipelines_testdata_base_path` | Base URL or local path to location of pipeline test dataset files | `string` | +https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/ | | True | + diff --git a/docs/usage.md b/docs/usage.md index c4ed524c..50371fd5 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -110,23 +110,17 @@ Additionally, if you want to skip a subworkflow, you will need to explicitly sta ``` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - --skip_mapping_wf is active, the pipeline has to be run with: --skip_aligned_read_qc --skip_assembly_wf --skip_call_paralogs --skip_short_variant_calling --skip_snv_annotation --skip_cnv_calling --skip_phasing_wf --skip_rank_variants --skip_repeat_calling --skip_repeat_annotation --skip_methylation_wf + --skip_mapping_wf is active, the pipeline has to be run with: --skip_qc --skip_assembly_wf --skip_call_paralogs --skip_short_variant_calling --skip_snv_annotation --skip_cnv_calling --skip_phasing_wf --skip_rank_variants --skip_repeat_calling --skip_repeat_annotation --skip_methylation_wf ... ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ``` Because almost all other subworkflows relies on the mapping subworkflow. -If you want to run the pipeline without any other input files than `--input samplesheet.csv`, all of the above skips will need to be active, and the pipeline will run only unaligned read QC. - ## Reference files and parameters As descibed above, the files required depend on the active subworkflows. All parameters are listed [here](parameters.md), but the most useful parameters needed to run the pipeline described in more detail below. -### Raw read QC (`--skip_raw_read_qc`) - -This subworkflow requires no additional files. - ### Mapping (`--skip_mapping_wf`) The majority of subworkflows depend on the mapping (alignment) subworkflow which requires `--fasta` and `--somalier_sites`. @@ -136,7 +130,7 @@ The majority of subworkflows depend on the mapping (alignment) subworkflow which | `fasta` | Reference genome, either gzipped or uncompressed FASTA (e.g. [GRCh38_no_alt_analysis_set.fna.gz](ftp://ftp.ncbi.nlm.nih.gov/genomes/all/GCA/000/001/405/GCA_000001405.15_GRCh38/seqs_for_alignment_pipelines.ucsc_ids/GCA_000001405.15_GRCh38_no_alt_analysis_set.fna.gz)) | | `somalier_sites` | A VCF of known polymorphic sites (e.g. [sites.hg38.vcg.gz](https://github.com/brentp/somalier/files/3412456/sites.hg38.vcf.gz)), from which sex will be inferred if possible. | -### Aligned read QC (`--skip_aligned_read_qc`) +### QC (`--skip_qc`) This subworkflow depends on the mapping subworkflow, but requires no additional files. diff --git a/modules/local/fqcrs/Dockerfile b/modules/local/fqcrs/Dockerfile deleted file mode 100644 index 955356d5..00000000 --- a/modules/local/fqcrs/Dockerfile +++ /dev/null @@ -1,9 +0,0 @@ -# syntax=docker/dockerfile:1 -FROM ubuntu:22.04 - -RUN apt-get update && apt-get install -y procps sed zstd && rm -rf /var/lib/apt/lists/* -# install app -COPY fqcrs /usr/bin/fqcrs - -# final configuration -ENV FLASK_APP=fqcrs diff --git a/modules/local/fqcrs/main.nf b/modules/local/fqcrs/main.nf deleted file mode 100644 index 64162695..00000000 --- a/modules/local/fqcrs/main.nf +++ /dev/null @@ -1,37 +0,0 @@ -process FQCRS { - tag "$meta.id" - label 'process_single' - - container "docker.io/fellen31/fqcrs:0.1.0" - // Add verion manually - def fqcrs_version = '0.1.0' - - // Exit if running this module with -profile conda / -profile mamba - if (workflow.profile.tokenize(',').intersect(['conda', 'mamba']).size() >= 1) { - exit 1, "FQCRS module does not support Conda. Please use Docker / Singularity / Podman instead." - } - - input: - tuple val(meta), path(reads) - - output: - tuple val(meta), path("${prefix}.tsv.zst"), emit: fqc - path "versions.yml" , emit: versions - - when: - task.ext.when == null || task.ext.when - - script: - def args = task.ext.args ?: '' - prefix = task.ext.prefix ?: "${meta.id}" - - """ - zcat ${reads} | fqcrs | zstd -c > ${prefix}.tsv.zst - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - fqcrs: \$(echo "$fqcrs_version" ) - END_VERSIONS - """ -} - diff --git a/nextflow.config b/nextflow.config index 01ee510e..7f6925d2 100644 --- a/nextflow.config +++ b/nextflow.config @@ -28,33 +28,37 @@ params { hificnv_xx = null hificnv_exclude = null somalier_sites = null - deepvariant_model_type = params.preset == 'ONT_R10' ? 'ONT_R104' : 'PACBIO' // Skip parts of the workflow - skip_aligned_read_qc = false - skip_raw_read_qc = false skip_assembly_wf = params.preset == 'ONT_R10' ? true : false + skip_call_paralogs = false + skip_cnv_calling = false skip_mapping_wf = false skip_methylation_wf = params.preset == 'pacbio' ? true : false + skip_phasing_wf = false + skip_qc = false skip_rank_variants = false skip_repeat_calling = params.preset == 'ONT_R10' ? true : false skip_repeat_annotation = params.preset == 'ONT_R10' ? true : false - skip_phasing_wf = false skip_short_variant_calling = false skip_snv_annotation = false - skip_cnv_calling = false - skip_call_paralogs = false - preset = 'revio' - variant_caller = 'deepvariant' + deepvariant_model_type = params.preset == 'ONT_R10' ? 'ONT_R104' : 'PACBIO' phaser = 'whatshap' + preset = 'revio' hifiasm_mode = 'hifi-only' - + variant_caller = 'deepvariant' vep_cache_version = 110 + // Test config options + extra_modkit_options = '' + extra_vep_options = '' + extra_paraphase_options = '' + extra_hifiasm_options = '' + // Preprocessing/parallelisation parallel_snv = 13 - parallel_alignments = 1 + parallel_alignments = 1 // References fasta = null diff --git a/nextflow_schema.json b/nextflow_schema.json index 8e83ba04..30d07548 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -11,16 +11,10 @@ "description": "Allows skipping certain parts of the pipeline", "default": "", "properties": { - "skip_aligned_read_qc": { + "skip_qc": { "type": "boolean", "fa_icon": "fas fa-fast-forward", - "description": "Skip QC of aligned reads", - "default": false - }, - "skip_raw_read_qc": { - "type": "boolean", - "fa_icon": "fas fa-fast-forward", - "description": "Skip QC of unaligned (raw) reads", + "description": "Skip QC of reads", "default": false }, "skip_short_variant_calling": { @@ -408,6 +402,26 @@ "description": "Sets the model type used for DeepVariant. This is set automatically using `--preset` by default.", "hidden": true, "enum": ["PACBIO", "ONT_R104"] + }, + "extra_modkit_options": { + "type": "string", + "hidden": true, + "description": "Extra options to modkit, used for test profile." + }, + "extra_vep_options": { + "type": "string", + "hidden": true, + "description": "Extra options to VEP, used for test profile." + }, + "extra_paraphase_options": { + "type": "string", + "hidden": true, + "description": "Extra options to Paraphase, used for test profile." + }, + "extra_hifiasm_options": { + "type": "string", + "hidden": true, + "description": "Extra options to hifiasm, used for test profile." } }, "required": ["preset"] diff --git a/subworkflows/local/convert_input_files.nf b/subworkflows/local/convert_input_files.nf index 5c44e521..f06d2020 100644 --- a/subworkflows/local/convert_input_files.nf +++ b/subworkflows/local/convert_input_files.nf @@ -4,7 +4,8 @@ include { SAMTOOLS_FASTQ } from '../../modules/nf-core/samtools/fastq/main' workflow CONVERT_INPUT_FILES { take: - ch_sample // channel: [ val(meta), reads ] + ch_sample // channel: [ val(meta), reads ] + convert_fastq // bool main: ch_versions = Channel.empty() @@ -19,15 +20,19 @@ workflow CONVERT_INPUT_FILES { ch_bam = ch_filetypes.bam ch_fastq = ch_filetypes.fastq - SAMTOOLS_FASTQ ( ch_filetypes.bam, false ) - ch_versions = ch_versions.mix(SAMTOOLS_FASTQ.out.versions) + if(convert_fastq) { + SAMTOOLS_FASTQ ( ch_filetypes.bam, false ) + ch_versions = ch_versions.mix(SAMTOOLS_FASTQ.out.versions) + + // Mix converted files back in + ch_fastq = ch_fastq.mix(SAMTOOLS_FASTQ.out.other) + } SAMTOOLS_IMPORT ( ch_filetypes.fastq ) ch_versions = ch_versions.mix(SAMTOOLS_IMPORT.out.versions) // Mix converted files back in ch_bam = ch_bam.mix(SAMTOOLS_IMPORT.out.bam) - ch_fastq = ch_fastq.mix(SAMTOOLS_FASTQ.out.other) emit: bam = ch_bam // channel: [ val(meta), bam ] diff --git a/subworkflows/local/qc_aligned_reads.nf b/subworkflows/local/qc_aligned_reads.nf index 2176f807..a7ec0c37 100644 --- a/subworkflows/local/qc_aligned_reads.nf +++ b/subworkflows/local/qc_aligned_reads.nf @@ -1,4 +1,5 @@ include { CRAMINO } from '../../modules/local/cramino' +include { FASTQC } from '../../modules/nf-core/fastqc/main' include { MOSDEPTH } from '../../modules/nf-core/mosdepth/main.nf' workflow QC_ALIGNED_READS { @@ -11,6 +12,9 @@ workflow QC_ALIGNED_READS { main: ch_versions = Channel.empty() + FASTQC ( ch_bam_bai.map { meta, bam, bai -> [ meta, bam ] } ) + ch_versions = ch_versions.mix(FASTQC.out.versions) + CRAMINO (ch_bam_bai) ch_versions = ch_versions.mix(CRAMINO.out.versions) @@ -22,6 +26,7 @@ workflow QC_ALIGNED_READS { ch_versions = ch_versions.mix(MOSDEPTH.out.versions) emit: + fastqc_zip = FASTQC.out.zip // channel: [ val(meta), path(zip) ] mosdepth_summary = MOSDEPTH.out.summary_txt // channel: [ val(meta), path(txt) ] mosdepth_global_dist = MOSDEPTH.out.global_txt // channel: [ val(meta), path(txt) ] mosdepth_region_dist = MOSDEPTH.out.regions_txt // channel: [ val(meta), path(txt) ] diff --git a/subworkflows/local/utils_nfcore_nallo_pipeline/main.nf b/subworkflows/local/utils_nfcore_nallo_pipeline/main.nf index 91cb7ac5..c1a257d8 100644 --- a/subworkflows/local/utils_nfcore_nallo_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_nallo_pipeline/main.nf @@ -36,8 +36,6 @@ include { workflowCitation } from '../../nf-core/utils_nfcore_pipeline' // def workflowSkips = [ assembly : "skip_assembly_wf", - raw_read_qc : "skip_raw_read_qc", - aligned_read_qc : "skip_aligned_read_qc", mapping : "skip_mapping_wf", snv_calling : "skip_short_variant_calling", snv_annotation : "skip_snv_annotation", @@ -48,16 +46,17 @@ def workflowSkips = [ repeat_calling : "skip_repeat_calling", repeat_annotation: "skip_repeat_annotation", methylation : "skip_methylation_wf", + qc : "skip_qc", ] // // E.g., the CNV-calling workflow depends on mapping and snv_calling and can't run without them. // def workflowDependencies = [ - aligned_read_qc : ["mapping"], assembly : ["mapping"], call_paralogs : ["mapping"], snv_calling : ["mapping"], + qc : ["mapping"], snv_annotation : ["mapping", "snv_calling"], cnv_calling : ["mapping", "snv_calling"], phasing : ["mapping", "snv_calling"], @@ -93,8 +92,7 @@ def parameterStatus = [ skip_call_paralogs : params.skip_call_paralogs, skip_cnv_calling : params.skip_cnv_calling, skip_mapping_wf : params.skip_mapping_wf, - skip_aligned_read_qc : params.skip_aligned_read_qc, - skip_raw_read_qc : params.skip_raw_read_qc, + skip_qc : params.skip_qc, skip_assembly_wf : params.skip_assembly_wf, ], files: [ @@ -315,12 +313,6 @@ def toolCitationText() { "MultiQC (Ewels et al. 2016)", "SAMtools (Danecek et al. 2021)", ] - if (!params.skip_raw_read_qc) { - citation_text = citation_text + [ - "FastQC (Andrews 2010)", - "fcqrs", - ] - } if (!params.skip_mapping_wf) { if (params.parallel_alignments > 1) { citation_text = citation_text + [ @@ -333,8 +325,9 @@ def toolCitationText() { "Somalier (Pedersen et al. 2020)", "Sniffles2 (Smolka et al. 2024)", ] - if (!params.skip_aligned_read_qc) { + if (!params.skip_qc) { citation_text = citation_text + [ + "FastQC (Andrews 2010)", "cramino (De Coster & Rademakers 2023)", "mosdepth (Pedersen & Quinlan 2018)", ] diff --git a/tests/main.nf.test b/tests/main.nf.test index 983923b2..5265a526 100644 --- a/tests/main.nf.test +++ b/tests/main.nf.test @@ -34,6 +34,12 @@ nextflow_pipeline { parallel_snv = 2 preset = "revio" outdir = "$outputDir" + + // Test specific options + extra_modkit_options = '--seed 1 --sampling-frac 0.1' + extra_vep_options = '--plugin SpliceAI,snv=spliceai_21_scores_raw_snv_-v1.3-.vcf.gz,indel=spliceai_21_scores_raw_snv_-v1.3-.vcf.gz' + extra_paraphase_options = '--gene hba' + extra_hifiasm_options = '-f0 -k30 -w30 -D10 -r1 -N1' } } @@ -43,9 +49,9 @@ nextflow_pipeline { // Assert with snapshot multisample { assert snapshot( file("$outputDir/pedigree/test.ped"), - file("$outputDir/qc_aligned_reads/somalier/relate/test/test.pairs.tsv"), - file("$outputDir/qc_aligned_reads/somalier/relate/test/test.samples.tsv"), - file("$outputDir/qc_aligned_reads/somalier/relate/test/test.html"), + file("$outputDir/qc/somalier/relate/test/test.pairs.tsv"), + file("$outputDir/qc/somalier/relate/test/test.samples.tsv"), + file("$outputDir/qc/somalier/relate/test/test.html"), file("$outputDir/multiqc/multiqc_data/multiqc_citations.txt"), file("$outputDir/multiqc/multiqc_data/multiqc_fastqc.txt"), file("$outputDir/multiqc/multiqc_data/multiqc_somalier.txt"), @@ -61,9 +67,9 @@ nextflow_pipeline { file("$outputDir/cnv_calling/hificnv/HG002_Revio/HG002_Revio.HG002_Revio.copynum.bedgraph"), file("$outputDir/cnv_calling/hificnv/HG002_Revio/HG002_Revio.HG002_Revio.depth.bw"), file("$outputDir/cnv_calling/hificnv/HG002_Revio/HG002_Revio.HG002_Revio.maf.bw"), - file("$outputDir/qc_aligned_reads/mosdepth/HG002_Revio/HG002_Revio.mosdepth.global.dist.txt"), - file("$outputDir/qc_aligned_reads/mosdepth/HG002_Revio/HG002_Revio.mosdepth.region.dist.txt"), - file("$outputDir/qc_aligned_reads/mosdepth/HG002_Revio/HG002_Revio.mosdepth.summary.txt"), + file("$outputDir/qc/mosdepth/HG002_Revio/HG002_Revio.mosdepth.global.dist.txt"), + file("$outputDir/qc/mosdepth/HG002_Revio/HG002_Revio.mosdepth.region.dist.txt"), + file("$outputDir/qc/mosdepth/HG002_Revio/HG002_Revio.mosdepth.summary.txt"), file("$outputDir/assembly_haplotypes/gfastats/HG002_Revio/HG002_Revio.asm.bp.hap1.p_ctg.fasta.gz"), file("$outputDir/assembly_haplotypes/gfastats/HG002_Revio/HG002_Revio.asm.bp.hap2.p_ctg.fasta.gz"), file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.dip.vcf.gz"), @@ -77,11 +83,10 @@ nextflow_pipeline { file("$outputDir/methylation/modkit/pileup/unphased/HG002_Revio/HG002_Revio_modkit_pileup.bed.gz"), file("$outputDir/methylation/modkit/pileup/unphased/HG002_Revio/HG002_Revio_modkit_pileup.bed.gz.tbi"), bam("$outputDir/paraphase/HG002_Revio/HG002_Revio.paraphase.bam", stringency: 'silent').getReadsMD5(), - file("$outputDir/qc_aligned_reads/cramino/phased/HG002_Revio/HG002_Revio_cramino_aligned_phased.arrow"), - file("$outputDir/qc_aligned_reads/cramino/unphased/HG002_Revio/HG002_Revio_cramino_aligned.arrow"), - file("$outputDir/qc_aligned_reads/mosdepth/HG002_Revio/HG002_Revio.regions.bed.gz"), - file("$outputDir/qc_aligned_reads/mosdepth/HG002_Revio/HG002_Revio.regions.bed.gz.csi"), - file("$outputDir/qc_raw_reads/fqcrs/HG002_Revio/HG002_PacBio_Revio.fastq.gz.tsv.zst"), + file("$outputDir/qc/cramino/phased/HG002_Revio/HG002_Revio_cramino_aligned_phased.arrow"), + file("$outputDir/qc/cramino/unphased/HG002_Revio/HG002_Revio_cramino_aligned.arrow"), + file("$outputDir/qc/mosdepth/HG002_Revio/HG002_Revio.regions.bed.gz"), + file("$outputDir/qc/mosdepth/HG002_Revio/HG002_Revio.regions.bed.gz.csi"), file("$outputDir/repeat_calling/trgt/single_sample/HG002_Revio/HG002_Revio_sorted.vcf.gz"), file("$outputDir/repeat_calling/trgt/single_sample/HG002_Revio/HG002_Revio_sorted.vcf.gz.tbi"), bam("$outputDir/repeat_calling/trgt/single_sample/HG002_Revio/HG002_Revio_spanning_sorted.bam", stringency: 'silent').getReadsMD5(), @@ -118,14 +123,14 @@ nextflow_pipeline { { assert new File("$outputDir/paraphase/HG002_Revio/HG002_Revio_paraphase_vcfs/HG002_Revio_hba.vcf.gz").exists() }, { assert new File("$outputDir/paraphase/HG002_Revio/HG002_Revio_paraphase_vcfs/HG002_Revio_hba.vcf.gz.tbi").exists() }, { assert new File("$outputDir/paraphase/HG002_Revio/HG002_Revio.paraphase.json").exists() }, - { assert new File("$outputDir/qc_aligned_reads/cramino/phased/HG002_Revio/HG002_Revio_cramino_aligned_phased.txt").exists() }, - { assert new File("$outputDir/qc_aligned_reads/cramino/unphased/HG002_Revio/HG002_Revio_cramino_aligned.txt").exists() }, + { assert new File("$outputDir/qc/cramino/phased/HG002_Revio/HG002_Revio_cramino_aligned_phased.txt").exists() }, + { assert new File("$outputDir/qc/cramino/unphased/HG002_Revio/HG002_Revio_cramino_aligned.txt").exists() }, { assert new File("$outputDir/phasing/whatshap/phase/HG002_Revio/HG002_Revio_phased.vcf.gz").exists() }, { assert new File("$outputDir/phasing/whatshap/phase/HG002_Revio/HG002_Revio_phased.vcf.gz.tbi").exists() }, { assert new File("$outputDir/phasing/whatshap/stats/HG002_Revio/HG002_Revio_stats.stats.tsv").exists() }, { assert new File("$outputDir/phasing/whatshap/stats/HG002_Revio/HG002_Revio_stats.blocks.tsv").exists() }, - { assert new File("$outputDir/qc_raw_reads/fastqc/HG002_Revio/HG002_Revio_fastqc.html").exists() }, - { assert new File("$outputDir/qc_raw_reads/fastqc/HG002_Revio/HG002_Revio_fastqc.zip").exists() }, + { assert new File("$outputDir/qc/fastqc/HG002_Revio/HG002_Revio_fastqc.html").exists() }, + { assert new File("$outputDir/qc/fastqc/HG002_Revio/HG002_Revio_fastqc.zip").exists() }, { assert new File("$outputDir/repeat_annotation/stranger/HG002_Revio/HG002_Revio_repeat_expansion_stranger.vcf.gz").exists() }, { assert new File("$outputDir/repeat_annotation/stranger/HG002_Revio/HG002_Revio_repeat_expansion_stranger.vcf.gz.tbi").exists() }, { assert new File("$outputDir/repeat_calling/trgt/single_sample/HG002_Revio/HG002_Revio_spanning_sorted.bam.bai").exists() }, @@ -166,6 +171,12 @@ nextflow_pipeline { parallel_snv = 2 preset = "revio" outdir = "$outputDir" + + // Test specific options + extra_modkit_options = '--seed 1 --sampling-frac 0.1' + extra_vep_options = '--plugin SpliceAI,snv=spliceai_21_scores_raw_snv_-v1.3-.vcf.gz,indel=spliceai_21_scores_raw_snv_-v1.3-.vcf.gz' + extra_paraphase_options = '--gene hba' + extra_hifiasm_options = '-f0 -k30 -w30 -D10 -r1 -N1' } } @@ -189,9 +200,9 @@ nextflow_pipeline { file("$outputDir/cnv_calling/hificnv/HG002_Revio_A/HG002_Revio_A.HG002_Revio_A.copynum.bedgraph"), file("$outputDir/cnv_calling/hificnv/HG002_Revio_A/HG002_Revio_A.HG002_Revio_A.depth.bw"), file("$outputDir/cnv_calling/hificnv/HG002_Revio_A/HG002_Revio_A.HG002_Revio_A.maf.bw"), - file("$outputDir/qc_aligned_reads/mosdepth/HG002_Revio_A/HG002_Revio_A.mosdepth.global.dist.txt"), - file("$outputDir/qc_aligned_reads/mosdepth/HG002_Revio_A/HG002_Revio_A.mosdepth.region.dist.txt"), - file("$outputDir/qc_aligned_reads/mosdepth/HG002_Revio_A/HG002_Revio_A.mosdepth.summary.txt"), + file("$outputDir/qc/mosdepth/HG002_Revio_A/HG002_Revio_A.mosdepth.global.dist.txt"), + file("$outputDir/qc/mosdepth/HG002_Revio_A/HG002_Revio_A.mosdepth.region.dist.txt"), + file("$outputDir/qc/mosdepth/HG002_Revio_A/HG002_Revio_A.mosdepth.summary.txt"), file("$outputDir/assembly_haplotypes/gfastats/HG002_Revio_A/HG002_Revio_A.asm.bp.hap1.p_ctg.fasta.gz"), file("$outputDir/assembly_haplotypes/gfastats/HG002_Revio_A/HG002_Revio_A.asm.bp.hap2.p_ctg.fasta.gz"), file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.dip.vcf.gz"), @@ -205,11 +216,10 @@ nextflow_pipeline { file("$outputDir/methylation/modkit/pileup/unphased/HG002_Revio_A/HG002_Revio_A_modkit_pileup.bed.gz"), file("$outputDir/methylation/modkit/pileup/unphased/HG002_Revio_A/HG002_Revio_A_modkit_pileup.bed.gz.tbi"), bam("$outputDir/paraphase/HG002_Revio_A/HG002_Revio_A.paraphase.bam", stringency: 'silent').getReadsMD5(), - file("$outputDir/qc_aligned_reads/cramino/phased/HG002_Revio_A/HG002_Revio_A_cramino_aligned_phased.arrow"), - file("$outputDir/qc_aligned_reads/cramino/unphased/HG002_Revio_A/HG002_Revio_A_cramino_aligned.arrow"), - file("$outputDir/qc_aligned_reads/mosdepth/HG002_Revio_A/HG002_Revio_A.regions.bed.gz"), - file("$outputDir/qc_aligned_reads/mosdepth/HG002_Revio_A/HG002_Revio_A.regions.bed.gz.csi"), - file("$outputDir/qc_raw_reads/fqcrs/HG002_Revio_A/HG002_PacBio_Revio.bam_other.fastq.gz.tsv.zst"), + file("$outputDir/qc/cramino/phased/HG002_Revio_A/HG002_Revio_A_cramino_aligned_phased.arrow"), + file("$outputDir/qc/cramino/unphased/HG002_Revio_A/HG002_Revio_A_cramino_aligned.arrow"), + file("$outputDir/qc/mosdepth/HG002_Revio_A/HG002_Revio_A.regions.bed.gz"), + file("$outputDir/qc/mosdepth/HG002_Revio_A/HG002_Revio_A.regions.bed.gz.csi"), file("$outputDir/repeat_calling/trgt/single_sample/HG002_Revio_A/HG002_Revio_A_sorted.vcf.gz"), file("$outputDir/repeat_calling/trgt/single_sample/HG002_Revio_A/HG002_Revio_A_sorted.vcf.gz.tbi"), bam("$outputDir/repeat_calling/trgt/single_sample/HG002_Revio_A/HG002_Revio_A_spanning_sorted.bam", stringency: 'silent').getReadsMD5(), @@ -226,9 +236,9 @@ nextflow_pipeline { file("$outputDir/cnv_calling/hificnv/HG002_Revio_B/HG002_Revio_B.HG002_Revio_B.copynum.bedgraph"), file("$outputDir/cnv_calling/hificnv/HG002_Revio_B/HG002_Revio_B.HG002_Revio_B.depth.bw"), file("$outputDir/cnv_calling/hificnv/HG002_Revio_B/HG002_Revio_B.HG002_Revio_B.maf.bw"), - file("$outputDir/qc_aligned_reads/mosdepth/HG002_Revio_B/HG002_Revio_B.mosdepth.global.dist.txt"), - file("$outputDir/qc_aligned_reads/mosdepth/HG002_Revio_B/HG002_Revio_B.mosdepth.region.dist.txt"), - file("$outputDir/qc_aligned_reads/mosdepth/HG002_Revio_B/HG002_Revio_B.mosdepth.summary.txt"), + file("$outputDir/qc/mosdepth/HG002_Revio_B/HG002_Revio_B.mosdepth.global.dist.txt"), + file("$outputDir/qc/mosdepth/HG002_Revio_B/HG002_Revio_B.mosdepth.region.dist.txt"), + file("$outputDir/qc/mosdepth/HG002_Revio_B/HG002_Revio_B.mosdepth.summary.txt"), file("$outputDir/assembly_haplotypes/gfastats/HG002_Revio_B/HG002_Revio_B.asm.bp.hap1.p_ctg.fasta.gz"), file("$outputDir/assembly_haplotypes/gfastats/HG002_Revio_B/HG002_Revio_B.asm.bp.hap2.p_ctg.fasta.gz"), file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.dip.vcf.gz"), @@ -242,11 +252,10 @@ nextflow_pipeline { file("$outputDir/methylation/modkit/pileup/unphased/HG002_Revio_B/HG002_Revio_B_modkit_pileup.bed.gz"), file("$outputDir/methylation/modkit/pileup/unphased/HG002_Revio_B/HG002_Revio_B_modkit_pileup.bed.gz.tbi"), bam("$outputDir/paraphase/HG002_Revio_B/HG002_Revio_B.paraphase.bam", stringency: 'silent').getReadsMD5(), - file("$outputDir/qc_aligned_reads/cramino/phased/HG002_Revio_B/HG002_Revio_B_cramino_aligned_phased.arrow"), - file("$outputDir/qc_aligned_reads/cramino/unphased/HG002_Revio_B/HG002_Revio_B_cramino_aligned.arrow"), - file("$outputDir/qc_aligned_reads/mosdepth/HG002_Revio_B/HG002_Revio_B.regions.bed.gz"), - file("$outputDir/qc_aligned_reads/mosdepth/HG002_Revio_B/HG002_Revio_B.regions.bed.gz.csi"), - file("$outputDir/qc_raw_reads/fqcrs/HG002_Revio_B/HG002_Revio_B.merged.fastq.gz.tsv.zst"), + file("$outputDir/qc/cramino/phased/HG002_Revio_B/HG002_Revio_B_cramino_aligned_phased.arrow"), + file("$outputDir/qc/cramino/unphased/HG002_Revio_B/HG002_Revio_B_cramino_aligned.arrow"), + file("$outputDir/qc/mosdepth/HG002_Revio_B/HG002_Revio_B.regions.bed.gz"), + file("$outputDir/qc/mosdepth/HG002_Revio_B/HG002_Revio_B.regions.bed.gz.csi"), file("$outputDir/repeat_calling/trgt/single_sample/HG002_Revio_B/HG002_Revio_B_sorted.vcf.gz"), file("$outputDir/repeat_calling/trgt/single_sample/HG002_Revio_B/HG002_Revio_B_sorted.vcf.gz.tbi"), bam("$outputDir/repeat_calling/trgt/single_sample/HG002_Revio_B/HG002_Revio_B_spanning_sorted.bam", stringency: 'silent').getReadsMD5(), @@ -254,9 +263,9 @@ nextflow_pipeline { ).match() }, // Assert exists multisample - note the trgt multisample that doesn't exist in singlesample { assert new File("$outputDir/databases/echtvar/encode/test/test.zip").exists() }, - { assert new File("$outputDir/qc_aligned_reads/somalier/relate/test/test.pairs.tsv").exists() }, - { assert new File("$outputDir/qc_aligned_reads/somalier/relate/test/test.samples.tsv").exists() }, - { assert new File("$outputDir/qc_aligned_reads/somalier/relate/test/test.html").exists() }, + { assert new File("$outputDir/qc/somalier/relate/test/test.pairs.tsv").exists() }, + { assert new File("$outputDir/qc/somalier/relate/test/test.samples.tsv").exists() }, + { assert new File("$outputDir/qc/somalier/relate/test/test.html").exists() }, { assert new File("$outputDir/multiqc/multiqc_data/multiqc_general_stats.txt").exists() }, { assert new File("$outputDir/multiqc/multiqc_data/multiqc_somalier.txt").exists() }, { assert new File("$outputDir/multiqc/multiqc_data/multiqc_data.json").exists() }, @@ -287,15 +296,15 @@ nextflow_pipeline { { assert new File("$outputDir/paraphase/HG002_Revio_A/HG002_Revio_A_paraphase_vcfs/HG002_Revio_A_hba.vcf.gz").exists() }, { assert new File("$outputDir/paraphase/HG002_Revio_A/HG002_Revio_A_paraphase_vcfs/HG002_Revio_A_hba.vcf.gz.tbi").exists() }, { assert new File("$outputDir/paraphase/HG002_Revio_A/HG002_Revio_A.paraphase.json").exists() }, - { assert new File("$outputDir/qc_aligned_reads/cramino/phased/HG002_Revio_A/HG002_Revio_A_cramino_aligned_phased.txt").exists() }, - { assert new File("$outputDir/qc_aligned_reads/cramino/unphased/HG002_Revio_A/HG002_Revio_A_cramino_aligned.txt").exists() }, + { assert new File("$outputDir/qc/cramino/phased/HG002_Revio_A/HG002_Revio_A_cramino_aligned_phased.txt").exists() }, + { assert new File("$outputDir/qc/cramino/unphased/HG002_Revio_A/HG002_Revio_A_cramino_aligned.txt").exists() }, { assert new File("$outputDir/aligned_reads/HG002_Revio_A/HG002_Revio_A_phased.bam.bai").exists() }, { assert new File("$outputDir/phasing/whatshap/phase/HG002_Revio_A/HG002_Revio_A_phased.vcf.gz").exists() }, { assert new File("$outputDir/phasing/whatshap/phase/HG002_Revio_A/HG002_Revio_A_phased.vcf.gz.tbi").exists() }, { assert new File("$outputDir/phasing/whatshap/stats/HG002_Revio_A/HG002_Revio_A_stats.stats.tsv").exists() }, { assert new File("$outputDir/phasing/whatshap/stats/HG002_Revio_A/HG002_Revio_A_stats.blocks.tsv").exists() }, - { assert new File("$outputDir/qc_raw_reads/fastqc/HG002_Revio_A/HG002_Revio_A_fastqc.html").exists() }, - { assert new File("$outputDir/qc_raw_reads/fastqc/HG002_Revio_A/HG002_Revio_A_fastqc.zip").exists() }, + { assert new File("$outputDir/qc/fastqc/HG002_Revio_A/HG002_Revio_A_fastqc.html").exists() }, + { assert new File("$outputDir/qc/fastqc/HG002_Revio_A/HG002_Revio_A_fastqc.zip").exists() }, { assert new File("$outputDir/repeat_annotation/stranger/HG002_Revio_A/HG002_Revio_A_repeat_expansion_stranger.vcf.gz").exists() }, { assert new File("$outputDir/repeat_annotation/stranger/HG002_Revio_A/HG002_Revio_A_repeat_expansion_stranger.vcf.gz.tbi").exists() }, { assert new File("$outputDir/repeat_calling/trgt/single_sample/HG002_Revio_A/HG002_Revio_A_spanning_sorted.bam.bai").exists() }, @@ -320,15 +329,15 @@ nextflow_pipeline { { assert new File("$outputDir/paraphase/HG002_Revio_B/HG002_Revio_B_paraphase_vcfs/HG002_Revio_B_hba.vcf.gz").exists() }, { assert new File("$outputDir/paraphase/HG002_Revio_B/HG002_Revio_B_paraphase_vcfs/HG002_Revio_B_hba.vcf.gz.tbi").exists() }, { assert new File("$outputDir/paraphase/HG002_Revio_B/HG002_Revio_B.paraphase.json").exists() }, - { assert new File("$outputDir/qc_aligned_reads/cramino/phased/HG002_Revio_B/HG002_Revio_B_cramino_aligned_phased.txt").exists() }, - { assert new File("$outputDir/qc_aligned_reads/cramino/unphased/HG002_Revio_B/HG002_Revio_B_cramino_aligned.txt").exists() }, + { assert new File("$outputDir/qc/cramino/phased/HG002_Revio_B/HG002_Revio_B_cramino_aligned_phased.txt").exists() }, + { assert new File("$outputDir/qc/cramino/unphased/HG002_Revio_B/HG002_Revio_B_cramino_aligned.txt").exists() }, { assert new File("$outputDir/aligned_reads/HG002_Revio_B/HG002_Revio_B_phased.bam.bai").exists() }, { assert new File("$outputDir/phasing/whatshap/phase/HG002_Revio_B/HG002_Revio_B_phased.vcf.gz").exists() }, { assert new File("$outputDir/phasing/whatshap/phase/HG002_Revio_B/HG002_Revio_B_phased.vcf.gz.tbi").exists() }, { assert new File("$outputDir/phasing/whatshap/stats/HG002_Revio_B/HG002_Revio_B_stats.stats.tsv").exists() }, { assert new File("$outputDir/phasing/whatshap/stats/HG002_Revio_B/HG002_Revio_B_stats.blocks.tsv").exists() }, - { assert new File("$outputDir/qc_raw_reads/fastqc/HG002_Revio_B/HG002_Revio_B_fastqc.html").exists() }, - { assert new File("$outputDir/qc_raw_reads/fastqc/HG002_Revio_B/HG002_Revio_B_fastqc.zip").exists() }, + { assert new File("$outputDir/qc/fastqc/HG002_Revio_B/HG002_Revio_B_fastqc.html").exists() }, + { assert new File("$outputDir/qc/fastqc/HG002_Revio_B/HG002_Revio_B_fastqc.zip").exists() }, { assert new File("$outputDir/repeat_annotation/stranger/HG002_Revio_B/HG002_Revio_B_repeat_expansion_stranger.vcf.gz").exists() }, { assert new File("$outputDir/repeat_annotation/stranger/HG002_Revio_B/HG002_Revio_B_repeat_expansion_stranger.vcf.gz.tbi").exists() }, { assert new File("$outputDir/repeat_calling/trgt/single_sample/HG002_Revio_B/HG002_Revio_B_spanning_sorted.bam.bai").exists() }, diff --git a/tests/main.nf.test.snap b/tests/main.nf.test.snap index 2a6d0ac6..dba20807 100644 --- a/tests/main.nf.test.snap +++ b/tests/main.nf.test.snap @@ -6,40 +6,39 @@ "test.samples.tsv:md5,1685dc6cb8c6b9806ca636662980d686", "test.html:md5,d05e0eceb70ada3a0c25f99a16ad1889", "multiqc_citations.txt:md5,a27affce20d456d20ed387097a4f0350", - "multiqc_fastqc.txt:md5,c60b523b5f11c07c9149043bf68f92ad", + "multiqc_fastqc.txt:md5,f0717ca13d848aa8f5eaa5d0dba92178", "multiqc_somalier.txt:md5,20b4c5b2d5b94b77fb800548e07a874e", "74b4822241bd8d1bc42f494f1f3e326c", - "HG002_Revio.asm.bp.hap1.p_ctg.assembly_summary:md5,ccaad2690abccadc4ec3b2c5d8fa4b05", - "HG002_Revio.asm.bp.hap2.p_ctg.assembly_summary:md5,c5bbeabb571453186a39cf6e487dbcc5", - "67fc08c5db63d417992aa4842a567c2d", - "28f964b0683d285fabc5407af0f28580", - "HG002_Revio.dip.bed:md5,5c0ad25a4bb82b8ce06f526664ffbd1c", - "HG002_Revio.hap1.bed:md5,28ac0570c41a83c231f2c853918d24c5", - "HG002_Revio.hap2.bed:md5,8b9a998402277ef043718f95a5410fe1", + "HG002_Revio.asm.bp.hap1.p_ctg.assembly_summary:md5,e4da3107f2421d42c6e2f59bff4e47d9", + "HG002_Revio.asm.bp.hap2.p_ctg.assembly_summary:md5,bf908610472e602fd986b9d4a4d58b9e", + "514d30ef8ff2c0a3d9a19ebc702ba883", + "2f245ef6c8405acc80bc9df75553f276", + "HG002_Revio.dip.bed:md5,4e3cde029bceaa9363402e997f12f280", + "HG002_Revio.hap1.bed:md5,3d75c9538e748a7672b934bdbde90df3", + "HG002_Revio.hap2.bed:md5,9ac411d49f08a8ec70e4792890e9faf9", "HG002_Revio.HG002_Revio.copynum.bedgraph:md5,517bc59c1b235490c79aa8319437b033", "HG002_Revio.HG002_Revio.depth.bw:md5,20757c985f4713b8568dee05765db701", "HG002_Revio.HG002_Revio.maf.bw:md5,4699d7a664277863f06eb48c3cba3c41", "HG002_Revio.mosdepth.global.dist.txt:md5,6186315d4d65eda85553af82a98829d1", "HG002_Revio.mosdepth.region.dist.txt:md5,c6c7ee8f056b8b2b92c97ec472b1db16", "HG002_Revio.mosdepth.summary.txt:md5,35c51f1ad9d2856d1e6446205f19a8e3", - "HG002_Revio.asm.bp.hap1.p_ctg.fasta.gz:md5,6c040d554c3310e1555c928a68fca9f2", - "HG002_Revio.asm.bp.hap2.p_ctg.fasta.gz:md5,d250ea1f1a1186d1d324c843bc8a3e7a", - "HG002_Revio.dip.vcf.gz:md5,ce28d131a954db1325246fce498eb659", - "HG002_Revio.hap1.paf.gz:md5,493bbf9db4bc541a348de656f29e58f1", - "HG002_Revio.hap1.var.gz:md5,55e7be8fb8fe051725890f1cfaae3692", - "HG002_Revio.hap2.paf.gz:md5,63066bc6d6abcdff9b6916d549077a41", - "HG002_Revio.hap2.var.gz:md5,fb0b9d9708cd907831f9cd7019f1d03d", - "HG002_Revio.pair.vcf.gz:md5,977d60dfdf18e27c06574ec8297e49e4", + "HG002_Revio.asm.bp.hap1.p_ctg.fasta.gz:md5,eff16bf92abff02c36cceb2eb5a9871c", + "HG002_Revio.asm.bp.hap2.p_ctg.fasta.gz:md5,e28c886baffe24c1a2972a1d95b1b250", + "HG002_Revio.dip.vcf.gz:md5,9259613d7b01347b2d817d4e547c4203", + "HG002_Revio.hap1.paf.gz:md5,46a3056ecd833d9a932c53fc46a3cafc", + "HG002_Revio.hap1.var.gz:md5,173218f6c3f5f067e0932a8331f12e3d", + "HG002_Revio.hap2.paf.gz:md5,a99e451e4af96a7ab120cedd49eea618", + "HG002_Revio.hap2.var.gz:md5,53dc16fc893a529a95067da161b4dad6", + "HG002_Revio.pair.vcf.gz:md5,a390558ab50ce0dc9efec070b1c70c22", "HG002_Revio.HG002_Revio.vcf.gz:md5,771f7d9ecbd161dedfbdd053ceff0d52", "HG002_Revio.HG002_Revio.vcf.gz.tbi:md5,65d6930f79e626a5542091b7a419dc2b", - "HG002_Revio_modkit_pileup.bed.gz:md5,8850d8414ecefc2341452f23ce5e6870", - "HG002_Revio_modkit_pileup.bed.gz.tbi:md5,af7e0b1699351d6df3d93d223d5c3da9", + "HG002_Revio_modkit_pileup.bed.gz:md5,a52bb9ab393e682d0b7118ef2efe5c15", + "HG002_Revio_modkit_pileup.bed.gz.tbi:md5,08312c13316ed9b4b582897c210ecb58", "fcc3f220bb09d3264f97e7f620779be0", "HG002_Revio_cramino_aligned_phased.arrow:md5,72df2934ff8aa7e1bf8cf8a4881a0d2a", "HG002_Revio_cramino_aligned.arrow:md5,72df2934ff8aa7e1bf8cf8a4881a0d2a", "HG002_Revio.regions.bed.gz:md5,e051f64c7a780d67ea6727a327dd4281", "HG002_Revio.regions.bed.gz.csi:md5,026eef1c69fb4aa3a1687463fe2088ab", - "HG002_PacBio_Revio.fastq.gz.tsv.zst:md5,4b073293b3e771d19b4cfdb07909571b", "HG002_Revio_sorted.vcf.gz:md5,fbb5699b8f74fc105fb154e8fac7bfea", "HG002_Revio_sorted.vcf.gz.tbi:md5,0466518ee265ba63160ed27cee0dec88", "65999ab8f2bc7841de8172468bf23ab6", @@ -53,45 +52,44 @@ "nf-test": "0.8.4", "nextflow": "24.04.3" }, - "timestamp": "2024-09-03T15:03:43.310119902" + "timestamp": "2024-09-05T18:47:05.156600526" }, "test profile - multisample": { "content": [ "test.ped:md5,db74c6787a92a70ffaab766fa4d7a873", "multiqc_citations.txt:md5,a27affce20d456d20ed387097a4f0350", - "multiqc_fastqc.txt:md5,b74145ef9fbf8addcc2997ca26b3aa45", + "multiqc_fastqc.txt:md5,79973e3ad49ae1f84c50db83edaa8bbc", "74b4822241bd8d1bc42f494f1f3e326c", - "HG002_Revio_A.asm.bp.hap1.p_ctg.assembly_summary:md5,ccaad2690abccadc4ec3b2c5d8fa4b05", - "HG002_Revio_A.asm.bp.hap2.p_ctg.assembly_summary:md5,c5bbeabb571453186a39cf6e487dbcc5", - "67fc08c5db63d417992aa4842a567c2d", - "28f964b0683d285fabc5407af0f28580", - "HG002_Revio_A.dip.bed:md5,5c0ad25a4bb82b8ce06f526664ffbd1c", - "HG002_Revio_A.hap1.bed:md5,28ac0570c41a83c231f2c853918d24c5", - "HG002_Revio_A.hap2.bed:md5,8b9a998402277ef043718f95a5410fe1", + "HG002_Revio_A.asm.bp.hap1.p_ctg.assembly_summary:md5,e4da3107f2421d42c6e2f59bff4e47d9", + "HG002_Revio_A.asm.bp.hap2.p_ctg.assembly_summary:md5,bf908610472e602fd986b9d4a4d58b9e", + "514d30ef8ff2c0a3d9a19ebc702ba883", + "2f245ef6c8405acc80bc9df75553f276", + "HG002_Revio_A.dip.bed:md5,4e3cde029bceaa9363402e997f12f280", + "HG002_Revio_A.hap1.bed:md5,3d75c9538e748a7672b934bdbde90df3", + "HG002_Revio_A.hap2.bed:md5,9ac411d49f08a8ec70e4792890e9faf9", "HG002_Revio_A.HG002_Revio_A.copynum.bedgraph:md5,517bc59c1b235490c79aa8319437b033", "HG002_Revio_A.HG002_Revio_A.depth.bw:md5,20757c985f4713b8568dee05765db701", "HG002_Revio_A.HG002_Revio_A.maf.bw:md5,4699d7a664277863f06eb48c3cba3c41", "HG002_Revio_A.mosdepth.global.dist.txt:md5,6186315d4d65eda85553af82a98829d1", "HG002_Revio_A.mosdepth.region.dist.txt:md5,c6c7ee8f056b8b2b92c97ec472b1db16", "HG002_Revio_A.mosdepth.summary.txt:md5,35c51f1ad9d2856d1e6446205f19a8e3", - "HG002_Revio_A.asm.bp.hap1.p_ctg.fasta.gz:md5,6c040d554c3310e1555c928a68fca9f2", - "HG002_Revio_A.asm.bp.hap2.p_ctg.fasta.gz:md5,d250ea1f1a1186d1d324c843bc8a3e7a", - "HG002_Revio_A.dip.vcf.gz:md5,d97b3e520a3bf6f85eb6b5dd66961e71", - "HG002_Revio_A.hap1.paf.gz:md5,493bbf9db4bc541a348de656f29e58f1", - "HG002_Revio_A.hap1.var.gz:md5,55e7be8fb8fe051725890f1cfaae3692", - "HG002_Revio_A.hap2.paf.gz:md5,63066bc6d6abcdff9b6916d549077a41", - "HG002_Revio_A.hap2.var.gz:md5,fb0b9d9708cd907831f9cd7019f1d03d", - "HG002_Revio_A.pair.vcf.gz:md5,8fd0eb40954ed6d829d0632d0cf54414", + "HG002_Revio_A.asm.bp.hap1.p_ctg.fasta.gz:md5,eff16bf92abff02c36cceb2eb5a9871c", + "HG002_Revio_A.asm.bp.hap2.p_ctg.fasta.gz:md5,e28c886baffe24c1a2972a1d95b1b250", + "HG002_Revio_A.dip.vcf.gz:md5,61ad90b86d72eb43541e0435efcee852", + "HG002_Revio_A.hap1.paf.gz:md5,46a3056ecd833d9a932c53fc46a3cafc", + "HG002_Revio_A.hap1.var.gz:md5,173218f6c3f5f067e0932a8331f12e3d", + "HG002_Revio_A.hap2.paf.gz:md5,a99e451e4af96a7ab120cedd49eea618", + "HG002_Revio_A.hap2.var.gz:md5,53dc16fc893a529a95067da161b4dad6", + "HG002_Revio_A.pair.vcf.gz:md5,233375a4067362bb6799d5ade46db537", "HG002_Revio_A.HG002_Revio_A.vcf.gz:md5,e575fbadcd826243561192310f234c82", "HG002_Revio_A.HG002_Revio_A.vcf.gz.tbi:md5,e27fe63e51a2cfaec020ad0a1aec4a7f", - "HG002_Revio_A_modkit_pileup.bed.gz:md5,8850d8414ecefc2341452f23ce5e6870", - "HG002_Revio_A_modkit_pileup.bed.gz.tbi:md5,af7e0b1699351d6df3d93d223d5c3da9", + "HG002_Revio_A_modkit_pileup.bed.gz:md5,a52bb9ab393e682d0b7118ef2efe5c15", + "HG002_Revio_A_modkit_pileup.bed.gz.tbi:md5,08312c13316ed9b4b582897c210ecb58", "fcc3f220bb09d3264f97e7f620779be0", "HG002_Revio_A_cramino_aligned_phased.arrow:md5,72df2934ff8aa7e1bf8cf8a4881a0d2a", "HG002_Revio_A_cramino_aligned.arrow:md5,72df2934ff8aa7e1bf8cf8a4881a0d2a", "HG002_Revio_A.regions.bed.gz:md5,e051f64c7a780d67ea6727a327dd4281", "HG002_Revio_A.regions.bed.gz.csi:md5,026eef1c69fb4aa3a1687463fe2088ab", - "HG002_PacBio_Revio.bam_other.fastq.gz.tsv.zst:md5,4b073293b3e771d19b4cfdb07909571b", "HG002_Revio_A_sorted.vcf.gz:md5,680938d6ebeafe73d8df0b21c0310276", "HG002_Revio_A_sorted.vcf.gz.tbi:md5,a6554ab817e7c232a1554ea85fa00151", "65999ab8f2bc7841de8172468bf23ab6", @@ -101,37 +99,36 @@ "#" ], "fe7bb70701d1100b2874c10a512a2144", - "HG002_Revio_B.asm.bp.hap1.p_ctg.assembly_summary:md5,4941730ceacb4012e771208be7a6673a", - "HG002_Revio_B.asm.bp.hap2.p_ctg.assembly_summary:md5,be7dcb093d25922b72ef0f7bc1bf0706", - "dc5ae77e003989e86ccbfd14b4ae6c7", - "3608f178b942e804e5588e5bbd9e06ee", - "HG002_Revio_B.dip.bed:md5,865dbd07d7c6b7904176ee25cce91928", - "HG002_Revio_B.hap1.bed:md5,50609668f7b26a9d68d583fdaad9bedd", - "HG002_Revio_B.hap2.bed:md5,865338ef4e621ca1e8efcc0a8a6c64d0", + "HG002_Revio_B.asm.bp.hap1.p_ctg.assembly_summary:md5,3ae598ebb95fe79bc41c03dc118fc8ae", + "HG002_Revio_B.asm.bp.hap2.p_ctg.assembly_summary:md5,2f89ef54766e0ebc51a5f14b75d5b4b0", + "6af5698b83f01b4fed43f06b8ab4665", + "f2034b8fbbb1392f15a1645329b6c473", + "HG002_Revio_B.dip.bed:md5,6885da3c38b5b1b21d875ff429414026", + "HG002_Revio_B.hap1.bed:md5,c3d28d3782515c083f77b09d0393cd26", + "HG002_Revio_B.hap2.bed:md5,3f62d041fd302b73d22e6445648629ba", "HG002_Revio_B.HG002_Revio_B.copynum.bedgraph:md5,22b040fce6bdf6b2e323f1cc1658128d", "HG002_Revio_B.HG002_Revio_B.depth.bw:md5,26bc36669ae0b066c2462e3c9307860f", "HG002_Revio_B.HG002_Revio_B.maf.bw:md5,6c5691dbaf6e526f4b8fa0f7147bfc8b", "HG002_Revio_B.mosdepth.global.dist.txt:md5,c3449580a34c495f537635c3bde4699d", "HG002_Revio_B.mosdepth.region.dist.txt:md5,98a20c6295a956932c21534cbf5e889c", "HG002_Revio_B.mosdepth.summary.txt:md5,d4fa8aeabc3b348255e7a2fa0135b1a4", - "HG002_Revio_B.asm.bp.hap1.p_ctg.fasta.gz:md5,bd4ae3d478b26ebaa6b64c6795e09e71", - "HG002_Revio_B.asm.bp.hap2.p_ctg.fasta.gz:md5,688d9e693b580a901632022b26fd9d5f", - "HG002_Revio_B.dip.vcf.gz:md5,544c42489591d02fa0dc143e6cf1c6b8", - "HG002_Revio_B.hap1.paf.gz:md5,467daced5b3897cf74c68251b8f99e3a", - "HG002_Revio_B.hap1.var.gz:md5,fb4efe049800a27b10d080ea5a563fb6", - "HG002_Revio_B.hap2.paf.gz:md5,fadac5cffae4e167ef1c41de929edf1b", - "HG002_Revio_B.hap2.var.gz:md5,6e4fcd586c9a30b46d23a8de1d0efe73", - "HG002_Revio_B.pair.vcf.gz:md5,987d192995729f82247dffdcea2dd60f", + "HG002_Revio_B.asm.bp.hap1.p_ctg.fasta.gz:md5,b8a681133dddc4e31ab00b61028f681b", + "HG002_Revio_B.asm.bp.hap2.p_ctg.fasta.gz:md5,6e78468d4a0c7b7e40c39af5767f0b5f", + "HG002_Revio_B.dip.vcf.gz:md5,ff504eb5d7be0e57c18091a6d4cb9c7e", + "HG002_Revio_B.hap1.paf.gz:md5,3aeea5d4c0f59fe7a204c0621942ce71", + "HG002_Revio_B.hap1.var.gz:md5,d3375b6acf6ef53e7ffbda7fb7e9ca89", + "HG002_Revio_B.hap2.paf.gz:md5,35d442c31b7cb03b2a4caf1418bff30f", + "HG002_Revio_B.hap2.var.gz:md5,9d7631af956f1954ad958e7359f32205", + "HG002_Revio_B.pair.vcf.gz:md5,b2273f4b207f56ebf8e6f86c266329df", "HG002_Revio_B.HG002_Revio_B.vcf.gz:md5,59773d5836f76b36dc1bf75e32186898", "HG002_Revio_B.HG002_Revio_B.vcf.gz.tbi:md5,1408aeaca23a00eee979101eb45d887d", - "HG002_Revio_B_modkit_pileup.bed.gz:md5,e50e61d644ad3219b3088b1c0d701862", - "HG002_Revio_B_modkit_pileup.bed.gz.tbi:md5,ae29296657f0d2c7451d285ec49f8675", + "HG002_Revio_B_modkit_pileup.bed.gz:md5,1042d7c0ae2098f1ab94835c9e286ce0", + "HG002_Revio_B_modkit_pileup.bed.gz.tbi:md5,67e81f6cdeedd6e2e79141a7cac0108b", "a8a1403ba192f971638c870a2be35700", "HG002_Revio_B_cramino_aligned_phased.arrow:md5,bdd385c0b007ffc30c6cfdd98b15ed82", "HG002_Revio_B_cramino_aligned.arrow:md5,bdd385c0b007ffc30c6cfdd98b15ed82", "HG002_Revio_B.regions.bed.gz:md5,deaca22783bd058cdc8756efa25b5f53", "HG002_Revio_B.regions.bed.gz.csi:md5,dd9a0d36d71da0d274d1c9ca6f8571ae", - "HG002_Revio_B.merged.fastq.gz.tsv.zst:md5,0641e175a07429b61710329a2eeef450", "HG002_Revio_B_sorted.vcf.gz:md5,ce617741468f4bc7f504f8f488332098", "HG002_Revio_B_sorted.vcf.gz.tbi:md5,e255a5ea92885967f0c126bddc8ea3b2", "6b0cf3f492ce898398835d1102afd369", @@ -145,6 +142,6 @@ "nf-test": "0.8.4", "nextflow": "24.04.3" }, - "timestamp": "2024-09-03T15:07:20.976381275" + "timestamp": "2024-09-05T18:50:33.30035723" } -} \ No newline at end of file +} diff --git a/tests/nextflow.config b/tests/nextflow.config index 3c53747a..a2a70dff 100644 --- a/tests/nextflow.config +++ b/tests/nextflow.config @@ -8,7 +8,6 @@ params { max_cpus = 4 max_memory = '15.GB' max_time = '6.h' - } // Impose same minimum Nextflow version as the pipeline for testing @@ -40,38 +39,4 @@ process { cpus = 1 } - withName: '.*:NALLO:ASSEMBLY:HIFIASM' { - - ext.args = '-f0' - } - - withName: '.*:CALL_PARALOGS:PARAPHASE' { - - ext.args = '--gene hba' - } - - withName: '.*:NALLO:PHASING:WHATSHAP_PHASE' { - - ext.args = '--ignore-read-groups --indels --distrust-genotypes --include-homozygous' - } - - withName: '.*:NALLO:SNV_ANNOTATION:ENSEMBLVEP_VEP' { - ext.prefix = { "${meta.id}_vep" } - ext.args = { [ - "--dir_plugins .", - "--plugin LoFtool,LoFtool_scores.txt", - "--plugin pLI,pLI_values.txt", - "--plugin SpliceAI,snv=spliceai_21_scores_raw_snv_-v1.3-.vcf.gz,indel=spliceai_21_scores_raw_snv_-v1.3-.vcf.gz", - '--distance 5000', - '--buffer_size 20000', - '--format vcf --max_sv_size 248387328', - '--appris --biotype --cache --canonical --ccds --compress_output bgzip', - '--domains --exclude_predicted --force_overwrite', - '--hgvs --humdiv --no_progress --numbers', - '--polyphen p --protein --offline --regulatory --sift p --symbol --tsl', - '--uniprot --vcf', - '--no_stats' - ].join(' ') } - } - } diff --git a/workflows/nallo.nf b/workflows/nallo.nf index 5de9923f..92bb5a08 100644 --- a/workflows/nallo.nf +++ b/workflows/nallo.nf @@ -35,15 +35,12 @@ include { SNV_ANNOTATION } from '../subworkflows/local/ include { CREATE_PEDIGREE_FILE as SAMPLESHEET_PED } from '../modules/local/create_pedigree_file' include { CREATE_PEDIGREE_FILE as SOMALIER_PED } from '../modules/local/create_pedigree_file' include { ECHTVAR_ENCODE } from '../modules/local/echtvar/encode/main' -include { FQCRS } from '../modules/local/fqcrs' include { SAMTOOLS_MERGE } from '../modules/nf-core/samtools/merge/main' // nf-core include { BCFTOOLS_CONCAT } from '../modules/nf-core/bcftools/concat/main' include { BCFTOOLS_PLUGINSPLIT } from '../modules/nf-core/bcftools/pluginsplit/main' include { BCFTOOLS_STATS } from '../modules/nf-core/bcftools/stats/main' -include { CAT_FASTQ } from '../modules/nf-core/cat/fastq/main' -include { FASTQC } from '../modules/nf-core/fastqc/main' include { MINIMAP2_ALIGN } from '../modules/nf-core/minimap2/align/main' include { MULTIQC } from '../modules/nf-core/multiqc/main' include { SPLITUBAM } from '../modules/nf-core/splitubam/main' @@ -126,41 +123,14 @@ workflow NALLO { } // - // Convert BAM files to FASTQ and vice versa + // Convert FASTQ to BAM (and vice versa if assembly workflow is active) // - CONVERT_INPUT_FILES ( ch_input ) + CONVERT_INPUT_FILES ( + ch_input, + !params.skip_assembly_wf + ) ch_versions = ch_versions.mix(CONVERT_INPUT_FILES.out.versions) - // - // Run raw (unaligned) read QC with FastQC and fqcrs - // - if(!params.skip_raw_read_qc) { - - // Combine samples with multiple input files before QC - not ideal - CONVERT_INPUT_FILES.out.fastq - .groupTuple() - .branch { meta, reads -> - single: reads.size() == 1 - return [ meta, reads[0] ] - multiple: reads.size() > 1 - } - .set { ch_fastq } - - CAT_FASTQ ( ch_fastq.multiple ) - ch_versions = ch_versions.mix(CAT_FASTQ.out.versions) - - ch_fastq.single - .concat ( CAT_FASTQ.out.reads ) - .set { raw_read_qc_in } - - FASTQC ( raw_read_qc_in ) - ch_versions = ch_versions.mix(FASTQC.out.versions) - ch_multiqc_files = ch_multiqc_files.mix(FASTQC.out.zip.collect{it[1]}.ifEmpty([])) - - FQCRS ( raw_read_qc_in ) - ch_versions = ch_versions.mix(FQCRS.out.versions) - } - // // Prepare references // @@ -280,15 +250,18 @@ workflow NALLO { .set { ch_updated_pedfile } // - // Run aligned read QC with mosdepth and cramino + // Run read QC with FastQC, mosdepth and cramino // - if (!params.skip_aligned_read_qc) { + if (!params.skip_qc) { + QC_ALIGNED_READS( bam_bai, fasta, ch_input_bed ) ch_versions = ch_versions.mix(QC_ALIGNED_READS.out.versions) + ch_multiqc_files = ch_multiqc_files.mix( QC_ALIGNED_READS.out.fastqc_zip.collect { it[1] }.ifEmpty([]) ) ch_multiqc_files = ch_multiqc_files.mix( QC_ALIGNED_READS.out.mosdepth_summary.collect { it[1] } ) ch_multiqc_files = ch_multiqc_files.mix( QC_ALIGNED_READS.out.mosdepth_global_dist.collect { it[1] } ) ch_multiqc_files = ch_multiqc_files.mix( QC_ALIGNED_READS.out.mosdepth_region_dist.collect { it[1] }.ifEmpty([]) ) + } // From 57ec840ed2bb0f49a32d46d5a3abd82cdd617a86 Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Wed, 11 Sep 2024 17:38:18 +0200 Subject: [PATCH 010/106] Add Zenodo link (#363) * Add Zenodo badge * Add Zenodo text --- CHANGELOG.md | 5 +++-- README.md | 4 +++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 717a123b..ec14b66e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,9 +8,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### `Added` - [#345](https://github.com/genomic-medicine-sweden/nallo/pull/345) - Added first version of a metro map -- [#346](https://github.com/genomic-medicine-sweden/nallo/pull/#346) - Added nf-test to call_svs -- [#351](https://github.com/genomic-medicine-sweden/nallo/pull/#351) - Added sample name to sniffles2 VCF +- [#346](https://github.com/genomic-medicine-sweden/nallo/pull/346) - Added nf-test to call_svs +- [#351](https://github.com/genomic-medicine-sweden/nallo/pull/351) - Added sample name to sniffles2 VCF - [#352](https://github.com/genomic-medicine-sweden/nallo/pull/352) - Added (hidden) `params.extra__options` for the test profile to modkit, vep, paraphase and hifiasm +- [#363](https://github.com/genomic-medicine-sweden/nallo/pull/363) - Added Zenodo link ### `Changed` diff --git a/README.md b/README.md index 2a22f7d9..317b8c06 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ [![GitHub Actions CI Status](https://github.com/genomic-medicine-sweden/nallo/actions/workflows/ci.yml/badge.svg)](https://github.com/genomic-medicine-sweden/nallo/actions/workflows/ci.yml) [![GitHub Actions Linting Status](https://github.com/genomic-medicine-sweden/nallo/actions/workflows/linting.yml/badge.svg)](https://github.com/genomic-medicine-sweden/nallo/actions/workflows/linting.yml) [![nf-test](https://img.shields.io/badge/unit_tests-nf--test-337ab7.svg)](https://www.nf-test.com) - +[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.13748210.svg)](https://doi.org/10.5281/zenodo.13748210) [![Nextflow](https://img.shields.io/badge/nextflow%20DSL2-%E2%89%A523.04.0-23aa62.svg)](https://www.nextflow.io/) [![run with conda](http://img.shields.io/badge/run%20with-conda-3EB049?labelColor=000000&logo=anaconda)](https://docs.conda.io/en/latest/) [![run with docker](https://img.shields.io/badge/run%20with-docker-0db7ed?labelColor=000000&logo=docker)](https://www.docker.com/) @@ -101,6 +101,8 @@ If you would like to contribute to this pipeline, please see the [contributing g ## Citations +If you use genomic-medicine-sweden/nallo for your analysis, please cite it using the following doi: [10.5281/zenodo.13748210](https://doi.org/10.5281/zenodo.13748210). + This pipeline uses code and infrastructure developed and maintained by the [nf-core](https://nf-co.re) community, reused here under the [MIT license](https://github.com/nf-core/tools/blob/master/LICENSE). > **The nf-core framework for community-curated bioinformatics pipelines.** From 47d48a56794d7af9e2b28ee0f91e31d3d9681499 Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Thu, 12 Sep 2024 09:00:56 +0200 Subject: [PATCH 011/106] Add CI test profiles to nf-test, and only use nf-test for CI (#365) * Add CI test profiles to nf-test, and only use nf-test * Fix configs * Fix configs --- .github/workflows/ci.yml | 33 +------ CHANGELOG.md | 3 +- conf/test.config | 17 ++++ nf-test.config | 7 +- tests/main.nf.test | 194 +++++++++++++++++++++++++++------------ tests/main.nf.test.snap | 58 +++++++++++- tests/nextflow.config | 42 --------- 7 files changed, 214 insertions(+), 140 deletions(-) delete mode 100644 tests/nextflow.config diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a9d8fbbe..9c39a087 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -20,34 +20,6 @@ permissions: jobs: test: - name: Run pipeline with test data - # Only run on push if this is the nf-core dev branch (merged PRs) - if: "${{ github.event_name != 'push' || (github.event_name == 'push' && github.repository == 'genomic-medicine-sweden/nallo') }}" - runs-on: ubuntu-latest - strategy: - matrix: - parameters: - - "" - - "--preset ONT_R10 --input https://github.com/genomic-medicine-sweden/test-datasets/raw/e2266a34c14d1e0a9ef798de3cd81a76c9216fc1/testdata/samplesheet_multisample_bam_ont.csv --parallel_alignments 2 --parallel_snv 1" - NXF_VER: - - "23.04.0" - - "latest-everything" - steps: - - name: Check out pipeline code - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4 - - - name: Install Nextflow - uses: nf-core/setup-nextflow@v2 - with: - version: "${{ matrix.NXF_VER }}" - - - name: Disk space cleanup - uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be # v1.3.1 - - - name: Run pipeline with test data - run: | - nextflow run ${GITHUB_WORKSPACE} -profile test,docker --outdir ./results ${{ matrix.parameters }} - nftest: name: ${{ matrix.tags }} ${{ matrix.profile }} NF-${{ matrix.NXF_VER }} runs-on: ubuntu-latest strategy: @@ -57,11 +29,12 @@ jobs: - "latest-everything" - "23.04.0" tags: + - "samplesheet" + - "samplesheet_multisample_bam" + - "samplesheet_multisample_ont_bam" - "SHORT_VARIANT_CALLING" - "SNV_ANNOTATION" - "CALL_SVS" - - "samplesheet" - - "samplesheet_multisample_bam" profile: - "docker" diff --git a/CHANGELOG.md b/CHANGELOG.md index ec14b66e..e57fd2a3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#346](https://github.com/genomic-medicine-sweden/nallo/pull/346) - Added nf-test to call_svs - [#351](https://github.com/genomic-medicine-sweden/nallo/pull/351) - Added sample name to sniffles2 VCF - [#352](https://github.com/genomic-medicine-sweden/nallo/pull/352) - Added (hidden) `params.extra__options` for the test profile to modkit, vep, paraphase and hifiasm +- [#356](https://github.com/genomic-medicine-sweden/nallo/pull/356) - Added missing SNV and PED file to output documentation - [#363](https://github.com/genomic-medicine-sweden/nallo/pull/363) - Added Zenodo link ### `Changed` @@ -24,7 +25,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#352](https://github.com/genomic-medicine-sweden/nallo/pull/352) - Changed FastQC from the main workflow to QC_ALIGNED_READS, updated output directories and documentation - [#352](https://github.com/genomic-medicine-sweden/nallo/pull/352) - Combined `--skip_raw_read_qc` and `--skip_aligned_read_qc` parameters into `--skip_qc` - [#355](https://github.com/genomic-medicine-sweden/nallo/pull/355) - Updated paraphase to compress and index VCFs within the module -- [#356](https://github.com/genomic-medicine-sweden/nallo/pull/356) - Added SNV and PED file to output documentation +- [#365](https://github.com/genomic-medicine-sweden/nallo/pull/365) - Changed CI to only use nf-test for pipeline tests ### `Removed` diff --git a/conf/test.config b/conf/test.config index 269ae157..cad5f2ef 100644 --- a/conf/test.config +++ b/conf/test.config @@ -18,6 +18,12 @@ params { max_memory = '15.GB' max_time = '6.h' + // Base directory for nf-core/modules test data + modules_testdata_base_path = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/' + + // Base directory for genomic-medicine-sweden/nallo test data + pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/' + // References fasta = params.pipelines_testdata_base_path + 'nallo/reference/hg38.test.fa.gz' input = 'https://github.com/genomic-medicine-sweden/test-datasets/raw/2948776ddf24ea131f527aa1f2dc23a43bb7b952/testdata/samplesheet.csv' @@ -47,6 +53,17 @@ params { extra_hifiasm_options = '-f0 -k30 -w30 -D10 -r1 -N1' } +// Impose same minimum Nextflow version as in nextflow.config +manifest { + nextflowVersion = '!>=23.04.0' +} + +// Disable all Nextflow reporting options +timeline { enabled = false } +report { enabled = false } +trace { enabled = false } +dag { enabled = false } + process { withLabel: 'process_high' { diff --git a/nf-test.config b/nf-test.config index d847be4d..13ad980b 100644 --- a/nf-test.config +++ b/nf-test.config @@ -3,12 +3,9 @@ config { load "nft-bam@0.3.0" load "nft-vcf@1.0.7" } - stage { - copy './nextflow_schema.json' - } testsDir "." workDir ".nf-test" - configFile "tests/nextflow.config" - profile "" + configFile "conf/test.config" + profile "docker" } diff --git a/tests/main.nf.test b/tests/main.nf.test index 5265a526..83eab7e3 100644 --- a/tests/main.nf.test +++ b/tests/main.nf.test @@ -10,36 +10,8 @@ nextflow_pipeline { when { params { - // Base directory for genomic-medicine-sweden/nallo test data - pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/' - // Test files - fasta = params.pipelines_testdata_base_path + 'nallo/reference/hg38.test.fa.gz' - input = 'https://github.com/genomic-medicine-sweden/test-datasets/raw/e2266a34c14d1e0a9ef798de3cd81a76c9216fc1/testdata/samplesheet.csv' - bed = params.pipelines_testdata_base_path + 'nallo/reference/test_data.bed' - hificnv_xy = params.pipelines_testdata_base_path + 'nallo/reference/expected_cn.hg38.XY.bed' - hificnv_xx = params.pipelines_testdata_base_path + 'nallo/reference/expected_cn.hg38.XX.bed' - hificnv_exclude = params.pipelines_testdata_base_path + 'nallo/reference/empty.bed' - par_regions = params.pipelines_testdata_base_path + 'nallo/reference/hs38.PAR.bed' - trgt_repeats = params.pipelines_testdata_base_path + 'nallo/reference/pathogenic_repeats.hg38.bed' - variant_catalog = params.pipelines_testdata_base_path + 'nallo/reference/variant_catalog_grch38.json' - vep_cache = params.pipelines_testdata_base_path + 'nallo/reference/vep_cache_test_data.tar.gz' - vep_plugin_files = params.pipelines_testdata_base_path + 'nallo/reference/vep_plugin_files.csv' - snp_db = params.pipelines_testdata_base_path + 'nallo/testdata/snp_dbs.csv' - somalier_sites = params.pipelines_testdata_base_path + 'nallo/reference/somalier_sites.vcf.gz' - reduced_penetrance = params.pipelines_testdata_base_path + 'nallo/reference/reduced_penetrance.tsv' - score_config_snv = params.pipelines_testdata_base_path + 'nallo/reference/rank_model_snv.ini' - variant_consequences_snv = params.pipelines_testdata_base_path + 'nallo/reference/variant_consequences_v2.txt' - - // Parameters - parallel_snv = 2 - preset = "revio" - outdir = "$outputDir" - - // Test specific options - extra_modkit_options = '--seed 1 --sampling-frac 0.1' - extra_vep_options = '--plugin SpliceAI,snv=spliceai_21_scores_raw_snv_-v1.3-.vcf.gz,indel=spliceai_21_scores_raw_snv_-v1.3-.vcf.gz' - extra_paraphase_options = '--gene hba' - extra_hifiasm_options = '-f0 -k30 -w30 -D10 -r1 -N1' + input = 'https://github.com/genomic-medicine-sweden/test-datasets/raw/e2266a34c14d1e0a9ef798de3cd81a76c9216fc1/testdata/samplesheet.csv' + outdir = "$outputDir" } } @@ -147,36 +119,8 @@ nextflow_pipeline { when { params { - // Base directory for genomic-medicine-sweden/nallo test data - pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/' - // Test files - fasta = params.pipelines_testdata_base_path + 'nallo/reference/hg38.test.fa.gz' - input = 'https://github.com/genomic-medicine-sweden/test-datasets/raw/e2266a34c14d1e0a9ef798de3cd81a76c9216fc1/testdata/samplesheet_multisample_bam.csv' - bed = params.pipelines_testdata_base_path + 'nallo/reference/test_data.bed' - hificnv_xy = params.pipelines_testdata_base_path + 'nallo/reference/expected_cn.hg38.XY.bed' - hificnv_xx = params.pipelines_testdata_base_path + 'nallo/reference/expected_cn.hg38.XX.bed' - hificnv_exclude = params.pipelines_testdata_base_path + 'nallo/reference/empty.bed' - par_regions = params.pipelines_testdata_base_path + 'nallo/reference/hs38.PAR.bed' - trgt_repeats = params.pipelines_testdata_base_path + 'nallo/reference/pathogenic_repeats.hg38.bed' - variant_catalog = params.pipelines_testdata_base_path + 'nallo/reference/variant_catalog_grch38.json' - vep_cache = params.pipelines_testdata_base_path + 'nallo/reference/vep_cache_test_data.tar.gz' - vep_plugin_files = params.pipelines_testdata_base_path + 'nallo/reference/vep_plugin_files.csv' - snp_db = params.pipelines_testdata_base_path + 'nallo/testdata/snp_dbs.csv' - somalier_sites = params.pipelines_testdata_base_path + 'nallo/reference/somalier_sites.vcf.gz' - reduced_penetrance = params.pipelines_testdata_base_path + 'nallo/reference/reduced_penetrance.tsv' - score_config_snv = params.pipelines_testdata_base_path + 'nallo/reference/rank_model_snv.ini' - variant_consequences_snv = params.pipelines_testdata_base_path + 'nallo/reference/variant_consequences_v2.txt' - - // Parameters - parallel_snv = 2 - preset = "revio" - outdir = "$outputDir" - - // Test specific options - extra_modkit_options = '--seed 1 --sampling-frac 0.1' - extra_vep_options = '--plugin SpliceAI,snv=spliceai_21_scores_raw_snv_-v1.3-.vcf.gz,indel=spliceai_21_scores_raw_snv_-v1.3-.vcf.gz' - extra_paraphase_options = '--gene hba' - extra_hifiasm_options = '-f0 -k30 -w30 -D10 -r1 -N1' + input = 'https://github.com/genomic-medicine-sweden/test-datasets/raw/e2266a34c14d1e0a9ef798de3cd81a76c9216fc1/testdata/samplesheet_multisample_bam.csv' + outdir = "$outputDir" } } @@ -348,4 +292,134 @@ nextflow_pipeline { ) } } + + test("test profile - multisample - ont - parallel_alignments 2 - parallel_snv 1") { + tag "samplesheet_multisample_ont_bam" + + when { + params { + input = 'https://github.com/genomic-medicine-sweden/test-datasets/raw/e2266a34c14d1e0a9ef798de3cd81a76c9216fc1/testdata/samplesheet_multisample_bam_ont.csv' + preset = 'ONT_R10' + parallel_alignments = 2 + parallel_snv = 1 + outdir = "$outputDir" + } + } + + then { + assertAll ( + { assert workflow.success }, + // Assert with snapshot multisample + { assert snapshot( + file("$outputDir/pedigree/test.ped"), + file("$outputDir/multiqc/multiqc_data/multiqc_citations.txt"), + file("$outputDir/multiqc/multiqc_data/multiqc_fastqc.txt"), + // Assert with snapshot HG002_ONT_A + bam("$outputDir/aligned_reads/HG002_ONT_A/HG002_ONT_A_phased.bam", stringency: 'silent').getReadsMD5(), + file("$outputDir/cnv_calling/hificnv/HG002_ONT_A/HG002_ONT_A.HG002_ONT_A.copynum.bedgraph"), + file("$outputDir/cnv_calling/hificnv/HG002_ONT_A/HG002_ONT_A.HG002_ONT_A.depth.bw"), + file("$outputDir/cnv_calling/hificnv/HG002_ONT_A/HG002_ONT_A.HG002_ONT_A.maf.bw"), + file("$outputDir/qc/mosdepth/HG002_ONT_A/HG002_ONT_A.mosdepth.global.dist.txt"), + file("$outputDir/qc/mosdepth/HG002_ONT_A/HG002_ONT_A.mosdepth.region.dist.txt"), + file("$outputDir/qc/mosdepth/HG002_ONT_A/HG002_ONT_A.mosdepth.summary.txt"), + file("$outputDir/cnv_calling/hificnv/HG002_ONT_A/HG002_ONT_A.HG002_ONT_A.vcf.gz"), + file("$outputDir/cnv_calling/hificnv/HG002_ONT_A/HG002_ONT_A.HG002_ONT_A.vcf.gz.tbi"), + file("$outputDir/methylation/modkit/pileup/unphased/HG002_ONT_A/HG002_ONT_A_modkit_pileup.bed.gz"), + file("$outputDir/methylation/modkit/pileup/unphased/HG002_ONT_A/HG002_ONT_A_modkit_pileup.bed.gz.tbi"), + bam("$outputDir/paraphase/HG002_ONT_A/HG002_ONT_A.paraphase.bam", stringency: 'silent').getReadsMD5(), + file("$outputDir/qc/cramino/phased/HG002_ONT_A/HG002_ONT_A_cramino_aligned_phased.arrow"), + file("$outputDir/qc/cramino/unphased/HG002_ONT_A/HG002_ONT_A_cramino_aligned.arrow"), + file("$outputDir/qc/mosdepth/HG002_ONT_A/HG002_ONT_A.regions.bed.gz"), + file("$outputDir/qc/mosdepth/HG002_ONT_A/HG002_ONT_A.regions.bed.gz.csi"), + file("$outputDir/snvs/stats/single_sample/HG002_ONT_A.vcf.gz.bcftools_stats.txt").readLines()[0..2], + // Assert with snapshot HG002_ONT_B + bam("$outputDir/aligned_reads/HG002_ONT_B/HG002_ONT_B_phased.bam", stringency: 'silent').getReadsMD5(), + file("$outputDir/cnv_calling/hificnv/HG002_ONT_B/HG002_ONT_B.HG002_ONT_B.copynum.bedgraph"), + file("$outputDir/cnv_calling/hificnv/HG002_ONT_B/HG002_ONT_B.HG002_ONT_B.depth.bw"), + file("$outputDir/cnv_calling/hificnv/HG002_ONT_B/HG002_ONT_B.HG002_ONT_B.maf.bw"), + file("$outputDir/qc/mosdepth/HG002_ONT_B/HG002_ONT_B.mosdepth.global.dist.txt"), + file("$outputDir/qc/mosdepth/HG002_ONT_B/HG002_ONT_B.mosdepth.region.dist.txt"), + file("$outputDir/qc/mosdepth/HG002_ONT_B/HG002_ONT_B.mosdepth.summary.txt"), + file("$outputDir/cnv_calling/hificnv/HG002_ONT_B/HG002_ONT_B.HG002_ONT_B.vcf.gz"), + file("$outputDir/cnv_calling/hificnv/HG002_ONT_B/HG002_ONT_B.HG002_ONT_B.vcf.gz.tbi"), + file("$outputDir/methylation/modkit/pileup/unphased/HG002_ONT_B/HG002_ONT_B_modkit_pileup.bed.gz"), + file("$outputDir/methylation/modkit/pileup/unphased/HG002_ONT_B/HG002_ONT_B_modkit_pileup.bed.gz.tbi"), + bam("$outputDir/paraphase/HG002_ONT_B/HG002_ONT_B.paraphase.bam", stringency: 'silent').getReadsMD5(), + file("$outputDir/qc/cramino/phased/HG002_ONT_B/HG002_ONT_B_cramino_aligned_phased.arrow"), + file("$outputDir/qc/cramino/unphased/HG002_ONT_B/HG002_ONT_B_cramino_aligned.arrow"), + file("$outputDir/qc/mosdepth/HG002_ONT_B/HG002_ONT_B.regions.bed.gz"), + file("$outputDir/qc/mosdepth/HG002_ONT_B/HG002_ONT_B.regions.bed.gz.csi"), + file("$outputDir/snvs/stats/single_sample/HG002_ONT_B.vcf.gz.bcftools_stats.txt").readLines()[0..2], + ).match() }, + // Assert exists multisample - note the trgt multisample that doesn't exist in singlesample + { assert new File("$outputDir/databases/echtvar/encode/test/test.zip").exists() }, + { assert new File("$outputDir/qc/somalier/relate/test/test.pairs.tsv").exists() }, + { assert new File("$outputDir/qc/somalier/relate/test/test.samples.tsv").exists() }, + { assert new File("$outputDir/qc/somalier/relate/test/test.html").exists() }, + { assert new File("$outputDir/multiqc/multiqc_data/multiqc_general_stats.txt").exists() }, + { assert new File("$outputDir/multiqc/multiqc_data/multiqc_somalier.txt").exists() }, + { assert new File("$outputDir/multiqc/multiqc_data/multiqc_data.json").exists() }, + { assert new File("$outputDir/multiqc/multiqc_data/multiqc.log").exists() }, + { assert new File("$outputDir/multiqc/multiqc_report.html").exists() }, + { assert new File("$outputDir/multiqc/multiqc_data/multiqc_sources.txt").exists() }, + { assert new File("$outputDir/multiqc/multiqc_data/multiqc_software_versions.txt").exists() }, + { assert new File("$outputDir/snvs/multi_sample/test/test_snv_annotated_ranked.vcf.gz").exists() }, + { assert new File("$outputDir/snvs/multi_sample/test/test_snv_annotated_ranked.vcf.gz.tbi").exists() }, + { assert new File("$outputDir/svs/multi_sample/test/test_svs.vcf.gz").exists() }, + { assert new File("$outputDir/svs/multi_sample/test/test_svs.vcf.gz.tbi").exists() }, + // Assert exists HG002_ONT_A + { assert new File("$outputDir/aligned_reads/HG002_ONT_A/HG002_ONT_A_phased.bam.bai").exists() }, + { assert new File("$outputDir/cnv_calling/hificnv/HG002_ONT_A/HG002_ONT_A.log").exists() }, + { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_ONT_A/HG002_ONT_A_modkit_pileup_phased_1.bed.gz").exists() }, + { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_ONT_A/HG002_ONT_A_modkit_pileup_phased_1.bed.gz.tbi").exists() }, + { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_ONT_A/HG002_ONT_A_modkit_pileup_phased_2.bed.gz").exists() }, + { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_ONT_A/HG002_ONT_A_modkit_pileup_phased_2.bed.gz.tbi").exists() }, + { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_ONT_A/HG002_ONT_A_modkit_pileup_phased_ungrouped.bed.gz").exists() }, + { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_ONT_A/HG002_ONT_A_modkit_pileup_phased_ungrouped.bed.gz.tbi").exists() }, + { assert new File("$outputDir/paraphase/HG002_ONT_A/HG002_ONT_A.paraphase.bam.bai").exists() }, + { assert new File("$outputDir/paraphase/HG002_ONT_A/HG002_ONT_A_paraphase_vcfs/HG002_ONT_A_hba.vcf.gz").exists() }, + { assert new File("$outputDir/paraphase/HG002_ONT_A/HG002_ONT_A_paraphase_vcfs/HG002_ONT_A_hba.vcf.gz.tbi").exists() }, + { assert new File("$outputDir/paraphase/HG002_ONT_A/HG002_ONT_A.paraphase.json").exists() }, + { assert new File("$outputDir/qc/cramino/phased/HG002_ONT_A/HG002_ONT_A_cramino_aligned_phased.txt").exists() }, + { assert new File("$outputDir/qc/cramino/unphased/HG002_ONT_A/HG002_ONT_A_cramino_aligned.txt").exists() }, + { assert new File("$outputDir/aligned_reads/HG002_ONT_A/HG002_ONT_A_phased.bam.bai").exists() }, + { assert new File("$outputDir/phasing/whatshap/phase/HG002_ONT_A/HG002_ONT_A_phased.vcf.gz").exists() }, + { assert new File("$outputDir/phasing/whatshap/phase/HG002_ONT_A/HG002_ONT_A_phased.vcf.gz.tbi").exists() }, + { assert new File("$outputDir/phasing/whatshap/stats/HG002_ONT_A/HG002_ONT_A_stats.stats.tsv").exists() }, + { assert new File("$outputDir/phasing/whatshap/stats/HG002_ONT_A/HG002_ONT_A_stats.blocks.tsv").exists() }, + { assert new File("$outputDir/qc/fastqc/HG002_ONT_A/HG002_ONT_A_fastqc.html").exists() }, + { assert new File("$outputDir/qc/fastqc/HG002_ONT_A/HG002_ONT_A_fastqc.zip").exists() }, + { assert new File("$outputDir/snvs/single_sample/HG002_ONT_A/HG002_ONT_A_snv_annotated_ranked.vcf.gz").exists() }, + { assert new File("$outputDir/snvs/single_sample/HG002_ONT_A/HG002_ONT_A_snv_annotated_ranked.vcf.gz.tbi").exists() }, + { assert new File("$outputDir/svs/single_sample/HG002_ONT_A/HG002_ONT_A_sniffles.vcf.gz").exists() }, + { assert new File("$outputDir/svs/single_sample/HG002_ONT_A/HG002_ONT_A_sniffles.vcf.gz.tbi").exists() }, + // Assert exists HG002_ONT_B + { assert new File("$outputDir/aligned_reads/HG002_ONT_B/HG002_ONT_B_phased.bam.bai").exists() }, + { assert new File("$outputDir/cnv_calling/hificnv/HG002_ONT_B/HG002_ONT_B.log").exists() }, + { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_ONT_B/HG002_ONT_B_modkit_pileup_phased_1.bed.gz").exists() }, + { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_ONT_B/HG002_ONT_B_modkit_pileup_phased_1.bed.gz.tbi").exists() }, + { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_ONT_B/HG002_ONT_B_modkit_pileup_phased_2.bed.gz").exists() }, + { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_ONT_B/HG002_ONT_B_modkit_pileup_phased_2.bed.gz.tbi").exists() }, + { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_ONT_B/HG002_ONT_B_modkit_pileup_phased_ungrouped.bed.gz").exists() }, + { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_ONT_B/HG002_ONT_B_modkit_pileup_phased_ungrouped.bed.gz.tbi").exists() }, + { assert new File("$outputDir/paraphase/HG002_ONT_B/HG002_ONT_B.paraphase.bam.bai").exists() }, + { assert new File("$outputDir/paraphase/HG002_ONT_B/HG002_ONT_B_paraphase_vcfs/HG002_ONT_B_hba.vcf.gz").exists() }, + { assert new File("$outputDir/paraphase/HG002_ONT_B/HG002_ONT_B_paraphase_vcfs/HG002_ONT_B_hba.vcf.gz.tbi").exists() }, + { assert new File("$outputDir/paraphase/HG002_ONT_B/HG002_ONT_B.paraphase.json").exists() }, + { assert new File("$outputDir/qc/cramino/phased/HG002_ONT_B/HG002_ONT_B_cramino_aligned_phased.txt").exists() }, + { assert new File("$outputDir/qc/cramino/unphased/HG002_ONT_B/HG002_ONT_B_cramino_aligned.txt").exists() }, + { assert new File("$outputDir/aligned_reads/HG002_ONT_B/HG002_ONT_B_phased.bam.bai").exists() }, + { assert new File("$outputDir/phasing/whatshap/phase/HG002_ONT_B/HG002_ONT_B_phased.vcf.gz").exists() }, + { assert new File("$outputDir/phasing/whatshap/phase/HG002_ONT_B/HG002_ONT_B_phased.vcf.gz.tbi").exists() }, + { assert new File("$outputDir/phasing/whatshap/stats/HG002_ONT_B/HG002_ONT_B_stats.stats.tsv").exists() }, + { assert new File("$outputDir/phasing/whatshap/stats/HG002_ONT_B/HG002_ONT_B_stats.blocks.tsv").exists() }, + { assert new File("$outputDir/qc/fastqc/HG002_ONT_B/HG002_ONT_B_fastqc.html").exists() }, + { assert new File("$outputDir/qc/fastqc/HG002_ONT_B/HG002_ONT_B_fastqc.zip").exists() }, + { assert new File("$outputDir/snvs/single_sample/HG002_ONT_B/HG002_ONT_B_snv_annotated_ranked.vcf.gz").exists() }, + { assert new File("$outputDir/snvs/single_sample/HG002_ONT_B/HG002_ONT_B_snv_annotated_ranked.vcf.gz.tbi").exists() }, + { assert new File("$outputDir/svs/single_sample/HG002_ONT_B/HG002_ONT_B_sniffles.vcf.gz").exists() }, + { assert new File("$outputDir/svs/single_sample/HG002_ONT_B/HG002_ONT_B_sniffles.vcf.gz.tbi").exists() } + ) + } + } } diff --git a/tests/main.nf.test.snap b/tests/main.nf.test.snap index dba20807..54fbd4bd 100644 --- a/tests/main.nf.test.snap +++ b/tests/main.nf.test.snap @@ -142,6 +142,60 @@ "nf-test": "0.8.4", "nextflow": "24.04.3" }, - "timestamp": "2024-09-05T18:50:33.30035723" + "timestamp": "2024-08-29T10:45:44.41793623" + }, + "test profile - multisample - ont - parallel_alignments 2 - parallel_snv 1": { + "content": [ + "test.ped:md5,deb1ee6bd38d6e8f7cb92801d8a12f12", + "multiqc_citations.txt:md5,a27affce20d456d20ed387097a4f0350", + "multiqc_fastqc.txt:md5,cbf676cc40ff39efe631eb8ec7f9b660", + "34f94d8ea8bcbab685c51eab364d8e7f", + "HG002_ONT_A.HG002_ONT_A.copynum.bedgraph:md5,4c5517c1783afa11ff93c8d8627fbe42", + "HG002_ONT_A.HG002_ONT_A.depth.bw:md5,7fc75ebffd8433e8bcfe9726ff97f023", + "HG002_ONT_A.HG002_ONT_A.maf.bw:md5,c3e4244bb52fb1decbf608db5a3ff322", + "HG002_ONT_A.mosdepth.global.dist.txt:md5,0370c56a598e397700218ffc74ce59fe", + "HG002_ONT_A.mosdepth.region.dist.txt:md5,190d4e34336c81cc652e84953a08b71f", + "HG002_ONT_A.mosdepth.summary.txt:md5,234b4084f2ed119bc2106f2fd148a81f", + "HG002_ONT_A.HG002_ONT_A.vcf.gz:md5,4814c13b0127f88bfa7857bf19e17875", + "HG002_ONT_A.HG002_ONT_A.vcf.gz.tbi:md5,0a5ace7b099fbe88ba3806e7ce83d653", + "HG002_ONT_A_modkit_pileup.bed.gz:md5,89d5b1f8af103c162444a66979777dce", + "HG002_ONT_A_modkit_pileup.bed.gz.tbi:md5,0505b424341a3e80d68c8c7d6b783a74", + "7b8dc04d36dc2290fd031da73e8c8553", + "HG002_ONT_A_cramino_aligned_phased.arrow:md5,99a4580cc8b89e3678091e975627821f", + "HG002_ONT_A_cramino_aligned.arrow:md5,99a4580cc8b89e3678091e975627821f", + "HG002_ONT_A.regions.bed.gz:md5,533fce5065e12a67be44665c7273daf1", + "HG002_ONT_A.regions.bed.gz.csi:md5,11db27a464f8996bae5521ee7d71c1ce", + [ + "# This file was produced by bcftools stats (1.20+htslib-1.20) and can be plotted using plot-vcfstats.", + "# The command line was:\tbcftools stats HG002_ONT_A.vcf.gz", + "#" + ], + "60fee683fe79dab18de64fd026e73696", + "HG002_ONT_B.HG002_ONT_B.copynum.bedgraph:md5,c7ae176dfb3339f8f7f935f1021a9e46", + "HG002_ONT_B.HG002_ONT_B.depth.bw:md5,29f47f09dcb564ffda3de5258a244d9c", + "HG002_ONT_B.HG002_ONT_B.maf.bw:md5,f5a277813f06a45f9d156227bedbea7f", + "HG002_ONT_B.mosdepth.global.dist.txt:md5,adc44aa185f5c7032fcf96c1a41a98b2", + "HG002_ONT_B.mosdepth.region.dist.txt:md5,eb15dbfd540c96218c72cb5903d4a03d", + "HG002_ONT_B.mosdepth.summary.txt:md5,daa85bd5d830a8e388f348992420271a", + "HG002_ONT_B.HG002_ONT_B.vcf.gz:md5,abf20157c1460bdb41fd80b412358fd9", + "HG002_ONT_B.HG002_ONT_B.vcf.gz.tbi:md5,c026fdb2c0711486963df37dcc6ba050", + "HG002_ONT_B_modkit_pileup.bed.gz:md5,e4d41e410b71218dc1fd3ecf2771fdd7", + "HG002_ONT_B_modkit_pileup.bed.gz.tbi:md5,0fddffcd9bfbdfe7bb1ec731206987d9", + "5600163a609e93dfb2546d1eacd30a07", + "HG002_ONT_B_cramino_aligned_phased.arrow:md5,6cff826e945e44dee20b0efcee1ea6fb", + "HG002_ONT_B_cramino_aligned.arrow:md5,6cff826e945e44dee20b0efcee1ea6fb", + "HG002_ONT_B.regions.bed.gz:md5,4f3ff59edd8afae966f152661757b1e5", + "HG002_ONT_B.regions.bed.gz.csi:md5,fd265daef0567a7aef24374918a126d0", + [ + "# This file was produced by bcftools stats (1.20+htslib-1.20) and can be plotted using plot-vcfstats.", + "# The command line was:\tbcftools stats HG002_ONT_B.vcf.gz", + "#" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.3" + }, + "timestamp": "2024-09-11T16:54:59.350031395" } -} +} \ No newline at end of file diff --git a/tests/nextflow.config b/tests/nextflow.config deleted file mode 100644 index a2a70dff..00000000 --- a/tests/nextflow.config +++ /dev/null @@ -1,42 +0,0 @@ -params { - // Base directory for nf-core/modules test data - modules_testdata_base_path = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/' - - // Base directory for genomic-medicine-sweden/nallo test data - pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/' - - max_cpus = 4 - max_memory = '15.GB' - max_time = '6.h' -} - -// Impose same minimum Nextflow version as the pipeline for testing -manifest { - nextflowVersion = '!>=23.04.0' -} - -// Disable all Nextflow reporting options -timeline { enabled = false } -report { enabled = false } -trace { enabled = false } -dag { enabled = false } - -process { - - withLabel: 'process_high' { - cpus = 4 - } - - withLabel: 'process_medium' { - cpus = 2 - } - - withLabel: 'process_low' { - cpus = 1 - } - - withLabel: 'process_single' { - cpus = 1 - } - -} From a8874db265636fe2b13476a4c60d932eec641eb3 Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Thu, 12 Sep 2024 13:05:21 +0200 Subject: [PATCH 012/106] Sort inputs when creating PED-files, so the output it always the same (#366) --- CHANGELOG.md | 1 + .../main.nf} | 5 +- .../create_pedigree_file/tests/main.nf.test | 67 +++++++++++ .../tests/main.nf.test.snap | 37 ++++++ nf-test.config | 2 +- .../local/call_svs/tests/main.nf.test | 2 +- .../local/call_svs/tests/main.nf.test.snap | 22 ++-- tests/main.nf.test | 1 + tests/main.nf.test.snap | 110 +++++++++--------- tests/nextflow.config | 42 +++++++ workflows/nallo.nf | 4 +- 11 files changed, 222 insertions(+), 71 deletions(-) rename modules/local/{create_pedigree_file.nf => create_pedigree_file/main.nf} (87%) create mode 100644 modules/local/create_pedigree_file/tests/main.nf.test create mode 100644 modules/local/create_pedigree_file/tests/main.nf.test.snap create mode 100644 tests/nextflow.config diff --git a/CHANGELOG.md b/CHANGELOG.md index e57fd2a3..62e541ae 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#352](https://github.com/genomic-medicine-sweden/nallo/pull/352) - Added (hidden) `params.extra__options` for the test profile to modkit, vep, paraphase and hifiasm - [#356](https://github.com/genomic-medicine-sweden/nallo/pull/356) - Added missing SNV and PED file to output documentation - [#363](https://github.com/genomic-medicine-sweden/nallo/pull/363) - Added Zenodo link +- [#366](https://github.com/genomic-medicine-sweden/nallo/pull/366) - Added sorting of samples when creating PED files, so the output is always the same ### `Changed` diff --git a/modules/local/create_pedigree_file.nf b/modules/local/create_pedigree_file/main.nf similarity index 87% rename from modules/local/create_pedigree_file.nf rename to modules/local/create_pedigree_file/main.nf index 18480df5..4bbe3344 100644 --- a/modules/local/create_pedigree_file.nf +++ b/modules/local/create_pedigree_file/main.nf @@ -8,7 +8,7 @@ process CREATE_PEDIGREE_FILE { 'biocontainers/python:3.8.3' }" input: - tuple val(project), val(samples) + tuple val(project), val(meta) output: tuple val(project), path("*.ped"), emit: ped @@ -19,6 +19,9 @@ process CREATE_PEDIGREE_FILE { script: def out = new File(project + ".ped") + def samples = (meta.collect().size() > 1) ? meta.sort{ a, b -> + // First sort on family_id, then on sample id + a.family_id <=> b.family_id ?: a.id <=> b.id } : meta outfile_text = ['#family_id', 'sample_id', 'father', 'mother', 'sex', 'phenotype'].join('\\t') def samples_list = [] for(int i = 0; i", "##bcftools_viewVersion=1.20+htslib-1.20" ], - "13d352d7a4dd922085f653a3da950bce", + "5924013e8c1835d7bb0502ee85f2128d", [ "##contig=", "##contig=", @@ -1396,7 +1396,7 @@ "##INFO=", "##bcftools_viewVersion=1.20+htslib-1.20" ], - "28ed9eefcf5bb27fed8c55f615219f33", + "8df5ad12540b4e0982bb74d5b268795d", [ "versions.yml:md5,2188f00d20a376929f9f35f824e94667", "versions.yml:md5,572bfd042014333af194207291d12b95", @@ -1408,7 +1408,7 @@ "nf-test": "0.8.4", "nextflow": "24.04.3" }, - "timestamp": "2024-09-05T14:17:59.191541065" + "timestamp": "2024-09-12T12:12:58.045416708" }, "2 samples - [bam, bai], fasta, fai, [] -stub": { "content": [ @@ -1461,7 +1461,7 @@ "nf-test": "0.8.4", "nextflow": "24.04.3" }, - "timestamp": "2024-09-06T11:30:02.189652169" + "timestamp": "2024-09-12T12:13:55.632583291" }, "1 sample - [bam, bai], fasta, fai, []": { "content": [ @@ -1702,7 +1702,7 @@ "##INFO=", "##bcftools_viewVersion=1.20+htslib-1.20" ], - "5cdf920b1f44a66de3a28ead8d3efb24", + "79676a9dd690e37560b5841b67dfa28", [ "##contig=", "##contig=", @@ -1940,7 +1940,7 @@ "##INFO=", "##bcftools_viewVersion=1.20+htslib-1.20" ], - "fe2e9b5e8f54e993c262331759006346", + "bd51c062a29bbb8823a17b95f8162f44", [ "versions.yml:md5,2188f00d20a376929f9f35f824e94667", "versions.yml:md5,572bfd042014333af194207291d12b95", @@ -1952,6 +1952,6 @@ "nf-test": "0.8.4", "nextflow": "24.04.3" }, - "timestamp": "2024-09-05T14:17:46.151263963" + "timestamp": "2024-09-12T12:12:44.978644444" } -} \ No newline at end of file +} diff --git a/tests/main.nf.test b/tests/main.nf.test index 83eab7e3..c701951a 100644 --- a/tests/main.nf.test +++ b/tests/main.nf.test @@ -4,6 +4,7 @@ nextflow_pipeline { script "../main.nf" profile "test" tag "PIPELINE" + config "../conf/test.config" test("test profile") { tag "samplesheet" diff --git a/tests/main.nf.test.snap b/tests/main.nf.test.snap index 54fbd4bd..ec5566aa 100644 --- a/tests/main.nf.test.snap +++ b/tests/main.nf.test.snap @@ -52,13 +52,13 @@ "nf-test": "0.8.4", "nextflow": "24.04.3" }, - "timestamp": "2024-09-05T18:47:05.156600526" + "timestamp": "2024-09-12T12:19:02.681485167" }, "test profile - multisample": { "content": [ - "test.ped:md5,db74c6787a92a70ffaab766fa4d7a873", + "test.ped:md5,24d8694d580f782ed77d4d1b5c6f6fb4", "multiqc_citations.txt:md5,a27affce20d456d20ed387097a4f0350", - "multiqc_fastqc.txt:md5,79973e3ad49ae1f84c50db83edaa8bbc", + "multiqc_fastqc.txt:md5,18ca1a3fb2afa8988dc5d604c049cd9c", "74b4822241bd8d1bc42f494f1f3e326c", "HG002_Revio_A.asm.bp.hap1.p_ctg.assembly_summary:md5,e4da3107f2421d42c6e2f59bff4e47d9", "HG002_Revio_A.asm.bp.hap2.p_ctg.assembly_summary:md5,bf908610472e602fd986b9d4a4d58b9e", @@ -98,40 +98,40 @@ "# The command line was:\tbcftools stats HG002_Revio_A.vcf.gz", "#" ], - "fe7bb70701d1100b2874c10a512a2144", - "HG002_Revio_B.asm.bp.hap1.p_ctg.assembly_summary:md5,3ae598ebb95fe79bc41c03dc118fc8ae", - "HG002_Revio_B.asm.bp.hap2.p_ctg.assembly_summary:md5,2f89ef54766e0ebc51a5f14b75d5b4b0", - "6af5698b83f01b4fed43f06b8ab4665", - "f2034b8fbbb1392f15a1645329b6c473", - "HG002_Revio_B.dip.bed:md5,6885da3c38b5b1b21d875ff429414026", - "HG002_Revio_B.hap1.bed:md5,c3d28d3782515c083f77b09d0393cd26", - "HG002_Revio_B.hap2.bed:md5,3f62d041fd302b73d22e6445648629ba", - "HG002_Revio_B.HG002_Revio_B.copynum.bedgraph:md5,22b040fce6bdf6b2e323f1cc1658128d", - "HG002_Revio_B.HG002_Revio_B.depth.bw:md5,26bc36669ae0b066c2462e3c9307860f", - "HG002_Revio_B.HG002_Revio_B.maf.bw:md5,6c5691dbaf6e526f4b8fa0f7147bfc8b", - "HG002_Revio_B.mosdepth.global.dist.txt:md5,c3449580a34c495f537635c3bde4699d", - "HG002_Revio_B.mosdepth.region.dist.txt:md5,98a20c6295a956932c21534cbf5e889c", - "HG002_Revio_B.mosdepth.summary.txt:md5,d4fa8aeabc3b348255e7a2fa0135b1a4", - "HG002_Revio_B.asm.bp.hap1.p_ctg.fasta.gz:md5,b8a681133dddc4e31ab00b61028f681b", - "HG002_Revio_B.asm.bp.hap2.p_ctg.fasta.gz:md5,6e78468d4a0c7b7e40c39af5767f0b5f", - "HG002_Revio_B.dip.vcf.gz:md5,ff504eb5d7be0e57c18091a6d4cb9c7e", - "HG002_Revio_B.hap1.paf.gz:md5,3aeea5d4c0f59fe7a204c0621942ce71", - "HG002_Revio_B.hap1.var.gz:md5,d3375b6acf6ef53e7ffbda7fb7e9ca89", - "HG002_Revio_B.hap2.paf.gz:md5,35d442c31b7cb03b2a4caf1418bff30f", - "HG002_Revio_B.hap2.var.gz:md5,9d7631af956f1954ad958e7359f32205", - "HG002_Revio_B.pair.vcf.gz:md5,b2273f4b207f56ebf8e6f86c266329df", - "HG002_Revio_B.HG002_Revio_B.vcf.gz:md5,59773d5836f76b36dc1bf75e32186898", - "HG002_Revio_B.HG002_Revio_B.vcf.gz.tbi:md5,1408aeaca23a00eee979101eb45d887d", - "HG002_Revio_B_modkit_pileup.bed.gz:md5,1042d7c0ae2098f1ab94835c9e286ce0", - "HG002_Revio_B_modkit_pileup.bed.gz.tbi:md5,67e81f6cdeedd6e2e79141a7cac0108b", - "a8a1403ba192f971638c870a2be35700", - "HG002_Revio_B_cramino_aligned_phased.arrow:md5,bdd385c0b007ffc30c6cfdd98b15ed82", - "HG002_Revio_B_cramino_aligned.arrow:md5,bdd385c0b007ffc30c6cfdd98b15ed82", - "HG002_Revio_B.regions.bed.gz:md5,deaca22783bd058cdc8756efa25b5f53", - "HG002_Revio_B.regions.bed.gz.csi:md5,dd9a0d36d71da0d274d1c9ca6f8571ae", - "HG002_Revio_B_sorted.vcf.gz:md5,ce617741468f4bc7f504f8f488332098", + "4fc125e25365fa6e33193fd436ae135d", + "HG002_Revio_B.asm.bp.hap1.p_ctg.assembly_summary:md5,8ea073b13622d98785a0ba249791b667", + "HG002_Revio_B.asm.bp.hap2.p_ctg.assembly_summary:md5,a9dacca74b4adfefd877b64c3cdd731c", + "8cb89b73870933ceef28ea1de5655ff8", + "e0e50a1579149e26fd38f574508ced02", + "HG002_Revio_B.dip.bed:md5,c4abdf4a812fd62eb49cdaccebdaa3a1", + "HG002_Revio_B.hap1.bed:md5,4ff9c348e930b1272b54eae7d8255fc3", + "HG002_Revio_B.hap2.bed:md5,e95100eef23cdb0e0785a1ac6bd9a70d", + "HG002_Revio_B.HG002_Revio_B.copynum.bedgraph:md5,42095da173e46804977bbbecc2fda3aa", + "HG002_Revio_B.HG002_Revio_B.depth.bw:md5,38de98b391638ae12014bebffed42d66", + "HG002_Revio_B.HG002_Revio_B.maf.bw:md5,44e11b3b0cd1db5fbbc2d45bacf8f5b0", + "HG002_Revio_B.mosdepth.global.dist.txt:md5,830a8b737fea939dcfea4d1626e60576", + "HG002_Revio_B.mosdepth.region.dist.txt:md5,d4cb66ac28dc6816869a73757226f902", + "HG002_Revio_B.mosdepth.summary.txt:md5,191877ae5228e7880276585557a7b218", + "HG002_Revio_B.asm.bp.hap1.p_ctg.fasta.gz:md5,bafe70d988eefabb0ce08039b57a6580", + "HG002_Revio_B.asm.bp.hap2.p_ctg.fasta.gz:md5,9fa9e6a5e60d57ecb43656970d5a6cf3", + "HG002_Revio_B.dip.vcf.gz:md5,8efc621eb46b4012e6092ac814d18465", + "HG002_Revio_B.hap1.paf.gz:md5,9b0eda51e680b3ba72dbb4a99b9911b4", + "HG002_Revio_B.hap1.var.gz:md5,723bdfc7bc08d1af0a52c40828912ac2", + "HG002_Revio_B.hap2.paf.gz:md5,14e230db02f0fefcacdd45949743d80c", + "HG002_Revio_B.hap2.var.gz:md5,5ed54d6881aac6c54245bb8c5ed77d44", + "HG002_Revio_B.pair.vcf.gz:md5,62c75ce4450a5fde9fdc6e552f5c2cd9", + "HG002_Revio_B.HG002_Revio_B.vcf.gz:md5,76bf24c26a6310f885a03a64a511098e", + "HG002_Revio_B.HG002_Revio_B.vcf.gz.tbi:md5,ef6bc66b37b179727ac0c8635d39a8dd", + "HG002_Revio_B_modkit_pileup.bed.gz:md5,60f856e145343697ff581e91fda288ff", + "HG002_Revio_B_modkit_pileup.bed.gz.tbi:md5,d04e7a6fb67e9b5a8342ae979bc0e5cd", + "fcc3f220bb09d3264f97e7f620779be0", + "HG002_Revio_B_cramino_aligned_phased.arrow:md5,544a6513e7604d6425a664855212eced", + "HG002_Revio_B_cramino_aligned.arrow:md5,544a6513e7604d6425a664855212eced", + "HG002_Revio_B.regions.bed.gz:md5,9c4c037139c752c60385d3c0b905af7f", + "HG002_Revio_B.regions.bed.gz.csi:md5,d0640255d527e36655281f64e184b02c", + "HG002_Revio_B_sorted.vcf.gz:md5,a8aaec5870a60a4fabf6aff849ba1e61", "HG002_Revio_B_sorted.vcf.gz.tbi:md5,e255a5ea92885967f0c126bddc8ea3b2", - "6b0cf3f492ce898398835d1102afd369", + "65999ab8f2bc7841de8172468bf23ab6", [ "# This file was produced by bcftools stats (1.20+htslib-1.20) and can be plotted using plot-vcfstats.", "# The command line was:\tbcftools stats HG002_Revio_B.vcf.gz", @@ -142,13 +142,13 @@ "nf-test": "0.8.4", "nextflow": "24.04.3" }, - "timestamp": "2024-08-29T10:45:44.41793623" + "timestamp": "2024-09-12T12:22:11.460202495" }, "test profile - multisample - ont - parallel_alignments 2 - parallel_snv 1": { "content": [ "test.ped:md5,deb1ee6bd38d6e8f7cb92801d8a12f12", "multiqc_citations.txt:md5,a27affce20d456d20ed387097a4f0350", - "multiqc_fastqc.txt:md5,cbf676cc40ff39efe631eb8ec7f9b660", + "multiqc_fastqc.txt:md5,80f34d024a229e935b3b8de6a4c0cc66", "34f94d8ea8bcbab685c51eab364d8e7f", "HG002_ONT_A.HG002_ONT_A.copynum.bedgraph:md5,4c5517c1783afa11ff93c8d8627fbe42", "HG002_ONT_A.HG002_ONT_A.depth.bw:md5,7fc75ebffd8433e8bcfe9726ff97f023", @@ -170,22 +170,22 @@ "# The command line was:\tbcftools stats HG002_ONT_A.vcf.gz", "#" ], - "60fee683fe79dab18de64fd026e73696", - "HG002_ONT_B.HG002_ONT_B.copynum.bedgraph:md5,c7ae176dfb3339f8f7f935f1021a9e46", - "HG002_ONT_B.HG002_ONT_B.depth.bw:md5,29f47f09dcb564ffda3de5258a244d9c", - "HG002_ONT_B.HG002_ONT_B.maf.bw:md5,f5a277813f06a45f9d156227bedbea7f", - "HG002_ONT_B.mosdepth.global.dist.txt:md5,adc44aa185f5c7032fcf96c1a41a98b2", - "HG002_ONT_B.mosdepth.region.dist.txt:md5,eb15dbfd540c96218c72cb5903d4a03d", - "HG002_ONT_B.mosdepth.summary.txt:md5,daa85bd5d830a8e388f348992420271a", - "HG002_ONT_B.HG002_ONT_B.vcf.gz:md5,abf20157c1460bdb41fd80b412358fd9", - "HG002_ONT_B.HG002_ONT_B.vcf.gz.tbi:md5,c026fdb2c0711486963df37dcc6ba050", - "HG002_ONT_B_modkit_pileup.bed.gz:md5,e4d41e410b71218dc1fd3ecf2771fdd7", - "HG002_ONT_B_modkit_pileup.bed.gz.tbi:md5,0fddffcd9bfbdfe7bb1ec731206987d9", - "5600163a609e93dfb2546d1eacd30a07", - "HG002_ONT_B_cramino_aligned_phased.arrow:md5,6cff826e945e44dee20b0efcee1ea6fb", - "HG002_ONT_B_cramino_aligned.arrow:md5,6cff826e945e44dee20b0efcee1ea6fb", - "HG002_ONT_B.regions.bed.gz:md5,4f3ff59edd8afae966f152661757b1e5", - "HG002_ONT_B.regions.bed.gz.csi:md5,fd265daef0567a7aef24374918a126d0", + "91f793ae89c2b23f54150d95dcbc4fa8", + "HG002_ONT_B.HG002_ONT_B.copynum.bedgraph:md5,7d30f621d502d16301fa79cf48a3b903", + "HG002_ONT_B.HG002_ONT_B.depth.bw:md5,07800e1b30b26a8a7d82b78602855d1f", + "HG002_ONT_B.HG002_ONT_B.maf.bw:md5,593987ba67b23eceba1a7e819ed365d6", + "HG002_ONT_B.mosdepth.global.dist.txt:md5,00bce9b60e9f2d0f7b6cd994e022ac4d", + "HG002_ONT_B.mosdepth.region.dist.txt:md5,7e7f11241f89468db6a603cec72a7309", + "HG002_ONT_B.mosdepth.summary.txt:md5,651cf3d5e11b98dfc207641b26cf736a", + "HG002_ONT_B.HG002_ONT_B.vcf.gz:md5,c4b0cf6c2efebbf746c6b4d8b6c94c57", + "HG002_ONT_B.HG002_ONT_B.vcf.gz.tbi:md5,de293b6c556d537ccfddf659b138610b", + "HG002_ONT_B_modkit_pileup.bed.gz:md5,4a9eb8c4e5ece4f11f61f2ddc8aaaeaa", + "HG002_ONT_B_modkit_pileup.bed.gz.tbi:md5,a2a56078bbf5b51f69c28ca66a13d32f", + "7b8dc04d36dc2290fd031da73e8c8553", + "HG002_ONT_B_cramino_aligned_phased.arrow:md5,51481bfdf1d834fb123164f0e75d5c54", + "HG002_ONT_B_cramino_aligned.arrow:md5,51481bfdf1d834fb123164f0e75d5c54", + "HG002_ONT_B.regions.bed.gz:md5,b68e7db513f4c0d72808a842108f3bf8", + "HG002_ONT_B.regions.bed.gz.csi:md5,9965b811c8f34b28747f7549fa86c4ba", [ "# This file was produced by bcftools stats (1.20+htslib-1.20) and can be plotted using plot-vcfstats.", "# The command line was:\tbcftools stats HG002_ONT_B.vcf.gz", @@ -196,6 +196,6 @@ "nf-test": "0.8.4", "nextflow": "24.04.3" }, - "timestamp": "2024-09-11T16:54:59.350031395" + "timestamp": "2024-09-12T12:24:19.644490944" } } \ No newline at end of file diff --git a/tests/nextflow.config b/tests/nextflow.config new file mode 100644 index 00000000..a2a70dff --- /dev/null +++ b/tests/nextflow.config @@ -0,0 +1,42 @@ +params { + // Base directory for nf-core/modules test data + modules_testdata_base_path = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/' + + // Base directory for genomic-medicine-sweden/nallo test data + pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/' + + max_cpus = 4 + max_memory = '15.GB' + max_time = '6.h' +} + +// Impose same minimum Nextflow version as the pipeline for testing +manifest { + nextflowVersion = '!>=23.04.0' +} + +// Disable all Nextflow reporting options +timeline { enabled = false } +report { enabled = false } +trace { enabled = false } +dag { enabled = false } + +process { + + withLabel: 'process_high' { + cpus = 4 + } + + withLabel: 'process_medium' { + cpus = 2 + } + + withLabel: 'process_low' { + cpus = 1 + } + + withLabel: 'process_single' { + cpus = 1 + } + +} diff --git a/workflows/nallo.nf b/workflows/nallo.nf index 92bb5a08..e2700f50 100644 --- a/workflows/nallo.nf +++ b/workflows/nallo.nf @@ -32,8 +32,8 @@ include { SNV_ANNOTATION } from '../subworkflows/local/ */ // local -include { CREATE_PEDIGREE_FILE as SAMPLESHEET_PED } from '../modules/local/create_pedigree_file' -include { CREATE_PEDIGREE_FILE as SOMALIER_PED } from '../modules/local/create_pedigree_file' +include { CREATE_PEDIGREE_FILE as SAMPLESHEET_PED } from '../modules/local/create_pedigree_file/main' +include { CREATE_PEDIGREE_FILE as SOMALIER_PED } from '../modules/local/create_pedigree_file/main' include { ECHTVAR_ENCODE } from '../modules/local/echtvar/encode/main' include { SAMTOOLS_MERGE } from '../modules/nf-core/samtools/merge/main' From c1e64e53d9875b9349a4902fcb2184fee87fbb5d Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Tue, 17 Sep 2024 11:46:00 +0200 Subject: [PATCH 013/106] Add Severus as the default SV caller (#367) --- CHANGELOG.md | 9 +- CITATIONS.md | 4 + README.md | 2 +- conf/modules/call_svs.config | 12 +- docs/output.md | 2 +- docs/parameters.md | 338 +-- modules.json | 10 + .../main.nf} | 15 +- .../create_samples_file/tests/main.nf.test | 55 + .../tests/main.nf.test.snap | 68 + .../create_samples_file/tests/nextflow.config | 5 + .../nf-core/bcftools/query/environment.yml | 5 + modules/nf-core/bcftools/query/main.nf | 56 + modules/nf-core/bcftools/query/meta.yml | 63 + .../nf-core/bcftools/query/tests/main.nf.test | 101 + .../bcftools/query/tests/main.nf.test.snap | 55 + .../bcftools/query/tests/nextflow.config | 3 + modules/nf-core/bcftools/query/tests/tags.yml | 2 + modules/nf-core/severus/environment.yml | 7 + modules/nf-core/severus/main.nf | 89 + modules/nf-core/severus/meta.yml | 128 + modules/nf-core/severus/tests/main.nf.test | 209 ++ .../nf-core/severus/tests/main.nf.test.snap | 590 +++++ modules/nf-core/severus/tests/nextflow.config | 5 + modules/nf-core/severus/tests/tags.yml | 2 + nextflow.config | 1 + nextflow_schema.json | 6 + subworkflows/local/call_svs/main.nf | 82 +- .../local/call_svs/tests/main.nf.test | 263 ++- .../local/call_svs/tests/main.nf.test.snap | 2079 +++-------------- .../local/call_svs/tests/nextflow.config | 10 +- .../local/utils_nfcore_nallo_pipeline/main.nf | 2 + tests/main.nf.test | 20 +- workflows/nallo.nf | 8 +- 34 files changed, 2366 insertions(+), 1940 deletions(-) rename modules/local/{create_samples_file.nf => create_samples_file/main.nf} (60%) create mode 100644 modules/local/create_samples_file/tests/main.nf.test create mode 100644 modules/local/create_samples_file/tests/main.nf.test.snap create mode 100644 modules/local/create_samples_file/tests/nextflow.config create mode 100644 modules/nf-core/bcftools/query/environment.yml create mode 100644 modules/nf-core/bcftools/query/main.nf create mode 100644 modules/nf-core/bcftools/query/meta.yml create mode 100644 modules/nf-core/bcftools/query/tests/main.nf.test create mode 100644 modules/nf-core/bcftools/query/tests/main.nf.test.snap create mode 100644 modules/nf-core/bcftools/query/tests/nextflow.config create mode 100644 modules/nf-core/bcftools/query/tests/tags.yml create mode 100644 modules/nf-core/severus/environment.yml create mode 100644 modules/nf-core/severus/main.nf create mode 100644 modules/nf-core/severus/meta.yml create mode 100644 modules/nf-core/severus/tests/main.nf.test create mode 100644 modules/nf-core/severus/tests/main.nf.test.snap create mode 100644 modules/nf-core/severus/tests/nextflow.config create mode 100644 modules/nf-core/severus/tests/tags.yml diff --git a/CHANGELOG.md b/CHANGELOG.md index 62e541ae..8f8aa6de 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#356](https://github.com/genomic-medicine-sweden/nallo/pull/356) - Added missing SNV and PED file to output documentation - [#363](https://github.com/genomic-medicine-sweden/nallo/pull/363) - Added Zenodo link - [#366](https://github.com/genomic-medicine-sweden/nallo/pull/366) - Added sorting of samples when creating PED files, so the output is always the same +- [#367](https://github.com/genomic-medicine-sweden/nallo/pull/367) - Added Severus as the default SV caller, together with a `--sv_caller` parameter to choose caller ### `Changed` @@ -41,6 +42,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 | ------------------------ | ------------- | | `--skip_aligned_read_qc` | `--skip_qc` | | `--skip_raw_read_qc` | `--skip_qc` | +| | `--sv_caller` | > [!NOTE] > Parameter has been updated if both old and new parameter information is present. @@ -49,9 +51,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Module updates -| Tool | Old version | New version | -| ----- | ----------- | ----------- | -| fqcrs | 0.1.0 | +| Tool | Old version | New version | +| ------- | ----------- | ----------- | +| fqcrs | 0.1.0 | +| severus | | 1.1 | > [!NOTE] > Version has been updated if both old and new version information is present. diff --git a/CITATIONS.md b/CITATIONS.md index c531a6ea..9ae9e0e4 100644 --- a/CITATIONS.md +++ b/CITATIONS.md @@ -88,6 +88,10 @@ > Genome-wide profiling of highly similar paralogous genes using HiFi sequencing. Xiao Chen, Daniel Baker, Egor Dolzhenko, Joseph M Devaney, Jessica Noya, April S Berlyoung, Rhonda Brandon, Kathleen S Hruska, Lucas Lochovsky, Paul Kruszka, Scott Newman, Emily Farrow, Isabelle Thiffault, Tomi Pastinen, Dalia Kasperaviciute, Christian Gilissen, Lisenka Vissers, Alexander Hoischen, Seth Berger, Eric Vilain, Emmanuèle Délot, UCI Genomics Research to Elucidate the Genetics of Rare Diseases (UCI GREGoR) Consortium, Michael A Eberle. bioRxiv 2024.04.19.590294; doi: https://doi.org/10.1101/2024.04.19.590294 +- [Severus](https://www.medrxiv.org/content/10.1101/2024.03.22.24304756v1) + + > Ayse Keskus, Asher Bryant, Tanveer Ahmad, Byunggil Yoo, Sergey Aganezov, Anton Goretsky, Ataberk Donmez, Lisa A. Lansdon, Isabel Rodriguez, Jimin Park, Yuelin Liu, Xiwen Cui, Joshua Gardner, Brandy McNulty, Samuel Sacco, Jyoti Shetty, Yongmei Zhao, Bao Tran, Giuseppe Narzisi, Adrienne Helland, Daniel E. Cook, Pi-Chuan Chang, Alexey Kolesnikov, Andrew Carroll, Erin K. Molloy, Irina Pushel, Erin Guest, Tomi Pastinen, Kishwar Shafin, Karen H. Miga, Salem Malikic, Chi-Ping Day, Nicolas Robine, Cenk Sahinalp, Michael Dean, Midhat S. Farooqi, Benedict Paten, Mikhail Kolmogorov. Severus: accurate detection and characterization of somatic structural variation in tumor genomes using long reads. medRxiv 2024.03.22.24304756; doi: https://doi.org/10.1101/2024.03.22.24304756 + - [Sniffles2](https://www.nature.com/articles/s41587-023-02024-y) > Smolka, M., Paulin, L.F., Grochowski, C.M. et al. Detection of mosaic and population-level structural variants with Sniffles2. Nat Biotechnol (2024). https://doi.org/10.1038/s41587-023-02024-y diff --git a/README.md b/README.md index 317b8c06..7db1f97c 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ ##### Variant calling - Short variant calling & joint genotyping of SNVs ([`deepvariant`](https://github.com/google/deepvariant) + [`GLNexus`](https://github.com/dnanexus-rnd/GLnexus)) -- SV calling and joint genotyping ([`sniffles2`](https://github.com/fritzsedlazeck/Sniffles)) +- SV calling with [Severus](https://github.com/KolmogorovLab/Severus) or [Sniffles2](https://github.com/fritzsedlazeck/Sniffles) - Tandem repeats (HiFi only) ([`TRGT`](https://github.com/PacificBiosciences/trgt/tree/main)) - Assembly based variant calls (HiFi only) ([`dipcall`](https://github.com/lh3/dipcall)) - CNV-calling ([`HiFiCNV`](https://github.com/PacificBiosciences/HiFiCNV)) diff --git a/conf/modules/call_svs.config b/conf/modules/call_svs.config index 166fd9fe..7ca7f5cf 100644 --- a/conf/modules/call_svs.config +++ b/conf/modules/call_svs.config @@ -24,6 +24,14 @@ process { ] } + withName: '.*:CALL_SVS:BCFTOOLS_QUERY' { + ext.args = '--list-samples' + } + + withName: '.*:CALL_SVS:CREATE_SAMPLES_FILE' { + ext.prefix = { "${meta.id}_samples_file" } + } + withName: '.*:CALL_SVS:SNIFFLES' { ext.prefix = { "${meta.id}_sniffles_for_reheader" } ext.args = '--no-qc' @@ -43,8 +51,8 @@ process { ] } - withName: '.*:CALL_SVS:REHEADER_SNIFFLES' { - ext.prefix = { "${meta.id}_sniffles" } + withName: '.*:CALL_SVS:BCFTOOLS_REHEADER' { + ext.prefix = { "${meta.id}_${params.sv_caller}" } ext.args2 = [ '--output-type z', '--write-index=tbi' diff --git a/docs/output.md b/docs/output.md index 492f0ff0..7a263bd5 100644 --- a/docs/output.md +++ b/docs/output.md @@ -354,7 +354,7 @@ Results generated by MultiQC collate pipeline QC from supported tools e.g. FastQ ### SV Calling -[Sniffles](https://github.com/fritzsedlazeck/Sniffles) is used to call structural variants. +[Severus](https://github.com/KolmogorovLab/Severus) or [Sniffles](https://github.com/fritzsedlazeck/Sniffles) is used to call structural variants.
Output files from SV Calling diff --git a/docs/parameters.md b/docs/parameters.md index 821a0c1c..712b1896 100644 --- a/docs/parameters.md +++ b/docs/parameters.md @@ -1,164 +1,182 @@ -# genomic-medicine-sweden/nallo pipeline parameters - -Long-read variant calling pipeline - -## Workflow skip options - -Allows skipping certain parts of the pipeline - -| Parameter | Description | Type | Default | Required | Hidden | -|-----------|-----------|-----------|-----------|-----------|-----------| -| `skip_qc` | Skip QC of reads | `boolean` | False | | | -| `skip_short_variant_calling` | Skip short variant calling | `boolean` | False | | | -| `skip_assembly_wf` | Skip genome assembly and assembly variant calling | `boolean` | False | | | -| `skip_mapping_wf` | Skip read mapping (alignment) | `boolean` | False | | | -| `skip_methylation_wf` | Skip generation of methylation pileups | `boolean` | False | | | -| `skip_repeat_calling` | Skip tandem repeat calling | `boolean` | False | | | -| `skip_repeat_annotation` | Skip tandem repeat annotation | `boolean` | False | | | -| `skip_phasing_wf` | Skip phasing of variants and haplotagging of reads | `boolean` | False | | | -| `skip_snv_annotation` | Skip short variant annotation | `boolean` | False | | | -| `skip_cnv_calling` | Skip CNV calling | `boolean` | False | | | -| `skip_call_paralogs` | Skip the calling of specific paralogous genes | `boolean` | False | | | -| `skip_rank_variants` | Skip ranking of short variants | `boolean` | False | | | - -## Input/output options - -Define where the pipeline should find input data and save output data. - -| Parameter | Description | Type | Default | Required | Hidden | -|-----------|-----------|-----------|-----------|-----------|-----------| -| `input` | Path to comma-separated file containing information about the samples in the experiment.
HelpYou will need to create a design -file with information about the samples in your experiment before running the pipeline. Use this parameter to specify its location. It has to be a comma-separated file with 3 -columns, and a header row.
| `string` | | True | | -| `outdir` | The output directory where the results will be saved. You have to use absolute paths to storage on Cloud infrastructure. | `string` | | True | | -| `email` | Email address for completion summary.
HelpSet this parameter to your e-mail address to get a summary e-mail with details of the -run sent to you when the workflow exits. If set in your user config file (`~/.nextflow/config`) then you don't need to specify this on the command line for every -run.
| `string` | | | | -| `multiqc_title` | MultiQC report title. Printed as page header, used for filename if not otherwise specified. | `string` | | | | - -## Reference genome options - -Reference genome related files and options required for the workflow. - -| Parameter | Description | Type | Default | Required | Hidden | -|-----------|-----------|-----------|-----------|-----------|-----------| -| `fasta` | Reference genome | `string` | | | | -| `genome` | Name of iGenomes reference.
HelpIf using a reference genome configured in the pipeline using iGenomes, use this parameter to -give the ID for the reference. This is then used to build the full paths for all required reference genome files e.g. `--genome GRCh38`.

See the [nf-core website -docs](https://nf-co.re/usage/reference_genomes) for more details.
| `string` | | | | -| `igenomes_ignore` | Do not load the iGenomes reference config.
HelpDo not load `igenomes.config` when running the pipeline. You may choose -this option if you observe clashes between custom parameters and those supplied in `igenomes.config`.
| `boolean` | True | | True | - -## Institutional config options - -Parameters used to describe centralised config profiles. These should not be edited. - -| Parameter | Description | Type | Default | Required | Hidden | -|-----------|-----------|-----------|-----------|-----------|-----------| -| `custom_config_version` | Git commit id for Institutional configs. | `string` | master | | True | -| `custom_config_base` | Base directory for Institutional configs.
HelpIf you're running offline, Nextflow will not be able to fetch the -institutional config files from the internet. If you don't need them, then this is not a problem. If you do need them, you should download the files from the repo and tell -Nextflow where to find them with this parameter.
| `string` | https://raw.githubusercontent.com/nf-core/configs/master | | True | -| `config_profile_name` | Institutional config name. | `string` | | | True | -| `config_profile_description` | Institutional config description. | `string` | | | True | -| `config_profile_contact` | Institutional config contact information. | `string` | | | True | -| `config_profile_url` | Institutional config URL link. | `string` | | | True | - -## Max job request options - -Set the top limit for requested resources for any single job. - -| Parameter | Description | Type | Default | Required | Hidden | -|-----------|-----------|-----------|-----------|-----------|-----------| -| `max_cpus` | Maximum number of CPUs that can be requested for any single job.
HelpUse to set an upper-limit for the CPU requirement for -each process. Should be an integer e.g. `--max_cpus 1`
| `integer` | 16 | | True | -| `max_memory` | Maximum amount of memory that can be requested for any single job.
HelpUse to set an upper-limit for the memory requirement -for each process. Should be a string in the format integer-unit e.g. `--max_memory '8.GB'`
| `string` | 128.GB | | True | -| `max_time` | Maximum amount of time that can be requested for any single job.
HelpUse to set an upper-limit for the time requirement for -each process. Should be a string in the format integer-unit e.g. `--max_time '2.h'`
| `string` | 240.h | | True | - -## Generic options - -Less common options for the pipeline, typically set in a config file. - -| Parameter | Description | Type | Default | Required | Hidden | -|-----------|-----------|-----------|-----------|-----------|-----------| -| `help` | Display help text. | `boolean` | | | True | -| `version` | Display version and exit. | `boolean` | | | True | -| `publish_dir_mode` | Method used to save pipeline results to output directory.
HelpThe Nextflow `publishDir` option specifies which -intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow -docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.
| `string` | copy | | True | -| `email_on_fail` | Email address for completion summary, only when pipeline fails.
HelpAn email address to send a summary email to when the -pipeline is completed - ONLY sent if the pipeline does not exit successfully.
| `string` | | | True | -| `plaintext_email` | Send plain-text email instead of HTML. | `boolean` | | | True | -| `max_multiqc_email_size` | File size limit when attaching MultiQC reports to summary emails. | `string` | 25.MB | | True | -| `monochrome_logs` | Do not use coloured log outputs. | `boolean` | | | True | -| `hook_url` | Incoming hook URL for messaging service
HelpIncoming hook URL for messaging service. Currently, MS Teams and Slack are -supported.
| `string` | | | True | -| `multiqc_config` | Custom config file to supply to MultiQC. | `string` | | | True | -| `multiqc_logo` | Custom logo file to supply to MultiQC. File name must also be set in the MultiQC config file | `string` | | | True | -| `multiqc_methods_description` | Custom MultiQC yaml file containing HTML including a methods description. | `string` | | | | -| `validate_params` | Boolean whether to validate parameters against the schema at runtime | `boolean` | True | | True | -| `validationShowHiddenParams` | Show all params when using `--help`
HelpBy default, parameters set as _hidden_ in the schema are not shown -on the command line when a user runs with `--help`. Specifying this option will tell the pipeline to show all parameters.
| `boolean` | | | True | -| `validationSkipDuplicateCheck` | nf-validation related parameter | `boolean` | | | True | -| `validationS3PathCheck` | Boolean whether to validate validate AWS S3 paths | `boolean` | | | True | -| `monochromeLogs` | Boolean whether to color nf-validation logs | `boolean` | | | True | - -## Workflow options - -Workflow options specific to genomic-medicine-sweden/nallo - -| Parameter | Description | Type | Default | Required | Hidden | -|-----------|-----------|-----------|-----------|-----------|-----------| -| `preset` | Enable or disable certain parts of the pipeline by default, depending on data type (`revio`, `pacbio`, `ONT_R10`) | `string` | revio | True | | -| `variant_caller` | Which short variant software to use (`deepvariant`) | `string` | deepvariant | | | -| `phaser` | Which phasing software to use (`whatshap`, `hiphase_snv`, `hiphase_sv`) | `string` | whatshap | | | -| `hifiasm_mode` | Run hifiasm in hifi-only or hifi-trio mode (`hifi-only`, `trio-binning`) | `string` | hifi-only | | | -| `parallel_alignments` | If parallel_alignments is bigger than 1, input files will be split and aligned in parallel to reduce processing time. | `integer` | 1 | | | -| `parallel_snv` | If parallel_snv is bigger than 1, short variant calling will be done in parallel to reduce processing time. | `integer` | 13 | | | -| `vep_cache_version` | VEP cache version | `integer` | 110 | | | -| `vep_plugin_files` | A csv file with paths to vep plugin files. pLI and LoFtool are required. | `string` | | | | -| `deepvariant_model_type` | Sets the model type used for DeepVariant. This is set automatically using `--preset` by default. | `string` | PACBIO | | True | -| `extra_modkit_options` | Extra options to modkit, used for test profile. | `string` | | | True | -| `extra_vep_options` | Extra options to VEP, used for test profile. | `string` | | | True | -| `extra_paraphase_options` | Extra options to Paraphase, used for test profile. | `string` | | | True | -| `extra_hifiasm_options` | Extra options to hifiasm, used for test profile. | `string` | | | True | - -## File inputs - -The different files that are required. Some are only required by certain workflows, see the usage documentation. - -| Parameter | Description | Type | Default | Required | Hidden | -|-----------|-----------|-----------|-----------|-----------|-----------| -| `cadd_prescored` | Path to a directory containing prescored indels for CADD.
HelpThis folder contains the compressed files and indexes -that would otherwise be in data/prescored folder as described in https://github.com/kircherlab/CADD-scripts/#manual-installation.
| `string` | | | | -| `cadd_resources` | Path to a directory containing CADD annotations.
HelpThis folder contains the uncompressed files that would otherwise -be in data/annotation folder as described in https://github.com/kircherlab/CADD-scripts/#manual-installation.
| `string` | | | | -| `par_regions` | Provide a bed file of chrX and chrY PAR regions for dipcall and DeepVariant | `string` | | | | -| `tandem_repeats` | A tandem repeat BED file for sniffles | `string` | | | | -| `trgt_repeats` | A BED file with repeats to be genotyped with TRGT | `string` | | | | -| `snp_db` | A csv file with echtvar databases to annotate SNVs with | `string` | | | | -| `variant_catalog` | A variant catalog json-file for stranger | `string` | | | | -| `variant_consequences_snv` | File containing list of SO terms listed in the order of severity from most severe to lease severe for annotating genomic SNVs. -
HelpFor more information check https://ensembl.org/info/genome/variation/prediction/predicted_data.html
| `string` | | | -| -| `vep_cache` | A path to the VEP cache location | `string` | | | | -| `bed` | A BED file with regions of interest, used to limit short variant calling. | `string` | | | | -| `hificnv_xy` | A BED file containing expected copy number regions for XY samples. | `string` | | | | -| `hificnv_xx` | A BED file containing expected copy number regions for XX samples. | `string` | | | | -| `hificnv_exclude` | A BED file specifying regions to exclude with HiFiCNV, such as centromeres. | `string` | | | | -| `reduced_penetrance` | A file with gene ids that have reduced penetrance. For use with genmod. | `string` | | | | -| `score_config_snv` | A SNV rank model config file for genmod. | `string` | | | | -| `somalier_sites` | A VCF of known polymorphic sites for somalier | `string` | | | | -| `validationFailUnrecognisedParams` | Validation of parameters fails when an unrecognised parameter is found.
HelpBy default, when an -unrecognised parameter is found, it returns a warning.
| `boolean` | | | True | -| `validationLenientMode` | Validation of parameters in lenient more.
HelpAllows string values that are parseable as numbers or booleans. -For further information see [JSONSchema docs](https://github.com/everit-org/json-schema#lenient-mode).
| `boolean` | | | True | -| `pipelines_testdata_base_path` | Base URL or local path to location of pipeline test dataset files | `string` | -https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/ | | True | - +# genomic-medicine-sweden/nallo pipeline parameters + +Long-read variant calling pipeline + +## Workflow skip options + +Allows skipping certain parts of the pipeline + +| Parameter | Description | Type | Default | Required | Hidden | +|-----------|-----------|-----------|-----------|-----------|-----------| +| `skip_qc` | Skip QC of reads | `boolean` | | | | +| `skip_short_variant_calling` | Skip short variant calling | `boolean` | | | | +| `skip_assembly_wf` | Skip genome assembly and assembly variant calling | `boolean` | | | | +| `skip_mapping_wf` | Skip read mapping (alignment) | `boolean` | | | | +| `skip_methylation_wf` | Skip generation of methylation pileups | `boolean` | | | | +| `skip_repeat_calling` | Skip tandem repeat calling | `boolean` | | | | +| `skip_repeat_annotation` | Skip tandem repeat annotation | `boolean` | | | | +| `skip_phasing_wf` | Skip phasing of variants and haplotagging of reads | `boolean` | | | | +| `skip_snv_annotation` | Skip short variant annotation | `boolean` | | | | +| `skip_cnv_calling` | Skip CNV calling | `boolean` | | | | +| `skip_call_paralogs` | Skip the calling of specific paralogous genes | `boolean` | | | | +| `skip_rank_variants` | Skip ranking of short variants | `boolean` | | | | + +## Input/output options + +Define where the pipeline should find input data and save output data. + +| Parameter | Description | Type | Default | Required | Hidden | +|-----------|-----------|-----------|-----------|-----------|-----------| +| `input` | Path to comma-separated file containing information about the samples in the experiment.
HelpYou +will need to create a design file with information about the samples in your experiment before running the pipeline. Use this parameter to specify +its location. It has to be a comma-separated file with 3 columns, and a header row.
| `string` | | True | | +| `outdir` | The output directory where the results will be saved. You have to use absolute paths to storage on Cloud infrastructure. | `string` | +| True | | +| `email` | Email address for completion summary.
HelpSet this parameter to your e-mail address to get a summary +e-mail with details of the run sent to you when the workflow exits. If set in your user config file (`~/.nextflow/config`) then you don't need to +specify this on the command line for every run.
| `string` | | | | +| `multiqc_title` | MultiQC report title. Printed as page header, used for filename if not otherwise specified. | `string` | | | | + +## Reference genome options + +Reference genome related files and options required for the workflow. + +| Parameter | Description | Type | Default | Required | Hidden | +|-----------|-----------|-----------|-----------|-----------|-----------| +| `fasta` | Reference genome | `string` | | | | +| `genome` | Name of iGenomes reference.
HelpIf using a reference genome configured in the pipeline using +iGenomes, use this parameter to give the ID for the reference. This is then used to build the full paths for all required reference genome files +e.g. `--genome GRCh38`.

See the [nf-core website docs](https://nf-co.re/usage/reference_genomes) for more details.
| +`string` | | | | +| `igenomes_ignore` | Do not load the iGenomes reference config.
HelpDo not load `igenomes.config` when running +the pipeline. You may choose this option if you observe clashes between custom parameters and those supplied in +`igenomes.config`.
| `boolean` | True | | True | + +## Institutional config options + +Parameters used to describe centralised config profiles. These should not be edited. + +| Parameter | Description | Type | Default | Required | Hidden | +|-----------|-----------|-----------|-----------|-----------|-----------| +| `custom_config_version` | Git commit id for Institutional configs. | `string` | master | | True | +| `custom_config_base` | Base directory for Institutional configs.
HelpIf you're running offline, Nextflow will +not be able to fetch the institutional config files from the internet. If you don't need them, then this is not a problem. If you do need them, you +should download the files from the repo and tell Nextflow where to find them with this parameter.
| `string` | +https://raw.githubusercontent.com/nf-core/configs/master | | True | +| `config_profile_name` | Institutional config name. | `string` | | | True | +| `config_profile_description` | Institutional config description. | `string` | | | True | +| `config_profile_contact` | Institutional config contact information. | `string` | | | True | +| `config_profile_url` | Institutional config URL link. | `string` | | | True | + +## Max job request options + +Set the top limit for requested resources for any single job. + +| Parameter | Description | Type | Default | Required | Hidden | +|-----------|-----------|-----------|-----------|-----------|-----------| +| `max_cpus` | Maximum number of CPUs that can be requested for any single job.
HelpUse to set an upper-limit +for the CPU requirement for each process. Should be an integer e.g. `--max_cpus 1`
| `integer` | 16 | | True | +| `max_memory` | Maximum amount of memory that can be requested for any single job.
HelpUse to set an +upper-limit for the memory requirement for each process. Should be a string in the format integer-unit e.g. `--max_memory +'8.GB'`
| `string` | 128.GB | | True | +| `max_time` | Maximum amount of time that can be requested for any single job.
HelpUse to set an upper-limit +for the time requirement for each process. Should be a string in the format integer-unit e.g. `--max_time '2.h'`
| `string` | +240.h | | True | + +## Generic options + +Less common options for the pipeline, typically set in a config file. + +| Parameter | Description | Type | Default | Required | Hidden | +|-----------|-----------|-----------|-----------|-----------|-----------| +| `help` | Display help text. | `boolean` | | | True | +| `version` | Display version and exit. | `boolean` | | | True | +| `publish_dir_mode` | Method used to save pipeline results to output directory.
HelpThe Nextflow `publishDir` +option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to +move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.
| `string` | copy +| | True | +| `email_on_fail` | Email address for completion summary, only when pipeline fails.
HelpAn email address to send +a summary email to when the pipeline is completed - ONLY sent if the pipeline does not exit successfully.
| `string` | | | True +| +| `plaintext_email` | Send plain-text email instead of HTML. | `boolean` | | | True | +| `max_multiqc_email_size` | File size limit when attaching MultiQC reports to summary emails. | `string` | 25.MB | | True | +| `monochrome_logs` | Do not use coloured log outputs. | `boolean` | | | True | +| `hook_url` | Incoming hook URL for messaging service
HelpIncoming hook URL for messaging service. Currently, +MS Teams and Slack are supported.
| `string` | | | True | +| `multiqc_config` | Custom config file to supply to MultiQC. | `string` | | | True | +| `multiqc_logo` | Custom logo file to supply to MultiQC. File name must also be set in the MultiQC config file | `string` | | | True | +| `multiqc_methods_description` | Custom MultiQC yaml file containing HTML including a methods description. | `string` | | | | +| `validate_params` | Boolean whether to validate parameters against the schema at runtime | `boolean` | True | | True | +| `validationShowHiddenParams` | Show all params when using `--help`
HelpBy default, parameters set as _hidden_ +in the schema are not shown on the command line when a user runs with `--help`. Specifying this option will tell the pipeline to show all +parameters.
| `boolean` | | | True | +| `validationSkipDuplicateCheck` | nf-validation related parameter | `boolean` | | | True | +| `validationS3PathCheck` | Boolean whether to validate validate AWS S3 paths | `boolean` | | | True | +| `monochromeLogs` | Boolean whether to color nf-validation logs | `boolean` | | | True | + +## Workflow options + +Workflow options specific to genomic-medicine-sweden/nallo + +| Parameter | Description | Type | Default | Required | Hidden | +|-----------|-----------|-----------|-----------|-----------|-----------| +| `preset` | Enable or disable certain parts of the pipeline by default, depending on data type (`revio`, `pacbio`, `ONT_R10`) | `string` | revio | +True | | +| `variant_caller` | Which short variant software to use (`deepvariant`) | `string` | deepvariant | | | +| `sv_caller` | Which structural variant caller to use (`severus`, `sniffles`) | `string` | severus | | | +| `phaser` | Which phasing software to use (`whatshap`, `hiphase_snv`, `hiphase_sv`) | `string` | whatshap | | | +| `hifiasm_mode` | Run hifiasm in hifi-only or hifi-trio mode (`hifi-only`, `trio-binning`) | `string` | hifi-only | | | +| `parallel_alignments` | If parallel_alignments is bigger than 1, input files will be split and aligned in parallel to reduce processing time. | +`integer` | 1 | | | +| `parallel_snv` | If parallel_snv is bigger than 1, short variant calling will be done in parallel to reduce processing time. | `integer` | 13 | +| | +| `vep_cache_version` | VEP cache version | `integer` | 110 | | | +| `vep_plugin_files` | A csv file with paths to vep plugin files. pLI and LoFtool are required. | `string` | | | | +| `deepvariant_model_type` | Sets the model type used for DeepVariant. This is set automatically using `--preset` by default. | `string` | PACBIO | +| True | +| `extra_modkit_options` | Extra options to modkit, used for test profile. | `string` | | | True | +| `extra_vep_options` | Extra options to VEP, used for test profile. | `string` | | | True | +| `extra_paraphase_options` | Extra options to Paraphase, used for test profile. | `string` | | | True | +| `extra_hifiasm_options` | Extra options to hifiasm, used for test profile. | `string` | | | True | + +## File inputs + +The different files that are required. Some are only required by certain workflows, see the usage documentation. + +| Parameter | Description | Type | Default | Required | Hidden | +|-----------|-----------|-----------|-----------|-----------|-----------| +| `cadd_prescored` | Path to a directory containing prescored indels for CADD.
HelpThis folder contains the +compressed files and indexes that would otherwise be in data/prescored folder as described in +https://github.com/kircherlab/CADD-scripts/#manual-installation.
| `string` | | | | +| `cadd_resources` | Path to a directory containing CADD annotations.
HelpThis folder contains the uncompressed +files that would otherwise be in data/annotation folder as described in +https://github.com/kircherlab/CADD-scripts/#manual-installation.
| `string` | | | | +| `par_regions` | Provide a bed file of chrX and chrY PAR regions for dipcall and DeepVariant | `string` | | | | +| `tandem_repeats` | A tandem repeat BED file for sniffles | `string` | | | | +| `trgt_repeats` | A BED file with repeats to be genotyped with TRGT | `string` | | | | +| `snp_db` | A csv file with echtvar databases to annotate SNVs with | `string` | | | | +| `variant_catalog` | A variant catalog json-file for stranger | `string` | | | | +| `variant_consequences_snv` | File containing list of SO terms listed in the order of severity from most severe to lease severe for annotating +genomic SNVs.
HelpFor more information check +https://ensembl.org/info/genome/variation/prediction/predicted_data.html
| `string` | | | | +| `vep_cache` | A path to the VEP cache location | `string` | | | | +| `bed` | A BED file with regions of interest, used to limit short variant calling. | `string` | | | | +| `hificnv_xy` | A BED file containing expected copy number regions for XY samples. | `string` | | | | +| `hificnv_xx` | A BED file containing expected copy number regions for XX samples. | `string` | | | | +| `hificnv_exclude` | A BED file specifying regions to exclude with HiFiCNV, such as centromeres. | `string` | | | | +| `reduced_penetrance` | A file with gene ids that have reduced penetrance. For use with genmod. | `string` | | | | +| `score_config_snv` | A SNV rank model config file for genmod. | `string` | | | | +| `somalier_sites` | A VCF of known polymorphic sites for somalier | `string` | | | | +| `validationFailUnrecognisedParams` | Validation of parameters fails when an unrecognised parameter is found. +
HelpBy default, when an unrecognised parameter is found, it returns a warning.
| `boolean` | | +| True | +| `validationLenientMode` | Validation of parameters in lenient more.
HelpAllows string values that are +parseable as numbers or booleans. For further information see [JSONSchema +docs](https://github.com/everit-org/json-schema#lenient-mode).
| `boolean` | | | True | +| `pipelines_testdata_base_path` | Base URL or local path to location of pipeline test dataset files | `string` | +https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/ | | True | + diff --git a/modules.json b/modules.json index 104fbfd9..ba490985 100644 --- a/modules.json +++ b/modules.json @@ -35,6 +35,11 @@ "git_sha": "c5abf7acbb2943bf09f4025cacbbcc2bc2292637", "installed_by": ["modules"] }, + "bcftools/query": { + "branch": "master", + "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", + "installed_by": ["modules"] + }, "bcftools/reheader": { "branch": "master", "git_sha": "c32611ac6813055b9321d2827678e2f8aebcb394", @@ -201,6 +206,11 @@ "git_sha": "6c2309aaec566c0d44a6cf14d4b2d0c51afe2e91", "installed_by": ["modules"] }, + "severus": { + "branch": "master", + "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", + "installed_by": ["modules"] + }, "sniffles": { "branch": "master", "git_sha": "b50aa17b1b604c7b3cfe58a2472d1e7b990ae8bf", diff --git a/modules/local/create_samples_file.nf b/modules/local/create_samples_file/main.nf similarity index 60% rename from modules/local/create_samples_file.nf rename to modules/local/create_samples_file/main.nf index 80c9931a..b4847ed8 100644 --- a/modules/local/create_samples_file.nf +++ b/modules/local/create_samples_file/main.nf @@ -8,7 +8,7 @@ process CREATE_SAMPLES_FILE { 'biocontainers/gawk:5.1.0' }" input: - val(meta) + tuple val(meta), path(txt) output: tuple val(meta), path("*.txt"), emit: samples @@ -18,22 +18,27 @@ process CREATE_SAMPLES_FILE { task.ext.when == null || task.ext.when script: + def prefix = task.ext.prefix ?: "${meta.id}" + if ("$txt" == "${prefix}.txt") error "Input and output names are the same, set prefix in module configuration to disambiguate!" + """ - echo SAMPLE "${meta.id}" > ${meta.id}.txt + awk '{print \$1,"${meta.id}"}' ${txt} > ${prefix}.txt cat <<-END_VERSIONS > versions.yml "${task.process}": - create_samples_file: v1.0 + gawk: \$(awk -Wversion | sed '1!d; s/.*Awk //; s/,.*//') END_VERSIONS """ stub: + def prefix = task.ext.prefix ?: "${meta.id}" + """ - touch ${meta.id}.txt + touch ${prefix}.txt cat <<-END_VERSIONS > versions.yml "${task.process}": - create_samples_file: v1.0 + gawk: \$(awk -Wversion | sed '1!d; s/.*Awk //; s/,.*//') END_VERSIONS """ } diff --git a/modules/local/create_samples_file/tests/main.nf.test b/modules/local/create_samples_file/tests/main.nf.test new file mode 100644 index 00000000..38c558b4 --- /dev/null +++ b/modules/local/create_samples_file/tests/main.nf.test @@ -0,0 +1,55 @@ +nextflow_process { + + name "Test Process CREATE_SAMPLES_FILE" + script "../main.nf" + process "CREATE_SAMPLES_FILE" + + tag "modules" + tag "modules_local" + tag "create_samples_file" + + config "./nextflow.config" + + test("create_samples_file") { + + when { + process { + """ + input[0] = Channel.of('test_vcf_file_sample') + .collectFile(name: 'test.txt') + .map { file -> [ [ id: 'test' ], file ] } + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("create_samples_file -stub") { + + options "-stub" + + when { + process { + """ + input[0] = Channel.of('test_vcf_file_sample') + .collectFile(name: 'test.txt') + .map { file -> [ [ id: 'test' ], file ] } + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } +} diff --git a/modules/local/create_samples_file/tests/main.nf.test.snap b/modules/local/create_samples_file/tests/main.nf.test.snap new file mode 100644 index 00000000..5579fc68 --- /dev/null +++ b/modules/local/create_samples_file/tests/main.nf.test.snap @@ -0,0 +1,68 @@ +{ + "create_samples_file -stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "samples_file.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,ef72b0fd7e245e40b0ce6d409e218689" + ], + "samples": [ + [ + { + "id": "test" + }, + "samples_file.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,ef72b0fd7e245e40b0ce6d409e218689" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.3" + }, + "timestamp": "2024-09-11T18:56:06.026507892" + }, + "create_samples_file": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "samples_file.txt:md5,41e40eee31c3003c213685c180f52c25" + ] + ], + "1": [ + "versions.yml:md5,ef72b0fd7e245e40b0ce6d409e218689" + ], + "samples": [ + [ + { + "id": "test" + }, + "samples_file.txt:md5,41e40eee31c3003c213685c180f52c25" + ] + ], + "versions": [ + "versions.yml:md5,ef72b0fd7e245e40b0ce6d409e218689" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.3" + }, + "timestamp": "2024-09-11T18:55:18.906428667" + } +} \ No newline at end of file diff --git a/modules/local/create_samples_file/tests/nextflow.config b/modules/local/create_samples_file/tests/nextflow.config new file mode 100644 index 00000000..f65fe04c --- /dev/null +++ b/modules/local/create_samples_file/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: 'CREATE_SAMPLES_FILE' { + ext.prefix = 'samples_file' + } +} diff --git a/modules/nf-core/bcftools/query/environment.yml b/modules/nf-core/bcftools/query/environment.yml new file mode 100644 index 00000000..5c00b116 --- /dev/null +++ b/modules/nf-core/bcftools/query/environment.yml @@ -0,0 +1,5 @@ +channels: + - conda-forge + - bioconda +dependencies: + - bioconda::bcftools=1.20 diff --git a/modules/nf-core/bcftools/query/main.nf b/modules/nf-core/bcftools/query/main.nf new file mode 100644 index 00000000..58019f4d --- /dev/null +++ b/modules/nf-core/bcftools/query/main.nf @@ -0,0 +1,56 @@ +process BCFTOOLS_QUERY { + tag "$meta.id" + label 'process_single' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/bcftools:1.20--h8b25389_0': + 'biocontainers/bcftools:1.20--h8b25389_0' }" + + input: + tuple val(meta), path(vcf), path(tbi) + path regions + path targets + path samples + + output: + tuple val(meta), path("*.${suffix}"), emit: output + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + suffix = task.ext.suffix ?: "txt" + def regions_file = regions ? "--regions-file ${regions}" : "" + def targets_file = targets ? "--targets-file ${targets}" : "" + def samples_file = samples ? "--samples-file ${samples}" : "" + """ + bcftools query \\ + $regions_file \\ + $targets_file \\ + $samples_file \\ + $args \\ + $vcf \\ + > ${prefix}.${suffix} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + bcftools: \$(bcftools --version 2>&1 | head -n1 | sed 's/^.*bcftools //; s/ .*\$//') + END_VERSIONS + """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + suffix = task.ext.suffix ?: "txt" + """ + touch ${prefix}.${suffix} \\ + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + bcftools: \$(bcftools --version 2>&1 | head -n1 | sed 's/^.*bcftools //; s/ .*\$//') + END_VERSIONS + """ +} diff --git a/modules/nf-core/bcftools/query/meta.yml b/modules/nf-core/bcftools/query/meta.yml new file mode 100644 index 00000000..303ef610 --- /dev/null +++ b/modules/nf-core/bcftools/query/meta.yml @@ -0,0 +1,63 @@ +name: bcftools_query +description: Extracts fields from VCF or BCF files and outputs them in user-defined format. +keywords: + - query + - variant calling + - bcftools + - VCF +tools: + - query: + description: | + Extracts fields from VCF or BCF files and outputs them in user-defined format. + homepage: http://samtools.github.io/bcftools/bcftools.html + documentation: http://www.htslib.org/doc/bcftools.html + doi: 10.1093/bioinformatics/btp352 + licence: ["MIT"] +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - vcf: + type: file + description: | + The vcf file to be qeuried. + pattern: "*.{vcf.gz, vcf}" + - tbi: + type: file + description: | + The tab index for the VCF file to be inspected. + pattern: "*.tbi" + - regions: + type: file + description: | + Optionally, restrict the operation to regions listed in this file. + - targets: + type: file + description: | + Optionally, restrict the operation to regions listed in this file (doesn't rely upon index files) + - samples: + type: file + description: | + Optional, file of sample names to be included or excluded. + e.g. 'file.tsv' +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - output: + type: file + description: BCFTools query output file + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" +authors: + - "@abhi18av" + - "@drpatelh" +maintainers: + - "@abhi18av" + - "@drpatelh" diff --git a/modules/nf-core/bcftools/query/tests/main.nf.test b/modules/nf-core/bcftools/query/tests/main.nf.test new file mode 100644 index 00000000..39e67b35 --- /dev/null +++ b/modules/nf-core/bcftools/query/tests/main.nf.test @@ -0,0 +1,101 @@ +nextflow_process { + + name "Test Process BCFTOOLS_QUERY" + script "../main.nf" + process "BCFTOOLS_QUERY" + + tag "modules" + tag "modules_nfcore" + tag "bcftools" + tag "bcftools/query" + + config "./nextflow.config" + + test("sarscov2 - [vcf, tbi], [], [], []") { + + when { + process { + """ + input[0] = [ + [ id:'out' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true) + ] + input[1] = [] + input[2] = [] + input[3] = [] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.output, + process.out.versions + ).match() } + ) + } + + } + + test("sarscov2 - [vcf, tbi], vcf, tsv, []") { + + when { + process { + """ + input[0] = [ + [ id:'out' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true) + ] + input[1] = file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true) + input[2] = file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.targets.tsv.gz', checkIfExists: true) + input[3] = [] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.output, + process.out.versions + ).match() } + ) + } + + } + + test("sarscov2 - [vcf, tbi], [], [], [] - stub") { + + when { + process { + """ + input[0] = [ + [ id:'out' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true) + ] + input[1] = [] + input[2] = [] + input[3] = [] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + file(process.out.output[0][1]).name, + process.out.versions + ).match() } + ) + } + + } + +} diff --git a/modules/nf-core/bcftools/query/tests/main.nf.test.snap b/modules/nf-core/bcftools/query/tests/main.nf.test.snap new file mode 100644 index 00000000..3ead1f2c --- /dev/null +++ b/modules/nf-core/bcftools/query/tests/main.nf.test.snap @@ -0,0 +1,55 @@ +{ + "sarscov2 - [vcf, tbi], vcf, tsv, []": { + "content": [ + [ + [ + { + "id": "out" + }, + "out.txt:md5,75a6bd0084e2e1838cf7baba11b99d19" + ] + ], + [ + "versions.yml:md5,3d93ea9cd5d314743254618b49e4bd16" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-05-31T15:15:44.916249758" + }, + "sarscov2 - [vcf, tbi], [], [], [] - stub": { + "content": [ + "out.txt", + [ + "versions.yml:md5,3d93ea9cd5d314743254618b49e4bd16" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-05-31T15:15:49.932359271" + }, + "sarscov2 - [vcf, tbi], [], [], []": { + "content": [ + [ + [ + { + "id": "out" + }, + "out.txt:md5,87a2ab194e1ee3219b44e58429ec3307" + ] + ], + [ + "versions.yml:md5,3d93ea9cd5d314743254618b49e4bd16" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-05-31T15:15:39.930697926" + } +} \ No newline at end of file diff --git a/modules/nf-core/bcftools/query/tests/nextflow.config b/modules/nf-core/bcftools/query/tests/nextflow.config new file mode 100644 index 00000000..da81c2a0 --- /dev/null +++ b/modules/nf-core/bcftools/query/tests/nextflow.config @@ -0,0 +1,3 @@ +process { + ext.args = "-f '%CHROM %POS %REF %ALT[%SAMPLE=%GT]'" +} \ No newline at end of file diff --git a/modules/nf-core/bcftools/query/tests/tags.yml b/modules/nf-core/bcftools/query/tests/tags.yml new file mode 100644 index 00000000..fb9455cb --- /dev/null +++ b/modules/nf-core/bcftools/query/tests/tags.yml @@ -0,0 +1,2 @@ +bcftools/query: + - "modules/nf-core/bcftools/query/**" diff --git a/modules/nf-core/severus/environment.yml b/modules/nf-core/severus/environment.yml new file mode 100644 index 00000000..49e4fbc2 --- /dev/null +++ b/modules/nf-core/severus/environment.yml @@ -0,0 +1,7 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json +channels: + - conda-forge + - bioconda +dependencies: + - "bioconda::severus=1.1" diff --git a/modules/nf-core/severus/main.nf b/modules/nf-core/severus/main.nf new file mode 100644 index 00000000..e0cc2736 --- /dev/null +++ b/modules/nf-core/severus/main.nf @@ -0,0 +1,89 @@ +process SEVERUS { + tag "$meta.id" + label 'process_medium' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/severus:1.1--pyhdfd78af_0': + 'biocontainers/severus:1.1--pyhdfd78af_0' }" + + input: + tuple val(meta), path(target_input), path(target_index), path(control_input), path(control_index), path(vcf) + tuple val(meta2), path(bed) + + output: + tuple val(meta), path("${prefix}/severus.log") , emit: log + tuple val(meta), path("${prefix}/read_qual.txt") , emit: read_qual + tuple val(meta), path("${prefix}/breakpoints_double.csv") , emit: breakpoints_double + tuple val(meta), path("${prefix}/read_alignments") , emit: read_alignments , optional: true + tuple val(meta), path("${prefix}/read_ids.csv") , emit: read_ids , optional: true + tuple val(meta), path("${prefix}/severus_collaped_dup.bed") , emit: collapsed_dup , optional: true + tuple val(meta), path("${prefix}/severus_LOH.bed") , emit: loh , optional: true + tuple val(meta), path("${prefix}/all_SVs/severus_all.vcf") , emit: all_vcf , optional: true + tuple val(meta), path("${prefix}/all_SVs/breakpoints_clusters_list.tsv") , emit: all_breakpoints_clusters_list , optional: true + tuple val(meta), path("${prefix}/all_SVs/breakpoints_clusters.tsv") , emit: all_breakpoints_clusters , optional: true + tuple val(meta), path("${prefix}/all_SVs/plots/severus_*.html") , emit: all_plots , optional: true + tuple val(meta), path("${prefix}/somatic_SVs/severus_all.vcf") , emit: somatic_vcf , optional: true + tuple val(meta), path("${prefix}/somatic_SVs/breakpoints_clusters_list.tsv"), emit: somatic_breakpoints_clusters_list, optional: true + tuple val(meta), path("${prefix}/somatic_SVs/breakpoints_clusters.tsv") , emit: somatic_breakpoints_clusters , optional: true + tuple val(meta), path("${prefix}/somatic_SVs/plots/severus_*.html") , emit: somatic_plots , optional: true + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + prefix = task.ext.prefix ?: "${meta.id}" + + def control = control_input ? "--control-bam ${control_input}" : "" + def vntr_bed = bed ? "--vntr-bed ${bed}" : "" + def phasing_vcf = vcf ? "--phasing-vcf ${vcf}" : "" + """ + severus \\ + $args \\ + --threads $task.cpus \\ + --target-bam $target_input \\ + $vntr_bed \\ + $control \\ + $phasing_vcf \\ + --out-dir ${prefix} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + severus: \$(severus --version) + END_VERSIONS + """ + + stub: + def args = task.ext.args ?: '' + prefix = task.ext.prefix ?: "${meta.id}" + + """ + mkdir -p ${prefix}/all_SVs/plots + mkdir -p ${prefix}/somatic_SVs/plots + + touch ${prefix}/severus_collaped_dup.bed + touch ${prefix}/severus.log + touch ${prefix}/severus_LOH.bed + touch ${prefix}/read_alignments + touch ${prefix}/read_ids.csv + touch ${prefix}/read_qual.txt + touch ${prefix}/breakpoints_double.csv + touch ${prefix}/all_SVs/severus_all.vcf + touch ${prefix}/all_SVs/breakpoints_clusters_list.tsv + touch ${prefix}/all_SVs/breakpoints_clusters.tsv + touch ${prefix}/all_SVs/plots/severus_0.html + touch ${prefix}/all_SVs/plots/severus_1.html + touch ${prefix}/somatic_SVs/severus_somatic.vcf + touch ${prefix}/somatic_SVs/breakpoints_clusters_list.tsv + touch ${prefix}/somatic_SVs/breakpoints_clusters.tsv + touch ${prefix}/somatic_SVs/plots/severus_0.html + touch ${prefix}/somatic_SVs/plots/severus_1.html + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + severus: \$(severus --version) + END_VERSIONS + """ +} diff --git a/modules/nf-core/severus/meta.yml b/modules/nf-core/severus/meta.yml new file mode 100644 index 00000000..844eee44 --- /dev/null +++ b/modules/nf-core/severus/meta.yml @@ -0,0 +1,128 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/meta-schema.json +name: "severus" +description: Severus is a somatic structural variation (SV) caller for long reads (both PacBio and ONT) +keywords: + - structural + - variation + - somatic + - germline + - long-read +tools: + - "severus": + description: "A tool for somatic structural variant calling using long reads" + homepage: "https://github.com/KolmogorovLab/Severus" + documentation: "https://github.com/KolmogorovLab/Severus" + tool_dev_url: "https://github.com/KolmogorovLab/Severus" + doi: "10.1101/2024.03.22.24304756" + licence: ["BSD-3-clause"] + +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - target_input: + type: file + description: path to one or multiple target BAM/CRAM files (e.g. tumor, must be indexed) + pattern: "*.{bam,cram}" + - target_index: + type: file + description: path to one or multiple target BAM/CRAM index files + pattern: "*.{bai,crai,csi}" + - control_input: + type: file + description: path to the control BAM/CRAM file (e.g. normal, must be indexed) + pattern: "*.{bam,cram}" + - control_index: + type: file + description: path to the control BAM/CRAM file index + pattern: "*.{bai,crai,csi}" + - vcf: + type: file + description: path to vcf file used for phasing (if using haplotype specific SV calling + pattern: "*.{vcf,vcf.gz}" + - meta2: + type: map + description: | + Groovy Map containing tandem repeat regions information + e.g. `[ id:'hg38']` + - bed: + type: file + description: path to bed file for tandem repeat regions (must be ordered) + pattern: "*.bed" +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + - log: + type: file + description: Severus log file + pattern: "${prefix}/severus.log" + - read_qual: + type: file + description: Severus read_qual file + pattern: "${prefix}/read_qual.txt" + - breakpoints_double: + type: file + description: Severus breakpoints_double file + pattern: "${prefix}/breakpoints_double.csv" + - read_alignments: + type: file + description: read alignments file + pattern: "${prefix}/read_alignments" + - read_ids: + type: file + description: read IDs for support reads + pattern: "${prefix}/read_ids" + - collapsed_dup: + type: file + description: a bed file with identified collapsed duplication regions + pattern: "${prefix}/severus_collaped_dup" + - loh: + type: file + description: a bed file with predicted LOH regions + pattern: "${prefix}/severus_LOH.bed" + - all_vcf: + type: file + description: VCF file with all SVs (somatic + germline) + pattern: "${prefix}/all_SVs/severus_all.vcf" + - all_breakpoints_clusters_list: + type: file + description: Severus breakpoints clusters list file + pattern: "${prefix}/all_SVs/breakpoints_clusters_list.tsv" + - all_breakpoints_clusters: + type: file + description: Severus breakpoints clusters file + pattern: "${prefix}/all_SVs/breakpoints_clusters.tsv" + - all_plots: + type: file + description: Severus plots + pattern: "${prefix}/all_SVs/plots/*.html" + - somatic_vcf: + type: file + description: VCF file with somatic SVs + pattern: "${prefix}/somatic_SVs/severus_all.vcf" + - somatic_breakpoints_clusters_list: + type: file + description: Severus somatic breakpoints clusters list file + pattern: "${prefix}/somatic_SVs/breakpoints_clusters_list.tsv" + - somatic_breakpoints_clusters: + type: file + description: Severus somatic breakpoints clusters file + pattern: "${prefix}/somatic_SVs/breakpoints_clusters.tsv" + - somatic_plots: + type: file + description: Severus somatic plots + pattern: "${prefix}/somatic_SVs/plots/*.html" +authors: + - "@fellen31" +maintainers: + - "@fellen31" diff --git a/modules/nf-core/severus/tests/main.nf.test b/modules/nf-core/severus/tests/main.nf.test new file mode 100644 index 00000000..1b85a109 --- /dev/null +++ b/modules/nf-core/severus/tests/main.nf.test @@ -0,0 +1,209 @@ +nextflow_process { + + name "Test Process SEVERUS" + script "../main.nf" + process "SEVERUS" + + tag "modules" + tag "modules_nfcore" + tag "severus" + tag "deepvariant" + + test("homo_sapiens - [ bam, bai, [], [], [] ], [[],[]]") { + + config "./nextflow.config" + + when { + process { + """ + input[0] = [ + [ id:'test'], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test2.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test2.sorted.bam.bai', checkIfExists: true), + [], + [], + [] + ] + input[1] = [[],[]] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + file(process.out.log.get(0).get(1)).readLines().last().contains("Writing VCF"), + process.out.read_qual, + process.out.breakpoints_double, + file(process.out.all_vcf.get(0).get(1)).readLines()[0..2], // Line 3 contains date + file(process.out.all_vcf.get(0).get(1)).readLines()[4..39], + process.out.all_breakpoints_clusters_list, + process.out.all_breakpoints_clusters, + process.out.versions + ).match() } + ) + } + + } + + test("homo_sapiens - [ bam, bai, bam, bai, [] ], [[],[]]") { + + config "./nextflow.config" + + when { + process { + + """ + input[0] = [ + [ id:'test'], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test2.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test2.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.phased.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.phased.bam.bai', checkIfExists: true), + [] + ] + input[1] = [[],[]] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + file(process.out.log.get(0).get(1)).readLines().last().contains("Writing VCF"), + process.out.read_qual, + process.out.breakpoints_double, + file(process.out.all_vcf.get(0).get(1)).readLines()[0..2], // Line 3 contains date + file(process.out.all_vcf.get(0).get(1)).readLines()[4..39], + process.out.all_breakpoints_clusters_list, + process.out.all_breakpoints_clusters, + process.out.somatic_vcf, + process.out.somatic_breakpoints_clusters_list, + process.out.somatic_breakpoints_clusters, + process.out.versions + ).match() } + ) + } + + } + + test("homo_sapiens - [ bam, bai, bam, bai, vcf ], [[],[]]") { + + config "./nextflow.config" + + when { + process { + + """ + input[0] = [ + [ id:'test'], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test2.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test2.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.phased.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.phased.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test.genome.vcf', checkIfExists: true), + ] + input[1] = [[],[]] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + file(process.out.log.get(0).get(1)).readLines().last().contains("Writing VCF"), + process.out.read_qual, + process.out.breakpoints_double, + file(process.out.all_vcf.get(0).get(1)).readLines()[0..2], // Line 3 contains date + file(process.out.all_vcf.get(0).get(1)).readLines()[4..39], + process.out.all_breakpoints_clusters_list, + process.out.all_breakpoints_clusters, + process.out.somatic_vcf, + process.out.somatic_breakpoints_clusters_list, + process.out.somatic_breakpoints_clusters, + process.out.versions + ).match() } + ) + } + + } + + test("homo_sapiens - [ bam, bai, bam, bai, vcf ], [ bed ]") { + + config "./nextflow.config" + + when { + process { + + """ + input[0] = [ + [ id:'test'], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test2.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test2.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.phased.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.phased.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test.genome.vcf', checkIfExists: true), + ] + input[1] = [ + [ id:'bed'], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.blacklist_intervals.bed', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + file(process.out.log.get(0).get(1)).readLines().last().contains("Writing VCF"), + process.out.read_qual, + process.out.breakpoints_double, + file(process.out.all_vcf.get(0).get(1)).readLines()[0..2], // Line 3 contains date + file(process.out.all_vcf.get(0).get(1)).readLines()[4..39], + process.out.all_breakpoints_clusters_list, + process.out.all_breakpoints_clusters, + process.out.somatic_vcf, + process.out.somatic_breakpoints_clusters_list, + process.out.somatic_breakpoints_clusters, + process.out.versions + ).match() } + ) + } + + } + + test("homo_sapiens - [ bam, bai, [], [], [] ], [[],[]] - stub") { + + config "./nextflow.config" + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test'], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.phased.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.phased.bam.bai', checkIfExists: true), + [], + [], + [] + ] + input[1] = [[],[]] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} \ No newline at end of file diff --git a/modules/nf-core/severus/tests/main.nf.test.snap b/modules/nf-core/severus/tests/main.nf.test.snap new file mode 100644 index 00000000..0dc24142 --- /dev/null +++ b/modules/nf-core/severus/tests/main.nf.test.snap @@ -0,0 +1,590 @@ +{ + "homo_sapiens - [ bam, bai, [], [], [] ], [[],[]]": { + "content": [ + false, + [ + [ + { + "id": "test" + }, + "read_qual.txt:md5,3a99166c04453f184c43c348f530301a" + ] + ], + [ + [ + { + "id": "test" + }, + "breakpoints_double.csv:md5,68f6ea1191c90253e56f30023a1fbdbf" + ] + ], + [ + "##fileformat=VCFv4.2", + "##source=Severus v1.1", + "##CommandLine= --min-sv-size 1 --min-mapq 0 --min-support 1 --TIN-ratio 1 --threads 2 --target-bam test2.sorted.bam --out-dir test" + ], + [ + "##contig=", + "##ALT=", + "##ALT=", + "##ALT=", + "##ALT=", + "##ALT=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##FORMAT=", + "##FORMAT=", + "##FORMAT=", + "##FORMAT=", + "##FORMAT=", + "##FORMAT=", + "#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO\tFORMAT\ttest2.sorted", + "chr22\t16879\tseverus_DEL0\tN\t\t60.0\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=13;END=16892;STRANDS=+-;MAPQ=60.0\tGT:GQ:VAF:hVAF:DR:DV\t0/1:232:0.38:0.38,0.00,0.00:28:17" + ], + [ + + ], + [ + + ], + [ + "versions.yml:md5,99a20821f27fa27a3ed91d9c3d424c84" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-08-15T09:39:57.407065744" + }, + "homo_sapiens - [ bam, bai, bam, bai, vcf ], [[],[]]": { + "content": [ + false, + [ + [ + { + "id": "test" + }, + "read_qual.txt:md5,90b9e913572e1452f8ec1ad9fdc063f5" + ] + ], + [ + [ + { + "id": "test" + }, + "breakpoints_double.csv:md5,6e235b941ded1fbe04edf0c081b531a0" + ] + ], + [ + "##fileformat=VCFv4.2", + "##source=Severus v1.1", + "##CommandLine= --min-sv-size 1 --min-mapq 0 --min-support 1 --TIN-ratio 1 --threads 2 --target-bam test2.sorted.bam --control-bam test.sorted.phased.bam --phasing-vcf test.genome.vcf --out-dir test" + ], + [ + "##contig=", + "##ALT=", + "##ALT=", + "##ALT=", + "##ALT=", + "##ALT=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##FORMAT=", + "##FORMAT=", + "##FORMAT=", + "##FORMAT=", + "##FORMAT=", + "##FORMAT=", + "#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO\tFORMAT\ttest2.sorted\ttest.sorted.phased", + "chr22\t16879\tseverus_DEL0\tN\t\t60.0\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=13;END=16892;STRANDS=+-;MAPQ=60.0\tGT:GQ:VAF:hVAF:DR:DV\t0/1:232:0.38:0.38,0.00,0.00:28:17\t0/1:93:0.50:0.00,0.60,0.50:13:13" + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + "versions.yml:md5,99a20821f27fa27a3ed91d9c3d424c84" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-08-15T09:40:30.613156728" + }, + "homo_sapiens - [ bam, bai, [], [], [] ], [[],[]] - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "severus.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "read_qual.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "10": [ + [ + { + "id": "test" + }, + [ + "severus_0.html:md5,d41d8cd98f00b204e9800998ecf8427e", + "severus_1.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "11": [ + + ], + "12": [ + [ + { + "id": "test" + }, + "breakpoints_clusters_list.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "13": [ + [ + { + "id": "test" + }, + "breakpoints_clusters.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "14": [ + [ + { + "id": "test" + }, + [ + "severus_0.html:md5,d41d8cd98f00b204e9800998ecf8427e", + "severus_1.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "15": [ + "versions.yml:md5,99a20821f27fa27a3ed91d9c3d424c84" + ], + "2": [ + [ + { + "id": "test" + }, + "breakpoints_double.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "test" + }, + "read_alignments:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + [ + { + "id": "test" + }, + "read_ids.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ + [ + { + "id": "test" + }, + "severus_collaped_dup.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "6": [ + [ + { + "id": "test" + }, + "severus_LOH.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "7": [ + + ], + "8": [ + [ + { + "id": "test" + }, + "breakpoints_clusters_list.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "9": [ + [ + { + "id": "test" + }, + "breakpoints_clusters.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "all_breakpoints_clusters": [ + [ + { + "id": "test" + }, + "breakpoints_clusters.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "all_breakpoints_clusters_list": [ + [ + { + "id": "test" + }, + "breakpoints_clusters_list.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "all_plots": [ + [ + { + "id": "test" + }, + [ + "severus_0.html:md5,d41d8cd98f00b204e9800998ecf8427e", + "severus_1.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "all_vcf": [ + + ], + "breakpoints_double": [ + [ + { + "id": "test" + }, + "breakpoints_double.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "collapsed_dup": [ + [ + { + "id": "test" + }, + "severus_collaped_dup.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "log": [ + [ + { + "id": "test" + }, + "severus.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "loh": [ + [ + { + "id": "test" + }, + "severus_LOH.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "read_alignments": [ + [ + { + "id": "test" + }, + "read_alignments:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "read_ids": [ + [ + { + "id": "test" + }, + "read_ids.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "read_qual": [ + [ + { + "id": "test" + }, + "read_qual.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "somatic_breakpoints_clusters": [ + [ + { + "id": "test" + }, + "breakpoints_clusters.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "somatic_breakpoints_clusters_list": [ + [ + { + "id": "test" + }, + "breakpoints_clusters_list.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "somatic_plots": [ + [ + { + "id": "test" + }, + [ + "severus_0.html:md5,d41d8cd98f00b204e9800998ecf8427e", + "severus_1.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "somatic_vcf": [ + + ], + "versions": [ + "versions.yml:md5,99a20821f27fa27a3ed91d9c3d424c84" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.3" + }, + "timestamp": "2024-09-11T19:09:18.357545892" + }, + "homo_sapiens - [ bam, bai, bam, bai, [] ], [[],[]]": { + "content": [ + false, + [ + [ + { + "id": "test" + }, + "read_qual.txt:md5,90b9e913572e1452f8ec1ad9fdc063f5" + ] + ], + [ + [ + { + "id": "test" + }, + "breakpoints_double.csv:md5,e2b55013bcb77a0b738cdba485520f68" + ] + ], + [ + "##fileformat=VCFv4.2", + "##source=Severus v1.1", + "##CommandLine= --min-sv-size 1 --min-mapq 0 --min-support 1 --TIN-ratio 1 --threads 2 --target-bam test2.sorted.bam --control-bam test.sorted.phased.bam --out-dir test" + ], + [ + "##contig=", + "##ALT=", + "##ALT=", + "##ALT=", + "##ALT=", + "##ALT=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##FORMAT=", + "##FORMAT=", + "##FORMAT=", + "##FORMAT=", + "##FORMAT=", + "##FORMAT=", + "#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO\tFORMAT\ttest2.sorted\ttest.sorted.phased", + "chr22\t16879\tseverus_DEL0\tN\t\t60.0\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=13;END=16892;STRANDS=+-;MAPQ=60.0\tGT:GQ:VAF:hVAF:DR:DV\t0/1:232:0.38:0.38,0.00,0.00:28:17\t0/1:93:0.50:0.00,0.60,0.50:13:13" + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + "versions.yml:md5,99a20821f27fa27a3ed91d9c3d424c84" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-08-15T09:40:15.084382239" + }, + "homo_sapiens - [ bam, bai, bam, bai, vcf ], [ bed ]": { + "content": [ + false, + [ + [ + { + "id": "test" + }, + "read_qual.txt:md5,d2355003691b9a3a2563f40533ec562f" + ] + ], + [ + [ + { + "id": "test" + }, + "breakpoints_double.csv:md5,6e235b941ded1fbe04edf0c081b531a0" + ] + ], + [ + "##fileformat=VCFv4.2", + "##source=Severus v1.1", + "##CommandLine= --min-sv-size 1 --min-mapq 0 --min-support 1 --TIN-ratio 1 --threads 2 --target-bam test2.sorted.bam --vntr-bed genome.blacklist_intervals.bed --control-bam test.sorted.phased.bam --phasing-vcf test.genome.vcf --out-dir test" + ], + [ + "##contig=", + "##ALT=", + "##ALT=", + "##ALT=", + "##ALT=", + "##ALT=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##FORMAT=", + "##FORMAT=", + "##FORMAT=", + "##FORMAT=", + "##FORMAT=", + "##FORMAT=", + "#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO\tFORMAT\ttest2.sorted\ttest.sorted.phased", + "chr22\t16879\tseverus_DEL0\tN\t\t60.0\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=13;END=16892;STRANDS=+-;MAPQ=60.0\tGT:GQ:VAF:hVAF:DR:DV\t0/1:232:0.38:0.38,0.00,0.00:28:17\t0/1:93:0.50:0.00,0.60,0.50:13:13" + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + "versions.yml:md5,99a20821f27fa27a3ed91d9c3d424c84" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-08-15T09:47:36.803934533" + } +} \ No newline at end of file diff --git a/modules/nf-core/severus/tests/nextflow.config b/modules/nf-core/severus/tests/nextflow.config new file mode 100644 index 00000000..a1445109 --- /dev/null +++ b/modules/nf-core/severus/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: 'SEVERUS' { + ext.args = '--min-sv-size 1 --min-mapq 0 --min-support 1 --TIN-ratio 1' + } +} diff --git a/modules/nf-core/severus/tests/tags.yml b/modules/nf-core/severus/tests/tags.yml new file mode 100644 index 00000000..d7e36658 --- /dev/null +++ b/modules/nf-core/severus/tests/tags.yml @@ -0,0 +1,2 @@ +severus: + - "modules/nf-core/severus/**" diff --git a/nextflow.config b/nextflow.config index 326fc86a..031db0ef 100644 --- a/nextflow.config +++ b/nextflow.config @@ -45,6 +45,7 @@ params { deepvariant_model_type = params.preset == 'ONT_R10' ? 'ONT_R104' : 'PACBIO' phaser = 'whatshap' + sv_caller = 'severus' preset = 'revio' hifiasm_mode = 'hifi-only' variant_caller = 'deepvariant' diff --git a/nextflow_schema.json b/nextflow_schema.json index 30d07548..e68761a6 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -361,6 +361,12 @@ "description": "Which short variant software to use (`deepvariant`)", "enum": ["deepvariant"] }, + "sv_caller": { + "type": "string", + "default": "severus", + "description": "Which structural variant caller to use (`severus`, `sniffles`)", + "enum": ["severus", "sniffles"] + }, "phaser": { "type": "string", "default": "whatshap", diff --git a/subworkflows/local/call_svs/main.nf b/subworkflows/local/call_svs/main.nf index 85481982..49f816e9 100644 --- a/subworkflows/local/call_svs/main.nf +++ b/subworkflows/local/call_svs/main.nf @@ -1,45 +1,85 @@ -include { BCFTOOLS_MERGE } from '../../../modules/nf-core/bcftools/merge/main' -include { BCFTOOLS_REHEADER as REHEADER_SNIFFLES } from '../../../modules/nf-core/bcftools/reheader/main' -include { CREATE_SAMPLES_FILE } from '../../../modules/local/create_samples_file.nf' -include { SNIFFLES } from '../../../modules/nf-core/sniffles/main' +include { BCFTOOLS_MERGE } from '../../../modules/nf-core/bcftools/merge/main' +include { BCFTOOLS_QUERY } from '../../../modules/nf-core/bcftools/query/main' +include { BCFTOOLS_REHEADER } from '../../../modules/nf-core/bcftools/reheader/main' +include { CREATE_SAMPLES_FILE } from '../../../modules/local/create_samples_file/main' +include { SEVERUS } from '../../../modules/nf-core/severus/main' +include { SNIFFLES } from '../../../modules/nf-core/sniffles/main' workflow CALL_SVS { take: - ch_bam_bai // channel: [mandatory] [ val(meta), path(bam), path(bai) ] - ch_fasta // channel: [mandatory] [ val(meta), path(fasta) ] - ch_fai // channel: [mandatory] [ val(meta), path(fai) ] - ch_tandem_repeats // channel: [optional] [ val(meta), path(bed) ] + ch_bam_bai // channel [mandatory]: [ val(meta), path(bam), path(bai) ] + ch_fasta // channel [mandatory]: [ val(meta), path(fasta) ] + ch_fai // channel [mandatory]: [ val(meta), path(fai) ] + sv_caller // val [mandatory]: Which caller to use + ch_tandem_repeats // channel [optional]: [ val(meta), path(bed) ] main: ch_versions = Channel.empty() - SNIFFLES (ch_bam_bai, ch_fasta, ch_tandem_repeats, true, false) - ch_versions = ch_versions.mix(SNIFFLES.out.versions) + // Call SVs + if (sv_caller == "severus") { - CREATE_SAMPLES_FILE ( SNIFFLES.out.vcf.map { meta, vcf -> meta } ) + SEVERUS ( + ch_bam_bai.map { meta, bam, bai -> [ meta, bam, bai, [], [], [] ] }, + ch_tandem_repeats + ) + ch_versions = ch_versions.mix(SEVERUS.out.versions) + + SEVERUS.out.all_vcf + .set { ch_vcf } + + } else if (sv_caller == "sniffles") { + + SNIFFLES ( + ch_bam_bai, + ch_fasta, + ch_tandem_repeats, + true, + false + ) + ch_versions = ch_versions.mix(SNIFFLES.out.versions) + + SNIFFLES.out.vcf + .set { ch_vcf } + } + + // Get the sample name from the VCF + // For Sniffles this is hardcoded as SAMPLE and for Severus it's based on the filename + BCFTOOLS_QUERY ( + ch_vcf.map { meta, vcf -> [ meta, vcf, [] ] }, + [], + [], + [] + ) + ch_versions = ch_versions.mix(BCFTOOLS_QUERY.out.versions) + + // Creates a "vcf_sample_name meta.id" file for bcftools reheader + CREATE_SAMPLES_FILE ( BCFTOOLS_QUERY.out.output ) ch_versions = ch_versions.mix(CREATE_SAMPLES_FILE.out.versions) - SNIFFLES.out.vcf + ch_vcf .join( CREATE_SAMPLES_FILE.out.samples ) - .map { meta, vcf, samples -> [ meta, vcf, [], samples] } - .set { ch_reheader_sniffles_in } + .map { meta, vcf, samples -> [ meta, vcf, [], samples ] } + .set { ch_bcftools_reheader_in } - REHEADER_SNIFFLES ( ch_reheader_sniffles_in, [[],[]] ) - ch_versions = ch_versions.mix(REHEADER_SNIFFLES.out.versions) + // Give meta.id as sample name in the VCF + BCFTOOLS_REHEADER ( ch_bcftools_reheader_in, [[],[]] ) + ch_versions = ch_versions.mix(BCFTOOLS_REHEADER.out.versions) - REHEADER_SNIFFLES.out.vcf - .join(REHEADER_SNIFFLES.out.index) + BCFTOOLS_REHEADER.out.vcf + .join(BCFTOOLS_REHEADER.out.index) .map { meta, vcf, tbi -> [ [ 'id': meta.project ], vcf, tbi ] } .groupTuple() - .set{ ch_bcftools_merge_in } + .set { ch_bcftools_merge_in } + // Merge the files with new sample names BCFTOOLS_MERGE ( ch_bcftools_merge_in, ch_fasta, ch_fai, [[],[]] ) ch_versions = ch_versions.mix(BCFTOOLS_MERGE.out.versions) emit: - ch_sv_calls_vcf = REHEADER_SNIFFLES.out.vcf // channel: [ val(meta), path(vcf) ] - ch_sv_calls_tbi = REHEADER_SNIFFLES.out.index // channel: [ val(meta), path(tbi) ] + ch_sv_calls_vcf = BCFTOOLS_REHEADER.out.vcf // channel: [ val(meta), path(vcf) ] + ch_sv_calls_tbi = BCFTOOLS_REHEADER.out.index // channel: [ val(meta), path(tbi) ] ch_multisample_vcf = BCFTOOLS_MERGE.out.vcf // channel: [ val(meta), path(vcf) ] ch_multisample_tbi = BCFTOOLS_MERGE.out.index // channel: [ val(meta), path(tbi) ] versions = ch_versions // channel: [ path(versions.yml) ] diff --git a/subworkflows/local/call_svs/tests/main.nf.test b/subworkflows/local/call_svs/tests/main.nf.test index 220851b0..f8a81f66 100644 --- a/subworkflows/local/call_svs/tests/main.nf.test +++ b/subworkflows/local/call_svs/tests/main.nf.test @@ -31,19 +31,20 @@ nextflow_workflow { } } - test("1 sample - [bam, bai], fasta, fai, []") { + test("1 sample - [bam, bai], fasta, fai, [] - sniffles") { when { workflow { """ - input[0] = [ + input[0] = Channel.of([ [ id:'test', single_end:false, project: 'project' ], // meta map file(params.pipelines_testdata_base_path + 'nallo/testdata/HG002_PacBio_Revio.bam', checkIfExists: true), file(params.pipelines_testdata_base_path + 'nallo/testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) - ] + ]) input[1] = GUNZIP.out.gunzip input[2] = SAMTOOLS_FAIDX.out.fai - input[3] = [[],[]] + input[3] = "sniffles" + input[4] = [[],[]] """ } } @@ -54,9 +55,7 @@ nextflow_workflow { { assert workflow.out.ch_sv_calls_tbi.get(0).get(1).endsWith("tbi") }, { assert workflow.out.ch_multisample_tbi.get(0).get(1).endsWith("tbi") }, { assert snapshot( - path(workflow.out.ch_sv_calls_vcf.get(0).get(1)).linesGzip[5..239], path(workflow.out.ch_sv_calls_vcf.get(0).get(1)).vcf.variantsMD5, - path(workflow.out.ch_multisample_vcf.get(0).get(1)).linesGzip[5..239], path(workflow.out.ch_multisample_vcf.get(0).get(1)).vcf.variantsMD5, workflow.out.versions, ).match() } @@ -65,19 +64,130 @@ nextflow_workflow { } - test("1 sample - [bam, bai], fasta, fai, bed") { + test("1 sample - [bam, bai], fasta, fai, bed - sniffles") { when { workflow { """ - input[0] = [ + input[0] = Channel.of([ [ id:'test', single_end:false, project: 'project' ], // meta map file(params.pipelines_testdata_base_path + 'nallo/testdata/HG002_PacBio_Revio.bam', checkIfExists: true), file(params.pipelines_testdata_base_path + 'nallo/testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) + ]) + input[1] = GUNZIP.out.gunzip + input[2] = SAMTOOLS_FAIDX.out.fai + input[3] = "sniffles" + input[4] = [ + [ id:'trf' ], + file('https://github.com/fritzsedlazeck/Sniffles/raw/master/annotations/human_GRCh38_no_alt_analysis_set.trf.bed', checkIfExists: true) ] + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert workflow.out.ch_sv_calls_tbi.get(0).get(1).endsWith("tbi") }, + { assert workflow.out.ch_multisample_tbi.get(0).get(1).endsWith("tbi") }, + { assert snapshot( + path(workflow.out.ch_sv_calls_vcf.get(0).get(1)).vcf.variantsMD5, + path(workflow.out.ch_multisample_vcf.get(0).get(1)).vcf.variantsMD5, + workflow.out.versions, + ).match() } + ) + } + + } + + test("2 samples - [bam, bai], fasta, fai, [] - sniffles") { + + when { + workflow { + """ + input[0] = Channel.of( + [ + [ id:'test_1', single_end:false, project: 'project' ], // meta map + file(params.pipelines_testdata_base_path + 'nallo/testdata/HG002_PacBio_Revio.bam', checkIfExists: true), + file(params.pipelines_testdata_base_path + 'nallo/testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) + ], + [ + [ id:'test_2', single_end:false, project: 'project' ], // meta map + file(params.pipelines_testdata_base_path + 'nallo/testdata/HG002_ONT.bam', checkIfExists: true), + file(params.pipelines_testdata_base_path + 'nallo/testdata/HG002_ONT.bam.bai', checkIfExists: true) + ] + ) + input[1] = GUNZIP.out.gunzip + input[2] = SAMTOOLS_FAIDX.out.fai + input[3] = "sniffles" + input[4] = [[],[]] + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert workflow.out.ch_sv_calls_tbi.get(0).get(1).endsWith("tbi") }, + { assert workflow.out.ch_sv_calls_tbi.get(1).get(1).endsWith("tbi") }, + { assert workflow.out.ch_multisample_tbi.get(0).get(1).endsWith("tbi") }, + { assert snapshot( + workflow.out.ch_sv_calls_vcf.collect { file(it[1]).name }.sort().toString(), // don't know the order of the output VCFs + path(workflow.out.ch_multisample_vcf.get(0).get(1)).vcf.variantsMD5, + workflow.out.versions, + ).match() } + ) + } + + } + + test("1 sample - [bam, bai], fasta, fai, [] - severus") { + tag "x" + when { + workflow { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false, project: 'project' ], // meta map + file(params.pipelines_testdata_base_path + 'nallo/testdata/HG002_PacBio_Revio.bam', checkIfExists: true), + file(params.pipelines_testdata_base_path + 'nallo/testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) + ]) input[1] = GUNZIP.out.gunzip input[2] = SAMTOOLS_FAIDX.out.fai - input[3] = [ + input[3] = "severus" + input[4] = [[],[]] + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert workflow.out.ch_sv_calls_tbi.get(0).get(1).endsWith("tbi") }, + { assert workflow.out.ch_multisample_tbi.get(0).get(1).endsWith("tbi") }, + { assert snapshot( + path(workflow.out.ch_sv_calls_vcf.get(0).get(1)).vcf.variantsMD5, + path(workflow.out.ch_multisample_vcf.get(0).get(1)).vcf.variantsMD5, + workflow.out.versions, + ).match() } + ) + } + + } + + test("1 sample - [bam, bai], fasta, fai, bed - severus") { + + when { + workflow { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false, project: 'project' ], // meta map + file(params.pipelines_testdata_base_path + 'nallo/testdata/HG002_PacBio_Revio.bam', checkIfExists: true), + file(params.pipelines_testdata_base_path + 'nallo/testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) + ]) + input[1] = GUNZIP.out.gunzip + input[2] = SAMTOOLS_FAIDX.out.fai + input[3] = "severus" + input[4] = [ [ id:'trf' ], file('https://github.com/fritzsedlazeck/Sniffles/raw/master/annotations/human_GRCh38_no_alt_analysis_set.trf.bed', checkIfExists: true) ] @@ -91,9 +201,7 @@ nextflow_workflow { { assert workflow.out.ch_sv_calls_tbi.get(0).get(1).endsWith("tbi") }, { assert workflow.out.ch_multisample_tbi.get(0).get(1).endsWith("tbi") }, { assert snapshot( - path(workflow.out.ch_sv_calls_vcf.get(0).get(1)).linesGzip[5..239], path(workflow.out.ch_sv_calls_vcf.get(0).get(1)).vcf.variantsMD5, - path(workflow.out.ch_multisample_vcf.get(0).get(1)).linesGzip[5..239], path(workflow.out.ch_multisample_vcf.get(0).get(1)).vcf.variantsMD5, workflow.out.versions, ).match() } @@ -102,7 +210,7 @@ nextflow_workflow { } - test("2 samples - [bam, bai], fasta, fai, []") { + test("2 samples - [bam, bai], fasta, fai, [] - severus") { when { workflow { @@ -121,7 +229,8 @@ nextflow_workflow { ) input[1] = GUNZIP.out.gunzip input[2] = SAMTOOLS_FAIDX.out.fai - input[3] = [[],[]] + input[3] = "severus" + input[4] = [[],[]] """ } } @@ -133,10 +242,8 @@ nextflow_workflow { { assert workflow.out.ch_sv_calls_tbi.get(1).get(1).endsWith("tbi") }, { assert workflow.out.ch_multisample_tbi.get(0).get(1).endsWith("tbi") }, { assert snapshot( - path(workflow.out.ch_sv_calls_vcf.get(0).get(1)).linesGzip[5..239], workflow.out.ch_sv_calls_vcf.collect { file(it[1]).name }.sort().toString(), // don't know the order of the output VCFs - path(workflow.out.ch_sv_calls_vcf.get(1).get(1)).linesGzip[5..239], - path(workflow.out.ch_multisample_vcf.get(0).get(1)).linesGzip[5..239], + path(workflow.out.ch_multisample_vcf.get(0).get(1)).vcf.variantsMD5, workflow.out.versions, ).match() } ) @@ -144,21 +251,22 @@ nextflow_workflow { } - test("1 sample - [bam, bai], fasta, fai, [] -stub") { + test("1 sample - [bam, bai], fasta, fai, [] - sniffles -stub") { options "-stub" when { workflow { """ - input[0] = [ + input[0] = Channel.of([ [ id:'test', single_end:false, project: 'project' ], // meta map file(params.pipelines_testdata_base_path + 'nallo/testdata/HG002_PacBio_Revio.bam', checkIfExists: true), file(params.pipelines_testdata_base_path + 'nallo/testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) - ] + ]) input[1] = GUNZIP.out.gunzip input[2] = SAMTOOLS_FAIDX.out.fai - input[3] = [[],[]] + input[3] = "sniffles" + input[4] = [[],[]] """ } } @@ -172,21 +280,125 @@ nextflow_workflow { } - test("1 sample - [bam, bai], fasta, fai, bed -stub") { + test("1 sample - [bam, bai], fasta, fai, bed - sniffles -stub") { options "-stub" when { workflow { """ - input[0] = [ + input[0] = Channel.of([ [ id:'test', single_end:false, project: 'project' ], // meta map file(params.pipelines_testdata_base_path + 'nallo/testdata/HG002_PacBio_Revio.bam', checkIfExists: true), file(params.pipelines_testdata_base_path + 'nallo/testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) + ]) + input[1] = GUNZIP.out.gunzip + input[2] = SAMTOOLS_FAIDX.out.fai + input[3] = "sniffles" + input[4] = [ + [ id:'trf' ], + file('https://github.com/fritzsedlazeck/Sniffles/raw/master/annotations/human_GRCh38_no_alt_analysis_set.trf.bed', checkIfExists: true) ] + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out).match() } + ) + } + + } + + test("2 samples - [bam, bai], fasta, fai, [] - sniffles -stub") { + + options "-stub" + + when { + workflow { + """ + input[0] = Channel.of( + [ + [ id:'test_1', single_end:false, project: 'project' ], // meta map + file(params.pipelines_testdata_base_path + 'nallo/testdata/HG002_PacBio_Revio.bam', checkIfExists: true), + file(params.pipelines_testdata_base_path + 'nallo/testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) + ], + [ + [ id:'test_2', single_end:false, project: 'project' ], // meta map + file(params.pipelines_testdata_base_path + 'nallo/testdata/HG002_ONT.bam', checkIfExists: true), + file(params.pipelines_testdata_base_path + 'nallo/testdata/HG002_ONT.bam.bai', checkIfExists: true) + ] + ) + input[1] = GUNZIP.out.gunzip + input[2] = SAMTOOLS_FAIDX.out.fai + input[3] = "sniffles" + input[4] = [[],[]] + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot( + workflow.out.ch_sv_calls_vcf.collect { file(it[1]).name }.sort().toString(), // don't know the order of the output VCFs + workflow.out.ch_sv_calls_tbi, + workflow.out.ch_multisample_vcf, + workflow.out.ch_multisample_tbi, + workflow.out.versions, + ).match() } + ) + } + + } + + test("1 sample - [bam, bai], fasta, fai, [] - severus -stub") { + + options "-stub" + + when { + workflow { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false, project: 'project' ], // meta map + file(params.pipelines_testdata_base_path + 'nallo/testdata/HG002_PacBio_Revio.bam', checkIfExists: true), + file(params.pipelines_testdata_base_path + 'nallo/testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) + ]) + input[1] = GUNZIP.out.gunzip + input[2] = SAMTOOLS_FAIDX.out.fai + input[3] = "severus" + input[4] = [[],[]] + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out).match() } + ) + } + + } + + test("1 sample - [bam, bai], fasta, fai, bed - severus -stub") { + + options "-stub" + + when { + workflow { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false, project: 'project' ], // meta map + file(params.pipelines_testdata_base_path + 'nallo/testdata/HG002_PacBio_Revio.bam', checkIfExists: true), + file(params.pipelines_testdata_base_path + 'nallo/testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) + ]) input[1] = GUNZIP.out.gunzip input[2] = SAMTOOLS_FAIDX.out.fai - input[3] = [ + input[3] = "severus" + input[4] = [ [ id:'trf' ], file('https://github.com/fritzsedlazeck/Sniffles/raw/master/annotations/human_GRCh38_no_alt_analysis_set.trf.bed', checkIfExists: true) ] @@ -203,7 +415,7 @@ nextflow_workflow { } - test("2 samples - [bam, bai], fasta, fai, [] -stub") { + test("2 samples - [bam, bai], fasta, fai, [] - severus -stub") { options "-stub" @@ -224,7 +436,8 @@ nextflow_workflow { ) input[1] = GUNZIP.out.gunzip input[2] = SAMTOOLS_FAIDX.out.fai - input[3] = [[],[]] + input[3] = "severus" + input[4] = [[],[]] """ } } diff --git a/subworkflows/local/call_svs/tests/main.nf.test.snap b/subworkflows/local/call_svs/tests/main.nf.test.snap index ca2b770d..34827cab 100644 --- a/subworkflows/local/call_svs/tests/main.nf.test.snap +++ b/subworkflows/local/call_svs/tests/main.nf.test.snap @@ -1,735 +1,211 @@ { - "2 samples - [bam, bai], fasta, fai, []": { + "1 sample - [bam, bai], fasta, fai, [] - severus": { "content": [ + "6b4c36ae3f600ed639387a6d9ee54452", + "6b4c36ae3f600ed639387a6d9ee54452", [ - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##ALT=", - "##ALT=", - "##ALT=", - "##ALT=", - "##ALT=", - "##FORMAT=", - "##FORMAT=", - "##FORMAT=", - "##FORMAT=", - "##FORMAT=", - "##FILTER=", - "##FILTER=", - "##FILTER=", - "##FILTER=", - "##FILTER=", - "##FILTER=", - "##FILTER=", - "##FILTER=", - "##FILTER=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##bcftools_viewVersion=1.20+htslib-1.20" - ], + "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", + "versions.yml:md5,572bfd042014333af194207291d12b95", + "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-09-12T13:09:21.357537424" + }, + "1 sample - [bam, bai], fasta, fai, [] - sniffles": { + "content": [ + "79676a9dd690e37560b5841b67dfa28", + "bd51c062a29bbb8823a17b95f8162f44", + [ + "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", + "versions.yml:md5,572bfd042014333af194207291d12b95", + "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", + "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-09-12T13:08:30.682028353" + }, + "1 sample - [bam, bai], fasta, fai, bed - severus": { + "content": [ + "1d8aa4e3b8e426fa7d0d60f33461ea35", + "1d8aa4e3b8e426fa7d0d60f33461ea35", + [ + "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", + "versions.yml:md5,572bfd042014333af194207291d12b95", + "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-09-12T13:09:38.468898989" + }, + "1 sample - [bam, bai], fasta, fai, [] - severus -stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false, + "project": "project" + }, + "test_reheader.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false, + "project": "project" + }, + "test_reheader.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "project" + }, + "project.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "3": [ + [ + { + "id": "project" + }, + "project.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", + "versions.yml:md5,572bfd042014333af194207291d12b95", + "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f" + ], + "ch_multisample_tbi": [ + [ + { + "id": "project" + }, + "project.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "ch_multisample_vcf": [ + [ + { + "id": "project" + }, + "project.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "ch_sv_calls_tbi": [ + [ + { + "id": "test", + "single_end": false, + "project": "project" + }, + "test_reheader.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "ch_sv_calls_vcf": [ + [ + { + "id": "test", + "single_end": false, + "project": "project" + }, + "test_reheader.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", + "versions.yml:md5,572bfd042014333af194207291d12b95", + "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-09-12T13:11:21.993379468" + }, + "2 samples - [bam, bai], fasta, fai, [] - sniffles -stub": { + "content": [ "[test_1_reheader.vcf.gz, test_2_reheader.vcf.gz]", [ - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##ALT=", - "##ALT=", - "##ALT=", - "##ALT=", - "##ALT=", - "##FORMAT=", - "##FORMAT=", - "##FORMAT=", - "##FORMAT=", - "##FORMAT=", - "##FILTER=", - "##FILTER=", - "##FILTER=", - "##FILTER=", - "##FILTER=", - "##FILTER=", - "##FILTER=", - "##FILTER=", - "##FILTER=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##bcftools_viewVersion=1.20+htslib-1.20" + [ + { + "id": "test_1", + "single_end": false, + "project": "project" + }, + "test_1_reheader.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "test_2", + "single_end": false, + "project": "project" + }, + "test_2_reheader.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] ], [ - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##ALT=", - "##ALT=", - "##ALT=", - "##ALT=", - "##ALT=", - "##FORMAT=", - "##FORMAT=", - "##FORMAT=", - "##FORMAT=", - "##FORMAT=", - "##FILTER=", - "##FILTER=", - "##FILTER=", - "##FILTER=", - "##FILTER=", - "##FILTER=", - "##FILTER=", - "##FILTER=", - "##FILTER=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##bcftools_viewVersion=1.20+htslib-1.20" + [ + { + "id": "project" + }, + "project.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + [ + [ + { + "id": "project" + }, + "project.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] ], [ - "versions.yml:md5,2188f00d20a376929f9f35f824e94667", - "versions.yml:md5,2188f00d20a376929f9f35f824e94667", + "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", + "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,572bfd042014333af194207291d12b95", "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", - "versions.yml:md5,ebb9b3d0bcc3aae3f54dfebd041e5cff", - "versions.yml:md5,ebb9b3d0bcc3aae3f54dfebd041e5cff" + "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff" ] ], "meta": { - "nf-test": "0.8.4", + "nf-test": "0.9.0", "nextflow": "24.04.3" }, - "timestamp": "2024-09-12T12:13:14.38085716" + "timestamp": "2024-09-12T13:11:09.349950761" }, - "1 sample - [bam, bai], fasta, fai, [] -stub": { + "1 sample - [bam, bai], fasta, fai, bed - severus -stub": { "content": [ { "0": [ @@ -769,10 +245,11 @@ ] ], "4": [ - "versions.yml:md5,2188f00d20a376929f9f35f824e94667", + "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,572bfd042014333af194207291d12b95", - "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", - "versions.yml:md5,ebb9b3d0bcc3aae3f54dfebd041e5cff" + "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f" ], "ch_multisample_tbi": [ [ @@ -811,20 +288,21 @@ ] ], "versions": [ - "versions.yml:md5,2188f00d20a376929f9f35f824e94667", + "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,572bfd042014333af194207291d12b95", - "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", - "versions.yml:md5,ebb9b3d0bcc3aae3f54dfebd041e5cff" + "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f" ] } ], "meta": { - "nf-test": "0.8.4", + "nf-test": "0.9.0", "nextflow": "24.04.3" }, - "timestamp": "2024-09-12T12:37:08.560198215" + "timestamp": "2024-09-12T13:11:34.658161748" }, - "1 sample - [bam, bai], fasta, fai, bed -stub": { + "1 sample - [bam, bai], fasta, fai, [] - sniffles -stub": { "content": [ { "0": [ @@ -864,10 +342,11 @@ ] ], "4": [ - "versions.yml:md5,2188f00d20a376929f9f35f824e94667", + "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,572bfd042014333af194207291d12b95", "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", - "versions.yml:md5,ebb9b3d0bcc3aae3f54dfebd041e5cff" + "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff" ], "ch_multisample_tbi": [ [ @@ -906,511 +385,21 @@ ] ], "versions": [ - "versions.yml:md5,2188f00d20a376929f9f35f824e94667", + "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,572bfd042014333af194207291d12b95", "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", - "versions.yml:md5,ebb9b3d0bcc3aae3f54dfebd041e5cff" + "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.3" - }, - "timestamp": "2024-09-12T12:37:19.687620805" - }, - "1 sample - [bam, bai], fasta, fai, bed": { - "content": [ - [ - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##ALT=", - "##ALT=", - "##ALT=", - "##ALT=", - "##ALT=", - "##FORMAT=", - "##FORMAT=", - "##FORMAT=", - "##FORMAT=", - "##FORMAT=", - "##FILTER=", - "##FILTER=", - "##FILTER=", - "##FILTER=", - "##FILTER=", - "##FILTER=", - "##FILTER=", - "##FILTER=", - "##FILTER=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##bcftools_viewVersion=1.20+htslib-1.20" - ], - "5924013e8c1835d7bb0502ee85f2128d", - [ - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##ALT=", - "##ALT=", - "##ALT=", - "##ALT=", - "##ALT=", - "##FORMAT=", - "##FORMAT=", - "##FORMAT=", - "##FORMAT=", - "##FORMAT=", - "##FILTER=", - "##FILTER=", - "##FILTER=", - "##FILTER=", - "##FILTER=", - "##FILTER=", - "##FILTER=", - "##FILTER=", - "##FILTER=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##bcftools_viewVersion=1.20+htslib-1.20" - ], - "8df5ad12540b4e0982bb74d5b268795d", - [ - "versions.yml:md5,2188f00d20a376929f9f35f824e94667", - "versions.yml:md5,572bfd042014333af194207291d12b95", - "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", - "versions.yml:md5,ebb9b3d0bcc3aae3f54dfebd041e5cff" - ] - ], - "meta": { - "nf-test": "0.8.4", + "nf-test": "0.9.0", "nextflow": "24.04.3" }, - "timestamp": "2024-09-12T12:12:58.045416708" + "timestamp": "2024-09-12T13:10:42.63417504" }, - "2 samples - [bam, bai], fasta, fai, [] -stub": { + "2 samples - [bam, bai], fasta, fai, [] - severus -stub": { "content": [ "[test_1_reheader.vcf.gz, test_2_reheader.vcf.gz]", [ @@ -1448,510 +437,180 @@ ] ], [ - "versions.yml:md5,2188f00d20a376929f9f35f824e94667", - "versions.yml:md5,2188f00d20a376929f9f35f824e94667", + "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", + "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,572bfd042014333af194207291d12b95", - "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", - "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", - "versions.yml:md5,ebb9b3d0bcc3aae3f54dfebd041e5cff", - "versions.yml:md5,ebb9b3d0bcc3aae3f54dfebd041e5cff" + "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f", + "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f" ] ], "meta": { - "nf-test": "0.8.4", + "nf-test": "0.9.0", "nextflow": "24.04.3" }, - "timestamp": "2024-09-12T12:13:55.632583291" + "timestamp": "2024-09-12T13:11:48.061780325" }, - "1 sample - [bam, bai], fasta, fai, []": { + "1 sample - [bam, bai], fasta, fai, bed - sniffles": { "content": [ + "5924013e8c1835d7bb0502ee85f2128d", + "8df5ad12540b4e0982bb74d5b268795d", [ - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##ALT=", - "##ALT=", - "##ALT=", - "##ALT=", - "##ALT=", - "##FORMAT=", - "##FORMAT=", - "##FORMAT=", - "##FORMAT=", - "##FORMAT=", - "##FILTER=", - "##FILTER=", - "##FILTER=", - "##FILTER=", - "##FILTER=", - "##FILTER=", - "##FILTER=", - "##FILTER=", - "##FILTER=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##bcftools_viewVersion=1.20+htslib-1.20" - ], - "79676a9dd690e37560b5841b67dfa28", - [ - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##contig=", - "##ALT=", - "##ALT=", - "##ALT=", - "##ALT=", - "##ALT=", - "##FORMAT=", - "##FORMAT=", - "##FORMAT=", - "##FORMAT=", - "##FORMAT=", - "##FILTER=", - "##FILTER=", - "##FILTER=", - "##FILTER=", - "##FILTER=", - "##FILTER=", - "##FILTER=", - "##FILTER=", - "##FILTER=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##INFO=", - "##bcftools_viewVersion=1.20+htslib-1.20" - ], - "bd51c062a29bbb8823a17b95f8162f44", + "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", + "versions.yml:md5,572bfd042014333af194207291d12b95", + "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", + "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-09-12T13:08:45.725643722" + }, + "2 samples - [bam, bai], fasta, fai, [] - sniffles": { + "content": [ + "[test_1_reheader.vcf.gz, test_2_reheader.vcf.gz]", + "9dec8b02821fe7c6e9e1451594088d3", [ - "versions.yml:md5,2188f00d20a376929f9f35f824e94667", + "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", + "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,572bfd042014333af194207291d12b95", "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", - "versions.yml:md5,ebb9b3d0bcc3aae3f54dfebd041e5cff" + "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", + "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-09-12T13:09:04.904080877" + }, + "1 sample - [bam, bai], fasta, fai, bed - sniffles -stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false, + "project": "project" + }, + "test_reheader.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false, + "project": "project" + }, + "test_reheader.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "project" + }, + "project.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "3": [ + [ + { + "id": "project" + }, + "project.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", + "versions.yml:md5,572bfd042014333af194207291d12b95", + "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", + "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff" + ], + "ch_multisample_tbi": [ + [ + { + "id": "project" + }, + "project.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "ch_multisample_vcf": [ + [ + { + "id": "project" + }, + "project.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "ch_sv_calls_tbi": [ + [ + { + "id": "test", + "single_end": false, + "project": "project" + }, + "test_reheader.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "ch_sv_calls_vcf": [ + [ + { + "id": "test", + "single_end": false, + "project": "project" + }, + "test_reheader.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", + "versions.yml:md5,572bfd042014333af194207291d12b95", + "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", + "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-09-12T13:10:55.65013051" + }, + "2 samples - [bam, bai], fasta, fai, [] - severus": { + "content": [ + "[test_1_reheader.vcf.gz, test_2_reheader.vcf.gz]", + "dd4a1ae139aeea9f4e26364eaa14cfb5", + [ + "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", + "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", + "versions.yml:md5,572bfd042014333af194207291d12b95", + "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f", + "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f" ] ], "meta": { - "nf-test": "0.8.4", + "nf-test": "0.9.0", "nextflow": "24.04.3" }, - "timestamp": "2024-09-12T12:12:44.978644444" + "timestamp": "2024-09-12T13:10:29.795213327" } -} +} \ No newline at end of file diff --git a/subworkflows/local/call_svs/tests/nextflow.config b/subworkflows/local/call_svs/tests/nextflow.config index bcbf4f7d..e1f6db79 100644 --- a/subworkflows/local/call_svs/tests/nextflow.config +++ b/subworkflows/local/call_svs/tests/nextflow.config @@ -3,7 +3,15 @@ process { ext.args = '--force-single --output-type z --no-version --write-index=tbi' } - withName: 'REHEADER_SNIFFLES' { + withName: 'BCFTOOLS_QUERY' { + ext.args = '--list-samples' + } + + withName: 'CREATE_SAMPLES_FILE' { + ext.prefix = { "${meta.id}_samples_file" } + } + + withName: 'BCFTOOLS_REHEADER' { ext.prefix = { "${meta.id}_reheader" } ext.args2 = '--output-type z --write-index=tbi' } diff --git a/subworkflows/local/utils_nfcore_nallo_pipeline/main.nf b/subworkflows/local/utils_nfcore_nallo_pipeline/main.nf index c1a257d8..7711da7f 100644 --- a/subworkflows/local/utils_nfcore_nallo_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_nallo_pipeline/main.nf @@ -323,6 +323,7 @@ def toolCitationText() { "SAMtools (Danecek et al. 2021)", "Minimap2 (Li 2018)", "Somalier (Pedersen et al. 2020)", + "Severus (Keskus et al. 2024)", "Sniffles2 (Smolka et al. 2024)", ] if (!params.skip_qc) { @@ -447,6 +448,7 @@ def toolBibliographyText() { "
  • Heng Li, Minimap2: pairwise alignment for nucleotide sequences, Bioinformatics, Volume 34, Issue 18, September 2018, Pages 3094–3100, https://doi.org/10.1093/bioinformatics/bty191
  • ", "
  • Pedersen BS, Quinlan AR. Mosdepth: quick coverage calculation for genomes and exomes. Hancock J, ed. Bioinformatics. 2018;34(5):867-868. doi:10.1093/bioinformatics/btx699
  • ", "
  • Genome-wide profiling of highly similar paralogous genes using HiFi sequencing. Xiao Chen, Daniel Baker, Egor Dolzhenko, Joseph M Devaney, Jessica Noya, April S Berlyoung, Rhonda Brandon, Kathleen S Hruska, Lucas Lochovsky, Paul Kruszka, Scott Newman, Emily Farrow, Isabelle Thiffault, Tomi Pastinen, Dalia Kasperaviciute, Christian Gilissen, Lisenka Vissers, Alexander Hoischen, Seth Berger, Eric Vilain, Emmanuèle Délot, UCI Genomics Research to Elucidate the Genetics of Rare Diseases (UCI GREGoR) Consortium, Michael A Eberle. bioRxiv 2024.04.19.590294; doi: https://doi.org/10.1101/2024.04.19.590294
  • ", + "
  • Ayse Keskus, Asher Bryant, Tanveer Ahmad, Byunggil Yoo, Sergey Aganezov, Anton Goretsky, Ataberk Donmez, Lisa A. Lansdon, Isabel Rodriguez, Jimin Park, Yuelin Liu, Xiwen Cui, Joshua Gardner, Brandy McNulty, Samuel Sacco, Jyoti Shetty, Yongmei Zhao, Bao Tran, Giuseppe Narzisi, Adrienne Helland, Daniel E. Cook, Pi-Chuan Chang, Alexey Kolesnikov, Andrew Carroll, Erin K. Molloy, Irina Pushel, Erin Guest, Tomi Pastinen, Kishwar Shafin, Karen H. Miga, Salem Malikic, Chi-Ping Day, Nicolas Robine, Cenk Sahinalp, Michael Dean, Midhat S. Farooqi, Benedict Paten, Mikhail Kolmogorov. Severus: accurate detection and characterization of somatic structural variation in tumor genomes using long reads. medRxiv 2024.03.22.24304756; doi: https://doi.org/10.1101/2024.03.22.24304756", "
  • Smolka, M., Paulin, L.F., Grochowski, C.M. et al. Detection of mosaic and population-level structural variants with Sniffles2. Nat Biotechnol (2024). https://doi.org/10.1038/s41587-023-02024-y
  • ", "
  • Pedersen, B.S., Bhetariya, P.J., Brown, J. et al. Somalier: rapid relatedness estimation for cancer and germline studies using efficient genome sketches. Genome Med 12, 62 (2020). https://doi.org/10.1186/s13073-020-00761-2
  • ", "
  • Nilsson D, Magnusson M. moonso/stranger v0.7.1. Published online February 18, 2021. doi:10.5281/ZENODO.4548873
  • ", diff --git a/tests/main.nf.test b/tests/main.nf.test index c701951a..975ebbbf 100644 --- a/tests/main.nf.test +++ b/tests/main.nf.test @@ -109,8 +109,8 @@ nextflow_pipeline { { assert new File("$outputDir/repeat_calling/trgt/single_sample/HG002_Revio/HG002_Revio_spanning_sorted.bam.bai").exists() }, { assert new File("$outputDir/snvs/single_sample/HG002_Revio/HG002_Revio_snv_annotated_ranked.vcf.gz").exists() }, { assert new File("$outputDir/snvs/single_sample/HG002_Revio/HG002_Revio_snv_annotated_ranked.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/svs/single_sample/HG002_Revio/HG002_Revio_sniffles.vcf.gz").exists() }, - { assert new File("$outputDir/svs/single_sample/HG002_Revio/HG002_Revio_sniffles.vcf.gz.tbi").exists() } + { assert new File("$outputDir/svs/single_sample/HG002_Revio/HG002_Revio_severus.vcf.gz").exists() }, + { assert new File("$outputDir/svs/single_sample/HG002_Revio/HG002_Revio_severus.vcf.gz.tbi").exists() } ) } } @@ -255,8 +255,8 @@ nextflow_pipeline { { assert new File("$outputDir/repeat_calling/trgt/single_sample/HG002_Revio_A/HG002_Revio_A_spanning_sorted.bam.bai").exists() }, { assert new File("$outputDir/snvs/single_sample/HG002_Revio_A/HG002_Revio_A_snv_annotated_ranked.vcf.gz").exists() }, { assert new File("$outputDir/snvs/single_sample/HG002_Revio_A/HG002_Revio_A_snv_annotated_ranked.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/svs/single_sample/HG002_Revio_A/HG002_Revio_A_sniffles.vcf.gz").exists() }, - { assert new File("$outputDir/svs/single_sample/HG002_Revio_A/HG002_Revio_A_sniffles.vcf.gz.tbi").exists() }, + { assert new File("$outputDir/svs/single_sample/HG002_Revio_A/HG002_Revio_A_severus.vcf.gz").exists() }, + { assert new File("$outputDir/svs/single_sample/HG002_Revio_A/HG002_Revio_A_severus.vcf.gz.tbi").exists() }, // Assert exists HG002_Revio_B { assert new File("$outputDir/aligned_reads/HG002_Revio_B/HG002_Revio_B_phased.bam.bai").exists() }, { assert new File("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap1.bam.bai").exists() }, @@ -288,8 +288,8 @@ nextflow_pipeline { { assert new File("$outputDir/repeat_calling/trgt/single_sample/HG002_Revio_B/HG002_Revio_B_spanning_sorted.bam.bai").exists() }, { assert new File("$outputDir/snvs/single_sample/HG002_Revio_B/HG002_Revio_B_snv_annotated_ranked.vcf.gz").exists() }, { assert new File("$outputDir/snvs/single_sample/HG002_Revio_B/HG002_Revio_B_snv_annotated_ranked.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/svs/single_sample/HG002_Revio_B/HG002_Revio_B_sniffles.vcf.gz").exists() }, - { assert new File("$outputDir/svs/single_sample/HG002_Revio_B/HG002_Revio_B_sniffles.vcf.gz.tbi").exists() } + { assert new File("$outputDir/svs/single_sample/HG002_Revio_B/HG002_Revio_B_severus.vcf.gz").exists() }, + { assert new File("$outputDir/svs/single_sample/HG002_Revio_B/HG002_Revio_B_severus.vcf.gz.tbi").exists() } ) } } @@ -392,8 +392,8 @@ nextflow_pipeline { { assert new File("$outputDir/qc/fastqc/HG002_ONT_A/HG002_ONT_A_fastqc.zip").exists() }, { assert new File("$outputDir/snvs/single_sample/HG002_ONT_A/HG002_ONT_A_snv_annotated_ranked.vcf.gz").exists() }, { assert new File("$outputDir/snvs/single_sample/HG002_ONT_A/HG002_ONT_A_snv_annotated_ranked.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/svs/single_sample/HG002_ONT_A/HG002_ONT_A_sniffles.vcf.gz").exists() }, - { assert new File("$outputDir/svs/single_sample/HG002_ONT_A/HG002_ONT_A_sniffles.vcf.gz.tbi").exists() }, + { assert new File("$outputDir/svs/single_sample/HG002_ONT_A/HG002_ONT_A_severus.vcf.gz").exists() }, + { assert new File("$outputDir/svs/single_sample/HG002_ONT_A/HG002_ONT_A_severus.vcf.gz.tbi").exists() }, // Assert exists HG002_ONT_B { assert new File("$outputDir/aligned_reads/HG002_ONT_B/HG002_ONT_B_phased.bam.bai").exists() }, { assert new File("$outputDir/cnv_calling/hificnv/HG002_ONT_B/HG002_ONT_B.log").exists() }, @@ -418,8 +418,8 @@ nextflow_pipeline { { assert new File("$outputDir/qc/fastqc/HG002_ONT_B/HG002_ONT_B_fastqc.zip").exists() }, { assert new File("$outputDir/snvs/single_sample/HG002_ONT_B/HG002_ONT_B_snv_annotated_ranked.vcf.gz").exists() }, { assert new File("$outputDir/snvs/single_sample/HG002_ONT_B/HG002_ONT_B_snv_annotated_ranked.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/svs/single_sample/HG002_ONT_B/HG002_ONT_B_sniffles.vcf.gz").exists() }, - { assert new File("$outputDir/svs/single_sample/HG002_ONT_B/HG002_ONT_B_sniffles.vcf.gz.tbi").exists() } + { assert new File("$outputDir/svs/single_sample/HG002_ONT_B/HG002_ONT_B_severus.vcf.gz").exists() }, + { assert new File("$outputDir/svs/single_sample/HG002_ONT_B/HG002_ONT_B_severus.vcf.gz.tbi").exists() } ) } } diff --git a/workflows/nallo.nf b/workflows/nallo.nf index e2700f50..88b64591 100644 --- a/workflows/nallo.nf +++ b/workflows/nallo.nf @@ -300,7 +300,13 @@ workflow NALLO { // // Call structural variants // - CALL_SVS ( bam_bai, fasta, fai, ch_tandem_repeats ) + CALL_SVS ( + bam_bai, + fasta, + fai, + params.sv_caller, + ch_tandem_repeats + ) ch_versions = ch_versions.mix(CALL_SVS.out.versions) // From 29024361098d0554471a09d8599923a26504b6de Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Tue, 17 Sep 2024 16:30:32 +0200 Subject: [PATCH 014/106] Add found_in tag (#371) --- CHANGELOG.md | 1 + conf/modules/call_svs.config | 8 ++ .../local/add_found_in_tag/environment.yml | 7 ++ modules/local/add_found_in_tag/main.nf | 93 +++++++++++++++++++ .../local/add_found_in_tag/tests/main.nf.test | 66 +++++++++++++ .../add_found_in_tag/tests/main.nf.test.snap | 62 +++++++++++++ modules/local/add_found_in_tag/tests/tags.yml | 2 + subworkflows/local/call_svs/main.nf | 12 ++- .../local/call_svs/tests/main.nf.test | 2 +- .../local/call_svs/tests/main.nf.test.snap | 64 ++++++++----- .../local/call_svs/tests/nextflow.config | 5 + 11 files changed, 297 insertions(+), 25 deletions(-) create mode 100644 modules/local/add_found_in_tag/environment.yml create mode 100644 modules/local/add_found_in_tag/main.nf create mode 100644 modules/local/add_found_in_tag/tests/main.nf.test create mode 100644 modules/local/add_found_in_tag/tests/main.nf.test.snap create mode 100644 modules/local/add_found_in_tag/tests/tags.yml diff --git a/CHANGELOG.md b/CHANGELOG.md index 8f8aa6de..9b63ec02 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#363](https://github.com/genomic-medicine-sweden/nallo/pull/363) - Added Zenodo link - [#366](https://github.com/genomic-medicine-sweden/nallo/pull/366) - Added sorting of samples when creating PED files, so the output is always the same - [#367](https://github.com/genomic-medicine-sweden/nallo/pull/367) - Added Severus as the default SV caller, together with a `--sv_caller` parameter to choose caller +- [#371](https://github.com/genomic-medicine-sweden/nallo/pull/371) - Added `FOUND_IN=caller` tags to SV output ### `Changed` diff --git a/conf/modules/call_svs.config b/conf/modules/call_svs.config index 7ca7f5cf..9ce86386 100644 --- a/conf/modules/call_svs.config +++ b/conf/modules/call_svs.config @@ -24,6 +24,14 @@ process { ] } + withName: '.*:CALL_SVS:ADD_FOUND_IN_TAG' { + ext.prefix = { "${meta.id}_found_in" } + ext.args = [ + '--output-type b', + '--write-index=csi' + ].join(' ') + } + withName: '.*:CALL_SVS:BCFTOOLS_QUERY' { ext.args = '--list-samples' } diff --git a/modules/local/add_found_in_tag/environment.yml b/modules/local/add_found_in_tag/environment.yml new file mode 100644 index 00000000..a8a985fa --- /dev/null +++ b/modules/local/add_found_in_tag/environment.yml @@ -0,0 +1,7 @@ +name: add_found_in_tag +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::bcftools=1.20 diff --git a/modules/local/add_found_in_tag/main.nf b/modules/local/add_found_in_tag/main.nf new file mode 100644 index 00000000..caf4df21 --- /dev/null +++ b/modules/local/add_found_in_tag/main.nf @@ -0,0 +1,93 @@ +process ADD_FOUND_IN_TAG { + tag "$meta.id" + label 'process_medium' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/bcftools:1.20--h8b25389_0': + 'biocontainers/bcftools:1.20--h8b25389_0' }" + + input: + tuple val(meta), path(vcf), path(index) + val(variant_caller) + + output: + tuple val(meta), path("*.{vcf,vcf.gz,bcf,bcf.gz}"), emit: vcf + tuple val(meta), path("*.tbi") , emit: tbi, optional: true + tuple val(meta), path("*.csi") , emit: csi, optional: true + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def extension = args.contains("--output-type b") || args.contains("-Ob") ? "bcf.gz" : + args.contains("--output-type u") || args.contains("-Ou") ? "bcf" : + args.contains("--output-type z") || args.contains("-Oz") ? "vcf.gz" : + args.contains("--output-type v") || args.contains("-Ov") ? "vcf" : + "vcf" + """ + bcftools view \\ + --threads $task.cpus \\ + $vcf |\\ + awk ' + # Print all existing header lines + /^##/ { + print; + next; + } + + # Add a INFO header line before the #CHROM line, then print the #CHROM line + /^#CHROM/ { + printf("##INFO=\\n"); + print; + next; + } + + # Then for all other lines, append FOUND_IN=variant_caller to the INFO field (column 8) + { + OFS="\\t"; + \$8 = sprintf("%s;FOUND_IN=${variant_caller}", \$8 ); + print; + } + ' |\\ + bcftools view \\ + $args \\ + --threads $task.cpus \\ + --output ${prefix}.${extension} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + bcftools: \$(bcftools --version 2>&1 | head -n1 | sed 's/^.*bcftools //; s/ .*\$//') + gawk: \$(awk -Wversion | sed '1!d; s/.*Awk //; s/,.*//') + END_VERSIONS + """ + + stub: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def extension = args.contains("--output-type b") || args.contains("-Ob") ? "bcf.gz" : + args.contains("--output-type u") || args.contains("-Ou") ? "bcf" : + args.contains("--output-type z") || args.contains("-Oz") ? "vcf.gz" : + args.contains("--output-type v") || args.contains("-Ov") ? "vcf" : + "vcf" + def index = args.contains("--write-index=tbi") || args.contains("-W=tbi") ? "tbi" : + args.contains("--write-index=csi") || args.contains("-W=csi") ? "csi" : + args.contains("--write-index") || args.contains("-W") ? "csi" : + "" + def create_cmd = extension.endsWith(".gz") ? "echo '' | gzip >" : "touch" + def create_index = extension.endsWith(".gz") && index.matches("csi|tbi") ? "touch ${prefix}.${extension}.${index}" : "" + + """ + ${create_cmd} ${prefix}.${extension} + ${create_index} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + bcftools: \$(bcftools --version 2>&1 | head -n1 | sed 's/^.*bcftools //; s/ .*\$//') + gawk: \$(awk -Wversion | sed '1!d; s/.*Awk //; s/,.*//') + END_VERSIONS + """ +} diff --git a/modules/local/add_found_in_tag/tests/main.nf.test b/modules/local/add_found_in_tag/tests/main.nf.test new file mode 100644 index 00000000..02385503 --- /dev/null +++ b/modules/local/add_found_in_tag/tests/main.nf.test @@ -0,0 +1,66 @@ +nextflow_process { + + name "Test Process ADD_FOUND_IN_TAG" + script "../main.nf" + process "ADD_FOUND_IN_TAG" + + tag "modules" + tag "modules_local" + tag "bcftools" + tag "add_found_in_tag" + + test("sarscov2 - [vcf, []], variant_caller") { + + when { + process { + """ + input[0] = [ + [ id:'out', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true) + ] + input[1] = 'variant_caller' + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert file(process.out.vcf.get(0).get(1)).readLines().any { it.contains("FOUND_IN=variant_caller") } }, + { assert snapshot( + path(process.out.vcf.get(0).get(1)).vcf.variantsMD5, + process.out.versions + ).match() } + ) + } + + } + + test("sarscov2 - [vcf, []], variant_caller -stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'out', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true) + ] + input[1] = 'variant_caller' + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} diff --git a/modules/local/add_found_in_tag/tests/main.nf.test.snap b/modules/local/add_found_in_tag/tests/main.nf.test.snap new file mode 100644 index 00000000..4f40e912 --- /dev/null +++ b/modules/local/add_found_in_tag/tests/main.nf.test.snap @@ -0,0 +1,62 @@ +{ + "sarscov2 - [vcf, []], variant_caller": { + "content": [ + "7ce88babfa8801b2a913faf40c6f7edd", + [ + "versions.yml:md5,366aba7250a7ed36b3a0fa4b534ad33d" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-09-17T12:12:10.307079371" + }, + "sarscov2 - [vcf, []], variant_caller -stub": { + "content": [ + { + "0": [ + [ + { + "id": "out", + "single_end": false + }, + "out.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + + ], + "2": [ + + ], + "3": [ + "versions.yml:md5,366aba7250a7ed36b3a0fa4b534ad33d" + ], + "csi": [ + + ], + "tbi": [ + + ], + "vcf": [ + [ + { + "id": "out", + "single_end": false + }, + "out.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,366aba7250a7ed36b3a0fa4b534ad33d" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-09-17T12:13:09.016457424" + } +} \ No newline at end of file diff --git a/modules/local/add_found_in_tag/tests/tags.yml b/modules/local/add_found_in_tag/tests/tags.yml new file mode 100644 index 00000000..9d5792cf --- /dev/null +++ b/modules/local/add_found_in_tag/tests/tags.yml @@ -0,0 +1,2 @@ +add_found_in_tag: + - "modules/local/add_found_in_tag/**" diff --git a/subworkflows/local/call_svs/main.nf b/subworkflows/local/call_svs/main.nf index 49f816e9..49da1ef6 100644 --- a/subworkflows/local/call_svs/main.nf +++ b/subworkflows/local/call_svs/main.nf @@ -1,3 +1,4 @@ +include { ADD_FOUND_IN_TAG } from '../../../modules/local/add_found_in_tag/main' include { BCFTOOLS_MERGE } from '../../../modules/nf-core/bcftools/merge/main' include { BCFTOOLS_QUERY } from '../../../modules/nf-core/bcftools/query/main' include { BCFTOOLS_REHEADER } from '../../../modules/nf-core/bcftools/reheader/main' @@ -44,10 +45,17 @@ workflow CALL_SVS { .set { ch_vcf } } + // Annotate with FOUND_IN tag + ADD_FOUND_IN_TAG ( + ch_vcf.map { meta, vcf -> [ meta, vcf, [] ] }, + sv_caller + ) + ch_versions = ch_versions.mix(ADD_FOUND_IN_TAG.out.versions) + // Get the sample name from the VCF // For Sniffles this is hardcoded as SAMPLE and for Severus it's based on the filename BCFTOOLS_QUERY ( - ch_vcf.map { meta, vcf -> [ meta, vcf, [] ] }, + ADD_FOUND_IN_TAG.out.vcf.join(ADD_FOUND_IN_TAG.out.csi), [], [], [] @@ -58,7 +66,7 @@ workflow CALL_SVS { CREATE_SAMPLES_FILE ( BCFTOOLS_QUERY.out.output ) ch_versions = ch_versions.mix(CREATE_SAMPLES_FILE.out.versions) - ch_vcf + ADD_FOUND_IN_TAG.out.vcf .join( CREATE_SAMPLES_FILE.out.samples ) .map { meta, vcf, samples -> [ meta, vcf, [], samples ] } .set { ch_bcftools_reheader_in } diff --git a/subworkflows/local/call_svs/tests/main.nf.test b/subworkflows/local/call_svs/tests/main.nf.test index f8a81f66..aa488a9c 100644 --- a/subworkflows/local/call_svs/tests/main.nf.test +++ b/subworkflows/local/call_svs/tests/main.nf.test @@ -142,7 +142,7 @@ nextflow_workflow { } test("1 sample - [bam, bai], fasta, fai, [] - severus") { - tag "x" + when { workflow { """ diff --git a/subworkflows/local/call_svs/tests/main.nf.test.snap b/subworkflows/local/call_svs/tests/main.nf.test.snap index 34827cab..5d47a551 100644 --- a/subworkflows/local/call_svs/tests/main.nf.test.snap +++ b/subworkflows/local/call_svs/tests/main.nf.test.snap @@ -1,12 +1,13 @@ { "1 sample - [bam, bai], fasta, fai, [] - severus": { "content": [ - "6b4c36ae3f600ed639387a6d9ee54452", - "6b4c36ae3f600ed639387a6d9ee54452", + "1294e2ab468789a0bd56e8bcaf578a4", + "1294e2ab468789a0bd56e8bcaf578a4", [ "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,572bfd042014333af194207291d12b95", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f" ] @@ -15,17 +16,18 @@ "nf-test": "0.9.0", "nextflow": "24.04.3" }, - "timestamp": "2024-09-12T13:09:21.357537424" + "timestamp": "2024-09-17T12:35:49.943901515" }, "1 sample - [bam, bai], fasta, fai, [] - sniffles": { "content": [ - "79676a9dd690e37560b5841b67dfa28", - "bd51c062a29bbb8823a17b95f8162f44", + "7cd0730159250c8945e2007da414651e", + "5db7be988de18b4f14b532043adb367f", [ "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,572bfd042014333af194207291d12b95", "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff" ] ], @@ -33,16 +35,17 @@ "nf-test": "0.9.0", "nextflow": "24.04.3" }, - "timestamp": "2024-09-12T13:08:30.682028353" + "timestamp": "2024-09-17T12:34:57.588634749" }, "1 sample - [bam, bai], fasta, fai, bed - severus": { "content": [ - "1d8aa4e3b8e426fa7d0d60f33461ea35", - "1d8aa4e3b8e426fa7d0d60f33461ea35", + "d64a5438fe54c0239613976f8826897b", + "d64a5438fe54c0239613976f8826897b", [ "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,572bfd042014333af194207291d12b95", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f" ] @@ -51,7 +54,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.3" }, - "timestamp": "2024-09-12T13:09:38.468898989" + "timestamp": "2024-09-17T12:36:09.577048048" }, "1 sample - [bam, bai], fasta, fai, [] - severus -stub": { "content": [ @@ -96,6 +99,7 @@ "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,572bfd042014333af194207291d12b95", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f" ], @@ -139,6 +143,7 @@ "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,572bfd042014333af194207291d12b95", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f" ] @@ -148,7 +153,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.3" }, - "timestamp": "2024-09-12T13:11:21.993379468" + "timestamp": "2024-09-17T13:00:41.241344463" }, "2 samples - [bam, bai], fasta, fai, [] - sniffles -stub": { "content": [ @@ -195,6 +200,8 @@ "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", + "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff" ] @@ -203,7 +210,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.3" }, - "timestamp": "2024-09-12T13:11:09.349950761" + "timestamp": "2024-09-17T13:00:27.793986704" }, "1 sample - [bam, bai], fasta, fai, bed - severus -stub": { "content": [ @@ -248,6 +255,7 @@ "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,572bfd042014333af194207291d12b95", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f" ], @@ -291,6 +299,7 @@ "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,572bfd042014333af194207291d12b95", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f" ] @@ -300,7 +309,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.3" }, - "timestamp": "2024-09-12T13:11:34.658161748" + "timestamp": "2024-09-17T13:00:54.535163836" }, "1 sample - [bam, bai], fasta, fai, [] - sniffles -stub": { "content": [ @@ -346,6 +355,7 @@ "versions.yml:md5,572bfd042014333af194207291d12b95", "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff" ], "ch_multisample_tbi": [ @@ -389,6 +399,7 @@ "versions.yml:md5,572bfd042014333af194207291d12b95", "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff" ] } @@ -397,7 +408,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.3" }, - "timestamp": "2024-09-12T13:10:42.63417504" + "timestamp": "2024-09-17T12:59:59.327540921" }, "2 samples - [bam, bai], fasta, fai, [] - severus -stub": { "content": [ @@ -442,6 +453,8 @@ "versions.yml:md5,572bfd042014333af194207291d12b95", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", + "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f", @@ -452,17 +465,18 @@ "nf-test": "0.9.0", "nextflow": "24.04.3" }, - "timestamp": "2024-09-12T13:11:48.061780325" + "timestamp": "2024-09-17T13:01:08.741446388" }, "1 sample - [bam, bai], fasta, fai, bed - sniffles": { "content": [ - "5924013e8c1835d7bb0502ee85f2128d", - "8df5ad12540b4e0982bb74d5b268795d", + "3cb4ba0bf05ab17ef02c4b51e70e4e6e", + "c7e259bedb8c0e4742bf1a5722ac2973", [ "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,572bfd042014333af194207291d12b95", "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff" ] ], @@ -470,12 +484,12 @@ "nf-test": "0.9.0", "nextflow": "24.04.3" }, - "timestamp": "2024-09-12T13:08:45.725643722" + "timestamp": "2024-09-17T12:35:13.337758686" }, "2 samples - [bam, bai], fasta, fai, [] - sniffles": { "content": [ "[test_1_reheader.vcf.gz, test_2_reheader.vcf.gz]", - "9dec8b02821fe7c6e9e1451594088d3", + "86c9d09c440d7d60876ae6b4db8a86ab", [ "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", @@ -484,6 +498,8 @@ "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", + "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff" ] @@ -492,7 +508,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.3" }, - "timestamp": "2024-09-12T13:09:04.904080877" + "timestamp": "2024-09-17T12:35:33.058751753" }, "1 sample - [bam, bai], fasta, fai, bed - sniffles -stub": { "content": [ @@ -538,6 +554,7 @@ "versions.yml:md5,572bfd042014333af194207291d12b95", "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff" ], "ch_multisample_tbi": [ @@ -581,6 +598,7 @@ "versions.yml:md5,572bfd042014333af194207291d12b95", "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff" ] } @@ -589,18 +607,20 @@ "nf-test": "0.9.0", "nextflow": "24.04.3" }, - "timestamp": "2024-09-12T13:10:55.65013051" + "timestamp": "2024-09-17T13:00:13.310974915" }, "2 samples - [bam, bai], fasta, fai, [] - severus": { "content": [ "[test_1_reheader.vcf.gz, test_2_reheader.vcf.gz]", - "dd4a1ae139aeea9f4e26364eaa14cfb5", + "37b9bd8c61a49f47e07db24a911f3cce", [ "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,572bfd042014333af194207291d12b95", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", + "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f", @@ -611,6 +631,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.3" }, - "timestamp": "2024-09-12T13:10:29.795213327" + "timestamp": "2024-09-17T12:37:01.825339869" } } \ No newline at end of file diff --git a/subworkflows/local/call_svs/tests/nextflow.config b/subworkflows/local/call_svs/tests/nextflow.config index e1f6db79..fd7703d9 100644 --- a/subworkflows/local/call_svs/tests/nextflow.config +++ b/subworkflows/local/call_svs/tests/nextflow.config @@ -1,4 +1,9 @@ process { + + withName: 'ADD_FOUND_IN_TAG' { + ext.args = '--output-type b --write-index=csi' + } + withName: 'BCFTOOLS_MERGE' { ext.args = '--force-single --output-type z --no-version --write-index=tbi' } From 7b3f1007a0f29d36b6cb1125608fe8382c1a0ad8 Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Tue, 17 Sep 2024 16:30:48 +0200 Subject: [PATCH 015/106] Sort output SNVs (#370) * Sort output SNVs * Link to issue --- CHANGELOG.md | 2 ++ conf/modules/general.config | 12 +++++++++++- workflows/nallo.nf | 11 ++++++++--- 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9b63ec02..4611e3d7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -37,6 +37,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### `Fixed` +- [#370](https://github.com/genomic-medicine-sweden/nallo/pull/370) - Fixed unsorted variants in SNV outputs ([#362](https://github.com/genomic-medicine-sweden/nallo/issues/362)) + ### Parameters | Old parameter | New parameter | diff --git a/conf/modules/general.config b/conf/modules/general.config index 39edec82..5b64f9ad 100644 --- a/conf/modules/general.config +++ b/conf/modules/general.config @@ -34,9 +34,19 @@ process { } withName: '.*:NALLO:BCFTOOLS_CONCAT' { - ext.prefix = { params.skip_snv_annotation ? "${meta.id}_snv" : (params.skip_rank_variants ? "${meta.id}_snv_annotated" : "${meta.id}_snv_annotated_ranked") } + ext.prefix = { "${meta.id}_concat" } ext.args = { [ '--allow-overlaps', + '--output-type u' + ].join(' ') } + publishDir = [ + enabled: false + ] + } + + withName: '.*:NALLO:BCFTOOLS_SORT' { + ext.prefix = { params.skip_snv_annotation ? "${meta.id}_snv" : (params.skip_rank_variants ? "${meta.id}_snv_annotated" : "${meta.id}_snv_annotated_ranked") } + ext.args = { [ '--output-type z', '--write-index=tbi' ].join(' ') } diff --git a/workflows/nallo.nf b/workflows/nallo.nf index 88b64591..3eecb23d 100644 --- a/workflows/nallo.nf +++ b/workflows/nallo.nf @@ -40,6 +40,7 @@ include { SAMTOOLS_MERGE } from '../modules/nf-core/sam // nf-core include { BCFTOOLS_CONCAT } from '../modules/nf-core/bcftools/concat/main' include { BCFTOOLS_PLUGINSPLIT } from '../modules/nf-core/bcftools/pluginsplit/main' +include { BCFTOOLS_SORT } from '../modules/nf-core/bcftools/sort/main' include { BCFTOOLS_STATS } from '../modules/nf-core/bcftools/stats/main' include { MINIMAP2_ALIGN } from '../modules/nf-core/minimap2/align/main' include { MULTIQC } from '../modules/nf-core/multiqc/main' @@ -408,16 +409,20 @@ workflow NALLO { .groupTuple() .set { ch_bcftools_concat_in } - // Concat into a multisample VCF with all regions and publish + // Concat into a multisample VCF with all regions BCFTOOLS_CONCAT ( ch_bcftools_concat_in ) ch_versions = ch_versions.mix(BCFTOOLS_CONCAT.out.versions) + // Sort and publish + BCFTOOLS_SORT ( BCFTOOLS_CONCAT.out.vcf ) + ch_versions = ch_versions.mix(BCFTOOLS_SORT.out.versions) + // Make an echtvar database of all samples - ECHTVAR_ENCODE ( BCFTOOLS_CONCAT.out.vcf ) + ECHTVAR_ENCODE ( BCFTOOLS_SORT.out.vcf ) ch_versions = ch_versions.mix(ECHTVAR_ENCODE.out.versions) // Split multisample VCF to also publish a VCF per sample - BCFTOOLS_PLUGINSPLIT ( BCFTOOLS_CONCAT.out.vcf.join(BCFTOOLS_CONCAT.out.tbi ), [], [], [], [] ) + BCFTOOLS_PLUGINSPLIT ( BCFTOOLS_SORT.out.vcf.join(BCFTOOLS_SORT.out.tbi ), [], [], [], [] ) ch_versions = ch_versions.mix(BCFTOOLS_PLUGINSPLIT.out.versions) BCFTOOLS_PLUGINSPLIT.out.vcf From c9d3e6b7e389186ac3dbc5b8e38ef45737ffec18 Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Wed, 18 Sep 2024 16:03:21 +0200 Subject: [PATCH 016/106] Remove VEP plugins from test-data (#379) --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4611e3d7..3300a88a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -34,6 +34,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#352](https://github.com/genomic-medicine-sweden/nallo/pull/352) - Removed the fqcrs module - [#356](https://github.com/genomic-medicine-sweden/nallo/pull/356) - Removed filter_vep section from output documentation since it is not in the pipeline +- [#379](https://github.com/genomic-medicine-sweden/nallo/pull/379) - Removed VEP Plugins from testdata ([genomic-medicine-sweden/test-datasets#16](https://github.com/genomic-medicine-sweden/test-datasets/pull/16)) ### `Fixed` From 832847e320cc2701ec4c5462c26542833b0474bb Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Thu, 19 Sep 2024 16:21:45 +0200 Subject: [PATCH 017/106] Fix untar VEP cache (#381) --- .github/workflows/ci.yml | 3 + CHANGELOG.md | 2 + conf/modules/prepare_genome.config | 1 + modules.json | 3 +- modules/nf-core/untar/main.nf | 11 +- modules/nf-core/untar/untar.diff | 39 ++ .../tests/main.nf.test.snap | 600 ++++++++++-------- .../local/snv_annotation/tests/main.nf.test | 1 - .../snv_annotation/tests/main.nf.test.snap | 8 +- .../snv_annotation/tests/nextflow.config | 4 + tests/nextflow.config | 4 + 11 files changed, 402 insertions(+), 274 deletions(-) create mode 100644 modules/nf-core/untar/untar.diff diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9c39a087..d5a7e31f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -10,6 +10,7 @@ on: env: NXF_ANSI_LOG: false + NFTEST_VER: "0.9.0" concurrency: group: "${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}" @@ -48,6 +49,8 @@ jobs: version: "${{ matrix.NXF_VER }}" - uses: nf-core/setup-nf-test@v1 + with: + version: ${{ env.NFTEST_VER }} - uses: actions/setup-python@v4 with: diff --git a/CHANGELOG.md b/CHANGELOG.md index 3300a88a..9758f85b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -29,6 +29,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#352](https://github.com/genomic-medicine-sweden/nallo/pull/352) - Combined `--skip_raw_read_qc` and `--skip_aligned_read_qc` parameters into `--skip_qc` - [#355](https://github.com/genomic-medicine-sweden/nallo/pull/355) - Updated paraphase to compress and index VCFs within the module - [#365](https://github.com/genomic-medicine-sweden/nallo/pull/365) - Changed CI to only use nf-test for pipeline tests +- [#381](https://github.com/genomic-medicine-sweden/nallo/pull/381) - Updated CI nf-test version to 0.9.0 ### `Removed` @@ -39,6 +40,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### `Fixed` - [#370](https://github.com/genomic-medicine-sweden/nallo/pull/370) - Fixed unsorted variants in SNV outputs ([#362](https://github.com/genomic-medicine-sweden/nallo/issues/362)) +- [#381](https://github.com/genomic-medicine-sweden/nallo/pull/381) - Fixed `--vep_cache` not working as expected with tar.gz cache downloaded from VEP, updated testdata in [genomic-medicine-sweden/test-datasets#17](https://github.com/genomic-medicine-sweden/test-datasets/pull/17) ### Parameters diff --git a/conf/modules/prepare_genome.config b/conf/modules/prepare_genome.config index 412d7b75..b29e2ddf 100644 --- a/conf/modules/prepare_genome.config +++ b/conf/modules/prepare_genome.config @@ -32,5 +32,6 @@ process { withName: '.*:PREPARE_GENOME:UNTAR_VEP_CACHE' { ext.when = { (params.vep_cache && params.vep_cache.endsWith("tar.gz")) } + ext.prefix = { "${name}".contains('merged') ? './vep_cache/homo_sapiens_merged/' : './vep_cache/homo_sapiens/' } } } diff --git a/modules.json b/modules.json index ba490985..d03948e8 100644 --- a/modules.json +++ b/modules.json @@ -257,7 +257,8 @@ "untar": { "branch": "master", "git_sha": "4e5f4687318f24ba944a13609d3ea6ebd890737d", - "installed_by": ["modules"] + "installed_by": ["modules"], + "patch": "modules/nf-core/untar/untar.diff" } } }, diff --git a/modules/nf-core/untar/main.nf b/modules/nf-core/untar/main.nf index 9bd8f554..867f56ea 100644 --- a/modules/nf-core/untar/main.nf +++ b/modules/nf-core/untar/main.nf @@ -11,8 +11,8 @@ process UNTAR { tuple val(meta), path(archive) output: - tuple val(meta), path("$prefix"), emit: untar - path "versions.yml" , emit: versions + tuple val(meta), path("$dir"), emit: untar + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when @@ -21,9 +21,9 @@ process UNTAR { def args = task.ext.args ?: '' def args2 = task.ext.args2 ?: '' prefix = task.ext.prefix ?: ( meta.id ? "${meta.id}" : archive.baseName.toString().replaceFirst(/\.tar$/, "")) - + dir = prefix.split('/')[1] """ - mkdir $prefix + mkdir -p $prefix ## Ensures --strip-components only applied when top level of tar contents is a directory ## If just files or multiple directories, place all in prefix @@ -51,8 +51,9 @@ process UNTAR { stub: prefix = task.ext.prefix ?: ( meta.id ? "${meta.id}" : archive.toString().replaceFirst(/\.[^\.]+(.gz)?$/, "")) + dir = prefix.split('/')[1] """ - mkdir ${prefix} + mkdir -p ${prefix} ## Dry-run untaring the archive to get the files and place all in prefix if [[ \$(tar -taf ${archive} | grep -o -P "^.*?\\/" | uniq | wc -l) -eq 1 ]]; then for i in `tar -tf ${archive}`; diff --git a/modules/nf-core/untar/untar.diff b/modules/nf-core/untar/untar.diff new file mode 100644 index 00000000..1f2cf9b4 --- /dev/null +++ b/modules/nf-core/untar/untar.diff @@ -0,0 +1,39 @@ +Changes in module 'nf-core/untar' +--- modules/nf-core/untar/main.nf ++++ modules/nf-core/untar/main.nf +@@ -11,8 +11,8 @@ + tuple val(meta), path(archive) + + output: +- tuple val(meta), path("$prefix"), emit: untar +- path "versions.yml" , emit: versions ++ tuple val(meta), path("$dir"), emit: untar ++ path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when +@@ -21,9 +21,9 @@ + def args = task.ext.args ?: '' + def args2 = task.ext.args2 ?: '' + prefix = task.ext.prefix ?: ( meta.id ? "${meta.id}" : archive.baseName.toString().replaceFirst(/\.tar$/, "")) +- ++ dir = prefix.split('/')[1] + """ +- mkdir $prefix ++ mkdir -p $prefix + + ## Ensures --strip-components only applied when top level of tar contents is a directory + ## If just files or multiple directories, place all in prefix +@@ -51,8 +51,9 @@ + + stub: + prefix = task.ext.prefix ?: ( meta.id ? "${meta.id}" : archive.toString().replaceFirst(/\.[^\.]+(.gz)?$/, "")) ++ dir = prefix.split('/')[1] + """ +- mkdir ${prefix} ++ mkdir -p ${prefix} + ## Dry-run untaring the archive to get the files and place all in prefix + if [[ \$(tar -taf ${archive} | grep -o -P "^.*?\\/" | uniq | wc -l) -eq 1 ]]; then + for i in `tar -tf ${archive}`; + +************************************************************ diff --git a/subworkflows/local/short_variant_calling/tests/main.nf.test.snap b/subworkflows/local/short_variant_calling/tests/main.nf.test.snap index d35e9387..5aa2cc19 100644 --- a/subworkflows/local/short_variant_calling/tests/main.nf.test.snap +++ b/subworkflows/local/short_variant_calling/tests/main.nf.test.snap @@ -1,5 +1,5 @@ { - "1 sample - 1 bed, fasta, fai, bed, []": { + "1 sample - 1 bed, fasta, fai, [], []": { "content": [ { "0": [ @@ -15,6 +15,7 @@ [ { "id": "genome.bed", + "project": null, "contains_affected": false }, "genome.bed_norm_multisample.vcf.gz:md5,56d662f0a527803ae72e40625c01014b" @@ -24,6 +25,7 @@ [ { "id": "genome.bed", + "project": null, "contains_affected": false }, "genome.bed_norm_multisample.vcf.gz.csi:md5,53e24fb59fef3bee6291c474e20200b9" @@ -41,6 +43,7 @@ [ { "id": "genome.bed", + "project": null, "contains_affected": false }, "genome.bed_norm_multisample.vcf.gz:md5,56d662f0a527803ae72e40625c01014b" @@ -50,6 +53,7 @@ [ { "id": "genome.bed", + "project": null, "contains_affected": false }, "genome.bed_norm_multisample.vcf.gz.csi:md5,53e24fb59fef3bee6291c474e20200b9" @@ -75,12 +79,12 @@ } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.3" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-08-13T12:18:48.194341252" + "timestamp": "2024-09-19T14:06:15.287122968" }, - "2 samples - 2 bed, fasta, fai, bed, [] - stub": { + "1 sample - 2 bed, fasta, fai, bed, [] - stub": { "content": [ { "0": [ @@ -90,19 +94,13 @@ "single_end": false }, "test_norm_singlesample.bcf:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - [ - { - "id": "test2", - "single_end": false - }, - "test2_norm_singlesample.bcf:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "1": [ [ { "id": "genome.bed", + "project": null, "contains_affected": false }, "genome.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" @@ -110,6 +108,7 @@ [ { "id": "genome.multi_intervals.bed", + "project": null, "contains_affected": false }, "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" @@ -119,6 +118,7 @@ [ { "id": "genome.bed", + "project": null, "contains_affected": false }, "genome.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" @@ -126,6 +126,7 @@ [ { "id": "genome.multi_intervals.bed", + "project": null, "contains_affected": false }, "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" @@ -136,12 +137,8 @@ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", - "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", @@ -151,6 +148,7 @@ [ { "id": "genome.bed", + "project": null, "contains_affected": false }, "genome.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" @@ -158,6 +156,7 @@ [ { "id": "genome.multi_intervals.bed", + "project": null, "contains_affected": false }, "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" @@ -167,6 +166,7 @@ [ { "id": "genome.bed", + "project": null, "contains_affected": false }, "genome.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" @@ -174,6 +174,7 @@ [ { "id": "genome.multi_intervals.bed", + "project": null, "contains_affected": false }, "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" @@ -186,13 +187,6 @@ "single_end": false }, "test_norm_singlesample.bcf:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - [ - { - "id": "test2", - "single_end": false - }, - "test2_norm_singlesample.bcf:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "versions": [ @@ -200,11 +194,7 @@ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", - "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", - "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", @@ -214,12 +204,12 @@ } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.3" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-08-13T12:38:57.50673848" + "timestamp": "2024-09-19T14:09:04.780658252" }, - "2 samples - 2 bed, fasta, fai, bed, par_bed - stub": { + "1 sample - 1 bed, fasta, fai, bed, []": { "content": [ { "0": [ @@ -228,46 +218,135 @@ "id": "test", "single_end": false }, - "test_norm_singlesample.bcf:md5,d41d8cd98f00b204e9800998ecf8427e" + "test_norm_singlesample.bcf:md5,94d38d8fd3c50a7ede72a080fbd4992c" + ] + ], + "1": [ + [ + { + "id": "genome.bed", + "project": null, + "contains_affected": false + }, + "genome.bed_norm_multisample.vcf.gz:md5,56d662f0a527803ae72e40625c01014b" + ] + ], + "2": [ + [ + { + "id": "genome.bed", + "project": null, + "contains_affected": false + }, + "genome.bed_norm_multisample.vcf.gz.csi:md5,53e24fb59fef3bee6291c474e20200b9" + ] + ], + "3": [ + "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", + "versions.yml:md5,13101c9283d4a82e859574b0a981311c", + "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", + "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", + "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" + ], + "combined_bcf": [ + [ + { + "id": "genome.bed", + "project": null, + "contains_affected": false + }, + "genome.bed_norm_multisample.vcf.gz:md5,56d662f0a527803ae72e40625c01014b" + ] + ], + "combined_csi": [ + [ + { + "id": "genome.bed", + "project": null, + "contains_affected": false + }, + "genome.bed_norm_multisample.vcf.gz.csi:md5,53e24fb59fef3bee6291c474e20200b9" + ] + ], + "snp_calls_vcf": [ + [ + { + "id": "test", + "single_end": false + }, + "test_norm_singlesample.bcf:md5,94d38d8fd3c50a7ede72a080fbd4992c" + ] + ], + "versions": [ + "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", + "versions.yml:md5,13101c9283d4a82e859574b0a981311c", + "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", + "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", + "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-19T14:06:44.174749859" + }, + "2 samples - 2 bed, fasta, fai, bed, par_bed": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test_norm_singlesample.bcf:md5,f978f9f75d4892499156218a300fd246" ], [ { "id": "test2", "single_end": false }, - "test2_norm_singlesample.bcf:md5,d41d8cd98f00b204e9800998ecf8427e" + "test2_norm_singlesample.bcf:md5,562e4ab7cea09c4f296550784e02ca84" ] ], "1": [ [ { "id": "genome.bed", + "project": null, "contains_affected": false }, - "genome.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + "genome.bed_norm_multisample.vcf.gz:md5,ec12cca4d6849a5f47823331c4b9a8f3" ], [ { "id": "genome.multi_intervals.bed", + "project": null, "contains_affected": false }, - "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,ec12cca4d6849a5f47823331c4b9a8f3" ] ], "2": [ [ { "id": "genome.bed", + "project": null, "contains_affected": false }, - "genome.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + "genome.bed_norm_multisample.vcf.gz.csi:md5,12d9802de9b9e071408e526930050626" ], [ { "id": "genome.multi_intervals.bed", + "project": null, "contains_affected": false }, - "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,12d9802de9b9e071408e526930050626" ] ], "3": [ @@ -290,32 +369,36 @@ [ { "id": "genome.bed", + "project": null, "contains_affected": false }, - "genome.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + "genome.bed_norm_multisample.vcf.gz:md5,ec12cca4d6849a5f47823331c4b9a8f3" ], [ { "id": "genome.multi_intervals.bed", + "project": null, "contains_affected": false }, - "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,ec12cca4d6849a5f47823331c4b9a8f3" ] ], "combined_csi": [ [ { "id": "genome.bed", + "project": null, "contains_affected": false }, - "genome.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + "genome.bed_norm_multisample.vcf.gz.csi:md5,12d9802de9b9e071408e526930050626" ], [ { "id": "genome.multi_intervals.bed", + "project": null, "contains_affected": false }, - "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,12d9802de9b9e071408e526930050626" ] ], "snp_calls_vcf": [ @@ -324,14 +407,14 @@ "id": "test", "single_end": false }, - "test_norm_singlesample.bcf:md5,d41d8cd98f00b204e9800998ecf8427e" + "test_norm_singlesample.bcf:md5,f978f9f75d4892499156218a300fd246" ], [ { "id": "test2", "single_end": false }, - "test2_norm_singlesample.bcf:md5,d41d8cd98f00b204e9800998ecf8427e" + "test2_norm_singlesample.bcf:md5,562e4ab7cea09c4f296550784e02ca84" ] ], "versions": [ @@ -353,12 +436,12 @@ } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.3" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-08-13T12:39:09.239296314" + "timestamp": "2024-09-19T14:08:22.570429008" }, - "1 sample - 1 bed, fasta, fai, bed, [] - stub": { + "2 samples - 2 bed, fasta, fai, bed, [] - stub": { "content": [ { "0": [ @@ -368,50 +451,101 @@ "single_end": false }, "test_norm_singlesample.bcf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "test2", + "single_end": false + }, + "test2_norm_singlesample.bcf:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "1": [ [ { "id": "genome.bed", + "project": null, "contains_affected": false }, "genome.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ], + [ + { + "id": "genome.multi_intervals.bed", + "project": null, + "contains_affected": false + }, + "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "2": [ [ { "id": "genome.bed", + "project": null, "contains_affected": false }, "genome.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "genome.multi_intervals.bed", + "project": null, + "contains_affected": false + }, + "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "3": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", + "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", + "versions.yml:md5,13101c9283d4a82e859574b0a981311c", + "versions.yml:md5,13101c9283d4a82e859574b0a981311c", + "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", + "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", + "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", + "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" ], "combined_bcf": [ [ { "id": "genome.bed", + "project": null, "contains_affected": false }, "genome.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ], + [ + { + "id": "genome.multi_intervals.bed", + "project": null, + "contains_affected": false + }, + "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "combined_csi": [ [ { "id": "genome.bed", + "project": null, "contains_affected": false }, "genome.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "genome.multi_intervals.bed", + "project": null, + "contains_affected": false + }, + "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "snp_calls_vcf": [ @@ -421,25 +555,40 @@ "single_end": false }, "test_norm_singlesample.bcf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "test2", + "single_end": false + }, + "test2_norm_singlesample.bcf:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "versions": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", + "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", + "versions.yml:md5,13101c9283d4a82e859574b0a981311c", + "versions.yml:md5,13101c9283d4a82e859574b0a981311c", + "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", + "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", + "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", + "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.3" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-08-13T12:20:26.146017974" + "timestamp": "2024-09-19T14:09:16.982831625" }, - "2 samples - 2 bed, fasta, fai, bed, []": { + "2 samples - 2 bed, fasta, fai, bed, par_bed - stub": { "content": [ { "0": [ @@ -448,46 +597,50 @@ "id": "test", "single_end": false }, - "test_norm_singlesample.bcf:md5,f978f9f75d4892499156218a300fd246" + "test_norm_singlesample.bcf:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ { "id": "test2", "single_end": false }, - "test2_norm_singlesample.bcf:md5,562e4ab7cea09c4f296550784e02ca84" + "test2_norm_singlesample.bcf:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "1": [ [ { "id": "genome.bed", + "project": null, "contains_affected": false }, - "genome.bed_norm_multisample.vcf.gz:md5,ec12cca4d6849a5f47823331c4b9a8f3" + "genome.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ], [ { "id": "genome.multi_intervals.bed", + "project": null, "contains_affected": false }, - "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,ec12cca4d6849a5f47823331c4b9a8f3" + "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "2": [ [ { "id": "genome.bed", + "project": null, "contains_affected": false }, - "genome.bed_norm_multisample.vcf.gz.csi:md5,12d9802de9b9e071408e526930050626" + "genome.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ { "id": "genome.multi_intervals.bed", + "project": null, "contains_affected": false }, - "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,12d9802de9b9e071408e526930050626" + "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "3": [ @@ -510,32 +663,36 @@ [ { "id": "genome.bed", + "project": null, "contains_affected": false }, - "genome.bed_norm_multisample.vcf.gz:md5,ec12cca4d6849a5f47823331c4b9a8f3" + "genome.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ], [ { "id": "genome.multi_intervals.bed", + "project": null, "contains_affected": false }, - "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,ec12cca4d6849a5f47823331c4b9a8f3" + "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "combined_csi": [ [ { "id": "genome.bed", + "project": null, "contains_affected": false }, - "genome.bed_norm_multisample.vcf.gz.csi:md5,12d9802de9b9e071408e526930050626" + "genome.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ { "id": "genome.multi_intervals.bed", + "project": null, "contains_affected": false }, - "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,12d9802de9b9e071408e526930050626" + "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "snp_calls_vcf": [ @@ -544,14 +701,14 @@ "id": "test", "single_end": false }, - "test_norm_singlesample.bcf:md5,f978f9f75d4892499156218a300fd246" + "test_norm_singlesample.bcf:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ { "id": "test2", "single_end": false }, - "test2_norm_singlesample.bcf:md5,562e4ab7cea09c4f296550784e02ca84" + "test2_norm_singlesample.bcf:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "versions": [ @@ -573,12 +730,12 @@ } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.3" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-08-13T12:37:29.720749753" + "timestamp": "2024-09-19T14:09:29.288580006" }, - "1 sample - 1 bed, fasta, fai, [], []": { + "1 sample - 1 bed, fasta, fai, bed, [] - stub": { "content": [ { "0": [ @@ -587,25 +744,27 @@ "id": "test", "single_end": false }, - "test_norm_singlesample.bcf:md5,94d38d8fd3c50a7ede72a080fbd4992c" + "test_norm_singlesample.bcf:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "1": [ [ { "id": "genome.bed", + "project": null, "contains_affected": false }, - "genome.bed_norm_multisample.vcf.gz:md5,56d662f0a527803ae72e40625c01014b" + "genome.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "2": [ [ { "id": "genome.bed", + "project": null, "contains_affected": false }, - "genome.bed_norm_multisample.vcf.gz.csi:md5,53e24fb59fef3bee6291c474e20200b9" + "genome.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "3": [ @@ -620,18 +779,20 @@ [ { "id": "genome.bed", + "project": null, "contains_affected": false }, - "genome.bed_norm_multisample.vcf.gz:md5,56d662f0a527803ae72e40625c01014b" + "genome.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "combined_csi": [ [ { "id": "genome.bed", + "project": null, "contains_affected": false }, - "genome.bed_norm_multisample.vcf.gz.csi:md5,53e24fb59fef3bee6291c474e20200b9" + "genome.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "snp_calls_vcf": [ @@ -640,7 +801,7 @@ "id": "test", "single_end": false }, - "test_norm_singlesample.bcf:md5,94d38d8fd3c50a7ede72a080fbd4992c" + "test_norm_singlesample.bcf:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "versions": [ @@ -654,12 +815,12 @@ } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.3" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-08-13T12:18:20.527237885" + "timestamp": "2024-09-19T14:08:53.503322275" }, - "1 sample - 2 bed, fasta, fai, bed, [] - stub": { + "1 sample - no bed, fasta, fai, [], []": { "content": [ { "0": [ @@ -668,83 +829,63 @@ "id": "test", "single_end": false }, - "test_norm_singlesample.bcf:md5,d41d8cd98f00b204e9800998ecf8427e" + "test_norm_singlesample.bcf:md5,94d38d8fd3c50a7ede72a080fbd4992c" ] ], "1": [ [ { - "id": "genome.bed", - "contains_affected": false - }, - "genome.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ], - [ - { - "id": "genome.multi_intervals.bed", + "id": [ + + ], + "project": null, "contains_affected": false }, - "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + "[]_norm_multisample.vcf.gz:md5,56d662f0a527803ae72e40625c01014b" ] ], "2": [ [ { - "id": "genome.bed", - "contains_affected": false - }, - "genome.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - [ - { - "id": "genome.multi_intervals.bed", + "id": [ + + ], + "project": null, "contains_affected": false }, - "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + "[]_norm_multisample.vcf.gz.csi:md5,53e24fb59fef3bee6291c474e20200b9" ] ], "3": [ - "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", - "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" ], "combined_bcf": [ [ { - "id": "genome.bed", - "contains_affected": false - }, - "genome.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ], - [ - { - "id": "genome.multi_intervals.bed", + "id": [ + + ], + "project": null, "contains_affected": false }, - "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + "[]_norm_multisample.vcf.gz:md5,56d662f0a527803ae72e40625c01014b" ] ], "combined_csi": [ [ { - "id": "genome.bed", - "contains_affected": false - }, - "genome.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - [ - { - "id": "genome.multi_intervals.bed", + "id": [ + + ], + "project": null, "contains_affected": false }, - "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + "[]_norm_multisample.vcf.gz.csi:md5,53e24fb59fef3bee6291c474e20200b9" ] ], "snp_calls_vcf": [ @@ -753,30 +894,26 @@ "id": "test", "single_end": false }, - "test_norm_singlesample.bcf:md5,d41d8cd98f00b204e9800998ecf8427e" + "test_norm_singlesample.bcf:md5,94d38d8fd3c50a7ede72a080fbd4992c" ] ], "versions": [ - "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", - "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.3" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-08-13T12:38:45.950944715" + "timestamp": "2024-09-19T14:05:46.058241488" }, - "2 samples - 2 bed, fasta, fai, bed, par_bed": { + "1 sample - 2 bed, fasta, fai, bed, []": { "content": [ { "0": [ @@ -786,45 +923,42 @@ "single_end": false }, "test_norm_singlesample.bcf:md5,f978f9f75d4892499156218a300fd246" - ], - [ - { - "id": "test2", - "single_end": false - }, - "test2_norm_singlesample.bcf:md5,562e4ab7cea09c4f296550784e02ca84" ] ], "1": [ [ { "id": "genome.bed", + "project": null, "contains_affected": false }, - "genome.bed_norm_multisample.vcf.gz:md5,ec12cca4d6849a5f47823331c4b9a8f3" + "genome.bed_norm_multisample.vcf.gz:md5,56d662f0a527803ae72e40625c01014b" ], [ { "id": "genome.multi_intervals.bed", + "project": null, "contains_affected": false }, - "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,ec12cca4d6849a5f47823331c4b9a8f3" + "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,56d662f0a527803ae72e40625c01014b" ] ], "2": [ [ { "id": "genome.bed", + "project": null, "contains_affected": false }, - "genome.bed_norm_multisample.vcf.gz.csi:md5,12d9802de9b9e071408e526930050626" + "genome.bed_norm_multisample.vcf.gz.csi:md5,53e24fb59fef3bee6291c474e20200b9" ], [ { "id": "genome.multi_intervals.bed", + "project": null, "contains_affected": false }, - "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,12d9802de9b9e071408e526930050626" + "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,53e24fb59fef3bee6291c474e20200b9" ] ], "3": [ @@ -832,12 +966,8 @@ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", - "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", @@ -847,32 +977,36 @@ [ { "id": "genome.bed", + "project": null, "contains_affected": false }, - "genome.bed_norm_multisample.vcf.gz:md5,ec12cca4d6849a5f47823331c4b9a8f3" + "genome.bed_norm_multisample.vcf.gz:md5,56d662f0a527803ae72e40625c01014b" ], [ { "id": "genome.multi_intervals.bed", + "project": null, "contains_affected": false }, - "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,ec12cca4d6849a5f47823331c4b9a8f3" + "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,56d662f0a527803ae72e40625c01014b" ] ], "combined_csi": [ [ { "id": "genome.bed", + "project": null, "contains_affected": false }, - "genome.bed_norm_multisample.vcf.gz.csi:md5,12d9802de9b9e071408e526930050626" + "genome.bed_norm_multisample.vcf.gz.csi:md5,53e24fb59fef3bee6291c474e20200b9" ], [ { "id": "genome.multi_intervals.bed", + "project": null, "contains_affected": false }, - "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,12d9802de9b9e071408e526930050626" + "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,53e24fb59fef3bee6291c474e20200b9" ] ], "snp_calls_vcf": [ @@ -882,13 +1016,6 @@ "single_end": false }, "test_norm_singlesample.bcf:md5,f978f9f75d4892499156218a300fd246" - ], - [ - { - "id": "test2", - "single_end": false - }, - "test2_norm_singlesample.bcf:md5,562e4ab7cea09c4f296550784e02ca84" ] ], "versions": [ @@ -896,12 +1023,8 @@ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", - "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", @@ -910,12 +1033,12 @@ } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.3" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-08-13T12:40:41.412678218" + "timestamp": "2024-09-19T14:07:15.005268156" }, - "1 sample - no bed, fasta, fai, [], []": { + "2 samples - 2 bed, fasta, fai, bed, []": { "content": [ { "0": [ @@ -924,128 +1047,50 @@ "id": "test", "single_end": false }, - "test_norm_singlesample.bcf:md5,94d38d8fd3c50a7ede72a080fbd4992c" - ] - ], - "1": [ - [ - { - "id": [ - - ], - "contains_affected": false - }, - "[]_norm_multisample.vcf.gz:md5,56d662f0a527803ae72e40625c01014b" - ] - ], - "2": [ - [ - { - "id": [ - - ], - "contains_affected": false - }, - "[]_norm_multisample.vcf.gz.csi:md5,53e24fb59fef3bee6291c474e20200b9" - ] - ], - "3": [ - "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", - "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", - "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" - ], - "combined_bcf": [ - [ - { - "id": [ - - ], - "contains_affected": false - }, - "[]_norm_multisample.vcf.gz:md5,56d662f0a527803ae72e40625c01014b" - ] - ], - "combined_csi": [ - [ - { - "id": [ - - ], - "contains_affected": false - }, - "[]_norm_multisample.vcf.gz.csi:md5,53e24fb59fef3bee6291c474e20200b9" - ] - ], - "snp_calls_vcf": [ - [ - { - "id": "test", - "single_end": false - }, - "test_norm_singlesample.bcf:md5,94d38d8fd3c50a7ede72a080fbd4992c" - ] - ], - "versions": [ - "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", - "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", - "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" - ] - } - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.3" - }, - "timestamp": "2024-08-13T12:17:52.991579386" - }, - "1 sample - 2 bed, fasta, fai, bed, []": { - "content": [ - { - "0": [ + "test_norm_singlesample.bcf:md5,f978f9f75d4892499156218a300fd246" + ], [ { - "id": "test", + "id": "test2", "single_end": false }, - "test_norm_singlesample.bcf:md5,f978f9f75d4892499156218a300fd246" + "test2_norm_singlesample.bcf:md5,562e4ab7cea09c4f296550784e02ca84" ] ], "1": [ [ { "id": "genome.bed", + "project": null, "contains_affected": false }, - "genome.bed_norm_multisample.vcf.gz:md5,56d662f0a527803ae72e40625c01014b" + "genome.bed_norm_multisample.vcf.gz:md5,ec12cca4d6849a5f47823331c4b9a8f3" ], [ { "id": "genome.multi_intervals.bed", + "project": null, "contains_affected": false }, - "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,56d662f0a527803ae72e40625c01014b" + "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,ec12cca4d6849a5f47823331c4b9a8f3" ] ], "2": [ [ { "id": "genome.bed", + "project": null, "contains_affected": false }, - "genome.bed_norm_multisample.vcf.gz.csi:md5,53e24fb59fef3bee6291c474e20200b9" + "genome.bed_norm_multisample.vcf.gz.csi:md5,12d9802de9b9e071408e526930050626" ], [ { "id": "genome.multi_intervals.bed", + "project": null, "contains_affected": false }, - "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,53e24fb59fef3bee6291c474e20200b9" + "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,12d9802de9b9e071408e526930050626" ] ], "3": [ @@ -1053,7 +1098,11 @@ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", + "versions.yml:md5,13101c9283d4a82e859574b0a981311c", + "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", + "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", + "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", @@ -1064,32 +1113,36 @@ [ { "id": "genome.bed", + "project": null, "contains_affected": false }, - "genome.bed_norm_multisample.vcf.gz:md5,56d662f0a527803ae72e40625c01014b" + "genome.bed_norm_multisample.vcf.gz:md5,ec12cca4d6849a5f47823331c4b9a8f3" ], [ { "id": "genome.multi_intervals.bed", + "project": null, "contains_affected": false }, - "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,56d662f0a527803ae72e40625c01014b" + "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,ec12cca4d6849a5f47823331c4b9a8f3" ] ], "combined_csi": [ [ { "id": "genome.bed", + "project": null, "contains_affected": false }, - "genome.bed_norm_multisample.vcf.gz.csi:md5,53e24fb59fef3bee6291c474e20200b9" + "genome.bed_norm_multisample.vcf.gz.csi:md5,12d9802de9b9e071408e526930050626" ], [ { "id": "genome.multi_intervals.bed", + "project": null, "contains_affected": false }, - "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,53e24fb59fef3bee6291c474e20200b9" + "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,12d9802de9b9e071408e526930050626" ] ], "snp_calls_vcf": [ @@ -1099,6 +1152,13 @@ "single_end": false }, "test_norm_singlesample.bcf:md5,f978f9f75d4892499156218a300fd246" + ], + [ + { + "id": "test2", + "single_end": false + }, + "test2_norm_singlesample.bcf:md5,562e4ab7cea09c4f296550784e02ca84" ] ], "versions": [ @@ -1106,8 +1166,12 @@ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", + "versions.yml:md5,13101c9283d4a82e859574b0a981311c", + "versions.yml:md5,13101c9283d4a82e859574b0a981311c", + "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", + "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", @@ -1116,10 +1180,10 @@ } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.3" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-08-13T12:36:53.97901474" + "timestamp": "2024-09-19T14:07:48.515375217" }, "1 sample - no bed, fasta, fai, [], [] - stub": { "content": [ @@ -1139,6 +1203,7 @@ "id": [ ], + "project": null, "contains_affected": false }, "[]_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" @@ -1150,6 +1215,7 @@ "id": [ ], + "project": null, "contains_affected": false }, "[]_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" @@ -1169,6 +1235,7 @@ "id": [ ], + "project": null, "contains_affected": false }, "[]_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" @@ -1180,6 +1247,7 @@ "id": [ ], + "project": null, "contains_affected": false }, "[]_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" @@ -1205,10 +1273,10 @@ } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.3" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-08-13T12:20:07.024378325" + "timestamp": "2024-09-19T14:08:32.905425335" }, "1 sample - 1 bed, fasta, fai, [], [] - stub": { "content": [ @@ -1226,6 +1294,7 @@ [ { "id": "genome.bed", + "project": null, "contains_affected": false }, "genome.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" @@ -1235,6 +1304,7 @@ [ { "id": "genome.bed", + "project": null, "contains_affected": false }, "genome.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" @@ -1252,6 +1322,7 @@ [ { "id": "genome.bed", + "project": null, "contains_affected": false }, "genome.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" @@ -1261,6 +1332,7 @@ [ { "id": "genome.bed", + "project": null, "contains_affected": false }, "genome.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" @@ -1286,9 +1358,9 @@ } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.3" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-08-13T12:20:16.739088461" + "timestamp": "2024-09-19T14:08:43.136478303" } } \ No newline at end of file diff --git a/subworkflows/local/snv_annotation/tests/main.nf.test b/subworkflows/local/snv_annotation/tests/main.nf.test index 6009d4c2..ba42a3ce 100644 --- a/subworkflows/local/snv_annotation/tests/main.nf.test +++ b/subworkflows/local/snv_annotation/tests/main.nf.test @@ -4,7 +4,6 @@ nextflow_workflow { script "../" workflow "SNV_ANNOTATION" config "./nextflow.config" - tag "SNV_ANNOTATION" setup { run("GUNZIP") { diff --git a/subworkflows/local/snv_annotation/tests/main.nf.test.snap b/subworkflows/local/snv_annotation/tests/main.nf.test.snap index f491df0c..2b09646f 100644 --- a/subworkflows/local/snv_annotation/tests/main.nf.test.snap +++ b/subworkflows/local/snv_annotation/tests/main.nf.test.snap @@ -11,6 +11,7 @@ [ { "id": "test_data.bed", + "project": null, "contains_affected": false }, "test_data.bed.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" @@ -20,6 +21,7 @@ [ { "id": "test_data.bed", + "project": null, "contains_affected": false }, "test_data.bed.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" @@ -27,10 +29,10 @@ ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.3" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-08-12T10:11:15.912554747" + "timestamp": "2024-09-19T10:33:26.596869783" }, "bcf, db, vep_cache, '110'": { "content": [ diff --git a/subworkflows/local/snv_annotation/tests/nextflow.config b/subworkflows/local/snv_annotation/tests/nextflow.config index 2de8ad16..3d63e87d 100644 --- a/subworkflows/local/snv_annotation/tests/nextflow.config +++ b/subworkflows/local/snv_annotation/tests/nextflow.config @@ -61,6 +61,10 @@ process { ext.args = '-x map-hifi' } + withName: 'UNTAR' { + ext.prefix = { "${name}".contains('merged') ? './vep_cache/homo_sapiens_merged/' : './vep_cache/homo_sapiens/' } + } + withName: 'ENSEMBLVEP_VEP' { ext.args = { [ '--offline', diff --git a/tests/nextflow.config b/tests/nextflow.config index a2a70dff..7b01ea7f 100644 --- a/tests/nextflow.config +++ b/tests/nextflow.config @@ -25,18 +25,22 @@ process { withLabel: 'process_high' { cpus = 4 + memory = '15.GB' } withLabel: 'process_medium' { cpus = 2 + memory = '7.GB' } withLabel: 'process_low' { cpus = 1 + memory = '3.GB' } withLabel: 'process_single' { cpus = 1 + memory = '3.GB' } } From 1450dd477f59bbcaeb6d8fa0b4cafe65265dd7b0 Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Fri, 20 Sep 2024 08:32:29 +0200 Subject: [PATCH 018/106] Update schema and docs (#382) --- CHANGELOG.md | 2 + docs/parameters.md | 316 +++++++++++++++++++------------------------ docs/usage.md | 36 ++--- nextflow_schema.json | 5 +- 4 files changed, 157 insertions(+), 202 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9758f85b..67e3c037 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -30,6 +30,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#355](https://github.com/genomic-medicine-sweden/nallo/pull/355) - Updated paraphase to compress and index VCFs within the module - [#365](https://github.com/genomic-medicine-sweden/nallo/pull/365) - Changed CI to only use nf-test for pipeline tests - [#381](https://github.com/genomic-medicine-sweden/nallo/pull/381) - Updated CI nf-test version to 0.9.0 +- [#382](https://github.com/genomic-medicine-sweden/nallo/pull/382) - Changed vep_plugin_files description in schema and docs ### `Removed` @@ -41,6 +42,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#370](https://github.com/genomic-medicine-sweden/nallo/pull/370) - Fixed unsorted variants in SNV outputs ([#362](https://github.com/genomic-medicine-sweden/nallo/issues/362)) - [#381](https://github.com/genomic-medicine-sweden/nallo/pull/381) - Fixed `--vep_cache` not working as expected with tar.gz cache downloaded from VEP, updated testdata in [genomic-medicine-sweden/test-datasets#17](https://github.com/genomic-medicine-sweden/test-datasets/pull/17) +- [#382](https://github.com/genomic-medicine-sweden/nallo/pull/382) - Fixed broken links and formatting in documentation ### Parameters diff --git a/docs/parameters.md b/docs/parameters.md index 712b1896..7a34e4dd 100644 --- a/docs/parameters.md +++ b/docs/parameters.md @@ -1,182 +1,142 @@ -# genomic-medicine-sweden/nallo pipeline parameters - -Long-read variant calling pipeline - -## Workflow skip options - -Allows skipping certain parts of the pipeline - -| Parameter | Description | Type | Default | Required | Hidden | -|-----------|-----------|-----------|-----------|-----------|-----------| -| `skip_qc` | Skip QC of reads | `boolean` | | | | -| `skip_short_variant_calling` | Skip short variant calling | `boolean` | | | | -| `skip_assembly_wf` | Skip genome assembly and assembly variant calling | `boolean` | | | | -| `skip_mapping_wf` | Skip read mapping (alignment) | `boolean` | | | | -| `skip_methylation_wf` | Skip generation of methylation pileups | `boolean` | | | | -| `skip_repeat_calling` | Skip tandem repeat calling | `boolean` | | | | -| `skip_repeat_annotation` | Skip tandem repeat annotation | `boolean` | | | | -| `skip_phasing_wf` | Skip phasing of variants and haplotagging of reads | `boolean` | | | | -| `skip_snv_annotation` | Skip short variant annotation | `boolean` | | | | -| `skip_cnv_calling` | Skip CNV calling | `boolean` | | | | -| `skip_call_paralogs` | Skip the calling of specific paralogous genes | `boolean` | | | | -| `skip_rank_variants` | Skip ranking of short variants | `boolean` | | | | - -## Input/output options - -Define where the pipeline should find input data and save output data. - -| Parameter | Description | Type | Default | Required | Hidden | -|-----------|-----------|-----------|-----------|-----------|-----------| -| `input` | Path to comma-separated file containing information about the samples in the experiment.
    HelpYou -will need to create a design file with information about the samples in your experiment before running the pipeline. Use this parameter to specify -its location. It has to be a comma-separated file with 3 columns, and a header row.
    | `string` | | True | | -| `outdir` | The output directory where the results will be saved. You have to use absolute paths to storage on Cloud infrastructure. | `string` | -| True | | -| `email` | Email address for completion summary.
    HelpSet this parameter to your e-mail address to get a summary -e-mail with details of the run sent to you when the workflow exits. If set in your user config file (`~/.nextflow/config`) then you don't need to -specify this on the command line for every run.
    | `string` | | | | -| `multiqc_title` | MultiQC report title. Printed as page header, used for filename if not otherwise specified. | `string` | | | | - -## Reference genome options - -Reference genome related files and options required for the workflow. - -| Parameter | Description | Type | Default | Required | Hidden | -|-----------|-----------|-----------|-----------|-----------|-----------| -| `fasta` | Reference genome | `string` | | | | -| `genome` | Name of iGenomes reference.
    HelpIf using a reference genome configured in the pipeline using -iGenomes, use this parameter to give the ID for the reference. This is then used to build the full paths for all required reference genome files -e.g. `--genome GRCh38`.

    See the [nf-core website docs](https://nf-co.re/usage/reference_genomes) for more details.
    | -`string` | | | | -| `igenomes_ignore` | Do not load the iGenomes reference config.
    HelpDo not load `igenomes.config` when running -the pipeline. You may choose this option if you observe clashes between custom parameters and those supplied in -`igenomes.config`.
    | `boolean` | True | | True | - -## Institutional config options - -Parameters used to describe centralised config profiles. These should not be edited. - -| Parameter | Description | Type | Default | Required | Hidden | -|-----------|-----------|-----------|-----------|-----------|-----------| -| `custom_config_version` | Git commit id for Institutional configs. | `string` | master | | True | -| `custom_config_base` | Base directory for Institutional configs.
    HelpIf you're running offline, Nextflow will -not be able to fetch the institutional config files from the internet. If you don't need them, then this is not a problem. If you do need them, you -should download the files from the repo and tell Nextflow where to find them with this parameter.
    | `string` | -https://raw.githubusercontent.com/nf-core/configs/master | | True | -| `config_profile_name` | Institutional config name. | `string` | | | True | -| `config_profile_description` | Institutional config description. | `string` | | | True | -| `config_profile_contact` | Institutional config contact information. | `string` | | | True | -| `config_profile_url` | Institutional config URL link. | `string` | | | True | - -## Max job request options - -Set the top limit for requested resources for any single job. - -| Parameter | Description | Type | Default | Required | Hidden | -|-----------|-----------|-----------|-----------|-----------|-----------| -| `max_cpus` | Maximum number of CPUs that can be requested for any single job.
    HelpUse to set an upper-limit -for the CPU requirement for each process. Should be an integer e.g. `--max_cpus 1`
    | `integer` | 16 | | True | -| `max_memory` | Maximum amount of memory that can be requested for any single job.
    HelpUse to set an -upper-limit for the memory requirement for each process. Should be a string in the format integer-unit e.g. `--max_memory -'8.GB'`
    | `string` | 128.GB | | True | -| `max_time` | Maximum amount of time that can be requested for any single job.
    HelpUse to set an upper-limit -for the time requirement for each process. Should be a string in the format integer-unit e.g. `--max_time '2.h'`
    | `string` | -240.h | | True | - -## Generic options - -Less common options for the pipeline, typically set in a config file. - -| Parameter | Description | Type | Default | Required | Hidden | -|-----------|-----------|-----------|-----------|-----------|-----------| -| `help` | Display help text. | `boolean` | | | True | -| `version` | Display version and exit. | `boolean` | | | True | -| `publish_dir_mode` | Method used to save pipeline results to output directory.
    HelpThe Nextflow `publishDir` -option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to -move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.
    | `string` | copy -| | True | -| `email_on_fail` | Email address for completion summary, only when pipeline fails.
    HelpAn email address to send -a summary email to when the pipeline is completed - ONLY sent if the pipeline does not exit successfully.
    | `string` | | | True -| -| `plaintext_email` | Send plain-text email instead of HTML. | `boolean` | | | True | -| `max_multiqc_email_size` | File size limit when attaching MultiQC reports to summary emails. | `string` | 25.MB | | True | -| `monochrome_logs` | Do not use coloured log outputs. | `boolean` | | | True | -| `hook_url` | Incoming hook URL for messaging service
    HelpIncoming hook URL for messaging service. Currently, -MS Teams and Slack are supported.
    | `string` | | | True | -| `multiqc_config` | Custom config file to supply to MultiQC. | `string` | | | True | -| `multiqc_logo` | Custom logo file to supply to MultiQC. File name must also be set in the MultiQC config file | `string` | | | True | -| `multiqc_methods_description` | Custom MultiQC yaml file containing HTML including a methods description. | `string` | | | | -| `validate_params` | Boolean whether to validate parameters against the schema at runtime | `boolean` | True | | True | -| `validationShowHiddenParams` | Show all params when using `--help`
    HelpBy default, parameters set as _hidden_ -in the schema are not shown on the command line when a user runs with `--help`. Specifying this option will tell the pipeline to show all -parameters.
    | `boolean` | | | True | -| `validationSkipDuplicateCheck` | nf-validation related parameter | `boolean` | | | True | -| `validationS3PathCheck` | Boolean whether to validate validate AWS S3 paths | `boolean` | | | True | -| `monochromeLogs` | Boolean whether to color nf-validation logs | `boolean` | | | True | - -## Workflow options - -Workflow options specific to genomic-medicine-sweden/nallo - -| Parameter | Description | Type | Default | Required | Hidden | -|-----------|-----------|-----------|-----------|-----------|-----------| -| `preset` | Enable or disable certain parts of the pipeline by default, depending on data type (`revio`, `pacbio`, `ONT_R10`) | `string` | revio | -True | | -| `variant_caller` | Which short variant software to use (`deepvariant`) | `string` | deepvariant | | | -| `sv_caller` | Which structural variant caller to use (`severus`, `sniffles`) | `string` | severus | | | -| `phaser` | Which phasing software to use (`whatshap`, `hiphase_snv`, `hiphase_sv`) | `string` | whatshap | | | -| `hifiasm_mode` | Run hifiasm in hifi-only or hifi-trio mode (`hifi-only`, `trio-binning`) | `string` | hifi-only | | | -| `parallel_alignments` | If parallel_alignments is bigger than 1, input files will be split and aligned in parallel to reduce processing time. | -`integer` | 1 | | | -| `parallel_snv` | If parallel_snv is bigger than 1, short variant calling will be done in parallel to reduce processing time. | `integer` | 13 | -| | -| `vep_cache_version` | VEP cache version | `integer` | 110 | | | -| `vep_plugin_files` | A csv file with paths to vep plugin files. pLI and LoFtool are required. | `string` | | | | -| `deepvariant_model_type` | Sets the model type used for DeepVariant. This is set automatically using `--preset` by default. | `string` | PACBIO | -| True | -| `extra_modkit_options` | Extra options to modkit, used for test profile. | `string` | | | True | -| `extra_vep_options` | Extra options to VEP, used for test profile. | `string` | | | True | -| `extra_paraphase_options` | Extra options to Paraphase, used for test profile. | `string` | | | True | -| `extra_hifiasm_options` | Extra options to hifiasm, used for test profile. | `string` | | | True | - -## File inputs - -The different files that are required. Some are only required by certain workflows, see the usage documentation. - -| Parameter | Description | Type | Default | Required | Hidden | -|-----------|-----------|-----------|-----------|-----------|-----------| -| `cadd_prescored` | Path to a directory containing prescored indels for CADD.
    HelpThis folder contains the -compressed files and indexes that would otherwise be in data/prescored folder as described in -https://github.com/kircherlab/CADD-scripts/#manual-installation.
    | `string` | | | | -| `cadd_resources` | Path to a directory containing CADD annotations.
    HelpThis folder contains the uncompressed -files that would otherwise be in data/annotation folder as described in -https://github.com/kircherlab/CADD-scripts/#manual-installation.
    | `string` | | | | -| `par_regions` | Provide a bed file of chrX and chrY PAR regions for dipcall and DeepVariant | `string` | | | | -| `tandem_repeats` | A tandem repeat BED file for sniffles | `string` | | | | -| `trgt_repeats` | A BED file with repeats to be genotyped with TRGT | `string` | | | | -| `snp_db` | A csv file with echtvar databases to annotate SNVs with | `string` | | | | -| `variant_catalog` | A variant catalog json-file for stranger | `string` | | | | -| `variant_consequences_snv` | File containing list of SO terms listed in the order of severity from most severe to lease severe for annotating -genomic SNVs.
    HelpFor more information check -https://ensembl.org/info/genome/variation/prediction/predicted_data.html
    | `string` | | | | -| `vep_cache` | A path to the VEP cache location | `string` | | | | -| `bed` | A BED file with regions of interest, used to limit short variant calling. | `string` | | | | -| `hificnv_xy` | A BED file containing expected copy number regions for XY samples. | `string` | | | | -| `hificnv_xx` | A BED file containing expected copy number regions for XX samples. | `string` | | | | -| `hificnv_exclude` | A BED file specifying regions to exclude with HiFiCNV, such as centromeres. | `string` | | | | -| `reduced_penetrance` | A file with gene ids that have reduced penetrance. For use with genmod. | `string` | | | | -| `score_config_snv` | A SNV rank model config file for genmod. | `string` | | | | -| `somalier_sites` | A VCF of known polymorphic sites for somalier | `string` | | | | -| `validationFailUnrecognisedParams` | Validation of parameters fails when an unrecognised parameter is found. -
    HelpBy default, when an unrecognised parameter is found, it returns a warning.
    | `boolean` | | -| True | -| `validationLenientMode` | Validation of parameters in lenient more.
    HelpAllows string values that are -parseable as numbers or booleans. For further information see [JSONSchema -docs](https://github.com/everit-org/json-schema#lenient-mode).
    | `boolean` | | | True | -| `pipelines_testdata_base_path` | Base URL or local path to location of pipeline test dataset files | `string` | -https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/ | | True | - +# genomic-medicine-sweden/nallo pipeline parameters + +Long-read variant calling pipeline + +## Workflow skip options + +Allows skipping certain parts of the pipeline + +| Parameter | Description | Type | Default | Required | Hidden | +|-----------|-----------|-----------|-----------|-----------|-----------| +| `skip_qc` | Skip QC of reads | `boolean` | False | | | +| `skip_short_variant_calling` | Skip short variant calling | `boolean` | False | | | +| `skip_assembly_wf` | Skip genome assembly and assembly variant calling | `boolean` | False | | | +| `skip_mapping_wf` | Skip read mapping (alignment) | `boolean` | False | | | +| `skip_methylation_wf` | Skip generation of methylation pileups | `boolean` | False | | | +| `skip_repeat_calling` | Skip tandem repeat calling | `boolean` | False | | | +| `skip_repeat_annotation` | Skip tandem repeat annotation | `boolean` | False | | | +| `skip_phasing_wf` | Skip phasing of variants and haplotagging of reads | `boolean` | False | | | +| `skip_snv_annotation` | Skip short variant annotation | `boolean` | False | | | +| `skip_cnv_calling` | Skip CNV calling | `boolean` | False | | | +| `skip_call_paralogs` | Skip the calling of specific paralogous genes | `boolean` | False | | | +| `skip_rank_variants` | Skip ranking of short variants | `boolean` | False | | | + +## Input/output options + +Define where the pipeline should find input data and save output data. + +| Parameter | Description | Type | Default | Required | Hidden | +|-----------|-----------|-----------|-----------|-----------|-----------| +| `input` | Path to comma-separated file containing information about the samples in the experiment.
    HelpYou will need to create a design file with information about the samples in your experiment before running the pipeline. Use this parameter to specify its location. It has to be a comma-separated file with 3 columns, and a header row.
    | `string` | | True | | +| `outdir` | The output directory where the results will be saved. You have to use absolute paths to storage on Cloud infrastructure. | `string` | | True | | +| `email` | Email address for completion summary.
    HelpSet this parameter to your e-mail address to get a summary e-mail with details of the run sent to you when the workflow exits. If set in your user config file (`~/.nextflow/config`) then you don't need to specify this on the command line for every run.
    | `string` | | | | +| `multiqc_title` | MultiQC report title. Printed as page header, used for filename if not otherwise specified. | `string` | | | | + +## Reference genome options + +Reference genome related files and options required for the workflow. + +| Parameter | Description | Type | Default | Required | Hidden | +|-----------|-----------|-----------|-----------|-----------|-----------| +| `fasta` | Reference genome | `string` | | | | +| `genome` | Name of iGenomes reference.
    HelpIf using a reference genome configured in the pipeline using iGenomes, use this parameter to give the ID for the reference. This is then used to build the full paths for all required reference genome files e.g. `--genome GRCh38`.

    See the [nf-core website docs](https://nf-co.re/usage/reference_genomes) for more details.
    | `string` | | | | +| `igenomes_ignore` | Do not load the iGenomes reference config.
    HelpDo not load `igenomes.config` when running the pipeline. You may choose this option if you observe clashes between custom parameters and those supplied in `igenomes.config`.
    | `boolean` | True | | True | + +## Institutional config options + +Parameters used to describe centralised config profiles. These should not be edited. + +| Parameter | Description | Type | Default | Required | Hidden | +|-----------|-----------|-----------|-----------|-----------|-----------| +| `custom_config_version` | Git commit id for Institutional configs. | `string` | master | | True | +| `custom_config_base` | Base directory for Institutional configs.
    HelpIf you're running offline, Nextflow will not be able to fetch the institutional config files from the internet. If you don't need them, then this is not a problem. If you do need them, you should download the files from the repo and tell Nextflow where to find them with this parameter.
    | `string` | https://raw.githubusercontent.com/nf-core/configs/master | | True | +| `config_profile_name` | Institutional config name. | `string` | | | True | +| `config_profile_description` | Institutional config description. | `string` | | | True | +| `config_profile_contact` | Institutional config contact information. | `string` | | | True | +| `config_profile_url` | Institutional config URL link. | `string` | | | True | + +## Max job request options + +Set the top limit for requested resources for any single job. + +| Parameter | Description | Type | Default | Required | Hidden | +|-----------|-----------|-----------|-----------|-----------|-----------| +| `max_cpus` | Maximum number of CPUs that can be requested for any single job.
    HelpUse to set an upper-limit for the CPU requirement for each process. Should be an integer e.g. `--max_cpus 1`
    | `integer` | 16 | | True | +| `max_memory` | Maximum amount of memory that can be requested for any single job.
    HelpUse to set an upper-limit for the memory requirement for each process. Should be a string in the format integer-unit e.g. `--max_memory '8.GB'`
    | `string` | 128.GB | | True | +| `max_time` | Maximum amount of time that can be requested for any single job.
    HelpUse to set an upper-limit for the time requirement for each process. Should be a string in the format integer-unit e.g. `--max_time '2.h'`
    | `string` | 240.h | | True | + +## Generic options + +Less common options for the pipeline, typically set in a config file. + +| Parameter | Description | Type | Default | Required | Hidden | +|-----------|-----------|-----------|-----------|-----------|-----------| +| `help` | Display help text. | `boolean` | | | True | +| `version` | Display version and exit. | `boolean` | | | True | +| `publish_dir_mode` | Method used to save pipeline results to output directory.
    HelpThe Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.
    | `string` | copy | | True | +| `email_on_fail` | Email address for completion summary, only when pipeline fails.
    HelpAn email address to send a summary email to when the pipeline is completed - ONLY sent if the pipeline does not exit successfully.
    | `string` | | | True | +| `plaintext_email` | Send plain-text email instead of HTML. | `boolean` | | | True | +| `max_multiqc_email_size` | File size limit when attaching MultiQC reports to summary emails. | `string` | 25.MB | | True | +| `monochrome_logs` | Do not use coloured log outputs. | `boolean` | | | True | +| `hook_url` | Incoming hook URL for messaging service
    HelpIncoming hook URL for messaging service. Currently, MS Teams and Slack are supported.
    | `string` | | | True | +| `multiqc_config` | Custom config file to supply to MultiQC. | `string` | | | True | +| `multiqc_logo` | Custom logo file to supply to MultiQC. File name must also be set in the MultiQC config file | `string` | | | True | +| `multiqc_methods_description` | Custom MultiQC yaml file containing HTML including a methods description. | `string` | | | | +| `validate_params` | Boolean whether to validate parameters against the schema at runtime | `boolean` | True | | True | +| `validationShowHiddenParams` | Show all params when using `--help`
    HelpBy default, parameters set as _hidden_ in the schema are not shown on the command line when a user runs with `--help`. Specifying this option will tell the pipeline to show all parameters.
    | `boolean` | | | True | +| `validationSkipDuplicateCheck` | nf-validation related parameter | `boolean` | | | True | +| `validationS3PathCheck` | Boolean whether to validate validate AWS S3 paths | `boolean` | | | True | +| `monochromeLogs` | Boolean whether to color nf-validation logs | `boolean` | | | True | + +## Workflow options + +Workflow options specific to genomic-medicine-sweden/nallo + +| Parameter | Description | Type | Default | Required | Hidden | +|-----------|-----------|-----------|-----------|-----------|-----------| +| `preset` | Enable or disable certain parts of the pipeline by default, depending on data type (`revio`, `pacbio`, `ONT_R10`) | `string` | revio | True | | +| `variant_caller` | Which short variant software to use (`deepvariant`) | `string` | deepvariant | | | +| `sv_caller` | Which structural variant caller to use (`severus`, `sniffles`) | `string` | severus | | | +| `phaser` | Which phasing software to use (`whatshap`, `hiphase_snv`, `hiphase_sv`) | `string` | whatshap | | | +| `hifiasm_mode` | Run hifiasm in hifi-only or hifi-trio mode (`hifi-only`, `trio-binning`) | `string` | hifi-only | | | +| `parallel_alignments` | If parallel_alignments is bigger than 1, input files will be split and aligned in parallel to reduce processing time. | `integer` | 1 | | | +| `parallel_snv` | If parallel_snv is bigger than 1, short variant calling will be done in parallel to reduce processing time. | `integer` | 13 | | | +| `vep_cache_version` | VEP cache version | `integer` | 110 | | | +| `vep_plugin_files` | A csv file with vep_plugins as header, and then paths to vep plugin files. Paths to pLI_values.txt and LoFtool_scores.txt are required. | `string` | | +| | +| `deepvariant_model_type` | Sets the model type used for DeepVariant. This is set automatically using `--preset` by default. | `string` | PACBIO | | True | +| `extra_modkit_options` | Extra options to modkit, used for test profile. | `string` | | | True | +| `extra_vep_options` | Extra options to VEP, used for test profile. | `string` | | | True | +| `extra_paraphase_options` | Extra options to Paraphase, used for test profile. | `string` | | | True | +| `extra_hifiasm_options` | Extra options to hifiasm, used for test profile. | `string` | | | True | + +## File inputs + +The different files that are required. Some are only required by certain workflows, see the usage documentation. + +| Parameter | Description | Type | Default | Required | Hidden | +|-----------|-----------|-----------|-----------|-----------|-----------| +| `cadd_prescored` | Path to a directory containing prescored indels for CADD.
    HelpThis folder contains the compressed files and indexes that would otherwise be in data/prescored folder as described in https://github.com/kircherlab/CADD-scripts/#manual-installation.
    | `string` | | | | +| `cadd_resources` | Path to a directory containing CADD annotations.
    HelpThis folder contains the uncompressed files that would otherwise be in data/annotation folder as described in https://github.com/kircherlab/CADD-scripts/#manual-installation.
    | `string` | | | | +| `par_regions` | Provide a bed file of chrX and chrY PAR regions for dipcall and DeepVariant | `string` | | | | +| `tandem_repeats` | A tandem repeat BED file for sniffles | `string` | | | | +| `trgt_repeats` | A BED file with repeats to be genotyped with TRGT | `string` | | | | +| `snp_db` | A csv file with echtvar databases to annotate SNVs with | `string` | | | | +| `variant_catalog` | A variant catalog json-file for stranger | `string` | | | | +| `variant_consequences_snv` | File containing list of SO terms listed in the order of severity from most severe to lease severe for annotating genomic SNVs. For more information check https://ensembl.org/info/genome/variation/prediction/predicted_data.html | `string` | | | | +| `vep_cache` | A path to the VEP cache location | `string` | | | | +| `bed` | A BED file with regions of interest, used to limit short variant calling. | `string` | | | | +| `hificnv_xy` | A BED file containing expected copy number regions for XY samples. | `string` | | | | +| `hificnv_xx` | A BED file containing expected copy number regions for XX samples. | `string` | | | | +| `hificnv_exclude` | A BED file specifying regions to exclude with HiFiCNV, such as centromeres. | `string` | | | | +| `reduced_penetrance` | A file with gene ids that have reduced penetrance. For use with genmod. | `string` | | | | +| `score_config_snv` | A SNV rank model config file for genmod. | `string` | | | | +| `somalier_sites` | A VCF of known polymorphic sites for somalier | `string` | | | | +| `validationFailUnrecognisedParams` | Validation of parameters fails when an unrecognised parameter is found.
    HelpBy default, when an unrecognised parameter is found, it returns a warning.
    | `boolean` | | | True | +| `validationLenientMode` | Validation of parameters in lenient more.
    HelpAllows string values that are parseable as numbers or booleans. For further information see [JSONSchema docs](https://github.com/everit-org/json-schema#lenient-mode).
    | `boolean` | | | True | +| `pipelines_testdata_base_path` | Base URL or local path to location of pipeline test dataset files | `string` | https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/ | | True | + diff --git a/docs/usage.md b/docs/usage.md index 50371fd5..5e00a908 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -125,10 +125,10 @@ As descibed above, the files required depend on the active subworkflows. All par The majority of subworkflows depend on the mapping (alignment) subworkflow which requires `--fasta` and `--somalier_sites`. -| Parameter | Description | -| ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `fasta` | Reference genome, either gzipped or uncompressed FASTA (e.g. [GRCh38_no_alt_analysis_set.fna.gz](ftp://ftp.ncbi.nlm.nih.gov/genomes/all/GCA/000/001/405/GCA_000001405.15_GRCh38/seqs_for_alignment_pipelines.ucsc_ids/GCA_000001405.15_GRCh38_no_alt_analysis_set.fna.gz)) | -| `somalier_sites` | A VCF of known polymorphic sites (e.g. [sites.hg38.vcg.gz](https://github.com/brentp/somalier/files/3412456/sites.hg38.vcf.gz)), from which sex will be inferred if possible. | +| Parameter | Description | +| ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `fasta` | Reference genome, either gzipped or uncompressed FASTA (e.g. [GCA_000001405.15_GRCh38_no_alt_analysis_set.fna.gz](https://lh3.github.io/2017/11/13/which-human-reference-genome-to-use)) | +| `somalier_sites` | A VCF of known polymorphic sites (e.g. [sites.hg38.vcg.gz](https://github.com/brentp/somalier/files/3412456/sites.hg38.vcf.gz)), from which sex will be inferred if possible. | ### QC (`--skip_qc`) @@ -140,9 +140,9 @@ This subworkflow contains both genome assembly and assembly variant calling. The It requires a BED file with PAR regions. -| Parameter | Description | -| ------------- | --------------------------------------------------------------------------------------------------------------------------------- | -| `par_regions` | A BED file with PAR regions (e.g. [GRCh38_PAR.bed](ttps://storage.googleapis.com/deepvariant/case-study-testdata/GRCh38_PAR.bed)) | +| Parameter | Description | +| ------------- | ---------------------------------------------------------------------------------------------------------------------------------- | +| `par_regions` | A BED file with PAR regions (e.g. [GRCh38_PAR.bed](https://storage.googleapis.com/deepvariant/case-study-testdata/GRCh38_PAR.bed)) | > [!NOTE] > Make sure chrY PAR is hard masked in reference genome you are using. @@ -184,9 +184,9 @@ This subworkflow relies on mapping, short variant calling and phasing subworkflo This subworkflow requires haplotagged BAM files, and such relies on the mapping, short variant calling and phasing subworkflows, and requires the following additional files: -| Parameter | Description | -| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `trgt_repeats` | a BED file with tandem repeats matching your reference genome (e.g. [pathogenic_repeats.hg38.bed](<[https://github.com/PacificBiosciences/trgt/tree/main/repeats](https://github.com/PacificBiosciences/trgt/raw/main/repeats/pathogenic_repeats.hg38.bed)>)) | +| Parameter | Description | +| -------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `trgt_repeats` | a BED file with tandem repeats matching your reference genome (e.g. [pathogenic_repeats.hg38.bed](https://github.com/PacificBiosciences/trgt/raw/main/repeats/pathogenic_repeats.hg38.bed)>)) | ### Repeat annotation (`--skip_repeat_annotation`) @@ -215,20 +215,14 @@ This subworkflow relies on the mapping and short variant calling, and requires t ``` vep_files -https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/nallo/reference/vep_plugins/LoFtool.pm -https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/nallo/reference/vep_plugins/spliceai_21_scores_raw_snv_-v1.3-.vcf.gz -https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/nallo/reference/vep_plugins/dbNSFP.pm -https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/nallo/reference/vep_plugins/plugin_config.txt https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/nallo/reference/vep_plugins/spliceai_21_scores_raw_indel_-v1.3-.vcf.gz.tbi https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/nallo/reference/vep_plugins/spliceai_21_scores_raw_indel_-v1.3-.vcf.gz https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/nallo/reference/vep_plugins/spliceai_21_scores_raw_snv_-v1.3-.vcf.gz.tbi https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/nallo/reference/vep_plugins/pLI_values.txt -https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/nallo/reference/vep_plugins/pLI.pm -https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/nallo/reference/vep_plugins/MaxEntScan.pm https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/nallo/reference/vep_plugins/LoFtool_scores.txt ``` -2 Example file for input with `--vep_plugins`: +2 Example file for input with `--snp_db`: ``` sample,file @@ -243,10 +237,10 @@ cadd,/path/to/cadd.v1.6.hg38.zip This subworkflow relies on the mapping, short variant calling and SNV annotation subworkflows, and requires the following additional files: -| Parameter | Description | -| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `score_config_snv` |  Used by GENMOD when ranking variants. Sample file [here](https://github.com/nf-core/test-datasets/blob/raredisease/reference/rank_model_snv.ini). | -| `reduced_penetrance` | A list of loci that show [reduced penetrance](https://medlineplus.gov/genetics/understanding/inheritance/penetranceexpressivity/) in people. Sample file [here](https://github.com/nf-core/test-datasets/blob/raredisease/reference/reduced_penetrance.tsv)) | +| Parameter | Description | +| -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `score_config_snv` |  Used by GENMOD when ranking variants. Sample file [here](https://github.com/nf-core/test-datasets/blob/raredisease/reference/rank_model_snv.ini). | +| `reduced_penetrance` | A list of loci that show [reduced penetrance](https://medlineplus.gov/genetics/understanding/inheritance/penetranceexpressivity/) in people. Sample file [here](https://github.com/nf-core/test-datasets/blob/raredisease/reference/reduced_penetrance.tsv) | ### Other highlighted parameters diff --git a/nextflow_schema.json b/nextflow_schema.json index e68761a6..77448f74 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -399,7 +399,7 @@ "vep_plugin_files": { "type": "string", "mimetype": "text/csv", - "description": "A csv file with paths to vep plugin files. pLI and LoFtool are required.", + "description": "A csv file with vep_plugins as header, and then paths to vep plugin files. Paths to pLI_values.txt and LoFtool_scores.txt are required.", "schema": "assets/vep_plugin_files_schema.json" }, "deepvariant_model_type": { @@ -491,8 +491,7 @@ }, "variant_consequences_snv": { "type": "string", - "description": "File containing list of SO terms listed in the order of severity from most severe to lease severe for annotating genomic SNVs.", - "help_text": "For more information check https://ensembl.org/info/genome/variation/prediction/predicted_data.html", + "description": "File containing list of SO terms listed in the order of severity from most severe to lease severe for annotating genomic SNVs. For more information check https://ensembl.org/info/genome/variation/prediction/predicted_data.html", "fa_icon": "fas fa-file-csv" }, "vep_cache": { From e5ab7fe0a5df55f4a6a7b22209fb699a12e81886 Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Mon, 23 Sep 2024 15:02:37 +0200 Subject: [PATCH 019/106] Fixed, added and updated minimap2 presets (#393) * Fixed, added and updated minimap2 presets * Update CHANGELOG.md Co-authored-by: Anders Jemt * prettier --------- Co-authored-by: Anders Jemt --- CHANGELOG.md | 14 +- conf/modules/general.config | 2 +- conf/modules/prepare_genome.config | 6 +- docs/parameters.md | 271 ++++++++++++++--------------- nextflow.config | 75 ++++---- nextflow_schema.json | 6 + tests/main.nf.test.snap | 138 +++++++-------- 7 files changed, 257 insertions(+), 255 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 67e3c037..7895c1de 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#366](https://github.com/genomic-medicine-sweden/nallo/pull/366) - Added sorting of samples when creating PED files, so the output is always the same - [#367](https://github.com/genomic-medicine-sweden/nallo/pull/367) - Added Severus as the default SV caller, together with a `--sv_caller` parameter to choose caller - [#371](https://github.com/genomic-medicine-sweden/nallo/pull/371) - Added `FOUND_IN=caller` tags to SV output +- [#393](https://github.com/genomic-medicine-sweden/nallo/pull/393) - Added a new `--minimap2_read_mapping_preset` parameter ### `Changed` @@ -31,6 +32,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#365](https://github.com/genomic-medicine-sweden/nallo/pull/365) - Changed CI to only use nf-test for pipeline tests - [#381](https://github.com/genomic-medicine-sweden/nallo/pull/381) - Updated CI nf-test version to 0.9.0 - [#382](https://github.com/genomic-medicine-sweden/nallo/pull/382) - Changed vep_plugin_files description in schema and docs +- [#393](https://github.com/genomic-medicine-sweden/nallo/pull/393) - Changed the default minimap2 preset for PacBio data from `map-hifi` to `lr:hqae` ### `Removed` @@ -43,14 +45,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#370](https://github.com/genomic-medicine-sweden/nallo/pull/370) - Fixed unsorted variants in SNV outputs ([#362](https://github.com/genomic-medicine-sweden/nallo/issues/362)) - [#381](https://github.com/genomic-medicine-sweden/nallo/pull/381) - Fixed `--vep_cache` not working as expected with tar.gz cache downloaded from VEP, updated testdata in [genomic-medicine-sweden/test-datasets#17](https://github.com/genomic-medicine-sweden/test-datasets/pull/17) - [#382](https://github.com/genomic-medicine-sweden/nallo/pull/382) - Fixed broken links and formatting in documentation +- [#393](https://github.com/genomic-medicine-sweden/nallo/pull/393) - Fixed minimap2 preset for ONT data being overwritten to `map-ont` when it should have been `lr:hq`, due to different settings in index and alignment processes [#392](https://github.com/genomic-medicine-sweden/nallo/issues/392) ### Parameters -| Old parameter | New parameter | -| ------------------------ | ------------- | -| `--skip_aligned_read_qc` | `--skip_qc` | -| `--skip_raw_read_qc` | `--skip_qc` | -| | `--sv_caller` | +| Old parameter | New parameter | +| ------------------------ | --------------------------------- | +| `--skip_aligned_read_qc` | `--skip_qc` | +| `--skip_raw_read_qc` | `--skip_qc` | +| | `--sv_caller` | +|   |  `--minimap2_read_mapping_preset` | > [!NOTE] > Parameter has been updated if both old and new parameter information is present. diff --git a/conf/modules/general.config b/conf/modules/general.config index 5b64f9ad..28752027 100644 --- a/conf/modules/general.config +++ b/conf/modules/general.config @@ -117,7 +117,7 @@ process { ext.prefix = { "${meta.id}_aligned" } ext.args = { [ "-y", - params.preset.equals('ONT_R10') ? "-x lr:hq" : "-x map-hifi", + "-x ${params.minimap2_read_mapping_preset}", "--secondary=no", "-Y", "-R @RG\\\\tID:${meta.id}\\\\tSM:${meta.id}" diff --git a/conf/modules/prepare_genome.config b/conf/modules/prepare_genome.config index b29e2ddf..62ee761a 100644 --- a/conf/modules/prepare_genome.config +++ b/conf/modules/prepare_genome.config @@ -19,11 +19,7 @@ process { } withName: '.*:PREPARE_GENOME:MINIMAP2_INDEX' { - if(params.preset == 'revio' | params.preset == 'pacbio') { - ext.args = "-x map-hifi" - } else if(params.preset == 'ONT_R9' | params.preset == 'ONT_R10') { - ext.args = "-x map-ont" - } + ext.args = { "-x ${params.minimap2_read_mapping_preset}" } } withName: '.*:PREPARE_GENOME:MINIMAP2_INDEX_DIPCALL' { diff --git a/docs/parameters.md b/docs/parameters.md index 7a34e4dd..b4a48297 100644 --- a/docs/parameters.md +++ b/docs/parameters.md @@ -1,142 +1,137 @@ +# genomic-medicine-sweden/nallo pipeline parameters +Long-read variant calling pipeline -# genomic-medicine-sweden/nallo pipeline parameters - -Long-read variant calling pipeline - -## Workflow skip options - -Allows skipping certain parts of the pipeline - -| Parameter | Description | Type | Default | Required | Hidden | -|-----------|-----------|-----------|-----------|-----------|-----------| -| `skip_qc` | Skip QC of reads | `boolean` | False | | | -| `skip_short_variant_calling` | Skip short variant calling | `boolean` | False | | | -| `skip_assembly_wf` | Skip genome assembly and assembly variant calling | `boolean` | False | | | -| `skip_mapping_wf` | Skip read mapping (alignment) | `boolean` | False | | | -| `skip_methylation_wf` | Skip generation of methylation pileups | `boolean` | False | | | -| `skip_repeat_calling` | Skip tandem repeat calling | `boolean` | False | | | -| `skip_repeat_annotation` | Skip tandem repeat annotation | `boolean` | False | | | -| `skip_phasing_wf` | Skip phasing of variants and haplotagging of reads | `boolean` | False | | | -| `skip_snv_annotation` | Skip short variant annotation | `boolean` | False | | | -| `skip_cnv_calling` | Skip CNV calling | `boolean` | False | | | -| `skip_call_paralogs` | Skip the calling of specific paralogous genes | `boolean` | False | | | -| `skip_rank_variants` | Skip ranking of short variants | `boolean` | False | | | - -## Input/output options - -Define where the pipeline should find input data and save output data. - -| Parameter | Description | Type | Default | Required | Hidden | -|-----------|-----------|-----------|-----------|-----------|-----------| -| `input` | Path to comma-separated file containing information about the samples in the experiment.
    HelpYou will need to create a design file with information about the samples in your experiment before running the pipeline. Use this parameter to specify its location. It has to be a comma-separated file with 3 columns, and a header row.
    | `string` | | True | | -| `outdir` | The output directory where the results will be saved. You have to use absolute paths to storage on Cloud infrastructure. | `string` | | True | | -| `email` | Email address for completion summary.
    HelpSet this parameter to your e-mail address to get a summary e-mail with details of the run sent to you when the workflow exits. If set in your user config file (`~/.nextflow/config`) then you don't need to specify this on the command line for every run.
    | `string` | | | | -| `multiqc_title` | MultiQC report title. Printed as page header, used for filename if not otherwise specified. | `string` | | | | - -## Reference genome options - -Reference genome related files and options required for the workflow. - -| Parameter | Description | Type | Default | Required | Hidden | -|-----------|-----------|-----------|-----------|-----------|-----------| -| `fasta` | Reference genome | `string` | | | | -| `genome` | Name of iGenomes reference.
    HelpIf using a reference genome configured in the pipeline using iGenomes, use this parameter to give the ID for the reference. This is then used to build the full paths for all required reference genome files e.g. `--genome GRCh38`.

    See the [nf-core website docs](https://nf-co.re/usage/reference_genomes) for more details.
    | `string` | | | | -| `igenomes_ignore` | Do not load the iGenomes reference config.
    HelpDo not load `igenomes.config` when running the pipeline. You may choose this option if you observe clashes between custom parameters and those supplied in `igenomes.config`.
    | `boolean` | True | | True | - -## Institutional config options - -Parameters used to describe centralised config profiles. These should not be edited. - -| Parameter | Description | Type | Default | Required | Hidden | -|-----------|-----------|-----------|-----------|-----------|-----------| -| `custom_config_version` | Git commit id for Institutional configs. | `string` | master | | True | -| `custom_config_base` | Base directory for Institutional configs.
    HelpIf you're running offline, Nextflow will not be able to fetch the institutional config files from the internet. If you don't need them, then this is not a problem. If you do need them, you should download the files from the repo and tell Nextflow where to find them with this parameter.
    | `string` | https://raw.githubusercontent.com/nf-core/configs/master | | True | -| `config_profile_name` | Institutional config name. | `string` | | | True | -| `config_profile_description` | Institutional config description. | `string` | | | True | -| `config_profile_contact` | Institutional config contact information. | `string` | | | True | -| `config_profile_url` | Institutional config URL link. | `string` | | | True | - -## Max job request options - -Set the top limit for requested resources for any single job. - -| Parameter | Description | Type | Default | Required | Hidden | -|-----------|-----------|-----------|-----------|-----------|-----------| -| `max_cpus` | Maximum number of CPUs that can be requested for any single job.
    HelpUse to set an upper-limit for the CPU requirement for each process. Should be an integer e.g. `--max_cpus 1`
    | `integer` | 16 | | True | -| `max_memory` | Maximum amount of memory that can be requested for any single job.
    HelpUse to set an upper-limit for the memory requirement for each process. Should be a string in the format integer-unit e.g. `--max_memory '8.GB'`
    | `string` | 128.GB | | True | -| `max_time` | Maximum amount of time that can be requested for any single job.
    HelpUse to set an upper-limit for the time requirement for each process. Should be a string in the format integer-unit e.g. `--max_time '2.h'`
    | `string` | 240.h | | True | - -## Generic options - -Less common options for the pipeline, typically set in a config file. - -| Parameter | Description | Type | Default | Required | Hidden | -|-----------|-----------|-----------|-----------|-----------|-----------| -| `help` | Display help text. | `boolean` | | | True | -| `version` | Display version and exit. | `boolean` | | | True | -| `publish_dir_mode` | Method used to save pipeline results to output directory.
    HelpThe Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.
    | `string` | copy | | True | -| `email_on_fail` | Email address for completion summary, only when pipeline fails.
    HelpAn email address to send a summary email to when the pipeline is completed - ONLY sent if the pipeline does not exit successfully.
    | `string` | | | True | -| `plaintext_email` | Send plain-text email instead of HTML. | `boolean` | | | True | -| `max_multiqc_email_size` | File size limit when attaching MultiQC reports to summary emails. | `string` | 25.MB | | True | -| `monochrome_logs` | Do not use coloured log outputs. | `boolean` | | | True | -| `hook_url` | Incoming hook URL for messaging service
    HelpIncoming hook URL for messaging service. Currently, MS Teams and Slack are supported.
    | `string` | | | True | -| `multiqc_config` | Custom config file to supply to MultiQC. | `string` | | | True | -| `multiqc_logo` | Custom logo file to supply to MultiQC. File name must also be set in the MultiQC config file | `string` | | | True | -| `multiqc_methods_description` | Custom MultiQC yaml file containing HTML including a methods description. | `string` | | | | -| `validate_params` | Boolean whether to validate parameters against the schema at runtime | `boolean` | True | | True | -| `validationShowHiddenParams` | Show all params when using `--help`
    HelpBy default, parameters set as _hidden_ in the schema are not shown on the command line when a user runs with `--help`. Specifying this option will tell the pipeline to show all parameters.
    | `boolean` | | | True | -| `validationSkipDuplicateCheck` | nf-validation related parameter | `boolean` | | | True | -| `validationS3PathCheck` | Boolean whether to validate validate AWS S3 paths | `boolean` | | | True | -| `monochromeLogs` | Boolean whether to color nf-validation logs | `boolean` | | | True | - -## Workflow options - -Workflow options specific to genomic-medicine-sweden/nallo - -| Parameter | Description | Type | Default | Required | Hidden | -|-----------|-----------|-----------|-----------|-----------|-----------| -| `preset` | Enable or disable certain parts of the pipeline by default, depending on data type (`revio`, `pacbio`, `ONT_R10`) | `string` | revio | True | | -| `variant_caller` | Which short variant software to use (`deepvariant`) | `string` | deepvariant | | | -| `sv_caller` | Which structural variant caller to use (`severus`, `sniffles`) | `string` | severus | | | -| `phaser` | Which phasing software to use (`whatshap`, `hiphase_snv`, `hiphase_sv`) | `string` | whatshap | | | -| `hifiasm_mode` | Run hifiasm in hifi-only or hifi-trio mode (`hifi-only`, `trio-binning`) | `string` | hifi-only | | | -| `parallel_alignments` | If parallel_alignments is bigger than 1, input files will be split and aligned in parallel to reduce processing time. | `integer` | 1 | | | -| `parallel_snv` | If parallel_snv is bigger than 1, short variant calling will be done in parallel to reduce processing time. | `integer` | 13 | | | -| `vep_cache_version` | VEP cache version | `integer` | 110 | | | -| `vep_plugin_files` | A csv file with vep_plugins as header, and then paths to vep plugin files. Paths to pLI_values.txt and LoFtool_scores.txt are required. | `string` | | -| | -| `deepvariant_model_type` | Sets the model type used for DeepVariant. This is set automatically using `--preset` by default. | `string` | PACBIO | | True | -| `extra_modkit_options` | Extra options to modkit, used for test profile. | `string` | | | True | -| `extra_vep_options` | Extra options to VEP, used for test profile. | `string` | | | True | -| `extra_paraphase_options` | Extra options to Paraphase, used for test profile. | `string` | | | True | -| `extra_hifiasm_options` | Extra options to hifiasm, used for test profile. | `string` | | | True | - -## File inputs - -The different files that are required. Some are only required by certain workflows, see the usage documentation. - -| Parameter | Description | Type | Default | Required | Hidden | -|-----------|-----------|-----------|-----------|-----------|-----------| -| `cadd_prescored` | Path to a directory containing prescored indels for CADD.
    HelpThis folder contains the compressed files and indexes that would otherwise be in data/prescored folder as described in https://github.com/kircherlab/CADD-scripts/#manual-installation.
    | `string` | | | | -| `cadd_resources` | Path to a directory containing CADD annotations.
    HelpThis folder contains the uncompressed files that would otherwise be in data/annotation folder as described in https://github.com/kircherlab/CADD-scripts/#manual-installation.
    | `string` | | | | -| `par_regions` | Provide a bed file of chrX and chrY PAR regions for dipcall and DeepVariant | `string` | | | | -| `tandem_repeats` | A tandem repeat BED file for sniffles | `string` | | | | -| `trgt_repeats` | A BED file with repeats to be genotyped with TRGT | `string` | | | | -| `snp_db` | A csv file with echtvar databases to annotate SNVs with | `string` | | | | -| `variant_catalog` | A variant catalog json-file for stranger | `string` | | | | -| `variant_consequences_snv` | File containing list of SO terms listed in the order of severity from most severe to lease severe for annotating genomic SNVs. For more information check https://ensembl.org/info/genome/variation/prediction/predicted_data.html | `string` | | | | -| `vep_cache` | A path to the VEP cache location | `string` | | | | -| `bed` | A BED file with regions of interest, used to limit short variant calling. | `string` | | | | -| `hificnv_xy` | A BED file containing expected copy number regions for XY samples. | `string` | | | | -| `hificnv_xx` | A BED file containing expected copy number regions for XX samples. | `string` | | | | -| `hificnv_exclude` | A BED file specifying regions to exclude with HiFiCNV, such as centromeres. | `string` | | | | -| `reduced_penetrance` | A file with gene ids that have reduced penetrance. For use with genmod. | `string` | | | | -| `score_config_snv` | A SNV rank model config file for genmod. | `string` | | | | -| `somalier_sites` | A VCF of known polymorphic sites for somalier | `string` | | | | -| `validationFailUnrecognisedParams` | Validation of parameters fails when an unrecognised parameter is found.
    HelpBy default, when an unrecognised parameter is found, it returns a warning.
    | `boolean` | | | True | -| `validationLenientMode` | Validation of parameters in lenient more.
    HelpAllows string values that are parseable as numbers or booleans. For further information see [JSONSchema docs](https://github.com/everit-org/json-schema#lenient-mode).
    | `boolean` | | | True | -| `pipelines_testdata_base_path` | Base URL or local path to location of pipeline test dataset files | `string` | https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/ | | True | - +## Workflow skip options +Allows skipping certain parts of the pipeline +| Parameter | Description | Type | Default | Required | Hidden | +|-----------|-----------|-----------|-----------|-----------|-----------| +| `skip_qc` | Skip QC of reads | `boolean` | False | | | +| `skip_short_variant_calling` | Skip short variant calling | `boolean` | False | | | +| `skip_assembly_wf` | Skip genome assembly and assembly variant calling | `boolean` | False | | | +| `skip_mapping_wf` | Skip read mapping (alignment) | `boolean` | False | | | +| `skip_methylation_wf` | Skip generation of methylation pileups | `boolean` | False | | | +| `skip_repeat_calling` | Skip tandem repeat calling | `boolean` | False | | | +| `skip_repeat_annotation` | Skip tandem repeat annotation | `boolean` | False | | | +| `skip_phasing_wf` | Skip phasing of variants and haplotagging of reads | `boolean` | False | | | +| `skip_snv_annotation` | Skip short variant annotation | `boolean` | False | | | +| `skip_cnv_calling` | Skip CNV calling | `boolean` | False | | | +| `skip_call_paralogs` | Skip the calling of specific paralogous genes | `boolean` | False | | | +| `skip_rank_variants` | Skip ranking of short variants | `boolean` | False | | | + +## Input/output options + +Define where the pipeline should find input data and save output data. + +| Parameter | Description | Type | Default | Required | Hidden | +|-----------|-----------|-----------|-----------|-----------|-----------| +| `input` | Path to comma-separated file containing information about the samples in the experiment.
    HelpYou will need to create a design file with information about the samples in your experiment before running the pipeline. Use this parameter to specify its location. It has to be a comma-separated file with 3 columns, and a header row.
    | `string` | | True | | +| `outdir` | The output directory where the results will be saved. You have to use absolute paths to storage on Cloud infrastructure. | `string` | | True | | +| `email` | Email address for completion summary.
    HelpSet this parameter to your e-mail address to get a summary e-mail with details of the run sent to you when the workflow exits. If set in your user config file (`~/.nextflow/config`) then you don't need to specify this on the command line for every run.
    | `string` | | | | +| `multiqc_title` | MultiQC report title. Printed as page header, used for filename if not otherwise specified. | `string` | | | | + +## Reference genome options + +Reference genome related files and options required for the workflow. + +| Parameter | Description | Type | Default | Required | Hidden | +|-----------|-----------|-----------|-----------|-----------|-----------| +| `fasta` | Reference genome | `string` | | | | +| `genome` | Name of iGenomes reference.
    HelpIf using a reference genome configured in the pipeline using iGenomes, use this parameter to give the ID for the reference. This is then used to build the full paths for all required reference genome files e.g. `--genome GRCh38`.

    See the [nf-core website docs](https://nf-co.re/usage/reference_genomes) for more details.
    | `string` | | | | +| `igenomes_ignore` | Do not load the iGenomes reference config.
    HelpDo not load `igenomes.config` when running the pipeline. You may choose this option if you observe clashes between custom parameters and those supplied in `igenomes.config`.
    | `boolean` | True | | True | + +## Institutional config options + +Parameters used to describe centralised config profiles. These should not be edited. + +| Parameter | Description | Type | Default | Required | Hidden | +|-----------|-----------|-----------|-----------|-----------|-----------| +| `custom_config_version` | Git commit id for Institutional configs. | `string` | master | | True | +| `custom_config_base` | Base directory for Institutional configs.
    HelpIf you're running offline, Nextflow will not be able to fetch the institutional config files from the internet. If you don't need them, then this is not a problem. If you do need them, you should download the files from the repo and tell Nextflow where to find them with this parameter.
    | `string` | https://raw.githubusercontent.com/nf-core/configs/master | | True | +| `config_profile_name` | Institutional config name. | `string` | | | True | +| `config_profile_description` | Institutional config description. | `string` | | | True | +| `config_profile_contact` | Institutional config contact information. | `string` | | | True | +| `config_profile_url` | Institutional config URL link. | `string` | | | True | + +## Max job request options + +Set the top limit for requested resources for any single job. + +| Parameter | Description | Type | Default | Required | Hidden | +|-----------|-----------|-----------|-----------|-----------|-----------| +| `max_cpus` | Maximum number of CPUs that can be requested for any single job.
    HelpUse to set an upper-limit for the CPU requirement for each process. Should be an integer e.g. `--max_cpus 1`
    | `integer` | 16 | | True | +| `max_memory` | Maximum amount of memory that can be requested for any single job.
    HelpUse to set an upper-limit for the memory requirement for each process. Should be a string in the format integer-unit e.g. `--max_memory '8.GB'`
    | `string` | 128.GB | | True | +| `max_time` | Maximum amount of time that can be requested for any single job.
    HelpUse to set an upper-limit for the time requirement for each process. Should be a string in the format integer-unit e.g. `--max_time '2.h'`
    | `string` | 240.h | | True | + +## Generic options + +Less common options for the pipeline, typically set in a config file. + +| Parameter | Description | Type | Default | Required | Hidden | +|-----------|-----------|-----------|-----------|-----------|-----------| +| `help` | Display help text. | `boolean` | | | True | +| `version` | Display version and exit. | `boolean` | | | True | +| `publish_dir_mode` | Method used to save pipeline results to output directory.
    HelpThe Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.
    | `string` | copy | | True | +| `email_on_fail` | Email address for completion summary, only when pipeline fails.
    HelpAn email address to send a summary email to when the pipeline is completed - ONLY sent if the pipeline does not exit successfully.
    | `string` | | | True | +| `plaintext_email` | Send plain-text email instead of HTML. | `boolean` | | | True | +| `max_multiqc_email_size` | File size limit when attaching MultiQC reports to summary emails. | `string` | 25.MB | | True | +| `monochrome_logs` | Do not use coloured log outputs. | `boolean` | | | True | +| `hook_url` | Incoming hook URL for messaging service
    HelpIncoming hook URL for messaging service. Currently, MS Teams and Slack are supported.
    | `string` | | | True | +| `multiqc_config` | Custom config file to supply to MultiQC. | `string` | | | True | +| `multiqc_logo` | Custom logo file to supply to MultiQC. File name must also be set in the MultiQC config file | `string` | | | True | +| `multiqc_methods_description` | Custom MultiQC yaml file containing HTML including a methods description. | `string` | | | | +| `validate_params` | Boolean whether to validate parameters against the schema at runtime | `boolean` | True | | True | +| `validationShowHiddenParams` | Show all params when using `--help`
    HelpBy default, parameters set as _hidden_ in the schema are not shown on the command line when a user runs with `--help`. Specifying this option will tell the pipeline to show all parameters.
    | `boolean` | | | True | +| `validationSkipDuplicateCheck` | nf-validation related parameter | `boolean` | | | True | +| `validationS3PathCheck` | Boolean whether to validate validate AWS S3 paths | `boolean` | | | True | +| `monochromeLogs` | Boolean whether to color nf-validation logs | `boolean` | | | True | + +## Workflow options + +Workflow options specific to genomic-medicine-sweden/nallo + +| Parameter | Description | Type | Default | Required | Hidden | +|-----------|-----------|-----------|-----------|-----------|-----------| +| `preset` | Enable or disable certain parts of the pipeline by default, depending on data type (`revio`, `pacbio`, `ONT_R10`) | `string` | revio | True | | +| `variant_caller` | Which short variant software to use (`deepvariant`) | `string` | deepvariant | | | +| `sv_caller` | Which structural variant caller to use (`severus`, `sniffles`) | `string` | severus | | | +| `phaser` | Which phasing software to use (`whatshap`, `hiphase_snv`, `hiphase_sv`) | `string` | whatshap | | | +| `hifiasm_mode` | Run hifiasm in hifi-only or hifi-trio mode (`hifi-only`, `trio-binning`) | `string` | hifi-only | | | +| `parallel_alignments` | If parallel_alignments is bigger than 1, input files will be split and aligned in parallel to reduce processing time. | `integer` | 1 | | | +| `parallel_snv` | If parallel_snv is bigger than 1, short variant calling will be done in parallel to reduce processing time. | `integer` | 13 | | | +| `vep_cache_version` | VEP cache version | `integer` | 110 | | | +| `vep_plugin_files` | A csv file with vep_plugins as header, and then paths to vep plugin files. Paths to pLI_values.txt and LoFtool_scores.txt are required. | `string` | | | | +| `deepvariant_model_type` | Sets the model type used for DeepVariant. This is set automatically using `--preset` by default. | `string` | PACBIO | | True | +| `minimap2_read_mapping_preset` | Sets the minimap2-preset (-x) for read alignment. This is set automatically using the pipeline `--preset` by default. | `string` | | | True | +| `extra_modkit_options` | Extra options to modkit, used for test profile. | `string` | | | True | +| `extra_vep_options` | Extra options to VEP, used for test profile. | `string` | | | True | +| `extra_paraphase_options` | Extra options to Paraphase, used for test profile. | `string` | | | True | +| `extra_hifiasm_options` | Extra options to hifiasm, used for test profile. | `string` | | | True | + +## File inputs + +The different files that are required. Some are only required by certain workflows, see the usage documentation. + +| Parameter | Description | Type | Default | Required | Hidden | +|-----------|-----------|-----------|-----------|-----------|-----------| +| `cadd_prescored` | Path to a directory containing prescored indels for CADD.
    HelpThis folder contains the compressed files and indexes that would otherwise be in data/prescored folder as described in https://github.com/kircherlab/CADD-scripts/#manual-installation.
    | `string` | | | | +| `cadd_resources` | Path to a directory containing CADD annotations.
    HelpThis folder contains the uncompressed files that would otherwise be in data/annotation folder as described in https://github.com/kircherlab/CADD-scripts/#manual-installation.
    | `string` | | | | +| `par_regions` | Provide a bed file of chrX and chrY PAR regions for dipcall and DeepVariant | `string` | | | | +| `tandem_repeats` | A tandem repeat BED file for sniffles | `string` | | | | +| `trgt_repeats` | A BED file with repeats to be genotyped with TRGT | `string` | | | | +| `snp_db` | A csv file with echtvar databases to annotate SNVs with | `string` | | | | +| `variant_catalog` | A variant catalog json-file for stranger | `string` | | | | +| `variant_consequences_snv` | File containing list of SO terms listed in the order of severity from most severe to lease severe for annotating genomic SNVs. For more information check https://ensembl.org/info/genome/variation/prediction/predicted_data.html | `string` | | | | +| `vep_cache` | A path to the VEP cache location | `string` | | | | +| `bed` | A BED file with regions of interest, used to limit short variant calling. | `string` | | | | +| `hificnv_xy` | A BED file containing expected copy number regions for XY samples. | `string` | | | | +| `hificnv_xx` | A BED file containing expected copy number regions for XX samples. | `string` | | | | +| `hificnv_exclude` | A BED file specifying regions to exclude with HiFiCNV, such as centromeres. | `string` | | | | +| `reduced_penetrance` | A file with gene ids that have reduced penetrance. For use with genmod. | `string` | | | | +| `score_config_snv` | A SNV rank model config file for genmod. | `string` | | | | +| `somalier_sites` | A VCF of known polymorphic sites for somalier | `string` | | | | +| `validationFailUnrecognisedParams` | Validation of parameters fails when an unrecognised parameter is found.
    HelpBy default, when an unrecognised parameter is found, it returns a warning.
    | `boolean` | | | True | +| `validationLenientMode` | Validation of parameters in lenient more.
    HelpAllows string values that are parseable as numbers or booleans. For further information see [JSONSchema docs](https://github.com/everit-org/json-schema#lenient-mode).
    | `boolean` | | | True | +| `pipelines_testdata_base_path` | Base URL or local path to location of pipeline test dataset files | `string` | https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/ | | True | diff --git a/nextflow.config b/nextflow.config index 031db0ef..98acd973 100644 --- a/nextflow.config +++ b/nextflow.config @@ -10,46 +10,47 @@ params { // Input options - input = null - bed = null - cadd_resources = null - cadd_prescored = null - par_regions = null - tandem_repeats = null - trgt_repeats = null - variant_catalog = null - reduced_penetrance = null - score_config_snv = null - snp_db = null - variant_consequences_snv = null - vep_cache = null - vep_plugin_files = null - hificnv_xy = null - hificnv_xx = null - hificnv_exclude = null - somalier_sites = null + input = null + bed = null + cadd_resources = null + cadd_prescored = null + par_regions = null + tandem_repeats = null + trgt_repeats = null + variant_catalog = null + reduced_penetrance = null + score_config_snv = null + snp_db = null + variant_consequences_snv = null + vep_cache = null + vep_plugin_files = null + hificnv_xy = null + hificnv_xx = null + hificnv_exclude = null + somalier_sites = null // Skip parts of the workflow - skip_assembly_wf = params.preset == 'ONT_R10' ? true : false - skip_call_paralogs = false - skip_cnv_calling = false - skip_mapping_wf = false - skip_methylation_wf = params.preset == 'pacbio' ? true : false - skip_phasing_wf = false - skip_qc = false - skip_rank_variants = false - skip_repeat_calling = params.preset == 'ONT_R10' ? true : false - skip_repeat_annotation = params.preset == 'ONT_R10' ? true : false - skip_short_variant_calling = false - skip_snv_annotation = false + skip_assembly_wf = params.preset == 'ONT_R10' ? true : false + skip_call_paralogs = false + skip_cnv_calling = false + skip_mapping_wf = false + skip_methylation_wf = params.preset == 'pacbio' ? true : false + skip_phasing_wf = false + skip_qc = false + skip_rank_variants = false + skip_repeat_calling = params.preset == 'ONT_R10' ? true : false + skip_repeat_annotation = params.preset == 'ONT_R10' ? true : false + skip_short_variant_calling = false + skip_snv_annotation = false - deepvariant_model_type = params.preset == 'ONT_R10' ? 'ONT_R104' : 'PACBIO' - phaser = 'whatshap' - sv_caller = 'severus' - preset = 'revio' - hifiasm_mode = 'hifi-only' - variant_caller = 'deepvariant' - vep_cache_version = 110 + deepvariant_model_type = params.preset == 'ONT_R10' ? 'ONT_R104' : 'PACBIO' + minimap2_read_mapping_preset = params.preset == 'ONT_R10' ? 'lr:hq' : 'lr:hqae' + phaser = 'whatshap' + sv_caller = 'severus' + preset = 'revio' + hifiasm_mode = 'hifi-only' + variant_caller = 'deepvariant' + vep_cache_version = 110 // Test config options extra_modkit_options = '' diff --git a/nextflow_schema.json b/nextflow_schema.json index 77448f74..c52c92db 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -409,6 +409,12 @@ "hidden": true, "enum": ["PACBIO", "ONT_R104"] }, + "minimap2_read_mapping_preset": { + "type": "string", + "description": "Sets the minimap2-preset (-x) for read alignment. This is set automatically using the pipeline `--preset` by default.", + "hidden": true, + "enum": ["map-hifi", "map-ont", "lr:hq", "lr:hqae"] + }, "extra_modkit_options": { "type": "string", "hidden": true, diff --git a/tests/main.nf.test.snap b/tests/main.nf.test.snap index ec5566aa..119a60a8 100644 --- a/tests/main.nf.test.snap +++ b/tests/main.nf.test.snap @@ -6,9 +6,9 @@ "test.samples.tsv:md5,1685dc6cb8c6b9806ca636662980d686", "test.html:md5,d05e0eceb70ada3a0c25f99a16ad1889", "multiqc_citations.txt:md5,a27affce20d456d20ed387097a4f0350", - "multiqc_fastqc.txt:md5,f0717ca13d848aa8f5eaa5d0dba92178", + "multiqc_fastqc.txt:md5,6168de97dd0d63807f925487735bdb60", "multiqc_somalier.txt:md5,20b4c5b2d5b94b77fb800548e07a874e", - "74b4822241bd8d1bc42f494f1f3e326c", + "5df05408bd4f18a4ef1555bc5800601a", "HG002_Revio.asm.bp.hap1.p_ctg.assembly_summary:md5,e4da3107f2421d42c6e2f59bff4e47d9", "HG002_Revio.asm.bp.hap2.p_ctg.assembly_summary:md5,bf908610472e602fd986b9d4a4d58b9e", "514d30ef8ff2c0a3d9a19ebc702ba883", @@ -17,11 +17,11 @@ "HG002_Revio.hap1.bed:md5,3d75c9538e748a7672b934bdbde90df3", "HG002_Revio.hap2.bed:md5,9ac411d49f08a8ec70e4792890e9faf9", "HG002_Revio.HG002_Revio.copynum.bedgraph:md5,517bc59c1b235490c79aa8319437b033", - "HG002_Revio.HG002_Revio.depth.bw:md5,20757c985f4713b8568dee05765db701", - "HG002_Revio.HG002_Revio.maf.bw:md5,4699d7a664277863f06eb48c3cba3c41", - "HG002_Revio.mosdepth.global.dist.txt:md5,6186315d4d65eda85553af82a98829d1", - "HG002_Revio.mosdepth.region.dist.txt:md5,c6c7ee8f056b8b2b92c97ec472b1db16", - "HG002_Revio.mosdepth.summary.txt:md5,35c51f1ad9d2856d1e6446205f19a8e3", + "HG002_Revio.HG002_Revio.depth.bw:md5,0b9cae1d0646fdd2f690d4255282ee8f", + "HG002_Revio.HG002_Revio.maf.bw:md5,bacc69449af34efe8576245ae8188719", + "HG002_Revio.mosdepth.global.dist.txt:md5,63701e857361046628f89cb84988ea1d", + "HG002_Revio.mosdepth.region.dist.txt:md5,6b46396518979ff9d9771cb8a8fbbab0", + "HG002_Revio.mosdepth.summary.txt:md5,311aad293c6d8a646b6dd4edc337845c", "HG002_Revio.asm.bp.hap1.p_ctg.fasta.gz:md5,eff16bf92abff02c36cceb2eb5a9871c", "HG002_Revio.asm.bp.hap2.p_ctg.fasta.gz:md5,e28c886baffe24c1a2972a1d95b1b250", "HG002_Revio.dip.vcf.gz:md5,9259613d7b01347b2d817d4e547c4203", @@ -32,12 +32,12 @@ "HG002_Revio.pair.vcf.gz:md5,a390558ab50ce0dc9efec070b1c70c22", "HG002_Revio.HG002_Revio.vcf.gz:md5,771f7d9ecbd161dedfbdd053ceff0d52", "HG002_Revio.HG002_Revio.vcf.gz.tbi:md5,65d6930f79e626a5542091b7a419dc2b", - "HG002_Revio_modkit_pileup.bed.gz:md5,a52bb9ab393e682d0b7118ef2efe5c15", - "HG002_Revio_modkit_pileup.bed.gz.tbi:md5,08312c13316ed9b4b582897c210ecb58", + "HG002_Revio_modkit_pileup.bed.gz:md5,55496cdcd7e4ccad86adee3cb819da56", + "HG002_Revio_modkit_pileup.bed.gz.tbi:md5,b217c5e971ecb0b8c874b0038f0d2ae4", "fcc3f220bb09d3264f97e7f620779be0", - "HG002_Revio_cramino_aligned_phased.arrow:md5,72df2934ff8aa7e1bf8cf8a4881a0d2a", - "HG002_Revio_cramino_aligned.arrow:md5,72df2934ff8aa7e1bf8cf8a4881a0d2a", - "HG002_Revio.regions.bed.gz:md5,e051f64c7a780d67ea6727a327dd4281", + "HG002_Revio_cramino_aligned_phased.arrow:md5,a76219e9046db32c4b3d6d78425c5d78", + "HG002_Revio_cramino_aligned.arrow:md5,a76219e9046db32c4b3d6d78425c5d78", + "HG002_Revio.regions.bed.gz:md5,31db0f14146b65e339b54b963c304947", "HG002_Revio.regions.bed.gz.csi:md5,026eef1c69fb4aa3a1687463fe2088ab", "HG002_Revio_sorted.vcf.gz:md5,fbb5699b8f74fc105fb154e8fac7bfea", "HG002_Revio_sorted.vcf.gz.tbi:md5,0466518ee265ba63160ed27cee0dec88", @@ -49,17 +49,17 @@ ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.3" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-09-12T12:19:02.681485167" + "timestamp": "2024-09-20T12:30:55.088135056" }, "test profile - multisample": { "content": [ "test.ped:md5,24d8694d580f782ed77d4d1b5c6f6fb4", "multiqc_citations.txt:md5,a27affce20d456d20ed387097a4f0350", - "multiqc_fastqc.txt:md5,18ca1a3fb2afa8988dc5d604c049cd9c", - "74b4822241bd8d1bc42f494f1f3e326c", + "multiqc_fastqc.txt:md5,37674ae5d0d56386d87f38158fa18980", + "5df05408bd4f18a4ef1555bc5800601a", "HG002_Revio_A.asm.bp.hap1.p_ctg.assembly_summary:md5,e4da3107f2421d42c6e2f59bff4e47d9", "HG002_Revio_A.asm.bp.hap2.p_ctg.assembly_summary:md5,bf908610472e602fd986b9d4a4d58b9e", "514d30ef8ff2c0a3d9a19ebc702ba883", @@ -68,11 +68,11 @@ "HG002_Revio_A.hap1.bed:md5,3d75c9538e748a7672b934bdbde90df3", "HG002_Revio_A.hap2.bed:md5,9ac411d49f08a8ec70e4792890e9faf9", "HG002_Revio_A.HG002_Revio_A.copynum.bedgraph:md5,517bc59c1b235490c79aa8319437b033", - "HG002_Revio_A.HG002_Revio_A.depth.bw:md5,20757c985f4713b8568dee05765db701", - "HG002_Revio_A.HG002_Revio_A.maf.bw:md5,4699d7a664277863f06eb48c3cba3c41", - "HG002_Revio_A.mosdepth.global.dist.txt:md5,6186315d4d65eda85553af82a98829d1", - "HG002_Revio_A.mosdepth.region.dist.txt:md5,c6c7ee8f056b8b2b92c97ec472b1db16", - "HG002_Revio_A.mosdepth.summary.txt:md5,35c51f1ad9d2856d1e6446205f19a8e3", + "HG002_Revio_A.HG002_Revio_A.depth.bw:md5,0b9cae1d0646fdd2f690d4255282ee8f", + "HG002_Revio_A.HG002_Revio_A.maf.bw:md5,bacc69449af34efe8576245ae8188719", + "HG002_Revio_A.mosdepth.global.dist.txt:md5,63701e857361046628f89cb84988ea1d", + "HG002_Revio_A.mosdepth.region.dist.txt:md5,6b46396518979ff9d9771cb8a8fbbab0", + "HG002_Revio_A.mosdepth.summary.txt:md5,311aad293c6d8a646b6dd4edc337845c", "HG002_Revio_A.asm.bp.hap1.p_ctg.fasta.gz:md5,eff16bf92abff02c36cceb2eb5a9871c", "HG002_Revio_A.asm.bp.hap2.p_ctg.fasta.gz:md5,e28c886baffe24c1a2972a1d95b1b250", "HG002_Revio_A.dip.vcf.gz:md5,61ad90b86d72eb43541e0435efcee852", @@ -83,12 +83,12 @@ "HG002_Revio_A.pair.vcf.gz:md5,233375a4067362bb6799d5ade46db537", "HG002_Revio_A.HG002_Revio_A.vcf.gz:md5,e575fbadcd826243561192310f234c82", "HG002_Revio_A.HG002_Revio_A.vcf.gz.tbi:md5,e27fe63e51a2cfaec020ad0a1aec4a7f", - "HG002_Revio_A_modkit_pileup.bed.gz:md5,a52bb9ab393e682d0b7118ef2efe5c15", - "HG002_Revio_A_modkit_pileup.bed.gz.tbi:md5,08312c13316ed9b4b582897c210ecb58", + "HG002_Revio_A_modkit_pileup.bed.gz:md5,55496cdcd7e4ccad86adee3cb819da56", + "HG002_Revio_A_modkit_pileup.bed.gz.tbi:md5,b217c5e971ecb0b8c874b0038f0d2ae4", "fcc3f220bb09d3264f97e7f620779be0", - "HG002_Revio_A_cramino_aligned_phased.arrow:md5,72df2934ff8aa7e1bf8cf8a4881a0d2a", - "HG002_Revio_A_cramino_aligned.arrow:md5,72df2934ff8aa7e1bf8cf8a4881a0d2a", - "HG002_Revio_A.regions.bed.gz:md5,e051f64c7a780d67ea6727a327dd4281", + "HG002_Revio_A_cramino_aligned_phased.arrow:md5,a76219e9046db32c4b3d6d78425c5d78", + "HG002_Revio_A_cramino_aligned.arrow:md5,a76219e9046db32c4b3d6d78425c5d78", + "HG002_Revio_A.regions.bed.gz:md5,31db0f14146b65e339b54b963c304947", "HG002_Revio_A.regions.bed.gz.csi:md5,026eef1c69fb4aa3a1687463fe2088ab", "HG002_Revio_A_sorted.vcf.gz:md5,680938d6ebeafe73d8df0b21c0310276", "HG002_Revio_A_sorted.vcf.gz.tbi:md5,a6554ab817e7c232a1554ea85fa00151", @@ -98,7 +98,7 @@ "# The command line was:\tbcftools stats HG002_Revio_A.vcf.gz", "#" ], - "4fc125e25365fa6e33193fd436ae135d", + "e9aea8a85ecd1b9dde90e1a08e4a390d", "HG002_Revio_B.asm.bp.hap1.p_ctg.assembly_summary:md5,8ea073b13622d98785a0ba249791b667", "HG002_Revio_B.asm.bp.hap2.p_ctg.assembly_summary:md5,a9dacca74b4adfefd877b64c3cdd731c", "8cb89b73870933ceef28ea1de5655ff8", @@ -107,11 +107,11 @@ "HG002_Revio_B.hap1.bed:md5,4ff9c348e930b1272b54eae7d8255fc3", "HG002_Revio_B.hap2.bed:md5,e95100eef23cdb0e0785a1ac6bd9a70d", "HG002_Revio_B.HG002_Revio_B.copynum.bedgraph:md5,42095da173e46804977bbbecc2fda3aa", - "HG002_Revio_B.HG002_Revio_B.depth.bw:md5,38de98b391638ae12014bebffed42d66", - "HG002_Revio_B.HG002_Revio_B.maf.bw:md5,44e11b3b0cd1db5fbbc2d45bacf8f5b0", - "HG002_Revio_B.mosdepth.global.dist.txt:md5,830a8b737fea939dcfea4d1626e60576", - "HG002_Revio_B.mosdepth.region.dist.txt:md5,d4cb66ac28dc6816869a73757226f902", - "HG002_Revio_B.mosdepth.summary.txt:md5,191877ae5228e7880276585557a7b218", + "HG002_Revio_B.HG002_Revio_B.depth.bw:md5,45c82491b7119b2d427c5bf2167811c5", + "HG002_Revio_B.HG002_Revio_B.maf.bw:md5,b27799b62d65661b384aa61944bd0590", + "HG002_Revio_B.mosdepth.global.dist.txt:md5,5c2dd519f3abc19c00d1a0618cf477d4", + "HG002_Revio_B.mosdepth.region.dist.txt:md5,4a6ccfd85f9837c6c57b3ddaa8c7d263", + "HG002_Revio_B.mosdepth.summary.txt:md5,6c1d1590ed9423552d56ee456c89e6ef", "HG002_Revio_B.asm.bp.hap1.p_ctg.fasta.gz:md5,bafe70d988eefabb0ce08039b57a6580", "HG002_Revio_B.asm.bp.hap2.p_ctg.fasta.gz:md5,9fa9e6a5e60d57ecb43656970d5a6cf3", "HG002_Revio_B.dip.vcf.gz:md5,8efc621eb46b4012e6092ac814d18465", @@ -122,12 +122,12 @@ "HG002_Revio_B.pair.vcf.gz:md5,62c75ce4450a5fde9fdc6e552f5c2cd9", "HG002_Revio_B.HG002_Revio_B.vcf.gz:md5,76bf24c26a6310f885a03a64a511098e", "HG002_Revio_B.HG002_Revio_B.vcf.gz.tbi:md5,ef6bc66b37b179727ac0c8635d39a8dd", - "HG002_Revio_B_modkit_pileup.bed.gz:md5,60f856e145343697ff581e91fda288ff", - "HG002_Revio_B_modkit_pileup.bed.gz.tbi:md5,d04e7a6fb67e9b5a8342ae979bc0e5cd", + "HG002_Revio_B_modkit_pileup.bed.gz:md5,c217ccd3e8514a6a5eca0e163dee9f20", + "HG002_Revio_B_modkit_pileup.bed.gz.tbi:md5,383b647625175e59420c5d8044ba711f", "fcc3f220bb09d3264f97e7f620779be0", - "HG002_Revio_B_cramino_aligned_phased.arrow:md5,544a6513e7604d6425a664855212eced", - "HG002_Revio_B_cramino_aligned.arrow:md5,544a6513e7604d6425a664855212eced", - "HG002_Revio_B.regions.bed.gz:md5,9c4c037139c752c60385d3c0b905af7f", + "HG002_Revio_B_cramino_aligned_phased.arrow:md5,3bb08ac5958c6cb0801f319066c3a1b2", + "HG002_Revio_B_cramino_aligned.arrow:md5,3bb08ac5958c6cb0801f319066c3a1b2", + "HG002_Revio_B.regions.bed.gz:md5,837978e7b90ef81cb5aa015fbe7bb4a6", "HG002_Revio_B.regions.bed.gz.csi:md5,d0640255d527e36655281f64e184b02c", "HG002_Revio_B_sorted.vcf.gz:md5,a8aaec5870a60a4fabf6aff849ba1e61", "HG002_Revio_B_sorted.vcf.gz.tbi:md5,e255a5ea92885967f0c126bddc8ea3b2", @@ -139,53 +139,53 @@ ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.3" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-09-12T12:22:11.460202495" + "timestamp": "2024-09-20T12:32:28.96463908" }, "test profile - multisample - ont - parallel_alignments 2 - parallel_snv 1": { "content": [ "test.ped:md5,deb1ee6bd38d6e8f7cb92801d8a12f12", "multiqc_citations.txt:md5,a27affce20d456d20ed387097a4f0350", - "multiqc_fastqc.txt:md5,80f34d024a229e935b3b8de6a4c0cc66", - "34f94d8ea8bcbab685c51eab364d8e7f", + "multiqc_fastqc.txt:md5,5254c5d578af3a24182ccf3248183ac6", + "53495f0b494894437c243a5c5f47c4fc", "HG002_ONT_A.HG002_ONT_A.copynum.bedgraph:md5,4c5517c1783afa11ff93c8d8627fbe42", - "HG002_ONT_A.HG002_ONT_A.depth.bw:md5,7fc75ebffd8433e8bcfe9726ff97f023", - "HG002_ONT_A.HG002_ONT_A.maf.bw:md5,c3e4244bb52fb1decbf608db5a3ff322", - "HG002_ONT_A.mosdepth.global.dist.txt:md5,0370c56a598e397700218ffc74ce59fe", - "HG002_ONT_A.mosdepth.region.dist.txt:md5,190d4e34336c81cc652e84953a08b71f", - "HG002_ONT_A.mosdepth.summary.txt:md5,234b4084f2ed119bc2106f2fd148a81f", + "HG002_ONT_A.HG002_ONT_A.depth.bw:md5,7c1ad330a37ae8c9bfc89d5ed4f327ab", + "HG002_ONT_A.HG002_ONT_A.maf.bw:md5,c3a2453422665c6c25b7114ee258b85f", + "HG002_ONT_A.mosdepth.global.dist.txt:md5,5ae0972357f99aa481a0bf12fb9e0b0b", + "HG002_ONT_A.mosdepth.region.dist.txt:md5,023b1c6aeaf8fa5ededd6b711a5cd012", + "HG002_ONT_A.mosdepth.summary.txt:md5,c3b664b0983213f73edf3c0d5a0b04a2", "HG002_ONT_A.HG002_ONT_A.vcf.gz:md5,4814c13b0127f88bfa7857bf19e17875", "HG002_ONT_A.HG002_ONT_A.vcf.gz.tbi:md5,0a5ace7b099fbe88ba3806e7ce83d653", - "HG002_ONT_A_modkit_pileup.bed.gz:md5,89d5b1f8af103c162444a66979777dce", - "HG002_ONT_A_modkit_pileup.bed.gz.tbi:md5,0505b424341a3e80d68c8c7d6b783a74", + "HG002_ONT_A_modkit_pileup.bed.gz:md5,e04d51deb9019e67e7ddd7f1bd82a580", + "HG002_ONT_A_modkit_pileup.bed.gz.tbi:md5,1e198df01c63afea13ef9d04e2d03684", "7b8dc04d36dc2290fd031da73e8c8553", - "HG002_ONT_A_cramino_aligned_phased.arrow:md5,99a4580cc8b89e3678091e975627821f", - "HG002_ONT_A_cramino_aligned.arrow:md5,99a4580cc8b89e3678091e975627821f", - "HG002_ONT_A.regions.bed.gz:md5,533fce5065e12a67be44665c7273daf1", - "HG002_ONT_A.regions.bed.gz.csi:md5,11db27a464f8996bae5521ee7d71c1ce", + "HG002_ONT_A_cramino_aligned_phased.arrow:md5,d2a5c81595fa34925ab8f03078487d81", + "HG002_ONT_A_cramino_aligned.arrow:md5,d2a5c81595fa34925ab8f03078487d81", + "HG002_ONT_A.regions.bed.gz:md5,da66d741bb69b5c259a8611848839dc7", + "HG002_ONT_A.regions.bed.gz.csi:md5,76f06311933695287c8716fe2c8a2d20", [ "# This file was produced by bcftools stats (1.20+htslib-1.20) and can be plotted using plot-vcfstats.", "# The command line was:\tbcftools stats HG002_ONT_A.vcf.gz", "#" ], - "91f793ae89c2b23f54150d95dcbc4fa8", + "325c284fc112dff72679b38c9ef2c2da", "HG002_ONT_B.HG002_ONT_B.copynum.bedgraph:md5,7d30f621d502d16301fa79cf48a3b903", - "HG002_ONT_B.HG002_ONT_B.depth.bw:md5,07800e1b30b26a8a7d82b78602855d1f", - "HG002_ONT_B.HG002_ONT_B.maf.bw:md5,593987ba67b23eceba1a7e819ed365d6", - "HG002_ONT_B.mosdepth.global.dist.txt:md5,00bce9b60e9f2d0f7b6cd994e022ac4d", - "HG002_ONT_B.mosdepth.region.dist.txt:md5,7e7f11241f89468db6a603cec72a7309", - "HG002_ONT_B.mosdepth.summary.txt:md5,651cf3d5e11b98dfc207641b26cf736a", + "HG002_ONT_B.HG002_ONT_B.depth.bw:md5,633a878a4258d2bf767df96388abb4cd", + "HG002_ONT_B.HG002_ONT_B.maf.bw:md5,1951883a15f76e13f5a3ae01c062e265", + "HG002_ONT_B.mosdepth.global.dist.txt:md5,e551c7a9d1a26cecc99d15ac93a4a924", + "HG002_ONT_B.mosdepth.region.dist.txt:md5,11154f617f447f4c59dc192d9af4249f", + "HG002_ONT_B.mosdepth.summary.txt:md5,bcb06b29c22cb6ad200f283e72c29653", "HG002_ONT_B.HG002_ONT_B.vcf.gz:md5,c4b0cf6c2efebbf746c6b4d8b6c94c57", "HG002_ONT_B.HG002_ONT_B.vcf.gz.tbi:md5,de293b6c556d537ccfddf659b138610b", - "HG002_ONT_B_modkit_pileup.bed.gz:md5,4a9eb8c4e5ece4f11f61f2ddc8aaaeaa", - "HG002_ONT_B_modkit_pileup.bed.gz.tbi:md5,a2a56078bbf5b51f69c28ca66a13d32f", + "HG002_ONT_B_modkit_pileup.bed.gz:md5,95a96ceddc795c9c5c4a8d9e6f9d3b5b", + "HG002_ONT_B_modkit_pileup.bed.gz.tbi:md5,8276c6feeac0be16274198831c75023d", "7b8dc04d36dc2290fd031da73e8c8553", - "HG002_ONT_B_cramino_aligned_phased.arrow:md5,51481bfdf1d834fb123164f0e75d5c54", - "HG002_ONT_B_cramino_aligned.arrow:md5,51481bfdf1d834fb123164f0e75d5c54", - "HG002_ONT_B.regions.bed.gz:md5,b68e7db513f4c0d72808a842108f3bf8", - "HG002_ONT_B.regions.bed.gz.csi:md5,9965b811c8f34b28747f7549fa86c4ba", + "HG002_ONT_B_cramino_aligned_phased.arrow:md5,61af72539e105cec79db7c9b78eb15a7", + "HG002_ONT_B_cramino_aligned.arrow:md5,61af72539e105cec79db7c9b78eb15a7", + "HG002_ONT_B.regions.bed.gz:md5,1aa62d46a1e6683da3d44c59c502354b", + "HG002_ONT_B.regions.bed.gz.csi:md5,11db27a464f8996bae5521ee7d71c1ce", [ "# This file was produced by bcftools stats (1.20+htslib-1.20) and can be plotted using plot-vcfstats.", "# The command line was:\tbcftools stats HG002_ONT_B.vcf.gz", @@ -193,9 +193,9 @@ ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.3" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-09-12T12:24:19.644490944" + "timestamp": "2024-09-20T12:33:56.873568079" } } \ No newline at end of file From f0b6e734362b17020f1987cb222ee2827a4da74b Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Mon, 23 Sep 2024 17:21:58 +0200 Subject: [PATCH 020/106] Patch to dev, pin dev version test-data (#397) * Fix release test profile paths * Update changelog and schema --- CHANGELOG.md | 7 ++ conf/test.config | 34 +++++----- docs/parameters.md | 2 +- nextflow.config | 2 +- nextflow_schema.json | 2 +- .../local/call_svs/tests/main.nf.test | 66 +++++++++---------- .../local/snv_annotation/tests/main.nf.test | 16 ++--- tests/main.nf.test | 23 ++++--- tests/nextflow.config | 2 +- 9 files changed, 83 insertions(+), 71 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7895c1de..b38a88aa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -33,6 +33,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#381](https://github.com/genomic-medicine-sweden/nallo/pull/381) - Updated CI nf-test version to 0.9.0 - [#382](https://github.com/genomic-medicine-sweden/nallo/pull/382) - Changed vep_plugin_files description in schema and docs - [#393](https://github.com/genomic-medicine-sweden/nallo/pull/393) - Changed the default minimap2 preset for PacBio data from `map-hifi` to `lr:hqae` +- [#397](https://github.com/genomic-medicine-sweden/nallo/pull/397) - Changed `pipelines_testdata_base_path` to pin a specific commit ### `Removed` @@ -73,6 +74,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 > Version has been added if just the new version information is present. > Version has been removed if new version information isn't present. +## 0.3.2 - [2024-09-20] + +### `Fixed` + +- [#396](https://github.com/genomic-medicine-sweden/nallo/pull/396) - Fixed the release test profile not working, by pinning the testdata used [#395](https://github.com/genomic-medicine-sweden/nallo/issues/395) + ## 0.3.1 - [2024-09-11] ### `Fixed` diff --git a/conf/test.config b/conf/test.config index cad5f2ef..cf241eec 100644 --- a/conf/test.config +++ b/conf/test.config @@ -22,25 +22,25 @@ params { modules_testdata_base_path = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/' // Base directory for genomic-medicine-sweden/nallo test data - pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/' + pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/nallo/1f4e062926fc10f70a38e917e5771edb333e89bf/' // References - fasta = params.pipelines_testdata_base_path + 'nallo/reference/hg38.test.fa.gz' - input = 'https://github.com/genomic-medicine-sweden/test-datasets/raw/2948776ddf24ea131f527aa1f2dc23a43bb7b952/testdata/samplesheet.csv' - bed = params.pipelines_testdata_base_path + 'nallo/reference/test_data.bed' - hificnv_xy = params.pipelines_testdata_base_path + 'nallo/reference/expected_cn.hg38.XY.bed' - hificnv_xx = params.pipelines_testdata_base_path + 'nallo/reference/expected_cn.hg38.XX.bed' - hificnv_exclude = params.pipelines_testdata_base_path + 'nallo/reference/empty.bed' - par_regions = params.pipelines_testdata_base_path + 'nallo/reference/hs38.PAR.bed' - trgt_repeats = params.pipelines_testdata_base_path + 'nallo/reference/pathogenic_repeats.hg38.bed' - variant_catalog = params.pipelines_testdata_base_path + 'nallo/reference/variant_catalog_grch38.json' - vep_cache = params.pipelines_testdata_base_path + 'nallo/reference/vep_cache_test_data.tar.gz' - vep_plugin_files = params.pipelines_testdata_base_path + 'nallo/reference/vep_plugin_files.csv' - snp_db = params.pipelines_testdata_base_path + 'nallo/testdata/snp_dbs.csv' - reduced_penetrance = params.pipelines_testdata_base_path + 'nallo/reference/reduced_penetrance.tsv' - score_config_snv = params.pipelines_testdata_base_path + 'nallo/reference/rank_model_snv.ini' - variant_consequences_snv = params.pipelines_testdata_base_path + 'nallo/reference/variant_consequences_v2.txt' - somalier_sites = params.pipelines_testdata_base_path + 'nallo/reference/somalier_sites.vcf.gz' + fasta = params.pipelines_testdata_base_path + 'reference/hg38.test.fa.gz' + input = params.pipelines_testdata_base_path + 'testdata/samplesheet.csv' + bed = params.pipelines_testdata_base_path + 'reference/test_data.bed' + hificnv_xy = params.pipelines_testdata_base_path + 'reference/expected_cn.hg38.XY.bed' + hificnv_xx = params.pipelines_testdata_base_path + 'reference/expected_cn.hg38.XX.bed' + hificnv_exclude = params.pipelines_testdata_base_path + 'reference/empty.bed' + par_regions = params.pipelines_testdata_base_path + 'reference/hs38.PAR.bed' + trgt_repeats = params.pipelines_testdata_base_path + 'reference/pathogenic_repeats.hg38.bed' + variant_catalog = params.pipelines_testdata_base_path + 'reference/variant_catalog_grch38.json' + vep_cache = params.pipelines_testdata_base_path + 'reference/vep_cache_test_data.tar.gz' + vep_plugin_files = params.pipelines_testdata_base_path + 'reference/vep_plugin_files.csv' + snp_db = params.pipelines_testdata_base_path + 'testdata/snp_dbs.csv' + reduced_penetrance = params.pipelines_testdata_base_path + 'reference/reduced_penetrance.tsv' + score_config_snv = params.pipelines_testdata_base_path + 'reference/rank_model_snv.ini' + variant_consequences_snv = params.pipelines_testdata_base_path + 'reference/variant_consequences_v2.txt' + somalier_sites = params.pipelines_testdata_base_path + 'reference/somalier_sites.vcf.gz' // Pipeline options parallel_snv = 2 diff --git a/docs/parameters.md b/docs/parameters.md index b4a48297..ce5c816d 100644 --- a/docs/parameters.md +++ b/docs/parameters.md @@ -134,4 +134,4 @@ The different files that are required. Some are only required by certain workflo | `somalier_sites` | A VCF of known polymorphic sites for somalier | `string` | | | | | `validationFailUnrecognisedParams` | Validation of parameters fails when an unrecognised parameter is found.
    HelpBy default, when an unrecognised parameter is found, it returns a warning.
    | `boolean` | | | True | | `validationLenientMode` | Validation of parameters in lenient more.
    HelpAllows string values that are parseable as numbers or booleans. For further information see [JSONSchema docs](https://github.com/everit-org/json-schema#lenient-mode).
    | `boolean` | | | True | -| `pipelines_testdata_base_path` | Base URL or local path to location of pipeline test dataset files | `string` | https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/ | | True | +| `pipelines_testdata_base_path` | Base URL or local path to location of pipeline test dataset files | `string` | https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/1f4e062926fc10f70a38e917e5771edb333e89bf/ | | True | diff --git a/nextflow.config b/nextflow.config index 98acd973..f8e3ce96 100644 --- a/nextflow.config +++ b/nextflow.config @@ -85,7 +85,7 @@ params { hook_url = null help = false version = false - pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/' + pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/1f4e062926fc10f70a38e917e5771edb333e89bf/' // Config options config_profile_name = null diff --git a/nextflow_schema.json b/nextflow_schema.json index c52c92db..1bb0bbe3 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -570,7 +570,7 @@ "type": "string", "fa_icon": "far fa-check-circle", "description": "Base URL or local path to location of pipeline test dataset files", - "default": "https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/", + "default": "https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/1f4e062926fc10f70a38e917e5771edb333e89bf/", "hidden": true } } diff --git a/subworkflows/local/call_svs/tests/main.nf.test b/subworkflows/local/call_svs/tests/main.nf.test index aa488a9c..8798f4a0 100644 --- a/subworkflows/local/call_svs/tests/main.nf.test +++ b/subworkflows/local/call_svs/tests/main.nf.test @@ -12,7 +12,7 @@ nextflow_workflow { """ input[0] = [ [ id:'test' ], - file(params.pipelines_testdata_base_path + 'nallo/reference/hg38.test.fa.gz', checkIfExists: true) + file(params.pipelines_testdata_base_path + 'reference/hg38.test.fa.gz', checkIfExists: true) ] """ } @@ -38,8 +38,8 @@ nextflow_workflow { """ input[0] = Channel.of([ [ id:'test', single_end:false, project: 'project' ], // meta map - file(params.pipelines_testdata_base_path + 'nallo/testdata/HG002_PacBio_Revio.bam', checkIfExists: true), - file(params.pipelines_testdata_base_path + 'nallo/testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam', checkIfExists: true), + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) ]) input[1] = GUNZIP.out.gunzip input[2] = SAMTOOLS_FAIDX.out.fai @@ -71,8 +71,8 @@ nextflow_workflow { """ input[0] = Channel.of([ [ id:'test', single_end:false, project: 'project' ], // meta map - file(params.pipelines_testdata_base_path + 'nallo/testdata/HG002_PacBio_Revio.bam', checkIfExists: true), - file(params.pipelines_testdata_base_path + 'nallo/testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam', checkIfExists: true), + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) ]) input[1] = GUNZIP.out.gunzip input[2] = SAMTOOLS_FAIDX.out.fai @@ -108,13 +108,13 @@ nextflow_workflow { input[0] = Channel.of( [ [ id:'test_1', single_end:false, project: 'project' ], // meta map - file(params.pipelines_testdata_base_path + 'nallo/testdata/HG002_PacBio_Revio.bam', checkIfExists: true), - file(params.pipelines_testdata_base_path + 'nallo/testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam', checkIfExists: true), + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) ], [ [ id:'test_2', single_end:false, project: 'project' ], // meta map - file(params.pipelines_testdata_base_path + 'nallo/testdata/HG002_ONT.bam', checkIfExists: true), - file(params.pipelines_testdata_base_path + 'nallo/testdata/HG002_ONT.bam.bai', checkIfExists: true) + file(params.pipelines_testdata_base_path + 'testdata/HG002_ONT.bam', checkIfExists: true), + file(params.pipelines_testdata_base_path + 'testdata/HG002_ONT.bam.bai', checkIfExists: true) ] ) input[1] = GUNZIP.out.gunzip @@ -148,8 +148,8 @@ nextflow_workflow { """ input[0] = Channel.of([ [ id:'test', single_end:false, project: 'project' ], // meta map - file(params.pipelines_testdata_base_path + 'nallo/testdata/HG002_PacBio_Revio.bam', checkIfExists: true), - file(params.pipelines_testdata_base_path + 'nallo/testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam', checkIfExists: true), + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) ]) input[1] = GUNZIP.out.gunzip input[2] = SAMTOOLS_FAIDX.out.fai @@ -181,8 +181,8 @@ nextflow_workflow { """ input[0] = Channel.of([ [ id:'test', single_end:false, project: 'project' ], // meta map - file(params.pipelines_testdata_base_path + 'nallo/testdata/HG002_PacBio_Revio.bam', checkIfExists: true), - file(params.pipelines_testdata_base_path + 'nallo/testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam', checkIfExists: true), + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) ]) input[1] = GUNZIP.out.gunzip input[2] = SAMTOOLS_FAIDX.out.fai @@ -218,13 +218,13 @@ nextflow_workflow { input[0] = Channel.of( [ [ id:'test_1', single_end:false, project: 'project' ], // meta map - file(params.pipelines_testdata_base_path + 'nallo/testdata/HG002_PacBio_Revio.bam', checkIfExists: true), - file(params.pipelines_testdata_base_path + 'nallo/testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam', checkIfExists: true), + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) ], [ [ id:'test_2', single_end:false, project: 'project' ], // meta map - file(params.pipelines_testdata_base_path + 'nallo/testdata/HG002_ONT.bam', checkIfExists: true), - file(params.pipelines_testdata_base_path + 'nallo/testdata/HG002_ONT.bam.bai', checkIfExists: true) + file(params.pipelines_testdata_base_path + 'testdata/HG002_ONT.bam', checkIfExists: true), + file(params.pipelines_testdata_base_path + 'testdata/HG002_ONT.bam.bai', checkIfExists: true) ] ) input[1] = GUNZIP.out.gunzip @@ -260,8 +260,8 @@ nextflow_workflow { """ input[0] = Channel.of([ [ id:'test', single_end:false, project: 'project' ], // meta map - file(params.pipelines_testdata_base_path + 'nallo/testdata/HG002_PacBio_Revio.bam', checkIfExists: true), - file(params.pipelines_testdata_base_path + 'nallo/testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam', checkIfExists: true), + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) ]) input[1] = GUNZIP.out.gunzip input[2] = SAMTOOLS_FAIDX.out.fai @@ -289,8 +289,8 @@ nextflow_workflow { """ input[0] = Channel.of([ [ id:'test', single_end:false, project: 'project' ], // meta map - file(params.pipelines_testdata_base_path + 'nallo/testdata/HG002_PacBio_Revio.bam', checkIfExists: true), - file(params.pipelines_testdata_base_path + 'nallo/testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam', checkIfExists: true), + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) ]) input[1] = GUNZIP.out.gunzip input[2] = SAMTOOLS_FAIDX.out.fai @@ -322,13 +322,13 @@ nextflow_workflow { input[0] = Channel.of( [ [ id:'test_1', single_end:false, project: 'project' ], // meta map - file(params.pipelines_testdata_base_path + 'nallo/testdata/HG002_PacBio_Revio.bam', checkIfExists: true), - file(params.pipelines_testdata_base_path + 'nallo/testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam', checkIfExists: true), + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) ], [ [ id:'test_2', single_end:false, project: 'project' ], // meta map - file(params.pipelines_testdata_base_path + 'nallo/testdata/HG002_ONT.bam', checkIfExists: true), - file(params.pipelines_testdata_base_path + 'nallo/testdata/HG002_ONT.bam.bai', checkIfExists: true) + file(params.pipelines_testdata_base_path + 'testdata/HG002_ONT.bam', checkIfExists: true), + file(params.pipelines_testdata_base_path + 'testdata/HG002_ONT.bam.bai', checkIfExists: true) ] ) input[1] = GUNZIP.out.gunzip @@ -363,8 +363,8 @@ nextflow_workflow { """ input[0] = Channel.of([ [ id:'test', single_end:false, project: 'project' ], // meta map - file(params.pipelines_testdata_base_path + 'nallo/testdata/HG002_PacBio_Revio.bam', checkIfExists: true), - file(params.pipelines_testdata_base_path + 'nallo/testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam', checkIfExists: true), + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) ]) input[1] = GUNZIP.out.gunzip input[2] = SAMTOOLS_FAIDX.out.fai @@ -392,8 +392,8 @@ nextflow_workflow { """ input[0] = Channel.of([ [ id:'test', single_end:false, project: 'project' ], // meta map - file(params.pipelines_testdata_base_path + 'nallo/testdata/HG002_PacBio_Revio.bam', checkIfExists: true), - file(params.pipelines_testdata_base_path + 'nallo/testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam', checkIfExists: true), + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) ]) input[1] = GUNZIP.out.gunzip input[2] = SAMTOOLS_FAIDX.out.fai @@ -425,13 +425,13 @@ nextflow_workflow { input[0] = Channel.of( [ [ id:'test_1', single_end:false, project: 'project' ], // meta map - file(params.pipelines_testdata_base_path + 'nallo/testdata/HG002_PacBio_Revio.bam', checkIfExists: true), - file(params.pipelines_testdata_base_path + 'nallo/testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam', checkIfExists: true), + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) ], [ [ id:'test_2', single_end:false, project: 'project' ], // meta map - file(params.pipelines_testdata_base_path + 'nallo/testdata/HG002_ONT.bam', checkIfExists: true), - file(params.pipelines_testdata_base_path + 'nallo/testdata/HG002_ONT.bam.bai', checkIfExists: true) + file(params.pipelines_testdata_base_path + 'testdata/HG002_ONT.bam', checkIfExists: true), + file(params.pipelines_testdata_base_path + 'testdata/HG002_ONT.bam.bai', checkIfExists: true) ] ) input[1] = GUNZIP.out.gunzip diff --git a/subworkflows/local/snv_annotation/tests/main.nf.test b/subworkflows/local/snv_annotation/tests/main.nf.test index ba42a3ce..b34dc961 100644 --- a/subworkflows/local/snv_annotation/tests/main.nf.test +++ b/subworkflows/local/snv_annotation/tests/main.nf.test @@ -12,7 +12,7 @@ nextflow_workflow { """ input[0] = [ [ id:'hg38' ], - file(params.pipelines_testdata_base_path + 'nallo/reference/hg38.test.fa.gz', checkIfExists: true) + file(params.pipelines_testdata_base_path + 'reference/hg38.test.fa.gz', checkIfExists: true) ] """ } @@ -32,7 +32,7 @@ nextflow_workflow { """ input[0] = [ [ id: 'test', num_intervals:1 ], - file(params.pipelines_testdata_base_path + 'nallo/testdata/HG002_PacBio_Revio.fastq.gz', checkIfExists: true) + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.fastq.gz', checkIfExists: true) ] input[1] = GUNZIP.out.gunzip input[2] = true @@ -50,7 +50,7 @@ nextflow_workflow { .join(MINIMAP2_ALIGN.out.index) .join(Channel.of([ [ id: 'test', num_intervals:1 ], - file(params.pipelines_testdata_base_path + 'nallo/reference/test_data.bed', checkifexists: true) + file(params.pipelines_testdata_base_path + 'reference/test_data.bed', checkifexists: true) ])) input[1] = GUNZIP.out.gunzip input[2] = SAMTOOLS_FAIDX.out.fai @@ -69,7 +69,7 @@ nextflow_workflow { """ input[0] = [ [ id: 'vep_cache' ], - file(params.pipelines_testdata_base_path + 'nallo/reference/vep_cache_test_data.tar.gz', checkIfExists:true) + file(params.pipelines_testdata_base_path + 'reference/vep_cache_test_data.tar.gz', checkIfExists:true) ] """ } @@ -84,14 +84,14 @@ nextflow_workflow { """ input[0] = SHORT_VARIANT_CALLING.out.combined_bcf input[1] = [ - file(params.pipelines_testdata_base_path + 'nallo/reference/cadd.v1.6.hg38.test_data.zip', checkIfExists: true) + file(params.pipelines_testdata_base_path + 'reference/cadd.v1.6.hg38.test_data.zip', checkIfExists: true) ] input[2] = GUNZIP.out.gunzip input[3] = SAMTOOLS_FAIDX.out.fai input[4] = UNTAR.out.untar.map { meta, cache -> cache } input[5] = Channel.value('110') input[6] = [ - file(params.pipelines_testdata_base_path + 'nallo/reference/vep_plugin_files.csv', checkIfExists: true) + file(params.pipelines_testdata_base_path + 'reference/vep_plugin_files.csv', checkIfExists: true) ] input[7] = false input[8] = Channel.value([]) @@ -126,14 +126,14 @@ nextflow_workflow { """ input[0] = SHORT_VARIANT_CALLING.out.combined_bcf input[1] = [ - file(params.pipelines_testdata_base_path + 'nallo/reference/cadd.v1.6.hg38.test_data.zip', checkIfExists: true) + file(params.pipelines_testdata_base_path + 'reference/cadd.v1.6.hg38.test_data.zip', checkIfExists: true) ] input[2] = GUNZIP.out.gunzip input[3] = SAMTOOLS_FAIDX.out.fai input[4] = UNTAR.out.untar.map { meta, cache -> cache } input[5] = Channel.value('110') input[6] = [ - file(params.pipelines_testdata_base_path + 'nallo/reference/vep_plugin_files.csv', checkIfExists: true) + file(params.pipelines_testdata_base_path + 'reference/vep_plugin_files.csv', checkIfExists: true) ] input[7] = false input[8] = Channel.value([]) diff --git a/tests/main.nf.test b/tests/main.nf.test index 975ebbbf..8aa188f5 100644 --- a/tests/main.nf.test +++ b/tests/main.nf.test @@ -11,8 +11,9 @@ nextflow_pipeline { when { params { - input = 'https://github.com/genomic-medicine-sweden/test-datasets/raw/e2266a34c14d1e0a9ef798de3cd81a76c9216fc1/testdata/samplesheet.csv' - outdir = "$outputDir" + pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/1f4e062926fc10f70a38e917e5771edb333e89bf/' + input = params.pipelines_testdata_base_path + 'testdata/samplesheet.csv' + outdir = "$outputDir" } } @@ -120,8 +121,11 @@ nextflow_pipeline { when { params { - input = 'https://github.com/genomic-medicine-sweden/test-datasets/raw/e2266a34c14d1e0a9ef798de3cd81a76c9216fc1/testdata/samplesheet_multisample_bam.csv' - outdir = "$outputDir" + pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/1f4e062926fc10f70a38e917e5771edb333e89bf/' + input = params.pipelines_testdata_base_path + 'testdata/samplesheet_multisample_bam.csv' + outdir = "$outputDir" + parallel_snv = 2 + preset = "revio" } } @@ -299,11 +303,12 @@ nextflow_pipeline { when { params { - input = 'https://github.com/genomic-medicine-sweden/test-datasets/raw/e2266a34c14d1e0a9ef798de3cd81a76c9216fc1/testdata/samplesheet_multisample_bam_ont.csv' - preset = 'ONT_R10' - parallel_alignments = 2 - parallel_snv = 1 - outdir = "$outputDir" + pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/1f4e062926fc10f70a38e917e5771edb333e89bf/' + input = params.pipelines_testdata_base_path + 'testdata/samplesheet_multisample_bam_ont.csv' + outdir = "$outputDir" + preset = 'ONT_R10' + parallel_alignments = 2 + parallel_snv = 1 } } diff --git a/tests/nextflow.config b/tests/nextflow.config index 7b01ea7f..5d15b433 100644 --- a/tests/nextflow.config +++ b/tests/nextflow.config @@ -3,7 +3,7 @@ params { modules_testdata_base_path = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/' // Base directory for genomic-medicine-sweden/nallo test data - pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/' + pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/1f4e062926fc10f70a38e917e5771edb333e89bf/' max_cpus = 4 max_memory = '15.GB' From c3c2ae28d5fe20c3c6d6a709544087374e04ddc5 Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Wed, 25 Sep 2024 17:16:04 +0200 Subject: [PATCH 021/106] Add longphase (#388) * Add longphase * Add tool to CHANGELOG * Update parameters.md * Update CHANGELOG.md * Update main.nf.test.snap * Revert back to using for run example --- CHANGELOG.md | 13 +- CITATIONS.md | 4 + README.md | 46 +- conf/base.config | 2 +- conf/modules/phasing.config | 49 +- conf/modules/short_variant_calling.config | 3 +- docs/output.md | 30 +- docs/parameters.md | 2 +- modules.json | 10 + modules/local/hiphase/main.nf | 4 +- .../longphase/haplotag/environment.yml | 7 + modules/nf-core/longphase/haplotag/main.nf | 66 +++ modules/nf-core/longphase/haplotag/meta.yml | 89 ++++ .../longphase/haplotag/tests/main.nf.test | 202 +++++++++ .../haplotag/tests/main.nf.test.snap | 159 +++++++ .../longphase/haplotag/tests/nextflow.config | 5 + .../nf-core/longphase/haplotag/tests/tags.yml | 2 + .../nf-core/longphase/phase/environment.yml | 8 + modules/nf-core/longphase/phase/main.nf | 69 +++ modules/nf-core/longphase/phase/meta.yml | 81 ++++ .../longphase/phase/tests/main.nf.test | 157 +++++++ .../longphase/phase/tests/main.nf.test.snap | 134 ++++++ .../longphase/phase/tests/nextflow.config | 5 + .../nf-core/longphase/phase/tests/tags.yml | 2 + nextflow.config | 2 +- nextflow_schema.json | 6 +- subworkflows/local/phasing.nf | 248 +++++----- .../local/short_variant_calling/main.nf | 3 +- .../tests/main.nf.test.snap | 426 ++++++++++++++---- .../tests/nextflow.config | 3 +- .../local/utils_nfcore_nallo_pipeline/main.nf | 7 +- tests/main.nf.test | 71 +-- tests/main.nf.test.snap | 18 +- workflows/nallo.nf | 10 +- 34 files changed, 1621 insertions(+), 322 deletions(-) create mode 100644 modules/nf-core/longphase/haplotag/environment.yml create mode 100644 modules/nf-core/longphase/haplotag/main.nf create mode 100644 modules/nf-core/longphase/haplotag/meta.yml create mode 100644 modules/nf-core/longphase/haplotag/tests/main.nf.test create mode 100644 modules/nf-core/longphase/haplotag/tests/main.nf.test.snap create mode 100644 modules/nf-core/longphase/haplotag/tests/nextflow.config create mode 100644 modules/nf-core/longphase/haplotag/tests/tags.yml create mode 100644 modules/nf-core/longphase/phase/environment.yml create mode 100644 modules/nf-core/longphase/phase/main.nf create mode 100644 modules/nf-core/longphase/phase/meta.yml create mode 100644 modules/nf-core/longphase/phase/tests/main.nf.test create mode 100644 modules/nf-core/longphase/phase/tests/main.nf.test.snap create mode 100644 modules/nf-core/longphase/phase/tests/nextflow.config create mode 100644 modules/nf-core/longphase/phase/tests/tags.yml diff --git a/CHANGELOG.md b/CHANGELOG.md index b38a88aa..048c5111 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#366](https://github.com/genomic-medicine-sweden/nallo/pull/366) - Added sorting of samples when creating PED files, so the output is always the same - [#367](https://github.com/genomic-medicine-sweden/nallo/pull/367) - Added Severus as the default SV caller, together with a `--sv_caller` parameter to choose caller - [#371](https://github.com/genomic-medicine-sweden/nallo/pull/371) - Added `FOUND_IN=caller` tags to SV output +- [#388](https://github.com/genomic-medicine-sweden/nallo/pull/388) - Added longphase as the default phaser +- [#388](https://github.com/genomic-medicine-sweden/nallo/pull/388) - Added single-sample tbi output to the short variant calling subworkflow - [#393](https://github.com/genomic-medicine-sweden/nallo/pull/393) - Added a new `--minimap2_read_mapping_preset` parameter ### `Changed` @@ -32,6 +34,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#365](https://github.com/genomic-medicine-sweden/nallo/pull/365) - Changed CI to only use nf-test for pipeline tests - [#381](https://github.com/genomic-medicine-sweden/nallo/pull/381) - Updated CI nf-test version to 0.9.0 - [#382](https://github.com/genomic-medicine-sweden/nallo/pull/382) - Changed vep_plugin_files description in schema and docs +- [#388](https://github.com/genomic-medicine-sweden/nallo/pull/388) - Changed phasing output structure and naming, and updated docs - [#393](https://github.com/genomic-medicine-sweden/nallo/pull/393) - Changed the default minimap2 preset for PacBio data from `map-hifi` to `lr:hqae` - [#397](https://github.com/genomic-medicine-sweden/nallo/pull/397) - Changed `pipelines_testdata_base_path` to pin a specific commit @@ -40,6 +43,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#352](https://github.com/genomic-medicine-sweden/nallo/pull/352) - Removed the fqcrs module - [#356](https://github.com/genomic-medicine-sweden/nallo/pull/356) - Removed filter_vep section from output documentation since it is not in the pipeline - [#379](https://github.com/genomic-medicine-sweden/nallo/pull/379) - Removed VEP Plugins from testdata ([genomic-medicine-sweden/test-datasets#16](https://github.com/genomic-medicine-sweden/test-datasets/pull/16)) +- [#388](https://github.com/genomic-medicine-sweden/nallo/pull/388) - Removed support for co-phasing SVs with HiPhase, as the officially supported caller (pbsv) is not in the pipeline ### `Fixed` @@ -64,10 +68,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Module updates -| Tool | Old version | New version | -| ------- | ----------- | ----------- | -| fqcrs | 0.1.0 | -| severus | | 1.1 | +| Tool | Old version | New version | +| ---------- | ----------- | ----------- | +| fqcrs | 0.1.0 | +| severus | | 1.1 | +| longphase  |   | 1.7.3   | > [!NOTE] > Version has been updated if both old and new version information is present. diff --git a/CITATIONS.md b/CITATIONS.md index 9ae9e0e4..21c4c141 100644 --- a/CITATIONS.md +++ b/CITATIONS.md @@ -70,6 +70,10 @@ - [HiFiCNV](https://github.com/PacificBiosciences/HiFiCNV) +- [LongPhase](https://github.com/twolinin/longphase) + + > Jyun-Hong Lin, Liang-Chi Chen, Shu-Chi Yu, Yao-Ting Huang, LongPhase: an ultra-fast chromosome-scale phasing algorithm for small and large variants, Bioinformatics, Volume 38, Issue 7, March 2022, Pages 1816–1822, https://doi.org/10.1093/bioinformatics/btac058 + - [minimap2](https://academic.oup.com/bioinformatics/article/34/18/3094/4994778) > Heng Li, Minimap2: pairwise alignment for nucleotide sequences, Bioinformatics, Volume 34, Issue 18, September 2018, Pages 3094–3100, https://doi.org/10.1093/bioinformatics/bty191 diff --git a/README.md b/README.md index 7db1f97c..bc59d979 100644 --- a/README.md +++ b/README.md @@ -3,54 +3,53 @@ [![nf-test](https://img.shields.io/badge/unit_tests-nf--test-337ab7.svg)](https://www.nf-test.com) [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.13748210.svg)](https://doi.org/10.5281/zenodo.13748210) [![Nextflow](https://img.shields.io/badge/nextflow%20DSL2-%E2%89%A523.04.0-23aa62.svg)](https://www.nextflow.io/) -[![run with conda](http://img.shields.io/badge/run%20with-conda-3EB049?labelColor=000000&logo=anaconda)](https://docs.conda.io/en/latest/) [![run with docker](https://img.shields.io/badge/run%20with-docker-0db7ed?labelColor=000000&logo=docker)](https://www.docker.com/) [![run with singularity](https://img.shields.io/badge/run%20with-singularity-1d355c.svg?labelColor=000000)](https://sylabs.io/docs/) [![Launch on Seqera Platform](https://img.shields.io/badge/Launch%20%F0%9F%9A%80-Seqera%20Platform-%234256e7)](https://cloud.seqera.io/launch?pipeline=https://github.com/genomic-medicine-sweden/nallo) ## Introduction -**genomic-medicine-sweden/nallo** is a bioinformatics analysis pipeline for long-read rare disease SV/SNV identification using both PacBio and (targeted) ONT-data. Heavily influenced by best-practice pipelines such as [nf-core/nanoseq](https://github.com/nf-core/nanoseq), [nf-core/sarek](https://nf-co.re/sarek), [nf-core/raredisease](https://nf-co.re/raredisease), [PacBio Human WGS Workflow](https://github.com/PacificBiosciences/pb-human-wgs-workflow-snakemake), [epi2me-labs/wf-human-variation](https://github.com/epi2me-labs/wf-human-variation) and [brentp/rare-disease-wf](https://github.com/brentp/rare-disease-wf). +**genomic-medicine-sweden/nallo** is a bioinformatics analysis pipeline for long-reads from both PacBio and (targeted) ONT-data, focused on rare-disease. Heavily influenced by best-practice pipelines such as [nf-core/sarek](https://nf-co.re/sarek), [nf-core/raredisease](https://nf-co.re/raredisease), [nf-core/nanoseq](https://github.com/nf-core/nanoseq), [PacBio Human WGS Workflow](https://github.com/PacificBiosciences/pb-human-wgs-workflow-snakemake), [epi2me-labs/wf-human-variation](https://github.com/epi2me-labs/wf-human-variation) and [brentp/rare-disease-wf](https://github.com/brentp/rare-disease-wf). -## Pipeline summary +## Overview genomic-medicine-sweden/nallo workflow +## Pipeline summary + ##### QC -- FastQC ([`FastQC`](http://www.bioinformatics.babraham.ac.uk/projects/fastqc/)) -- Aligned read QC ([`cramino`](https://github.com/wdecoster/cramino)) -- Depth information ([`mosdepth`](https://github.com/brentp/mosdepth)) +- Read QC with [FastQC](http://www.bioinformatics.babraham.ac.uk/projects/fastqc/), [cramino](https://github.com/wdecoster/cramino) and [mosdepth](https://github.com/brentp/mosdepth) ##### Alignment & assembly -- Align reads to reference ([`minimap2`](https://github.com/lh3/minimap2)) -- Assemble (trio-binned) haploid genomes (HiFi only) ([`hifiasm`](https://github.com/chhylp123/hifiasm)) +- Align reads to reference with [minimap2](https://github.com/lh3/minimap2) +- Assemble (trio-binned) haploid genomes with [hifiasm](https://github.com/chhylp123/hifiasm) (HiFi only) ##### Variant calling -- Short variant calling & joint genotyping of SNVs ([`deepvariant`](https://github.com/google/deepvariant) + [`GLNexus`](https://github.com/dnanexus-rnd/GLnexus)) -- SV calling with [Severus](https://github.com/KolmogorovLab/Severus) or [Sniffles2](https://github.com/fritzsedlazeck/Sniffles) -- Tandem repeats (HiFi only) ([`TRGT`](https://github.com/PacificBiosciences/trgt/tree/main)) -- Assembly based variant calls (HiFi only) ([`dipcall`](https://github.com/lh3/dipcall)) -- CNV-calling ([`HiFiCNV`](https://github.com/PacificBiosciences/HiFiCNV)) -- Call paralogous genes ([`Paraphase`](https://github.com/PacificBiosciences/paraphase)) +- Call SNVs & joint genotyping with [deepvariant](https://github.com/google/deepvariant) and [GLNexus](https://github.com/dnanexus-rnd/GLnexus) +- Call SVs with [Severus](https://github.com/KolmogorovLab/Severus) or [Sniffles2](https://github.com/fritzsedlazeck/Sniffles) +- Call CNVs with [HiFiCNV](https://github.com/PacificBiosciences/HiFiCNV) +- Call tandem repeats with [TRGT](https://github.com/PacificBiosciences/trgt/tree/main) (HiFi only) +- Call paralogous genes with [Paraphase](https://github.com/PacificBiosciences/paraphase) +- Call variants from assembly with [dipcall](https://github.com/lh3/dipcall) (HiFi only) ##### Phasing and methylation -- Phase and haplotag reads ([`whatshap`](https://github.com/whatshap/whatshap) + [`hiphase`](https://github.com/PacificBiosciences/HiPhase)) -- Methylation pileups ([`modkit`](https://github.com/nanoporetech/modkit)) +- Phase and haplotag reads with [LongPhase](https://github.com/twolinin/longphase), [whatshap](https://github.com/whatshap/whatshap) or [HiPhase](https://github.com/PacificBiosciences/HiPhase) +- Create methylation pileups with [modkit](https://github.com/nanoporetech/modkit) ##### Annotation -- Annotate SNVs and INDELs with database(s) of choice, i.e. [gnomAD](https://gnomad.broadinstitute.org), [CADD](https://cadd.gs.washington.edu) etc. ([`echtvar`](https://github.com/brentp/echtvar) and [`VEP`](https://github.com/Ensembl/ensembl-vep)) +- Annotate SNVs and INDELs with databases of choice, i.e. [gnomAD](https://gnomad.broadinstitute.org), [CADD](https://cadd.gs.washington.edu) etc. with [echtvar](https://github.com/brentp/echtvar) and [VEP](https://github.com/Ensembl/ensembl-vep) - Annotate repeat expansions with [stranger](https://github.com/Clinical-Genomics/stranger) -##### Filtering and ranking +##### Ranking -- Rank variants ([`GENMOD`](https://github.com/Clinical-Genomics/genmod)) +- Rank SNVs with [GENMOD](https://github.com/Clinical-Genomics/genmod) ## Usage @@ -63,14 +62,15 @@ Prepare a samplesheet with input data: ``` project,sample,file,family_id,paternal_id,maternal_id,sex,phenotype -testrun,HG002,/path/to/HG002.fastq.gz,FAM1,HG003,HG004,1,2 -testrun,HG005,/path/to/HG005.bam,FAM1,HG003,HG004,2,1 +NIST,HG002,/path/to/HG002.fastq.gz,FAM1,HG003,HG004,1,2 +NIST,HG005,/path/to/HG005.bam,FAM1,HG003,HG004,2,1 ``` -Now, you can run the pipeline using: +Supply a reference genome with `--fasta` and choose a matching `--preset` for your data (`revio`, `pacbio`, `ONT_R10`). Now, you can run the pipeline using: ```bash -nextflow run genomic-medicine-sweden/nallo -profile YOURPROFILE \ +nextflow run genomic-medicine-sweden/nallo \ + -profile \ --input samplesheet.csv \ --preset \ --fasta \ diff --git a/conf/base.config b/conf/base.config index 2bc62420..50230189 100644 --- a/conf/base.config +++ b/conf/base.config @@ -61,7 +61,7 @@ process { maxRetries = 2 } - withName: '.*:SAMTOOLS_MERGE' { + withName: 'SAMTOOLS_MERGE|SAMTOOLS_INDEX' { label = 'process_medium' } } diff --git a/conf/modules/phasing.config b/conf/modules/phasing.config index 1342807a..136bb6a4 100644 --- a/conf/modules/phasing.config +++ b/conf/modules/phasing.config @@ -24,8 +24,7 @@ process { ] } - withName: '.*:PHASING:HIPHASE_SNV' { - ext.prefix = { "$meta.id}_phased" } + withName: '.*:PHASING:HIPHASE' { ext.args = { [ '--ignore-read-groups', "--stats-file ${meta.id}_phased.stats.tsv", @@ -35,22 +34,38 @@ process { publishDir = [ path: { "${params.outdir}/" }, mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : ((filename.endsWith('bam') || filename.endsWith('bai')) ? "aligned_reads/${meta.id}/${filename}" : "phasing/hiphase/snv/${meta.id}/${filename}" ) } + saveAs: { filename -> filename.equals('versions.yml') ? null : ((filename.endsWith('bam') || filename.endsWith('bai')) ? "aligned_reads/${meta.id}/${filename}" : "phased_variants/${meta.id}/${filename}" ) } ] } - withName: '.*:PHASING:HIPHASE_SV' { - ext.prefix = { "$meta.id}_phased" } - ext.args = { [ - '--ignore-read-groups', - "--stats-file ${meta.id}_phased.stats.tsv", - "--blocks-file ${meta.id}_phased.blocks.tsv", - "--summary-file ${meta.id}_phased.summary.tsv" - ].join(' ') } + withName: '.*:PHASING:LONGPHASE_PHASE' { + ext.prefix = { "${meta.id}_phased" } + ext.args = [ + params.preset.equals('ONT_R10') ? "--ont" : "--pb", + '--indels' + ].join(' ') publishDir = [ - path: { "${params.outdir}/" }, + path: { "${params.outdir}/phased_variants/${meta.id}" }, mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : ((filename.endsWith('bam') || filename.endsWith('bai')) ? "aligned_reads/${meta.id}/${filename}" : "phasing/hiphase/sv/${meta.id}/${filename}" ) } + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } + + withName: '.*:PHASING:TABIX_LONGPHASE_PHASE' { + publishDir = [ + path: { "${params.outdir}/phased_variants/${meta.id}" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } + + + withName: '.*:PHASING:LONGPHASE_HAPLOTAG' { + ext.prefix = { "${meta.id}_haplotagged" } + publishDir = [ + path: { "${params.outdir}/aligned_reads/${meta.id}" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } ] } @@ -61,7 +76,7 @@ process { '--indels' ].join(' ') publishDir = [ - path: { "${params.outdir}/phasing/whatshap/phase/${meta.id}" }, + path: { "${params.outdir}/phased_variants/${meta.id}" }, mode: params.publish_dir_mode, saveAs: { filename -> filename.equals('versions.yml') ? null : filename } ] @@ -70,14 +85,14 @@ process { withName: '.*:PHASING:WHATSHAP_STATS' { ext.prefix = { "${meta.id}_stats" } publishDir = [ - path: { "${params.outdir}/phasing/whatshap/stats/${meta.id}" }, + path: { "${params.outdir}/qc/phasing_stats/${meta.id}" }, mode: params.publish_dir_mode, saveAs: { filename -> filename.equals('versions.yml') ? null : filename } ] } withName: '.*:PHASING:WHATSHAP_HAPLOTAG' { - ext.prefix = { "${meta.id}_phased" } + ext.prefix = { "${meta.id}_haplotagged" } ext.args = [ '--ignore-read-groups', '--tag-supplementary' @@ -89,7 +104,7 @@ process { ] } - withName: '.*:PHASING:SAMTOOLS_INDEX_WHATSHAP' { + withName: '.*:PHASING:SAMTOOLS_INDEX_WHATSHAP|.*:PHASING:SAMTOOLS_INDEX_LONGPHASE' { publishDir = [ path: { "${params.outdir}/aligned_reads/${meta.id}" }, mode: params.publish_dir_mode, diff --git a/conf/modules/short_variant_calling.config b/conf/modules/short_variant_calling.config index 2559d947..4c6369b4 100644 --- a/conf/modules/short_variant_calling.config +++ b/conf/modules/short_variant_calling.config @@ -47,7 +47,8 @@ process { ext.args = [ '-m -', '-w 10000', - '--output-type u', + '--output-type z', + '--write-index=tbi' ].join(' ') } diff --git a/docs/output.md b/docs/output.md index 7a263bd5..3a457b0e 100644 --- a/docs/output.md +++ b/docs/output.md @@ -157,40 +157,22 @@ Results generated by MultiQC collate pipeline QC from supported tools e.g. FastQ ### Phasing -[WhatsHap](https://whatshap.readthedocs.io/en/latest/) or [HiPhase](https://github.com/PacificBiosciences/HiPhase) are used to phase variants and haplotag reads. +[LongPhase](https://github.com/twolinin/longphase), [WhatsHap](https://whatshap.readthedocs.io/en/latest/) or [HiPhase](https://github.com/PacificBiosciences/HiPhase) are used to phase variants and haplotag reads.
    -Output files from WhatsHap +Output files from phasing - `{outputdir}/aligned_reads/{sample}/` - - `{sample}_phased.bam`: BAM file with haplotags - - `{sample}_phased.bam.bai`: Index of the corresponding bam file -- `{outputdir}/phasing/whatshap/phase/{sample}/` + - `{sample}_haplotagged.bam`: BAM file with haplotags + - `{sample}_haplotagged.bam.bai`: Index of the corresponding bam file +- `{outputdir}/phased_variants/{sample}/` - `*.vcf.gz`: VCF file with phased variants - `*.vcf.gz.tbi`: Index of the corresponding VCF file -- `{outputdir}/phasing/whatshap/stats/{sample}/` +- `{outputdir}/qc/phasing_stats/{sample}/` - `*.blocks.tsv`: File with phase blocks - `*.stats.tsv`: File with phasing statistics
    -
    -Output files from HiPhase - -- `{outputdir}/aligned_reads/{sample}/` - - - `{sample}_phased.bam`: BAM file with haplotags - - `{sample}_phased.bam.bai`: Index of the corresponding bam file - -- `{outputdir}/phasing/hiphase/{snv,sv}/{sample}/` - - - `*.blocks.tsv`: File with phase blocks - - `*.stats.tsv.gz`: File with phasing statistics - - `*.vcf.gz`: VCF file with phased variants - - `*.vcf.gz.tbi`: Index of the corresponding VCF file - - `*.summary.tsv`: HiPhase summary file - -
    - ### Pipeline information [Nextflow](https://www.nextflow.io/docs/latest/tracing.html) provides excellent functionality for generating various reports relevant to the running and execution of the pipeline. This will allow you to troubleshoot errors with the running of the pipeline, and also provide you with other information such as launch commands, run times and resource usage. diff --git a/docs/parameters.md b/docs/parameters.md index ce5c816d..2f086356 100644 --- a/docs/parameters.md +++ b/docs/parameters.md @@ -97,7 +97,7 @@ Workflow options specific to genomic-medicine-sweden/nallo | `preset` | Enable or disable certain parts of the pipeline by default, depending on data type (`revio`, `pacbio`, `ONT_R10`) | `string` | revio | True | | | `variant_caller` | Which short variant software to use (`deepvariant`) | `string` | deepvariant | | | | `sv_caller` | Which structural variant caller to use (`severus`, `sniffles`) | `string` | severus | | | -| `phaser` | Which phasing software to use (`whatshap`, `hiphase_snv`, `hiphase_sv`) | `string` | whatshap | | | +| `phaser` | Which phasing software to use (`longphase`, `whatshap`, `hiphase`) | `string` | longphase | | | | `hifiasm_mode` | Run hifiasm in hifi-only or hifi-trio mode (`hifi-only`, `trio-binning`) | `string` | hifi-only | | | | `parallel_alignments` | If parallel_alignments is bigger than 1, input files will be split and aligned in parallel to reduce processing time. | `integer` | 1 | | | | `parallel_snv` | If parallel_snv is bigger than 1, short variant calling will be done in parallel to reduce processing time. | `integer` | 13 | | | diff --git a/modules.json b/modules.json index d03948e8..6d7b4b1a 100644 --- a/modules.json +++ b/modules.json @@ -141,6 +141,16 @@ "git_sha": "aecb06fcdb995ff3e3df7c7a1fd119367d6d1996", "installed_by": ["modules"] }, + "longphase/haplotag": { + "branch": "master", + "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", + "installed_by": ["modules"] + }, + "longphase/phase": { + "branch": "master", + "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", + "installed_by": ["modules"] + }, "minimap2/align": { "branch": "master", "git_sha": "a33ef9475558c6b8da08c5f522ddaca1ec810306", diff --git a/modules/local/hiphase/main.nf b/modules/local/hiphase/main.nf index 44b5d4bf..3de4359a 100644 --- a/modules/local/hiphase/main.nf +++ b/modules/local/hiphase/main.nf @@ -42,7 +42,7 @@ process HIPHASE { vcfInputs.add('--vcf') vcfInputs.add(vcf) vcfOutputs.add('--output-vcf') - vcfOutputs.add("${prefix}.vcf.gz") + vcfOutputs.add("${prefix}_phased.vcf.gz") vcfNames.add(vcf.getName()) } @@ -58,7 +58,7 @@ process HIPHASE { if(output_bam) { bamOutputs.add('--output-bam') - bamOutputs.add("${prefix}.bam") + bamOutputs.add("${prefix}_haplotagged.bam") } } diff --git a/modules/nf-core/longphase/haplotag/environment.yml b/modules/nf-core/longphase/haplotag/environment.yml new file mode 100644 index 00000000..06445a93 --- /dev/null +++ b/modules/nf-core/longphase/haplotag/environment.yml @@ -0,0 +1,7 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json +channels: + - conda-forge + - bioconda +dependencies: + - "bioconda::longphase=1.7.3" diff --git a/modules/nf-core/longphase/haplotag/main.nf b/modules/nf-core/longphase/haplotag/main.nf new file mode 100644 index 00000000..701af31f --- /dev/null +++ b/modules/nf-core/longphase/haplotag/main.nf @@ -0,0 +1,66 @@ +process LONGPHASE_HAPLOTAG { + tag "$meta.id" + label 'process_medium' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/longphase:1.7.3--hf5e1c6e_0': + 'biocontainers/longphase:1.7.3--hf5e1c6e_0' }" + + input: + tuple val(meta), path(bam), path(bai), path(snps), path(svs), path(mods) + tuple val(meta2), path(fasta) + tuple val(meta3), path(fai) + + + output: + tuple val(meta), path("*.{bam,cram}"), emit: bam + tuple val(meta), path("*.log") , emit: log , optional: true + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def sv_file = params.svs ? "--sv-file ${svs}" : "" + def mod_file = params.mods ? "--mod-file ${mods}" : "" + + """ + longphase \\ + haplotag \\ + $args \\ + --threads $task.cpus \\ + -o ${prefix} \\ + --reference ${fasta} \\ + --snp-file ${snps} \\ + --bam ${bam} \\ + ${sv_file} \\ + ${mod_file} + + if [ -f "${prefix}.out" ]; then + mv ${prefix}.out ${prefix}.log + fi + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + longphase: \$(longphase --version | head -n 1 | sed 's/Version: //') + END_VERSIONS + """ + + stub: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def suffix = args.contains('--cram') ? "cram" : "bam" + def log = args.contains('--log') ? "touch ${prefix}.log" : '' + """ + touch ${prefix}.${suffix} + ${log} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + longphase: \$(longphase --version | head -n 1 | sed 's/Version: //') + END_VERSIONS + """ +} diff --git a/modules/nf-core/longphase/haplotag/meta.yml b/modules/nf-core/longphase/haplotag/meta.yml new file mode 100644 index 00000000..2fe7c569 --- /dev/null +++ b/modules/nf-core/longphase/haplotag/meta.yml @@ -0,0 +1,89 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/meta-schema.json +name: "longphase_haplotag" +description: LongPhase is an ultra-fast program for simultaneously co-phasing SNPs, small indels, large SVs, and (5mC) modifications for Nanopore and PacBio platforms. +keywords: + - haplotag + - long-read + - genomics +tools: + - "longphase": + description: "LongPhase is an ultra-fast program for simultaneously co-phasing SNPs, small indels, large SVs, and (5mC) modifications for Nanopore and PacBio platforms." + homepage: "https://github.com/twolinin/longphase" + documentation: "https://github.com/twolinin/longphase" + tool_dev_url: "https://github.com/twolinin/longphase" + doi: "10.1093/bioinformatics/btac058" + licence: ["GPL v3"] + +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - bam: + type: file + description: Sorted BAM/CRAM file + pattern: "*.{bam,cram}" + - bai: + type: file + description: Index of sorted BAM/CRAM file + pattern: "*.{bai,crai,csi}" + - snps: + type: file + description: VCF file with SNPs (and INDELs) + pattern: "*.{vcf,vcf.gz}" + - svs: + type: file + description: VCF file with SVs + pattern: "*.{vcf,vcf.gz}" + - mods: + type: file + description: modcall-generated VCF with modifications + pattern: "*.{vcf,vcf.gz}" + - meta2: + type: map + description: | + Groovy Map containing reference information + e.g. `[ id:'hg38' ]` + - fasta: + type: file + description: Reference fasta file + pattern: "*.fasta" + - meta3: + type: map + description: | + Groovy Map containing reference information + e.g. `[ id:'hg38' ]` + - fai: + type: file + description: Reference fai index + pattern: "*.fai" + +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + - bam: + type: file + description: BAM file with haplotagged reads + pattern: "*.bam" + - cram: + type: file + description: CRAM file with haplotagged reads + pattern: "*.cram" + - log: + type: file + description: Log file + pattern: "*.log" + +authors: + - "@fellen31" +maintainers: + - "@fellen31" diff --git a/modules/nf-core/longphase/haplotag/tests/main.nf.test b/modules/nf-core/longphase/haplotag/tests/main.nf.test new file mode 100644 index 00000000..c80133c6 --- /dev/null +++ b/modules/nf-core/longphase/haplotag/tests/main.nf.test @@ -0,0 +1,202 @@ +nextflow_process { + + name "Test Process LONGPHASE_HAPLOTAG" + script "../main.nf" + process "LONGPHASE_HAPLOTAG" + + tag "modules" + tag "modules_nfcore" + tag "longphase" + tag "longphase/haplotag" + + test("[ bam, bai, snps, [], [] ], fasta, fai") { + + when { + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test.genome.vcf.gz', checkIfExists: true), + [], + [] + ] + input[1] = [ + [ id:'reference' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ] + input[2] = [ + [ id:'reference' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.versions, + bam(process.out.bam.get(0).get(1), stringency: 'silent').getHeader(), + bam(process.out.bam.get(0).get(1), stringency: 'silent').getReadsMD5(), + ).match() } + ) + } + + } + + test("[ bam, bai, snps, [], [] ], fasta, fai - log & cram") { + + config "./nextflow.config" + + when { + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test.genome.vcf.gz', checkIfExists: true), + [], + [] + ] + input[1] = [ + [ id:'reference' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ] + input[2] = [ + [ id:'reference' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) + ] + """ + } + + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.versions, + process.out.log, + bam(process.out.bam.get(0).get(1), 'https://github.com/nf-core/test-datasets/raw/modules/data/genomics/homo_sapiens/genome/genome.fasta', stringency: 'silent').getHeader()[2..5], + bam(process.out.bam.get(0).get(1), 'https://github.com/nf-core/test-datasets/raw/modules/data/genomics/homo_sapiens/genome/genome.fasta', stringency: 'silent').getReadsMD5(), + ).match() } + ) + } + + } + + test("[ bam, bai, snps, svs, [] ], fasta, fai") { + + when { + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test.genome.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/vcf/NA24385_sv.vcf.gz', checkIfExists: true), + [] + ] + input[1] = [ + [ id:'reference' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ] + input[2] = [ + [ id:'reference' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.versions, + bam(process.out.bam.get(0).get(1), stringency: 'silent').getHeader(), + bam(process.out.bam.get(0).get(1), stringency: 'silent').getReadsMD5(), + ).match() } + ) + } + + } + + test("[ bam, bai, snps, [], [] ], fasta, fai -stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test.genome.vcf.gz', checkIfExists: true), + [], + [] + ] + input[1] = [ + [ id:'reference' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ] + input[2] = [ + [ id:'reference' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("[ bam, bai, snps, [], [] ], fasta, fai - log & cram -stub") { + + options "-stub" + config "./nextflow.config" + + when { + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test.genome.vcf.gz', checkIfExists: true), + [], + [] + ] + input[1] = [ + [ id:'reference' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ] + input[2] = [ + [ id:'reference' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } +} \ No newline at end of file diff --git a/modules/nf-core/longphase/haplotag/tests/main.nf.test.snap b/modules/nf-core/longphase/haplotag/tests/main.nf.test.snap new file mode 100644 index 00000000..225a4f7e --- /dev/null +++ b/modules/nf-core/longphase/haplotag/tests/main.nf.test.snap @@ -0,0 +1,159 @@ +{ + "[ bam, bai, snps, [], [] ], fasta, fai - log & cram -stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.cram:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,3c169b598f6e15332b6d7ec1d6d96810" + ], + "bam": [ + [ + { + "id": "test" + }, + "test.cram:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "log": [ + [ + { + "id": "test" + }, + "test.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,3c169b598f6e15332b6d7ec1d6d96810" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-08-09T09:40:30.738831707" + }, + "[ bam, bai, snps, [], [] ], fasta, fai": { + "content": [ + [ + "versions.yml:md5,3c169b598f6e15332b6d7ec1d6d96810" + ], + [ + "@HD\tVN:1.6\tSO:coordinate", + "@SQ\tSN:chr22\tLN:40001", + "@RG\tID:test\tSM:test", + "@PG\tID:minimap2\tPN:minimap2\tVN:2.28-r1209\tCL:minimap2 -y -x map-ont --secondary=no -R @RG\\tID:test\\tSM:test -t 30 -a genome.mmi test.bam_other.fastq.gz", + "@PG\tID:samtools\tPN:samtools\tPP:minimap2\tVN:1.19.2\tCL:samtools sort -@ 29 -o test.bam_other.fastq.gz.bam --write-index", + "@PG\tID:longphase\tPN:longphase\tPP:samtools\tVN:1.7.3\tCL:longphase haplotag --threads 2 -o test --reference genome.fasta --snp-file test.genome.vcf.gz --bam test.sorted.bam " + ], + "721264eb2824a3146b331f2532d10180" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-25T09:12:34.848038423" + }, + "[ bam, bai, snps, [], [] ], fasta, fai -stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + + ], + "2": [ + "versions.yml:md5,3c169b598f6e15332b6d7ec1d6d96810" + ], + "bam": [ + [ + { + "id": "test" + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "log": [ + + ], + "versions": [ + "versions.yml:md5,3c169b598f6e15332b6d7ec1d6d96810" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-08-09T09:40:20.836809553" + }, + "[ bam, bai, snps, svs, [] ], fasta, fai": { + "content": [ + [ + "versions.yml:md5,3c169b598f6e15332b6d7ec1d6d96810" + ], + [ + "@HD\tVN:1.6\tSO:coordinate", + "@SQ\tSN:chr22\tLN:40001", + "@RG\tID:test\tSM:test", + "@PG\tID:minimap2\tPN:minimap2\tVN:2.28-r1209\tCL:minimap2 -y -x map-ont --secondary=no -R @RG\\tID:test\\tSM:test -t 30 -a genome.mmi test.bam_other.fastq.gz", + "@PG\tID:samtools\tPN:samtools\tPP:minimap2\tVN:1.19.2\tCL:samtools sort -@ 29 -o test.bam_other.fastq.gz.bam --write-index", + "@PG\tID:longphase\tPN:longphase\tPP:samtools\tVN:1.7.3\tCL:longphase haplotag --threads 2 -o test --reference genome.fasta --snp-file test.genome.vcf.gz --bam test.sorted.bam " + ], + "721264eb2824a3146b331f2532d10180" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-25T09:13:39.901419316" + }, + "[ bam, bai, snps, [], [] ], fasta, fai - log & cram": { + "content": [ + [ + "versions.yml:md5,3c169b598f6e15332b6d7ec1d6d96810" + ], + [ + [ + { + "id": "test" + }, + "test.log:md5,6203f10696f4b0909f0d327c021df773" + ] + ], + [ + "@RG\tID:test\tSM:test", + "@PG\tID:minimap2\tPN:minimap2\tVN:2.28-r1209\tCL:minimap2 -y -x map-ont --secondary=no -R @RG\\tID:test\\tSM:test -t 30 -a genome.mmi test.bam_other.fastq.gz", + "@PG\tID:samtools\tPN:samtools\tPP:minimap2\tVN:1.19.2\tCL:samtools sort -@ 29 -o test.bam_other.fastq.gz.bam --write-index", + "@PG\tID:longphase\tPN:longphase\tPP:samtools\tVN:1.7.3\tCL:longphase haplotag --log --cram --threads 2 -o test --reference genome.fasta --snp-file test.genome.vcf.gz --bam test.sorted.bam " + ], + "721264eb2824a3146b331f2532d10180" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-25T09:45:54.254102844" + } +} \ No newline at end of file diff --git a/modules/nf-core/longphase/haplotag/tests/nextflow.config b/modules/nf-core/longphase/haplotag/tests/nextflow.config new file mode 100644 index 00000000..d50498b2 --- /dev/null +++ b/modules/nf-core/longphase/haplotag/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: 'LONGPHASE_HAPLOTAG' { + ext.args = '--log --cram' + } +} diff --git a/modules/nf-core/longphase/haplotag/tests/tags.yml b/modules/nf-core/longphase/haplotag/tests/tags.yml new file mode 100644 index 00000000..117e16a5 --- /dev/null +++ b/modules/nf-core/longphase/haplotag/tests/tags.yml @@ -0,0 +1,2 @@ +longphase/haplotag: + - "modules/nf-core/longphase/haplotag/**" diff --git a/modules/nf-core/longphase/phase/environment.yml b/modules/nf-core/longphase/phase/environment.yml new file mode 100644 index 00000000..96e04eb6 --- /dev/null +++ b/modules/nf-core/longphase/phase/environment.yml @@ -0,0 +1,8 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json +channels: + - conda-forge + - bioconda +dependencies: + - "bioconda::longphase=1.7.3" + - "bioconda::htslib=1.20" diff --git a/modules/nf-core/longphase/phase/main.nf b/modules/nf-core/longphase/phase/main.nf new file mode 100644 index 00000000..ad29d997 --- /dev/null +++ b/modules/nf-core/longphase/phase/main.nf @@ -0,0 +1,69 @@ +process LONGPHASE_PHASE { + tag "$meta.id" + label 'process_medium' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/mulled-v2-d626bb8ec5a659accfbd8490bc1ac4a940722258:682e8c0cc0ceebf9bd38371a58249aabce93b1b3-0': + 'biocontainers/mulled-v2-d626bb8ec5a659accfbd8490bc1ac4a940722258:682e8c0cc0ceebf9bd38371a58249aabce93b1b3-0' }" + + input: + tuple val(meta), path(bam), path(bai), path(snps), path(svs), path(mods) + tuple val(meta2), path(fasta) + tuple val(meta3), path(fai) + + + output: + tuple val(meta), path("*.vcf.gz"), emit: vcf + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def args2 = task.ext.args2 ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def sv_file = params.svs ? "--sv-file ${svs}" : "" + def mod_file = params.mods ? "--mod-file ${mods}" : "" + + def bamList = [] + for (file in bam) { + bamList.add("-b") + bamList.add(file) + } + """ + longphase \\ + phase \\ + $args \\ + --threads $task.cpus \\ + -o ${prefix} \\ + --reference ${fasta} \\ + --snp-file ${snps} \\ + ${bamList.join(" ")} \\ + ${sv_file} \\ + ${mod_file} \\ + + bgzip \\ + --threads $task.cpus \\ + $args2 \\ + ${prefix}.vcf + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + longphase: \$(longphase --version | head -n 1 | sed 's/Version: //') + END_VERSIONS + """ + + stub: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + """ + echo "" | bgzip -c > ${prefix}.vcf.gz + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + longphase: \$(longphase --version | head -n 1 | sed 's/Version: //') + END_VERSIONS + """ +} diff --git a/modules/nf-core/longphase/phase/meta.yml b/modules/nf-core/longphase/phase/meta.yml new file mode 100644 index 00000000..42899177 --- /dev/null +++ b/modules/nf-core/longphase/phase/meta.yml @@ -0,0 +1,81 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/meta-schema.json +name: "longphase_phase" +description: LongPhase is an ultra-fast program for simultaneously co-phasing SNPs, small indels, large SVs, and (5mC) modifications for Nanopore and PacBio platforms. +keywords: + - phase + - long-read + - genomics +tools: + - "longphase": + description: "LongPhase is an ultra-fast program for simultaneously co-phasing SNPs, small indels, large SVs, and (5mC) modifications for Nanopore and PacBio platforms." + homepage: "https://github.com/twolinin/longphase" + documentation: "https://github.com/twolinin/longphase" + tool_dev_url: "https://github.com/twolinin/longphase" + doi: "10.1093/bioinformatics/btac058" + licence: ["GPL v3"] + +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - bam: + type: file + description: Sorted BAM/CRAM file(s) + pattern: "*.{bam,cram}" + - bai: + type: file + description: Index of sorted BAM/CRAM file(s) + pattern: "*.{bai,crai,csi}" + - snps: + type: file + description: VCF file with SNPs (and INDELs) + pattern: "*.{vcf,vcf.gz}" + - svs: + type: file + description: VCF file with SVs + pattern: "*.{vcf,vcf.gz}" + - mods: + type: file + description: modcall-generated VCF with modifications + pattern: "*.{vcf,vcf.gz}" + - meta2: + type: map + description: | + Groovy Map containing reference information + e.g. `[ id:'hg38' ]` + - fasta: + type: file + description: Reference fasta file + pattern: "*.fasta" + - meta3: + type: map + description: | + Groovy Map containing reference information + e.g. `[ id:'hg38' ]` + - fai: + type: file + description: Reference fai index + pattern: "*.fai" + +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + - vcf: + type: file + description: Compressed VCF file with phased variants + pattern: "*.vcf.gz" + +authors: + - "@fellen31" +maintainers: + - "@fellen31" diff --git a/modules/nf-core/longphase/phase/tests/main.nf.test b/modules/nf-core/longphase/phase/tests/main.nf.test new file mode 100644 index 00000000..3e303312 --- /dev/null +++ b/modules/nf-core/longphase/phase/tests/main.nf.test @@ -0,0 +1,157 @@ +nextflow_process { + + name "Test Process LONGPHASE_PHASE" + script "../main.nf" + process "LONGPHASE_PHASE" + + tag "modules" + tag "modules_nfcore" + tag "longphase" + tag "longphase/phase" + config "./nextflow.config" + + test("[ bam, bai, snps, [], [] ], fasta, fai") { + + when { + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test.genome.vcf.gz', checkIfExists: true), + [], + [] + ] + input[1] = [ + [ id:'reference' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ] + input[2] = [ + [ id:'reference' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +test("[ bam, bai, snps, svs, [] ], fasta, fai") { + + when { + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test.genome.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/vcf/NA24385_sv.vcf.gz', checkIfExists: true), + [] + ] + input[1] = [ + [ id:'reference' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ] + input[2] = [ + [ id:'reference' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +test("[ bam x2, bai x2, snps, svs, [] ], fasta, fai") { + + when { + process { + """ + input[0] = [ + [ id:'test' ], + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test2.sorted.bam', checkIfExists: true) + ], + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test2.sorted.bam.bai', checkIfExists: true) + ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test.genome.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/vcf/NA24385_sv.vcf.gz', checkIfExists: true), + [] + ] + input[1] = [ + [ id:'reference' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ] + input[2] = [ + [ id:'reference' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("[ bam, bai, snps, [], [] ], fasta, fai - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test.genome.vcf.gz', checkIfExists: true), + [], + [] + ] + input[1] = [ + [ id:'reference' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ] + input[2] = [ + [ id:'reference' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} diff --git a/modules/nf-core/longphase/phase/tests/main.nf.test.snap b/modules/nf-core/longphase/phase/tests/main.nf.test.snap new file mode 100644 index 00000000..02e2bb17 --- /dev/null +++ b/modules/nf-core/longphase/phase/tests/main.nf.test.snap @@ -0,0 +1,134 @@ +{ + "[ bam, bai, snps, [], [] ], fasta, fai": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,fd2d21056b2de4722f12d5e883d9cb0a" + ] + ], + "1": [ + "versions.yml:md5,8d8d82510dd1fbe01a91c575c472897f" + ], + "vcf": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,fd2d21056b2de4722f12d5e883d9cb0a" + ] + ], + "versions": [ + "versions.yml:md5,8d8d82510dd1fbe01a91c575c472897f" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-22T12:14:04.269956432" + }, + "[ bam, bai, snps, svs, [] ], fasta, fai": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,fd2d21056b2de4722f12d5e883d9cb0a" + ] + ], + "1": [ + "versions.yml:md5,8d8d82510dd1fbe01a91c575c472897f" + ], + "vcf": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,fd2d21056b2de4722f12d5e883d9cb0a" + ] + ], + "versions": [ + "versions.yml:md5,8d8d82510dd1fbe01a91c575c472897f" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-22T12:14:39.961315592" + }, + "[ bam x2, bai x2, snps, svs, [] ], fasta, fai": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,3ced25dc8c1ec0a7c64481c8a163d687" + ] + ], + "1": [ + "versions.yml:md5,8d8d82510dd1fbe01a91c575c472897f" + ], + "vcf": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,3ced25dc8c1ec0a7c64481c8a163d687" + ] + ], + "versions": [ + "versions.yml:md5,8d8d82510dd1fbe01a91c575c472897f" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-22T12:15:07.970597495" + }, + "[ bam, bai, snps, [], [] ], fasta, fai - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + "versions.yml:md5,8d8d82510dd1fbe01a91c575c472897f" + ], + "vcf": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,8d8d82510dd1fbe01a91c575c472897f" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-22T12:15:40.296227382" + } +} \ No newline at end of file diff --git a/modules/nf-core/longphase/phase/tests/nextflow.config b/modules/nf-core/longphase/phase/tests/nextflow.config new file mode 100644 index 00000000..317f040a --- /dev/null +++ b/modules/nf-core/longphase/phase/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: 'LONGPHASE_PHASE' { + ext.args = '--ont' + } +} diff --git a/modules/nf-core/longphase/phase/tests/tags.yml b/modules/nf-core/longphase/phase/tests/tags.yml new file mode 100644 index 00000000..260a0d08 --- /dev/null +++ b/modules/nf-core/longphase/phase/tests/tags.yml @@ -0,0 +1,2 @@ +longphase/phase: + - "modules/nf-core/longphase/phase/**" diff --git a/nextflow.config b/nextflow.config index f8e3ce96..ed5cc4ba 100644 --- a/nextflow.config +++ b/nextflow.config @@ -45,7 +45,7 @@ params { deepvariant_model_type = params.preset == 'ONT_R10' ? 'ONT_R104' : 'PACBIO' minimap2_read_mapping_preset = params.preset == 'ONT_R10' ? 'lr:hq' : 'lr:hqae' - phaser = 'whatshap' + phaser = 'longphase' sv_caller = 'severus' preset = 'revio' hifiasm_mode = 'hifi-only' diff --git a/nextflow_schema.json b/nextflow_schema.json index 1bb0bbe3..6ab7a870 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -369,9 +369,9 @@ }, "phaser": { "type": "string", - "default": "whatshap", - "description": "Which phasing software to use (`whatshap`, `hiphase_snv`, `hiphase_sv`)", - "enum": ["whatshap", "hiphase_snv", "hiphase_sv"] + "default": "longphase", + "description": "Which phasing software to use (`longphase`, `whatshap`, `hiphase`)", + "enum": ["longphase", "whatshap", "hiphase"] }, "hifiasm_mode": { "type": "string", diff --git a/subworkflows/local/phasing.nf b/subworkflows/local/phasing.nf index fb87a27b..4d3757ff 100644 --- a/subworkflows/local/phasing.nf +++ b/subworkflows/local/phasing.nf @@ -1,126 +1,138 @@ -include { BCFTOOLS_FILLFROMFASTA } from '../../modules/local/bcftools/fillfromfasta/main' -include { BCFTOOLS_REHEADER } from '../../modules/nf-core/bcftools/reheader/main' -include { CRAMINO as CRAMINO_PHASED } from '../../modules/local/cramino' -include { HIPHASE as HIPHASE_SNV } from '../../modules/local/hiphase/main' -include { HIPHASE as HIPHASE_SV } from '../../modules/local/hiphase/main' -include { SAMTOOLS_INDEX as SAMTOOLS_INDEX_WHATSHAP } from '../../modules/nf-core/samtools/index/main' -include { TABIX_BGZIPTABIX } from '../../modules/nf-core/tabix/bgziptabix/main' -include { TABIX_TABIX } from '../../modules/nf-core/tabix/tabix/main' -include { WHATSHAP_HAPLOTAG } from '../../modules/local/whatshap/haplotag/main' -include { WHATSHAP_PHASE } from '../../modules/local/whatshap/phase/main' -include { WHATSHAP_STATS } from '../../modules/local/whatshap/stats/main' +include { CRAMINO as CRAMINO_PHASED } from '../../modules/local/cramino' +include { HIPHASE } from '../../modules/local/hiphase/main' +include { LONGPHASE_HAPLOTAG } from '../../modules/nf-core/longphase/haplotag/main' +include { LONGPHASE_PHASE } from '../../modules/nf-core/longphase/phase/main' +include { SAMTOOLS_INDEX as SAMTOOLS_INDEX_LONGPHASE } from '../../modules/nf-core/samtools/index/main' +include { SAMTOOLS_INDEX as SAMTOOLS_INDEX_WHATSHAP } from '../../modules/nf-core/samtools/index/main' +include { TABIX_TABIX as TABIX_LONGPHASE_PHASE } from '../../modules/nf-core/tabix/tabix/main' +include { WHATSHAP_HAPLOTAG } from '../../modules/local/whatshap/haplotag/main' +include { WHATSHAP_PHASE } from '../../modules/local/whatshap/phase/main' +include { WHATSHAP_STATS } from '../../modules/local/whatshap/stats/main' workflow PHASING { take: - ch_vcf // channel: [ val(meta), vcf ] - ch_sv_vcf // channel: [ val(meta), vcf ] - ch_bam_bai // channel: [ val(meta), bam, bai ] - fasta // channel: [ val(meta), fasta ] - fai // channel: [ val(meta), fai ] + ch_vcf // channel: [ val(meta), path(vcf) ] + ch_vcf_index // channel: [ val(meta), path(tbi) ] + ch_bam_bai // channel: [ val(meta), path(bam), path(bai) ] + fasta // channel: [ val(meta), path(fasta) ] + fai // channel: [ val(meta), path(fai) ] main: - ch_versions = Channel.empty() - ch_bam_bai_haplotagged = Channel.empty() - ch_vcf_index = Channel.empty() - - TABIX_TABIX(ch_vcf) - ch_versions = ch_versions.mix(TABIX_TABIX.out.versions) - - if (params.phaser.equals("whatshap")) { - - WHATSHAP_PHASE( ch_vcf.join(ch_bam_bai), fasta, fai ) - ch_versions = ch_versions.mix(WHATSHAP_PHASE.out.versions) - - WHATSHAP_PHASE.out.vcf_tbi - .join(ch_bam_bai) - .set { ch_whatshap_haplotag_in } - - WHATSHAP_HAPLOTAG(ch_whatshap_haplotag_in, fasta, fai) - ch_versions = ch_versions.mix(WHATSHAP_HAPLOTAG.out.versions) - - SAMTOOLS_INDEX_WHATSHAP( WHATSHAP_HAPLOTAG.out.bam ) - ch_versions = ch_versions.mix(SAMTOOLS_INDEX_WHATSHAP.out.versions) - - WHATSHAP_HAPLOTAG - .out.bam - .join(SAMTOOLS_INDEX_WHATSHAP.out.bai) - .set { ch_bam_bai_haplotagged } - - ch_vcf_index = ch_vcf_index.mix( WHATSHAP_PHASE.out.vcf_tbi ) - - } else if (params.phaser.equals("hiphase_snv")) { - ch_vcf - .join(TABIX_TABIX.out.csi) - .join(ch_bam_bai) - .set { ch_hiphase_snv_in } - - HIPHASE_SNV( ch_hiphase_snv_in, fasta, fai, true ) - ch_versions = ch_versions.mix(HIPHASE_SNV.out.versions) - - HIPHASE_SNV.out.bams - .join(HIPHASE_SNV.out.bais) - .set { ch_bam_bai_haplotagged } - - ch_vcf_index = ch_vcf_index.mix( HIPHASE_SNV.out.vcfs.join(HIPHASE_SNV.out.vcfs_tbi) ) - - } else if (params.phaser.equals("hiphase_sv")) { - // Sniffles specific... - BCFTOOLS_REHEADER( - ch_sv_vcf - .map { meta, vcf -> [meta, vcf, [], []] }, - [[],[]] - ) - ch_versions = ch_versions.mix(BCFTOOLS_REHEADER.out.versions) - - // Might be that newer versions of HiPhase ignores certain SVs - // if BCFTOOLS_FILLFROMFASTA is not run, instead of craching - BCFTOOLS_FILLFROMFASTA(BCFTOOLS_REHEADER.out.vcf, fasta) - ch_versions = ch_versions.mix(BCFTOOLS_FILLFROMFASTA.out.versions) - - TABIX_BGZIPTABIX(BCFTOOLS_FILLFROMFASTA.out.vcf) - ch_versions = ch_versions.mix(TABIX_BGZIPTABIX.out.versions) - - TABIX_BGZIPTABIX.out.gz_tbi - .map { meta, gz, tbi -> [ meta, gz ] } - .set { ch_sv_vcf } - - TABIX_BGZIPTABIX.out.gz_tbi - .map { meta, gz, tbi -> [ meta, tbi ] } - .set { ch_sv_tbi } - - ch_vcf - .concat(ch_sv_vcf) - .groupTuple() - .set { ch_hiphase_vcf } - - TABIX_TABIX.out.csi - .concat(ch_sv_tbi) - .groupTuple() - .set { ch_hiphase_tbi } - - ch_hiphase_vcf - .join(ch_hiphase_tbi) - .join(ch_bam_bai) - .set { ch_hiphase_in } - - HIPHASE_SV( ch_hiphase_in, fasta, fai, true ) - ch_versions = ch_versions.mix(HIPHASE_SV.out.versions) - - HIPHASE_SV.out.bams - .join(HIPHASE_SV.out.bais) - .set { ch_bam_bai_haplotagged } - - ch_vcf_index = ch_vcf_index.mix( HIPHASE_SV.out.vcfs.join(HIPHASE_SV.out.vcfs_tbi) ) - } - - WHATSHAP_STATS( ch_vcf_index ) - ch_versions = ch_versions.mix(WHATSHAP_STATS.out.versions) - - CRAMINO_PHASED( ch_bam_bai_haplotagged ) - ch_versions = ch_versions.mix(CRAMINO_PHASED.out.versions) + ch_versions = Channel.empty() + + // Phase variants and haplotag reads with Longphase + if (params.phaser.equals("longphase")) { + + ch_bam_bai + .join( ch_vcf ) + .map { meta, bam, bai, snvs -> [ meta, bam, bai, snvs, [], [] ] } + .set { ch_longphase_phase_in } + + LONGPHASE_PHASE ( + ch_longphase_phase_in, + fasta, + fai + ) + ch_versions = ch_versions.mix(LONGPHASE_PHASE.out.versions) + + TABIX_LONGPHASE_PHASE ( + LONGPHASE_PHASE.out.vcf + ) + ch_versions = ch_versions.mix(TABIX_LONGPHASE_PHASE.out.versions) + + LONGPHASE_PHASE.out.vcf + .join( TABIX_LONGPHASE_PHASE.out.tbi ) + .set { ch_phased_vcf_index } + + ch_bam_bai + .join( LONGPHASE_PHASE.out.vcf ) + .map { meta, bam, bai, vcf -> [ meta, bam, bai, vcf, [], [] ] } + .set { ch_longphase_haplotag_in } + + LONGPHASE_HAPLOTAG ( + ch_longphase_haplotag_in, + fasta, + fai + ) + ch_versions = ch_versions.mix(LONGPHASE_HAPLOTAG.out.versions) + + SAMTOOLS_INDEX_LONGPHASE ( + LONGPHASE_HAPLOTAG.out.bam + ) + ch_versions = ch_versions.mix(SAMTOOLS_INDEX_LONGPHASE.out.versions) + + LONGPHASE_HAPLOTAG.out.bam + .join( SAMTOOLS_INDEX_LONGPHASE.out.bai ) + .set { ch_bam_bai_haplotagged } + + // Phase variants and haplotag reads with whatshap + } else if (params.phaser.equals("whatshap")) { + + WHATSHAP_PHASE( + ch_vcf.join( ch_bam_bai ), + fasta, + fai + ) + ch_versions = ch_versions.mix(WHATSHAP_PHASE.out.versions) + + WHATSHAP_PHASE.out.vcf_tbi + .join( ch_bam_bai ) + .set { ch_whatshap_haplotag_in } + + WHATSHAP_HAPLOTAG ( + ch_whatshap_haplotag_in, + fasta, + fai + ) + ch_versions = ch_versions.mix(WHATSHAP_HAPLOTAG.out.versions) + + SAMTOOLS_INDEX_WHATSHAP ( + WHATSHAP_HAPLOTAG.out.bam + ) + ch_versions = ch_versions.mix(SAMTOOLS_INDEX_WHATSHAP.out.versions) + + WHATSHAP_HAPLOTAG.out.bam + .join( SAMTOOLS_INDEX_WHATSHAP.out.bai ) + .set { ch_bam_bai_haplotagged } + + WHATSHAP_PHASE.out.vcf_tbi + .set { ch_phased_vcf_index } + + // Phase variants and haplotag reads with HiPhase + } else if (params.phaser.equals("hiphase")) { + ch_vcf + .join( ch_vcf_index ) + .join( ch_bam_bai ) + .set { ch_hiphase_snv_in } + + HIPHASE ( + ch_hiphase_snv_in, + fasta, + fai, + true + ) + ch_versions = ch_versions.mix(HIPHASE.out.versions) + + HIPHASE.out.bams + .join( HIPHASE.out.bais ) + .set { ch_bam_bai_haplotagged } + + HIPHASE.out.vcfs + .join( HIPHASE.out.vcfs_tbi ) + .set { ch_phased_vcf_index } + + } + + // Phasing stats + WHATSHAP_STATS ( ch_phased_vcf_index ) + ch_versions = ch_versions.mix(WHATSHAP_STATS.out.versions) + + // Phasing QC + CRAMINO_PHASED ( ch_bam_bai_haplotagged ) + ch_versions = ch_versions.mix(CRAMINO_PHASED.out.versions) emit: - haplotagged_bam_bai = ch_bam_bai_haplotagged // channel: [ val(meta), bam, bai ] - stats = WHATSHAP_STATS.out.stats // channel: [ val(meta), txt ] - versions = ch_versions // channel: [ versions.yml ] + haplotagged_bam_bai = ch_bam_bai_haplotagged // channel: [ val(meta), path(bam), path(bai) ] + stats = WHATSHAP_STATS.out.stats // channel: [ val(meta), path(txt) ] + versions = ch_versions // channel: [ path(versions.yml) ] } diff --git a/subworkflows/local/short_variant_calling/main.nf b/subworkflows/local/short_variant_calling/main.nf index 5395cd2e..18be861b 100644 --- a/subworkflows/local/short_variant_calling/main.nf +++ b/subworkflows/local/short_variant_calling/main.nf @@ -93,7 +93,8 @@ workflow SHORT_VARIANT_CALLING { ch_versions = ch_versions.mix(BCFTOOLS_NORM_MULTISAMPLE.out.versions) emit: - snp_calls_vcf = BCFTOOLS_NORM_SINGLESAMPLE.out.vcf // channel: [ val(meta), path(bcf) ] + snp_calls_vcf = BCFTOOLS_NORM_SINGLESAMPLE.out.vcf // channel: [ val(meta), path(vcf) ] + snp_calls_tbi = BCFTOOLS_NORM_SINGLESAMPLE.out.tbi // channel: [ val(meta), path(tbi) ] combined_bcf = BCFTOOLS_NORM_MULTISAMPLE.out.vcf // channel: [ val(meta), path(bcf) ] combined_csi = BCFTOOLS_NORM_MULTISAMPLE.out.csi // channel: [ val(meta), path(csi) ] versions = ch_versions // channel: [ path(versions.yml) ] diff --git a/subworkflows/local/short_variant_calling/tests/main.nf.test.snap b/subworkflows/local/short_variant_calling/tests/main.nf.test.snap index 5aa2cc19..9d6ea38e 100644 --- a/subworkflows/local/short_variant_calling/tests/main.nf.test.snap +++ b/subworkflows/local/short_variant_calling/tests/main.nf.test.snap @@ -8,10 +8,19 @@ "id": "test", "single_end": false }, - "test_norm_singlesample.bcf:md5,94d38d8fd3c50a7ede72a080fbd4992c" + "test_norm_singlesample.vcf.gz:md5,8d1b64c0eed7eb66dd3294fcbc15b4a1" ] ], "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test_norm_singlesample.vcf.gz.tbi:md5,41ab8f51ac55e08b2339feb5a6b40764" + ] + ], + "2": [ [ { "id": "genome.bed", @@ -21,7 +30,7 @@ "genome.bed_norm_multisample.vcf.gz:md5,56d662f0a527803ae72e40625c01014b" ] ], - "2": [ + "3": [ [ { "id": "genome.bed", @@ -31,7 +40,7 @@ "genome.bed_norm_multisample.vcf.gz.csi:md5,53e24fb59fef3bee6291c474e20200b9" ] ], - "3": [ + "4": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", @@ -59,13 +68,22 @@ "genome.bed_norm_multisample.vcf.gz.csi:md5,53e24fb59fef3bee6291c474e20200b9" ] ], + "snp_calls_tbi": [ + [ + { + "id": "test", + "single_end": false + }, + "test_norm_singlesample.vcf.gz.tbi:md5,41ab8f51ac55e08b2339feb5a6b40764" + ] + ], "snp_calls_vcf": [ [ { "id": "test", "single_end": false }, - "test_norm_singlesample.bcf:md5,94d38d8fd3c50a7ede72a080fbd4992c" + "test_norm_singlesample.vcf.gz:md5,8d1b64c0eed7eb66dd3294fcbc15b4a1" ] ], "versions": [ @@ -82,7 +100,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-09-19T14:06:15.287122968" + "timestamp": "2024-09-20T09:13:58.152956123" }, "1 sample - 2 bed, fasta, fai, bed, [] - stub": { "content": [ @@ -93,10 +111,19 @@ "id": "test", "single_end": false }, - "test_norm_singlesample.bcf:md5,d41d8cd98f00b204e9800998ecf8427e" + "test_norm_singlesample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test_norm_singlesample.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ [ { "id": "genome.bed", @@ -114,7 +141,7 @@ "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], - "2": [ + "3": [ [ { "id": "genome.bed", @@ -132,7 +159,7 @@ "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "3": [ + "4": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", @@ -180,13 +207,22 @@ "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], + "snp_calls_tbi": [ + [ + { + "id": "test", + "single_end": false + }, + "test_norm_singlesample.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], "snp_calls_vcf": [ [ { "id": "test", "single_end": false }, - "test_norm_singlesample.bcf:md5,d41d8cd98f00b204e9800998ecf8427e" + "test_norm_singlesample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "versions": [ @@ -207,7 +243,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-09-19T14:09:04.780658252" + "timestamp": "2024-09-20T09:16:49.165250859" }, "1 sample - 1 bed, fasta, fai, bed, []": { "content": [ @@ -218,10 +254,19 @@ "id": "test", "single_end": false }, - "test_norm_singlesample.bcf:md5,94d38d8fd3c50a7ede72a080fbd4992c" + "test_norm_singlesample.vcf.gz:md5,8d1b64c0eed7eb66dd3294fcbc15b4a1" ] ], "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test_norm_singlesample.vcf.gz.tbi:md5,41ab8f51ac55e08b2339feb5a6b40764" + ] + ], + "2": [ [ { "id": "genome.bed", @@ -231,7 +276,7 @@ "genome.bed_norm_multisample.vcf.gz:md5,56d662f0a527803ae72e40625c01014b" ] ], - "2": [ + "3": [ [ { "id": "genome.bed", @@ -241,7 +286,7 @@ "genome.bed_norm_multisample.vcf.gz.csi:md5,53e24fb59fef3bee6291c474e20200b9" ] ], - "3": [ + "4": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", @@ -269,13 +314,22 @@ "genome.bed_norm_multisample.vcf.gz.csi:md5,53e24fb59fef3bee6291c474e20200b9" ] ], + "snp_calls_tbi": [ + [ + { + "id": "test", + "single_end": false + }, + "test_norm_singlesample.vcf.gz.tbi:md5,41ab8f51ac55e08b2339feb5a6b40764" + ] + ], "snp_calls_vcf": [ [ { "id": "test", "single_end": false }, - "test_norm_singlesample.bcf:md5,94d38d8fd3c50a7ede72a080fbd4992c" + "test_norm_singlesample.vcf.gz:md5,8d1b64c0eed7eb66dd3294fcbc15b4a1" ] ], "versions": [ @@ -292,7 +346,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-09-19T14:06:44.174749859" + "timestamp": "2024-09-20T09:14:27.319216407" }, "2 samples - 2 bed, fasta, fai, bed, par_bed": { "content": [ @@ -303,17 +357,33 @@ "id": "test", "single_end": false }, - "test_norm_singlesample.bcf:md5,f978f9f75d4892499156218a300fd246" + "test_norm_singlesample.vcf.gz:md5,f8e492c9c4d6e0cb027b300bb3f7155a" ], [ { "id": "test2", "single_end": false }, - "test2_norm_singlesample.bcf:md5,562e4ab7cea09c4f296550784e02ca84" + "test2_norm_singlesample.vcf.gz:md5,0e42833e64e0f427ca09259e17e2765b" ] ], "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test_norm_singlesample.vcf.gz.tbi:md5,f1d5f7e2321e7f0534d251c12b373221" + ], + [ + { + "id": "test2", + "single_end": false + }, + "test2_norm_singlesample.vcf.gz.tbi:md5,2c4354a182ae1f4ad94f056b2fbf62a8" + ] + ], + "2": [ [ { "id": "genome.bed", @@ -331,7 +401,7 @@ "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,ec12cca4d6849a5f47823331c4b9a8f3" ] ], - "2": [ + "3": [ [ { "id": "genome.bed", @@ -349,7 +419,7 @@ "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,12d9802de9b9e071408e526930050626" ] ], - "3": [ + "4": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", @@ -401,20 +471,36 @@ "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,12d9802de9b9e071408e526930050626" ] ], + "snp_calls_tbi": [ + [ + { + "id": "test", + "single_end": false + }, + "test_norm_singlesample.vcf.gz.tbi:md5,f1d5f7e2321e7f0534d251c12b373221" + ], + [ + { + "id": "test2", + "single_end": false + }, + "test2_norm_singlesample.vcf.gz.tbi:md5,2c4354a182ae1f4ad94f056b2fbf62a8" + ] + ], "snp_calls_vcf": [ [ { "id": "test", "single_end": false }, - "test_norm_singlesample.bcf:md5,f978f9f75d4892499156218a300fd246" + "test_norm_singlesample.vcf.gz:md5,f8e492c9c4d6e0cb027b300bb3f7155a" ], [ { "id": "test2", "single_end": false }, - "test2_norm_singlesample.bcf:md5,562e4ab7cea09c4f296550784e02ca84" + "test2_norm_singlesample.vcf.gz:md5,0e42833e64e0f427ca09259e17e2765b" ] ], "versions": [ @@ -439,7 +525,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-09-19T14:08:22.570429008" + "timestamp": "2024-09-20T09:16:06.366289968" }, "2 samples - 2 bed, fasta, fai, bed, [] - stub": { "content": [ @@ -450,17 +536,33 @@ "id": "test", "single_end": false }, - "test_norm_singlesample.bcf:md5,d41d8cd98f00b204e9800998ecf8427e" + "test_norm_singlesample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ], [ { "id": "test2", "single_end": false }, - "test2_norm_singlesample.bcf:md5,d41d8cd98f00b204e9800998ecf8427e" + "test2_norm_singlesample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test_norm_singlesample.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "test2", + "single_end": false + }, + "test2_norm_singlesample.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ [ { "id": "genome.bed", @@ -478,7 +580,7 @@ "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], - "2": [ + "3": [ [ { "id": "genome.bed", @@ -496,7 +598,7 @@ "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "3": [ + "4": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", @@ -548,20 +650,36 @@ "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], + "snp_calls_tbi": [ + [ + { + "id": "test", + "single_end": false + }, + "test_norm_singlesample.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "test2", + "single_end": false + }, + "test2_norm_singlesample.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], "snp_calls_vcf": [ [ { "id": "test", "single_end": false }, - "test_norm_singlesample.bcf:md5,d41d8cd98f00b204e9800998ecf8427e" + "test_norm_singlesample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ], [ { "id": "test2", "single_end": false }, - "test2_norm_singlesample.bcf:md5,d41d8cd98f00b204e9800998ecf8427e" + "test2_norm_singlesample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "versions": [ @@ -586,7 +704,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-09-19T14:09:16.982831625" + "timestamp": "2024-09-20T09:17:01.14095623" }, "2 samples - 2 bed, fasta, fai, bed, par_bed - stub": { "content": [ @@ -597,17 +715,33 @@ "id": "test", "single_end": false }, - "test_norm_singlesample.bcf:md5,d41d8cd98f00b204e9800998ecf8427e" + "test_norm_singlesample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ], [ { "id": "test2", "single_end": false }, - "test2_norm_singlesample.bcf:md5,d41d8cd98f00b204e9800998ecf8427e" + "test2_norm_singlesample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test_norm_singlesample.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "test2", + "single_end": false + }, + "test2_norm_singlesample.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ [ { "id": "genome.bed", @@ -625,7 +759,7 @@ "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], - "2": [ + "3": [ [ { "id": "genome.bed", @@ -643,7 +777,7 @@ "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "3": [ + "4": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", @@ -695,20 +829,36 @@ "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], + "snp_calls_tbi": [ + [ + { + "id": "test", + "single_end": false + }, + "test_norm_singlesample.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "test2", + "single_end": false + }, + "test2_norm_singlesample.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], "snp_calls_vcf": [ [ { "id": "test", "single_end": false }, - "test_norm_singlesample.bcf:md5,d41d8cd98f00b204e9800998ecf8427e" + "test_norm_singlesample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ], [ { "id": "test2", "single_end": false }, - "test2_norm_singlesample.bcf:md5,d41d8cd98f00b204e9800998ecf8427e" + "test2_norm_singlesample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "versions": [ @@ -733,7 +883,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-09-19T14:09:29.288580006" + "timestamp": "2024-09-20T09:17:13.216410221" }, "1 sample - 1 bed, fasta, fai, bed, [] - stub": { "content": [ @@ -744,10 +894,19 @@ "id": "test", "single_end": false }, - "test_norm_singlesample.bcf:md5,d41d8cd98f00b204e9800998ecf8427e" + "test_norm_singlesample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test_norm_singlesample.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ [ { "id": "genome.bed", @@ -757,7 +916,7 @@ "genome.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], - "2": [ + "3": [ [ { "id": "genome.bed", @@ -767,7 +926,7 @@ "genome.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "3": [ + "4": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", @@ -795,13 +954,22 @@ "genome.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], + "snp_calls_tbi": [ + [ + { + "id": "test", + "single_end": false + }, + "test_norm_singlesample.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], "snp_calls_vcf": [ [ { "id": "test", "single_end": false }, - "test_norm_singlesample.bcf:md5,d41d8cd98f00b204e9800998ecf8427e" + "test_norm_singlesample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "versions": [ @@ -818,7 +986,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-09-19T14:08:53.503322275" + "timestamp": "2024-09-20T09:16:38.070360001" }, "1 sample - no bed, fasta, fai, [], []": { "content": [ @@ -829,14 +997,23 @@ "id": "test", "single_end": false }, - "test_norm_singlesample.bcf:md5,94d38d8fd3c50a7ede72a080fbd4992c" + "test_norm_singlesample.vcf.gz:md5,8d1b64c0eed7eb66dd3294fcbc15b4a1" ] ], "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test_norm_singlesample.vcf.gz.tbi:md5,41ab8f51ac55e08b2339feb5a6b40764" + ] + ], + "2": [ [ { "id": [ - + ], "project": null, "contains_affected": false @@ -844,11 +1021,11 @@ "[]_norm_multisample.vcf.gz:md5,56d662f0a527803ae72e40625c01014b" ] ], - "2": [ + "3": [ [ { "id": [ - + ], "project": null, "contains_affected": false @@ -856,7 +1033,7 @@ "[]_norm_multisample.vcf.gz.csi:md5,53e24fb59fef3bee6291c474e20200b9" ] ], - "3": [ + "4": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", @@ -868,7 +1045,7 @@ [ { "id": [ - + ], "project": null, "contains_affected": false @@ -880,7 +1057,7 @@ [ { "id": [ - + ], "project": null, "contains_affected": false @@ -888,13 +1065,22 @@ "[]_norm_multisample.vcf.gz.csi:md5,53e24fb59fef3bee6291c474e20200b9" ] ], + "snp_calls_tbi": [ + [ + { + "id": "test", + "single_end": false + }, + "test_norm_singlesample.vcf.gz.tbi:md5,41ab8f51ac55e08b2339feb5a6b40764" + ] + ], "snp_calls_vcf": [ [ { "id": "test", "single_end": false }, - "test_norm_singlesample.bcf:md5,94d38d8fd3c50a7ede72a080fbd4992c" + "test_norm_singlesample.vcf.gz:md5,8d1b64c0eed7eb66dd3294fcbc15b4a1" ] ], "versions": [ @@ -911,7 +1097,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-09-19T14:05:46.058241488" + "timestamp": "2024-09-20T09:13:29.038685117" }, "1 sample - 2 bed, fasta, fai, bed, []": { "content": [ @@ -922,10 +1108,19 @@ "id": "test", "single_end": false }, - "test_norm_singlesample.bcf:md5,f978f9f75d4892499156218a300fd246" + "test_norm_singlesample.vcf.gz:md5,f8e492c9c4d6e0cb027b300bb3f7155a" ] ], "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test_norm_singlesample.vcf.gz.tbi:md5,f1d5f7e2321e7f0534d251c12b373221" + ] + ], + "2": [ [ { "id": "genome.bed", @@ -943,7 +1138,7 @@ "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,56d662f0a527803ae72e40625c01014b" ] ], - "2": [ + "3": [ [ { "id": "genome.bed", @@ -961,7 +1156,7 @@ "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,53e24fb59fef3bee6291c474e20200b9" ] ], - "3": [ + "4": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", @@ -1009,13 +1204,22 @@ "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,53e24fb59fef3bee6291c474e20200b9" ] ], + "snp_calls_tbi": [ + [ + { + "id": "test", + "single_end": false + }, + "test_norm_singlesample.vcf.gz.tbi:md5,f1d5f7e2321e7f0534d251c12b373221" + ] + ], "snp_calls_vcf": [ [ { "id": "test", "single_end": false }, - "test_norm_singlesample.bcf:md5,f978f9f75d4892499156218a300fd246" + "test_norm_singlesample.vcf.gz:md5,f8e492c9c4d6e0cb027b300bb3f7155a" ] ], "versions": [ @@ -1036,7 +1240,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-09-19T14:07:15.005268156" + "timestamp": "2024-09-20T09:14:58.277461525" }, "2 samples - 2 bed, fasta, fai, bed, []": { "content": [ @@ -1047,17 +1251,33 @@ "id": "test", "single_end": false }, - "test_norm_singlesample.bcf:md5,f978f9f75d4892499156218a300fd246" + "test_norm_singlesample.vcf.gz:md5,f8e492c9c4d6e0cb027b300bb3f7155a" ], [ { "id": "test2", "single_end": false }, - "test2_norm_singlesample.bcf:md5,562e4ab7cea09c4f296550784e02ca84" + "test2_norm_singlesample.vcf.gz:md5,0e42833e64e0f427ca09259e17e2765b" ] ], "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test_norm_singlesample.vcf.gz.tbi:md5,f1d5f7e2321e7f0534d251c12b373221" + ], + [ + { + "id": "test2", + "single_end": false + }, + "test2_norm_singlesample.vcf.gz.tbi:md5,2c4354a182ae1f4ad94f056b2fbf62a8" + ] + ], + "2": [ [ { "id": "genome.bed", @@ -1075,7 +1295,7 @@ "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,ec12cca4d6849a5f47823331c4b9a8f3" ] ], - "2": [ + "3": [ [ { "id": "genome.bed", @@ -1093,7 +1313,7 @@ "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,12d9802de9b9e071408e526930050626" ] ], - "3": [ + "4": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", @@ -1145,20 +1365,36 @@ "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,12d9802de9b9e071408e526930050626" ] ], + "snp_calls_tbi": [ + [ + { + "id": "test", + "single_end": false + }, + "test_norm_singlesample.vcf.gz.tbi:md5,f1d5f7e2321e7f0534d251c12b373221" + ], + [ + { + "id": "test2", + "single_end": false + }, + "test2_norm_singlesample.vcf.gz.tbi:md5,2c4354a182ae1f4ad94f056b2fbf62a8" + ] + ], "snp_calls_vcf": [ [ { "id": "test", "single_end": false }, - "test_norm_singlesample.bcf:md5,f978f9f75d4892499156218a300fd246" + "test_norm_singlesample.vcf.gz:md5,f8e492c9c4d6e0cb027b300bb3f7155a" ], [ { "id": "test2", "single_end": false }, - "test2_norm_singlesample.bcf:md5,562e4ab7cea09c4f296550784e02ca84" + "test2_norm_singlesample.vcf.gz:md5,0e42833e64e0f427ca09259e17e2765b" ] ], "versions": [ @@ -1183,7 +1419,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-09-19T14:07:48.515375217" + "timestamp": "2024-09-20T09:15:32.21563308" }, "1 sample - no bed, fasta, fai, [], [] - stub": { "content": [ @@ -1194,14 +1430,23 @@ "id": "test", "single_end": false }, - "test_norm_singlesample.bcf:md5,d41d8cd98f00b204e9800998ecf8427e" + "test_norm_singlesample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test_norm_singlesample.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ [ { "id": [ - + ], "project": null, "contains_affected": false @@ -1209,11 +1454,11 @@ "[]_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], - "2": [ + "3": [ [ { "id": [ - + ], "project": null, "contains_affected": false @@ -1221,7 +1466,7 @@ "[]_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "3": [ + "4": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", @@ -1233,7 +1478,7 @@ [ { "id": [ - + ], "project": null, "contains_affected": false @@ -1245,7 +1490,7 @@ [ { "id": [ - + ], "project": null, "contains_affected": false @@ -1253,13 +1498,22 @@ "[]_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], + "snp_calls_tbi": [ + [ + { + "id": "test", + "single_end": false + }, + "test_norm_singlesample.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], "snp_calls_vcf": [ [ { "id": "test", "single_end": false }, - "test_norm_singlesample.bcf:md5,d41d8cd98f00b204e9800998ecf8427e" + "test_norm_singlesample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "versions": [ @@ -1276,7 +1530,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-09-19T14:08:32.905425335" + "timestamp": "2024-09-20T09:16:16.776853798" }, "1 sample - 1 bed, fasta, fai, [], [] - stub": { "content": [ @@ -1287,10 +1541,19 @@ "id": "test", "single_end": false }, - "test_norm_singlesample.bcf:md5,d41d8cd98f00b204e9800998ecf8427e" + "test_norm_singlesample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test_norm_singlesample.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ [ { "id": "genome.bed", @@ -1300,7 +1563,7 @@ "genome.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], - "2": [ + "3": [ [ { "id": "genome.bed", @@ -1310,7 +1573,7 @@ "genome.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "3": [ + "4": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", @@ -1338,13 +1601,22 @@ "genome.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], + "snp_calls_tbi": [ + [ + { + "id": "test", + "single_end": false + }, + "test_norm_singlesample.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], "snp_calls_vcf": [ [ { "id": "test", "single_end": false }, - "test_norm_singlesample.bcf:md5,d41d8cd98f00b204e9800998ecf8427e" + "test_norm_singlesample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "versions": [ @@ -1361,6 +1633,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-09-19T14:08:43.136478303" + "timestamp": "2024-09-20T09:16:27.732828098" } -} \ No newline at end of file +} diff --git a/subworkflows/local/short_variant_calling/tests/nextflow.config b/subworkflows/local/short_variant_calling/tests/nextflow.config index f9b1d1a5..e0f992af 100644 --- a/subworkflows/local/short_variant_calling/tests/nextflow.config +++ b/subworkflows/local/short_variant_calling/tests/nextflow.config @@ -37,7 +37,8 @@ process { '--no-version', '-m -', '-w 10000', - '--output-type u', + '--output-type z', + '--write-index=tbi' ].join(' ') } diff --git a/subworkflows/local/utils_nfcore_nallo_pipeline/main.nf b/subworkflows/local/utils_nfcore_nallo_pipeline/main.nf index 7711da7f..c2973a9a 100644 --- a/subworkflows/local/utils_nfcore_nallo_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_nallo_pipeline/main.nf @@ -390,14 +390,14 @@ def toolCitationText() { "WhatsHap (Martin et al. 2016)", ] } - if(params.phaser == 'hiphase_sv') { + if(params.phaser == 'hiphase') { citation_text = citation_text + [ "HiPhase (Holt et al. 2024)", ] } - if(params.phaser == 'hiphase_snv') { + if(params.phaser == 'longphase') { citation_text = citation_text + [ - "HiPhase (Holt et al. 2024)", + "LongPhase (Lin et al. 2024)", ] } if (!params.skip_methylation_wf) { @@ -445,6 +445,7 @@ def toolBibliographyText() { "
  • Yun T, Li H, Chang PC, Lin MF, Carroll A, McLean CY. Accurate, scalable cohort variant calls using DeepVariant and GLnexus. Robinson P, ed. Bioinformatics. 2021;36(24):5582-5589. doi:10.1093/bioinformatics/btaa1081
  • ", "
  • Cheng, H., Concepcion, G.T., Feng, X. et al. Haplotype-resolved de novo assembly using phased assembly graphs with hifiasm. Nat Methods 18, 170–175 (2021). https://doi.org/10.1038/s41592-020-01056-5
  • ", "
  • James M Holt, Christopher T Saunders, William J Rowell, Zev Kronenberg, Aaron M Wenger, Michael Eberle, HiPhase: jointly phasing small, structural, and tandem repeat variants from HiFi sequencing, Bioinformatics, Volume 40, Issue 2, February 2024, btae042, https://doi.org/10.1093/bioinformatics/btae042
  • ", + "
  • Jyun-Hong Lin, Liang-Chi Chen, Shu-Chi Yu, Yao-Ting Huang, LongPhase: an ultra-fast chromosome-scale phasing algorithm for small and large variants, Bioinformatics, Volume 38, Issue 7, March 2022, Pages 1816–1822, https://doi.org/10.1093/bioinformatics/btac058
  • ", "
  • Heng Li, Minimap2: pairwise alignment for nucleotide sequences, Bioinformatics, Volume 34, Issue 18, September 2018, Pages 3094–3100, https://doi.org/10.1093/bioinformatics/bty191
  • ", "
  • Pedersen BS, Quinlan AR. Mosdepth: quick coverage calculation for genomes and exomes. Hancock J, ed. Bioinformatics. 2018;34(5):867-868. doi:10.1093/bioinformatics/btx699
  • ", "
  • Genome-wide profiling of highly similar paralogous genes using HiFi sequencing. Xiao Chen, Daniel Baker, Egor Dolzhenko, Joseph M Devaney, Jessica Noya, April S Berlyoung, Rhonda Brandon, Kathleen S Hruska, Lucas Lochovsky, Paul Kruszka, Scott Newman, Emily Farrow, Isabelle Thiffault, Tomi Pastinen, Dalia Kasperaviciute, Christian Gilissen, Lisenka Vissers, Alexander Hoischen, Seth Berger, Eric Vilain, Emmanuèle Délot, UCI Genomics Research to Elucidate the Genetics of Rare Diseases (UCI GREGoR) Consortium, Michael A Eberle. bioRxiv 2024.04.19.590294; doi: https://doi.org/10.1101/2024.04.19.590294
  • ", diff --git a/tests/main.nf.test b/tests/main.nf.test index 8aa188f5..40a5a178 100644 --- a/tests/main.nf.test +++ b/tests/main.nf.test @@ -30,7 +30,7 @@ nextflow_pipeline { file("$outputDir/multiqc/multiqc_data/multiqc_fastqc.txt"), file("$outputDir/multiqc/multiqc_data/multiqc_somalier.txt"), // Assert with snapshot HG002_Revio - bam("$outputDir/aligned_reads/HG002_Revio/HG002_Revio_phased.bam", stringency: 'silent').getReadsMD5(), + bam("$outputDir/aligned_reads/HG002_Revio/HG002_Revio_haplotagged.bam", stringency: 'silent').getReadsMD5(), file("$outputDir/assembly_haplotypes/gfastats/HG002_Revio/HG002_Revio.asm.bp.hap1.p_ctg.assembly_summary"), file("$outputDir/assembly_haplotypes/gfastats/HG002_Revio/HG002_Revio.asm.bp.hap2.p_ctg.assembly_summary"), bam("$outputDir/assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap1.bam", stringency: 'silent').getReadsMD5(), @@ -81,7 +81,7 @@ nextflow_pipeline { { assert new File("$outputDir/svs/multi_sample/test/test_svs.vcf.gz").exists() }, { assert new File("$outputDir/svs/multi_sample/test/test_svs.vcf.gz.tbi").exists() }, // Assert exists HG002_Revio - { assert new File("$outputDir/aligned_reads/HG002_Revio/HG002_Revio_phased.bam.bai").exists() }, + { assert new File("$outputDir/aligned_reads/HG002_Revio/HG002_Revio_haplotagged.bam.bai").exists() }, { assert new File("$outputDir/assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap1.bam.bai").exists() }, { assert new File("$outputDir/assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap1.sam.gz").exists() }, { assert new File("$outputDir/assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap2.bam.bai").exists() }, @@ -99,10 +99,10 @@ nextflow_pipeline { { assert new File("$outputDir/paraphase/HG002_Revio/HG002_Revio.paraphase.json").exists() }, { assert new File("$outputDir/qc/cramino/phased/HG002_Revio/HG002_Revio_cramino_aligned_phased.txt").exists() }, { assert new File("$outputDir/qc/cramino/unphased/HG002_Revio/HG002_Revio_cramino_aligned.txt").exists() }, - { assert new File("$outputDir/phasing/whatshap/phase/HG002_Revio/HG002_Revio_phased.vcf.gz").exists() }, - { assert new File("$outputDir/phasing/whatshap/phase/HG002_Revio/HG002_Revio_phased.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/phasing/whatshap/stats/HG002_Revio/HG002_Revio_stats.stats.tsv").exists() }, - { assert new File("$outputDir/phasing/whatshap/stats/HG002_Revio/HG002_Revio_stats.blocks.tsv").exists() }, + { assert new File("$outputDir/phased_variants/HG002_Revio/HG002_Revio_phased.vcf.gz").exists() }, + { assert new File("$outputDir/phased_variants/HG002_Revio/HG002_Revio_phased.vcf.gz.tbi").exists() }, + { assert new File("$outputDir/qc/phasing_stats/HG002_Revio/HG002_Revio_stats.stats.tsv").exists() }, + { assert new File("$outputDir/qc/phasing_stats/HG002_Revio/HG002_Revio_stats.blocks.tsv").exists() }, { assert new File("$outputDir/qc/fastqc/HG002_Revio/HG002_Revio_fastqc.html").exists() }, { assert new File("$outputDir/qc/fastqc/HG002_Revio/HG002_Revio_fastqc.zip").exists() }, { assert new File("$outputDir/repeat_annotation/stranger/HG002_Revio/HG002_Revio_repeat_expansion_stranger.vcf.gz").exists() }, @@ -126,6 +126,8 @@ nextflow_pipeline { outdir = "$outputDir" parallel_snv = 2 preset = "revio" + phaser = "hiphase" + } } @@ -138,7 +140,7 @@ nextflow_pipeline { file("$outputDir/multiqc/multiqc_data/multiqc_citations.txt"), file("$outputDir/multiqc/multiqc_data/multiqc_fastqc.txt"), // Assert with snapshot HG002_Revio_A - bam("$outputDir/aligned_reads/HG002_Revio_A/HG002_Revio_A_phased.bam", stringency: 'silent').getReadsMD5(), + bam("$outputDir/aligned_reads/HG002_Revio_A/HG002_Revio_A_haplotagged.bam", stringency: 'silent').getReadsMD5(), file("$outputDir/assembly_haplotypes/gfastats/HG002_Revio_A/HG002_Revio_A.asm.bp.hap1.p_ctg.assembly_summary"), file("$outputDir/assembly_haplotypes/gfastats/HG002_Revio_A/HG002_Revio_A.asm.bp.hap2.p_ctg.assembly_summary"), bam("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap1.bam", stringency: 'silent').getReadsMD5(), @@ -174,7 +176,7 @@ nextflow_pipeline { bam("$outputDir/repeat_calling/trgt/single_sample/HG002_Revio_A/HG002_Revio_A_spanning_sorted.bam", stringency: 'silent').getReadsMD5(), file("$outputDir/snvs/stats/single_sample/HG002_Revio_A.vcf.gz.bcftools_stats.txt").readLines()[0..2], // Assert with snapshot HG002_Revio_B - bam("$outputDir/aligned_reads/HG002_Revio_B/HG002_Revio_B_phased.bam", stringency: 'silent').getReadsMD5(), + bam("$outputDir/aligned_reads/HG002_Revio_B/HG002_Revio_B_haplotagged.bam", stringency: 'silent').getReadsMD5(), file("$outputDir/assembly_haplotypes/gfastats/HG002_Revio_B/HG002_Revio_B.asm.bp.hap1.p_ctg.assembly_summary"), file("$outputDir/assembly_haplotypes/gfastats/HG002_Revio_B/HG002_Revio_B.asm.bp.hap2.p_ctg.assembly_summary"), bam("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap1.bam", stringency: 'silent').getReadsMD5(), @@ -229,7 +231,7 @@ nextflow_pipeline { { assert new File("$outputDir/repeat_calling/trgt/multi_sample/test/test.vcf.gz").exists() }, { assert new File("$outputDir/repeat_calling/trgt/multi_sample/test/test.vcf.gz.tbi").exists() }, // Assert exists HG002_Revio_A - { assert new File("$outputDir/aligned_reads/HG002_Revio_A/HG002_Revio_A_phased.bam.bai").exists() }, + { assert new File("$outputDir/aligned_reads/HG002_Revio_A/HG002_Revio_A_haplotagged.bam.bai").exists() }, { assert new File("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap1.bam.bai").exists() }, { assert new File("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap1.sam.gz").exists() }, { assert new File("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap2.bam.bai").exists() }, @@ -247,11 +249,11 @@ nextflow_pipeline { { assert new File("$outputDir/paraphase/HG002_Revio_A/HG002_Revio_A.paraphase.json").exists() }, { assert new File("$outputDir/qc/cramino/phased/HG002_Revio_A/HG002_Revio_A_cramino_aligned_phased.txt").exists() }, { assert new File("$outputDir/qc/cramino/unphased/HG002_Revio_A/HG002_Revio_A_cramino_aligned.txt").exists() }, - { assert new File("$outputDir/aligned_reads/HG002_Revio_A/HG002_Revio_A_phased.bam.bai").exists() }, - { assert new File("$outputDir/phasing/whatshap/phase/HG002_Revio_A/HG002_Revio_A_phased.vcf.gz").exists() }, - { assert new File("$outputDir/phasing/whatshap/phase/HG002_Revio_A/HG002_Revio_A_phased.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/phasing/whatshap/stats/HG002_Revio_A/HG002_Revio_A_stats.stats.tsv").exists() }, - { assert new File("$outputDir/phasing/whatshap/stats/HG002_Revio_A/HG002_Revio_A_stats.blocks.tsv").exists() }, + { assert new File("$outputDir/aligned_reads/HG002_Revio_A/HG002_Revio_A_haplotagged.bam.bai").exists() }, + { assert new File("$outputDir/phased_variants/HG002_Revio_A/HG002_Revio_A_phased.vcf.gz").exists() }, + { assert new File("$outputDir/phased_variants/HG002_Revio_A/HG002_Revio_A_phased.vcf.gz.tbi").exists() }, + { assert new File("$outputDir/qc/phasing_stats/HG002_Revio_A/HG002_Revio_A_stats.stats.tsv").exists() }, + { assert new File("$outputDir/qc/phasing_stats/HG002_Revio_A/HG002_Revio_A_stats.blocks.tsv").exists() }, { assert new File("$outputDir/qc/fastqc/HG002_Revio_A/HG002_Revio_A_fastqc.html").exists() }, { assert new File("$outputDir/qc/fastqc/HG002_Revio_A/HG002_Revio_A_fastqc.zip").exists() }, { assert new File("$outputDir/repeat_annotation/stranger/HG002_Revio_A/HG002_Revio_A_repeat_expansion_stranger.vcf.gz").exists() }, @@ -262,7 +264,7 @@ nextflow_pipeline { { assert new File("$outputDir/svs/single_sample/HG002_Revio_A/HG002_Revio_A_severus.vcf.gz").exists() }, { assert new File("$outputDir/svs/single_sample/HG002_Revio_A/HG002_Revio_A_severus.vcf.gz.tbi").exists() }, // Assert exists HG002_Revio_B - { assert new File("$outputDir/aligned_reads/HG002_Revio_B/HG002_Revio_B_phased.bam.bai").exists() }, + { assert new File("$outputDir/aligned_reads/HG002_Revio_B/HG002_Revio_B_haplotagged.bam.bai").exists() }, { assert new File("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap1.bam.bai").exists() }, { assert new File("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap1.sam.gz").exists() }, { assert new File("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap2.bam.bai").exists() }, @@ -280,11 +282,11 @@ nextflow_pipeline { { assert new File("$outputDir/paraphase/HG002_Revio_B/HG002_Revio_B.paraphase.json").exists() }, { assert new File("$outputDir/qc/cramino/phased/HG002_Revio_B/HG002_Revio_B_cramino_aligned_phased.txt").exists() }, { assert new File("$outputDir/qc/cramino/unphased/HG002_Revio_B/HG002_Revio_B_cramino_aligned.txt").exists() }, - { assert new File("$outputDir/aligned_reads/HG002_Revio_B/HG002_Revio_B_phased.bam.bai").exists() }, - { assert new File("$outputDir/phasing/whatshap/phase/HG002_Revio_B/HG002_Revio_B_phased.vcf.gz").exists() }, - { assert new File("$outputDir/phasing/whatshap/phase/HG002_Revio_B/HG002_Revio_B_phased.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/phasing/whatshap/stats/HG002_Revio_B/HG002_Revio_B_stats.stats.tsv").exists() }, - { assert new File("$outputDir/phasing/whatshap/stats/HG002_Revio_B/HG002_Revio_B_stats.blocks.tsv").exists() }, + { assert new File("$outputDir/aligned_reads/HG002_Revio_B/HG002_Revio_B_haplotagged.bam.bai").exists() }, + { assert new File("$outputDir/phased_variants/HG002_Revio_B/HG002_Revio_B_phased.vcf.gz").exists() }, + { assert new File("$outputDir/phased_variants/HG002_Revio_B/HG002_Revio_B_phased.vcf.gz.tbi").exists() }, + { assert new File("$outputDir/qc/phasing_stats/HG002_Revio_B/HG002_Revio_B_stats.stats.tsv").exists() }, + { assert new File("$outputDir/qc/phasing_stats/HG002_Revio_B/HG002_Revio_B_stats.blocks.tsv").exists() }, { assert new File("$outputDir/qc/fastqc/HG002_Revio_B/HG002_Revio_B_fastqc.html").exists() }, { assert new File("$outputDir/qc/fastqc/HG002_Revio_B/HG002_Revio_B_fastqc.zip").exists() }, { assert new File("$outputDir/repeat_annotation/stranger/HG002_Revio_B/HG002_Revio_B_repeat_expansion_stranger.vcf.gz").exists() }, @@ -309,6 +311,7 @@ nextflow_pipeline { preset = 'ONT_R10' parallel_alignments = 2 parallel_snv = 1 + phaser = "whatshap" } } @@ -321,7 +324,7 @@ nextflow_pipeline { file("$outputDir/multiqc/multiqc_data/multiqc_citations.txt"), file("$outputDir/multiqc/multiqc_data/multiqc_fastqc.txt"), // Assert with snapshot HG002_ONT_A - bam("$outputDir/aligned_reads/HG002_ONT_A/HG002_ONT_A_phased.bam", stringency: 'silent').getReadsMD5(), + bam("$outputDir/aligned_reads/HG002_ONT_A/HG002_ONT_A_haplotagged.bam", stringency: 'silent').getReadsMD5(), file("$outputDir/cnv_calling/hificnv/HG002_ONT_A/HG002_ONT_A.HG002_ONT_A.copynum.bedgraph"), file("$outputDir/cnv_calling/hificnv/HG002_ONT_A/HG002_ONT_A.HG002_ONT_A.depth.bw"), file("$outputDir/cnv_calling/hificnv/HG002_ONT_A/HG002_ONT_A.HG002_ONT_A.maf.bw"), @@ -339,7 +342,7 @@ nextflow_pipeline { file("$outputDir/qc/mosdepth/HG002_ONT_A/HG002_ONT_A.regions.bed.gz.csi"), file("$outputDir/snvs/stats/single_sample/HG002_ONT_A.vcf.gz.bcftools_stats.txt").readLines()[0..2], // Assert with snapshot HG002_ONT_B - bam("$outputDir/aligned_reads/HG002_ONT_B/HG002_ONT_B_phased.bam", stringency: 'silent').getReadsMD5(), + bam("$outputDir/aligned_reads/HG002_ONT_B/HG002_ONT_B_haplotagged.bam", stringency: 'silent').getReadsMD5(), file("$outputDir/cnv_calling/hificnv/HG002_ONT_B/HG002_ONT_B.HG002_ONT_B.copynum.bedgraph"), file("$outputDir/cnv_calling/hificnv/HG002_ONT_B/HG002_ONT_B.HG002_ONT_B.depth.bw"), file("$outputDir/cnv_calling/hificnv/HG002_ONT_B/HG002_ONT_B.HG002_ONT_B.maf.bw"), @@ -374,7 +377,7 @@ nextflow_pipeline { { assert new File("$outputDir/svs/multi_sample/test/test_svs.vcf.gz").exists() }, { assert new File("$outputDir/svs/multi_sample/test/test_svs.vcf.gz.tbi").exists() }, // Assert exists HG002_ONT_A - { assert new File("$outputDir/aligned_reads/HG002_ONT_A/HG002_ONT_A_phased.bam.bai").exists() }, + { assert new File("$outputDir/aligned_reads/HG002_ONT_A/HG002_ONT_A_haplotagged.bam.bai").exists() }, { assert new File("$outputDir/cnv_calling/hificnv/HG002_ONT_A/HG002_ONT_A.log").exists() }, { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_ONT_A/HG002_ONT_A_modkit_pileup_phased_1.bed.gz").exists() }, { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_ONT_A/HG002_ONT_A_modkit_pileup_phased_1.bed.gz.tbi").exists() }, @@ -388,11 +391,11 @@ nextflow_pipeline { { assert new File("$outputDir/paraphase/HG002_ONT_A/HG002_ONT_A.paraphase.json").exists() }, { assert new File("$outputDir/qc/cramino/phased/HG002_ONT_A/HG002_ONT_A_cramino_aligned_phased.txt").exists() }, { assert new File("$outputDir/qc/cramino/unphased/HG002_ONT_A/HG002_ONT_A_cramino_aligned.txt").exists() }, - { assert new File("$outputDir/aligned_reads/HG002_ONT_A/HG002_ONT_A_phased.bam.bai").exists() }, - { assert new File("$outputDir/phasing/whatshap/phase/HG002_ONT_A/HG002_ONT_A_phased.vcf.gz").exists() }, - { assert new File("$outputDir/phasing/whatshap/phase/HG002_ONT_A/HG002_ONT_A_phased.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/phasing/whatshap/stats/HG002_ONT_A/HG002_ONT_A_stats.stats.tsv").exists() }, - { assert new File("$outputDir/phasing/whatshap/stats/HG002_ONT_A/HG002_ONT_A_stats.blocks.tsv").exists() }, + { assert new File("$outputDir/aligned_reads/HG002_ONT_A/HG002_ONT_A_haplotagged.bam.bai").exists() }, + { assert new File("$outputDir/phased_variants/HG002_ONT_A/HG002_ONT_A_phased.vcf.gz").exists() }, + { assert new File("$outputDir/phased_variants/HG002_ONT_A/HG002_ONT_A_phased.vcf.gz.tbi").exists() }, + { assert new File("$outputDir/qc/phasing_stats/HG002_ONT_A/HG002_ONT_A_stats.stats.tsv").exists() }, + { assert new File("$outputDir/qc/phasing_stats/HG002_ONT_A/HG002_ONT_A_stats.blocks.tsv").exists() }, { assert new File("$outputDir/qc/fastqc/HG002_ONT_A/HG002_ONT_A_fastqc.html").exists() }, { assert new File("$outputDir/qc/fastqc/HG002_ONT_A/HG002_ONT_A_fastqc.zip").exists() }, { assert new File("$outputDir/snvs/single_sample/HG002_ONT_A/HG002_ONT_A_snv_annotated_ranked.vcf.gz").exists() }, @@ -400,7 +403,7 @@ nextflow_pipeline { { assert new File("$outputDir/svs/single_sample/HG002_ONT_A/HG002_ONT_A_severus.vcf.gz").exists() }, { assert new File("$outputDir/svs/single_sample/HG002_ONT_A/HG002_ONT_A_severus.vcf.gz.tbi").exists() }, // Assert exists HG002_ONT_B - { assert new File("$outputDir/aligned_reads/HG002_ONT_B/HG002_ONT_B_phased.bam.bai").exists() }, + { assert new File("$outputDir/aligned_reads/HG002_ONT_B/HG002_ONT_B_haplotagged.bam.bai").exists() }, { assert new File("$outputDir/cnv_calling/hificnv/HG002_ONT_B/HG002_ONT_B.log").exists() }, { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_ONT_B/HG002_ONT_B_modkit_pileup_phased_1.bed.gz").exists() }, { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_ONT_B/HG002_ONT_B_modkit_pileup_phased_1.bed.gz.tbi").exists() }, @@ -414,11 +417,11 @@ nextflow_pipeline { { assert new File("$outputDir/paraphase/HG002_ONT_B/HG002_ONT_B.paraphase.json").exists() }, { assert new File("$outputDir/qc/cramino/phased/HG002_ONT_B/HG002_ONT_B_cramino_aligned_phased.txt").exists() }, { assert new File("$outputDir/qc/cramino/unphased/HG002_ONT_B/HG002_ONT_B_cramino_aligned.txt").exists() }, - { assert new File("$outputDir/aligned_reads/HG002_ONT_B/HG002_ONT_B_phased.bam.bai").exists() }, - { assert new File("$outputDir/phasing/whatshap/phase/HG002_ONT_B/HG002_ONT_B_phased.vcf.gz").exists() }, - { assert new File("$outputDir/phasing/whatshap/phase/HG002_ONT_B/HG002_ONT_B_phased.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/phasing/whatshap/stats/HG002_ONT_B/HG002_ONT_B_stats.stats.tsv").exists() }, - { assert new File("$outputDir/phasing/whatshap/stats/HG002_ONT_B/HG002_ONT_B_stats.blocks.tsv").exists() }, + { assert new File("$outputDir/aligned_reads/HG002_ONT_B/HG002_ONT_B_haplotagged.bam.bai").exists() }, + { assert new File("$outputDir/phased_variants/HG002_ONT_B/HG002_ONT_B_phased.vcf.gz").exists() }, + { assert new File("$outputDir/phased_variants/HG002_ONT_B/HG002_ONT_B_phased.vcf.gz.tbi").exists() }, + { assert new File("$outputDir/qc/phasing_stats/HG002_ONT_B/HG002_ONT_B_stats.stats.tsv").exists() }, + { assert new File("$outputDir/qc/phasing_stats/HG002_ONT_B/HG002_ONT_B_stats.blocks.tsv").exists() }, { assert new File("$outputDir/qc/fastqc/HG002_ONT_B/HG002_ONT_B_fastqc.html").exists() }, { assert new File("$outputDir/qc/fastqc/HG002_ONT_B/HG002_ONT_B_fastqc.zip").exists() }, { assert new File("$outputDir/snvs/single_sample/HG002_ONT_B/HG002_ONT_B_snv_annotated_ranked.vcf.gz").exists() }, diff --git a/tests/main.nf.test.snap b/tests/main.nf.test.snap index 119a60a8..114b751e 100644 --- a/tests/main.nf.test.snap +++ b/tests/main.nf.test.snap @@ -39,8 +39,8 @@ "HG002_Revio_cramino_aligned.arrow:md5,a76219e9046db32c4b3d6d78425c5d78", "HG002_Revio.regions.bed.gz:md5,31db0f14146b65e339b54b963c304947", "HG002_Revio.regions.bed.gz.csi:md5,026eef1c69fb4aa3a1687463fe2088ab", - "HG002_Revio_sorted.vcf.gz:md5,fbb5699b8f74fc105fb154e8fac7bfea", - "HG002_Revio_sorted.vcf.gz.tbi:md5,0466518ee265ba63160ed27cee0dec88", + "HG002_Revio_sorted.vcf.gz:md5,735d8ba586b01fb27e009e3964112ce9", + "HG002_Revio_sorted.vcf.gz.tbi:md5,d4c7838d72a4200e790227ba4d7b25d5", "65999ab8f2bc7841de8172468bf23ab6", [ "# This file was produced by bcftools stats (1.20+htslib-1.20) and can be plotted using plot-vcfstats.", @@ -52,7 +52,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-09-20T12:30:55.088135056" + "timestamp": "2024-09-20T11:17:02.410377719" }, "test profile - multisample": { "content": [ @@ -90,8 +90,8 @@ "HG002_Revio_A_cramino_aligned.arrow:md5,a76219e9046db32c4b3d6d78425c5d78", "HG002_Revio_A.regions.bed.gz:md5,31db0f14146b65e339b54b963c304947", "HG002_Revio_A.regions.bed.gz.csi:md5,026eef1c69fb4aa3a1687463fe2088ab", - "HG002_Revio_A_sorted.vcf.gz:md5,680938d6ebeafe73d8df0b21c0310276", - "HG002_Revio_A_sorted.vcf.gz.tbi:md5,a6554ab817e7c232a1554ea85fa00151", + "HG002_Revio_A_sorted.vcf.gz:md5,e7f53d86c027a7778e0e642cb2da8884", + "HG002_Revio_A_sorted.vcf.gz.tbi:md5,d4c7838d72a4200e790227ba4d7b25d5", "65999ab8f2bc7841de8172468bf23ab6", [ "# This file was produced by bcftools stats (1.20+htslib-1.20) and can be plotted using plot-vcfstats.", @@ -129,8 +129,8 @@ "HG002_Revio_B_cramino_aligned.arrow:md5,3bb08ac5958c6cb0801f319066c3a1b2", "HG002_Revio_B.regions.bed.gz:md5,837978e7b90ef81cb5aa015fbe7bb4a6", "HG002_Revio_B.regions.bed.gz.csi:md5,d0640255d527e36655281f64e184b02c", - "HG002_Revio_B_sorted.vcf.gz:md5,a8aaec5870a60a4fabf6aff849ba1e61", - "HG002_Revio_B_sorted.vcf.gz.tbi:md5,e255a5ea92885967f0c126bddc8ea3b2", + "HG002_Revio_B_sorted.vcf.gz:md5,8703d5602d79e9fe4d70aced838f518f", + "HG002_Revio_B_sorted.vcf.gz.tbi:md5,01f65612542a83475217568bd50d4efd", "65999ab8f2bc7841de8172468bf23ab6", [ "# This file was produced by bcftools stats (1.20+htslib-1.20) and can be plotted using plot-vcfstats.", @@ -142,7 +142,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-09-20T12:32:28.96463908" + "timestamp": "2024-09-20T09:48:22.654535823" }, "test profile - multisample - ont - parallel_alignments 2 - parallel_snv 1": { "content": [ @@ -198,4 +198,4 @@ }, "timestamp": "2024-09-20T12:33:56.873568079" } -} \ No newline at end of file +} diff --git a/workflows/nallo.nf b/workflows/nallo.nf index 3eecb23d..0bb337e5 100644 --- a/workflows/nallo.nf +++ b/workflows/nallo.nf @@ -106,7 +106,7 @@ workflow NALLO { : '' // Check parameter that doesn't conform to schema validation here - if (params.phaser.matches('hiphase_sv|hiphase_snv') && params.preset == 'ONT_R10') { error "The HiPhase license only permits analysis of data from PacBio. For details see: https://github.com/PacificBiosciences/HiPhase/blob/main/LICENSE.md" } + if (params.phaser.matches('hiphase') && params.preset == 'ONT_R10') { error "The HiPhase license only permits analysis of data from PacBio. For details see: https://github.com/PacificBiosciences/HiPhase/blob/main/LICENSE.md" } // Read and store paths in the vep_plugin_files file if (params.vep_plugin_files) { @@ -451,7 +451,13 @@ workflow NALLO { // if(!params.skip_phasing_wf) { - PHASING( SHORT_VARIANT_CALLING.out.snp_calls_vcf, CALL_SVS.out.ch_sv_calls_vcf, bam_bai, fasta, fai) + PHASING ( + SHORT_VARIANT_CALLING.out.snp_calls_vcf, + SHORT_VARIANT_CALLING.out.snp_calls_tbi, + bam_bai, + fasta, + fai + ) ch_versions = ch_versions.mix(PHASING.out.versions) ch_multiqc_files = ch_multiqc_files.mix(PHASING.out.stats.collect{it[1]}.ifEmpty([])) From bf8f4d478873e7044f30193f341a3858e0946a50 Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Tue, 1 Oct 2024 08:57:41 +0200 Subject: [PATCH 022/106] Sample names present twice in HiFiCNV output filenames (#402) * Sample names present twice in HiFiCNV output filenames * Update main.nf --- CHANGELOG.md | 2 + conf/test.config | 2 +- modules/local/pacbio/hificnv/main.nf | 12 +++++- tests/main.nf.test | 50 ++++++++++++------------ tests/main.nf.test.snap | 58 ++++++++++++++-------------- 5 files changed, 67 insertions(+), 57 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 048c5111..4d9db98c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -37,6 +37,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#388](https://github.com/genomic-medicine-sweden/nallo/pull/388) - Changed phasing output structure and naming, and updated docs - [#393](https://github.com/genomic-medicine-sweden/nallo/pull/393) - Changed the default minimap2 preset for PacBio data from `map-hifi` to `lr:hqae` - [#397](https://github.com/genomic-medicine-sweden/nallo/pull/397) - Changed `pipelines_testdata_base_path` to pin a specific commit +- [#402](https://github.com/genomic-medicine-sweden/nallo/pull/402) - Updated broken test profile link added in [#397](https://github.com/genomic-medicine-sweden/nallo/pull/397) ### `Removed` @@ -51,6 +52,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#381](https://github.com/genomic-medicine-sweden/nallo/pull/381) - Fixed `--vep_cache` not working as expected with tar.gz cache downloaded from VEP, updated testdata in [genomic-medicine-sweden/test-datasets#17](https://github.com/genomic-medicine-sweden/test-datasets/pull/17) - [#382](https://github.com/genomic-medicine-sweden/nallo/pull/382) - Fixed broken links and formatting in documentation - [#393](https://github.com/genomic-medicine-sweden/nallo/pull/393) - Fixed minimap2 preset for ONT data being overwritten to `map-ont` when it should have been `lr:hq`, due to different settings in index and alignment processes [#392](https://github.com/genomic-medicine-sweden/nallo/issues/392) +- [#402](https://github.com/genomic-medicine-sweden/nallo/pull/402) - Fixed double sample names in HiFiCNV output ### Parameters diff --git a/conf/test.config b/conf/test.config index cf241eec..469e3523 100644 --- a/conf/test.config +++ b/conf/test.config @@ -22,7 +22,7 @@ params { modules_testdata_base_path = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/' // Base directory for genomic-medicine-sweden/nallo test data - pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/nallo/1f4e062926fc10f70a38e917e5771edb333e89bf/' + pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/1f4e062926fc10f70a38e917e5771edb333e89bf/' // References fasta = params.pipelines_testdata_base_path + 'reference/hg38.test.fa.gz' diff --git a/modules/local/pacbio/hificnv/main.nf b/modules/local/pacbio/hificnv/main.nf index 31131ab6..0eebd3b3 100644 --- a/modules/local/pacbio/hificnv/main.nf +++ b/modules/local/pacbio/hificnv/main.nf @@ -30,6 +30,7 @@ process HIFICNV { def exclude = exclude_bed ? "--exclude ${exclude_bed}" : "" def maf = maf_vcf ? "--maf ${maf_vcf}" : "" + if ("$maf_vcf" == "${prefix}.vcf.gz") error "Input and output names are the same, set prefix in module configuration to disambiguate!" """ hificnv \\ $args \\ @@ -38,8 +39,13 @@ process HIFICNV { $exclude \\ $maf \\ --ref ${fasta} \\ - --threads ${task.cpus} \\ - --output-prefix ${prefix} + --threads ${task.cpus} + + mv hificnv.*.vcf.gz ${prefix}.vcf.gz + mv hificnv.*.depth.bw ${prefix}.depth.bw + mv hificnv.*.maf.bw ${prefix}.maf.bw + mv hificnv.*.copynum.bedgraph ${prefix}.copynum.bedgraph + mv *.log ${prefix}.log cat <<-END_VERSIONS > versions.yml "${task.process}": @@ -50,9 +56,11 @@ process HIFICNV { stub: prefix = task.ext.prefix ?: "${meta.id}" + if ("$maf_vcf" == "${prefix}.vcf.gz") error "Input and output names are the same, set prefix in module configuration to disambiguate!" """ touch ${prefix}.vcf.gz touch ${prefix}.depth.bw + touch ${prefix}.maf.bw touch ${prefix}.bedgraph touch ${prefix}.log diff --git a/tests/main.nf.test b/tests/main.nf.test index 40a5a178..1472e9de 100644 --- a/tests/main.nf.test +++ b/tests/main.nf.test @@ -38,9 +38,9 @@ nextflow_pipeline { file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.dip.bed"), file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap1.bed"), file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap2.bed"), - file("$outputDir/cnv_calling/hificnv/HG002_Revio/HG002_Revio.HG002_Revio.copynum.bedgraph"), - file("$outputDir/cnv_calling/hificnv/HG002_Revio/HG002_Revio.HG002_Revio.depth.bw"), - file("$outputDir/cnv_calling/hificnv/HG002_Revio/HG002_Revio.HG002_Revio.maf.bw"), + file("$outputDir/cnv_calling/hificnv/HG002_Revio/HG002_Revio.copynum.bedgraph"), + file("$outputDir/cnv_calling/hificnv/HG002_Revio/HG002_Revio.depth.bw"), + file("$outputDir/cnv_calling/hificnv/HG002_Revio/HG002_Revio.maf.bw"), file("$outputDir/qc/mosdepth/HG002_Revio/HG002_Revio.mosdepth.global.dist.txt"), file("$outputDir/qc/mosdepth/HG002_Revio/HG002_Revio.mosdepth.region.dist.txt"), file("$outputDir/qc/mosdepth/HG002_Revio/HG002_Revio.mosdepth.summary.txt"), @@ -52,8 +52,8 @@ nextflow_pipeline { file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap2.paf.gz"), file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap2.var.gz"), file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.pair.vcf.gz"), - file("$outputDir/cnv_calling/hificnv/HG002_Revio/HG002_Revio.HG002_Revio.vcf.gz"), - file("$outputDir/cnv_calling/hificnv/HG002_Revio/HG002_Revio.HG002_Revio.vcf.gz.tbi"), + file("$outputDir/cnv_calling/hificnv/HG002_Revio/HG002_Revio.vcf.gz"), + file("$outputDir/cnv_calling/hificnv/HG002_Revio/HG002_Revio.vcf.gz.tbi"), file("$outputDir/methylation/modkit/pileup/unphased/HG002_Revio/HG002_Revio_modkit_pileup.bed.gz"), file("$outputDir/methylation/modkit/pileup/unphased/HG002_Revio/HG002_Revio_modkit_pileup.bed.gz.tbi"), bam("$outputDir/paraphase/HG002_Revio/HG002_Revio.paraphase.bam", stringency: 'silent').getReadsMD5(), @@ -148,9 +148,9 @@ nextflow_pipeline { file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.dip.bed"), file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap1.bed"), file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap2.bed"), - file("$outputDir/cnv_calling/hificnv/HG002_Revio_A/HG002_Revio_A.HG002_Revio_A.copynum.bedgraph"), - file("$outputDir/cnv_calling/hificnv/HG002_Revio_A/HG002_Revio_A.HG002_Revio_A.depth.bw"), - file("$outputDir/cnv_calling/hificnv/HG002_Revio_A/HG002_Revio_A.HG002_Revio_A.maf.bw"), + file("$outputDir/cnv_calling/hificnv/HG002_Revio_A/HG002_Revio_A.copynum.bedgraph"), + file("$outputDir/cnv_calling/hificnv/HG002_Revio_A/HG002_Revio_A.depth.bw"), + file("$outputDir/cnv_calling/hificnv/HG002_Revio_A/HG002_Revio_A.maf.bw"), file("$outputDir/qc/mosdepth/HG002_Revio_A/HG002_Revio_A.mosdepth.global.dist.txt"), file("$outputDir/qc/mosdepth/HG002_Revio_A/HG002_Revio_A.mosdepth.region.dist.txt"), file("$outputDir/qc/mosdepth/HG002_Revio_A/HG002_Revio_A.mosdepth.summary.txt"), @@ -162,8 +162,8 @@ nextflow_pipeline { file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap2.paf.gz"), file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap2.var.gz"), file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.pair.vcf.gz"), - file("$outputDir/cnv_calling/hificnv/HG002_Revio_A/HG002_Revio_A.HG002_Revio_A.vcf.gz"), - file("$outputDir/cnv_calling/hificnv/HG002_Revio_A/HG002_Revio_A.HG002_Revio_A.vcf.gz.tbi"), + file("$outputDir/cnv_calling/hificnv/HG002_Revio_A/HG002_Revio_A.vcf.gz"), + file("$outputDir/cnv_calling/hificnv/HG002_Revio_A/HG002_Revio_A.vcf.gz.tbi"), file("$outputDir/methylation/modkit/pileup/unphased/HG002_Revio_A/HG002_Revio_A_modkit_pileup.bed.gz"), file("$outputDir/methylation/modkit/pileup/unphased/HG002_Revio_A/HG002_Revio_A_modkit_pileup.bed.gz.tbi"), bam("$outputDir/paraphase/HG002_Revio_A/HG002_Revio_A.paraphase.bam", stringency: 'silent').getReadsMD5(), @@ -184,9 +184,9 @@ nextflow_pipeline { file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.dip.bed"), file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap1.bed"), file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap2.bed"), - file("$outputDir/cnv_calling/hificnv/HG002_Revio_B/HG002_Revio_B.HG002_Revio_B.copynum.bedgraph"), - file("$outputDir/cnv_calling/hificnv/HG002_Revio_B/HG002_Revio_B.HG002_Revio_B.depth.bw"), - file("$outputDir/cnv_calling/hificnv/HG002_Revio_B/HG002_Revio_B.HG002_Revio_B.maf.bw"), + file("$outputDir/cnv_calling/hificnv/HG002_Revio_B/HG002_Revio_B.copynum.bedgraph"), + file("$outputDir/cnv_calling/hificnv/HG002_Revio_B/HG002_Revio_B.depth.bw"), + file("$outputDir/cnv_calling/hificnv/HG002_Revio_B/HG002_Revio_B.maf.bw"), file("$outputDir/qc/mosdepth/HG002_Revio_B/HG002_Revio_B.mosdepth.global.dist.txt"), file("$outputDir/qc/mosdepth/HG002_Revio_B/HG002_Revio_B.mosdepth.region.dist.txt"), file("$outputDir/qc/mosdepth/HG002_Revio_B/HG002_Revio_B.mosdepth.summary.txt"), @@ -198,8 +198,8 @@ nextflow_pipeline { file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap2.paf.gz"), file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap2.var.gz"), file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.pair.vcf.gz"), - file("$outputDir/cnv_calling/hificnv/HG002_Revio_B/HG002_Revio_B.HG002_Revio_B.vcf.gz"), - file("$outputDir/cnv_calling/hificnv/HG002_Revio_B/HG002_Revio_B.HG002_Revio_B.vcf.gz.tbi"), + file("$outputDir/cnv_calling/hificnv/HG002_Revio_B/HG002_Revio_B.vcf.gz"), + file("$outputDir/cnv_calling/hificnv/HG002_Revio_B/HG002_Revio_B.vcf.gz.tbi"), file("$outputDir/methylation/modkit/pileup/unphased/HG002_Revio_B/HG002_Revio_B_modkit_pileup.bed.gz"), file("$outputDir/methylation/modkit/pileup/unphased/HG002_Revio_B/HG002_Revio_B_modkit_pileup.bed.gz.tbi"), bam("$outputDir/paraphase/HG002_Revio_B/HG002_Revio_B.paraphase.bam", stringency: 'silent').getReadsMD5(), @@ -325,14 +325,14 @@ nextflow_pipeline { file("$outputDir/multiqc/multiqc_data/multiqc_fastqc.txt"), // Assert with snapshot HG002_ONT_A bam("$outputDir/aligned_reads/HG002_ONT_A/HG002_ONT_A_haplotagged.bam", stringency: 'silent').getReadsMD5(), - file("$outputDir/cnv_calling/hificnv/HG002_ONT_A/HG002_ONT_A.HG002_ONT_A.copynum.bedgraph"), - file("$outputDir/cnv_calling/hificnv/HG002_ONT_A/HG002_ONT_A.HG002_ONT_A.depth.bw"), - file("$outputDir/cnv_calling/hificnv/HG002_ONT_A/HG002_ONT_A.HG002_ONT_A.maf.bw"), + file("$outputDir/cnv_calling/hificnv/HG002_ONT_A/HG002_ONT_A.copynum.bedgraph"), + file("$outputDir/cnv_calling/hificnv/HG002_ONT_A/HG002_ONT_A.depth.bw"), + file("$outputDir/cnv_calling/hificnv/HG002_ONT_A/HG002_ONT_A.maf.bw"), file("$outputDir/qc/mosdepth/HG002_ONT_A/HG002_ONT_A.mosdepth.global.dist.txt"), file("$outputDir/qc/mosdepth/HG002_ONT_A/HG002_ONT_A.mosdepth.region.dist.txt"), file("$outputDir/qc/mosdepth/HG002_ONT_A/HG002_ONT_A.mosdepth.summary.txt"), - file("$outputDir/cnv_calling/hificnv/HG002_ONT_A/HG002_ONT_A.HG002_ONT_A.vcf.gz"), - file("$outputDir/cnv_calling/hificnv/HG002_ONT_A/HG002_ONT_A.HG002_ONT_A.vcf.gz.tbi"), + file("$outputDir/cnv_calling/hificnv/HG002_ONT_A/HG002_ONT_A.vcf.gz"), + file("$outputDir/cnv_calling/hificnv/HG002_ONT_A/HG002_ONT_A.vcf.gz.tbi"), file("$outputDir/methylation/modkit/pileup/unphased/HG002_ONT_A/HG002_ONT_A_modkit_pileup.bed.gz"), file("$outputDir/methylation/modkit/pileup/unphased/HG002_ONT_A/HG002_ONT_A_modkit_pileup.bed.gz.tbi"), bam("$outputDir/paraphase/HG002_ONT_A/HG002_ONT_A.paraphase.bam", stringency: 'silent').getReadsMD5(), @@ -343,14 +343,14 @@ nextflow_pipeline { file("$outputDir/snvs/stats/single_sample/HG002_ONT_A.vcf.gz.bcftools_stats.txt").readLines()[0..2], // Assert with snapshot HG002_ONT_B bam("$outputDir/aligned_reads/HG002_ONT_B/HG002_ONT_B_haplotagged.bam", stringency: 'silent').getReadsMD5(), - file("$outputDir/cnv_calling/hificnv/HG002_ONT_B/HG002_ONT_B.HG002_ONT_B.copynum.bedgraph"), - file("$outputDir/cnv_calling/hificnv/HG002_ONT_B/HG002_ONT_B.HG002_ONT_B.depth.bw"), - file("$outputDir/cnv_calling/hificnv/HG002_ONT_B/HG002_ONT_B.HG002_ONT_B.maf.bw"), + file("$outputDir/cnv_calling/hificnv/HG002_ONT_B/HG002_ONT_B.copynum.bedgraph"), + file("$outputDir/cnv_calling/hificnv/HG002_ONT_B/HG002_ONT_B.depth.bw"), + file("$outputDir/cnv_calling/hificnv/HG002_ONT_B/HG002_ONT_B.maf.bw"), file("$outputDir/qc/mosdepth/HG002_ONT_B/HG002_ONT_B.mosdepth.global.dist.txt"), file("$outputDir/qc/mosdepth/HG002_ONT_B/HG002_ONT_B.mosdepth.region.dist.txt"), file("$outputDir/qc/mosdepth/HG002_ONT_B/HG002_ONT_B.mosdepth.summary.txt"), - file("$outputDir/cnv_calling/hificnv/HG002_ONT_B/HG002_ONT_B.HG002_ONT_B.vcf.gz"), - file("$outputDir/cnv_calling/hificnv/HG002_ONT_B/HG002_ONT_B.HG002_ONT_B.vcf.gz.tbi"), + file("$outputDir/cnv_calling/hificnv/HG002_ONT_B/HG002_ONT_B.vcf.gz"), + file("$outputDir/cnv_calling/hificnv/HG002_ONT_B/HG002_ONT_B.vcf.gz.tbi"), file("$outputDir/methylation/modkit/pileup/unphased/HG002_ONT_B/HG002_ONT_B_modkit_pileup.bed.gz"), file("$outputDir/methylation/modkit/pileup/unphased/HG002_ONT_B/HG002_ONT_B_modkit_pileup.bed.gz.tbi"), bam("$outputDir/paraphase/HG002_ONT_B/HG002_ONT_B.paraphase.bam", stringency: 'silent').getReadsMD5(), diff --git a/tests/main.nf.test.snap b/tests/main.nf.test.snap index 114b751e..54f77a0b 100644 --- a/tests/main.nf.test.snap +++ b/tests/main.nf.test.snap @@ -16,9 +16,9 @@ "HG002_Revio.dip.bed:md5,4e3cde029bceaa9363402e997f12f280", "HG002_Revio.hap1.bed:md5,3d75c9538e748a7672b934bdbde90df3", "HG002_Revio.hap2.bed:md5,9ac411d49f08a8ec70e4792890e9faf9", - "HG002_Revio.HG002_Revio.copynum.bedgraph:md5,517bc59c1b235490c79aa8319437b033", - "HG002_Revio.HG002_Revio.depth.bw:md5,0b9cae1d0646fdd2f690d4255282ee8f", - "HG002_Revio.HG002_Revio.maf.bw:md5,bacc69449af34efe8576245ae8188719", + "HG002_Revio.copynum.bedgraph:md5,517bc59c1b235490c79aa8319437b033", + "HG002_Revio.depth.bw:md5,0b9cae1d0646fdd2f690d4255282ee8f", + "HG002_Revio.maf.bw:md5,bacc69449af34efe8576245ae8188719", "HG002_Revio.mosdepth.global.dist.txt:md5,63701e857361046628f89cb84988ea1d", "HG002_Revio.mosdepth.region.dist.txt:md5,6b46396518979ff9d9771cb8a8fbbab0", "HG002_Revio.mosdepth.summary.txt:md5,311aad293c6d8a646b6dd4edc337845c", @@ -30,8 +30,8 @@ "HG002_Revio.hap2.paf.gz:md5,a99e451e4af96a7ab120cedd49eea618", "HG002_Revio.hap2.var.gz:md5,53dc16fc893a529a95067da161b4dad6", "HG002_Revio.pair.vcf.gz:md5,a390558ab50ce0dc9efec070b1c70c22", - "HG002_Revio.HG002_Revio.vcf.gz:md5,771f7d9ecbd161dedfbdd053ceff0d52", - "HG002_Revio.HG002_Revio.vcf.gz.tbi:md5,65d6930f79e626a5542091b7a419dc2b", + "HG002_Revio.vcf.gz:md5,771f7d9ecbd161dedfbdd053ceff0d52", + "HG002_Revio.vcf.gz.tbi:md5,65d6930f79e626a5542091b7a419dc2b", "HG002_Revio_modkit_pileup.bed.gz:md5,55496cdcd7e4ccad86adee3cb819da56", "HG002_Revio_modkit_pileup.bed.gz.tbi:md5,b217c5e971ecb0b8c874b0038f0d2ae4", "fcc3f220bb09d3264f97e7f620779be0", @@ -52,7 +52,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-09-20T11:17:02.410377719" + "timestamp": "2024-09-30T16:14:48.238330482" }, "test profile - multisample": { "content": [ @@ -67,9 +67,9 @@ "HG002_Revio_A.dip.bed:md5,4e3cde029bceaa9363402e997f12f280", "HG002_Revio_A.hap1.bed:md5,3d75c9538e748a7672b934bdbde90df3", "HG002_Revio_A.hap2.bed:md5,9ac411d49f08a8ec70e4792890e9faf9", - "HG002_Revio_A.HG002_Revio_A.copynum.bedgraph:md5,517bc59c1b235490c79aa8319437b033", - "HG002_Revio_A.HG002_Revio_A.depth.bw:md5,0b9cae1d0646fdd2f690d4255282ee8f", - "HG002_Revio_A.HG002_Revio_A.maf.bw:md5,bacc69449af34efe8576245ae8188719", + "HG002_Revio_A.copynum.bedgraph:md5,517bc59c1b235490c79aa8319437b033", + "HG002_Revio_A.depth.bw:md5,0b9cae1d0646fdd2f690d4255282ee8f", + "HG002_Revio_A.maf.bw:md5,bacc69449af34efe8576245ae8188719", "HG002_Revio_A.mosdepth.global.dist.txt:md5,63701e857361046628f89cb84988ea1d", "HG002_Revio_A.mosdepth.region.dist.txt:md5,6b46396518979ff9d9771cb8a8fbbab0", "HG002_Revio_A.mosdepth.summary.txt:md5,311aad293c6d8a646b6dd4edc337845c", @@ -81,8 +81,8 @@ "HG002_Revio_A.hap2.paf.gz:md5,a99e451e4af96a7ab120cedd49eea618", "HG002_Revio_A.hap2.var.gz:md5,53dc16fc893a529a95067da161b4dad6", "HG002_Revio_A.pair.vcf.gz:md5,233375a4067362bb6799d5ade46db537", - "HG002_Revio_A.HG002_Revio_A.vcf.gz:md5,e575fbadcd826243561192310f234c82", - "HG002_Revio_A.HG002_Revio_A.vcf.gz.tbi:md5,e27fe63e51a2cfaec020ad0a1aec4a7f", + "HG002_Revio_A.vcf.gz:md5,e575fbadcd826243561192310f234c82", + "HG002_Revio_A.vcf.gz.tbi:md5,e27fe63e51a2cfaec020ad0a1aec4a7f", "HG002_Revio_A_modkit_pileup.bed.gz:md5,55496cdcd7e4ccad86adee3cb819da56", "HG002_Revio_A_modkit_pileup.bed.gz.tbi:md5,b217c5e971ecb0b8c874b0038f0d2ae4", "fcc3f220bb09d3264f97e7f620779be0", @@ -106,9 +106,9 @@ "HG002_Revio_B.dip.bed:md5,c4abdf4a812fd62eb49cdaccebdaa3a1", "HG002_Revio_B.hap1.bed:md5,4ff9c348e930b1272b54eae7d8255fc3", "HG002_Revio_B.hap2.bed:md5,e95100eef23cdb0e0785a1ac6bd9a70d", - "HG002_Revio_B.HG002_Revio_B.copynum.bedgraph:md5,42095da173e46804977bbbecc2fda3aa", - "HG002_Revio_B.HG002_Revio_B.depth.bw:md5,45c82491b7119b2d427c5bf2167811c5", - "HG002_Revio_B.HG002_Revio_B.maf.bw:md5,b27799b62d65661b384aa61944bd0590", + "HG002_Revio_B.copynum.bedgraph:md5,42095da173e46804977bbbecc2fda3aa", + "HG002_Revio_B.depth.bw:md5,45c82491b7119b2d427c5bf2167811c5", + "HG002_Revio_B.maf.bw:md5,b27799b62d65661b384aa61944bd0590", "HG002_Revio_B.mosdepth.global.dist.txt:md5,5c2dd519f3abc19c00d1a0618cf477d4", "HG002_Revio_B.mosdepth.region.dist.txt:md5,4a6ccfd85f9837c6c57b3ddaa8c7d263", "HG002_Revio_B.mosdepth.summary.txt:md5,6c1d1590ed9423552d56ee456c89e6ef", @@ -120,8 +120,8 @@ "HG002_Revio_B.hap2.paf.gz:md5,14e230db02f0fefcacdd45949743d80c", "HG002_Revio_B.hap2.var.gz:md5,5ed54d6881aac6c54245bb8c5ed77d44", "HG002_Revio_B.pair.vcf.gz:md5,62c75ce4450a5fde9fdc6e552f5c2cd9", - "HG002_Revio_B.HG002_Revio_B.vcf.gz:md5,76bf24c26a6310f885a03a64a511098e", - "HG002_Revio_B.HG002_Revio_B.vcf.gz.tbi:md5,ef6bc66b37b179727ac0c8635d39a8dd", + "HG002_Revio_B.vcf.gz:md5,76bf24c26a6310f885a03a64a511098e", + "HG002_Revio_B.vcf.gz.tbi:md5,ef6bc66b37b179727ac0c8635d39a8dd", "HG002_Revio_B_modkit_pileup.bed.gz:md5,c217ccd3e8514a6a5eca0e163dee9f20", "HG002_Revio_B_modkit_pileup.bed.gz.tbi:md5,383b647625175e59420c5d8044ba711f", "fcc3f220bb09d3264f97e7f620779be0", @@ -142,7 +142,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-09-20T09:48:22.654535823" + "timestamp": "2024-09-30T16:16:20.523890327" }, "test profile - multisample - ont - parallel_alignments 2 - parallel_snv 1": { "content": [ @@ -150,14 +150,14 @@ "multiqc_citations.txt:md5,a27affce20d456d20ed387097a4f0350", "multiqc_fastqc.txt:md5,5254c5d578af3a24182ccf3248183ac6", "53495f0b494894437c243a5c5f47c4fc", - "HG002_ONT_A.HG002_ONT_A.copynum.bedgraph:md5,4c5517c1783afa11ff93c8d8627fbe42", - "HG002_ONT_A.HG002_ONT_A.depth.bw:md5,7c1ad330a37ae8c9bfc89d5ed4f327ab", - "HG002_ONT_A.HG002_ONT_A.maf.bw:md5,c3a2453422665c6c25b7114ee258b85f", + "HG002_ONT_A.copynum.bedgraph:md5,4c5517c1783afa11ff93c8d8627fbe42", + "HG002_ONT_A.depth.bw:md5,7c1ad330a37ae8c9bfc89d5ed4f327ab", + "HG002_ONT_A.maf.bw:md5,c3a2453422665c6c25b7114ee258b85f", "HG002_ONT_A.mosdepth.global.dist.txt:md5,5ae0972357f99aa481a0bf12fb9e0b0b", "HG002_ONT_A.mosdepth.region.dist.txt:md5,023b1c6aeaf8fa5ededd6b711a5cd012", "HG002_ONT_A.mosdepth.summary.txt:md5,c3b664b0983213f73edf3c0d5a0b04a2", - "HG002_ONT_A.HG002_ONT_A.vcf.gz:md5,4814c13b0127f88bfa7857bf19e17875", - "HG002_ONT_A.HG002_ONT_A.vcf.gz.tbi:md5,0a5ace7b099fbe88ba3806e7ce83d653", + "HG002_ONT_A.vcf.gz:md5,4814c13b0127f88bfa7857bf19e17875", + "HG002_ONT_A.vcf.gz.tbi:md5,0a5ace7b099fbe88ba3806e7ce83d653", "HG002_ONT_A_modkit_pileup.bed.gz:md5,e04d51deb9019e67e7ddd7f1bd82a580", "HG002_ONT_A_modkit_pileup.bed.gz.tbi:md5,1e198df01c63afea13ef9d04e2d03684", "7b8dc04d36dc2290fd031da73e8c8553", @@ -171,14 +171,14 @@ "#" ], "325c284fc112dff72679b38c9ef2c2da", - "HG002_ONT_B.HG002_ONT_B.copynum.bedgraph:md5,7d30f621d502d16301fa79cf48a3b903", - "HG002_ONT_B.HG002_ONT_B.depth.bw:md5,633a878a4258d2bf767df96388abb4cd", - "HG002_ONT_B.HG002_ONT_B.maf.bw:md5,1951883a15f76e13f5a3ae01c062e265", + "HG002_ONT_B.copynum.bedgraph:md5,7d30f621d502d16301fa79cf48a3b903", + "HG002_ONT_B.depth.bw:md5,633a878a4258d2bf767df96388abb4cd", + "HG002_ONT_B.maf.bw:md5,1951883a15f76e13f5a3ae01c062e265", "HG002_ONT_B.mosdepth.global.dist.txt:md5,e551c7a9d1a26cecc99d15ac93a4a924", "HG002_ONT_B.mosdepth.region.dist.txt:md5,11154f617f447f4c59dc192d9af4249f", "HG002_ONT_B.mosdepth.summary.txt:md5,bcb06b29c22cb6ad200f283e72c29653", - "HG002_ONT_B.HG002_ONT_B.vcf.gz:md5,c4b0cf6c2efebbf746c6b4d8b6c94c57", - "HG002_ONT_B.HG002_ONT_B.vcf.gz.tbi:md5,de293b6c556d537ccfddf659b138610b", + "HG002_ONT_B.vcf.gz:md5,c4b0cf6c2efebbf746c6b4d8b6c94c57", + "HG002_ONT_B.vcf.gz.tbi:md5,de293b6c556d537ccfddf659b138610b", "HG002_ONT_B_modkit_pileup.bed.gz:md5,95a96ceddc795c9c5c4a8d9e6f9d3b5b", "HG002_ONT_B_modkit_pileup.bed.gz.tbi:md5,8276c6feeac0be16274198831c75023d", "7b8dc04d36dc2290fd031da73e8c8553", @@ -196,6 +196,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-09-20T12:33:56.873568079" + "timestamp": "2024-09-30T16:17:44.422130232" } -} +} \ No newline at end of file From da7d9722598fe25cae12d0dc258c9f1b213aa4fb Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Tue, 1 Oct 2024 11:42:19 +0200 Subject: [PATCH 023/106] Test changed since without sharding (#404) --- .github/workflows/ci.yml | 27 ++++++++++++++------------- CHANGELOG.md | 1 + nf-test.config | 2 +- 3 files changed, 16 insertions(+), 14 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d5a7e31f..e92c0ca8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -42,9 +42,15 @@ jobs: steps: - name: Check out pipeline code uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 + with: + fetch-depth: 0 + - name: Fetch ${{ github.event.pull_request.base.ref }} branch + run: | + git remote add upstream ${{ github.event.repository.clone_url }} + git fetch upstream ${{ github.event.pull_request.base.ref }} - name: Install Nextflow - uses: nf-core/setup-nextflow@b9f764e8ba5c76b712ace14ecbfcef0e40ae2dd8 # v1 + uses: nf-core/setup-nextflow@v2 with: version: "${{ matrix.NXF_VER }}" @@ -64,18 +70,13 @@ jobs: - name: Run nf-test run: | - nf-test test --verbose --tag ${{ matrix.tags }} --profile "+${{ matrix.profile }}" --junitxml=test.xml --tap=test.tap - - - uses: pcolby/tap-summary@v1 - with: - path: >- - test.tap - - - name: Output log on failure - if: failure() - run: | - sudo apt install bat > /dev/null - batcat --decorations=always --color=always ${{ github.workspace }}/.nf-test/tests/*/meta/nextflow.log + nf-test test \ + --ci \ + --changed-since upstream/${{ github.event.pull_request.base.ref }} \ + --verbose \ + --tag ${{ matrix.tags }} \ + --profile "+${{ matrix.profile }}" \ + --junitxml=test.xml - name: Publish Test Report uses: mikepenz/action-junit-report@v3 diff --git a/CHANGELOG.md b/CHANGELOG.md index 4d9db98c..588ffde6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -38,6 +38,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#393](https://github.com/genomic-medicine-sweden/nallo/pull/393) - Changed the default minimap2 preset for PacBio data from `map-hifi` to `lr:hqae` - [#397](https://github.com/genomic-medicine-sweden/nallo/pull/397) - Changed `pipelines_testdata_base_path` to pin a specific commit - [#402](https://github.com/genomic-medicine-sweden/nallo/pull/402) - Updated broken test profile link added in [#397](https://github.com/genomic-medicine-sweden/nallo/pull/397) +- [#404](https://github.com/genomic-medicine-sweden/nallo/pull/404) - Changed to only run nf-tests where files have changes compared to the base branch ### `Removed` diff --git a/nf-test.config b/nf-test.config index bf2b1f87..015c60eb 100644 --- a/nf-test.config +++ b/nf-test.config @@ -7,5 +7,5 @@ config { workDir ".nf-test" configFile "tests/nextflow.config" profile "docker" - + triggers 'nextflow.config', 'nf-test.config', 'test-data/**/*' } From 1c305d43a9c390afb373b6b04aaba6d7e72954cb Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Fri, 4 Oct 2024 13:44:51 +0200 Subject: [PATCH 024/106] Update usage.md (#407) --- CHANGELOG.md | 1 + docs/usage.md | 9 ++++++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 588ffde6..a51e5559 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -39,6 +39,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#397](https://github.com/genomic-medicine-sweden/nallo/pull/397) - Changed `pipelines_testdata_base_path` to pin a specific commit - [#402](https://github.com/genomic-medicine-sweden/nallo/pull/402) - Updated broken test profile link added in [#397](https://github.com/genomic-medicine-sweden/nallo/pull/397) - [#404](https://github.com/genomic-medicine-sweden/nallo/pull/404) - Changed to only run nf-tests where files have changes compared to the base branch +- [#407](https://github.com/genomic-medicine-sweden/nallo/pull/407) - Changed echtvar example file in docs ### `Removed` diff --git a/docs/usage.md b/docs/usage.md index 5e00a908..2f6badb0 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -206,13 +206,11 @@ This subworkflow relies on the mapping and short variant calling, and requires t | -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `vep_cache` | VEP cache matching your reference genome, either as a `.tar.gz` archive or path to a directory (e.g. [homo_sapiens_vep_110_GRCh38.tar.gz](https://ftp.ensembl.org/pub/release-110/variation/vep/homo_sapiens_vep_110_GRCh38.tar.gz)) | | `vep_plugins` 1 | A csv file with VEP plugin files, pLI and LoFtool are required. Example provided below. | -| `snp_db` 2 |  A csv file with annotation databases from ([`echtvar encode`](https://github.com/brentp/echtvar)) (e.g. [gnomad.v3.1.2.echtvar.popmax.v2.zip](https://surfdrive.surf.nl/files/index.php/s/LddbAYQAYPqtYu6/download)) | +| `snp_db` 2 |  A csv file with annotation databases from ([`echtvar encode`](https://github.com/brentp/echtvar)) | | `variant_consequences_snv` | A list of SO terms listed in the order of severity from most severe to lease severe for annotating genomic and mitochondrial SNVs. Sample file [here](https://github.com/nf-core/test-datasets/blob/raredisease/reference/variant_consequences_v2.txt). You can learn more about these terms [here](https://ensembl.org/info/genome/variation/prediction/predicted_data.html) | 1 Example file for input with `--vep_plugins` -- If running without `--skip_snv_annotation`, `--variant_consequences_snv` is also required (File containing list of SO terms listed in the order of severity from most severe to lease severe for annotating genomic and mitochondrial SNVs. Sample file [here](https://github.com/nf-core/test-datasets/blob/raredisease/reference/variant_consequences_v2.txt). You can learn more about these terms [here](https://grch37.ensembl.org/info/genome/variation/prediction/predicted_data.html)). - ``` vep_files https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/nallo/reference/vep_plugins/spliceai_21_scores_raw_indel_-v1.3-.vcf.gz.tbi @@ -230,6 +228,11 @@ gnomad,/path/to/gnomad.v3.1.2.echtvar.popmax.v2.zip cadd,/path/to/cadd.v1.6.hg38.zip ``` +> [!WARNING] +> Generating an echtvar database from a VCF-file is a fairly straightforward process described on the [echtvar GitHub](https://github.com/brentp/echtvar). However, the pre-made `gnomad.v3.1.2.echtvar.v2.zip` provided by them results in malformed INFO lines that are not compatible with genmod (run in the subsequent ranking subworkflow). +> +> For a very small test database that only overlaps the coordinates of the pipeline test data set, you could use [`cadd.v1.6.hg38.test_data.zip`](https://github.com/genomic-medicine-sweden/test-datasets/raw/refs/heads/nallo/reference/cadd.v1.6.hg38.test_data.zip) to get started. + > [!NOTE] > Optionally, to calcuate CADD scores for small indels, supply a path to a folder containing cadd annotations with `--cadd_resources` and prescored indels with `--cadd_prescored`. Equivalent of the `data/annotations/` and `data/prescored/` folders described [here](https://github.com/kircherlab/CADD-scripts/#manual-installation). CADD scores for SNVs can be annotated through echvtvar and `--snp_db`. From 16b16212de92e849c951d5ac90bf1258b2b47c3b Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Mon, 7 Oct 2024 09:10:48 +0200 Subject: [PATCH 025/106] Add found in tag to CNV-calling (#403) * Add found_in tag to CNV-calling * Fix snap * Revert "Merge branch 'dev' into add-found-in-cnv" This reverts commit 44939b08d2fbcf266e8e055a946fc02bf65f5a92, reversing changes made to bc5c57b09fa51b692df4d7604b0e8bd9682f4b45. * revert previous PR --- .github/workflows/ci.yml | 27 ++++++++------- CHANGELOG.md | 3 ++ conf/modules/call_svs.config | 6 ++-- conf/modules/cnv.config | 10 ++++-- modules/local/add_found_in_tag/main.nf | 33 ++++++++++--------- nf-test.config | 2 +- .../local/call_svs/tests/nextflow.config | 2 +- subworkflows/local/cnv.nf | 14 +++++--- tests/main.nf.test | 10 +++--- tests/main.nf.test.snap | 26 +++++++-------- 10 files changed, 76 insertions(+), 57 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e92c0ca8..d5a7e31f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -42,15 +42,9 @@ jobs: steps: - name: Check out pipeline code uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 - with: - fetch-depth: 0 - - name: Fetch ${{ github.event.pull_request.base.ref }} branch - run: | - git remote add upstream ${{ github.event.repository.clone_url }} - git fetch upstream ${{ github.event.pull_request.base.ref }} - name: Install Nextflow - uses: nf-core/setup-nextflow@v2 + uses: nf-core/setup-nextflow@b9f764e8ba5c76b712ace14ecbfcef0e40ae2dd8 # v1 with: version: "${{ matrix.NXF_VER }}" @@ -70,13 +64,18 @@ jobs: - name: Run nf-test run: | - nf-test test \ - --ci \ - --changed-since upstream/${{ github.event.pull_request.base.ref }} \ - --verbose \ - --tag ${{ matrix.tags }} \ - --profile "+${{ matrix.profile }}" \ - --junitxml=test.xml + nf-test test --verbose --tag ${{ matrix.tags }} --profile "+${{ matrix.profile }}" --junitxml=test.xml --tap=test.tap + + - uses: pcolby/tap-summary@v1 + with: + path: >- + test.tap + + - name: Output log on failure + if: failure() + run: | + sudo apt install bat > /dev/null + batcat --decorations=always --color=always ${{ github.workspace }}/.nf-test/tests/*/meta/nextflow.log - name: Publish Test Report uses: mikepenz/action-junit-report@v3 diff --git a/CHANGELOG.md b/CHANGELOG.md index a51e5559..89ad1747 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#388](https://github.com/genomic-medicine-sweden/nallo/pull/388) - Added longphase as the default phaser - [#388](https://github.com/genomic-medicine-sweden/nallo/pull/388) - Added single-sample tbi output to the short variant calling subworkflow - [#393](https://github.com/genomic-medicine-sweden/nallo/pull/393) - Added a new `--minimap2_read_mapping_preset` parameter +- [#403](https://github.com/genomic-medicine-sweden/nallo/pull/403) - Added `FOUND_IN=hificnv` tags to CNV output ### `Changed` @@ -38,6 +39,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#393](https://github.com/genomic-medicine-sweden/nallo/pull/393) - Changed the default minimap2 preset for PacBio data from `map-hifi` to `lr:hqae` - [#397](https://github.com/genomic-medicine-sweden/nallo/pull/397) - Changed `pipelines_testdata_base_path` to pin a specific commit - [#402](https://github.com/genomic-medicine-sweden/nallo/pull/402) - Updated broken test profile link added in [#397](https://github.com/genomic-medicine-sweden/nallo/pull/397) +- [#403](https://github.com/genomic-medicine-sweden/nallo/pull/403) - Changed `ADD_FOUND_IN_TAG` process to allow input files to be named the same as output, fixed header line description and removed bcftools view versions in header +- [#403](https://github.com/genomic-medicine-sweden/nallo/pull/403) - Revert [#404](https://github.com/genomic-medicine-sweden/nallo/pull/404) - [#404](https://github.com/genomic-medicine-sweden/nallo/pull/404) - Changed to only run nf-tests where files have changes compared to the base branch - [#407](https://github.com/genomic-medicine-sweden/nallo/pull/407) - Changed echtvar example file in docs diff --git a/conf/modules/call_svs.config b/conf/modules/call_svs.config index 9ce86386..842df531 100644 --- a/conf/modules/call_svs.config +++ b/conf/modules/call_svs.config @@ -26,9 +26,11 @@ process { withName: '.*:CALL_SVS:ADD_FOUND_IN_TAG' { ext.prefix = { "${meta.id}_found_in" } - ext.args = [ + ext.args = '--no-version' + ext.args2 = [ '--output-type b', - '--write-index=csi' + '--write-index=csi', + '--no-version' ].join(' ') } diff --git a/conf/modules/cnv.config b/conf/modules/cnv.config index e11c3553..ff330802 100644 --- a/conf/modules/cnv.config +++ b/conf/modules/cnv.config @@ -22,11 +22,17 @@ process { publishDir = [ path: { "${params.outdir}/cnv_calling/hificnv/${meta.id}" }, mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + saveAs: { filename -> filename.equals('versions.yml') || filename.endsWith('.vcf.gz') ? null : filename } ] } - withName: '.*:CNV:TABIX_HIFICNV' { + withName: '.*:CNV:ADD_FOUND_IN_TAG' { + ext.args = '--no-version' + ext.args2 = [ + '--output-type z', + '--write-index=tbi', + '--no-version' + ].join(' ') publishDir = [ path: { "${params.outdir}/cnv_calling/hificnv/${meta.id}" }, mode: params.publish_dir_mode, diff --git a/modules/local/add_found_in_tag/main.nf b/modules/local/add_found_in_tag/main.nf index caf4df21..12a8a2f8 100644 --- a/modules/local/add_found_in_tag/main.nf +++ b/modules/local/add_found_in_tag/main.nf @@ -8,7 +8,7 @@ process ADD_FOUND_IN_TAG { 'biocontainers/bcftools:1.20--h8b25389_0' }" input: - tuple val(meta), path(vcf), path(index) + tuple val(meta), path(vcf, stageAs: "?/*"), path(index, stageAs: "?/*") val(variant_caller) output: @@ -22,14 +22,17 @@ process ADD_FOUND_IN_TAG { script: def args = task.ext.args ?: '' + def args2 = task.ext.args2 ?: '' def prefix = task.ext.prefix ?: "${meta.id}" - def extension = args.contains("--output-type b") || args.contains("-Ob") ? "bcf.gz" : - args.contains("--output-type u") || args.contains("-Ou") ? "bcf" : - args.contains("--output-type z") || args.contains("-Oz") ? "vcf.gz" : - args.contains("--output-type v") || args.contains("-Ov") ? "vcf" : + def extension = args2.contains("--output-type b") || args2.contains("-Ob") ? "bcf.gz" : + args2.contains("--output-type u") || args2.contains("-Ou") ? "bcf" : + args2.contains("--output-type z") || args2.contains("-Oz") ? "vcf.gz" : + args2.contains("--output-type v") || args2.contains("-Ov") ? "vcf" : "vcf" + """ bcftools view \\ + $args \\ --threads $task.cpus \\ $vcf |\\ awk ' @@ -41,7 +44,7 @@ process ADD_FOUND_IN_TAG { # Add a INFO header line before the #CHROM line, then print the #CHROM line /^#CHROM/ { - printf("##INFO=\\n"); + printf("##INFO=\\n"); print; next; } @@ -54,7 +57,7 @@ process ADD_FOUND_IN_TAG { } ' |\\ bcftools view \\ - $args \\ + $args2 \\ --threads $task.cpus \\ --output ${prefix}.${extension} @@ -66,16 +69,16 @@ process ADD_FOUND_IN_TAG { """ stub: - def args = task.ext.args ?: '' + def args2 = task.ext.args2 ?: '' def prefix = task.ext.prefix ?: "${meta.id}" - def extension = args.contains("--output-type b") || args.contains("-Ob") ? "bcf.gz" : - args.contains("--output-type u") || args.contains("-Ou") ? "bcf" : - args.contains("--output-type z") || args.contains("-Oz") ? "vcf.gz" : - args.contains("--output-type v") || args.contains("-Ov") ? "vcf" : + def extension = args2.contains("--output-type b") || args2.contains("-Ob") ? "bcf.gz" : + args2.contains("--output-type u") || args2.contains("-Ou") ? "bcf" : + args2.contains("--output-type z") || args2.contains("-Oz") ? "vcf.gz" : + args2.contains("--output-type v") || args2.contains("-Ov") ? "vcf" : "vcf" - def index = args.contains("--write-index=tbi") || args.contains("-W=tbi") ? "tbi" : - args.contains("--write-index=csi") || args.contains("-W=csi") ? "csi" : - args.contains("--write-index") || args.contains("-W") ? "csi" : + def index = args2.contains("--write-index=tbi") || args2.contains("-W=tbi") ? "tbi" : + args2.contains("--write-index=csi") || args2.contains("-W=csi") ? "csi" : + args2.contains("--write-index") || args2.contains("-W") ? "csi" : "" def create_cmd = extension.endsWith(".gz") ? "echo '' | gzip >" : "touch" def create_index = extension.endsWith(".gz") && index.matches("csi|tbi") ? "touch ${prefix}.${extension}.${index}" : "" diff --git a/nf-test.config b/nf-test.config index 015c60eb..bf2b1f87 100644 --- a/nf-test.config +++ b/nf-test.config @@ -7,5 +7,5 @@ config { workDir ".nf-test" configFile "tests/nextflow.config" profile "docker" - triggers 'nextflow.config', 'nf-test.config', 'test-data/**/*' + } diff --git a/subworkflows/local/call_svs/tests/nextflow.config b/subworkflows/local/call_svs/tests/nextflow.config index fd7703d9..d0616704 100644 --- a/subworkflows/local/call_svs/tests/nextflow.config +++ b/subworkflows/local/call_svs/tests/nextflow.config @@ -1,7 +1,7 @@ process { withName: 'ADD_FOUND_IN_TAG' { - ext.args = '--output-type b --write-index=csi' + ext.args2 = '--output-type b --write-index=csi' } withName: 'BCFTOOLS_MERGE' { diff --git a/subworkflows/local/cnv.nf b/subworkflows/local/cnv.nf index 5da2d417..4aad2c72 100644 --- a/subworkflows/local/cnv.nf +++ b/subworkflows/local/cnv.nf @@ -1,5 +1,5 @@ +include { ADD_FOUND_IN_TAG } from '../../modules/local/add_found_in_tag' include { HIFICNV } from '../../modules/local/pacbio/hificnv' -include { TABIX_TABIX as TABIX_HIFICNV } from '../../modules/nf-core/tabix/tabix/' workflow CNV { @@ -42,10 +42,16 @@ workflow CNV { HIFICNV(ch_hificnv_in, ch_fasta, ch_exclude_bed) ch_versions = ch_versions.mix(HIFICNV.out.versions) - TABIX_HIFICNV(HIFICNV.out.vcf) - ch_versions = ch_versions.mix(TABIX_HIFICNV.out.versions) + // Add FOUND_IN=hificnv to VCF + ADD_FOUND_IN_TAG ( + HIFICNV.out.vcf.map { meta, vcf -> [ meta, vcf, [] ] }, + "hificnv" + ) + ch_versions = ch_versions.mix(ADD_FOUND_IN_TAG.out.versions) emit: - versions = ch_versions // channel: [ versions.yml ] + vcf = ADD_FOUND_IN_TAG.out.vcf // channel: [ val(meta), path(vcf) ] + tbi = ADD_FOUND_IN_TAG.out.tbi // channel: [ val(meta), path(tbi) ] + versions = ch_versions // channel: [ versions.yml ] } diff --git a/tests/main.nf.test b/tests/main.nf.test index 1472e9de..9f5fc3e5 100644 --- a/tests/main.nf.test +++ b/tests/main.nf.test @@ -52,7 +52,7 @@ nextflow_pipeline { file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap2.paf.gz"), file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap2.var.gz"), file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.pair.vcf.gz"), - file("$outputDir/cnv_calling/hificnv/HG002_Revio/HG002_Revio.vcf.gz"), + path("$outputDir/cnv_calling/hificnv/HG002_Revio/HG002_Revio.vcf.gz").vcf.variantsMD5, file("$outputDir/cnv_calling/hificnv/HG002_Revio/HG002_Revio.vcf.gz.tbi"), file("$outputDir/methylation/modkit/pileup/unphased/HG002_Revio/HG002_Revio_modkit_pileup.bed.gz"), file("$outputDir/methylation/modkit/pileup/unphased/HG002_Revio/HG002_Revio_modkit_pileup.bed.gz.tbi"), @@ -162,7 +162,7 @@ nextflow_pipeline { file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap2.paf.gz"), file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap2.var.gz"), file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.pair.vcf.gz"), - file("$outputDir/cnv_calling/hificnv/HG002_Revio_A/HG002_Revio_A.vcf.gz"), + path("$outputDir/cnv_calling/hificnv/HG002_Revio_A/HG002_Revio_A.vcf.gz").vcf.variantsMD5, file("$outputDir/cnv_calling/hificnv/HG002_Revio_A/HG002_Revio_A.vcf.gz.tbi"), file("$outputDir/methylation/modkit/pileup/unphased/HG002_Revio_A/HG002_Revio_A_modkit_pileup.bed.gz"), file("$outputDir/methylation/modkit/pileup/unphased/HG002_Revio_A/HG002_Revio_A_modkit_pileup.bed.gz.tbi"), @@ -198,7 +198,7 @@ nextflow_pipeline { file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap2.paf.gz"), file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap2.var.gz"), file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.pair.vcf.gz"), - file("$outputDir/cnv_calling/hificnv/HG002_Revio_B/HG002_Revio_B.vcf.gz"), + path("$outputDir/cnv_calling/hificnv/HG002_Revio_B/HG002_Revio_B.vcf.gz").vcf.variantsMD5, file("$outputDir/cnv_calling/hificnv/HG002_Revio_B/HG002_Revio_B.vcf.gz.tbi"), file("$outputDir/methylation/modkit/pileup/unphased/HG002_Revio_B/HG002_Revio_B_modkit_pileup.bed.gz"), file("$outputDir/methylation/modkit/pileup/unphased/HG002_Revio_B/HG002_Revio_B_modkit_pileup.bed.gz.tbi"), @@ -331,7 +331,7 @@ nextflow_pipeline { file("$outputDir/qc/mosdepth/HG002_ONT_A/HG002_ONT_A.mosdepth.global.dist.txt"), file("$outputDir/qc/mosdepth/HG002_ONT_A/HG002_ONT_A.mosdepth.region.dist.txt"), file("$outputDir/qc/mosdepth/HG002_ONT_A/HG002_ONT_A.mosdepth.summary.txt"), - file("$outputDir/cnv_calling/hificnv/HG002_ONT_A/HG002_ONT_A.vcf.gz"), + path("$outputDir/cnv_calling/hificnv/HG002_ONT_A/HG002_ONT_A.vcf.gz").vcf.variantsMD5, file("$outputDir/cnv_calling/hificnv/HG002_ONT_A/HG002_ONT_A.vcf.gz.tbi"), file("$outputDir/methylation/modkit/pileup/unphased/HG002_ONT_A/HG002_ONT_A_modkit_pileup.bed.gz"), file("$outputDir/methylation/modkit/pileup/unphased/HG002_ONT_A/HG002_ONT_A_modkit_pileup.bed.gz.tbi"), @@ -349,7 +349,7 @@ nextflow_pipeline { file("$outputDir/qc/mosdepth/HG002_ONT_B/HG002_ONT_B.mosdepth.global.dist.txt"), file("$outputDir/qc/mosdepth/HG002_ONT_B/HG002_ONT_B.mosdepth.region.dist.txt"), file("$outputDir/qc/mosdepth/HG002_ONT_B/HG002_ONT_B.mosdepth.summary.txt"), - file("$outputDir/cnv_calling/hificnv/HG002_ONT_B/HG002_ONT_B.vcf.gz"), + path("$outputDir/cnv_calling/hificnv/HG002_ONT_B/HG002_ONT_B.vcf.gz").vcf.variantsMD5, file("$outputDir/cnv_calling/hificnv/HG002_ONT_B/HG002_ONT_B.vcf.gz.tbi"), file("$outputDir/methylation/modkit/pileup/unphased/HG002_ONT_B/HG002_ONT_B_modkit_pileup.bed.gz"), file("$outputDir/methylation/modkit/pileup/unphased/HG002_ONT_B/HG002_ONT_B_modkit_pileup.bed.gz.tbi"), diff --git a/tests/main.nf.test.snap b/tests/main.nf.test.snap index 54f77a0b..efc22fb3 100644 --- a/tests/main.nf.test.snap +++ b/tests/main.nf.test.snap @@ -30,8 +30,8 @@ "HG002_Revio.hap2.paf.gz:md5,a99e451e4af96a7ab120cedd49eea618", "HG002_Revio.hap2.var.gz:md5,53dc16fc893a529a95067da161b4dad6", "HG002_Revio.pair.vcf.gz:md5,a390558ab50ce0dc9efec070b1c70c22", - "HG002_Revio.vcf.gz:md5,771f7d9ecbd161dedfbdd053ceff0d52", - "HG002_Revio.vcf.gz.tbi:md5,65d6930f79e626a5542091b7a419dc2b", + "ab9044066c7bd041966eed43e0d00f13", + "HG002_Revio.vcf.gz.tbi:md5,5e42ce281f81b7fdb5fa6e42ec4c7f8b", "HG002_Revio_modkit_pileup.bed.gz:md5,55496cdcd7e4ccad86adee3cb819da56", "HG002_Revio_modkit_pileup.bed.gz.tbi:md5,b217c5e971ecb0b8c874b0038f0d2ae4", "fcc3f220bb09d3264f97e7f620779be0", @@ -52,7 +52,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-09-30T16:14:48.238330482" + "timestamp": "2024-10-01T10:14:44.272116791" }, "test profile - multisample": { "content": [ @@ -81,8 +81,8 @@ "HG002_Revio_A.hap2.paf.gz:md5,a99e451e4af96a7ab120cedd49eea618", "HG002_Revio_A.hap2.var.gz:md5,53dc16fc893a529a95067da161b4dad6", "HG002_Revio_A.pair.vcf.gz:md5,233375a4067362bb6799d5ade46db537", - "HG002_Revio_A.vcf.gz:md5,e575fbadcd826243561192310f234c82", - "HG002_Revio_A.vcf.gz.tbi:md5,e27fe63e51a2cfaec020ad0a1aec4a7f", + "ab9044066c7bd041966eed43e0d00f13", + "HG002_Revio_A.vcf.gz.tbi:md5,38117ec4d71c688a6f43c53946908acd", "HG002_Revio_A_modkit_pileup.bed.gz:md5,55496cdcd7e4ccad86adee3cb819da56", "HG002_Revio_A_modkit_pileup.bed.gz.tbi:md5,b217c5e971ecb0b8c874b0038f0d2ae4", "fcc3f220bb09d3264f97e7f620779be0", @@ -120,8 +120,8 @@ "HG002_Revio_B.hap2.paf.gz:md5,14e230db02f0fefcacdd45949743d80c", "HG002_Revio_B.hap2.var.gz:md5,5ed54d6881aac6c54245bb8c5ed77d44", "HG002_Revio_B.pair.vcf.gz:md5,62c75ce4450a5fde9fdc6e552f5c2cd9", - "HG002_Revio_B.vcf.gz:md5,76bf24c26a6310f885a03a64a511098e", - "HG002_Revio_B.vcf.gz.tbi:md5,ef6bc66b37b179727ac0c8635d39a8dd", + "7db8959b4b1f46316bb7d5908a8b9f26", + "HG002_Revio_B.vcf.gz.tbi:md5,7a72aa048fe8389233a2cf94d843cd1e", "HG002_Revio_B_modkit_pileup.bed.gz:md5,c217ccd3e8514a6a5eca0e163dee9f20", "HG002_Revio_B_modkit_pileup.bed.gz.tbi:md5,383b647625175e59420c5d8044ba711f", "fcc3f220bb09d3264f97e7f620779be0", @@ -142,7 +142,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-09-30T16:16:20.523890327" + "timestamp": "2024-10-01T10:16:16.493512263" }, "test profile - multisample - ont - parallel_alignments 2 - parallel_snv 1": { "content": [ @@ -156,8 +156,8 @@ "HG002_ONT_A.mosdepth.global.dist.txt:md5,5ae0972357f99aa481a0bf12fb9e0b0b", "HG002_ONT_A.mosdepth.region.dist.txt:md5,023b1c6aeaf8fa5ededd6b711a5cd012", "HG002_ONT_A.mosdepth.summary.txt:md5,c3b664b0983213f73edf3c0d5a0b04a2", - "HG002_ONT_A.vcf.gz:md5,4814c13b0127f88bfa7857bf19e17875", - "HG002_ONT_A.vcf.gz.tbi:md5,0a5ace7b099fbe88ba3806e7ce83d653", + "7d27e8af63075fc17b4e6935e6397e9f", + "HG002_ONT_A.vcf.gz.tbi:md5,0abf55893512d2546a3f3231bb990f5d", "HG002_ONT_A_modkit_pileup.bed.gz:md5,e04d51deb9019e67e7ddd7f1bd82a580", "HG002_ONT_A_modkit_pileup.bed.gz.tbi:md5,1e198df01c63afea13ef9d04e2d03684", "7b8dc04d36dc2290fd031da73e8c8553", @@ -177,8 +177,8 @@ "HG002_ONT_B.mosdepth.global.dist.txt:md5,e551c7a9d1a26cecc99d15ac93a4a924", "HG002_ONT_B.mosdepth.region.dist.txt:md5,11154f617f447f4c59dc192d9af4249f", "HG002_ONT_B.mosdepth.summary.txt:md5,bcb06b29c22cb6ad200f283e72c29653", - "HG002_ONT_B.vcf.gz:md5,c4b0cf6c2efebbf746c6b4d8b6c94c57", - "HG002_ONT_B.vcf.gz.tbi:md5,de293b6c556d537ccfddf659b138610b", + "ab11a22397e05e4b7f7c5c809e9407bf", + "HG002_ONT_B.vcf.gz.tbi:md5,418164cae69148cd90545a56728340c5", "HG002_ONT_B_modkit_pileup.bed.gz:md5,95a96ceddc795c9c5c4a8d9e6f9d3b5b", "HG002_ONT_B_modkit_pileup.bed.gz.tbi:md5,8276c6feeac0be16274198831c75023d", "7b8dc04d36dc2290fd031da73e8c8553", @@ -196,6 +196,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-09-30T16:17:44.422130232" + "timestamp": "2024-10-01T10:17:40.930172057" } } \ No newline at end of file From 70a88de0264efc1d7a563fb47ca0ca6cac265d76 Mon Sep 17 00:00:00 2001 From: Daniel Schmitz Date: Mon, 7 Oct 2024 11:39:43 +0200 Subject: [PATCH 026/106] [Issue #406] Updated genmod to 3.8.3 (#410) * Updated genmod to 3.8.3 * Updated Changelog * Added update to table --- CHANGELOG.md | 2 + modules.json | 8 +-- .../nf-core/genmod/annotate/environment.yml | 4 +- modules/nf-core/genmod/annotate/main.nf | 4 +- modules/nf-core/genmod/annotate/meta.yml | 45 +++++++------- .../nf-core/genmod/compound/environment.yml | 4 +- modules/nf-core/genmod/compound/main.nf | 4 +- modules/nf-core/genmod/compound/meta.yml | 45 +++++++------- modules/nf-core/genmod/models/environment.yml | 4 +- modules/nf-core/genmod/models/main.nf | 4 +- modules/nf-core/genmod/models/meta.yml | 60 ++++++++++--------- modules/nf-core/genmod/score/environment.yml | 4 +- modules/nf-core/genmod/score/main.nf | 4 +- modules/nf-core/genmod/score/meta.yml | 60 ++++++++++--------- 14 files changed, 128 insertions(+), 124 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 89ad1747..81c61f73 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -43,6 +43,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#403](https://github.com/genomic-medicine-sweden/nallo/pull/403) - Revert [#404](https://github.com/genomic-medicine-sweden/nallo/pull/404) - [#404](https://github.com/genomic-medicine-sweden/nallo/pull/404) - Changed to only run nf-tests where files have changes compared to the base branch - [#407](https://github.com/genomic-medicine-sweden/nallo/pull/407) - Changed echtvar example file in docs +- [#406](https://github.com/genomic-medicine-sweden/nallo/issues/406) - Updated genmod to version 3.8.3 ### `Removed` @@ -80,6 +81,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 | fqcrs | 0.1.0 | | severus | | 1.1 | | longphase  |   | 1.7.3   | +| genmod | 3.8.2 | 3.8.3 | > [!NOTE] > Version has been updated if both old and new version information is present. diff --git a/modules.json b/modules.json index 6d7b4b1a..1735a5f6 100644 --- a/modules.json +++ b/modules.json @@ -103,22 +103,22 @@ }, "genmod/annotate": { "branch": "master", - "git_sha": "043f1164b94bcaf7b9810db243a8c37c66298077", + "git_sha": "55692e15e2ef8be6b37ad1475944a338770b4b3e", "installed_by": ["modules"] }, "genmod/compound": { "branch": "master", - "git_sha": "89fe39b745da3dca14ad1a361784812ea3aa3a43", + "git_sha": "55692e15e2ef8be6b37ad1475944a338770b4b3e", "installed_by": ["modules"] }, "genmod/models": { "branch": "master", - "git_sha": "043f1164b94bcaf7b9810db243a8c37c66298077", + "git_sha": "55692e15e2ef8be6b37ad1475944a338770b4b3e", "installed_by": ["modules"] }, "genmod/score": { "branch": "master", - "git_sha": "043f1164b94bcaf7b9810db243a8c37c66298077", + "git_sha": "55692e15e2ef8be6b37ad1475944a338770b4b3e", "installed_by": ["modules"] }, "gfastats": { diff --git a/modules/nf-core/genmod/annotate/environment.yml b/modules/nf-core/genmod/annotate/environment.yml index ac8140fd..bbc3fd97 100644 --- a/modules/nf-core/genmod/annotate/environment.yml +++ b/modules/nf-core/genmod/annotate/environment.yml @@ -1,7 +1,5 @@ -name: genmod_annotate channels: - conda-forge - bioconda - - defaults dependencies: - - bioconda::genmod=3.8.2 + - bioconda::genmod=3.8.3 diff --git a/modules/nf-core/genmod/annotate/main.nf b/modules/nf-core/genmod/annotate/main.nf index eb161187..033caa9a 100644 --- a/modules/nf-core/genmod/annotate/main.nf +++ b/modules/nf-core/genmod/annotate/main.nf @@ -4,8 +4,8 @@ process GENMOD_ANNOTATE { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/genmod:3.8.2--pyhdfd78af_0': - 'biocontainers/genmod:3.8.2--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/genmod:3.8.3--pyhdfd78af_0': + 'biocontainers/genmod:3.8.3--pyhdfd78af_0' }" input: tuple val(meta), path(input_vcf) diff --git a/modules/nf-core/genmod/annotate/meta.yml b/modules/nf-core/genmod/annotate/meta.yml index 3c876ac5..bb4afb6b 100644 --- a/modules/nf-core/genmod/annotate/meta.yml +++ b/modules/nf-core/genmod/annotate/meta.yml @@ -11,30 +11,33 @@ tools: documentation: "https://github.com/Clinical-Genomics/genmod" tool_dev_url: "https://github.com/moonso" licence: ["MIT"] + identifier: "" input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - input_vcf: - type: file - description: VCF file - pattern: "*.{vcf}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - input_vcf: + type: file + description: VCF file + pattern: "*.{vcf}" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - vcf: - type: file - description: Annotated VCF file - pattern: "*.{vcf}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*_annotate.vcf": + type: file + description: Annotated VCF file + pattern: "*.{vcf}" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@ramprasadn" maintainers: diff --git a/modules/nf-core/genmod/compound/environment.yml b/modules/nf-core/genmod/compound/environment.yml index 1e2561fd..bbc3fd97 100644 --- a/modules/nf-core/genmod/compound/environment.yml +++ b/modules/nf-core/genmod/compound/environment.yml @@ -1,7 +1,5 @@ -name: genmod_compound channels: - conda-forge - bioconda - - defaults dependencies: - - bioconda::genmod=3.8.2 + - bioconda::genmod=3.8.3 diff --git a/modules/nf-core/genmod/compound/main.nf b/modules/nf-core/genmod/compound/main.nf index 1731b722..4831da85 100644 --- a/modules/nf-core/genmod/compound/main.nf +++ b/modules/nf-core/genmod/compound/main.nf @@ -4,8 +4,8 @@ process GENMOD_COMPOUND { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/genmod:3.8.2--pyhdfd78af_0': - 'biocontainers/genmod:3.8.2--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/genmod:3.8.3--pyhdfd78af_0': + 'biocontainers/genmod:3.8.3--pyhdfd78af_0' }" input: tuple val(meta), path(input_vcf) diff --git a/modules/nf-core/genmod/compound/meta.yml b/modules/nf-core/genmod/compound/meta.yml index aa5f7da5..ebd6a110 100644 --- a/modules/nf-core/genmod/compound/meta.yml +++ b/modules/nf-core/genmod/compound/meta.yml @@ -11,30 +11,33 @@ tools: documentation: "https://github.com/Clinical-Genomics/genmod" tool_dev_url: "https://github.com/moonso" licence: ["MIT"] + identifier: "" input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - input_vcf: - type: file - description: VCF file - pattern: "*.{vcf}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - input_vcf: + type: file + description: VCF file + pattern: "*.{vcf}" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] # - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - vcf: - type: file - description: Output VCF file - pattern: "*.{vcf}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] # + - "*_compound.vcf": + type: file + description: Output VCF file + pattern: "*.{vcf}" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@ramprasadn" maintainers: diff --git a/modules/nf-core/genmod/models/environment.yml b/modules/nf-core/genmod/models/environment.yml index 62a746c7..bbc3fd97 100644 --- a/modules/nf-core/genmod/models/environment.yml +++ b/modules/nf-core/genmod/models/environment.yml @@ -1,7 +1,5 @@ -name: genmod_models channels: - conda-forge - bioconda - - defaults dependencies: - - bioconda::genmod=3.8.2 + - bioconda::genmod=3.8.3 diff --git a/modules/nf-core/genmod/models/main.nf b/modules/nf-core/genmod/models/main.nf index 0504574a..90c1fd48 100644 --- a/modules/nf-core/genmod/models/main.nf +++ b/modules/nf-core/genmod/models/main.nf @@ -4,8 +4,8 @@ process GENMOD_MODELS { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/genmod:3.8.2--pyhdfd78af_0': - 'biocontainers/genmod:3.8.2--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/genmod:3.8.3--pyhdfd78af_0': + 'biocontainers/genmod:3.8.3--pyhdfd78af_0' }" input: tuple val(meta), path(input_vcf) diff --git a/modules/nf-core/genmod/models/meta.yml b/modules/nf-core/genmod/models/meta.yml index dd9001e0..dca74095 100644 --- a/modules/nf-core/genmod/models/meta.yml +++ b/modules/nf-core/genmod/models/meta.yml @@ -11,38 +11,40 @@ tools: documentation: "https://github.com/Clinical-Genomics/genmod" tool_dev_url: "https://github.com/moonso" licence: ["MIT"] + identifier: "" input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - input_vcf: - type: file - description: vcf file - pattern: "*.{vcf}" - - reduced_penetrance: - type: file - description: file with gene ids that have reduced penetrance - pattern: "*.{tsv}" - - family_file: - type: file - description: ped file - pattern: "*.{ped}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - input_vcf: + type: file + description: vcf file + pattern: "*.{vcf}" + - - fam: + type: file + description: file with family information + - - reduced_penetrance: + type: file + description: file with gene ids that have reduced penetrance + pattern: "*.{tsv}" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - vcf: - type: file - description: Output VCF file - pattern: "*.{vcf}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*_models.vcf": + type: file + description: Output VCF file + pattern: "*.{vcf}" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@ramprasadn" maintainers: diff --git a/modules/nf-core/genmod/score/environment.yml b/modules/nf-core/genmod/score/environment.yml index bacc4cec..bbc3fd97 100644 --- a/modules/nf-core/genmod/score/environment.yml +++ b/modules/nf-core/genmod/score/environment.yml @@ -1,7 +1,5 @@ -name: genmod_score channels: - conda-forge - bioconda - - defaults dependencies: - - bioconda::genmod=3.8.2 + - bioconda::genmod=3.8.3 diff --git a/modules/nf-core/genmod/score/main.nf b/modules/nf-core/genmod/score/main.nf index 15be5f74..522e05b6 100644 --- a/modules/nf-core/genmod/score/main.nf +++ b/modules/nf-core/genmod/score/main.nf @@ -4,8 +4,8 @@ process GENMOD_SCORE { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/genmod:3.8.2--pyhdfd78af_0': - 'biocontainers/genmod:3.8.2--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/genmod:3.8.3--pyhdfd78af_0': + 'biocontainers/genmod:3.8.3--pyhdfd78af_0' }" input: tuple val(meta), path(input_vcf) diff --git a/modules/nf-core/genmod/score/meta.yml b/modules/nf-core/genmod/score/meta.yml index 8998b00c..32da6468 100644 --- a/modules/nf-core/genmod/score/meta.yml +++ b/modules/nf-core/genmod/score/meta.yml @@ -11,38 +11,40 @@ tools: documentation: "https://github.com/Clinical-Genomics/genmod" tool_dev_url: "https://github.com/moonso" licence: ["MIT"] + identifier: "" input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - input_vcf: - type: file - description: vcf file - pattern: "*.{vcf}" - - family_file: - type: file - description: ped file - pattern: "*.{ped}" - - score_config: - type: file - description: rank model config file - pattern: "*.{ini}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - input_vcf: + type: file + description: vcf file + pattern: "*.{vcf}" + - - fam: + type: file + description: file with family information + - - score_config: + type: file + description: rank model config file + pattern: "*.{ini}" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - vcf: - type: file - description: Output VCF file - pattern: "*.{vcf}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*_score.vcf": + type: file + description: Output VCF file + pattern: "*.{vcf}" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@ramprasadn" maintainers: From 6fd0f50e2e6c584ba4e7b98c002d7fcdbd1004c1 Mon Sep 17 00:00:00 2001 From: Daniel Schmitz Date: Mon, 7 Oct 2024 16:12:13 +0200 Subject: [PATCH 027/106] [Issue #409] Updated longphase (#411) * Updated longphase * Updated Changelogs --- CHANGELOG.md | 1 + modules.json | 4 +- modules/nf-core/longphase/haplotag/main.nf | 4 +- modules/nf-core/longphase/haplotag/meta.yml | 139 +++++++++--------- .../haplotag/tests/main.nf.test.snap | 8 +- .../nf-core/longphase/phase/environment.yml | 7 +- modules/nf-core/longphase/phase/main.nf | 4 +- modules/nf-core/longphase/phase/meta.yml | 123 ++++++++-------- .../longphase/phase/tests/main.nf.test.snap | 20 +-- 9 files changed, 159 insertions(+), 151 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 81c61f73..aa2d831f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -44,6 +44,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#404](https://github.com/genomic-medicine-sweden/nallo/pull/404) - Changed to only run nf-tests where files have changes compared to the base branch - [#407](https://github.com/genomic-medicine-sweden/nallo/pull/407) - Changed echtvar example file in docs - [#406](https://github.com/genomic-medicine-sweden/nallo/issues/406) - Updated genmod to version 3.8.3 +- [#411](https://github.com/genomic-medicine-sweden/nallo/pull/411) - Updated longphase module to most recent version. ([#409](https://github.com/genomic-medicine-sweden/nallo/issues/409)). ### `Removed` diff --git a/modules.json b/modules.json index 1735a5f6..86807969 100644 --- a/modules.json +++ b/modules.json @@ -143,12 +143,12 @@ }, "longphase/haplotag": { "branch": "master", - "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", + "git_sha": "22fc6d90be8eca2cf6afe5d10b3c5cffcdbcb19c", "installed_by": ["modules"] }, "longphase/phase": { "branch": "master", - "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", + "git_sha": "22fc6d90be8eca2cf6afe5d10b3c5cffcdbcb19c", "installed_by": ["modules"] }, "minimap2/align": { diff --git a/modules/nf-core/longphase/haplotag/main.nf b/modules/nf-core/longphase/haplotag/main.nf index 701af31f..86ba0592 100644 --- a/modules/nf-core/longphase/haplotag/main.nf +++ b/modules/nf-core/longphase/haplotag/main.nf @@ -24,8 +24,8 @@ process LONGPHASE_HAPLOTAG { script: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" - def sv_file = params.svs ? "--sv-file ${svs}" : "" - def mod_file = params.mods ? "--mod-file ${mods}" : "" + def sv_file = svs ? "--sv-file ${svs}" : "" + def mod_file = mods ? "--mod-file ${mods}" : "" """ longphase \\ diff --git a/modules/nf-core/longphase/haplotag/meta.yml b/modules/nf-core/longphase/haplotag/meta.yml index 2fe7c569..d2f2ec8d 100644 --- a/modules/nf-core/longphase/haplotag/meta.yml +++ b/modules/nf-core/longphase/haplotag/meta.yml @@ -1,88 +1,93 @@ ---- # yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/meta-schema.json name: "longphase_haplotag" -description: LongPhase is an ultra-fast program for simultaneously co-phasing SNPs, small indels, large SVs, and (5mC) modifications for Nanopore and PacBio platforms. +description: LongPhase is an ultra-fast program for simultaneously co-phasing SNPs, + small indels, large SVs, and (5mC) modifications for Nanopore and PacBio platforms. keywords: - haplotag - long-read - genomics tools: - "longphase": - description: "LongPhase is an ultra-fast program for simultaneously co-phasing SNPs, small indels, large SVs, and (5mC) modifications for Nanopore and PacBio platforms." + description: "LongPhase is an ultra-fast program for simultaneously co-phasing + SNPs, small indels, large SVs, and (5mC) modifications for Nanopore and PacBio + platforms." homepage: "https://github.com/twolinin/longphase" documentation: "https://github.com/twolinin/longphase" tool_dev_url: "https://github.com/twolinin/longphase" doi: "10.1093/bioinformatics/btac058" licence: ["GPL v3"] + identifier: "" input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. `[ id:'sample1', single_end:false ]` - - bam: - type: file - description: Sorted BAM/CRAM file - pattern: "*.{bam,cram}" - - bai: - type: file - description: Index of sorted BAM/CRAM file - pattern: "*.{bai,crai,csi}" - - snps: - type: file - description: VCF file with SNPs (and INDELs) - pattern: "*.{vcf,vcf.gz}" - - svs: - type: file - description: VCF file with SVs - pattern: "*.{vcf,vcf.gz}" - - mods: - type: file - description: modcall-generated VCF with modifications - pattern: "*.{vcf,vcf.gz}" - - meta2: - type: map - description: | - Groovy Map containing reference information - e.g. `[ id:'hg38' ]` - - fasta: - type: file - description: Reference fasta file - pattern: "*.fasta" - - meta3: - type: map - description: | - Groovy Map containing reference information - e.g. `[ id:'hg38' ]` - - fai: - type: file - description: Reference fai index - pattern: "*.fai" - + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - bam: + type: file + description: Sorted BAM/CRAM file + pattern: "*.{bam,cram}" + - bai: + type: file + description: Index of sorted BAM/CRAM file + pattern: "*.{bai,crai,csi}" + - snps: + type: file + description: VCF file with SNPs (and INDELs) + pattern: "*.{vcf,vcf.gz}" + - svs: + type: file + description: VCF file with SVs + pattern: "*.{vcf,vcf.gz}" + - mods: + type: file + description: modcall-generated VCF with modifications + pattern: "*.{vcf,vcf.gz}" + - - meta2: + type: map + description: | + Groovy Map containing reference information + e.g. `[ id:'hg38' ]` + - fasta: + type: file + description: Reference fasta file + pattern: "*.fasta" + - - meta3: + type: map + description: | + Groovy Map containing reference information + e.g. `[ id:'hg38' ]` + - fai: + type: file + description: Reference fai index + pattern: "*.fai" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. `[ id:'sample1', single_end:false ]` - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - bam: - type: file - description: BAM file with haplotagged reads - pattern: "*.bam" - - cram: - type: file - description: CRAM file with haplotagged reads - pattern: "*.cram" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - "*.{bam,cram}": + type: file + description: BAM file with haplotagged reads + pattern: "*.bam" - log: - type: file - description: Log file - pattern: "*.log" - + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - "*.log": + type: file + description: Log file + pattern: "*.log" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@fellen31" maintainers: diff --git a/modules/nf-core/longphase/haplotag/tests/main.nf.test.snap b/modules/nf-core/longphase/haplotag/tests/main.nf.test.snap index 225a4f7e..3cf35dc3 100644 --- a/modules/nf-core/longphase/haplotag/tests/main.nf.test.snap +++ b/modules/nf-core/longphase/haplotag/tests/main.nf.test.snap @@ -119,15 +119,15 @@ "@RG\tID:test\tSM:test", "@PG\tID:minimap2\tPN:minimap2\tVN:2.28-r1209\tCL:minimap2 -y -x map-ont --secondary=no -R @RG\\tID:test\\tSM:test -t 30 -a genome.mmi test.bam_other.fastq.gz", "@PG\tID:samtools\tPN:samtools\tPP:minimap2\tVN:1.19.2\tCL:samtools sort -@ 29 -o test.bam_other.fastq.gz.bam --write-index", - "@PG\tID:longphase\tPN:longphase\tPP:samtools\tVN:1.7.3\tCL:longphase haplotag --threads 2 -o test --reference genome.fasta --snp-file test.genome.vcf.gz --bam test.sorted.bam " + "@PG\tID:longphase\tPN:longphase\tPP:samtools\tVN:1.7.3\tCL:longphase haplotag --threads 2 -o test --reference genome.fasta --snp-file test.genome.vcf.gz --bam test.sorted.bam --sv-file NA24385_sv.vcf.gz " ], "721264eb2824a3146b331f2532d10180" ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-07-25T09:13:39.901419316" + "timestamp": "2024-10-04T13:39:33.50395694" }, "[ bam, bai, snps, [], [] ], fasta, fai - log & cram": { "content": [ diff --git a/modules/nf-core/longphase/phase/environment.yml b/modules/nf-core/longphase/phase/environment.yml index 96e04eb6..bb2d0eee 100644 --- a/modules/nf-core/longphase/phase/environment.yml +++ b/modules/nf-core/longphase/phase/environment.yml @@ -1,8 +1,7 @@ ---- -# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda + dependencies: - - "bioconda::longphase=1.7.3" - - "bioconda::htslib=1.20" + - bioconda::htslib=1.20 + - bioconda::longphase=1.7.3 diff --git a/modules/nf-core/longphase/phase/main.nf b/modules/nf-core/longphase/phase/main.nf index ad29d997..f121f4b6 100644 --- a/modules/nf-core/longphase/phase/main.nf +++ b/modules/nf-core/longphase/phase/main.nf @@ -24,8 +24,8 @@ process LONGPHASE_PHASE { def args = task.ext.args ?: '' def args2 = task.ext.args2 ?: '' def prefix = task.ext.prefix ?: "${meta.id}" - def sv_file = params.svs ? "--sv-file ${svs}" : "" - def mod_file = params.mods ? "--mod-file ${mods}" : "" + def sv_file = svs ? "--sv-file ${svs}" : "" + def mod_file = mods ? "--mod-file ${mods}" : "" def bamList = [] for (file in bam) { diff --git a/modules/nf-core/longphase/phase/meta.yml b/modules/nf-core/longphase/phase/meta.yml index 42899177..823645d4 100644 --- a/modules/nf-core/longphase/phase/meta.yml +++ b/modules/nf-core/longphase/phase/meta.yml @@ -1,80 +1,83 @@ ---- # yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/meta-schema.json name: "longphase_phase" -description: LongPhase is an ultra-fast program for simultaneously co-phasing SNPs, small indels, large SVs, and (5mC) modifications for Nanopore and PacBio platforms. +description: LongPhase is an ultra-fast program for simultaneously co-phasing SNPs, + small indels, large SVs, and (5mC) modifications for Nanopore and PacBio platforms. keywords: - phase - long-read - genomics tools: - "longphase": - description: "LongPhase is an ultra-fast program for simultaneously co-phasing SNPs, small indels, large SVs, and (5mC) modifications for Nanopore and PacBio platforms." + description: "LongPhase is an ultra-fast program for simultaneously co-phasing + SNPs, small indels, large SVs, and (5mC) modifications for Nanopore and PacBio + platforms." homepage: "https://github.com/twolinin/longphase" documentation: "https://github.com/twolinin/longphase" tool_dev_url: "https://github.com/twolinin/longphase" doi: "10.1093/bioinformatics/btac058" licence: ["GPL v3"] + identifier: "" input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. `[ id:'sample1', single_end:false ]` - - bam: - type: file - description: Sorted BAM/CRAM file(s) - pattern: "*.{bam,cram}" - - bai: - type: file - description: Index of sorted BAM/CRAM file(s) - pattern: "*.{bai,crai,csi}" - - snps: - type: file - description: VCF file with SNPs (and INDELs) - pattern: "*.{vcf,vcf.gz}" - - svs: - type: file - description: VCF file with SVs - pattern: "*.{vcf,vcf.gz}" - - mods: - type: file - description: modcall-generated VCF with modifications - pattern: "*.{vcf,vcf.gz}" - - meta2: - type: map - description: | - Groovy Map containing reference information - e.g. `[ id:'hg38' ]` - - fasta: - type: file - description: Reference fasta file - pattern: "*.fasta" - - meta3: - type: map - description: | - Groovy Map containing reference information - e.g. `[ id:'hg38' ]` - - fai: - type: file - description: Reference fai index - pattern: "*.fai" - + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - bam: + type: file + description: Sorted BAM/CRAM file(s) + pattern: "*.{bam,cram}" + - bai: + type: file + description: Index of sorted BAM/CRAM file(s) + pattern: "*.{bai,crai,csi}" + - snps: + type: file + description: VCF file with SNPs (and INDELs) + pattern: "*.{vcf,vcf.gz}" + - svs: + type: file + description: VCF file with SVs + pattern: "*.{vcf,vcf.gz}" + - mods: + type: file + description: modcall-generated VCF with modifications + pattern: "*.{vcf,vcf.gz}" + - - meta2: + type: map + description: | + Groovy Map containing reference information + e.g. `[ id:'hg38' ]` + - fasta: + type: file + description: Reference fasta file + pattern: "*.fasta" + - - meta3: + type: map + description: | + Groovy Map containing reference information + e.g. `[ id:'hg38' ]` + - fai: + type: file + description: Reference fai index + pattern: "*.fai" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. `[ id:'sample1', single_end:false ]` - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - vcf: - type: file - description: Compressed VCF file with phased variants - pattern: "*.vcf.gz" - + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - "*.vcf.gz": + type: file + description: Compressed VCF file with phased variants + pattern: "*.vcf.gz" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@fellen31" maintainers: diff --git a/modules/nf-core/longphase/phase/tests/main.nf.test.snap b/modules/nf-core/longphase/phase/tests/main.nf.test.snap index 02e2bb17..8a38c1ca 100644 --- a/modules/nf-core/longphase/phase/tests/main.nf.test.snap +++ b/modules/nf-core/longphase/phase/tests/main.nf.test.snap @@ -40,7 +40,7 @@ { "id": "test" }, - "test.vcf.gz:md5,fd2d21056b2de4722f12d5e883d9cb0a" + "test.vcf.gz:md5,b0a3effd6e076edbe7e2f1f7cfff547c" ] ], "1": [ @@ -51,7 +51,7 @@ { "id": "test" }, - "test.vcf.gz:md5,fd2d21056b2de4722f12d5e883d9cb0a" + "test.vcf.gz:md5,b0a3effd6e076edbe7e2f1f7cfff547c" ] ], "versions": [ @@ -60,10 +60,10 @@ } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-07-22T12:14:39.961315592" + "timestamp": "2024-10-04T13:37:16.921910004" }, "[ bam x2, bai x2, snps, svs, [] ], fasta, fai": { "content": [ @@ -73,7 +73,7 @@ { "id": "test" }, - "test.vcf.gz:md5,3ced25dc8c1ec0a7c64481c8a163d687" + "test.vcf.gz:md5,04905b6042998e592c9f3b887ae9e09c" ] ], "1": [ @@ -84,7 +84,7 @@ { "id": "test" }, - "test.vcf.gz:md5,3ced25dc8c1ec0a7c64481c8a163d687" + "test.vcf.gz:md5,04905b6042998e592c9f3b887ae9e09c" ] ], "versions": [ @@ -93,10 +93,10 @@ } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-07-22T12:15:07.970597495" + "timestamp": "2024-10-04T13:37:23.41768963" }, "[ bam, bai, snps, [], [] ], fasta, fai - stub": { "content": [ From b27f6169ae783f2be1d3ffcb9f7f02c4b15d8f86 Mon Sep 17 00:00:00 2001 From: Daniel Schmitz Date: Tue, 8 Oct 2024 08:27:48 +0200 Subject: [PATCH 028/106] [Issue #377] Removed bcftools/index (#412) * Removed references to BCFTOOLS_INDEX_MERGE * Removed module bcftools/index * Updated Changelog * Prettified modules.json --- CHANGELOG.md | 1 + conf/modules/call_repeat_expansions.config | 8 -- modules.json | 5 - .../nf-core/bcftools/index/environment.yml | 7 - modules/nf-core/bcftools/index/main.nf | 51 -------- modules/nf-core/bcftools/index/meta.yml | 48 ------- .../nf-core/bcftools/index/tests/main.nf.test | 113 ----------------- .../bcftools/index/tests/main.nf.test.snap | 120 ------------------ .../bcftools/index/tests/nextflow.config | 3 - modules/nf-core/bcftools/index/tests/tags.yml | 2 - .../local/call_repeat_expansions/main.nf | 3 - 11 files changed, 1 insertion(+), 360 deletions(-) delete mode 100644 modules/nf-core/bcftools/index/environment.yml delete mode 100644 modules/nf-core/bcftools/index/main.nf delete mode 100644 modules/nf-core/bcftools/index/meta.yml delete mode 100644 modules/nf-core/bcftools/index/tests/main.nf.test delete mode 100644 modules/nf-core/bcftools/index/tests/main.nf.test.snap delete mode 100644 modules/nf-core/bcftools/index/tests/nextflow.config delete mode 100644 modules/nf-core/bcftools/index/tests/tags.yml diff --git a/CHANGELOG.md b/CHANGELOG.md index aa2d831f..0491679b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -52,6 +52,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#356](https://github.com/genomic-medicine-sweden/nallo/pull/356) - Removed filter_vep section from output documentation since it is not in the pipeline - [#379](https://github.com/genomic-medicine-sweden/nallo/pull/379) - Removed VEP Plugins from testdata ([genomic-medicine-sweden/test-datasets#16](https://github.com/genomic-medicine-sweden/test-datasets/pull/16)) - [#388](https://github.com/genomic-medicine-sweden/nallo/pull/388) - Removed support for co-phasing SVs with HiPhase, as the officially supported caller (pbsv) is not in the pipeline +- [#412](https://github.com/genomic-medicine-sweden/nallo/pull/412) - Removed `bcftools/index`, as indexing is handled by other modules and no references remained. ([#377](https://github.com/genomic-medicine-sweden/nallo/issues/377)) ### `Fixed` diff --git a/conf/modules/call_repeat_expansions.config b/conf/modules/call_repeat_expansions.config index d46150df..27979fc1 100644 --- a/conf/modules/call_repeat_expansions.config +++ b/conf/modules/call_repeat_expansions.config @@ -71,12 +71,4 @@ process { ] } - withName: '.*:CALL_REPEAT_EXPANSIONS:BCFTOOLS_INDEX_MERGE' { - ext.args = '--tbi' - publishDir = [ - path: { "${params.outdir}/repeat_calling/trgt/multi_sample/${meta.id}" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] - } } diff --git a/modules.json b/modules.json index 86807969..d7b5a21b 100644 --- a/modules.json +++ b/modules.json @@ -15,11 +15,6 @@ "git_sha": "cdf83b18471db290a28fe98c2a0852cb05864890", "installed_by": ["modules"] }, - "bcftools/index": { - "branch": "master", - "git_sha": "a5ba4d59c2b248c0379b0f8aeb4e7e754566cd1f", - "installed_by": ["modules"] - }, "bcftools/merge": { "branch": "master", "git_sha": "99a7e61b359f7b7b379cee49259879942d2d2533", diff --git a/modules/nf-core/bcftools/index/environment.yml b/modules/nf-core/bcftools/index/environment.yml deleted file mode 100644 index ea752646..00000000 --- a/modules/nf-core/bcftools/index/environment.yml +++ /dev/null @@ -1,7 +0,0 @@ -name: bcftools_index -channels: - - conda-forge - - bioconda - - defaults -dependencies: - - bioconda::bcftools=1.20 diff --git a/modules/nf-core/bcftools/index/main.nf b/modules/nf-core/bcftools/index/main.nf deleted file mode 100644 index 408e584c..00000000 --- a/modules/nf-core/bcftools/index/main.nf +++ /dev/null @@ -1,51 +0,0 @@ -process BCFTOOLS_INDEX { - tag "$meta.id" - label 'process_low' - - conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/bcftools:1.20--h8b25389_0': - 'biocontainers/bcftools:1.20--h8b25389_0' }" - - input: - tuple val(meta), path(vcf) - - output: - tuple val(meta), path("*.csi"), optional:true, emit: csi - tuple val(meta), path("*.tbi"), optional:true, emit: tbi - path "versions.yml" , emit: versions - - when: - task.ext.when == null || task.ext.when - - script: - def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" - - """ - bcftools \\ - index \\ - $args \\ - --threads $task.cpus \\ - $vcf - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - bcftools: \$(bcftools --version 2>&1 | head -n1 | sed 's/^.*bcftools //; s/ .*\$//') - END_VERSIONS - """ - - stub: - def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" - def extension = args.contains("--tbi") || args.contains("-t") ? "tbi" : - "csi" - """ - touch ${vcf}.${extension} - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - bcftools: \$(bcftools --version 2>&1 | head -n1 | sed 's/^.*bcftools //; s/ .*\$//') - END_VERSIONS - """ -} diff --git a/modules/nf-core/bcftools/index/meta.yml b/modules/nf-core/bcftools/index/meta.yml deleted file mode 100644 index 0207d057..00000000 --- a/modules/nf-core/bcftools/index/meta.yml +++ /dev/null @@ -1,48 +0,0 @@ -name: bcftools_index -description: Index VCF tools -keywords: - - vcf - - index - - bcftools - - csi - - tbi -tools: - - bcftools: - description: BCFtools is a set of utilities that manipulate variant calls in the Variant Call Format (VCF) and its binary counterpart BCF. All commands work transparently with both VCFs and BCFs, both uncompressed and BGZF-compressed. Most commands accept VCF, bgzipped VCF and BCF with filetype detected automatically even when streaming from a pipe. Indexed VCF and BCF will work in all situations. Un-indexed VCF and BCF and streams will work in most, but not all situations. - homepage: https://samtools.github.io/bcftools/ - documentation: https://samtools.github.io/bcftools/howtos/index.html - tool_dev_url: https://github.com/samtools/bcftools - doi: "10.1093/gigascience/giab008" - licence: ["MIT", "GPL-3.0-or-later"] -input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - vcf: - type: file - description: VCF file (optionally GZIPPED) - pattern: "*.{vcf,vcf.gz}" -output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - versions: - type: file - description: File containing software version - pattern: "versions.yml" - - csi: - type: file - description: Default VCF file index file - pattern: "*.csi" - - tbi: - type: file - description: Alternative VCF file index file for larger files (activated with -t parameter) - pattern: "*.tbi" -authors: - - "@jfy133" -maintainers: - - "@jfy133" diff --git a/modules/nf-core/bcftools/index/tests/main.nf.test b/modules/nf-core/bcftools/index/tests/main.nf.test deleted file mode 100644 index 9b374853..00000000 --- a/modules/nf-core/bcftools/index/tests/main.nf.test +++ /dev/null @@ -1,113 +0,0 @@ -nextflow_process { - - name "Test Process BCFTOOLS_INDEX" - script "../main.nf" - process "BCFTOOLS_INDEX" - - tag "modules" - tag "modules_nfcore" - tag "bcftools" - tag "bcftools/index" - - test("sarscov2 - vcf - csi") { - - when { - process { - """ - input[0] = [ - [ id:'test' ], // meta map - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true) - ] - """ - } - } - - then { - assertAll( - { assert process.success }, - { assert snapshot( - process.out.csi.collect { it.collect { it instanceof Map ? it : file(it).name } }, - process.out.versions).match() - } - ) - } - - } - - test("sarscov2 - vcf - tbi") { - - config "./nextflow.config" - - when { - process { - """ - input[0] = [ - [ id:'test' ], // meta map - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true) - ] - """ - } - } - - then { - assertAll( - { assert process.success }, - { assert snapshot( - process.out.tbi.collect { it.collect { it instanceof Map ? it : file(it).name } }, - process.out.versions).match() - } - ) - } - - } - - test("sarscov2 - vcf - csi - stub") { - - options "-stub" - - when { - process { - """ - input[0] = [ - [ id:'test' ], // meta map - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true) - ] - """ - } - } - - then { - assertAll( - { assert process.success }, - { assert snapshot(process.out).match() } - ) - } - - } - - test("sarscov2 - vcf - tbi - stub") { - - config "./nextflow.config" - options "-stub" - - when { - process { - """ - input[0] = [ - [ id:'test' ], // meta map - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true) - ] - """ - } - } - - then { - assertAll( - { assert process.success }, - { assert snapshot(process.out).match() } - ) - } - - } - -} \ No newline at end of file diff --git a/modules/nf-core/bcftools/index/tests/main.nf.test.snap b/modules/nf-core/bcftools/index/tests/main.nf.test.snap deleted file mode 100644 index b6f7b700..00000000 --- a/modules/nf-core/bcftools/index/tests/main.nf.test.snap +++ /dev/null @@ -1,120 +0,0 @@ -{ - "sarscov2 - vcf - csi - stub": { - "content": [ - { - "0": [ - [ - { - "id": "test" - }, - "test.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "1": [ - - ], - "2": [ - "versions.yml:md5,b4ea0f633dba7f5992fbf41b518f98e9" - ], - "csi": [ - [ - { - "id": "test" - }, - "test.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "tbi": [ - - ], - "versions": [ - "versions.yml:md5,b4ea0f633dba7f5992fbf41b518f98e9" - ] - } - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-06-03T11:43:09.347303629" - }, - "sarscov2 - vcf - tbi": { - "content": [ - [ - [ - { - "id": "test" - }, - "test.vcf.gz.tbi" - ] - ], - [ - "versions.yml:md5,b4ea0f633dba7f5992fbf41b518f98e9" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-06-03T11:42:46.38669168" - }, - "sarscov2 - vcf - tbi - stub": { - "content": [ - { - "0": [ - - ], - "1": [ - [ - { - "id": "test" - }, - "test.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "2": [ - "versions.yml:md5,b4ea0f633dba7f5992fbf41b518f98e9" - ], - "csi": [ - - ], - "tbi": [ - [ - { - "id": "test" - }, - "test.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "versions": [ - "versions.yml:md5,b4ea0f633dba7f5992fbf41b518f98e9" - ] - } - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-06-03T11:43:32.494612317" - }, - "sarscov2 - vcf - csi": { - "content": [ - [ - [ - { - "id": "test" - }, - "test.vcf.gz.csi" - ] - ], - [ - "versions.yml:md5,b4ea0f633dba7f5992fbf41b518f98e9" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-06-03T11:42:33.652109509" - } -} \ No newline at end of file diff --git a/modules/nf-core/bcftools/index/tests/nextflow.config b/modules/nf-core/bcftools/index/tests/nextflow.config deleted file mode 100644 index db83f7e5..00000000 --- a/modules/nf-core/bcftools/index/tests/nextflow.config +++ /dev/null @@ -1,3 +0,0 @@ -process { - ext.args = '--tbi' -} diff --git a/modules/nf-core/bcftools/index/tests/tags.yml b/modules/nf-core/bcftools/index/tests/tags.yml deleted file mode 100644 index b4c349be..00000000 --- a/modules/nf-core/bcftools/index/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -bcftools/index: - - "modules/nf-core/bcftools/index/**" diff --git a/subworkflows/local/call_repeat_expansions/main.nf b/subworkflows/local/call_repeat_expansions/main.nf index ff745b25..36d55256 100644 --- a/subworkflows/local/call_repeat_expansions/main.nf +++ b/subworkflows/local/call_repeat_expansions/main.nf @@ -2,7 +2,6 @@ include { TRGT } from '../../../modules/local/ include { SAMTOOLS_INDEX as SAMTOOLS_INDEX_TRGT } from '../../../modules/nf-core/samtools/index/main' include { SAMTOOLS_SORT as SAMTOOLS_SORT_TRGT } from '../../../modules/nf-core/samtools/sort/main' include { BCFTOOLS_SORT as BCFTOOLS_SORT_TRGT } from '../../../modules/nf-core/bcftools/sort/main' -include { BCFTOOLS_INDEX as BCFTOOLS_INDEX_MERGE } from '../../../modules/nf-core/bcftools/index/main' include { BCFTOOLS_MERGE } from '../../../modules/nf-core/bcftools/merge/main' workflow CALL_REPEAT_EXPANSIONS { @@ -39,14 +38,12 @@ workflow CALL_REPEAT_EXPANSIONS { BCFTOOLS_MERGE ( ch_bcftools_merge_in, ch_fasta, ch_fai, [[],[]] ) - BCFTOOLS_INDEX_MERGE ( BCFTOOLS_MERGE.out.vcf ) ch_versions = ch_versions.mix(TRGT.out.versions) ch_versions = ch_versions.mix(SAMTOOLS_SORT_TRGT.out.versions) ch_versions = ch_versions.mix(SAMTOOLS_INDEX_TRGT.out.versions) ch_versions = ch_versions.mix(BCFTOOLS_SORT_TRGT.out.versions) ch_versions = ch_versions.mix(BCFTOOLS_MERGE.out.versions) - ch_versions = ch_versions.mix(BCFTOOLS_INDEX_MERGE.out.versions) emit: vcf = BCFTOOLS_SORT_TRGT.out.vcf // channel: [ val(meta), path(vcf) ] From 98ec9a1b1593ef7b2808fb6c267f9a2c35f6a44e Mon Sep 17 00:00:00 2001 From: Daniel Schmitz Date: Tue, 8 Oct 2024 11:32:57 +0200 Subject: [PATCH 029/106] Updated Whatshap to 2.3 (#416) * Updated Whatshap to 2.3 * Updated Changelog * Updated Config * Update CHANGELOG.md to include use-supplementary flag Co-authored-by: Felix Lenner <52530259+fellen31@users.noreply.github.com> --------- Co-authored-by: Felix Lenner <52530259+fellen31@users.noreply.github.com> --- CHANGELOG.md | 2 ++ conf/modules/phasing.config | 3 ++- modules/local/whatshap/haplotag/main.nf | 6 +++--- modules/local/whatshap/phase/main.nf | 6 ++++-- modules/local/whatshap/stats/main.nf | 6 ++++-- 5 files changed, 15 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0491679b..92823f96 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -45,6 +45,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#407](https://github.com/genomic-medicine-sweden/nallo/pull/407) - Changed echtvar example file in docs - [#406](https://github.com/genomic-medicine-sweden/nallo/issues/406) - Updated genmod to version 3.8.3 - [#411](https://github.com/genomic-medicine-sweden/nallo/pull/411) - Updated longphase module to most recent version. ([#409](https://github.com/genomic-medicine-sweden/nallo/issues/409)). +- [#416](https://github.com/genomic-medicine-sweden/nallo/pull/416) - Updated WhatsHap to 2.3 and added the `--use-supplementary` flag to use supplementary reads for phasing by default. Changed modules to use biocontainers instead of custom containers. ([#296](https://github.com/genomic-medicine-sweden/nallo/issues/296)) ### `Removed` @@ -84,6 +85,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 | severus | | 1.1 | | longphase  |   | 1.7.3   | | genmod | 3.8.2 | 3.8.3 | +| WhatsHap | 2.2 | 2.3 | > [!NOTE] > Version has been updated if both old and new version information is present. diff --git a/conf/modules/phasing.config b/conf/modules/phasing.config index 136bb6a4..80cec5d5 100644 --- a/conf/modules/phasing.config +++ b/conf/modules/phasing.config @@ -73,7 +73,8 @@ process { ext.prefix = { "${meta.id}_phased" } ext.args = [ '--ignore-read-groups', - '--indels' + '--indels', + '--use-supplementary' ].join(' ') publishDir = [ path: { "${params.outdir}/phased_variants/${meta.id}" }, diff --git a/modules/local/whatshap/haplotag/main.nf b/modules/local/whatshap/haplotag/main.nf index d4cce45e..9df8d450 100644 --- a/modules/local/whatshap/haplotag/main.nf +++ b/modules/local/whatshap/haplotag/main.nf @@ -2,10 +2,10 @@ process WHATSHAP_HAPLOTAG { tag "$meta.id" label 'process_medium' - conda "bioconda::whatshap=2.2" + conda "bioconda::whatshap=2.3" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/whatshap:2.2--py39h1f90b4d_1' : - 'quay.io/biocontainers/whatshap:2.2--py39h1f90b4d_1' }" + 'https://depot.galaxyproject.org/singularity/whatshap:2.3--py38h2494328_0' : + 'quay.io/biocontainers/whatshap:2.3--py38h2494328_0' }" input: tuple val(meta), path(vcf), path(tbi), path(bam), path(bai) diff --git a/modules/local/whatshap/phase/main.nf b/modules/local/whatshap/phase/main.nf index 158046f1..6fd7d674 100644 --- a/modules/local/whatshap/phase/main.nf +++ b/modules/local/whatshap/phase/main.nf @@ -2,8 +2,10 @@ process WHATSHAP_PHASE { tag "$meta.id" label 'process_low' - conda "bioconda::whatshap=2.2 bioconda::tabix=1.11" - container "docker.io/fellen31/whatshap-tabix:2.2" + conda "bioconda::whatshap=2.3" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/whatshap:2.3--py38h2494328_0' : + 'quay.io/biocontainers/whatshap:2.3--py38h2494328_0' }" input: tuple val(meta), path(vcf), path(bam), path(bai) diff --git a/modules/local/whatshap/stats/main.nf b/modules/local/whatshap/stats/main.nf index 398f3013..7e2bb2be 100644 --- a/modules/local/whatshap/stats/main.nf +++ b/modules/local/whatshap/stats/main.nf @@ -2,8 +2,10 @@ process WHATSHAP_STATS { tag "$meta.id" label 'process_single' - conda "bioconda::whatshap=2.2 bioconda::tabix=1.11" - container "docker.io/fellen31/whatshap-tabix:2.2" + conda "bioconda::whatshap=2.3" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/whatshap:2.3--py38h2494328_0' : + 'quay.io/biocontainers/whatshap:2.3--py38h2494328_0' }" input: tuple val(meta), path(vcf), path(tbi) From 7d187a6a54b6e4852d73ddd1cb7ac2c70eec5d15 Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Tue, 8 Oct 2024 14:20:13 +0200 Subject: [PATCH 030/106] Add found_in tag to SV-calling (#417) --- CHANGELOG.md | 6 +- conf/modules/short_variant_calling.config | 10 ++ .../local/short_variant_calling/main.nf | 15 +- .../tests/main.nf.test.snap | 132 +++++++++++------- .../tests/nextflow.config | 21 ++- .../local/snv_annotation/tests/main.nf.test | 4 +- .../snv_annotation/tests/main.nf.test.snap | 115 +-------------- .../snv_annotation/tests/nextflow.config | 4 +- 8 files changed, 134 insertions(+), 173 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 92823f96..46f982c5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,7 +19,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#388](https://github.com/genomic-medicine-sweden/nallo/pull/388) - Added longphase as the default phaser - [#388](https://github.com/genomic-medicine-sweden/nallo/pull/388) - Added single-sample tbi output to the short variant calling subworkflow - [#393](https://github.com/genomic-medicine-sweden/nallo/pull/393) - Added a new `--minimap2_read_mapping_preset` parameter -- [#403](https://github.com/genomic-medicine-sweden/nallo/pull/403) - Added `FOUND_IN=hificnv` tags to CNV output +- [#403](https://github.com/genomic-medicine-sweden/nallo/pull/403) - Added `FOUND_IN=hificnv` tags to CNV calling output +- [#417](https://github.com/genomic-medicine-sweden/nallo/pull/417) - Added `FOUND_IN=deepvariant` tags to SNV calling output ### `Changed` @@ -43,9 +44,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#403](https://github.com/genomic-medicine-sweden/nallo/pull/403) - Revert [#404](https://github.com/genomic-medicine-sweden/nallo/pull/404) - [#404](https://github.com/genomic-medicine-sweden/nallo/pull/404) - Changed to only run nf-tests where files have changes compared to the base branch - [#407](https://github.com/genomic-medicine-sweden/nallo/pull/407) - Changed echtvar example file in docs -- [#406](https://github.com/genomic-medicine-sweden/nallo/issues/406) - Updated genmod to version 3.8.3 +- [#410](https://github.com/genomic-medicine-sweden/nallo/pull/410) - Updated genmod to version 3.8.3 - [#411](https://github.com/genomic-medicine-sweden/nallo/pull/411) - Updated longphase module to most recent version. ([#409](https://github.com/genomic-medicine-sweden/nallo/issues/409)). - [#416](https://github.com/genomic-medicine-sweden/nallo/pull/416) - Updated WhatsHap to 2.3 and added the `--use-supplementary` flag to use supplementary reads for phasing by default. Changed modules to use biocontainers instead of custom containers. ([#296](https://github.com/genomic-medicine-sweden/nallo/issues/296)) +- [#417](https://github.com/genomic-medicine-sweden/nallo/pull/417) - Updated SNV annotation tests to use correct configuration, and snapshot the md5sum, and summary of the variants ### `Removed` diff --git a/conf/modules/short_variant_calling.config b/conf/modules/short_variant_calling.config index 4c6369b4..e767fdc1 100644 --- a/conf/modules/short_variant_calling.config +++ b/conf/modules/short_variant_calling.config @@ -24,6 +24,16 @@ process { ] } + withName: '.*:SHORT_VARIANT_CALLING:ADD_FOUND_IN_TAG' { + ext.prefix = { "${meta.id}_found_in" } + ext.args = '--no-version' + ext.args2 = [ + '--output-type b', + '--no-version' + ].join(' ') + } + + withName: '.*:SHORT_VARIANT_CALLING:DEEPVARIANT' { ext.prefix = { intervals ? "${meta.id}_${intervals}_deepvariant" : "${meta.id}_deepvariant" } ext.args = { [ diff --git a/subworkflows/local/short_variant_calling/main.nf b/subworkflows/local/short_variant_calling/main.nf index 18be861b..d6cc9342 100644 --- a/subworkflows/local/short_variant_calling/main.nf +++ b/subworkflows/local/short_variant_calling/main.nf @@ -1,6 +1,7 @@ // // Workflow to call and merge SNVs // +include { ADD_FOUND_IN_TAG } from '../../../modules/local/add_found_in_tag/main' include { BCFTOOLS_CONCAT } from '../../../modules/nf-core/bcftools/concat/main' include { BCFTOOLS_FILLTAGS } from '../../../modules/local/bcftools/filltags/main' include { BCFTOOLS_NORM as BCFTOOLS_NORM_MULTISAMPLE } from '../../../modules/nf-core/bcftools/norm/main' @@ -84,12 +85,18 @@ workflow SHORT_VARIANT_CALLING { BCFTOOLS_FILLTAGS ( GLNEXUS.out.bcf ) ch_versions = ch_versions.mix(BCFTOOLS_FILLTAGS.out.versions) - BCFTOOLS_FILLTAGS.out.vcf - .map { meta, vcf -> [ meta, vcf, [] ] } - .set { bcftools_norm_in } + // Annotate with FOUND_IN tag + ADD_FOUND_IN_TAG ( + BCFTOOLS_FILLTAGS.out.vcf.map { meta, vcf -> [ meta, vcf, [] ] }, + "deepvariant" + ) + ch_versions = ch_versions.mix(ADD_FOUND_IN_TAG.out.versions) // Decompose and normalize variants - BCFTOOLS_NORM_MULTISAMPLE ( bcftools_norm_in, ch_fasta ) + BCFTOOLS_NORM_MULTISAMPLE ( + ADD_FOUND_IN_TAG.out.vcf.map { meta, vcf -> [ meta, vcf, [] ] }, + ch_fasta + ) ch_versions = ch_versions.mix(BCFTOOLS_NORM_MULTISAMPLE.out.versions) emit: diff --git a/subworkflows/local/short_variant_calling/tests/main.nf.test.snap b/subworkflows/local/short_variant_calling/tests/main.nf.test.snap index 9d6ea38e..49a2ada5 100644 --- a/subworkflows/local/short_variant_calling/tests/main.nf.test.snap +++ b/subworkflows/local/short_variant_calling/tests/main.nf.test.snap @@ -27,7 +27,7 @@ "project": null, "contains_affected": false }, - "genome.bed_norm_multisample.vcf.gz:md5,56d662f0a527803ae72e40625c01014b" + "genome.bed_norm_multisample.vcf.gz:md5,5d1828b40d43a2a18e30b1dffffd99b0" ] ], "3": [ @@ -37,12 +37,13 @@ "project": null, "contains_affected": false }, - "genome.bed_norm_multisample.vcf.gz.csi:md5,53e24fb59fef3bee6291c474e20200b9" + "genome.bed_norm_multisample.vcf.gz.csi:md5,83a0cecdb72c82ae0f5fc56f1426f5c0" ] ], "4": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", + "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", @@ -55,7 +56,7 @@ "project": null, "contains_affected": false }, - "genome.bed_norm_multisample.vcf.gz:md5,56d662f0a527803ae72e40625c01014b" + "genome.bed_norm_multisample.vcf.gz:md5,5d1828b40d43a2a18e30b1dffffd99b0" ] ], "combined_csi": [ @@ -65,7 +66,7 @@ "project": null, "contains_affected": false }, - "genome.bed_norm_multisample.vcf.gz.csi:md5,53e24fb59fef3bee6291c474e20200b9" + "genome.bed_norm_multisample.vcf.gz.csi:md5,83a0cecdb72c82ae0f5fc56f1426f5c0" ] ], "snp_calls_tbi": [ @@ -89,6 +90,7 @@ "versions": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", + "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", @@ -100,7 +102,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-09-20T09:13:58.152956123" + "timestamp": "2024-10-08T13:02:44.856891805" }, "1 sample - 2 bed, fasta, fai, bed, [] - stub": { "content": [ @@ -164,6 +166,8 @@ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", + "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", + "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", @@ -230,6 +234,8 @@ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", + "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", + "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", @@ -243,7 +249,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-09-20T09:16:49.165250859" + "timestamp": "2024-10-08T11:10:32.273873705" }, "1 sample - 1 bed, fasta, fai, bed, []": { "content": [ @@ -273,7 +279,7 @@ "project": null, "contains_affected": false }, - "genome.bed_norm_multisample.vcf.gz:md5,56d662f0a527803ae72e40625c01014b" + "genome.bed_norm_multisample.vcf.gz:md5,5d1828b40d43a2a18e30b1dffffd99b0" ] ], "3": [ @@ -283,12 +289,13 @@ "project": null, "contains_affected": false }, - "genome.bed_norm_multisample.vcf.gz.csi:md5,53e24fb59fef3bee6291c474e20200b9" + "genome.bed_norm_multisample.vcf.gz.csi:md5,83a0cecdb72c82ae0f5fc56f1426f5c0" ] ], "4": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", + "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", @@ -301,7 +308,7 @@ "project": null, "contains_affected": false }, - "genome.bed_norm_multisample.vcf.gz:md5,56d662f0a527803ae72e40625c01014b" + "genome.bed_norm_multisample.vcf.gz:md5,5d1828b40d43a2a18e30b1dffffd99b0" ] ], "combined_csi": [ @@ -311,7 +318,7 @@ "project": null, "contains_affected": false }, - "genome.bed_norm_multisample.vcf.gz.csi:md5,53e24fb59fef3bee6291c474e20200b9" + "genome.bed_norm_multisample.vcf.gz.csi:md5,83a0cecdb72c82ae0f5fc56f1426f5c0" ] ], "snp_calls_tbi": [ @@ -335,6 +342,7 @@ "versions": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", + "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", @@ -346,7 +354,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-09-20T09:14:27.319216407" + "timestamp": "2024-10-08T13:03:15.564996428" }, "2 samples - 2 bed, fasta, fai, bed, par_bed": { "content": [ @@ -390,7 +398,7 @@ "project": null, "contains_affected": false }, - "genome.bed_norm_multisample.vcf.gz:md5,ec12cca4d6849a5f47823331c4b9a8f3" + "genome.bed_norm_multisample.vcf.gz:md5,ce3866081a0bb6d9bd0df30dd3361213" ], [ { @@ -398,7 +406,7 @@ "project": null, "contains_affected": false }, - "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,ec12cca4d6849a5f47823331c4b9a8f3" + "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,ce3866081a0bb6d9bd0df30dd3361213" ] ], "3": [ @@ -408,7 +416,7 @@ "project": null, "contains_affected": false }, - "genome.bed_norm_multisample.vcf.gz.csi:md5,12d9802de9b9e071408e526930050626" + "genome.bed_norm_multisample.vcf.gz.csi:md5,95eecbb89b9a60ecebc292e36ab4ebcf" ], [ { @@ -416,7 +424,7 @@ "project": null, "contains_affected": false }, - "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,12d9802de9b9e071408e526930050626" + "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,95eecbb89b9a60ecebc292e36ab4ebcf" ] ], "4": [ @@ -426,6 +434,8 @@ "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", + "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", + "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", @@ -442,7 +452,7 @@ "project": null, "contains_affected": false }, - "genome.bed_norm_multisample.vcf.gz:md5,ec12cca4d6849a5f47823331c4b9a8f3" + "genome.bed_norm_multisample.vcf.gz:md5,ce3866081a0bb6d9bd0df30dd3361213" ], [ { @@ -450,7 +460,7 @@ "project": null, "contains_affected": false }, - "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,ec12cca4d6849a5f47823331c4b9a8f3" + "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,ce3866081a0bb6d9bd0df30dd3361213" ] ], "combined_csi": [ @@ -460,7 +470,7 @@ "project": null, "contains_affected": false }, - "genome.bed_norm_multisample.vcf.gz.csi:md5,12d9802de9b9e071408e526930050626" + "genome.bed_norm_multisample.vcf.gz.csi:md5,95eecbb89b9a60ecebc292e36ab4ebcf" ], [ { @@ -468,7 +478,7 @@ "project": null, "contains_affected": false }, - "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,12d9802de9b9e071408e526930050626" + "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,95eecbb89b9a60ecebc292e36ab4ebcf" ] ], "snp_calls_tbi": [ @@ -510,6 +520,8 @@ "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", + "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", + "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", @@ -525,7 +537,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-09-20T09:16:06.366289968" + "timestamp": "2024-10-08T13:04:56.502337737" }, "2 samples - 2 bed, fasta, fai, bed, [] - stub": { "content": [ @@ -605,6 +617,8 @@ "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", + "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", + "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", @@ -689,6 +703,8 @@ "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", + "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", + "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", @@ -704,7 +720,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-09-20T09:17:01.14095623" + "timestamp": "2024-10-08T11:10:45.14685419" }, "2 samples - 2 bed, fasta, fai, bed, par_bed - stub": { "content": [ @@ -784,6 +800,8 @@ "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", + "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", + "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", @@ -868,6 +886,8 @@ "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", + "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", + "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", @@ -883,7 +903,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-09-20T09:17:13.216410221" + "timestamp": "2024-10-08T11:10:58.271571777" }, "1 sample - 1 bed, fasta, fai, bed, [] - stub": { "content": [ @@ -929,6 +949,7 @@ "4": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", + "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", @@ -975,6 +996,7 @@ "versions": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", + "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", @@ -986,7 +1008,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-09-20T09:16:38.070360001" + "timestamp": "2024-10-08T11:10:20.582551857" }, "1 sample - no bed, fasta, fai, [], []": { "content": [ @@ -1018,7 +1040,7 @@ "project": null, "contains_affected": false }, - "[]_norm_multisample.vcf.gz:md5,56d662f0a527803ae72e40625c01014b" + "[]_norm_multisample.vcf.gz:md5,5d1828b40d43a2a18e30b1dffffd99b0" ] ], "3": [ @@ -1030,12 +1052,13 @@ "project": null, "contains_affected": false }, - "[]_norm_multisample.vcf.gz.csi:md5,53e24fb59fef3bee6291c474e20200b9" + "[]_norm_multisample.vcf.gz.csi:md5,83a0cecdb72c82ae0f5fc56f1426f5c0" ] ], "4": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", + "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", @@ -1050,7 +1073,7 @@ "project": null, "contains_affected": false }, - "[]_norm_multisample.vcf.gz:md5,56d662f0a527803ae72e40625c01014b" + "[]_norm_multisample.vcf.gz:md5,5d1828b40d43a2a18e30b1dffffd99b0" ] ], "combined_csi": [ @@ -1062,7 +1085,7 @@ "project": null, "contains_affected": false }, - "[]_norm_multisample.vcf.gz.csi:md5,53e24fb59fef3bee6291c474e20200b9" + "[]_norm_multisample.vcf.gz.csi:md5,83a0cecdb72c82ae0f5fc56f1426f5c0" ] ], "snp_calls_tbi": [ @@ -1086,6 +1109,7 @@ "versions": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", + "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", @@ -1097,7 +1121,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-09-20T09:13:29.038685117" + "timestamp": "2024-10-08T13:02:14.428633443" }, "1 sample - 2 bed, fasta, fai, bed, []": { "content": [ @@ -1127,7 +1151,7 @@ "project": null, "contains_affected": false }, - "genome.bed_norm_multisample.vcf.gz:md5,56d662f0a527803ae72e40625c01014b" + "genome.bed_norm_multisample.vcf.gz:md5,5d1828b40d43a2a18e30b1dffffd99b0" ], [ { @@ -1135,7 +1159,7 @@ "project": null, "contains_affected": false }, - "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,56d662f0a527803ae72e40625c01014b" + "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,5d1828b40d43a2a18e30b1dffffd99b0" ] ], "3": [ @@ -1145,7 +1169,7 @@ "project": null, "contains_affected": false }, - "genome.bed_norm_multisample.vcf.gz.csi:md5,53e24fb59fef3bee6291c474e20200b9" + "genome.bed_norm_multisample.vcf.gz.csi:md5,83a0cecdb72c82ae0f5fc56f1426f5c0" ], [ { @@ -1153,7 +1177,7 @@ "project": null, "contains_affected": false }, - "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,53e24fb59fef3bee6291c474e20200b9" + "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,83a0cecdb72c82ae0f5fc56f1426f5c0" ] ], "4": [ @@ -1161,6 +1185,8 @@ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", + "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", + "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", @@ -1175,7 +1201,7 @@ "project": null, "contains_affected": false }, - "genome.bed_norm_multisample.vcf.gz:md5,56d662f0a527803ae72e40625c01014b" + "genome.bed_norm_multisample.vcf.gz:md5,5d1828b40d43a2a18e30b1dffffd99b0" ], [ { @@ -1183,7 +1209,7 @@ "project": null, "contains_affected": false }, - "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,56d662f0a527803ae72e40625c01014b" + "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,5d1828b40d43a2a18e30b1dffffd99b0" ] ], "combined_csi": [ @@ -1193,7 +1219,7 @@ "project": null, "contains_affected": false }, - "genome.bed_norm_multisample.vcf.gz.csi:md5,53e24fb59fef3bee6291c474e20200b9" + "genome.bed_norm_multisample.vcf.gz.csi:md5,83a0cecdb72c82ae0f5fc56f1426f5c0" ], [ { @@ -1201,7 +1227,7 @@ "project": null, "contains_affected": false }, - "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,53e24fb59fef3bee6291c474e20200b9" + "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,83a0cecdb72c82ae0f5fc56f1426f5c0" ] ], "snp_calls_tbi": [ @@ -1227,6 +1253,8 @@ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", + "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", + "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", @@ -1240,7 +1268,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-09-20T09:14:58.277461525" + "timestamp": "2024-10-08T13:03:47.115482891" }, "2 samples - 2 bed, fasta, fai, bed, []": { "content": [ @@ -1284,7 +1312,7 @@ "project": null, "contains_affected": false }, - "genome.bed_norm_multisample.vcf.gz:md5,ec12cca4d6849a5f47823331c4b9a8f3" + "genome.bed_norm_multisample.vcf.gz:md5,ce3866081a0bb6d9bd0df30dd3361213" ], [ { @@ -1292,7 +1320,7 @@ "project": null, "contains_affected": false }, - "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,ec12cca4d6849a5f47823331c4b9a8f3" + "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,ce3866081a0bb6d9bd0df30dd3361213" ] ], "3": [ @@ -1302,7 +1330,7 @@ "project": null, "contains_affected": false }, - "genome.bed_norm_multisample.vcf.gz.csi:md5,12d9802de9b9e071408e526930050626" + "genome.bed_norm_multisample.vcf.gz.csi:md5,95eecbb89b9a60ecebc292e36ab4ebcf" ], [ { @@ -1310,7 +1338,7 @@ "project": null, "contains_affected": false }, - "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,12d9802de9b9e071408e526930050626" + "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,95eecbb89b9a60ecebc292e36ab4ebcf" ] ], "4": [ @@ -1320,6 +1348,8 @@ "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", + "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", + "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", @@ -1336,7 +1366,7 @@ "project": null, "contains_affected": false }, - "genome.bed_norm_multisample.vcf.gz:md5,ec12cca4d6849a5f47823331c4b9a8f3" + "genome.bed_norm_multisample.vcf.gz:md5,ce3866081a0bb6d9bd0df30dd3361213" ], [ { @@ -1344,7 +1374,7 @@ "project": null, "contains_affected": false }, - "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,ec12cca4d6849a5f47823331c4b9a8f3" + "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,ce3866081a0bb6d9bd0df30dd3361213" ] ], "combined_csi": [ @@ -1354,7 +1384,7 @@ "project": null, "contains_affected": false }, - "genome.bed_norm_multisample.vcf.gz.csi:md5,12d9802de9b9e071408e526930050626" + "genome.bed_norm_multisample.vcf.gz.csi:md5,95eecbb89b9a60ecebc292e36ab4ebcf" ], [ { @@ -1362,7 +1392,7 @@ "project": null, "contains_affected": false }, - "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,12d9802de9b9e071408e526930050626" + "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,95eecbb89b9a60ecebc292e36ab4ebcf" ] ], "snp_calls_tbi": [ @@ -1404,6 +1434,8 @@ "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", + "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", + "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", @@ -1419,7 +1451,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-09-20T09:15:32.21563308" + "timestamp": "2024-10-08T13:04:21.670883764" }, "1 sample - no bed, fasta, fai, [], [] - stub": { "content": [ @@ -1469,6 +1501,7 @@ "4": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", + "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", @@ -1519,6 +1552,7 @@ "versions": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", + "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", @@ -1530,7 +1564,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-09-20T09:16:16.776853798" + "timestamp": "2024-10-08T11:09:57.170768741" }, "1 sample - 1 bed, fasta, fai, [], [] - stub": { "content": [ @@ -1576,6 +1610,7 @@ "4": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", + "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", @@ -1622,6 +1657,7 @@ "versions": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", + "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", @@ -1633,6 +1669,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-09-20T09:16:27.732828098" + "timestamp": "2024-10-08T11:10:09.046208933" } } diff --git a/subworkflows/local/short_variant_calling/tests/nextflow.config b/subworkflows/local/short_variant_calling/tests/nextflow.config index e0f992af..613c9e07 100644 --- a/subworkflows/local/short_variant_calling/tests/nextflow.config +++ b/subworkflows/local/short_variant_calling/tests/nextflow.config @@ -1,5 +1,5 @@ process { - withName: 'DEEPVARIANT' { + withName: 'SHORT_VARIANT_CALLING:DEEPVARIANT' { ext.prefix = { intervals ? "${meta.id}_${intervals}_deepvariant" : "${meta.id}_deepvariant" } ext.args = { [ '--model_type WGS', @@ -8,11 +8,11 @@ process { ].join(' ') } } - withName: 'GLNEXUS' { + withName: 'SHORT_VARIANT_CALLING:GLNEXUS' { ext.args = '--config DeepVariant_unfiltered' } - withName: 'BCFTOOLS_CONCAT' { + withName: 'SHORT_VARIANT_CALLING:BCFTOOLS_CONCAT' { ext.prefix = { "${meta.id}_concat" } ext.args = [ '--no-version', @@ -20,7 +20,7 @@ process { ].join(' ') } - withName: 'BCFTOOLS_NORM_MULTISAMPLE' { + withName: 'SHORT_VARIANT_CALLING:BCFTOOLS_NORM_MULTISAMPLE' { ext.prefix = { "${meta.id}_norm_multisample" } ext.args = [ '--no-version', @@ -31,7 +31,7 @@ process { ].join(' ') } - withName: 'BCFTOOLS_NORM_SINGLESAMPLE' { + withName: 'SHORT_VARIANT_CALLING:BCFTOOLS_NORM_SINGLESAMPLE' { ext.prefix = { "${meta.id}_norm_singlesample" } ext.args = [ '--no-version', @@ -42,7 +42,7 @@ process { ].join(' ') } - withName: 'BCFTOOLS_FILLTAGS' { + withName: 'SHORT_VARIANT_CALLING:BCFTOOLS_FILLTAGS' { ext.prefix = { "${meta.id}_ac" } ext.args = [ '--no-version', @@ -50,4 +50,13 @@ process { ].join(' ') } + withName: 'SHORT_VARIANT_CALLING:ADD_FOUND_IN_TAG' { + ext.prefix = { "${meta.id}_found_in" } + ext.args = '--no-version' + ext.args2 = [ + '--output-type z', + '--no-version' + ].join(' ') + } + } diff --git a/subworkflows/local/snv_annotation/tests/main.nf.test b/subworkflows/local/snv_annotation/tests/main.nf.test index b34dc961..3164b44a 100644 --- a/subworkflows/local/snv_annotation/tests/main.nf.test +++ b/subworkflows/local/snv_annotation/tests/main.nf.test @@ -107,8 +107,8 @@ nextflow_workflow { { assert snapshot( workflow.out.versions, file(workflow.out.tbi.get(0).get(1)).name, - path(workflow.out.vcf.get(0).get(1)).linesGzip[48..118], // Stable - path(workflow.out.vcf.get(0).get(1)).linesGzip[121..150] // Stable + path(workflow.out.vcf.get(0).get(1)).vcf.variantsMD5, + path(workflow.out.vcf.get(0).get(1)).vcf.summary, ).match() } ) } diff --git a/subworkflows/local/snv_annotation/tests/main.nf.test.snap b/subworkflows/local/snv_annotation/tests/main.nf.test.snap index 2b09646f..43fa52a6 100644 --- a/subworkflows/local/snv_annotation/tests/main.nf.test.snap +++ b/subworkflows/local/snv_annotation/tests/main.nf.test.snap @@ -43,116 +43,13 @@ "versions.yml:md5,c0e55e36a31ed71acf25702b7d059533" ], "test_data.bed.vcf.gz.tbi", - [ - "##INFO=", - "##VEP-command-line='vep --assembly GRCh38 --cache --cache_version 110 --compress_output bgzip --database 0 --dir_cache [PATH]/vep_cache --fasta hg38.test.fa --fork 2 --input_file test_data.bed_filltags_anno.vcf.gz --offline --output_file test_data.bed.vcf.gz --vcf'", - "#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO\tFORMAT\ttest", - "chr16\t63972\tchr16_63972_T_C\tT\tC\t20\t.\tAF=1;AQ=20;AC=2;cadd_raw=-2;cadd_phred=-2;CSQ=C|intron_variant|MODIFIER|RHBDF1|ENSG00000007384|Transcript|ENST00000262316|protein_coding||3/17||||||||||-1||HGNC|HGNC:20561,C|intron_variant&NMD_transcript_variant|MODIFIER|RHBDF1|ENSG00000007384|Transcript|ENST00000417043|nonsense_mediated_decay||2/3||||||||||-1||HGNC|HGNC:20561,C|intron_variant|MODIFIER|RHBDF1|ENSG00000007384|Transcript|ENST00000419764|protein_coding||3/3||||||||||-1|cds_end_NF|HGNC|HGNC:20561,C|intron_variant&NMD_transcript_variant|MODIFIER|RHBDF1|ENSG00000007384|Transcript|ENST00000428730|nonsense_mediated_decay||2/16||||||||||-1||HGNC|HGNC:20561,C|upstream_gene_variant|MODIFIER|RHBDF1|ENSG00000007384|Transcript|ENST00000448893|protein_coding|||||||||||4210|-1|cds_start_NF|HGNC|HGNC:20561,C|intron_variant|MODIFIER|RHBDF1|ENSG00000007384|Transcript|ENST00000450643|protein_coding||3/4||||||||||-1|cds_end_NF|HGNC|HGNC:20561,C|downstream_gene_variant|MODIFIER|RHBDF1|ENSG00000007384|Transcript|ENST00000472390|retained_intron|||||||||||580|-1||HGNC|HGNC:20561,C|upstream_gene_variant|MODIFIER|RHBDF1|ENSG00000007384|Transcript|ENST00000482904|retained_intron|||||||||||1766|-1||HGNC|HGNC:20561,C|upstream_gene_variant|MODIFIER|RHBDF1|ENSG00000007384|Transcript|ENST00000486045|retained_intron|||||||||||3779|-1||HGNC|HGNC:20561,C|non_coding_transcript_exon_variant|MODIFIER|RHBDF1|ENSG00000007384|Transcript|ENST00000487201|retained_intron|2/3||||1177|||||||-1||HGNC|HGNC:20561,C|upstream_gene_variant|MODIFIER|RHBDF1|ENSG00000007384|Transcript|ENST00000493647|retained_intron|||||||||||3292|-1||HGNC|HGNC:20561\tGT:DP:AD:GQ:PL:RNC\t1/1:13:0,13:11:20,11,0:..", - "chr16\t86889\tchr16_86889_T_C\tT\tC\t21\t.\tAF=1;AQ=21;AC=2;cadd_raw=-2;cadd_phred=-2;CSQ=C|downstream_gene_variant|MODIFIER|MPG|ENSG00000103152|Transcript|ENST00000219431|protein_coding|||||||||||1047|1||HGNC|HGNC:7211,C|downstream_gene_variant|MODIFIER|MPG|ENSG00000103152|Transcript|ENST00000356432|protein_coding|||||||||||1043|1||HGNC|HGNC:7211,C|downstream_gene_variant|MODIFIER|MPG|ENSG00000103152|Transcript|ENST00000397817|protein_coding|||||||||||1038|1||HGNC|HGNC:7211,C|intron_variant|MODIFIER|NPRL3|ENSG00000103148|Transcript|ENST00000399953|protein_coding||11/11||||||||||-1||HGNC|HGNC:14124,C|downstream_gene_variant|MODIFIER|MPG|ENSG00000103152|Transcript|ENST00000436333|protein_coding|||||||||||1205|1|cds_end_NF|HGNC|HGNC:7211,C|upstream_gene_variant|MODIFIER||ENSG00000269482|Transcript|ENST00000601483|lncRNA|||||||||||3742|1|||,C|intron_variant&non_coding_transcript_variant|MODIFIER|NPRL3|ENSG00000103148|Transcript|ENST00000610509|retained_intron||1/2||||||||||-1||HGNC|HGNC:14124,C|intron_variant|MODIFIER|NPRL3|ENSG00000103148|Transcript|ENST00000611875|protein_coding||13/13||||||||||-1||HGNC|HGNC:14124,C|intron_variant&NMD_transcript_variant|MODIFIER|NPRL3|ENSG00000103148|Transcript|ENST00000621703|nonsense_mediated_decay||10/10||||||||||-1||HGNC|HGNC:14124,C|intron_variant&NMD_transcript_variant|MODIFIER|NPRL3|ENSG00000103148|Transcript|ENST00000622194|nonsense_mediated_decay||11/11||||||||||-1||HGNC|HGNC:14124\tGT:DP:AD:GQ:PL:RNC\t1/1:28:0,28:18:21,20,0:..", - "chr16\t160055\tchr16_160055_C_G\tC\tG\t18\t.\tAF=1;AQ=18;AC=2;cadd_raw=-2;cadd_phred=-2;CSQ=G|upstream_gene_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|||||||||||3067|1||HGNC|HGNC:4836,G|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,G|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||4427|1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t1/1:30:0,29:17:18,22,0:..", - "chr16\t160070\tchr16_160070_C_CGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGACGGCTTGTGGGACACAGGTTGTGAGAGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTGTGAGACGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGAGATGCCCAGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGAT\tC\tCGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGACGGCTTGTGGGACACAGGTTGTGAGAGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTGTGAGACGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGAGATGCCCAGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGAT\t0\t.\tAF=0.5;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=GGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGACGGCTTGTGGGACACAGGTTGTGAGAGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTGTGAGACGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGAGATGCCCAGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGAT|upstream_gene_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|||||||||||3051|1||HGNC|HGNC:4836,GGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGACGGCTTGTGGGACACAGGTTGTGAGAGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTGTGAGACGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGAGATGCCCAGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGAT|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,GGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGACGGCTTGTGGGACACAGGTTGTGAGAGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTGTGAGACGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGAGATGCCCAGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGAT|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||4411|1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:30:8,7:2:9,0,18:..", - "chr16\t160089\tchr16_160089_TG_T\tTG\tT\t14\t.\tAF=0.5;AQ=14;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=-|upstream_gene_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|||||||||||3032|1||HGNC|HGNC:4836,-|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,-|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||4392|1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:30:25,5:15:14,0,29:..", - "chr16\t160180\tchr16_160180_C_T\tC\tT\t15\t.\tAF=1;AQ=15;AC=2;cadd_raw=-2;cadd_phred=-2;CSQ=T|upstream_gene_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|||||||||||2942|1||HGNC|HGNC:4836,T|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,T|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||4302|1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t1/1:29:1,28:15:15,25,0:..", - "chr16\t160216\tchr16_160216_T_A\tT\tA\t10\t.\tAF=1;AQ=10;AC=2;cadd_raw=-2;cadd_phred=-2;CSQ=A|upstream_gene_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|||||||||||2906|1||HGNC|HGNC:4836,A|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,A|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||4266|1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t1/1:30:0,27:6:10,6,0:..", - "chr16\t160217\tchr16_160217_C_T\tC\tT\t9\t.\tAF=1;AQ=9;AC=2;cadd_raw=-2;cadd_phred=-2;CSQ=T|upstream_gene_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|||||||||||2905|1||HGNC|HGNC:4836,T|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,T|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||4265|1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t1/1:27:0,27:5:9,3,0:..", - "chr16\t160326\tchr16_160326_T_A\tT\tA\t15\t.\tAF=1;AQ=15;AC=2;cadd_raw=-2;cadd_phred=-2;CSQ=A|upstream_gene_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|||||||||||2796|1||HGNC|HGNC:4836,A|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,A|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||4156|1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t1/1:30:0,29:14:15,18,0:..", - "chr16\t160327\tchr16_160327_C_T\tC\tT\t16\t.\tAF=1;AQ=16;AC=2;cadd_raw=-2;cadd_phred=-2;CSQ=T|upstream_gene_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|||||||||||2795|1||HGNC|HGNC:4836,T|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,T|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||4155|1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t1/1:29:3,26:14:16,17,0:..", - "chr16\t160388\tchr16_160388_G_GGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGCTGCAAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGATGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCTGGGACGGCTTGTGGGGCACAGGTTGTGAGA\tG\tGGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGCTGCAAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGATGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCTGGGACGGCTTGTGGGGCACAGGTTGTGAGA\t15\t.\tAF=0.5;AQ=15;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=GGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGCTGCAAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGATGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCTGGGACGGCTTGTGGGGCACAGGTTGTGAGA|upstream_gene_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|||||||||||2733|1||HGNC|HGNC:4836,GGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGCTGCAAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGATGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCTGGGACGGCTTGTGGGGCACAGGTTGTGAGA|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,GGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGCTGCAAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGATGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCTGGGACGGCTTGTGGGGCACAGGTTGTGAGA|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||4093|1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:31:4,14:11:15,0,12:..", - "chr16\t160728\tchr16_160728_C_T\tC\tT\t5\t.\tAF=1;AQ=5;AC=2;cadd_raw=-2;cadd_phred=-2;CSQ=T|upstream_gene_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|||||||||||2394|1||HGNC|HGNC:4836,T|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,T|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||3754|1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t1/1:30:8,22:4:5,3,0:..", - "chr16\t160746\tchr16_160746_T_C\tT\tC\t10\t.\tAF=0.5;AQ=10;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=C|upstream_gene_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|||||||||||2376|1||HGNC|HGNC:4836,C|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,C|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||3736|1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:30:23,7:10:10,0,18:..", - "chr16\t160751\tchr16_160751_AG_A;chr16_160752_G_GGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCAGGATGGCTTGTGGGGCACAGGCTGCAAGAGGTGCCCAGGACGGCTTGTGGGGCACAGGTTGTGAGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGA\tAG\tA\t8\t.\tAF=0.5;AQ=8;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=-|upstream_gene_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|||||||||||2370|1||HGNC|HGNC:4836,-|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,-|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||3730|1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t1/0:22:.,7:6:0,0,0:..", - "chr16\t160752\tchr16_160751_AG_A;chr16_160752_G_GGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCAGGATGGCTTGTGGGGCACAGGCTGCAAGAGGTGCCCAGGACGGCTTGTGGGGCACAGGTTGTGAGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGA\tG\tGGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCAGGATGGCTTGTGGGGCACAGGCTGCAAGAGGTGCCCAGGACGGCTTGTGGGGCACAGGTTGTGAGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGA\t8\t.\tAF=0.5;AQ=6;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=GGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCAGGATGGCTTGTGGGGCACAGGCTGCAAGAGGTGCCCAGGACGGCTTGTGGGGCACAGGTTGTGAGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGA|upstream_gene_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|||||||||||2369|1||HGNC|HGNC:4836,GGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCAGGATGGCTTGTGGGGCACAGGCTGCAAGAGGTGCCCAGGACGGCTTGTGGGGCACAGGTTGTGAGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGA|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,GGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCAGGATGGCTTGTGGGGCACAGGCTGCAAGAGGTGCCCAGGACGGCTTGTGGGGCACAGGTTGTGAGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGA|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||3729|1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:22:.,14:6:0,0,0:..", - "chr16\t161210\tchr16_161210_GC_G\tGC\tG\t6\t.\tAF=0.5;AQ=6;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=-|upstream_gene_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|||||||||||1911|1||HGNC|HGNC:4836,-|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||4767|1||HGNC|HGNC:4826,-|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,-|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||3271|1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:27:21,5:7:6,0,27:..", - "chr16\t161474\tchr16_161474_TA_T\tTA\tT\t22\t.\tAF=0.5;AQ=22;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=-|upstream_gene_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|||||||||||1647|1||HGNC|HGNC:4836,-|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||4503|1||HGNC|HGNC:4826,-|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,-|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||3007|1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:25:16,9:23:22,0,39:..", - "chr16\t162329\tchr16_162329_G_A\tG\tA\t23\t.\tAF=0.5;AQ=23;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=A|upstream_gene_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|||||||||||793|1||HGNC|HGNC:4836,A|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||3649|1||HGNC|HGNC:4826,A|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,A|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||2153|1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:23:15,8:24:23,0,41:..", - "chr16\t162650\tchr16_162650_C_T\tC\tT\t34\t.\tAF=0.5;AQ=34;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=T|upstream_gene_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|||||||||||472|1||HGNC|HGNC:4836,T|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||3328|1||HGNC|HGNC:4826,T|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,T|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||1832|1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:24:9,15:33:34,0,41:..", - "chr16\t163106\tchr16_163106_C_T\tC\tT\t22\t.\tAF=0.5;AQ=22;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=T|upstream_gene_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|||||||||||16|1||HGNC|HGNC:4836,T|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||2872|1||HGNC|HGNC:4826,T|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,T|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||1376|1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:23:15,8:22:22,0,39:..", - "chr16\t163140\tchr16_163140_T_G\tT\tG\t17\t.\tAF=0.5;AQ=17;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=G|non_coding_transcript_exon_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|1/3||||19|||||||1||HGNC|HGNC:4836,G|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||2838|1||HGNC|HGNC:4826,G|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,G|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||1342|1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:23:15,8:17:17,0,39:..", - "chr16\t163143\tchr16_163143_G_A\tG\tA\t16\t.\tAF=0.5;AQ=16;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=A|non_coding_transcript_exon_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|1/3||||22|||||||1||HGNC|HGNC:4836,A|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||2835|1||HGNC|HGNC:4826,A|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,A|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||1339|1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:23:15,8:17:16,0,41:..", - "chr16\t163229\tchr16_163229_T_C\tT\tC\t0\t.\tAF=0.5;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=C|intron_variant&non_coding_transcript_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene||1/2||||||||||1||HGNC|HGNC:4836,C|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||2749|1||HGNC|HGNC:4826,C|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,C|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||1253|1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:23:15,8:3:0,0,27:..", - "chr16\t163796\tchr16_163796_T_A\tT\tA\t12\t.\tAF=1;AQ=12;AC=2;cadd_raw=-2;cadd_phred=-2;CSQ=A|intron_variant&non_coding_transcript_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene||1/2||||||||||1||HGNC|HGNC:4836,A|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||2182|1||HGNC|HGNC:4826,A|upstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||4883|1||HGNC|HGNC:4825,A|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,A|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||686|1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t1/1:15:0,15:7:12,7,0:..", - "chr16\t163800\tchr16_163800_G_A\tG\tA\t8\t.\tAF=1;AQ=8;AC=2;cadd_raw=-2;cadd_phred=-2;CSQ=A|intron_variant&non_coding_transcript_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene||1/2||||||||||1||HGNC|HGNC:4836,A|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||2178|1||HGNC|HGNC:4826,A|upstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||4879|1||HGNC|HGNC:4825,A|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,A|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||682|1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t1/1:16:2,14:3:8,0,0:..", - "chr16\t163804\tchr16_163804_G_A\tG\tA\t14\t.\tAF=1;AQ=14;AC=2;cadd_raw=-2;cadd_phred=-2;CSQ=A|intron_variant&non_coding_transcript_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene||1/2||||||||||1||HGNC|HGNC:4836,A|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||2174|1||HGNC|HGNC:4826,A|upstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||4875|1||HGNC|HGNC:4825,A|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,A|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||678|1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t1/1:21:0,21:13:14,16,0:..", - "chr16\t164431\tchr16_164431_T_TG\tT\tTG\t25\t.\tAF=1;AQ=25;AC=2;cadd_raw=-2;cadd_phred=-2;CSQ=G|intron_variant&non_coding_transcript_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene||1/2||||||||||1||HGNC|HGNC:4836,G|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||1546|1||HGNC|HGNC:4826,G|upstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||4247|1||HGNC|HGNC:4825,G|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,G|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||50|1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t1/1:21:0,21:22:25,25,0:..", - "chr16\t164541\tchr16_164541_G_GGTCC\tG\tGGTCC\t26\t.\tAF=0.5;AQ=26;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=GTCC|non_coding_transcript_exon_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|2/3||||155-156|||||||1||HGNC|HGNC:4836,GTCC|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||1436|1||HGNC|HGNC:4826,GTCC|upstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||4137|1||HGNC|HGNC:4825,GTCC|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,GTCC|non_coding_transcript_exon_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|1/3||||60-61|||||||1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:21:13,7:26:26,0,39:..", - "chr16\t164690\tchr16_164690_C_CGCGGGGCGCGGTGCGGGCGGG\tC\tCGCGGGGCGCGGTGCGGGCGGG\t27\t.\tAF=0.5;AQ=27;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=GCGGGGCGCGGTGCGGGCGGG|splice_donor_region_variant&intron_variant&non_coding_transcript_variant|LOW|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene||2/2||||||||||1||HGNC|HGNC:4836,GCGGGGCGCGGTGCGGGCGGG|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||1287|1||HGNC|HGNC:4826,GCGGGGCGCGGTGCGGGCGGG|upstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||3988|1||HGNC|HGNC:4825,GCGGGGCGCGGTGCGGGCGGG|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,GCGGGGCGCGGTGCGGGCGGG|splice_donor_region_variant&intron_variant&non_coding_transcript_variant|LOW|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:21:6,14:25:27,0,28:..", - "chr16\t164723\tchr16_164723_C_T\tC\tT\t11\t.\tAF=0.5;AQ=11;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=T|intron_variant&non_coding_transcript_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene||2/2||||||||||1||HGNC|HGNC:4836,T|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||1255|1||HGNC|HGNC:4826,T|upstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||3956|1||HGNC|HGNC:4825,T|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,T|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:21:15,4:11:11,0,21:..", - "chr16\t164731\tchr16_164731_C_CG\tC\tCG\t0\t.\tAF=0.5;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=G|intron_variant&non_coding_transcript_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene||2/2||||||||||1||HGNC|HGNC:4836,G|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||1246|1||HGNC|HGNC:4826,G|upstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||3947|1||HGNC|HGNC:4825,G|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,G|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:21:2,14:2:14,0,22:..", - "chr16\t164740\tchr16_164740_C_T\tC\tT\t2\t.\tAF=0.5;AQ=2;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=T|intron_variant&non_coding_transcript_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene||2/2||||||||||1||HGNC|HGNC:4836,T|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||1238|1||HGNC|HGNC:4826,T|upstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||3939|1||HGNC|HGNC:4825,T|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,T|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:20:1,18:2:2,0,1:..", - "chr16\t164771\tchr16_164771_T_C\tT\tC\t2\t.\tAF=0.5;AQ=2;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=C|intron_variant&non_coding_transcript_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene||2/2||||||||||1||HGNC|HGNC:4836,C|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||1207|1||HGNC|HGNC:4826,C|upstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||3908|1||HGNC|HGNC:4825,C|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,C|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:21:13,6:4:10,0,25:..", - "chr16\t164791\tchr16_164791_G_A\tG\tA\t16\t.\tAF=0.5;AQ=16;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=A|intron_variant&non_coding_transcript_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene||2/2||||||||||1||HGNC|HGNC:4836,A|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||1187|1||HGNC|HGNC:4826,A|upstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||3888|1||HGNC|HGNC:4825,A|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,A|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:21:6,15:15:16,0,20:..", - "chr16\t164800\tchr16_164800_G_GGCGGGGTCGCGGGGCGGGGCGAGGTC\tG\tGGCGGGGTCGCGGGGCGGGGCGAGGTC\t4\t.\tAF=0.5;AQ=4;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=GCGGGGTCGCGGGGCGGGGCGAGGTC|intron_variant&non_coding_transcript_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene||2/2||||||||||1||HGNC|HGNC:4836,GCGGGGTCGCGGGGCGGGGCGAGGTC|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||1177|1||HGNC|HGNC:4826,GCGGGGTCGCGGGGCGGGGCGAGGTC|upstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||3878|1||HGNC|HGNC:4825,GCGGGGTCGCGGGGCGGGGCGAGGTC|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,GCGGGGTCGCGGGGCGGGGCGAGGTC|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:21:14,4:5:4,0,19:..", - "chr16\t164817\tchr16_164817_C_A\tC\tA\t22\t.\tAF=0.5;AQ=22;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=A|intron_variant&non_coding_transcript_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene||2/2||||||||||1||HGNC|HGNC:4836,A|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||1161|1||HGNC|HGNC:4826,A|upstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||3862|1||HGNC|HGNC:4825,A|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,A|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:21:8,13:21:22,0,27:..", - "chr16\t164831\tchr16_164831_C_CG\tC\tCG\t4\t.\tAF=1;AQ=4;AC=2;cadd_raw=-2;cadd_phred=-2;CSQ=G|intron_variant&non_coding_transcript_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene||2/2||||||||||1||HGNC|HGNC:4836,G|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||1146|1||HGNC|HGNC:4826,G|upstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||3847|1||HGNC|HGNC:4825,G|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,G|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t1/1:21:4,15:2:4,0,0:..", - "chr16\t164839\tchr16_164839_G_GGT\tG\tGGT\t15\t.\tAF=1;AQ=15;AC=2;cadd_raw=-2;cadd_phred=-2;CSQ=GT|intron_variant&non_coding_transcript_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene||2/2||||||||||1||HGNC|HGNC:4836,GT|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||1138|1||HGNC|HGNC:4826,GT|upstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||3839|1||HGNC|HGNC:4825,GT|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,GT|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t1/1:21:2,15:10:15,10,0:..", - "chr16\t164871\tchr16_164871_T_G\tT\tG\t13\t.\tAF=0.5;AQ=13;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=G|intron_variant&non_coding_transcript_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene||2/2||||||||||1||HGNC|HGNC:4836,G|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||1107|1||HGNC|HGNC:4826,G|upstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||3808|1||HGNC|HGNC:4825,G|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,G|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:20:12,7:14:13,0,33:..", - "chr16\t164884\tchr16_164884_G_GT\tG\tGT\t15\t.\tAF=1;AQ=15;AC=2;cadd_raw=-2;cadd_phred=-2;CSQ=T|intron_variant&non_coding_transcript_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene||2/2||||||||||1||HGNC|HGNC:4836,T|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||1093|1||HGNC|HGNC:4826,T|upstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||3794|1||HGNC|HGNC:4825,T|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,T|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t1/1:21:0,21:15:15,22,0:..", - "chr16\t164892\tchr16_164892_CG_C\tCG\tC\t2\t.\tAF=0.5;AQ=2;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=-|intron_variant&non_coding_transcript_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene||2/2||||||||||1||HGNC|HGNC:4836,-|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||1085|1||HGNC|HGNC:4826,-|upstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||3786|1||HGNC|HGNC:4825,-|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,-|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:21:18,3:5:2,0,21:..", - "chr16\t164907\tchr16_164907_C_A\tC\tA\t3\t.\tAF=0.5;AQ=3;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=A|intron_variant&non_coding_transcript_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene||2/2||||||||||1||HGNC|HGNC:4836,A|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||1071|1||HGNC|HGNC:4826,A|upstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||3772|1||HGNC|HGNC:4825,A|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,A|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:20:12,8:5:3,0,20:..", - "chr16\t164931\tchr16_164931_C_G\tC\tG\t3\t.\tAF=0.5;AQ=3;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=G|intron_variant&non_coding_transcript_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene||2/2||||||||||1||HGNC|HGNC:4836,G|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||1047|1||HGNC|HGNC:4826,G|upstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||3748|1||HGNC|HGNC:4825,G|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,G|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:9:1,8:5:3,0,19:..", - "chr16\t164932\tchr16_164932_G_GGGCGGGC\tG\tGGGCGGGC\t1\t.\tAF=0.5;AQ=1;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=GGCGGGC|intron_variant&non_coding_transcript_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene||2/2||||||||||1||HGNC|HGNC:4836,GGCGGGC|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||1045|1||HGNC|HGNC:4826,GGCGGGC|upstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||3746|1||HGNC|HGNC:4825,GGCGGGC|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,GGCGGGC|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:9:2,7:4:1,0,15:..", - "chr16\t164942\tchr16_164942_G_GT\tG\tGT\t4\t.\tAF=0.5;AQ=4;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=T|intron_variant&non_coding_transcript_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene||2/2||||||||||1||HGNC|HGNC:4836,T|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||1035|1||HGNC|HGNC:4826,T|upstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||3736|1||HGNC|HGNC:4825,T|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,T|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:9:0,8:6:4,0,14:..", - "chr16\t164953\tchr16_164953_G_GGCGGC\tG\tGGCGGC\t13\t.\tAF=0.5;AQ=13;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=GCGGC|intron_variant&non_coding_transcript_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene||2/2||||||||||1||HGNC|HGNC:4836,GCGGC|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||1024|1||HGNC|HGNC:4826,GCGGC|upstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||3725|1||HGNC|HGNC:4825,GCGGC|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,GCGGC|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:21:14,6:13:13,0,33:..", - "chr16\t164985\tchr16_164985_C_CG\tC\tCG\t18\t.\tAF=1;AQ=18;AC=2;cadd_raw=-2;cadd_phred=-2;CSQ=G|intron_variant&non_coding_transcript_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene||2/2||||||||||1||HGNC|HGNC:4836,G|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||992|1||HGNC|HGNC:4826,G|upstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||3693|1||HGNC|HGNC:4825,G|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,G|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t1/1:19:1,18:16:18,18,0:..", - "chr16\t165212\tchr16_165212_TC_T\tTC\tT\t3\t.\tAF=0.5;AQ=3;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=-|downstream_gene_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|||||||||||57|1||HGNC|HGNC:4836,-|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||765|1||HGNC|HGNC:4826,-|upstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||3466|1||HGNC|HGNC:4825,-|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,-|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:21:18,3:5:3,0,30:..", - "chr16\t165380\tchr16_165380_G_A\tG\tA\t29\t.\tAF=0.5;AQ=29;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=A|downstream_gene_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|||||||||||224|1||HGNC|HGNC:4836,A|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||598|1||HGNC|HGNC:4826,A|upstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||3299|1||HGNC|HGNC:4825,A|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,A|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:22:14,8:29:29,0,43:..", - "chr16\t165856\tchr16_165856_G_C\tG\tC\t29\t.\tAF=0.5;AQ=29;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=C|downstream_gene_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|||||||||||700|1||HGNC|HGNC:4836,C|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||122|1||HGNC|HGNC:4826,C|upstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||2823|1||HGNC|HGNC:4825,C|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,C|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:22:14,8:29:29,0,44:..", - "chr16\t166191\tchr16_166191_C_CG\tC\tCG\t22\t.\tAF=0.5;AQ=22;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=G|downstream_gene_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|||||||||||1035|1||HGNC|HGNC:4836,G|intron_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding||1/2||||||||||1||HGNC|HGNC:4826,G|upstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||2487|1||HGNC|HGNC:4825,G|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,G|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:22:14,6:23:22,0,36:..", - "chr16\t166518\tchr16_166518_TG_T\tTG\tT\t11\t.\tAF=0.5;AQ=11;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=-|downstream_gene_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|||||||||||1363|1||HGNC|HGNC:4836,-|intron_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding||2/2||||||||||1||HGNC|HGNC:4826,-|upstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||2160|1||HGNC|HGNC:4825,-|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||2/2||||||||||1||HGNC|HGNC:4826,-|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined||2/2||||||||||1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:21:16,4:12:11,0,32:..", - "chr16\t167928\tchr16_167928_GT_G\tGT\tG\t17\t.\tAF=0.5;AQ=17;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=-|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000251595|protein_coding|||||||||||4947|1||HGNC|HGNC:4824,-|downstream_gene_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|||||||||||2773|1||HGNC|HGNC:4836,-|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||1165|1||HGNC|HGNC:4826,-|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000397806|protein_coding|||||||||||4961|1||HGNC|HGNC:4824,-|upstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||750|1||HGNC|HGNC:4825,-|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined|||||||||||1168|1||HGNC|HGNC:4826,-|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000482565|retained_intron|||||||||||4965|1||HGNC|HGNC:4824,-|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||1168|1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:21:14,6:17:17,0,31:..", - "chr16\t167947\tchr16_167947_T_TC\tT\tTC\t19\t.\tAF=0.5;AQ=19;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=C|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000251595|protein_coding|||||||||||4928|1||HGNC|HGNC:4824,C|downstream_gene_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|||||||||||2791|1||HGNC|HGNC:4836,C|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||1183|1||HGNC|HGNC:4826,C|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000397806|protein_coding|||||||||||4942|1||HGNC|HGNC:4824,C|upstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||731|1||HGNC|HGNC:4825,C|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined|||||||||||1186|1||HGNC|HGNC:4826,C|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000482565|retained_intron|||||||||||4946|1||HGNC|HGNC:4824,C|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000484216|protein_coding|||||||||||4996|1|cds_start_NF&cds_end_NF|HGNC|HGNC:4824,C|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||1186|1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:21:11,10:18:19,0,22:..", - "chr16\t167948\tchr16_167948_T_C\tT\tC\t10\t.\tAF=0.5;AQ=10;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=C|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000251595|protein_coding|||||||||||4928|1||HGNC|HGNC:4824,C|downstream_gene_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|||||||||||2792|1||HGNC|HGNC:4836,C|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||1184|1||HGNC|HGNC:4826,C|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000397806|protein_coding|||||||||||4942|1||HGNC|HGNC:4824,C|upstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||731|1||HGNC|HGNC:4825,C|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined|||||||||||1187|1||HGNC|HGNC:4826,C|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000482565|retained_intron|||||||||||4946|1||HGNC|HGNC:4824,C|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000484216|protein_coding|||||||||||4996|1|cds_start_NF&cds_end_NF|HGNC|HGNC:4824,C|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||1187|1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:20:10,10:10:10,0,17:..", - "chr16\t168533\tchr16_168533_T_C\tT\tC\t29\t.\tAF=0.5;AQ=29;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=C|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000251595|protein_coding|||||||||||4343|1||HGNC|HGNC:4824,C|downstream_gene_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|||||||||||3377|1||HGNC|HGNC:4836,C|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||1769|1||HGNC|HGNC:4826,C|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000397806|protein_coding|||||||||||4357|1||HGNC|HGNC:4824,C|upstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||146|1||HGNC|HGNC:4825,C|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined|||||||||||1772|1||HGNC|HGNC:4826,C|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000482565|retained_intron|||||||||||4361|1||HGNC|HGNC:4824,C|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000484216|protein_coding|||||||||||4411|1|cds_start_NF&cds_end_NF|HGNC|HGNC:4824,C|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||1772|1||HGNC|HGNC:4826,C|downstream_gene_variant|MODIFIER||ENSG00000290038|Transcript|ENST00000702607|lncRNA|||||||||||4969|-1|||\tGT:DP:AD:GQ:PL:RNC\t0/1:20:11,9:29:29,0,43:..", - "chr16\t168736\tchr16_168736_A_G\tA\tG\t34\t.\tAF=0.5;AQ=34;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=G|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000251595|protein_coding|||||||||||4140|1||HGNC|HGNC:4824,G|downstream_gene_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|||||||||||3580|1||HGNC|HGNC:4836,G|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||1972|1||HGNC|HGNC:4826,G|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000397806|protein_coding|||||||||||4154|1||HGNC|HGNC:4824,G|non_coding_transcript_exon_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|1/3||||58|||||||1||HGNC|HGNC:4825,G|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined|||||||||||1975|1||HGNC|HGNC:4826,G|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000482565|retained_intron|||||||||||4158|1||HGNC|HGNC:4824,G|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000484216|protein_coding|||||||||||4208|1|cds_start_NF&cds_end_NF|HGNC|HGNC:4824,G|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||1975|1||HGNC|HGNC:4826,G|downstream_gene_variant|MODIFIER||ENSG00000290038|Transcript|ENST00000702607|lncRNA|||||||||||4766|-1|||\tGT:DP:AD:GQ:PL:RNC\t0/1:20:11,9:34:34,0,48:..", - "chr16\t169117\tchr16_169117_TG_T\tTG\tT\t4\t.\tAF=0.5;AQ=4;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=-|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000251595|protein_coding|||||||||||3758|1||HGNC|HGNC:4824,-|downstream_gene_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|||||||||||3962|1||HGNC|HGNC:4836,-|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||2354|1||HGNC|HGNC:4826,-|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000397806|protein_coding|||||||||||3772|1||HGNC|HGNC:4824,-|intron_variant&non_coding_transcript_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene||2/2||||||||||1||HGNC|HGNC:4825,-|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined|||||||||||2357|1||HGNC|HGNC:4826,-|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000482565|retained_intron|||||||||||3776|1||HGNC|HGNC:4824,-|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000484216|protein_coding|||||||||||3826|1|cds_start_NF&cds_end_NF|HGNC|HGNC:4824,-|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||2357|1||HGNC|HGNC:4826,-|downstream_gene_variant|MODIFIER||ENSG00000290038|Transcript|ENST00000702607|lncRNA|||||||||||4384|-1|||\tGT:DP:AD:GQ:PL:RNC\t0/1:20:17,3:6:4,0,27:..", - "chr16\t169404\tchr16_169404_TC_T\tTC\tT\t5\t.\tAF=0.5;AQ=5;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=-|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000251595|protein_coding|||||||||||3471|1||HGNC|HGNC:4824,-|downstream_gene_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|||||||||||4249|1||HGNC|HGNC:4836,-|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||2641|1||HGNC|HGNC:4826,-|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000397806|protein_coding|||||||||||3485|1||HGNC|HGNC:4824,-|downstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||71|1||HGNC|HGNC:4825,-|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined|||||||||||2644|1||HGNC|HGNC:4826,-|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000482565|retained_intron|||||||||||3489|1||HGNC|HGNC:4824,-|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000484216|protein_coding|||||||||||3539|1|cds_start_NF&cds_end_NF|HGNC|HGNC:4824,-|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||2644|1||HGNC|HGNC:4826,-|downstream_gene_variant|MODIFIER||ENSG00000290038|Transcript|ENST00000702607|lncRNA|||||||||||4097|-1|||\tGT:DP:AD:GQ:PL:RNC\t0/1:19:16,2:7:5,0,30:..", - "chr16\t169624\tchr16_169624_TC_T\tTC\tT\t10\t.\tAF=0.5;AQ=10;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=-|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000251595|protein_coding|||||||||||3251|1||HGNC|HGNC:4824,-|downstream_gene_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|||||||||||4469|1||HGNC|HGNC:4836,-|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||2861|1||HGNC|HGNC:4826,-|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000397806|protein_coding|||||||||||3265|1||HGNC|HGNC:4824,-|downstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||291|1||HGNC|HGNC:4825,-|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined|||||||||||2864|1||HGNC|HGNC:4826,-|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000482565|retained_intron|||||||||||3269|1||HGNC|HGNC:4824,-|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000484216|protein_coding|||||||||||3319|1|cds_start_NF&cds_end_NF|HGNC|HGNC:4824,-|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||2864|1||HGNC|HGNC:4826,-|downstream_gene_variant|MODIFIER||ENSG00000290038|Transcript|ENST00000702607|lncRNA|||||||||||3877|-1|||\tGT:DP:AD:GQ:PL:RNC\t0/1:20:16,4:11:10,0,32:..", - "chr16\t170831\tchr16_170831_T_TCACA\tT\tTCACA\t0\t.\tAF=0.5;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=CACA|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000251595|protein_coding|||||||||||2044|1||HGNC|HGNC:4824,CACA|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||4067|1||HGNC|HGNC:4826,CACA|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000397806|protein_coding|||||||||||2058|1||HGNC|HGNC:4824,CACA|downstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||1497|1||HGNC|HGNC:4825,CACA|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined|||||||||||4070|1||HGNC|HGNC:4826,CACA|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000482565|retained_intron|||||||||||2062|1||HGNC|HGNC:4824,CACA|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000484216|protein_coding|||||||||||2112|1|cds_start_NF&cds_end_NF|HGNC|HGNC:4824,CACA|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||4070|1||HGNC|HGNC:4826,CACA|downstream_gene_variant|MODIFIER||ENSG00000290038|Transcript|ENST00000702607|lncRNA|||||||||||2670|-1|||\tGT:DP:AD:GQ:PL:RNC\t0/1:20:6,6:3:19,0,25:..", - "chr16\t170862\tchr16_170862_C_CACACA\tC\tCACACA\t5\t.\tAF=0.5;AQ=5;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=ACACA|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000251595|protein_coding|||||||||||2013|1||HGNC|HGNC:4824,ACACA|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||4098|1||HGNC|HGNC:4826,ACACA|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000397806|protein_coding|||||||||||2027|1||HGNC|HGNC:4824,ACACA|downstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||1528|1||HGNC|HGNC:4825,ACACA|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined|||||||||||4101|1||HGNC|HGNC:4826,ACACA|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000482565|retained_intron|||||||||||2031|1||HGNC|HGNC:4824,ACACA|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000484216|protein_coding|||||||||||2081|1|cds_start_NF&cds_end_NF|HGNC|HGNC:4824,ACACA|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||4101|1||HGNC|HGNC:4826,ACACA|downstream_gene_variant|MODIFIER||ENSG00000290038|Transcript|ENST00000702607|lncRNA|||||||||||2639|-1|||\tGT:DP:AD:GQ:PL:RNC\t0/1:20:16,2:7:5,0,28:..", - "chr16\t170943\tchr16_170943_AG_A\tAG\tA\t1\t.\tAF=0.5;AQ=1;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=-|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000251595|protein_coding|||||||||||1932|1||HGNC|HGNC:4824,-|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||4180|1||HGNC|HGNC:4826,-|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000397806|protein_coding|||||||||||1946|1||HGNC|HGNC:4824,-|downstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||1610|1||HGNC|HGNC:4825,-|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined|||||||||||4183|1||HGNC|HGNC:4826,-|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000482565|retained_intron|||||||||||1950|1||HGNC|HGNC:4824,-|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000484216|protein_coding|||||||||||2000|1|cds_start_NF&cds_end_NF|HGNC|HGNC:4824,-|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||4183|1||HGNC|HGNC:4826,-|downstream_gene_variant|MODIFIER||ENSG00000290038|Transcript|ENST00000702607|lncRNA|||||||||||2558|-1|||\tGT:DP:AD:GQ:PL:RNC\t0/1:20:18,2:4:1,0,26:..", - "chr16\t171206\tchr16_171206_T_TTTA\tT\tTTTA\t13\t.\tAF=0.5;AQ=13;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=TTA|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000251595|protein_coding|||||||||||1669|1||HGNC|HGNC:4824,TTA|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||4442|1||HGNC|HGNC:4826,TTA|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000397806|protein_coding|||||||||||1683|1||HGNC|HGNC:4824,TTA|downstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||1872|1||HGNC|HGNC:4825,TTA|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined|||||||||||4445|1||HGNC|HGNC:4826,TTA|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000482565|retained_intron|||||||||||1687|1||HGNC|HGNC:4824,TTA|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000484216|protein_coding|||||||||||1737|1|cds_start_NF&cds_end_NF|HGNC|HGNC:4824,TTA|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||4445|1||HGNC|HGNC:4826,TTA|downstream_gene_variant|MODIFIER||ENSG00000290038|Transcript|ENST00000702607|lncRNA|||||||||||2295|-1|||\tGT:DP:AD:GQ:PL:RNC\t0/1:20:11,9:13:13,0,22:..", - "chr16\t171219\tchr16_171219_T_TTA\tT\tTTA\t1\t.\tAF=0.5;AQ=1;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=TA|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000251595|protein_coding|||||||||||1656|1||HGNC|HGNC:4824,TA|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||4455|1||HGNC|HGNC:4826,TA|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000397806|protein_coding|||||||||||1670|1||HGNC|HGNC:4824,TA|downstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||1885|1||HGNC|HGNC:4825,TA|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined|||||||||||4458|1||HGNC|HGNC:4826,TA|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000482565|retained_intron|||||||||||1674|1||HGNC|HGNC:4824,TA|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000484216|protein_coding|||||||||||1724|1|cds_start_NF&cds_end_NF|HGNC|HGNC:4824,TA|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||4458|1||HGNC|HGNC:4826,TA|downstream_gene_variant|MODIFIER||ENSG00000290038|Transcript|ENST00000702607|lncRNA|||||||||||2282|-1|||\tGT:DP:AD:GQ:PL:RNC\t0/1:19:14,3:4:1,0,20:..", - "chr16\t171220\tchr16_171220_T_TATTA\tT\tTATTA\t9\t.\tAF=0.5;AQ=9;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=ATTA|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000251595|protein_coding|||||||||||1655|1||HGNC|HGNC:4824,ATTA|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||4456|1||HGNC|HGNC:4826,ATTA|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000397806|protein_coding|||||||||||1669|1||HGNC|HGNC:4824,ATTA|downstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||1886|1||HGNC|HGNC:4825,ATTA|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined|||||||||||4459|1||HGNC|HGNC:4826,ATTA|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000482565|retained_intron|||||||||||1673|1||HGNC|HGNC:4824,ATTA|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000484216|protein_coding|||||||||||1723|1|cds_start_NF&cds_end_NF|HGNC|HGNC:4824,ATTA|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||4459|1||HGNC|HGNC:4826,ATTA|downstream_gene_variant|MODIFIER||ENSG00000290038|Transcript|ENST00000702607|lncRNA|||||||||||2281|-1|||\tGT:DP:AD:GQ:PL:RNC\t0/1:20:16,4:10:9,0,23:..", - "chr16\t171534\tchr16_171534_AT_A\tAT\tA\t20\t.\tAF=0.5;AQ=20;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=-|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000251595|protein_coding|||||||||||1341|1||HGNC|HGNC:4824,-|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||4771|1||HGNC|HGNC:4826,-|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000397806|protein_coding|||||||||||1355|1||HGNC|HGNC:4824,-|downstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||2201|1||HGNC|HGNC:4825,-|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined|||||||||||4774|1||HGNC|HGNC:4826,-|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000482565|retained_intron|||||||||||1359|1||HGNC|HGNC:4824,-|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000484216|protein_coding|||||||||||1409|1|cds_start_NF&cds_end_NF|HGNC|HGNC:4824,-|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||4774|1||HGNC|HGNC:4826,-|downstream_gene_variant|MODIFIER||ENSG00000290038|Transcript|ENST00000702607|lncRNA|||||||||||1967|-1|||\tGT:DP:AD:GQ:PL:RNC\t0/1:19:14,5:20:20,0,40:..", - "chr16\t171881\tchr16_171881_TC_T\tTC\tT\t21\t.\tAF=0.5;AQ=21;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=-|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000251595|protein_coding|||||||||||994|1||HGNC|HGNC:4824,-|upstream_gene_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000320868|protein_coding|||||||||||4798|1||HGNC|HGNC:4823,-|upstream_gene_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000397797|protein_coding|||||||||||4822|1||HGNC|HGNC:4823,-|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000397806|protein_coding|||||||||||1008|1||HGNC|HGNC:4824,-|downstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||2548|1||HGNC|HGNC:4825,-|upstream_gene_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000472694|retained_intron|||||||||||4816|1||HGNC|HGNC:4823,-|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000482565|retained_intron|||||||||||1012|1||HGNC|HGNC:4824,-|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000484216|protein_coding|||||||||||1062|1|cds_start_NF&cds_end_NF|HGNC|HGNC:4824,-|upstream_gene_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000487791|retained_intron|||||||||||4866|1||HGNC|HGNC:4823,-|downstream_gene_variant|MODIFIER||ENSG00000290038|Transcript|ENST00000702607|lncRNA|||||||||||1620|-1|||\tGT:DP:AD:GQ:PL:RNC\t0/1:19:12,7:21:21,0,35:.." - ], - [ - "chr16\t172418\tchr16_172418_T_C\tT\tC\t20\t.\tAF=1;AQ=20;AC=2;cadd_raw=-2;cadd_phred=-2;CSQ=C|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000251595|protein_coding|||||||||||458|1||HGNC|HGNC:4824,C|upstream_gene_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000320868|protein_coding|||||||||||4262|1||HGNC|HGNC:4823,C|upstream_gene_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000397797|protein_coding|||||||||||4286|1||HGNC|HGNC:4823,C|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000397806|protein_coding|||||||||||472|1||HGNC|HGNC:4824,C|downstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||3084|1||HGNC|HGNC:4825,C|upstream_gene_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000472694|retained_intron|||||||||||4280|1||HGNC|HGNC:4823,C|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000482565|retained_intron|||||||||||476|1||HGNC|HGNC:4824,C|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000484216|protein_coding|||||||||||526|1|cds_start_NF&cds_end_NF|HGNC|HGNC:4824,C|upstream_gene_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000487791|retained_intron|||||||||||4330|1||HGNC|HGNC:4823,C|downstream_gene_variant|MODIFIER||ENSG00000290010|Transcript|ENST00000702457|lncRNA|||||||||||4895|-1|||,C|downstream_gene_variant|MODIFIER||ENSG00000290038|Transcript|ENST00000702607|lncRNA|||||||||||1084|-1|||\tGT:DP:AD:GQ:PL:RNC\t1/1:18:0,18:16:20,17,0:..", - "chr16\t172636\tchr16_172636_C_T\tC\tT\t23\t.\tAF=1;AQ=23;AC=2;cadd_raw=-2;cadd_phred=-2;CSQ=T|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000251595|protein_coding|||||||||||240|1||HGNC|HGNC:4824,T|upstream_gene_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000320868|protein_coding|||||||||||4044|1||HGNC|HGNC:4823,T|upstream_gene_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000397797|protein_coding|||||||||||4068|1||HGNC|HGNC:4823,T|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000397806|protein_coding|||||||||||254|1||HGNC|HGNC:4824,T|downstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||3302|1||HGNC|HGNC:4825,T|upstream_gene_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000472694|retained_intron|||||||||||4062|1||HGNC|HGNC:4823,T|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000482565|retained_intron|||||||||||258|1||HGNC|HGNC:4824,T|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000484216|protein_coding|||||||||||308|1|cds_start_NF&cds_end_NF|HGNC|HGNC:4824,T|upstream_gene_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000487791|retained_intron|||||||||||4112|1||HGNC|HGNC:4823,T|downstream_gene_variant|MODIFIER||ENSG00000290010|Transcript|ENST00000702457|lncRNA|||||||||||4677|-1|||,T|downstream_gene_variant|MODIFIER||ENSG00000290038|Transcript|ENST00000702607|lncRNA|||||||||||866|-1|||\tGT:DP:AD:GQ:PL:RNC\t1/1:18:1,17:14:23,14,0:..", - "chr16\t172870\tchr16_172870_G_C\tG\tC\t24\t.\tAF=1;AQ=24;AC=2;cadd_raw=-2;cadd_phred=-2;CSQ=C|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000251595|protein_coding|||||||||||6|1||HGNC|HGNC:4824,C|upstream_gene_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000320868|protein_coding|||||||||||3810|1||HGNC|HGNC:4823,C|upstream_gene_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000397797|protein_coding|||||||||||3834|1||HGNC|HGNC:4823,C|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000397806|protein_coding|||||||||||20|1||HGNC|HGNC:4824,C|downstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||3536|1||HGNC|HGNC:4825,C|upstream_gene_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000472694|retained_intron|||||||||||3828|1||HGNC|HGNC:4823,C|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000482565|retained_intron|||||||||||24|1||HGNC|HGNC:4824,C|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000484216|protein_coding|||||||||||74|1|cds_start_NF&cds_end_NF|HGNC|HGNC:4824,C|upstream_gene_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000487791|retained_intron|||||||||||3878|1||HGNC|HGNC:4823,C|downstream_gene_variant|MODIFIER||ENSG00000290010|Transcript|ENST00000702457|lncRNA|||||||||||4443|-1|||,C|downstream_gene_variant|MODIFIER||ENSG00000290038|Transcript|ENST00000702607|lncRNA|||||||||||632|-1|||\tGT:DP:AD:GQ:PL:RNC\t1/1:18:0,18:20:24,22,0:..", - "chr16\t173116\tchr16_173116_TC_T\tTC\tT\t6\t.\tAF=0.5;AQ=6;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=-|splice_region_variant&splice_polypyrimidine_tract_variant&intron_variant|LOW|HBA2|ENSG00000188536|Transcript|ENST00000251595|protein_coding||1/2||||||||||1||HGNC|HGNC:4824,-|upstream_gene_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000320868|protein_coding|||||||||||3563|1||HGNC|HGNC:4823,-|upstream_gene_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000397797|protein_coding|||||||||||3587|1||HGNC|HGNC:4823,-|splice_region_variant&splice_polypyrimidine_tract_variant&intron_variant|LOW|HBA2|ENSG00000188536|Transcript|ENST00000397806|protein_coding||1/2||||||||||1||HGNC|HGNC:4824,-|downstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||3783|1||HGNC|HGNC:4825,-|upstream_gene_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000472694|retained_intron|||||||||||3581|1||HGNC|HGNC:4823,-|non_coding_transcript_exon_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000482565|retained_intron|1/2||||224|||||||1||HGNC|HGNC:4824,-|splice_region_variant&splice_polypyrimidine_tract_variant&intron_variant|LOW|HBA2|ENSG00000188536|Transcript|ENST00000484216|protein_coding||1/1||||||||||1|cds_start_NF&cds_end_NF|HGNC|HGNC:4824,-|upstream_gene_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000487791|retained_intron|||||||||||3631|1||HGNC|HGNC:4823,-|downstream_gene_variant|MODIFIER||ENSG00000290010|Transcript|ENST00000702457|lncRNA|||||||||||4196|-1|||,-|downstream_gene_variant|MODIFIER||ENSG00000290038|Transcript|ENST00000702607|lncRNA|||||||||||385|-1|||\tGT:DP:AD:GQ:PL:RNC\t0/1:19:16,3:8:6,0,30:..", - "chr16\t173707\tchr16_173707_A_G\tA\tG\t27\t.\tAF=1;AQ=27;AC=2;cadd_raw=0.19;cadd_phred=3.05;CSQ=G|3_prime_UTR_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000251595|protein_coding|3/3||||573|||||||1||HGNC|HGNC:4824,G|upstream_gene_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000320868|protein_coding|||||||||||2973|1||HGNC|HGNC:4823,G|upstream_gene_variant|MODIFIER|Y_RNA|ENSG00000207243|Transcript|ENST00000384514|misc_RNA|||||||||||4847|1||RFAM|,G|upstream_gene_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000397797|protein_coding|||||||||||2997|1||HGNC|HGNC:4823,G|3_prime_UTR_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000397806|protein_coding|3/3||||510|||||||1||HGNC|HGNC:4824,G|downstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||4373|1||HGNC|HGNC:4825,G|upstream_gene_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000472694|retained_intron|||||||||||2991|1||HGNC|HGNC:4823,G|downstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000482565|retained_intron|||||||||||32|1||HGNC|HGNC:4824,G|downstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000484216|protein_coding|||||||||||244|1|cds_start_NF&cds_end_NF|HGNC|HGNC:4824,G|upstream_gene_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000487791|retained_intron|||||||||||3041|1||HGNC|HGNC:4823,G|downstream_gene_variant|MODIFIER||ENSG00000290010|Transcript|ENST00000702457|lncRNA|||||||||||3606|-1|||,G|upstream_gene_variant|MODIFIER||ENSG00000290038|Transcript|ENST00000702607|lncRNA|||||||||||47|-1|||\tGT:DP:AD:GQ:PL:RNC\t1/1:19:0,19:25:27,27,0:..", - "chr16\t176848\tchr16_176848_GC_G\tGC\tG\t5\t.\tAF=0.5;AQ=5;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=-|upstream_gene_variant|MODIFIER|HBQ1|ENSG00000086506|Transcript|ENST00000199708|protein_coding|||||||||||3610|1||HGNC|HGNC:4833,-|downstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000251595|protein_coding|||||||||||3139|1||HGNC|HGNC:4824,-|intron_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000320868|protein_coding||1/2||||||||||1||HGNC|HGNC:4823,-|upstream_gene_variant|MODIFIER|Y_RNA|ENSG00000207243|Transcript|ENST00000384514|misc_RNA|||||||||||1705|1||RFAM|,-|intron_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000397797|protein_coding||1/2||||||||||1||HGNC|HGNC:4823,-|downstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000397806|protein_coding|||||||||||3139|1||HGNC|HGNC:4824,-|non_coding_transcript_exon_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000472694|retained_intron|1/2||||152|||||||1||HGNC|HGNC:4823,-|downstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000482565|retained_intron|||||||||||3174|1||HGNC|HGNC:4824,-|downstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000484216|protein_coding|||||||||||3386|1|cds_start_NF&cds_end_NF|HGNC|HGNC:4824,-|intron_variant&non_coding_transcript_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000487791|retained_intron||1/1||||||||||1||HGNC|HGNC:4823,-|downstream_gene_variant|MODIFIER||ENSG00000290010|Transcript|ENST00000702457|lncRNA|||||||||||464|-1|||,-|upstream_gene_variant|MODIFIER||ENSG00000290038|Transcript|ENST00000702607|lncRNA|||||||||||3189|-1|||\tGT:DP:AD:GQ:PL:RNC\t0/1:17:15,2:6:5,0,28:..", - "chr16\t176953\tchr16_176953_CA_C\tCA\tC\t5\t.\tAF=0.5;AQ=5;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=-|upstream_gene_variant|MODIFIER|HBQ1|ENSG00000086506|Transcript|ENST00000199708|protein_coding|||||||||||3505|1||HGNC|HGNC:4833,-|downstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000251595|protein_coding|||||||||||3244|1||HGNC|HGNC:4824,-|frameshift_variant|HIGH|HBA1|ENSG00000206172|Transcript|ENST00000320868|protein_coding|2/3||||158|121|41|K/X|Aag/ag|||1||HGNC|HGNC:4823,-|upstream_gene_variant|MODIFIER|Y_RNA|ENSG00000207243|Transcript|ENST00000384514|misc_RNA|||||||||||1600|1||RFAM|,-|frameshift_variant|HIGH|HBA1|ENSG00000206172|Transcript|ENST00000397797|protein_coding|2/3||||85|25|9|K/X|Aag/ag|||1||HGNC|HGNC:4823,-|downstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000397806|protein_coding|||||||||||3244|1||HGNC|HGNC:4824,-|non_coding_transcript_exon_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000472694|retained_intron|1/2||||257|||||||1||HGNC|HGNC:4823,-|downstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000482565|retained_intron|||||||||||3279|1||HGNC|HGNC:4824,-|downstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000484216|protein_coding|||||||||||3491|1|cds_start_NF&cds_end_NF|HGNC|HGNC:4824,-|non_coding_transcript_exon_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000487791|retained_intron|2/2||||90|||||||1||HGNC|HGNC:4823,-|downstream_gene_variant|MODIFIER||ENSG00000290010|Transcript|ENST00000702457|lncRNA|||||||||||359|-1|||,-|upstream_gene_variant|MODIFIER||ENSG00000290038|Transcript|ENST00000702607|lncRNA|||||||||||3294|-1|||\tGT:DP:AD:GQ:PL:RNC\t0/1:17:15,2:7:5,0,30:..", - "chr16\t177485\tchr16_177485_AC_A\tAC\tA\t5\t.\tAF=0.5;AQ=5;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=-|upstream_gene_variant|MODIFIER|HBQ1|ENSG00000086506|Transcript|ENST00000199708|protein_coding|||||||||||2973|1||HGNC|HGNC:4833,-|downstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000251595|protein_coding|||||||||||3776|1||HGNC|HGNC:4824,-|3_prime_UTR_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000320868|protein_coding|3/3||||541|||||||1||HGNC|HGNC:4823,-|upstream_gene_variant|MODIFIER|Y_RNA|ENSG00000207243|Transcript|ENST00000384514|misc_RNA|||||||||||1068|1||RFAM|,-|3_prime_UTR_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000397797|protein_coding|3/3||||468|||||||1||HGNC|HGNC:4823,-|downstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000397806|protein_coding|||||||||||3776|1||HGNC|HGNC:4824,-|non_coding_transcript_exon_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000472694|retained_intron|2/2||||640|||||||1||HGNC|HGNC:4823,-|downstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000482565|retained_intron|||||||||||3811|1||HGNC|HGNC:4824,-|downstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000484216|protein_coding|||||||||||4023|1|cds_start_NF&cds_end_NF|HGNC|HGNC:4824,-|downstream_gene_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000487791|retained_intron|||||||||||212|1||HGNC|HGNC:4823,-|non_coding_transcript_exon_variant|MODIFIER||ENSG00000290010|Transcript|ENST00000702457|lncRNA|1/1||||5|||||||-1|||,-|upstream_gene_variant|MODIFIER||ENSG00000290038|Transcript|ENST00000702607|lncRNA|||||||||||3826|-1|||\tGT:DP:AD:GQ:PL:RNC\t0/1:17:13,4:6:5,0,31:..", - "chr16\t274052\tchr16_274052_A_G\tA\tG\t28\t.\tAF=1;AQ=28;AC=2;cadd_raw=-2;cadd_phred=-2;CSQ=G|synonymous_variant&NMD_transcript_variant|LOW|RGS11|ENSG00000076344|Transcript|ENST00000168869|nonsense_mediated_decay|5/15||||353|250|84|L|Tta/Cta|||-1||HGNC|HGNC:9993,G|downstream_gene_variant|MODIFIER|FAM234A|ENSG00000167930|Transcript|ENST00000301679|protein_coding|||||||||||3972|1||HGNC|HGNC:14163,G|synonymous_variant|LOW|RGS11|ENSG00000076344|Transcript|ENST00000316163|protein_coding|6/17||||434|357|119|D|gaT/gaC|||-1||HGNC|HGNC:9993,G|synonymous_variant|LOW|RGS11|ENSG00000076344|Transcript|ENST00000359740|protein_coding|5/16||||387|387|129|D|gaT/gaC|||-1||HGNC|HGNC:9993,G|synonymous_variant|LOW|RGS11|ENSG00000076344|Transcript|ENST00000397770|protein_coding|6/17||||453|420|140|D|gaT/gaC|||-1||HGNC|HGNC:9993,G|downstream_gene_variant|MODIFIER|RGS11|ENSG00000076344|Transcript|ENST00000472466|retained_intron|||||||||||887|-1||HGNC|HGNC:9993,G|non_coding_transcript_exon_variant|MODIFIER|RGS11|ENSG00000076344|Transcript|ENST00000477143|retained_intron|1/9||||905|||||||-1||HGNC|HGNC:9993,G|non_coding_transcript_exon_variant|MODIFIER|RGS11|ENSG00000076344|Transcript|ENST00000481672|retained_intron|2/11||||110|||||||-1||HGNC|HGNC:9993,G|non_coding_transcript_exon_variant|MODIFIER|RGS11|ENSG00000076344|Transcript|ENST00000493449|retained_intron|5/9||||1199|||||||-1||HGNC|HGNC:9993,G|downstream_gene_variant|MODIFIER|FAM234A|ENSG00000167930|Transcript|ENST00000600536|nonsense_mediated_decay|||||||||||4109|1||HGNC|HGNC:14163,G|downstream_gene_variant|MODIFIER|FAM234A|ENSG00000167930|Transcript|ENST00000653392|nonsense_mediated_decay|||||||||||4216|1||HGNC|HGNC:14163,G|downstream_gene_variant|MODIFIER|FAM234A|ENSG00000167930|Transcript|ENST00000654053|nonsense_mediated_decay|||||||||||4154|1||HGNC|HGNC:14163,G|downstream_gene_variant|MODIFIER|FAM234A|ENSG00000167930|Transcript|ENST00000659283|nonsense_mediated_decay|||||||||||1869|1||HGNC|HGNC:14163,G|downstream_gene_variant|MODIFIER|FAM234A|ENSG00000167930|Transcript|ENST00000666018|nonsense_mediated_decay|||||||||||4097|1||HGNC|HGNC:14163\tGT:DP:AD:GQ:PL:RNC\t1/1:32:0,32:26:28,29,0:..", - "chr16\t286660\tchr16_286660_G_A\tG\tA\t25\t.\tAF=1;AQ=25;AC=2;cadd_raw=-2;cadd_phred=-2;CSQ=A|synonymous_variant|LOW|PDIA2|ENSG00000185615|Transcript|ENST00000219406|protein_coding|9/11||||1353|1347|449|T|acG/acA|||1||HGNC|HGNC:14180,A|downstream_gene_variant|MODIFIER|ARHGDIG|ENSG00000242173|Transcript|ENST00000219409|protein_coding|||||||||||3650|1||HGNC|HGNC:680,A|downstream_gene_variant|MODIFIER|AXIN1|ENSG00000103126|Transcript|ENST00000262320|protein_coding|||||||||||780|-1||HGNC|HGNC:903,A|downstream_gene_variant|MODIFIER|AXIN1|ENSG00000103126|Transcript|ENST00000354866|protein_coding|||||||||||781|-1||HGNC|HGNC:903,A|synonymous_variant|LOW|PDIA2|ENSG00000185615|Transcript|ENST00000404312|protein_coding|9/11||||1343|1338|446|T|acG/acA|||1||HGNC|HGNC:14180,A|downstream_gene_variant|MODIFIER|ARHGDIG|ENSG00000242173|Transcript|ENST00000414650|protein_coding|||||||||||3850|1|cds_end_NF|HGNC|HGNC:680,A|synonymous_variant|LOW|PDIA2|ENSG00000185615|Transcript|ENST00000435833|protein_coding|3/5||||234|234|78|T|acG/acA|||1|cds_start_NF|HGNC|HGNC:14180,A|downstream_gene_variant|MODIFIER|ARHGDIG|ENSG00000242173|Transcript|ENST00000447871|protein_coding|||||||||||3972|1|cds_end_NF|HGNC|HGNC:680,A|downstream_gene_variant|MODIFIER|PDIA2|ENSG00000185615|Transcript|ENST00000456379|protein_coding|||||||||||1520|1|cds_start_NF&cds_end_NF|HGNC|HGNC:14180,A|downstream_gene_variant|MODIFIER|AXIN1|ENSG00000103126|Transcript|ENST00000457798|protein_coding|||||||||||1530|-1|cds_start_NF|HGNC|HGNC:903,A|downstream_gene_variant|MODIFIER|AXIN1|ENSG00000103126|Transcript|ENST00000461023|retained_intron|||||||||||780|-1||HGNC|HGNC:903,A|downstream_gene_variant|MODIFIER|PDIA2|ENSG00000185615|Transcript|ENST00000462950|protein_coding_CDS_not_defined|||||||||||1084|1||HGNC|HGNC:14180,A|non_coding_transcript_exon_variant|MODIFIER|PDIA2|ENSG00000185615|Transcript|ENST00000467212|retained_intron|8/10||||1418|||||||1||HGNC|HGNC:14180,A|downstream_gene_variant|MODIFIER|ARHGDIG|ENSG00000242173|Transcript|ENST00000477621|retained_intron|||||||||||3820|1||HGNC|HGNC:680,A|non_coding_transcript_exon_variant|MODIFIER|PDIA2|ENSG00000185615|Transcript|ENST00000482665|retained_intron|5/7||||1630|||||||1||HGNC|HGNC:14180\tGT:DP:AD:GQ:PL:RNC\t1/1:22:0,22:19:25,19,0:..", - "chr16\t309953\tchr16_309953_A_G\tA\tG\t33\t.\tAF=0.5;AQ=33;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=G|intron_variant|MODIFIER|AXIN1|ENSG00000103126|Transcript|ENST00000262320|protein_coding||4/10||||||||||-1||HGNC|HGNC:903,G|intron_variant|MODIFIER|AXIN1|ENSG00000103126|Transcript|ENST00000354866|protein_coding||4/9||||||||||-1||HGNC|HGNC:903,G|intron_variant&non_coding_transcript_variant|MODIFIER|AXIN1|ENSG00000103126|Transcript|ENST00000461023|retained_intron||3/7||||||||||-1||HGNC|HGNC:903,G|intron_variant&non_coding_transcript_variant|MODIFIER|AXIN1|ENSG00000103126|Transcript|ENST00000481769|protein_coding_CDS_not_defined||3/4||||||||||-1||HGNC|HGNC:903\tGT:DP:AD:GQ:PL:RNC\t0/1:11:6,5:33:33,0,44:..", - "chr16\t346264\tchr16_346264_A_G\tA\tG\t31\t.\tAF=0.5;AQ=31;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=G|synonymous_variant|LOW|AXIN1|ENSG00000103126|Transcript|ENST00000262320|protein_coding|2/11||||1198|762|254|D|gaT/gaC|||-1||HGNC|HGNC:903,G|synonymous_variant|LOW|AXIN1|ENSG00000103126|Transcript|ENST00000354866|protein_coding|2/10||||924|762|254|D|gaT/gaC|||-1||HGNC|HGNC:903,G|non_coding_transcript_exon_variant|MODIFIER|AXIN1|ENSG00000103126|Transcript|ENST00000461023|retained_intron|1/8||||59|||||||-1||HGNC|HGNC:903,G|intron_variant&non_coding_transcript_variant|MODIFIER|AXIN1|ENSG00000103126|Transcript|ENST00000481769|protein_coding_CDS_not_defined||1/4||||||||||-1||HGNC|HGNC:903\tGT:DP:AD:GQ:PL:RNC\t0/1:26:15,11:31:31,0,40:..", - "chr16\t377013\tchr16_377013_G_C\tG\tC\t28\t.\tAF=0.5;AQ=28;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=C|intron_variant|MODIFIER|PGAP6|ENSG00000129925|Transcript|ENST00000250930|protein_coding||4/12||||||||||-1||HGNC|HGNC:17205,C|upstream_gene_variant|MODIFIER|PGAP6|ENSG00000129925|Transcript|ENST00000424078|protein_coding|||||||||||2162|-1|cds_start_NF|HGNC|HGNC:17205,C|intron_variant|MODIFIER|PGAP6|ENSG00000129925|Transcript|ENST00000427313|protein_coding||4/4||||||||||-1|cds_end_NF|HGNC|HGNC:17205,C|intron_variant|MODIFIER|PGAP6|ENSG00000129925|Transcript|ENST00000431232|protein_coding||4/12||||||||||-1||HGNC|HGNC:17205,C|upstream_gene_variant|MODIFIER|PGAP6|ENSG00000129925|Transcript|ENST00000448854|protein_coding|||||||||||1798|-1|cds_start_NF|HGNC|HGNC:17205,C|upstream_gene_variant|MODIFIER|PGAP6|ENSG00000129925|Transcript|ENST00000467452|retained_intron|||||||||||1938|-1||HGNC|HGNC:17205,C|upstream_gene_variant|MODIFIER|PGAP6|ENSG00000129925|Transcript|ENST00000475348|retained_intron|||||||||||538|-1||HGNC|HGNC:17205,C|downstream_gene_variant|MODIFIER|PGAP6|ENSG00000129925|Transcript|ENST00000476735|protein_coding_CDS_not_defined|||||||||||95|-1||HGNC|HGNC:17205\tGT:DP:AD:GQ:PL:RNC\t0/1:17:11,6:29:28,0,42:..", - "chr16\t520623\tchr16_520623_G_A\tG\tA\t34\t.\tAF=0.5;AQ=34;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=A|intron_variant|MODIFIER|RAB11FIP3|ENSG00000090565|Transcript|ENST00000262305|protein_coding||13/13||||||||||1||HGNC|HGNC:17224,A|intron_variant|MODIFIER|RAB11FIP3|ENSG00000090565|Transcript|ENST00000434585|protein_coding||14/14||||||||||1||HGNC|HGNC:17224,A|intron_variant|MODIFIER|RAB11FIP3|ENSG00000090565|Transcript|ENST00000450428|protein_coding||11/11||||||||||1||HGNC|HGNC:17224,A|downstream_gene_variant|MODIFIER|RAB11FIP3|ENSG00000090565|Transcript|ENST00000461009|retained_intron|||||||||||1515|1||HGNC|HGNC:17224,A|downstream_gene_variant|MODIFIER|RAB11FIP3|ENSG00000090565|Transcript|ENST00000464263|retained_intron|||||||||||861|1||HGNC|HGNC:17224,A|downstream_gene_variant|MODIFIER|RAB11FIP3|ENSG00000090565|Transcript|ENST00000487899|retained_intron|||||||||||1605|1||HGNC|HGNC:17224,A|downstream_gene_variant|MODIFIER|LINC00235|ENSG00000277142|Transcript|ENST00000622160|lncRNA|||||||||||4532|-1||HGNC|HGNC:14138\tGT:DP:AD:GQ:PL:RNC\t0/1:18:9,9:34:34,0,44:..", - "chr16\t551632\tchr16_551632_T_C\tT\tC\t21\t.\tAF=1;AQ=21;AC=2;cadd_raw=-2;cadd_phred=-2;CSQ=C|synonymous_variant|LOW|CAPN15|ENSG00000103326|Transcript|ENST00000219611|protein_coding|9/14||||2820|2313|771|G|ggT/ggC|||1||HGNC|HGNC:11182,C|downstream_gene_variant|MODIFIER|CAPN15|ENSG00000103326|Transcript|ENST00000562370|protein_coding|||||||||||4240|1|cds_end_NF|HGNC|HGNC:11182,C|upstream_gene_variant|MODIFIER|CAPN15|ENSG00000103326|Transcript|ENST00000565010|retained_intron|||||||||||665|1||HGNC|HGNC:11182,C|intron_variant&non_coding_transcript_variant|MODIFIER||ENSG00000261691|Transcript|ENST00000565879|lncRNA||1/1||||||||||-1|||,C|upstream_gene_variant|MODIFIER|CAPN15|ENSG00000103326|Transcript|ENST00000566977|protein_coding|||||||||||1123|1|cds_start_NF|HGNC|HGNC:11182,C|downstream_gene_variant|MODIFIER|CAPN15|ENSG00000103326|Transcript|ENST00000568988|protein_coding|||||||||||3423|1|cds_end_NF|HGNC|HGNC:11182,C|downstream_gene_variant|MODIFIER|CAPN15|ENSG00000103326|Transcript|ENST00000637507|protein_coding|||||||||||3601|1|cds_end_NF|HGNC|HGNC:11182\tGT:DP:AD:GQ:PL:RNC\t1/1:13:0,13:15:21,16,0:..", - "chr16\t582180\tchr16_582180_G_C\tG\tC\t25\t.\tAF=1;AQ=25;AC=2;cadd_raw=-2;cadd_phred=-2;CSQ=C|intron_variant|MODIFIER|PIGQ|ENSG00000007541|Transcript|ENST00000026218|protein_coding||9/9||||||||||1||HGNC|HGNC:14135,C|intron_variant|MODIFIER|PIGQ|ENSG00000007541|Transcript|ENST00000321878|protein_coding||9/10||||||||||1||HGNC|HGNC:14135,C|intron_variant|MODIFIER|PIGQ|ENSG00000007541|Transcript|ENST00000409527|protein_coding||10/11||||||||||1||HGNC|HGNC:14135,C|intron_variant&NMD_transcript_variant|MODIFIER|PIGQ|ENSG00000007541|Transcript|ENST00000420990|nonsense_mediated_decay||6/7||||||||||1|cds_start_NF|HGNC|HGNC:14135,C|downstream_gene_variant|MODIFIER|PIGQ|ENSG00000007541|Transcript|ENST00000422307|protein_coding|||||||||||4946|1||HGNC|HGNC:14135,C|intron_variant&NMD_transcript_variant|MODIFIER|PIGQ|ENSG00000007541|Transcript|ENST00000443147|nonsense_mediated_decay||10/11||||||||||1||HGNC|HGNC:14135,C|downstream_gene_variant|MODIFIER|PIGQ|ENSG00000007541|Transcript|ENST00000470411|protein_coding|||||||||||4963|1||HGNC|HGNC:14135,C|non_coding_transcript_exon_variant|MODIFIER|PIGQ|ENSG00000007541|Transcript|ENST00000476438|retained_intron|1/2||||420|||||||1||HGNC|HGNC:14135,C|intron_variant&non_coding_transcript_variant|MODIFIER|PIGQ|ENSG00000007541|Transcript|ENST00000480424|retained_intron||3/4||||||||||1||HGNC|HGNC:14135,C|downstream_gene_variant|MODIFIER|PIGQ|ENSG00000007541|Transcript|ENST00000537901|retained_intron|||||||||||3378|1||HGNC|HGNC:14135,C|intron_variant|MODIFIER|PIGQ|ENSG00000007541|Transcript|ENST00000540241|protein_coding||2/3||||||||||1|cds_start_NF|HGNC|HGNC:14135,C|upstream_gene_variant|MODIFIER|PIGQ|ENSG00000007541|Transcript|ENST00000540548|protein_coding_CDS_not_defined|||||||||||310|1||HGNC|HGNC:14135,C|downstream_gene_variant|MODIFIER|PIGQ|ENSG00000007541|Transcript|ENST00000544860|protein_coding_CDS_not_defined|||||||||||3337|1||HGNC|HGNC:14135,C|upstream_gene_variant|MODIFIER|PIGQ|ENSG00000007541|Transcript|ENST00000634341|retained_intron|||||||||||697|1||HGNC|HGNC:14135,C|intron_variant&NMD_transcript_variant|MODIFIER|PIGQ|ENSG00000007541|Transcript|ENST00000635205|nonsense_mediated_decay||3/4||||||||||1|cds_start_NF|HGNC|HGNC:14135,C|intron_variant&NMD_transcript_variant|MODIFIER|PIGQ|ENSG00000007541|Transcript|ENST00000635909|nonsense_mediated_decay||8/9||||||||||1|cds_start_NF|HGNC|HGNC:14135,C|downstream_gene_variant|MODIFIER|PIGQ|ENSG00000007541|Transcript|ENST00000635935|protein_coding_CDS_not_defined|||||||||||1403|1||HGNC|HGNC:14135,C|intron_variant&NMD_transcript_variant|MODIFIER|PIGQ|ENSG00000007541|Transcript|ENST00000636005|nonsense_mediated_decay||8/9||||||||||1|cds_start_NF|HGNC|HGNC:14135,C|intron_variant&NMD_transcript_variant|MODIFIER|PIGQ|ENSG00000007541|Transcript|ENST00000636657|nonsense_mediated_decay||10/11||||||||||1||HGNC|HGNC:14135,C|intron_variant&NMD_transcript_variant|MODIFIER|PIGQ|ENSG00000007541|Transcript|ENST00000637468|nonsense_mediated_decay||6/7||||||||||1|cds_start_NF|HGNC|HGNC:14135,C|downstream_gene_variant|MODIFIER|PIGQ|ENSG00000007541|Transcript|ENST00000638143|nonsense_mediated_decay|||||||||||1258|1|cds_start_NF|HGNC|HGNC:14135,C|upstream_gene_variant|MODIFIER|PIGQ|ENSG00000007541|Transcript|ENST00000638152|protein_coding_CDS_not_defined|||||||||||1404|1||HGNC|HGNC:14135\tGT:DP:AD:GQ:PL:RNC\t1/1:6:0,6:9:25,8,0:..", - "chr16\t627629\tchr16_627629_T_C\tT\tC\t20\t.\tAF=1;AQ=20;AC=2;cadd_raw=-2;cadd_phred=-2;CSQ=C|3_prime_UTR_variant|MODIFIER|RAB40C|ENSG00000197562|Transcript|ENST00000248139|protein_coding|6/6||||1079|||||||1||HGNC|HGNC:18285,C|upstream_gene_variant|MODIFIER|WFIKKN1|ENSG00000127578|Transcript|ENST00000319070|protein_coding|||||||||||3356|1||HGNC|HGNC:30912,C|downstream_gene_variant|MODIFIER|RAB40C|ENSG00000197562|Transcript|ENST00000509637|nonsense_mediated_decay|||||||||||1636|1|cds_start_NF|HGNC|HGNC:18285,C|3_prime_UTR_variant|MODIFIER|RAB40C|ENSG00000197562|Transcript|ENST00000535977|protein_coding|7/7||||1075|||||||1||HGNC|HGNC:18285,C|3_prime_UTR_variant|MODIFIER|RAB40C|ENSG00000197562|Transcript|ENST00000538492|protein_coding|7/7||||927|||||||1||HGNC|HGNC:18285,C|3_prime_UTR_variant|MODIFIER|RAB40C|ENSG00000197562|Transcript|ENST00000539661|protein_coding|7/7||||967|||||||1||HGNC|HGNC:18285,C|non_coding_transcript_exon_variant|MODIFIER|RAB40C|ENSG00000197562|Transcript|ENST00000561781|retained_intron|2/2||||796|||||||1||HGNC|HGNC:18285,C|downstream_gene_variant|MODIFIER|RAB40C|ENSG00000197562|Transcript|ENST00000563109|protein_coding|||||||||||46|1|cds_start_NF&cds_end_NF|HGNC|HGNC:18285,C|downstream_gene_variant|MODIFIER|RAB40C|ENSG00000197562|Transcript|ENST00000564703|protein_coding|||||||||||1512|1|cds_end_NF|HGNC|HGNC:18285,C|downstream_gene_variant|MODIFIER|RAB40C|ENSG00000197562|Transcript|ENST00000565511|nonsense_mediated_decay|||||||||||1546|1||HGNC|HGNC:18285,C|downstream_gene_variant|MODIFIER|RAB40C|ENSG00000197562|Transcript|ENST00000566290|protein_coding|||||||||||214|1|cds_end_NF|HGNC|HGNC:18285,C|downstream_gene_variant|MODIFIER|RAB40C|ENSG00000197562|Transcript|ENST00000568586|protein_coding|||||||||||1508|1|cds_end_NF|HGNC|HGNC:18285,C|downstream_gene_variant|MODIFIER|RAB40C|ENSG00000197562|Transcript|ENST00000569575|protein_coding|||||||||||1603|1|cds_end_NF|HGNC|HGNC:18285,C|upstream_gene_variant|MODIFIER|WFIKKN1|ENSG00000127578|Transcript|ENST00000573440|retained_intron|||||||||||1610|1||HGNC|HGNC:30912\tGT:DP:AD:GQ:PL:RNC\t1/1:13:0,13:13:20,13,0:..", - "chr16\t638557\tchr16_638557_A_C\tA\tC\t24\t.\tAF=1;AQ=24;AC=2;cadd_raw=-2;cadd_phred=-2;CSQ=C|upstream_gene_variant|MODIFIER|METTL26|ENSG00000130731|Transcript|ENST00000301686|protein_coding|||||||||||2252|-1||HGNC|HGNC:14141,C|upstream_gene_variant|MODIFIER|MCRIP2|ENSG00000172366|Transcript|ENST00000307650|protein_coding|||||||||||3271|1||HGNC|HGNC:14142,C|downstream_gene_variant|MODIFIER|WFIKKN1|ENSG00000127578|Transcript|ENST00000319070|protein_coding|||||||||||4440|1||HGNC|HGNC:30912,C|upstream_gene_variant|MODIFIER|METTL26|ENSG00000130731|Transcript|ENST00000338401|protein_coding|||||||||||2215|-1||HGNC|HGNC:14141,C|upstream_gene_variant|MODIFIER|METTL26|ENSG00000130731|Transcript|ENST00000397664|protein_coding|||||||||||2206|-1||HGNC|HGNC:14141,C|upstream_gene_variant|MODIFIER|METTL26|ENSG00000130731|Transcript|ENST00000397665|protein_coding|||||||||||2267|-1||HGNC|HGNC:14141,C|upstream_gene_variant|MODIFIER|METTL26|ENSG00000130731|Transcript|ENST00000397666|protein_coding|||||||||||2255|-1||HGNC|HGNC:14141,C|upstream_gene_variant|MODIFIER|METTL26|ENSG00000130731|Transcript|ENST00000448973|retained_intron|||||||||||2247|-1||HGNC|HGNC:14141,C|upstream_gene_variant|MODIFIER|METTL26|ENSG00000130731|Transcript|ENST00000456420|nonsense_mediated_decay|||||||||||2318|-1|cds_start_NF|HGNC|HGNC:14141,C|upstream_gene_variant|MODIFIER|MCRIP2|ENSG00000172366|Transcript|ENST00000474840|nonsense_mediated_decay|||||||||||3372|1||HGNC|HGNC:14142,C|upstream_gene_variant|MODIFIER|MCRIP2|ENSG00000172366|Transcript|ENST00000491999|nonsense_mediated_decay|||||||||||3289|1||HGNC|HGNC:14142,C|upstream_gene_variant|MODIFIER|METTL26|ENSG00000130731|Transcript|ENST00000564039|nonsense_mediated_decay|||||||||||2279|-1|cds_start_NF|HGNC|HGNC:14141,C|upstream_gene_variant|MODIFIER|METTL26|ENSG00000130731|Transcript|ENST00000565163|protein_coding|||||||||||2297|-1|cds_start_NF&cds_end_NF|HGNC|HGNC:14141,C|upstream_gene_variant|MODIFIER|METTL26|ENSG00000130731|Transcript|ENST00000565799|retained_intron|||||||||||2290|-1||HGNC|HGNC:14141,C|upstream_gene_variant|MODIFIER|METTL26|ENSG00000130731|Transcript|ENST00000568077|nonsense_mediated_decay|||||||||||2226|-1||HGNC|HGNC:14141,C|upstream_gene_variant|MODIFIER|METTL26|ENSG00000130731|Transcript|ENST00000568773|protein_coding|||||||||||2322|-1|cds_start_NF|HGNC|HGNC:14141,C|upstream_gene_variant|MODIFIER|METTL26|ENSG00000130731|Transcript|ENST00000568830|protein_coding|||||||||||2199|-1|cds_end_NF|HGNC|HGNC:14141,C|downstream_gene_variant|MODIFIER|WFIKKN1|ENSG00000127578|Transcript|ENST00000573440|retained_intron|||||||||||4441|1||HGNC|HGNC:30912,C|intron_variant&non_coding_transcript_variant|MODIFIER|MCRIP2|ENSG00000172366|Transcript|ENST00000611328|protein_coding_CDS_not_defined||1/3||||||||||1||HGNC|HGNC:14142,C|upstream_gene_variant|MODIFIER|METTL26|ENSG00000130731|Transcript|ENST00000614890|protein_coding|||||||||||2191|-1||HGNC|HGNC:14141,C|upstream_gene_variant|MODIFIER|MCRIP2|ENSG00000172366|Transcript|ENST00000615744|protein_coding_CDS_not_defined|||||||||||3894|1||HGNC|HGNC:14142,C|non_coding_transcript_exon_variant|MODIFIER|MCRIP2|ENSG00000172366|Transcript|ENST00000619114|protein_coding_CDS_not_defined|2/2||||576|||||||1||HGNC|HGNC:14142,C|non_coding_transcript_exon_variant|MODIFIER|MCRIP2|ENSG00000172366|Transcript|ENST00000619377|protein_coding_CDS_not_defined|2/2||||664|||||||1||HGNC|HGNC:14142,C|upstream_gene_variant|MODIFIER|MCRIP2|ENSG00000172366|Transcript|ENST00000620462|retained_intron|||||||||||3926|1||HGNC|HGNC:14142,C|upstream_gene_variant|MODIFIER|MCRIP2|ENSG00000172366|Transcript|ENST00000629534|protein_coding|||||||||||3292|1||HGNC|HGNC:14142\tGT:DP:AD:GQ:PL:RNC\t1/1:14:0,14:16:24,17,0:..", - "chr16\t655844\tchr16_655844_T_C\tT\tC\t23\t.\tAF=1;AQ=23;AC=2;cadd_raw=-2;cadd_phred=-2;CSQ=C|synonymous_variant|LOW|WDR90|ENSG00000161996|Transcript|ENST00000293879|protein_coding|17/41||||1973|1921|641|L|Ttg/Ctg|||1||HGNC|HGNC:26960,C|non_coding_transcript_exon_variant|MODIFIER|WDR90|ENSG00000161996|Transcript|ENST00000420061|retained_intron|17/17||||1985|||||||1||HGNC|HGNC:26960,C|non_coding_transcript_exon_variant|MODIFIER|WDR90|ENSG00000161996|Transcript|ENST00000546516|retained_intron|3/20||||614|||||||1||HGNC|HGNC:26960,C|upstream_gene_variant|MODIFIER|WDR90|ENSG00000161996|Transcript|ENST00000547407|retained_intron|||||||||||431|1||HGNC|HGNC:26960,C|upstream_gene_variant|MODIFIER|WDR90|ENSG00000161996|Transcript|ENST00000548844|protein_coding_CDS_not_defined|||||||||||2716|1||HGNC|HGNC:26960,C|upstream_gene_variant|MODIFIER|WDR90|ENSG00000161996|Transcript|ENST00000548859|retained_intron|||||||||||589|1||HGNC|HGNC:26960,C|synonymous_variant|LOW|WDR90|ENSG00000161996|Transcript|ENST00000549091|protein_coding|17/41||||2013|1921|641|L|Ttg/Ctg|||1||HGNC|HGNC:26960,C|non_coding_transcript_exon_variant|MODIFIER|WDR90|ENSG00000161996|Transcript|ENST00000549648|retained_intron|17/17||||1988|||||||1||HGNC|HGNC:26960,C|downstream_gene_variant|MODIFIER|WDR90|ENSG00000161996|Transcript|ENST00000550593|retained_intron|||||||||||2374|1||HGNC|HGNC:26960,C|upstream_gene_variant|MODIFIER|WDR90|ENSG00000161996|Transcript|ENST00000550739|protein_coding|||||||||||3401|1|cds_start_NF&cds_end_NF|HGNC|HGNC:26960,C|non_coding_transcript_exon_variant|MODIFIER|WDR90|ENSG00000161996|Transcript|ENST00000552648|protein_coding_CDS_not_defined|4/7||||455|||||||1||HGNC|HGNC:26960,C|upstream_gene_variant|MODIFIER|WDR90|ENSG00000161996|Transcript|ENST00000552683|retained_intron|||||||||||2014|1||HGNC|HGNC:26960,C|upstream_gene_variant|MODIFIER|WDR90|ENSG00000161996|Transcript|ENST00000552728|nonsense_mediated_decay|||||||||||577|1|cds_start_NF|HGNC|HGNC:26960,C|non_coding_transcript_exon_variant|MODIFIER|WDR90|ENSG00000161996|Transcript|ENST00000552943|retained_intron|15/26||||3591|||||||1||HGNC|HGNC:26960,C|non_coding_transcript_exon_variant|MODIFIER||ENSG00000262528|Transcript|ENST00000573609|lncRNA|1/2||||351|||||||-1|||\tGT:DP:AD:GQ:PL:RNC\t1/1:14:0,14:16:23,17,0:..", - "chr16\t667523\tchr16_667523_G_T\tG\tT\t27\t.\tAF=1;AQ=27;AC=2;cadd_raw=-2;cadd_phred=-2;CSQ=T|synonymous_variant|LOW|WDR90|ENSG00000161996|Transcript|ENST00000293879|protein_coding|41/41||||5233|5181|1727|P|ccG/ccT|||1||HGNC|HGNC:26960,T|upstream_gene_variant|MODIFIER|RHOT2|ENSG00000140983|Transcript|ENST00000315082|protein_coding|||||||||||609|1||HGNC|HGNC:21169,T|synonymous_variant|LOW|WDR90|ENSG00000161996|Transcript|ENST00000315764|protein_coding|6/6||||1147|834|278|P|ccG/ccT|||1||HGNC|HGNC:26960,T|downstream_gene_variant|MODIFIER|WDR90|ENSG00000161996|Transcript|ENST00000546516|retained_intron|||||||||||4090|1||HGNC|HGNC:26960,T|missense_variant|MODERATE|WDR90|ENSG00000161996|Transcript|ENST00000546896|protein_coding|2/2||||89|89|30|R/L|cGt/cTt|||1|cds_start_NF|HGNC|HGNC:26960,T|downstream_gene_variant|MODIFIER|WDR90|ENSG00000161996|Transcript|ENST00000546923|retained_intron|||||||||||4787|1||HGNC|HGNC:26960,T|non_coding_transcript_exon_variant|MODIFIER|WDR90|ENSG00000161996|Transcript|ENST00000547407|retained_intron|24/24||||3541|||||||1||HGNC|HGNC:26960,T|downstream_gene_variant|MODIFIER|WDR90|ENSG00000161996|Transcript|ENST00000547543|protein_coding_CDS_not_defined|||||||||||778|1||HGNC|HGNC:26960,T|synonymous_variant|LOW|WDR90|ENSG00000161996|Transcript|ENST00000547944|protein_coding|7/7||||1365|978|326|P|ccG/ccT|||1||HGNC|HGNC:26960,T|downstream_gene_variant|MODIFIER|WDR90|ENSG00000161996|Transcript|ENST00000548448|retained_intron|||||||||||1162|1||HGNC|HGNC:26960,T|downstream_gene_variant|MODIFIER|WDR90|ENSG00000161996|Transcript|ENST00000548603|protein_coding_CDS_not_defined|||||||||||4086|1||HGNC|HGNC:26960,T|non_coding_transcript_exon_variant|MODIFIER|WDR90|ENSG00000161996|Transcript|ENST00000549024|retained_intron|12/12||||1951|||||||1||HGNC|HGNC:26960,T|synonymous_variant|LOW|WDR90|ENSG00000161996|Transcript|ENST00000549091|protein_coding|41/41||||5279|5187|1729|P|ccG/ccT|||1||HGNC|HGNC:26960,T|3_prime_UTR_variant|MODIFIER|WDR90|ENSG00000161996|Transcript|ENST00000551100|protein_coding|3/3||||315|||||||1|cds_start_NF|HGNC|HGNC:26960,T|downstream_gene_variant|MODIFIER|WDR90|ENSG00000161996|Transcript|ENST00000552683|retained_intron|||||||||||4085|1||HGNC|HGNC:26960,T|3_prime_UTR_variant&NMD_transcript_variant|MODIFIER|WDR90|ENSG00000161996|Transcript|ENST00000552728|nonsense_mediated_decay|22/22||||2826|||||||1|cds_start_NF|HGNC|HGNC:26960,T|non_coding_transcript_exon_variant|MODIFIER|WDR90|ENSG00000161996|Transcript|ENST00000553080|retained_intron|6/6||||1635|||||||1||HGNC|HGNC:26960,T|upstream_gene_variant|MODIFIER|RHOT2|ENSG00000140983|Transcript|ENST00000561711|retained_intron|||||||||||4394|1||HGNC|HGNC:21169,T|upstream_gene_variant|MODIFIER|RHOT2|ENSG00000140983|Transcript|ENST00000561929|protein_coding|||||||||||686|1|cds_start_NF&cds_end_NF|HGNC|HGNC:21169,T|upstream_gene_variant|MODIFIER|RHOT2|ENSG00000140983|Transcript|ENST00000561983|nonsense_mediated_decay|||||||||||582|1||HGNC|HGNC:21169,T|upstream_gene_variant|MODIFIER|RHOT2|ENSG00000140983|Transcript|ENST00000562333|nonsense_mediated_decay|||||||||||664|1||HGNC|HGNC:21169,T|upstream_gene_variant|MODIFIER|RHOT2|ENSG00000140983|Transcript|ENST00000562598|retained_intron|||||||||||659|1||HGNC|HGNC:21169,T|upstream_gene_variant|MODIFIER|RHOT2|ENSG00000140983|Transcript|ENST00000562708|retained_intron|||||||||||589|1||HGNC|HGNC:21169,T|upstream_gene_variant|MODIFIER|RHOT2|ENSG00000140983|Transcript|ENST00000563134|protein_coding|||||||||||583|1|cds_end_NF|HGNC|HGNC:21169,T|upstream_gene_variant|MODIFIER|RHOT2|ENSG00000140983|Transcript|ENST00000563637|nonsense_mediated_decay|||||||||||628|1||HGNC|HGNC:21169,T|upstream_gene_variant|MODIFIER|RHOT2|ENSG00000140983|Transcript|ENST00000563776|retained_intron|||||||||||582|1||HGNC|HGNC:21169,T|upstream_gene_variant|MODIFIER|RHOT2|ENSG00000140983|Transcript|ENST00000565004|retained_intron|||||||||||3559|1||HGNC|HGNC:21169,T|upstream_gene_variant|MODIFIER|RHOT2|ENSG00000140983|Transcript|ENST00000566214|nonsense_mediated_decay|||||||||||628|1||HGNC|HGNC:21169,T|upstream_gene_variant|MODIFIER|RHOT2|ENSG00000140983|Transcript|ENST00000566965|retained_intron|||||||||||1037|1||HGNC|HGNC:21169,T|upstream_gene_variant|MODIFIER|RHOT2|ENSG00000140983|Transcript|ENST00000567017|retained_intron|||||||||||639|1||HGNC|HGNC:21169,T|upstream_gene_variant|MODIFIER|RHOT2|ENSG00000140983|Transcript|ENST00000567589|retained_intron|||||||||||3005|1||HGNC|HGNC:21169,T|upstream_gene_variant|MODIFIER|RHOT2|ENSG00000140983|Transcript|ENST00000568636|retained_intron|||||||||||1135|1||HGNC|HGNC:21169,T|upstream_gene_variant|MODIFIER|RHOT2|ENSG00000140983|Transcript|ENST00000568950|retained_intron|||||||||||655|1||HGNC|HGNC:21169,T|upstream_gene_variant|MODIFIER|RHOT2|ENSG00000140983|Transcript|ENST00000569358|retained_intron|||||||||||2932|1||HGNC|HGNC:21169,T|upstream_gene_variant|MODIFIER|RHOT2|ENSG00000140983|Transcript|ENST00000569675|retained_intron|||||||||||612|1||HGNC|HGNC:21169,T|upstream_gene_variant|MODIFIER|RHOT2|ENSG00000140983|Transcript|ENST00000569706|retained_intron|||||||||||609|1||HGNC|HGNC:21169,T|upstream_gene_variant|MODIFIER|RHOT2|ENSG00000140983|Transcript|ENST00000569943|protein_coding_CDS_not_defined|||||||||||830|1||HGNC|HGNC:21169,T|upstream_gene_variant|MODIFIER|RHOT2|ENSG00000140983|Transcript|ENST00000570092|retained_intron|||||||||||601|1||HGNC|HGNC:21169,T|upstream_gene_variant|MODIFIER|RHOT2|ENSG00000140983|Transcript|ENST00000570280|nonsense_mediated_decay|||||||||||630|1||HGNC|HGNC:21169,T|upstream_gene_variant|MODIFIER|RHOT2|ENSG00000140983|Transcript|ENST00000602564|retained_intron|||||||||||657|1||HGNC|HGNC:21169,T|upstream_gene_variant|MODIFIER|RHOT2|ENSG00000140983|Transcript|ENST00000697194|protein_coding|||||||||||577|1||HGNC|HGNC:21169\tGT:DP:AD:GQ:PL:RNC\t1/1:22:0,22:23:27,24,0:..", - "chr16\t690466\tchr16_690466_A_G\tA\tG\t26\t.\tAF=1;AQ=26;AC=2;cadd_raw=-2;cadd_phred=-2;CSQ=G|upstream_gene_variant|MODIFIER|WDR24|ENSG00000127580|Transcript|ENST00000248142|protein_coding|||||||||||22|-1||HGNC|HGNC:20852,G|upstream_gene_variant|MODIFIER|WDR24|ENSG00000127580|Transcript|ENST00000293883|protein_coding|||||||||||68|-1||HGNC|HGNC:20852,G|downstream_gene_variant|MODIFIER|FBXL16|ENSG00000127585|Transcript|ENST00000397621|protein_coding|||||||||||2034|-1||HGNC|HGNC:14150,G|downstream_gene_variant|MODIFIER|FBXL16|ENSG00000127585|Transcript|ENST00000562563|protein_coding|||||||||||2461|-1||HGNC|HGNC:14150,G|downstream_gene_variant|MODIFIER|FBXL16|ENSG00000127585|Transcript|ENST00000562585|protein_coding_CDS_not_defined|||||||||||4192|-1||HGNC|HGNC:14150,G|downstream_gene_variant|MODIFIER|FBXL16|ENSG00000127585|Transcript|ENST00000562648|retained_intron|||||||||||2032|-1||HGNC|HGNC:14150,G|intron_variant&non_coding_transcript_variant|MODIFIER||ENSG00000261659|Transcript|ENST00000566927|lncRNA||1/1||||||||||1|||,G|upstream_gene_variant|MODIFIER|WDR24|ENSG00000127580|Transcript|ENST00000567014|retained_intron|||||||||||3537|-1||HGNC|HGNC:20852,G|non_coding_transcript_exon_variant|MODIFIER||ENSG00000261659|Transcript|ENST00000575305|retained_intron|1/1||||1466|||||||1|||,G|upstream_gene_variant|MODIFIER|WDR24|ENSG00000127580|Transcript|ENST00000647644|protein_coding|||||||||||219|-1||HGNC|HGNC:20852\tGT:DP:AD:GQ:PL:RNC\t1/1:17:0,17:20:26,21,0:..", - "chr16\t723341\tchr16_723341_G_A\tG\tA\t23\t.\tAF=1;AQ=23;AC=2;cadd_raw=-2;cadd_phred=-2;CSQ=A|downstream_gene_variant|MODIFIER|ANTKMT|ENSG00000103254|Transcript|ENST00000219535|protein_coding|||||||||||768|1||HGNC|HGNC:14152,A|intron_variant|MODIFIER|CCDC78|ENSG00000162004|Transcript|ENST00000293889|protein_coding||11/13||||||||||-1||HGNC|HGNC:14153,A|upstream_gene_variant|MODIFIER|HAGHL|ENSG00000103253|Transcript|ENST00000341413|protein_coding|||||||||||3617|1||HGNC|HGNC:14177,A|intron_variant|MODIFIER|CCDC78|ENSG00000162004|Transcript|ENST00000345165|protein_coding||11/13||||||||||-1||HGNC|HGNC:14153,A|upstream_gene_variant|MODIFIER|HAGHL|ENSG00000103253|Transcript|ENST00000389701|retained_intron|||||||||||4064|1||HGNC|HGNC:14177,A|upstream_gene_variant|MODIFIER|HAGHL|ENSG00000103253|Transcript|ENST00000389703|protein_coding|||||||||||3765|1||HGNC|HGNC:14177,A|downstream_gene_variant|MODIFIER|CCDC78|ENSG00000162004|Transcript|ENST00000423653|protein_coding_CDS_not_defined|||||||||||1586|-1||HGNC|HGNC:14153,A|downstream_gene_variant|MODIFIER|CCDC78|ENSG00000162004|Transcript|ENST00000439619|retained_intron|||||||||||1209|-1||HGNC|HGNC:14153,A|downstream_gene_variant|MODIFIER|CCDC78|ENSG00000162004|Transcript|ENST00000460023|retained_intron|||||||||||1566|-1||HGNC|HGNC:14153,A|intron_variant&non_coding_transcript_variant|MODIFIER|CCDC78|ENSG00000162004|Transcript|ENST00000463539|retained_intron||9/11||||||||||-1||HGNC|HGNC:14153,A|intron_variant&non_coding_transcript_variant|MODIFIER|CCDC78|ENSG00000162004|Transcript|ENST00000466708|retained_intron||10/12||||||||||-1||HGNC|HGNC:14153,A|downstream_gene_variant|MODIFIER|CCDC78|ENSG00000162004|Transcript|ENST00000471861|retained_intron|||||||||||1660|-1||HGNC|HGNC:14153,A|downstream_gene_variant|MODIFIER|CCDC78|ENSG00000162004|Transcript|ENST00000474647|retained_intron|||||||||||1782|-1||HGNC|HGNC:14153,A|non_coding_transcript_exon_variant|MODIFIER|CCDC78|ENSG00000162004|Transcript|ENST00000478979|retained_intron|4/4||||2296|||||||-1||HGNC|HGNC:14153,A|non_coding_transcript_exon_variant|MODIFIER|CCDC78|ENSG00000162004|Transcript|ENST00000481804|retained_intron|4/5||||2627|||||||-1||HGNC|HGNC:14153,A|intron_variant&non_coding_transcript_variant|MODIFIER|CCDC78|ENSG00000162004|Transcript|ENST00000482152|retained_intron||3/4||||||||||-1||HGNC|HGNC:14153,A|non_coding_transcript_exon_variant|MODIFIER|CCDC78|ENSG00000162004|Transcript|ENST00000482878|retained_intron|4/4||||2699|||||||-1||HGNC|HGNC:14153,A|intron_variant&non_coding_transcript_variant|MODIFIER|CCDC78|ENSG00000162004|Transcript|ENST00000485091|retained_intron||10/11||||||||||-1||HGNC|HGNC:14153,A|downstream_gene_variant|MODIFIER|CCDC78|ENSG00000162004|Transcript|ENST00000538176|retained_intron|||||||||||1201|-1||HGNC|HGNC:14153,A|downstream_gene_variant|MODIFIER|CCDC78|ENSG00000162004|Transcript|ENST00000544996|retained_intron|||||||||||1643|-1||HGNC|HGNC:14153,A|upstream_gene_variant|MODIFIER|HAGHL|ENSG00000103253|Transcript|ENST00000549114|protein_coding|||||||||||3595|1||HGNC|HGNC:14177,A|upstream_gene_variant|MODIFIER|HAGHL|ENSG00000103253|Transcript|ENST00000561546|protein_coding|||||||||||3905|1||HGNC|HGNC:14177,A|upstream_gene_variant|MODIFIER|HAGHL|ENSG00000103253|Transcript|ENST00000561750|retained_intron|||||||||||3934|1||HGNC|HGNC:14177,A|upstream_gene_variant|MODIFIER|HAGHL|ENSG00000103253|Transcript|ENST00000562141|protein_coding|||||||||||3778|1|cds_end_NF|HGNC|HGNC:14177,A|upstream_gene_variant|MODIFIER|HAGHL|ENSG00000103253|Transcript|ENST00000562187|protein_coding|||||||||||3765|1|cds_end_NF|HGNC|HGNC:14177,A|upstream_gene_variant|MODIFIER|HAGHL|ENSG00000103253|Transcript|ENST00000563792|protein_coding|||||||||||4398|1|cds_end_NF|HGNC|HGNC:14177,A|downstream_gene_variant|MODIFIER|ANTKMT|ENSG00000103254|Transcript|ENST00000564000|protein_coding|||||||||||756|1||HGNC|HGNC:14152,A|upstream_gene_variant|MODIFIER|HAGHL|ENSG00000103253|Transcript|ENST00000564537|protein_coding|||||||||||3765|1||HGNC|HGNC:14177,A|upstream_gene_variant|MODIFIER|HAGHL|ENSG00000103253|Transcript|ENST00000564545|protein_coding|||||||||||3921|1||HGNC|HGNC:14177,A|downstream_gene_variant|MODIFIER|ANTKMT|ENSG00000103254|Transcript|ENST00000564640|retained_intron|||||||||||1029|1||HGNC|HGNC:14152,A|downstream_gene_variant|MODIFIER|ANTKMT|ENSG00000103254|Transcript|ENST00000566437|retained_intron|||||||||||833|1||HGNC|HGNC:14152,A|downstream_gene_variant|MODIFIER|ANTKMT|ENSG00000103254|Transcript|ENST00000566525|retained_intron|||||||||||752|1||HGNC|HGNC:14152,A|upstream_gene_variant|MODIFIER|HAGHL|ENSG00000103253|Transcript|ENST00000567414|protein_coding|||||||||||3952|1|cds_end_NF|HGNC|HGNC:14177,A|upstream_gene_variant|MODIFIER|HAGHL|ENSG00000103253|Transcript|ENST00000567696|retained_intron|||||||||||3977|1||HGNC|HGNC:14177,A|upstream_gene_variant|MODIFIER|HAGHL|ENSG00000103253|Transcript|ENST00000568141|protein_coding|||||||||||4005|1|cds_end_NF|HGNC|HGNC:14177,A|downstream_gene_variant|MODIFIER|METRN|ENSG00000103260|Transcript|ENST00000568223|protein_coding|||||||||||3686|1||HGNC|HGNC:14151,A|downstream_gene_variant|MODIFIER|ANTKMT|ENSG00000103254|Transcript|ENST00000568916|protein_coding|||||||||||751|1|cds_start_NF|HGNC|HGNC:14152,A|upstream_gene_variant|MODIFIER|HAGHL|ENSG00000103253|Transcript|ENST00000569143|retained_intron|||||||||||3977|1||HGNC|HGNC:14177,A|downstream_gene_variant|MODIFIER|ANTKMT|ENSG00000103254|Transcript|ENST00000569529|protein_coding|||||||||||751|1||HGNC|HGNC:14152,A|downstream_gene_variant|MODIFIER|ANTKMT|ENSG00000103254|Transcript|ENST00000570237|retained_intron|||||||||||751|1||HGNC|HGNC:14152,A|downstream_gene_variant|MODIFIER|CCDC78|ENSG00000162004|Transcript|ENST00000650995|protein_coding|||||||||||2453|-1|cds_end_NF|HGNC|HGNC:14153,A|intron_variant&non_coding_transcript_variant|MODIFIER|CCDC78|ENSG00000162004|Transcript|ENST00000682391|retained_intron||7/9||||||||||-1||HGNC|HGNC:14153\tGT:DP:AD:GQ:PL:RNC\t1/1:17:0,17:19:23,21,0:..", - "chr16\t739761\tchr16_739761_A_G\tA\tG\t22\t.\tAF=1;AQ=22;AC=2;cadd_raw=-2;cadd_phred=-2;CSQ=G|intron_variant|MODIFIER|CIAO3|ENSG00000103245|Transcript|ENST00000251588|protein_coding||1/10||||||||||-1||HGNC|HGNC:14179,G|5_prime_UTR_variant|MODIFIER|CIAO3|ENSG00000103245|Transcript|ENST00000540986|protein_coding|1/10||||1174|||||||-1||HGNC|HGNC:14179,G|upstream_gene_variant|MODIFIER|CIAO3|ENSG00000103245|Transcript|ENST00000562421|protein_coding|||||||||||2006|-1|cds_end_NF|HGNC|HGNC:14179,G|intron_variant&non_coding_transcript_variant|MODIFIER|CIAO3|ENSG00000103245|Transcript|ENST00000562752|retained_intron||1/4||||||||||-1||HGNC|HGNC:14179,G|upstream_gene_variant|MODIFIER|CIAO3|ENSG00000103245|Transcript|ENST00000563534|protein_coding_CDS_not_defined|||||||||||2297|-1||HGNC|HGNC:14179,G|intron_variant&NMD_transcript_variant|MODIFIER|CIAO3|ENSG00000103245|Transcript|ENST00000565065|nonsense_mediated_decay||2/5||||||||||-1||HGNC|HGNC:14179,G|intron_variant&non_coding_transcript_variant|MODIFIER|CIAO3|ENSG00000103245|Transcript|ENST00000565341|retained_intron||1/3||||||||||-1||HGNC|HGNC:14179,G|intron_variant&NMD_transcript_variant|MODIFIER|CIAO3|ENSG00000103245|Transcript|ENST00000565425|nonsense_mediated_decay||1/9||||||||||-1||HGNC|HGNC:14179,G|intron_variant&non_coding_transcript_variant|MODIFIER|CIAO3|ENSG00000103245|Transcript|ENST00000565693|protein_coding_CDS_not_defined||1/2||||||||||-1||HGNC|HGNC:14179,G|intron_variant|MODIFIER|CIAO3|ENSG00000103245|Transcript|ENST00000566614|protein_coding||1/4||||||||||-1|cds_end_NF|HGNC|HGNC:14179,G|intron_variant&non_coding_transcript_variant|MODIFIER|CIAO3|ENSG00000103245|Transcript|ENST00000567172|protein_coding_CDS_not_defined||1/1||||||||||-1||HGNC|HGNC:14179,G|upstream_gene_variant|MODIFIER|CIAO3|ENSG00000103245|Transcript|ENST00000567403|protein_coding|||||||||||2009|-1|cds_end_NF|HGNC|HGNC:14179,G|intron_variant&non_coding_transcript_variant|MODIFIER|CIAO3|ENSG00000103245|Transcript|ENST00000567455|protein_coding_CDS_not_defined||1/2||||||||||-1||HGNC|HGNC:14179,G|upstream_gene_variant|MODIFIER|CIAO3|ENSG00000103245|Transcript|ENST00000568545|protein_coding|||||||||||1872|-1||HGNC|HGNC:14179,G|downstream_gene_variant|MODIFIER|HAGHL|ENSG00000103253|Transcript|ENST00000569604|protein_coding_CDS_not_defined|||||||||||4236|1||HGNC|HGNC:14177,G|upstream_gene_variant|MODIFIER|CIAO3|ENSG00000103245|Transcript|ENST00000569759|protein_coding_CDS_not_defined|||||||||||3391|-1||HGNC|HGNC:14179,G|intron_variant&NMD_transcript_variant|MODIFIER|CIAO3|ENSG00000103245|Transcript|ENST00000570066|nonsense_mediated_decay||1/4||||||||||-1||HGNC|HGNC:14179,G|intron_variant&NMD_transcript_variant|MODIFIER|CIAO3|ENSG00000103245|Transcript|ENST00000570289|nonsense_mediated_decay||1/3||||||||||-1||HGNC|HGNC:14179,G|downstream_gene_variant|MODIFIER|HAGHL|ENSG00000103253|Transcript|ENST00000647875|protein_coding_CDS_not_defined|||||||||||4408|1||HGNC|HGNC:14177\tGT:DP:AD:GQ:PL:RNC\t1/1:14:0,14:14:22,14,0:..", - "chr16\t766294\tchr16_766294_T_G\tT\tG\t29\t.\tAF=0.5;AQ=29;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=G|intron_variant|MODIFIER|MSLN|ENSG00000102854|Transcript|ENST00000382862|protein_coding||11/16||||||||||1||HGNC|HGNC:7371,G|upstream_gene_variant|MODIFIER|MIR662|ENSG00000207579|Transcript|ENST00000384847|miRNA|||||||||||3889|1||HGNC|HGNC:32918,G|downstream_gene_variant|MODIFIER|MSLNL|ENSG00000162006|Transcript|ENST00000543963|protein_coding|||||||||||3134|-1|cds_start_NF|HGNC|HGNC:14170,G|intron_variant|MODIFIER|MSLN|ENSG00000102854|Transcript|ENST00000545450|protein_coding||12/17||||||||||1||HGNC|HGNC:7371,G|intron_variant|MODIFIER|MSLN|ENSG00000102854|Transcript|ENST00000561896|protein_coding||2/6||||||||||1|cds_start_NF&cds_end_NF|HGNC|HGNC:7371,G|intron_variant|MODIFIER|MSLN|ENSG00000102854|Transcript|ENST00000563651|protein_coding||10/10||||||||||1|cds_end_NF|HGNC|HGNC:7371,G|intron_variant|MODIFIER|MSLN|ENSG00000102854|Transcript|ENST00000563941|protein_coding||12/17||||||||||1||HGNC|HGNC:7371,G|intron_variant|MODIFIER|MSLN|ENSG00000102854|Transcript|ENST00000566269|protein_coding||2/7||||||||||1|cds_start_NF|HGNC|HGNC:7371,G|intron_variant|MODIFIER|MSLN|ENSG00000102854|Transcript|ENST00000566549|protein_coding||11/16||||||||||1||HGNC|HGNC:7371,G|downstream_gene_variant|MODIFIER|MSLN|ENSG00000102854|Transcript|ENST00000569566|protein_coding|||||||||||1258|1|cds_end_NF|HGNC|HGNC:7371,G|downstream_gene_variant|MODIFIER||ENSG00000279136|Transcript|ENST00000623562|TEC|||||||||||2825|-1|||\tGT:DP:AD:GQ:PL:RNC\t0/1:19:12,7:29:29,0,43:..", - "chr16\t789996\tchr16_789996_T_C\tT\tC\t36\t.\tAF=0.5;AQ=36;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=C|upstream_gene_variant|MODIFIER|RPUSD1|ENSG00000007376|Transcript|ENST00000007264|protein_coding|||||||||||1615|-1||HGNC|HGNC:14173,C|intron_variant|MODIFIER|CHTF18|ENSG00000127586|Transcript|ENST00000262315|protein_coding||4/21||||||||||1||HGNC|HGNC:18435,C|intron_variant|MODIFIER|CHTF18|ENSG00000127586|Transcript|ENST00000317063|protein_coding||4/21||||||||||1||HGNC|HGNC:18435,C|splice_polypyrimidine_tract_variant&intron_variant|LOW|CHTF18|ENSG00000127586|Transcript|ENST00000426047|protein_coding||2/6||||||||||1|cds_start_NF&cds_end_NF|HGNC|HGNC:18435,C|intron_variant&NMD_transcript_variant|MODIFIER|CHTF18|ENSG00000127586|Transcript|ENST00000440239|nonsense_mediated_decay||4/13||||||||||1||HGNC|HGNC:18435,C|intron_variant|MODIFIER|CHTF18|ENSG00000127586|Transcript|ENST00000455171|protein_coding||3/20||||||||||1||HGNC|HGNC:18435,C|upstream_gene_variant|MODIFIER|CHTF18|ENSG00000127586|Transcript|ENST00000461268|protein_coding_CDS_not_defined|||||||||||2528|1||HGNC|HGNC:18435,C|intron_variant&non_coding_transcript_variant|MODIFIER|CHTF18|ENSG00000127586|Transcript|ENST00000464728|retained_intron||3/17||||||||||1||HGNC|HGNC:18435,C|splice_polypyrimidine_tract_variant&intron_variant&non_coding_transcript_variant|LOW|CHTF18|ENSG00000127586|Transcript|ENST00000471202|retained_intron||4/18||||||||||1||HGNC|HGNC:18435,C|intron_variant&non_coding_transcript_variant|MODIFIER|CHTF18|ENSG00000127586|Transcript|ENST00000479976|retained_intron||4/6||||||||||1||HGNC|HGNC:18435,C|intron_variant&non_coding_transcript_variant|MODIFIER|CHTF18|ENSG00000127586|Transcript|ENST00000484349|retained_intron||1/3||||||||||1||HGNC|HGNC:18435,C|intron_variant&non_coding_transcript_variant|MODIFIER|CHTF18|ENSG00000127586|Transcript|ENST00000491530|protein_coding_CDS_not_defined||2/5||||||||||1||HGNC|HGNC:18435,C|upstream_gene_variant|MODIFIER|CHTF18|ENSG00000127586|Transcript|ENST00000493715|protein_coding_CDS_not_defined|||||||||||4706|1||HGNC|HGNC:18435,C|upstream_gene_variant|MODIFIER|RPUSD1|ENSG00000007376|Transcript|ENST00000561734|protein_coding|||||||||||2015|-1||HGNC|HGNC:14173,C|upstream_gene_variant|MODIFIER|RPUSD1|ENSG00000007376|Transcript|ENST00000562070|protein_coding|||||||||||2527|-1|cds_start_NF|HGNC|HGNC:14173,C|downstream_gene_variant|MODIFIER|CHTF18|ENSG00000127586|Transcript|ENST00000563545|nonsense_mediated_decay|||||||||||360|1||HGNC|HGNC:18435,C|upstream_gene_variant|MODIFIER|RPUSD1|ENSG00000007376|Transcript|ENST00000563560|protein_coding|||||||||||1667|-1|cds_end_NF|HGNC|HGNC:14173,C|upstream_gene_variant|MODIFIER|RPUSD1|ENSG00000007376|Transcript|ENST00000565377|protein_coding|||||||||||1615|-1|cds_end_NF|HGNC|HGNC:14173,C|upstream_gene_variant|MODIFIER|RPUSD1|ENSG00000007376|Transcript|ENST00000565503|nonsense_mediated_decay|||||||||||1656|-1||HGNC|HGNC:14173,C|upstream_gene_variant|MODIFIER|CHTF18|ENSG00000127586|Transcript|ENST00000565787|retained_intron|||||||||||1141|1||HGNC|HGNC:18435,C|upstream_gene_variant|MODIFIER|RPUSD1|ENSG00000007376|Transcript|ENST00000565809|protein_coding|||||||||||1625|-1||HGNC|HGNC:14173,C|upstream_gene_variant|MODIFIER|RPUSD1|ENSG00000007376|Transcript|ENST00000567114|protein_coding|||||||||||1599|-1||HGNC|HGNC:14173,C|upstream_gene_variant|MODIFIER|RPUSD1|ENSG00000007376|Transcript|ENST00000567283|nonsense_mediated_decay|||||||||||1663|-1||HGNC|HGNC:14173,C|upstream_gene_variant|MODIFIER|CHTF18|ENSG00000127586|Transcript|ENST00000567620|retained_intron|||||||||||703|1||HGNC|HGNC:18435,C|upstream_gene_variant|MODIFIER|CHTF18|ENSG00000127586|Transcript|ENST00000569270|nonsense_mediated_decay|||||||||||255|1|cds_start_NF|HGNC|HGNC:18435,C|upstream_gene_variant|MODIFIER|RPUSD1|ENSG00000007376|Transcript|ENST00000569601|protein_coding|||||||||||1662|-1|cds_end_NF|HGNC|HGNC:14173,C|downstream_gene_variant|MODIFIER|CHTF18|ENSG00000127586|Transcript|ENST00000570058|protein_coding_CDS_not_defined|||||||||||656|1||HGNC|HGNC:18435,C|intron_variant|MODIFIER|CHTF18|ENSG00000127586|Transcript|ENST00000631357|protein_coding||5/23||||||||||1||HGNC|HGNC:18435\tGT:DP:AD:GQ:PL:RNC\t0/1:15:7,8:36:36,0,49:..", - "chr16\t813336\tchr16_813336_T_C\tT\tC\t32\t.\tAF=0.5;AQ=32;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=C|upstream_gene_variant|MODIFIER||ENSG00000287855|Transcript|ENST00000655150|lncRNA|||||||||||4153|1|||\tGT:DP:AD:GQ:PL:RNC\t0/1:14:5,9:32:32,0,39:..", - "chr16\t893361\tchr16_893361_T_C\tT\tC\t34\t.\tAF=0.5;AQ=34;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=C|intron_variant|MODIFIER|LMF1|ENSG00000103227|Transcript|ENST00000262301|protein_coding||4/10||||||||||-1||HGNC|HGNC:14154,C|intron_variant|MODIFIER|LMF1|ENSG00000103227|Transcript|ENST00000543238|protein_coding||1/7||||||||||-1||HGNC|HGNC:14154,C|intron_variant&NMD_transcript_variant|MODIFIER|LMF1|ENSG00000103227|Transcript|ENST00000545827|nonsense_mediated_decay||5/11||||||||||-1||HGNC|HGNC:14154,C|intron_variant&NMD_transcript_variant|MODIFIER|LMF1|ENSG00000103227|Transcript|ENST00000562226|nonsense_mediated_decay||6/7||||||||||-1||HGNC|HGNC:14154,C|upstream_gene_variant|MODIFIER|LMF1|ENSG00000103227|Transcript|ENST00000565198|retained_intron|||||||||||109|-1||HGNC|HGNC:14154,C|intron_variant|MODIFIER|LMF1|ENSG00000103227|Transcript|ENST00000566627|protein_coding||3/5||||||||||-1|cds_end_NF|HGNC|HGNC:14154,C|intron_variant|MODIFIER|LMF1|ENSG00000103227|Transcript|ENST00000568897|protein_coding||3/9||||||||||-1||HGNC|HGNC:14154,C|intron_variant&NMD_transcript_variant|MODIFIER|LMF1|ENSG00000103227|Transcript|ENST00000568964|nonsense_mediated_decay||4/5||||||||||-1|cds_start_NF|HGNC|HGNC:14154,C|intron_variant|MODIFIER|LMF1|ENSG00000103227|Transcript|ENST00000570014|protein_coding||4/6||||||||||-1|cds_end_NF|HGNC|HGNC:14154\tGT:DP:AD:GQ:PL:RNC\t0/1:17:6,11:34:34,0,45:..", - "chr16\t947473\tchr16_947473_T_C\tT\tC\t29\t.\tAF=0.5;AQ=29;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=C|intron_variant|MODIFIER|LMF1|ENSG00000103227|Transcript|ENST00000262301|protein_coding||2/10||||||||||-1||HGNC|HGNC:14154,C|intron_variant|MODIFIER|LMF1|ENSG00000103227|Transcript|ENST00000543238|protein_coding||1/7||||||||||-1||HGNC|HGNC:14154,C|intron_variant&NMD_transcript_variant|MODIFIER|LMF1|ENSG00000103227|Transcript|ENST00000545827|nonsense_mediated_decay||2/11||||||||||-1||HGNC|HGNC:14154,C|intron_variant&NMD_transcript_variant|MODIFIER|LMF1|ENSG00000103227|Transcript|ENST00000562226|nonsense_mediated_decay||2/7||||||||||-1||HGNC|HGNC:14154,C|intron_variant|MODIFIER|LMF1|ENSG00000103227|Transcript|ENST00000562380|protein_coding||2/3||||||||||-1|cds_start_NF|HGNC|HGNC:14154,C|5_prime_UTR_variant|MODIFIER|LMF1|ENSG00000103227|Transcript|ENST00000566627|protein_coding|1/6||||172|||||||-1|cds_end_NF|HGNC|HGNC:14154,C|intron_variant&NMD_transcript_variant|MODIFIER|LMF1|ENSG00000103227|Transcript|ENST00000567595|nonsense_mediated_decay||2/4||||||||||-1|cds_start_NF|HGNC|HGNC:14154,C|intron_variant|MODIFIER|LMF1|ENSG00000103227|Transcript|ENST00000568897|protein_coding||2/9||||||||||-1||HGNC|HGNC:14154,C|intron_variant&NMD_transcript_variant|MODIFIER|LMF1|ENSG00000103227|Transcript|ENST00000568964|nonsense_mediated_decay||2/5||||||||||-1|cds_start_NF|HGNC|HGNC:14154,C|intron_variant|MODIFIER|LMF1|ENSG00000103227|Transcript|ENST00000570014|protein_coding||2/6||||||||||-1|cds_end_NF|HGNC|HGNC:14154\tGT:DP:AD:GQ:PL:RNC\t0/1:23:8,15:30:29,0,47:..", - "chr16\t964119\tchr16_964119_A_G\tA\tG\t24\t.\tAF=1;AQ=24;AC=2;cadd_raw=-2;cadd_phred=-2;CSQ=G|intron_variant|MODIFIER|LMF1|ENSG00000103227|Transcript|ENST00000262301|protein_coding||1/10||||||||||-1||HGNC|HGNC:14154,G|intron_variant|MODIFIER|LMF1|ENSG00000103227|Transcript|ENST00000543238|protein_coding||1/7||||||||||-1||HGNC|HGNC:14154,G|intron_variant&NMD_transcript_variant|MODIFIER|LMF1|ENSG00000103227|Transcript|ENST00000545827|nonsense_mediated_decay||1/11||||||||||-1||HGNC|HGNC:14154,G|intron_variant&NMD_transcript_variant|MODIFIER|LMF1|ENSG00000103227|Transcript|ENST00000562226|nonsense_mediated_decay||1/7||||||||||-1||HGNC|HGNC:14154,G|missense_variant|MODERATE|LMF1|ENSG00000103227|Transcript|ENST00000562380|protein_coding|1/4||||4|4|2|Y/H|Tat/Cat|||-1|cds_start_NF|HGNC|HGNC:14154,G|intron_variant&non_coding_transcript_variant|MODIFIER|LMF1|ENSG00000103227|Transcript|ENST00000566609|protein_coding_CDS_not_defined||1/2||||||||||-1||HGNC|HGNC:14154,G|intron_variant&NMD_transcript_variant|MODIFIER|LMF1|ENSG00000103227|Transcript|ENST00000567595|nonsense_mediated_decay||1/4||||||||||-1|cds_start_NF|HGNC|HGNC:14154,G|intron_variant|MODIFIER|LMF1|ENSG00000103227|Transcript|ENST00000568897|protein_coding||1/9||||||||||-1||HGNC|HGNC:14154,G|intron_variant&NMD_transcript_variant|MODIFIER|LMF1|ENSG00000103227|Transcript|ENST00000568964|nonsense_mediated_decay||1/5||||||||||-1|cds_start_NF|HGNC|HGNC:14154,G|intron_variant|MODIFIER|LMF1|ENSG00000103227|Transcript|ENST00000570014|protein_coding||1/6||||||||||-1|cds_end_NF|HGNC|HGNC:14154,G|downstream_gene_variant|MODIFIER||ENSG00000276931|Transcript|ENST00000620075|lncRNA|||||||||||4256|-1|||\tGT:DP:AD:GQ:PL:RNC\t1/1:29:0,29:21:24,24,0:..", - "chr16\t977069\tchr16_977069_T_C\tT\tC\t34\t.\tAF=0.5;AQ=34;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=C|upstream_gene_variant|MODIFIER|SOX8|ENSG00000005513|Transcript|ENST00000293894|protein_coding|||||||||||4701|1||HGNC|HGNC:11203,C|intron_variant&NMD_transcript_variant|MODIFIER|LMF1|ENSG00000103227|Transcript|ENST00000545827|nonsense_mediated_decay||1/11||||||||||-1||HGNC|HGNC:14154,C|non_coding_transcript_exon_variant|MODIFIER|CEROX1|ENSG00000260807|Transcript|ENST00000562570|lncRNA|2/2||||1914|||||||-1||HGNC|HGNC:53928,C|non_coding_transcript_exon_variant|MODIFIER|CEROX1|ENSG00000260807|Transcript|ENST00000563837|lncRNA|4/4||||423|||||||-1||HGNC|HGNC:53928,C|non_coding_transcript_exon_variant|MODIFIER|CEROX1|ENSG00000260807|Transcript|ENST00000563863|lncRNA|4/4||||423|||||||-1||HGNC|HGNC:53928,C|non_coding_transcript_exon_variant|MODIFIER|CEROX1|ENSG00000260807|Transcript|ENST00000565069|lncRNA|3/3||||265|||||||-1||HGNC|HGNC:53928,C|upstream_gene_variant|MODIFIER|CEROX1|ENSG00000260807|Transcript|ENST00000565139|lncRNA|||||||||||143|-1||HGNC|HGNC:53928,C|intron_variant&non_coding_transcript_variant|MODIFIER|CEROX1|ENSG00000260807|Transcript|ENST00000565467|lncRNA||1/1||||||||||-1||HGNC|HGNC:53928,C|upstream_gene_variant|MODIFIER|CEROX1|ENSG00000260807|Transcript|ENST00000567961|lncRNA|||||||||||157|-1||HGNC|HGNC:53928,C|intron_variant&non_coding_transcript_variant|MODIFIER|CEROX1|ENSG00000260807|Transcript|ENST00000568394|lncRNA||1/2||||||||||-1||HGNC|HGNC:53928,C|intron_variant|MODIFIER|LMF1|ENSG00000103227|Transcript|ENST00000570014|protein_coding||1/6||||||||||-1|cds_end_NF|HGNC|HGNC:14154,C|non_coding_transcript_exon_variant|MODIFIER|CEROX1|ENSG00000260807|Transcript|ENST00000655952|lncRNA|3/3||||743|||||||-1||HGNC|HGNC:53928,C|non_coding_transcript_exon_variant|MODIFIER|CEROX1|ENSG00000260807|Transcript|ENST00000662104|lncRNA|3/3||||322|||||||-1||HGNC|HGNC:53928,C|non_coding_transcript_exon_variant|MODIFIER|CEROX1|ENSG00000260807|Transcript|ENST00000669274|lncRNA|3/3||||225|||||||-1||HGNC|HGNC:53928\tGT:DP:AD:GQ:PL:RNC\t0/1:17:6,11:34:34,0,44:.." - ] + "ad2f3def07bee1f4bab9cfe456dada3e", + "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=121, phased=false, phasedAutodetect=false]" ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.3" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-08-12T10:10:59.241809478" + "timestamp": "2024-10-08T11:44:29.495925133" } -} \ No newline at end of file +} diff --git a/subworkflows/local/snv_annotation/tests/nextflow.config b/subworkflows/local/snv_annotation/tests/nextflow.config index 3d63e87d..791380d6 100644 --- a/subworkflows/local/snv_annotation/tests/nextflow.config +++ b/subworkflows/local/snv_annotation/tests/nextflow.config @@ -41,7 +41,7 @@ process { ].join(' ') } - withName: '.*:SHORT_VARIANT_CALLING:BCFTOOLS_FILLTAGS' { + withName: 'SHORT_VARIANT_CALLING:BCFTOOLS_FILLTAGS' { ext.prefix = { "${meta.id}_ac" } ext.args = [ '--no-version', @@ -65,7 +65,7 @@ process { ext.prefix = { "${name}".contains('merged') ? './vep_cache/homo_sapiens_merged/' : './vep_cache/homo_sapiens/' } } - withName: 'ENSEMBLVEP_VEP' { + withName: 'SNV_ANNOTATION:ENSEMBLVEP_VEP' { ext.args = { [ '--offline', '--vcf', From 8c345f7774c8d6cdf9ca2caba50bf7349114b19f Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Thu, 10 Oct 2024 09:25:36 +0200 Subject: [PATCH 031/106] Template update for nf-core/tools v3.0.1 (#422) * Initial template commit * Template update for nf-core/tools version 2.14.1 * Prettier * Template update for nf-core/tools version 2.14.1 * Template update for nf-core/tools version 2.14.1 * Template update for nf-core/tools version 3.0.0 * Template update for nf-core/tools version 3.0.0 * Template update for nf-core/tools version 3.0.0 * wip * modules * Template update for nf-core/tools version 3.0.1 * Update CHANGELOG and docs * Review suggestions * Delete conf/igenomes_ignored.config --- .editorconfig | 5 - .github/CONTRIBUTING.md | 16 +- .github/ISSUE_TEMPLATE/bug_report.yml | 32 +- .github/PULL_REQUEST_TEMPLATE.md | 2 +- .github/workflows/ci.yml | 5 +- .github/workflows/download_pipeline.yml | 53 ++- .github/workflows/linting | 0 .github/workflows/linting.yml | 23 +- .github/workflows/linting_comment.yml | 2 +- .../workflows/template_version_comment.yml | 43 +++ .gitpod.yml | 7 +- .nf-core.yml | 18 +- .pre-commit-config.yaml | 2 +- CHANGELOG.md | 22 +- README.md | 4 +- assets/methods_description_template.yml | 21 +- assets/multiqc_config.yml | 2 - assets/schema_input.json | 26 +- assets/schema_snpdb.json | 2 +- assets/vep_plugin_files_schema.json | 2 +- conf/base.config | 40 +- conf/test.config | 19 +- docs/parameters.md | 60 +-- docs/usage.md | 12 +- main.nf | 7 +- modules.json | 8 +- nextflow.config | 151 ++++---- nextflow_schema.json | 353 +++++++----------- .../local/utils_nfcore_nallo_pipeline/main.nf | 59 +-- .../nf-core/utils_nextflow_pipeline/main.nf | 64 ++-- .../tests/nextflow.config | 2 +- .../nf-core/utils_nfcore_pipeline/main.nf | 304 ++++++++------- .../nf-core/utils_nfschema_plugin/main.nf | 46 +++ .../nf-core/utils_nfschema_plugin/meta.yml | 35 ++ .../utils_nfschema_plugin/tests/main.nf.test | 117 ++++++ .../tests/nextflow.config | 8 + .../tests/nextflow_schema.json | 8 +- .../nf-core/utils_nfvalidation_plugin/main.nf | 62 --- .../utils_nfvalidation_plugin/meta.yml | 44 --- .../tests/main.nf.test | 200 ---------- .../utils_nfvalidation_plugin/tests/tags.yml | 2 - workflows/nallo.nf | 12 +- 42 files changed, 871 insertions(+), 1029 deletions(-) create mode 100644 .github/workflows/linting create mode 100644 .github/workflows/template_version_comment.yml create mode 100644 subworkflows/nf-core/utils_nfschema_plugin/main.nf create mode 100644 subworkflows/nf-core/utils_nfschema_plugin/meta.yml create mode 100644 subworkflows/nf-core/utils_nfschema_plugin/tests/main.nf.test create mode 100644 subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow.config rename subworkflows/nf-core/{utils_nfvalidation_plugin => utils_nfschema_plugin}/tests/nextflow_schema.json (95%) delete mode 100644 subworkflows/nf-core/utils_nfvalidation_plugin/main.nf delete mode 100644 subworkflows/nf-core/utils_nfvalidation_plugin/meta.yml delete mode 100644 subworkflows/nf-core/utils_nfvalidation_plugin/tests/main.nf.test delete mode 100644 subworkflows/nf-core/utils_nfvalidation_plugin/tests/tags.yml diff --git a/.editorconfig b/.editorconfig index 15d11df6..72dda289 100644 --- a/.editorconfig +++ b/.editorconfig @@ -31,8 +31,3 @@ indent_size = unset # ignore python and markdown [*.{py,md}] indent_style = unset - -# ignore parameters.md -[parameters.md] -trim_trailing_whitespace = false -indent_style = unset diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index e756a668..de8f4598 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -16,7 +16,7 @@ If you'd like to write some code for genomic-medicine-sweden/nallo, the standard 1. Check that there isn't already an issue about your idea in the [genomic-medicine-sweden/nallo issues](https://github.com/genomic-medicine-sweden/nallo/issues) to avoid duplicating work. If there isn't one already, please create one so that others know you're working on this 2. [Fork](https://help.github.com/en/github/getting-started-with-github/fork-a-repo) the [genomic-medicine-sweden/nallo repository](https://github.com/genomic-medicine-sweden/nallo) to your GitHub account 3. Make the necessary changes / additions within your forked repository following [Pipeline conventions](#pipeline-contribution-conventions) -4. Use `nf-core schema build` and add any new parameters to the pipeline JSON schema (requires [nf-core tools](https://github.com/nf-core/tools) >= 1.10). +4. Use `nf-core pipelines schema build` and add any new parameters to the pipeline JSON schema (requires [nf-core tools](https://github.com/nf-core/tools) >= 1.10). 5. Submit a Pull Request against the `dev` branch and wait for the code to be reviewed and merged If you're not used to this workflow with git, you can start with some [docs from GitHub](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests) or even their [excellent `git` resources](https://try.github.io/). @@ -36,14 +36,14 @@ There are typically two types of tests that run: ### Lint tests -Altough this is not a `nf-core` pipeline, `nf-core` has a [set of guidelines](https://nf-co.re/developers/guidelines) which all their pipelines must adhere to. -To enforce these and ensure that all pipelines stay in sync, they have developed a helper tool which runs checks on the pipeline code. This is in the [nf-core/tools repository](https://github.com/nf-core/tools) and once installed can be run locally with the `nf-core lint ` command. +Although this is not a `nf-core` pipeline, `nf-core` has a [set of guidelines](https://nf-co.re/developers/guidelines) which all their pipelines must adhere to. +To enforce these and ensure that all pipelines stay in sync, they have developed a helper tool which runs checks on the pipeline code. This is in the [nf-core/tools repository](https://github.com/nf-core/tools) and once installed can be run locally with the `nf-core pipelines lint ` command. If any failures or warnings are encountered, please follow the listed URL for more documentation. ### Pipeline tests -This pipeline should be set up with a minimal set of test-data. +This pipeline is set up with a minimal set of test-data. `GitHub Actions` then runs the pipeline on this data to ensure that it exits successfully. If there are any failures then the automated tests fail. These tests are run both with the latest available version of `Nextflow` and also the minimum required version that is stated in the pipeline code. @@ -68,7 +68,7 @@ If you wish to contribute a new step, please use the following coding standards: 2. Write the process block (see below). 3. Define the output channel if needed (see below). 4. Add any new parameters to `nextflow.config` with a default (see below). -5. Add any new parameters to `nextflow_schema.json` with help text (via the `nf-core schema build` tool). +5. Add any new parameters to `nextflow_schema.json` with help text (via the `nf-core pipelines schema build` tool). 6. Add sanity checks and validation for all relevant parameters. 7. Perform local tests to validate that the new code works as expected. 8. If applicable, add a new test command in `.github/workflow/ci.yml`. @@ -79,11 +79,11 @@ If you wish to contribute a new step, please use the following coding standards: Parameters should be initialised / defined with default values in `nextflow.config` under the `params` scope. -Once there, use `nf-core schema build` to add to `nextflow_schema.json`. +Once there, use `nf-core pipelines schema build` to add to `nextflow_schema.json`. ### Default processes resource requirements -Sensible defaults for process resource requirements (CPUs / memory / time) for a process should be defined in `conf/base.config`. These should generally be specified generic with `withLabel:` selectors so they can be shared across multiple processes/steps of the pipeline. A nf-core standard set of labels that should be followed where possible can be seen in the [nf-core pipeline template](https://github.com/nf-core/tools/blob/master/nf_core/pipeline-template/conf/base.config), which has the default process as a single core-process, and then different levels of multi-core configurations for increasingly large memory requirements defined with standardised labels. +Sensible defaults for process resource requirements (CPUs / memory / time) for a process should be defined in `conf/base.config`. These should generally be specified generic with `withLabel:` selectors so they can be shared across multiple processes/steps of the pipeline. A nf-core standard set of labels that should be followed where possible can be seen in the [nf-core pipeline template](https://github.com/nf-core/tools/blob/main/nf_core/pipeline-template/conf/base.config), which has the default process as a single core-process, and then different levels of multi-core configurations for increasingly large memory requirements defined with standardised labels. The process resources can be passed on to the tool dynamically within the process with the `${task.cpus}` and `${task.memory}` variables in the `script:` block. @@ -96,7 +96,7 @@ Please use the following naming schemes, to make it easy to understand what is g ### Nextflow version bumping -If you are using a new feature from core Nextflow, you may bump the minimum required version of nextflow in the pipeline with: `nf-core bump-version --nextflow . [min-nf-version]` +If you are using a new feature from core Nextflow, you may bump the minimum required version of nextflow in the pipeline with: `nf-core pipelines bump-version --nextflow . [min-nf-version]` ### Images and figures diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index a054825b..e1156a08 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -9,46 +9,34 @@ body: description: A clear and concise description of what the bug is. validations: required: true + - type: textarea id: command_used attributes: label: Command used and terminal output - description: Steps to reproduce the behaviour. Please paste the command you used - to launch the pipeline and the output from your terminal. + description: Steps to reproduce the behaviour. Please paste the command you used to launch the pipeline and the output from your terminal. render: console - placeholder: "$ nextflow run ... - + placeholder: | + $ nextflow run ... Some output where something broke - " - type: textarea id: files attributes: label: Relevant files - description: "Please drag and drop the relevant files here. Create a `.zip` archive - if the extension is not allowed. - - Your verbose log file `.nextflow.log` is often useful _(this is a hidden file - in the directory where you launched the pipeline)_ as well as custom Nextflow - configuration files. + description: | + Please drag and drop the relevant files here. Create a `.zip` archive if the extension is not allowed. + Your verbose log file `.nextflow.log` is often useful _(this is a hidden file in the directory where you launched the pipeline)_ as well as custom Nextflow configuration files. - " - type: textarea id: system attributes: label: System information - description: "* Nextflow version _(eg. 23.04.0)_ - + description: | + * Nextflow version _(eg. 23.04.0)_ * Hardware _(eg. HPC, Desktop, Cloud)_ - * Executor _(eg. slurm, local, awsbatch)_ - - * Container engine: _(e.g. Docker, Singularity, Conda, Podman, Shifter, Charliecloud, - or Apptainer)_ - + * Container engine: _(e.g. Docker, Singularity, Conda, Podman, Shifter, Charliecloud, or Apptainer)_ * OS _(eg. CentOS Linux, macOS, Linux Mint)_ - * Version of genomic-medicine-sweden/nallo _(eg. 1.1, 1.5, 1.8.2)_ - - " diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index d50d1ea0..a0f36f7c 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -16,7 +16,7 @@ Learn more about contributing: [CONTRIBUTING.md](https://github.com/genomic-medi - [ ] This comment contains a description of changes (with reason). - [ ] If you've fixed a bug or added code that should be tested, add tests! - [ ] If you've added a new tool - have you followed the pipeline conventions in the [contribution docs](https://github.com/genomic-medicine-sweden/nallo/tree/master/.github/CONTRIBUTING.md) -- [ ] Make sure your code lints (`nf-core lint`). +- [ ] Make sure your code lints (`nf-core pipelines lint`). - [ ] Ensure the test suite passes (`nextflow run . -profile test,docker --outdir `). - [ ] Check for unexpected warnings in debug mode (`nextflow run . -profile debug,test,docker --outdir `). - [ ] Usage Documentation in `docs/usage.md` is updated. diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d5a7e31f..f6ba16cb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -7,6 +7,7 @@ on: pull_request: release: types: [published] + workflow_dispatch: env: NXF_ANSI_LOG: false @@ -27,8 +28,8 @@ jobs: fail-fast: false matrix: NXF_VER: + - "24.04.2" - "latest-everything" - - "23.04.0" tags: - "samplesheet" - "samplesheet_multisample_bam" @@ -44,7 +45,7 @@ jobs: uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 - name: Install Nextflow - uses: nf-core/setup-nextflow@b9f764e8ba5c76b712ace14ecbfcef0e40ae2dd8 # v1 + uses: nf-core/setup-nextflow@v2 with: version: "${{ matrix.NXF_VER }}" diff --git a/.github/workflows/download_pipeline.yml b/.github/workflows/download_pipeline.yml index 2d20d644..713dc3e7 100644 --- a/.github/workflows/download_pipeline.yml +++ b/.github/workflows/download_pipeline.yml @@ -1,4 +1,4 @@ -name: Test successful pipeline download with 'nf-core download' +name: Test successful pipeline download with 'nf-core pipelines download' # Run the workflow when: # - dispatched manually @@ -8,7 +8,7 @@ on: workflow_dispatch: inputs: testbranch: - description: "The specific branch you wish to utilize for the test execution of nf-core download." + description: "The specific branch you wish to utilize for the test execution of nf-core pipelines download." required: true default: "dev" pull_request: @@ -39,9 +39,11 @@ jobs: with: python-version: "3.12" architecture: "x64" - - uses: eWaterCycle/setup-singularity@931d4e31109e875b13309ae1d07c70ca8fbc8537 # v7 + + - name: Setup Apptainer + uses: eWaterCycle/setup-apptainer@4bb22c52d4f63406c49e94c804632975787312b3 # v2.0.0 with: - singularity-version: 3.8.3 + apptainer-version: 1.3.4 - name: Install dependencies run: | @@ -54,33 +56,64 @@ jobs: echo "REPOTITLE_LOWERCASE=$(basename ${GITHUB_REPOSITORY,,})" >> ${GITHUB_ENV} echo "REPO_BRANCH=${{ github.event.inputs.testbranch || 'dev' }}" >> ${GITHUB_ENV} + - name: Make a cache directory for the container images + run: | + mkdir -p ./singularity_container_images + - name: Download the pipeline env: - NXF_SINGULARITY_CACHEDIR: ./ + NXF_SINGULARITY_CACHEDIR: ./singularity_container_images run: | - nf-core download ${{ env.REPO_LOWERCASE }} \ + nf-core pipelines download ${{ env.REPO_LOWERCASE }} \ --revision ${{ env.REPO_BRANCH }} \ --outdir ./${{ env.REPOTITLE_LOWERCASE }} \ --compress "none" \ --container-system 'singularity' \ - --container-library "quay.io" -l "docker.io" -l "ghcr.io" \ + --container-library "quay.io" -l "docker.io" -l "community.wave.seqera.io" \ --container-cache-utilisation 'amend' \ - --download-configuration + --download-configuration 'yes' - name: Inspect download run: tree ./${{ env.REPOTITLE_LOWERCASE }} + - name: Count the downloaded number of container images + id: count_initial + run: | + image_count=$(ls -1 ./singularity_container_images | wc -l | xargs) + echo "Initial container image count: $image_count" + echo "IMAGE_COUNT_INITIAL=$image_count" >> ${GITHUB_ENV} + - name: Run the downloaded pipeline (stub) id: stub_run_pipeline continue-on-error: true env: - NXF_SINGULARITY_CACHEDIR: ./ + NXF_SINGULARITY_CACHEDIR: ./singularity_container_images NXF_SINGULARITY_HOME_MOUNT: true run: nextflow run ./${{ env.REPOTITLE_LOWERCASE }}/$( sed 's/\W/_/g' <<< ${{ env.REPO_BRANCH }}) -stub -profile test,singularity --outdir ./results - name: Run the downloaded pipeline (stub run not supported) id: run_pipeline if: ${{ job.steps.stub_run_pipeline.status == failure() }} env: - NXF_SINGULARITY_CACHEDIR: ./ + NXF_SINGULARITY_CACHEDIR: ./singularity_container_images NXF_SINGULARITY_HOME_MOUNT: true run: nextflow run ./${{ env.REPOTITLE_LOWERCASE }}/$( sed 's/\W/_/g' <<< ${{ env.REPO_BRANCH }}) -profile test,singularity --outdir ./results + + - name: Count the downloaded number of container images + id: count_afterwards + run: | + image_count=$(ls -1 ./singularity_container_images | wc -l | xargs) + echo "Post-pipeline run container image count: $image_count" + echo "IMAGE_COUNT_AFTER=$image_count" >> ${GITHUB_ENV} + + - name: Compare container image counts + run: | + if [ "${{ env.IMAGE_COUNT_INITIAL }}" -ne "${{ env.IMAGE_COUNT_AFTER }}" ]; then + initial_count=${{ env.IMAGE_COUNT_INITIAL }} + final_count=${{ env.IMAGE_COUNT_AFTER }} + difference=$((final_count - initial_count)) + echo "$difference additional container images were \n downloaded at runtime . The pipeline has no support for offline runs!" + tree ./singularity_container_images + exit 1 + else + echo "The pipeline can be downloaded successfully!" + fi diff --git a/.github/workflows/linting b/.github/workflows/linting new file mode 100644 index 00000000..e69de29b diff --git a/.github/workflows/linting.yml b/.github/workflows/linting.yml index 1fcafe88..a502573c 100644 --- a/.github/workflows/linting.yml +++ b/.github/workflows/linting.yml @@ -1,6 +1,6 @@ name: nf-core linting # This workflow is triggered on pushes and PRs to the repository. -# It runs the `nf-core lint` and markdown lint tests to ensure +# It runs the `nf-core pipelines lint` and markdown lint tests to ensure # that the code meets the nf-core guidelines. on: push: @@ -41,17 +41,32 @@ jobs: python-version: "3.12" architecture: "x64" + - name: read .nf-core.yml + uses: pietrobolcato/action-read-yaml@1.1.0 + id: read_yml + with: + config: ${{ github.workspace }}/.nf-core.yml + - name: Install dependencies run: | python -m pip install --upgrade pip - pip install nf-core + pip install nf-core==${{ steps.read_yml.outputs['nf_core_version'] }} + + - name: Run nf-core pipelines lint + if: ${{ github.base_ref != 'master' }} + env: + GITHUB_COMMENTS_URL: ${{ github.event.pull_request.comments_url }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GITHUB_PR_COMMIT: ${{ github.event.pull_request.head.sha }} + run: nf-core -l lint_log.txt pipelines lint --dir ${GITHUB_WORKSPACE} --markdown lint_results.md - - name: Run nf-core lint + - name: Run nf-core pipelines lint --release + if: ${{ github.base_ref == 'master' }} env: GITHUB_COMMENTS_URL: ${{ github.event.pull_request.comments_url }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_PR_COMMIT: ${{ github.event.pull_request.head.sha }} - run: nf-core -l lint_log.txt lint --dir ${GITHUB_WORKSPACE} --markdown lint_results.md + run: nf-core -l lint_log.txt pipelines lint --release --dir ${GITHUB_WORKSPACE} --markdown lint_results.md - name: Save PR number if: ${{ always() }} diff --git a/.github/workflows/linting_comment.yml b/.github/workflows/linting_comment.yml index 40acc23f..42e519bf 100644 --- a/.github/workflows/linting_comment.yml +++ b/.github/workflows/linting_comment.yml @@ -11,7 +11,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Download lint results - uses: dawidd6/action-download-artifact@09f2f74827fd3a8607589e5ad7f9398816f540fe # v3 + uses: dawidd6/action-download-artifact@bf251b5aa9c2f7eeb574a96ee720e24f801b7c11 # v6 with: workflow: linting.yml workflow_conclusion: completed diff --git a/.github/workflows/template_version_comment.yml b/.github/workflows/template_version_comment.yml new file mode 100644 index 00000000..9dea41f0 --- /dev/null +++ b/.github/workflows/template_version_comment.yml @@ -0,0 +1,43 @@ +name: nf-core template version comment +# This workflow is triggered on PRs to check if the pipeline template version matches the latest nf-core version. +# It posts a comment to the PR, even if it comes from a fork. + +on: pull_request_target + +jobs: + template_version: + runs-on: ubuntu-latest + steps: + - name: Check out pipeline code + uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4 + + - name: Read template version from .nf-core.yml + uses: pietrobolcato/action-read-yaml@1.0.0 + id: read_yml + with: + config: ${{ github.workspace }}/.nf-core.yml + + - name: Install nf-core + run: | + python -m pip install --upgrade pip + pip install nf-core==${{ steps.read_yml.outputs['nf_core_version'] }} + + - name: Check nf-core outdated + id: nf_core_outdated + run: pip list --outdated | grep nf-core + + - name: Post nf-core template version comment + uses: mshick/add-pr-comment@b8f338c590a895d50bcbfa6c5859251edc8952fc # v2 + if: | + ${{ steps.nf_core_outdated.outputs.stdout }} =~ 'nf-core' + with: + repo-token: ${{ secrets.NF_CORE_BOT_AUTH_TOKEN }} + allow-repeats: false + message: | + ## :warning: Newer version of the nf-core template is available. + + Your pipeline is using an old version of the nf-core template: ${{ steps.read_yml.outputs['nf_core_version'] }}. + Please update your pipeline to the latest version. + + For more documentation on how to update your pipeline, please see the [nf-core documentation](https://github.com/nf-core/tools?tab=readme-ov-file#sync-a-pipeline-with-the-template) and [Synchronisation documentation](https://nf-co.re/docs/contributing/sync). + # diff --git a/.gitpod.yml b/.gitpod.yml index 105a1821..46118637 100644 --- a/.gitpod.yml +++ b/.gitpod.yml @@ -4,17 +4,14 @@ tasks: command: | pre-commit install --install-hooks nextflow self-update - - name: unset JAVA_TOOL_OPTIONS - command: | - unset JAVA_TOOL_OPTIONS vscode: extensions: # based on nf-core.nf-core-extensionpack - - esbenp.prettier-vscode # Markdown/CommonMark linting and style checking for Visual Studio Code + #- esbenp.prettier-vscode # Markdown/CommonMark linting and style checking for Visual Studio Code - EditorConfig.EditorConfig # override user/workspace settings with settings found in .editorconfig files - Gruntfuggly.todo-tree # Display TODO and FIXME in a tree view in the activity bar - mechatroner.rainbow-csv # Highlight columns in csv files in different colors - # - nextflow.nextflow # Nextflow syntax highlighting + - nextflow.nextflow # Nextflow syntax highlighting - oderwat.indent-rainbow # Highlight indentation level - streetsidesoftware.code-spell-checker # Spelling checker for source code - charliermarsh.ruff # Code linter Ruff diff --git a/.nf-core.yml b/.nf-core.yml index cb773092..e3cc3de9 100644 --- a/.nf-core.yml +++ b/.nf-core.yml @@ -1,3 +1,4 @@ +bump_version: null lint: files_exist: - CODE_OF_CONDUCT.md @@ -18,14 +19,23 @@ lint: - .github/ISSUE_TEMPLATE/bug_report.yml - .github/CONTRIBUTING.md - .prettierignore + modules_config: false multiqc_config: - report_comment nextflow_config: - manifest.name - manifest.homePage - modules_config: false -nf_core_version: 2.14.1 +nf_core_version: 3.0.1 +org_path: null repository_type: pipeline template: - prefix: genomic-medicine-sweden - skip: [] + author: Felix Lenner + description: Long-read variant calling pipeline + force: false + is_nfcore: false + name: nallo + org: genomic-medicine-sweden + outdir: . + skip_features: [] + version: 0.4.0dev +update: null diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 4dc0f1dc..9e9f0e1c 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -7,7 +7,7 @@ repos: - prettier@3.2.5 - repo: https://github.com/editorconfig-checker/editorconfig-checker.python - rev: "2.7.3" + rev: "3.0.3" hooks: - id: editorconfig-checker alias: ec diff --git a/CHANGELOG.md b/CHANGELOG.md index 46f982c5..a6a32a52 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -48,6 +48,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#411](https://github.com/genomic-medicine-sweden/nallo/pull/411) - Updated longphase module to most recent version. ([#409](https://github.com/genomic-medicine-sweden/nallo/issues/409)). - [#416](https://github.com/genomic-medicine-sweden/nallo/pull/416) - Updated WhatsHap to 2.3 and added the `--use-supplementary` flag to use supplementary reads for phasing by default. Changed modules to use biocontainers instead of custom containers. ([#296](https://github.com/genomic-medicine-sweden/nallo/issues/296)) - [#417](https://github.com/genomic-medicine-sweden/nallo/pull/417) - Updated SNV annotation tests to use correct configuration, and snapshot the md5sum, and summary of the variants +- [#422](https://github.com/genomic-medicine-sweden/nallo/pull/422) - Updated nf-core/tools template to v3.0.1 ### `Removed` @@ -67,12 +68,21 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Parameters -| Old parameter | New parameter | -| ------------------------ | --------------------------------- | -| `--skip_aligned_read_qc` | `--skip_qc` | -| `--skip_raw_read_qc` | `--skip_qc` | -| | `--sv_caller` | -|   |  `--minimap2_read_mapping_preset` | +| Old parameter | New parameter | +| -------------------------------- | --------------------------------- | +| `--skip_aligned_read_qc` | `--skip_qc` | +| `--skip_raw_read_qc` | `--skip_qc` | +| | `--sv_caller` | +|   |  `--minimap2_read_mapping_preset` | +| `--genome` | | +| `--igenomes_ignore` | | +| `--max_cpus` | | +| `--max_memory` | | +| `--max_time` | | +| `--validationShowHiddenParams` | | +| `--validationSkipDuplicateCheck` | | +| `--validationS3PathCheck` | | +| `--monochromeLogs` | `--monochrome_logs` | > [!NOTE] > Parameter has been updated if both old and new parameter information is present. diff --git a/README.md b/README.md index bc59d979..f170c7c1 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ [![GitHub Actions Linting Status](https://github.com/genomic-medicine-sweden/nallo/actions/workflows/linting.yml/badge.svg)](https://github.com/genomic-medicine-sweden/nallo/actions/workflows/linting.yml) [![nf-test](https://img.shields.io/badge/unit_tests-nf--test-337ab7.svg)](https://www.nf-test.com) [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.13748210.svg)](https://doi.org/10.5281/zenodo.13748210) -[![Nextflow](https://img.shields.io/badge/nextflow%20DSL2-%E2%89%A523.04.0-23aa62.svg)](https://www.nextflow.io/) +[![Nextflow](https://img.shields.io/badge/nextflow%20DSL2-%E2%89%A524.04.2-23aa62.svg)](https://www.nextflow.io/) [![run with docker](https://img.shields.io/badge/run%20with-docker-0db7ed?labelColor=000000&logo=docker)](https://www.docker.com/) [![run with singularity](https://img.shields.io/badge/run%20with-singularity-1d355c.svg?labelColor=000000)](https://sylabs.io/docs/) [![Launch on Seqera Platform](https://img.shields.io/badge/Launch%20%F0%9F%9A%80-Seqera%20Platform-%234256e7)](https://cloud.seqera.io/launch?pipeline=https://github.com/genomic-medicine-sweden/nallo) @@ -103,7 +103,7 @@ If you would like to contribute to this pipeline, please see the [contributing g If you use genomic-medicine-sweden/nallo for your analysis, please cite it using the following doi: [10.5281/zenodo.13748210](https://doi.org/10.5281/zenodo.13748210). -This pipeline uses code and infrastructure developed and maintained by the [nf-core](https://nf-co.re) community, reused here under the [MIT license](https://github.com/nf-core/tools/blob/master/LICENSE). +This pipeline uses code and infrastructure developed and maintained by the [nf-core](https://nf-co.re) community, reused here under the [MIT license](https://github.com/nf-core/tools/blob/main/LICENSE). > **The nf-core framework for community-curated bioinformatics pipelines.** > diff --git a/assets/methods_description_template.yml b/assets/methods_description_template.yml index 9d78bfcd..8c9c1c1b 100644 --- a/assets/methods_description_template.yml +++ b/assets/methods_description_template.yml @@ -3,26 +3,7 @@ description: "Suggested text and references to use when describing pipeline usag section_name: "genomic-medicine-sweden/nallo Methods Description" section_href: "https://github.com/genomic-medicine-sweden/nallo" plot_type: "html" -## You inject any metadata in the Nextflow '${workflow}' object data: |

    Methods

    -

    Data was processed using genomic-medicine-sweden/nallo v${workflow.manifest.version} ${doi_text} which uses the nf-core template (Ewels et al., 2020), utilising reproducible software environments from the Bioconda (Grüning et al., 2018) and Biocontainers (da Veiga Leprevost et al., 2017) projects.

    +

    Data was processed using genomic-medicine-sweden/nallo v${workflow.manifest.version} ${doi_text} which uses uses code and infrastructure developed and maintained by the nf-core community, reused here under the [MIT license](https://github.com/nf-core/tools/blob/master/LICENSE) (Ewels et al., 2020), utilising reproducible software environments from the Bioconda (Grüning et al., 2018) and Biocontainers (da Veiga Leprevost et al., 2017) projects.

    The pipeline was executed with Nextflow v${workflow.nextflow.version} (Di Tommaso et al., 2017) with the following command:

    -
    ${workflow.commandLine}
    -

    ${tool_citations}

    -

    References

    -
      -
    • Di Tommaso, P., Chatzou, M., Floden, E. W., Barja, P. P., Palumbo, E., & Notredame, C. (2017). Nextflow enables reproducible computational workflows. Nature Biotechnology, 35(4), 316-319. doi: 10.1038/nbt.3820
    • -
    • Ewels, P. A., Peltzer, A., Fillinger, S., Patel, H., Alneberg, J., Wilm, A., Garcia, M. U., Di Tommaso, P., & Nahnsen, S. (2020). The nf-core framework for community-curated bioinformatics pipelines. Nature Biotechnology, 38(3), 276-278. doi: 10.1038/s41587-020-0439-x
    • -
    • Grüning, B., Dale, R., Sjödin, A., Chapman, B. A., Rowe, J., Tomkins-Tinch, C. H., Valieris, R., Köster, J., & Bioconda Team. (2018). Bioconda: sustainable and comprehensive software distribution for the life sciences. Nature Methods, 15(7), 475–476. doi: 10.1038/s41592-018-0046-7
    • -
    • da Veiga Leprevost, F., Grüning, B. A., Alves Aflitos, S., Röst, H. L., Uszkoreit, J., Barsnes, H., Vaudel, M., Moreno, P., Gatto, L., Weber, J., Bai, M., Jimenez, R. C., Sachsenberg, T., Pfeuffer, J., Vera Alvarez, R., Griss, J., Nesvizhskii, A. I., & Perez-Riverol, Y. (2017). BioContainers: an open-source and community-driven framework for software standardization. Bioinformatics (Oxford, England), 33(16), 2580–2582. doi: 10.1093/bioinformatics/btx192
    • - ${tool_bibliography} -
    -
    -
    Notes:
    -
      - ${nodoi_text} -
    • The command above does not include parameters contained in any configs or profiles that may have been used. Ensure the config file is also uploaded with your publication!
    • -
    • You should also cite all software used within this run. Check the "Software Versions" of this report to get version information.
    • -
    -
    diff --git a/assets/multiqc_config.yml b/assets/multiqc_config.yml index 436be0b0..12f3b257 100644 --- a/assets/multiqc_config.yml +++ b/assets/multiqc_config.yml @@ -1,8 +1,6 @@ report_comment: > - This report has been generated by the genomic-medicine-sweden/nallo analysis pipeline. - report_section_order: "genomic-medicine-sweden-nallo-methods-description": order: -1000 diff --git a/assets/schema_input.json b/assets/schema_input.json index 46c00ba6..81e7e095 100644 --- a/assets/schema_input.json +++ b/assets/schema_input.json @@ -1,5 +1,5 @@ { - "$schema": "http://json-schema.org/draft-07/schema", + "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/genomic-medicine-sweden/nallo/master/assets/schema_input.json", "title": "genomic-medicine-sweden/nallo pipeline - params.input schema", "description": "Schema for the file provided with params.input", @@ -26,14 +26,30 @@ "meta": ["family_id"] }, "paternal_id": { - "type": "string", - "pattern": "^\\S+$", + "oneOf": [ + { + "type": "integer", + "enum": [0] + }, + { + "type": "string", + "pattern": "^(\\S+)$" + } + ], "errorMessage": "Paternal ID must be provided and cannot contain spaces. If no paternal ID is available, use 0.", "meta": ["paternal_id"] }, "maternal_id": { - "type": "string", - "pattern": "^\\S+$", + "oneOf": [ + { + "type": "integer", + "enum": [0] + }, + { + "type": "string", + "pattern": "^(\\S+)$" + } + ], "errorMessage": "Maternal ID must be provided and cannot contain spaces. If no maternal ID is available, use 0.", "meta": ["maternal_id"] }, diff --git a/assets/schema_snpdb.json b/assets/schema_snpdb.json index 651ad58a..648a5283 100644 --- a/assets/schema_snpdb.json +++ b/assets/schema_snpdb.json @@ -1,5 +1,5 @@ { - "$schema": "http://json-schema.org/draft-07/schema", + "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/genomic-medicine-sweden/nallo/master/assets/schema_gvcfs.json", "title": "genomic-medicine-sweden/nallo pipeline - params.extra_gvcfs schema", "description": "Schema for the file provided with params.extra_gvcfs", diff --git a/assets/vep_plugin_files_schema.json b/assets/vep_plugin_files_schema.json index d904317b..e436840c 100644 --- a/assets/vep_plugin_files_schema.json +++ b/assets/vep_plugin_files_schema.json @@ -1,5 +1,5 @@ { - "$schema": "http://json-schema.org/draft-07/schema", + "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/genomic-medicine-sweden/nallo/master/assets/vep_plugin_files_schema.json", "title": "Schema for VEP plugin files and their indices", "description": "Schema for VEP plugin files and their indices", diff --git a/conf/base.config b/conf/base.config index 50230189..04acaf56 100644 --- a/conf/base.config +++ b/conf/base.config @@ -10,9 +10,9 @@ process { - cpus = { check_max( 1 * task.attempt, 'cpus' ) } - memory = { check_max( 6.GB * task.attempt, 'memory' ) } - time = { check_max( 4.h * task.attempt, 'time' ) } + cpus = { 1 * task.attempt } + memory = { 6.GB * task.attempt } + time = { 4.h * task.attempt } errorStrategy = { task.exitStatus in ((130..145) + 104) ? 'retry' : 'finish' } maxRetries = 1 @@ -23,36 +23,36 @@ process { // These labels are used and recognised by default in DSL2 files hosted on nf-core/modules. // If possible, it would be nice to keep the same label naming convention when // adding in your local modules too. + // See https://www.nextflow.io/docs/latest/config.html#config-process-selectors withLabel:process_single { - cpus = { check_max( 1 , 'cpus' ) } - memory = { check_max( 6.GB * task.attempt, 'memory' ) } - time = { check_max( 4.h * task.attempt, 'time' ) } + cpus = { 1 } + memory = { 6.GB * task.attempt } + time = { 4.h * task.attempt } } withLabel:process_low { - cpus = { check_max( 2 * task.attempt, 'cpus' ) } - memory = { check_max( 12.GB * task.attempt, 'memory' ) } - time = { check_max( 4.h * task.attempt, 'time' ) } + cpus = { 2 * task.attempt } + memory = { 12.GB * task.attempt } + time = { 4.h * task.attempt } } withLabel:process_medium { - cpus = { check_max( 6 * task.attempt, 'cpus' ) } - memory = { check_max( 36.GB * task.attempt, 'memory' ) } - time = { check_max( 8.h * task.attempt, 'time' ) } + cpus = { 6 * task.attempt } + memory = { 36.GB * task.attempt } + time = { 8.h * task.attempt } } withLabel:process_high { - cpus = { check_max( 12 * task.attempt, 'cpus' ) } - memory = { check_max( 72.GB * task.attempt, 'memory' ) } - time = { check_max( 16.h * task.attempt, 'time' ) } + cpus = { 12 * task.attempt } + memory = { 72.GB * task.attempt } + time = { 16.h * task.attempt } } withLabel:process_long { - time = { check_max( 20.h * task.attempt, 'time' ) } + time = { 20.h * task.attempt } } withLabel:process_high_memory { - memory = { check_max( 200.GB * task.attempt, 'memory' ) } + memory = { 200.GB * task.attempt } } withName: 'HIFIASM' { - time = { check_max( 36.h * task.attempt, 'time' ) } + time = { 36.h * task.attempt } } - withLabel:error_ignore { errorStrategy = 'ignore' } @@ -60,8 +60,8 @@ process { errorStrategy = 'retry' maxRetries = 2 } - withName: 'SAMTOOLS_MERGE|SAMTOOLS_INDEX' { label = 'process_medium' } + } diff --git a/conf/test.config b/conf/test.config index 469e3523..1e01f42d 100644 --- a/conf/test.config +++ b/conf/test.config @@ -9,15 +9,19 @@ ---------------------------------------------------------------------------------------- */ + +process { + resourceLimits = [ + cpus: 4, + memory: '15.GB', + time: '1.h' + ] +} + params { config_profile_name = 'Test profile' config_profile_description = 'Minimal test dataset to check pipeline function' - // Limit resources so that this can run on GitHub Actions - max_cpus = 4 - max_memory = '15.GB' - max_time = '6.h' - // Base directory for nf-core/modules test data modules_testdata_base_path = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/' @@ -65,21 +69,16 @@ trace { enabled = false } dag { enabled = false } process { - withLabel: 'process_high' { cpus = 4 } - withLabel: 'process_medium' { cpus = 2 } - withLabel: 'process_low' { cpus = 1 } - withLabel: 'process_single' { cpus = 1 } - } diff --git a/docs/parameters.md b/docs/parameters.md index 2f086356..1aa07374 100644 --- a/docs/parameters.md +++ b/docs/parameters.md @@ -31,6 +31,23 @@ Define where the pipeline should find input data and save output data. | `outdir` | The output directory where the results will be saved. You have to use absolute paths to storage on Cloud infrastructure. | `string` | | True | | | `email` | Email address for completion summary.
    HelpSet this parameter to your e-mail address to get a summary e-mail with details of the run sent to you when the workflow exits. If set in your user config file (`~/.nextflow/config`) then you don't need to specify this on the command line for every run.
    | `string` | | | | | `multiqc_title` | MultiQC report title. Printed as page header, used for filename if not otherwise specified. | `string` | | | | +| `cadd_prescored` | Path to a directory containing prescored indels for CADD.
    HelpThis folder contains the compressed files and indexes that would otherwise be in data/prescored folder as described in https://github.com/kircherlab/CADD-scripts/#manual-installation.
    | `string` | | | | +| `cadd_resources` | Path to a directory containing CADD annotations.
    HelpThis folder contains the uncompressed files that would otherwise be in data/annotation folder as described in https://github.com/kircherlab/CADD-scripts/#manual-installation.
    | `string` | | | | +| `par_regions` | Provide a bed file of chrX and chrY PAR regions for dipcall and DeepVariant | `string` | | | | +| `tandem_repeats` | A tandem repeat BED file for sniffles | `string` | | | | +| `trgt_repeats` | A BED file with repeats to be genotyped with TRGT | `string` | | | | +| `snp_db` | A csv file with echtvar databases to annotate SNVs with | `string` | | | | +| `variant_catalog` | A variant catalog json-file for stranger | `string` | | | | +| `variant_consequences_snv` | File containing list of SO terms listed in the order of severity from most severe to lease severe for annotating genomic SNVs. For more information check https://ensembl.org/info/genome/variation/prediction/predicted_data.html | `string` | | | | +| `vep_cache` | A path to the VEP cache location | `string` | | | | +| `bed` | A BED file with regions of interest, used to limit short variant calling. | `string` | | | | +| `hificnv_xy` | A BED file containing expected copy number regions for XY samples. | `string` | | | | +| `hificnv_xx` | A BED file containing expected copy number regions for XX samples. | `string` | | | | +| `hificnv_exclude` | A BED file specifying regions to exclude with HiFiCNV, such as centromeres. | `string` | | | | +| `reduced_penetrance` | A file with gene ids that have reduced penetrance. For use with genmod. | `string` | | | | +| `score_config_snv` | A SNV rank model config file for genmod. | `string` | | | | +| `somalier_sites` | A VCF of known polymorphic sites for somalier | `string` | | | | +| `pipelines_testdata_base_path` | Base URL or local path to location of pipeline test dataset files | `string` | https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/1f4e062926fc10f70a38e917e5771edb333e89bf/ | | True | ## Reference genome options @@ -39,8 +56,6 @@ Reference genome related files and options required for the workflow. | Parameter | Description | Type | Default | Required | Hidden | |-----------|-----------|-----------|-----------|-----------|-----------| | `fasta` | Reference genome | `string` | | | | -| `genome` | Name of iGenomes reference.
    HelpIf using a reference genome configured in the pipeline using iGenomes, use this parameter to give the ID for the reference. This is then used to build the full paths for all required reference genome files e.g. `--genome GRCh38`.

    See the [nf-core website docs](https://nf-co.re/usage/reference_genomes) for more details.
    | `string` | | | | -| `igenomes_ignore` | Do not load the iGenomes reference config.
    HelpDo not load `igenomes.config` when running the pipeline. You may choose this option if you observe clashes between custom parameters and those supplied in `igenomes.config`.
    | `boolean` | True | | True | ## Institutional config options @@ -55,23 +70,12 @@ Parameters used to describe centralised config profiles. These should not be edi | `config_profile_contact` | Institutional config contact information. | `string` | | | True | | `config_profile_url` | Institutional config URL link. | `string` | | | True | -## Max job request options - -Set the top limit for requested resources for any single job. - -| Parameter | Description | Type | Default | Required | Hidden | -|-----------|-----------|-----------|-----------|-----------|-----------| -| `max_cpus` | Maximum number of CPUs that can be requested for any single job.
    HelpUse to set an upper-limit for the CPU requirement for each process. Should be an integer e.g. `--max_cpus 1`
    | `integer` | 16 | | True | -| `max_memory` | Maximum amount of memory that can be requested for any single job.
    HelpUse to set an upper-limit for the memory requirement for each process. Should be a string in the format integer-unit e.g. `--max_memory '8.GB'`
    | `string` | 128.GB | | True | -| `max_time` | Maximum amount of time that can be requested for any single job.
    HelpUse to set an upper-limit for the time requirement for each process. Should be a string in the format integer-unit e.g. `--max_time '2.h'`
    | `string` | 240.h | | True | - ## Generic options Less common options for the pipeline, typically set in a config file. | Parameter | Description | Type | Default | Required | Hidden | |-----------|-----------|-----------|-----------|-----------|-----------| -| `help` | Display help text. | `boolean` | | | True | | `version` | Display version and exit. | `boolean` | | | True | | `publish_dir_mode` | Method used to save pipeline results to output directory.
    HelpThe Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.
    | `string` | copy | | True | | `email_on_fail` | Email address for completion summary, only when pipeline fails.
    HelpAn email address to send a summary email to when the pipeline is completed - ONLY sent if the pipeline does not exit successfully.
    | `string` | | | True | @@ -83,10 +87,6 @@ Less common options for the pipeline, typically set in a config file. | `multiqc_logo` | Custom logo file to supply to MultiQC. File name must also be set in the MultiQC config file | `string` | | | True | | `multiqc_methods_description` | Custom MultiQC yaml file containing HTML including a methods description. | `string` | | | | | `validate_params` | Boolean whether to validate parameters against the schema at runtime | `boolean` | True | | True | -| `validationShowHiddenParams` | Show all params when using `--help`
    HelpBy default, parameters set as _hidden_ in the schema are not shown on the command line when a user runs with `--help`. Specifying this option will tell the pipeline to show all parameters.
    | `boolean` | | | True | -| `validationSkipDuplicateCheck` | nf-validation related parameter | `boolean` | | | True | -| `validationS3PathCheck` | Boolean whether to validate validate AWS S3 paths | `boolean` | | | True | -| `monochromeLogs` | Boolean whether to color nf-validation logs | `boolean` | | | True | ## Workflow options @@ -109,29 +109,3 @@ Workflow options specific to genomic-medicine-sweden/nallo | `extra_vep_options` | Extra options to VEP, used for test profile. | `string` | | | True | | `extra_paraphase_options` | Extra options to Paraphase, used for test profile. | `string` | | | True | | `extra_hifiasm_options` | Extra options to hifiasm, used for test profile. | `string` | | | True | - -## File inputs - -The different files that are required. Some are only required by certain workflows, see the usage documentation. - -| Parameter | Description | Type | Default | Required | Hidden | -|-----------|-----------|-----------|-----------|-----------|-----------| -| `cadd_prescored` | Path to a directory containing prescored indels for CADD.
    HelpThis folder contains the compressed files and indexes that would otherwise be in data/prescored folder as described in https://github.com/kircherlab/CADD-scripts/#manual-installation.
    | `string` | | | | -| `cadd_resources` | Path to a directory containing CADD annotations.
    HelpThis folder contains the uncompressed files that would otherwise be in data/annotation folder as described in https://github.com/kircherlab/CADD-scripts/#manual-installation.
    | `string` | | | | -| `par_regions` | Provide a bed file of chrX and chrY PAR regions for dipcall and DeepVariant | `string` | | | | -| `tandem_repeats` | A tandem repeat BED file for sniffles | `string` | | | | -| `trgt_repeats` | A BED file with repeats to be genotyped with TRGT | `string` | | | | -| `snp_db` | A csv file with echtvar databases to annotate SNVs with | `string` | | | | -| `variant_catalog` | A variant catalog json-file for stranger | `string` | | | | -| `variant_consequences_snv` | File containing list of SO terms listed in the order of severity from most severe to lease severe for annotating genomic SNVs. For more information check https://ensembl.org/info/genome/variation/prediction/predicted_data.html | `string` | | | | -| `vep_cache` | A path to the VEP cache location | `string` | | | | -| `bed` | A BED file with regions of interest, used to limit short variant calling. | `string` | | | | -| `hificnv_xy` | A BED file containing expected copy number regions for XY samples. | `string` | | | | -| `hificnv_xx` | A BED file containing expected copy number regions for XX samples. | `string` | | | | -| `hificnv_exclude` | A BED file specifying regions to exclude with HiFiCNV, such as centromeres. | `string` | | | | -| `reduced_penetrance` | A file with gene ids that have reduced penetrance. For use with genmod. | `string` | | | | -| `score_config_snv` | A SNV rank model config file for genmod. | `string` | | | | -| `somalier_sites` | A VCF of known polymorphic sites for somalier | `string` | | | | -| `validationFailUnrecognisedParams` | Validation of parameters fails when an unrecognised parameter is found.
    HelpBy default, when an unrecognised parameter is found, it returns a warning.
    | `boolean` | | | True | -| `validationLenientMode` | Validation of parameters in lenient more.
    HelpAllows string values that are parseable as numbers or booleans. For further information see [JSONSchema docs](https://github.com/everit-org/json-schema#lenient-mode).
    | `boolean` | | | True | -| `pipelines_testdata_base_path` | Base URL or local path to location of pipeline test dataset files | `string` | https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/1f4e062926fc10f70a38e917e5771edb333e89bf/ | | True | diff --git a/docs/usage.md b/docs/usage.md index 2f6badb0..ff2b2fda 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -6,9 +6,9 @@ genomic-medicine-sweden/nallo is a bioinformatics analysis pipeline to analyse l ## Prerequisites -1. Install Nextflow (>=22.10.1) using the instructions [here.](https://nextflow.io/docs/latest/getstarted.html#installation) +1. Install Nextflow (>=24.04.2) using the instructions [here.](https://nextflow.io/docs/latest/getstarted.html#installation) 2. Install one of the following technologies for full pipeline reproducibility: Docker, Singularity, Podman, Shifter or Charliecloud. - > Almost all nf-core pipelines give you the option to use conda as well. However, some tools used in the nallo pipeline do not have a conda package so we do not support conda at the moment. + > Almost all nf-core pipelines give you the option to use conda as well. However, some tools used in genomic-medicine-sweden/nallo do not have a conda package so we do not support conda at the moment. ## Getting started @@ -340,14 +340,6 @@ See the main [Nextflow documentation](https://www.nextflow.io/docs/latest/config If you have any questions or issues please send us a message on [Slack](https://nf-co.re/join/slack) on the [`#configs` channel](https://nfcore.slack.com/channels/configs). -## Azure Resource Requests - -To be used with the `azurebatch` profile by specifying the `-profile azurebatch`. -We recommend providing a compute `params.vm_type` of `Standard_D16_v3` VMs by default but these options can be changed if required. - -Note that the choice of VM size depends on your quota and the overall workload during the analysis. -For a thorough list, please refer the [Azure Sizes for virtual machines in Azure](https://docs.microsoft.com/en-us/azure/virtual-machines/sizes). - ## Running in the background Nextflow handles job submissions and supervises the running jobs. The Nextflow process must run until the pipeline is finished. diff --git a/main.nf b/main.nf index da4bb096..aab29291 100644 --- a/main.nf +++ b/main.nf @@ -6,9 +6,6 @@ Github : https://github.com/genomic-medicine-sweden/nallo ---------------------------------------------------------------------------------------- */ - -nextflow.enable.dsl = 2 - /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ IMPORT FUNCTIONS / MODULES / SUBWORKFLOWS / WORKFLOWS @@ -18,7 +15,6 @@ nextflow.enable.dsl = 2 include { NALLO } from './workflows/nallo' include { PIPELINE_INITIALISATION } from './subworkflows/local/utils_nfcore_nallo_pipeline' include { PIPELINE_COMPLETION } from './subworkflows/local/utils_nfcore_nallo_pipeline' - include { getGenomeAttribute } from './subworkflows/local/utils_nfcore_nallo_pipeline' /* @@ -36,6 +32,7 @@ workflow GENOMICMEDICINESWEDEN_NALLO { samplesheet // channel: samplesheet read in from --input main: + // // WORKFLOW: Run pipeline // @@ -56,13 +53,11 @@ workflow GENOMICMEDICINESWEDEN_NALLO { workflow { main: - // // SUBWORKFLOW: Run initialisation tasks // PIPELINE_INITIALISATION ( params.version, - params.help, params.validate_params, params.monochrome_logs, args, diff --git a/modules.json b/modules.json index d7b5a21b..4c1ac8e5 100644 --- a/modules.json +++ b/modules.json @@ -271,17 +271,17 @@ "nf-core": { "utils_nextflow_pipeline": { "branch": "master", - "git_sha": "5caf7640a9ef1d18d765d55339be751bb0969dfa", + "git_sha": "9d05360da397692321d377b6102d2fb22507c6ef", "installed_by": ["subworkflows"] }, "utils_nfcore_pipeline": { "branch": "master", - "git_sha": "92de218a329bfc9a9033116eb5f65fd270e72ba3", + "git_sha": "772684d9d66f37b650c8ba5146ac1ee3ecba2acb", "installed_by": ["subworkflows"] }, - "utils_nfvalidation_plugin": { + "utils_nfschema_plugin": { "branch": "master", - "git_sha": "5caf7640a9ef1d18d765d55339be751bb0969dfa", + "git_sha": "bbd5a41f4535a8defafe6080e00ea74c45f4f96c", "installed_by": ["subworkflows"] } } diff --git a/nextflow.config b/nextflow.config index ed5cc4ba..dd675f3c 100644 --- a/nextflow.config +++ b/nextflow.config @@ -64,9 +64,6 @@ params { // References fasta = null - genome = null - igenomes_base = 's3://ngi-igenomes/igenomes' - igenomes_ignore = true // MultiQC options multiqc_config = null @@ -83,53 +80,30 @@ params { plaintext_email = false monochrome_logs = false hook_url = null - help = false + + help_full = false + show_hidden = false version = false pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/1f4e062926fc10f70a38e917e5771edb333e89bf/' // Config options config_profile_name = null config_profile_description = null + custom_config_version = 'master' custom_config_base = "https://raw.githubusercontent.com/nf-core/configs/${params.custom_config_version}" config_profile_contact = null config_profile_url = null - // Max resource options - // Defaults only, expecting to be overwritten - max_memory = '128.GB' - max_cpus = 16 - max_time = '240.h' // Schema validation default options - validationFailUnrecognisedParams = false - validationLenientMode = false - validationSchemaIgnoreParams = 'genomes,igenomes_base' - validationShowHiddenParams = false - validate_params = true - validationSkipDuplicateCheck = false - validationS3PathCheck = false - monochromeLogs = false + validate_params = true + } // Load base.config by default for all pipelines includeConfig 'conf/base.config' -// Load nf-core custom profiles from different Institutions -try { - includeConfig "${params.custom_config_base}/nfcore_custom.config" -} catch (Exception e) { - System.err.println("WARNING: Could not load nf-core/config profiles: ${params.custom_config_base}/nfcore_custom.config") -} - -// Load genomic-medicine-sweden/nallo custom profiles from different institutions. -// Warning: Uncomment only if a pipeline-specific institutional config already exists on nf-core/configs! -//try { -// includeConfig "${params.custom_config_base}/pipeline/nallo.config" -//} catch (Exception e) { -// System.err.println("WARNING: Could not load nf-core/config/nallo profiles: ${params.custom_config_base}/pipeline/nallo.config") -//} - profiles { debug { dumpHashes = true @@ -144,7 +118,7 @@ profiles { podman.enabled = false shifter.enabled = false charliecloud.enabled = false - conda.channels = ['conda-forge', 'bioconda', 'defaults'] + conda.channels = ['conda-forge', 'bioconda'] apptainer.enabled = false } mamba { @@ -233,25 +207,18 @@ profiles { test_full { includeConfig 'conf/test_full.config' } } -// Set default registry for Apptainer, Docker, Podman and Singularity independent of -profile -// Will not be used unless Apptainer / Docker / Podman / Singularity are enabled -// Set to your registry if you have a mirror of containers -apptainer.registry = 'quay.io' -docker.registry = 'quay.io' -podman.registry = 'quay.io' -singularity.registry = 'quay.io' +// Load nf-core custom profiles from different Institutions +includeConfig !System.getenv('NXF_OFFLINE') && params.custom_config_base ? "${params.custom_config_base}/nfcore_custom.config" : "/dev/null" -// Nextflow plugins -plugins { - id 'nf-validation@1.1.3' // Validation of pipeline parameters and creation of an input channel from a sample sheet -} +// Set default registry for Apptainer, Docker, Podman, Charliecloud and Singularity independent of -profile +// Will not be used unless Apptainer / Docker / Podman / Charliecloud / Singularity are enabled +// Set to your registry if you have a mirror of containers +apptainer.registry = 'quay.io' +docker.registry = 'quay.io' +podman.registry = 'quay.io' +singularity.registry = 'quay.io' +charliecloud.registry = 'quay.io' -// Load igenomes.config if required -if (!params.igenomes_ignore) { - includeConfig 'conf/igenomes.config' -} else { - params.genomes = [:] -} // Export these variables to prevent local Python/R libraries from conflicting with those in the container // The JULIA depot path has been adjusted to a fixed path `/usr/local/share/julia` that needs to be used for packages in the container. // See https://apeltzer.github.io/post/03-julia-lang-nextflow/ for details on that. Once we have a common agreement on where to keep Julia packages, this is adjustable. @@ -263,8 +230,15 @@ env { JULIA_DEPOT_PATH = "/usr/local/share/julia" } -// Capture exit codes from upstream processes when piping -process.shell = ['/bin/bash', '-euo', 'pipefail'] +// Set bash options +process.shell = """\ +bash + +set -e # Exit if a tool returns a non-zero status/exit code +set -u # Treat unset variables and parameters as an error +set -o pipefail # Returns the status of the last command to exit with a non-zero status or zero if all successfully execute +set -C # No clobber - prevent output redirection from overwriting files. +""" // Disable process selector warnings by default. Use debug profile to enable warnings. nextflow.enable.configProcessNamesValidation = false @@ -293,9 +267,45 @@ manifest { homePage = 'https://github.com/genomic-medicine-sweden/nallo' description = """Long-read variant calling pipeline""" mainScript = 'main.nf' - nextflowVersion = '!>=23.04.0' + nextflowVersion = '!>=24.04.2' version = '0.4.0dev' - doi = '' + doi = '10.5281/zenodo.13748210' +} + +// Nextflow plugins +plugins { + id 'nf-schema@2.1.1' // Validation of pipeline parameters and creation of an input channel from a sample sheet +} + +validation { + defaultIgnoreParams = ["genomes"] + help { + enabled = true + command = "nextflow run $manifest.name -profile --input samplesheet.csv --outdir " + fullParameter = "help_full" + showHiddenParameter = "show_hidden" + beforeText = """ +\033[0;34m _ _ _ _ +\033[0;34m __ _ ___ _ __ ___ _ __ ___ (_) ___ _ __ ___ ___ __| (_) ___(_)_ __ ___ +\033[0;34m / _` |/ _ \\ '_ \\ / _ \\| '_ ` _ \\| |/ __|____| '_ ` _ \\ / _ \\/ _` | |/ __| | '_ \\ / _ \\_____ +\033[0;34m | (_| | __/ | | | (_) | | | | | | | (_|_____| | | | | | __/ (_| | | (__| | | | | __/_____| +\033[0;34m \\__, |\\___|_| |_|\\___/|_| |_| |_|_|\\___| |_| |_| |_|\\___|\\__,_|_|\\___|_|_| |_|\\___| +\033[0;34m |___/ _____ __| | ___ _ __ / / __ __ _| | | ___ +\033[0;34m / __\\ \\ /\\ / / _ \\/ _` |/ _ \\ '_ \\ / / '_ \\ / _` | | |/ _ \\ +\033[0;34m \\__ \\\\ V V / __/ (_| | __/ | | |/ /| | | | (_| | | | (_) | +\033[0;34m |___/ \\_/\\_/ \\___|\\__,_|\\___|_| |_/_/ |_| |_|\\__,_|_|_|\\___/ +\033[0;34m +""" + afterText = """${manifest.doi ? "* The pipeline\n" : ""}${manifest.doi.tokenize(",").collect { " https://doi.org/${it.trim().replace('https://doi.org/','')}"}.join("\n")}${manifest.doi ? "\n" : ""} +* The nf-core framework\n https://doi.org/10.1038/s41587-020-0439-x + +* Software dependencies\n https://github.com/${manifest.name}/blob/master/CITATIONS.md +""" + } + summary { + beforeText = validation.help.beforeText + afterText = validation.help.afterText + } } // Load modules.config for DSL2 module specific options @@ -321,36 +331,3 @@ includeConfig 'conf/modules/snv_annotation.config' includeConfig 'conf/modules/call_svs.config' includeConfig 'conf/modules/short_variant_calling.config' includeConfig 'conf/modules/cnv.config' - -// Function to ensure that resource requirements don't go beyond -// a maximum limit -def check_max(obj, type) { - if (type == 'memory') { - try { - if (obj.compareTo(params.max_memory as nextflow.util.MemoryUnit) == 1) - return params.max_memory as nextflow.util.MemoryUnit - else - return obj - } catch (all) { - println " ### ERROR ### Max memory '${params.max_memory}' is not valid! Using default value: $obj" - return obj - } - } else if (type == 'time') { - try { - if (obj.compareTo(params.max_time as nextflow.util.Duration) == 1) - return params.max_time as nextflow.util.Duration - else - return obj - } catch (all) { - println " ### ERROR ### Max time '${params.max_time}' is not valid! Using default value: $obj" - return obj - } - } else if (type == 'cpus') { - try { - return Math.min( obj, params.max_cpus as int ) - } catch (all) { - println " ### ERROR ### Max cpus '${params.max_cpus}' is not valid! Using default value: $obj" - return obj - } - } -} diff --git a/nextflow_schema.json b/nextflow_schema.json index 6ab7a870..f715de68 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -1,10 +1,10 @@ { - "$schema": "http://json-schema.org/draft-07/schema", + "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/genomic-medicine-sweden/nallo/master/nextflow_schema.json", "title": "genomic-medicine-sweden/nallo pipeline parameters", "description": "Long-read variant calling pipeline", "type": "object", - "definitions": { + "$defs": { "workflow_skip_options": { "title": "Workflow skip options", "type": "object", @@ -117,6 +117,120 @@ "type": "string", "description": "MultiQC report title. Printed as page header, used for filename if not otherwise specified.", "fa_icon": "fas fa-file-signature" + }, + "cadd_prescored": { + "type": "string", + "exists": true, + "format": "directory-path", + "fa_icon": "fas fa-file", + "description": "Path to a directory containing prescored indels for CADD.", + "help_text": "This folder contains the compressed files and indexes that would otherwise be in data/prescored folder as described in https://github.com/kircherlab/CADD-scripts/#manual-installation." + }, + "cadd_resources": { + "type": "string", + "exists": true, + "format": "directory-path", + "fa_icon": "fas fa-file", + "description": "Path to a directory containing CADD annotations.", + "help_text": "This folder contains the uncompressed files that would otherwise be in data/annotation folder as described in https://github.com/kircherlab/CADD-scripts/#manual-installation." + }, + "par_regions": { + "type": "string", + "description": "Provide a bed file of chrX and chrY PAR regions for dipcall and DeepVariant", + "format": "file-path", + "exists": true + }, + "tandem_repeats": { + "type": "string", + "format": "file-path", + "description": "A tandem repeat BED file for sniffles", + "pattern": "^\\S+\\.bed$", + "exists": true + }, + "trgt_repeats": { + "type": "string", + "description": "A BED file with repeats to be genotyped with TRGT", + "format": "file-path", + "exists": true + }, + "snp_db": { + "type": "string", + "pattern": "^\\S+\\.csv$", + "format": "file-path", + "mimetype": "text/csv", + "schema": "/assets/schema_snpdb.json", + "description": "A csv file with echtvar databases to annotate SNVs with", + "exists": true + }, + "variant_catalog": { + "type": "string", + "description": "A variant catalog json-file for stranger", + "format": "file-path", + "exists": true + }, + "variant_consequences_snv": { + "type": "string", + "description": "File containing list of SO terms listed in the order of severity from most severe to lease severe for annotating genomic SNVs. For more information check https://ensembl.org/info/genome/variation/prediction/predicted_data.html", + "fa_icon": "fas fa-file-csv" + }, + "vep_cache": { + "type": "string", + "description": "A path to the VEP cache location", + "format": "path", + "exists": true + }, + "bed": { + "type": "string", + "pattern": "^\\S+\\.bed$", + "format": "file-path", + "description": "A BED file with regions of interest, used to limit short variant calling.", + "exists": true + }, + "hificnv_xy": { + "type": "string", + "format": "file-path", + "description": "A BED file containing expected copy number regions for XY samples.", + "exists": true + }, + "hificnv_xx": { + "type": "string", + "format": "file-path", + "description": "A BED file containing expected copy number regions for XX samples.", + "exists": true + }, + "hificnv_exclude": { + "type": "string", + "format": "file-path", + "description": "A BED file specifying regions to exclude with HiFiCNV, such as centromeres.", + "exists": true + }, + "reduced_penetrance": { + "type": "string", + "exists": true, + "format": "path", + "fa_icon": "fas fa-file-csv", + "description": "A file with gene ids that have reduced penetrance. For use with genmod." + }, + "score_config_snv": { + "type": "string", + "exists": true, + "format": "path", + "fa_icon": "fas fa-file", + "description": "A SNV rank model config file for genmod." + }, + "somalier_sites": { + "type": "string", + "pattern": "^\\S+\\.vcf(\\.gz)?$", + "description": "A VCF of known polymorphic sites for somalier", + "format": "file-path", + "exists": true + }, + "pipelines_testdata_base_path": { + "type": "string", + "fa_icon": "far fa-check-circle", + "description": "Base URL or local path to location of pipeline test dataset files", + "default": "https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/1f4e062926fc10f70a38e917e5771edb333e89bf/", + "hidden": true } } }, @@ -132,19 +246,6 @@ "pattern": "^.*\\.(fasta|fa|fna)(\\.gz)?$", "format": "file-path", "exists": true - }, - "genome": { - "type": "string", - "description": "Name of iGenomes reference.", - "help_text": "If using a reference genome configured in the pipeline using iGenomes, use this parameter to give the ID for the reference. This is then used to build the full paths for all required reference genome files e.g. `--genome GRCh38`. \n\nSee the [nf-core website docs](https://nf-co.re/usage/reference_genomes) for more details." - }, - "igenomes_ignore": { - "type": "boolean", - "description": "Do not load the iGenomes reference config.", - "fa_icon": "fas fa-ban", - "hidden": true, - "help_text": "Do not load `igenomes.config` when running the pipeline. You may choose this option if you observe clashes between custom parameters and those supplied in `igenomes.config`.", - "default": true } } }, @@ -196,41 +297,6 @@ } } }, - "max_job_request_options": { - "title": "Max job request options", - "type": "object", - "fa_icon": "fab fa-acquisitions-incorporated", - "description": "Set the top limit for requested resources for any single job.", - "help_text": "If you are running on a smaller system, a pipeline step requesting more resources than are available may cause the Nextflow to stop the run with an error. These options allow you to cap the maximum resources requested by any single job so that the pipeline will run on your system.\n\nNote that you can not _increase_ the resources requested by any job using these options. For that you will need your own configuration file. See [the nf-core website](https://nf-co.re/usage/configuration) for details.", - "properties": { - "max_cpus": { - "type": "integer", - "description": "Maximum number of CPUs that can be requested for any single job.", - "default": 16, - "fa_icon": "fas fa-microchip", - "hidden": true, - "help_text": "Use to set an upper-limit for the CPU requirement for each process. Should be an integer e.g. `--max_cpus 1`" - }, - "max_memory": { - "type": "string", - "description": "Maximum amount of memory that can be requested for any single job.", - "default": "128.GB", - "fa_icon": "fas fa-memory", - "pattern": "^\\d+(\\.\\d+)?\\.?\\s*(K|M|G|T)?B$", - "hidden": true, - "help_text": "Use to set an upper-limit for the memory requirement for each process. Should be a string in the format integer-unit e.g. `--max_memory '8.GB'`" - }, - "max_time": { - "type": "string", - "description": "Maximum amount of time that can be requested for any single job.", - "default": "240.h", - "fa_icon": "far fa-clock", - "pattern": "^(\\d+\\.?\\s*(s|m|h|d|day)\\s*)+$", - "hidden": true, - "help_text": "Use to set an upper-limit for the time requirement for each process. Should be a string in the format integer-unit e.g. `--max_time '2.h'`" - } - } - }, "generic_options": { "title": "Generic options", "type": "object", @@ -238,12 +304,6 @@ "description": "Less common options for the pipeline, typically set in a config file.", "help_text": "These options are common to all nf-core pipelines and allow you to customise some of the core preferences for how the pipeline runs.\n\nTypically these options would be set in a Nextflow config file loaded for all pipeline runs, such as `~/.nextflow/config`.", "properties": { - "help": { - "type": "boolean", - "description": "Display help text.", - "fa_icon": "fas fa-question-circle", - "hidden": true - }, "version": { "type": "boolean", "description": "Display version and exit.", @@ -318,28 +378,6 @@ "default": true, "fa_icon": "fas fa-check-square", "hidden": true - }, - "validationShowHiddenParams": { - "type": "boolean", - "fa_icon": "far fa-eye-slash", - "description": "Show all params when using `--help`", - "hidden": true, - "help_text": "By default, parameters set as _hidden_ in the schema are not shown on the command line when a user runs with `--help`. Specifying this option will tell the pipeline to show all parameters." - }, - "validationSkipDuplicateCheck": { - "type": "boolean", - "hidden": true, - "description": "nf-validation related parameter" - }, - "validationS3PathCheck": { - "type": "boolean", - "hidden": true, - "description": "Boolean whether to validate validate AWS S3 paths" - }, - "monochromeLogs": { - "type": "boolean", - "hidden": true, - "description": "Boolean whether to color nf-validation logs" } } }, @@ -437,169 +475,38 @@ } }, "required": ["preset"] - }, - "file_inputs": { - "title": "File inputs", - "type": "object", - "description": "The different files that are required. Some are only required by certain workflows, see the usage documentation.", - "default": "", - "fa_icon": "fas fa-copy", - "properties": { - "cadd_prescored": { - "type": "string", - "exists": true, - "format": "directory-path", - "fa_icon": "fas fa-file", - "description": "Path to a directory containing prescored indels for CADD.", - "help_text": "This folder contains the compressed files and indexes that would otherwise be in data/prescored folder as described in https://github.com/kircherlab/CADD-scripts/#manual-installation." - }, - "cadd_resources": { - "type": "string", - "exists": true, - "format": "directory-path", - "fa_icon": "fas fa-file", - "description": "Path to a directory containing CADD annotations.", - "help_text": "This folder contains the uncompressed files that would otherwise be in data/annotation folder as described in https://github.com/kircherlab/CADD-scripts/#manual-installation." - }, - "par_regions": { - "type": "string", - "description": "Provide a bed file of chrX and chrY PAR regions for dipcall and DeepVariant", - "format": "file-path", - "exists": true - }, - "tandem_repeats": { - "type": "string", - "format": "file-path", - "description": "A tandem repeat BED file for sniffles", - "pattern": "^\\S+\\.bed$", - "exists": true - }, - "trgt_repeats": { - "type": "string", - "description": "A BED file with repeats to be genotyped with TRGT", - "format": "file-path", - "exists": true - }, - "snp_db": { - "type": "string", - "pattern": "^\\S+\\.csv$", - "format": "file-path", - "mimetype": "text/csv", - "schema": "/assets/schema_snpdb.json", - "description": "A csv file with echtvar databases to annotate SNVs with", - "exists": true - }, - "variant_catalog": { - "type": "string", - "description": "A variant catalog json-file for stranger", - "format": "file-path", - "exists": true - }, - "variant_consequences_snv": { - "type": "string", - "description": "File containing list of SO terms listed in the order of severity from most severe to lease severe for annotating genomic SNVs. For more information check https://ensembl.org/info/genome/variation/prediction/predicted_data.html", - "fa_icon": "fas fa-file-csv" - }, - "vep_cache": { - "type": "string", - "description": "A path to the VEP cache location", - "format": "path", - "exists": true - }, - "bed": { - "type": "string", - "pattern": "^\\S+\\.bed$", - "format": "file-path", - "description": "A BED file with regions of interest, used to limit short variant calling.", - "exists": true - }, - "hificnv_xy": { - "type": "string", - "format": "file-path", - "description": "A BED file containing expected copy number regions for XY samples.", - "exists": true - }, - "hificnv_xx": { - "type": "string", - "format": "file-path", - "description": "A BED file containing expected copy number regions for XX samples.", - "exists": true - }, - "hificnv_exclude": { - "type": "string", - "format": "file-path", - "description": "A BED file specifying regions to exclude with HiFiCNV, such as centromeres.", - "exists": true - }, - "reduced_penetrance": { - "type": "string", - "exists": true, - "format": "path", - "fa_icon": "fas fa-file-csv", - "description": "A file with gene ids that have reduced penetrance. For use with genmod." - }, - "score_config_snv": { - "type": "string", - "exists": true, - "format": "path", - "fa_icon": "fas fa-file", - "description": "A SNV rank model config file for genmod." - }, - "somalier_sites": { - "type": "string", - "pattern": "^\\S+\\.vcf(\\.gz)?$", - "description": "A VCF of known polymorphic sites for somalier", - "format": "file-path", - "exists": true - }, - "validationFailUnrecognisedParams": { - "type": "boolean", - "fa_icon": "far fa-check-circle", - "description": "Validation of parameters fails when an unrecognised parameter is found.", - "hidden": true, - "help_text": "By default, when an unrecognised parameter is found, it returns a warning." - }, - "validationLenientMode": { - "type": "boolean", - "fa_icon": "far fa-check-circle", - "description": "Validation of parameters in lenient more.", - "hidden": true, - "help_text": "Allows string values that are parseable as numbers or booleans. For further information see [JSONSchema docs](https://github.com/everit-org/json-schema#lenient-mode)." - }, - "pipelines_testdata_base_path": { - "type": "string", - "fa_icon": "far fa-check-circle", - "description": "Base URL or local path to location of pipeline test dataset files", - "default": "https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/1f4e062926fc10f70a38e917e5771edb333e89bf/", - "hidden": true - } - } } }, "allOf": [ { - "$ref": "#/definitions/workflow_skip_options" + "$ref": "#/$defs/workflow_skip_options" + }, + { + "$ref": "#/$defs/input_output_options" + }, + { + "$ref": "#/$defs/reference_genome_options" }, { - "$ref": "#/definitions/input_output_options" + "$ref": "#/$defs/institutional_config_options" }, { - "$ref": "#/definitions/reference_genome_options" + "$ref": "#/$defs/generic_options" }, { - "$ref": "#/definitions/institutional_config_options" + "$ref": "#/$defs/workflow_options" }, { - "$ref": "#/definitions/max_job_request_options" + "$ref": "#/$defs/input_output_options" }, { - "$ref": "#/definitions/generic_options" + "$ref": "#/$defs/reference_genome_options" }, { - "$ref": "#/definitions/workflow_options" + "$ref": "#/$defs/institutional_config_options" }, { - "$ref": "#/definitions/file_inputs" + "$ref": "#/$defs/generic_options" } ] } diff --git a/subworkflows/local/utils_nfcore_nallo_pipeline/main.nf b/subworkflows/local/utils_nfcore_nallo_pipeline/main.nf index c2973a9a..5c4bb187 100644 --- a/subworkflows/local/utils_nfcore_nallo_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_nallo_pipeline/main.nf @@ -8,17 +8,14 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ -include { UTILS_NFVALIDATION_PLUGIN } from '../../nf-core/utils_nfvalidation_plugin' -include { paramsSummaryMap } from 'plugin/nf-validation' -include { fromSamplesheet } from 'plugin/nf-validation' -include { UTILS_NEXTFLOW_PIPELINE } from '../../nf-core/utils_nextflow_pipeline' +include { UTILS_NFSCHEMA_PLUGIN } from '../../nf-core/utils_nfschema_plugin' +include { paramsSummaryMap } from 'plugin/nf-schema' +include { samplesheetToList } from 'plugin/nf-schema' include { completionEmail } from '../../nf-core/utils_nfcore_pipeline' include { completionSummary } from '../../nf-core/utils_nfcore_pipeline' -include { dashedLine } from '../../nf-core/utils_nfcore_pipeline' -include { nfCoreLogo } from '../../nf-core/utils_nfcore_pipeline' include { imNotification } from '../../nf-core/utils_nfcore_pipeline' include { UTILS_NFCORE_PIPELINE } from '../../nf-core/utils_nfcore_pipeline' -include { workflowCitation } from '../../nf-core/utils_nfcore_pipeline' +include { UTILS_NEXTFLOW_PIPELINE } from '../../nf-core/utils_nextflow_pipeline' /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -121,7 +118,6 @@ workflow PIPELINE_INITIALISATION { take: version // boolean: Display version and exit - help // boolean: Display help text validate_params // boolean: Boolean whether to validate parameters against the schema at runtime monochrome_logs // boolean: Do not use coloured log outputs nextflow_cli_args // array: List of positional nextflow CLI args @@ -142,21 +138,17 @@ workflow PIPELINE_INITIALISATION { workflow.profile.tokenize(',').intersect(['conda', 'mamba']).size() >= 1 ) + // // Validate parameters and generate parameter summary to stdout // - pre_help_text = nfCoreLogo(monochrome_logs) - post_help_text = '\n' + workflowCitation() + '\n' + dashedLine(monochrome_logs) - def String workflow_command = "nextflow run ${workflow.manifest.name} -profile --input samplesheet.csv --outdir " - UTILS_NFVALIDATION_PLUGIN ( - help, - workflow_command, - pre_help_text, - post_help_text, + UTILS_NFSCHEMA_PLUGIN ( + workflow, validate_params, - "nextflow_schema.json" + null ) + // // Check config provided to the pipeline // @@ -172,7 +164,7 @@ workflow PIPELINE_INITIALISATION { // Create channel from input file provided through params.input // Channel - .fromSamplesheet("input") + .fromList(samplesheetToList(params.input, "${projectDir}/assets/schema_input.json")) .map { meta, reads -> [ meta.id, meta, reads ] // add sample as groupTuple key } @@ -210,15 +202,16 @@ workflow PIPELINE_INITIALISATION { .ifEmpty { error("Only one project may be specified per run") } + emit: samplesheet = ch_samplesheet versions = ch_versions } /* -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SUBWORKFLOW FOR PIPELINE COMPLETION -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ workflow PIPELINE_COMPLETION { @@ -227,13 +220,13 @@ workflow PIPELINE_COMPLETION { email // string: email address email_on_fail // string: email address sent on pipeline failure plaintext_email // boolean: Send plain-text email instead of HTML + outdir // path: Path to output directory where results will be published monochrome_logs // boolean: Disable ANSI colour codes in log output hook_url // string: hook URL for notifications multiqc_report // string: Path to MultiQC report main: - summary_params = paramsSummaryMap(workflow, parameters_schema: "nextflow_schema.json") // @@ -241,11 +234,18 @@ workflow PIPELINE_COMPLETION { // workflow.onComplete { if (email || email_on_fail) { - completionEmail(summary_params, email, email_on_fail, plaintext_email, outdir, monochrome_logs, multiqc_report.toList()) + completionEmail( + summary_params, + email, + email_on_fail, + plaintext_email, + outdir, + monochrome_logs, + multiqc_report.toList() + ) } completionSummary(monochrome_logs) - if (hook_url) { imNotification(summary_params, hook_url) } @@ -257,9 +257,9 @@ workflow PIPELINE_COMPLETION { } /* -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ FUNCTIONS -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ // // Check and validate pipeline parameters @@ -268,13 +268,13 @@ workflow PIPELINE_COMPLETION { def validateInputParameters(statusMap, workflowMap, workflowDependencies, fileDependencies) { genomeExistsError() validateParameterCombinations(statusMap, workflowMap, workflowDependencies, fileDependencies) + } // // Validate channels from input samplesheet // def validateInputSamplesheet(input) { - return input } @@ -478,8 +478,10 @@ def methodsDescriptionText(mqc_methods_yaml) { // Removing `https://doi.org/` to handle pipelines using DOIs vs DOI resolvers // Removing ` ` since the manifest.doi is a string and not a proper list def temp_doi_ref = "" - String[] manifest_doi = meta.manifest_map.doi.tokenize(",") - for (String doi_ref: manifest_doi) temp_doi_ref += "(doi: ${doi_ref.replace("https://doi.org/", "").replace(" ", "")}), " + def manifest_doi = meta.manifest_map.doi.tokenize(",") + manifest_doi.each { doi_ref -> + temp_doi_ref += "(doi: ${doi_ref.replace("https://doi.org/", "").replace(" ", "")}), " + } meta["doi_text"] = temp_doi_ref.substring(0, temp_doi_ref.length() - 2) } else meta["doi_text"] = "" meta["nodoi_text"] = meta.manifest_map.doi ? "" : "
  • If available, make sure to update the text to include the Zenodo DOI of version of the pipeline used.
  • " @@ -621,4 +623,3 @@ def findKeyForValue(def valueToFind, Map map) { } return null // Value not found } - diff --git a/subworkflows/nf-core/utils_nextflow_pipeline/main.nf b/subworkflows/nf-core/utils_nextflow_pipeline/main.nf index ac31f28f..2b0dc67a 100644 --- a/subworkflows/nf-core/utils_nextflow_pipeline/main.nf +++ b/subworkflows/nf-core/utils_nextflow_pipeline/main.nf @@ -2,18 +2,13 @@ // Subworkflow with functionality that may be useful for any Nextflow pipeline // -import org.yaml.snakeyaml.Yaml -import groovy.json.JsonOutput -import nextflow.extension.FilesEx - /* -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SUBWORKFLOW DEFINITION -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ workflow UTILS_NEXTFLOW_PIPELINE { - take: print_version // boolean: print version dump_parameters // boolean: dump parameters @@ -26,7 +21,7 @@ workflow UTILS_NEXTFLOW_PIPELINE { // Print workflow version and exit on --version // if (print_version) { - log.info "${workflow.manifest.name} ${getWorkflowVersion()}" + log.info("${workflow.manifest.name} ${getWorkflowVersion()}") System.exit(0) } @@ -49,16 +44,16 @@ workflow UTILS_NEXTFLOW_PIPELINE { } /* -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ FUNCTIONS -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ // // Generate version string // def getWorkflowVersion() { - String version_string = "" + def version_string = "" as String if (workflow.manifest.version) { def prefix_v = workflow.manifest.version[0] != 'v' ? 'v' : '' version_string += "${prefix_v}${workflow.manifest.version}" @@ -76,13 +71,13 @@ def getWorkflowVersion() { // Dump pipeline parameters to a JSON file // def dumpParametersToJSON(outdir) { - def timestamp = new java.util.Date().format( 'yyyy-MM-dd_HH-mm-ss') - def filename = "params_${timestamp}.json" - def temp_pf = new File(workflow.launchDir.toString(), ".${filename}") - def jsonStr = JsonOutput.toJson(params) - temp_pf.text = JsonOutput.prettyPrint(jsonStr) + def timestamp = new java.util.Date().format('yyyy-MM-dd_HH-mm-ss') + def filename = "params_${timestamp}.json" + def temp_pf = new File(workflow.launchDir.toString(), ".${filename}") + def jsonStr = groovy.json.JsonOutput.toJson(params) + temp_pf.text = groovy.json.JsonOutput.prettyPrint(jsonStr) - FilesEx.copyTo(temp_pf.toPath(), "${outdir}/pipeline_info/params_${timestamp}.json") + nextflow.extension.FilesEx.copyTo(temp_pf.toPath(), "${outdir}/pipeline_info/params_${timestamp}.json") temp_pf.delete() } @@ -90,37 +85,38 @@ def dumpParametersToJSON(outdir) { // When running with -profile conda, warn if channels have not been set-up appropriately // def checkCondaChannels() { - Yaml parser = new Yaml() + def parser = new org.yaml.snakeyaml.Yaml() def channels = [] try { def config = parser.load("conda config --show channels".execute().text) channels = config.channels - } catch(NullPointerException | IOException e) { - log.warn "Could not verify conda channel configuration." - return + } + catch (NullPointerException e) { + log.warn("Could not verify conda channel configuration.") + return null + } + catch (IOException e) { + log.warn("Could not verify conda channel configuration.") + return null } // Check that all channels are present // This channel list is ordered by required channel priority. - def required_channels_in_order = ['conda-forge', 'bioconda', 'defaults'] + def required_channels_in_order = ['conda-forge', 'bioconda'] def channels_missing = ((required_channels_in_order as Set) - (channels as Set)) as Boolean // Check that they are in the right order def channel_priority_violation = false - def n = required_channels_in_order.size() - for (int i = 0; i < n - 1; i++) { - channel_priority_violation |= !(channels.indexOf(required_channels_in_order[i]) < channels.indexOf(required_channels_in_order[i+1])) + + required_channels_in_order.eachWithIndex { channel, index -> + if (index < required_channels_in_order.size() - 1) { + channel_priority_violation |= !(channels.indexOf(channel) < channels.indexOf(required_channels_in_order[index + 1])) + } } if (channels_missing | channel_priority_violation) { - log.warn "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" + - " There is a problem with your Conda configuration!\n\n" + - " You will need to set-up the conda-forge and bioconda channels correctly.\n" + - " Please refer to https://bioconda.github.io/\n" + - " The observed channel order is \n" + - " ${channels}\n" + - " but the following channel order is required:\n" + - " ${required_channels_in_order}\n" + - "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" + log.warn( + "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" + " There is a problem with your Conda configuration!\n\n" + " You will need to set-up the conda-forge and bioconda channels correctly.\n" + " Please refer to https://bioconda.github.io/\n" + " The observed channel order is \n" + " ${channels}\n" + " but the following channel order is required:\n" + " ${required_channels_in_order}\n" + "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" + ) } } diff --git a/subworkflows/nf-core/utils_nextflow_pipeline/tests/nextflow.config b/subworkflows/nf-core/utils_nextflow_pipeline/tests/nextflow.config index d0a926bf..a09572e5 100644 --- a/subworkflows/nf-core/utils_nextflow_pipeline/tests/nextflow.config +++ b/subworkflows/nf-core/utils_nextflow_pipeline/tests/nextflow.config @@ -3,7 +3,7 @@ manifest { author = """nf-core""" homePage = 'https://127.0.0.1' description = """Dummy pipeline""" - nextflowVersion = '!>=23.04.0' + nextflowVersion = '!>=23.04.0' version = '9.9.9' doi = 'https://doi.org/10.5281/zenodo.5070524' } diff --git a/subworkflows/nf-core/utils_nfcore_pipeline/main.nf b/subworkflows/nf-core/utils_nfcore_pipeline/main.nf index 14558c39..b78273ca 100644 --- a/subworkflows/nf-core/utils_nfcore_pipeline/main.nf +++ b/subworkflows/nf-core/utils_nfcore_pipeline/main.nf @@ -2,17 +2,13 @@ // Subworkflow with utility functions specific to the nf-core pipeline template // -import org.yaml.snakeyaml.Yaml -import nextflow.extension.FilesEx - /* -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SUBWORKFLOW DEFINITION -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ workflow UTILS_NFCORE_PIPELINE { - take: nextflow_cli_args @@ -25,23 +21,20 @@ workflow UTILS_NFCORE_PIPELINE { } /* -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ FUNCTIONS -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ // // Warn if a -profile or Nextflow config has not been provided to run the pipeline // def checkConfigProvided() { - valid_config = true + def valid_config = true as Boolean if (workflow.profile == 'standard' && workflow.configFiles.size() <= 1) { - log.warn "[$workflow.manifest.name] You are attempting to run the pipeline without any custom configuration!\n\n" + - "This will be dependent on your local compute environment but can be achieved via one or more of the following:\n" + - " (1) Using an existing pipeline profile e.g. `-profile docker` or `-profile singularity`\n" + - " (2) Using an existing nf-core/configs for your Institution e.g. `-profile crick` or `-profile uppmax`\n" + - " (3) Using your own local custom config e.g. `-c /path/to/your/custom.config`\n\n" + - "Please refer to the quick start section and usage docs for the pipeline.\n " + log.warn( + "[${workflow.manifest.name}] You are attempting to run the pipeline without any custom configuration!\n\n" + "This will be dependent on your local compute environment but can be achieved via one or more of the following:\n" + " (1) Using an existing pipeline profile e.g. `-profile docker` or `-profile singularity`\n" + " (2) Using an existing nf-core/configs for your Institution e.g. `-profile crick` or `-profile uppmax`\n" + " (3) Using your own local custom config e.g. `-c /path/to/your/custom.config`\n\n" + "Please refer to the quick start section and usage docs for the pipeline.\n " + ) valid_config = false } return valid_config @@ -52,12 +45,14 @@ def checkConfigProvided() { // def checkProfileProvided(nextflow_cli_args) { if (workflow.profile.endsWith(',')) { - error "The `-profile` option cannot end with a trailing comma, please remove it and re-run the pipeline!\n" + - "HINT: A common mistake is to provide multiple values separated by spaces e.g. `-profile test, docker`.\n" + error( + "The `-profile` option cannot end with a trailing comma, please remove it and re-run the pipeline!\n" + "HINT: A common mistake is to provide multiple values separated by spaces e.g. `-profile test, docker`.\n" + ) } if (nextflow_cli_args[0]) { - log.warn "nf-core pipelines do not accept positional arguments. The positional argument `${nextflow_cli_args[0]}` has been detected.\n" + - "HINT: A common mistake is to provide multiple values separated by spaces e.g. `-profile test, docker`.\n" + log.warn( + "nf-core pipelines do not accept positional arguments. The positional argument `${nextflow_cli_args[0]}` has been detected.\n" + "HINT: A common mistake is to provide multiple values separated by spaces e.g. `-profile test, docker`.\n" + ) } } @@ -66,25 +61,21 @@ def checkProfileProvided(nextflow_cli_args) { // def workflowCitation() { def temp_doi_ref = "" - String[] manifest_doi = workflow.manifest.doi.tokenize(",") + def manifest_doi = workflow.manifest.doi.tokenize(",") // Using a loop to handle multiple DOIs // Removing `https://doi.org/` to handle pipelines using DOIs vs DOI resolvers // Removing ` ` since the manifest.doi is a string and not a proper list - for (String doi_ref: manifest_doi) temp_doi_ref += " https://doi.org/${doi_ref.replace('https://doi.org/', '').replace(' ', '')}\n" - return "If you use ${workflow.manifest.name} for your analysis please cite:\n\n" + - "* The pipeline\n" + - temp_doi_ref + "\n" + - "* The nf-core framework\n" + - " https://doi.org/10.1038/s41587-020-0439-x\n\n" + - "* Software dependencies\n" + - " https://github.com/${workflow.manifest.name}/blob/master/CITATIONS.md" + manifest_doi.each { doi_ref -> + temp_doi_ref += " https://doi.org/${doi_ref.replace('https://doi.org/', '').replace(' ', '')}\n" + } + return "If you use ${workflow.manifest.name} for your analysis please cite:\n\n" + "* The pipeline\n" + temp_doi_ref + "\n" + "* The nf-core framework\n" + " https://doi.org/10.1038/s41587-020-0439-x\n\n" + "* Software dependencies\n" + " https://github.com/${workflow.manifest.name}/blob/master/CITATIONS.md" } // // Generate workflow version string // def getWorkflowVersion() { - String version_string = "" + def version_string = "" as String if (workflow.manifest.version) { def prefix_v = workflow.manifest.version[0] != 'v' ? 'v' : '' version_string += "${prefix_v}${workflow.manifest.version}" @@ -102,8 +93,8 @@ def getWorkflowVersion() { // Get software versions for pipeline // def processVersionsFromYAML(yaml_file) { - Yaml yaml = new Yaml() - versions = yaml.load(yaml_file).collectEntries { k, v -> [ k.tokenize(':')[-1], v ] } + def yaml = new org.yaml.snakeyaml.Yaml() + def versions = yaml.load(yaml_file).collectEntries { k, v -> [k.tokenize(':')[-1], v] } return yaml.dumpAsMap(versions).trim() } @@ -113,8 +104,8 @@ def processVersionsFromYAML(yaml_file) { def workflowVersionToYAML() { return """ Workflow: - $workflow.manifest.name: ${getWorkflowVersion()} - Nextflow: $workflow.nextflow.version + ${workflow.manifest.name}: ${getWorkflowVersion()} + Nextflow: ${workflow.nextflow.version} """.stripIndent().trim() } @@ -122,11 +113,7 @@ def workflowVersionToYAML() { // Get channel of software versions used in pipeline in YAML format // def softwareVersionsToYAML(ch_versions) { - return ch_versions - .unique() - .map { processVersionsFromYAML(it) } - .unique() - .mix(Channel.of(workflowVersionToYAML())) + return ch_versions.unique().map { version -> processVersionsFromYAML(version) }.unique().mix(Channel.of(workflowVersionToYAML())) } // @@ -134,25 +121,31 @@ def softwareVersionsToYAML(ch_versions) { // def paramsSummaryMultiqc(summary_params) { def summary_section = '' - for (group in summary_params.keySet()) { - def group_params = summary_params.get(group) // This gets the parameters of that particular group - if (group_params) { - summary_section += "

    $group

    \n" - summary_section += "
    \n" - for (param in group_params.keySet()) { - summary_section += "
    $param
    ${group_params.get(param) ?: 'N/A'}
    \n" + summary_params + .keySet() + .each { group -> + def group_params = summary_params.get(group) + // This gets the parameters of that particular group + if (group_params) { + summary_section += "

    ${group}

    \n" + summary_section += "
    \n" + group_params + .keySet() + .sort() + .each { param -> + summary_section += "
    ${param}
    ${group_params.get(param) ?: 'N/A'}
    \n" + } + summary_section += "
    \n" } - summary_section += "
    \n" } - } - String yaml_file_text = "id: '${workflow.manifest.name.replace('/','-')}-summary'\n" - yaml_file_text += "description: ' - this information is collected when the pipeline is started.'\n" - yaml_file_text += "section_name: '${workflow.manifest.name} Workflow Summary'\n" - yaml_file_text += "section_href: 'https://github.com/${workflow.manifest.name}'\n" - yaml_file_text += "plot_type: 'html'\n" - yaml_file_text += "data: |\n" - yaml_file_text += "${summary_section}" + def yaml_file_text = "id: '${workflow.manifest.name.replace('/', '-')}-summary'\n" as String + yaml_file_text += "description: ' - this information is collected when the pipeline is started.'\n" + yaml_file_text += "section_name: '${workflow.manifest.name} Workflow Summary'\n" + yaml_file_text += "section_href: 'https://github.com/${workflow.manifest.name}'\n" + yaml_file_text += "plot_type: 'html'\n" + yaml_file_text += "data: |\n" + yaml_file_text += "${summary_section}" return yaml_file_text } @@ -161,7 +154,7 @@ def paramsSummaryMultiqc(summary_params) { // nf-core logo // def nfCoreLogo(monochrome_logs=true) { - Map colors = logColours(monochrome_logs) + def colors = logColours(monochrome_logs) as Map String.format( """\n ${dashedLine(monochrome_logs)} @@ -180,7 +173,7 @@ def nfCoreLogo(monochrome_logs=true) { // Return dashed line // def dashedLine(monochrome_logs=true) { - Map colors = logColours(monochrome_logs) + def colors = logColours(monochrome_logs) as Map return "-${colors.dim}----------------------------------------------------${colors.reset}-" } @@ -188,7 +181,7 @@ def dashedLine(monochrome_logs=true) { // ANSII colours used for terminal logging // def logColours(monochrome_logs=true) { - Map colorcodes = [:] + def colorcodes = [:] as Map // Reset / Meta colorcodes['reset'] = monochrome_logs ? '' : "\033[0m" @@ -200,54 +193,54 @@ def logColours(monochrome_logs=true) { colorcodes['hidden'] = monochrome_logs ? '' : "\033[8m" // Regular Colors - colorcodes['black'] = monochrome_logs ? '' : "\033[0;30m" - colorcodes['red'] = monochrome_logs ? '' : "\033[0;31m" - colorcodes['green'] = monochrome_logs ? '' : "\033[0;32m" - colorcodes['yellow'] = monochrome_logs ? '' : "\033[0;33m" - colorcodes['blue'] = monochrome_logs ? '' : "\033[0;34m" - colorcodes['purple'] = monochrome_logs ? '' : "\033[0;35m" - colorcodes['cyan'] = monochrome_logs ? '' : "\033[0;36m" - colorcodes['white'] = monochrome_logs ? '' : "\033[0;37m" + colorcodes['black'] = monochrome_logs ? '' : "\033[0;30m" + colorcodes['red'] = monochrome_logs ? '' : "\033[0;31m" + colorcodes['green'] = monochrome_logs ? '' : "\033[0;32m" + colorcodes['yellow'] = monochrome_logs ? '' : "\033[0;33m" + colorcodes['blue'] = monochrome_logs ? '' : "\033[0;34m" + colorcodes['purple'] = monochrome_logs ? '' : "\033[0;35m" + colorcodes['cyan'] = monochrome_logs ? '' : "\033[0;36m" + colorcodes['white'] = monochrome_logs ? '' : "\033[0;37m" // Bold - colorcodes['bblack'] = monochrome_logs ? '' : "\033[1;30m" - colorcodes['bred'] = monochrome_logs ? '' : "\033[1;31m" - colorcodes['bgreen'] = monochrome_logs ? '' : "\033[1;32m" - colorcodes['byellow'] = monochrome_logs ? '' : "\033[1;33m" - colorcodes['bblue'] = monochrome_logs ? '' : "\033[1;34m" - colorcodes['bpurple'] = monochrome_logs ? '' : "\033[1;35m" - colorcodes['bcyan'] = monochrome_logs ? '' : "\033[1;36m" - colorcodes['bwhite'] = monochrome_logs ? '' : "\033[1;37m" + colorcodes['bblack'] = monochrome_logs ? '' : "\033[1;30m" + colorcodes['bred'] = monochrome_logs ? '' : "\033[1;31m" + colorcodes['bgreen'] = monochrome_logs ? '' : "\033[1;32m" + colorcodes['byellow'] = monochrome_logs ? '' : "\033[1;33m" + colorcodes['bblue'] = monochrome_logs ? '' : "\033[1;34m" + colorcodes['bpurple'] = monochrome_logs ? '' : "\033[1;35m" + colorcodes['bcyan'] = monochrome_logs ? '' : "\033[1;36m" + colorcodes['bwhite'] = monochrome_logs ? '' : "\033[1;37m" // Underline - colorcodes['ublack'] = monochrome_logs ? '' : "\033[4;30m" - colorcodes['ured'] = monochrome_logs ? '' : "\033[4;31m" - colorcodes['ugreen'] = monochrome_logs ? '' : "\033[4;32m" - colorcodes['uyellow'] = monochrome_logs ? '' : "\033[4;33m" - colorcodes['ublue'] = monochrome_logs ? '' : "\033[4;34m" - colorcodes['upurple'] = monochrome_logs ? '' : "\033[4;35m" - colorcodes['ucyan'] = monochrome_logs ? '' : "\033[4;36m" - colorcodes['uwhite'] = monochrome_logs ? '' : "\033[4;37m" + colorcodes['ublack'] = monochrome_logs ? '' : "\033[4;30m" + colorcodes['ured'] = monochrome_logs ? '' : "\033[4;31m" + colorcodes['ugreen'] = monochrome_logs ? '' : "\033[4;32m" + colorcodes['uyellow'] = monochrome_logs ? '' : "\033[4;33m" + colorcodes['ublue'] = monochrome_logs ? '' : "\033[4;34m" + colorcodes['upurple'] = monochrome_logs ? '' : "\033[4;35m" + colorcodes['ucyan'] = monochrome_logs ? '' : "\033[4;36m" + colorcodes['uwhite'] = monochrome_logs ? '' : "\033[4;37m" // High Intensity - colorcodes['iblack'] = monochrome_logs ? '' : "\033[0;90m" - colorcodes['ired'] = monochrome_logs ? '' : "\033[0;91m" - colorcodes['igreen'] = monochrome_logs ? '' : "\033[0;92m" - colorcodes['iyellow'] = monochrome_logs ? '' : "\033[0;93m" - colorcodes['iblue'] = monochrome_logs ? '' : "\033[0;94m" - colorcodes['ipurple'] = monochrome_logs ? '' : "\033[0;95m" - colorcodes['icyan'] = monochrome_logs ? '' : "\033[0;96m" - colorcodes['iwhite'] = monochrome_logs ? '' : "\033[0;97m" + colorcodes['iblack'] = monochrome_logs ? '' : "\033[0;90m" + colorcodes['ired'] = monochrome_logs ? '' : "\033[0;91m" + colorcodes['igreen'] = monochrome_logs ? '' : "\033[0;92m" + colorcodes['iyellow'] = monochrome_logs ? '' : "\033[0;93m" + colorcodes['iblue'] = monochrome_logs ? '' : "\033[0;94m" + colorcodes['ipurple'] = monochrome_logs ? '' : "\033[0;95m" + colorcodes['icyan'] = monochrome_logs ? '' : "\033[0;96m" + colorcodes['iwhite'] = monochrome_logs ? '' : "\033[0;97m" // Bold High Intensity - colorcodes['biblack'] = monochrome_logs ? '' : "\033[1;90m" - colorcodes['bired'] = monochrome_logs ? '' : "\033[1;91m" - colorcodes['bigreen'] = monochrome_logs ? '' : "\033[1;92m" - colorcodes['biyellow'] = monochrome_logs ? '' : "\033[1;93m" - colorcodes['biblue'] = monochrome_logs ? '' : "\033[1;94m" - colorcodes['bipurple'] = monochrome_logs ? '' : "\033[1;95m" - colorcodes['bicyan'] = monochrome_logs ? '' : "\033[1;96m" - colorcodes['biwhite'] = monochrome_logs ? '' : "\033[1;97m" + colorcodes['biblack'] = monochrome_logs ? '' : "\033[1;90m" + colorcodes['bired'] = monochrome_logs ? '' : "\033[1;91m" + colorcodes['bigreen'] = monochrome_logs ? '' : "\033[1;92m" + colorcodes['biyellow'] = monochrome_logs ? '' : "\033[1;93m" + colorcodes['biblue'] = monochrome_logs ? '' : "\033[1;94m" + colorcodes['bipurple'] = monochrome_logs ? '' : "\033[1;95m" + colorcodes['bicyan'] = monochrome_logs ? '' : "\033[1;96m" + colorcodes['biwhite'] = monochrome_logs ? '' : "\033[1;97m" return colorcodes } @@ -262,14 +255,15 @@ def attachMultiqcReport(multiqc_report) { mqc_report = multiqc_report.getVal() if (mqc_report.getClass() == ArrayList && mqc_report.size() >= 1) { if (mqc_report.size() > 1) { - log.warn "[$workflow.manifest.name] Found multiple reports from process 'MULTIQC', will use only one" + log.warn("[${workflow.manifest.name}] Found multiple reports from process 'MULTIQC', will use only one") } mqc_report = mqc_report[0] } } - } catch (all) { + } + catch (Exception all) { if (multiqc_report) { - log.warn "[$workflow.manifest.name] Could not attach MultiQC report to summary email" + log.warn("[${workflow.manifest.name}] Could not attach MultiQC report to summary email") } } return mqc_report @@ -281,26 +275,35 @@ def attachMultiqcReport(multiqc_report) { def completionEmail(summary_params, email, email_on_fail, plaintext_email, outdir, monochrome_logs=true, multiqc_report=null) { // Set up the e-mail variables - def subject = "[$workflow.manifest.name] Successful: $workflow.runName" + def subject = "[${workflow.manifest.name}] Successful: ${workflow.runName}" if (!workflow.success) { - subject = "[$workflow.manifest.name] FAILED: $workflow.runName" + subject = "[${workflow.manifest.name}] FAILED: ${workflow.runName}" } def summary = [:] - for (group in summary_params.keySet()) { - summary << summary_params[group] - } + summary_params + .keySet() + .sort() + .each { group -> + summary << summary_params[group] + } def misc_fields = [:] misc_fields['Date Started'] = workflow.start misc_fields['Date Completed'] = workflow.complete misc_fields['Pipeline script file path'] = workflow.scriptFile misc_fields['Pipeline script hash ID'] = workflow.scriptId - if (workflow.repository) misc_fields['Pipeline repository Git URL'] = workflow.repository - if (workflow.commitId) misc_fields['Pipeline repository Git Commit'] = workflow.commitId - if (workflow.revision) misc_fields['Pipeline Git branch/tag'] = workflow.revision - misc_fields['Nextflow Version'] = workflow.nextflow.version - misc_fields['Nextflow Build'] = workflow.nextflow.build + if (workflow.repository) { + misc_fields['Pipeline repository Git URL'] = workflow.repository + } + if (workflow.commitId) { + misc_fields['Pipeline repository Git Commit'] = workflow.commitId + } + if (workflow.revision) { + misc_fields['Pipeline Git branch/tag'] = workflow.revision + } + misc_fields['Nextflow Version'] = workflow.nextflow.version + misc_fields['Nextflow Build'] = workflow.nextflow.build misc_fields['Nextflow Compile Timestamp'] = workflow.nextflow.timestamp def email_fields = [:] @@ -338,39 +341,41 @@ def completionEmail(summary_params, email, email_on_fail, plaintext_email, outdi // Render the sendmail template def max_multiqc_email_size = (params.containsKey('max_multiqc_email_size') ? params.max_multiqc_email_size : 0) as nextflow.util.MemoryUnit - def smail_fields = [ email: email_address, subject: subject, email_txt: email_txt, email_html: email_html, projectDir: "${workflow.projectDir}", mqcFile: mqc_report, mqcMaxSize: max_multiqc_email_size.toBytes() ] + def smail_fields = [email: email_address, subject: subject, email_txt: email_txt, email_html: email_html, projectDir: "${workflow.projectDir}", mqcFile: mqc_report, mqcMaxSize: max_multiqc_email_size.toBytes()] def sf = new File("${workflow.projectDir}/assets/sendmail_template.txt") def sendmail_template = engine.createTemplate(sf).make(smail_fields) def sendmail_html = sendmail_template.toString() // Send the HTML e-mail - Map colors = logColours(monochrome_logs) + def colors = logColours(monochrome_logs) as Map if (email_address) { try { - if (plaintext_email) { throw GroovyException('Send plaintext e-mail, not HTML') } + if (plaintext_email) { +new org.codehaus.groovy.GroovyException('Send plaintext e-mail, not HTML') } // Try to send HTML e-mail using sendmail def sendmail_tf = new File(workflow.launchDir.toString(), ".sendmail_tmp.html") sendmail_tf.withWriter { w -> w << sendmail_html } - [ 'sendmail', '-t' ].execute() << sendmail_html - log.info "-${colors.purple}[$workflow.manifest.name]${colors.green} Sent summary e-mail to $email_address (sendmail)-" - } catch (all) { + ['sendmail', '-t'].execute() << sendmail_html + log.info("-${colors.purple}[${workflow.manifest.name}]${colors.green} Sent summary e-mail to ${email_address} (sendmail)-") + } + catch (Exception all) { // Catch failures and try with plaintext - def mail_cmd = [ 'mail', '-s', subject, '--content-type=text/html', email_address ] + def mail_cmd = ['mail', '-s', subject, '--content-type=text/html', email_address] mail_cmd.execute() << email_html - log.info "-${colors.purple}[$workflow.manifest.name]${colors.green} Sent summary e-mail to $email_address (mail)-" + log.info("-${colors.purple}[${workflow.manifest.name}]${colors.green} Sent summary e-mail to ${email_address} (mail)-") } } // Write summary e-mail HTML to a file def output_hf = new File(workflow.launchDir.toString(), ".pipeline_report.html") output_hf.withWriter { w -> w << email_html } - FilesEx.copyTo(output_hf.toPath(), "${outdir}/pipeline_info/pipeline_report.html"); + nextflow.extension.FilesEx.copyTo(output_hf.toPath(), "${outdir}/pipeline_info/pipeline_report.html") output_hf.delete() // Write summary e-mail TXT to a file def output_tf = new File(workflow.launchDir.toString(), ".pipeline_report.txt") output_tf.withWriter { w -> w << email_txt } - FilesEx.copyTo(output_tf.toPath(), "${outdir}/pipeline_info/pipeline_report.txt"); + nextflow.extension.FilesEx.copyTo(output_tf.toPath(), "${outdir}/pipeline_info/pipeline_report.txt") output_tf.delete() } @@ -378,15 +383,17 @@ def completionEmail(summary_params, email, email_on_fail, plaintext_email, outdi // Print pipeline summary on completion // def completionSummary(monochrome_logs=true) { - Map colors = logColours(monochrome_logs) + def colors = logColours(monochrome_logs) as Map if (workflow.success) { if (workflow.stats.ignoredCount == 0) { - log.info "-${colors.purple}[$workflow.manifest.name]${colors.green} Pipeline completed successfully${colors.reset}-" - } else { - log.info "-${colors.purple}[$workflow.manifest.name]${colors.yellow} Pipeline completed successfully, but with errored process(es) ${colors.reset}-" + log.info("-${colors.purple}[${workflow.manifest.name}]${colors.green} Pipeline completed successfully${colors.reset}-") + } + else { + log.info("-${colors.purple}[${workflow.manifest.name}]${colors.yellow} Pipeline completed successfully, but with errored process(es) ${colors.reset}-") } - } else { - log.info "-${colors.purple}[$workflow.manifest.name]${colors.red} Pipeline completed with errors${colors.reset}-" + } + else { + log.info("-${colors.purple}[${workflow.manifest.name}]${colors.red} Pipeline completed with errors${colors.reset}-") } } @@ -395,21 +402,30 @@ def completionSummary(monochrome_logs=true) { // def imNotification(summary_params, hook_url) { def summary = [:] - for (group in summary_params.keySet()) { - summary << summary_params[group] - } + summary_params + .keySet() + .sort() + .each { group -> + summary << summary_params[group] + } def misc_fields = [:] - misc_fields['start'] = workflow.start - misc_fields['complete'] = workflow.complete - misc_fields['scriptfile'] = workflow.scriptFile - misc_fields['scriptid'] = workflow.scriptId - if (workflow.repository) misc_fields['repository'] = workflow.repository - if (workflow.commitId) misc_fields['commitid'] = workflow.commitId - if (workflow.revision) misc_fields['revision'] = workflow.revision - misc_fields['nxf_version'] = workflow.nextflow.version - misc_fields['nxf_build'] = workflow.nextflow.build - misc_fields['nxf_timestamp'] = workflow.nextflow.timestamp + misc_fields['start'] = workflow.start + misc_fields['complete'] = workflow.complete + misc_fields['scriptfile'] = workflow.scriptFile + misc_fields['scriptid'] = workflow.scriptId + if (workflow.repository) { + misc_fields['repository'] = workflow.repository + } + if (workflow.commitId) { + misc_fields['commitid'] = workflow.commitId + } + if (workflow.revision) { + misc_fields['revision'] = workflow.revision + } + misc_fields['nxf_version'] = workflow.nextflow.version + misc_fields['nxf_build'] = workflow.nextflow.build + misc_fields['nxf_timestamp'] = workflow.nextflow.timestamp def msg_fields = [:] msg_fields['version'] = getWorkflowVersion() @@ -434,13 +450,13 @@ def imNotification(summary_params, hook_url) { def json_message = json_template.toString() // POST - def post = new URL(hook_url).openConnection(); + def post = new URL(hook_url).openConnection() post.setRequestMethod("POST") post.setDoOutput(true) post.setRequestProperty("Content-Type", "application/json") - post.getOutputStream().write(json_message.getBytes("UTF-8")); - def postRC = post.getResponseCode(); - if (! postRC.equals(200)) { - log.warn(post.getErrorStream().getText()); + post.getOutputStream().write(json_message.getBytes("UTF-8")) + def postRC = post.getResponseCode() + if (!postRC.equals(200)) { + log.warn(post.getErrorStream().getText()) } } diff --git a/subworkflows/nf-core/utils_nfschema_plugin/main.nf b/subworkflows/nf-core/utils_nfschema_plugin/main.nf new file mode 100644 index 00000000..4994303e --- /dev/null +++ b/subworkflows/nf-core/utils_nfschema_plugin/main.nf @@ -0,0 +1,46 @@ +// +// Subworkflow that uses the nf-schema plugin to validate parameters and render the parameter summary +// + +include { paramsSummaryLog } from 'plugin/nf-schema' +include { validateParameters } from 'plugin/nf-schema' + +workflow UTILS_NFSCHEMA_PLUGIN { + + take: + input_workflow // workflow: the workflow object used by nf-schema to get metadata from the workflow + validate_params // boolean: validate the parameters + parameters_schema // string: path to the parameters JSON schema. + // this has to be the same as the schema given to `validation.parametersSchema` + // when this input is empty it will automatically use the configured schema or + // "${projectDir}/nextflow_schema.json" as default. This input should not be empty + // for meta pipelines + + main: + + // + // Print parameter summary to stdout. This will display the parameters + // that differ from the default given in the JSON schema + // + if(parameters_schema) { + log.info paramsSummaryLog(input_workflow, parameters_schema:parameters_schema) + } else { + log.info paramsSummaryLog(input_workflow) + } + + // + // Validate the parameters using nextflow_schema.json or the schema + // given via the validation.parametersSchema configuration option + // + if(validate_params) { + if(parameters_schema) { + validateParameters(parameters_schema:parameters_schema) + } else { + validateParameters() + } + } + + emit: + dummy_emit = true +} + diff --git a/subworkflows/nf-core/utils_nfschema_plugin/meta.yml b/subworkflows/nf-core/utils_nfschema_plugin/meta.yml new file mode 100644 index 00000000..f7d9f028 --- /dev/null +++ b/subworkflows/nf-core/utils_nfschema_plugin/meta.yml @@ -0,0 +1,35 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/subworkflows/yaml-schema.json +name: "utils_nfschema_plugin" +description: Run nf-schema to validate parameters and create a summary of changed parameters +keywords: + - validation + - JSON schema + - plugin + - parameters + - summary +components: [] +input: + - input_workflow: + type: object + description: | + The workflow object of the used pipeline. + This object contains meta data used to create the params summary log + - validate_params: + type: boolean + description: Validate the parameters and error if invalid. + - parameters_schema: + type: string + description: | + Path to the parameters JSON schema. + This has to be the same as the schema given to the `validation.parametersSchema` config + option. When this input is empty it will automatically use the configured schema or + "${projectDir}/nextflow_schema.json" as default. The schema should not be given in this way + for meta pipelines. +output: + - dummy_emit: + type: boolean + description: Dummy emit to make nf-core subworkflows lint happy +authors: + - "@nvnieuwk" +maintainers: + - "@nvnieuwk" diff --git a/subworkflows/nf-core/utils_nfschema_plugin/tests/main.nf.test b/subworkflows/nf-core/utils_nfschema_plugin/tests/main.nf.test new file mode 100644 index 00000000..842dc432 --- /dev/null +++ b/subworkflows/nf-core/utils_nfschema_plugin/tests/main.nf.test @@ -0,0 +1,117 @@ +nextflow_workflow { + + name "Test Subworkflow UTILS_NFSCHEMA_PLUGIN" + script "../main.nf" + workflow "UTILS_NFSCHEMA_PLUGIN" + + tag "subworkflows" + tag "subworkflows_nfcore" + tag "subworkflows/utils_nfschema_plugin" + tag "plugin/nf-schema" + + config "./nextflow.config" + + test("Should run nothing") { + + when { + + params { + test_data = '' + } + + workflow { + """ + validate_params = false + input[0] = workflow + input[1] = validate_params + input[2] = "" + """ + } + } + + then { + assertAll( + { assert workflow.success } + ) + } + } + + test("Should validate params") { + + when { + + params { + test_data = '' + outdir = 1 + } + + workflow { + """ + validate_params = true + input[0] = workflow + input[1] = validate_params + input[2] = "" + """ + } + } + + then { + assertAll( + { assert workflow.failed }, + { assert workflow.stdout.any { it.contains('ERROR ~ Validation of pipeline parameters failed!') } } + ) + } + } + + test("Should run nothing - custom schema") { + + when { + + params { + test_data = '' + } + + workflow { + """ + validate_params = false + input[0] = workflow + input[1] = validate_params + input[2] = "${projectDir}/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow_schema.json" + """ + } + } + + then { + assertAll( + { assert workflow.success } + ) + } + } + + test("Should validate params - custom schema") { + + when { + + params { + test_data = '' + outdir = 1 + } + + workflow { + """ + validate_params = true + input[0] = workflow + input[1] = validate_params + input[2] = "${projectDir}/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow_schema.json" + """ + } + } + + then { + assertAll( + { assert workflow.failed }, + { assert workflow.stdout.any { it.contains('ERROR ~ Validation of pipeline parameters failed!') } } + ) + } + } +} diff --git a/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow.config b/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow.config new file mode 100644 index 00000000..0907ac58 --- /dev/null +++ b/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow.config @@ -0,0 +1,8 @@ +plugins { + id "nf-schema@2.1.0" +} + +validation { + parametersSchema = "${projectDir}/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow_schema.json" + monochromeLogs = true +} \ No newline at end of file diff --git a/subworkflows/nf-core/utils_nfvalidation_plugin/tests/nextflow_schema.json b/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow_schema.json similarity index 95% rename from subworkflows/nf-core/utils_nfvalidation_plugin/tests/nextflow_schema.json rename to subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow_schema.json index 7626c1c9..331e0d2f 100644 --- a/subworkflows/nf-core/utils_nfvalidation_plugin/tests/nextflow_schema.json +++ b/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow_schema.json @@ -1,10 +1,10 @@ { - "$schema": "http://json-schema.org/draft-07/schema", + "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/./master/nextflow_schema.json", "title": ". pipeline parameters", "description": "", "type": "object", - "definitions": { + "$defs": { "input_output_options": { "title": "Input/output options", "type": "object", @@ -87,10 +87,10 @@ }, "allOf": [ { - "$ref": "#/definitions/input_output_options" + "$ref": "#/$defs/input_output_options" }, { - "$ref": "#/definitions/generic_options" + "$ref": "#/$defs/generic_options" } ] } diff --git a/subworkflows/nf-core/utils_nfvalidation_plugin/main.nf b/subworkflows/nf-core/utils_nfvalidation_plugin/main.nf deleted file mode 100644 index 2585b65d..00000000 --- a/subworkflows/nf-core/utils_nfvalidation_plugin/main.nf +++ /dev/null @@ -1,62 +0,0 @@ -// -// Subworkflow that uses the nf-validation plugin to render help text and parameter summary -// - -/* -======================================================================================== - IMPORT NF-VALIDATION PLUGIN -======================================================================================== -*/ - -include { paramsHelp } from 'plugin/nf-validation' -include { paramsSummaryLog } from 'plugin/nf-validation' -include { validateParameters } from 'plugin/nf-validation' - -/* -======================================================================================== - SUBWORKFLOW DEFINITION -======================================================================================== -*/ - -workflow UTILS_NFVALIDATION_PLUGIN { - - take: - print_help // boolean: print help - workflow_command // string: default commmand used to run pipeline - pre_help_text // string: string to be printed before help text and summary log - post_help_text // string: string to be printed after help text and summary log - validate_params // boolean: validate parameters - schema_filename // path: JSON schema file, null to use default value - - main: - - log.debug "Using schema file: ${schema_filename}" - - // Default values for strings - pre_help_text = pre_help_text ?: '' - post_help_text = post_help_text ?: '' - workflow_command = workflow_command ?: '' - - // - // Print help message if needed - // - if (print_help) { - log.info pre_help_text + paramsHelp(workflow_command, parameters_schema: schema_filename) + post_help_text - System.exit(0) - } - - // - // Print parameter summary to stdout - // - log.info pre_help_text + paramsSummaryLog(workflow, parameters_schema: schema_filename) + post_help_text - - // - // Validate parameters relative to the parameter JSON schema - // - if (validate_params){ - validateParameters(parameters_schema: schema_filename) - } - - emit: - dummy_emit = true -} diff --git a/subworkflows/nf-core/utils_nfvalidation_plugin/meta.yml b/subworkflows/nf-core/utils_nfvalidation_plugin/meta.yml deleted file mode 100644 index 3d4a6b04..00000000 --- a/subworkflows/nf-core/utils_nfvalidation_plugin/meta.yml +++ /dev/null @@ -1,44 +0,0 @@ -# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/subworkflows/yaml-schema.json -name: "UTILS_NFVALIDATION_PLUGIN" -description: Use nf-validation to initiate and validate a pipeline -keywords: - - utility - - pipeline - - initialise - - validation -components: [] -input: - - print_help: - type: boolean - description: | - Print help message and exit - - workflow_command: - type: string - description: | - The command to run the workflow e.g. "nextflow run main.nf" - - pre_help_text: - type: string - description: | - Text to print before the help message - - post_help_text: - type: string - description: | - Text to print after the help message - - validate_params: - type: boolean - description: | - Validate the parameters and error if invalid. - - schema_filename: - type: string - description: | - The filename of the schema to validate against. -output: - - dummy_emit: - type: boolean - description: | - Dummy emit to make nf-core subworkflows lint happy -authors: - - "@adamrtalbot" -maintainers: - - "@adamrtalbot" - - "@maxulysse" diff --git a/subworkflows/nf-core/utils_nfvalidation_plugin/tests/main.nf.test b/subworkflows/nf-core/utils_nfvalidation_plugin/tests/main.nf.test deleted file mode 100644 index 5784a33f..00000000 --- a/subworkflows/nf-core/utils_nfvalidation_plugin/tests/main.nf.test +++ /dev/null @@ -1,200 +0,0 @@ -nextflow_workflow { - - name "Test Workflow UTILS_NFVALIDATION_PLUGIN" - script "../main.nf" - workflow "UTILS_NFVALIDATION_PLUGIN" - tag "subworkflows" - tag "subworkflows_nfcore" - tag "plugin/nf-validation" - tag "'plugin/nf-validation'" - tag "utils_nfvalidation_plugin" - tag "subworkflows/utils_nfvalidation_plugin" - - test("Should run nothing") { - - when { - - params { - monochrome_logs = true - test_data = '' - } - - workflow { - """ - help = false - workflow_command = null - pre_help_text = null - post_help_text = null - validate_params = false - schema_filename = "$moduleTestDir/nextflow_schema.json" - - input[0] = help - input[1] = workflow_command - input[2] = pre_help_text - input[3] = post_help_text - input[4] = validate_params - input[5] = schema_filename - """ - } - } - - then { - assertAll( - { assert workflow.success } - ) - } - } - - test("Should run help") { - - - when { - - params { - monochrome_logs = true - test_data = '' - } - workflow { - """ - help = true - workflow_command = null - pre_help_text = null - post_help_text = null - validate_params = false - schema_filename = "$moduleTestDir/nextflow_schema.json" - - input[0] = help - input[1] = workflow_command - input[2] = pre_help_text - input[3] = post_help_text - input[4] = validate_params - input[5] = schema_filename - """ - } - } - - then { - assertAll( - { assert workflow.success }, - { assert workflow.exitStatus == 0 }, - { assert workflow.stdout.any { it.contains('Input/output options') } }, - { assert workflow.stdout.any { it.contains('--outdir') } } - ) - } - } - - test("Should run help with command") { - - when { - - params { - monochrome_logs = true - test_data = '' - } - workflow { - """ - help = true - workflow_command = "nextflow run noorg/doesntexist" - pre_help_text = null - post_help_text = null - validate_params = false - schema_filename = "$moduleTestDir/nextflow_schema.json" - - input[0] = help - input[1] = workflow_command - input[2] = pre_help_text - input[3] = post_help_text - input[4] = validate_params - input[5] = schema_filename - """ - } - } - - then { - assertAll( - { assert workflow.success }, - { assert workflow.exitStatus == 0 }, - { assert workflow.stdout.any { it.contains('nextflow run noorg/doesntexist') } }, - { assert workflow.stdout.any { it.contains('Input/output options') } }, - { assert workflow.stdout.any { it.contains('--outdir') } } - ) - } - } - - test("Should run help with extra text") { - - - when { - - params { - monochrome_logs = true - test_data = '' - } - workflow { - """ - help = true - workflow_command = "nextflow run noorg/doesntexist" - pre_help_text = "pre-help-text" - post_help_text = "post-help-text" - validate_params = false - schema_filename = "$moduleTestDir/nextflow_schema.json" - - input[0] = help - input[1] = workflow_command - input[2] = pre_help_text - input[3] = post_help_text - input[4] = validate_params - input[5] = schema_filename - """ - } - } - - then { - assertAll( - { assert workflow.success }, - { assert workflow.exitStatus == 0 }, - { assert workflow.stdout.any { it.contains('pre-help-text') } }, - { assert workflow.stdout.any { it.contains('nextflow run noorg/doesntexist') } }, - { assert workflow.stdout.any { it.contains('Input/output options') } }, - { assert workflow.stdout.any { it.contains('--outdir') } }, - { assert workflow.stdout.any { it.contains('post-help-text') } } - ) - } - } - - test("Should validate params") { - - when { - - params { - monochrome_logs = true - test_data = '' - outdir = 1 - } - workflow { - """ - help = false - workflow_command = null - pre_help_text = null - post_help_text = null - validate_params = true - schema_filename = "$moduleTestDir/nextflow_schema.json" - - input[0] = help - input[1] = workflow_command - input[2] = pre_help_text - input[3] = post_help_text - input[4] = validate_params - input[5] = schema_filename - """ - } - } - - then { - assertAll( - { assert workflow.failed }, - { assert workflow.stdout.any { it.contains('ERROR ~ ERROR: Validation of pipeline parameters failed!') } } - ) - } - } -} diff --git a/subworkflows/nf-core/utils_nfvalidation_plugin/tests/tags.yml b/subworkflows/nf-core/utils_nfvalidation_plugin/tests/tags.yml deleted file mode 100644 index 60b1cfff..00000000 --- a/subworkflows/nf-core/utils_nfvalidation_plugin/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -subworkflows/utils_nfvalidation_plugin: - - subworkflows/nf-core/utils_nfvalidation_plugin/** diff --git a/workflows/nallo.nf b/workflows/nallo.nf index 0bb337e5..60a703a6 100644 --- a/workflows/nallo.nf +++ b/workflows/nallo.nf @@ -1,4 +1,4 @@ -include { fromSamplesheet } from 'plugin/nf-validation' +include { samplesheetToList } from 'plugin/nf-schema' /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -45,7 +45,7 @@ include { BCFTOOLS_STATS } from '../modules/nf-core/bcf include { MINIMAP2_ALIGN } from '../modules/nf-core/minimap2/align/main' include { MULTIQC } from '../modules/nf-core/multiqc/main' include { SPLITUBAM } from '../modules/nf-core/splitubam/main' -include { paramsSummaryMap } from 'plugin/nf-validation' +include { paramsSummaryMap } from 'plugin/nf-schema' include { paramsSummaryMultiqc } from '../subworkflows/nf-core/utils_nfcore_pipeline' include { softwareVersionsToYAML } from '../subworkflows/nf-core/utils_nfcore_pipeline' include { methodsDescriptionText } from '../subworkflows/local/utils_nfcore_nallo_pipeline' @@ -84,7 +84,7 @@ workflow NALLO { : '' ch_variant_catalog = params.variant_catalog ? Channel.fromPath(params.variant_catalog).map { it -> [ it.simpleName, it ] }.collect() : '' - ch_databases = params.snp_db ? Channel.fromSamplesheet('snp_db', immutable_meta: false).map{ it[1] }.collect() + ch_databases = params.snp_db ? Channel.fromList(samplesheetToList(params.snp_db, 'assets/schema_snpdb.json')).map{ it[1] }.collect() : '' ch_variant_consequences_snv = params.variant_consequences_snv ? Channel.fromPath(params.variant_consequences_snv).collect() : Channel.value([]) @@ -497,7 +497,7 @@ workflow NALLO { softwareVersionsToYAML(ch_versions) .collectFile( storeDir: "${params.outdir}/pipeline_info", - name: 'nf_core_pipeline_software_mqc_versions.yml', + name: 'nallo_' + 'pipeline_software_' + 'mqc_' + 'versions.yml', sort: true, newLine: true ).set { ch_collated_versions } @@ -517,6 +517,8 @@ workflow NALLO { summary_params = paramsSummaryMap( workflow, parameters_schema: "nextflow_schema.json") ch_workflow_summary = Channel.value(paramsSummaryMultiqc(summary_params)) + ch_multiqc_files = ch_multiqc_files.mix( + ch_workflow_summary.collectFile(name: 'workflow_summary_mqc.yaml')) ch_multiqc_custom_methods_description = params.multiqc_methods_description ? file(params.multiqc_methods_description, checkIfExists: true) : @@ -524,8 +526,6 @@ workflow NALLO { ch_methods_description = Channel.value( methodsDescriptionText(ch_multiqc_custom_methods_description)) - ch_multiqc_files = ch_multiqc_files.mix( - ch_workflow_summary.collectFile(name: 'workflow_summary_mqc.yaml')) ch_multiqc_files = ch_multiqc_files.mix(ch_collated_versions) ch_multiqc_files = ch_multiqc_files.mix( ch_methods_description.collectFile( From 1263d726c4d88c0728635119e948a04ba9c2bc48 Mon Sep 17 00:00:00 2001 From: Daniel Schmitz Date: Fri, 11 Oct 2024 08:38:19 +0200 Subject: [PATCH 032/106] Issue 348 (#419) * Added BED to SV calling * Add comment to ch_bed * Updated Changelog * Updated tests * Updated BED in tests to capture variants --- CHANGELOG.md | 1 + subworkflows/local/call_svs/main.nf | 3 +- .../local/call_svs/tests/main.nf.test | 172 +++++- .../local/call_svs/tests/main.nf.test.snap | 494 +++++++++++++----- workflows/nallo.nf | 3 +- 5 files changed, 530 insertions(+), 143 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a6a32a52..0f79865d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#393](https://github.com/genomic-medicine-sweden/nallo/pull/393) - Added a new `--minimap2_read_mapping_preset` parameter - [#403](https://github.com/genomic-medicine-sweden/nallo/pull/403) - Added `FOUND_IN=hificnv` tags to CNV calling output - [#417](https://github.com/genomic-medicine-sweden/nallo/pull/417) - Added `FOUND_IN=deepvariant` tags to SNV calling output +- [#419](https://github.com/genomic-medicine-sweden/nallo/pull/419) - Added support for SV filtering using input BED file ([#348](https://github.com/genomic-medicine-sweden/nallo/issues/348)) ### `Changed` diff --git a/subworkflows/local/call_svs/main.nf b/subworkflows/local/call_svs/main.nf index 49da1ef6..9d472987 100644 --- a/subworkflows/local/call_svs/main.nf +++ b/subworkflows/local/call_svs/main.nf @@ -14,6 +14,7 @@ workflow CALL_SVS { ch_fai // channel [mandatory]: [ val(meta), path(fai) ] sv_caller // val [mandatory]: Which caller to use ch_tandem_repeats // channel [optional]: [ val(meta), path(bed) ] + ch_bed // channel [optional]: [ val(meta), path(bed) ] main: ch_versions = Channel.empty() @@ -82,7 +83,7 @@ workflow CALL_SVS { .set { ch_bcftools_merge_in } // Merge the files with new sample names - BCFTOOLS_MERGE ( ch_bcftools_merge_in, ch_fasta, ch_fai, [[],[]] ) + BCFTOOLS_MERGE ( ch_bcftools_merge_in, ch_fasta, ch_fai, ch_bed ) ch_versions = ch_versions.mix(BCFTOOLS_MERGE.out.versions) emit: diff --git a/subworkflows/local/call_svs/tests/main.nf.test b/subworkflows/local/call_svs/tests/main.nf.test index 8798f4a0..927d62c2 100644 --- a/subworkflows/local/call_svs/tests/main.nf.test +++ b/subworkflows/local/call_svs/tests/main.nf.test @@ -31,7 +31,7 @@ nextflow_workflow { } } - test("1 sample - [bam, bai], fasta, fai, [] - sniffles") { + test("1 sample - [bam, bai], fasta, fai, [], [] - sniffles") { when { workflow { @@ -45,6 +45,7 @@ nextflow_workflow { input[2] = SAMTOOLS_FAIDX.out.fai input[3] = "sniffles" input[4] = [[],[]] + input[5] = [[],[]] """ } } @@ -64,7 +65,7 @@ nextflow_workflow { } - test("1 sample - [bam, bai], fasta, fai, bed - sniffles") { + test("1 sample - [bam, bai], fasta, fai, bed, [] - sniffles") { when { workflow { @@ -81,6 +82,7 @@ nextflow_workflow { [ id:'trf' ], file('https://github.com/fritzsedlazeck/Sniffles/raw/master/annotations/human_GRCh38_no_alt_analysis_set.trf.bed', checkIfExists: true) ] + input[5] = [[],[]] """ } } @@ -100,7 +102,7 @@ nextflow_workflow { } - test("2 samples - [bam, bai], fasta, fai, [] - sniffles") { + test("2 samples - [bam, bai], fasta, fai, [], [] - sniffles") { when { workflow { @@ -121,6 +123,7 @@ nextflow_workflow { input[2] = SAMTOOLS_FAIDX.out.fai input[3] = "sniffles" input[4] = [[],[]] + input[5] = [[],[]] """ } } @@ -141,7 +144,43 @@ nextflow_workflow { } - test("1 sample - [bam, bai], fasta, fai, [] - severus") { + test("1 sample - [bam, bai], fasta, fai, [], bed - sniffles") { + + when { + workflow { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false, project: 'project' ], // meta map + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam', checkIfExists: true), + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) + ]) + input[1] = GUNZIP.out.gunzip + input[2] = SAMTOOLS_FAIDX.out.fai + input[3] = "sniffles" + input[4] = [[],[]] + input[5] = Channel.of('chr20\t2650000\t2660000') + .collectFile(name: 'chr20.bed', newLine: true) + .map{ file -> [ [ id:'chr20'], file ] } + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert workflow.out.ch_sv_calls_tbi.get(0).get(1).endsWith("tbi") }, + { assert workflow.out.ch_multisample_tbi.get(0).get(1).endsWith("tbi") }, + { assert snapshot( + path(workflow.out.ch_sv_calls_vcf.get(0).get(1)).vcf.variantsMD5, + path(workflow.out.ch_multisample_vcf.get(0).get(1)).vcf.variantsMD5, + workflow.out.versions, + ).match() } + ) + } + + } + + test("1 sample - [bam, bai], fasta, fai, [], [] - severus") { when { workflow { @@ -155,6 +194,7 @@ nextflow_workflow { input[2] = SAMTOOLS_FAIDX.out.fai input[3] = "severus" input[4] = [[],[]] + input[5] = [[],[]] """ } } @@ -174,7 +214,7 @@ nextflow_workflow { } - test("1 sample - [bam, bai], fasta, fai, bed - severus") { + test("1 sample - [bam, bai], fasta, fai, bed, [] - severus") { when { workflow { @@ -191,6 +231,43 @@ nextflow_workflow { [ id:'trf' ], file('https://github.com/fritzsedlazeck/Sniffles/raw/master/annotations/human_GRCh38_no_alt_analysis_set.trf.bed', checkIfExists: true) ] + input[5] = [[],[]] + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert workflow.out.ch_sv_calls_tbi.get(0).get(1).endsWith("tbi") }, + { assert workflow.out.ch_multisample_tbi.get(0).get(1).endsWith("tbi") }, + { assert snapshot( + path(workflow.out.ch_sv_calls_vcf.get(0).get(1)).vcf.variantsMD5, + path(workflow.out.ch_multisample_vcf.get(0).get(1)).vcf.variantsMD5, + workflow.out.versions, + ).match() } + ) + } + + } + + test("1 sample - [bam, bai], fasta, fai, [], bed - severus") { + + when { + workflow { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false, project: 'project' ], // meta map + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam', checkIfExists: true), + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) + ]) + input[1] = GUNZIP.out.gunzip + input[2] = SAMTOOLS_FAIDX.out.fai + input[3] = "severus" + input[4] = [[],[]] + input[5] = Channel.of('chr20\t2650000\t2660000') + .collectFile(name: 'chr20.bed', newLine: true) + .map{ file -> [ [ id:'chr20'], file ] } """ } } @@ -210,7 +287,7 @@ nextflow_workflow { } - test("2 samples - [bam, bai], fasta, fai, [] - severus") { + test("2 samples - [bam, bai], fasta, fai, [], [] - severus") { when { workflow { @@ -231,6 +308,7 @@ nextflow_workflow { input[2] = SAMTOOLS_FAIDX.out.fai input[3] = "severus" input[4] = [[],[]] + input[5] = [[],[]] """ } } @@ -251,7 +329,7 @@ nextflow_workflow { } - test("1 sample - [bam, bai], fasta, fai, [] - sniffles -stub") { + test("1 sample - [bam, bai], fasta, fai, [], [] - sniffles -stub") { options "-stub" @@ -267,6 +345,7 @@ nextflow_workflow { input[2] = SAMTOOLS_FAIDX.out.fai input[3] = "sniffles" input[4] = [[],[]] + input[5] = [[],[]] """ } } @@ -280,7 +359,7 @@ nextflow_workflow { } - test("1 sample - [bam, bai], fasta, fai, bed - sniffles -stub") { + test("1 sample - [bam, bai], fasta, fai, bed, [] - sniffles -stub") { options "-stub" @@ -299,6 +378,39 @@ nextflow_workflow { [ id:'trf' ], file('https://github.com/fritzsedlazeck/Sniffles/raw/master/annotations/human_GRCh38_no_alt_analysis_set.trf.bed', checkIfExists: true) ] + input[5] = [[],[]] + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out).match() } + ) + } + + } + + test("1 sample - [bam, bai], fasta, fai, [], bed - sniffles -stub") { + + options "-stub" + + when { + workflow { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false, project: 'project' ], // meta map + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam', checkIfExists: true), + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) + ]) + input[1] = GUNZIP.out.gunzip + input[2] = SAMTOOLS_FAIDX.out.fai + input[3] = "sniffles" + input[4] = [[],[]] + input[5] = Channel.of('chr20\t2650000\t2660000') + .collectFile(name: 'chr20.bed', newLine: true) + .map{ file -> [ [ id:'chr20'], file ] } """ } } @@ -312,7 +424,7 @@ nextflow_workflow { } - test("2 samples - [bam, bai], fasta, fai, [] - sniffles -stub") { + test("2 samples - [bam, bai], fasta, fai, [], [] - sniffles -stub") { options "-stub" @@ -335,6 +447,7 @@ nextflow_workflow { input[2] = SAMTOOLS_FAIDX.out.fai input[3] = "sniffles" input[4] = [[],[]] + input[5] = [[],[]] """ } } @@ -354,7 +467,37 @@ nextflow_workflow { } - test("1 sample - [bam, bai], fasta, fai, [] - severus -stub") { + test("1 sample - [bam, bai], fasta, fai, [], [] - severus -stub") { + + options "-stub" + + when { + workflow { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false, project: 'project' ], // meta map + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam', checkIfExists: true), + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) + ]) + input[1] = GUNZIP.out.gunzip + input[2] = SAMTOOLS_FAIDX.out.fai + input[3] = "severus" + input[4] = [[],[]] + input[5] = [[],[]] + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out).match() } + ) + } + + } + + test("1 sample - [bam, bai], fasta, fai, [], bed - severus -stub") { options "-stub" @@ -370,6 +513,9 @@ nextflow_workflow { input[2] = SAMTOOLS_FAIDX.out.fai input[3] = "severus" input[4] = [[],[]] + input[5] = Channel.of('chr20\t2650000\t2660000') + .collectFile(name: 'chr20.bed', newLine: true) + .map{ file -> [ [ id:'chr20'], file ] } """ } } @@ -383,7 +529,7 @@ nextflow_workflow { } - test("1 sample - [bam, bai], fasta, fai, bed - severus -stub") { + test("1 sample - [bam, bai], fasta, fai, bed, [] - severus -stub") { options "-stub" @@ -402,6 +548,7 @@ nextflow_workflow { [ id:'trf' ], file('https://github.com/fritzsedlazeck/Sniffles/raw/master/annotations/human_GRCh38_no_alt_analysis_set.trf.bed', checkIfExists: true) ] + input[5] = [[],[]] """ } } @@ -415,7 +562,7 @@ nextflow_workflow { } - test("2 samples - [bam, bai], fasta, fai, [] - severus -stub") { + test("2 samples - [bam, bai], fasta, fai, [], [] - severus -stub") { options "-stub" @@ -438,6 +585,7 @@ nextflow_workflow { input[2] = SAMTOOLS_FAIDX.out.fai input[3] = "severus" input[4] = [[],[]] + input[5] = [[],[]] """ } } diff --git a/subworkflows/local/call_svs/tests/main.nf.test.snap b/subworkflows/local/call_svs/tests/main.nf.test.snap index 5d47a551..c5ba047b 100644 --- a/subworkflows/local/call_svs/tests/main.nf.test.snap +++ b/subworkflows/local/call_svs/tests/main.nf.test.snap @@ -1,62 +1,5 @@ { - "1 sample - [bam, bai], fasta, fai, [] - severus": { - "content": [ - "1294e2ab468789a0bd56e8bcaf578a4", - "1294e2ab468789a0bd56e8bcaf578a4", - [ - "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", - "versions.yml:md5,572bfd042014333af194207291d12b95", - "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", - "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", - "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", - "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f" - ] - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" - }, - "timestamp": "2024-09-17T12:35:49.943901515" - }, - "1 sample - [bam, bai], fasta, fai, [] - sniffles": { - "content": [ - "7cd0730159250c8945e2007da414651e", - "5db7be988de18b4f14b532043adb367f", - [ - "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", - "versions.yml:md5,572bfd042014333af194207291d12b95", - "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", - "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", - "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", - "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff" - ] - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" - }, - "timestamp": "2024-09-17T12:34:57.588634749" - }, - "1 sample - [bam, bai], fasta, fai, bed - severus": { - "content": [ - "d64a5438fe54c0239613976f8826897b", - "d64a5438fe54c0239613976f8826897b", - [ - "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", - "versions.yml:md5,572bfd042014333af194207291d12b95", - "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", - "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", - "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", - "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f" - ] - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" - }, - "timestamp": "2024-09-17T12:36:09.577048048" - }, - "1 sample - [bam, bai], fasta, fai, [] - severus -stub": { + "1 sample - [bam, bai], fasta, fai, bed, [] - sniffles -stub": { "content": [ { "0": [ @@ -98,10 +41,10 @@ "4": [ "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,572bfd042014333af194207291d12b95", + "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", - "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", - "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f" + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff" ], "ch_multisample_tbi": [ [ @@ -142,20 +85,20 @@ "versions": [ "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,572bfd042014333af194207291d12b95", + "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", - "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", - "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f" + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff" ] } ], "meta": { "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nextflow": "23.04.3" }, - "timestamp": "2024-09-17T13:00:41.241344463" + "timestamp": "2024-10-08T16:08:27.53187403" }, - "2 samples - [bam, bai], fasta, fai, [] - sniffles -stub": { + "2 samples - [bam, bai], fasta, fai, [], [] - sniffles -stub": { "content": [ "[test_1_reheader.vcf.gz, test_2_reheader.vcf.gz]", [ @@ -208,11 +151,129 @@ ], "meta": { "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nextflow": "23.04.3" + }, + "timestamp": "2024-10-08T16:09:54.140742439" + }, + "1 sample - [bam, bai], fasta, fai, [], [] - sniffles -stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false, + "project": "project" + }, + "test_reheader.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false, + "project": "project" + }, + "test_reheader.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "project" + }, + "project.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "3": [ + [ + { + "id": "project" + }, + "project.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", + "versions.yml:md5,572bfd042014333af194207291d12b95", + "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", + "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff" + ], + "ch_multisample_tbi": [ + [ + { + "id": "project" + }, + "project.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "ch_multisample_vcf": [ + [ + { + "id": "project" + }, + "project.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "ch_sv_calls_tbi": [ + [ + { + "id": "test", + "single_end": false, + "project": "project" + }, + "test_reheader.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "ch_sv_calls_vcf": [ + [ + { + "id": "test", + "single_end": false, + "project": "project" + }, + "test_reheader.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", + "versions.yml:md5,572bfd042014333af194207291d12b95", + "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", + "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "23.04.3" + }, + "timestamp": "2024-10-08T16:07:46.907592593" + }, + "1 sample - [bam, bai], fasta, fai, [], [] - severus": { + "content": [ + "1294e2ab468789a0bd56e8bcaf578a4", + "1294e2ab468789a0bd56e8bcaf578a4", + [ + "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", + "versions.yml:md5,572bfd042014333af194207291d12b95", + "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "23.04.3" }, - "timestamp": "2024-09-17T13:00:27.793986704" + "timestamp": "2024-10-08T16:02:41.891334033" }, - "1 sample - [bam, bai], fasta, fai, bed - severus -stub": { + "1 sample - [bam, bai], fasta, fai, [], bed - severus -stub": { "content": [ { "0": [ @@ -307,11 +368,54 @@ ], "meta": { "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nextflow": "23.04.3" + }, + "timestamp": "2024-10-08T15:55:12.50291621" + }, + "1 sample - [bam, bai], fasta, fai, [], bed - severus": { + "content": [ + "1294e2ab468789a0bd56e8bcaf578a4", + "fd275f8c8db24a1c5b7de7c0c3970830", + [ + "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", + "versions.yml:md5,572bfd042014333af194207291d12b95", + "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-11T08:18:00.661332838" + }, + "2 samples - [bam, bai], fasta, fai, [], [] - sniffles": { + "content": [ + "[test_1_reheader.vcf.gz, test_2_reheader.vcf.gz]", + "86c9d09c440d7d60876ae6b4db8a86ab", + [ + "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", + "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", + "versions.yml:md5,572bfd042014333af194207291d12b95", + "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", + "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", + "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", + "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "23.04.3" }, - "timestamp": "2024-09-17T13:00:54.535163836" + "timestamp": "2024-10-08T16:00:43.592323665" }, - "1 sample - [bam, bai], fasta, fai, [] - sniffles -stub": { + "1 sample - [bam, bai], fasta, fai, [], bed - sniffles -stub": { "content": [ { "0": [ @@ -406,11 +510,167 @@ ], "meta": { "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nextflow": "23.04.3" }, - "timestamp": "2024-09-17T12:59:59.327540921" + "timestamp": "2024-10-08T16:09:13.388630221" }, - "2 samples - [bam, bai], fasta, fai, [] - severus -stub": { + "1 sample - [bam, bai], fasta, fai, [], [] - severus -stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false, + "project": "project" + }, + "test_reheader.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false, + "project": "project" + }, + "test_reheader.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "project" + }, + "project.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "3": [ + [ + { + "id": "project" + }, + "project.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", + "versions.yml:md5,572bfd042014333af194207291d12b95", + "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f" + ], + "ch_multisample_tbi": [ + [ + { + "id": "project" + }, + "project.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "ch_multisample_vcf": [ + [ + { + "id": "project" + }, + "project.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "ch_sv_calls_tbi": [ + [ + { + "id": "test", + "single_end": false, + "project": "project" + }, + "test_reheader.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "ch_sv_calls_vcf": [ + [ + { + "id": "test", + "single_end": false, + "project": "project" + }, + "test_reheader.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", + "versions.yml:md5,572bfd042014333af194207291d12b95", + "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "23.04.3" + }, + "timestamp": "2024-10-08T16:11:04.664278022" + }, + "1 sample - [bam, bai], fasta, fai, [], [] - sniffles": { + "content": [ + "7cd0730159250c8945e2007da414651e", + "5db7be988de18b4f14b532043adb367f", + [ + "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", + "versions.yml:md5,572bfd042014333af194207291d12b95", + "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", + "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "23.04.3" + }, + "timestamp": "2024-10-08T15:58:41.674199758" + }, + "1 sample - [bam, bai], fasta, fai, bed, [] - severus": { + "content": [ + "d64a5438fe54c0239613976f8826897b", + "d64a5438fe54c0239613976f8826897b", + [ + "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", + "versions.yml:md5,572bfd042014333af194207291d12b95", + "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "23.04.3" + }, + "timestamp": "2024-10-08T16:03:58.82820463" + }, + "1 sample - [bam, bai], fasta, fai, [], bed - sniffles": { + "content": [ + "7cd0730159250c8945e2007da414651e", + "5e618571d8fb55add84e7857a204114c", + [ + "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", + "versions.yml:md5,572bfd042014333af194207291d12b95", + "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", + "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-11T08:14:03.160440845" + }, + "2 samples - [bam, bai], fasta, fai, [], [] - severus -stub": { "content": [ "[test_1_reheader.vcf.gz, test_2_reheader.vcf.gz]", [ @@ -463,54 +723,11 @@ ], "meta": { "nf-test": "0.9.0", - "nextflow": "24.04.3" - }, - "timestamp": "2024-09-17T13:01:08.741446388" - }, - "1 sample - [bam, bai], fasta, fai, bed - sniffles": { - "content": [ - "3cb4ba0bf05ab17ef02c4b51e70e4e6e", - "c7e259bedb8c0e4742bf1a5722ac2973", - [ - "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", - "versions.yml:md5,572bfd042014333af194207291d12b95", - "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", - "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", - "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", - "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff" - ] - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nextflow": "23.04.3" }, - "timestamp": "2024-09-17T12:35:13.337758686" + "timestamp": "2024-10-08T15:11:33.717946204" }, - "2 samples - [bam, bai], fasta, fai, [] - sniffles": { - "content": [ - "[test_1_reheader.vcf.gz, test_2_reheader.vcf.gz]", - "86c9d09c440d7d60876ae6b4db8a86ab", - [ - "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", - "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", - "versions.yml:md5,572bfd042014333af194207291d12b95", - "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", - "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", - "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", - "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", - "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", - "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", - "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", - "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff" - ] - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" - }, - "timestamp": "2024-09-17T12:35:33.058751753" - }, - "1 sample - [bam, bai], fasta, fai, bed - sniffles -stub": { + "1 sample - [bam, bai], fasta, fai, bed, [] - severus -stub": { "content": [ { "0": [ @@ -552,10 +769,10 @@ "4": [ "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,572bfd042014333af194207291d12b95", - "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", - "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff" + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f" ], "ch_multisample_tbi": [ [ @@ -596,20 +813,20 @@ "versions": [ "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,572bfd042014333af194207291d12b95", - "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", - "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff" + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f" ] } ], "meta": { "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nextflow": "23.04.3" }, - "timestamp": "2024-09-17T13:00:13.310974915" + "timestamp": "2024-10-08T15:10:18.331073964" }, - "2 samples - [bam, bai], fasta, fai, [] - severus": { + "2 samples - [bam, bai], fasta, fai, [], [] - severus": { "content": [ "[test_1_reheader.vcf.gz, test_2_reheader.vcf.gz]", "37b9bd8c61a49f47e07db24a911f3cce", @@ -629,8 +846,27 @@ ], "meta": { "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nextflow": "23.04.3" + }, + "timestamp": "2024-10-08T16:07:01.072676373" + }, + "1 sample - [bam, bai], fasta, fai, bed, [] - sniffles": { + "content": [ + "3cb4ba0bf05ab17ef02c4b51e70e4e6e", + "c7e259bedb8c0e4742bf1a5722ac2973", + [ + "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", + "versions.yml:md5,572bfd042014333af194207291d12b95", + "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", + "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "23.04.3" }, - "timestamp": "2024-09-17T12:37:01.825339869" + "timestamp": "2024-10-08T15:59:27.69693246" } } \ No newline at end of file diff --git a/workflows/nallo.nf b/workflows/nallo.nf index 60a703a6..1c4d399a 100644 --- a/workflows/nallo.nf +++ b/workflows/nallo.nf @@ -306,7 +306,8 @@ workflow NALLO { fasta, fai, params.sv_caller, - ch_tandem_repeats + ch_tandem_repeats, + ch_input_bed ) ch_versions = ch_versions.mix(CALL_SVS.out.versions) From 777cd7bb481a4042964356b2d7e09a591ad0513f Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Mon, 14 Oct 2024 09:15:09 +0200 Subject: [PATCH 033/106] Annotate SVs (#408) * wip * working * fix snv annotation * docs and split * update docs * add back regulatory * review suggestions * prettier --- .github/workflows/ci.yml | 1 + .nf-core.yml | 1 + CHANGELOG.md | 1 + CITATIONS.md | 4 + README.md | 1 + assets/svdb_query_vcf_schema.json | 40 ++++++ conf/modules/annotate_svs.config | 57 +++++++++ conf/modules/call_svs.config | 7 +- conf/modules/general.config | 26 +++- conf/modules/snv_annotation.config | 2 +- conf/test.config | 22 ++-- docs/output.md | 16 +++ docs/parameters.md | 4 +- docs/usage.md | 19 ++- modules.json | 5 + modules/nf-core/svdb/query/environment.yml | 5 + modules/nf-core/svdb/query/main.nf | 77 ++++++++++++ modules/nf-core/svdb/query/meta.yml | 63 ++++++++++ modules/nf-core/svdb/query/tests/main.nf.test | 36 ++++++ .../svdb/query/tests/main.nf.test.snap | 30 +++++ modules/nf-core/svdb/query/tests/tags.yml | 2 + nextflow.config | 5 +- nextflow_schema.json | 18 ++- subworkflows/local/annotate_svs/main.nf | 62 ++++++++++ .../local/annotate_svs/tests/main.nf.test | 115 ++++++++++++++++++ .../annotate_svs/tests/main.nf.test.snap | 32 +++++ .../local/annotate_svs/tests/nextflow.config | 14 +++ subworkflows/local/snv_annotation/main.nf | 16 +-- .../snv_annotation/tests/main.nf.test.snap | 14 +-- .../snv_annotation/tests/nextflow.config | 2 +- .../local/utils_nfcore_nallo_pipeline/main.nf | 11 ++ tests/main.nf.test | 38 +++--- tests/nextflow.config | 17 ++- workflows/nallo.nf | 71 ++++++++--- 34 files changed, 749 insertions(+), 85 deletions(-) create mode 100644 assets/svdb_query_vcf_schema.json create mode 100644 conf/modules/annotate_svs.config create mode 100644 modules/nf-core/svdb/query/environment.yml create mode 100644 modules/nf-core/svdb/query/main.nf create mode 100644 modules/nf-core/svdb/query/meta.yml create mode 100644 modules/nf-core/svdb/query/tests/main.nf.test create mode 100644 modules/nf-core/svdb/query/tests/main.nf.test.snap create mode 100644 modules/nf-core/svdb/query/tests/tags.yml create mode 100644 subworkflows/local/annotate_svs/main.nf create mode 100644 subworkflows/local/annotate_svs/tests/main.nf.test create mode 100644 subworkflows/local/annotate_svs/tests/main.nf.test.snap create mode 100644 subworkflows/local/annotate_svs/tests/nextflow.config diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f6ba16cb..c512f454 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -37,6 +37,7 @@ jobs: - "SHORT_VARIANT_CALLING" - "SNV_ANNOTATION" - "CALL_SVS" + - "ANNOTATE_SVS" profile: - "docker" diff --git a/.nf-core.yml b/.nf-core.yml index e3cc3de9..8a98a163 100644 --- a/.nf-core.yml +++ b/.nf-core.yml @@ -10,6 +10,7 @@ lint: - .github/workflows/awstest.yml - .github/workflows/awsfulltest.yml - conf/modules.config + - conf/igenomes_ignored.config files_unchanged: - CODE_OF_CONDUCT.md - assets/nf-core-nallo_logo_light.png diff --git a/CHANGELOG.md b/CHANGELOG.md index 0f79865d..bc3844c7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#388](https://github.com/genomic-medicine-sweden/nallo/pull/388) - Added single-sample tbi output to the short variant calling subworkflow - [#393](https://github.com/genomic-medicine-sweden/nallo/pull/393) - Added a new `--minimap2_read_mapping_preset` parameter - [#403](https://github.com/genomic-medicine-sweden/nallo/pull/403) - Added `FOUND_IN=hificnv` tags to CNV calling output +- [#408](https://github.com/genomic-medicine-sweden/nallo/pull/408) - Added a new subworkflow to annotate SVs - [#417](https://github.com/genomic-medicine-sweden/nallo/pull/417) - Added `FOUND_IN=deepvariant` tags to SNV calling output - [#419](https://github.com/genomic-medicine-sweden/nallo/pull/419) - Added support for SV filtering using input BED file ([#348](https://github.com/genomic-medicine-sweden/nallo/issues/348)) diff --git a/CITATIONS.md b/CITATIONS.md index 21c4c141..5128c352 100644 --- a/CITATIONS.md +++ b/CITATIONS.md @@ -110,6 +110,10 @@ > Nilsson D, Magnusson M. moonso/stranger v0.7.1. Published online February 18, 2021. doi:10.5281/ZENODO.4548873 +- [SVDB](https://github.com/J35P312/SVDB) + + > Eisfeldt et al., 2017. + - [Tabix](https://academic.oup.com/bioinformatics/article/27/5/718/262743) > Li H. Tabix: fast retrieval of sequence features from generic TAB-delimited files. Bioinformatics. 2011;27(5):718-719. doi:10.1093/bioinformatics/btq671 diff --git a/README.md b/README.md index f170c7c1..4dd88d57 100644 --- a/README.md +++ b/README.md @@ -46,6 +46,7 @@ - Annotate SNVs and INDELs with databases of choice, i.e. [gnomAD](https://gnomad.broadinstitute.org), [CADD](https://cadd.gs.washington.edu) etc. with [echtvar](https://github.com/brentp/echtvar) and [VEP](https://github.com/Ensembl/ensembl-vep) - Annotate repeat expansions with [stranger](https://github.com/Clinical-Genomics/stranger) +- Annotate SVs with [SVDB](https://github.com/J35P312/SVDB) and [VEP](https://github.com/Ensembl/ensembl-vep) ##### Ranking diff --git a/assets/svdb_query_vcf_schema.json b/assets/svdb_query_vcf_schema.json new file mode 100644 index 00000000..a927a1f3 --- /dev/null +++ b/assets/svdb_query_vcf_schema.json @@ -0,0 +1,40 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://raw.githubusercontent.com/nf-core/raredisease/master/assets/mobile_element_references_schema.json", + "title": "Schema for SVDB query - VCF", + "description": "Schema for the SVDB query database input, VCF version", + "type": "array", + "items": { + "type": "object", + "properties": { + "filename": { + "type": "string", + "format": "file-path", + "exists": true, + "pattern": "^\\S+\\.vcf?(\\.gz)?$", + "errorMessage": "Path to query database cannot contain spaces and must be a vcf file" + }, + "in_freq_info_key": { + "type": "string", + "pattern": "^\\S+$", + "errorMessage": "In frequency key cannot contain spaces" + }, + "in_allele_count_info_key": { + "type": "string", + "pattern": "^\\S+$", + "errorMessage": "In allele count key cannot contain spaces" + }, + "out_freq_info_key": { + "type": "string", + "pattern": "^\\S+$", + "errorMessage": "Out frequency key must be provided and cannot contain spaces" + }, + "out_allele_count_info_key": { + "type": "string", + "pattern": "^\\S+$", + "errorMessage": "Out allele count key must be provided and cannot contain spaces" + } + }, + "required": ["filename", "out_freq_info_key", "out_allele_count_info_key"] + } +} diff --git a/conf/modules/annotate_svs.config b/conf/modules/annotate_svs.config new file mode 100644 index 00000000..dfed2cfd --- /dev/null +++ b/conf/modules/annotate_svs.config @@ -0,0 +1,57 @@ +/* +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Config file for defining DSL2 per module options and publishing paths +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Available keys to override module options: + ext.args = Additional arguments appended to command in module. + ext.args2 = Second set of arguments appended to command in module (multi-tool modules). + ext.args3 = Third set of arguments appended to command in module (multi-tool modules). + ext.prefix = File name prefix for output files. +---------------------------------------------------------------------------------------- +*/ + +process { + + /* + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Annotate SVs + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + */ + + withName: '.*:ANNOTATE_SVS:.*' { + publishDir = [ + enabled: false, + ] + } + + withName: '.*ANNOTATE_SVS:ENSEMBLVEP_SV' { + ext.args = { [ + "${params.extra_vep_options}", + "--dir_plugins .", + '--plugin pLI,pLI_values.txt', + '--appris --biotype --buffer_size 100 --canonical --cache --ccds', + '--compress_output bgzip --distance 5000 --domains', + '--exclude_predicted --force_overwrite --format vcf', + '--hgvs --humdiv --max_sv_size 248387328', + '--no_progress --numbers --per_gene --polyphen p', + '--protein --offline --sift p --regulatory', + '--symbol --tsl --uniprot --vcf', + '--no_stats' + ].join(' ') } + ext.prefix = { "${meta.id}_svs_annotated" } + publishDir = [ + path: { "${params.outdir}/svs/multi_sample/${meta.id}" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } + + withName: '.*ANNOTATE_SVS:TABIX_ENSEMBLVEP_SV' { + publishDir = [ + path: { "${params.outdir}/svs/multi_sample/${meta.id}" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } + +} diff --git a/conf/modules/call_svs.config b/conf/modules/call_svs.config index 842df531..35d80ef2 100644 --- a/conf/modules/call_svs.config +++ b/conf/modules/call_svs.config @@ -57,7 +57,7 @@ process { publishDir = [ path: { "${params.outdir}/svs/multi_sample/${meta.id}" }, mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + saveAs: { filename -> filename.equals('versions.yml') || !params.skip_sv_annotation ? null : filename } ] } @@ -67,10 +67,5 @@ process { '--output-type z', '--write-index=tbi' ].join(' ') - publishDir = [ - path: { "${params.outdir}/svs/single_sample/${meta.id}" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] } } diff --git a/conf/modules/general.config b/conf/modules/general.config index 28752027..12cbee2a 100644 --- a/conf/modules/general.config +++ b/conf/modules/general.config @@ -57,7 +57,7 @@ process { ] } - withName: '.*:NALLO:BCFTOOLS_PLUGINSPLIT' { + withName: '.*:NALLO:BCFTOOLS_PLUGINSPLIT_SNVS' { ext.args = [ '-i \'GT="alt"\'', '--output-type z', @@ -81,6 +81,30 @@ process { ] } + withName: '.*:NALLO:BCFTOOLS_PLUGINSPLIT_SVS' { + ext.args = [ + '-i \'GT="alt"\'', + '--output-type z', + '--write-index=tbi' + ].join(' ') + publishDir = [ + path: { "${params.outdir}/svs/single_sample/" }, + mode: params.publish_dir_mode, + // Can't use prefix as it would come from the original file + saveAs: { filename -> + if (filename.equals('versions.yml')) { + null + } else { + def matcher = filename =~ /(.+)(\.vcf\.gz(?:\.tbi)?)$/ + def sample = matcher[0][1] + def extension = matcher[0][2] + def annotated = params.skip_sv_annotation ? "" : "_annotated" + "${sample}/${sample}_svs${annotated}${extension}" + } + } + ] + } + withName: '.*:NALLO:SAMPLESHEET_PED' { publishDir = [ enabled: false diff --git a/conf/modules/snv_annotation.config b/conf/modules/snv_annotation.config index 9f2b393d..ec2063b3 100644 --- a/conf/modules/snv_annotation.config +++ b/conf/modules/snv_annotation.config @@ -36,7 +36,7 @@ process { ].join(' ') } - withName: '.*:SNV_ANNOTATION:ENSEMBLVEP_VEP' { + withName: '.*:SNV_ANNOTATION:ENSEMBLVEP_SNV' { ext.prefix = { "${meta.id}_vep" } ext.args = { [ "${params.extra_vep_options}", diff --git a/conf/test.config b/conf/test.config index 1e01f42d..5da8c4c7 100644 --- a/conf/test.config +++ b/conf/test.config @@ -10,14 +10,6 @@ ---------------------------------------------------------------------------------------- */ -process { - resourceLimits = [ - cpus: 4, - memory: '15.GB', - time: '1.h' - ] -} - params { config_profile_name = 'Test profile' config_profile_description = 'Minimal test dataset to check pipeline function' @@ -26,7 +18,7 @@ params { modules_testdata_base_path = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/' // Base directory for genomic-medicine-sweden/nallo test data - pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/1f4e062926fc10f70a38e917e5771edb333e89bf/' + pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/7be7114cb132be8cae9343f225bcf42ec11ecc1b/' // References fasta = params.pipelines_testdata_base_path + 'reference/hg38.test.fa.gz' @@ -41,6 +33,7 @@ params { vep_cache = params.pipelines_testdata_base_path + 'reference/vep_cache_test_data.tar.gz' vep_plugin_files = params.pipelines_testdata_base_path + 'reference/vep_plugin_files.csv' snp_db = params.pipelines_testdata_base_path + 'testdata/snp_dbs.csv' + svdb_dbs = params.pipelines_testdata_base_path + 'testdata/svdb_dbs.csv' reduced_penetrance = params.pipelines_testdata_base_path + 'reference/reduced_penetrance.tsv' score_config_snv = params.pipelines_testdata_base_path + 'reference/rank_model_snv.ini' variant_consequences_snv = params.pipelines_testdata_base_path + 'reference/variant_consequences_v2.txt' @@ -59,7 +52,7 @@ params { // Impose same minimum Nextflow version as in nextflow.config manifest { - nextflowVersion = '!>=23.04.0' + nextflowVersion = '!>=24.04.2' } // Disable all Nextflow reporting options @@ -69,16 +62,25 @@ trace { enabled = false } dag { enabled = false } process { + resourceLimits = [ + cpus: 4, + memory: '15.GB', + time: '1.h' + ] withLabel: 'process_high' { cpus = 4 + memory = '15.GB' } withLabel: 'process_medium' { cpus = 2 + memory = '7.GB' } withLabel: 'process_low' { cpus = 1 + memory = '3.GB' } withLabel: 'process_single' { cpus = 1 + memory = '3.GB' } } diff --git a/docs/output.md b/docs/output.md index 3a457b0e..0f41b938 100644 --- a/docs/output.md +++ b/docs/output.md @@ -27,6 +27,7 @@ - [Ranking](#ranking) - [Ranked Variants](#ranked-variants) - [SV Calling](#sv-calling) + - [SV Annotation](#sv-annotation) ## Pipeline overview @@ -348,3 +349,18 @@ Results generated by MultiQC collate pipeline QC from supported tools e.g. FastQ - `*.vcf.gz`: VCF with variants per sample - `*.vcf.gz.tbi`: Index of the corresponding VCF file
    + +### SV Annotation + +[SVDB](https://github.com/J35P312/SVDB) and [VEP](https://www.ensembl.org/vep) are used to annotate SVs. + +
    +Output files from SV Annotation + +- `{outputdir}/svs/multi_sample/{project}` + - `{project}_svs_annotated.vcf.gz`: VCF file with annotated merged variants + - `{project}_svs_annotated.vcf.gz.tbi`: Index of the corresponding VCF file +- `{outputdir}/svs/single_sample/{sample}` + - `*.vcf_annotated.gz`: VCF with annotated variants per sample + - `*.vcf_annotated.gz.tbi`: Index of the corresponding VCF file +
    diff --git a/docs/parameters.md b/docs/parameters.md index 1aa07374..13164921 100644 --- a/docs/parameters.md +++ b/docs/parameters.md @@ -17,6 +17,7 @@ Allows skipping certain parts of the pipeline | `skip_repeat_annotation` | Skip tandem repeat annotation | `boolean` | False | | | | `skip_phasing_wf` | Skip phasing of variants and haplotagging of reads | `boolean` | False | | | | `skip_snv_annotation` | Skip short variant annotation | `boolean` | False | | | +| `skip_sv_annotation` | Skip structural variant annotation | `boolean` | False | | | | `skip_cnv_calling` | Skip CNV calling | `boolean` | False | | | | `skip_call_paralogs` | Skip the calling of specific paralogous genes | `boolean` | False | | | | `skip_rank_variants` | Skip ranking of short variants | `boolean` | False | | | @@ -37,6 +38,7 @@ Define where the pipeline should find input data and save output data. | `tandem_repeats` | A tandem repeat BED file for sniffles | `string` | | | | | `trgt_repeats` | A BED file with repeats to be genotyped with TRGT | `string` | | | | | `snp_db` | A csv file with echtvar databases to annotate SNVs with | `string` | | | | +| `svdb_dbs` | Databases used for structural variant annotation in vcf format.
    HelpPath to comma-separated file containing information about the databases used for structural variant annotation.
    | `string` | | | | | `variant_catalog` | A variant catalog json-file for stranger | `string` | | | | | `variant_consequences_snv` | File containing list of SO terms listed in the order of severity from most severe to lease severe for annotating genomic SNVs. For more information check https://ensembl.org/info/genome/variation/prediction/predicted_data.html | `string` | | | | | `vep_cache` | A path to the VEP cache location | `string` | | | | @@ -47,7 +49,7 @@ Define where the pipeline should find input data and save output data. | `reduced_penetrance` | A file with gene ids that have reduced penetrance. For use with genmod. | `string` | | | | | `score_config_snv` | A SNV rank model config file for genmod. | `string` | | | | | `somalier_sites` | A VCF of known polymorphic sites for somalier | `string` | | | | -| `pipelines_testdata_base_path` | Base URL or local path to location of pipeline test dataset files | `string` | https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/1f4e062926fc10f70a38e917e5771edb333e89bf/ | | True | +| `pipelines_testdata_base_path` | Base URL or local path to location of pipeline test dataset files | `string` | https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/7be7114cb132be8cae9343f225bcf42ec11ecc1b/ | | True | ## Reference genome options diff --git a/docs/usage.md b/docs/usage.md index ff2b2fda..dadf1238 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -236,9 +236,26 @@ cadd,/path/to/cadd.v1.6.hg38.zip > [!NOTE] > Optionally, to calcuate CADD scores for small indels, supply a path to a folder containing cadd annotations with `--cadd_resources` and prescored indels with `--cadd_prescored`. Equivalent of the `data/annotations/` and `data/prescored/` folders described [here](https://github.com/kircherlab/CADD-scripts/#manual-installation). CADD scores for SNVs can be annotated through echvtvar and `--snp_db`. +### SV annotation (`--skip_sv_annotation`) + +This subworkflow relies on the mapping subworkflow, and requires the following additional files: + +| Parameter | Description | +| ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `svdb_dbs` 1 | Csv file with databases used for structural variant annotation in vcf format.
    HelpPath to comma-separated file containing information about the databases used for structural variant annotation.
    | + +1 Example file for input with `--svdb_dbs`: + +``` +filename,in_freq_info_key,in_allele_count_info_key,out_freq_info_key,out_allele_count_info_key +https://github.com/genomic-medicine-sweden/test-datasets/raw/b9ff54b59cdd39df5b6e278a30b08d94075a644c/reference/colorsdb.test_data.vcf.gz,AF,AC,colorsdb_af,colorsdb_ac +``` + +These databases could for example come from [CoLoRSdb](https://zenodo.org/records/13145123). + ### Rank variants (`--skip_rank_variants`) -This subworkflow relies on the mapping, short variant calling and SNV annotation subworkflows, and requires the following additional files: +This subworkflow ranks SNVs, and relies on the mapping, short variant calling and SNV annotation subworkflows, and requires the following additional files: | Parameter | Description | | -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | diff --git a/modules.json b/modules.json index 4c1ac8e5..57a6055f 100644 --- a/modules.json +++ b/modules.json @@ -244,6 +244,11 @@ "git_sha": "4806239588f35d27a95b187b4000d80e15152022", "installed_by": ["modules"] }, + "svdb/query": { + "branch": "master", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", + "installed_by": ["modules"] + }, "tabix/bgzip": { "branch": "master", "git_sha": "b20be35facfc5acdc1259f132ed79339d79e989f", diff --git a/modules/nf-core/svdb/query/environment.yml b/modules/nf-core/svdb/query/environment.yml new file mode 100644 index 00000000..cd35cf48 --- /dev/null +++ b/modules/nf-core/svdb/query/environment.yml @@ -0,0 +1,5 @@ +channels: + - conda-forge + - bioconda +dependencies: + - bioconda::svdb=2.8.1 diff --git a/modules/nf-core/svdb/query/main.nf b/modules/nf-core/svdb/query/main.nf new file mode 100644 index 00000000..d516d382 --- /dev/null +++ b/modules/nf-core/svdb/query/main.nf @@ -0,0 +1,77 @@ +process SVDB_QUERY { + tag "$meta.id" + label 'process_medium' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/svdb:2.8.1--py39h5371cbf_0': + 'biocontainers/svdb:2.8.1--py39h5371cbf_0' }" + + input: + tuple val(meta), path(vcf) + val(in_occs) + val(in_frqs) + val(out_occs) + val(out_frqs) + path(vcf_dbs) + path(bedpe_dbs) + + output: + tuple val(meta), path("*_query.vcf") , emit: vcf + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def in_occ = "" + def in_frq = "" + def out_occ = "" + def out_frq = "" + def dbs_argument = vcf_dbs ? "--db ${vcf_dbs.join(',')}" : '' + def bedpeds_argument = bedpe_dbs ? "--bedpedb ${bedpe_dbs.join(',')}" : '' + if (in_occs) { + in_occ = "--in_occ ${in_occs.join(',')}" + } + if (in_frqs) { + in_frq = "--in_frq ${in_frqs.join(',')}" + } + if (out_occs) { + out_occ = "--out_occ ${out_occs.join(',')}" + } + if (out_frqs) { + out_frq = "--out_frq ${out_frqs.join(',')}" + } + if ( vcf_dbs && bedpe_dbs ) error "bedpedb input is not compatible with db inputs" + """ + svdb \\ + --query \\ + $in_occ \\ + $in_frq \\ + $out_occ \\ + $out_frq \\ + $args \\ + $dbs_argument \\ + $bedpeds_argument \\ + --query_vcf $vcf \\ + --prefix ${prefix} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + svdb: \$( echo \$(svdb) | head -1 | sed 's/usage: SVDB-\\([0-9]\\.[0-9]\\.[0-9]\\).*/\\1/' ) + END_VERSIONS + """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + """ + touch ${prefix}_query.vcf + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + svdb: \$( echo \$(svdb) | head -1 | sed 's/usage: SVDB-\\([0-9]\\.[0-9]\\.[0-9]\\).*/\\1/' ) + END_VERSIONS + """ +} diff --git a/modules/nf-core/svdb/query/meta.yml b/modules/nf-core/svdb/query/meta.yml new file mode 100644 index 00000000..f8cd33c8 --- /dev/null +++ b/modules/nf-core/svdb/query/meta.yml @@ -0,0 +1,63 @@ +name: svdb_query +description: Query a structural variant database, using a vcf file as query +keywords: + - structural variants + - query + - svdb +tools: + - svdb: + description: structural variant database software + homepage: https://github.com/J35P312/SVDB + documentation: https://github.com/J35P312/SVDB/blob/master/README.md + licence: ["MIT"] + identifier: "" + +input: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - vcf: + type: file + description: query vcf file + pattern: "*.{vcf,vcf.gz}" + - - in_occs: + type: list + description: A list of allele count tags + - - in_frqs: + type: list + description: A list of allele frequency tags + - - out_occs: + type: list + description: A list of allele count tags + - - out_frqs: + type: list + description: A list of allele frequency tags + - - vcf_dbs: + type: file + description: path to a database vcf, or a comma separated list of vcfs + pattern: "*.{vcf,vcf.gz}" + - - bedpe_dbs: + type: file + description: path to a SV database of the following format chrA-posA-chrB-posB-type-count-frequency, + or a comma separated list of files + pattern: "*.{bedpe}" +output: + - vcf: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test' ] + - "*_query.vcf": + type: file + description: Annotated output VCF file + pattern: "*_query.vcf" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" +authors: + - "@ramprasadn" diff --git a/modules/nf-core/svdb/query/tests/main.nf.test b/modules/nf-core/svdb/query/tests/main.nf.test new file mode 100644 index 00000000..72e82915 --- /dev/null +++ b/modules/nf-core/svdb/query/tests/main.nf.test @@ -0,0 +1,36 @@ +nextflow_process { + + name "Test Process SVDB_QUERY" + script "modules/nf-core/svdb/query/main.nf" + process "SVDB_QUERY" + tag "modules" + tag "modules_nfcore" + tag "svdb" + tag "svdb/query" + + test("svdb query") { + + when { + process { + """ + input[0] = Channel.of([ [ id:'test' ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/vcf/sv_query.vcf.gz', checkIfExists: true) ] + ]) + input[1] = ['AC'] + input[2] = ['AF'] + input[3] = ['gnomad_svAC'] + input[4] = ['gnomad_svAF'] + input[5] = Channel.of([file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/vcf/gnomAD.r2.1.1-sv.vcf.gz', checkIfExists: true)]) + input[6] = [] + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot(file(process.out.vcf[0][1]).name, file(process.out.versions[0]).name).match()} + ) + } + } +} diff --git a/modules/nf-core/svdb/query/tests/main.nf.test.snap b/modules/nf-core/svdb/query/tests/main.nf.test.snap new file mode 100644 index 00000000..22021d0a --- /dev/null +++ b/modules/nf-core/svdb/query/tests/main.nf.test.snap @@ -0,0 +1,30 @@ +{ + "svdb query": { + "content": [ + "test_query.vcf", + "versions.yml" + ], + "timestamp": "2023-11-22T14:56:08.90223505" + }, + "versions": { + "content": [ + [ + "versions.yml:md5,e10873514a6dfc4ff377d645e7b3c9f5" + ] + ], + "timestamp": "2023-11-22T14:36:48.543666873" + }, + "vcf": { + "content": [ + [ + [ + { + "id": "test" + }, + "test_query.vcf:md5,a29542606323b2430ec52ffb5c4c7f5e" + ] + ] + ], + "timestamp": "2023-11-22T14:36:48.523155905" + } +} \ No newline at end of file diff --git a/modules/nf-core/svdb/query/tests/tags.yml b/modules/nf-core/svdb/query/tests/tags.yml new file mode 100644 index 00000000..f4096378 --- /dev/null +++ b/modules/nf-core/svdb/query/tests/tags.yml @@ -0,0 +1,2 @@ +svdb/query: + - modules/nf-core/svdb/query/** diff --git a/nextflow.config b/nextflow.config index dd675f3c..63934d6e 100644 --- a/nextflow.config +++ b/nextflow.config @@ -21,6 +21,7 @@ params { reduced_penetrance = null score_config_snv = null snp_db = null + svdb_dbs = null variant_consequences_snv = null vep_cache = null vep_plugin_files = null @@ -42,6 +43,7 @@ params { skip_repeat_annotation = params.preset == 'ONT_R10' ? true : false skip_short_variant_calling = false skip_snv_annotation = false + skip_sv_annotation = false deepvariant_model_type = params.preset == 'ONT_R10' ? 'ONT_R104' : 'PACBIO' minimap2_read_mapping_preset = params.preset == 'ONT_R10' ? 'lr:hq' : 'lr:hqae' @@ -84,7 +86,7 @@ params { help_full = false show_hidden = false version = false - pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/1f4e062926fc10f70a38e917e5771edb333e89bf/' + pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/7be7114cb132be8cae9343f225bcf42ec11ecc1b/' // Config options config_profile_name = null @@ -313,6 +315,7 @@ includeConfig 'conf/base.config' includeConfig 'conf/modules/annotate_cadd.config' includeConfig 'conf/modules/annotate_consequence_pli.config' includeConfig 'conf/modules/annotate_repeat_expansions.config' +includeConfig 'conf/modules/annotate_svs.config' includeConfig 'conf/modules/general.config' includeConfig 'conf/modules/bam_infer_sex.config' includeConfig 'conf/modules/call_paralogs.config' diff --git a/nextflow_schema.json b/nextflow_schema.json index f715de68..a104f284 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -64,6 +64,11 @@ "description": "Skip short variant annotation", "default": false }, + "skip_sv_annotation": { + "type": "boolean", + "description": "Skip structural variant annotation", + "default": false + }, "skip_cnv_calling": { "type": "boolean", "description": "Skip CNV calling", @@ -162,6 +167,17 @@ "description": "A csv file with echtvar databases to annotate SNVs with", "exists": true }, + "svdb_dbs": { + "type": "string", + "exists": true, + "format": "file-path", + "description": "Databases used for structural variant annotation in vcf format.", + "fa_icon": "fas fa-file-csv", + "help_text": "Path to comma-separated file containing information about the databases used for structural variant annotation.", + "pattern": "^\\S+\\.csv$", + "mimetype": "text/csv", + "schema": "assets/svdb_query_vcf_schema.json" + }, "variant_catalog": { "type": "string", "description": "A variant catalog json-file for stranger", @@ -229,7 +245,7 @@ "type": "string", "fa_icon": "far fa-check-circle", "description": "Base URL or local path to location of pipeline test dataset files", - "default": "https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/1f4e062926fc10f70a38e917e5771edb333e89bf/", + "default": "https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/7be7114cb132be8cae9343f225bcf42ec11ecc1b/", "hidden": true } } diff --git a/subworkflows/local/annotate_svs/main.nf b/subworkflows/local/annotate_svs/main.nf new file mode 100644 index 00000000..14ed7ed7 --- /dev/null +++ b/subworkflows/local/annotate_svs/main.nf @@ -0,0 +1,62 @@ +include { SVDB_QUERY } from '../../../modules/nf-core/svdb/query/main' +include { ENSEMBLVEP_VEP as ENSEMBLVEP_SV } from '../../../modules/nf-core/ensemblvep/vep/main' +include { TABIX_TABIX as TABIX_ENSEMBLVEP_SV } from '../../../modules/nf-core/tabix/tabix/main' + +workflow ANNOTATE_SVS { + + take: + ch_vcf // channel: [mandatory] [ val(meta), path(vcf) ] + ch_fasta // channel: [mandatory] [ val(meta), path(fasta) ] + ch_sv_dbs // channel: [mandatory] [ val(meta), path(csv) ] + ch_vep_cache // channel: [mandatory] [ path(cache) ] + val_vep_cache_version // string: [mandatory] default: 110 + ch_vep_extra_files // channel: [mandatory] [ path(files) ] + + main: + ch_versions = Channel.empty() + + ch_sv_dbs + .map { meta, csv -> csv } + .splitCsv ( header:true ) + .multiMap { row -> + vcf_dbs: row.filename + in_frqs: row.in_freq_info_key + in_occs: row.in_allele_count_info_key + out_frqs: row.out_freq_info_key + out_occs: row.out_allele_count_info_key + } + .set { ch_svdb_in } + + // Annotate with SVDB VCF "databases" + SVDB_QUERY ( + ch_vcf, + ch_svdb_in.in_occs.toList(), + ch_svdb_in.in_frqs.toList(), + ch_svdb_in.out_occs.toList(), + ch_svdb_in.out_frqs.toList(), + ch_svdb_in.vcf_dbs.toList(), + [] + ) + ch_versions = ch_versions.mix(SVDB_QUERY.out.versions) + + ENSEMBLVEP_SV ( + SVDB_QUERY.out.vcf.map { meta, vcf -> [ meta, vcf, [] ] }, + "GRCh38", + "homo_sapiens", + val_vep_cache_version, + ch_vep_cache, + ch_fasta, + ch_vep_extra_files + ) + ch_versions = ch_versions.mix(ENSEMBLVEP_SV.out.versions) + + TABIX_ENSEMBLVEP_SV ( + ENSEMBLVEP_SV.out.vcf + ) + ch_versions = ch_versions.mix(TABIX_ENSEMBLVEP_SV.out.versions) + + emit: + vcf = ENSEMBLVEP_SV.out.vcf // channel: [ val(meta), path(vcf) ] + tbi = TABIX_ENSEMBLVEP_SV.out.tbi // channel: [ val(meta), path(tbi) ] + versions = ch_versions // channel: [ path(versions.yml) ] +} diff --git a/subworkflows/local/annotate_svs/tests/main.nf.test b/subworkflows/local/annotate_svs/tests/main.nf.test new file mode 100644 index 00000000..cab1851b --- /dev/null +++ b/subworkflows/local/annotate_svs/tests/main.nf.test @@ -0,0 +1,115 @@ +nextflow_workflow { + + name "Test Workflow ANNOTATE_SVS" + script "../" + workflow "ANNOTATE_SVS" + config "./nextflow.config" + + setup { + run("GUNZIP") { + script "../../../../modules/nf-core/gunzip/main.nf" + process { + """ + input[0] = [ + [ id:'hg38' ], + file(params.pipelines_testdata_base_path + 'reference/hg38.test.fa.gz', checkIfExists: true) + ] + """ + } + } + + run("SEVERUS") { + script "../../../../modules/nf-core/severus/main" + process { + """ + input[0] = [ + [ id:'test', single_end:false, project: 'project' ], // meta map + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam', checkIfExists: true), + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true), + [], + [], + [] + ] + input[1] = [[],[]] + """ + } + } + + run("UNTAR") { + script "../../../../modules/nf-core/untar/main.nf" + process { + """ + input[0] = [ + [ id: 'vep_cache' ], + file(params.pipelines_testdata_base_path + 'reference/vep_cache_test_data.tar.gz', checkIfExists:true) + ] + """ + } + } + + } + + test("severus, fasta, svdb, vep_cache, '110', vep_plugins") { + + when { + workflow { + """ + input[0] = SEVERUS.out.all_vcf + input[1] = GUNZIP.out.gunzip + input[2] = Channel.of([ + [ id: 'svdb_dbs' ], + file(params.pipelines_testdata_base_path + 'testdata/svdb_dbs.csv', checkIfExists: true) + ]) + input[3] = UNTAR.out.untar.map { meta, cache -> cache } + input[4] = Channel.value('110') + input[5] = Channel.of([ + file(params.pipelines_testdata_base_path + 'reference/vep_plugin_files.csv', checkIfExists: true) + ]) + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot( + workflow.out.versions, + path(workflow.out.vcf.get(0).get(1)).vcf.variantsMD5, + file(workflow.out.tbi.get(0).get(1)).name + ).match() } + ) + } + + } + + test("severus, fasta, svdb, vep_cache, '110', vep_plugins -stub") { + + options "-stub" + + when { + workflow { + """ + input[0] = SEVERUS.out.all_vcf + input[1] = GUNZIP.out.gunzip + input[2] = Channel.of([ + [ id: 'svdb_dbs' ], + file(params.pipelines_testdata_base_path + 'testdata/svdb_dbs.csv', checkIfExists: true) + ]) + input[3] = UNTAR.out.untar.map { meta, cache -> cache } + input[4] = Channel.value('110') + input[5] = Channel.of([ + file(params.pipelines_testdata_base_path + 'reference/vep_plugin_files.csv', checkIfExists: true) + ]) + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out.versions).match() } + ) + } + + } +} diff --git a/subworkflows/local/annotate_svs/tests/main.nf.test.snap b/subworkflows/local/annotate_svs/tests/main.nf.test.snap new file mode 100644 index 00000000..0e7c747d --- /dev/null +++ b/subworkflows/local/annotate_svs/tests/main.nf.test.snap @@ -0,0 +1,32 @@ +{ + "severus, fasta, svdb, vep_cache, '110', vep_plugins -stub": { + "content": [ + [ + "versions.yml:md5,84c59e3a0a183b01a21620b16ee9ca4d", + "versions.yml:md5,8b626b9e41c9e6de6edc8f94e0e75aed", + "versions.yml:md5,cb83982d3231b281882f4ddc478d93ae" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-11T10:47:43.954466231" + }, + "severus, fasta, svdb, vep_cache, '110', vep_plugins": { + "content": [ + [ + "versions.yml:md5,84c59e3a0a183b01a21620b16ee9ca4d", + "versions.yml:md5,8b626b9e41c9e6de6edc8f94e0e75aed", + "versions.yml:md5,cb83982d3231b281882f4ddc478d93ae" + ], + "28e9be031273d5e4a94a8654da6e56ed", + "test_svs_annotated.vcf.gz.tbi" + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-11T10:47:32.194191605" + } +} \ No newline at end of file diff --git a/subworkflows/local/annotate_svs/tests/nextflow.config b/subworkflows/local/annotate_svs/tests/nextflow.config new file mode 100644 index 00000000..862966e9 --- /dev/null +++ b/subworkflows/local/annotate_svs/tests/nextflow.config @@ -0,0 +1,14 @@ +process { + + withName: 'UNTAR' { + ext.prefix = { "${name}".contains('merged') ? './vep_cache/homo_sapiens_merged/' : './vep_cache/homo_sapiens/' } + } + + withName: 'ANNOTATE_SVS:ENSEMBLVEP_SV' { + ext.args = { [ + '--offline', + '--vcf', + '--compress_output bgzip' + ].join(' ') } + } +} diff --git a/subworkflows/local/snv_annotation/main.nf b/subworkflows/local/snv_annotation/main.nf index 1bcc22e7..82fd3695 100644 --- a/subworkflows/local/snv_annotation/main.nf +++ b/subworkflows/local/snv_annotation/main.nf @@ -1,8 +1,8 @@ include { ANNOTATE_CADD } from '../annotate_cadd/main' include { ECHTVAR_ANNO } from '../../../modules/local/echtvar/anno/main' include { BCFTOOLS_FILLTAGS as BCFTOOLS_FILLTAGS_ANNO } from '../../../modules/local/bcftools/filltags/main' -include { ENSEMBLVEP_VEP } from '../../../modules/nf-core/ensemblvep/vep/main' -include { TABIX_TABIX as TABIX_VEP } from '../../../modules/nf-core/tabix/tabix/main' +include { ENSEMBLVEP_VEP as ENSEMBLVEP_SNV } from '../../../modules/nf-core/ensemblvep/vep/main' +include { TABIX_TABIX as TABIX_ENSEMBLVEP_SNV } from '../../../modules/nf-core/tabix/tabix/main' workflow SNV_ANNOTATION { @@ -53,7 +53,7 @@ workflow SNV_ANNOTATION { } - ENSEMBLVEP_VEP ( + ENSEMBLVEP_SNV ( ch_vep_in, "GRCh38", "homo_sapiens", @@ -62,13 +62,13 @@ workflow SNV_ANNOTATION { ch_fasta, ch_vep_extra_files ) - ch_versions = ch_versions.mix(ENSEMBLVEP_VEP.out.versions) + ch_versions = ch_versions.mix(ENSEMBLVEP_SNV.out.versions) - TABIX_VEP ( ENSEMBLVEP_VEP.out.vcf ) - ch_versions = ch_versions.mix(TABIX_VEP.out.versions) + TABIX_ENSEMBLVEP_SNV ( ENSEMBLVEP_SNV.out.vcf ) + ch_versions = ch_versions.mix(TABIX_ENSEMBLVEP_SNV.out.versions) emit: - vcf = ENSEMBLVEP_VEP.out.vcf - tbi = TABIX_VEP.out.tbi + vcf = ENSEMBLVEP_SNV.out.vcf + tbi = TABIX_ENSEMBLVEP_SNV.out.tbi versions = ch_versions } diff --git a/subworkflows/local/snv_annotation/tests/main.nf.test.snap b/subworkflows/local/snv_annotation/tests/main.nf.test.snap index 43fa52a6..be278f54 100644 --- a/subworkflows/local/snv_annotation/tests/main.nf.test.snap +++ b/subworkflows/local/snv_annotation/tests/main.nf.test.snap @@ -2,10 +2,10 @@ "bcf, db, vep_cache, '110', -stub": { "content": [ [ + "versions.yml:md5,1c67249781a135b3abbc3c7e63af4d0b", "versions.yml:md5,503122d4650f6a8a39b4e810063d6c22", - "versions.yml:md5,992301857689684643c42695c032a7f2", - "versions.yml:md5,a07924ee4ebc2d4de5bb7ef897ddc30c", - "versions.yml:md5,c0e55e36a31ed71acf25702b7d059533" + "versions.yml:md5,c0e55e36a31ed71acf25702b7d059533", + "versions.yml:md5,f533675b4401f25d7dcfc9f63abeb619" ], [ [ @@ -32,15 +32,15 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-09-19T10:33:26.596869783" + "timestamp": "2024-10-07T14:29:17.858999735" }, "bcf, db, vep_cache, '110'": { "content": [ [ + "versions.yml:md5,1c67249781a135b3abbc3c7e63af4d0b", "versions.yml:md5,503122d4650f6a8a39b4e810063d6c22", - "versions.yml:md5,992301857689684643c42695c032a7f2", - "versions.yml:md5,a07924ee4ebc2d4de5bb7ef897ddc30c", - "versions.yml:md5,c0e55e36a31ed71acf25702b7d059533" + "versions.yml:md5,c0e55e36a31ed71acf25702b7d059533", + "versions.yml:md5,f533675b4401f25d7dcfc9f63abeb619" ], "test_data.bed.vcf.gz.tbi", "ad2f3def07bee1f4bab9cfe456dada3e", diff --git a/subworkflows/local/snv_annotation/tests/nextflow.config b/subworkflows/local/snv_annotation/tests/nextflow.config index 791380d6..746f9c59 100644 --- a/subworkflows/local/snv_annotation/tests/nextflow.config +++ b/subworkflows/local/snv_annotation/tests/nextflow.config @@ -65,7 +65,7 @@ process { ext.prefix = { "${name}".contains('merged') ? './vep_cache/homo_sapiens_merged/' : './vep_cache/homo_sapiens/' } } - withName: 'SNV_ANNOTATION:ENSEMBLVEP_VEP' { + withName: 'SNV_ANNOTATION:ENSEMBLVEP_SNV' { ext.args = { [ '--offline', '--vcf', diff --git a/subworkflows/local/utils_nfcore_nallo_pipeline/main.nf b/subworkflows/local/utils_nfcore_nallo_pipeline/main.nf index 5c4bb187..d40c8791 100644 --- a/subworkflows/local/utils_nfcore_nallo_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_nallo_pipeline/main.nf @@ -36,6 +36,7 @@ def workflowSkips = [ mapping : "skip_mapping_wf", snv_calling : "skip_short_variant_calling", snv_annotation : "skip_snv_annotation", + sv_annotation : "skip_sv_annotation", call_paralogs : "skip_call_paralogs", cnv_calling : "skip_cnv_calling", phasing : "skip_phasing_wf", @@ -54,6 +55,7 @@ def workflowDependencies = [ call_paralogs : ["mapping"], snv_calling : ["mapping"], qc : ["mapping"], + sv_annotation : ["mapping"], snv_annotation : ["mapping", "snv_calling"], cnv_calling : ["mapping", "snv_calling"], phasing : ["mapping", "snv_calling"], @@ -71,6 +73,7 @@ def fileDependencies = [ assembly : ["fasta", "par_regions"], // The assembly workflow should be split into two - assembly and variant calling (requires ref) snv_calling : ["fasta", "par_regions"], snv_annotation : ["snp_db", "vep_cache", "vep_plugin_files", "variant_consequences_snv"], + sv_annotation : ["svdb_dbs", "vep_cache", "vep_plugin_files"], cnv_calling : ["hificnv_xy", "hificnv_xx", "hificnv_exclude"], rank_variants : ["reduced_penetrance", "score_config_snv"], repeat_calling : ["trgt_repeats"], @@ -86,6 +89,7 @@ def parameterStatus = [ skip_repeat_calling : params.skip_repeat_calling, skip_repeat_annotation : params.skip_repeat_annotation, skip_snv_annotation : params.skip_snv_annotation, + skip_sv_annotation : params.skip_sv_annotation, skip_call_paralogs : params.skip_call_paralogs, skip_cnv_calling : params.skip_cnv_calling, skip_mapping_wf : params.skip_mapping_wf, @@ -95,6 +99,7 @@ def parameterStatus = [ files: [ par_regions : params.par_regions, snp_db : params.snp_db, + svdb_dbs : params.svdb_dbs, somalier_sites : params.somalier_sites, vep_cache : params.vep_cache, hificnv_xy : params.hificnv_xy, @@ -360,6 +365,12 @@ def toolCitationText() { "GLnexus (Yun et al. 2021)", ] } + if (!params.skip_sv_annotation) { + citation_text = citation_text + [ + "VEP (McLaren et al. 2016)", + "SVDB (Eisfeldt et al. 2017)", + ] + } if (!params.skip_snv_annotation) { citation_text = citation_text + [ "CADD (Rentzsch et al. 2019, Rentzsch et al. 2021)", diff --git a/tests/main.nf.test b/tests/main.nf.test index 9f5fc3e5..35fac2da 100644 --- a/tests/main.nf.test +++ b/tests/main.nf.test @@ -11,7 +11,7 @@ nextflow_pipeline { when { params { - pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/1f4e062926fc10f70a38e917e5771edb333e89bf/' + pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/7be7114cb132be8cae9343f225bcf42ec11ecc1b/' input = params.pipelines_testdata_base_path + 'testdata/samplesheet.csv' outdir = "$outputDir" } @@ -78,8 +78,8 @@ nextflow_pipeline { { assert new File("$outputDir/repeat_calling/trgt/multi_sample/test/test.vcf.gz.tbi").exists() }, { assert new File("$outputDir/snvs/multi_sample/test/test_snv_annotated_ranked.vcf.gz").exists() }, { assert new File("$outputDir/snvs/multi_sample/test/test_snv_annotated_ranked.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/svs/multi_sample/test/test_svs.vcf.gz").exists() }, - { assert new File("$outputDir/svs/multi_sample/test/test_svs.vcf.gz.tbi").exists() }, + { assert new File("$outputDir/svs/multi_sample/test/test_svs_annotated.vcf.gz").exists() }, + { assert new File("$outputDir/svs/multi_sample/test/test_svs_annotated.vcf.gz.tbi").exists() }, // Assert exists HG002_Revio { assert new File("$outputDir/aligned_reads/HG002_Revio/HG002_Revio_haplotagged.bam.bai").exists() }, { assert new File("$outputDir/assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap1.bam.bai").exists() }, @@ -110,8 +110,8 @@ nextflow_pipeline { { assert new File("$outputDir/repeat_calling/trgt/single_sample/HG002_Revio/HG002_Revio_spanning_sorted.bam.bai").exists() }, { assert new File("$outputDir/snvs/single_sample/HG002_Revio/HG002_Revio_snv_annotated_ranked.vcf.gz").exists() }, { assert new File("$outputDir/snvs/single_sample/HG002_Revio/HG002_Revio_snv_annotated_ranked.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/svs/single_sample/HG002_Revio/HG002_Revio_severus.vcf.gz").exists() }, - { assert new File("$outputDir/svs/single_sample/HG002_Revio/HG002_Revio_severus.vcf.gz.tbi").exists() } + { assert new File("$outputDir/svs/single_sample/HG002_Revio/HG002_Revio_svs_annotated.vcf.gz").exists() }, + { assert new File("$outputDir/svs/single_sample/HG002_Revio/HG002_Revio_svs_annotated.vcf.gz.tbi").exists() } ) } } @@ -121,7 +121,7 @@ nextflow_pipeline { when { params { - pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/1f4e062926fc10f70a38e917e5771edb333e89bf/' + pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/7be7114cb132be8cae9343f225bcf42ec11ecc1b/' input = params.pipelines_testdata_base_path + 'testdata/samplesheet_multisample_bam.csv' outdir = "$outputDir" parallel_snv = 2 @@ -226,8 +226,8 @@ nextflow_pipeline { { assert new File("$outputDir/multiqc/multiqc_data/multiqc_software_versions.txt").exists() }, { assert new File("$outputDir/snvs/multi_sample/test/test_snv_annotated_ranked.vcf.gz").exists() }, { assert new File("$outputDir/snvs/multi_sample/test/test_snv_annotated_ranked.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/svs/multi_sample/test/test_svs.vcf.gz").exists() }, - { assert new File("$outputDir/svs/multi_sample/test/test_svs.vcf.gz.tbi").exists() }, + { assert new File("$outputDir/svs/multi_sample/test/test_svs_annotated.vcf.gz").exists() }, + { assert new File("$outputDir/svs/multi_sample/test/test_svs_annotated.vcf.gz.tbi").exists() }, { assert new File("$outputDir/repeat_calling/trgt/multi_sample/test/test.vcf.gz").exists() }, { assert new File("$outputDir/repeat_calling/trgt/multi_sample/test/test.vcf.gz.tbi").exists() }, // Assert exists HG002_Revio_A @@ -261,8 +261,8 @@ nextflow_pipeline { { assert new File("$outputDir/repeat_calling/trgt/single_sample/HG002_Revio_A/HG002_Revio_A_spanning_sorted.bam.bai").exists() }, { assert new File("$outputDir/snvs/single_sample/HG002_Revio_A/HG002_Revio_A_snv_annotated_ranked.vcf.gz").exists() }, { assert new File("$outputDir/snvs/single_sample/HG002_Revio_A/HG002_Revio_A_snv_annotated_ranked.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/svs/single_sample/HG002_Revio_A/HG002_Revio_A_severus.vcf.gz").exists() }, - { assert new File("$outputDir/svs/single_sample/HG002_Revio_A/HG002_Revio_A_severus.vcf.gz.tbi").exists() }, + { assert new File("$outputDir/svs/single_sample/HG002_Revio_A/HG002_Revio_A_svs_annotated.vcf.gz").exists() }, + { assert new File("$outputDir/svs/single_sample/HG002_Revio_A/HG002_Revio_A_svs_annotated.vcf.gz.tbi").exists() }, // Assert exists HG002_Revio_B { assert new File("$outputDir/aligned_reads/HG002_Revio_B/HG002_Revio_B_haplotagged.bam.bai").exists() }, { assert new File("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap1.bam.bai").exists() }, @@ -294,8 +294,8 @@ nextflow_pipeline { { assert new File("$outputDir/repeat_calling/trgt/single_sample/HG002_Revio_B/HG002_Revio_B_spanning_sorted.bam.bai").exists() }, { assert new File("$outputDir/snvs/single_sample/HG002_Revio_B/HG002_Revio_B_snv_annotated_ranked.vcf.gz").exists() }, { assert new File("$outputDir/snvs/single_sample/HG002_Revio_B/HG002_Revio_B_snv_annotated_ranked.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/svs/single_sample/HG002_Revio_B/HG002_Revio_B_severus.vcf.gz").exists() }, - { assert new File("$outputDir/svs/single_sample/HG002_Revio_B/HG002_Revio_B_severus.vcf.gz.tbi").exists() } + { assert new File("$outputDir/svs/single_sample/HG002_Revio_B/HG002_Revio_B_svs_annotated.vcf.gz").exists() }, + { assert new File("$outputDir/svs/single_sample/HG002_Revio_B/HG002_Revio_B_svs_annotated.vcf.gz.tbi").exists() } ) } } @@ -305,7 +305,7 @@ nextflow_pipeline { when { params { - pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/1f4e062926fc10f70a38e917e5771edb333e89bf/' + pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/7be7114cb132be8cae9343f225bcf42ec11ecc1b/' input = params.pipelines_testdata_base_path + 'testdata/samplesheet_multisample_bam_ont.csv' outdir = "$outputDir" preset = 'ONT_R10' @@ -374,8 +374,8 @@ nextflow_pipeline { { assert new File("$outputDir/multiqc/multiqc_data/multiqc_software_versions.txt").exists() }, { assert new File("$outputDir/snvs/multi_sample/test/test_snv_annotated_ranked.vcf.gz").exists() }, { assert new File("$outputDir/snvs/multi_sample/test/test_snv_annotated_ranked.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/svs/multi_sample/test/test_svs.vcf.gz").exists() }, - { assert new File("$outputDir/svs/multi_sample/test/test_svs.vcf.gz.tbi").exists() }, + { assert new File("$outputDir/svs/multi_sample/test/test_svs_annotated.vcf.gz").exists() }, + { assert new File("$outputDir/svs/multi_sample/test/test_svs_annotated.vcf.gz.tbi").exists() }, // Assert exists HG002_ONT_A { assert new File("$outputDir/aligned_reads/HG002_ONT_A/HG002_ONT_A_haplotagged.bam.bai").exists() }, { assert new File("$outputDir/cnv_calling/hificnv/HG002_ONT_A/HG002_ONT_A.log").exists() }, @@ -400,8 +400,8 @@ nextflow_pipeline { { assert new File("$outputDir/qc/fastqc/HG002_ONT_A/HG002_ONT_A_fastqc.zip").exists() }, { assert new File("$outputDir/snvs/single_sample/HG002_ONT_A/HG002_ONT_A_snv_annotated_ranked.vcf.gz").exists() }, { assert new File("$outputDir/snvs/single_sample/HG002_ONT_A/HG002_ONT_A_snv_annotated_ranked.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/svs/single_sample/HG002_ONT_A/HG002_ONT_A_severus.vcf.gz").exists() }, - { assert new File("$outputDir/svs/single_sample/HG002_ONT_A/HG002_ONT_A_severus.vcf.gz.tbi").exists() }, + { assert new File("$outputDir/svs/single_sample/HG002_ONT_A/HG002_ONT_A_svs_annotated.vcf.gz").exists() }, + { assert new File("$outputDir/svs/single_sample/HG002_ONT_A/HG002_ONT_A_svs_annotated.vcf.gz.tbi").exists() }, // Assert exists HG002_ONT_B { assert new File("$outputDir/aligned_reads/HG002_ONT_B/HG002_ONT_B_haplotagged.bam.bai").exists() }, { assert new File("$outputDir/cnv_calling/hificnv/HG002_ONT_B/HG002_ONT_B.log").exists() }, @@ -426,8 +426,8 @@ nextflow_pipeline { { assert new File("$outputDir/qc/fastqc/HG002_ONT_B/HG002_ONT_B_fastqc.zip").exists() }, { assert new File("$outputDir/snvs/single_sample/HG002_ONT_B/HG002_ONT_B_snv_annotated_ranked.vcf.gz").exists() }, { assert new File("$outputDir/snvs/single_sample/HG002_ONT_B/HG002_ONT_B_snv_annotated_ranked.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/svs/single_sample/HG002_ONT_B/HG002_ONT_B_severus.vcf.gz").exists() }, - { assert new File("$outputDir/svs/single_sample/HG002_ONT_B/HG002_ONT_B_severus.vcf.gz.tbi").exists() } + { assert new File("$outputDir/svs/single_sample/HG002_ONT_B/HG002_ONT_B_svs_annotated.vcf.gz").exists() }, + { assert new File("$outputDir/svs/single_sample/HG002_ONT_B/HG002_ONT_B_svs_annotated.vcf.gz.tbi").exists() } ) } } diff --git a/tests/nextflow.config b/tests/nextflow.config index 5d15b433..f0408182 100644 --- a/tests/nextflow.config +++ b/tests/nextflow.config @@ -3,16 +3,13 @@ params { modules_testdata_base_path = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/' // Base directory for genomic-medicine-sweden/nallo test data - pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/1f4e062926fc10f70a38e917e5771edb333e89bf/' + pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/7be7114cb132be8cae9343f225bcf42ec11ecc1b/' - max_cpus = 4 - max_memory = '15.GB' - max_time = '6.h' } // Impose same minimum Nextflow version as the pipeline for testing manifest { - nextflowVersion = '!>=23.04.0' + nextflowVersion = '!>=24.04.2' } // Disable all Nextflow reporting options @@ -22,25 +19,25 @@ trace { enabled = false } dag { enabled = false } process { - + resourceLimits = [ + cpus: 4, + memory: '15.GB', + time: '1.h' + ] withLabel: 'process_high' { cpus = 4 memory = '15.GB' } - withLabel: 'process_medium' { cpus = 2 memory = '7.GB' } - withLabel: 'process_low' { cpus = 1 memory = '3.GB' } - withLabel: 'process_single' { cpus = 1 memory = '3.GB' } - } diff --git a/workflows/nallo.nf b/workflows/nallo.nf index 1c4d399a..7a86938e 100644 --- a/workflows/nallo.nf +++ b/workflows/nallo.nf @@ -7,6 +7,7 @@ include { samplesheetToList } from 'plugin/nf-schema' */ include { ANNOTATE_CSQ_PLI as ANN_CSQ_PLI_SNV } from '../subworkflows/local/annotate_consequence_pli' +include { ANNOTATE_SVS } from '../subworkflows/local/annotate_svs' include { ANNOTATE_REPEAT_EXPANSIONS } from '../subworkflows/local/annotate_repeat_expansions' include { ASSEMBLY } from '../subworkflows/local/genome_assembly' include { ASSEMBLY_VARIANT_CALLING } from '../subworkflows/local/assembly_variant_calling' @@ -32,23 +33,24 @@ include { SNV_ANNOTATION } from '../subworkflows/local/ */ // local -include { CREATE_PEDIGREE_FILE as SAMPLESHEET_PED } from '../modules/local/create_pedigree_file/main' -include { CREATE_PEDIGREE_FILE as SOMALIER_PED } from '../modules/local/create_pedigree_file/main' -include { ECHTVAR_ENCODE } from '../modules/local/echtvar/encode/main' -include { SAMTOOLS_MERGE } from '../modules/nf-core/samtools/merge/main' +include { CREATE_PEDIGREE_FILE as SAMPLESHEET_PED } from '../modules/local/create_pedigree_file/main' +include { CREATE_PEDIGREE_FILE as SOMALIER_PED } from '../modules/local/create_pedigree_file/main' +include { ECHTVAR_ENCODE } from '../modules/local/echtvar/encode/main' +include { SAMTOOLS_MERGE } from '../modules/nf-core/samtools/merge/main' // nf-core -include { BCFTOOLS_CONCAT } from '../modules/nf-core/bcftools/concat/main' -include { BCFTOOLS_PLUGINSPLIT } from '../modules/nf-core/bcftools/pluginsplit/main' -include { BCFTOOLS_SORT } from '../modules/nf-core/bcftools/sort/main' -include { BCFTOOLS_STATS } from '../modules/nf-core/bcftools/stats/main' -include { MINIMAP2_ALIGN } from '../modules/nf-core/minimap2/align/main' -include { MULTIQC } from '../modules/nf-core/multiqc/main' -include { SPLITUBAM } from '../modules/nf-core/splitubam/main' -include { paramsSummaryMap } from 'plugin/nf-schema' -include { paramsSummaryMultiqc } from '../subworkflows/nf-core/utils_nfcore_pipeline' -include { softwareVersionsToYAML } from '../subworkflows/nf-core/utils_nfcore_pipeline' -include { methodsDescriptionText } from '../subworkflows/local/utils_nfcore_nallo_pipeline' +include { BCFTOOLS_CONCAT } from '../modules/nf-core/bcftools/concat/main' +include { BCFTOOLS_PLUGINSPLIT as BCFTOOLS_PLUGINSPLIT_SNVS } from '../modules/nf-core/bcftools/pluginsplit/main' +include { BCFTOOLS_PLUGINSPLIT as BCFTOOLS_PLUGINSPLIT_SVS } from '../modules/nf-core/bcftools/pluginsplit/main' +include { BCFTOOLS_SORT } from '../modules/nf-core/bcftools/sort/main' +include { BCFTOOLS_STATS } from '../modules/nf-core/bcftools/stats/main' +include { MINIMAP2_ALIGN } from '../modules/nf-core/minimap2/align/main' +include { MULTIQC } from '../modules/nf-core/multiqc/main' +include { SPLITUBAM } from '../modules/nf-core/splitubam/main' +include { paramsSummaryMap } from 'plugin/nf-schema' +include { paramsSummaryMultiqc } from '../subworkflows/nf-core/utils_nfcore_pipeline' +include { softwareVersionsToYAML } from '../subworkflows/nf-core/utils_nfcore_pipeline' +include { methodsDescriptionText } from '../subworkflows/local/utils_nfcore_nallo_pipeline' /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -104,6 +106,8 @@ workflow NALLO { : Channel.value([]) ch_somalier_sites = params.somalier_sites ? Channel.fromPath(params.somalier_sites).map { [ it.simpleName, it ] }.collect() : '' + ch_svdb_dbs = params.svdb_dbs ? Channel.fromPath(params.svdb_dbs).map { [ it.simpleName, it ] }.collect() + : '' // Check parameter that doesn't conform to schema validation here if (params.phaser.matches('hiphase') && params.preset == 'ONT_R10') { error "The HiPhase license only permits analysis of data from PacBio. For details see: https://github.com/PacificBiosciences/HiPhase/blob/main/LICENSE.md" } @@ -311,6 +315,37 @@ workflow NALLO { ) ch_versions = ch_versions.mix(CALL_SVS.out.versions) + CALL_SVS.out.ch_multisample_vcf + .join( CALL_SVS.out.ch_multisample_tbi ) + .set { ch_split_svs_in } + // + // Annotate structural variants + // + if(!params.skip_sv_annotation) { + ANNOTATE_SVS ( + CALL_SVS.out.ch_multisample_vcf, + fasta, + ch_svdb_dbs, + ch_vep_cache, + params.vep_cache_version, + ch_vep_extra_files + ) + + ANNOTATE_SVS.out.vcf + .join( ANNOTATE_SVS.out.tbi ) + .set { ch_split_svs_in } + } + + // Split the multisample SV VCF to also publish an (annotated) VCF per sample + BCFTOOLS_PLUGINSPLIT_SVS ( + ch_split_svs_in, + [], + [], + [], + [] + ) + ch_versions = ch_versions.mix(BCFTOOLS_PLUGINSPLIT_SVS.out.versions) + // // Call (and annotate and rank) SNVs // @@ -423,10 +458,10 @@ workflow NALLO { ch_versions = ch_versions.mix(ECHTVAR_ENCODE.out.versions) // Split multisample VCF to also publish a VCF per sample - BCFTOOLS_PLUGINSPLIT ( BCFTOOLS_SORT.out.vcf.join(BCFTOOLS_SORT.out.tbi ), [], [], [], [] ) - ch_versions = ch_versions.mix(BCFTOOLS_PLUGINSPLIT.out.versions) + BCFTOOLS_PLUGINSPLIT_SNVS ( BCFTOOLS_SORT.out.vcf.join(BCFTOOLS_SORT.out.tbi ), [], [], [], [] ) + ch_versions = ch_versions.mix(BCFTOOLS_PLUGINSPLIT_SNVS.out.versions) - BCFTOOLS_PLUGINSPLIT.out.vcf + BCFTOOLS_PLUGINSPLIT_SNVS.out.vcf .transpose() .map { meta, vcf -> [ meta, vcf, [] ] } .set { ch_bcftools_stats_snv_in } From 1190ab94bc7eac375f67d2e50c368a62bfae47e5 Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Mon, 14 Oct 2024 09:19:17 +0200 Subject: [PATCH 034/106] Update metro map (#423) --- CHANGELOG.md | 1 + docs/images/nallo_metromap.png | Bin 233999 -> 496790 bytes 2 files changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index bc3844c7..56bd3ed4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -51,6 +51,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#416](https://github.com/genomic-medicine-sweden/nallo/pull/416) - Updated WhatsHap to 2.3 and added the `--use-supplementary` flag to use supplementary reads for phasing by default. Changed modules to use biocontainers instead of custom containers. ([#296](https://github.com/genomic-medicine-sweden/nallo/issues/296)) - [#417](https://github.com/genomic-medicine-sweden/nallo/pull/417) - Updated SNV annotation tests to use correct configuration, and snapshot the md5sum, and summary of the variants - [#422](https://github.com/genomic-medicine-sweden/nallo/pull/422) - Updated nf-core/tools template to v3.0.1 +- [#423](https://github.com/genomic-medicine-sweden/nallo/pull/423) - Updated metro map ### `Removed` diff --git a/docs/images/nallo_metromap.png b/docs/images/nallo_metromap.png index 887a01a64a76b9f31a5059c5b36ddcb280af054f..9cf5a106d1b5e0131c002b9bb2a9810ac81628ba 100644 GIT binary patch literal 496790 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

    b4QCPSoI->aUA{j_N;BIGIIrLg4S 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%0Asm1Kp8@Y$-8!9I=F%M&h-UA&^+La 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 z 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ǎ(KOfwgj40s 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%0D{?GH;d- z_TrvU=D`EQ=gA5J%q9bjV0tA~FtUwF%V)^vg%(XXp4eZq%$FQzy`4{I8alV@OtL2k zHRphFVAiS}F?&ma+(wqyWvVw_G3if|V%p*2W8NVuyg=Flo2kdpqr)*ATlAM8EsG9m z)`G+w^d-Xc`R?~U5jt^_L(%lDU&X_gkd=G7qv04Hi7hhi`x+g$H&Shdg(@Tx>iz8r zdEvu)(&!<3kI}CWt0ZnAh6*7O5|95Gu@*e=6{Wb0-P^iTeF*=CFN4zh1U@U!4Tcv% zuol&T1BIM6Vz4gkzQgMRfYjV_xS6F?;}v4oAMp!G5Wft#r`%p$a0a^YeN3JRN2-bx zYxV3L9r5Wk7k?A)`N*ZImznmJ+ha$eg~w*wgDQB166o9l{cpEFtdRe$FkGW16(4aJ zwwSNl8x5oqh=|07A0QB!C&7Q{IjO*cAQlJi7vyIlXMVhklWzh31JuRDs$J~I7I2Xc zHedCO9)zq%zAlHpA$?Ddenaljk)Mw#l$?fvGO%i>yZh%8s~2uFhwgjOZ8rZYjHZoVB&r5XBYQhD0{i0`yDNc@ zsHo~0HpI9XT9#h75HOe zEo-!+a@C~H(@O}(%T;QM8mio;hE(I4Jq3a9>Hj~Y75ijx%BDrZhuE-S5O^e6{j2uO zPS3(vp^by$#rFuXDz)TZd+Ln#F49^}TbBsy>I$Z6k24`agGvfr)PrkoO*|Ne40het zNH*Iv7E9d+m194jh~C|EDN3%Za9G68%9@&TlBe&pe9n$AHa3(>uVW}?wCFf zTY+917yc0#8+j@~8rt^)$Q0;B)VVKIt9WBO$k3%EqF<%L=Z^VtA5O7dp-xmj`!V8} z8X&f$rkaY*T3uqoFN#)Mp+IjBpObSvSr@HFOwkJ`w2;a7b4^VRVPD_Xt2r_=a!GID zt)ZX=`MR=@Af&yMyV-im6cIsD1wm1Y+r1vZBS8I_&*7K{jIv2wm>tFWhAHzwHF4VxavXgq!()mb?`~!PRL0US1}0lgk+Z$}UB4AnmjR2DqSf z#6YgIF@RON=r8u?T)m3fb81Wq?Y8xA4}MZQI4X&?MOX zYO8I=K+&RULV1e;YGg|S?Rj-l5M$V4`ED=O$ z;D@F5KWOchB>+|~)!eMWi!aCjcDYXvp%4hq*61eFs@2hso;zja=sML|PyH!LU6u2= zRVP^Y=NQP{p(beuRUGphzbOXiX?xXhF>|wflOIX$FO4%4JU$`*2Iy%5`ZIu?38v;{ zYvx3HO*I1sFEO;Z$!$hSaMob(!8`QjHP3fi!12MShl6sPIzhLFTY_&;A)K3KUlS!m z1l9}1sIRfpk;6AuSsUCk_ARY0WSM$f130vFHhf-f*H|Rpm-fjLNE2>sBy~9#Wr+Ev zCy+-R+W7We~_|~igq}h0=vq_cE|AlvGpGC zRQCV>_-Wj67f}hBDIq%@5yCB{%u4o3A$#xLT@*q_3Rwx6r|f-{%tPpqIQGbPj5xOc z>pHqW_x*kR{@24paW2<*zhCqDTIWV`UXQ%z(#wJ*Y)L5Ff^9y(<%%*PIF|%apicV< zkk!o;aPg_#yGE5tF=Fmb%#|jh0^YNPKrjQT@}AF3Pr92vRFCS_pyZH8GxgumBlL8o z;ak-!=uMRI>T1aAfQn1cNNnz5_5mvw6`6NqYr{@@9ZKZ6y+!MWFfG)(8#77KZR1B@ zqh36O-JEE}=jxFR$i|Co7z8JeK7BAPSoUY+Uq9aE!#^JSB?N(}iba!gNBZx~}` zlF>O@eJw4qp6Im)?)|B8a+#1W4Z|TAsU$!u)EXD`yiuKaE%BSCI42-yrYo?*4nO$1 z$F%B`5})6yos9dUzMIToVLVsI$CG4QkZkDq|f@Qa8jCBrx zhms9VH~KDr+W&-h^vEsGLwxzpcgfPoULrx{;jC)~A1`nE#Q1?52NC!@Qq%CQPp)wt z*j`sg`LIkIHND5ZhwR%=FhXh|V=83wGKFRt)G<`{cKnr7AUvkaX<+#t6Mh}iArQ~V zp0)f;hb0TrlJ?>)*qmDiFvBL9><>2zMBI>HZFP}I0I>z(?AAX_Uu!gVo4q++lQ7Hd ztVrme?GnDW4{}gBz3-|EcG;Eyu8E_BN(0C-x2R%6#a;!!(El!Eg1KU_c)f?s?l|y^ zrtHTqs1bvcsurKiuvAGzF0ODqnVfVV?+QB#UJ>f!*U#<0I@QbQZ!*Zqr*;5U+#wV4 zX%4X4@0meigkEvy(hkHmP$Q6#TE>CTo4OdQyojq;D&WX_J`hHnk~H4e^Zu`<9mA5q zgW;BOX}ys2zVigX@BP~wh!fTL00PGt(VQPd8kybtic?13!j5wY0sH;1)Ll!cu+;&l zqTcO7RNAQoq?aJHPJtd0ni#`esWm9~Pn3ebwM|jdNyG%Vftxnt=4j6^K4XjAi8nH& z-p_#X&KAy{aPktALqbCv==cFWY?M6~pz|H=-Ksp6C zdG?j}&v(*;&Nak{u^jcPGR*E`+Pxb`?Euk1$YLbS6%*zZ!v_|XxuPH|{b?3mz8eTqczJUjF(iPmEs5+d(RJcD7R4Sxl>06ty$tTO zK!xM@4bD5aZ(peHw%a-j{tM+XszX+mmeE^zTNhfRb6fb_TwNhI`}t*gB(%@Dm>PFC z6SAep9naTB-&=fbe+hLGG1^Wa(2SW<+nr1VpJ#UNJ`fAyS$uso7{R7$WEuMvw=ej(_nuS65U>1_Y4?{dS>Cpxa!psNarD zFAC{N1&v~mwt>4lo9aJ0uz}Lv6WdnjmF0J!3sMAN&VX%(fn;w{29jxvC>#Nh0mZ`z zcI9d*WW50dN*`hhT@s)~D^N#$l(cDD-VLUhC?tzRF1v))VUB+j!L`3zeAFHrVG6Ck z|B>fxuBH_zU)s+zE6v7$Rl_l|{KB?bnF}VbgaGvJSp^qg>eAr{4@F&5^XH1^OXEM; zy51?SAmaAyP5?;FsHW(jA^Ttag?NRHuVI1a*?pV>I4Z=tpQ+J^6$ePjvCCt^OkBeM z_z9eGzVOt}_mXNCpqUG~0hnxPqe#N;`W$98UYFXv*L?2(t%uCs9b?^BFH7@hf<=0`yWA_M0OXi$URqZ(4qDGjccXFDIr~s=u!*UHfW|j_ZtO zFmz9WS%BkLz{j@j$v>BQe%Y3HV`$v#&cFk~HQ=DFn}oW96f!$&C%`h4kMpv&^qiiI z*s|KUvv4+iwrBZ7QFhJU{~3l$+eD|+4n;oKFb1ksN9tKZ*T}L5w>gYjcnHwSNxAnc zf2CZHnsmFom5=})iD}X6^Y&ebpa47NGF#csY2~ReRlQwe44DSk4#|`A?o_G$O+lP{SxwMsYz2&L)f1};a||FS z@ntig8jIiyKP=?U>e?iin^$^+@+0pYmBVbfpR&^*b@4=_iscyQi$%I;1QTgEO*xn$>)8%L>7#nX zads>$?Q;`}G|BnWQAF!`ZwbWHw3Vgtt9vz|-7(|4Yv{Ny+n@Y)HwT5FKkeBHX$U^v z>CdsluGg3J@rmSHX>5%p3GTd`yZ`rNcE7Elh9vhh@#Cn>(d#9sZ*EgnoI6{n!&fB` z+>|90Af9&?FvI}?!rIr{*O#^4b`0DyZ}C4jKECW+u901>nd~Xj5onPpojA>xJC)ku%M~GbS>+cuv)4yX_4alp@Om&5M$J-pOp#7lmK_qw%^+4$f zqVVY`A<0gd5&FdeSiyPxm>g8SK#gue58xlYUHfF|(+0x9y5ux9jopEF8IZsqer!0W zYnG=rKveUFc`jYhwD@8v2^a)XT0!AzS-S59dj_>Y{hA%Q;rhwRZudd~88FAEcZn~} z{gJ8Q3z*j%m*3fvlHl&8Be6_g$#T7qKu`=oJ(9Q6x^*;EXC?*uNSw)_nAZw^}QH=j! znek~3cpV%cAGiso%R^`vH#eCNDRGm+cU++m5dk+SrG+1p`INO8FjYYk_1o5aGfGp!%tpLoZHr$darfDvHpOoOAA}v}1bc=AGl3J5w zWSDUS4h^h5+Vo{Zcs}AeX>p~L;diPZ+{gkX`SiOa<{gL9$)WaH<*ox`73RO1VJo3a z;b7q`-^R9p9yrDcfj%iOz%buH{GZ=9C0j{a5dW!!kU}=K8CP0KA$uqd zF54qnP_pfJts_EN1;N&@cW=tF1%dnZlI-

    4QrA6x=Xy~{+%Xtw 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 From 0b52f4155609ff0e627fb851fd714ca0c1da19f1 Mon Sep 17 00:00:00 2001 From: Daniel Schmitz Date: Tue, 15 Oct 2024 13:48:09 +0200 Subject: [PATCH 035/106] Added --no-RG argument to minimap2 (#427) * Added --no-RG argument to minimap2 * Updated Changelog --- CHANGELOG.md | 1 + conf/modules/general.config | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 56bd3ed4..349678d3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -203,6 +203,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#252](https://github.com/genomic-medicine-sweden/nallo/pull/252) - Fixed duplicate SNVs in outputs when providing a BED-regions with overlapping regions - [#267](https://github.com/genomic-medicine-sweden/nallo/pull/267) - Fixed warning where `MODKIT_PILEUP_HAPLOTYPES` would be defined more than once - [#300](https://github.com/genomic-medicine-sweden/nallo/pull/300) - Fixed missing paraphase version +- [#427](https://github.com/genomic-medicine-sweden/nallo/pull/427) - Fixed duplicate RG tags in BAM files after mapping from uBAMs ([#426](https://github.com/genomic-medicine-sweden/nallo/issues/426)). ### Parameters diff --git a/conf/modules/general.config b/conf/modules/general.config index 12cbee2a..afed3397 100644 --- a/conf/modules/general.config +++ b/conf/modules/general.config @@ -148,7 +148,8 @@ process { ].join(' ') } ext.args3 = { [ '-x HP,PS', // phasing - '-x AS,CC,CG,CP,H1,H2,HI,H0,IH,MC,MD,MQ,NM,SA,TS' + '-x AS,CC,CG,CP,H1,H2,HI,H0,IH,MC,MD,MQ,NM,SA,TS', + '--no-RG' // read group information ].join(' ') } ext.args4 = '-T \\*' publishDir = [ From c736c8f6b294f21616d419cf5be8a6b989115cff Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Wed, 16 Oct 2024 15:52:58 +0200 Subject: [PATCH 036/106] Replace bcftools with SVDB for SV merging (#428) * Replace bcftools with svdb for SV merging * update snaps * Add citation * remove timestamp * remove second timestamp --- CHANGELOG.md | 2 + conf/modules/call_svs.config | 15 +- docs/output.md | 6 +- modules.json | 5 + modules/nf-core/svdb/merge/environment.yml | 8 + modules/nf-core/svdb/merge/main.nf | 62 ++ modules/nf-core/svdb/merge/meta.yml | 47 ++ modules/nf-core/svdb/merge/tests/main.nf.test | 111 ++++ .../svdb/merge/tests/main.nf.test.snap | 68 ++ modules/nf-core/svdb/merge/tests/tags.yml | 2 + subworkflows/local/call_svs/main.nf | 31 +- .../local/call_svs/tests/main.nf.test | 23 +- .../local/call_svs/tests/main.nf.test.snap | 609 +++++++++++++++--- .../local/call_svs/tests/nextflow.config | 17 +- .../local/utils_nfcore_nallo_pipeline/main.nf | 1 + 15 files changed, 889 insertions(+), 118 deletions(-) create mode 100644 modules/nf-core/svdb/merge/environment.yml create mode 100644 modules/nf-core/svdb/merge/main.nf create mode 100644 modules/nf-core/svdb/merge/meta.yml create mode 100644 modules/nf-core/svdb/merge/tests/main.nf.test create mode 100644 modules/nf-core/svdb/merge/tests/main.nf.test.snap create mode 100644 modules/nf-core/svdb/merge/tests/tags.yml diff --git a/CHANGELOG.md b/CHANGELOG.md index 349678d3..52dcb819 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -52,6 +52,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#417](https://github.com/genomic-medicine-sweden/nallo/pull/417) - Updated SNV annotation tests to use correct configuration, and snapshot the md5sum, and summary of the variants - [#422](https://github.com/genomic-medicine-sweden/nallo/pull/422) - Updated nf-core/tools template to v3.0.1 - [#423](https://github.com/genomic-medicine-sweden/nallo/pull/423) - Updated metro map +- [#428](https://github.com/genomic-medicine-sweden/nallo/pull/428) - Changed from using bcftools to SVDB for SV merging ### `Removed` @@ -101,6 +102,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 | longphase  |   | 1.7.3   | | genmod | 3.8.2 | 3.8.3 | | WhatsHap | 2.2 | 2.3 | +| SVDB | | 2.8.1 | > [!NOTE] > Version has been updated if both old and new version information is present. diff --git a/conf/modules/call_svs.config b/conf/modules/call_svs.config index 35d80ef2..b12d31ba 100644 --- a/conf/modules/call_svs.config +++ b/conf/modules/call_svs.config @@ -47,12 +47,11 @@ process { ext.args = '--no-qc' } - withName: '.*:CALL_SVS:BCFTOOLS_MERGE' { + withName: '.*:CALL_SVS:SVDB_MERGE' { ext.prefix = { "${meta.id}_svs" } ext.args = [ - '--force-single', - '--output-type z', - '--write-index=tbi' + '--bnd_distance 1000', + '--overlap .5' ].join(' ') publishDir = [ path: { "${params.outdir}/svs/multi_sample/${meta.id}" }, @@ -61,6 +60,14 @@ process { ] } + withName: '.*:CALL_SVS:TABIX_SVDB_MERGE' { + publishDir = [ + path: { "${params.outdir}/svs/multi_sample/${meta.id}" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') || !params.skip_sv_annotation ? null : filename } + ] + } + withName: '.*:CALL_SVS:BCFTOOLS_REHEADER' { ext.prefix = { "${meta.id}_${params.sv_caller}" } ext.args2 = [ diff --git a/docs/output.md b/docs/output.md index 0f41b938..a96aff02 100644 --- a/docs/output.md +++ b/docs/output.md @@ -337,16 +337,16 @@ Results generated by MultiQC collate pipeline QC from supported tools e.g. FastQ ### SV Calling -[Severus](https://github.com/KolmogorovLab/Severus) or [Sniffles](https://github.com/fritzsedlazeck/Sniffles) is used to call structural variants. +[Severus](https://github.com/KolmogorovLab/Severus) or [Sniffles](https://github.com/fritzsedlazeck/Sniffles) is used to call structural variants, after wich [SVDB](https://github.com/J35P312/SVDB) is used to merge variants, within and between samples.

    Output files from SV Calling - `{outputdir}/svs/multi_sample/{project}` - - `{project}_svs.vcf.gz`: VCF file with merged variants + - `{project}_svs.vcf.gz`: VCF file with SVDB merged variants - `{project}_svs.vcf.gz.tbi`: Index of the corresponding VCF file - `{outputdir}/svs/single_sample/{sample}` - - `*.vcf.gz`: VCF with variants per sample + - `*.vcf.gz`: VCF with SVDB merged variants, divided per sample - `*.vcf.gz.tbi`: Index of the corresponding VCF file
    diff --git a/modules.json b/modules.json index 57a6055f..5fc3c89c 100644 --- a/modules.json +++ b/modules.json @@ -244,6 +244,11 @@ "git_sha": "4806239588f35d27a95b187b4000d80e15152022", "installed_by": ["modules"] }, + "svdb/merge": { + "branch": "master", + "git_sha": "847683c1bb3a94d846e18916f14c2bc60a447041", + "installed_by": ["modules"] + }, "svdb/query": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", diff --git a/modules/nf-core/svdb/merge/environment.yml b/modules/nf-core/svdb/merge/environment.yml new file mode 100644 index 00000000..f725b652 --- /dev/null +++ b/modules/nf-core/svdb/merge/environment.yml @@ -0,0 +1,8 @@ +channels: + - conda-forge + - bioconda + +dependencies: + - htslib=1.19.1 + - samtools=1.19.2 + - svdb=2.8.1 diff --git a/modules/nf-core/svdb/merge/main.nf b/modules/nf-core/svdb/merge/main.nf new file mode 100644 index 00000000..afc34bb4 --- /dev/null +++ b/modules/nf-core/svdb/merge/main.nf @@ -0,0 +1,62 @@ +process SVDB_MERGE { + tag "$meta.id" + label 'process_medium' + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/mulled-v2-c8daa8f9d69d3c5a1a4ff08283a166c18edb0000:511069f65a53621c5503e5cfee319aa3c735abfa-0': + 'biocontainers/mulled-v2-c8daa8f9d69d3c5a1a4ff08283a166c18edb0000:511069f65a53621c5503e5cfee319aa3c735abfa-0' }" + + input: + tuple val(meta), path(vcfs) + val (priority) + + output: + tuple val(meta), path("*.vcf.gz"), emit: vcf + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def input = "${vcfs.join(" ")}" + def prio = "" + if(priority) { + prio = "--priority ${priority.join(',')}" + input = "" + for (int index = 0; index < vcfs.size(); index++) { + input += " ${vcfs[index]}:${priority[index]}" + } + } + """ + svdb \\ + --merge \\ + $args \\ + $prio \\ + --vcf $input \\ + > ${prefix}.vcf + + bgzip \\ + --threads ${task.cpus} \\ + ${prefix}.vcf + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + svdb: \$( echo \$(svdb) | head -1 | sed 's/usage: SVDB-\\([0-9]\\.[0-9]\\.[0-9]\\).*/\\1/' ) + samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') + END_VERSIONS + """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + """ + echo | gzip > ${prefix}.vcf.gz + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + svdb: \$( echo \$(svdb) | head -1 | sed 's/usage: SVDB-\\([0-9]\\.[0-9]\\.[0-9]\\).*/\\1/' ) + samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') + END_VERSIONS + """ +} diff --git a/modules/nf-core/svdb/merge/meta.yml b/modules/nf-core/svdb/merge/meta.yml new file mode 100644 index 00000000..7dc7c675 --- /dev/null +++ b/modules/nf-core/svdb/merge/meta.yml @@ -0,0 +1,47 @@ +name: svdb_merge +description: The merge module merges structural variants within one or more vcf files. +keywords: + - structural variants + - vcf + - merge +tools: + - svdb: + description: structural variant database software + homepage: https://github.com/J35P312/SVDB + documentation: https://github.com/J35P312/SVDB/blob/master/README.md + licence: ["MIT"] + identifier: "" +input: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test' ] + - vcfs: + type: list + description: Two or more VCF files. Order of files should correspond to the + order of tags used for priority. + pattern: "*.{vcf,vcf.gz}" + - - priority: + type: list + description: prioritise the input vcf files according to this list, e.g ['tiddit','cnvnator'] +output: + - vcf: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test' ] + - "*.vcf.gz": + type: file + description: merged VCF file + pattern: "*.vcf.gz" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" +authors: + - "@ramprasadn" +maintainers: + - "@ramprasadn" diff --git a/modules/nf-core/svdb/merge/tests/main.nf.test b/modules/nf-core/svdb/merge/tests/main.nf.test new file mode 100644 index 00000000..b0743a69 --- /dev/null +++ b/modules/nf-core/svdb/merge/tests/main.nf.test @@ -0,0 +1,111 @@ +nextflow_process { + + name "Test Process SVDB_MERGE" + script "modules/nf-core/svdb/merge/main.nf" + process "SVDB_MERGE" + tag "modules" + tag "modules_nfcore" + tag "svdb" + tag "svdb/merge" + + test("test_svdb_merge") { + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test' ], // meta map + [file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf', checkIfExists: true) ] + ]) + input[1] = [ 'tiddit', 'cnvnator'] + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert path(process.out.vcf.get(0).get(1)).linesGzip.contains("##fileformat=VCFv4.1") } + ) + } + + } + + test("test_svdb_merge_noprio") { + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test' ], // meta map + [file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf', checkIfExists: true) ] + ]) + input[1] = [] + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert path(process.out.vcf.get(0).get(1)).linesGzip.contains("##fileformat=VCFv4.1") } + ) + } + + } + + test("test_svdb_merge - stub") { + + options "-stub" + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test' ], // meta map + [file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf', checkIfExists: true) ] + ]) + input[1] = [ 'tiddit', 'cnvnator'] + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("test_svdb_merge_noprio - stub") { + + options "-stub" + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test' ], // meta map + [file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf', checkIfExists: true) ] + ]) + input[1] = [] + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} diff --git a/modules/nf-core/svdb/merge/tests/main.nf.test.snap b/modules/nf-core/svdb/merge/tests/main.nf.test.snap new file mode 100644 index 00000000..e79b2583 --- /dev/null +++ b/modules/nf-core/svdb/merge/tests/main.nf.test.snap @@ -0,0 +1,68 @@ +{ + "test_svdb_merge - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + "versions.yml:md5,772f39343052d54d9bcb21d4892da203" + ], + "vcf": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,772f39343052d54d9bcb21d4892da203" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-16T09:00:41.058996433" + }, + "test_svdb_merge_noprio - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + "versions.yml:md5,772f39343052d54d9bcb21d4892da203" + ], + "vcf": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,772f39343052d54d9bcb21d4892da203" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-16T09:00:49.58223306" + } +} \ No newline at end of file diff --git a/modules/nf-core/svdb/merge/tests/tags.yml b/modules/nf-core/svdb/merge/tests/tags.yml new file mode 100644 index 00000000..8501d907 --- /dev/null +++ b/modules/nf-core/svdb/merge/tests/tags.yml @@ -0,0 +1,2 @@ +svdb/merge: + - modules/nf-core/svdb/merge/** diff --git a/subworkflows/local/call_svs/main.nf b/subworkflows/local/call_svs/main.nf index 9d472987..d176e841 100644 --- a/subworkflows/local/call_svs/main.nf +++ b/subworkflows/local/call_svs/main.nf @@ -1,10 +1,11 @@ -include { ADD_FOUND_IN_TAG } from '../../../modules/local/add_found_in_tag/main' -include { BCFTOOLS_MERGE } from '../../../modules/nf-core/bcftools/merge/main' -include { BCFTOOLS_QUERY } from '../../../modules/nf-core/bcftools/query/main' -include { BCFTOOLS_REHEADER } from '../../../modules/nf-core/bcftools/reheader/main' -include { CREATE_SAMPLES_FILE } from '../../../modules/local/create_samples_file/main' -include { SEVERUS } from '../../../modules/nf-core/severus/main' -include { SNIFFLES } from '../../../modules/nf-core/sniffles/main' +include { ADD_FOUND_IN_TAG } from '../../../modules/local/add_found_in_tag/main' +include { SVDB_MERGE } from '../../../modules/nf-core/svdb/merge/main' +include { BCFTOOLS_QUERY } from '../../../modules/nf-core/bcftools/query/main' +include { BCFTOOLS_REHEADER } from '../../../modules/nf-core/bcftools/reheader/main' +include { CREATE_SAMPLES_FILE } from '../../../modules/local/create_samples_file/main' +include { SEVERUS } from '../../../modules/nf-core/severus/main' +include { SNIFFLES } from '../../../modules/nf-core/sniffles/main' +include { TABIX_TABIX as TABIX_SVDB_MERGE } from '../../../modules/nf-core/tabix/tabix/main' workflow CALL_SVS { @@ -77,20 +78,22 @@ workflow CALL_SVS { ch_versions = ch_versions.mix(BCFTOOLS_REHEADER.out.versions) BCFTOOLS_REHEADER.out.vcf - .join(BCFTOOLS_REHEADER.out.index) - .map { meta, vcf, tbi -> [ [ 'id': meta.project ], vcf, tbi ] } + .map { meta, vcf -> [ [ 'id': meta.project ], vcf ] } .groupTuple() - .set { ch_bcftools_merge_in } + .set { ch_svdb_merge_in } // Merge the files with new sample names - BCFTOOLS_MERGE ( ch_bcftools_merge_in, ch_fasta, ch_fai, ch_bed ) - ch_versions = ch_versions.mix(BCFTOOLS_MERGE.out.versions) + SVDB_MERGE ( ch_svdb_merge_in, []) + ch_versions = ch_versions.mix(SVDB_MERGE.out.versions) + + TABIX_SVDB_MERGE ( SVDB_MERGE.out.vcf ) + ch_versions = ch_versions.mix(TABIX_SVDB_MERGE.out.versions) emit: ch_sv_calls_vcf = BCFTOOLS_REHEADER.out.vcf // channel: [ val(meta), path(vcf) ] ch_sv_calls_tbi = BCFTOOLS_REHEADER.out.index // channel: [ val(meta), path(tbi) ] - ch_multisample_vcf = BCFTOOLS_MERGE.out.vcf // channel: [ val(meta), path(vcf) ] - ch_multisample_tbi = BCFTOOLS_MERGE.out.index // channel: [ val(meta), path(tbi) ] + ch_multisample_vcf = SVDB_MERGE.out.vcf // channel: [ val(meta), path(vcf) ] + ch_multisample_tbi = TABIX_SVDB_MERGE.out.tbi // channel: [ val(meta), path(tbi) ] versions = ch_versions // channel: [ path(versions.yml) ] } diff --git a/subworkflows/local/call_svs/tests/main.nf.test b/subworkflows/local/call_svs/tests/main.nf.test index 927d62c2..3e512512 100644 --- a/subworkflows/local/call_svs/tests/main.nf.test +++ b/subworkflows/local/call_svs/tests/main.nf.test @@ -93,7 +93,9 @@ nextflow_workflow { { assert workflow.out.ch_sv_calls_tbi.get(0).get(1).endsWith("tbi") }, { assert workflow.out.ch_multisample_tbi.get(0).get(1).endsWith("tbi") }, { assert snapshot( + path(workflow.out.ch_sv_calls_vcf.get(0).get(1)).vcf.summary, path(workflow.out.ch_sv_calls_vcf.get(0).get(1)).vcf.variantsMD5, + path(workflow.out.ch_multisample_vcf.get(0).get(1)).vcf.summary, path(workflow.out.ch_multisample_vcf.get(0).get(1)).vcf.variantsMD5, workflow.out.versions, ).match() } @@ -103,7 +105,7 @@ nextflow_workflow { } test("2 samples - [bam, bai], fasta, fai, [], [] - sniffles") { - + tag "x" when { workflow { """ @@ -135,8 +137,13 @@ nextflow_workflow { { assert workflow.out.ch_sv_calls_tbi.get(1).get(1).endsWith("tbi") }, { assert workflow.out.ch_multisample_tbi.get(0).get(1).endsWith("tbi") }, { assert snapshot( - workflow.out.ch_sv_calls_vcf.collect { file(it[1]).name }.sort().toString(), // don't know the order of the output VCFs + path(workflow.out.ch_sv_calls_vcf.get(0).get(1)).vcf.summary, + path(workflow.out.ch_sv_calls_vcf.get(0).get(1)).vcf.variantsMD5, + path(workflow.out.ch_sv_calls_vcf.get(1).get(1)).vcf.summary, + path(workflow.out.ch_sv_calls_vcf.get(1).get(1)).vcf.variantsMD5, + path(workflow.out.ch_multisample_vcf.get(0).get(1)).vcf.summary, path(workflow.out.ch_multisample_vcf.get(0).get(1)).vcf.variantsMD5, + path(workflow.out.ch_multisample_vcf.get(0).get(1)).linesGzip, workflow.out.versions, ).match() } ) @@ -205,7 +212,9 @@ nextflow_workflow { { assert workflow.out.ch_sv_calls_tbi.get(0).get(1).endsWith("tbi") }, { assert workflow.out.ch_multisample_tbi.get(0).get(1).endsWith("tbi") }, { assert snapshot( + path(workflow.out.ch_sv_calls_vcf.get(0).get(1)).vcf.summary, path(workflow.out.ch_sv_calls_vcf.get(0).get(1)).vcf.variantsMD5, + path(workflow.out.ch_multisample_vcf.get(0).get(1)).vcf.summary, path(workflow.out.ch_multisample_vcf.get(0).get(1)).vcf.variantsMD5, workflow.out.versions, ).match() } @@ -242,7 +251,9 @@ nextflow_workflow { { assert workflow.out.ch_sv_calls_tbi.get(0).get(1).endsWith("tbi") }, { assert workflow.out.ch_multisample_tbi.get(0).get(1).endsWith("tbi") }, { assert snapshot( + path(workflow.out.ch_sv_calls_vcf.get(0).get(1)).vcf.summary, path(workflow.out.ch_sv_calls_vcf.get(0).get(1)).vcf.variantsMD5, + path(workflow.out.ch_multisample_vcf.get(0).get(1)).vcf.summary, path(workflow.out.ch_multisample_vcf.get(0).get(1)).vcf.variantsMD5, workflow.out.versions, ).match() } @@ -278,7 +289,9 @@ nextflow_workflow { { assert workflow.out.ch_sv_calls_tbi.get(0).get(1).endsWith("tbi") }, { assert workflow.out.ch_multisample_tbi.get(0).get(1).endsWith("tbi") }, { assert snapshot( + path(workflow.out.ch_sv_calls_vcf.get(0).get(1)).vcf.summary, path(workflow.out.ch_sv_calls_vcf.get(0).get(1)).vcf.variantsMD5, + path(workflow.out.ch_multisample_vcf.get(0).get(1)).vcf.summary, path(workflow.out.ch_multisample_vcf.get(0).get(1)).vcf.variantsMD5, workflow.out.versions, ).match() } @@ -320,7 +333,11 @@ nextflow_workflow { { assert workflow.out.ch_sv_calls_tbi.get(1).get(1).endsWith("tbi") }, { assert workflow.out.ch_multisample_tbi.get(0).get(1).endsWith("tbi") }, { assert snapshot( - workflow.out.ch_sv_calls_vcf.collect { file(it[1]).name }.sort().toString(), // don't know the order of the output VCFs + path(workflow.out.ch_sv_calls_vcf.get(0).get(1)).vcf.summary, + path(workflow.out.ch_sv_calls_vcf.get(0).get(1)).vcf.variantsMD5, + path(workflow.out.ch_sv_calls_vcf.get(1).get(1)).vcf.summary, + path(workflow.out.ch_sv_calls_vcf.get(1).get(1)).vcf.variantsMD5, + path(workflow.out.ch_multisample_vcf.get(0).get(1)).vcf.summary, path(workflow.out.ch_multisample_vcf.get(0).get(1)).vcf.variantsMD5, workflow.out.versions, ).match() } diff --git a/subworkflows/local/call_svs/tests/main.nf.test.snap b/subworkflows/local/call_svs/tests/main.nf.test.snap index c5ba047b..f8305a24 100644 --- a/subworkflows/local/call_svs/tests/main.nf.test.snap +++ b/subworkflows/local/call_svs/tests/main.nf.test.snap @@ -27,7 +27,7 @@ { "id": "project" }, - "project.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + "project_svs.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "3": [ @@ -35,12 +35,13 @@ { "id": "project" }, - "project.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + "project_svs.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "4": [ + "versions.yml:md5,012a7d52b39310584f34d8819a042866", + "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", - "versions.yml:md5,572bfd042014333af194207291d12b95", "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", @@ -51,7 +52,7 @@ { "id": "project" }, - "project.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + "project_svs.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "ch_multisample_vcf": [ @@ -59,7 +60,7 @@ { "id": "project" }, - "project.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + "project_svs.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "ch_sv_calls_tbi": [ @@ -83,8 +84,9 @@ ] ], "versions": [ + "versions.yml:md5,012a7d52b39310584f34d8819a042866", + "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", - "versions.yml:md5,572bfd042014333af194207291d12b95", "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", @@ -94,9 +96,9 @@ ], "meta": { "nf-test": "0.9.0", - "nextflow": "23.04.3" + "nextflow": "24.04.4" }, - "timestamp": "2024-10-08T16:08:27.53187403" + "timestamp": "2024-10-16T13:44:23.698467142" }, "2 samples - [bam, bai], fasta, fai, [], [] - sniffles -stub": { "content": [ @@ -124,7 +126,7 @@ { "id": "project" }, - "project.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + "project_svs.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], [ @@ -132,13 +134,14 @@ { "id": "project" }, - "project.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + "project_svs.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], [ + "versions.yml:md5,012a7d52b39310584f34d8819a042866", + "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", - "versions.yml:md5,572bfd042014333af194207291d12b95", "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", @@ -151,9 +154,9 @@ ], "meta": { "nf-test": "0.9.0", - "nextflow": "23.04.3" + "nextflow": "24.04.4" }, - "timestamp": "2024-10-08T16:09:54.140742439" + "timestamp": "2024-10-16T13:44:53.455933848" }, "1 sample - [bam, bai], fasta, fai, [], [] - sniffles -stub": { "content": [ @@ -183,7 +186,7 @@ { "id": "project" }, - "project.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + "project_svs.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "3": [ @@ -191,12 +194,13 @@ { "id": "project" }, - "project.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + "project_svs.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "4": [ + "versions.yml:md5,012a7d52b39310584f34d8819a042866", + "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", - "versions.yml:md5,572bfd042014333af194207291d12b95", "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", @@ -207,7 +211,7 @@ { "id": "project" }, - "project.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + "project_svs.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "ch_multisample_vcf": [ @@ -215,7 +219,7 @@ { "id": "project" }, - "project.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + "project_svs.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "ch_sv_calls_tbi": [ @@ -239,8 +243,9 @@ ] ], "versions": [ + "versions.yml:md5,012a7d52b39310584f34d8819a042866", + "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", - "versions.yml:md5,572bfd042014333af194207291d12b95", "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", @@ -250,17 +255,20 @@ ], "meta": { "nf-test": "0.9.0", - "nextflow": "23.04.3" + "nextflow": "24.04.4" }, - "timestamp": "2024-10-08T16:07:46.907592593" + "timestamp": "2024-10-16T13:44:09.06083732" }, "1 sample - [bam, bai], fasta, fai, [], [] - severus": { "content": [ + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=56, phased=false, phasedAutodetect=false]", "1294e2ab468789a0bd56e8bcaf578a4", - "1294e2ab468789a0bd56e8bcaf578a4", + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=54, phased=false, phasedAutodetect=false]", + "9788302ce089a9d1896f02355474b721", [ + "versions.yml:md5,012a7d52b39310584f34d8819a042866", + "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", - "versions.yml:md5,572bfd042014333af194207291d12b95", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", @@ -269,9 +277,9 @@ ], "meta": { "nf-test": "0.9.0", - "nextflow": "23.04.3" + "nextflow": "24.04.4" }, - "timestamp": "2024-10-08T16:02:41.891334033" + "timestamp": "2024-10-15T14:15:23.408063142" }, "1 sample - [bam, bai], fasta, fai, [], bed - severus -stub": { "content": [ @@ -301,7 +309,7 @@ { "id": "project" }, - "project.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + "project_svs.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "3": [ @@ -309,12 +317,13 @@ { "id": "project" }, - "project.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + "project_svs.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "4": [ + "versions.yml:md5,012a7d52b39310584f34d8819a042866", + "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", - "versions.yml:md5,572bfd042014333af194207291d12b95", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", @@ -325,7 +334,7 @@ { "id": "project" }, - "project.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + "project_svs.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "ch_multisample_vcf": [ @@ -333,7 +342,7 @@ { "id": "project" }, - "project.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + "project_svs.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "ch_sv_calls_tbi": [ @@ -357,8 +366,9 @@ ] ], "versions": [ + "versions.yml:md5,012a7d52b39310584f34d8819a042866", + "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", - "versions.yml:md5,572bfd042014333af194207291d12b95", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", @@ -368,17 +378,20 @@ ], "meta": { "nf-test": "0.9.0", - "nextflow": "23.04.3" + "nextflow": "24.04.4" }, - "timestamp": "2024-10-08T15:55:12.50291621" + "timestamp": "2024-10-16T13:45:21.860327776" }, "1 sample - [bam, bai], fasta, fai, [], bed - severus": { "content": [ + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=56, phased=false, phasedAutodetect=false]", "1294e2ab468789a0bd56e8bcaf578a4", - "fd275f8c8db24a1c5b7de7c0c3970830", + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=54, phased=false, phasedAutodetect=false]", + "9788302ce089a9d1896f02355474b721", [ + "versions.yml:md5,012a7d52b39310584f34d8819a042866", + "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", - "versions.yml:md5,572bfd042014333af194207291d12b95", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", @@ -389,16 +402,412 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-11T08:18:00.661332838" + "timestamp": "2024-10-15T14:22:26.560844782" }, "2 samples - [bam, bai], fasta, fai, [], [] - sniffles": { "content": [ - "[test_1_reheader.vcf.gz, test_2_reheader.vcf.gz]", - "86c9d09c440d7d60876ae6b4db8a86ab", + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=95, phased=false, phasedAutodetect=false]", + "7cd0730159250c8945e2007da414651e", + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=120, phased=false, phasedAutodetect=false]", + "1a02c1b0c86e5531279218fb39ef62b2", + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=2, variantCount=130, phased=false, phasedAutodetect=false]", + "7d122c197ef319c573592e5f9356a4c0", [ + "##fileformat=VCFv4.1", + "##source=MergeVCF", + "##SVDB_version=2.8.1 cmd=\"/usr/local/bin/svdb --merge --bnd_distance 1000 --overlap .5 --vcf test_1_reheader.vcf.gz test_2_reheader.vcf.gz\"", + "##ALT=", + "##ALT=", + "##ALT=", + "##ALT=", + "##ALT=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FORMAT=", + "##FORMAT=", + "##FORMAT=", + "##FORMAT=", + "##FORMAT=", + "##command=\"/usr/local/bin/sniffles --input HG002_PacBio_Revio.bam --reference hg38.test.fa -t 4 --vcf test_1.vcf.gz\"", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##svdbcmdline=/usr/local/bin/svdb --merge --bnd_distance 1000 --overlap .5 --vcf test_1_reheader.vcf.gz test_2_reheader.vcf.gz", + "#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO\tFORMAT\ttest_1\ttest_2", + "chr16\t81884\tSniffles2.INS.4SF\tN\tCTCCAGGAAGCCCTCCTGAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTATCTCCGGAAGCCCTCCTGAATGCTCCCCACGCTGGCCCCTTCTTCCCACCACCCTACCTCCGGGAAGGCCTCCTGAATGCTCCCCACGCTGGCCCCTTCTTCCCACCACCCTACCTCCGGGAAGCCCTCCTGAATGCTCCCCACGCTGGCCCCTTCTTCCCACCACCCTACCTCCAGGAAGCCCTCCTGAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTATCTCCGGGAAGGCCTCCTGAATGCTCCCCACACTGACCCCTTCTTCCCACCACCCTACCTCCGGGAAGGCCTCCTGAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTAT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=398;END=81884;SUPPORT=12;COVERAGE=22,23,24,23,23;STRAND=+-;AF=0.5;STDEV_LEN=0;STDEV_POS=68.361;SUPPORT_LONG=0;FOUND_IN=sniffles;set=test_1_reheader;FOUNDBY=1;test_1_reheader_CHROM=Sniffles2.INS.4SF|chr16;test_1_reheader_POS=Sniffles2.INS.4SF|81884;test_1_reheader_QUAL=Sniffles2.INS.4SF|60;test_1_reheader_FILTERS=Sniffles2.INS.4SF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.4SF|test_1|GT:0/1|GQ:60|DR:12|DV:12;test_1_reheader_INFO=Sniffles2.INS.4SF|IMPRECISE|SVTYPE:INS|SVLEN:398|END:81884|SUPPORT:12|COVERAGE:22:23:24:23:23|STRAND:+-|AF:0.5|STDEV_LEN:0|STDEV_POS:68.361|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader;SUPP_VEC=10\tGT:GQ:DR:DV\t0/1:60:12:12\t./.:.:.:.", + "chr16\t81981\tSniffles2.INS.1SF\tN\tCTTGATCACCCTACCTCCGGGAAGGCCTCCTGAATGCTCCCCACGCTGGCCCC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=56;END=81981;SUPPORT=10;COVERAGE=21,21,21,21,23;STRAND=+-;AF=0.476;STDEV_LEN=1.952;STDEV_POS=96.236;SUPPORT_LONG=0;FOUND_IN=sniffles;set=test_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.INS.1SF|chr16;test_2_reheader_POS=Sniffles2.INS.1SF|81981;test_2_reheader_QUAL=Sniffles2.INS.1SF|60;test_2_reheader_FILTERS=Sniffles2.INS.1SF|PASS;test_2_reheader_SAMPLE=Sniffles2.INS.1SF|test_2|GT:0/1|GQ:60|DR:11|DV:10;test_2_reheader_INFO=Sniffles2.INS.1SF|IMPRECISE|SVTYPE:INS|SVLEN:56|END:81981|SUPPORT:10|COVERAGE:21:21:21:21:23|STRAND:+-|AF:0.476|STDEV_LEN:1.952|STDEV_POS:96.236|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:60:11:10", + "chr16\t82055\tSniffles2.INS.3SF\tN\tCTCCGGGAAGCCCTCCTGAATGCTCCCCACGCTGGCCCCTTCTTCCCACCACCCTACCTCCAGGAAGCCCTCCTGAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTATCTCCGGGAAGGCCTCCTCCCTATGCTCCCCACACTGACCCCTTCTTCCCACCACCCTACCTCCGGGAAGGCCTCCTGAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTATCTCCGGGAAGGCCTCCTGAATGCTCCCCACACTGACCCCTTCTTCCCACCACCCTACCTCCGGGAAGGCCTCCTGAGTCACCCGCGCTGACCCCTTCTTCCCACCACCCTATCTCCGGGAAGCCCTCCTAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTAT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=391;END=82055;SUPPORT=7;COVERAGE=20,21,21,22,23;STRAND=+-;AF=0.333;STDEV_LEN=4.147;STDEV_POS=104.55;SUPPORT_LONG=0;FOUND_IN=sniffles;set=test_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.INS.3SF|chr16;test_2_reheader_POS=Sniffles2.INS.3SF|82055;test_2_reheader_QUAL=Sniffles2.INS.3SF|60;test_2_reheader_FILTERS=Sniffles2.INS.3SF|PASS;test_2_reheader_SAMPLE=Sniffles2.INS.3SF|test_2|GT:0/1|GQ:30|DR:14|DV:7;test_2_reheader_INFO=Sniffles2.INS.3SF|IMPRECISE|SVTYPE:INS|SVLEN:391|END:82055|SUPPORT:7|COVERAGE:20:21:21:22:23|STRAND:+-|AF:0.333|STDEV_LEN:4.147|STDEV_POS:104.55|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:30:14:7", + "chr16\t82169\tSniffles2.INS.1SF:test_1_reheader|Sniffles2.INS.2SF:test_2_reheader\tN\tCTCCGGGAAGGCCTCCTGAATGCTCCCCACACTGACCCCTTCTTCCCACCACCCTAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=57;END=82169;SUPPORT=8;COVERAGE=23,23,23,23,23;STRAND=+-;AF=0.348;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;IMPRECISE;VARID=Sniffles2.INS.2SF:test_2_reheader;set=test_1_reheader-filterIntest_2_reheader;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.1SF|chr16;test_2_reheader_CHROM=Sniffles2.INS.2SF|chr16;test_1_reheader_POS=Sniffles2.INS.1SF|82169;test_2_reheader_POS=Sniffles2.INS.2SF|82180;test_1_reheader_QUAL=Sniffles2.INS.1SF|60;test_2_reheader_QUAL=Sniffles2.INS.2SF|60;test_1_reheader_FILTERS=Sniffles2.INS.1SF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.2SF|GT;test_1_reheader_SAMPLE=Sniffles2.INS.1SF|test_1|GT:0/1|GQ:38|DR:15|DV:8;test_2_reheader_SAMPLE=Sniffles2.INS.2SF|test_2|GT:0/0|GQ:22|DR:19|DV:3;test_1_reheader_INFO=Sniffles2.INS.1SF|PRECISE|SVTYPE:INS|SVLEN:57|END:82169|SUPPORT:8|COVERAGE:23:23:23:23:23|STRAND:+-|AF:0.348|STDEV_LEN:0|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.2SF|IMPRECISE|SVTYPE:INS|SVLEN:111|END:82180|SUPPORT:3|COVERAGE:20:21:22:23:23|STRAND:+-|AF:0.136|STDEV_LEN:3.055|STDEV_POS:113.212|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:38:15:8\t0/0:22:19:3", + "chr16\t153120\tSniffles2.INS.5SF:test_1_reheader|Sniffles2.INS.6SF:test_2_reheader\tN\tACAGTGGGGAGGGGACAGTGGGGAGAGGACAGTAAGGAGGGGACCATGGGGAGGAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=56;END=153120;SUPPORT=23;COVERAGE=22,23,23,23,23;STRAND=+-;AF=1;STDEV_LEN=0.48;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.6SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.5SF|chr16;test_2_reheader_CHROM=Sniffles2.INS.6SF|chr16;test_1_reheader_POS=Sniffles2.INS.5SF|153120;test_2_reheader_POS=Sniffles2.INS.6SF|153120;test_1_reheader_QUAL=Sniffles2.INS.5SF|60;test_2_reheader_QUAL=Sniffles2.INS.6SF|60;test_1_reheader_FILTERS=Sniffles2.INS.5SF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.6SF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.5SF|test_1|GT:1/1|GQ:60|DR:0|DV:23;test_2_reheader_SAMPLE=Sniffles2.INS.6SF|test_2|GT:1/1|GQ:26|DR:1|DV:13;test_1_reheader_INFO=Sniffles2.INS.5SF|PRECISE|SVTYPE:INS|SVLEN:56|END:153120|SUPPORT:23|COVERAGE:22:23:23:23:23|STRAND:+-|AF:1|STDEV_LEN:0.48|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.6SF|PRECISE|SVTYPE:INS|SVLEN:56|END:153120|SUPPORT:13|COVERAGE:14:14:14:14:14|STRAND:+-|AF:0.929|STDEV_LEN:0.916|STDEV_POS:1.061|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:60:0:23\t1/1:26:1:13", + "chr16\t160071\tSniffles2.INS.CSF:test_1_reheader|Sniffles2.INS.CSF:test_2_reheader\tN\tGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGACGGCTTGTGGGACACAGGTTGTGAGAGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTGTGAGGGTGCCCGGGATGGCTTGTGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTGTGAGACGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGAGATGCCCAGGACGGCTTGTGGGGAACAGGCTGTGAGGGTGCCCGGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGAT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=583;END=160071;SUPPORT=24;COVERAGE=28,28,28,30,27;STRAND=+-;AF=0.857;STDEV_LEN=0.953;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.CSF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.CSF|chr16;test_2_reheader_CHROM=Sniffles2.INS.CSF|chr16;test_1_reheader_POS=Sniffles2.INS.CSF|160071;test_2_reheader_POS=Sniffles2.INS.CSF|160091;test_1_reheader_QUAL=Sniffles2.INS.CSF|60;test_2_reheader_QUAL=Sniffles2.INS.CSF|60;test_1_reheader_FILTERS=Sniffles2.INS.CSF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.CSF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.CSF|test_1|GT:1/1|GQ:26|DR:4|DV:24;test_2_reheader_SAMPLE=Sniffles2.INS.CSF|test_2|GT:1/1|GQ:1|DR:4|DV:15;test_1_reheader_INFO=Sniffles2.INS.CSF|PRECISE|SVTYPE:INS|SVLEN:583|END:160071|SUPPORT:24|COVERAGE:28:28:28:30:27|STRAND:+-|AF:0.857|STDEV_LEN:0.953|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.CSF|PRECISE|SVTYPE:INS|SVLEN:584|END:160091|SUPPORT:15|COVERAGE:18:19:19:20:20|STRAND:+-|AF:0.789|STDEV_LEN:1.356|STDEV_POS:10.025|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:26:4:24\t1/1:1:4:15", + "chr16\t160389\tSniffles2.INS.BSF:test_1_reheader|Sniffles2.INS.BSF:test_2_reheader\tN\tGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGCTGCAAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGATGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCTGGGACGGCTTGTGGGGCACAGGTTGTGAGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=328;END=160389;SUPPORT=25;COVERAGE=28,30,30,29,27;STRAND=+-;AF=0.833;STDEV_LEN=0.277;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.BSF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.BSF|chr16;test_2_reheader_CHROM=Sniffles2.INS.BSF|chr16;test_1_reheader_POS=Sniffles2.INS.BSF|160389;test_2_reheader_POS=Sniffles2.INS.BSF|160389;test_1_reheader_QUAL=Sniffles2.INS.BSF|60;test_2_reheader_QUAL=Sniffles2.INS.BSF|60;test_1_reheader_FILTERS=Sniffles2.INS.BSF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.BSF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.BSF|test_1|GT:1/1|GQ:19|DR:5|DV:25;test_2_reheader_SAMPLE=Sniffles2.INS.BSF|test_2|GT:0/1|GQ:8|DR:5|DV:15;test_1_reheader_INFO=Sniffles2.INS.BSF|PRECISE|SVTYPE:INS|SVLEN:328|END:160389|SUPPORT:25|COVERAGE:28:30:30:29:27|STRAND:+-|AF:0.833|STDEV_LEN:0.277|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.BSF|PRECISE|SVTYPE:INS|SVLEN:328|END:160389|SUPPORT:15|COVERAGE:19:20:20:21:19|STRAND:+-|AF:0.75|STDEV_LEN:0.744|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:19:5:25\t0/1:8:5:15", + "chr16\t160753\tSniffles2.INS.ESF:test_1_reheader|Sniffles2.INS.9SF:test_2_reheader\tN\tGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCAGGATGGCTTGTGGGGCACAGGCTGCAAGAGGTGCCCAGGACGGCTTGTGGGGCACAGGTTGTGAGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=145;END=160753;SUPPORT=27;COVERAGE=30,28,28,27,27;STRAND=+-;AF=0.964;STDEV_LEN=0.352;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.9SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.ESF|chr16;test_2_reheader_CHROM=Sniffles2.INS.9SF|chr16;test_1_reheader_POS=Sniffles2.INS.ESF|160753;test_2_reheader_POS=Sniffles2.INS.9SF|160753;test_1_reheader_QUAL=Sniffles2.INS.ESF|60;test_2_reheader_QUAL=Sniffles2.INS.9SF|60;test_1_reheader_FILTERS=Sniffles2.INS.ESF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.9SF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.ESF|test_1|GT:1/1|GQ:60|DR:1|DV:27;test_2_reheader_SAMPLE=Sniffles2.INS.9SF|test_2|GT:1/1|GQ:27|DR:2|DV:17;test_1_reheader_INFO=Sniffles2.INS.ESF|PRECISE|SVTYPE:INS|SVLEN:145|END:160753|SUPPORT:27|COVERAGE:30:28:28:27:27|STRAND:+-|AF:0.964|STDEV_LEN:0.352|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.9SF|PRECISE|SVTYPE:INS|SVLEN:145|END:160753|SUPPORT:17|COVERAGE:20:19:19:19:20|STRAND:+-|AF:0.895|STDEV_LEN:1.612|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:60:1:27\t1/1:27:2:17", + "chr16\t163320\tSniffles2.DEL.5DSF:test_1_reheader|Sniffles2.DEL.8FSF:test_2_reheader\tagtgagtaggagacagtggggagaggacagtggagaggggacagtgaggaggggaccatgggaaggggaccgtggagtggggacagtgaggaggggaccatagggagggga\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-111;END=163431;SUPPORT=7;COVERAGE=23,22,22,22,22;STRAND=+-;AF=0.318;STDEV_LEN=1.095;STDEV_POS=10.733;FOUND_IN=sniffles;VARID=Sniffles2.DEL.8FSF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.DEL.5DSF|chr16;test_2_reheader_CHROM=Sniffles2.DEL.8FSF|chr16;test_1_reheader_POS=Sniffles2.DEL.5DSF|163320;test_2_reheader_POS=Sniffles2.DEL.8FSF|163320;test_1_reheader_QUAL=Sniffles2.DEL.5DSF|60;test_2_reheader_QUAL=Sniffles2.DEL.8FSF|60;test_1_reheader_FILTERS=Sniffles2.DEL.5DSF|PASS;test_2_reheader_FILTERS=Sniffles2.DEL.8FSF|PASS;test_1_reheader_SAMPLE=Sniffles2.DEL.5DSF|test_1|GT:0/1|GQ:28|DR:15|DV:7;test_2_reheader_SAMPLE=Sniffles2.DEL.8FSF|test_2|GT:0/1|GQ:49|DR:11|DV:8;test_1_reheader_INFO=Sniffles2.DEL.5DSF|PRECISE|SVTYPE:DEL|SVLEN:-111|END:163431|SUPPORT:7|COVERAGE:23:22:22:22:22|STRAND:+-|AF:0.318|STDEV_LEN:1.095|STDEV_POS:10.733|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.DEL.8FSF|PRECISE|SVTYPE:DEL|SVLEN:-111|END:163431|SUPPORT:8|COVERAGE:19:19:19:19:18|STRAND:+-|AF:0.421|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:28:15:7\t0/1:49:11:8", + "chr16\t163591\tSniffles2.DEL.5ESF:test_1_reheader|Sniffles2.DEL.92SF:test_2_reheader\tggaggggaccgtgggaaggagacagtgaggaggggaccttggggaggggacagtgaggaggggaccatggggaggggacagtgaggaggggacaatggagaggggacagtgaggaggggactgtggggagaggacagtgaggaggggaccatggggagggcacagtggggaggggagagtgaggaagggacagtgaggaggggactgtgg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-210;END=163801;SUPPORT=7;COVERAGE=22,22,22,22,21;STRAND=+-;AF=0.318;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;VARID=Sniffles2.DEL.92SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.DEL.5ESF|chr16;test_2_reheader_CHROM=Sniffles2.DEL.92SF|chr16;test_1_reheader_POS=Sniffles2.DEL.5ESF|163591;test_2_reheader_POS=Sniffles2.DEL.92SF|163594;test_1_reheader_QUAL=Sniffles2.DEL.5ESF|60;test_2_reheader_QUAL=Sniffles2.DEL.92SF|60;test_1_reheader_FILTERS=Sniffles2.DEL.5ESF|PASS;test_2_reheader_FILTERS=Sniffles2.DEL.92SF|PASS;test_1_reheader_SAMPLE=Sniffles2.DEL.5ESF|test_1|GT:0/1|GQ:28|DR:15|DV:7;test_2_reheader_SAMPLE=Sniffles2.DEL.92SF|test_2|GT:0/1|GQ:49|DR:11|DV:8;test_1_reheader_INFO=Sniffles2.DEL.5ESF|PRECISE|SVTYPE:DEL|SVLEN:-210|END:163801|SUPPORT:7|COVERAGE:22:22:22:22:21|STRAND:+-|AF:0.318|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.DEL.92SF|PRECISE|SVTYPE:DEL|SVLEN:-209|END:163803|SUPPORT:8|COVERAGE:20:19:19:18:18|STRAND:+-|AF:0.421|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:28:15:7\t0/1:49:11:8", + "chr16\t164801\tSniffles2.INS.FSF:test_1_reheader|Sniffles2.INS.ESF:test_2_reheader\tN\tCGGGGTCGCGGGGCGGGCGGGTCGCGGGGCGGGGTCGCGGGGGCGGGCGAGGTC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=54;END=164801;SUPPORT=8;COVERAGE=21,21,21,21,21;STRAND=+-;AF=0.381;STDEV_LEN=2.16;STDEV_POS=17.972;SUPPORT_LONG=0;FOUND_IN=sniffles;IMPRECISE;VARID=Sniffles2.INS.ESF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.FSF|chr16;test_2_reheader_CHROM=Sniffles2.INS.ESF|chr16;test_1_reheader_POS=Sniffles2.INS.FSF|164801;test_2_reheader_POS=Sniffles2.INS.ESF|164801;test_1_reheader_QUAL=Sniffles2.INS.FSF|60;test_2_reheader_QUAL=Sniffles2.INS.ESF|60;test_1_reheader_FILTERS=Sniffles2.INS.FSF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.ESF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.FSF|test_1|GT:0/1|GQ:43|DR:13|DV:8;test_2_reheader_SAMPLE=Sniffles2.INS.ESF|test_2|GT:0/1|GQ:52|DR:10|DV:8;test_1_reheader_INFO=Sniffles2.INS.FSF|PRECISE|SVTYPE:INS|SVLEN:54|END:164801|SUPPORT:8|COVERAGE:21:21:21:21:21|STRAND:+-|AF:0.381|STDEV_LEN:2.16|STDEV_POS:17.972|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.ESF|IMPRECISE|SVTYPE:INS|SVLEN:59|END:164801|SUPPORT:8|COVERAGE:18:18:18:18:17|STRAND:+-|AF:0.444|STDEV_LEN:5.565|STDEV_POS:38.821|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:43:13:8\t0/1:52:10:8", + "chr16\t182789\tSniffles2.INS.10SF:test_1_reheader|Sniffles2.INS.FSF:test_2_reheader\tN\tTGAAACACCGTCTCTACTAAAAATACAAAAATTAGCCAGGCATAGTGGCGGGCGCCTGTAATCCCAGCTGTTCGGGAGGCTGAGGCAGGACAATCACTTAAACCAGGGAAGCAGAGGTTGCAGTGAGCTGAGATCGAGCCACTGCACTCCAGCCTGGGCGACAGACCGAGACTGTCTCAAAAAAAAGACCGGGCACGGTGGCTCACGCCTGTAATCCCACCACTTTGGGAGGCTGAGGCGGGCTGATCACGATGTCAGGAGATCTAGACCATCCTGGCCAACATGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=286;END=182789;SUPPORT=12;COVERAGE=13,12,12,12,12;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.FSF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.10SF|chr16;test_2_reheader_CHROM=Sniffles2.INS.FSF|chr16;test_1_reheader_POS=Sniffles2.INS.10SF|182789;test_2_reheader_POS=Sniffles2.INS.FSF|182789;test_1_reheader_QUAL=Sniffles2.INS.10SF|60;test_2_reheader_QUAL=Sniffles2.INS.FSF|60;test_1_reheader_FILTERS=Sniffles2.INS.10SF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.FSF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.10SF|test_1|GT:1/1|GQ:33|DR:0|DV:12;test_2_reheader_SAMPLE=Sniffles2.INS.FSF|test_2|GT:1/1|GQ:2|DR:2|DV:8;test_1_reheader_INFO=Sniffles2.INS.10SF|PRECISE|SVTYPE:INS|SVLEN:286|END:182789|SUPPORT:12|COVERAGE:13:12:12:12:12|STRAND:+-|AF:1|STDEV_LEN:0|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.FSF|PRECISE|SVTYPE:INS|SVLEN:286|END:182789|SUPPORT:8|COVERAGE:10:10:10:10:10|STRAND:+-|AF:0.8|STDEV_LEN:0|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:33:0:12\t1/1:2:2:8", + "chr16\t186052\tSniffles2.DEL.5FSF\tggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacgggg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-629;END=186681;SUPPORT=6;COVERAGE=11,11,11,11,11;STRAND=+-;AF=0.545;STDEV_LEN=8.5;STDEV_POS=8.5;FOUND_IN=sniffles;set=test_1_reheader;FOUNDBY=1;test_1_reheader_CHROM=Sniffles2.DEL.5FSF|chr16;test_1_reheader_POS=Sniffles2.DEL.5FSF|186052;test_1_reheader_QUAL=Sniffles2.DEL.5FSF|60;test_1_reheader_FILTERS=Sniffles2.DEL.5FSF|PASS;test_1_reheader_SAMPLE=Sniffles2.DEL.5FSF|test_1|GT:0/1|GQ:33|DR:5|DV:6;test_1_reheader_INFO=Sniffles2.DEL.5FSF|PRECISE|SVTYPE:DEL|SVLEN:-629|END:186681|SUPPORT:6|COVERAGE:11:11:11:11:11|STRAND:+-|AF:0.545|STDEV_LEN:8.5|STDEV_POS:8.5|FOUND_IN:sniffles;svdb_origin=test_1_reheader;SUPP_VEC=10\tGT:GQ:DR:DV\t0/1:33:5:6\t./.:.:.:.", + "chr16\t186294\tSniffles2.DEL.60SF:test_1_reheader|Sniffles2.DEL.96SF:test_2_reheader\tcagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacgggg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-863;END=187157;SUPPORT=5;COVERAGE=11,11,11,11,10;STRAND=+-;AF=0.455;STDEV_LEN=0.577;STDEV_POS=6.928;FOUND_IN=sniffles;IMPRECISE;VARID=Sniffles2.DEL.96SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.DEL.60SF|chr16;test_2_reheader_CHROM=Sniffles2.DEL.96SF|chr16;test_1_reheader_POS=Sniffles2.DEL.60SF|186294;test_2_reheader_POS=Sniffles2.DEL.96SF|186313;test_1_reheader_QUAL=Sniffles2.DEL.60SF|60;test_2_reheader_QUAL=Sniffles2.DEL.96SF|60;test_1_reheader_FILTERS=Sniffles2.DEL.60SF|PASS;test_2_reheader_FILTERS=Sniffles2.DEL.96SF|PASS;test_1_reheader_SAMPLE=Sniffles2.DEL.60SF|test_1|GT:0/1|GQ:33|DR:6|DV:5;test_2_reheader_SAMPLE=Sniffles2.DEL.96SF|test_2|GT:0/1|GQ:10|DR:3|DV:7;test_1_reheader_INFO=Sniffles2.DEL.60SF|PRECISE|SVTYPE:DEL|SVLEN:-863|END:187157|SUPPORT:5|COVERAGE:11:11:11:11:10|STRAND:+-|AF:0.455|STDEV_LEN:0.577|STDEV_POS:6.928|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.DEL.96SF|IMPRECISE|SVTYPE:DEL|SVLEN:-830|END:187143|SUPPORT:7|COVERAGE:10:10:10:10:10|STRAND:+-|AF:0.7|STDEV_LEN:9.815|STDEV_POS:21.245|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:33:6:5\t0/1:10:3:7", + "chr16\t239176\tSniffles2.INS.10SF\tN\tTGTAGTCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATGGCGTGAACCCGGGAGGCGGGGCTTGCAGTGAGCCGAGATCACGCCACTACACTCGAGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAAAAGCAAACATAATGAAAATTAAAAAATTTTTAAAAAAACCCTGCAAACTTGGTGAATTTTTTACCGACTCGTGCTTTGCAAAATTCTTCATGGAACTTAGATTATATCAGGAAGATGTTAAAAAAAAAAAAAAAAAAAAGAATGCTGACTCCTAACCAAATAACTATGAAGCAGATGCTGAGAGATCAAAGGAGCAAATCTAAAAATCATCAGAGATGGGGCCTGGGGGAGAAGTATGCTGGCTTATAGATGAAAATGACTGGCTCTGTGTTGATAACTGTTGATAACTGTTGGACCTGGGTAATGGGTTTATGAGGCTGGTGTTCTCTACTTTTGTTAATGTTTGAGCATTTACATAATAAAGGTTTTTTTTTTTCATTGTATATAGAAATGGACTCACTATGTTGCCCAGGCTGGCCTCAAATTCCCGGGCTCAAGTAGTCCTCCCTCCTCTGCCTCTTGAAGTGCTGAGATTATAGGCATGAGACACCACACCTGGATCAAAGGTTAAAAAAATAATGATAAAAGAAGTAAGTTGAGGCTACTGTGGGCACACTGCCCATGGGTTAGCCCTGCTGTGCAAGGATCAGAAAAAAAAAAAAAAAAGAAATTGAAGCTAAGGCCTAATTAACTGGCTTATCTTGTAGAGTTTAGCAGAAGTGACCAAGTTTAGAGTTATACTTTATCTTTTTCTTTCTCTGCCCCCTACTTAATGAAGGACAAAAATGAGTAACATGGCTGGGTGTGGTGGCTCACGCCTGTCATCCCAGCACTTTGGGAGGCCGAGGTGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCATGGCCAACATGATGAAACCAAAATACAAAAGTTAGCCAGGCGTGGTGGCGGGCGTA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=1020;END=239176;SUPPORT=2;COVERAGE=2,2,2,2,4;STRAND=+;AF=1;STDEV_LEN=1.414;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;set=test_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.INS.10SF|chr16;test_2_reheader_POS=Sniffles2.INS.10SF|239176;test_2_reheader_QUAL=Sniffles2.INS.10SF|60;test_2_reheader_FILTERS=Sniffles2.INS.10SF|PASS;test_2_reheader_SAMPLE=Sniffles2.INS.10SF|test_2|GT:1/1|GQ:5|DR:0|DV:2;test_2_reheader_INFO=Sniffles2.INS.10SF|PRECISE|SVTYPE:INS|SVLEN:1020|END:239176|SUPPORT:2|COVERAGE:2:2:2:2:4|STRAND:+|AF:1|STDEV_LEN:1.414|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t1/1:5:0:2", + "chr16\t318898\tSniffles2.INS.12SF\tN\tGCCAGGGCCTTGGTGAGAGCGGCTCTGACCCCTGGCTGTGCGGAGAGAATGCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=53;END=318898;SUPPORT=4;COVERAGE=12,12,12,12,12;STRAND=+-;AF=0.333;STDEV_LEN=2.082;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;set=test_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.INS.12SF|chr16;test_2_reheader_POS=Sniffles2.INS.12SF|318898;test_2_reheader_QUAL=Sniffles2.INS.12SF|60;test_2_reheader_FILTERS=Sniffles2.INS.12SF|PASS;test_2_reheader_SAMPLE=Sniffles2.INS.12SF|test_2|GT:0/1|GQ:17|DR:8|DV:4;test_2_reheader_INFO=Sniffles2.INS.12SF|PRECISE|SVTYPE:INS|SVLEN:53|END:318898|SUPPORT:4|COVERAGE:12:12:12:12:12|STRAND:+-|AF:0.333|STDEV_LEN:2.082|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:17:8:4", + "chr16\t321645\tSniffles2.INS.13SF\tN\tGGATTCCAACCCACGAAGGGTTAAACCCTCTCATAGCTGGGAATATGAGGTAGAAGGCGGATGCCAACCCACGAAGGGTTAAACCCTCTCATAGCTGGGAATATGAGGTAGAAGGC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=116;END=321645;SUPPORT=8;COVERAGE=16,16,16,15,16;STRAND=+-;AF=0.5;STDEV_LEN=0.548;STDEV_POS=45.616;SUPPORT_LONG=0;FOUND_IN=sniffles;set=test_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.INS.13SF|chr16;test_2_reheader_POS=Sniffles2.INS.13SF|321645;test_2_reheader_QUAL=Sniffles2.INS.13SF|60;test_2_reheader_FILTERS=Sniffles2.INS.13SF|PASS;test_2_reheader_SAMPLE=Sniffles2.INS.13SF|test_2|GT:0/1|GQ:57|DR:8|DV:8;test_2_reheader_INFO=Sniffles2.INS.13SF|IMPRECISE|SVTYPE:INS|SVLEN:116|END:321645|SUPPORT:8|COVERAGE:16:16:16:15:16|STRAND:+-|AF:0.5|STDEV_LEN:0.548|STDEV_POS:45.616|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:57:8:8", + "chr16\t362990\tSniffles2.INS.12SF:test_1_reheader|Sniffles2.INS.14SF:test_2_reheader\tN\tGACTTAGCACCGGGGGGTCTCGGGCTGCGGCTGCTCTCCCA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=42;END=362990;SUPPORT=3;COVERAGE=7,6,6,6,5;STRAND=+-;AF=0.5;STDEV_LEN=0.577;STDEV_POS=9.238;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.14SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.12SF|chr16;test_2_reheader_CHROM=Sniffles2.INS.14SF|chr16;test_1_reheader_POS=Sniffles2.INS.12SF|362990;test_2_reheader_POS=Sniffles2.INS.14SF|362984;test_1_reheader_QUAL=Sniffles2.INS.12SF|60;test_2_reheader_QUAL=Sniffles2.INS.14SF|60;test_1_reheader_FILTERS=Sniffles2.INS.12SF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.14SF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.12SF|test_1|GT:0/1|GQ:21|DR:3|DV:3;test_2_reheader_SAMPLE=Sniffles2.INS.14SF|test_2|GT:0/1|GQ:46|DR:8|DV:12;test_1_reheader_INFO=Sniffles2.INS.12SF|PRECISE|SVTYPE:INS|SVLEN:42|END:362990|SUPPORT:3|COVERAGE:7:6:6:6:5|STRAND:+-|AF:0.5|STDEV_LEN:0.577|STDEV_POS:9.238|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.14SF|PRECISE|SVTYPE:INS|SVLEN:41|END:362984|SUPPORT:12|COVERAGE:20:20:20:20:19|STRAND:+-|AF:0.6|STDEV_LEN:0.408|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:21:3:3\t0/1:46:8:12", + "chr16\t370391\tSniffles2.INS.13SF:test_1_reheader|Sniffles2.INS.16SF:test_2_reheader\tN\tCTACCCTGCCCCGGCTCTCACCCCCTACCCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCGGCTCTCACCCCCTACCCCGGCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCGCTACCCTGCCCCCGGCTCTCACCGCTACCCCCCGGCTCTCACCCGCTACCCCGCCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCCGGCCCCCCGGCTCTCACCTCCTACCCGGCCCCGGCTCTCACCCGCTCCCCCGGCCCCCGGCTCTCACCCGCTCACCCCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCTCGGCTCTCACCCCCTACCCCGGCCCCGGCTCTCACCCCCTACCCCTGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCCGGCTCTCACCCGCTACCCCGGCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGGCTCTCACTCC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=736;END=370391;SUPPORT=7;COVERAGE=7,7,7,7,7;STRAND=+-;AF=1;STDEV_LEN=65.282;STDEV_POS=1.095;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.16SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.13SF|chr16;test_2_reheader_CHROM=Sniffles2.INS.16SF|chr16;test_1_reheader_POS=Sniffles2.INS.13SF|370391;test_2_reheader_POS=Sniffles2.INS.16SF|370391;test_1_reheader_QUAL=Sniffles2.INS.13SF|60;test_2_reheader_QUAL=Sniffles2.INS.16SF|60;test_1_reheader_FILTERS=Sniffles2.INS.13SF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.16SF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.13SF|test_1|GT:1/1|GQ:19|DR:0|DV:7;test_2_reheader_SAMPLE=Sniffles2.INS.16SF|test_2|GT:1/1|GQ:3|DR:3|DV:12;test_1_reheader_INFO=Sniffles2.INS.13SF|IMPRECISE|SVTYPE:INS|SVLEN:736|END:370391|SUPPORT:7|COVERAGE:7:7:7:7:7|STRAND:+-|AF:1|STDEV_LEN:65.282|STDEV_POS:1.095|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.16SF|IMPRECISE|SVTYPE:INS|SVLEN:648|END:370391|SUPPORT:12|COVERAGE:18:15:15:15:18|STRAND:+-|AF:0.8|STDEV_LEN:59.3|STDEV_POS:1.069|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:19:0:7\t1/1:3:3:12", + "chr16\t378308\tSniffles2.INS.14SF:test_1_reheader|Sniffles2.INS.18SF:test_2_reheader\tN\tCCACTCTGACTGCCATCGCCACTCTGACTGCCATCC\t60\tGT\tPRECISE;SVTYPE=INS;SVLEN=36;END=378308;SUPPORT=4;COVERAGE=17,17,17,18,18;STRAND=+-;AF=0.235;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.18SF:test_2_reheader;set=filterIntest_1_reheader-test_2_reheader;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.14SF|chr16;test_2_reheader_CHROM=Sniffles2.INS.18SF|chr16;test_1_reheader_POS=Sniffles2.INS.14SF|378308;test_2_reheader_POS=Sniffles2.INS.18SF|378308;test_1_reheader_QUAL=Sniffles2.INS.14SF|60;test_2_reheader_QUAL=Sniffles2.INS.18SF|60;test_1_reheader_FILTERS=Sniffles2.INS.14SF|GT;test_2_reheader_FILTERS=Sniffles2.INS.18SF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.14SF|test_1|GT:0/1|GQ:3|DR:13|DV:4;test_2_reheader_SAMPLE=Sniffles2.INS.18SF|test_2|GT:0/1|GQ:52|DR:10|DV:8;test_1_reheader_INFO=Sniffles2.INS.14SF|PRECISE|SVTYPE:INS|SVLEN:36|END:378308|SUPPORT:4|COVERAGE:17:17:17:18:18|STRAND:+-|AF:0.235|STDEV_LEN:0|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.18SF|PRECISE|SVTYPE:INS|SVLEN:36|END:378308|SUPPORT:8|COVERAGE:19:18:18:18:18|STRAND:+-|AF:0.444|STDEV_LEN:0.447|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:3:13:4\t0/1:52:10:8", + "chr16\t378517\tSniffles2.INS.15SF:test_1_reheader|Sniffles2.INS.1ASF:test_2_reheader\tN\tGCCATCGCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCTGACTGCCATCGCCACCCACACTGCCATCCCCACCCGCACTGCCATCGCCACCCTGACTGCCATCGCCACCCACAATGCCATCCCCACCCGCACTGCCATCGCCACCCGCACTGCCATCCCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCACACTGCCATC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=240;END=378517;SUPPORT=12;COVERAGE=17,18,18,18,18;STRAND=+-;AF=0.667;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.1ASF:test_2_reheader;set=test_1_reheader-filterIntest_2_reheader;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.15SF|chr16;test_2_reheader_CHROM=Sniffles2.INS.1ASF|chr16;test_1_reheader_POS=Sniffles2.INS.15SF|378517;test_2_reheader_POS=Sniffles2.INS.1ASF|378517;test_1_reheader_QUAL=Sniffles2.INS.15SF|60;test_2_reheader_QUAL=Sniffles2.INS.1ASF|60;test_1_reheader_FILTERS=Sniffles2.INS.15SF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.1ASF|GT;test_1_reheader_SAMPLE=Sniffles2.INS.15SF|test_1|GT:0/1|GQ:26|DR:6|DV:12;test_2_reheader_SAMPLE=Sniffles2.INS.1ASF|test_2|GT:0/0|GQ:11|DR:15|DV:3;test_1_reheader_INFO=Sniffles2.INS.15SF|PRECISE|SVTYPE:INS|SVLEN:240|END:378517|SUPPORT:12|COVERAGE:17:18:18:18:18|STRAND:+-|AF:0.667|STDEV_LEN:0|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.1ASF|PRECISE|SVTYPE:INS|SVLEN:240|END:378517|SUPPORT:3|COVERAGE:19:18:18:18:18|STRAND:+-|AF:0.167|STDEV_LEN:0|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:26:6:12\t0/0:11:15:3", + "chr16\t397717\tSniffles2.INS.16SF:test_1_reheader|Sniffles2.INS.1DSF:test_2_reheader\tN\tTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGTGGGGGTGGGGGTGTGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGTGAGGGAGTCGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGTGAGGGAGTCGGGGGGTGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGGC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=491;END=397717;SUPPORT=3;COVERAGE=3,3,3,3,3;STRAND=+-;AF=1;STDEV_LEN=2.309;STDEV_POS=5.196;SUPPORT_LONG=0;FOUND_IN=sniffles;IMPRECISE;VARID=Sniffles2.INS.1DSF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.16SF|chr16;test_2_reheader_CHROM=Sniffles2.INS.1DSF|chr16;test_1_reheader_POS=Sniffles2.INS.16SF|397717;test_2_reheader_POS=Sniffles2.INS.1DSF|397727;test_1_reheader_QUAL=Sniffles2.INS.16SF|60;test_2_reheader_QUAL=Sniffles2.INS.1DSF|60;test_1_reheader_FILTERS=Sniffles2.INS.16SF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.1DSF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.16SF|test_1|GT:1/1|GQ:8|DR:0|DV:3;test_2_reheader_SAMPLE=Sniffles2.INS.1DSF|test_2|GT:0/1|GQ:9|DR:4|DV:11;test_1_reheader_INFO=Sniffles2.INS.16SF|PRECISE|SVTYPE:INS|SVLEN:491|END:397717|SUPPORT:3|COVERAGE:3:3:3:3:3|STRAND:+-|AF:1|STDEV_LEN:2.309|STDEV_POS:5.196|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.1DSF|IMPRECISE|SVTYPE:INS|SVLEN:506|END:397727|SUPPORT:11|COVERAGE:18:15:15:15:16|STRAND:+-|AF:0.733|STDEV_LEN:34.854|STDEV_POS:7.448|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:8:0:3\t0/1:9:4:11", + "chr16\t410360\tSniffles2.DEL.99SF\ttcttccgggtgggtgcctcgtgcgctctgtgagaag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-36;END=410396;SUPPORT=7;COVERAGE=15,14,14,14,12;STRAND=+-;AF=0.5;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;set=test_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.DEL.99SF|chr16;test_2_reheader_POS=Sniffles2.DEL.99SF|410360;test_2_reheader_QUAL=Sniffles2.DEL.99SF|60;test_2_reheader_FILTERS=Sniffles2.DEL.99SF|PASS;test_2_reheader_SAMPLE=Sniffles2.DEL.99SF|test_2|GT:0/1|GQ:50|DR:7|DV:7;test_2_reheader_INFO=Sniffles2.DEL.99SF|PRECISE|SVTYPE:DEL|SVLEN:-36|END:410396|SUPPORT:7|COVERAGE:15:14:14:14:12|STRAND:+-|AF:0.5|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:50:7:7", + "chr16\t433138\tSniffles2.INS.21SF\tN\tATTCTCCTGCCTCAGCCTCCCAAGAAGCTGGGACTACAGGCGCCCGCCACCACGCCCGGCTAATTTTTATATTTTTAGTAGAGACGAAGTTTCACCATGTTAGCCAGGATGGTCTCCATCTCCTGACCTCGTGATCTGCCCACCTCGGCCTCCCAAAGTGCTGGGATTACAGGCATGAGCTACTGTGCCCGGCCTGTCATTTTTATATATTGGGAAAGTTTTGAGTCCTTTCTCTAGGTATGTTGAAATATACAGGCATGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGTCCGAGGCGGGTGAATCACGAGGTCAGGAGATCGAGACCATCCTGGCTAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAAAAATTAGCCAGGCATGGTGGTGGGCGCCTGTAGTCCCAGCTACTCCAGAGGCTGAGGCAGGAGAATGGCGTGAACCTGAGCTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACTGAGCAAGACTCTGTCTCAAAAAAAAAAAAAAAGAAATATACAATATATTGTTGTTAAATTTAGTCACCCTACTCTGCTACCAAACATTAGAACTTATCCTTTGTCTCATTGTAATTTTTTTTTTTTTGAGATGGGGTCTCGCTCTGTCGCCCAGGCTGGAGTGCAGTGGCGCTATCTTGGCTCACTGCAACCTCCACCTCCCAGGTTCAAGCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=725;END=433138;SUPPORT=2;COVERAGE=4,4,4,4,3;STRAND=+-;AF=0.5;STDEV_LEN=0.707;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;set=test_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.INS.21SF|chr16;test_2_reheader_POS=Sniffles2.INS.21SF|433138;test_2_reheader_QUAL=Sniffles2.INS.21SF|60;test_2_reheader_FILTERS=Sniffles2.INS.21SF|PASS;test_2_reheader_SAMPLE=Sniffles2.INS.21SF|test_2|GT:0/1|GQ:14|DR:2|DV:2;test_2_reheader_INFO=Sniffles2.INS.21SF|PRECISE|SVTYPE:INS|SVLEN:725|END:433138|SUPPORT:2|COVERAGE:4:4:4:4:3|STRAND:+-|AF:0.5|STDEV_LEN:0.707|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:14:2:2", + "chr16\t433317\tSniffles2.DEL.9CSF\tcaccgctcattgcatatttctaaccattaaccgtgctctttaccctcctgatgcttcccagcctctgatatcaatcgctctattctctacctccattagatccacttttctagctcccacataagagtaaaaacgtgatatttgtctttctctgcctgtct\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-161;END=433478;SUPPORT=2;COVERAGE=4,4,4,3,3;STRAND=+-;AF=0.5;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;set=test_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.DEL.9CSF|chr16;test_2_reheader_POS=Sniffles2.DEL.9CSF|433317;test_2_reheader_QUAL=Sniffles2.DEL.9CSF|60;test_2_reheader_FILTERS=Sniffles2.DEL.9CSF|PASS;test_2_reheader_SAMPLE=Sniffles2.DEL.9CSF|test_2|GT:0/1|GQ:14|DR:2|DV:2;test_2_reheader_INFO=Sniffles2.DEL.9CSF|PRECISE|SVTYPE:DEL|SVLEN:-161|END:433478|SUPPORT:2|COVERAGE:4:4:4:3:3|STRAND:+-|AF:0.5|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:14:2:2", + "chr16\t492363\tSniffles2.INS.22SF\tN\tTCCCGGGGGACCCGAGGCCACCCCGGCCCTCCCGGGAGACCCGAGGCCGCCCAGGGCCCTCCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCGGGAGACCCGAGGCCGCCCCAAGCCCCCTCCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCGGGAGACCCGCGAGGCCGCCCAGAGCCCTCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCCGGGAGACCCGAGGCCGTCCAGGGCCCTCCCCGGGAGACCCGAGGCCGCCCAGGGCCCTTCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCGGGGAGACCCGAGGCCGCCCAGGGCCCTCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCCGGGAGACCCGGGAGCGATCCCAGGGCCCCTCCCGGGGAGACCCGAGGCCGCCCAGGGCCCTCCCCGGGAGACCCGAGGCCGCCCAGGGCCCTTCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCGGGGAGACCCGAGGCCGCCCAGGGCCCTCCCGGGAGACCCGAGGCCGCCCCAAGCCCTCCCCGGGAGACCCGAGGCCGTCCAGGGCCCTTCCCGGGGAGACCCGAGGCCGCCCAGGGCCCTCCCCGGGAGACCCGAGGCCGCCCAGGGCCCTTCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCGGGGAGACCCGAGGCCGCCCAGGGCCCTCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCCGGGAGACCCGAGGCCGCCCAGGGCCCTCCCGGGAGACCCGAGGCCGCCCAGGGCCCTCCCCGGGAGACCCGAGGCCGCCCAGGGCCCTCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCCGGGAGACCCGAGGCCGCCCAGGGCCCTCCCCGGGAGACCCGAGGCCGCCCCAGGGCCCTCCCCGGGAGACCCGAGGCCGCCCAGGGCCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=1083;END=492363;SUPPORT=2;COVERAGE=2,2,2,2,2;STRAND=+;AF=1;STDEV_LEN=4.243;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;set=test_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.INS.22SF|chr16;test_2_reheader_POS=Sniffles2.INS.22SF|492363;test_2_reheader_QUAL=Sniffles2.INS.22SF|60;test_2_reheader_FILTERS=Sniffles2.INS.22SF|PASS;test_2_reheader_SAMPLE=Sniffles2.INS.22SF|test_2|GT:1/1|GQ:5|DR:0|DV:2;test_2_reheader_INFO=Sniffles2.INS.22SF|PRECISE|SVTYPE:INS|SVLEN:1083|END:492363|SUPPORT:2|COVERAGE:2:2:2:2:2|STRAND:+|AF:1|STDEV_LEN:4.243|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t1/1:5:0:2", + "chr16\t494828\tSniffles2.INS.23SF\tN\tGGGAGGTCGAGGCTGCAGAGGTGGCAGGATCACATGATCCTGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCAGAGGTGGCAGGATCACATGATCCTGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCAGAGGTGGCAGGATCACATGATCCTGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATAGCATGAGCCTGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGATCCTGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGATCCTGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGGCGGATCACATGAGCCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=2706;END=494828;SUPPORT=2;COVERAGE=2,2,2,2,2;STRAND=+;AF=1;STDEV_LEN=2.121;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;set=test_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.INS.23SF|chr16;test_2_reheader_POS=Sniffles2.INS.23SF|494828;test_2_reheader_QUAL=Sniffles2.INS.23SF|60;test_2_reheader_FILTERS=Sniffles2.INS.23SF|PASS;test_2_reheader_SAMPLE=Sniffles2.INS.23SF|test_2|GT:1/1|GQ:11|DR:0|DV:4;test_2_reheader_INFO=Sniffles2.INS.23SF|PRECISE|SVTYPE:INS|SVLEN:2706|END:494828|SUPPORT:2|COVERAGE:2:2:2:2:2|STRAND:+|AF:1|STDEV_LEN:2.121|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t1/1:11:0:4", + "chr16\t504280\tSniffles2.INS.17SF:test_1_reheader|Sniffles2.INS.24SF:test_2_reheader\tN\tTCCATCTCCTCCTGTACCCCCTCACCTCCTTGTGCACCCCCTCACCTCCTGTACCCCCTCACCTCCTCTGTA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=74;END=504280;SUPPORT=4;COVERAGE=4,4,4,4,4;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.24SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.17SF|chr16;test_2_reheader_CHROM=Sniffles2.INS.24SF|chr16;test_1_reheader_POS=Sniffles2.INS.17SF|504280;test_2_reheader_POS=Sniffles2.INS.24SF|504280;test_1_reheader_QUAL=Sniffles2.INS.17SF|60;test_2_reheader_QUAL=Sniffles2.INS.24SF|60;test_1_reheader_FILTERS=Sniffles2.INS.17SF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.24SF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.17SF|test_1|GT:1/1|GQ:11|DR:0|DV:4;test_2_reheader_SAMPLE=Sniffles2.INS.24SF|test_2|GT:0/1|GQ:0|DR:2|DV:7;test_1_reheader_INFO=Sniffles2.INS.17SF|PRECISE|SVTYPE:INS|SVLEN:74|END:504280|SUPPORT:4|COVERAGE:4:4:4:4:4|STRAND:+-|AF:1|STDEV_LEN:0|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.24SF|PRECISE|SVTYPE:INS|SVLEN:74|END:504280|SUPPORT:7|COVERAGE:9:9:9:10:13|STRAND:+-|AF:0.778|STDEV_LEN:0|STDEV_POS:13.416|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:11:0:4\t0/1:0:2:7", + "chr16\t504419\tSniffles2.INS.18SF:test_1_reheader|Sniffles2.INS.26SF:test_2_reheader\tN\tTCACCTCCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCTCACCTCCTCCTGTACCCCTCACCTCCTTGTGCACCCCCTCACCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCCTCACCTCCTCCTGTACCCCCTCACCTCCTTGTGCACCCCCTCACCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCCTCACCTCCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=256;END=504419;SUPPORT=4;COVERAGE=4,4,4,4,5;STRAND=+-;AF=1;STDEV_LEN=0.707;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.26SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.18SF|chr16;test_2_reheader_CHROM=Sniffles2.INS.26SF|chr16;test_1_reheader_POS=Sniffles2.INS.18SF|504419;test_2_reheader_POS=Sniffles2.INS.26SF|504419;test_1_reheader_QUAL=Sniffles2.INS.18SF|60;test_2_reheader_QUAL=Sniffles2.INS.26SF|60;test_1_reheader_FILTERS=Sniffles2.INS.18SF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.26SF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.18SF|test_1|GT:1/1|GQ:11|DR:0|DV:4;test_2_reheader_SAMPLE=Sniffles2.INS.26SF|test_2|GT:0/1|GQ:20|DR:4|DV:7;test_1_reheader_INFO=Sniffles2.INS.18SF|PRECISE|SVTYPE:INS|SVLEN:256|END:504419|SUPPORT:4|COVERAGE:4:4:4:4:5|STRAND:+-|AF:1|STDEV_LEN:0.707|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.26SF|PRECISE|SVTYPE:INS|SVLEN:224|END:504419|SUPPORT:7|COVERAGE:9:10:11:11:13|STRAND:+-|AF:0.636|STDEV_LEN:15.566|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:11:0:4\t0/1:20:4:7", + "chr16\t507740\tSniffles2.INS.28SF\tN\tCGTTTCCCGTTTTCAGTATCATCTGCCCGTTCTGAGCCATTTGCTCTCTAGCCCTACCATACAGCTGTCATCCTAAGGTCC\t60\tGT\tPRECISE;SVTYPE=INS;SVLEN=81;END=507740;SUPPORT=3;COVERAGE=14,14,14,14,16;STRAND=+;AF=0.214;STDEV_LEN=0;STDEV_POS=0.577;SUPPORT_LONG=0;FOUND_IN=sniffles;set=filterIntest_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.INS.28SF|chr16;test_2_reheader_POS=Sniffles2.INS.28SF|507740;test_2_reheader_QUAL=Sniffles2.INS.28SF|60;test_2_reheader_FILTERS=Sniffles2.INS.28SF|GT;test_2_reheader_SAMPLE=Sniffles2.INS.28SF|test_2|GT:0/0|GQ:0|DR:11|DV:3;test_2_reheader_INFO=Sniffles2.INS.28SF|PRECISE|SVTYPE:INS|SVLEN:81|END:507740|SUPPORT:3|COVERAGE:14:14:14:14:16|STRAND:+|AF:0.214|STDEV_LEN:0|STDEV_POS:0.577|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t0/0:0:11:3", + "chr16\t507831\tSniffles2.INS.19SF\tN\tTTCAGTATCATCTGCCCGTTCTGAGCCATTTGCTCTCTAGCCCTACCATACAGCTGCCATCCTAAGAGTACGTTTCCCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=81;END=507831;SUPPORT=4;COVERAGE=5,5,5,5,7;STRAND=+-;AF=0.8;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;set=test_1_reheader;FOUNDBY=1;test_1_reheader_CHROM=Sniffles2.INS.19SF|chr16;test_1_reheader_POS=Sniffles2.INS.19SF|507831;test_1_reheader_QUAL=Sniffles2.INS.19SF|60;test_1_reheader_FILTERS=Sniffles2.INS.19SF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.19SF|test_1|GT:1/1|GQ:1|DR:1|DV:4;test_1_reheader_INFO=Sniffles2.INS.19SF|PRECISE|SVTYPE:INS|SVLEN:81|END:507831|SUPPORT:4|COVERAGE:5:5:5:5:7|STRAND:+-|AF:0.8|STDEV_LEN:0|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader;SUPP_VEC=10\tGT:GQ:DR:DV\t1/1:1:1:4\t./.:.:.:.", + "chr16\t534179\tSniffles2.INS.1ASF:test_1_reheader|Sniffles2.INS.2CSF:test_2_reheader\tN\tGGGCCGTGGTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACGGGGCCGTGGTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACGGGGCCGTGGTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=162;END=534179;SUPPORT=5;COVERAGE=5,5,5,5,4;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.2CSF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.1ASF|chr16;test_2_reheader_CHROM=Sniffles2.INS.2CSF|chr16;test_1_reheader_POS=Sniffles2.INS.1ASF|534179;test_2_reheader_POS=Sniffles2.INS.2CSF|534179;test_1_reheader_QUAL=Sniffles2.INS.1ASF|60;test_2_reheader_QUAL=Sniffles2.INS.2CSF|60;test_1_reheader_FILTERS=Sniffles2.INS.1ASF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.2CSF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.1ASF|test_1|GT:1/1|GQ:13|DR:0|DV:5;test_2_reheader_SAMPLE=Sniffles2.INS.2CSF|test_2|GT:1/1|GQ:11|DR:3|DV:15;test_1_reheader_INFO=Sniffles2.INS.1ASF|PRECISE|SVTYPE:INS|SVLEN:162|END:534179|SUPPORT:5|COVERAGE:5:5:5:5:4|STRAND:+-|AF:1|STDEV_LEN:0|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.2CSF|PRECISE|SVTYPE:INS|SVLEN:216|END:534179|SUPPORT:15|COVERAGE:19:18:18:17:17|STRAND:+-|AF:0.833|STDEV_LEN:18.992|STDEV_POS:1.897|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:13:0:5\t1/1:11:3:15", + "chr16\t544781\tSniffles2.INS.1BSF:test_1_reheader|Sniffles2.INS.2DSF:test_2_reheader\tN\tCGTCTCCCCCACGTCGCCTCCCCCCACGTCGCCTCCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCTCACGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGTCGC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=344;END=544781;SUPPORT=8;COVERAGE=8,8,8,8,8;STRAND=+-;AF=1;STDEV_LEN=4.69;STDEV_POS=25.5;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.2DSF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.1BSF|chr16;test_2_reheader_CHROM=Sniffles2.INS.2DSF|chr16;test_1_reheader_POS=Sniffles2.INS.1BSF|544781;test_2_reheader_POS=Sniffles2.INS.2DSF|544781;test_1_reheader_QUAL=Sniffles2.INS.1BSF|60;test_2_reheader_QUAL=Sniffles2.INS.2DSF|60;test_1_reheader_FILTERS=Sniffles2.INS.1BSF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.2DSF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.1BSF|test_1|GT:1/1|GQ:22|DR:0|DV:8;test_2_reheader_SAMPLE=Sniffles2.INS.2DSF|test_2|GT:1/1|GQ:21|DR:2|DV:15;test_1_reheader_INFO=Sniffles2.INS.1BSF|IMPRECISE|SVTYPE:INS|SVLEN:344|END:544781|SUPPORT:8|COVERAGE:8:8:8:8:8|STRAND:+-|AF:1|STDEV_LEN:4.69|STDEV_POS:25.5|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.2DSF|IMPRECISE|SVTYPE:INS|SVLEN:348|END:544781|SUPPORT:15|COVERAGE:17:17:17:17:17|STRAND:+-|AF:0.882|STDEV_LEN:5.196|STDEV_POS:28.465|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:22:0:8\t1/1:21:2:15", + "chr16\t550769\tSniffles2.INS.1CSF:test_1_reheader|Sniffles2.INS.2ESF:test_2_reheader\tN\tCGGTGAGGGTCCCCGGTCGGTGAGGGCGCCCCGTCAGTGAGGGTCCCGGTCAGTGAGGGCCCCGGTCGGTGAGGGTCCCCGGTCGGTGAGGGCCCCTGTCGGTGAGGGCCCCGGTCGGTGAGGGACCCGGTCGGTGAGGGCCCCCTGTCGGTGAGGGTCCCCTGTCGGTGAGGGCCCCGGTCGGTGAGGGCCCCGGTCGGTGAGGGTCCCCTGTCGGTGAGGGTCCCCTGTCGGTGAGGGTCCCGGTCGGTGAGGGCCCCGGTCGGTGAGGGTGCCCCGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=280;END=550769;SUPPORT=13;COVERAGE=13,13,13,13,13;STRAND=+-;AF=1;STDEV_LEN=1;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.2ESF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.1CSF|chr16;test_2_reheader_CHROM=Sniffles2.INS.2ESF|chr16;test_1_reheader_POS=Sniffles2.INS.1CSF|550769;test_2_reheader_POS=Sniffles2.INS.2ESF|550769;test_1_reheader_QUAL=Sniffles2.INS.1CSF|60;test_2_reheader_QUAL=Sniffles2.INS.2ESF|60;test_1_reheader_FILTERS=Sniffles2.INS.1CSF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.2ESF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.1CSF|test_1|GT:1/1|GQ:36|DR:0|DV:13;test_2_reheader_SAMPLE=Sniffles2.INS.2ESF|test_2|GT:1/1|GQ:38|DR:2|DV:21;test_1_reheader_INFO=Sniffles2.INS.1CSF|PRECISE|SVTYPE:INS|SVLEN:280|END:550769|SUPPORT:13|COVERAGE:13:13:13:13:13|STRAND:+-|AF:1|STDEV_LEN:1|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.2ESF|PRECISE|SVTYPE:INS|SVLEN:280|END:550769|SUPPORT:21|COVERAGE:23:23:23:23:24|STRAND:+-|AF:0.913|STDEV_LEN:0.65|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:36:0:13\t1/1:38:2:21", + "chr16\t553057\tSniffles2.INS.1DSF:test_1_reheader|Sniffles2.INS.2FSF:test_2_reheader\tN\tTGCCCCCCACCCCTGCACAGGTGCCCCCTCCCCTACCCCGCTGCACCCACACCCAACTCGTGCCCCCCCACCCCTGCACAGGTGCCCCCTCCCCTACCCCGCTGCACCCACACCCAACTCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=121;END=553057;SUPPORT=6;COVERAGE=12,11,11,11,10;STRAND=+-;AF=0.545;STDEV_LEN=0.577;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.2FSF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.1DSF|chr16;test_2_reheader_CHROM=Sniffles2.INS.2FSF|chr16;test_1_reheader_POS=Sniffles2.INS.1DSF|553057;test_2_reheader_POS=Sniffles2.INS.2FSF|553059;test_1_reheader_QUAL=Sniffles2.INS.1DSF|60;test_2_reheader_QUAL=Sniffles2.INS.2FSF|60;test_1_reheader_FILTERS=Sniffles2.INS.1DSF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.2FSF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.1DSF|test_1|GT:0/1|GQ:33|DR:5|DV:6;test_2_reheader_SAMPLE=Sniffles2.INS.2FSF|test_2|GT:0/1|GQ:59|DR:11|DV:9;test_1_reheader_INFO=Sniffles2.INS.1DSF|PRECISE|SVTYPE:INS|SVLEN:121|END:553057|SUPPORT:6|COVERAGE:12:11:11:11:10|STRAND:+-|AF:0.545|STDEV_LEN:0.577|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.2FSF|PRECISE|SVTYPE:INS|SVLEN:122|END:553059|SUPPORT:9|COVERAGE:21:20:20:20:19|STRAND:+-|AF:0.45|STDEV_LEN:0.983|STDEV_POS:9.709|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:33:5:6\t0/1:59:11:9", + "chr16\t571110\tSniffles2.INS.1FSF:test_1_reheader|Sniffles2.INS.30SF:test_2_reheader\tN\tTGGCTAGCCTGTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTGTGTGTGTCTGGCTAGCCTGGTGCCCGTGTGTGTGTGTATGTGTGTGTGTGTGTGTGTGTCTGGCTAGCTGGCGCCCGTGGCTAGCCTGGTGCCCGTGTGTGTGTGTATGTATGTGTCTGGCTAGCCTGGTGCCCGTGGCTAGCCTGGTGCCCGTGTGTGTGTGTGTGGGGGGGGCTAGCCTTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTCTGGCTAGCGTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTGTGTGTGCTAGCCTGGCGCCCGTGTGTGTGTGTGTGTGTGTCTGGCTAGCCTGGCACCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=358;END=571110;SUPPORT=16;COVERAGE=18,17,16,16,18;STRAND=+-;AF=1;STDEV_LEN=3.78;STDEV_POS=14.714;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.30SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.1FSF|chr16;test_2_reheader_CHROM=Sniffles2.INS.30SF|chr16;test_1_reheader_POS=Sniffles2.INS.1FSF|571110;test_2_reheader_POS=Sniffles2.INS.30SF|571110;test_1_reheader_QUAL=Sniffles2.INS.1FSF|60;test_2_reheader_QUAL=Sniffles2.INS.30SF|60;test_1_reheader_FILTERS=Sniffles2.INS.1FSF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.30SF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.1FSF|test_1|GT:1/1|GQ:44|DR:0|DV:16;test_2_reheader_SAMPLE=Sniffles2.INS.30SF|test_2|GT:0/1|GQ:27|DR:5|DV:8;test_1_reheader_INFO=Sniffles2.INS.1FSF|PRECISE|SVTYPE:INS|SVLEN:358|END:571110|SUPPORT:16|COVERAGE:18:17:16:16:18|STRAND:+-|AF:1|STDEV_LEN:3.78|STDEV_POS:14.714|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.30SF|PRECISE|SVTYPE:INS|SVLEN:356|END:571110|SUPPORT:8|COVERAGE:15:13:13:13:13|STRAND:+-|AF:0.615|STDEV_LEN:3.578|STDEV_POS:15.652|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:44:0:16\t0/1:27:5:8", + "chr16\t579380\tSniffles2.DEL.62SF\tcagagaagagacagacacacagccccgaaggtggtgcaggcacaggccctagaggtgccccgggcccagagactagagatgccccgggcccggagactagaggtgccccgggcccggaga\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-120;END=579500;SUPPORT=6;COVERAGE=11,11,11,11,10;STRAND=+-;AF=0.545;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;set=test_1_reheader;FOUNDBY=1;test_1_reheader_CHROM=Sniffles2.DEL.62SF|chr16;test_1_reheader_POS=Sniffles2.DEL.62SF|579380;test_1_reheader_QUAL=Sniffles2.DEL.62SF|60;test_1_reheader_FILTERS=Sniffles2.DEL.62SF|PASS;test_1_reheader_SAMPLE=Sniffles2.DEL.62SF|test_1|GT:0/1|GQ:33|DR:5|DV:6;test_1_reheader_INFO=Sniffles2.DEL.62SF|PRECISE|SVTYPE:DEL|SVLEN:-120|END:579500|SUPPORT:6|COVERAGE:11:11:11:11:10|STRAND:+-|AF:0.545|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader;SUPP_VEC=10\tGT:GQ:DR:DV\t0/1:33:5:6\t./.:.:.:.", + "chr16\t579477\tSniffles2.DEL.A0SF\ttagaggtgccccgggcccggagactagaggtgccccgggcccggagactagaggtgccccgggcccggagact\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-73;END=579550;SUPPORT=16;COVERAGE=18,18,20,22,22;STRAND=+-;AF=0.8;STDEV_LEN=18.145;STDEV_POS=50.055;FOUND_IN=sniffles;set=test_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.DEL.A0SF|chr16;test_2_reheader_POS=Sniffles2.DEL.A0SF|579477;test_2_reheader_QUAL=Sniffles2.DEL.A0SF|60;test_2_reheader_FILTERS=Sniffles2.DEL.A0SF|PASS;test_2_reheader_SAMPLE=Sniffles2.DEL.A0SF|test_2|GT:1/1|GQ:4|DR:4|DV:16;test_2_reheader_INFO=Sniffles2.DEL.A0SF|IMPRECISE|SVTYPE:DEL|SVLEN:-73|END:579550|SUPPORT:16|COVERAGE:18:18:20:22:22|STRAND:+-|AF:0.8|STDEV_LEN:18.145|STDEV_POS:50.055|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t1/1:4:4:16", + "chr16\t579636\tSniffles2.DEL.61SF\tcccggagactagaggtgccccgggcccggagactagaggtgccccgggcccggagacttgaggtgccccggg\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-72;END=579708;SUPPORT=5;COVERAGE=11,11,11,10,10;STRAND=+-;AF=0.455;STDEV_LEN=11.5;STDEV_POS=105.434;FOUND_IN=sniffles;set=test_1_reheader;FOUNDBY=1;test_1_reheader_CHROM=Sniffles2.DEL.61SF|chr16;test_1_reheader_POS=Sniffles2.DEL.61SF|579636;test_1_reheader_QUAL=Sniffles2.DEL.61SF|60;test_1_reheader_FILTERS=Sniffles2.DEL.61SF|PASS;test_1_reheader_SAMPLE=Sniffles2.DEL.61SF|test_1|GT:0/1|GQ:33|DR:6|DV:5;test_1_reheader_INFO=Sniffles2.DEL.61SF|IMPRECISE|SVTYPE:DEL|SVLEN:-72|END:579708|SUPPORT:5|COVERAGE:11:11:11:10:10|STRAND:+-|AF:0.455|STDEV_LEN:11.5|STDEV_POS:105.434|FOUND_IN:sniffles;svdb_origin=test_1_reheader;SUPP_VEC=10\tGT:GQ:DR:DV\t0/1:33:6:5\t./.:.:.:.", + "chr16\t584946\tSniffles2.DEL.A2SF\tctcccgctccccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctccccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctccccccagctgcccaccgggtccaccaacacccccaacctgtg\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-155;END=585101;SUPPORT=18;COVERAGE=23,23,23,22,21;STRAND=+-;AF=0.783;STDEV_LEN=0.775;STDEV_POS=76.512;FOUND_IN=sniffles;set=test_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.DEL.A2SF|chr16;test_2_reheader_POS=Sniffles2.DEL.A2SF|584946;test_2_reheader_QUAL=Sniffles2.DEL.A2SF|60;test_2_reheader_FILTERS=Sniffles2.DEL.A2SF|PASS;test_2_reheader_SAMPLE=Sniffles2.DEL.A2SF|test_2|GT:1/1|GQ:0|DR:5|DV:18;test_2_reheader_INFO=Sniffles2.DEL.A2SF|IMPRECISE|SVTYPE:DEL|SVLEN:-155|END:585101|SUPPORT:18|COVERAGE:23:23:23:22:21|STRAND:+-|AF:0.783|STDEV_LEN:0.775|STDEV_POS:76.512|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t1/1:0:5:18", + "chr16\t585059\tSniffles2.DEL.63SF\tcccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctccccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctccccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctc\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-156;END=585215;SUPPORT=6;COVERAGE=6,6,6,6,6;STRAND=+-;AF=1;STDEV_LEN=0.5;STDEV_POS=56.518;FOUND_IN=sniffles;set=test_1_reheader;FOUNDBY=1;test_1_reheader_CHROM=Sniffles2.DEL.63SF|chr16;test_1_reheader_POS=Sniffles2.DEL.63SF|585059;test_1_reheader_QUAL=Sniffles2.DEL.63SF|60;test_1_reheader_FILTERS=Sniffles2.DEL.63SF|PASS;test_1_reheader_SAMPLE=Sniffles2.DEL.63SF|test_1|GT:1/1|GQ:16|DR:0|DV:6;test_1_reheader_INFO=Sniffles2.DEL.63SF|IMPRECISE|SVTYPE:DEL|SVLEN:-156|END:585215|SUPPORT:6|COVERAGE:6:6:6:6:6|STRAND:+-|AF:1|STDEV_LEN:0.5|STDEV_POS:56.518|FOUND_IN:sniffles;svdb_origin=test_1_reheader;SUPP_VEC=10\tGT:GQ:DR:DV\t1/1:16:0:6\t./.:.:.:.", + "chr16\t587440\tSniffles2.INS.20SF:test_1_reheader|Sniffles2.INS.33SF:test_2_reheader\tN\tTCCCTCCCTTCACTGGGCCTGCTGCCCCAGAGTCCA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=36;END=587440;SUPPORT=5;COVERAGE=5,5,5,5,5;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=41.569;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.33SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.20SF|chr16;test_2_reheader_CHROM=Sniffles2.INS.33SF|chr16;test_1_reheader_POS=Sniffles2.INS.20SF|587440;test_2_reheader_POS=Sniffles2.INS.33SF|587440;test_1_reheader_QUAL=Sniffles2.INS.20SF|60;test_2_reheader_QUAL=Sniffles2.INS.33SF|60;test_1_reheader_FILTERS=Sniffles2.INS.20SF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.33SF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.20SF|test_1|GT:1/1|GQ:13|DR:0|DV:5;test_2_reheader_SAMPLE=Sniffles2.INS.33SF|test_2|GT:1/1|GQ:24|DR:2|DV:16;test_1_reheader_INFO=Sniffles2.INS.20SF|IMPRECISE|SVTYPE:INS|SVLEN:36|END:587440|SUPPORT:5|COVERAGE:5:5:5:5:5|STRAND:+-|AF:1|STDEV_LEN:0|STDEV_POS:41.569|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.33SF|IMPRECISE|SVTYPE:INS|SVLEN:36|END:587440|SUPPORT:16|COVERAGE:20:20:18:17:17|STRAND:+-|AF:0.889|STDEV_LEN:0|STDEV_POS:29.087|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:13:0:5\t1/1:24:2:16", + "chr16\t599821\tSniffles2.INS.34SF\tN\tAAGGTTTGTTTCCTCGTGGCATCAGTCAGCGTGGATTGGGCAAGGTTTTGTTCCCTCGTGGCATCAGTCAGCGTGGACG\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=81;END=599821;SUPPORT=9;COVERAGE=10,10,10,10,8;STRAND=+-;AF=0.9;STDEV_LEN=1.169;STDEV_POS=76.821;SUPPORT_LONG=0;FOUND_IN=sniffles;set=test_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.INS.34SF|chr16;test_2_reheader_POS=Sniffles2.INS.34SF|599821;test_2_reheader_QUAL=Sniffles2.INS.34SF|60;test_2_reheader_FILTERS=Sniffles2.INS.34SF|PASS;test_2_reheader_SAMPLE=Sniffles2.INS.34SF|test_2|GT:1/1|GQ:15|DR:1|DV:9;test_2_reheader_INFO=Sniffles2.INS.34SF|IMPRECISE|SVTYPE:INS|SVLEN:81|END:599821|SUPPORT:9|COVERAGE:10:10:10:10:8|STRAND:+-|AF:0.9|STDEV_LEN:1.169|STDEV_POS:76.821|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t1/1:15:1:9", + "chr16\t606435\tSniffles2.INS.35SF\tN\tCAGTCCTGCTTTTCTTGGTCCCTCAGTCCAGTGTGGGTTTCCCTGGGCTGAAGTCAAGGTGTTGGCTGACACA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=66;END=606435;SUPPORT=10;COVERAGE=8,10,10,10,14;STRAND=+-;AF=1;STDEV_LEN=1.225;STDEV_POS=97.931;SUPPORT_LONG=0;FOUND_IN=sniffles;set=test_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.INS.35SF|chr16;test_2_reheader_POS=Sniffles2.INS.35SF|606435;test_2_reheader_QUAL=Sniffles2.INS.35SF|60;test_2_reheader_FILTERS=Sniffles2.INS.35SF|PASS;test_2_reheader_SAMPLE=Sniffles2.INS.35SF|test_2|GT:1/1|GQ:27|DR:0|DV:10;test_2_reheader_INFO=Sniffles2.INS.35SF|IMPRECISE|SVTYPE:INS|SVLEN:66|END:606435|SUPPORT:10|COVERAGE:8:10:10:10:14|STRAND:+-|AF:1|STDEV_LEN:1.225|STDEV_POS:97.931|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t1/1:27:0:10", + "chr16\t611747\tSniffles2.DEL.A4SF\tgcctgtagattcaagagcagggacagccgccctggcctgtagaatcaagagcaagggacagccgccttc\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-69;END=611816;SUPPORT=7;COVERAGE=12,12,12,12,12;STRAND=+-;AF=0.583;STDEV_LEN=0;STDEV_POS=49.641;FOUND_IN=sniffles;set=test_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.DEL.A4SF|chr16;test_2_reheader_POS=Sniffles2.DEL.A4SF|611747;test_2_reheader_QUAL=Sniffles2.DEL.A4SF|60;test_2_reheader_FILTERS=Sniffles2.DEL.A4SF|PASS;test_2_reheader_SAMPLE=Sniffles2.DEL.A4SF|test_2|GT:0/1|GQ:30|DR:5|DV:7;test_2_reheader_INFO=Sniffles2.DEL.A4SF|IMPRECISE|SVTYPE:DEL|SVLEN:-69|END:611816|SUPPORT:7|COVERAGE:12:12:12:12:12|STRAND:+-|AF:0.583|STDEV_LEN:0|STDEV_POS:49.641|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:30:5:7", + "chr16\t611801\tSniffles2.DEL.64SF:test_1_reheader|Sniffles2.DEL.A8SF:test_2_reheader\tgggacagccgccttcgcctgtagaatcaagagcagggacagccgccctggcctgtagaatcaagagcacgggacagccgccctggcctgtagaatcaagagcacgggacagccgccctggcctgtagaatcaagagcagggacagccgccctggcctgtagaatcaagagcaagggacagccgccctggcctgtagaatcaagagcaagggacagccgcctttgcctgtagaatcaagagcag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-243;END=612044;SUPPORT=4;COVERAGE=3,4,4,4,4;STRAND=+-;AF=1;STDEV_LEN=0.707;STDEV_POS=14.142;FOUND_IN=sniffles;VARID=Sniffles2.DEL.A8SF:test_2_reheader;set=test_1_reheader-filterIntest_2_reheader;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.DEL.64SF|chr16;test_2_reheader_CHROM=Sniffles2.DEL.A8SF|chr16;test_1_reheader_POS=Sniffles2.DEL.64SF|611801;test_2_reheader_POS=Sniffles2.DEL.A8SF|611793;test_1_reheader_QUAL=Sniffles2.DEL.64SF|60;test_2_reheader_QUAL=Sniffles2.DEL.A8SF|60;test_1_reheader_FILTERS=Sniffles2.DEL.64SF|PASS;test_2_reheader_FILTERS=Sniffles2.DEL.A8SF|GT;test_1_reheader_SAMPLE=Sniffles2.DEL.64SF|test_1|GT:1/1|GQ:11|DR:0|DV:4;test_2_reheader_SAMPLE=Sniffles2.DEL.A8SF|test_2|GT:0/0|GQ:7|DR:10|DV:2;test_1_reheader_INFO=Sniffles2.DEL.64SF|PRECISE|SVTYPE:DEL|SVLEN:-243|END:612044|SUPPORT:4|COVERAGE:3:4:4:4:4|STRAND:+-|AF:1|STDEV_LEN:0.707|STDEV_POS:14.142|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.DEL.A8SF|PRECISE|SVTYPE:DEL|SVLEN:-242|END:612035|SUPPORT:2|COVERAGE:12:12:12:12:12|STRAND:-|AF:0.167|STDEV_LEN:0.707|STDEV_POS:7.778|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:11:0:4\t0/0:7:10:2", + "chr16\t611989\tSniffles2.DEL.A5SF\tgcctgtagaatcaagagcaagggacagccgccttt\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-35;END=612024;SUPPORT=4;COVERAGE=12,12,12,12,12;STRAND=+-;AF=0.333;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;set=test_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.DEL.A5SF|chr16;test_2_reheader_POS=Sniffles2.DEL.A5SF|611989;test_2_reheader_QUAL=Sniffles2.DEL.A5SF|60;test_2_reheader_FILTERS=Sniffles2.DEL.A5SF|PASS;test_2_reheader_SAMPLE=Sniffles2.DEL.A5SF|test_2|GT:0/1|GQ:17|DR:8|DV:4;test_2_reheader_INFO=Sniffles2.DEL.A5SF|PRECISE|SVTYPE:DEL|SVLEN:-35|END:612024|SUPPORT:4|COVERAGE:12:12:12:12:12|STRAND:+-|AF:0.333|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:17:8:4", + "chr16\t612007\tSniffles2.DEL.A6SF\taagggacagccgcctttgcctgtagaatcaagagcagggacagccgccctggcctgtagcatcaagagca\tN\t60\tGT\tIMPRECISE;SVTYPE=DEL;SVLEN=-70;END=612077;SUPPORT=2;COVERAGE=12,12,12,12,12;STRAND=-;AF=0.167;STDEV_LEN=1.414;STDEV_POS=26.87;FOUND_IN=sniffles;set=filterIntest_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.DEL.A6SF|chr16;test_2_reheader_POS=Sniffles2.DEL.A6SF|612007;test_2_reheader_QUAL=Sniffles2.DEL.A6SF|60;test_2_reheader_FILTERS=Sniffles2.DEL.A6SF|GT;test_2_reheader_SAMPLE=Sniffles2.DEL.A6SF|test_2|GT:0/0|GQ:7|DR:10|DV:2;test_2_reheader_INFO=Sniffles2.DEL.A6SF|IMPRECISE|SVTYPE:DEL|SVLEN:-70|END:612077|SUPPORT:2|COVERAGE:12:12:12:12:12|STRAND:-|AF:0.167|STDEV_LEN:1.414|STDEV_POS:26.87|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t0/0:7:10:2", + "chr16\t612374\tSniffles2.DEL.ABSF\tttcaagagcagggacagccgccctggcctgtagaatcaagagcaagggacagccgccttcgcctgtaga\tN\t60\tGT\tPRECISE;SVTYPE=DEL;SVLEN=-69;END=612443;SUPPORT=3;COVERAGE=12,12,12,12,13;STRAND=+-;AF=0.25;STDEV_LEN=0.577;STDEV_POS=5.196;FOUND_IN=sniffles;set=filterIntest_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.DEL.ABSF|chr16;test_2_reheader_POS=Sniffles2.DEL.ABSF|612374;test_2_reheader_QUAL=Sniffles2.DEL.ABSF|60;test_2_reheader_FILTERS=Sniffles2.DEL.ABSF|GT;test_2_reheader_SAMPLE=Sniffles2.DEL.ABSF|test_2|GT:0/1|GQ:4|DR:9|DV:3;test_2_reheader_INFO=Sniffles2.DEL.ABSF|PRECISE|SVTYPE:DEL|SVLEN:-69|END:612443|SUPPORT:3|COVERAGE:12:12:12:12:13|STRAND:+-|AF:0.25|STDEV_LEN:0.577|STDEV_POS:5.196|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:4:9:3", + "chr16\t612593\tSniffles2.DEL.AFSF:test_2_reheader|Sniffles2.DEL.AESF:test_2_reheader\tggacagccgccctggcctgtagaatcaagagcaagggacagccgcctttgcctgtagaatcaagagcagggacagctgccctggcctgtagcatcaagagca\tN\t60\tGT\tIMPRECISE;SVTYPE=DEL;SVLEN=-102;END=612695;SUPPORT=2;COVERAGE=12,12,12,12,13;STRAND=-;AF=0.167;STDEV_LEN=26.163;STDEV_POS=0;FOUND_IN=sniffles;VARID=Sniffles2.DEL.AESF:test_2_reheader;set=filterIntest_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.DEL.AFSF|chr16,Sniffles2.DEL.AESF|chr16;test_2_reheader_POS=Sniffles2.DEL.AFSF|612593,Sniffles2.DEL.AESF|612625;test_2_reheader_QUAL=Sniffles2.DEL.AFSF|60,Sniffles2.DEL.AESF|60;test_2_reheader_FILTERS=Sniffles2.DEL.AFSF|GT,Sniffles2.DEL.AESF|PASS;test_2_reheader_SAMPLE=Sniffles2.DEL.AFSF|test_2|GT:0/0|GQ:7|DR:10|DV:2,Sniffles2.DEL.AESF|test_2|GT:0/1|GQ:30|DR:5|DV:7;test_2_reheader_INFO=Sniffles2.DEL.AFSF|IMPRECISE|SVTYPE:DEL|SVLEN:-102|END:612695|SUPPORT:2|COVERAGE:12:12:12:12:13|STRAND:-|AF:0.167|STDEV_LEN:26.163|STDEV_POS:0|FOUND_IN:sniffles,Sniffles2.DEL.AESF|PRECISE|SVTYPE:DEL|SVLEN:-70|END:612695|SUPPORT:7|COVERAGE:12:12:12:12:13|STRAND:+-|AF:0.583|STDEV_LEN:0.894|STDEV_POS:2.683|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t0/0:7:10:2", + "chr16\t631728\tSniffles2.DEL.65SF:test_1_reheader|Sniffles2.DEL.B3SF:test_2_reheader\tcttctcccaccccttcactgcctctccttccatcctctcctcccaccctctcctcccatccactcctcccatccacttcttccatcct\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-88;END=631816;SUPPORT=17;COVERAGE=17,17,17,17,16;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;VARID=Sniffles2.DEL.B3SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.DEL.65SF|chr16;test_2_reheader_CHROM=Sniffles2.DEL.B3SF|chr16;test_1_reheader_POS=Sniffles2.DEL.65SF|631728;test_2_reheader_POS=Sniffles2.DEL.B3SF|631728;test_1_reheader_QUAL=Sniffles2.DEL.65SF|60;test_2_reheader_QUAL=Sniffles2.DEL.B3SF|60;test_1_reheader_FILTERS=Sniffles2.DEL.65SF|PASS;test_2_reheader_FILTERS=Sniffles2.DEL.B3SF|PASS;test_1_reheader_SAMPLE=Sniffles2.DEL.65SF|test_1|GT:1/1|GQ:47|DR:0|DV:17;test_2_reheader_SAMPLE=Sniffles2.DEL.B3SF|test_2|GT:1/1|GQ:39|DR:0|DV:14;test_1_reheader_INFO=Sniffles2.DEL.65SF|PRECISE|SVTYPE:DEL|SVLEN:-88|END:631816|SUPPORT:17|COVERAGE:17:17:17:17:16|STRAND:+-|AF:1|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.DEL.B3SF|PRECISE|SVTYPE:DEL|SVLEN:-88|END:631816|SUPPORT:14|COVERAGE:13:13:12:14:12|STRAND:+-|AF:1|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:47:0:17\t1/1:39:0:14", + "chr16\t660943\tSniffles2.INS.23SF:test_1_reheader|Sniffles2.INS.3ASF:test_2_reheader\tN\tCCCCCTGTTCGGCCCCTCCCCAGGCCCCCCCCCGCCCGGCCTCAGGCCCCGCCCCCTGTTCGGCCCCTCCCCAGGCCCGGCCTCAGGCCCCGCCCCCTGTTCGGCCCCTCCCCAG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=115;END=660943;SUPPORT=17;COVERAGE=16,16,15,16,16;STRAND=+-;AF=1;STDEV_LEN=1.803;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;IMPRECISE;VARID=Sniffles2.INS.3ASF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.23SF|chr16;test_2_reheader_CHROM=Sniffles2.INS.3ASF|chr16;test_1_reheader_POS=Sniffles2.INS.23SF|660943;test_2_reheader_POS=Sniffles2.INS.3ASF|660943;test_1_reheader_QUAL=Sniffles2.INS.23SF|60;test_2_reheader_QUAL=Sniffles2.INS.3ASF|60;test_1_reheader_FILTERS=Sniffles2.INS.23SF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.3ASF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.23SF|test_1|GT:1/1|GQ:47|DR:0|DV:17;test_2_reheader_SAMPLE=Sniffles2.INS.3ASF|test_2|GT:0/1|GQ:15|DR:6|DV:16;test_1_reheader_INFO=Sniffles2.INS.23SF|PRECISE|SVTYPE:INS|SVLEN:115|END:660943|SUPPORT:17|COVERAGE:16:16:15:16:16|STRAND:+-|AF:1|STDEV_LEN:1.803|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.3ASF|IMPRECISE|SVTYPE:INS|SVLEN:111|END:660943|SUPPORT:16|COVERAGE:22:22:22:22:19|STRAND:+-|AF:0.727|STDEV_LEN:9.233|STDEV_POS:23.011|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:47:0:17\t0/1:15:6:16", + "chr16\t665215\tSniffles2.DEL.66SF:test_1_reheader|Sniffles2.DEL.B4SF:test_2_reheader\tcctcagtctgcagcctgctagggacgcacggccacactcctgtctttcag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-50;END=665265;SUPPORT=22;COVERAGE=19,21,22,22,21;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;VARID=Sniffles2.DEL.B4SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.DEL.66SF|chr16;test_2_reheader_CHROM=Sniffles2.DEL.B4SF|chr16;test_1_reheader_POS=Sniffles2.DEL.66SF|665215;test_2_reheader_POS=Sniffles2.DEL.B4SF|665215;test_1_reheader_QUAL=Sniffles2.DEL.66SF|60;test_2_reheader_QUAL=Sniffles2.DEL.B4SF|60;test_1_reheader_FILTERS=Sniffles2.DEL.66SF|PASS;test_2_reheader_FILTERS=Sniffles2.DEL.B4SF|PASS;test_1_reheader_SAMPLE=Sniffles2.DEL.66SF|test_1|GT:1/1|GQ:60|DR:0|DV:22;test_2_reheader_SAMPLE=Sniffles2.DEL.B4SF|test_2|GT:1/1|GQ:10|DR:4|DV:18;test_1_reheader_INFO=Sniffles2.DEL.66SF|PRECISE|SVTYPE:DEL|SVLEN:-50|END:665265|SUPPORT:22|COVERAGE:19:21:22:22:21|STRAND:+-|AF:1|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.DEL.B4SF|PRECISE|SVTYPE:DEL|SVLEN:-50|END:665265|SUPPORT:18|COVERAGE:22:22:22:22:22|STRAND:+-|AF:0.818|STDEV_LEN:0|STDEV_POS:2.53|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:60:0:22\t1/1:10:4:18", + "chr16\t696679\tSniffles2.INS.24SF:test_1_reheader|Sniffles2.INS.3CSF:test_2_reheader\tN\tCCCACCCCAAAGCCACCATCCGCTCCCACCTCCATAGGGTTGCTGCTGCCCGCCCCTGCCCCCCAGCCCTGTCCCCCCCACCACCCAGCCTGGGCGCACACCCCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=105;END=696679;SUPPORT=10;COVERAGE=11,10,10,10,10;STRAND=+-;AF=1;STDEV_LEN=0.408;STDEV_POS=1.633;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.3CSF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.24SF|chr16;test_2_reheader_CHROM=Sniffles2.INS.3CSF|chr16;test_1_reheader_POS=Sniffles2.INS.24SF|696679;test_2_reheader_POS=Sniffles2.INS.3CSF|696679;test_1_reheader_QUAL=Sniffles2.INS.24SF|60;test_2_reheader_QUAL=Sniffles2.INS.3CSF|60;test_1_reheader_FILTERS=Sniffles2.INS.24SF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.3CSF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.24SF|test_1|GT:1/1|GQ:27|DR:0|DV:10;test_2_reheader_SAMPLE=Sniffles2.INS.3CSF|test_2|GT:1/1|GQ:14|DR:3|DV:16;test_1_reheader_INFO=Sniffles2.INS.24SF|PRECISE|SVTYPE:INS|SVLEN:105|END:696679|SUPPORT:10|COVERAGE:11:10:10:10:10|STRAND:+-|AF:1|STDEV_LEN:0.408|STDEV_POS:1.633|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.3CSF|PRECISE|SVTYPE:INS|SVLEN:105|END:696679|SUPPORT:16|COVERAGE:19:19:19:19:18|STRAND:+-|AF:0.842|STDEV_LEN:0.833|STDEV_POS:22.394|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:27:0:10\t1/1:14:3:16", + "chr16\t746237\tSniffles2.DEL.67SF:test_1_reheader|Sniffles2.DEL.B7SF:test_2_reheader\tgaggtgggttcactgcgggtctgcctggctgggcagcaggagaggaggtgggttcactgcgggtctgcctggctgggcagcaggagaggaggtgggttcactgcaggtctgtctggctgggcagcaggaggggagaggtggggtcactgcgggtctgcagggctgcaggaggggagaggtggggtcactgcaggtctgtctggctgggcagcaggagaggaggtgggttcactgcaggtctgtctgggcgggctgcaggagaggaggtggggtcactgcgggtctgtctgggcgggctgcaggagag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-307;END=746544;SUPPORT=7;COVERAGE=13,13,13,13,11;STRAND=+-;AF=0.538;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;VARID=Sniffles2.DEL.B7SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.DEL.67SF|chr16;test_2_reheader_CHROM=Sniffles2.DEL.B7SF|chr16;test_1_reheader_POS=Sniffles2.DEL.67SF|746237;test_2_reheader_POS=Sniffles2.DEL.B7SF|746243;test_1_reheader_QUAL=Sniffles2.DEL.67SF|60;test_2_reheader_QUAL=Sniffles2.DEL.B7SF|60;test_1_reheader_FILTERS=Sniffles2.DEL.67SF|PASS;test_2_reheader_FILTERS=Sniffles2.DEL.B7SF|PASS;test_1_reheader_SAMPLE=Sniffles2.DEL.67SF|test_1|GT:0/1|GQ:40|DR:6|DV:7;test_2_reheader_SAMPLE=Sniffles2.DEL.B7SF|test_2|GT:0/1|GQ:18|DR:15|DV:6;test_1_reheader_INFO=Sniffles2.DEL.67SF|PRECISE|SVTYPE:DEL|SVLEN:-307|END:746544|SUPPORT:7|COVERAGE:13:13:13:13:11|STRAND:+-|AF:0.538|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.DEL.B7SF|PRECISE|SVTYPE:DEL|SVLEN:-306|END:746549|SUPPORT:6|COVERAGE:21:21:21:21:21|STRAND:+-|AF:0.286|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:40:6:7\t0/1:18:15:6", + "chr16\t760502\tSniffles2.INS.25SF:test_1_reheader|Sniffles2.INS.3ESF:test_2_reheader\tN\tAGCCATGAAACCTGGGCCCGGGCTCCCACTCACACCCCACCCCCACCCAGGGCAGCCGTGAAACCTGGGCCCTGGGCTCCCACCCACGCCCCACACCCACCCAGGGC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=107;END=760502;SUPPORT=16;COVERAGE=16,16,16,16,17;STRAND=+-;AF=1;STDEV_LEN=0.518;STDEV_POS=11.667;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.3ESF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.25SF|chr16;test_2_reheader_CHROM=Sniffles2.INS.3ESF|chr16;test_1_reheader_POS=Sniffles2.INS.25SF|760502;test_2_reheader_POS=Sniffles2.INS.3ESF|760502;test_1_reheader_QUAL=Sniffles2.INS.25SF|60;test_2_reheader_QUAL=Sniffles2.INS.3ESF|60;test_1_reheader_FILTERS=Sniffles2.INS.25SF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.3ESF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.25SF|test_1|GT:1/1|GQ:44|DR:0|DV:16;test_2_reheader_SAMPLE=Sniffles2.INS.3ESF|test_2|GT:1/1|GQ:32|DR:2|DV:19;test_1_reheader_INFO=Sniffles2.INS.25SF|PRECISE|SVTYPE:INS|SVLEN:107|END:760502|SUPPORT:16|COVERAGE:16:16:16:16:17|STRAND:+-|AF:1|STDEV_LEN:0.518|STDEV_POS:11.667|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.3ESF|PRECISE|SVTYPE:INS|SVLEN:107|END:760502|SUPPORT:19|COVERAGE:20:20:21:21:23|STRAND:+-|AF:0.905|STDEV_LEN:0.674|STDEV_POS:4.221|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:44:0:16\t1/1:32:2:19", + "chr16\t763776\tSniffles2.INS.26SF:test_1_reheader|Sniffles2.INS.3FSF:test_2_reheader\tN\tGCATCCCATCCCCCGTCCCCTCCCCCACACCCCTCCCCCACCCCCACGTCCCCTCCCCACCCCTCCCCCACACCCTCCCCCACCCCTCCCCATGTCCCCTCCCCTACCTCCTCCCCCCGCATCCCCTCCCCCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=133;END=763776;SUPPORT=20;COVERAGE=19,19,20,20,20;STRAND=+-;AF=1;STDEV_LEN=0.789;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.3FSF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.26SF|chr16;test_2_reheader_CHROM=Sniffles2.INS.3FSF|chr16;test_1_reheader_POS=Sniffles2.INS.26SF|763776;test_2_reheader_POS=Sniffles2.INS.3FSF|763776;test_1_reheader_QUAL=Sniffles2.INS.26SF|60;test_2_reheader_QUAL=Sniffles2.INS.3FSF|60;test_1_reheader_FILTERS=Sniffles2.INS.26SF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.3FSF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.26SF|test_1|GT:1/1|GQ:55|DR:0|DV:20;test_2_reheader_SAMPLE=Sniffles2.INS.3FSF|test_2|GT:1/1|GQ:48|DR:1|DV:21;test_1_reheader_INFO=Sniffles2.INS.26SF|PRECISE|SVTYPE:INS|SVLEN:133|END:763776|SUPPORT:20|COVERAGE:19:19:20:20:20|STRAND:+-|AF:1|STDEV_LEN:0.789|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.3FSF|PRECISE|SVTYPE:INS|SVLEN:133|END:763776|SUPPORT:21|COVERAGE:22:22:22:22:23|STRAND:+-|AF:0.955|STDEV_LEN:1.092|STDEV_POS:1.391|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:55:0:20\t1/1:48:1:21", + "chr16\t767712\tSniffles2.INS.2ASF\tN\tGCGCATGGGGGGCGTGGGAGGGGGGTGCGTGGAGGAGGGGCGGTGTGGAGGGGGGCGCGTGGGGGTGTGTGGGGGGGGCACGTGGAGGGGGGCGTGTGGGGGGGTGCGTGGAGGAGGGGCGCGTGGAGGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=130;END=767712;SUPPORT=5;COVERAGE=15,15,15,15,14;STRAND=+-;AF=0.333;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;set=test_1_reheader;FOUNDBY=1;test_1_reheader_CHROM=Sniffles2.INS.2ASF|chr16;test_1_reheader_POS=Sniffles2.INS.2ASF|767712;test_1_reheader_QUAL=Sniffles2.INS.2ASF|60;test_1_reheader_FILTERS=Sniffles2.INS.2ASF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.2ASF|test_1|GT:0/1|GQ:22|DR:10|DV:5;test_1_reheader_INFO=Sniffles2.INS.2ASF|PRECISE|SVTYPE:INS|SVLEN:130|END:767712|SUPPORT:5|COVERAGE:15:15:15:15:14|STRAND:+-|AF:0.333|STDEV_LEN:0|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader;SUPP_VEC=10\tGT:GQ:DR:DV\t0/1:22:10:5\t./.:.:.:.", + "chr16\t767829\tSniffles2.INS.29SF:test_1_reheader|Sniffles2.INS.41SF:test_2_reheader\tN\tGGTGTGGAGGGGGGCGCGTGGGGGTGTGTGGGGGGGGGCACGTGGAGGGGGCGTGTGGGGGGGTGCGTGGAGGAGGGGCGCGTGGAGGA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=89;END=767829;SUPPORT=9;COVERAGE=15,15,15,15,14;STRAND=+-;AF=0.6;STDEV_LEN=3.715;STDEV_POS=36.697;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.41SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.29SF|chr16;test_2_reheader_CHROM=Sniffles2.INS.41SF|chr16;test_1_reheader_POS=Sniffles2.INS.29SF|767829;test_2_reheader_POS=Sniffles2.INS.41SF|767868;test_1_reheader_QUAL=Sniffles2.INS.29SF|60;test_2_reheader_QUAL=Sniffles2.INS.41SF|60;test_1_reheader_FILTERS=Sniffles2.INS.29SF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.41SF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.29SF|test_1|GT:0/1|GQ:34|DR:6|DV:9;test_2_reheader_SAMPLE=Sniffles2.INS.41SF|test_2|GT:0/1|GQ:16|DR:12|DV:5;test_1_reheader_INFO=Sniffles2.INS.29SF|IMPRECISE|SVTYPE:INS|SVLEN:89|END:767829|SUPPORT:9|COVERAGE:15:15:15:15:14|STRAND:+-|AF:0.6|STDEV_LEN:3.715|STDEV_POS:36.697|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.41SF|IMPRECISE|SVTYPE:INS|SVLEN:135|END:767868|SUPPORT:5|COVERAGE:23:16:17:16:17|STRAND:+-|AF:0.294|STDEV_LEN:3.215|STDEV_POS:90.067|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:34:6:9\t0/1:16:12:5", + "chr16\t767989\tSniffles2.INS.28SF:test_1_reheader|Sniffles2.INS.40SF:test_2_reheader\tN\tGGGGCACATGGGGGTGCGTGGGGGGCGTGTGGGGGGTGCGTGGAGGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=47;END=767989;SUPPORT=6;COVERAGE=15,15,15,14,14;STRAND=+-;AF=0.4;STDEV_LEN=1.5;STDEV_POS=11.547;SUPPORT_LONG=0;FOUND_IN=sniffles;IMPRECISE;VARID=Sniffles2.INS.40SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.28SF|chr16;test_2_reheader_CHROM=Sniffles2.INS.40SF|chr16;test_1_reheader_POS=Sniffles2.INS.28SF|767989;test_2_reheader_POS=Sniffles2.INS.40SF|767969;test_1_reheader_QUAL=Sniffles2.INS.28SF|60;test_2_reheader_QUAL=Sniffles2.INS.40SF|60;test_1_reheader_FILTERS=Sniffles2.INS.28SF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.40SF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.28SF|test_1|GT:0/1|GQ:34|DR:9|DV:6;test_2_reheader_SAMPLE=Sniffles2.INS.40SF|test_2|GT:0/1|GQ:6|DR:4|DV:12;test_1_reheader_INFO=Sniffles2.INS.28SF|PRECISE|SVTYPE:INS|SVLEN:47|END:767989|SUPPORT:6|COVERAGE:15:15:15:14:14|STRAND:+-|AF:0.4|STDEV_LEN:1.5|STDEV_POS:11.547|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.40SF|IMPRECISE|SVTYPE:INS|SVLEN:45|END:767969|SUPPORT:12|COVERAGE:21:17:16:16:17|STRAND:+-|AF:0.75|STDEV_LEN:16.098|STDEV_POS:66.865|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:34:9:6\t0/1:6:4:12", + "chr16\t769171\tSniffles2.INS.2BSF:test_1_reheader|Sniffles2.INS.42SF:test_2_reheader\tN\tCCCCGGCCCCGGCCCCAGCCCCGGCCCCACCCCGGCCCCAGCCCCAGCCCCAGCCCCAGCCCCACCCCCGGCCCCAGCCCCAGCCCCAGCCCCAGCCCCGGCCCCACCCCCACCCCCGGCCCCGGCCCCGGCCCCACCCCCGGCCCCGGCCCCGGCCCCACCCCCGGCCCCGGCCCCACCCCCGGCCCCGGCCCCAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=197;END=769171;SUPPORT=6;COVERAGE=14,13,13,13,13;STRAND=+-;AF=0.462;STDEV_LEN=0.816;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.42SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.2BSF|chr16;test_2_reheader_CHROM=Sniffles2.INS.42SF|chr16;test_1_reheader_POS=Sniffles2.INS.2BSF|769171;test_2_reheader_POS=Sniffles2.INS.42SF|769187;test_1_reheader_QUAL=Sniffles2.INS.2BSF|60;test_2_reheader_QUAL=Sniffles2.INS.42SF|60;test_1_reheader_FILTERS=Sniffles2.INS.2BSF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.42SF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.2BSF|test_1|GT:0/1|GQ:40|DR:7|DV:6;test_2_reheader_SAMPLE=Sniffles2.INS.42SF|test_2|GT:0/1|GQ:52|DR:10|DV:8;test_1_reheader_INFO=Sniffles2.INS.2BSF|PRECISE|SVTYPE:INS|SVLEN:197|END:769171|SUPPORT:6|COVERAGE:14:13:13:13:13|STRAND:+-|AF:0.462|STDEV_LEN:0.816|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.42SF|PRECISE|SVTYPE:INS|SVLEN:193|END:769187|SUPPORT:8|COVERAGE:17:18:18:18:18|STRAND:+-|AF:0.444|STDEV_LEN:0.577|STDEV_POS:5|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:40:7:6\t0/1:52:10:8", + "chr16\t795446\tSniffles2.INS.2CSF:test_1_reheader|Sniffles2.INS.44SF:test_2_reheader\tN\tCCCCCGTGCTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCTGTGCTGCCCGTGTGGCTGCCCCCGGCCCCGCGCCCTTCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=87;END=795446;SUPPORT=8;COVERAGE=13,13,13,13,13;STRAND=+-;AF=0.615;STDEV_LEN=0.577;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.44SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.2CSF|chr16;test_2_reheader_CHROM=Sniffles2.INS.44SF|chr16;test_1_reheader_POS=Sniffles2.INS.2CSF|795446;test_2_reheader_POS=Sniffles2.INS.44SF|795446;test_1_reheader_QUAL=Sniffles2.INS.2CSF|60;test_2_reheader_QUAL=Sniffles2.INS.44SF|60;test_1_reheader_FILTERS=Sniffles2.INS.2CSF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.44SF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.2CSF|test_1|GT:0/1|GQ:27|DR:5|DV:8;test_2_reheader_SAMPLE=Sniffles2.INS.44SF|test_2|GT:0/1|GQ:39|DR:11|DV:7;test_1_reheader_INFO=Sniffles2.INS.2CSF|PRECISE|SVTYPE:INS|SVLEN:87|END:795446|SUPPORT:8|COVERAGE:13:13:13:13:13|STRAND:+-|AF:0.615|STDEV_LEN:0.577|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.44SF|PRECISE|SVTYPE:INS|SVLEN:86|END:795446|SUPPORT:7|COVERAGE:20:18:18:18:18|STRAND:+-|AF:0.389|STDEV_LEN:0.816|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:27:5:8\t0/1:39:11:7", + "chr16\t795594\tSniffles2.INS.2DSF:test_1_reheader|Sniffles2.INS.46SF:test_2_reheader\tN\tGCTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCTTCTCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCTTCTCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCTGTGCTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCTCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCTTCTCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCGCCCCGCCCCGCCCCTCCCCTCCCCCCCCCCCGC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=621;END=795594;SUPPORT=5;COVERAGE=13,13,13,13,13;STRAND=+-;AF=0.385;STDEV_LEN=2.646;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.46SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.2DSF|chr16;test_2_reheader_CHROM=Sniffles2.INS.46SF|chr16;test_1_reheader_POS=Sniffles2.INS.2DSF|795594;test_2_reheader_POS=Sniffles2.INS.46SF|795594;test_1_reheader_QUAL=Sniffles2.INS.2DSF|60;test_2_reheader_QUAL=Sniffles2.INS.46SF|60;test_1_reheader_FILTERS=Sniffles2.INS.2DSF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.46SF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.2DSF|test_1|GT:0/1|GQ:27|DR:8|DV:5;test_2_reheader_SAMPLE=Sniffles2.INS.46SF|test_2|GT:0/1|GQ:26|DR:12|DV:6;test_1_reheader_INFO=Sniffles2.INS.2DSF|PRECISE|SVTYPE:INS|SVLEN:621|END:795594|SUPPORT:5|COVERAGE:13:13:13:13:13|STRAND:+-|AF:0.385|STDEV_LEN:2.646|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.46SF|PRECISE|SVTYPE:INS|SVLEN:617|END:795594|SUPPORT:6|COVERAGE:20:18:18:18:18|STRAND:+-|AF:0.333|STDEV_LEN:2.5|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:27:8:5\t0/1:26:12:6", + "chr16\t818868\tSniffles2.INS.2ESF:test_1_reheader|Sniffles2.INS.47SF:test_2_reheader\tN\tTGGTGAAGACTGTAGTGATGGTGATGATGGTGAAGACTGTAGTGATGATGGTGGTGAAGACTGTAGTGATGTTGATATTGGTGATGAAGACTATAGTGATAGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTAGTGATGGTGATGATGATGGTGAAGACTGTAGTGATGGTGATGATGGTGAAGACTGTAGCGATGATGGTGAACACTGTAGTGATGTTGATATTGGTGATGAAGACTATAGTGATGGTGATGATAGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTGTAGTGATGGTGATGAGGTGAGACTATCGTGATGGTGATGATAATGGTGAAGACTATAGTGATGTTGATGTCGGTGGTGAAGACTGTAGTGATGGTGATGATAGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTGTAGTGATGGTGATGATGGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTATAGTGATGATGGTGAAGACTGTAGTGATGGTGATGATAGTGGTGAAGACTGTAGTGATGTTAATGGTGAAGGCTATAGTGATGTTGATGGTGGTGAAGACTGTAGCAATGGTTATGATGTTGGTGAAGACAATAGTGATGGTGATGATGGTGAAGACTATAGTGATGGTGATGATGGTGGTGAAGACTGTAGTGATGGTGATGATAGTGGTGAGGACTGTTAGTGATGATAGTGGTGAAGACTGTAGTGATGATGATGGTGAAGACTATAATGATGATGGTGAAGACCGCCGTGATGGTGATGATGGTGAAGACTGTAGCAATGATGATGGTGAAGACTATAGTGATGTTGAGTTGGTGGTGAAGACTGTAGCGATGGTGATGATGATGGTGAAGACTATAGTGATGATGATGTTGAAGACTATAGTGATGATGATGGTGAAGACCGCCGTGATGGTGATGATGGTGAAGACTGTAGCGATGATGATGGTGAAGACTATAGTGATGCTGATGTTGGTGGTGAAGACTGTAGTGATGGTGATGATGATGGTGAAGACTATAGTGATGATGATGGTGAAGACTATAGTGATGATGATGTGAAGACCGCCGTGATGGTGATGATGGTGAAGACTGTAGCGATGATGATGGTGAAGACTATAGTGATGTTGATGTTGG\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=1173;END=818868;SUPPORT=12;COVERAGE=13,12,12,12,12;STRAND=+-;AF=1;STDEV_LEN=90.396;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.47SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.2ESF|chr16;test_2_reheader_CHROM=Sniffles2.INS.47SF|chr16;test_1_reheader_POS=Sniffles2.INS.2ESF|818868;test_2_reheader_POS=Sniffles2.INS.47SF|818868;test_1_reheader_QUAL=Sniffles2.INS.2ESF|60;test_2_reheader_QUAL=Sniffles2.INS.47SF|60;test_1_reheader_FILTERS=Sniffles2.INS.2ESF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.47SF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.2ESF|test_1|GT:1/1|GQ:33|DR:0|DV:12;test_2_reheader_SAMPLE=Sniffles2.INS.47SF|test_2|GT:1/1|GQ:5|DR:2|DV:9;test_1_reheader_INFO=Sniffles2.INS.2ESF|IMPRECISE|SVTYPE:INS|SVLEN:1173|END:818868|SUPPORT:12|COVERAGE:13:12:12:12:12|STRAND:+-|AF:1|STDEV_LEN:90.396|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.47SF|IMPRECISE|SVTYPE:INS|SVLEN:1180|END:818868|SUPPORT:9|COVERAGE:14:11:11:11:11|STRAND:+-|AF:0.818|STDEV_LEN:66.808|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:33:0:12\t1/1:5:2:9", + "chr16\t824382\tSniffles2.INS.2FSF:test_1_reheader|Sniffles2.INS.48SF:test_2_reheader|Sniffles2.INS.49SF:test_2_reheader\tN\tTAGGCCCACGACGGCCAGCAGCGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGGAGCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=150;END=824382;SUPPORT=2;COVERAGE=3,3,3,3,2;STRAND=-;AF=0.667;STDEV_LEN=0.707;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.48SF:test_2_reheader|Sniffles2.INS.49SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.2FSF|chr16;test_2_reheader_CHROM=Sniffles2.INS.48SF|chr16,Sniffles2.INS.49SF|chr16;test_1_reheader_POS=Sniffles2.INS.2FSF|824382;test_2_reheader_POS=Sniffles2.INS.48SF|824382,Sniffles2.INS.49SF|824382;test_1_reheader_QUAL=Sniffles2.INS.2FSF|60;test_2_reheader_QUAL=Sniffles2.INS.48SF|60,Sniffles2.INS.49SF|60;test_1_reheader_FILTERS=Sniffles2.INS.2FSF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.48SF|GT,Sniffles2.INS.49SF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.2FSF|test_1|GT:0/1|GQ:4|DR:1|DV:2;test_2_reheader_SAMPLE=Sniffles2.INS.48SF|test_2|GT:0/1|GQ:3|DR:6|DV:2,Sniffles2.INS.49SF|test_2|GT:0/1|GQ:28|DR:4|DV:4;test_1_reheader_INFO=Sniffles2.INS.2FSF|PRECISE|SVTYPE:INS|SVLEN:150|END:824382|SUPPORT:2|COVERAGE:3:3:3:3:2|STRAND:-|AF:0.667|STDEV_LEN:0.707|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.48SF|PRECISE|SVTYPE:INS|SVLEN:152|END:824382|SUPPORT:2|COVERAGE:9:8:8:8:8|STRAND:+|AF:0.25|STDEV_LEN:0|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles,Sniffles2.INS.49SF|PRECISE|SVTYPE:INS|SVLEN:475|END:824382|SUPPORT:4|COVERAGE:9:8:8:8:8|STRAND:+-|AF:0.5|STDEV_LEN:4.031|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:4:1:2\t0/1:28:4:4", + "chr16\t824874\tSniffles2.INS.31SF:test_1_reheader|Sniffles2.INS.4ASF:test_2_reheader\tN\tCGTCCCGTCCGCGGCACCACCGTCCCATCTGTGGCACCAT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=40;END=824874;SUPPORT=2;COVERAGE=3,2,2,2,2;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.4ASF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.31SF|chr16;test_2_reheader_CHROM=Sniffles2.INS.4ASF|chr16;test_1_reheader_POS=Sniffles2.INS.31SF|824874;test_2_reheader_POS=Sniffles2.INS.4ASF|824874;test_1_reheader_QUAL=Sniffles2.INS.31SF|60;test_2_reheader_QUAL=Sniffles2.INS.4ASF|60;test_1_reheader_FILTERS=Sniffles2.INS.31SF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.4ASF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.31SF|test_1|GT:1/1|GQ:5|DR:0|DV:2;test_2_reheader_SAMPLE=Sniffles2.INS.4ASF|test_2|GT:0/1|GQ:3|DR:2|DV:6;test_1_reheader_INFO=Sniffles2.INS.31SF|PRECISE|SVTYPE:INS|SVLEN:40|END:824874|SUPPORT:2|COVERAGE:3:2:2:2:2|STRAND:+-|AF:1|STDEV_LEN:0|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.4ASF|PRECISE|SVTYPE:INS|SVLEN:40|END:824874|SUPPORT:6|COVERAGE:8:8:8:8:8|STRAND:+-|AF:0.75|STDEV_LEN:0|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:5:0:2\t0/1:3:2:6", + "chr16\t828085\tSniffles2.INS.4BSF\tN\tCCGGGGGAAATGAACTCTCGGCCTCCAGGGCAGCCAGGCAGGGGTCTGGCCCAGTCCTCA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=58;END=828085;SUPPORT=4;COVERAGE=8,8,8,8,8;STRAND=+-;AF=0.5;STDEV_LEN=1.5;STDEV_POS=22.765;SUPPORT_LONG=0;FOUND_IN=sniffles;set=test_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.INS.4BSF|chr16;test_2_reheader_POS=Sniffles2.INS.4BSF|828085;test_2_reheader_QUAL=Sniffles2.INS.4BSF|60;test_2_reheader_FILTERS=Sniffles2.INS.4BSF|PASS;test_2_reheader_SAMPLE=Sniffles2.INS.4BSF|test_2|GT:0/1|GQ:28|DR:4|DV:4;test_2_reheader_INFO=Sniffles2.INS.4BSF|PRECISE|SVTYPE:INS|SVLEN:58|END:828085|SUPPORT:4|COVERAGE:8:8:8:8:8|STRAND:+-|AF:0.5|STDEV_LEN:1.5|STDEV_POS:22.765|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:28:4:4", + "chr16\t828906\tSniffles2.DEL.68SF:test_1_reheader|Sniffles2.DEL.BBSF:test_2_reheader\tgcccactggggcccacatcccgcccactgggaccgacatccc\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-42;END=828948;SUPPORT=2;COVERAGE=2,2,2,2,2;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;VARID=Sniffles2.DEL.BBSF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.DEL.68SF|chr16;test_2_reheader_CHROM=Sniffles2.DEL.BBSF|chr16;test_1_reheader_POS=Sniffles2.DEL.68SF|828906;test_2_reheader_POS=Sniffles2.DEL.BBSF|828906;test_1_reheader_QUAL=Sniffles2.DEL.68SF|60;test_2_reheader_QUAL=Sniffles2.DEL.BBSF|60;test_1_reheader_FILTERS=Sniffles2.DEL.68SF|PASS;test_2_reheader_FILTERS=Sniffles2.DEL.BBSF|PASS;test_1_reheader_SAMPLE=Sniffles2.DEL.68SF|test_1|GT:1/1|GQ:5|DR:0|DV:2;test_2_reheader_SAMPLE=Sniffles2.DEL.BBSF|test_2|GT:0/1|GQ:3|DR:2|DV:6;test_1_reheader_INFO=Sniffles2.DEL.68SF|PRECISE|SVTYPE:DEL|SVLEN:-42|END:828948|SUPPORT:2|COVERAGE:2:2:2:2:2|STRAND:+-|AF:1|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.DEL.BBSF|PRECISE|SVTYPE:DEL|SVLEN:-42|END:828948|SUPPORT:6|COVERAGE:8:8:8:8:8|STRAND:+-|AF:0.75|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:5:0:2\t0/1:3:2:6", + "chr16\t886663\tSniffles2.INS.35SF:test_1_reheader|Sniffles2.INS.34SF:test_1_reheader|Sniffles2.INS.4DSF:test_2_reheader\tN\tCCACCCTAGGCCCCCGGCGTTCCCCAGGCCCCTCCCACCCTAGGCCCCCGGCGTTCCCCAGGCCCCTCCCACCCTAGGCCCCCGGCGTTCCCCAGGCCCCTCCCACCCTAGGCCCCGGCGTTCCCCAGGCCCCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=134;END=886663;SUPPORT=8;COVERAGE=10,10,10,10,11;STRAND=+-;AF=0.8;STDEV_LEN=0.5;STDEV_POS=22.234;SUPPORT_LONG=0;FOUND_IN=sniffles;IMPRECISE;VARID=Sniffles2.INS.34SF:test_1_reheader|Sniffles2.INS.4DSF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.35SF|chr16,Sniffles2.INS.34SF|chr16;test_2_reheader_CHROM=Sniffles2.INS.4DSF|chr16;test_1_reheader_POS=Sniffles2.INS.35SF|886663,Sniffles2.INS.34SF|886674;test_2_reheader_POS=Sniffles2.INS.4DSF|886701;test_1_reheader_QUAL=Sniffles2.INS.35SF|60,Sniffles2.INS.34SF|60;test_2_reheader_QUAL=Sniffles2.INS.4DSF|60;test_1_reheader_FILTERS=Sniffles2.INS.35SF|PASS,Sniffles2.INS.34SF|GT;test_2_reheader_FILTERS=Sniffles2.INS.4DSF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.35SF|test_1|GT:1/1|GQ:2|DR:2|DV:8,Sniffles2.INS.34SF|test_1|GT:0/0|GQ:2|DR:8|DV:2;test_2_reheader_SAMPLE=Sniffles2.INS.4DSF|test_2|GT:0/1|GQ:12|DR:4|DV:10;test_1_reheader_INFO=Sniffles2.INS.35SF|PRECISE|SVTYPE:INS|SVLEN:134|END:886663|SUPPORT:8|COVERAGE:10:10:10:10:11|STRAND:+-|AF:0.8|STDEV_LEN:0.5|STDEV_POS:22.234|SUPPORT_LONG:0|FOUND_IN:sniffles,Sniffles2.INS.34SF|IMPRECISE|SVTYPE:INS|SVLEN:66|END:886674|SUPPORT:2|COVERAGE:10:10:10:10:11|STRAND:+-|AF:0.2|STDEV_LEN:19.348|STDEV_POS:113.694|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.4DSF|IMPRECISE|SVTYPE:INS|SVLEN:131|END:886701|SUPPORT:10|COVERAGE:14:14:14:14:14|STRAND:+-|AF:0.714|STDEV_LEN:16.561|STDEV_POS:60.663|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:2:2:8\t0/1:12:4:10", + "chr16\t894215\tSniffles2.INS.36SF:test_1_reheader|Sniffles2.INS.53SF:test_2_reheader\tN\tCTGGCTGTCCGCCCACCCATCCCCTGTCCACCGGACCGTCCGCCCACCCGTCCCCATGTCCATCAGACCGTCCGTCCACCTGTCCCCCTGTCCCCTGTCCACCGGACCATTCGCCCACCCATCCCCCTGTCCACCTGGCCATCCGCCCACCTGTCTCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCACTGGACTGTCCGCCCACCTGTCCCCCTGTCCCCTGTCCACCGGACCGTCTGCCCACCCGTCCCCCTGTCCACCTGGCCATCCGCCCACCCATCCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCAGGTCCCCCTGTCCAGCGGACCGTCCACCCACCCGTCCCCCTGTCCACTGGACCGTCCGCCCACCTGTCCCCCTGTCCACCTGGCAGTGCGCCCACCCATCCCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCAGCGGACCGTCCACCCACCT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=521;END=894215;SUPPORT=17;COVERAGE=17,17,17,17,17;STRAND=+-;AF=1;STDEV_LEN=57.393;STDEV_POS=5.5;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.53SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.36SF|chr16;test_2_reheader_CHROM=Sniffles2.INS.53SF|chr16;test_1_reheader_POS=Sniffles2.INS.36SF|894215;test_2_reheader_POS=Sniffles2.INS.53SF|894226;test_1_reheader_QUAL=Sniffles2.INS.36SF|60;test_2_reheader_QUAL=Sniffles2.INS.53SF|60;test_1_reheader_FILTERS=Sniffles2.INS.36SF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.53SF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.36SF|test_1|GT:1/1|GQ:47|DR:0|DV:17;test_2_reheader_SAMPLE=Sniffles2.INS.53SF|test_2|GT:0/1|GQ:54|DR:8|DV:9;test_1_reheader_INFO=Sniffles2.INS.36SF|IMPRECISE|SVTYPE:INS|SVLEN:521|END:894215|SUPPORT:17|COVERAGE:17:17:17:17:17|STRAND:+-|AF:1|STDEV_LEN:57.393|STDEV_POS:5.5|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.53SF|IMPRECISE|SVTYPE:INS|SVLEN:532|END:894226|SUPPORT:9|COVERAGE:17:17:17:17:17|STRAND:+-|AF:0.529|STDEV_LEN:71.587|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:47:0:17\t0/1:54:8:9", + "chr16\t895843\tSniffles2.INS.37SF:test_1_reheader|Sniffles2.INS.39SF:test_1_reheader|Sniffles2.INS.57SF:test_2_reheader|Sniffles2.INS.55SF:test_2_reheader\tN\tACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCACGGTCCACAG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=59;END=895843;SUPPORT=4;COVERAGE=17,16,16,16,14;STRAND=+-;AF=0.25;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.39SF:test_1_reheader|Sniffles2.INS.57SF:test_2_reheader|Sniffles2.INS.55SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.37SF|chr16,Sniffles2.INS.39SF|chr16;test_2_reheader_CHROM=Sniffles2.INS.57SF|chr16,Sniffles2.INS.55SF|chr16;test_1_reheader_POS=Sniffles2.INS.37SF|895843,Sniffles2.INS.39SF|895843;test_2_reheader_POS=Sniffles2.INS.57SF|895843,Sniffles2.INS.55SF|895870;test_1_reheader_QUAL=Sniffles2.INS.37SF|60,Sniffles2.INS.39SF|60;test_2_reheader_QUAL=Sniffles2.INS.57SF|60,Sniffles2.INS.55SF|60;test_1_reheader_FILTERS=Sniffles2.INS.37SF|PASS,Sniffles2.INS.39SF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.57SF|PASS,Sniffles2.INS.55SF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.37SF|test_1|GT:0/1|GQ:6|DR:12|DV:4,Sniffles2.INS.39SF|test_1|GT:0/1|GQ:57|DR:8|DV:8;test_2_reheader_SAMPLE=Sniffles2.INS.57SF|test_2|GT:0/1|GQ:34|DR:9|DV:6,Sniffles2.INS.55SF|test_2|GT:0/1|GQ:22|DR:10|DV:5;test_1_reheader_INFO=Sniffles2.INS.37SF|PRECISE|SVTYPE:INS|SVLEN:59|END:895843|SUPPORT:4|COVERAGE:17:16:16:16:14|STRAND:+-|AF:0.25|STDEV_LEN:0|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles,Sniffles2.INS.39SF|PRECISE|SVTYPE:INS|SVLEN:177|END:895843|SUPPORT:8|COVERAGE:17:16:16:16:14|STRAND:+-|AF:0.5|STDEV_LEN:0|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.57SF|PRECISE|SVTYPE:INS|SVLEN:177|END:895843|SUPPORT:6|COVERAGE:15:15:15:15:15|STRAND:+-|AF:0.4|STDEV_LEN:1.949|STDEV_POS:8.944|SUPPORT_LONG:0|FOUND_IN:sniffles,Sniffles2.INS.55SF|PRECISE|SVTYPE:INS|SVLEN:59|END:895870|SUPPORT:5|COVERAGE:15:15:15:15:15|STRAND:+-|AF:0.333|STDEV_LEN:0|STDEV_POS:15.588|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:6:12:4\t0/1:22:10:5", + "chr16\t896053\tSniffles2.INS.3BSF:test_1_reheader|Sniffles2.INS.3ASF:test_1_reheader|Sniffles2.INS.56SF:test_2_reheader\tN\tCCACACGCAGGCTGCACGGTCCACAGACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCACGGTCCACACACACGCCTCGGAGGGGTTGTGAGGCTCAGCCAT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=118;END=896053;SUPPORT=8;COVERAGE=17,16,16,16,14;STRAND=+-;AF=0.5;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;IMPRECISE;VARID=Sniffles2.INS.3ASF:test_1_reheader|Sniffles2.INS.56SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.3BSF|chr16,Sniffles2.INS.3ASF|chr16;test_2_reheader_CHROM=Sniffles2.INS.56SF|chr16;test_1_reheader_POS=Sniffles2.INS.3BSF|896053,Sniffles2.INS.3ASF|896059;test_2_reheader_POS=Sniffles2.INS.56SF|896053;test_1_reheader_QUAL=Sniffles2.INS.3BSF|60,Sniffles2.INS.3ASF|60;test_2_reheader_QUAL=Sniffles2.INS.56SF|60;test_1_reheader_FILTERS=Sniffles2.INS.3BSF|PASS,Sniffles2.INS.3ASF|GT;test_2_reheader_FILTERS=Sniffles2.INS.56SF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.3BSF|test_1|GT:0/1|GQ:57|DR:8|DV:8,Sniffles2.INS.3ASF|test_1|GT:0/0|GQ:6|DR:13|DV:3;test_2_reheader_SAMPLE=Sniffles2.INS.56SF|test_2|GT:0/1|GQ:34|DR:9|DV:6;test_1_reheader_INFO=Sniffles2.INS.3BSF|PRECISE|SVTYPE:INS|SVLEN:118|END:896053|SUPPORT:8|COVERAGE:17:16:16:16:14|STRAND:+-|AF:0.5|STDEV_LEN:0|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles,Sniffles2.INS.3ASF|IMPRECISE|SVTYPE:INS|SVLEN:58|END:896059|SUPPORT:3|COVERAGE:17:16:16:16:14|STRAND:+-|AF:0.188|STDEV_LEN:0.577|STDEV_POS:38.553|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.56SF|IMPRECISE|SVTYPE:INS|SVLEN:118|END:896053|SUPPORT:6|COVERAGE:15:15:15:15:15|STRAND:+-|AF:0.4|STDEV_LEN:0.447|STDEV_POS:64.631|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:57:8:8\t0/1:34:9:6", + "chr16\t903595\tSniffles2.INS.3ESF:test_1_reheader|Sniffles2.INS.5ASF:test_2_reheader\tN\tGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTATCTCTGCTGTGTGGTGGTGACCTTTGCACTGCCCGTGGGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCCGTCTCTGCTGTGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCCACAGGACGCCTGTCTCTGCTGTGTGGTGGTGACCTTTGCACTGCCCGTGGGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCTGTCTCTGCTGTGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCCGTCTCTGCTGCGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=600;END=903595;SUPPORT=6;COVERAGE=8,8,8,8,8;STRAND=+-;AF=0.75;STDEV_LEN=0.577;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;IMPRECISE;VARID=Sniffles2.INS.5ASF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.3ESF|chr16;test_2_reheader_CHROM=Sniffles2.INS.5ASF|chr16;test_1_reheader_POS=Sniffles2.INS.3ESF|903595;test_2_reheader_POS=Sniffles2.INS.5ASF|903595;test_1_reheader_QUAL=Sniffles2.INS.3ESF|60;test_2_reheader_QUAL=Sniffles2.INS.5ASF|60;test_1_reheader_FILTERS=Sniffles2.INS.3ESF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.5ASF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.3ESF|test_1|GT:0/1|GQ:3|DR:2|DV:6;test_2_reheader_SAMPLE=Sniffles2.INS.5ASF|test_2|GT:0/1|GQ:6|DR:5|DV:2;test_1_reheader_INFO=Sniffles2.INS.3ESF|PRECISE|SVTYPE:INS|SVLEN:600|END:903595|SUPPORT:6|COVERAGE:8:8:8:8:8|STRAND:+-|AF:0.75|STDEV_LEN:0.577|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.5ASF|IMPRECISE|SVTYPE:INS|SVLEN:600|END:903595|SUPPORT:2|COVERAGE:7:7:7:7:7|STRAND:+-|AF:0.286|STDEV_LEN:0.707|STDEV_POS:54.447|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:3:2:6\t0/1:6:5:2", + "chr16\t904025\tSniffles2.INS.5DSF\tN\tGCCCGCTGGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCTGTCTCTGCTGTGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCCGTCTCTGCTGCGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGGGCTACCTCCTCCCCGCGGCATCGCCCACAGGACGCCTGCGTCCCTGCTGCGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGGCGACCTCTGCATCGCCACAGGACGCCTATCTCTGCTGTGTGGTGGTGACCTTTGCACTGCCCGTGGGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCCGTCTCTGCTGTGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCCACAGGACGCCTGTCTCTGCTGTGTGGTGGTGACCTCTGCACTGCCCACAGGACGCCTGTCTCTGCTGTGTGGTGGTGACCTTTGCATG\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=613;END=904025;SUPPORT=2;COVERAGE=7,7,7,7,7;STRAND=+-;AF=0.286;STDEV_LEN=7.071;STDEV_POS=25.456;SUPPORT_LONG=0;FOUND_IN=sniffles;set=test_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.INS.5DSF|chr16;test_2_reheader_POS=Sniffles2.INS.5DSF|904025;test_2_reheader_QUAL=Sniffles2.INS.5DSF|60;test_2_reheader_FILTERS=Sniffles2.INS.5DSF|PASS;test_2_reheader_SAMPLE=Sniffles2.INS.5DSF|test_2|GT:0/1|GQ:6|DR:5|DV:2;test_2_reheader_INFO=Sniffles2.INS.5DSF|IMPRECISE|SVTYPE:INS|SVLEN:613|END:904025|SUPPORT:2|COVERAGE:7:7:7:7:7|STRAND:+-|AF:0.286|STDEV_LEN:7.071|STDEV_POS:25.456|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:6:5:2", + "chr16\t949510\tSniffles2.DEL.6ESF\taatgacagagtcagccaacgacagagtcagagccaacgacagagtcagagacaatgacagagtcagagacaacgacagagtcagagacgacagagtcagagacgacagagtcagagccaatgacagagtcagccaatgacagagtcagagccaacgacagagtcagccaatgacagagtcagagacaacgacagagtcagagacaacgacagagtcagagacgacagagtcagagacgacagagtcagagccaatgacagagtcagccaatgacagagtcagagccaacgacagagtcagccaatgacagagtcagagacaacgacagagttagagacaacgacagagtcagccaaggacagcgtcagccaacgacagaatcagagacaacgacagagtcagccaacgacagagtcagagccaatgagagtcagagccaacgacagagtcagagacgacagagtcagagccaacgacagagtcagccaacgacagagtcagagccaacgacagagtcagccaacgacagagtcagagccaacgacagagtcagccaacgacagagtcagagacaacgacagagtcagagccaacgacagagtcagagacgaaagactcagagccaatgacagagtcagagccaatgacagagtcagccaacgacagagtcagagccaacgacagagtcagccaatgacagagtcagagacagcgacagagttagagacaat\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-731;END=950241;SUPPORT=14;COVERAGE=22,22,22,23,22;STRAND=+-;AF=0.636;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;set=test_1_reheader;FOUNDBY=1;test_1_reheader_CHROM=Sniffles2.DEL.6ESF|chr16;test_1_reheader_POS=Sniffles2.DEL.6ESF|949510;test_1_reheader_QUAL=Sniffles2.DEL.6ESF|60;test_1_reheader_FILTERS=Sniffles2.DEL.6ESF|PASS;test_1_reheader_SAMPLE=Sniffles2.DEL.6ESF|test_1|GT:0/1|GQ:40|DR:8|DV:14;test_1_reheader_INFO=Sniffles2.DEL.6ESF|PRECISE|SVTYPE:DEL|SVLEN:-731|END:950241|SUPPORT:14|COVERAGE:22:22:22:23:22|STRAND:+-|AF:0.636|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader;SUPP_VEC=10\tGT:GQ:DR:DV\t0/1:40:8:14\t./.:.:.:.", + "chr16\t949565\tSniffles2.DEL.C0SF\tgacagagtcagagacaacgacagagtcagagacgacagagtcagagacgacagagtcagagccaatgacagagtcagccaatgacagagtcagagccaac\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-100;END=949665;SUPPORT=8;COVERAGE=31,30,32,32,32;STRAND=+-;AF=0.258;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;set=test_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.DEL.C0SF|chr16;test_2_reheader_POS=Sniffles2.DEL.C0SF|949565;test_2_reheader_QUAL=Sniffles2.DEL.C0SF|60;test_2_reheader_FILTERS=Sniffles2.DEL.C0SF|PASS;test_2_reheader_SAMPLE=Sniffles2.DEL.C0SF|test_2|GT:0/1|GQ:15|DR:23|DV:8;test_2_reheader_INFO=Sniffles2.DEL.C0SF|PRECISE|SVTYPE:DEL|SVLEN:-100|END:949665|SUPPORT:8|COVERAGE:31:30:32:32:32|STRAND:+-|AF:0.258|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:15:23:8", + "chr16\t949708\tSniffles2.DEL.C3SF\tagagacaacgacagagtcagagacgacagagtcagagacgacagagtcagagccaatgacagagtcagccaatgacagagtcagagccaacgacagagtcagccaatgacagagtcagagacaacgacagagttagagacaacgacagagtcagccaaggacagcgtcagccaacgacagaatcagagacaacgacagagtcagccaacgacagagtcagagccaatgagagtcagagccaacgacagagtcagagacgacagagtcag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-269;END=949977;SUPPORT=8;COVERAGE=31,32,32,32,32;STRAND=+-;AF=0.25;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;set=test_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.DEL.C3SF|chr16;test_2_reheader_POS=Sniffles2.DEL.C3SF|949708;test_2_reheader_QUAL=Sniffles2.DEL.C3SF|60;test_2_reheader_FILTERS=Sniffles2.DEL.C3SF|PASS;test_2_reheader_SAMPLE=Sniffles2.DEL.C3SF|test_2|GT:0/1|GQ:13|DR:24|DV:8;test_2_reheader_INFO=Sniffles2.DEL.C3SF|PRECISE|SVTYPE:DEL|SVLEN:-269|END:949977|SUPPORT:8|COVERAGE:31:32:32:32:32|STRAND:+-|AF:0.25|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:13:24:8", + "chr16\t950298\tSniffles2.DEL.C6SF\ttcagccaatgacagagtcagagacaacgacagagtcagccaacaacagtcagccaacgacagagtcaggccaacgacagagtcagccaatgacagagtcagagccaacgacagagtcagagacaacgacagagttagagacaacgacagagtc\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-153;END=950451;SUPPORT=10;COVERAGE=32,32,32,32,32;STRAND=+-;AF=0.312;STDEV_LEN=7.311;STDEV_POS=128.469;FOUND_IN=sniffles;set=test_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.DEL.C6SF|chr16;test_2_reheader_POS=Sniffles2.DEL.C6SF|950298;test_2_reheader_QUAL=Sniffles2.DEL.C6SF|60;test_2_reheader_FILTERS=Sniffles2.DEL.C6SF|PASS;test_2_reheader_SAMPLE=Sniffles2.DEL.C6SF|test_2|GT:0/1|GQ:38|DR:22|DV:10;test_2_reheader_INFO=Sniffles2.DEL.C6SF|IMPRECISE|SVTYPE:DEL|SVLEN:-153|END:950451|SUPPORT:10|COVERAGE:32:32:32:32:32|STRAND:+-|AF:0.312|STDEV_LEN:7.311|STDEV_POS:128.469|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:38:22:10", + "chr16\t950488\tSniffles2.INS.40SF\tN\tCAACGACAGAGTCAGAGACAACGACAGAGTCAGAGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=36;END=950488;SUPPORT=14;COVERAGE=22,23,23,23,23;STRAND=+-;AF=0.609;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;set=test_1_reheader;FOUNDBY=1;test_1_reheader_CHROM=Sniffles2.INS.40SF|chr16;test_1_reheader_POS=Sniffles2.INS.40SF|950488;test_1_reheader_QUAL=Sniffles2.INS.40SF|60;test_1_reheader_FILTERS=Sniffles2.INS.40SF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.40SF|test_1|GT:0/1|GQ:50|DR:9|DV:14;test_1_reheader_INFO=Sniffles2.INS.40SF|PRECISE|SVTYPE:INS|SVLEN:36|END:950488|SUPPORT:14|COVERAGE:22:23:23:23:23|STRAND:+-|AF:0.609|STDEV_LEN:0|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader;SUPP_VEC=10\tGT:GQ:DR:DV\t0/1:50:9:14\t./.:.:.:.", + "chr16\t952880\tSniffles2.DEL.71SF:test_1_reheader|Sniffles2.DEL.C8SF:test_2_reheader\ttccacacagacacccaccccaaaccagcctcctacacgtccacacagacacccaccccaaaccagcctcctgcacgtccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacacg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-178;END=953058;SUPPORT=16;COVERAGE=24,24,25,25,25;STRAND=+-;AF=0.64;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;VARID=Sniffles2.DEL.C8SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.DEL.71SF|chr16;test_2_reheader_CHROM=Sniffles2.DEL.C8SF|chr16;test_1_reheader_POS=Sniffles2.DEL.71SF|952880;test_2_reheader_POS=Sniffles2.DEL.C8SF|952880;test_1_reheader_QUAL=Sniffles2.DEL.71SF|60;test_2_reheader_QUAL=Sniffles2.DEL.C8SF|60;test_1_reheader_FILTERS=Sniffles2.DEL.71SF|PASS;test_2_reheader_FILTERS=Sniffles2.DEL.C8SF|PASS;test_1_reheader_SAMPLE=Sniffles2.DEL.71SF|test_1|GT:0/1|GQ:45|DR:9|DV:16;test_2_reheader_SAMPLE=Sniffles2.DEL.C8SF|test_2|GT:0/1|GQ:41|DR:21|DV:10;test_1_reheader_INFO=Sniffles2.DEL.71SF|PRECISE|SVTYPE:DEL|SVLEN:-178|END:953058|SUPPORT:16|COVERAGE:24:24:25:25:25|STRAND:+-|AF:0.64|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.DEL.C8SF|PRECISE|SVTYPE:DEL|SVLEN:-178|END:953058|SUPPORT:10|COVERAGE:31:31:31:31:31|STRAND:+-|AF:0.323|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:45:9:16\t0/1:41:21:10", + "chr16\t953293\tSniffles2.DEL.72SF:test_1_reheader|Sniffles2.DEL.C9SF:test_2_reheader\tcaaaccagcctcctacacgtccacacagacacccaccccaaaccagcttcctacacgttcacacagacacgg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-72;END=953365;SUPPORT=15;COVERAGE=24,25,25,25,25;STRAND=+-;AF=0.6;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;VARID=Sniffles2.DEL.C9SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.DEL.72SF|chr16;test_2_reheader_CHROM=Sniffles2.DEL.C9SF|chr16;test_1_reheader_POS=Sniffles2.DEL.72SF|953293;test_2_reheader_POS=Sniffles2.DEL.C9SF|953293;test_1_reheader_QUAL=Sniffles2.DEL.72SF|60;test_2_reheader_QUAL=Sniffles2.DEL.C9SF|60;test_1_reheader_FILTERS=Sniffles2.DEL.72SF|PASS;test_2_reheader_FILTERS=Sniffles2.DEL.C9SF|PASS;test_1_reheader_SAMPLE=Sniffles2.DEL.72SF|test_1|GT:0/1|GQ:58|DR:10|DV:15;test_2_reheader_SAMPLE=Sniffles2.DEL.C9SF|test_2|GT:0/1|GQ:41|DR:21|DV:10;test_1_reheader_INFO=Sniffles2.DEL.72SF|PRECISE|SVTYPE:DEL|SVLEN:-72|END:953365|SUPPORT:15|COVERAGE:24:25:25:25:25|STRAND:+-|AF:0.6|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.DEL.C9SF|PRECISE|SVTYPE:DEL|SVLEN:-72|END:953365|SUPPORT:10|COVERAGE:31:31:31:31:31|STRAND:+-|AF:0.323|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:58:10:15\t0/1:41:21:10", + "chr16\t953349\tSniffles2.DEL.75SF:test_1_reheader|Sniffles2.DEL.CDSF:test_2_reheader\tgttcacacagacacggaccccaaaccagcctcctacacgtccacacagacacccaccccaaaccagcctcctacacgttcacacagacacggaccccacaccagcctcctacacgtccacacagacacccaccccaaaccagcctcctgcacgtccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacacgtccacacagacacccactccaaaccagcctcctacacgtccacacagacaccccaaaccagcctcctacatgtccacacagacacccaccccaaaccagcctcctacatgtccacacagacacccaccccaaaccagcctcctacatgtccacacagacacccaccccaaaccagcctcctacat\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-440;END=953789;SUPPORT=9;COVERAGE=25,25,25,25,25;STRAND=+-;AF=0.36;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;VARID=Sniffles2.DEL.CDSF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.DEL.75SF|chr16;test_2_reheader_CHROM=Sniffles2.DEL.CDSF|chr16;test_1_reheader_POS=Sniffles2.DEL.75SF|953349;test_2_reheader_POS=Sniffles2.DEL.CDSF|953349;test_1_reheader_QUAL=Sniffles2.DEL.75SF|60;test_2_reheader_QUAL=Sniffles2.DEL.CDSF|60;test_1_reheader_FILTERS=Sniffles2.DEL.75SF|PASS;test_2_reheader_FILTERS=Sniffles2.DEL.CDSF|PASS;test_1_reheader_SAMPLE=Sniffles2.DEL.75SF|test_1|GT:0/1|GQ:45|DR:16|DV:9;test_2_reheader_SAMPLE=Sniffles2.DEL.CDSF|test_2|GT:0/1|GQ:60|DR:15|DV:16;test_1_reheader_INFO=Sniffles2.DEL.75SF|PRECISE|SVTYPE:DEL|SVLEN:-440|END:953789|SUPPORT:9|COVERAGE:25:25:25:25:25|STRAND:+-|AF:0.36|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.DEL.CDSF|PRECISE|SVTYPE:DEL|SVLEN:-440|END:953789|SUPPORT:16|COVERAGE:31:31:31:31:31|STRAND:+-|AF:0.516|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:45:16:9\t0/1:60:15:16", + "chr16\t953507\tSniffles2.DEL.73SF:test_1_reheader|Sniffles2.DEL.CBSF:test_2_reheader\tacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacacgtccacacag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-106;END=953613;SUPPORT=15;COVERAGE=25,25,25,25,25;STRAND=+-;AF=0.6;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;VARID=Sniffles2.DEL.CBSF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.DEL.73SF|chr16;test_2_reheader_CHROM=Sniffles2.DEL.CBSF|chr16;test_1_reheader_POS=Sniffles2.DEL.73SF|953507;test_2_reheader_POS=Sniffles2.DEL.CBSF|953507;test_1_reheader_QUAL=Sniffles2.DEL.73SF|60;test_2_reheader_QUAL=Sniffles2.DEL.CBSF|60;test_1_reheader_FILTERS=Sniffles2.DEL.73SF|PASS;test_2_reheader_FILTERS=Sniffles2.DEL.CBSF|PASS;test_1_reheader_SAMPLE=Sniffles2.DEL.73SF|test_1|GT:0/1|GQ:58|DR:10|DV:15;test_2_reheader_SAMPLE=Sniffles2.DEL.CBSF|test_2|GT:0/1|GQ:28|DR:22|DV:9;test_1_reheader_INFO=Sniffles2.DEL.73SF|PRECISE|SVTYPE:DEL|SVLEN:-106|END:953613|SUPPORT:15|COVERAGE:25:25:25:25:25|STRAND:+-|AF:0.6|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.DEL.CBSF|PRECISE|SVTYPE:DEL|SVLEN:-106|END:953613|SUPPORT:9|COVERAGE:31:31:31:31:31|STRAND:+-|AF:0.29|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:58:10:15\t0/1:28:22:9", + "chr16\t954972\tSniffles2.INS.41SF:test_1_reheader|Sniffles2.INS.60SF:test_2_reheader\tN\tCTAAGCGAACCAGACACGTTACATAAAATGCGTGCCTGCAGCAGACGGGGTCTGTGCACACACACACACAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=71;END=954972;SUPPORT=13;COVERAGE=25,24,24,26,26;STRAND=+-;AF=0.542;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;IMPRECISE;VARID=Sniffles2.INS.60SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.41SF|chr16;test_2_reheader_CHROM=Sniffles2.INS.60SF|chr16;test_1_reheader_POS=Sniffles2.INS.41SF|954972;test_2_reheader_POS=Sniffles2.INS.60SF|954972;test_1_reheader_QUAL=Sniffles2.INS.41SF|60;test_2_reheader_QUAL=Sniffles2.INS.60SF|60;test_1_reheader_FILTERS=Sniffles2.INS.41SF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.60SF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.41SF|test_1|GT:0/1|GQ:60|DR:11|DV:13;test_2_reheader_SAMPLE=Sniffles2.INS.60SF|test_2|GT:0/1|GQ:15|DR:23|DV:8;test_1_reheader_INFO=Sniffles2.INS.41SF|PRECISE|SVTYPE:INS|SVLEN:71|END:954972|SUPPORT:13|COVERAGE:25:24:24:26:26|STRAND:+-|AF:0.542|STDEV_LEN:0|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.60SF|IMPRECISE|SVTYPE:INS|SVLEN:71|END:954972|SUPPORT:8|COVERAGE:32:31:31:32:33|STRAND:+-|AF:0.258|STDEV_LEN:2.345|STDEV_POS:27.353|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:60:11:13\t0/1:15:23:8", + "chr16\t955127\tSniffles2.INS.44SF:test_1_reheader|Sniffles2.INS.61SF:test_2_reheader\tN\tAACCAGACACGTTACATAAAATGCGTGCCTGCTGCAGACGTGGTGTGTGTATACACACACACACATCTAAGTAAACCAGACACGTTACATAAAATGCGTGCCCGCAGCAGACGTAGTGTGTGCATCCACACACACACATCTAAGTAAACTAGACACGTTACATAAAATGCGTGCCCACAGCAGACGCGGTGTGTGCGTACACACACACACATCTAAGTAAACTAGACACGTTACATAAAATGCGTGCCCGCAGCAGACGCAGTGTGTGCATACACATCTAAGTG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=284;END=955127;SUPPORT=13;COVERAGE=27,26,26,26,27;STRAND=+-;AF=0.5;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;IMPRECISE;VARID=Sniffles2.INS.61SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.44SF|chr16;test_2_reheader_CHROM=Sniffles2.INS.61SF|chr16;test_1_reheader_POS=Sniffles2.INS.44SF|955127;test_2_reheader_POS=Sniffles2.INS.61SF|955136;test_1_reheader_QUAL=Sniffles2.INS.44SF|60;test_2_reheader_QUAL=Sniffles2.INS.61SF|60;test_1_reheader_FILTERS=Sniffles2.INS.44SF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.61SF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.44SF|test_1|GT:0/1|GQ:60|DR:13|DV:13;test_2_reheader_SAMPLE=Sniffles2.INS.61SF|test_2|GT:0/1|GQ:48|DR:22|DV:11;test_1_reheader_INFO=Sniffles2.INS.44SF|PRECISE|SVTYPE:INS|SVLEN:284|END:955127|SUPPORT:13|COVERAGE:27:26:26:26:27|STRAND:+-|AF:0.5|STDEV_LEN:0|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.61SF|IMPRECISE|SVTYPE:INS|SVLEN:286|END:955136|SUPPORT:11|COVERAGE:30:32:33:33:33|STRAND:+-|AF:0.333|STDEV_LEN:3.599|STDEV_POS:75.588|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:60:13:13\t0/1:48:22:11", + "chr16\t955473\tSniffles2.INS.45SF:test_1_reheader|Sniffles2.INS.64SF:test_2_reheader\tN\tACACACACACACACACATCTAAGTGAACCAGACACGTTACATAAAATGCGTGCCTGCAGCAGATGCGGTGTGTGCATACACACACACACATCTAAGTAAACCAGACACGTTACATAAAATGCGTGCCTGCAGCAGACGTAGTGTGTGCATCCACACACACACATCTAAGTAAACTAGACACGTTACATAAAATGCGTGCCCGCAGCAGAGACGGTGTGTGCGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=223;END=955473;SUPPORT=15;COVERAGE=24,26,26,27,27;STRAND=+-;AF=0.577;STDEV_LEN=0.5;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.64SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.45SF|chr16;test_2_reheader_CHROM=Sniffles2.INS.64SF|chr16;test_1_reheader_POS=Sniffles2.INS.45SF|955473;test_2_reheader_POS=Sniffles2.INS.64SF|955473;test_1_reheader_QUAL=Sniffles2.INS.45SF|60;test_2_reheader_QUAL=Sniffles2.INS.64SF|60;test_1_reheader_FILTERS=Sniffles2.INS.45SF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.64SF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.45SF|test_1|GT:0/1|GQ:60|DR:11|DV:15;test_2_reheader_SAMPLE=Sniffles2.INS.64SF|test_2|GT:0/1|GQ:60|DR:21|DV:12;test_1_reheader_INFO=Sniffles2.INS.45SF|PRECISE|SVTYPE:INS|SVLEN:223|END:955473|SUPPORT:15|COVERAGE:24:26:26:27:27|STRAND:+-|AF:0.577|STDEV_LEN:0.5|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.64SF|PRECISE|SVTYPE:INS|SVLEN:223|END:955473|SUPPORT:12|COVERAGE:31:33:33:33:33|STRAND:+-|AF:0.364|STDEV_LEN:0|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:60:11:15\t0/1:60:21:12", + "chr16\t955933\tSniffles2.INS.46SF:test_1_reheader|Sniffles2.INS.65SF:test_2_reheader\tN\tCACGGCACCCACCCCACGACGGCTCTCTCACATCCACAGGTCTCCGAGTTCACGTCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=57;END=955933;SUPPORT=12;COVERAGE=26,27,27,29,29;STRAND=+-;AF=0.444;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;IMPRECISE;VARID=Sniffles2.INS.65SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.46SF|chr16;test_2_reheader_CHROM=Sniffles2.INS.65SF|chr16;test_1_reheader_POS=Sniffles2.INS.46SF|955933;test_2_reheader_POS=Sniffles2.INS.65SF|955933;test_1_reheader_QUAL=Sniffles2.INS.46SF|60;test_2_reheader_QUAL=Sniffles2.INS.65SF|60;test_1_reheader_FILTERS=Sniffles2.INS.46SF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.65SF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.46SF|test_1|GT:0/1|GQ:60|DR:15|DV:12;test_2_reheader_SAMPLE=Sniffles2.INS.65SF|test_2|GT:0/1|GQ:60|DR:21|DV:12;test_1_reheader_INFO=Sniffles2.INS.46SF|PRECISE|SVTYPE:INS|SVLEN:57|END:955933|SUPPORT:12|COVERAGE:26:27:27:29:29|STRAND:+-|AF:0.444|STDEV_LEN:0|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.65SF|IMPRECISE|SVTYPE:INS|SVLEN:57|END:955933|SUPPORT:12|COVERAGE:33:33:33:31:31|STRAND:+-|AF:0.364|STDEV_LEN:0.756|STDEV_POS:42.601|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:60:15:12\t0/1:60:21:12", + "chr16\t956173\tSniffles2.INS.47SF\tN\tCCCACGACGGCTCTCTCACATCCACAGGTCTCCGAGTTCACGTCTCACGGCGCCCA\t60\tGT\tPRECISE;SVTYPE=INS;SVLEN=57;END=956173;SUPPORT=5;COVERAGE=27,29,29,29,29;STRAND=+-;AF=0.172;STDEV_LEN=0.577;STDEV_POS=10.392;SUPPORT_LONG=0;FOUND_IN=sniffles;set=filterIntest_1_reheader;FOUNDBY=1;test_1_reheader_CHROM=Sniffles2.INS.47SF|chr16;test_1_reheader_POS=Sniffles2.INS.47SF|956173;test_1_reheader_QUAL=Sniffles2.INS.47SF|60;test_1_reheader_FILTERS=Sniffles2.INS.47SF|GT;test_1_reheader_SAMPLE=Sniffles2.INS.47SF|test_1|GT:0/0|GQ:16|DR:24|DV:5;test_1_reheader_INFO=Sniffles2.INS.47SF|PRECISE|SVTYPE:INS|SVLEN:57|END:956173|SUPPORT:5|COVERAGE:27:29:29:29:29|STRAND:+-|AF:0.172|STDEV_LEN:0.577|STDEV_POS:10.392|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader;SUPP_VEC=10\tGT:GQ:DR:DV\t0/0:16:24:5\t./.:.:.:.", + "chr16\t960401\tSniffles2.DEL.7CSF:test_1_reheader|Sniffles2.DEL.D3SF:test_2_reheader\tacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacaacactggatcacaacccagacaccatctcatggtgacaacacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacaacacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacaacacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagac\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-864;END=961265;SUPPORT=13;COVERAGE=31,31,31,30,30;STRAND=+-;AF=0.419;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;IMPRECISE;VARID=Sniffles2.DEL.D3SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.DEL.7CSF|chr16;test_2_reheader_CHROM=Sniffles2.DEL.D3SF|chr16;test_1_reheader_POS=Sniffles2.DEL.7CSF|960401;test_2_reheader_POS=Sniffles2.DEL.D3SF|960552;test_1_reheader_QUAL=Sniffles2.DEL.7CSF|60;test_2_reheader_QUAL=Sniffles2.DEL.D3SF|60;test_1_reheader_FILTERS=Sniffles2.DEL.7CSF|PASS;test_2_reheader_FILTERS=Sniffles2.DEL.D3SF|PASS;test_1_reheader_SAMPLE=Sniffles2.DEL.7CSF|test_1|GT:0/1|GQ:60|DR:18|DV:13;test_2_reheader_SAMPLE=Sniffles2.DEL.D3SF|test_2|GT:0/1|GQ:60|DR:16|DV:11;test_1_reheader_INFO=Sniffles2.DEL.7CSF|PRECISE|SVTYPE:DEL|SVLEN:-864|END:961265|SUPPORT:13|COVERAGE:31:31:31:30:30|STRAND:+-|AF:0.419|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.DEL.D3SF|IMPRECISE|SVTYPE:DEL|SVLEN:-713|END:961265|SUPPORT:11|COVERAGE:27:27:27:27:27|STRAND:+-|AF:0.407|STDEV_LEN:61.173|STDEV_POS:14.697|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:60:18:13\t0/1:60:16:11", + "chr16\t960535\tSniffles2.DEL.78SF:test_1_reheader|Sniffles2.DEL.D1SF:test_2_reheader\tcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacaacacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-262;END=960797;SUPPORT=14;COVERAGE=31,31,31,31,30;STRAND=+-;AF=0.452;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;IMPRECISE;VARID=Sniffles2.DEL.D1SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.DEL.78SF|chr16;test_2_reheader_CHROM=Sniffles2.DEL.D1SF|chr16;test_1_reheader_POS=Sniffles2.DEL.78SF|960535;test_2_reheader_POS=Sniffles2.DEL.D1SF|960535;test_1_reheader_QUAL=Sniffles2.DEL.78SF|60;test_2_reheader_QUAL=Sniffles2.DEL.D1SF|60;test_1_reheader_FILTERS=Sniffles2.DEL.78SF|PASS;test_2_reheader_FILTERS=Sniffles2.DEL.D1SF|PASS;test_1_reheader_SAMPLE=Sniffles2.DEL.78SF|test_1|GT:0/1|GQ:60|DR:17|DV:14;test_2_reheader_SAMPLE=Sniffles2.DEL.D1SF|test_2|GT:0/1|GQ:60|DR:15|DV:12;test_1_reheader_INFO=Sniffles2.DEL.78SF|PRECISE|SVTYPE:DEL|SVLEN:-262|END:960797|SUPPORT:14|COVERAGE:31:31:31:31:30|STRAND:+-|AF:0.452|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.DEL.D1SF|IMPRECISE|SVTYPE:DEL|SVLEN:-262|END:960797|SUPPORT:12|COVERAGE:27:27:27:27:27|STRAND:+-|AF:0.444|STDEV_LEN:1.833|STDEV_POS:50.328|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:60:17:14\t0/1:60:15:12", + "chr16\t961793\tSniffles2.DEL.7ESF:test_1_reheader|Sniffles2.DEL.D4SF:test_2_reheader\tacagactcacggtgacagcacgggatcacgacccag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-36;END=961829;SUPPORT=13;COVERAGE=30,30,30,30,30;STRAND=+-;AF=0.433;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;VARID=Sniffles2.DEL.D4SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.DEL.7ESF|chr16;test_2_reheader_CHROM=Sniffles2.DEL.D4SF|chr16;test_1_reheader_POS=Sniffles2.DEL.7ESF|961793;test_2_reheader_POS=Sniffles2.DEL.D4SF|961793;test_1_reheader_QUAL=Sniffles2.DEL.7ESF|60;test_2_reheader_QUAL=Sniffles2.DEL.D4SF|60;test_1_reheader_FILTERS=Sniffles2.DEL.7ESF|PASS;test_2_reheader_FILTERS=Sniffles2.DEL.D4SF|PASS;test_1_reheader_SAMPLE=Sniffles2.DEL.7ESF|test_1|GT:0/1|GQ:60|DR:17|DV:13;test_2_reheader_SAMPLE=Sniffles2.DEL.D4SF|test_2|GT:0/1|GQ:14|DR:20|DV:7;test_1_reheader_INFO=Sniffles2.DEL.7ESF|PRECISE|SVTYPE:DEL|SVLEN:-36|END:961829|SUPPORT:13|COVERAGE:30:30:30:30:30|STRAND:+-|AF:0.433|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.DEL.D4SF|PRECISE|SVTYPE:DEL|SVLEN:-36|END:961829|SUPPORT:7|COVERAGE:27:27:27:27:27|STRAND:+-|AF:0.259|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:60:17:13\t0/1:14:20:7", + "chr16\t961981\tSniffles2.DEL.7FSF:test_1_reheader|Sniffles2.DEL.D5SF:test_2_reheader\tacagactcacggtgacagcacgggatcaccacccag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-36;END=962017;SUPPORT=12;COVERAGE=30,30,30,30,30;STRAND=+-;AF=0.4;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;VARID=Sniffles2.DEL.D5SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.DEL.7FSF|chr16;test_2_reheader_CHROM=Sniffles2.DEL.D5SF|chr16;test_1_reheader_POS=Sniffles2.DEL.7FSF|961981;test_2_reheader_POS=Sniffles2.DEL.D5SF|961981;test_1_reheader_QUAL=Sniffles2.DEL.7FSF|60;test_2_reheader_QUAL=Sniffles2.DEL.D5SF|60;test_1_reheader_FILTERS=Sniffles2.DEL.7FSF|PASS;test_2_reheader_FILTERS=Sniffles2.DEL.D5SF|PASS;test_1_reheader_SAMPLE=Sniffles2.DEL.7FSF|test_1|GT:0/1|GQ:60|DR:18|DV:12;test_2_reheader_SAMPLE=Sniffles2.DEL.D5SF|test_2|GT:0/1|GQ:14|DR:20|DV:7;test_1_reheader_INFO=Sniffles2.DEL.7FSF|PRECISE|SVTYPE:DEL|SVLEN:-36|END:962017|SUPPORT:12|COVERAGE:30:30:30:30:30|STRAND:+-|AF:0.4|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.DEL.D5SF|PRECISE|SVTYPE:DEL|SVLEN:-36|END:962017|SUPPORT:7|COVERAGE:27:27:27:27:26|STRAND:+-|AF:0.259|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:60:18:12\t0/1:14:20:7", + "chr16\t1040567\tSniffles2.INS.67SF\tN\tCCTGCCAAAGTCCCCACCGAGGTTCCCTCCGAGGTTCCCGCCGAGGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=47;END=1040567;SUPPORT=2;COVERAGE=2,2,2,2,2;STRAND=-;AF=1;STDEV_LEN=0.707;STDEV_POS=5.657;SUPPORT_LONG=0;FOUND_IN=sniffles;set=test_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.INS.67SF|chr16;test_2_reheader_POS=Sniffles2.INS.67SF|1040567;test_2_reheader_QUAL=Sniffles2.INS.67SF|60;test_2_reheader_FILTERS=Sniffles2.INS.67SF|PASS;test_2_reheader_SAMPLE=Sniffles2.INS.67SF|test_2|GT:1/1|GQ:5|DR:0|DV:2;test_2_reheader_INFO=Sniffles2.INS.67SF|PRECISE|SVTYPE:INS|SVLEN:47|END:1040567|SUPPORT:2|COVERAGE:2:2:2:2:2|STRAND:-|AF:1|STDEV_LEN:0.707|STDEV_POS:5.657|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t1/1:5:0:2", + "chr16\t1043243\tSniffles2.DEL.DBSF\tggtcagggacccctcgggtcagccttggggccgttctggggggtggtcagggacccctcgggtcagccttggggccgttccaggggggt\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-89;END=1043332;SUPPORT=4;COVERAGE=4,4,4,4,5;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;set=test_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.DEL.DBSF|chr16;test_2_reheader_POS=Sniffles2.DEL.DBSF|1043243;test_2_reheader_QUAL=Sniffles2.DEL.DBSF|60;test_2_reheader_FILTERS=Sniffles2.DEL.DBSF|PASS;test_2_reheader_SAMPLE=Sniffles2.DEL.DBSF|test_2|GT:1/1|GQ:11|DR:0|DV:4;test_2_reheader_INFO=Sniffles2.DEL.DBSF|PRECISE|SVTYPE:DEL|SVLEN:-89|END:1043332|SUPPORT:4|COVERAGE:4:4:4:4:5|STRAND:+-|AF:1|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t1/1:11:0:4", + "chr16\t1075978\tSniffles2.INS.4ASF:test_1_reheader|Sniffles2.INS.6ASF:test_2_reheader\tN\tCCCTCCTCCCCTCCCCCTCCTTTCCCTCCCTCTCTCCCTCTCTCCTCCCCGCCTCCCCATCCCTCTCCCTCTCCCTCCTCTCTCTCTCCCCTACCCTGTCTTTCTCTCTGCCTCCCCGCCTCCCCTTCCCTCTCCCCATACCCTGTCTTTCTCTCTCCCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=160;END=1075978;SUPPORT=5;COVERAGE=8,5,5,5,4;STRAND=+-;AF=1;STDEV_LEN=1.155;STDEV_POS=8.737;SUPPORT_LONG=0;FOUND_IN=sniffles;IMPRECISE;VARID=Sniffles2.INS.6ASF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.4ASF|chr16;test_2_reheader_CHROM=Sniffles2.INS.6ASF|chr16;test_1_reheader_POS=Sniffles2.INS.4ASF|1075978;test_2_reheader_POS=Sniffles2.INS.6ASF|1075983;test_1_reheader_QUAL=Sniffles2.INS.4ASF|60;test_2_reheader_QUAL=Sniffles2.INS.6ASF|60;test_1_reheader_FILTERS=Sniffles2.INS.4ASF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.6ASF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.4ASF|test_1|GT:1/1|GQ:13|DR:0|DV:5;test_2_reheader_SAMPLE=Sniffles2.INS.6ASF|test_2|GT:1/1|GQ:6|DR:3|DV:13;test_1_reheader_INFO=Sniffles2.INS.4ASF|PRECISE|SVTYPE:INS|SVLEN:160|END:1075978|SUPPORT:5|COVERAGE:8:5:5:5:4|STRAND:+-|AF:1|STDEV_LEN:1.155|STDEV_POS:8.737|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.6ASF|IMPRECISE|SVTYPE:INS|SVLEN:157|END:1075983|SUPPORT:13|COVERAGE:17:17:16:16:16|STRAND:+-|AF:0.812|STDEV_LEN:38.003|STDEV_POS:38.833|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:13:0:5\t1/1:6:3:13", + "chr16\t1076128\tSniffles2.DEL.84SF\tcctccccgcctccccatccctctccctctccctcctctctctctccccctaccctgttttctctctc\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-67;END=1076195;SUPPORT=2;COVERAGE=6,5,4,4,3;STRAND=+;AF=0.5;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;set=test_1_reheader;FOUNDBY=1;test_1_reheader_CHROM=Sniffles2.DEL.84SF|chr16;test_1_reheader_POS=Sniffles2.DEL.84SF|1076128;test_1_reheader_QUAL=Sniffles2.DEL.84SF|60;test_1_reheader_FILTERS=Sniffles2.DEL.84SF|PASS;test_1_reheader_SAMPLE=Sniffles2.DEL.84SF|test_1|GT:0/1|GQ:14|DR:2|DV:2;test_1_reheader_INFO=Sniffles2.DEL.84SF|PRECISE|SVTYPE:DEL|SVLEN:-67|END:1076195|SUPPORT:2|COVERAGE:6:5:4:4:3|STRAND:+|AF:0.5|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader;SUPP_VEC=10\tGT:GQ:DR:DV\t0/1:14:2:2\t./.:.:.:.", + "chr16\t1185669\tSniffles2.INS.6ESF\tN\tGGCGGGGTACGTGGGGGGCGGGTGAGTAGACGGTCGGCGTGCGTAGGGGCCGGAGGCGGGTGTGGACGGGGCGGGTGAGTACGGTCGGCGTGCGCAGGGGCGGAGCGGGGTACGTGGGGGGCGGGTGAGAGACGGTCGGCATGCATAGGGCCGGGGGCGGGGTACGTGGGGGGGCGGGTGAGTAGACGGTCGGCGTGCGTAGGGGCCGGAGGCGTGGTGTGTAGACGGGGCGGGTGAGTAGACGGTCGGCGGGGTACGTGGGGGGCGGGTGAGGGCAGACGGTCGGCATGCATAGGGCCGGGGGCGGGGGTACGTGGGGGGCGGGTGAGTAGACGGTCGGCGTGCGTAGGGGCCGGTAGGCGCGCGCGGACGGGGCGGGTGAGTAGACGGTCGGTGCGGGGGTGTGTACGGGGCGGGTGAGTAGACGGTCGGCGTGCGTAGGGGCCGGAGGCGGGGTACGTGGGGGGCGGGTGAGAGGACGGCGTGCGTAGGGCGCAGGCGGTGTGCAGACGGGGCGGGTGAGTAGACGGTCGGCGTGCATAGGGGCCGAAGGCGGGGTGTGTACGGGGCGGGTGAGTAGACGGCGTAGGGGCCAGGTAGACGGCGGTGCATAGGGGCCGGAGGGTGGGTGTGCACGGGCGGGCGAG\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=725;END=1185669;SUPPORT=3;COVERAGE=5,6,6,6,7;STRAND=+-;AF=0.5;STDEV_LEN=55.154;STDEV_POS=139.3;SUPPORT_LONG=0;FOUND_IN=sniffles;set=test_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.INS.6ESF|chr16;test_2_reheader_POS=Sniffles2.INS.6ESF|1185669;test_2_reheader_QUAL=Sniffles2.INS.6ESF|60;test_2_reheader_FILTERS=Sniffles2.INS.6ESF|PASS;test_2_reheader_SAMPLE=Sniffles2.INS.6ESF|test_2|GT:0/1|GQ:21|DR:3|DV:3;test_2_reheader_INFO=Sniffles2.INS.6ESF|IMPRECISE|SVTYPE:INS|SVLEN:725|END:1185669|SUPPORT:3|COVERAGE:5:6:6:6:7|STRAND:+-|AF:0.5|STDEV_LEN:55.154|STDEV_POS:139.3|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:21:3:3", + "chr16\t1185837\tSniffles2.INS.6FSF\tN\tGGGTGCAGTGGGGGGCGGGTGAGTAGACGGCATGTGTAGGGGCAAGGGCAGGGGTGCGTGGGGGGCGGGTGAGTAGACGGTCGGCGTGCATAGGGGCCGGGGGCGGGGTGTGTACGGGGCGGGTGAATAGACGGTCGGCATGCATAGGGCCGGGGGCGGGGTACGTGGGGGGCGGGTGAGTAGACGGTCGGCGTGCGTAGGGGCCGGAGGCGTGGTGTGTACGGGGCGGGTGAGTTAGACGGTCGGGCGGGGTGTGTACGGGGCGGGTGAGTAGACGGTCGGCGTGCGTAGGGGCCGGAGGCGGGGTACGTGGGGGGCGGGTGAGTAGACGGCGTGCGTAGGGGCCGGAGGCGGGGTGTGTACGGGGCGGGTGAGTAGACGGTCGGCGTGGATTGGGGCCGAAGGCAGGCGGGGTGTGTACGGGGCGGGTGAGTAGACGGTCGGCGTGCGTAGGGGCCGGAGGCGGGGTGTGTACGGGGCAGGTGAGTATAGACGGCGTGCATAGGGGCCGGAGGCGGGGTGTGTATGGGGCGGGTGAGTAGACGGTCGGCGTGCGTGGGCCGGAGGCGGGGTGTGTACGGGGCGGGTGAGTCAGCGTGGGGCCGACGGGCCGGAGGCGGGGTGTGTACGGGGCGGGTGAGTAGACGGCGTAGGGGCCGGAGGCGGGGTGTGTACGGGGCAGGTGAGTAGACGGCGTGCGTAGGGGCCGGAGGAGCGAGGTGGACGTGGGGGGCGGGTGAGTAGACGGCATGTGTAGGGGCCGGAGGCGGGGTGTGTACGGGGCGGGTGAGTAGACGGTCGGCGTGCGTTGGGGCCGGAGGCGGGGTGTGTACGGGGCAGGTGAGTAGACGGTCGGCGTGCGTAGGGGCCGGAGGCGGGGTACGTGGGGGGCGGGTGAGTAGACGGTCGGCGTGCGTAGGGGCCGGAGGCGGGGTGTGTACGGGGCGGGTGAGTAGACGGTCAGCGTGCGTAGGGGCCGGAGGCGGGGTACGTGGGGGGCGGGTGAGTAGACGGTCGGCGTGCATAGGGGCCGGAGGCGGGGAGGGGTGTGTACGGGGCGGGTGAGTAGACGGTCAGCGTGCGTAGGGGCCGGAGGCGGGCCGGGTACGTGGGGGGCGGGTGAGTAGACGGTCGGCGTGCGTAGGGGCCGGAGGCGTGGTGTGTACGGGGCGGGTGAGTAGACGGTCGGGCGGGGTGTGTACGGGGCGGGTGAGTAGACGGTCGGCGTGCGTAGGGGCCGGGAGGCGGGGTACGTGGGGGGCGGGTGAGTAGACGGCGTGCGTAGGGGCCGGAGGCGGGGTGTGTACGGGGCGGGTGAGTAGACGGTCGGCGTGCATAGGGGCCGAAGGCGGGGTGTGTACGGGGCGCATGTAGACGGCGTAGGGGCCAGAGGCGGGGTGTGTACGGGGCGGGTGAGTAGACGGTCGGCGTGCGTAGGGGCCGGAGGCGGGGTGTGTACGGGGCAGGTGAGTAGACGGCGTGCATAGGGGCCGGAGGCGGGGTGTGTATGGGGCGGGTGAGTAGACGGTCGGCGTGCGTAGGGGCCGGAGGCGGGGTGTGTACGGGGCGGGTGAGTACGCGTGGGGACGGGCGTGTGGGCGGGTGGGTGGGGAGGGGTGGGCGGGCCGGGGCGCTCGGGGCAGGTGGGTGGCGGGGTGGCGCGT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=1414;END=1185837;SUPPORT=5;COVERAGE=6,6,7,7,7;STRAND=+-;AF=0.714;STDEV_LEN=153.895;STDEV_POS=111.482;SUPPORT_LONG=0;FOUND_IN=sniffles;set=test_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.INS.6FSF|chr16;test_2_reheader_POS=Sniffles2.INS.6FSF|1185837;test_2_reheader_QUAL=Sniffles2.INS.6FSF|60;test_2_reheader_FILTERS=Sniffles2.INS.6FSF|PASS;test_2_reheader_SAMPLE=Sniffles2.INS.6FSF|test_2|GT:0/1|GQ:6|DR:2|DV:5;test_2_reheader_INFO=Sniffles2.INS.6FSF|IMPRECISE|SVTYPE:INS|SVLEN:1414|END:1185837|SUPPORT:5|COVERAGE:6:6:7:7:7|STRAND:+-|AF:0.714|STDEV_LEN:153.895|STDEV_POS:111.482|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:6:2:5", + "chr16\t1190923\tSniffles2.INS.4ESF:test_1_reheader|Sniffles2.INS.70SF:test_2_reheader\tN\tGGGTTTCGCTGACCCAGCAGGCTGGCCTGGTTGTGTGGCCTCAGGCACACTCGGGGTTTCGGTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTCTGACTCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTCTGACTCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTCTTACTCAGCAGGCTGGCCTGGCTGTGTGGCCTCCGGCACACTCGGGGTCTCTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTTTCGGTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCAGGGTTTTGGTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTTGGGGTCTCTGACCCAGTAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=523;END=1190923;SUPPORT=3;COVERAGE=10,10,10,10,11;STRAND=+;AF=0.3;STDEV_LEN=2.646;STDEV_POS=50.013;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.70SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.4ESF|chr16;test_2_reheader_CHROM=Sniffles2.INS.70SF|chr16;test_1_reheader_POS=Sniffles2.INS.4ESF|1190923;test_2_reheader_POS=Sniffles2.INS.70SF|1190943;test_1_reheader_QUAL=Sniffles2.INS.4ESF|60;test_2_reheader_QUAL=Sniffles2.INS.70SF|60;test_1_reheader_FILTERS=Sniffles2.INS.4ESF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.70SF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.4ESF|test_1|GT:0/1|GQ:10|DR:7|DV:3;test_2_reheader_SAMPLE=Sniffles2.INS.70SF|test_2|GT:0/1|GQ:36|DR:5|DV:5;test_1_reheader_INFO=Sniffles2.INS.4ESF|IMPRECISE|SVTYPE:INS|SVLEN:523|END:1190923|SUPPORT:3|COVERAGE:10:10:10:10:11|STRAND:+|AF:0.3|STDEV_LEN:2.646|STDEV_POS:50.013|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.70SF|IMPRECISE|SVTYPE:INS|SVLEN:524|END:1190943|SUPPORT:5|COVERAGE:9:10:10:10:10|STRAND:+-|AF:0.5|STDEV_LEN:2.887|STDEV_POS:35.907|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:10:7:3\t0/1:36:5:5", + "chr16\t1191001\tSniffles2.DEL.86SF\tcctggctgtgtggcctcaggcacactcggggtctctgacccagcaggctggcctggctgtgtggcctcaggcacactcggggtctctctgactcagcaggctggcctggctgtgtggcctcaggcacactcggggtctctctgactcagcaggctggcctggctgtgtggcctcaggcacactcggggtctctcttactcagcaggctgg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-210;END=1191211;SUPPORT=7;COVERAGE=10,10,11,11,11;STRAND=+-;AF=0.636;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;set=test_1_reheader;FOUNDBY=1;test_1_reheader_CHROM=Sniffles2.DEL.86SF|chr16;test_1_reheader_POS=Sniffles2.DEL.86SF|1191001;test_1_reheader_QUAL=Sniffles2.DEL.86SF|60;test_1_reheader_FILTERS=Sniffles2.DEL.86SF|PASS;test_1_reheader_SAMPLE=Sniffles2.DEL.86SF|test_1|GT:0/1|GQ:20|DR:4|DV:7;test_1_reheader_INFO=Sniffles2.DEL.86SF|PRECISE|SVTYPE:DEL|SVLEN:-210|END:1191211|SUPPORT:7|COVERAGE:10:10:11:11:11|STRAND:+-|AF:0.636|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader;SUPP_VEC=10\tGT:GQ:DR:DV\t0/1:20:4:7\t./.:.:.:.", + "chr16\t1191090\tSniffles2.DEL.DESF\tgactcagcaggctggcctggctgtgtggcctcaggcacactcggggtctctctgactcagcaggctggcctggctgtgtggcctcaggcacactcggggtctctcttactcagcaggctggcctggctgtgtggcctcaggcacactcggggtctctgacccagcaggctggcctggctgtgtggcctcaggcacactcggggtctctct\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-210;END=1191300;SUPPORT=3;COVERAGE=9,10,10,10,10;STRAND=+-;AF=0.3;STDEV_LEN=0.577;STDEV_POS=51.384;FOUND_IN=sniffles;set=test_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.DEL.DESF|chr16;test_2_reheader_POS=Sniffles2.DEL.DESF|1191090;test_2_reheader_QUAL=Sniffles2.DEL.DESF|60;test_2_reheader_FILTERS=Sniffles2.DEL.DESF|PASS;test_2_reheader_SAMPLE=Sniffles2.DEL.DESF|test_2|GT:0/1|GQ:10|DR:7|DV:3;test_2_reheader_INFO=Sniffles2.DEL.DESF|IMPRECISE|SVTYPE:DEL|SVLEN:-210|END:1191300|SUPPORT:3|COVERAGE:9:10:10:10:10|STRAND:+-|AF:0.3|STDEV_LEN:0.577|STDEV_POS:51.384|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:10:7:3", + "chr16\t1204953\tSniffles2.INS.50SF:test_1_reheader|Sniffles2.INS.4FSF:test_1_reheader|Sniffles2.INS.74SF:test_2_reheader|Sniffles2.INS.73SF:test_2_reheader\tN\tGGGCCCCAGATCAGTGCCGGGGAGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGGCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGGCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=418;END=1204953;SUPPORT=8;COVERAGE=17,16,15,15,15;STRAND=+-;AF=0.533;STDEV_LEN=0.816;STDEV_POS=64;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.4FSF:test_1_reheader|Sniffles2.INS.74SF:test_2_reheader|Sniffles2.INS.73SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.50SF|chr16,Sniffles2.INS.4FSF|chr16;test_2_reheader_CHROM=Sniffles2.INS.74SF|chr16,Sniffles2.INS.73SF|chr16;test_1_reheader_POS=Sniffles2.INS.50SF|1204953,Sniffles2.INS.4FSF|1204961;test_2_reheader_POS=Sniffles2.INS.74SF|1204953,Sniffles2.INS.73SF|1204971;test_1_reheader_QUAL=Sniffles2.INS.50SF|60,Sniffles2.INS.4FSF|60;test_2_reheader_QUAL=Sniffles2.INS.74SF|60,Sniffles2.INS.73SF|60;test_1_reheader_FILTERS=Sniffles2.INS.50SF|PASS,Sniffles2.INS.4FSF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.74SF|PASS,Sniffles2.INS.73SF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.50SF|test_1|GT:0/1|GQ:47|DR:7|DV:8,Sniffles2.INS.4FSF|test_1|GT:0/1|GQ:47|DR:7|DV:8;test_2_reheader_SAMPLE=Sniffles2.INS.74SF|test_2|GT:0/1|GQ:32|DR:6|DV:10,Sniffles2.INS.73SF|test_2|GT:0/1|GQ:6|DR:12|DV:4;test_1_reheader_INFO=Sniffles2.INS.50SF|IMPRECISE|SVTYPE:INS|SVLEN:418|END:1204953|SUPPORT:8|COVERAGE:17:16:15:15:15|STRAND:+-|AF:0.533|STDEV_LEN:0.816|STDEV_POS:64|SUPPORT_LONG:0|FOUND_IN:sniffles,Sniffles2.INS.4FSF|IMPRECISE|SVTYPE:INS|SVLEN:209|END:1204961|SUPPORT:8|COVERAGE:17:16:15:15:15|STRAND:+-|AF:0.533|STDEV_LEN:0.577|STDEV_POS:91.065|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.74SF|IMPRECISE|SVTYPE:INS|SVLEN:417|END:1204953|SUPPORT:10|COVERAGE:17:16:16:16:16|STRAND:+-|AF:0.625|STDEV_LEN:5.563|STDEV_POS:20.004|SUPPORT_LONG:0|FOUND_IN:sniffles,Sniffles2.INS.73SF|IMPRECISE|SVTYPE:INS|SVLEN:210|END:1204971|SUPPORT:4|COVERAGE:17:16:16:16:16|STRAND:+-|AF:0.25|STDEV_LEN:0|STDEV_POS:72.125|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:47:7:8\t0/1:6:12:4", + "chr16\t1230996\tSniffles2.DEL.E1SF\tccccagcccagctccccatggactcacccccagccccagcccagctccccatggactcacccccagccccagcccagctgcccatggactagtcccagccccagccccagctccccatggactcacccccagccccagcccagctccccatggactcacccccagccccagcccagctccccatggactagtcgcagcccccggccccagctccccatggtctcacccccag\tN\t60\tGT\tPRECISE;SVTYPE=DEL;SVLEN=-232;END=1231228;SUPPORT=2;COVERAGE=13,13,13,13,13;STRAND=-;AF=0.154;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;set=filterIntest_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.DEL.E1SF|chr16;test_2_reheader_POS=Sniffles2.DEL.E1SF|1230996;test_2_reheader_QUAL=Sniffles2.DEL.E1SF|60;test_2_reheader_FILTERS=Sniffles2.DEL.E1SF|GT;test_2_reheader_SAMPLE=Sniffles2.DEL.E1SF|test_2|GT:0/0|GQ:10|DR:11|DV:2;test_2_reheader_INFO=Sniffles2.DEL.E1SF|PRECISE|SVTYPE:DEL|SVLEN:-232|END:1231228|SUPPORT:2|COVERAGE:13:13:13:13:13|STRAND:-|AF:0.154|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t0/0:10:11:2", + "chr16\t1231234\tSniffles2.INS.52SF:test_1_reheader|Sniffles2.INS.76SF:test_2_reheader\tN\tCCCAGCTCCCCATGGACTAGTCCCAGCCCCAGCCCAGCTCCCCATGGTCTCACCCCCAGCCCCAGCCCAGCTCCCCATGGACTAGTCCCATCCCCCGGCCCCAGCTCCCCATGGTCTCACCCCCAGCTCCA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=132;END=1231234;SUPPORT=4;COVERAGE=14,14,14,14,14;STRAND=-;AF=0.286;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;IMPRECISE;VARID=Sniffles2.INS.76SF:test_2_reheader;set=test_1_reheader-filterIntest_2_reheader;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.52SF|chr16;test_2_reheader_CHROM=Sniffles2.INS.76SF|chr16;test_1_reheader_POS=Sniffles2.INS.52SF|1231234;test_2_reheader_POS=Sniffles2.INS.76SF|1231235;test_1_reheader_QUAL=Sniffles2.INS.52SF|60;test_2_reheader_QUAL=Sniffles2.INS.76SF|60;test_1_reheader_FILTERS=Sniffles2.INS.52SF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.76SF|GT;test_1_reheader_SAMPLE=Sniffles2.INS.52SF|test_1|GT:0/1|GQ:12|DR:10|DV:4;test_2_reheader_SAMPLE=Sniffles2.INS.76SF|test_2|GT:0/0|GQ:10|DR:11|DV:2;test_1_reheader_INFO=Sniffles2.INS.52SF|PRECISE|SVTYPE:INS|SVLEN:132|END:1231234|SUPPORT:4|COVERAGE:14:14:14:14:14|STRAND:-|AF:0.286|STDEV_LEN:0|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.76SF|IMPRECISE|SVTYPE:INS|SVLEN:135|END:1231235|SUPPORT:2|COVERAGE:13:13:13:13:13|STRAND:-|AF:0.154|STDEV_LEN:2.121|STDEV_POS:29.698|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:12:10:4\t0/0:10:11:2", + "chr16\t1231287\tSniffles2.DEL.E2SF\tcccccagccccagcccagctccccatggactagtcccatcccccggccccagctccccatggtctcacccccagccccagcccagctccccatggtctcacccccagccccagcccagctccccatggactcacccccagccccagcccagctccccatggactagtcccagcccccggccccagctccccatggtctcacccccagccccagcccagctccccatggtctcacccccggccccagctccctgtggacttg\tN\t60\tGT\tPRECISE;SVTYPE=DEL;SVLEN=-261;END=1231548;SUPPORT=2;COVERAGE=13,13,13,13,13;STRAND=-;AF=0.154;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;set=filterIntest_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.DEL.E2SF|chr16;test_2_reheader_POS=Sniffles2.DEL.E2SF|1231287;test_2_reheader_QUAL=Sniffles2.DEL.E2SF|60;test_2_reheader_FILTERS=Sniffles2.DEL.E2SF|GT;test_2_reheader_SAMPLE=Sniffles2.DEL.E2SF|test_2|GT:0/0|GQ:10|DR:11|DV:2;test_2_reheader_INFO=Sniffles2.DEL.E2SF|PRECISE|SVTYPE:DEL|SVLEN:-261|END:1231548|SUPPORT:2|COVERAGE:13:13:13:13:13|STRAND:-|AF:0.154|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t0/0:10:11:2", + "chr16\t1231356\tSniffles2.INS.78SF\tN\tCCCAGCTCCAGCCCAGCTCCCCATGGACTAGTCCCAGCCCCAGCCCAGCTCCCCATGGTCTCACCCCCAGCCCCAGCCCAGCTCCCCATGGACTAGTCCCATCCCCCGGCCCCAGCTCCCCATGGTCTCACCCCCAGCCCCAGCCCAGCTCCCCATGGTCTCACCCCCAGCCCCAGCCCAGCTCCCCATGGACTCACCCCCAGCCCCAGCCCAGCTCCCCATGGACTAGTCGCAGCCCCCGGCCCCAGCTCCCCATGGTCTCACCCCCAGCTCCCCATGGACTAGTCTAGTCCCAGCCCCCGGCCCCAGCTCCCCATGGTCTCACCCCCAGCTCCAGCCCAGCTCCCCATGGACTAGTCCCAGCCCCAGCCCAGCTCCCCATGGT\t60\tGT\tIMPRECISE;SVTYPE=INS;SVLEN=385;END=1231356;SUPPORT=2;COVERAGE=13,13,13,13,13;STRAND=+-;AF=0.154;STDEV_LEN=7.778;STDEV_POS=24.749;SUPPORT_LONG=0;FOUND_IN=sniffles;set=filterIntest_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.INS.78SF|chr16;test_2_reheader_POS=Sniffles2.INS.78SF|1231356;test_2_reheader_QUAL=Sniffles2.INS.78SF|60;test_2_reheader_FILTERS=Sniffles2.INS.78SF|GT;test_2_reheader_SAMPLE=Sniffles2.INS.78SF|test_2|GT:0/0|GQ:10|DR:11|DV:2;test_2_reheader_INFO=Sniffles2.INS.78SF|IMPRECISE|SVTYPE:INS|SVLEN:385|END:1231356|SUPPORT:2|COVERAGE:13:13:13:13:13|STRAND:+-|AF:0.154|STDEV_LEN:7.778|STDEV_POS:24.749|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t0/0:10:11:2", + "chr16\t1231416\tSniffles2.INS.53SF:test_1_reheader|Sniffles2.INS.77SF:test_2_reheader\tN\tCTCACCCCCAGCCCCAGCCCAGCTCCCCATGGACTAGTCGCAGCCCCCGGCCCCAGCTCCCCATGGTCTCACCCCCAGCTCCCCATGGACTAGTCCCAGCCCCAGCCCAGCTCCCCATGGTCTCACCCCCAGCCCCAGCCCAGCTCCCCATGGACTAGTCCCAGCCCCCGGCCCCAGCTCCCCATGGTCTCACCCCCAGCTCCAGCCCAGCTCCCCATGGACTAGTCCCAGCCCCAGCCCAGCTCCCCATGGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=252;END=1231416;SUPPORT=4;COVERAGE=14,14,14,14,13;STRAND=-;AF=0.286;STDEV_LEN=0.707;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.77SF:test_2_reheader;set=test_1_reheader-filterIntest_2_reheader;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.53SF|chr16;test_2_reheader_CHROM=Sniffles2.INS.77SF|chr16;test_1_reheader_POS=Sniffles2.INS.53SF|1231416;test_2_reheader_POS=Sniffles2.INS.77SF|1231446;test_1_reheader_QUAL=Sniffles2.INS.53SF|60;test_2_reheader_QUAL=Sniffles2.INS.77SF|60;test_1_reheader_FILTERS=Sniffles2.INS.53SF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.77SF|GT;test_1_reheader_SAMPLE=Sniffles2.INS.53SF|test_1|GT:0/1|GQ:12|DR:10|DV:4;test_2_reheader_SAMPLE=Sniffles2.INS.77SF|test_2|GT:0/0|GQ:10|DR:11|DV:2;test_1_reheader_INFO=Sniffles2.INS.53SF|PRECISE|SVTYPE:INS|SVLEN:252|END:1231416|SUPPORT:4|COVERAGE:14:14:14:14:13|STRAND:-|AF:0.286|STDEV_LEN:0.707|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.77SF|PRECISE|SVTYPE:INS|SVLEN:256|END:1231446|SUPPORT:2|COVERAGE:13:13:13:13:13|STRAND:-|AF:0.154|STDEV_LEN:2.121|STDEV_POS:21.213|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:12:10:4\t0/0:10:11:2", + "chr16\t1238068\tSniffles2.INS.79SF\tN\tGTGTGTGAATGTGTGCATGTGTTCGTGTGTGCATGTGAACATCCGTGTGTGCATATGTGCATGTGAGTGCACAGATGTGCGGTGTGTGTGCA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=92;END=1238068;SUPPORT=3;COVERAGE=8,8,8,8,2;STRAND=+-;AF=0.375;STDEV_LEN=0.577;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;set=test_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.INS.79SF|chr16;test_2_reheader_POS=Sniffles2.INS.79SF|1238068;test_2_reheader_QUAL=Sniffles2.INS.79SF|60;test_2_reheader_FILTERS=Sniffles2.INS.79SF|PASS;test_2_reheader_SAMPLE=Sniffles2.INS.79SF|test_2|GT:0/1|GQ:16|DR:5|DV:3;test_2_reheader_INFO=Sniffles2.INS.79SF|PRECISE|SVTYPE:INS|SVLEN:92|END:1238068|SUPPORT:3|COVERAGE:8:8:8:8:2|STRAND:+-|AF:0.375|STDEV_LEN:0.577|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:16:5:3", + "chr16\t1238210\tSniffles2.INS.7ASF\tN\tGTGCATATGTGTGCGTGTGTGCACACACGTGTGTACATGTGTGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=44;END=1238210;SUPPORT=6;COVERAGE=8,8,8,8,2;STRAND=+-;AF=0.75;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;set=test_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.INS.7ASF|chr16;test_2_reheader_POS=Sniffles2.INS.7ASF|1238210;test_2_reheader_QUAL=Sniffles2.INS.7ASF|60;test_2_reheader_FILTERS=Sniffles2.INS.7ASF|PASS;test_2_reheader_SAMPLE=Sniffles2.INS.7ASF|test_2|GT:0/1|GQ:3|DR:2|DV:6;test_2_reheader_INFO=Sniffles2.INS.7ASF|PRECISE|SVTYPE:INS|SVLEN:44|END:1238210|SUPPORT:6|COVERAGE:8:8:8:8:2|STRAND:+-|AF:0.75|STDEV_LEN:0|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:3:2:6", + "chr16\t1248124\tSniffles2.DEL.8CSF:test_1_reheader|Sniffles2.DEL.ECSF:test_2_reheader\tcactcacacatgtacacatgtgtgtgcacacacgcacacatatg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-44;END=1248168;SUPPORT=4;COVERAGE=1,4,4,4,5;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;VARID=Sniffles2.DEL.ECSF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.DEL.8CSF|chr16;test_2_reheader_CHROM=Sniffles2.DEL.ECSF|chr16;test_1_reheader_POS=Sniffles2.DEL.8CSF|1248124;test_2_reheader_POS=Sniffles2.DEL.ECSF|1248124;test_1_reheader_QUAL=Sniffles2.DEL.8CSF|60;test_2_reheader_QUAL=Sniffles2.DEL.ECSF|60;test_1_reheader_FILTERS=Sniffles2.DEL.8CSF|PASS;test_2_reheader_FILTERS=Sniffles2.DEL.ECSF|PASS;test_1_reheader_SAMPLE=Sniffles2.DEL.8CSF|test_1|GT:1/1|GQ:11|DR:0|DV:4;test_2_reheader_SAMPLE=Sniffles2.DEL.ECSF|test_2|GT:1/1|GQ:11|DR:0|DV:4;test_1_reheader_INFO=Sniffles2.DEL.8CSF|PRECISE|SVTYPE:DEL|SVLEN:-44|END:1248168|SUPPORT:4|COVERAGE:1:4:4:4:5|STRAND:+-|AF:1|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.DEL.ECSF|PRECISE|SVTYPE:DEL|SVLEN:-44|END:1248168|SUPPORT:4|COVERAGE:2:4:4:4:4|STRAND:+-|AF:1|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:11:0:4\t1/1:11:0:4", + "chr16\t1248322\tSniffles2.DEL.8DSF:test_1_reheader|Sniffles2.DEL.EDSF:test_2_reheader\tgcacatatgcacacacggatgttcacatgcacacacgaacacatgcacacattcacaca\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-59;END=1248381;SUPPORT=4;COVERAGE=4,4,4,4,6;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;VARID=Sniffles2.DEL.EDSF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.DEL.8DSF|chr16;test_2_reheader_CHROM=Sniffles2.DEL.EDSF|chr16;test_1_reheader_POS=Sniffles2.DEL.8DSF|1248322;test_2_reheader_POS=Sniffles2.DEL.EDSF|1248302;test_1_reheader_QUAL=Sniffles2.DEL.8DSF|60;test_2_reheader_QUAL=Sniffles2.DEL.EDSF|60;test_1_reheader_FILTERS=Sniffles2.DEL.8DSF|PASS;test_2_reheader_FILTERS=Sniffles2.DEL.EDSF|PASS;test_1_reheader_SAMPLE=Sniffles2.DEL.8DSF|test_1|GT:1/1|GQ:11|DR:0|DV:4;test_2_reheader_SAMPLE=Sniffles2.DEL.EDSF|test_2|GT:1/1|GQ:11|DR:0|DV:4;test_1_reheader_INFO=Sniffles2.DEL.8DSF|PRECISE|SVTYPE:DEL|SVLEN:-59|END:1248381|SUPPORT:4|COVERAGE:4:4:4:4:6|STRAND:+-|AF:1|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.DEL.EDSF|PRECISE|SVTYPE:DEL|SVLEN:-59|END:1248361|SUPPORT:4|COVERAGE:3:4:4:4:4|STRAND:+-|AF:1|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:11:0:4\t1/1:11:0:4", + "chr16\t1254908\tSniffles2.DEL.8ESF:test_1_reheader|Sniffles2.DEL.EESF:test_2_reheader\tccatggggagctggggccgggggctgggactagtccatggggagctgggctggggctgggggtgaga\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-67;END=1254975;SUPPORT=8;COVERAGE=14,14,14,14,14;STRAND=+-;AF=0.571;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;VARID=Sniffles2.DEL.EESF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.DEL.8ESF|chr16;test_2_reheader_CHROM=Sniffles2.DEL.EESF|chr16;test_1_reheader_POS=Sniffles2.DEL.8ESF|1254908;test_2_reheader_POS=Sniffles2.DEL.EESF|1254909;test_1_reheader_QUAL=Sniffles2.DEL.8ESF|60;test_2_reheader_QUAL=Sniffles2.DEL.EESF|60;test_1_reheader_FILTERS=Sniffles2.DEL.8ESF|PASS;test_2_reheader_FILTERS=Sniffles2.DEL.EESF|PASS;test_1_reheader_SAMPLE=Sniffles2.DEL.8ESF|test_1|GT:0/1|GQ:37|DR:6|DV:8;test_2_reheader_SAMPLE=Sniffles2.DEL.EESF|test_2|GT:0/1|GQ:11|DR:3|DV:2;test_1_reheader_INFO=Sniffles2.DEL.8ESF|PRECISE|SVTYPE:DEL|SVLEN:-67|END:1254975|SUPPORT:8|COVERAGE:14:14:14:14:14|STRAND:+-|AF:0.571|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.DEL.EESF|PRECISE|SVTYPE:DEL|SVLEN:-66|END:1254975|SUPPORT:2|COVERAGE:5:5:5:5:7|STRAND:-|AF:0.4|STDEV_LEN:0.707|STDEV_POS:11.314|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:37:6:8\t0/1:11:3:2", + "chr16\t1254975\tSniffles2.INS.57SF:test_1_reheader|Sniffles2.INS.7CSF:test_2_reheader\tN\tCCATGGGGAGCTGGGCTGGGGCTGGGACTAGTCCATGGGGAGCTGGGCTGGGGCTGGGACTAGTTCATGGGGAGCTGGGCTGGGGCTGGGACTAGTTCATGGGAGCTGGGCTGGGGCTGGGACTAGTCCATGGGGAGCTGGGCTGGGGCTGGGACTAGTTCATGGGGAGCTGGGCTGGGGCTGGGGGTGAGTCCATGGGGAGCTGGGCTGGGGCTGGGGGTGAGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=225;END=1254975;SUPPORT=6;COVERAGE=14,14,14,14,14;STRAND=+-;AF=0.429;STDEV_LEN=0.577;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.7CSF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.57SF|chr16;test_2_reheader_CHROM=Sniffles2.INS.7CSF|chr16;test_1_reheader_POS=Sniffles2.INS.57SF|1254975;test_2_reheader_POS=Sniffles2.INS.7CSF|1254975;test_1_reheader_QUAL=Sniffles2.INS.57SF|60;test_2_reheader_QUAL=Sniffles2.INS.7CSF|60;test_1_reheader_FILTERS=Sniffles2.INS.57SF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.7CSF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.57SF|test_1|GT:0/1|GQ:37|DR:8|DV:6;test_2_reheader_SAMPLE=Sniffles2.INS.7CSF|test_2|GT:0/1|GQ:11|DR:3|DV:2;test_1_reheader_INFO=Sniffles2.INS.57SF|PRECISE|SVTYPE:INS|SVLEN:225|END:1254975|SUPPORT:6|COVERAGE:14:14:14:14:14|STRAND:+-|AF:0.429|STDEV_LEN:0.577|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.7CSF|PRECISE|SVTYPE:INS|SVLEN:226|END:1254975|SUPPORT:2|COVERAGE:5:5:5:5:7|STRAND:+-|AF:0.4|STDEV_LEN:0.707|STDEV_POS:21.92|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:37:8:6\t0/1:11:3:2", + "chr16\t1258684\tSniffles2.INS.58SF:test_1_reheader|Sniffles2.INS.7ESF:test_2_reheader\tN\tTGAGCCCCCTCCCCCACCCTGAGCCCCCTCCCCTGTCTTGAGCCCCTGCTCCATCCTGAGTCCCCTCCCCCACACTGAGCCCCCTCCCCTTTCTTGAGCCCCTCATCCATCCTGAGCCCCTCCTCCATCCTGAGCCCCCTCCCCCATCCTGGGCCCCCTCCCCTTTCTTGAGCCCCCCTCCCCCACCCTGAGCCCCCTCCCCTTTCTTGAGCCCCCTCCCCCACCTGAGCCCCTTCCCCTTTCTTGAGTCCCTCCTCCATCCTGAGCCCCCTCCCCTTTCTTGAGCCCCTCCTCCACCCTCAGCCCCCTCCCCTTTCTTGAGCCCCTCCTCCACCCTCAGCCCCCTCCCCTTTCT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=355;END=1258684;SUPPORT=14;COVERAGE=14,14,14,14,14;STRAND=+-;AF=1;STDEV_LEN=37.175;STDEV_POS=1.69;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.7ESF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.58SF|chr16;test_2_reheader_CHROM=Sniffles2.INS.7ESF|chr16;test_1_reheader_POS=Sniffles2.INS.58SF|1258684;test_2_reheader_POS=Sniffles2.INS.7ESF|1258685;test_1_reheader_QUAL=Sniffles2.INS.58SF|60;test_2_reheader_QUAL=Sniffles2.INS.7ESF|60;test_1_reheader_FILTERS=Sniffles2.INS.58SF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.7ESF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.58SF|test_1|GT:1/1|GQ:39|DR:0|DV:14;test_2_reheader_SAMPLE=Sniffles2.INS.7ESF|test_2|GT:1/1|GQ:30|DR:0|DV:11;test_1_reheader_INFO=Sniffles2.INS.58SF|IMPRECISE|SVTYPE:INS|SVLEN:355|END:1258684|SUPPORT:14|COVERAGE:14:14:14:14:14|STRAND:+-|AF:1|STDEV_LEN:37.175|STDEV_POS:1.69|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.7ESF|IMPRECISE|SVTYPE:INS|SVLEN:424|END:1258685|SUPPORT:11|COVERAGE:9:11:11:11:15|STRAND:+-|AF:1|STDEV_LEN:34.141|STDEV_POS:1.89|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:39:0:14\t1/1:30:0:11", + "chr16\t1260690\tSniffles2.INS.59SF:test_1_reheader|Sniffles2.INS.7FSF:test_2_reheader\tN\tAGCCCGGAGACCCACGTCCACACACAGCCCGGAGACCCACATCCACACAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=50;END=1260690;SUPPORT=7;COVERAGE=15,15,15,16,16;STRAND=+-;AF=0.467;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.7FSF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.59SF|chr16;test_2_reheader_CHROM=Sniffles2.INS.7FSF|chr16;test_1_reheader_POS=Sniffles2.INS.59SF|1260690;test_2_reheader_POS=Sniffles2.INS.7FSF|1260690;test_1_reheader_QUAL=Sniffles2.INS.59SF|60;test_2_reheader_QUAL=Sniffles2.INS.7FSF|60;test_1_reheader_FILTERS=Sniffles2.INS.59SF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.7FSF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.59SF|test_1|GT:0/1|GQ:47|DR:8|DV:7;test_2_reheader_SAMPLE=Sniffles2.INS.7FSF|test_2|GT:0/1|GQ:54|DR:9|DV:8;test_1_reheader_INFO=Sniffles2.INS.59SF|PRECISE|SVTYPE:INS|SVLEN:50|END:1260690|SUPPORT:7|COVERAGE:15:15:15:16:16|STRAND:+-|AF:0.467|STDEV_LEN:0|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.7FSF|PRECISE|SVTYPE:INS|SVLEN:50|END:1260690|SUPPORT:8|COVERAGE:17:17:17:17:16|STRAND:+-|AF:0.471|STDEV_LEN:0|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:47:8:7\t0/1:54:9:8", + "chr16\t1264730\tSniffles2.DEL.90SF:test_1_reheader|Sniffles2.DEL.EFSF:test_2_reheader\ttgtgtgtatgcgtgtgcatatgtaaggatgtgtgcg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-36;END=1264766;SUPPORT=6;COVERAGE=15,15,13,12,12;STRAND=+-;AF=0.462;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;VARID=Sniffles2.DEL.EFSF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.DEL.90SF|chr16;test_2_reheader_CHROM=Sniffles2.DEL.EFSF|chr16;test_1_reheader_POS=Sniffles2.DEL.90SF|1264730;test_2_reheader_POS=Sniffles2.DEL.EFSF|1264730;test_1_reheader_QUAL=Sniffles2.DEL.90SF|60;test_2_reheader_QUAL=Sniffles2.DEL.EFSF|60;test_1_reheader_FILTERS=Sniffles2.DEL.90SF|PASS;test_2_reheader_FILTERS=Sniffles2.DEL.EFSF|PASS;test_1_reheader_SAMPLE=Sniffles2.DEL.90SF|test_1|GT:0/1|GQ:40|DR:7|DV:6;test_2_reheader_SAMPLE=Sniffles2.DEL.EFSF|test_2|GT:0/1|GQ:37|DR:6|DV:8;test_1_reheader_INFO=Sniffles2.DEL.90SF|PRECISE|SVTYPE:DEL|SVLEN:-36|END:1264766|SUPPORT:6|COVERAGE:15:15:13:12:12|STRAND:+-|AF:0.462|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.DEL.EFSF|PRECISE|SVTYPE:DEL|SVLEN:-36|END:1264766|SUPPORT:8|COVERAGE:14:14:14:14:14|STRAND:+-|AF:0.571|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:40:7:6\t0/1:37:6:8", + "chr16\t1285139\tSniffles2.INS.80SF\tN\tACTCTCCACTATTCCAGGGCCTCATCCCACTCCAGGGCCCTCTCACTATTCCAGGGCCCTCTCCCCCCA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=80;END=1285139;SUPPORT=3;COVERAGE=4,4,4,4,4;STRAND=+-;AF=0.75;STDEV_LEN=12.53;STDEV_POS=50.013;SUPPORT_LONG=0;FOUND_IN=sniffles;set=test_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.INS.80SF|chr16;test_2_reheader_POS=Sniffles2.INS.80SF|1285139;test_2_reheader_QUAL=Sniffles2.INS.80SF|60;test_2_reheader_FILTERS=Sniffles2.INS.80SF|PASS;test_2_reheader_SAMPLE=Sniffles2.INS.80SF|test_2|GT:0/1|GQ:1|DR:1|DV:3;test_2_reheader_INFO=Sniffles2.INS.80SF|IMPRECISE|SVTYPE:INS|SVLEN:80|END:1285139|SUPPORT:3|COVERAGE:4:4:4:4:4|STRAND:+-|AF:0.75|STDEV_LEN:12.53|STDEV_POS:50.013|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:1:1:3", + "chr16\t1285239\tSniffles2.INS.81SF\tN\tCCAGGGCCCTCTCCACTATTCCAGGGCCCTCTCCACCACTCCAGGGCCCTCTCCACTATTCCAGGGCCCTCTCCACCACCCCAGGGCCCTCTCCACCACCCCAGGGCCCTCTCCACTATTCCAGGGCCCTCTCCACCACCCCAGGGCCCTCTCCACTATTCCAGGGCCCTCTCCACCACC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=182;END=1285239;SUPPORT=3;COVERAGE=4,4,4,4,4;STRAND=+-;AF=0.75;STDEV_LEN=3.055;STDEV_POS=222.264;SUPPORT_LONG=0;FOUND_IN=sniffles;set=test_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.INS.81SF|chr16;test_2_reheader_POS=Sniffles2.INS.81SF|1285239;test_2_reheader_QUAL=Sniffles2.INS.81SF|60;test_2_reheader_FILTERS=Sniffles2.INS.81SF|PASS;test_2_reheader_SAMPLE=Sniffles2.INS.81SF|test_2|GT:0/1|GQ:1|DR:1|DV:3;test_2_reheader_INFO=Sniffles2.INS.81SF|IMPRECISE|SVTYPE:INS|SVLEN:182|END:1285239|SUPPORT:3|COVERAGE:4:4:4:4:4|STRAND:+-|AF:0.75|STDEV_LEN:3.055|STDEV_POS:222.264|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:1:1:3", + "chr16\t1308390\tSniffles2.DEL.91SF:test_1_reheader|Sniffles2.DEL.F1SF:test_2_reheader\ttgagtgagggagggaatgagtgagggagggaatgag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-36;END=1308426;SUPPORT=12;COVERAGE=12,12,12,12,12;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;VARID=Sniffles2.DEL.F1SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.DEL.91SF|chr16;test_2_reheader_CHROM=Sniffles2.DEL.F1SF|chr16;test_1_reheader_POS=Sniffles2.DEL.91SF|1308390;test_2_reheader_POS=Sniffles2.DEL.F1SF|1308390;test_1_reheader_QUAL=Sniffles2.DEL.91SF|60;test_2_reheader_QUAL=Sniffles2.DEL.F1SF|60;test_1_reheader_FILTERS=Sniffles2.DEL.91SF|PASS;test_2_reheader_FILTERS=Sniffles2.DEL.F1SF|PASS;test_1_reheader_SAMPLE=Sniffles2.DEL.91SF|test_1|GT:1/1|GQ:33|DR:0|DV:12;test_2_reheader_SAMPLE=Sniffles2.DEL.F1SF|test_2|GT:1/1|GQ:11|DR:3|DV:15;test_1_reheader_INFO=Sniffles2.DEL.91SF|PRECISE|SVTYPE:DEL|SVLEN:-36|END:1308426|SUPPORT:12|COVERAGE:12:12:12:12:12|STRAND:+-|AF:1|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.DEL.F1SF|PRECISE|SVTYPE:DEL|SVLEN:-36|END:1308426|SUPPORT:15|COVERAGE:18:18:18:19:19|STRAND:+-|AF:0.833|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:33:0:12\t1/1:11:3:15", + "chr16\t1345656\tSniffles2.INS.5BSF:test_1_reheader|Sniffles2.INS.84SF:test_2_reheader\tN\tGCAACCCCAGCCTCCCCAGCCTCCCCAGCAACCCCAGCCTCCCCAGCAACCCCAGCCTCCTCA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=63;END=1345656;SUPPORT=14;COVERAGE=26,26,26,25,24;STRAND=+-;AF=0.538;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.84SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.5BSF|chr16;test_2_reheader_CHROM=Sniffles2.INS.84SF|chr16;test_1_reheader_POS=Sniffles2.INS.5BSF|1345656;test_2_reheader_POS=Sniffles2.INS.84SF|1345656;test_1_reheader_QUAL=Sniffles2.INS.5BSF|60;test_2_reheader_QUAL=Sniffles2.INS.84SF|60;test_1_reheader_FILTERS=Sniffles2.INS.5BSF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.84SF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.5BSF|test_1|GT:0/1|GQ:60|DR:12|DV:14;test_2_reheader_SAMPLE=Sniffles2.INS.84SF|test_2|GT:0/1|GQ:49|DR:11|DV:8;test_1_reheader_INFO=Sniffles2.INS.5BSF|PRECISE|SVTYPE:INS|SVLEN:63|END:1345656|SUPPORT:14|COVERAGE:26:26:26:25:24|STRAND:+-|AF:0.538|STDEV_LEN:0|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.84SF|PRECISE|SVTYPE:INS|SVLEN:63|END:1345656|SUPPORT:8|COVERAGE:19:19:19:19:18|STRAND:+-|AF:0.421|STDEV_LEN:0|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:60:12:14\t0/1:49:11:8", + "chr16\t1356874\tSniffles2.DEL.93SF:test_1_reheader|Sniffles2.DEL.F9SF:test_2_reheader\t.\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-42;END=1356916;SUPPORT=3;COVERAGE=6,5,5,5,5;STRAND=+-;AF=0.6;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;VARID=Sniffles2.DEL.F9SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.DEL.93SF|chr16;test_2_reheader_CHROM=Sniffles2.DEL.F9SF|chr16;test_1_reheader_POS=Sniffles2.DEL.93SF|1356874;test_2_reheader_POS=Sniffles2.DEL.F9SF|1356874;test_1_reheader_QUAL=Sniffles2.DEL.93SF|60;test_2_reheader_QUAL=Sniffles2.DEL.F9SF|60;test_1_reheader_FILTERS=Sniffles2.DEL.93SF|PASS;test_2_reheader_FILTERS=Sniffles2.DEL.F9SF|PASS;test_1_reheader_SAMPLE=Sniffles2.DEL.93SF|test_1|GT:0/1|GQ:11|DR:2|DV:3;test_2_reheader_SAMPLE=Sniffles2.DEL.F9SF|test_2|GT:0/1|GQ:23|DR:6|DV:4;test_1_reheader_INFO=Sniffles2.DEL.93SF|PRECISE|SVTYPE:DEL|SVLEN:-42|END:1356916|SUPPORT:3|COVERAGE:6:5:5:5:5|STRAND:+-|AF:0.6|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.DEL.F9SF|PRECISE|SVTYPE:DEL|SVLEN:-42|END:1356916|SUPPORT:4|COVERAGE:10:10:10:10:8|STRAND:+-|AF:0.4|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:11:2:3\t0/1:23:6:4", + "chr16\t1367562\tSniffles2.DEL.FASF\t.\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-53;END=1367615;SUPPORT=2;COVERAGE=3,3,3,3,3;STRAND=+-;AF=0.667;STDEV_LEN=2.121;STDEV_POS=5.657;FOUND_IN=sniffles;set=test_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.DEL.FASF|chr16;test_2_reheader_POS=Sniffles2.DEL.FASF|1367562;test_2_reheader_QUAL=Sniffles2.DEL.FASF|60;test_2_reheader_FILTERS=Sniffles2.DEL.FASF|PASS;test_2_reheader_SAMPLE=Sniffles2.DEL.FASF|test_2|GT:0/1|GQ:4|DR:1|DV:2;test_2_reheader_INFO=Sniffles2.DEL.FASF|PRECISE|SVTYPE:DEL|SVLEN:-53|END:1367615|SUPPORT:2|COVERAGE:3:3:3:3:3|STRAND:+-|AF:0.667|STDEV_LEN:2.121|STDEV_POS:5.657|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:4:1:2", + "chr20\t2659083\tSniffles2.INS.0S13:test_1_reheader|Sniffles2.INS.0S13:test_2_reheader\tN\tGCAGATCAGAGGCAGGATGTGGCTACCGAGCAGGCAAAGATGATGGGAAAT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=51;END=2659083;SUPPORT=8;COVERAGE=21,18,18,18,18;STRAND=+-;AF=0.444;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.0S13:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.0S13|chr20;test_2_reheader_CHROM=Sniffles2.INS.0S13|chr20;test_1_reheader_POS=Sniffles2.INS.0S13|2659083;test_2_reheader_POS=Sniffles2.INS.0S13|2659083;test_1_reheader_QUAL=Sniffles2.INS.0S13|60;test_2_reheader_QUAL=Sniffles2.INS.0S13|60;test_1_reheader_FILTERS=Sniffles2.INS.0S13|PASS;test_2_reheader_FILTERS=Sniffles2.INS.0S13|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.0S13|test_1|GT:0/1|GQ:52|DR:10|DV:8;test_2_reheader_SAMPLE=Sniffles2.INS.0S13|test_2|GT:0/1|GQ:60|DR:18|DV:12;test_1_reheader_INFO=Sniffles2.INS.0S13|PRECISE|SVTYPE:INS|SVLEN:51|END:2659083|SUPPORT:8|COVERAGE:21:18:18:18:18|STRAND:+-|AF:0.444|STDEV_LEN:0|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.0S13|PRECISE|SVTYPE:INS|SVLEN:51|END:2659083|SUPPORT:12|COVERAGE:30:30:30:30:29|STRAND:+-|AF:0.4|STDEV_LEN:0|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:52:10:8\t0/1:60:18:12", + "chrX\t3036626\tSniffles2.DEL.2S16\ttatatataatatatataatattttatataaaatat\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-35;END=3036661;SUPPORT=2;COVERAGE=7,7,7,7,6;STRAND=+-;AF=0.286;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;set=test_1_reheader;FOUNDBY=1;test_1_reheader_CHROM=Sniffles2.DEL.2S16|chrX;test_1_reheader_POS=Sniffles2.DEL.2S16|3036626;test_1_reheader_QUAL=Sniffles2.DEL.2S16|60;test_1_reheader_FILTERS=Sniffles2.DEL.2S16|PASS;test_1_reheader_SAMPLE=Sniffles2.DEL.2S16|test_1|GT:0/1|GQ:6|DR:5|DV:2;test_1_reheader_INFO=Sniffles2.DEL.2S16|PRECISE|SVTYPE:DEL|SVLEN:-35|END:3036661|SUPPORT:2|COVERAGE:7:7:7:7:6|STRAND:+-|AF:0.286|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader;SUPP_VEC=10\tGT:GQ:DR:DV\t0/1:6:5:2\t./.:.:.:.", + "chrX\t3037125\tSniffles2.DEL.5S16\ttataatattatatataaaatatatataatatatata\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-36;END=3037161;SUPPORT=3;COVERAGE=7,6,6,6,5;STRAND=+-;AF=0.5;STDEV_LEN=6.928;STDEV_POS=45.033;FOUND_IN=sniffles;set=test_1_reheader;FOUNDBY=1;test_1_reheader_CHROM=Sniffles2.DEL.5S16|chrX;test_1_reheader_POS=Sniffles2.DEL.5S16|3037125;test_1_reheader_QUAL=Sniffles2.DEL.5S16|60;test_1_reheader_FILTERS=Sniffles2.DEL.5S16|PASS;test_1_reheader_SAMPLE=Sniffles2.DEL.5S16|test_1|GT:0/1|GQ:21|DR:3|DV:3;test_1_reheader_INFO=Sniffles2.DEL.5S16|IMPRECISE|SVTYPE:DEL|SVLEN:-36|END:3037161|SUPPORT:3|COVERAGE:7:6:6:6:5|STRAND:+-|AF:0.5|STDEV_LEN:6.928|STDEV_POS:45.033|FOUND_IN:sniffles;svdb_origin=test_1_reheader;SUPP_VEC=10\tGT:GQ:DR:DV\t0/1:21:3:3\t./.:.:.:.", + "chrX\t3080256\tSniffles2.DEL.6S16:test_1_reheader|Sniffles2.DEL.9S16:test_2_reheader\tatgaggtccggagatgcagaccatcctggccaacatg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-37;END=3080293;SUPPORT=12;COVERAGE=12,12,12,12,12;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;VARID=Sniffles2.DEL.9S16:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.DEL.6S16|chrX;test_2_reheader_CHROM=Sniffles2.DEL.9S16|chrX;test_1_reheader_POS=Sniffles2.DEL.6S16|3080256;test_2_reheader_POS=Sniffles2.DEL.9S16|3080256;test_1_reheader_QUAL=Sniffles2.DEL.6S16|60;test_2_reheader_QUAL=Sniffles2.DEL.9S16|60;test_1_reheader_FILTERS=Sniffles2.DEL.6S16|PASS;test_2_reheader_FILTERS=Sniffles2.DEL.9S16|PASS;test_1_reheader_SAMPLE=Sniffles2.DEL.6S16|test_1|GT:1/1|GQ:33|DR:0|DV:12;test_2_reheader_SAMPLE=Sniffles2.DEL.9S16|test_2|GT:1/1|GQ:8|DR:0|DV:3;test_1_reheader_INFO=Sniffles2.DEL.6S16|PRECISE|SVTYPE:DEL|SVLEN:-37|END:3080293|SUPPORT:12|COVERAGE:12:12:12:12:12|STRAND:+-|AF:1|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.DEL.9S16|PRECISE|SVTYPE:DEL|SVLEN:-37|END:3080293|SUPPORT:3|COVERAGE:3:3:3:3:3|STRAND:+-|AF:1|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:33:0:12\t1/1:8:0:3", + "chrX\t9964280\tSniffles2.DEL.7S16:test_1_reheader|Sniffles2.DEL.CS16:test_2_reheader\tccttccttccttccttccttccttccttccttccttccttcctt\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-44;END=9964324;SUPPORT=19;COVERAGE=19,19,19,19,19;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;VARID=Sniffles2.DEL.CS16:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.DEL.7S16|chrX;test_2_reheader_CHROM=Sniffles2.DEL.CS16|chrX;test_1_reheader_POS=Sniffles2.DEL.7S16|9964280;test_2_reheader_POS=Sniffles2.DEL.CS16|9964280;test_1_reheader_QUAL=Sniffles2.DEL.7S16|60;test_2_reheader_QUAL=Sniffles2.DEL.CS16|60;test_1_reheader_FILTERS=Sniffles2.DEL.7S16|PASS;test_2_reheader_FILTERS=Sniffles2.DEL.CS16|PASS;test_1_reheader_SAMPLE=Sniffles2.DEL.7S16|test_1|GT:1/1|GQ:52|DR:0|DV:19;test_2_reheader_SAMPLE=Sniffles2.DEL.CS16|test_2|GT:1/1|GQ:36|DR:0|DV:13;test_1_reheader_INFO=Sniffles2.DEL.7S16|PRECISE|SVTYPE:DEL|SVLEN:-44|END:9964324|SUPPORT:19|COVERAGE:19:19:19:19:19|STRAND:+-|AF:1|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.DEL.CS16|PRECISE|SVTYPE:DEL|SVLEN:-44|END:9964324|SUPPORT:13|COVERAGE:13:13:13:13:13|STRAND:+-|AF:1|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:52:0:19\t1/1:36:0:13", + "chrX\t11163883\tSniffles2.INS.0S16:test_1_reheader|Sniffles2.INS.1S16:test_2_reheader\tN\tAAAGAAATCAGCAGTCGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACGAGGTCAAGAGATCGAGACCATCCCGGCTAAAACGGTGAAAACCCCGTCTCTACTAAAAATACAAAAAAATTAGCCGGGCGTAGTGGCGGGCGCCTGTAGTCCCAGCTACTTGGGAGGCTGAGGCAGGAGAATGGCGTGAACCCGGGAGGCGGAGCTTGCAGTGAGCCGAGATCCCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAAAAAAAAAAAAA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=316;END=11163883;SUPPORT=4;COVERAGE=3,4,4,4,4;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.1S16:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.0S16|chrX;test_2_reheader_CHROM=Sniffles2.INS.1S16|chrX;test_1_reheader_POS=Sniffles2.INS.0S16|11163883;test_2_reheader_POS=Sniffles2.INS.1S16|11163883;test_1_reheader_QUAL=Sniffles2.INS.0S16|60;test_2_reheader_QUAL=Sniffles2.INS.1S16|60;test_1_reheader_FILTERS=Sniffles2.INS.0S16|PASS;test_2_reheader_FILTERS=Sniffles2.INS.1S16|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.0S16|test_1|GT:1/1|GQ:11|DR:0|DV:4;test_2_reheader_SAMPLE=Sniffles2.INS.1S16|test_2|GT:1/1|GQ:8|DR:0|DV:3;test_1_reheader_INFO=Sniffles2.INS.0S16|PRECISE|SVTYPE:INS|SVLEN:316|END:11163883|SUPPORT:4|COVERAGE:3:4:4:4:4|STRAND:+-|AF:1|STDEV_LEN:0|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.1S16|PRECISE|SVTYPE:INS|SVLEN:318|END:11163883|SUPPORT:3|COVERAGE:3:3:3:3:4|STRAND:+-|AF:1|STDEV_LEN:2.646|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:11:0:4\t1/1:8:0:3", + "chrX\t12621974\tSniffles2.DEL.9S16:test_1_reheader|Sniffles2.DEL.14S16:test_2_reheader\tgaaagaaagaaagaaagaaagaaagaaagaaagaaagaaagaaaggaaggaaggaaggaaggaaggaaggaaggaaggaaggaaggaaagaaggaaagaaagaaggaaagaagaagaaaagaggagaagagaggagaggaaaggagaggagaggagaggagaggtgaactataaaaagaaccaaacagaaatcctggagctaaagaatacaatgacaaaactaaacattttaatagcttcaacagcagactcaattatgcagaagaatcagcaaatgtgaagacaggctatttgaaattacccagttagaggaacagaaagtaaaaagaataaaaaagagtaaaggaagcatacaggtcctatgagataccatcaattgaatgaatatatgcattatgggaatattagaaggagaaaaggaaaaaaggggaaaaagcttatttaaagaaataatggctgaaacgtcctaaatcttggaagggatatggacatccagatttatacaaatcaaagggtctcaagcagaatcaatccaaagactactctaagacacattataaccaaatttttaaaagccaaacacagacatagaatattgcccctaagagatatcatttgagatatataaattacatgaaaaataatacaaaataatcaccttaatgaagctcagtgggatacaagagaacacagaccaccaagaaaaacaaaaagcaatacataaacaaaataaaaagtttaataaagaaatacaggtcaggcgtggtgattcacatttgtaattccagcactttgggaggccaaggcaggcagatggctttgagcccaaaagttcaagactagcctgggcaacatggcaaaaccccatctctacaaaaattagccagatgtggtggcccgaatctgtagtcccagcaacttgggaggctgaggtgggaggatgacttgagcccaggaggcagaggtttcagtgagccaagatcacaccactgcactgtagcctgggcaacatagccagaccctgtttcaaaaaaagaaaagaaaagaaaggaaaaaggaaaggaagtaataaggaaaggaaaaaggaaaggaagggaagggaagtgaagggaagggaagtgaagggaagggaaaggaagggaggaagaaagaaagaaagagagagagagagaaagaaagaaagagaaagaa\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-1191;END=12623165;SUPPORT=5;COVERAGE=7,7,6,6,6;STRAND=+-;AF=0.833;STDEV_LEN=0.577;STDEV_POS=2.309;FOUND_IN=sniffles;IMPRECISE;VARID=Sniffles2.DEL.14S16:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.DEL.9S16|chrX;test_2_reheader_CHROM=Sniffles2.DEL.14S16|chrX;test_1_reheader_POS=Sniffles2.DEL.9S16|12621974;test_2_reheader_POS=Sniffles2.DEL.14S16|12622162;test_1_reheader_QUAL=Sniffles2.DEL.9S16|60;test_2_reheader_QUAL=Sniffles2.DEL.14S16|60;test_1_reheader_FILTERS=Sniffles2.DEL.9S16|PASS;test_2_reheader_FILTERS=Sniffles2.DEL.14S16|PASS;test_1_reheader_SAMPLE=Sniffles2.DEL.9S16|test_1|GT:1/1|GQ:3|DR:1|DV:5;test_2_reheader_SAMPLE=Sniffles2.DEL.14S16|test_2|GT:1/1|GQ:20|DR:1|DV:11;test_1_reheader_INFO=Sniffles2.DEL.9S16|PRECISE|SVTYPE:DEL|SVLEN:-1191|END:12623165|SUPPORT:5|COVERAGE:7:7:6:6:6|STRAND:+-|AF:0.833|STDEV_LEN:0.577|STDEV_POS:2.309|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.DEL.14S16|IMPRECISE|SVTYPE:DEL|SVLEN:-1187|END:12623349|SUPPORT:11|COVERAGE:13:12:12:12:12|STRAND:+-|AF:0.917|STDEV_LEN:2.582|STDEV_POS:142.789|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:3:1:5\t1/1:20:1:11", + "chrX\t14631916\tSniffles2.INS.4S16\tN\tATATGTATATGTATATATATAGACATACATATGTATATGTCTATATAGACATACATATACGTATGTCTATATAGACATACATATACGTATGTCTATATAGACATACATATATGTATGTCTATATACAAGACATATATATCTATATATACACATATACGTATATATAGACATATACGTATATGTGTATATATAGACATATACGTATATGTGTATATATAGACATATACGTATATGTGTATATATAGACATATATATGTATATGTGTAT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=267;END=14631916;SUPPORT=3;COVERAGE=4,4,4,2,1;STRAND=+-;AF=0.75;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;set=test_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.INS.4S16|chrX;test_2_reheader_POS=Sniffles2.INS.4S16|14631916;test_2_reheader_QUAL=Sniffles2.INS.4S16|60;test_2_reheader_FILTERS=Sniffles2.INS.4S16|PASS;test_2_reheader_SAMPLE=Sniffles2.INS.4S16|test_2|GT:0/1|GQ:1|DR:1|DV:3;test_2_reheader_INFO=Sniffles2.INS.4S16|PRECISE|SVTYPE:INS|SVLEN:267|END:14631916|SUPPORT:3|COVERAGE:4:4:4:2:1|STRAND:+-|AF:0.75|STDEV_LEN:0|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:1:1:3" + ], + [ + "versions.yml:md5,012a7d52b39310584f34d8819a042866", + "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", - "versions.yml:md5,572bfd042014333af194207291d12b95", "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", @@ -411,9 +820,9 @@ ], "meta": { "nf-test": "0.9.0", - "nextflow": "23.04.3" + "nextflow": "24.04.4" }, - "timestamp": "2024-10-08T16:00:43.592323665" + "timestamp": "2024-10-16T15:28:54.396895631" }, "1 sample - [bam, bai], fasta, fai, [], bed - sniffles -stub": { "content": [ @@ -443,7 +852,7 @@ { "id": "project" }, - "project.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + "project_svs.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "3": [ @@ -451,12 +860,13 @@ { "id": "project" }, - "project.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + "project_svs.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "4": [ + "versions.yml:md5,012a7d52b39310584f34d8819a042866", + "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", - "versions.yml:md5,572bfd042014333af194207291d12b95", "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", @@ -467,7 +877,7 @@ { "id": "project" }, - "project.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + "project_svs.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "ch_multisample_vcf": [ @@ -475,7 +885,7 @@ { "id": "project" }, - "project.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + "project_svs.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "ch_sv_calls_tbi": [ @@ -499,8 +909,9 @@ ] ], "versions": [ + "versions.yml:md5,012a7d52b39310584f34d8819a042866", + "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", - "versions.yml:md5,572bfd042014333af194207291d12b95", "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", @@ -510,9 +921,9 @@ ], "meta": { "nf-test": "0.9.0", - "nextflow": "23.04.3" + "nextflow": "24.04.4" }, - "timestamp": "2024-10-08T16:09:13.388630221" + "timestamp": "2024-10-16T13:44:38.364811814" }, "1 sample - [bam, bai], fasta, fai, [], [] - severus -stub": { "content": [ @@ -542,7 +953,7 @@ { "id": "project" }, - "project.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + "project_svs.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "3": [ @@ -550,12 +961,13 @@ { "id": "project" }, - "project.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + "project_svs.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "4": [ + "versions.yml:md5,012a7d52b39310584f34d8819a042866", + "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", - "versions.yml:md5,572bfd042014333af194207291d12b95", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", @@ -566,7 +978,7 @@ { "id": "project" }, - "project.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + "project_svs.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "ch_multisample_vcf": [ @@ -574,7 +986,7 @@ { "id": "project" }, - "project.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + "project_svs.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "ch_sv_calls_tbi": [ @@ -598,8 +1010,9 @@ ] ], "versions": [ + "versions.yml:md5,012a7d52b39310584f34d8819a042866", + "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", - "versions.yml:md5,572bfd042014333af194207291d12b95", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", @@ -609,17 +1022,18 @@ ], "meta": { "nf-test": "0.9.0", - "nextflow": "23.04.3" + "nextflow": "24.04.4" }, - "timestamp": "2024-10-08T16:11:04.664278022" + "timestamp": "2024-10-16T13:45:07.510780167" }, "1 sample - [bam, bai], fasta, fai, [], [] - sniffles": { "content": [ "7cd0730159250c8945e2007da414651e", - "5db7be988de18b4f14b532043adb367f", + "46a46d863d6d0d0ac83778dfbf4e969f", [ + "versions.yml:md5,012a7d52b39310584f34d8819a042866", + "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", - "versions.yml:md5,572bfd042014333af194207291d12b95", "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", @@ -628,17 +1042,20 @@ ], "meta": { "nf-test": "0.9.0", - "nextflow": "23.04.3" + "nextflow": "24.04.4" }, - "timestamp": "2024-10-08T15:58:41.674199758" + "timestamp": "2024-10-15T14:13:12.470120636" }, "1 sample - [bam, bai], fasta, fai, bed, [] - severus": { "content": [ + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=54, phased=false, phasedAutodetect=false]", "d64a5438fe54c0239613976f8826897b", - "d64a5438fe54c0239613976f8826897b", + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=53, phased=false, phasedAutodetect=false]", + "c37e6c17e6d1ccf07c23476f13c3e5ef", [ + "versions.yml:md5,012a7d52b39310584f34d8819a042866", + "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", - "versions.yml:md5,572bfd042014333af194207291d12b95", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", @@ -647,17 +1064,18 @@ ], "meta": { "nf-test": "0.9.0", - "nextflow": "23.04.3" + "nextflow": "24.04.4" }, - "timestamp": "2024-10-08T16:03:58.82820463" + "timestamp": "2024-10-15T14:15:51.175023011" }, "1 sample - [bam, bai], fasta, fai, [], bed - sniffles": { "content": [ "7cd0730159250c8945e2007da414651e", - "5e618571d8fb55add84e7857a204114c", + "46a46d863d6d0d0ac83778dfbf4e969f", [ + "versions.yml:md5,012a7d52b39310584f34d8819a042866", + "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", - "versions.yml:md5,572bfd042014333af194207291d12b95", "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", @@ -668,7 +1086,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-11T08:14:03.160440845" + "timestamp": "2024-10-15T14:14:31.65301129" }, "2 samples - [bam, bai], fasta, fai, [], [] - severus -stub": { "content": [ @@ -696,7 +1114,7 @@ { "id": "project" }, - "project.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + "project_svs.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], [ @@ -704,13 +1122,14 @@ { "id": "project" }, - "project.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + "project_svs.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], [ + "versions.yml:md5,012a7d52b39310584f34d8819a042866", + "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", - "versions.yml:md5,572bfd042014333af194207291d12b95", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", @@ -723,9 +1142,9 @@ ], "meta": { "nf-test": "0.9.0", - "nextflow": "23.04.3" + "nextflow": "24.04.4" }, - "timestamp": "2024-10-08T15:11:33.717946204" + "timestamp": "2024-10-16T13:45:51.452818836" }, "1 sample - [bam, bai], fasta, fai, bed, [] - severus -stub": { "content": [ @@ -755,7 +1174,7 @@ { "id": "project" }, - "project.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + "project_svs.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "3": [ @@ -763,12 +1182,13 @@ { "id": "project" }, - "project.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + "project_svs.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "4": [ + "versions.yml:md5,012a7d52b39310584f34d8819a042866", + "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", - "versions.yml:md5,572bfd042014333af194207291d12b95", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", @@ -779,7 +1199,7 @@ { "id": "project" }, - "project.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + "project_svs.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "ch_multisample_vcf": [ @@ -787,7 +1207,7 @@ { "id": "project" }, - "project.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + "project_svs.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "ch_sv_calls_tbi": [ @@ -811,8 +1231,9 @@ ] ], "versions": [ + "versions.yml:md5,012a7d52b39310584f34d8819a042866", + "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", - "versions.yml:md5,572bfd042014333af194207291d12b95", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", @@ -822,18 +1243,23 @@ ], "meta": { "nf-test": "0.9.0", - "nextflow": "23.04.3" + "nextflow": "24.04.4" }, - "timestamp": "2024-10-08T15:10:18.331073964" + "timestamp": "2024-10-16T13:45:36.486860378" }, "2 samples - [bam, bai], fasta, fai, [], [] - severus": { "content": [ - "[test_1_reheader.vcf.gz, test_2_reheader.vcf.gz]", - "37b9bd8c61a49f47e07db24a911f3cce", + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=56, phased=false, phasedAutodetect=false]", + "1294e2ab468789a0bd56e8bcaf578a4", + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=71, phased=false, phasedAutodetect=false]", + "1c9a74feb498450766db003698579ded", + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=2, variantCount=80, phased=false, phasedAutodetect=false]", + "bb2aa63da770c7f58eb5efa1a36101b8", [ + "versions.yml:md5,012a7d52b39310584f34d8819a042866", + "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", - "versions.yml:md5,572bfd042014333af194207291d12b95", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", @@ -846,17 +1272,20 @@ ], "meta": { "nf-test": "0.9.0", - "nextflow": "23.04.3" + "nextflow": "24.04.4" }, - "timestamp": "2024-10-08T16:07:01.072676373" + "timestamp": "2024-10-15T14:23:53.641276655" }, "1 sample - [bam, bai], fasta, fai, bed, [] - sniffles": { "content": [ + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=84, phased=false, phasedAutodetect=false]", "3cb4ba0bf05ab17ef02c4b51e70e4e6e", - "c7e259bedb8c0e4742bf1a5722ac2973", + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=83, phased=false, phasedAutodetect=false]", + "e1908dac54d273f92eb06162a574a217", [ + "versions.yml:md5,012a7d52b39310584f34d8819a042866", + "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", - "versions.yml:md5,572bfd042014333af194207291d12b95", "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", @@ -865,8 +1294,8 @@ ], "meta": { "nf-test": "0.9.0", - "nextflow": "23.04.3" + "nextflow": "24.04.4" }, - "timestamp": "2024-10-08T15:59:27.69693246" + "timestamp": "2024-10-15T14:13:40.532047383" } } \ No newline at end of file diff --git a/subworkflows/local/call_svs/tests/nextflow.config b/subworkflows/local/call_svs/tests/nextflow.config index d0616704..9748c4ef 100644 --- a/subworkflows/local/call_svs/tests/nextflow.config +++ b/subworkflows/local/call_svs/tests/nextflow.config @@ -1,11 +1,20 @@ process { withName: 'ADD_FOUND_IN_TAG' { - ext.args2 = '--output-type b --write-index=csi' + ext.args = '--no-version' + ext.args2 = [ + '--output-type b', + '--write-index=csi', + '--no-version' + ].join(' ') } - withName: 'BCFTOOLS_MERGE' { - ext.args = '--force-single --output-type z --no-version --write-index=tbi' + withName: 'SVDB_MERGE' { + ext.prefix = { "${meta.id}_svs" } + ext.args = [ + '--bnd_distance 1000', + '--overlap .5' + ].join(' ') } withName: 'BCFTOOLS_QUERY' { @@ -18,6 +27,6 @@ process { withName: 'BCFTOOLS_REHEADER' { ext.prefix = { "${meta.id}_reheader" } - ext.args2 = '--output-type z --write-index=tbi' + ext.args2 = '--output-type z --write-index=tbi --no-version' } } diff --git a/subworkflows/local/utils_nfcore_nallo_pipeline/main.nf b/subworkflows/local/utils_nfcore_nallo_pipeline/main.nf index d40c8791..e1b012bc 100644 --- a/subworkflows/local/utils_nfcore_nallo_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_nallo_pipeline/main.nf @@ -330,6 +330,7 @@ def toolCitationText() { "Somalier (Pedersen et al. 2020)", "Severus (Keskus et al. 2024)", "Sniffles2 (Smolka et al. 2024)", + "SVDB (Eisfeldt et al. 2017)", ] if (!params.skip_qc) { citation_text = citation_text + [ From d6f26271ee2f5c38dd8a8ad94b8c36ef5e0cb9ed Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Thu, 17 Oct 2024 13:33:35 +0200 Subject: [PATCH 037/106] Create build-docs.yml (#430) --- .github/workflows/build-docs.yml | 43 ++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 .github/workflows/build-docs.yml diff --git a/.github/workflows/build-docs.yml b/.github/workflows/build-docs.yml new file mode 100644 index 00000000..f2f1b4da --- /dev/null +++ b/.github/workflows/build-docs.yml @@ -0,0 +1,43 @@ +name: build docs +# https://github.com/nf-cmgg/structural/blob/master/.github/workflows/build-docs.yml +on: + push: + branches: + - master + - main + - dev +permissions: + contents: write +jobs: + deploy: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 0 # fetch all commits/branches + - uses: actions/setup-python@v4 + with: + python-version: 3.x + - run: echo "cache_id=$(date --utc '+%V')" >> $GITHUB_ENV + - name: Obtain version from nextflow config + run: | + version=$(grep "version" nextflow.config | tail -1 | sed -e s'/[^=]*= //' | cut -d "'" -f 2) + [[ $version == *"dev"* ]] && pipeline_version="dev" || pipeline_version=$version + echo "pipeline_version=$pipeline_version" >> $GITHUB_ENV + - name: Setup git user + run: | + git config --global user.name "${{github.actor}}" + git config --global user.email "${{github.actor}}@users.noreply.github.com" + - uses: actions/cache@v3 + with: + key: mkdocs-material-${{ env.cache_id }} + path: .cache + restore-keys: | + mkdocs-material- + - name: Install dependencies + run: pip install mkdocs-material pymdown-extensions pillow cairosvg mike + - name: Build docs + run: | + [[ ${{ env.pipeline_version }} == "dev" ]] && mike deploy --push ${{ env.pipeline_version }} || mike deploy --push --update-aliases ${{ env.pipeline_version }} latest + - name: Set default docs + run: mike set-default --push latest From 79b9674bfd7649f622b5a2881b51770e836c0985 Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Thu, 17 Oct 2024 14:03:31 +0200 Subject: [PATCH 038/106] Add additional mkdocs files (#431) --- .nf-core.yml | 1 + CHANGELOG.md | 3 + README.md | 2 +- CITATIONS.md => docs/CITATIONS.md | 0 docs/index.md | 111 ++++++++++++++++++++++++++++++ mkdocs.yml | 66 ++++++++++++++++++ 6 files changed, 182 insertions(+), 1 deletion(-) rename CITATIONS.md => docs/CITATIONS.md (100%) create mode 100644 docs/index.md create mode 100644 mkdocs.yml diff --git a/.nf-core.yml b/.nf-core.yml index 8a98a163..b53031cd 100644 --- a/.nf-core.yml +++ b/.nf-core.yml @@ -1,6 +1,7 @@ bump_version: null lint: files_exist: + - CITATIONS.md - CODE_OF_CONDUCT.md - assets/nf-core-nallo_logo_light.png - docs/README.md diff --git a/CHANGELOG.md b/CHANGELOG.md index 52dcb819..78c9608c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#408](https://github.com/genomic-medicine-sweden/nallo/pull/408) - Added a new subworkflow to annotate SVs - [#417](https://github.com/genomic-medicine-sweden/nallo/pull/417) - Added `FOUND_IN=deepvariant` tags to SNV calling output - [#419](https://github.com/genomic-medicine-sweden/nallo/pull/419) - Added support for SV filtering using input BED file ([#348](https://github.com/genomic-medicine-sweden/nallo/issues/348)) +- [#430](https://github.com/genomic-medicine-sweden/nallo/pull/430) - Added a GitHub action to build and publish docs to GitHub Pages +- [#431](https://github.com/genomic-medicine-sweden/nallo/pull/431) - Added files needed to automatically build and publish docs to GitHub Pages ### `Changed` @@ -53,6 +55,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#422](https://github.com/genomic-medicine-sweden/nallo/pull/422) - Updated nf-core/tools template to v3.0.1 - [#423](https://github.com/genomic-medicine-sweden/nallo/pull/423) - Updated metro map - [#428](https://github.com/genomic-medicine-sweden/nallo/pull/428) - Changed from using bcftools to SVDB for SV merging +- [#431](https://github.com/genomic-medicine-sweden/nallo/pull/431) - Changed `CITATIONS.md` to `docs/CITATIONS.md`, ### `Removed` diff --git a/README.md b/README.md index 4dd88d57..4d0856da 100644 --- a/README.md +++ b/README.md @@ -112,4 +112,4 @@ This pipeline uses code and infrastructure developed and maintained by the [nf-c > > _Nat Biotechnol._ 2020 Feb 13. doi: [10.1038/s41587-020-0439-x](https://dx.doi.org/10.1038/s41587-020-0439-x). -An extensive list of references for the tools used by the pipeline can be found in the [`CITATIONS.md`](CITATIONS.md) file. +An extensive list of references for the tools used by the pipeline can be found in the [`docs/CITATIONS.md`](CITATIONS.md) file. diff --git a/CITATIONS.md b/docs/CITATIONS.md similarity index 100% rename from CITATIONS.md rename to docs/CITATIONS.md diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 00000000..1413a087 --- /dev/null +++ b/docs/index.md @@ -0,0 +1,111 @@ +--- +title: genomic-medicine-sweden/nallo +description: A bioinformatics analysis pipeline for long-reads from both PacBio and (targeted) ONT-data, focused on rare-disease. +--- + +## Introduction + +**genomic-medicine-sweden/nallo** is a bioinformatics analysis pipeline for long-reads from both PacBio and (targeted) ONT-data, focused on rare-disease. Heavily influenced by best-practice pipelines such as [nf-core/sarek](https://nf-co.re/sarek), [nf-core/raredisease](https://nf-co.re/raredisease), [nf-core/nanoseq](https://github.com/nf-core/nanoseq), [PacBio Human WGS Workflow](https://github.com/PacificBiosciences/pb-human-wgs-workflow-snakemake), [epi2me-labs/wf-human-variation](https://github.com/epi2me-labs/wf-human-variation) and [brentp/rare-disease-wf](https://github.com/brentp/rare-disease-wf). + +## Overview + + + genomic-medicine-sweden/nallo workflow + + +## Pipeline summary + +##### QC + +- Read QC with [FastQC](http://www.bioinformatics.babraham.ac.uk/projects/fastqc/), [cramino](https://github.com/wdecoster/cramino) and [mosdepth](https://github.com/brentp/mosdepth) + +##### Alignment & assembly + +- Align reads to reference with [minimap2](https://github.com/lh3/minimap2) +- Assemble (trio-binned) haploid genomes with [hifiasm](https://github.com/chhylp123/hifiasm) (HiFi only) + +##### Variant calling + +- Call SNVs & joint genotyping with [deepvariant](https://github.com/google/deepvariant) and [GLNexus](https://github.com/dnanexus-rnd/GLnexus) +- Call SVs with [Severus](https://github.com/KolmogorovLab/Severus) or [Sniffles2](https://github.com/fritzsedlazeck/Sniffles) +- Call CNVs with [HiFiCNV](https://github.com/PacificBiosciences/HiFiCNV) +- Call tandem repeats with [TRGT](https://github.com/PacificBiosciences/trgt/tree/main) (HiFi only) +- Call paralogous genes with [Paraphase](https://github.com/PacificBiosciences/paraphase) +- Call variants from assembly with [dipcall](https://github.com/lh3/dipcall) (HiFi only) + +##### Phasing and methylation + +- Phase and haplotag reads with [LongPhase](https://github.com/twolinin/longphase), [whatshap](https://github.com/whatshap/whatshap) or [HiPhase](https://github.com/PacificBiosciences/HiPhase) +- Create methylation pileups with [modkit](https://github.com/nanoporetech/modkit) + +##### Annotation + +- Annotate SNVs and INDELs with databases of choice, i.e. [gnomAD](https://gnomad.broadinstitute.org), [CADD](https://cadd.gs.washington.edu) etc. with [echtvar](https://github.com/brentp/echtvar) and [VEP](https://github.com/Ensembl/ensembl-vep) +- Annotate repeat expansions with [stranger](https://github.com/Clinical-Genomics/stranger) +- Annotate SVs with [SVDB](https://github.com/J35P312/SVDB) and [VEP](https://github.com/Ensembl/ensembl-vep) + +##### Ranking + +- Rank SNVs with [GENMOD](https://github.com/Clinical-Genomics/genmod) + +## Usage + +> [!NOTE] +> If you are new to Nextflow and nf-core, please refer to [this page](https://nf-co.re/docs/usage/installation) on how to set-up Nextflow. Make sure to [test your setup](https://nf-co.re/docs/usage/introduction#how-to-run-a-pipeline) with `-profile test` before running the workflow on actual data. + +Prepare a samplesheet with input data: + +`samplesheet.csv` + +``` +project,sample,file,family_id,paternal_id,maternal_id,sex,phenotype +NIST,HG002,/path/to/HG002.fastq.gz,FAM1,HG003,HG004,1,2 +NIST,HG005,/path/to/HG005.bam,FAM1,HG003,HG004,2,1 +``` + +Supply a reference genome with `--fasta` and choose a matching `--preset` for your data (`revio`, `pacbio`, `ONT_R10`). Now, you can run the pipeline using: + +```bash +nextflow run genomic-medicine-sweden/nallo \ + -profile \ + --input samplesheet.csv \ + --preset \ + --fasta \ + --outdir +``` + +For more details and further functionality, please refer to the [usage documentation](https://github.com/genomic-medicine-sweden/nallo/blob/dev/docs/usage.md). + +> [!WARNING] +> Please provide pipeline parameters via the CLI or Nextflow `-params-file` option. Custom config files including those provided by the `-c` Nextflow option can be used to provide any configuration _**except for parameters**_; +> see [docs](https://nf-co.re/usage/configuration#custom-configuration-files). + +To run in an offline environment, download the pipeline and singularity images using [`nf-core download`](https://nf-co.re/tools/#downloading-pipelines-for-offline-use): + +``` +nf-core download genomic-medicine-sweden/nallo +``` + +## Credits + +genomic-medicine-sweden/nallo was originally written by Felix Lenner. + +We thank the following people for their extensive assistance in the development of this pipeline: + +## Contributions and Support + +If you would like to contribute to this pipeline, please see the [contributing guidelines](.github/CONTRIBUTING.md). + +## Citations + +If you use genomic-medicine-sweden/nallo for your analysis, please cite it using the following doi: [10.5281/zenodo.13748210](https://doi.org/10.5281/zenodo.13748210). + +This pipeline uses code and infrastructure developed and maintained by the [nf-core](https://nf-co.re) community, reused here under the [MIT license](https://github.com/nf-core/tools/blob/main/LICENSE). + +> **The nf-core framework for community-curated bioinformatics pipelines.** +> +> Philip Ewels, Alexander Peltzer, Sven Fillinger, Harshil Patel, Johannes Alneberg, Andreas Wilm, Maxime Ulysse Garcia, Paolo Di Tommaso & Sven Nahnsen. +> +> _Nat Biotechnol._ 2020 Feb 13. doi: [10.1038/s41587-020-0439-x](https://dx.doi.org/10.1038/s41587-020-0439-x). + +An extensive list of references for the tools used by the pipeline can be found in the [`CITATIONS.md`](CITATIONS.md) file. diff --git a/mkdocs.yml b/mkdocs.yml new file mode 100644 index 00000000..418a2604 --- /dev/null +++ b/mkdocs.yml @@ -0,0 +1,66 @@ +# based on: https://github.com/nf-cmgg/structural/blob/master/mkdocs.yml +site_name: genomic-medicine-sweden/nallo +repo_name: genomic-medicine-sweden/nallo +repo_url: https://github.com/genomic-medicine-sweden/nallo +site_url: https://genomic-medicine-sweden.github.io/nallo + +nav: + - Home: index.md + - Usage: usage.md + - Output: output.md + - Parameters: parameters.md + - Citations: CITATIONS.md + +theme: + name: material + icon: + logo: octicons/checklist-16 + repo: fontawesome/brands/github + palette: + # Palette toggle for dark mode + - media: "(prefers-color-scheme: dark)" + scheme: slate + primary: custom + accent: custom + toggle: + icon: material/weather-sunny + name: Switch to light mode + # Palette toggle for light mode + - media: "(prefers-color-scheme: light)" + scheme: default + primary: custom + accent: custom + toggle: + icon: material/weather-night + name: Switch to dark mode + font: + text: Inter + features: + - content.code.annotate + - content.code.copy + - navigation.instant + - navigation.top + - navigation.tracking + - navigation.sections + - navigation.footer + - search.share + - toc.follow + +markdown_extensions: + - attr_list + - md_in_html + - admonition + - pymdownx.emoji: + emoji_index: !!python/name:material.extensions.emoji.twemoji + emoji_generator: !!python/name:material.extensions.emoji.to_svg + - pymdownx.highlight: + anchor_linenums: true + line_spans: __span + pygments_lang_class: true + - pymdownx.inlinehilite + - pymdownx.snippets + - pymdownx.superfences + +extra: + version: + provider: mike From c9192bee9f5ec784e33091ec9d29bc24cff1c831 Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Fri, 18 Oct 2024 10:20:43 +0200 Subject: [PATCH 039/106] Fix and make docs pretty (#433) * Fix and make docs pretty * Update docs/usage.md Co-authored-by: Daniel Schmitz --------- Co-authored-by: Daniel Schmitz --- CHANGELOG.md | 1 + README.md | 14 +- docs/index.md | 31 ++-- docs/output.md | 468 ++++++++++++++++++------------------------------- docs/usage.md | 176 ++++++++++++------- 5 files changed, 299 insertions(+), 391 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 78c9608c..6be5da28 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -56,6 +56,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#423](https://github.com/genomic-medicine-sweden/nallo/pull/423) - Updated metro map - [#428](https://github.com/genomic-medicine-sweden/nallo/pull/428) - Changed from using bcftools to SVDB for SV merging - [#431](https://github.com/genomic-medicine-sweden/nallo/pull/431) - Changed `CITATIONS.md` to `docs/CITATIONS.md`, +- [#433](https://github.com/genomic-medicine-sweden/nallo/pull/433) - Updated docs and README. ### `Removed` diff --git a/README.md b/README.md index 4d0856da..d038d89d 100644 --- a/README.md +++ b/README.md @@ -11,8 +11,6 @@ **genomic-medicine-sweden/nallo** is a bioinformatics analysis pipeline for long-reads from both PacBio and (targeted) ONT-data, focused on rare-disease. Heavily influenced by best-practice pipelines such as [nf-core/sarek](https://nf-co.re/sarek), [nf-core/raredisease](https://nf-co.re/raredisease), [nf-core/nanoseq](https://github.com/nf-core/nanoseq), [PacBio Human WGS Workflow](https://github.com/PacificBiosciences/pb-human-wgs-workflow-snakemake), [epi2me-labs/wf-human-variation](https://github.com/epi2me-labs/wf-human-variation) and [brentp/rare-disease-wf](https://github.com/brentp/rare-disease-wf). -## Overview - genomic-medicine-sweden/nallo workflow @@ -78,17 +76,7 @@ nextflow run genomic-medicine-sweden/nallo \ --outdir ``` -For more details and further functionality, please refer to the [usage documentation](https://github.com/genomic-medicine-sweden/nallo/blob/dev/docs/usage.md). - -> [!WARNING] -> Please provide pipeline parameters via the CLI or Nextflow `-params-file` option. Custom config files including those provided by the `-c` Nextflow option can be used to provide any configuration _**except for parameters**_; -> see [docs](https://nf-co.re/usage/configuration#custom-configuration-files). - -To run in an offline environment, download the pipeline and singularity images using [`nf-core download`](https://nf-co.re/tools/#downloading-pipelines-for-offline-use): - -``` -nf-core download genomic-medicine-sweden/nallo -``` +For more details and further functionality, please refer to the [documentation](http://genomic-medicine-sweden.github.io/nallo/). ## Credits diff --git a/docs/index.md b/docs/index.md index 1413a087..0b06c33e 100644 --- a/docs/index.md +++ b/docs/index.md @@ -7,24 +7,22 @@ description: A bioinformatics analysis pipeline for long-reads from both PacBio **genomic-medicine-sweden/nallo** is a bioinformatics analysis pipeline for long-reads from both PacBio and (targeted) ONT-data, focused on rare-disease. Heavily influenced by best-practice pipelines such as [nf-core/sarek](https://nf-co.re/sarek), [nf-core/raredisease](https://nf-co.re/raredisease), [nf-core/nanoseq](https://github.com/nf-core/nanoseq), [PacBio Human WGS Workflow](https://github.com/PacificBiosciences/pb-human-wgs-workflow-snakemake), [epi2me-labs/wf-human-variation](https://github.com/epi2me-labs/wf-human-variation) and [brentp/rare-disease-wf](https://github.com/brentp/rare-disease-wf). -## Overview - - genomic-medicine-sweden/nallo workflow + genomic-medicine-sweden/nallo workflow ## Pipeline summary -##### QC +### QC - Read QC with [FastQC](http://www.bioinformatics.babraham.ac.uk/projects/fastqc/), [cramino](https://github.com/wdecoster/cramino) and [mosdepth](https://github.com/brentp/mosdepth) -##### Alignment & assembly +### Alignment & assembly - Align reads to reference with [minimap2](https://github.com/lh3/minimap2) - Assemble (trio-binned) haploid genomes with [hifiasm](https://github.com/chhylp123/hifiasm) (HiFi only) -##### Variant calling +### Variant calling - Call SNVs & joint genotyping with [deepvariant](https://github.com/google/deepvariant) and [GLNexus](https://github.com/dnanexus-rnd/GLnexus) - Call SVs with [Severus](https://github.com/KolmogorovLab/Severus) or [Sniffles2](https://github.com/fritzsedlazeck/Sniffles) @@ -33,25 +31,26 @@ description: A bioinformatics analysis pipeline for long-reads from both PacBio - Call paralogous genes with [Paraphase](https://github.com/PacificBiosciences/paraphase) - Call variants from assembly with [dipcall](https://github.com/lh3/dipcall) (HiFi only) -##### Phasing and methylation +### Phasing and methylation - Phase and haplotag reads with [LongPhase](https://github.com/twolinin/longphase), [whatshap](https://github.com/whatshap/whatshap) or [HiPhase](https://github.com/PacificBiosciences/HiPhase) - Create methylation pileups with [modkit](https://github.com/nanoporetech/modkit) -##### Annotation +### Annotation - Annotate SNVs and INDELs with databases of choice, i.e. [gnomAD](https://gnomad.broadinstitute.org), [CADD](https://cadd.gs.washington.edu) etc. with [echtvar](https://github.com/brentp/echtvar) and [VEP](https://github.com/Ensembl/ensembl-vep) - Annotate repeat expansions with [stranger](https://github.com/Clinical-Genomics/stranger) - Annotate SVs with [SVDB](https://github.com/J35P312/SVDB) and [VEP](https://github.com/Ensembl/ensembl-vep) -##### Ranking +### Ranking - Rank SNVs with [GENMOD](https://github.com/Clinical-Genomics/genmod) ## Usage -> [!NOTE] -> If you are new to Nextflow and nf-core, please refer to [this page](https://nf-co.re/docs/usage/installation) on how to set-up Nextflow. Make sure to [test your setup](https://nf-co.re/docs/usage/introduction#how-to-run-a-pipeline) with `-profile test` before running the workflow on actual data. +!!! note + + If you are new to Nextflow and nf-core, please refer to [this page](https://nf-co.re/docs/usage/installation) on how to set-up Nextflow. Make sure to [test your setup](https://nf-co.re/docs/usage/introduction#how-to-run-a-pipeline) with `-profile test` before running the workflow on actual data. Prepare a samplesheet with input data: @@ -74,11 +73,9 @@ nextflow run genomic-medicine-sweden/nallo \ --outdir ``` -For more details and further functionality, please refer to the [usage documentation](https://github.com/genomic-medicine-sweden/nallo/blob/dev/docs/usage.md). +!!!warning -> [!WARNING] -> Please provide pipeline parameters via the CLI or Nextflow `-params-file` option. Custom config files including those provided by the `-c` Nextflow option can be used to provide any configuration _**except for parameters**_; -> see [docs](https://nf-co.re/usage/configuration#custom-configuration-files). + Please provide pipeline parameters via the CLI or Nextflow `-params-file` option. Custom config files including those provided by the `-c` Nextflow option can be used to provide any configuration _**except for parameters**_;see [docs](https://nf-co.re/usage/configuration#custom-configuration-files). To run in an offline environment, download the pipeline and singularity images using [`nf-core download`](https://nf-co.re/tools/#downloading-pipelines-for-offline-use): @@ -86,6 +83,8 @@ To run in an offline environment, download the pipeline and singularity images u nf-core download genomic-medicine-sweden/nallo ``` +For more details and further functionality, please refer to the [usage documentation](usage.md). + ## Credits genomic-medicine-sweden/nallo was originally written by Felix Lenner. @@ -94,7 +93,7 @@ We thank the following people for their extensive assistance in the development ## Contributions and Support -If you would like to contribute to this pipeline, please see the [contributing guidelines](.github/CONTRIBUTING.md). +If you would like to contribute to this pipeline, please see the [contributing guidelines](https://github.com/genomic-medicine-sweden/nallo/blob/dev/.github/CONTRIBUTING.md). ## Citations diff --git a/docs/output.md b/docs/output.md index a96aff02..9e09cfec 100644 --- a/docs/output.md +++ b/docs/output.md @@ -1,366 +1,238 @@ # genomic-medicine-sweden/nallo: Output -## Table of contents - -- [genomic-medicine-sweden/nallo: Output](#genomic-medicine-swedennallo-output) - - [Table of contents](#table-of-contents) - - [Pipeline overview](#pipeline-overview) - - [Alignment](#alignment) - - [Assembly](#assembly) - - [Assembly variant calling](#assembly-variant-calling) - - [CNV calling](#cnv-calling) - - [Methylation](#methylation) - - [MultiQC](#multiqc) - - [Paraphase](#paraphase) - - [Phasing](#phasing) - - [Pipeline information](#pipeline-information) - - [QC](#qc) - - [FastQC](#fastqc) - - [Mosdepth](#mosdepth) - - [Cramino](#cramino) - - [Somalier](#somalier) - - [Repeat calling](#repeat-calling) - - [Repeat annotation](#repeat-annotation) - - [SNVs](#snvs) - - [Calling](#calling) - - [Annotation](#annotation) - - [Ranking](#ranking) - - [Ranked Variants](#ranked-variants) - - [SV Calling](#sv-calling) - - [SV Annotation](#sv-annotation) +## Aligned reads -## Pipeline overview +[Minimap2](https://github.com/lh3/minimap2) is used to map the reads to a reference genome. The aligned reads are sorted, (merged) and indexed using [samtools](https://github.com/samtools/samtools). -The directories listed below will be created in the results directory after the pipeline has finished: +| Path | Description | +| --------------------------------------- | ----------------------------------- | +| `aligned_reads/minimap2/{sample}/*.bam` | Alignment file in bam format | +| `aligned_reads/minimap2/{sample}/*.bai` | Index of the corresponding bam file | -- `aligned_reads` -- `assembly_haplotypes` -- `assembly_variant_calling` -- `cnv_calling` -- `databases` -- `methylation` -- `multiqc` -- `paraphase` -- `pedigree` -- `phasing` -- `pipeline_info` -- `qc` -- `repeat_calling` -- `snvs` -- `svs` +If the pipeline is run with phasing, the aligned reads will be happlotagged using the active phasing tool. -### Alignment +| Path | Description | +| ----------------------------------------------------------------- | ----------------------- | +| `{outputdir}/aligned_reads/{sample}/{sample}_haplotagged.bam` | BAM file with haplotags | +| `{outputdir}/aligned_reads/{sample}/{sample}_haplotagged.bam.bai` | Index of the BAM file | -[minimap2](https://github.com/lh3/minimap2) is used to map the reads to a reference genome. The aligned reads are sorted, (merged) and indexed using [samtools](https://github.com/samtools/samtools). +!!!note -
    -Output files from Alignment + Alignments will only be output without haplotags if phasing is off. -- `{outputdir}/aligned_reads/minimap2/{sample}/` - - `*.bam`: Alignment file in bam format - - `*.bai`: Index of the corresponding bam file -
    +## Assembly -### Assembly +[Hifiasm](https://github.com/chhylp123/hifiasm) is used to assemble genomes. The assembled haplotypes are then comverted to fasta files using [gfastats](https://github.com/vgl-hub/gfastats). A deconstructed version of [dipcall](https://github.com/lh3/dipcall) is to map the assembled haplotypes back to the reference genome. -[hifiasm](https://github.com/chhylp123/hifiasm) is used to assemble genomes. The assembled haplotypes are then comverted to fasta files using [gfastats](https://github.com/vgl-hub/gfastats). +| Path | Description | +| ------------------------------------------------------------ | ---------------------------------------------------- | +| `assembly_haplotypes/gfastats/{sample}/*hap1.p_ctg.fasta.gz` | Assembled haplotype 1 | +| `assembly_haplotypes/gfastats/{sample}/*hap2.p_ctg.fasta.gz` | Assembled haplotype 2 | +| `assembly_haplotypes/gfastats/{sample}/*.assembly_summary` | Summary statistics | +| `assembly_variant_calling/dipcall/{sample}/*hap1.bam` | Assembled haplotype 1 mapped to the reference genome | +| `assembly_variant_calling/dipcall/{sample}/*hap1.bai` | Index of the corresponding BAM file for haplotype 1 | +| `assembly_variant_calling/dipcall/{sample}/*hap2.bam` | Assembled haplotype 2 mapped to the reference genome | +| `assembly_variant_calling/dipcall/{sample}/*hap2.bai` | Index of the corresponding BAM file for haplotype 2 | -
    -Output files from Assembly +## Methylation pileups -- `{outputdir}/assembly_haplotypes/gfastats/{sample}/` - - `*hap1.p_ctg.fasta.gz`: Assembled haplotype 1 - - `*hap2.p_ctg.fasta.gz`: Assembled haplotype 2 - - `*.assembly_summary`: Summary statistics -
    +[Modkit](https://github.com/nanoporetech/modkit) is used to create methylation pileups, producing bedMethyl files for both haplotagged and ungrouped reads. Additionaly, methylation information can be viewed in the BAM files, for example in IGV. -### Assembly variant calling +| Path | Description | +| ----------------------------------------------------------------------------------- | --------------------------------------------------------- | +| `methylation/modkit/pileup/phased/{sample}/*.modkit_pileup_phased_*.bed.gz` | bedMethyl file with summary counts from haplotagged reads | +| `methylation/modkit/pileup/phased/{sample}/*.modkit_pileup_phased_ungrouped.bed.gz` | bedMethyl file for ungrouped reads | +| `methylation/modkit/pileup/unphased/{sample}/*.modkit_pileup.bed.gz` | bedMethyl file with summary counts from all reads | +| `methylation/modkit/pileup/unphased/{sample}/*.bed.gz.tbi` | Index of the corresponding bedMethyl file | -A deconstructed version of [dipcall](https://github.com/lh3/dipcall) is used to call variants from the assembled haplotypes. They are also mapped back to the reference genome. +## MultiQC -
    -Output files from Assembly variant calling +[MultiQC](http://multiqc.info) generates an HTML report summarizing all samples' QC results and pipeline statistics. -> Dipcall produces several files, a full expanation is available [here](https://github.com/lh3/dipcall). +| Path | Description | +| ----------------------------- | ----------------------------------------- | +| `multiqc/multiqc_report.html` | HTML report summarizing QC results | +| `multiqc/multiqc_data/` | Directory containing parsed statistics | +| `multiqc/multiqc_plots/` | Directory containing static report images | -- `{outputdir}/assembly_variant_calling/dipcall/{sample}/` +## Pipeline Information - - `*hap1.bam`: Assembled haplotype 1 mapped to the reference genome - - `*hap1.bai`: Index of the corresponding bam file. - - `*hap2.bam`: Assembled haplotype 2 mapped to the reference genome - - `*hap2.bai`: Index of the corresponding bam file. +[Nextflow](https://www.nextflow.io/docs/latest/tracing.html) generates reports for troubleshooting, performance, and traceability. -
    +| Path | Description | +| --------------------------------------- | --------------------------------- | +| `pipeline_info/execution_report.html` | Execution report | +| `pipeline_info/execution_timeline.html` | Timeline report | +| `pipeline_info/execution_trace.txt` | Execution trace | +| `pipeline_info/pipeline_dag.dot` | Pipeline DAG in DOT format | +| `pipeline_info/pipeline_report.html` | Pipeline report | +| `pipeline_info/software_versions.yml` | Software versions used in the run | -### CNV calling +## Phasing -[HiFiCNV](https://github.com/PacificBiosciences/HiFiCNV) is used to call CNVs. It also produces copynumber, depth and MAF tracks loadable in IGV. +[LongPhase](https://github.com/twolinin/longphase), [WhatsHap](https://whatshap.readthedocs.io/en/latest/), or [HiPhase](https://github.com/PacificBiosciences/HiPhase) are used for phasing. -
    -Output files from CNV calling +| Path | Description | +| ----------------------------------------------------------------- | ----------------------------- | +| `{outputdir}/aligned_reads/{sample}/{sample}_haplotagged.bam` | BAM file with haplotags | +| `{outputdir}/aligned_reads/{sample}/{sample}_haplotagged.bam.bai` | Index of the BAM file | +| `{outputdir}/phased_variants/{sample}/*.vcf.gz` | VCF file with phased variants | +| `{outputdir}/phased_variants/{sample}/*.vcf.gz.tbi` | Index of the VCF file | +| `{outputdir}/qc/phasing_stats/{sample}/*.blocks.tsv` | Phase block file | +| `{outputdir}/qc/phasing_stats/{sample}/*.stats.tsv` | Phasing statistics file | -- `{outputdir}/cnv_calling/hificnv/{sample}/` - - `*.copynum.bedgraph`: Copy number in bedgraph format - - `*.depth.bw`: Depth track in BigWig format - - `*.maf.bw`: Minor allele frequencies in BigWig format - - `*.vcf.gz`: VCF file containing CNV variants - - `*.vcf.gz.tbi`: Index of the corresponding VCF file -
    +## QC -### Methylation +[FastQC](http://www.bioinformatics.babraham.ac.uk/projects/fastqc/), [cramino](https://github.com/wdecoster/cramino), [mosdepth](https://github.com/brentp/mosdepth), and [somalier](https://github.com/brentp/somalier) are used for read quality control. -[modkit](https://github.com/nanoporetech/modkit) is used to create methylation pileups. bedMethyl files are stored both one file with summary counts from reads per haplotag (e.g. HP1, HP2 and ungrouped) and one file with summary counts from all reads. The methylation is also stored in the BAM files and can be viewed directly in IGV. +### FastQC -
    -Output files from Methylation +[FastQC](http://www.bioinformatics.babraham.ac.uk/projects/fastqc/) provides general quality metrics for sequenced reads, including information on quality score distribution, per-base sequence content (%A/T/G/C), adapter contamination, and overrepresented sequences. For more details, refer to the [FastQC help pages](http://www.bioinformatics.babraham.ac.uk/projects/fastqc/Help/). -- `{outputdir}/methylation/modkit/pileup/phased/{sample}/` +| Path | Description | +| ---------------------------------------------- | --------------------------------------------------------------- | +| `{outputdir}/qc/fastqc/{sample}/*_fastqc.html` | FastQC report containing quality metrics | +| `{outputdir}/qc/fastqc/{sample}/*_fastqc.zip` | Zip archive with the FastQC report, data files, and plot images | - - `*.modkit_pileup_phased_*.bed.gz`: bedMethyl file containing summary counts from reads with haplotags, e.g. 1 or 2 - - `*.modkit_pileup_phased_ungrouped.bed.gz`: bedMethyl file containing summary counts for ungrouped reads - - `*.bed.gz.tbi`: Index of the corresponding bedMethyl file +### Mosdepth -- `{outputdir}/methylation/modkit/pileup/unphased/{sample}/` - - `*.modkit_pileup.bed.gz`: bedMethyl file containing summary counts from all reads - - `*.bed.gz.tbi`: Index of the corresponding bedMethyl file -
    +[Mosdepth](https://github.com/brentp/mosdepth) is used to report quality control metrics such as coverage and GC content from alignment files. -### MultiQC +| Path | Description | +| ------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | +| `{outputdir}/qc/mosdepth/{sample}/*.mosdepth.global.dist.txt` | Cumulative distribution of bases covered for at least a given coverage value, across chromosomes and the whole genome | +| `{outputdir}/qc/mosdepth/{sample}/*.mosdepth.region.dist.txt` | Cumulative distribution of bases covered for at least a given coverage value, across regions (if a BED file is used) | +| `{outputdir}/qc/mosdepth/{sample}/*.mosdepth.summary.txt` | Mosdepth summary file | +| `{outputdir}/qc/mosdepth/{sample}/*.regions.bed.gz` | Depth per region (if a BED file is used) | +| `{outputdir}/qc/mosdepth/{sample}/*.regions.bed.gz.csi` | Index of the regions.bed.gz file | -[MultiQC](http://multiqc.info) is a visualization tool that generates a single HTML report summarising all samples in your project. Most of the pipeline QC results are visualised in the report and further statistics are available in the report data directory. +### Cramino -Results generated by MultiQC collate pipeline QC from supported tools e.g. FastQC. The pipeline has special steps which also allow the software versions to be reported in the MultiQC output for future traceability. For more information about how to use MultiQC reports, see . +[cramino](https://github.com/wdecoster/cramino) is used to analyze both phased and unphased reads. -
    -Output files +| Path | Description | +| -------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `{outputdir}/qc/cramino/phased/{sample}/*.arrow` | Read length and quality in [Apache Arrow](https://arrow.apache.org/docs/format/Columnar.html) format | +| `{outputdir}/qc/cramino/phased/{sample}/*.txt` | Summary information in text format | +| `{outputdir}/qc/cramino/unphased/{sample}/*.arrow` | Read length and quality in [Apache Arrow](https://arrow.apache.org/docs/format/Columnar.html) format | +| `{outputdir}/qc/cramino/unphased/{sample}/*.txt` | Summary information in text format | -- `{outputdir}/multiqc/` - - `multiqc_report.html`: a standalone HTML file that can be viewed in your web browser. - - `multiqc_data/`: directory containing parsed statistics from the different tools used in the pipeline. - - `multiqc_plots/`: directory containing static images from the report in various formats. -
    +### Somalier -### Paraphase +[somalier](https://github.com/brentp/somalier) checks relatedness and sex. -[Paraphase](https://github.com/PacificBiosciences/paraphase) is used to call paralogous genes. For interpreting the output, see . +| Path | Description | +| ---------------------------------------------------------------- | ------------------------------------------- | +| `{outputdir}/predigree/{project}.ped` | PED file updated with somalier-inferred sex | +| `{outputdir}/qc/somalier/relate/{project}/{project}.html` | HTML report | +| `{outputdir}/qc/somalier/relate/{project}/{project}.pairs.tsv` | Information about sample pairs | +| `{outputdir}/qc/somalier/relate/{project}/{project}.samples.tsv` | Information about individual samples | -
    -Output files from Paraphase +## Variants -- `{outputdir}/paraphase/{sample}/` - - `*.bam`: BAM file with haplotypes grouped by HP and colored by YC - - `*.bai`: Index of the corresponding bam file. - - `*.json`: Output file summarizing haplotypes and variant calls - - `{sample}_paraphase_vcfs/`: - - `{sample}_{gene}_vcf`: VCF file per gene - - `{sample}_{gene}_vcf.tbi`: Index of the corresponding VCF file -
    +### CNVs -### Phasing +[HiFiCNV](https://github.com/PacificBiosciences/HiFiCNV) is used to call CNVs, producing copy number, depth, and MAF tracks for IGV. -[LongPhase](https://github.com/twolinin/longphase), [WhatsHap](https://whatshap.readthedocs.io/en/latest/) or [HiPhase](https://github.com/PacificBiosciences/HiPhase) are used to phase variants and haplotag reads. +| Path | Description | +| ------------------------------------------------- | ----------------------------------------- | +| `cnv_calling/hificnv/{sample}/*.copynum.bedgraph` | Copy number in bedgraph format | +| `cnv_calling/hificnv/{sample}/*.depth.bw` | Depth track in BigWig format | +| `cnv_calling/hificnv/{sample}/*.maf.bw` | Minor allele frequencies in BigWig format | +| `cnv_calling/hificnv/{sample}/*.vcf.gz` | VCF file containing CNV variants | +| `cnv_calling/hificnv/{sample}/*.vcf.gz.tbi` | Index of the corresponding VCF file | -
    -Output files from phasing +### Paralogous genes -- `{outputdir}/aligned_reads/{sample}/` - - `{sample}_haplotagged.bam`: BAM file with haplotags - - `{sample}_haplotagged.bam.bai`: Index of the corresponding bam file -- `{outputdir}/phased_variants/{sample}/` - - `*.vcf.gz`: VCF file with phased variants - - `*.vcf.gz.tbi`: Index of the corresponding VCF file -- `{outputdir}/qc/phasing_stats/{sample}/` - - `*.blocks.tsv`: File with phase blocks - - `*.stats.tsv`: File with phasing statistics -
    +[Paraphase](https://github.com/PacificBiosciences/paraphase) is used to call paralogous genes. -### Pipeline information +| Path | Description | +| ----------------------------------------------------------- | --------------------------------------- | +| `paraphase/{sample}/*.bam` | BAM file with haplotypes grouped by HP | +| `paraphase/{sample}/*.bai` | Index of the BAM file | +| `paraphase/{sample}/*.json` | Summary of haplotypes and variant calls | +| `paraphase/{sample}_paraphase_vcfs/{sample}_{gene}_vcf` | VCF file per gene | +| `paraphase/{sample}_paraphase_vcfs/{sample}_{gene}_vcf.tbi` | Index of the VCF file | -[Nextflow](https://www.nextflow.io/docs/latest/tracing.html) provides excellent functionality for generating various reports relevant to the running and execution of the pipeline. This will allow you to troubleshoot errors with the running of the pipeline, and also provide you with other information such as launch commands, run times and resource usage. +### Repeats -
    -Output files +[TRGT](https://github.com/PacificBiosciences/trgt) is used to call repeats: -- `pipeline_info/` - - Reports generated by Nextflow: `execution_report.html`, `execution_timeline.html`, `execution_trace.txt` and `pipeline_dag.dot`/`pipeline_dag.svg`. - - Reports generated by the pipeline: `pipeline_report.html`, `pipeline_report.txt` and `software_versions.yml`. The `pipeline_report*` files will only be present if the `--email` / `--email_on_fail` parameter's are used when running the pipeline. - - Reformatted samplesheet files used as input to the pipeline: `samplesheet.valid.csv`. - - Parameters used by the pipeline run: `params.json`. +| Path | Description | +| --------------------------------------------------------------------- | ----------------------------------------- | +| `{outputdir}/repeat_calling/trgt/multi_sample/{project}/*.vcf.gz` | Merged VCF file for all samples | +| `{outputdir}/repeat_calling/trgt/multi_sample/{project}/*.vcf.gz.tbi` | Index of the VCF file | +| `{outputdir}/repeat_calling/trgt/single_sample/{sample}/*.vcf.gz` | VCF file with called repeats for a sample | +| `{outputdir}/repeat_calling/trgt/single_sample/{sample}/*.vcf.gz.tbi` | Index of the VCF file | +| `{outputdir}/repeat_calling/trgt/single_sample/{sample}/*.bam` | BAM file with sorted spanning reads | +| `{outputdir}/repeat_calling/trgt/single_sample/{sample}/*.bai` | Index of the BAM file | -
    +[Stranger](https://github.com/Clinical-Genomics/stranger) is used to annotate them: -### QC - -[FastQC](http://www.bioinformatics.babraham.ac.uk/projects/fastqc/), [cramino](https://github.com/wdecoster/cramino), [mosdepth](https://github.com/brentp/mosdepth) and [somalier](https://github.com/brentp/somalier) are used for read QC. - -##### FastQC - -[FastQC](http://www.bioinformatics.babraham.ac.uk/projects/fastqc/) gives general quality metrics about your sequenced reads. It provides information about the quality score distribution across your reads, per base sequence content (%A/T/G/C), adapter contamination and overrepresented sequences. For further reading and documentation see the [FastQC help pages](http://www.bioinformatics.babraham.ac.uk/projects/fastqc/Help/). - -
    -Output files - -- `{outputdir}/qc/fastqc/{sample}/` - - `*_fastqc.html`: FastQC report containing quality metrics. - - `*_fastqc.zip`: Zip archive containing the FastQC report, tab-delimited data file and plot images. -
    - -##### Mosdepth - -[Mosdepth](https://github.com/brentp/mosdepth) is used to report quality control metrics such as coverage, and GC content from alignment files. - -
    -Output files from Mosdepth - -- `{outputdir}/qc/mosdepth/{sample}` - - `*.mosdepth.global.dist.txt`: This file contains a cumulative distribution indicating the proportion of total bases that were covered for at least a given coverage value across each chromosome and the whole genome - - `*.mosdepth.region.dist.txt`: This file contains a cumulative distribution indicating the proportion of total bases that were covered for at least a given coverage value across each region, is output if running the pipeline with a BED-file - - `*.mosdepth.summary.txt`: Mosdepth ummary file - - `*.regions.bed.gz`: Depth per region, is output if running the pipeline with a BED-file - - `*.regions.bed.gz.csi`: Index of regions.bed.gz -
    - -##### Cramino - -[cramino](https://github.com/wdecoster/cramino) is run on both phased and unphased reads. - -
    -Output files from Cramino - -- `{outputdir}/qc/cramino/phased/{sample}` - - `*.arrow`: Read length and quality in [Apache Arrow](https://arrow.apache.org/docs/format/Columnar.html) format - - `*.txt`: Summary information in text format -- `{outputdir}/qc/cramino/unphased/{sample}` - - `*.arrow`: Read length and quality in [Apache Arrow](https://arrow.apache.org/docs/format/Columnar.html) format - - `*.txt`: Summary information in text format -
    - -##### Somalier - -[somalier](https://github.com/brentp/somalier) is used to check relatedness and sex. - -
    -Output files from Somalier - -- `{outputdir}/predigree/{project}.ped`: A PED file with updated from somalier sex -- `{outputdir}/qc/somalier/relate/{project}/` - - `{project}.html`: HTML report - - `{project}.pairs.tsv`: Output information in sample pairs - - `{project}.samples.tsv`: Output information per sample -
    - -### Repeat calling - -[TRGT](https://github.com/PacificBiosciences/trgt) is used to call repeats. - -
    -Output files from TRGT - -- `{outputdir}/repeat_calling/trgt/multi_sample/{project}/` - - `*.vcf.gz`: Merged VCF for all samples - - `*.vcf.gz.tbi`: Index of the corresponding VCF file -- `{outputdir}/repeat_calling/trgt/single_sample/{sample}/` - - `*.vcf.gz`: VCF with called repeats - - `*.vcf.gz.tbi`: Index of the corresponding VCF file - - `*.bam`: BAM file with sorted spanning reads - - `*.bai`: Index of the corresponding bam file -
    - -### Repeat annotation - -[Stranger](https://github.com/Clinical-Genomics/stranger) is used to annotate repeats. - -
    -Output files from Stranger - -- `{outputdir}/repeat_annotation/stranger/{sample}` - - `*.vcf.gz`: Annotated VCF - - `*.vcf.gz.tbi`: Index of the corresponding VCF file -
    +| Path | Description | +| -------------------------------------------------------------- | ------------------------------- | +| `{outputdir}/repeat_annotation/stranger/{sample}/*.vcf.gz` | Annotated VCF file | +| `{outputdir}/repeat_annotation/stranger/{sample}/*.vcf.gz.tbi` | Index of the annotated VCF file | ### SNVs -#### Calling - -[DeepVariant](https://github.com/google/deepvariant) is used to call variants, [bcftools](https://samtools.github.io/bcftools/bcftools.html) and [GLnexus](https://github.com/dnanexus-rnd/GLnexus) are used to merge variants. - -
    -Output files from SNV calling - -> [!NOTE] -> Variants are only output without annotation and ranking if these subworkflows are turned off. - -- `{outputdir}/snvs/single_sample/{sample}/` - - `{sample}_snv.vcf.gz`: VCF with called variants with alternative genotypes from a certain sample - - `{sample}_snv.vcf.gz.tbi`: Index of the corresponding VCF file -- `{outputdir}/snvs/multi_sample/{project}/` - - `{project}_snv.vcf.gz`: VCF with called variants from all samples - - `{project}_snv.vcf.gz.tbi`: Index of the corresponding VCF file -- `{outputdir}/snvs/stats/single_sample/` - - `*.stats.txt`: Variant statistics -
    - -#### Annotation +[DeepVariant](https://github.com/google/deepvariant) is used to call variants, while [bcftools](https://samtools.github.io/bcftools/bcftools.html) and [GLnexus](https://github.com/dnanexus-rnd/GLnexus) are used for merging variants. -[echtvar](https://github.com/brentp/echtvar) and [VEP](https://www.ensembl.org/vep) are used to annotate SNVs. [CADD](https://cadd.gs.washington.edu/) is used to annotate INDELs with CADD scores. +!!!note -
    -Output files from SNV Annotation + Variants are only output without annotation and ranking if these subworkflows are turned off. -> [!NOTE] -> Variants are only output without ranking if that subworkflows are turned off. +| Path | Description | +| ------------------------------------------------------ | --------------------------------------------------------------------------- | +| `snvs/single_sample/{sample}/{sample}_snv.vcf.gz` | VCF file containing called variants with alternative genotypes for a sample | +| `snvs/single_sample/{sample}/{sample}_snv.vcf.gz.tbi` | Index of the corresponding VCF file | +| `snvs/multi_sample/{project}/{project}_snv.vcf.gz` | VCF file containing called variants for all samples | +| `snvs/multi_sample/{project}/{project}_snv.vcf.gz.tbi` | Index of the corresponding VCF file | +| `snvs/stats/single_sample/*.stats.txt` | Variant statistics | -- `{outputdir}/databases/echtvar/encode/{project}/` - - `*.zip`: Database with AF and AC for all samples run -- `{outputdir}/snvs/single_sample/{sample}/` - - `{sample}_snv_annotated.vcf.gz`: VCF with annotated variants with alternative genotypes from a certain sample - - `{sample}_snv_annotated.vcf.gz.tbi`: Index of the corresponding VCF file -- `{outputdir}/snvs/multi_sample/{project}/` - - `{project}_snv_annotated.vcf.gz`: VCF with annotated variants from all samples - - `{project}_snv_annotated.vcf.gz.tbi`: Index of the corresponding VCF file -
    +[echtvar](https://github.com/brentp/echtvar) and [VEP](https://www.ensembl.org/vep) are used for annotating SNVs, while [CADD](https://cadd.gs.washington.edu/) is used to annotate INDELs with CADD scores. -#### Ranking +!!!note -[GENMOD](https://github.com/Clinical-Genomics/genmod) is a simple to use command line tool for annotating and analyzing genomic variations in the VCF file format. GENMOD can annotate genetic patterns of inheritance in vcf files with single or multiple families of arbitrary size. Each variant will be assigned a predicted pathogenicity score. The score will be given both as a raw score and a normalized score with values between 0 and 1. The tags in the INFO field are `RankScore` and `RankScoreNormalized`. The score can be configured to fit your annotations and preferences by modifying the score config file. + Variants are only output without ranking if that subworkflows are turned off. -
    -Output files from SNV ranking +| Path | Description | +| ---------------------------------------------------------------- | ------------------------------------------------------------------------------ | +| `databases/echtvar/encode/{project}/*.zip` | Database with allele frequency (AF) and allele count (AC) for all samples | +| `snvs/single_sample/{sample}/{sample}_snv_annotated.vcf.gz` | VCF file containing annotated variants with alternative genotypes for a sample | +| `snvs/single_sample/{sample}/{sample}_snv_annotated.vcf.gz.tbi` | Index of the annotated VCF file | +| `snvs/multi_sample/{project}/{project}_snv_annotated.vcf.gz` | VCF file containing annotated variants for all samples | +| `snvs/multi_sample/{project}/{project}_snv_annotated.vcf.gz.tbi` | Index of the annotated VCF file | -- `{outputdir}/snvs/single_sample/{sample}/` - - `{sample}_snv_annotated_ranked.vcf.gz`: VCF with annotated and ranked variants with alternative genotypes from a certain sample - - `{sample}_snv_annotated_ranked.vcf.gz.tbi`: Index of the corresponding VCF file -- `{outputdir}/snvs/multi_sample/{project}/` - - `{project}_snv_annotated_ranked.vcf.gz`: VCF with annotated and ranked variants from all samples - - `{project}_snv_annotated_ranked.vcf.gz.tbi`: Index of the corresponding VCF file -
    +[GENMOD](https://github.com/Clinical-Genomics/genmod) is used to rank the annotated SNVs and INDELs. -### SV Calling +| Path | Description | +| ----------------------------------------------------------------------- | ----------------------------------------------------------- | +| `snvs/single_sample/{sample}/{sample}_snv_annotated_ranked.vcf.gz` | VCF file with annotated and ranked variants for a sample | +| `snvs/single_sample/{sample}/{sample}_snv_annotated_ranked.vcf.gz.tbi` | Index of the ranked VCF file | +| `snvs/multi_sample/{project}/{project}_snv_annotated_ranked.vcf.gz` | VCF file with annotated and ranked variants for all samples | +| `snvs/multi_sample/{project}/{project}_snv_annotated_ranked.vcf.gz.tbi` | Index of the ranked VCF file | -[Severus](https://github.com/KolmogorovLab/Severus) or [Sniffles](https://github.com/fritzsedlazeck/Sniffles) is used to call structural variants, after wich [SVDB](https://github.com/J35P312/SVDB) is used to merge variants, within and between samples. +### SVs -
    -Output files from SV Calling +[Severus](https://github.com/KolmogorovLab/Severus) or [Sniffles](https://github.com/fritzsedlazeck/Sniffles) is used to call structural variants, and [SVDB](https://github.com/J35P312/SVDB) is used to merge variants within and between samples. -- `{outputdir}/svs/multi_sample/{project}` - - `{project}_svs.vcf.gz`: VCF file with SVDB merged variants - - `{project}_svs.vcf.gz.tbi`: Index of the corresponding VCF file -- `{outputdir}/svs/single_sample/{sample}` - - `*.vcf.gz`: VCF with SVDB merged variants, divided per sample - - `*.vcf.gz.tbi`: Index of the corresponding VCF file -
    +!!!note -### SV Annotation + Variants are only output without annotation if that subworkflow is turned off. -[SVDB](https://github.com/J35P312/SVDB) and [VEP](https://www.ensembl.org/vep) are used to annotate SVs. +| Path | Description | +| ----------------------------------------------------- | ------------------------------------------------------------ | +| `svs/multi_sample/{project}/{project}_svs.vcf.gz` | VCF file with merged structural variants for all samples | +| `svs/multi_sample/{project}/{project}_svs.vcf.gz.tbi` | Index of the merged VCF file | +| `svs/single_sample/{sample}/*.vcf.gz` | VCF file with merged structural variants for a single sample | +| `svs/single_sample/{sample}/*.vcf.gz.tbi` | Index of the VCF file | -
    -Output files from SV Annotation +[SVDB](https://github.com/J35P312/SVDB) and [VEP](https://www.ensembl.org/vep) are used to annotate structural variants. -- `{outputdir}/svs/multi_sample/{project}` - - `{project}_svs_annotated.vcf.gz`: VCF file with annotated merged variants - - `{project}_svs_annotated.vcf.gz.tbi`: Index of the corresponding VCF file -- `{outputdir}/svs/single_sample/{sample}` - - `*.vcf_annotated.gz`: VCF with annotated variants per sample - - `*.vcf_annotated.gz.tbi`: Index of the corresponding VCF file -
    +| Path | Description | +| --------------------------------------------------------------- | ------------------------------------------------------------------ | +| `svs/multi_sample/{project}/{project}_svs_annotated.vcf.gz` | VCF file with annotated merged structural variants for all samples | +| `svs/multi_sample/{project}/{project}_svs_annotated.vcf.gz.tbi` | Index of the annotated VCF file | +| `svs/single_sample/{sample}/*.vcf_annotated.gz` | VCF file with annotated structural variants for a single sample | +| `svs/single_sample/{sample}/*.vcf_annotated.gz.tbi` | Index of the annotated VCF file | diff --git a/docs/usage.md b/docs/usage.md index dadf1238..6eea24c9 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -1,14 +1,13 @@ # genomic-medicine-sweden/nallo: Usage -## Introduction - -genomic-medicine-sweden/nallo is a bioinformatics analysis pipeline to analyse long-read data. - ## Prerequisites 1. Install Nextflow (>=24.04.2) using the instructions [here.](https://nextflow.io/docs/latest/getstarted.html#installation) 2. Install one of the following technologies for full pipeline reproducibility: Docker, Singularity, Podman, Shifter or Charliecloud. - > Almost all nf-core pipelines give you the option to use conda as well. However, some tools used in genomic-medicine-sweden/nallo do not have a conda package so we do not support conda at the moment. + +!!!warning + + Almost all nf-core pipelines give you the option to use conda as well. However, some tools used in genomic-medicine-sweden/nallo do not have a conda package so we do not support conda at the moment. ## Getting started @@ -22,8 +21,10 @@ nextflow run genomic-medicine-sweden/nallo \ --outdir ``` -> Check [nf-core/configs](https://github.com/nf-core/configs/tree/master/conf) to see if a custom config file to run nf-core pipelines already exists for your institute. If so, you can simply use `-profile test,` in your command. This enables the appropriate package manager and sets the appropriate execution settings for your machine. -> NB: The order of profiles is important! They are loaded in sequence, so later profiles can overwrite earlier profiles. +!!!note + + Check [nf-core/configs](https://github.com/nf-core/configs/tree/master/conf) to see if a custom config file to run nf-core pipelines already exists for your institute. If so, you can simply use `-profile test,` in your command. This enables the appropriate package manager and sets the appropriate execution settings for your machine. + NB: The order of profiles is important! They are loaded in sequence, so later profiles can overwrite earlier profiles. Running the command creates the following files in your working directory @@ -34,8 +35,9 @@ work # Directory containing the Nextflow working files # Other Nextflow hidden files, like history of pipeline logs. ``` -> [!NOTE] -> The default cpu and memory configurations used in nallo are written keeping the test profile (and dataset, which is tiny) in mind. You should override these values in configs to get it to work on larger datasets. Check the section `custom-configuration` below to know more about how to configure resources for your platform. +!!!note + + The default cpu and memory configurations used in nallo are written keeping the test profile (and dataset, which is tiny) in mind. You should override these values in configs to get it to work on larger datasets. Check the section `custom-configuration` below to know more about how to configure resources for your platform. ### Updating the pipeline @@ -78,21 +80,24 @@ testrun,HG003,/path/to/HG003.bam,FAM,0,0,2,1 An [example samplesheet](../assets/samplesheet.csv) has been provided with the pipeline. -## Preset +## Presets + +This pipeline comes with three different presets that should be set with the `--preset` parameter: `revio` (default), `pacbio` or `ONT_R10`. -This pipeline comes with three different presets that should be set with the `--preset` parameter +!!!note "Effect of preset on subworkflows" -- `revio` (default) -- `pacbio` -- `ONT_R10` + The selected preset will turn off subworkflows: -`--skip_assembly_wf` and `--skip_repeat_wf` will be set to true for `ONT_R10` and `--skip_methylation_wf` will be set to true for `pacbio`, meaning these subworkflows are not run. + - `--skip_assembly_wf` and `--skip_repeat_wf` will be set to `true` for `ONT_R10` + - `--skip_methylation_wf` will be set to `true` for `pacbio` ## Subworkflows As indicated above, this pipeline is divided into multiple subworkflows, each with its own input requirements and outputs. By default, all subworklows are active, and thus all mandatory input files are required. -The only parameter mandatory for all subworkflows is the `--input` and `--outdir` parameters, all other parameters are determined by the active subworkflows. If you would run `nextflow run genomic-medicine-sweden/nallo -profile docker --outdir results --input samplesheet.csv` +The only mandatory parameters for all subworkflows is the `--input` and `--outdir` parameters, all other parameters are determined by the active subworkflows. + +For example, if you would run `nextflow run genomic-medicine-sweden/nallo -profile docker --outdir results --input samplesheet.csv`, the pipeline will try to guide you through which files are required: ``` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -104,9 +109,11 @@ The only parameter mandatory for all subworkflows is the `--input` and `--outdir ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ``` -The pipeline will try to guide you through which files are required, but a thorough description is provided below. +A thorough description of required files are provided below. + +Additionally, if you want to skip a subworkflow, you will need to explicitly state to skip all subworkflows that rely on it. -Additionally, if you want to skip a subworkflow, you will need to explicitly state to skip all subworklow that relies on it. For example, `nextflow run genomic-medicine-sweden/nallo -profile docker --outdir results --input samplesheet.csv --skip_mapping_wf` will tell you +For example, `nextflow run genomic-medicine-sweden/nallo -profile docker --outdir results --input samplesheet.csv --skip_mapping_wf` will tell you ``` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -121,7 +128,7 @@ Because almost all other subworkflows relies on the mapping subworkflow. As descibed above, the files required depend on the active subworkflows. All parameters are listed [here](parameters.md), but the most useful parameters needed to run the pipeline described in more detail below. -### Mapping (`--skip_mapping_wf`) +### Mapping The majority of subworkflows depend on the mapping (alignment) subworkflow which requires `--fasta` and `--somalier_sites`. @@ -130,11 +137,15 @@ The majority of subworkflows depend on the mapping (alignment) subworkflow which | `fasta` | Reference genome, either gzipped or uncompressed FASTA (e.g. [GCA_000001405.15_GRCh38_no_alt_analysis_set.fna.gz](https://lh3.github.io/2017/11/13/which-human-reference-genome-to-use)) | | `somalier_sites` | A VCF of known polymorphic sites (e.g. [sites.hg38.vcg.gz](https://github.com/brentp/somalier/files/3412456/sites.hg38.vcf.gz)), from which sex will be inferred if possible. | -### QC (`--skip_qc`) +Turned off with `--skip_mapping_wf`. + +### QC This subworkflow depends on the mapping subworkflow, but requires no additional files. -### Assembly (`--skip_assembly_wf`) +Turned off with `--skip_qc`. + +### Assembly This subworkflow contains both genome assembly and assembly variant calling. The assemblyt variant calling needs the sex of samples and for samples with unknown sex this is inferred from aligned reads, therefore it depends on the mapping subworkflow. @@ -144,17 +155,22 @@ It requires a BED file with PAR regions. | ------------- | ---------------------------------------------------------------------------------------------------------------------------------- | | `par_regions` | A BED file with PAR regions (e.g. [GRCh38_PAR.bed](https://storage.googleapis.com/deepvariant/case-study-testdata/GRCh38_PAR.bed)) | -> [!NOTE] -> Make sure chrY PAR is hard masked in reference genome you are using. +!!!warning + + Make sure chrY PAR is hard masked in reference genome you are using. + +Turned off with `--skip_assembly_wf`. -### Call paralogs (`--skip_call_paralogs`) +### Call paralogs This subworkflow depends on the mapping subworkflow, but requires no additional files. -> [!NOTE] -> Only GRCh38 is supported. +!!warning +Only GRCh38 is supported. -### Short variant calling (`--skip_short_variant_calling`) +Turned off with `--skip_call_paralogs`. + +### Short variant calling This subworkflow depends on the mapping subworkflow, and required the same PAR regions file as the assembly workflow. @@ -162,7 +178,9 @@ This subworkflow depends on the mapping subworkflow, and required the same PAR r | ------------- | --------------------------------------------------------------------------------------------------------------------------------- | | `par_regions` | A BED file with PAR regions (e.g. [GRCh38_PAR.bed](ttps://storage.googleapis.com/deepvariant/case-study-testdata/GRCh38_PAR.bed)) | -### CNV calling (`--skip_cnv_calling`) +Turned off with `--skip_short_variant_calling`. + +### CNV calling This subworkflow depends on the mapping and short variant calling subworkflows, and requires the following additional files: @@ -172,15 +190,21 @@ This subworkflow depends on the mapping and short variant calling subworkflows, | `hificnv_xx` | expected XX copy number regions for your reference genome (e.g. [expected_cn.hg38.XX.bed](https://github.com/PacificBiosciences/HiFiCNV/raw/main/data/expected_cn/expected_cn.hg38.XX.bed)) | | `hificnv_exclude` | BED file specifying regions to exclude (e.g. [cnv.excluded_regions.hg38.bed.gz](https://github.com/PacificBiosciences/HiFiCNV/raw/main/data/excluded_regions/cnv.excluded_regions.hg38.bed.gz)) | -### Phasing (`--skip_phasing_wf`) +Turned off with `--skip_cnv_calling`. + +### Phasing This subworkflow phases variants and haplotags aligned BAM files, and such relies on the mapping and short variant calling subworkflows, but requires no additional files. -### Methylation (`--skip_methylation_wf`) +Turned off with `--skip_phasing_wf`. + +### Methylation This subworkflow relies on mapping, short variant calling and phasing subworkflows, but requires no additional files. -### Repeat calling (`--skip_repeat_calling`) +Turned off with `--skip_methylation_wf`. + +### Repeat calling This subworkflow requires haplotagged BAM files, and such relies on the mapping, short variant calling and phasing subworkflows, and requires the following additional files: @@ -188,7 +212,9 @@ This subworkflow requires haplotagged BAM files, and such relies on the mapping, | -------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `trgt_repeats` | a BED file with tandem repeats matching your reference genome (e.g. [pathogenic_repeats.hg38.bed](https://github.com/PacificBiosciences/trgt/raw/main/repeats/pathogenic_repeats.hg38.bed)>)) | -### Repeat annotation (`--skip_repeat_annotation`) +Turned off with `--skip_repeat_calling`. + +### Repeat annotation This subworkflow relies on the mapping, short variant calling, phasing and repeat calling subworkflows, and requires the following additional files: @@ -196,7 +222,9 @@ This subworkflow relies on the mapping, short variant calling, phasing and repea | ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `variant_catalog` | a variant catalog matching your reference (e.g. [variant_catalog_grch38.json](https://github.com/Clinical-Genomics/stranger/raw/main/stranger/resources/variant_catalog_grch38.json)) | -### SNV annotation (`--skip_snv_annotation`) +Turned off with `--skip_repeat_annotation`. + +### SNV annotation This subworkflow relies on the mapping and short variant calling, and requires the following additional files: @@ -228,21 +256,36 @@ gnomad,/path/to/gnomad.v3.1.2.echtvar.popmax.v2.zip cadd,/path/to/cadd.v1.6.hg38.zip ``` -> [!WARNING] -> Generating an echtvar database from a VCF-file is a fairly straightforward process described on the [echtvar GitHub](https://github.com/brentp/echtvar). However, the pre-made `gnomad.v3.1.2.echtvar.v2.zip` provided by them results in malformed INFO lines that are not compatible with genmod (run in the subsequent ranking subworkflow). -> -> For a very small test database that only overlaps the coordinates of the pipeline test data set, you could use [`cadd.v1.6.hg38.test_data.zip`](https://github.com/genomic-medicine-sweden/test-datasets/raw/refs/heads/nallo/reference/cadd.v1.6.hg38.test_data.zip) to get started. +!!!warning + + Generating an echtvar database from a VCF-file is a fairly straightforward process described on the [echtvar GitHub](https://github.com/brentp/echtvar). However, the pre-made `gnomad.v3.1.2.echtvar.v2.zip` provided by them results in malformed INFO lines that are not compatible with genmod (run in the subsequent ranking subworkflow). + + For a very small test database that only overlaps the coordinates of the pipeline test data set, you could use [`cadd.v1.6.hg38.test_data.zip`](https://github.com/genomic-medicine-sweden/test-datasets/raw/refs/heads/nallo/reference/cadd.v1.6.hg38.test_data.zip) to get started. -> [!NOTE] -> Optionally, to calcuate CADD scores for small indels, supply a path to a folder containing cadd annotations with `--cadd_resources` and prescored indels with `--cadd_prescored`. Equivalent of the `data/annotations/` and `data/prescored/` folders described [here](https://github.com/kircherlab/CADD-scripts/#manual-installation). CADD scores for SNVs can be annotated through echvtvar and `--snp_db`. +!!!tip -### SV annotation (`--skip_sv_annotation`) + Optionally, to calcuate CADD scores for small indels, supply a path to a folder containing cadd annotations with `--cadd_resources` and prescored indels with `--cadd_prescored`. Equivalent of the `data/annotations/` and `data/prescored/` folders described [here](https://github.com/kircherlab/CADD-scripts/#manual-installation). CADD scores for SNVs can be annotated through echvtvar and `--snp_db`. + +Turned off with `--skip_snv_annotation`. + +### Rank SNVs and INDELs + +This subworkflow ranks SNVs, and relies on the mapping, short variant calling and SNV annotation subworkflows, and requires the following additional files: + +| Parameter | Description | +| -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `score_config_snv` |  Used by GENMOD when ranking variants. Sample file [here](https://github.com/nf-core/test-datasets/blob/raredisease/reference/rank_model_snv.ini). | +| `reduced_penetrance` | A list of loci that show [reduced penetrance](https://medlineplus.gov/genetics/understanding/inheritance/penetranceexpressivity/) in people. Sample file [here](https://github.com/nf-core/test-datasets/blob/raredisease/reference/reduced_penetrance.tsv) | + +`--skip_rank_variants`. + +### SV annotation This subworkflow relies on the mapping subworkflow, and requires the following additional files: -| Parameter | Description | -| ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `svdb_dbs` 1 | Csv file with databases used for structural variant annotation in vcf format.
    HelpPath to comma-separated file containing information about the databases used for structural variant annotation.
    | +| Parameter | Description | +| ----------------------- | ----------------------------------------------------------------------------- | +| `svdb_dbs` 1 | Csv file with databases used for structural variant annotation in vcf format. | 1 Example file for input with `--svdb_dbs`: @@ -253,22 +296,15 @@ https://github.com/genomic-medicine-sweden/test-datasets/raw/b9ff54b59cdd39df5b6 These databases could for example come from [CoLoRSdb](https://zenodo.org/records/13145123). -### Rank variants (`--skip_rank_variants`) - -This subworkflow ranks SNVs, and relies on the mapping, short variant calling and SNV annotation subworkflows, and requires the following additional files: - -| Parameter | Description | -| -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `score_config_snv` |  Used by GENMOD when ranking variants. Sample file [here](https://github.com/nf-core/test-datasets/blob/raredisease/reference/rank_model_snv.ini). | -| `reduced_penetrance` | A list of loci that show [reduced penetrance](https://medlineplus.gov/genetics/understanding/inheritance/penetranceexpressivity/) in people. Sample file [here](https://github.com/nf-core/test-datasets/blob/raredisease/reference/reduced_penetrance.tsv) | +Turned off with `--skip_sv_annotation`. -### Other highlighted parameters +## Other highlighted parameters - Limit SNV calling to regions in BED file (`--bed`). - By default SNV-calling is split into 13 parallel processes, this speeds up the variant calling significantly. Limit this by setting `--parallel_snv` to a different number. - By default the pipeline does not perform parallel alignment, but this can be changed by setting `--parallel_alignments` to split the alignment into multiple processes. This comes with some additional overhead, but speeds up the alignment significantly. -### Reproducibility +## Reproducibility It is a good idea to specify a pipeline version when running the pipeline on your data. This ensures that a specific version of the pipeline code and software are used when you run your pipeline. If you keep using the same tag, you'll be running the same version of the pipeline, even if there have been changes to the code since. @@ -278,13 +314,15 @@ This version number will be logged in reports when you run the pipeline, so that To further assist in reproducbility, you can use share and re-use [parameter files](#running-the-pipeline) to repeat pipeline runs with the same settings without having to write out a command with every single parameter. -> [!TIP] -> If you wish to share such profile (such as upload as supplementary material for academic publications), make sure to NOT include cluster specific paths to files, nor institutional specific profiles. +!!!tip + + If you wish to share such profile (such as upload as supplementary material for academic publications), make sure to NOT include cluster specific paths to files, nor institutional specific profiles. ## Core Nextflow arguments -> [!NOTE] -> These options are part of Nextflow and use a _single_ hyphen (pipeline parameters use a double-hyphen). +!!!note + + These options are part of Nextflow and use a _single_ hyphen (pipeline parameters use a double-hyphen). ### `-profile` @@ -377,21 +415,31 @@ NXF_OPTS='-Xms1g -Xmx4g' ## Running the pipeline without internet access -The pipeline and container images can be downloaded using [nf-core tools](https://nf-co.re/docs/usage/offline). For running offline, you of course have to make all the reference data available locally, and specify `--fasta`, etc., see [above](#reference-files-and-parameters). +### Download pipeline and containers -Contrary to the paragraph about [Nextflow](https://nf-co.re/docs/usage/offline#nextflow) on the page linked above, it is not possible to use the "-all" packaged version of Nextflow for this pipeline. The online version of Nextflow is necessary to support the necessary nextflow plugins. Download instead the file called just `nextflow`. Nextflow will download its dependencies when it is run. Additionally, you need to download the nf-validation plugin explicitly: +The pipeline and container images can be downloaded using `nf-core download`, e.g.: +```bash +nf-core download genomic-medicine-sweden/nallo -r 0.3.2 ``` -./nextflow plugin install nf-validation -``` -Now you can transfer the `nextflow` binary as well as its directory `$HOME/.nextflow` to the system without Internet access, and use it there. It is necessary to use an explicit version of `nf-validation` offline, or Nextflow will check for the most recent version online. Find the version of nf-validation you downloaded in `$HOME/.nextflow/plugins`, then specify this version for `nf-validation` in your configuration file: +### Download references + +When running offline, you will have to make all the reference data available locally. The test profile will not be able to fetch data automatically. + +### Download plugins + +[This](https://nf-co.re/docs/usage/offline#nextflow) section from the nf-core docs should be followed to download and transfer nextflow plugins from a computer connected to the internet to the offline environment. + +It is necessary to use an explicit version of `nf-validation` offline, or Nextflow will check for the most recent version online. + +Find the version of nf-validation you downloaded in `$HOME/.nextflow/plugins`, then specify this version for `nf-validation` in your configuration file: ``` plugins { // Set the plugin version explicitly, otherwise nextflow will look for the newest version online. - id 'nf-validation@1.1.3' + id 'nf-schema@2.1.1' } ``` -This should go in your Nextflow confgiguration file, specified with `-c ` when running the pipeline. +This should go in your Nextflow configuration file, specified with `-c ` when running the pipeline. From 49fa8e7ce48a81f8221272a2bbec9f042029c3b7 Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Tue, 22 Oct 2024 09:49:18 +0200 Subject: [PATCH 040/106] Update SVDB and fix CALL_SVS tests (#434) --- CHANGELOG.md | 1 + modules.json | 2 +- modules/nf-core/svdb/merge/main.nf | 35 ++- modules/nf-core/svdb/merge/meta.yml | 16 +- modules/nf-core/svdb/merge/tests/main.nf.test | 291 +++++++++++++++++- .../svdb/merge/tests/main.nf.test.snap | 194 +++++++++++- .../nf-core/svdb/merge/tests/nextflow.config | 5 + subworkflows/local/call_svs/main.nf | 6 +- 8 files changed, 514 insertions(+), 36 deletions(-) create mode 100644 modules/nf-core/svdb/merge/tests/nextflow.config diff --git a/CHANGELOG.md b/CHANGELOG.md index 6be5da28..a9ecb128 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -57,6 +57,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#428](https://github.com/genomic-medicine-sweden/nallo/pull/428) - Changed from using bcftools to SVDB for SV merging - [#431](https://github.com/genomic-medicine-sweden/nallo/pull/431) - Changed `CITATIONS.md` to `docs/CITATIONS.md`, - [#433](https://github.com/genomic-medicine-sweden/nallo/pull/433) - Updated docs and README. +- [#434](https://github.com/genomic-medicine-sweden/nallo/pull/434) - Updated the SVDB merge module to fix unstable CALL_SVS tests ### `Removed` diff --git a/modules.json b/modules.json index 5fc3c89c..a949fdda 100644 --- a/modules.json +++ b/modules.json @@ -246,7 +246,7 @@ }, "svdb/merge": { "branch": "master", - "git_sha": "847683c1bb3a94d846e18916f14c2bc60a447041", + "git_sha": "b80931c5be241910c62795bbf70534df18b3905f", "installed_by": ["modules"] }, "svdb/query": { diff --git a/modules/nf-core/svdb/merge/main.nf b/modules/nf-core/svdb/merge/main.nf index afc34bb4..d28f2a97 100644 --- a/modules/nf-core/svdb/merge/main.nf +++ b/modules/nf-core/svdb/merge/main.nf @@ -8,11 +8,12 @@ process SVDB_MERGE { input: tuple val(meta), path(vcfs) - val (priority) + val(priority) + val(sort_inputs) output: tuple val(meta), path("*.vcf.gz"), emit: vcf - path "versions.yml" , emit: versions + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when @@ -20,15 +21,37 @@ process SVDB_MERGE { script: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" - def input = "${vcfs.join(" ")}" - def prio = "" + + // Ensure priority list matches the number of VCFs if priority is provided + if (priority && vcfs.collect().size() != priority.collect().size()) { + error "If priority is used, one tag per VCF is needed" + } + + if (sort_inputs && vcfs.collect().size() > 1) { + if (priority) { + // make vcf-prioprity pairs and sort on VCF name, so priority is also sorted the same + def pairs = vcfs.indices.collect { [vcfs[it], priority[it]] } + pairs = pairs.sort { a, b -> a[0].name <=> b[0].name } + vcfs = pairs.collect { it[0] } + priority = pairs.collect { it[1] } + } else { + // if there's no priority input just sort the vcfs by name + vcfs = vcfs.sort { it.name } + } + } + + // If there's only one input VCF the code above is not executed, and that VCF becomes the input + input = vcfs + + def prio = "" if(priority) { prio = "--priority ${priority.join(',')}" input = "" - for (int index = 0; index < vcfs.size(); index++) { - input += " ${vcfs[index]}:${priority[index]}" + for (int index = 0; index < vcfs.collect().size(); index++) { + input += "${vcfs[index]}:${priority[index]} " } } + """ svdb \\ --merge \\ diff --git a/modules/nf-core/svdb/merge/meta.yml b/modules/nf-core/svdb/merge/meta.yml index 7dc7c675..d6cc1758 100644 --- a/modules/nf-core/svdb/merge/meta.yml +++ b/modules/nf-core/svdb/merge/meta.yml @@ -19,12 +19,22 @@ input: e.g. [ id:'test' ] - vcfs: type: list - description: Two or more VCF files. Order of files should correspond to the - order of tags used for priority. + description: | + One or more VCF files. The order and number of files should correspond to + the order and number of tags in the `priority` input channel. pattern: "*.{vcf,vcf.gz}" - - priority: type: list - description: prioritise the input vcf files according to this list, e.g ['tiddit','cnvnator'] + description: | + Prioritize the input VCF files according to this list, + e.g ['tiddit','cnvnator']. The order and number of tags should correspond to + the order and number of VCFs in the `vcfs` input channel. + - - sort_inputs: + type: boolean + description: | + Should the input files be sorted by name. The priority tag will be sorted + together with it's corresponding VCF file. + output: - vcf: - meta: diff --git a/modules/nf-core/svdb/merge/tests/main.nf.test b/modules/nf-core/svdb/merge/tests/main.nf.test index b0743a69..0dddffa3 100644 --- a/modules/nf-core/svdb/merge/tests/main.nf.test +++ b/modules/nf-core/svdb/merge/tests/main.nf.test @@ -2,23 +2,86 @@ nextflow_process { name "Test Process SVDB_MERGE" script "modules/nf-core/svdb/merge/main.nf" + config "./nextflow.config" process "SVDB_MERGE" tag "modules" tag "modules_nfcore" tag "svdb" tag "svdb/merge" - test("test_svdb_merge") { + test("1 sample, [], []") { when { process { """ input[0] = Channel.of([ [ id:'test' ], // meta map - [file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf', checkIfExists: true) ] + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true) + ] ]) - input[1] = [ 'tiddit', 'cnvnator'] + input[1] = [] + input[2] = [] + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert path(process.out.vcf.get(0).get(1)).linesGzip[2].contains("--vcf test.vcf") }, // SVDB command line + { assert snapshot( + path(process.out.vcf.get(0).get(1)).vcf.summary, + path(process.out.vcf.get(0).get(1)).vcf.variantsMD5, + process.out.versions + ).match() } + ) + } + } + + test("1 sample, [], true") { + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true) + ] + ]) + input[1] = [] + input[2] = [] + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert path(process.out.vcf.get(0).get(1)).linesGzip[2].contains("--vcf test.vcf") }, // SVDB command line + { assert snapshot( + path(process.out.vcf.get(0).get(1)).vcf.summary, + path(process.out.vcf.get(0).get(1)).vcf.variantsMD5, + process.out.versions + ).match() } + ) + } + } + + test("1 sample, ['tiddit'], []") { + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true) + ] + ]) + input[1] = ['tiddit'] + input[2] = [] """ } } @@ -26,23 +89,122 @@ nextflow_process { then { assertAll ( { assert process.success }, - { assert path(process.out.vcf.get(0).get(1)).linesGzip.contains("##fileformat=VCFv4.1") } + { assert path(process.out.vcf.get(0).get(1)).linesGzip[2].contains("--vcf test.vcf:tiddit") }, // SVDB command line + { assert snapshot( + path(process.out.vcf.get(0).get(1)).vcf.summary, + path(process.out.vcf.get(0).get(1)).vcf.variantsMD5, + process.out.versions + ).match() } ) } + } + + test("1 sample, ['tiddit'], true") { + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true) + ] + ]) + input[1] = ['tiddit'] + input[2] = true + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert path(process.out.vcf.get(0).get(1)).linesGzip[2].contains("--vcf test.vcf:tiddit") }, // SVDB command line + { assert snapshot( + path(process.out.vcf.get(0).get(1)).vcf.summary, + path(process.out.vcf.get(0).get(1)).vcf.variantsMD5, + process.out.versions + ).match() } + ) + } + } + test("2 samples, [], []") { + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true) + ] + ]) + input[1] = [] + input[2] = [] + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert path(process.out.vcf.get(0).get(1)).linesGzip[2].contains("--vcf test2.vcf test.vcf") }, // SVDB command line + { assert snapshot( + path(process.out.vcf.get(0).get(1)).vcf.summary, + path(process.out.vcf.get(0).get(1)).vcf.variantsMD5, + process.out.versions + ).match() } + ) + } } - test("test_svdb_merge_noprio") { + test("2 samples, [], true") { when { process { """ input[0] = Channel.of([ [ id:'test' ], // meta map - [file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf', checkIfExists: true) ] + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true) + ] ]) input[1] = [] + input[2] = true + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert path(process.out.vcf.get(0).get(1)).linesGzip[2].contains("--vcf test.vcf test2.vcf") }, // SVDB command line + { assert snapshot( + path(process.out.vcf.get(0).get(1)).vcf.summary, + path(process.out.vcf.get(0).get(1)).vcf.variantsMD5, + process.out.versions + ).match() } + ) + } + } + + test("2 samples, ['tiddit', 'cnvnator'], []") { + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true) + ] + ]) + input[1] = ['tiddit', 'cnvnator'] + input[2] = [] """ } } @@ -50,13 +212,48 @@ nextflow_process { then { assertAll ( { assert process.success }, - { assert path(process.out.vcf.get(0).get(1)).linesGzip.contains("##fileformat=VCFv4.1") } + { assert path(process.out.vcf.get(0).get(1)).linesGzip[2].contains("--vcf test2.vcf:tiddit test.vcf:cnvnator") }, // SVDB command line + { assert snapshot( + path(process.out.vcf.get(0).get(1)).vcf.summary, + path(process.out.vcf.get(0).get(1)).vcf.variantsMD5, + process.out.versions + ).match() } ) } + } + + test("2 samples, ['tiddit', 'cnvnator'], true") { + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true) + ] + ]) + input[1] = ['tiddit', 'cnvnator'] + input[2] = true + """ + } + } + then { + assertAll ( + { assert process.success }, + { assert path(process.out.vcf.get(0).get(1)).linesGzip[2].contains("--vcf test.vcf:cnvnator test2.vcf:tiddit") }, // SVDB command line + { assert snapshot( + path(process.out.vcf.get(0).get(1)).vcf.summary, + path(process.out.vcf.get(0).get(1)).vcf.variantsMD5, + process.out.versions + ).match() } + ) + } } - test("test_svdb_merge - stub") { + test("2 samples, [], [] - stub") { options "-stub" @@ -65,10 +262,13 @@ nextflow_process { """ input[0] = Channel.of([ [ id:'test' ], // meta map - [file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf', checkIfExists: true) ] + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true) + ] ]) - input[1] = [ 'tiddit', 'cnvnator'] + input[1] = [] + input[2] = [] """ } } @@ -79,10 +279,9 @@ nextflow_process { { assert snapshot(process.out).match() } ) } - } - test("test_svdb_merge_noprio - stub") { + test("2 samples, [], true - stub") { options "-stub" @@ -91,10 +290,41 @@ nextflow_process { """ input[0] = Channel.of([ [ id:'test' ], // meta map - [file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf', checkIfExists: true) ] + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true) + ] ]) input[1] = [] + input[2] = true + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("2 samples, ['tiddit', 'cnvnator'], [] - stub") { + + options "-stub" + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true) + ] + ]) + input[1] = ['tiddit', 'cnvnator'] + input[2] = [] """ } } @@ -105,7 +335,34 @@ nextflow_process { { assert snapshot(process.out).match() } ) } + } + + test("2 samples, ['tiddit', 'cnvnator'], true - stub") { + + options "-stub" + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true) + ] + ]) + input[1] = ['tiddit', 'cnvnator'] + input[2] = true + """ + } + } + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } } } diff --git a/modules/nf-core/svdb/merge/tests/main.nf.test.snap b/modules/nf-core/svdb/merge/tests/main.nf.test.snap index e79b2583..a5daf368 100644 --- a/modules/nf-core/svdb/merge/tests/main.nf.test.snap +++ b/modules/nf-core/svdb/merge/tests/main.nf.test.snap @@ -1,5 +1,183 @@ { - "test_svdb_merge - stub": { + "1 sample, [], []": { + "content": [ + "VcfFile [chromosomes=[MT192765.1], sampleCount=1, variantCount=9, phased=false, phasedAutodetect=false]", + "60fb4cab2aa891bebef8ffdbd0e41bc3", + [ + "versions.yml:md5,772f39343052d54d9bcb21d4892da203" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-17T08:30:08.029708713" + }, + "2 samples, ['tiddit', 'cnvnator'], true - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "merged.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + "versions.yml:md5,772f39343052d54d9bcb21d4892da203" + ], + "vcf": [ + [ + { + "id": "test" + }, + "merged.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,772f39343052d54d9bcb21d4892da203" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-17T08:32:10.741546957" + }, + "2 samples, ['tiddit', 'cnvnator'], []": { + "content": [ + "VcfFile [chromosomes=[MT192765.1], sampleCount=2, variantCount=9, phased=false, phasedAutodetect=false]", + "254e56e4fc8356d68424828438da66e3", + [ + "versions.yml:md5,772f39343052d54d9bcb21d4892da203" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-17T08:31:15.105041662" + }, + "2 samples, [], []": { + "content": [ + "VcfFile [chromosomes=[MT192765.1], sampleCount=2, variantCount=9, phased=false, phasedAutodetect=false]", + "7ad648266e57d405b5b01aaea4613d1c", + [ + "versions.yml:md5,772f39343052d54d9bcb21d4892da203" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-17T08:41:54.793936976" + }, + "2 samples, ['tiddit', 'cnvnator'], true": { + "content": [ + "VcfFile [chromosomes=[MT192765.1], sampleCount=2, variantCount=9, phased=false, phasedAutodetect=false]", + "74ed58e115db54f30036bfd68a7dc432", + [ + "versions.yml:md5,772f39343052d54d9bcb21d4892da203" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-17T08:31:29.320496992" + }, + "1 sample, ['tiddit'], []": { + "content": [ + "VcfFile [chromosomes=[MT192765.1], sampleCount=1, variantCount=9, phased=false, phasedAutodetect=false]", + "9dd588cd870672b78192f48ad440b5d", + [ + "versions.yml:md5,772f39343052d54d9bcb21d4892da203" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-17T08:30:30.590239659" + }, + "1 sample, [], true": { + "content": [ + "VcfFile [chromosomes=[MT192765.1], sampleCount=1, variantCount=9, phased=false, phasedAutodetect=false]", + "60fb4cab2aa891bebef8ffdbd0e41bc3", + [ + "versions.yml:md5,772f39343052d54d9bcb21d4892da203" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-17T08:30:22.670145479" + }, + "1 sample, ['tiddit'], true": { + "content": [ + "VcfFile [chromosomes=[MT192765.1], sampleCount=1, variantCount=9, phased=false, phasedAutodetect=false]", + "9dd588cd870672b78192f48ad440b5d", + [ + "versions.yml:md5,772f39343052d54d9bcb21d4892da203" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-17T08:30:40.958649472" + }, + "2 samples, [], true": { + "content": [ + "VcfFile [chromosomes=[MT192765.1], sampleCount=2, variantCount=9, phased=false, phasedAutodetect=false]", + "de0a3b56cdee89e4c9cd4fbb4ad3391d", + [ + "versions.yml:md5,772f39343052d54d9bcb21d4892da203" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-17T08:31:01.933044815" + }, + "2 samples, ['tiddit', 'cnvnator'], [] - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "merged.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + "versions.yml:md5,772f39343052d54d9bcb21d4892da203" + ], + "vcf": [ + [ + { + "id": "test" + }, + "merged.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,772f39343052d54d9bcb21d4892da203" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-17T08:31:59.830493054" + }, + "2 samples, [], [] - stub": { "content": [ { "0": [ @@ -7,7 +185,7 @@ { "id": "test" }, - "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + "merged.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "1": [ @@ -18,7 +196,7 @@ { "id": "test" }, - "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + "merged.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "versions": [ @@ -30,9 +208,9 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-16T09:00:41.058996433" + "timestamp": "2024-10-17T08:41:07.289491939" }, - "test_svdb_merge_noprio - stub": { + "2 samples, [], true - stub": { "content": [ { "0": [ @@ -40,7 +218,7 @@ { "id": "test" }, - "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + "merged.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "1": [ @@ -51,7 +229,7 @@ { "id": "test" }, - "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + "merged.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "versions": [ @@ -63,6 +241,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-16T09:00:49.58223306" + "timestamp": "2024-10-17T08:31:48.40721064" } } \ No newline at end of file diff --git a/modules/nf-core/svdb/merge/tests/nextflow.config b/modules/nf-core/svdb/merge/tests/nextflow.config new file mode 100644 index 00000000..25f38031 --- /dev/null +++ b/modules/nf-core/svdb/merge/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: 'SVDB_MERGE' { + ext.prefix = "merged" + } +} diff --git a/subworkflows/local/call_svs/main.nf b/subworkflows/local/call_svs/main.nf index d176e841..1ea76469 100644 --- a/subworkflows/local/call_svs/main.nf +++ b/subworkflows/local/call_svs/main.nf @@ -83,7 +83,11 @@ workflow CALL_SVS { .set { ch_svdb_merge_in } // Merge the files with new sample names - SVDB_MERGE ( ch_svdb_merge_in, []) + SVDB_MERGE ( + ch_svdb_merge_in, + [], + true + ) ch_versions = ch_versions.mix(SVDB_MERGE.out.versions) TABIX_SVDB_MERGE ( SVDB_MERGE.out.vcf ) From 2caa215817409589ee3b10e6ff3976a83ec250e7 Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Thu, 24 Oct 2024 12:15:47 +0200 Subject: [PATCH 041/106] Implement nf-test for rank variants (#435) * wip - unstable genmod output * Add changelog * review suggestions * allow empty vep_plugin_files --- .github/workflows/ci.yml | 1 + CHANGELOG.md | 2 + conf/modules/rank_variants.config | 4 - modules/local/add_most_severe_consequence.nf | 15 +- modules/local/add_most_severe_pli.nf | 12 +- .../local/annotate_consequence_pli.nf | 8 +- subworkflows/local/prepare_genome.nf | 47 +++-- subworkflows/local/rank_variants/main.nf | 57 +++--- .../local/rank_variants/tests/main.nf.test | 168 ++++++++++++++++++ .../rank_variants/tests/main.nf.test.snap | 77 ++++++++ .../local/rank_variants/tests/nextflow.config | 117 ++++++++++++ workflows/nallo.nf | 36 ++-- 12 files changed, 460 insertions(+), 84 deletions(-) create mode 100644 subworkflows/local/rank_variants/tests/main.nf.test create mode 100644 subworkflows/local/rank_variants/tests/main.nf.test.snap create mode 100644 subworkflows/local/rank_variants/tests/nextflow.config diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c512f454..f53c4c3f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -38,6 +38,7 @@ jobs: - "SNV_ANNOTATION" - "CALL_SVS" - "ANNOTATE_SVS" + - "RANK_VARIANTS" profile: - "docker" diff --git a/CHANGELOG.md b/CHANGELOG.md index a9ecb128..3b5757c5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,6 +25,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#419](https://github.com/genomic-medicine-sweden/nallo/pull/419) - Added support for SV filtering using input BED file ([#348](https://github.com/genomic-medicine-sweden/nallo/issues/348)) - [#430](https://github.com/genomic-medicine-sweden/nallo/pull/430) - Added a GitHub action to build and publish docs to GitHub Pages - [#431](https://github.com/genomic-medicine-sweden/nallo/pull/431) - Added files needed to automatically build and publish docs to GitHub Pages +- [#435](https://github.com/genomic-medicine-sweden/nallo/pull/435) - Added nf-test to rank variants ### `Changed` @@ -58,6 +59,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#431](https://github.com/genomic-medicine-sweden/nallo/pull/431) - Changed `CITATIONS.md` to `docs/CITATIONS.md`, - [#433](https://github.com/genomic-medicine-sweden/nallo/pull/433) - Updated docs and README. - [#434](https://github.com/genomic-medicine-sweden/nallo/pull/434) - Updated the SVDB merge module to fix unstable CALL_SVS tests +- [#435](https://github.com/genomic-medicine-sweden/nallo/pull/435) - Updated and refactored processes and workflows related to variant ranking ### `Removed` diff --git a/conf/modules/rank_variants.config b/conf/modules/rank_variants.config index d253ffa2..30aad2fa 100644 --- a/conf/modules/rank_variants.config +++ b/conf/modules/rank_variants.config @@ -47,8 +47,4 @@ process { ext.args = "--temp_dir ./" } - withName: '.*:RANK_VARIANTS_SNV:BCFTOOLS_SORT' { - ext.when = false - } - } diff --git a/modules/local/add_most_severe_consequence.nf b/modules/local/add_most_severe_consequence.nf index 0c572811..236d3881 100644 --- a/modules/local/add_most_severe_consequence.nf +++ b/modules/local/add_most_severe_consequence.nf @@ -1,6 +1,6 @@ process ADD_MOST_SEVERE_CSQ { tag "$meta.id" - label 'process_low' + label 'process_single' conda "conda-forge::python=3.8.3" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? @@ -9,11 +9,11 @@ process ADD_MOST_SEVERE_CSQ { input: tuple val(meta), path(vcf) - path (variant_consequences) + tuple val(meta2), path (variant_consequences) output: - tuple val(meta), path("*.vcf") , emit: vcf - path "versions.yml" , emit: versions + tuple val(meta), path("*.vcf"), emit: vcf + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when @@ -21,8 +21,13 @@ process ADD_MOST_SEVERE_CSQ { script: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" + if ("$vcf" == "${prefix}.vcf" ) error "Input and output names are the same, set prefix in module configuration to disambiguate!" + """ - add_most_severe_consequence.py --file_in ${vcf} --file_out ${prefix}.vcf --variant_csq ${variant_consequences} + add_most_severe_consequence.py \\ + --file_in ${vcf} \\ + --file_out ${prefix}.vcf \\ + --variant_csq ${variant_consequences} cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/local/add_most_severe_pli.nf b/modules/local/add_most_severe_pli.nf index f2975a22..c7c74217 100644 --- a/modules/local/add_most_severe_pli.nf +++ b/modules/local/add_most_severe_pli.nf @@ -1,6 +1,6 @@ process ADD_MOST_SEVERE_PLI { tag "$meta.id" - label 'process_low' + label 'process_single' conda "conda-forge::python=3.8.3" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? @@ -11,8 +11,8 @@ process ADD_MOST_SEVERE_PLI { tuple val(meta), path(vcf) output: - tuple val(meta), path("*.vcf") , emit: vcf - path "versions.yml" , emit: versions + tuple val(meta), path("*.vcf"), emit: vcf + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when @@ -20,8 +20,12 @@ process ADD_MOST_SEVERE_PLI { script: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" + if ("$vcf" == "${prefix}.vcf" ) error "Input and output names are the same, set prefix in module configuration to disambiguate!" + """ - add_most_severe_pli.py --file_in ${vcf} --file_out ${prefix}.vcf + add_most_severe_pli.py \\ + --file_in ${vcf} \\ + --file_out ${prefix}.vcf cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/subworkflows/local/annotate_consequence_pli.nf b/subworkflows/local/annotate_consequence_pli.nf index 203a1405..781d5e0f 100644 --- a/subworkflows/local/annotate_consequence_pli.nf +++ b/subworkflows/local/annotate_consequence_pli.nf @@ -9,7 +9,7 @@ include { TABIX_BGZIPTABIX } from '../../modules/nf-core/tabix/bgziptabix/mai workflow ANNOTATE_CSQ_PLI { take: ch_vcf // channel: [mandatory] [ val(meta), path(vcf) ] - ch_variant_consequences // channel: [mandatory] [ path(consequences) ] + ch_variant_consequences // channel: [mandatory] [ val(meta), path(consequences) ] main: ch_versions = Channel.empty() @@ -24,7 +24,7 @@ workflow ANNOTATE_CSQ_PLI { ch_versions = ch_versions.mix(TABIX_BGZIPTABIX.out.versions) emit: - vcf_ann = TABIX_BGZIPTABIX.out.gz_tbi.map { meta, vcf, tbi -> return [ meta, vcf ] } // channel: [ val(meta), path(vcf) ] - tbi_ann = TABIX_BGZIPTABIX.out.gz_tbi.map { meta, vcf, tbi -> return [ meta, tbi ] } // channel: [ val(meta), path(tbi) ] - versions = ch_versions // channel: [ path(versions.yml) ] + vcf = TABIX_BGZIPTABIX.out.gz_tbi.map { meta, vcf, tbi -> [ meta, vcf ] } // channel: [ val(meta), path(vcf) ] + tbi = TABIX_BGZIPTABIX.out.gz_tbi.map { meta, vcf, tbi -> [ meta, tbi ] } // channel: [ val(meta), path(tbi) ] + versions = ch_versions // channel: [ path(versions.yml) ] } diff --git a/subworkflows/local/prepare_genome.nf b/subworkflows/local/prepare_genome.nf index 1babff3b..f18cf360 100644 --- a/subworkflows/local/prepare_genome.nf +++ b/subworkflows/local/prepare_genome.nf @@ -6,8 +6,11 @@ include { UNTAR as UNTAR_VEP_CACHE } from '../../modules/nf-core/untar/main' workflow PREPARE_GENOME { take: - fasta_in // channel: [mandatory] [ val(meta), path(fasta) ] - ch_vep_cache // channel: [optional] [ path(cache) ] + fasta_in // channel: [mandatory] [ val(meta), path(fasta) ] + gunzip_fasta // bool: should we gunzip fasta + ch_vep_cache // channel: [optional] [ val(meta), path(cache) ] + split_vep_files // bool: are there vep extra files + ch_vep_extra_files_unsplit // channel: [optional] [ val(meta), path(csv) ] main: ch_versions = Channel.empty() @@ -16,16 +19,15 @@ workflow PREPARE_GENOME { fasta_file = fasta_in.map{meta, file -> file} // Will not catch cases where fasta is bgzipped - if ( params.fasta.endsWith('.gz') ) { - GUNZIP_FASTA(fasta_in) + if ( gunzip_fasta ) { + GUNZIP_FASTA ( fasta_in ) .gunzip .collect() - .set{ch_fasta} - + .set { ch_fasta } ch_versions = ch_versions.mix(GUNZIP_FASTA.out.versions.first()) } else { fasta_in - .set{ch_fasta} + .set { ch_fasta } } SAMTOOLS_FAIDX ( ch_fasta, [[],[]] ) @@ -38,14 +40,33 @@ workflow PREPARE_GENOME { ch_versions = ch_versions.mix(UNTAR_VEP_CACHE.out.versions) UNTAR_VEP_CACHE.out.untar - .map { meta, files -> [files] } + .map { meta, files -> [ files ] } .collect() .set { untarred_vep } + // Read and store paths in the vep_plugin_files file + if ( split_vep_files ) { + ch_vep_extra_files_unsplit + .splitCsv ( header:true ) + .map { row -> + path = file(row.vep_files[0]) + if(path.exists()) { + return [path] + } else { + error("\nVep database file ${path} does not exist.") + } + } + .collect() + .set { ch_vep_extra_files } + } else { + ch_vep_extra_files = Channel.value([]) + } + emit: - mmi = MINIMAP2_INDEX.out.index.collect() // channel: [ val(meta), path(mmi) ] - fai = SAMTOOLS_FAIDX.out.fai.collect() // channel: [ val(meta), path(fai) ] - fasta = ch_fasta // channel: [ val(meta), path(fasta) ] - vep_resources = untarred_vep // channel: [ path(cache) ] - versions = ch_versions // channel: [ versions.yml ] + mmi = MINIMAP2_INDEX.out.index.collect() // channel: [ val(meta), path(mmi) ] + fai = SAMTOOLS_FAIDX.out.fai.collect() // channel: [ val(meta), path(fai) ] + fasta = ch_fasta // channel: [ val(meta), path(fasta) ] + vep_resources = untarred_vep // channel: [ path(cache) ] + vep_extra_files = ch_vep_extra_files // channel: [ path(files) ] + versions = ch_versions // channel: [ versions.yml ] } diff --git a/subworkflows/local/rank_variants/main.nf b/subworkflows/local/rank_variants/main.nf index c6820e14..b55d2126 100644 --- a/subworkflows/local/rank_variants/main.nf +++ b/subworkflows/local/rank_variants/main.nf @@ -6,47 +6,44 @@ include { GENMOD_ANNOTATE } from '../../../modules/nf-core/genmod/annotate/main include { GENMOD_MODELS } from '../../../modules/nf-core/genmod/models/main' include { GENMOD_SCORE } from '../../../modules/nf-core/genmod/score/main' include { GENMOD_COMPOUND } from '../../../modules/nf-core/genmod/compound/main' -include { BCFTOOLS_SORT } from '../../../modules/nf-core/bcftools/sort/main' -include { TABIX_BGZIP } from '../../../modules/nf-core/tabix/bgzip/main' -include { TABIX_TABIX } from '../../../modules/nf-core/tabix/tabix/main' +include { TABIX_BGZIPTABIX } from '../../../modules/nf-core/tabix/bgziptabix/main' workflow RANK_VARIANTS { take: - ch_vcf // channel: [mandatory] [ val(meta), path(vcf) ] - ch_pedfile // channel: [mandatory] [ path(ped) ] - ch_reduced_penetrance // channel: [mandatory] [ path(pentrance) ] - ch_score_config // channel: [mandatory] [ path(ini) ] + ch_vcf // channel: [mandatory] [ val(meta), path(vcf) ] + ch_pedfile // channel: [mandatory] [ val(meta), path(ped) ] + ch_reduced_penetrance // channel: [mandatory] [ val(meta), path(pentrance) ] + ch_score_config // channel: [mandatory] [ val(meta), path(ini) ] main: - ch_versions = Channel.empty() + ch_versions = Channel.empty() - GENMOD_ANNOTATE(ch_vcf) + GENMOD_ANNOTATE ( ch_vcf ) + ch_versions = ch_versions.mix(GENMOD_ANNOTATE.out.versions) - GENMOD_MODELS(GENMOD_ANNOTATE.out.vcf, ch_pedfile, ch_reduced_penetrance) + GENMOD_MODELS ( + GENMOD_ANNOTATE.out.vcf, + ch_pedfile.map { meta, ped -> ped }, + ch_reduced_penetrance.map { meta, file -> file } + ) + ch_versions = ch_versions.mix(GENMOD_MODELS.out.versions) - GENMOD_SCORE(GENMOD_MODELS.out.vcf, ch_pedfile, ch_score_config) + GENMOD_SCORE ( + GENMOD_MODELS.out.vcf, + ch_pedfile.map { meta, ped -> ped }, + ch_score_config.map { meta, file -> file } + ) + ch_versions = ch_versions.mix(GENMOD_SCORE.out.versions) - GENMOD_COMPOUND(GENMOD_SCORE.out.vcf) + GENMOD_COMPOUND ( GENMOD_SCORE.out.vcf ) + ch_versions = ch_versions.mix(GENMOD_COMPOUND.out.versions) - BCFTOOLS_SORT(GENMOD_COMPOUND.out.vcf) // SV file needs to be sorted before indexing - - TABIX_BGZIP(GENMOD_COMPOUND.out.vcf) //run only for SNVs - - ch_vcf = TABIX_BGZIP.out.output.mix(BCFTOOLS_SORT.out.vcf) - - TABIX_TABIX (ch_vcf) - - ch_versions = ch_versions.mix(GENMOD_ANNOTATE.out.versions) - ch_versions = ch_versions.mix(GENMOD_MODELS.out.versions) - ch_versions = ch_versions.mix(GENMOD_SCORE.out.versions) - ch_versions = ch_versions.mix(GENMOD_COMPOUND.out.versions) - ch_versions = ch_versions.mix(BCFTOOLS_SORT.out.versions) - ch_versions = ch_versions.mix(TABIX_BGZIP.out.versions) - ch_versions = ch_versions.mix(TABIX_TABIX.out.versions) + TABIX_BGZIPTABIX ( GENMOD_COMPOUND.out.vcf ) + ch_versions = ch_versions.mix(TABIX_BGZIPTABIX.out.versions) emit: - vcf = ch_vcf // channel: [ val(meta), path(vcf) ] - tbi = TABIX_TABIX.out.tbi // channel: [ val(meta), path(tbi) ] - versions = ch_versions // channel: [ path(versions.yml) ] + vcf = TABIX_BGZIPTABIX.out.gz_tbi.map { meta, vcf, tbi -> [ meta, vcf ] } // channel: [ val(meta), path(vcf) ] + tbi = TABIX_BGZIPTABIX.out.gz_tbi.map { meta, vcf, tbi -> [ meta, tbi ] } // channel: [ val(meta), path(tbi) ] + versions = ch_versions // channel: [ path(versions.yml) ] } diff --git a/subworkflows/local/rank_variants/tests/main.nf.test b/subworkflows/local/rank_variants/tests/main.nf.test new file mode 100644 index 00000000..581a7510 --- /dev/null +++ b/subworkflows/local/rank_variants/tests/main.nf.test @@ -0,0 +1,168 @@ +nextflow_workflow { + + name "Test Workflow RANK_VARIANTS" + script "../main.nf" + config "./nextflow.config" + workflow "RANK_VARIANTS" + + setup { + run("PREPARE_GENOME") { + script "../../prepare_genome.nf" + process { + """ + input[0] = Channel.of([ + [ id:'hg38' ], + file(params.pipelines_testdata_base_path + 'reference/hg38.test.fa.gz', checkIfExists: true) + ]) + input[1] = true + input[2] = [ + [ id: 'vep_cache' ], + file(params.pipelines_testdata_base_path + 'reference/vep_cache_test_data.tar.gz', checkIfExists:true) + ] + input[3] = true + input[4] = Channel.of([ + file(params.pipelines_testdata_base_path + 'reference/vep_plugin_files.csv', checkIfExists: true) + ]) + """ + } + } + run("MINIMAP2_ALIGN") { + script "../../../../modules/nf-core/minimap2/align/main.nf" + process { + """ + input[0] = [ + [ id: 'test', num_intervals:1 ], + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.fastq.gz', checkIfExists: true) + ] + input[1] = PREPARE_GENOME.out.fasta + input[2] = true + input[3] = 'csi' + input[4] = false + input[5] = false + """ + } + } + run("SHORT_VARIANT_CALLING") { + script "../../short_variant_calling/main.nf" + process { + """ + input[0] = MINIMAP2_ALIGN.out.bam + .join(MINIMAP2_ALIGN.out.index) + .join(Channel.of([ + [ id: 'test', num_intervals:1 ], + file(params.pipelines_testdata_base_path + 'reference/test_data.bed', checkIfExists: true) + ])) + input[1] = PREPARE_GENOME.out.fasta + input[2] = PREPARE_GENOME.out.fai + input[3] = [[],[]] + input[4] = [[],[]] + """ + } + } + run("SNV_ANNOTATION") { + script "../../snv_annotation/main.nf" + process { + """ + input[0] = SHORT_VARIANT_CALLING.out.combined_bcf + input[1] = [ + file(params.pipelines_testdata_base_path + 'reference/cadd.v1.6.hg38.test_data.zip', checkIfExists: true) + ] + input[2] = PREPARE_GENOME.out.fasta + input[3] = PREPARE_GENOME.out.fai + input[4] = PREPARE_GENOME.out.vep_resources + input[5] = Channel.value('110') + input[6] = PREPARE_GENOME.out.vep_extra_files + input[7] = false + input[8] = Channel.value([]) + input[9] = null + input[10] = null + """ + } + } + run("ANNOTATE_CSQ_PLI") { + script "../../../../subworkflows/local/annotate_consequence_pli.nf" + process { + """ + input[0] = SNV_ANNOTATION.out.vcf + input[1] = [ + [ id: 'variant_consequences' ], + [ file(params.pipelines_testdata_base_path + 'reference/variant_consequences_v2.txt', checkIfExists: true) ] + ] + """ + } + } + run("CREATE_PEDIGREE_FILE") { + script "../../../../modules/local/create_pedigree_file/main.nf" + process { + """ + input[0] = [ + 'project', + [ + [ id: 'test', project: 'project', maternal_id: '0', paternal_id: '0', family_id: 'family', sex: '2', phenotype: '2' ] + ] + ] + """ + } + } + } + + test("1 sample") { + + when { + workflow { + """ + input[0] = ANNOTATE_CSQ_PLI.out.vcf + input[1] = CREATE_PEDIGREE_FILE.out.ped + input[2] = Channel.of([ + [ id: 'reduced_penetrance' ], + file(params.pipelines_testdata_base_path + 'reference/reduced_penetrance.tsv', checkIfExists: true) + ]) + input[3] = Channel.of([ + [ id: 'score_config_snv' ], + file(params.pipelines_testdata_base_path + 'reference/rank_model_snv.ini', checkIfExists: true) + ]) + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert workflow.out.tbi.get(0).get(1).endsWith("tbi") }, + { assert snapshot( + path(workflow.out.vcf.get(0).get(1)).vcf.summary, // Can't snapshot MD5 because VEP output is unstable + ).match() } + ) + } + } + + test("1 sample - stub") { + + options "-stub" + + when { + workflow { + """ + input[0] = ANNOTATE_CSQ_PLI.out.vcf + input[1] = CREATE_PEDIGREE_FILE.out.ped + input[2] = Channel.of([ + [ id: 'reduced_penetrance' ], + file(params.pipelines_testdata_base_path + 'reference/reduced_penetrance.tsv', checkIfExists: true) + ]) + input[3] = Channel.of([ + [ id: 'score_config_snv' ], + file(params.pipelines_testdata_base_path + 'reference/rank_model_snv.ini', checkIfExists: true) + ]) + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert workflow.out.tbi.get(0).get(1).endsWith("tbi") }, + { assert snapshot(workflow.out).match() } + ) + } + } +} diff --git a/subworkflows/local/rank_variants/tests/main.nf.test.snap b/subworkflows/local/rank_variants/tests/main.nf.test.snap new file mode 100644 index 00000000..178ee057 --- /dev/null +++ b/subworkflows/local/rank_variants/tests/main.nf.test.snap @@ -0,0 +1,77 @@ +{ + "1 sample": { + "content": [ + "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=121, phased=false, phasedAutodetect=false]" + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-18T13:47:43.144635306" + }, + "1 sample - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test_data.bed", + "project": null, + "contains_affected": false + }, + "test_data.bed.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + [ + { + "id": "test_data.bed", + "project": null, + "contains_affected": false + }, + "test_data.bed.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,58de7735498cf84a4284050260b6f929", + "versions.yml:md5,789b8f834c7851ecd93b3488aa0236da", + "versions.yml:md5,a1990357a1ce026de4ba955c877c2430", + "versions.yml:md5,f56d4e953de59ea23842d33c16e914cf", + "versions.yml:md5,f9b69655d279838966e636810ae15f5a" + ], + "tbi": [ + [ + { + "id": "test_data.bed", + "project": null, + "contains_affected": false + }, + "test_data.bed.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "vcf": [ + [ + { + "id": "test_data.bed", + "project": null, + "contains_affected": false + }, + "test_data.bed.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,58de7735498cf84a4284050260b6f929", + "versions.yml:md5,789b8f834c7851ecd93b3488aa0236da", + "versions.yml:md5,a1990357a1ce026de4ba955c877c2430", + "versions.yml:md5,f56d4e953de59ea23842d33c16e914cf", + "versions.yml:md5,f9b69655d279838966e636810ae15f5a" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-18T13:48:10.616656902" + } +} \ No newline at end of file diff --git a/subworkflows/local/rank_variants/tests/nextflow.config b/subworkflows/local/rank_variants/tests/nextflow.config new file mode 100644 index 00000000..682ee1ac --- /dev/null +++ b/subworkflows/local/rank_variants/tests/nextflow.config @@ -0,0 +1,117 @@ +process { + + withName: 'PREPARE_GENOME:UNTAR_VEP_CACHE' { + ext.prefix = { "${name}".contains('merged') ? './vep_cache/homo_sapiens_merged/' : './vep_cache/homo_sapiens/' } + } + + withName: 'SHORT_VARIANT_CALLING:DEEPVARIANT' { + ext.prefix = { intervals ? "${meta.id}_${intervals}_deepvariant" : "${meta.id}_deepvariant" } + ext.args = { [ + '--model_type WGS', + "--sample_name=${meta.id}", + '-vcf_stats_report=False' + ].join(' ') } + } + + withName: 'SHORT_VARIANT_CALLING:GLNEXUS' { + ext.args = '--config DeepVariant_unfiltered' + } + + withName: 'SHORT_VARIANT_CALLING:BCFTOOLS_CONCAT' { + ext.prefix = { "${meta.id}_concat" } + ext.args = [ + '--no-version', + '--allow-overlaps' + ].join(' ') + } + + withName: 'SHORT_VARIANT_CALLING:BCFTOOLS_NORM_MULTISAMPLE' { + ext.prefix = { "${meta.id}_norm_multisample" } + ext.args = [ + '--no-version', + '-m -', + '--output-type u', + '--write-index=csi', + '-w 10000' + ].join(' ') + } + + withName: 'SHORT_VARIANT_CALLING:BCFTOOLS_NORM_SINGLESAMPLE' { + ext.prefix = { "${meta.id}_norm_singlesample" } + ext.args = [ + '--no-version', + '-m -', + '-w 10000', + '--output-type u', + ].join(' ') + } + + withName: 'SHORT_VARIANT_CALLING:BCFTOOLS_FILLTAGS' { + ext.prefix = { "${meta.id}_ac" } + ext.args = [ + '--no-version', + '--output-type u' + ].join(' ') + } + + withName: 'SNV_ANNOTATION:BCFTOOLS_FILLTAGS_ANNO' { + ext.prefix = { "${meta.id}_filltags_anno" } + ext.args = [ + '--no-version', + '--output-type z' + ].join(' ') + } + + withName: 'MINIMAP2_ALIGN' { + ext.args = '-x map-hifi' + } + + withName: 'SNV_ANNOTATION:ENSEMBLVEP_SNV' { + ext.args = { [ + "--dir_plugins .", + "--plugin LoFtool,LoFtool_scores.txt", + "--plugin pLI,pLI_values.txt", + '--distance 5000', + '--buffer_size 20000', + '--format vcf --max_sv_size 248387328', + '--appris --biotype --cache --canonical --ccds --compress_output bgzip', + '--domains --exclude_predicted --force_overwrite', + '--hgvs --humdiv --no_progress --numbers', + '--polyphen p --protein --offline --regulatory --sift p --symbol --tsl', + '--uniprot --vcf', + '--no_stats' + ].join(' ') } + } + + withName: 'ANNOTATE_CSQ_PLI:ADD_MOST_SEVERE_PLI' { + ext.prefix = { "${meta.id}_add_most_severe_pli" } + } + + withName: 'ANNOTATE_CSQ_PLI:ADD_MOST_SEVERE_CSQ' { + ext.prefix = { "${meta.id}_add_most_severe_csq" } + } + + withName: 'RANK_VARIANTS:GENMOD_ANNOTATE' { + ext.prefix = { "${meta.id}_genmod_annotate" } + ext.args = { [ + '--annotate_regions', + '--genome-build 38', + '--temp_dir ./' + ].join(' ') } + } + + withName: 'RANK_VARIANTS:GENMOD_MODELS' { + ext.prefix = { "${meta.id}_genmod_models" } + ext.args = "--whole_gene --temp_dir ./" + } + + withName: 'RANK_VARIANTS:GENMOD_SCORE' { + ext.prefix = { "${meta.id}_genmod_score" } + ext.args = "--rank_results" + } + + withName: 'RANK_VARIANTS:GENMOD_COMPOUND' { + ext.prefix = { "${meta.id}_genmod_compound" } + ext.args = "--temp_dir ./" + } +} diff --git a/workflows/nallo.nf b/workflows/nallo.nf index 7a86938e..86a79a37 100644 --- a/workflows/nallo.nf +++ b/workflows/nallo.nf @@ -88,7 +88,7 @@ workflow NALLO { : '' ch_databases = params.snp_db ? Channel.fromList(samplesheetToList(params.snp_db, 'assets/schema_snpdb.json')).map{ it[1] }.collect() : '' - ch_variant_consequences_snv = params.variant_consequences_snv ? Channel.fromPath(params.variant_consequences_snv).collect() + ch_variant_consequences_snv = params.variant_consequences_snv ? Channel.fromPath(params.variant_consequences_snv).map { it -> [ it.simpleName, it ] }.collect() : Channel.value([]) ch_vep_cache_unprocessed = params.vep_cache ? Channel.fromPath(params.vep_cache).map { it -> [ [ id:'vep_cache' ], it ] }.collect() : Channel.value([[],[]]) @@ -100,9 +100,9 @@ workflow NALLO { : '' ch_exclude_bed = params.hificnv_exclude ? Channel.fromPath(params.hificnv_exclude).collect() : '' - ch_reduced_penetrance = params.reduced_penetrance ? Channel.fromPath(params.reduced_penetrance).collect() + ch_reduced_penetrance = params.reduced_penetrance ? Channel.fromPath(params.reduced_penetrance).map { it -> [ it.simpleName, it ] }.collect() : Channel.value([]) - ch_score_config_snv = params.score_config_snv ? Channel.fromPath(params.score_config_snv).collect() + ch_score_config_snv = params.score_config_snv ? Channel.fromPath(params.score_config_snv).map { it -> [ it.simpleName, it ] }.collect() : Channel.value([]) ch_somalier_sites = params.somalier_sites ? Channel.fromPath(params.somalier_sites).map { [ it.simpleName, it ] }.collect() : '' @@ -112,21 +112,6 @@ workflow NALLO { // Check parameter that doesn't conform to schema validation here if (params.phaser.matches('hiphase') && params.preset == 'ONT_R10') { error "The HiPhase license only permits analysis of data from PacBio. For details see: https://github.com/PacificBiosciences/HiPhase/blob/main/LICENSE.md" } - // Read and store paths in the vep_plugin_files file - if (params.vep_plugin_files) { - ch_vep_extra_files_unsplit.splitCsv ( header:true ) - .map { row -> - path = file(row.vep_files[0]) - if(path.isFile() || path.isDirectory()){ - return [path] - } else { - error("\nVep database file ${path} does not exist.") - } - } - .collect() - .set {ch_vep_extra_files} - } - // // Convert FASTQ to BAM (and vice versa if assembly workflow is active) // @@ -143,7 +128,10 @@ workflow NALLO { PREPARE_GENOME ( ch_fasta, + params.fasta.endsWith('.gz'), ch_vep_cache_unprocessed, + params.vep_plugin_files, + ch_vep_extra_files_unsplit ) ch_versions = ch_versions.mix(PREPARE_GENOME.out.versions) @@ -328,7 +316,7 @@ workflow NALLO { ch_svdb_dbs, ch_vep_cache, params.vep_cache_version, - ch_vep_extra_files + PREPARE_GENOME.out.vep_extra_files ) ANNOTATE_SVS.out.vcf @@ -394,7 +382,7 @@ workflow NALLO { fai.map { name, fai -> [ [ id: name ], fai ] }, ch_vep_cache, params.vep_cache_version, - ch_vep_extra_files, + PREPARE_GENOME.out.vep_extra_files, (params.cadd_resources && params.cadd_prescored), ch_cadd_header, ch_cadd_resources, @@ -410,19 +398,19 @@ workflow NALLO { // // Ranks one multisample VCF per variant call region + // Can only run if samplesheet has affected samples // if(!params.skip_rank_variants) { // Only run if we have affected individuals RANK_VARIANTS_SNV ( - ANN_CSQ_PLI_SNV.out.vcf_ann.filter { meta, vcf -> meta.contains_affected }, - ch_updated_pedfile.map { meta, ped -> ped }, + ANN_CSQ_PLI_SNV.out.vcf, + ch_updated_pedfile, ch_reduced_penetrance, ch_score_config_snv ) ch_versions = ch_versions.mix(RANK_VARIANTS_SNV.out.versions) - // If there are affected individuals and RANK_VARIANTS has been run, - // input that to VCF concatenation + // If RANK_VARIANTS has been run input that to VCF concatenation RANK_VARIANTS_SNV.out.vcf .join( RANK_VARIANTS_SNV.out.tbi ) .set { ch_vcf_tbi_per_region } From 6a93afc8fa18cbcfa8a2e325de00befea1c47486 Mon Sep 17 00:00:00 2001 From: Daniel Schmitz Date: Thu, 24 Oct 2024 21:32:11 +0200 Subject: [PATCH 042/106] Update hifiasm to 0.20 (#440) * Updated hifiasm and changed invocation to conform to new interface * Updated changelog * Patched module to ensure proper staging * Updated config with arguments for telomeres and scaffolding * Updated snapshots * Updated Changelog * Update CHANGELOG.md Co-authored-by: Felix Lenner <52530259+fellen31@users.noreply.github.com> * changed capitalization Co-authored-by: Felix Lenner <52530259+fellen31@users.noreply.github.com> --------- Co-authored-by: Felix Lenner <52530259+fellen31@users.noreply.github.com> --- CHANGELOG.md | 2 + conf/modules/genome_assembly.config | 6 +- modules.json | 5 +- modules/nf-core/hifiasm/environment.yml | 4 +- modules/nf-core/hifiasm/hifiasm.diff | 24 +- modules/nf-core/hifiasm/main.nf | 10 +- modules/nf-core/hifiasm/meta.yml | 207 ++++++++---- modules/nf-core/hifiasm/tests/main.nf.test | 229 +++++++++++++ .../nf-core/hifiasm/tests/main.nf.test.snap | 319 ++++++++++++++++++ modules/nf-core/hifiasm/tests/nextflow.config | 3 + subworkflows/local/genome_assembly.nf | 14 +- tests/main.nf.test.snap | 94 +++--- 12 files changed, 780 insertions(+), 137 deletions(-) create mode 100644 modules/nf-core/hifiasm/tests/main.nf.test create mode 100644 modules/nf-core/hifiasm/tests/main.nf.test.snap create mode 100644 modules/nf-core/hifiasm/tests/nextflow.config diff --git a/CHANGELOG.md b/CHANGELOG.md index 3b5757c5..486ed12a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -60,6 +60,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#433](https://github.com/genomic-medicine-sweden/nallo/pull/433) - Updated docs and README. - [#434](https://github.com/genomic-medicine-sweden/nallo/pull/434) - Updated the SVDB merge module to fix unstable CALL_SVS tests - [#435](https://github.com/genomic-medicine-sweden/nallo/pull/435) - Updated and refactored processes and workflows related to variant ranking +- [#440](https://github.com/genomic-medicine-sweden/nallo/pull/440) - Updated hifiasm to 0.20 with new default parameters for telomeres and scaffolding ([#295](https://github.com/genomic-medicine-sweden/nallo/issues/295)) ### `Removed` @@ -110,6 +111,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 | genmod | 3.8.2 | 3.8.3 | | WhatsHap | 2.2 | 2.3 | | SVDB | | 2.8.1 | +| hifiasm | 0.19.8 | 0.20.0 | > [!NOTE] > Version has been updated if both old and new version information is present. diff --git a/conf/modules/genome_assembly.config b/conf/modules/genome_assembly.config index 43637246..cbab7e9d 100644 --- a/conf/modules/genome_assembly.config +++ b/conf/modules/genome_assembly.config @@ -25,7 +25,11 @@ process { } withName: '.*:ASSEMBLY:HIFIASM' { - ext.args = { "${params.extra_hifiasm_options}" } + ext.args = { [ + "${params.extra_hifiasm_options}", + "--dual-scaf", + "--telo-m CCCTAA" + ].join(' ') } publishDir = [ enabled: false, ] diff --git a/modules.json b/modules.json index a949fdda..a3fa2ed7 100644 --- a/modules.json +++ b/modules.json @@ -133,8 +133,9 @@ }, "hifiasm": { "branch": "master", - "git_sha": "aecb06fcdb995ff3e3df7c7a1fd119367d6d1996", - "installed_by": ["modules"] + "git_sha": "daa15d5226111e10ca95c0d4a85fa6bd11a08a01", + "installed_by": ["modules"], + "patch": "modules/nf-core/hifiasm/hifiasm.diff" }, "longphase/haplotag": { "branch": "master", diff --git a/modules/nf-core/hifiasm/environment.yml b/modules/nf-core/hifiasm/environment.yml index ede93247..f50b420e 100644 --- a/modules/nf-core/hifiasm/environment.yml +++ b/modules/nf-core/hifiasm/environment.yml @@ -1,7 +1,5 @@ -name: hifiasm channels: - conda-forge - bioconda - - defaults dependencies: - - bioconda::hifiasm=0.19.8 + - bioconda::hifiasm=0.20.0 diff --git a/modules/nf-core/hifiasm/hifiasm.diff b/modules/nf-core/hifiasm/hifiasm.diff index 03790816..0d5e8ef7 100644 --- a/modules/nf-core/hifiasm/hifiasm.diff +++ b/modules/nf-core/hifiasm/hifiasm.diff @@ -1,16 +1,24 @@ Changes in module 'nf-core/hifiasm' +'modules/nf-core/hifiasm/meta.yml' is unchanged +'modules/nf-core/hifiasm/environment.yml' is unchanged +Changes in 'hifiasm/main.nf': --- modules/nf-core/hifiasm/main.nf +++ modules/nf-core/hifiasm/main.nf -@@ -8,9 +8,7 @@ - 'biocontainers/hifiasm:0.19.8--h43eeafb_0' }" +@@ -8,9 +8,9 @@ + 'biocontainers/hifiasm:0.20.0--h43eeafb_0' }" input: -- tuple val(meta), path(reads) -- path paternal_kmer_dump -- path maternal_kmer_dump -+ tuple val(meta), path(reads, stageAs: "?/*"), path(paternal_kmer_dump), path(maternal_kmer_dump) - path hic_read1 - path hic_read2 +- tuple val(meta) , path(reads) +- tuple val(meta1), path(paternal_kmer_dump), path(maternal_kmer_dump) +- tuple val(meta2), path(hic_read1) , path(hic_read2) ++ tuple val(meta) , path(reads, stageAs: "?/*") ++ tuple val(meta1), path(paternal_kmer_dump) , path(maternal_kmer_dump) ++ tuple val(meta2), path(hic_read1) , path(hic_read2) + output: + tuple val(meta), path("*.r_utg.gfa") , emit: raw_unitigs +'modules/nf-core/hifiasm/tests/main.nf.test' is unchanged +'modules/nf-core/hifiasm/tests/main.nf.test.snap' is unchanged +'modules/nf-core/hifiasm/tests/nextflow.config' is unchanged ************************************************************ diff --git a/modules/nf-core/hifiasm/main.nf b/modules/nf-core/hifiasm/main.nf index a1bf30a0..409f7704 100644 --- a/modules/nf-core/hifiasm/main.nf +++ b/modules/nf-core/hifiasm/main.nf @@ -4,13 +4,13 @@ process HIFIASM { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/hifiasm:0.19.8--h43eeafb_0' : - 'biocontainers/hifiasm:0.19.8--h43eeafb_0' }" + 'https://depot.galaxyproject.org/singularity/hifiasm:0.20.0--h43eeafb_0' : + 'biocontainers/hifiasm:0.20.0--h43eeafb_0' }" input: - tuple val(meta), path(reads, stageAs: "?/*"), path(paternal_kmer_dump), path(maternal_kmer_dump) - path hic_read1 - path hic_read2 + tuple val(meta) , path(reads, stageAs: "?/*") + tuple val(meta1), path(paternal_kmer_dump) , path(maternal_kmer_dump) + tuple val(meta2), path(hic_read1) , path(hic_read2) output: tuple val(meta), path("*.r_utg.gfa") , emit: raw_unitigs diff --git a/modules/nf-core/hifiasm/meta.yml b/modules/nf-core/hifiasm/meta.yml index d07c0828..343ef182 100644 --- a/modules/nf-core/hifiasm/meta.yml +++ b/modules/nf-core/hifiasm/meta.yml @@ -15,85 +15,160 @@ tools: tool_dev_url: https://github.com/chhylp123/hifiasm doi: "10.1038/s41592-020-01056-5" licence: ["MIT"] + identifier: biotools:hifiasm input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - reads: - type: file - description: FASTQ file with PacBio HiFi reads - pattern: "*.{fastq}" - - paternal_kmer_dump: - type: file - description: Yak kmer dump file for paternal reads (can be used for haplotype resolution). It can have an arbitrary extension. - - maternal_kmer_dump: - type: file - description: Yak kmer dump file for maternal reads (can be used for haplotype resolution). It can have an arbitrary extension. - - use_parental_kmers: - type: boolean - description: A flag (true or false) signalling if the module should use the paternal and maternal kmer dumps. - - hic_read1: - type: file - description: Hi-C data Forward reads. - - hic_read2: - type: file - description: Hi-C data Reverse reads. + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - reads: + type: file + description: FASTQ file with PacBio HiFi reads + pattern: "*.{fastq}" + - - meta1: + type: map + description: | + Groovy Map containing information about parental kmers. + - paternal_kmer_dump: + type: file + description: Yak kmer dump file for paternal reads (can be used for haplotype + resolution). It can have an arbitrary extension. + - maternal_kmer_dump: + type: file + description: Yak kmer dump file for maternal reads (can be used for haplotype + resolution). It can have an arbitrary extension. + - - meta2: + type: map + description: | + Groovy Map containing information about Hi-C reads + - hic_read1: + type: file + description: Hi-C data Forward reads. + - hic_read2: + type: file + description: Hi-C data Reverse reads. output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - raw_unitigs: - type: file - description: Raw unitigs - pattern: "*.r_utg.gfa" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.r_utg.gfa": + type: file + description: Raw unitigs + pattern: "*.r_utg.gfa" + - corrected_reads: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.ec.bin": + type: file + description: Corrected reads + pattern: "*.ec.bin" + - source_overlaps: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.ovlp.source.bin": + type: file + description: Source overlaps + pattern: "*.ovlp.source.bin" + - reverse_overlaps: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.ovlp.reverse.bin": + type: file + description: Reverse overlaps + pattern: "*.ovlp.reverse.bin" + - processed_contigs: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.bp.p_ctg.gfa": + type: file + description: Processed contigs + pattern: "*.bp.p_ctg.gfa" - processed_unitigs: - type: file - description: Processed unitigs - pattern: "*.p_utg.gfa" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.p_utg.gfa": + type: file + description: Processed unitigs + pattern: "*.p_utg.gfa" - primary_contigs: - type: file - description: Primary contigs - pattern: "*.asm.p_ctg.gfa" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.asm.p_ctg.gfa": + type: file + description: Primary contigs + pattern: "*.asm.p_ctg.gfa" - alternate_contigs: - type: file - description: Alternative contigs - pattern: "*.asm.a_ctg.gfa" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.asm.a_ctg.gfa": + type: file + description: Alternative contigs + pattern: "*.asm.a_ctg.gfa" - paternal_contigs: - type: file - description: Paternal contigs - pattern: "*.hap1.p_ctg.gfa" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.hap1.p_ctg.gfa": + type: file + description: Paternal contigs + pattern: "*.hap1.p_ctg.gfa" - maternal_contigs: - type: file - description: Maternal contigs - pattern: "*.hap2.p_ctg.gfa" - - corrected_reads: - type: file - description: Corrected reads - pattern: "*.ec.bin" - - source_overlaps: - type: file - description: Source overlaps - pattern: "*.ovlp.source.bin" - - reverse_overlaps: - type: file - description: Reverse overlaps - pattern: "*.ovlp.reverse.bin" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.hap2.p_ctg.gfa": + type: file + description: Maternal contigs + pattern: "*.hap2.p_ctg.gfa" - log: - type: file - description: Stderr log - pattern: "*.log" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.log": + type: file + description: Stderr log + pattern: "*.log" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@sidorov-si" - "@scorreard" - "@mbeavitt" + - "@schmytzi" maintainers: - "@sidorov-si" - "@scorreard" diff --git a/modules/nf-core/hifiasm/tests/main.nf.test b/modules/nf-core/hifiasm/tests/main.nf.test new file mode 100644 index 00000000..5258890a --- /dev/null +++ b/modules/nf-core/hifiasm/tests/main.nf.test @@ -0,0 +1,229 @@ +nextflow_process { + + name "Test Process HifiAsm" + script "../main.nf" + process "HIFIASM" + config "./nextflow.config" + + tag "modules" + tag "modules_nfcore" + tag "hifiasm" + + test("homo_sapiens pacbio hifi [fastq, [,], [,] ]") { + when { + process { + """ + input[0] = [ + [ id : 'test'], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/pacbio/fastq/test_hifi.fastq.gz', checkIfExists: true) + ] + input[1] = [ + [], + [], + [] + ] + input[2] = [ + [], + [], + [] + ] + """ + } + } + then { + assertAll( + { assert process.success }, + { assert file(process.out.corrected_reads.get(0).get(1)).exists() }, + { assert file(process.out.source_overlaps.get(0).get(1)).exists() }, + { assert file(process.out.reverse_overlaps.get(0).get(1)).exists() }, + { assert file(process.out.log.get(0).get(1)).exists() }, + { assert snapshot( + process.out.raw_unitigs, + process.out.processed_contigs, + process.out.processed_unitigs, + process.out.paternal_contigs, + process.out.maternal_contigs, + process.out.versions + ).match() } + ) + } + } + + test("homo_sapiens pacbio hifi [fastq, [yak, yak], [,] ]") { + when { + process { + """ + input[0] = [ + [ id : 'test'], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/pacbio/fastq/test_hifi.fastq.gz', checkIfExists: true) + ] + input[1] = [ + [ id : 'test' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/yak/test.yak', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/yak/test2.yak', checkIfExists: true) + ] + input[2] = [ + [ id : 'test' ], + [], + [] + ] + """ + } + } + then { + assertAll( + { assert process.success }, + { assert file(process.out.corrected_reads.get(0).get(1)).exists() }, + { assert file(process.out.source_overlaps.get(0).get(1)).exists() }, + { assert file(process.out.reverse_overlaps.get(0).get(1)).exists() }, + { assert file(process.out.log.get(0).get(1)).exists() }, + { assert file(process.out.maternal_contigs.get(0).get(1)).length() == 0}, + { assert snapshot( + process.out.raw_unitigs, + process.out.processed_unitigs, + process.out.paternal_contigs, + process.out.versions + ).match() } + ) + } + } + + test("homo_sapiens pacbio hifi [fastq, [,], [fastq, fastq] ]") { + when { + process { + """ + input[0] = [ + [ id : 'test'], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/pacbio/fastq/test_hifi.fastq.gz', checkIfExists: true) + ] + input[1] = [ + [ id : 'test' ], + [], + [] + ] + input[2] = [ + [ id : 'test' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_2.fastq.gz', checkIfExists: true) + ] + """ + } + } + then { + assertAll( + { assert process.success }, + { assert file(process.out.corrected_reads.get(0).get(1)).exists() }, + { assert file(process.out.source_overlaps.get(0).get(1)).exists() }, + { assert file(process.out.reverse_overlaps.get(0).get(1)).exists() }, + { assert file(process.out.log.get(0).get(1)).exists() }, + { assert file(process.out.maternal_contigs.get(0).get(1)).length() == 0}, + { assert snapshot( + process.out.raw_unitigs, + process.out.processed_unitigs, + process.out.paternal_contigs, + process.out.versions + ).match() } + ) + } + } + + test("homo_sapiens pacbio hifi [fastq, [yak, yak], [fastq, fastq] ]") { + when { + """ + input[0] = [ + [ id : 'test'], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/pacbio/fastq/test_hifi.fastq.gz', checkIfExists: true) + ] + input[1] = [ + [ id : 'test' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/yak/test.yak', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/yak/test2.yak', checkIfExists: true) + ] + input[2] = [ + [ id : 'test' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_1.fastq.gz, checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_2.fastq.gz, checkIfExists: true) + ] + """ + } + then { + assertAll( + { assert !process.success} + ) + } + } + + test("homo_sapiens pacbio hifi [fastq, [yak, ], [,] ]") { + when { + """ + input[0] = [ + [ id : 'test'], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/pacbio/fastq/test_hifi.fastq.gz', checkIfExists: true) + ] + input[1] = [ + [ id : 'test'], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/yak/test.yak', checkIfExists: true), + [] + ] + input[2] = [] + """ + } + then { + assertAll( + { assert !process.success} + ) + } + } + + test("homo_sapiens pacbio hifi [fastq, [,], [, fastq] ]") { + when { + """ + input[0] = [ + [ id : 'test'], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/pacbio/fastq/test_hifi.fastq.gz', checkIfExists: true) + ] + input[1] = [] + input[2] = [ + [ id : 'test'], + [], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_2.fastq.gz', checkIfExists: true) + ] + """ + } + then { + assertAll( + { assert !process.success} + ) + } + } + + test("homo_sapiens pacbio hifi [fastq, [,], [,] ] - stub") { + options "-stub" + when { + process { + """ + input[0] = [ + [ id : 'test'], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/pacbio/fastq/test_hifi.fastq.gz', checkIfExists: true) + ] + input[1] = [ + [], + [], + [] + ] + input[2] = [ + [], + [], + [] + ] + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match()} + ) + } + } +} \ No newline at end of file diff --git a/modules/nf-core/hifiasm/tests/main.nf.test.snap b/modules/nf-core/hifiasm/tests/main.nf.test.snap new file mode 100644 index 00000000..8ad9589e --- /dev/null +++ b/modules/nf-core/hifiasm/tests/main.nf.test.snap @@ -0,0 +1,319 @@ +{ + "homo_sapiens pacbio hifi [fastq, [,], [,] ]": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.asm.bp.r_utg.gfa:md5,6a200e4bcb5d8d8fa6ed75874d26edc6" + ] + ], + [ + [ + { + "id": "test" + }, + "test.asm.bp.p_ctg.gfa:md5,c3225425a73a8d6d46536dab72380650" + ] + ], + [ + [ + { + "id": "test" + }, + "test.asm.bp.p_utg.gfa:md5,6a200e4bcb5d8d8fa6ed75874d26edc6" + ] + ], + [ + [ + { + "id": "test" + }, + "test.asm.bp.hap1.p_ctg.gfa:md5,78a86b6d5741a680e22a427ca9faa74a" + ] + ], + [ + [ + { + "id": "test" + }, + "test.asm.bp.hap2.p_ctg.gfa:md5,ac2116fd2f22c67d4c304cbf9b9f7793" + ] + ], + [ + "versions.yml:md5,6a23f7ea8bae71905c537cd521cffcb8" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-23T14:01:04.528764919" + }, + "homo_sapiens pacbio hifi [fastq, [,], [fastq, fastq] ]": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.asm.hic.r_utg.gfa:md5,6a200e4bcb5d8d8fa6ed75874d26edc6" + ] + ], + [ + [ + { + "id": "test" + }, + "test.asm.hic.p_utg.gfa:md5,6a200e4bcb5d8d8fa6ed75874d26edc6" + ] + ], + [ + [ + { + "id": "test" + }, + "test.asm.hic.hap1.p_ctg.gfa:md5,f67a8fdfa756961360732c79d189054d" + ] + ], + [ + "versions.yml:md5,6a23f7ea8bae71905c537cd521cffcb8" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-23T14:08:48.081396092" + }, + "homo_sapiens pacbio hifi [fastq, [,], [,] ] - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.asm.r_utg.gfa:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test.asm.ec.bin:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "10": [ + [ + { + "id": "test" + }, + "test.stderr.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "11": [ + "versions.yml:md5,6a23f7ea8bae71905c537cd521cffcb8" + ], + "2": [ + [ + { + "id": "test" + }, + "test.asm.ovlp.source.bin:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "test" + }, + "test.asm.ovlp.reverse.bin:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + [ + { + "id": "test" + }, + "test.asm.bp.p_ctg.gfa:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ + [ + { + "id": "test" + }, + "test.asm.p_utg.gfa:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "6": [ + [ + { + "id": "test" + }, + "test.asm.p_ctg.gfa:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "7": [ + [ + { + "id": "test" + }, + "test.asm.a_ctg.gfa:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "8": [ + [ + { + "id": "test" + }, + "test.asm.hap1.p_ctg.gfa:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "9": [ + [ + { + "id": "test" + }, + "test.asm.hap2.p_ctg.gfa:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "alternate_contigs": [ + [ + { + "id": "test" + }, + "test.asm.a_ctg.gfa:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "corrected_reads": [ + [ + { + "id": "test" + }, + "test.asm.ec.bin:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "log": [ + [ + { + "id": "test" + }, + "test.stderr.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "maternal_contigs": [ + [ + { + "id": "test" + }, + "test.asm.hap2.p_ctg.gfa:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "paternal_contigs": [ + [ + { + "id": "test" + }, + "test.asm.hap1.p_ctg.gfa:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "primary_contigs": [ + [ + { + "id": "test" + }, + "test.asm.p_ctg.gfa:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "processed_contigs": [ + [ + { + "id": "test" + }, + "test.asm.bp.p_ctg.gfa:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "processed_unitigs": [ + [ + { + "id": "test" + }, + "test.asm.p_utg.gfa:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "raw_unitigs": [ + [ + { + "id": "test" + }, + "test.asm.r_utg.gfa:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "reverse_overlaps": [ + [ + { + "id": "test" + }, + "test.asm.ovlp.reverse.bin:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "source_overlaps": [ + [ + { + "id": "test" + }, + "test.asm.ovlp.source.bin:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,6a23f7ea8bae71905c537cd521cffcb8" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-23T14:09:13.475508542" + }, + "homo_sapiens pacbio hifi [fastq, [yak, yak], [,] ]": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.asm.dip.r_utg.gfa:md5,68361ac3e8babd51f3891d1637ca0fdc" + ] + ], + [ + [ + { + "id": "test" + }, + "test.asm.dip.p_utg.gfa:md5,68361ac3e8babd51f3891d1637ca0fdc" + ] + ], + [ + [ + { + "id": "test" + }, + "test.asm.dip.hap1.p_ctg.gfa:md5,eed5da5f3dd415dbb711edb61a09802f" + ] + ], + [ + "versions.yml:md5,6a23f7ea8bae71905c537cd521cffcb8" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-23T13:33:47.765243676" + } +} \ No newline at end of file diff --git a/modules/nf-core/hifiasm/tests/nextflow.config b/modules/nf-core/hifiasm/tests/nextflow.config new file mode 100644 index 00000000..8dc2ae48 --- /dev/null +++ b/modules/nf-core/hifiasm/tests/nextflow.config @@ -0,0 +1,3 @@ +process { + ext.args = "-f0" +} diff --git a/subworkflows/local/genome_assembly.nf b/subworkflows/local/genome_assembly.nf index 650af99f..2eebc358 100644 --- a/subworkflows/local/genome_assembly.nf +++ b/subworkflows/local/genome_assembly.nf @@ -13,17 +13,15 @@ workflow ASSEMBLY { main: ch_versions = Channel.empty() + ch_hifiasm_empty = Channel.value([ [], [], [] ]) if(params.hifiasm_mode == 'hifi-only') { ch_reads .groupTuple() - .map{ meta, reads -> - [ meta, reads, [], [] ] - } .set { hifiasm_in } - HIFIASM ( hifiasm_in, [], [] ) + HIFIASM ( hifiasm_in, ch_hifiasm_empty, ch_hifiasm_empty ) ch_versions = ch_versions.mix(HIFIASM.out.versions) } else if(params.hifiasm_mode == 'trio-binning') { @@ -98,7 +96,13 @@ workflow ASSEMBLY { hifiasm_trio_in = all_kid_reads.join(paternal_yak_or_empty).join(maternal_yak_or_empty) - HIFIASM ( hifiasm_trio_in, [], [] ) + hifiasm_trio_in + .multiMap { meta, reads, paternal_yak, maternal_yak -> + reads : [meta, reads ] + yak : [meta, paternal_yak, maternal_yak] + } + .set { ch_hifiasm_in } + HIFIASM ( ch_hifiasm_in.reads, ch_hifiasm_in.yak, ch_hifiasm_empty ) ch_versions = ch_versions.mix(HIFIASM.out.versions) } diff --git a/tests/main.nf.test.snap b/tests/main.nf.test.snap index efc22fb3..83ce4226 100644 --- a/tests/main.nf.test.snap +++ b/tests/main.nf.test.snap @@ -9,27 +9,27 @@ "multiqc_fastqc.txt:md5,6168de97dd0d63807f925487735bdb60", "multiqc_somalier.txt:md5,20b4c5b2d5b94b77fb800548e07a874e", "5df05408bd4f18a4ef1555bc5800601a", - "HG002_Revio.asm.bp.hap1.p_ctg.assembly_summary:md5,e4da3107f2421d42c6e2f59bff4e47d9", - "HG002_Revio.asm.bp.hap2.p_ctg.assembly_summary:md5,bf908610472e602fd986b9d4a4d58b9e", - "514d30ef8ff2c0a3d9a19ebc702ba883", - "2f245ef6c8405acc80bc9df75553f276", - "HG002_Revio.dip.bed:md5,4e3cde029bceaa9363402e997f12f280", - "HG002_Revio.hap1.bed:md5,3d75c9538e748a7672b934bdbde90df3", - "HG002_Revio.hap2.bed:md5,9ac411d49f08a8ec70e4792890e9faf9", + "HG002_Revio.asm.bp.hap1.p_ctg.assembly_summary:md5,b949217515292b5a7735af4ad4bd5b11", + "HG002_Revio.asm.bp.hap2.p_ctg.assembly_summary:md5,c3e50f54e9e2871771d1735c54e57c5e", + "da103c401cf854a00aa75a57cda0f34d", + "e8599cef23fc88e2fe09d2bda5ea372f", + "HG002_Revio.dip.bed:md5,8230ffcc5539eef359ab5128fa60e765", + "HG002_Revio.hap1.bed:md5,44dcedabe0edb29af441df1f0b55210a", + "HG002_Revio.hap2.bed:md5,6b4b879d4ebe97f778921252469a029c", "HG002_Revio.copynum.bedgraph:md5,517bc59c1b235490c79aa8319437b033", "HG002_Revio.depth.bw:md5,0b9cae1d0646fdd2f690d4255282ee8f", "HG002_Revio.maf.bw:md5,bacc69449af34efe8576245ae8188719", "HG002_Revio.mosdepth.global.dist.txt:md5,63701e857361046628f89cb84988ea1d", "HG002_Revio.mosdepth.region.dist.txt:md5,6b46396518979ff9d9771cb8a8fbbab0", "HG002_Revio.mosdepth.summary.txt:md5,311aad293c6d8a646b6dd4edc337845c", - "HG002_Revio.asm.bp.hap1.p_ctg.fasta.gz:md5,eff16bf92abff02c36cceb2eb5a9871c", - "HG002_Revio.asm.bp.hap2.p_ctg.fasta.gz:md5,e28c886baffe24c1a2972a1d95b1b250", - "HG002_Revio.dip.vcf.gz:md5,9259613d7b01347b2d817d4e547c4203", - "HG002_Revio.hap1.paf.gz:md5,46a3056ecd833d9a932c53fc46a3cafc", - "HG002_Revio.hap1.var.gz:md5,173218f6c3f5f067e0932a8331f12e3d", - "HG002_Revio.hap2.paf.gz:md5,a99e451e4af96a7ab120cedd49eea618", - "HG002_Revio.hap2.var.gz:md5,53dc16fc893a529a95067da161b4dad6", - "HG002_Revio.pair.vcf.gz:md5,a390558ab50ce0dc9efec070b1c70c22", + "HG002_Revio.asm.bp.hap1.p_ctg.fasta.gz:md5,380ed173f8d50419a86c229dd81a20c2", + "HG002_Revio.asm.bp.hap2.p_ctg.fasta.gz:md5,6ca4cd66b46b2bf7b1ed1ee959fba6ab", + "HG002_Revio.dip.vcf.gz:md5,747ea6c9532679ae7eb5ce06f511c4c2", + "HG002_Revio.hap1.paf.gz:md5,680a7278a2d492ed6ee5c7b19dd5d80f", + "HG002_Revio.hap1.var.gz:md5,bd714e935825d8c665445d93c7d82206", + "HG002_Revio.hap2.paf.gz:md5,77ff9e7c1b0ed8454f7a10beba01cbf9", + "HG002_Revio.hap2.var.gz:md5,9ba9303b30730e419138e177c7d1e0c2", + "HG002_Revio.pair.vcf.gz:md5,1909dffa43850282fe7e5ae2b2d273a7", "ab9044066c7bd041966eed43e0d00f13", "HG002_Revio.vcf.gz.tbi:md5,5e42ce281f81b7fdb5fa6e42ec4c7f8b", "HG002_Revio_modkit_pileup.bed.gz:md5,55496cdcd7e4ccad86adee3cb819da56", @@ -52,7 +52,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-01T10:14:44.272116791" + "timestamp": "2024-10-24T18:25:48.620936006" }, "test profile - multisample": { "content": [ @@ -60,27 +60,27 @@ "multiqc_citations.txt:md5,a27affce20d456d20ed387097a4f0350", "multiqc_fastqc.txt:md5,37674ae5d0d56386d87f38158fa18980", "5df05408bd4f18a4ef1555bc5800601a", - "HG002_Revio_A.asm.bp.hap1.p_ctg.assembly_summary:md5,e4da3107f2421d42c6e2f59bff4e47d9", - "HG002_Revio_A.asm.bp.hap2.p_ctg.assembly_summary:md5,bf908610472e602fd986b9d4a4d58b9e", - "514d30ef8ff2c0a3d9a19ebc702ba883", - "2f245ef6c8405acc80bc9df75553f276", - "HG002_Revio_A.dip.bed:md5,4e3cde029bceaa9363402e997f12f280", - "HG002_Revio_A.hap1.bed:md5,3d75c9538e748a7672b934bdbde90df3", - "HG002_Revio_A.hap2.bed:md5,9ac411d49f08a8ec70e4792890e9faf9", + "HG002_Revio_A.asm.bp.hap1.p_ctg.assembly_summary:md5,b949217515292b5a7735af4ad4bd5b11", + "HG002_Revio_A.asm.bp.hap2.p_ctg.assembly_summary:md5,c3e50f54e9e2871771d1735c54e57c5e", + "da103c401cf854a00aa75a57cda0f34d", + "e8599cef23fc88e2fe09d2bda5ea372f", + "HG002_Revio_A.dip.bed:md5,8230ffcc5539eef359ab5128fa60e765", + "HG002_Revio_A.hap1.bed:md5,44dcedabe0edb29af441df1f0b55210a", + "HG002_Revio_A.hap2.bed:md5,6b4b879d4ebe97f778921252469a029c", "HG002_Revio_A.copynum.bedgraph:md5,517bc59c1b235490c79aa8319437b033", "HG002_Revio_A.depth.bw:md5,0b9cae1d0646fdd2f690d4255282ee8f", "HG002_Revio_A.maf.bw:md5,bacc69449af34efe8576245ae8188719", "HG002_Revio_A.mosdepth.global.dist.txt:md5,63701e857361046628f89cb84988ea1d", "HG002_Revio_A.mosdepth.region.dist.txt:md5,6b46396518979ff9d9771cb8a8fbbab0", "HG002_Revio_A.mosdepth.summary.txt:md5,311aad293c6d8a646b6dd4edc337845c", - "HG002_Revio_A.asm.bp.hap1.p_ctg.fasta.gz:md5,eff16bf92abff02c36cceb2eb5a9871c", - "HG002_Revio_A.asm.bp.hap2.p_ctg.fasta.gz:md5,e28c886baffe24c1a2972a1d95b1b250", - "HG002_Revio_A.dip.vcf.gz:md5,61ad90b86d72eb43541e0435efcee852", - "HG002_Revio_A.hap1.paf.gz:md5,46a3056ecd833d9a932c53fc46a3cafc", - "HG002_Revio_A.hap1.var.gz:md5,173218f6c3f5f067e0932a8331f12e3d", - "HG002_Revio_A.hap2.paf.gz:md5,a99e451e4af96a7ab120cedd49eea618", - "HG002_Revio_A.hap2.var.gz:md5,53dc16fc893a529a95067da161b4dad6", - "HG002_Revio_A.pair.vcf.gz:md5,233375a4067362bb6799d5ade46db537", + "HG002_Revio_A.asm.bp.hap1.p_ctg.fasta.gz:md5,380ed173f8d50419a86c229dd81a20c2", + "HG002_Revio_A.asm.bp.hap2.p_ctg.fasta.gz:md5,6ca4cd66b46b2bf7b1ed1ee959fba6ab", + "HG002_Revio_A.dip.vcf.gz:md5,d5a5d0620cba624a482d0e48e725e232", + "HG002_Revio_A.hap1.paf.gz:md5,680a7278a2d492ed6ee5c7b19dd5d80f", + "HG002_Revio_A.hap1.var.gz:md5,bd714e935825d8c665445d93c7d82206", + "HG002_Revio_A.hap2.paf.gz:md5,77ff9e7c1b0ed8454f7a10beba01cbf9", + "HG002_Revio_A.hap2.var.gz:md5,9ba9303b30730e419138e177c7d1e0c2", + "HG002_Revio_A.pair.vcf.gz:md5,4680402dd40f18cc177bd50fb618e6f4", "ab9044066c7bd041966eed43e0d00f13", "HG002_Revio_A.vcf.gz.tbi:md5,38117ec4d71c688a6f43c53946908acd", "HG002_Revio_A_modkit_pileup.bed.gz:md5,55496cdcd7e4ccad86adee3cb819da56", @@ -99,27 +99,27 @@ "#" ], "e9aea8a85ecd1b9dde90e1a08e4a390d", - "HG002_Revio_B.asm.bp.hap1.p_ctg.assembly_summary:md5,8ea073b13622d98785a0ba249791b667", - "HG002_Revio_B.asm.bp.hap2.p_ctg.assembly_summary:md5,a9dacca74b4adfefd877b64c3cdd731c", - "8cb89b73870933ceef28ea1de5655ff8", - "e0e50a1579149e26fd38f574508ced02", - "HG002_Revio_B.dip.bed:md5,c4abdf4a812fd62eb49cdaccebdaa3a1", - "HG002_Revio_B.hap1.bed:md5,4ff9c348e930b1272b54eae7d8255fc3", - "HG002_Revio_B.hap2.bed:md5,e95100eef23cdb0e0785a1ac6bd9a70d", + "HG002_Revio_B.asm.bp.hap1.p_ctg.assembly_summary:md5,7fd907d993bf1140eabc2f3c2116df96", + "HG002_Revio_B.asm.bp.hap2.p_ctg.assembly_summary:md5,241c10b531eae6c6bd56d71be2b0806c", + "2352f7a9960c400d8182ad2ec442887", + "6e4f7fa25e9905d538ecc65f923806", + "HG002_Revio_B.dip.bed:md5,395e61d926c5f9cbda71f770182a52b6", + "HG002_Revio_B.hap1.bed:md5,8d007624a4935390fb4731817e251cff", + "HG002_Revio_B.hap2.bed:md5,f4d086b5254b13a8d7836290d2c1b1cb", "HG002_Revio_B.copynum.bedgraph:md5,42095da173e46804977bbbecc2fda3aa", "HG002_Revio_B.depth.bw:md5,45c82491b7119b2d427c5bf2167811c5", "HG002_Revio_B.maf.bw:md5,b27799b62d65661b384aa61944bd0590", "HG002_Revio_B.mosdepth.global.dist.txt:md5,5c2dd519f3abc19c00d1a0618cf477d4", "HG002_Revio_B.mosdepth.region.dist.txt:md5,4a6ccfd85f9837c6c57b3ddaa8c7d263", "HG002_Revio_B.mosdepth.summary.txt:md5,6c1d1590ed9423552d56ee456c89e6ef", - "HG002_Revio_B.asm.bp.hap1.p_ctg.fasta.gz:md5,bafe70d988eefabb0ce08039b57a6580", - "HG002_Revio_B.asm.bp.hap2.p_ctg.fasta.gz:md5,9fa9e6a5e60d57ecb43656970d5a6cf3", - "HG002_Revio_B.dip.vcf.gz:md5,8efc621eb46b4012e6092ac814d18465", - "HG002_Revio_B.hap1.paf.gz:md5,9b0eda51e680b3ba72dbb4a99b9911b4", - "HG002_Revio_B.hap1.var.gz:md5,723bdfc7bc08d1af0a52c40828912ac2", - "HG002_Revio_B.hap2.paf.gz:md5,14e230db02f0fefcacdd45949743d80c", - "HG002_Revio_B.hap2.var.gz:md5,5ed54d6881aac6c54245bb8c5ed77d44", - "HG002_Revio_B.pair.vcf.gz:md5,62c75ce4450a5fde9fdc6e552f5c2cd9", + "HG002_Revio_B.asm.bp.hap1.p_ctg.fasta.gz:md5,323fd57714246acb37e4e5d55e953429", + "HG002_Revio_B.asm.bp.hap2.p_ctg.fasta.gz:md5,6481372dcc00afaea3418749a04ffbbf", + "HG002_Revio_B.dip.vcf.gz:md5,3b3644ef50af7d513e44e09bf043d129", + "HG002_Revio_B.hap1.paf.gz:md5,df23f568c86230a5dea8719e47d233b8", + "HG002_Revio_B.hap1.var.gz:md5,6234237b2aee91083b6d4c67a91c0d0b", + "HG002_Revio_B.hap2.paf.gz:md5,b1cffc2fa1ed71057acc9cef610a7fc6", + "HG002_Revio_B.hap2.var.gz:md5,f09b01fcb43bf64f92ca7ec8a2380c25", + "HG002_Revio_B.pair.vcf.gz:md5,676492865a9d4765835638d52651af73", "7db8959b4b1f46316bb7d5908a8b9f26", "HG002_Revio_B.vcf.gz.tbi:md5,7a72aa048fe8389233a2cf94d843cd1e", "HG002_Revio_B_modkit_pileup.bed.gz:md5,c217ccd3e8514a6a5eca0e163dee9f20", @@ -142,7 +142,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-01T10:16:16.493512263" + "timestamp": "2024-10-24T18:27:40.783546633" }, "test profile - multisample - ont - parallel_alignments 2 - parallel_snv 1": { "content": [ From e76e6c21889a85e12f43fa240b6cd441daa985d1 Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Fri, 25 Oct 2024 11:40:09 +0200 Subject: [PATCH 043/106] Clean up pipeline tests (#438) * Clean up pipeline tests * fix missing/malformed versions * update subworkflow and module tests as well * update subworkflow and module tests as well * wip * remove three more 'v's from versions * add phasing vcfs to unstable vcfs, review suggestions * Update samplesheet_multisample_bam.nf.test --- .github/workflows/ci.yml | 15 +- CHANGELOG.md | 2 + modules/local/add_found_in_tag/main.nf | 4 +- .../add_found_in_tag/tests/main.nf.test.snap | 338 +++++++- modules/local/add_most_severe_consequence.nf | 4 +- modules/local/add_most_severe_pli.nf | 4 +- modules/local/create_pedigree_file/main.nf | 4 +- modules/local/trgt/main.nf | 2 +- nf-test.config | 17 +- .../local/call_svs/tests/main.nf.test.snap | 84 +- .../scatter_genome/tests/main.nf.test.snap | 192 ++--- .../tests/main.nf.test.snap | 114 +-- tests/.nftignore | 18 + tests/.nftignore_unstable_variants | 4 + tests/main.nf.test | 434 ---------- tests/main.nf.test.snap | 74 +- tests/nextflow.config | 43 - tests/samplesheet.nf.test | 51 ++ tests/samplesheet.nf.test.snap | 550 +++++++++++++ tests/samplesheet_multisample_bam.nf.test | 53 ++ .../samplesheet_multisample_bam.nf.test.snap | 761 ++++++++++++++++++ tests/samplesheet_multisample_ont_bam.nf.test | 55 ++ ...mplesheet_multisample_ont_bam.nf.test.snap | 510 ++++++++++++ 23 files changed, 2601 insertions(+), 732 deletions(-) create mode 100644 tests/.nftignore create mode 100644 tests/.nftignore_unstable_variants delete mode 100644 tests/main.nf.test delete mode 100644 tests/nextflow.config create mode 100644 tests/samplesheet.nf.test create mode 100644 tests/samplesheet.nf.test.snap create mode 100644 tests/samplesheet_multisample_bam.nf.test create mode 100644 tests/samplesheet_multisample_bam.nf.test.snap create mode 100644 tests/samplesheet_multisample_ont_bam.nf.test create mode 100644 tests/samplesheet_multisample_ont_bam.nf.test.snap diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f53c4c3f..346f8279 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -22,7 +22,7 @@ permissions: jobs: test: - name: ${{ matrix.tags }} ${{ matrix.profile }} NF-${{ matrix.NXF_VER }} + name: ${{ matrix.tags }} | ${{ matrix.profile }} | NF-${{ matrix.NXF_VER }} runs-on: ubuntu-latest strategy: fail-fast: false @@ -60,10 +60,15 @@ jobs: python-version: "3.11" architecture: "x64" - - name: Install pdiff to see diff between nf-test snapshots - run: | - python -m pip install --upgrade pip - pip install pdiff + - name: Cache pdiff + uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4 + id: cache-pip-pdiff + with: + path: ~/.cache/pip + key: ${{ runner.os }}-pip-pdiff + + - name: Install pdiff + run: python -m pip install --upgrade pip pdiff cryptography - name: Run nf-test run: | diff --git a/CHANGELOG.md b/CHANGELOG.md index 486ed12a..d4d6b48a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -60,6 +60,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#433](https://github.com/genomic-medicine-sweden/nallo/pull/433) - Updated docs and README. - [#434](https://github.com/genomic-medicine-sweden/nallo/pull/434) - Updated the SVDB merge module to fix unstable CALL_SVS tests - [#435](https://github.com/genomic-medicine-sweden/nallo/pull/435) - Updated and refactored processes and workflows related to variant ranking +- [#438](https://github.com/genomic-medicine-sweden/nallo/pull/438) - Updated pipeline tests to use functions in nft-utils instead of checking hardcoded paths - [#440](https://github.com/genomic-medicine-sweden/nallo/pull/440) - Updated hifiasm to 0.20 with new default parameters for telomeres and scaffolding ([#295](https://github.com/genomic-medicine-sweden/nallo/issues/295)) ### `Removed` @@ -77,6 +78,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#382](https://github.com/genomic-medicine-sweden/nallo/pull/382) - Fixed broken links and formatting in documentation - [#393](https://github.com/genomic-medicine-sweden/nallo/pull/393) - Fixed minimap2 preset for ONT data being overwritten to `map-ont` when it should have been `lr:hq`, due to different settings in index and alignment processes [#392](https://github.com/genomic-medicine-sweden/nallo/issues/392) - [#402](https://github.com/genomic-medicine-sweden/nallo/pull/402) - Fixed double sample names in HiFiCNV output +- [#438](https://github.com/genomic-medicine-sweden/nallo/pull/438) - Fixed missing/malformed software versions in `ADD_FOUND_IN_TAG`, `ADD_MOST_SEVERE_CSQ`, `ADD_MOST_SEVERE_PLI`, `SAMPLESHEET_PED`, `SOMALIER_PED` and `TRGT` ### Parameters diff --git a/modules/local/add_found_in_tag/main.nf b/modules/local/add_found_in_tag/main.nf index 12a8a2f8..f176d8a8 100644 --- a/modules/local/add_found_in_tag/main.nf +++ b/modules/local/add_found_in_tag/main.nf @@ -64,7 +64,7 @@ process ADD_FOUND_IN_TAG { cat <<-END_VERSIONS > versions.yml "${task.process}": bcftools: \$(bcftools --version 2>&1 | head -n1 | sed 's/^.*bcftools //; s/ .*\$//') - gawk: \$(awk -Wversion | sed '1!d; s/.*Awk //; s/,.*//') + busybox-awk: \$(awk 2>&1 | sed -n 's/.*v\\([^ ]*\\) (.*/\\1/p') END_VERSIONS """ @@ -90,7 +90,7 @@ process ADD_FOUND_IN_TAG { cat <<-END_VERSIONS > versions.yml "${task.process}": bcftools: \$(bcftools --version 2>&1 | head -n1 | sed 's/^.*bcftools //; s/ .*\$//') - gawk: \$(awk -Wversion | sed '1!d; s/.*Awk //; s/,.*//') + busybox-awk: \$(awk 2>&1 | sed -n 's/.*v\\([^ ]*\\) (.*/\\1/p') END_VERSIONS """ } diff --git a/modules/local/add_found_in_tag/tests/main.nf.test.snap b/modules/local/add_found_in_tag/tests/main.nf.test.snap index 4f40e912..90deb557 100644 --- a/modules/local/add_found_in_tag/tests/main.nf.test.snap +++ b/modules/local/add_found_in_tag/tests/main.nf.test.snap @@ -3,14 +3,14 @@ "content": [ "7ce88babfa8801b2a913faf40c6f7edd", [ - "versions.yml:md5,366aba7250a7ed36b3a0fa4b534ad33d" + "versions.yml:md5,5d810c4fbc154928fabfe136fad38704" ] ], "meta": { "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nextflow": "24.04.4" }, - "timestamp": "2024-09-17T12:12:10.307079371" + "timestamp": "2024-10-25T09:33:11.23710858" }, "sarscov2 - [vcf, []], variant_caller -stub": { "content": [ @@ -18,7 +18,167 @@ "0": [ [ { - "id": "out", + "id": [ + [ + [ + "HG002_Revio_phased.bam:md5,64e1d1ed3d180589193c13f2c94d1098", + "HG002_Revio_phased.bam.bai:md5,bb768f48be5144262c0b713ef183d152" + ] + ], + [ + [ + [ + "HG002_Revio.asm.bp.hap1.p_ctg.assembly_summary:md5,e4da3107f2421d42c6e2f59bff4e47d9", + "HG002_Revio.asm.bp.hap1.p_ctg.fasta.gz:md5,eff16bf92abff02c36cceb2eb5a9871c", + "HG002_Revio.asm.bp.hap2.p_ctg.assembly_summary:md5,bf908610472e602fd986b9d4a4d58b9e", + "HG002_Revio.asm.bp.hap2.p_ctg.fasta.gz:md5,e28c886baffe24c1a2972a1d95b1b250" + ] + ] + ], + [ + [ + [ + "HG002_Revio.dip.bed:md5,4e3cde029bceaa9363402e997f12f280", + "HG002_Revio.dip.vcf.gz:md5,9259613d7b01347b2d817d4e547c4203", + "HG002_Revio.hap1.bam:md5,5c739e8b3c2f659c3847498848280bbf", + "HG002_Revio.hap1.bam.bai:md5,a57472fa9365470db09f5ea8c7a7420a", + "HG002_Revio.hap1.bed:md5,3d75c9538e748a7672b934bdbde90df3", + "HG002_Revio.hap1.paf.gz:md5,46a3056ecd833d9a932c53fc46a3cafc", + "HG002_Revio.hap1.sam.gz:md5,0a161b44c29c0581ada87fee50be38c2", + "HG002_Revio.hap1.var.gz:md5,173218f6c3f5f067e0932a8331f12e3d", + "HG002_Revio.hap2.bam:md5,df63e7bb5dcee6ca5e731272dad0eb99", + "HG002_Revio.hap2.bam.bai:md5,ed8184223edea0297c7f9283ea7927bf", + "HG002_Revio.hap2.bed:md5,9ac411d49f08a8ec70e4792890e9faf9", + "HG002_Revio.hap2.paf.gz:md5,a99e451e4af96a7ab120cedd49eea618", + "HG002_Revio.hap2.sam.gz:md5,410acad899eda2f0a4a3e1eb4acf81cb", + "HG002_Revio.hap2.var.gz:md5,53dc16fc893a529a95067da161b4dad6", + "HG002_Revio.pair.vcf.gz:md5,a390558ab50ce0dc9efec070b1c70c22" + ] + ] + ], + [ + [ + [ + "HG002_Revio.HG002_Revio.copynum.bedgraph:md5,517bc59c1b235490c79aa8319437b033", + "HG002_Revio.HG002_Revio.depth.bw:md5,20757c985f4713b8568dee05765db701", + "HG002_Revio.HG002_Revio.maf.bw:md5,4699d7a664277863f06eb48c3cba3c41", + "HG002_Revio.HG002_Revio.vcf.gz:md5,771f7d9ecbd161dedfbdd053ceff0d52", + "HG002_Revio.HG002_Revio.vcf.gz.tbi:md5,65d6930f79e626a5542091b7a419dc2b", + "HG002_Revio.log:md5,3b47302d7e8e0ffac4841123de74ffb3" + ] + ] + ], + [ + [ + [ + [ + + ], + [ + + ] + ] + ] + ], + [ + [ + "HG002_Revio.paraphase.bam:md5,839cab6fb9b453b36975e9ab650d2552", + "HG002_Revio.paraphase.bam.bai:md5,7146463306700bc589b4085c3404bac3", + "HG002_Revio.paraphase.json:md5,03ba9306a2bea70a817e4b2ef32d55b4", + [ + "HG002_Revio_hba.vcf.gz:md5,fb0207f30c5bb0e3beba699e147feed9", + "HG002_Revio_hba.vcf.gz.tbi:md5,63656171e041cf226e8b312c3e989eee" + ] + ] + ], + [ + "test_single.ped:md5,bd5cec27ba7337a85cf98e787131e2b5" + ], + [ + [ + [ + [ + "HG002_Revio_phased.vcf.gz:md5,cde30af0e4f160e91b9db0fcebebc2d1", + "HG002_Revio_phased.vcf.gz.tbi:md5,3e2fc64bb2f893b44dcf24817b4632f3" + ] + ], + [ + [ + "HG002_Revio_stats.blocks.tsv:md5,eaf8f60522034f52b3a45ced6ebed2ea", + "HG002_Revio_stats.stats.tsv:md5,b571fcb3ef8a9e7921dd2824cfc1f549" + ] + ] + ] + ], + [ + "nf_core_pipeline_software_mqc_versions.yml:md5,3675babbfa3ff94ad52a8d090e42545e", + "params_2024-09-20_14-33-35.json:md5,ef85e454ae8828ddf71282d9aa407fb2" + ], + [ + [ + [ + [ + "HG002_Revio_cramino_aligned_phased.arrow:md5,72df2934ff8aa7e1bf8cf8a4881a0d2a", + "HG002_Revio_cramino_aligned_phased.txt:md5,3af7900149aa0b16e1f858feed041aaa" + ] + ], + [ + [ + "HG002_Revio_cramino_aligned.arrow:md5,72df2934ff8aa7e1bf8cf8a4881a0d2a", + "HG002_Revio_cramino_aligned.txt:md5,10dc53594d12a53b793f8c8d4382b1fb" + ] + ] + ], + [ + [ + "HG002_Revio.mosdepth.global.dist.txt:md5,6186315d4d65eda85553af82a98829d1", + "HG002_Revio.mosdepth.region.dist.txt:md5,c6c7ee8f056b8b2b92c97ec472b1db16", + "HG002_Revio.mosdepth.summary.txt:md5,35c51f1ad9d2856d1e6446205f19a8e3", + "HG002_Revio.regions.bed.gz:md5,e051f64c7a780d67ea6727a327dd4281", + "HG002_Revio.regions.bed.gz.csi:md5,026eef1c69fb4aa3a1687463fe2088ab" + ] + ], + [ + [ + [ + "test_single.html:md5,d05e0eceb70ada3a0c25f99a16ad1889", + "test_single.pairs.tsv:md5,4a0988fc3c0fe5cfd5dd205fe6755595", + "test_single.samples.tsv:md5,1685dc6cb8c6b9806ca636662980d686" + ] + ] + ] + ], + [ + [ + [ + "HG002_Revio_fastqc.html:md5,0337b9b2bb1368340c79624051d97363", + "HG002_Revio_fastqc.zip:md5,0b4dde7cf60185c165e61b689f246787" + ] + ], + [ + [ + "HG002_PacBio_Revio.fastq.gz.tsv.zst:md5,4b073293b3e771d19b4cfdb07909571b" + ] + ] + ], + [ + [ + [ + [ + "test_single_sniffles.vcf.gz:md5,8386b2d30b0e77a644f26c820013df3f", + "test_single_sniffles.vcf.gz.tbi:md5,6fd9ceb01d7baec1b96ecb3b29583e0d" + ] + ], + [ + [ + "HG002_Revio_sniffles.snf:md5,b2d5a63bb00cabcb2527d361721f6fa1", + "HG002_Revio_sniffles.vcf.gz:md5,9b69d2d3f79130b6f483d12855ab07fa", + "HG002_Revio_sniffles.vcf.gz.tbi:md5,4d5ed6747851d968a0b9b51d0e3558b1" + ] + ] + ] + ] + ], "single_end": false }, "out.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" @@ -31,7 +191,7 @@ ], "3": [ - "versions.yml:md5,366aba7250a7ed36b3a0fa4b534ad33d" + "versions.yml:md5,5d810c4fbc154928fabfe136fad38704" ], "csi": [ @@ -42,21 +202,181 @@ "vcf": [ [ { - "id": "out", + "id": [ + [ + [ + "HG002_Revio_phased.bam:md5,64e1d1ed3d180589193c13f2c94d1098", + "HG002_Revio_phased.bam.bai:md5,bb768f48be5144262c0b713ef183d152" + ] + ], + [ + [ + [ + "HG002_Revio.asm.bp.hap1.p_ctg.assembly_summary:md5,e4da3107f2421d42c6e2f59bff4e47d9", + "HG002_Revio.asm.bp.hap1.p_ctg.fasta.gz:md5,eff16bf92abff02c36cceb2eb5a9871c", + "HG002_Revio.asm.bp.hap2.p_ctg.assembly_summary:md5,bf908610472e602fd986b9d4a4d58b9e", + "HG002_Revio.asm.bp.hap2.p_ctg.fasta.gz:md5,e28c886baffe24c1a2972a1d95b1b250" + ] + ] + ], + [ + [ + [ + "HG002_Revio.dip.bed:md5,4e3cde029bceaa9363402e997f12f280", + "HG002_Revio.dip.vcf.gz:md5,9259613d7b01347b2d817d4e547c4203", + "HG002_Revio.hap1.bam:md5,5c739e8b3c2f659c3847498848280bbf", + "HG002_Revio.hap1.bam.bai:md5,a57472fa9365470db09f5ea8c7a7420a", + "HG002_Revio.hap1.bed:md5,3d75c9538e748a7672b934bdbde90df3", + "HG002_Revio.hap1.paf.gz:md5,46a3056ecd833d9a932c53fc46a3cafc", + "HG002_Revio.hap1.sam.gz:md5,0a161b44c29c0581ada87fee50be38c2", + "HG002_Revio.hap1.var.gz:md5,173218f6c3f5f067e0932a8331f12e3d", + "HG002_Revio.hap2.bam:md5,df63e7bb5dcee6ca5e731272dad0eb99", + "HG002_Revio.hap2.bam.bai:md5,ed8184223edea0297c7f9283ea7927bf", + "HG002_Revio.hap2.bed:md5,9ac411d49f08a8ec70e4792890e9faf9", + "HG002_Revio.hap2.paf.gz:md5,a99e451e4af96a7ab120cedd49eea618", + "HG002_Revio.hap2.sam.gz:md5,410acad899eda2f0a4a3e1eb4acf81cb", + "HG002_Revio.hap2.var.gz:md5,53dc16fc893a529a95067da161b4dad6", + "HG002_Revio.pair.vcf.gz:md5,a390558ab50ce0dc9efec070b1c70c22" + ] + ] + ], + [ + [ + [ + "HG002_Revio.HG002_Revio.copynum.bedgraph:md5,517bc59c1b235490c79aa8319437b033", + "HG002_Revio.HG002_Revio.depth.bw:md5,20757c985f4713b8568dee05765db701", + "HG002_Revio.HG002_Revio.maf.bw:md5,4699d7a664277863f06eb48c3cba3c41", + "HG002_Revio.HG002_Revio.vcf.gz:md5,771f7d9ecbd161dedfbdd053ceff0d52", + "HG002_Revio.HG002_Revio.vcf.gz.tbi:md5,65d6930f79e626a5542091b7a419dc2b", + "HG002_Revio.log:md5,3b47302d7e8e0ffac4841123de74ffb3" + ] + ] + ], + [ + [ + [ + [ + + ], + [ + + ] + ] + ] + ], + [ + [ + "HG002_Revio.paraphase.bam:md5,839cab6fb9b453b36975e9ab650d2552", + "HG002_Revio.paraphase.bam.bai:md5,7146463306700bc589b4085c3404bac3", + "HG002_Revio.paraphase.json:md5,03ba9306a2bea70a817e4b2ef32d55b4", + [ + "HG002_Revio_hba.vcf.gz:md5,fb0207f30c5bb0e3beba699e147feed9", + "HG002_Revio_hba.vcf.gz.tbi:md5,63656171e041cf226e8b312c3e989eee" + ] + ] + ], + [ + "test_single.ped:md5,bd5cec27ba7337a85cf98e787131e2b5" + ], + [ + [ + [ + [ + "HG002_Revio_phased.vcf.gz:md5,cde30af0e4f160e91b9db0fcebebc2d1", + "HG002_Revio_phased.vcf.gz.tbi:md5,3e2fc64bb2f893b44dcf24817b4632f3" + ] + ], + [ + [ + "HG002_Revio_stats.blocks.tsv:md5,eaf8f60522034f52b3a45ced6ebed2ea", + "HG002_Revio_stats.stats.tsv:md5,b571fcb3ef8a9e7921dd2824cfc1f549" + ] + ] + ] + ], + [ + "nf_core_pipeline_software_mqc_versions.yml:md5,3675babbfa3ff94ad52a8d090e42545e", + "params_2024-09-20_14-33-35.json:md5,ef85e454ae8828ddf71282d9aa407fb2" + ], + [ + [ + [ + [ + "HG002_Revio_cramino_aligned_phased.arrow:md5,72df2934ff8aa7e1bf8cf8a4881a0d2a", + "HG002_Revio_cramino_aligned_phased.txt:md5,3af7900149aa0b16e1f858feed041aaa" + ] + ], + [ + [ + "HG002_Revio_cramino_aligned.arrow:md5,72df2934ff8aa7e1bf8cf8a4881a0d2a", + "HG002_Revio_cramino_aligned.txt:md5,10dc53594d12a53b793f8c8d4382b1fb" + ] + ] + ], + [ + [ + "HG002_Revio.mosdepth.global.dist.txt:md5,6186315d4d65eda85553af82a98829d1", + "HG002_Revio.mosdepth.region.dist.txt:md5,c6c7ee8f056b8b2b92c97ec472b1db16", + "HG002_Revio.mosdepth.summary.txt:md5,35c51f1ad9d2856d1e6446205f19a8e3", + "HG002_Revio.regions.bed.gz:md5,e051f64c7a780d67ea6727a327dd4281", + "HG002_Revio.regions.bed.gz.csi:md5,026eef1c69fb4aa3a1687463fe2088ab" + ] + ], + [ + [ + [ + "test_single.html:md5,d05e0eceb70ada3a0c25f99a16ad1889", + "test_single.pairs.tsv:md5,4a0988fc3c0fe5cfd5dd205fe6755595", + "test_single.samples.tsv:md5,1685dc6cb8c6b9806ca636662980d686" + ] + ] + ] + ], + [ + [ + [ + "HG002_Revio_fastqc.html:md5,0337b9b2bb1368340c79624051d97363", + "HG002_Revio_fastqc.zip:md5,0b4dde7cf60185c165e61b689f246787" + ] + ], + [ + [ + "HG002_PacBio_Revio.fastq.gz.tsv.zst:md5,4b073293b3e771d19b4cfdb07909571b" + ] + ] + ], + [ + [ + [ + [ + "test_single_sniffles.vcf.gz:md5,8386b2d30b0e77a644f26c820013df3f", + "test_single_sniffles.vcf.gz.tbi:md5,6fd9ceb01d7baec1b96ecb3b29583e0d" + ] + ], + [ + [ + "HG002_Revio_sniffles.snf:md5,b2d5a63bb00cabcb2527d361721f6fa1", + "HG002_Revio_sniffles.vcf.gz:md5,9b69d2d3f79130b6f483d12855ab07fa", + "HG002_Revio_sniffles.vcf.gz.tbi:md5,4d5ed6747851d968a0b9b51d0e3558b1" + ] + ] + ] + ] + ], "single_end": false }, "out.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "versions": [ - "versions.yml:md5,366aba7250a7ed36b3a0fa4b534ad33d" + "versions.yml:md5,5d810c4fbc154928fabfe136fad38704" ] } ], "meta": { "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nextflow": "24.04.4" }, - "timestamp": "2024-09-17T12:13:09.016457424" + "timestamp": "2024-10-25T09:33:18.256743972" } } \ No newline at end of file diff --git a/modules/local/add_most_severe_consequence.nf b/modules/local/add_most_severe_consequence.nf index 236d3881..26a4fce3 100644 --- a/modules/local/add_most_severe_consequence.nf +++ b/modules/local/add_most_severe_consequence.nf @@ -31,7 +31,7 @@ process ADD_MOST_SEVERE_CSQ { cat <<-END_VERSIONS > versions.yml "${task.process}": - add_most_severe_consequence: v1.0 + add_most_severe_consequence: 1.0 python: \$(python --version | sed 's/Python //g') END_VERSIONS """ @@ -43,7 +43,7 @@ process ADD_MOST_SEVERE_CSQ { cat <<-END_VERSIONS > versions.yml "${task.process}": - add_most_severe_consequence: v1.0 + add_most_severe_consequence: 1.0 python: \$(python --version | sed 's/Python //g') END_VERSIONS """ diff --git a/modules/local/add_most_severe_pli.nf b/modules/local/add_most_severe_pli.nf index c7c74217..16286b49 100644 --- a/modules/local/add_most_severe_pli.nf +++ b/modules/local/add_most_severe_pli.nf @@ -29,7 +29,7 @@ process ADD_MOST_SEVERE_PLI { cat <<-END_VERSIONS > versions.yml "${task.process}": - add_most_severe_pli: v1.0 + add_most_severe_pli: 1.0 python: \$(python --version | sed 's/Python //g') END_VERSIONS """ @@ -41,7 +41,7 @@ process ADD_MOST_SEVERE_PLI { cat <<-END_VERSIONS > versions.yml "${task.process}": - add_most_severe_pli: v1.0 + add_most_severe_pli: 1.0 python: \$(python --version | sed 's/Python //g') END_VERSIONS """ diff --git a/modules/local/create_pedigree_file/main.nf b/modules/local/create_pedigree_file/main.nf index 4bbe3344..10ab7e81 100644 --- a/modules/local/create_pedigree_file/main.nf +++ b/modules/local/create_pedigree_file/main.nf @@ -36,7 +36,7 @@ process CREATE_PEDIGREE_FILE { cat <<-END_VERSIONS > versions.yml "${task.process}": - create_pedigree_file: v1.0 + create_pedigree_file: 1.0 python: \$(python --version | sed 's/Python //g') END_VERSIONS """ @@ -47,7 +47,7 @@ process CREATE_PEDIGREE_FILE { cat <<-END_VERSIONS > versions.yml "${task.process}": - create_pedigree_file: v1.0 + create_pedigree_file: 1.0 python: \$(python --version | sed 's/Python //g') END_VERSIONS """ diff --git a/modules/local/trgt/main.nf b/modules/local/trgt/main.nf index 0c493bf4..3d2a34db 100644 --- a/modules/local/trgt/main.nf +++ b/modules/local/trgt/main.nf @@ -42,7 +42,7 @@ process TRGT { cat <<-END_VERSIONS > versions.yml "${task.process}": - trgt: \$(echo \$(trgt -V) | sed 's/TRGT //' ) + trgt: \$(echo \$(trgt -V) | sed 's/trgt //' ) END_VERSIONS """ } diff --git a/nf-test.config b/nf-test.config index bf2b1f87..7975ed4e 100644 --- a/nf-test.config +++ b/nf-test.config @@ -1,11 +1,16 @@ config { + // location for all nf-tests + testsDir "." + // nf-test directory including temporary files for each test + workDir System.getenv("NFT_WORKDIR") ?: ".nf-test" + // location of an optional nextflow.config file specific for executing tests + configFile "conf/test.config" + // run all test with defined profile(s) from the main nextflow.config + profile "test" + // Include plugins plugins { - load "nft-bam@0.3.0" + load "nft-bam@0.4.0" + load "nft-utils@0.0.3" load "nft-vcf@1.0.7" } - testsDir "." - workDir ".nf-test" - configFile "tests/nextflow.config" - profile "docker" - } diff --git a/subworkflows/local/call_svs/tests/main.nf.test.snap b/subworkflows/local/call_svs/tests/main.nf.test.snap index f8305a24..1b63321b 100644 --- a/subworkflows/local/call_svs/tests/main.nf.test.snap +++ b/subworkflows/local/call_svs/tests/main.nf.test.snap @@ -44,7 +44,7 @@ "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", - "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", + "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff" ], "ch_multisample_tbi": [ @@ -89,7 +89,7 @@ "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", - "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", + "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff" ] } @@ -98,7 +98,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-16T13:44:23.698467142" + "timestamp": "2024-10-25T09:37:35.431766327" }, "2 samples - [bam, bai], fasta, fai, [], [] - sniffles -stub": { "content": [ @@ -146,8 +146,8 @@ "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", - "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", - "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", + "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", + "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff" ] @@ -156,7 +156,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-16T13:44:53.455933848" + "timestamp": "2024-10-25T09:38:06.193254553" }, "1 sample - [bam, bai], fasta, fai, [], [] - sniffles -stub": { "content": [ @@ -203,7 +203,7 @@ "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", - "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", + "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff" ], "ch_multisample_tbi": [ @@ -248,7 +248,7 @@ "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", - "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", + "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff" ] } @@ -257,7 +257,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-16T13:44:09.06083732" + "timestamp": "2024-10-25T09:37:20.105508841" }, "1 sample - [bam, bai], fasta, fai, [], [] - severus": { "content": [ @@ -270,7 +270,7 @@ "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", - "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", + "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f" ] @@ -279,7 +279,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-15T14:15:23.408063142" + "timestamp": "2024-10-25T09:35:35.527500054" }, "1 sample - [bam, bai], fasta, fai, [], bed - severus -stub": { "content": [ @@ -325,7 +325,7 @@ "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", - "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", + "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f" ], @@ -370,7 +370,7 @@ "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", - "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", + "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f" ] @@ -380,7 +380,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-16T13:45:21.860327776" + "timestamp": "2024-10-25T09:38:35.435770849" }, "1 sample - [bam, bai], fasta, fai, [], bed - severus": { "content": [ @@ -393,7 +393,7 @@ "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", - "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", + "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f" ] @@ -402,7 +402,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-15T14:22:26.560844782" + "timestamp": "2024-10-25T09:36:12.743102423" }, "2 samples - [bam, bai], fasta, fai, [], [] - sniffles": { "content": [ @@ -812,8 +812,8 @@ "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", - "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", - "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", + "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", + "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff" ] @@ -822,7 +822,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-16T15:28:54.396895631" + "timestamp": "2024-10-25T09:35:00.89925022" }, "1 sample - [bam, bai], fasta, fai, [], bed - sniffles -stub": { "content": [ @@ -869,7 +869,7 @@ "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", - "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", + "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff" ], "ch_multisample_tbi": [ @@ -914,7 +914,7 @@ "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", - "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", + "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff" ] } @@ -923,7 +923,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-16T13:44:38.364811814" + "timestamp": "2024-10-25T09:37:50.352129954" }, "1 sample - [bam, bai], fasta, fai, [], [] - severus -stub": { "content": [ @@ -969,7 +969,7 @@ "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", - "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", + "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f" ], @@ -1014,7 +1014,7 @@ "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", - "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", + "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f" ] @@ -1024,7 +1024,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-16T13:45:07.510780167" + "timestamp": "2024-10-25T09:38:20.761201132" }, "1 sample - [bam, bai], fasta, fai, [], [] - sniffles": { "content": [ @@ -1036,7 +1036,7 @@ "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", - "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", + "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff" ] ], @@ -1044,7 +1044,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-15T14:13:12.470120636" + "timestamp": "2024-10-25T09:34:19.713017708" }, "1 sample - [bam, bai], fasta, fai, bed, [] - severus": { "content": [ @@ -1057,7 +1057,7 @@ "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", - "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", + "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f" ] @@ -1066,7 +1066,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-15T14:15:51.175023011" + "timestamp": "2024-10-25T09:35:54.683949942" }, "1 sample - [bam, bai], fasta, fai, [], bed - sniffles": { "content": [ @@ -1078,7 +1078,7 @@ "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", - "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", + "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff" ] ], @@ -1086,7 +1086,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-15T14:14:31.65301129" + "timestamp": "2024-10-25T09:35:17.140931933" }, "2 samples - [bam, bai], fasta, fai, [], [] - severus -stub": { "content": [ @@ -1132,8 +1132,8 @@ "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", - "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", - "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", + "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", + "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f", @@ -1144,7 +1144,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-16T13:45:51.452818836" + "timestamp": "2024-10-25T09:39:05.336650014" }, "1 sample - [bam, bai], fasta, fai, bed, [] - severus -stub": { "content": [ @@ -1190,7 +1190,7 @@ "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", - "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", + "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f" ], @@ -1235,7 +1235,7 @@ "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", - "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", + "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f" ] @@ -1245,7 +1245,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-16T13:45:36.486860378" + "timestamp": "2024-10-25T09:38:50.087535371" }, "2 samples - [bam, bai], fasta, fai, [], [] - severus": { "content": [ @@ -1262,8 +1262,8 @@ "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", - "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", - "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", + "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", + "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f", @@ -1274,7 +1274,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-15T14:23:53.641276655" + "timestamp": "2024-10-25T09:37:05.257393263" }, "1 sample - [bam, bai], fasta, fai, bed, [] - sniffles": { "content": [ @@ -1288,7 +1288,7 @@ "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", - "versions.yml:md5,a41129f62453d49bc1979c1a20551d7c", + "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff" ] ], @@ -1296,6 +1296,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-15T14:13:40.532047383" + "timestamp": "2024-10-25T09:34:38.657948226" } } \ No newline at end of file diff --git a/subworkflows/local/scatter_genome/tests/main.nf.test.snap b/subworkflows/local/scatter_genome/tests/main.nf.test.snap index 163401f0..6179981a 100644 --- a/subworkflows/local/scatter_genome/tests/main.nf.test.snap +++ b/subworkflows/local/scatter_genome/tests/main.nf.test.snap @@ -1,54 +1,65 @@ { - "fai, [], bed, true, 3": { + "[], bed, false, true, 3": { "content": [ { "0": [ [ { - "id": "test" + "id": "chr22" }, - "genome.fasta.bed:md5,87a15eb9c2ff20ccd5cd8735a28708f7" + "chr22.bed:md5,88ebd3fd77139b3d33af226231eff0df" ] ], "1": [ [ - "1.bed:md5,87a15eb9c2ff20ccd5cd8735a28708f7", - 1 + "1.bed:md5,37978db9b095a29ebbd64f65dd8f13b3", + 2 + ], + [ + "2.bed:md5,0da4774e61b9c9005122e46f24522604", + 2 ] ], "2": [ "versions.yml:md5,8174fa0cc1f95ed4b353a948a2cbd4e9", "versions.yml:md5,beb3374eccd225096e2f7c8ecd3a28be", - "versions.yml:md5,d69b1c1fc4e665c357d541ea3b0a0240", - "versions.yml:md5,e70d387c0dd30530a3e7fe2846ddffe1" + "versions.yml:md5,d69b1c1fc4e665c357d541ea3b0a0240" ], "bed": [ [ { - "id": "test" + "id": "chr22" }, - "genome.fasta.bed:md5,87a15eb9c2ff20ccd5cd8735a28708f7" + "chr22.bed:md5,88ebd3fd77139b3d33af226231eff0df" ] ], "bed_intervals": [ [ - "1.bed:md5,87a15eb9c2ff20ccd5cd8735a28708f7", - 1 + "1.bed:md5,37978db9b095a29ebbd64f65dd8f13b3", + 2 + ], + [ + "2.bed:md5,0da4774e61b9c9005122e46f24522604", + 2 ] ], "versions": [ "versions.yml:md5,8174fa0cc1f95ed4b353a948a2cbd4e9", "versions.yml:md5,beb3374eccd225096e2f7c8ecd3a28be", - "versions.yml:md5,d69b1c1fc4e665c357d541ea3b0a0240", - "versions.yml:md5,e70d387c0dd30530a3e7fe2846ddffe1" + "versions.yml:md5,d69b1c1fc4e665c357d541ea3b0a0240" ] }, [ - "chr22\t0\t40001" + "chr22\t0\t1000", + "chr22\t500\t1500", + "chr22\t2000\t3000" ], [ [ - "chr22\t0\t40001" + "chr22\t0\t1500" + ], + [ + "chr22\t2000\t3000" ] ] ], @@ -56,181 +67,178 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-07-11T13:03:46.414904212" + "timestamp": "2024-07-11T13:06:34.382235567" }, - "[], bed, false, false, 3": { + "fai, [], bed, true, 3": { "content": [ { "0": [ [ { - "id": "chr22" + "id": { + "id": "test" + } }, - "chr22.bed:md5,3b0b598acca89a84aa414e4c95abec1f" + "genome.fasta.bed:md5,87a15eb9c2ff20ccd5cd8735a28708f7" ] ], "1": [ - + [ + "1.bed:md5,87a15eb9c2ff20ccd5cd8735a28708f7", + 1 + ] ], "2": [ - + "versions.yml:md5,8174fa0cc1f95ed4b353a948a2cbd4e9", + "versions.yml:md5,beb3374eccd225096e2f7c8ecd3a28be", + "versions.yml:md5,d69b1c1fc4e665c357d541ea3b0a0240", + "versions.yml:md5,e70d387c0dd30530a3e7fe2846ddffe1" ], "bed": [ [ { - "id": "chr22" + "id": { + "id": "test" + } }, - "chr22.bed:md5,3b0b598acca89a84aa414e4c95abec1f" + "genome.fasta.bed:md5,87a15eb9c2ff20ccd5cd8735a28708f7" ] ], "bed_intervals": [ - + [ + "1.bed:md5,87a15eb9c2ff20ccd5cd8735a28708f7", + 1 + ] ], "versions": [ - + "versions.yml:md5,8174fa0cc1f95ed4b353a948a2cbd4e9", + "versions.yml:md5,beb3374eccd225096e2f7c8ecd3a28be", + "versions.yml:md5,d69b1c1fc4e665c357d541ea3b0a0240", + "versions.yml:md5,e70d387c0dd30530a3e7fe2846ddffe1" ] }, [ - "chr22\t0\t1000" + "chr22\t0\t40001" ], [ - + [ + "chr22\t0\t40001" + ] ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-07-11T12:53:03.541050122" + "timestamp": "2024-10-24T16:45:01.511512303" }, - "[], bed, false, true, 3": { + "fai, [], true, true, 3": { "content": [ { "0": [ [ { - "id": "chr22" + "id": { + "id": "test" + } }, - "chr22.bed:md5,88ebd3fd77139b3d33af226231eff0df" + "genome.fasta.bed:md5,87a15eb9c2ff20ccd5cd8735a28708f7" ] ], "1": [ [ - "1.bed:md5,37978db9b095a29ebbd64f65dd8f13b3", - 2 - ], - [ - "2.bed:md5,0da4774e61b9c9005122e46f24522604", - 2 + "1.bed:md5,87a15eb9c2ff20ccd5cd8735a28708f7", + 1 ] ], "2": [ "versions.yml:md5,8174fa0cc1f95ed4b353a948a2cbd4e9", "versions.yml:md5,beb3374eccd225096e2f7c8ecd3a28be", - "versions.yml:md5,d69b1c1fc4e665c357d541ea3b0a0240" + "versions.yml:md5,d69b1c1fc4e665c357d541ea3b0a0240", + "versions.yml:md5,e70d387c0dd30530a3e7fe2846ddffe1" ], "bed": [ [ { - "id": "chr22" + "id": { + "id": "test" + } }, - "chr22.bed:md5,88ebd3fd77139b3d33af226231eff0df" + "genome.fasta.bed:md5,87a15eb9c2ff20ccd5cd8735a28708f7" ] ], "bed_intervals": [ [ - "1.bed:md5,37978db9b095a29ebbd64f65dd8f13b3", - 2 - ], - [ - "2.bed:md5,0da4774e61b9c9005122e46f24522604", - 2 + "1.bed:md5,87a15eb9c2ff20ccd5cd8735a28708f7", + 1 ] ], "versions": [ "versions.yml:md5,8174fa0cc1f95ed4b353a948a2cbd4e9", "versions.yml:md5,beb3374eccd225096e2f7c8ecd3a28be", - "versions.yml:md5,d69b1c1fc4e665c357d541ea3b0a0240" + "versions.yml:md5,d69b1c1fc4e665c357d541ea3b0a0240", + "versions.yml:md5,e70d387c0dd30530a3e7fe2846ddffe1" ] }, [ - "chr22\t0\t1000", - "chr22\t500\t1500", - "chr22\t2000\t3000" + "chr22\t0\t40001" ], [ [ - "chr22\t0\t1500" - ], - [ - "chr22\t2000\t3000" + "chr22\t0\t40001" ] ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-07-11T13:06:34.382235567" + "timestamp": "2024-10-24T16:44:33.772383165" }, - "fai, [], true, true, 3": { + "[], bed, false, false, 3": { "content": [ { "0": [ [ { - "id": "test" + "id": "chr22" }, - "genome.fasta.bed:md5,87a15eb9c2ff20ccd5cd8735a28708f7" + "chr22.bed:md5,3b0b598acca89a84aa414e4c95abec1f" ] ], "1": [ - [ - "1.bed:md5,87a15eb9c2ff20ccd5cd8735a28708f7", - 1 - ] + ], "2": [ - "versions.yml:md5,8174fa0cc1f95ed4b353a948a2cbd4e9", - "versions.yml:md5,beb3374eccd225096e2f7c8ecd3a28be", - "versions.yml:md5,d69b1c1fc4e665c357d541ea3b0a0240", - "versions.yml:md5,e70d387c0dd30530a3e7fe2846ddffe1" + ], "bed": [ [ { - "id": "test" + "id": "chr22" }, - "genome.fasta.bed:md5,87a15eb9c2ff20ccd5cd8735a28708f7" + "chr22.bed:md5,3b0b598acca89a84aa414e4c95abec1f" ] ], "bed_intervals": [ - [ - "1.bed:md5,87a15eb9c2ff20ccd5cd8735a28708f7", - 1 - ] + ], "versions": [ - "versions.yml:md5,8174fa0cc1f95ed4b353a948a2cbd4e9", - "versions.yml:md5,beb3374eccd225096e2f7c8ecd3a28be", - "versions.yml:md5,d69b1c1fc4e665c357d541ea3b0a0240", - "versions.yml:md5,e70d387c0dd30530a3e7fe2846ddffe1" + ] }, [ - "chr22\t0\t40001" + "chr22\t0\t1000" ], [ - [ - "chr22\t0\t40001" - ] + ] ], "meta": { "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-07-11T13:03:35.848426979" + "timestamp": "2024-07-11T12:53:03.541050122" }, "fai, [], true, false, []": { "content": [ @@ -238,7 +246,9 @@ "0": [ [ { - "id": "test" + "id": { + "id": "test" + } }, "genome.fasta.bed:md5,87a15eb9c2ff20ccd5cd8735a28708f7" ] @@ -252,7 +262,9 @@ "bed": [ [ { - "id": "test" + "id": { + "id": "test" + } }, "genome.fasta.bed:md5,87a15eb9c2ff20ccd5cd8735a28708f7" ] @@ -272,9 +284,9 @@ ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-07-11T13:03:25.327078297" + "timestamp": "2024-10-24T16:44:24.76494349" } } \ No newline at end of file diff --git a/subworkflows/local/short_variant_calling/tests/main.nf.test.snap b/subworkflows/local/short_variant_calling/tests/main.nf.test.snap index 49a2ada5..1755ef49 100644 --- a/subworkflows/local/short_variant_calling/tests/main.nf.test.snap +++ b/subworkflows/local/short_variant_calling/tests/main.nf.test.snap @@ -43,10 +43,10 @@ "4": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", + "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" ], "combined_bcf": [ @@ -90,10 +90,10 @@ "versions": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", + "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" ] } @@ -102,7 +102,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-08T13:02:44.856891805" + "timestamp": "2024-10-25T09:40:03.879250426" }, "1 sample - 2 bed, fasta, fai, bed, [] - stub": { "content": [ @@ -166,12 +166,12 @@ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", - "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", + "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", + "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" ], @@ -234,12 +234,12 @@ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", - "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", + "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", + "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" ] @@ -249,7 +249,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-08T11:10:32.273873705" + "timestamp": "2024-10-25T09:42:56.764594137" }, "1 sample - 1 bed, fasta, fai, bed, []": { "content": [ @@ -295,10 +295,10 @@ "4": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", + "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" ], "combined_bcf": [ @@ -342,10 +342,10 @@ "versions": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", + "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" ] } @@ -354,7 +354,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-08T13:03:15.564996428" + "timestamp": "2024-10-25T09:40:32.794032818" }, "2 samples - 2 bed, fasta, fai, bed, par_bed": { "content": [ @@ -434,14 +434,14 @@ "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", - "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", + "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", + "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" ], @@ -520,14 +520,14 @@ "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", - "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", + "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", + "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" ] @@ -537,7 +537,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-08T13:04:56.502337737" + "timestamp": "2024-10-25T09:42:10.61904887" }, "2 samples - 2 bed, fasta, fai, bed, [] - stub": { "content": [ @@ -617,14 +617,14 @@ "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", - "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", + "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", + "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" ], @@ -703,14 +703,14 @@ "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", - "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", + "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", + "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" ] @@ -720,7 +720,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-08T11:10:45.14685419" + "timestamp": "2024-10-25T09:43:09.654620289" }, "2 samples - 2 bed, fasta, fai, bed, par_bed - stub": { "content": [ @@ -800,14 +800,14 @@ "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", - "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", + "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", + "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" ], @@ -886,14 +886,14 @@ "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", - "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", + "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", + "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" ] @@ -903,7 +903,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-08T11:10:58.271571777" + "timestamp": "2024-10-25T09:43:22.844047056" }, "1 sample - 1 bed, fasta, fai, bed, [] - stub": { "content": [ @@ -949,10 +949,10 @@ "4": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", + "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" ], "combined_bcf": [ @@ -996,10 +996,10 @@ "versions": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", + "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" ] } @@ -1008,7 +1008,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-08T11:10:20.582551857" + "timestamp": "2024-10-25T09:42:44.538312054" }, "1 sample - no bed, fasta, fai, [], []": { "content": [ @@ -1035,7 +1035,7 @@ [ { "id": [ - + ], "project": null, "contains_affected": false @@ -1047,7 +1047,7 @@ [ { "id": [ - + ], "project": null, "contains_affected": false @@ -1058,17 +1058,17 @@ "4": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", + "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" ], "combined_bcf": [ [ { "id": [ - + ], "project": null, "contains_affected": false @@ -1080,7 +1080,7 @@ [ { "id": [ - + ], "project": null, "contains_affected": false @@ -1109,10 +1109,10 @@ "versions": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", + "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" ] } @@ -1121,7 +1121,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-08T13:02:14.428633443" + "timestamp": "2024-10-25T09:39:34.803782002" }, "1 sample - 2 bed, fasta, fai, bed, []": { "content": [ @@ -1185,12 +1185,12 @@ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", - "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", + "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", + "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" ], @@ -1253,12 +1253,12 @@ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", - "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", + "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", + "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" ] @@ -1268,7 +1268,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-08T13:03:47.115482891" + "timestamp": "2024-10-25T09:41:03.437551855" }, "2 samples - 2 bed, fasta, fai, bed, []": { "content": [ @@ -1348,14 +1348,14 @@ "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", - "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", + "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", + "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" ], @@ -1434,14 +1434,14 @@ "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", - "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", + "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", + "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" ] @@ -1451,7 +1451,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-08T13:04:21.670883764" + "timestamp": "2024-10-25T09:41:37.132064291" }, "1 sample - no bed, fasta, fai, [], [] - stub": { "content": [ @@ -1478,7 +1478,7 @@ [ { "id": [ - + ], "project": null, "contains_affected": false @@ -1490,7 +1490,7 @@ [ { "id": [ - + ], "project": null, "contains_affected": false @@ -1501,17 +1501,17 @@ "4": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", + "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" ], "combined_bcf": [ [ { "id": [ - + ], "project": null, "contains_affected": false @@ -1523,7 +1523,7 @@ [ { "id": [ - + ], "project": null, "contains_affected": false @@ -1552,10 +1552,10 @@ "versions": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", + "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" ] } @@ -1564,7 +1564,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-08T11:09:57.170768741" + "timestamp": "2024-10-25T09:42:22.040964953" }, "1 sample - 1 bed, fasta, fai, [], [] - stub": { "content": [ @@ -1610,10 +1610,10 @@ "4": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", + "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" ], "combined_bcf": [ @@ -1657,10 +1657,10 @@ "versions": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,4cc3d41c069a8739916c98834c001f7a", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", + "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" ] } @@ -1669,6 +1669,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-08T11:10:09.046208933" + "timestamp": "2024-10-25T09:42:33.197137178" } -} +} \ No newline at end of file diff --git a/tests/.nftignore b/tests/.nftignore new file mode 100644 index 00000000..3499afeb --- /dev/null +++ b/tests/.nftignore @@ -0,0 +1,18 @@ +aligned_reads/**/*.{bam,bai} +cnv_calling/**/*.log +multiqc/multiqc_data/multiqc.log +multiqc/multiqc_data/multiqc_data.json +multiqc/multiqc_data/multiqc_software_versions.txt +multiqc/multiqc_data/multiqc_somalier.txt +multiqc/multiqc_data/multiqc_sources.txt +multiqc/multiqc_report.html +paraphase/**/*.{vcf.gz,tbi,bam,bai,json} +phased_variants/**/*.{vcf.gz,tbi} +pipeline_info/*.{html,json,txt,yml} +qc/cramino/**/*.txt +qc/fastqc/**/*.zip +qc/somalier/**/*.{html,tsv} +repeat_annotation/**/*.{vcf.gz,tbi} +repeat_calling/**/*.{vcf.gz,tbi,bam,bai} +snvs/**/*.{vcf.gz,tbi,txt} +svs/**/*.{vcf.gz,tbi} diff --git a/tests/.nftignore_unstable_variants b/tests/.nftignore_unstable_variants new file mode 100644 index 00000000..56a5b475 --- /dev/null +++ b/tests/.nftignore_unstable_variants @@ -0,0 +1,4 @@ +paraphase/**/*.vcf.gz +phased_variants/**/*.vcf.gz +snvs/**/*.vcf.gz +svs/**/*.vcf.gz diff --git a/tests/main.nf.test b/tests/main.nf.test deleted file mode 100644 index 35fac2da..00000000 --- a/tests/main.nf.test +++ /dev/null @@ -1,434 +0,0 @@ -nextflow_pipeline { - - name "Test pipeline GENOMICMEDICINESWEDEN_NALLO" - script "../main.nf" - profile "test" - tag "PIPELINE" - config "../conf/test.config" - - test("test profile") { - tag "samplesheet" - - when { - params { - pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/7be7114cb132be8cae9343f225bcf42ec11ecc1b/' - input = params.pipelines_testdata_base_path + 'testdata/samplesheet.csv' - outdir = "$outputDir" - } - } - - then { - assertAll ( - { assert workflow.success }, - // Assert with snapshot multisample - { assert snapshot( - file("$outputDir/pedigree/test.ped"), - file("$outputDir/qc/somalier/relate/test/test.pairs.tsv"), - file("$outputDir/qc/somalier/relate/test/test.samples.tsv"), - file("$outputDir/qc/somalier/relate/test/test.html"), - file("$outputDir/multiqc/multiqc_data/multiqc_citations.txt"), - file("$outputDir/multiqc/multiqc_data/multiqc_fastqc.txt"), - file("$outputDir/multiqc/multiqc_data/multiqc_somalier.txt"), - // Assert with snapshot HG002_Revio - bam("$outputDir/aligned_reads/HG002_Revio/HG002_Revio_haplotagged.bam", stringency: 'silent').getReadsMD5(), - file("$outputDir/assembly_haplotypes/gfastats/HG002_Revio/HG002_Revio.asm.bp.hap1.p_ctg.assembly_summary"), - file("$outputDir/assembly_haplotypes/gfastats/HG002_Revio/HG002_Revio.asm.bp.hap2.p_ctg.assembly_summary"), - bam("$outputDir/assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap1.bam", stringency: 'silent').getReadsMD5(), - bam("$outputDir/assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap2.bam", stringency: 'silent').getReadsMD5(), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.dip.bed"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap1.bed"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap2.bed"), - file("$outputDir/cnv_calling/hificnv/HG002_Revio/HG002_Revio.copynum.bedgraph"), - file("$outputDir/cnv_calling/hificnv/HG002_Revio/HG002_Revio.depth.bw"), - file("$outputDir/cnv_calling/hificnv/HG002_Revio/HG002_Revio.maf.bw"), - file("$outputDir/qc/mosdepth/HG002_Revio/HG002_Revio.mosdepth.global.dist.txt"), - file("$outputDir/qc/mosdepth/HG002_Revio/HG002_Revio.mosdepth.region.dist.txt"), - file("$outputDir/qc/mosdepth/HG002_Revio/HG002_Revio.mosdepth.summary.txt"), - file("$outputDir/assembly_haplotypes/gfastats/HG002_Revio/HG002_Revio.asm.bp.hap1.p_ctg.fasta.gz"), - file("$outputDir/assembly_haplotypes/gfastats/HG002_Revio/HG002_Revio.asm.bp.hap2.p_ctg.fasta.gz"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.dip.vcf.gz"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap1.paf.gz"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap1.var.gz"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap2.paf.gz"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap2.var.gz"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.pair.vcf.gz"), - path("$outputDir/cnv_calling/hificnv/HG002_Revio/HG002_Revio.vcf.gz").vcf.variantsMD5, - file("$outputDir/cnv_calling/hificnv/HG002_Revio/HG002_Revio.vcf.gz.tbi"), - file("$outputDir/methylation/modkit/pileup/unphased/HG002_Revio/HG002_Revio_modkit_pileup.bed.gz"), - file("$outputDir/methylation/modkit/pileup/unphased/HG002_Revio/HG002_Revio_modkit_pileup.bed.gz.tbi"), - bam("$outputDir/paraphase/HG002_Revio/HG002_Revio.paraphase.bam", stringency: 'silent').getReadsMD5(), - file("$outputDir/qc/cramino/phased/HG002_Revio/HG002_Revio_cramino_aligned_phased.arrow"), - file("$outputDir/qc/cramino/unphased/HG002_Revio/HG002_Revio_cramino_aligned.arrow"), - file("$outputDir/qc/mosdepth/HG002_Revio/HG002_Revio.regions.bed.gz"), - file("$outputDir/qc/mosdepth/HG002_Revio/HG002_Revio.regions.bed.gz.csi"), - file("$outputDir/repeat_calling/trgt/single_sample/HG002_Revio/HG002_Revio_sorted.vcf.gz"), - file("$outputDir/repeat_calling/trgt/single_sample/HG002_Revio/HG002_Revio_sorted.vcf.gz.tbi"), - bam("$outputDir/repeat_calling/trgt/single_sample/HG002_Revio/HG002_Revio_spanning_sorted.bam", stringency: 'silent').getReadsMD5(), - file("$outputDir/snvs/stats/single_sample/HG002_Revio.vcf.gz.bcftools_stats.txt").readLines()[0..2], - ).match() }, - // Assert exists multisample - { assert new File("$outputDir/databases/echtvar/encode/test/test.zip").exists() }, - { assert new File("$outputDir/multiqc/multiqc_data/multiqc_data.json").exists() }, - { assert new File("$outputDir/multiqc/multiqc_data/multiqc.log").exists() }, - { assert new File("$outputDir/multiqc/multiqc_report.html").exists() }, - { assert new File("$outputDir/multiqc/multiqc_data/multiqc_general_stats.txt").exists() }, - { assert new File("$outputDir/multiqc/multiqc_data/multiqc_sources.txt").exists() }, - { assert new File("$outputDir/multiqc/multiqc_data/multiqc_software_versions.txt").exists() }, - { assert new File("$outputDir/repeat_calling/trgt/multi_sample/test/test.vcf.gz").exists() }, - { assert new File("$outputDir/repeat_calling/trgt/multi_sample/test/test.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/snvs/multi_sample/test/test_snv_annotated_ranked.vcf.gz").exists() }, - { assert new File("$outputDir/snvs/multi_sample/test/test_snv_annotated_ranked.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/svs/multi_sample/test/test_svs_annotated.vcf.gz").exists() }, - { assert new File("$outputDir/svs/multi_sample/test/test_svs_annotated.vcf.gz.tbi").exists() }, - // Assert exists HG002_Revio - { assert new File("$outputDir/aligned_reads/HG002_Revio/HG002_Revio_haplotagged.bam.bai").exists() }, - { assert new File("$outputDir/assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap1.bam.bai").exists() }, - { assert new File("$outputDir/assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap1.sam.gz").exists() }, - { assert new File("$outputDir/assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap2.bam.bai").exists() }, - { assert new File("$outputDir/assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap2.sam.gz").exists() }, - { assert new File("$outputDir/cnv_calling/hificnv/HG002_Revio/HG002_Revio.log").exists() }, - { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_Revio/HG002_Revio_modkit_pileup_phased_1.bed.gz").exists() }, - { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_Revio/HG002_Revio_modkit_pileup_phased_1.bed.gz.tbi").exists() }, - { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_Revio/HG002_Revio_modkit_pileup_phased_2.bed.gz").exists() }, - { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_Revio/HG002_Revio_modkit_pileup_phased_2.bed.gz.tbi").exists() }, - { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_Revio/HG002_Revio_modkit_pileup_phased_ungrouped.bed.gz").exists() }, - { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_Revio/HG002_Revio_modkit_pileup_phased_ungrouped.bed.gz.tbi").exists() }, - { assert new File("$outputDir/paraphase/HG002_Revio/HG002_Revio.paraphase.bam.bai").exists() }, - { assert new File("$outputDir/paraphase/HG002_Revio/HG002_Revio_paraphase_vcfs/HG002_Revio_hba.vcf.gz").exists() }, - { assert new File("$outputDir/paraphase/HG002_Revio/HG002_Revio_paraphase_vcfs/HG002_Revio_hba.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/paraphase/HG002_Revio/HG002_Revio.paraphase.json").exists() }, - { assert new File("$outputDir/qc/cramino/phased/HG002_Revio/HG002_Revio_cramino_aligned_phased.txt").exists() }, - { assert new File("$outputDir/qc/cramino/unphased/HG002_Revio/HG002_Revio_cramino_aligned.txt").exists() }, - { assert new File("$outputDir/phased_variants/HG002_Revio/HG002_Revio_phased.vcf.gz").exists() }, - { assert new File("$outputDir/phased_variants/HG002_Revio/HG002_Revio_phased.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/qc/phasing_stats/HG002_Revio/HG002_Revio_stats.stats.tsv").exists() }, - { assert new File("$outputDir/qc/phasing_stats/HG002_Revio/HG002_Revio_stats.blocks.tsv").exists() }, - { assert new File("$outputDir/qc/fastqc/HG002_Revio/HG002_Revio_fastqc.html").exists() }, - { assert new File("$outputDir/qc/fastqc/HG002_Revio/HG002_Revio_fastqc.zip").exists() }, - { assert new File("$outputDir/repeat_annotation/stranger/HG002_Revio/HG002_Revio_repeat_expansion_stranger.vcf.gz").exists() }, - { assert new File("$outputDir/repeat_annotation/stranger/HG002_Revio/HG002_Revio_repeat_expansion_stranger.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/repeat_calling/trgt/single_sample/HG002_Revio/HG002_Revio_spanning_sorted.bam.bai").exists() }, - { assert new File("$outputDir/snvs/single_sample/HG002_Revio/HG002_Revio_snv_annotated_ranked.vcf.gz").exists() }, - { assert new File("$outputDir/snvs/single_sample/HG002_Revio/HG002_Revio_snv_annotated_ranked.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/svs/single_sample/HG002_Revio/HG002_Revio_svs_annotated.vcf.gz").exists() }, - { assert new File("$outputDir/svs/single_sample/HG002_Revio/HG002_Revio_svs_annotated.vcf.gz.tbi").exists() } - ) - } - } - - test("test profile - multisample") { - tag "samplesheet_multisample_bam" - - when { - params { - pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/7be7114cb132be8cae9343f225bcf42ec11ecc1b/' - input = params.pipelines_testdata_base_path + 'testdata/samplesheet_multisample_bam.csv' - outdir = "$outputDir" - parallel_snv = 2 - preset = "revio" - phaser = "hiphase" - - } - } - - then { - assertAll ( - { assert workflow.success }, - // Assert with snapshot multisample - { assert snapshot( - file("$outputDir/pedigree/test.ped"), - file("$outputDir/multiqc/multiqc_data/multiqc_citations.txt"), - file("$outputDir/multiqc/multiqc_data/multiqc_fastqc.txt"), - // Assert with snapshot HG002_Revio_A - bam("$outputDir/aligned_reads/HG002_Revio_A/HG002_Revio_A_haplotagged.bam", stringency: 'silent').getReadsMD5(), - file("$outputDir/assembly_haplotypes/gfastats/HG002_Revio_A/HG002_Revio_A.asm.bp.hap1.p_ctg.assembly_summary"), - file("$outputDir/assembly_haplotypes/gfastats/HG002_Revio_A/HG002_Revio_A.asm.bp.hap2.p_ctg.assembly_summary"), - bam("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap1.bam", stringency: 'silent').getReadsMD5(), - bam("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap2.bam", stringency: 'silent').getReadsMD5(), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.dip.bed"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap1.bed"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap2.bed"), - file("$outputDir/cnv_calling/hificnv/HG002_Revio_A/HG002_Revio_A.copynum.bedgraph"), - file("$outputDir/cnv_calling/hificnv/HG002_Revio_A/HG002_Revio_A.depth.bw"), - file("$outputDir/cnv_calling/hificnv/HG002_Revio_A/HG002_Revio_A.maf.bw"), - file("$outputDir/qc/mosdepth/HG002_Revio_A/HG002_Revio_A.mosdepth.global.dist.txt"), - file("$outputDir/qc/mosdepth/HG002_Revio_A/HG002_Revio_A.mosdepth.region.dist.txt"), - file("$outputDir/qc/mosdepth/HG002_Revio_A/HG002_Revio_A.mosdepth.summary.txt"), - file("$outputDir/assembly_haplotypes/gfastats/HG002_Revio_A/HG002_Revio_A.asm.bp.hap1.p_ctg.fasta.gz"), - file("$outputDir/assembly_haplotypes/gfastats/HG002_Revio_A/HG002_Revio_A.asm.bp.hap2.p_ctg.fasta.gz"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.dip.vcf.gz"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap1.paf.gz"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap1.var.gz"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap2.paf.gz"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap2.var.gz"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.pair.vcf.gz"), - path("$outputDir/cnv_calling/hificnv/HG002_Revio_A/HG002_Revio_A.vcf.gz").vcf.variantsMD5, - file("$outputDir/cnv_calling/hificnv/HG002_Revio_A/HG002_Revio_A.vcf.gz.tbi"), - file("$outputDir/methylation/modkit/pileup/unphased/HG002_Revio_A/HG002_Revio_A_modkit_pileup.bed.gz"), - file("$outputDir/methylation/modkit/pileup/unphased/HG002_Revio_A/HG002_Revio_A_modkit_pileup.bed.gz.tbi"), - bam("$outputDir/paraphase/HG002_Revio_A/HG002_Revio_A.paraphase.bam", stringency: 'silent').getReadsMD5(), - file("$outputDir/qc/cramino/phased/HG002_Revio_A/HG002_Revio_A_cramino_aligned_phased.arrow"), - file("$outputDir/qc/cramino/unphased/HG002_Revio_A/HG002_Revio_A_cramino_aligned.arrow"), - file("$outputDir/qc/mosdepth/HG002_Revio_A/HG002_Revio_A.regions.bed.gz"), - file("$outputDir/qc/mosdepth/HG002_Revio_A/HG002_Revio_A.regions.bed.gz.csi"), - file("$outputDir/repeat_calling/trgt/single_sample/HG002_Revio_A/HG002_Revio_A_sorted.vcf.gz"), - file("$outputDir/repeat_calling/trgt/single_sample/HG002_Revio_A/HG002_Revio_A_sorted.vcf.gz.tbi"), - bam("$outputDir/repeat_calling/trgt/single_sample/HG002_Revio_A/HG002_Revio_A_spanning_sorted.bam", stringency: 'silent').getReadsMD5(), - file("$outputDir/snvs/stats/single_sample/HG002_Revio_A.vcf.gz.bcftools_stats.txt").readLines()[0..2], - // Assert with snapshot HG002_Revio_B - bam("$outputDir/aligned_reads/HG002_Revio_B/HG002_Revio_B_haplotagged.bam", stringency: 'silent').getReadsMD5(), - file("$outputDir/assembly_haplotypes/gfastats/HG002_Revio_B/HG002_Revio_B.asm.bp.hap1.p_ctg.assembly_summary"), - file("$outputDir/assembly_haplotypes/gfastats/HG002_Revio_B/HG002_Revio_B.asm.bp.hap2.p_ctg.assembly_summary"), - bam("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap1.bam", stringency: 'silent').getReadsMD5(), - bam("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap2.bam", stringency: 'silent').getReadsMD5(), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.dip.bed"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap1.bed"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap2.bed"), - file("$outputDir/cnv_calling/hificnv/HG002_Revio_B/HG002_Revio_B.copynum.bedgraph"), - file("$outputDir/cnv_calling/hificnv/HG002_Revio_B/HG002_Revio_B.depth.bw"), - file("$outputDir/cnv_calling/hificnv/HG002_Revio_B/HG002_Revio_B.maf.bw"), - file("$outputDir/qc/mosdepth/HG002_Revio_B/HG002_Revio_B.mosdepth.global.dist.txt"), - file("$outputDir/qc/mosdepth/HG002_Revio_B/HG002_Revio_B.mosdepth.region.dist.txt"), - file("$outputDir/qc/mosdepth/HG002_Revio_B/HG002_Revio_B.mosdepth.summary.txt"), - file("$outputDir/assembly_haplotypes/gfastats/HG002_Revio_B/HG002_Revio_B.asm.bp.hap1.p_ctg.fasta.gz"), - file("$outputDir/assembly_haplotypes/gfastats/HG002_Revio_B/HG002_Revio_B.asm.bp.hap2.p_ctg.fasta.gz"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.dip.vcf.gz"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap1.paf.gz"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap1.var.gz"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap2.paf.gz"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap2.var.gz"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.pair.vcf.gz"), - path("$outputDir/cnv_calling/hificnv/HG002_Revio_B/HG002_Revio_B.vcf.gz").vcf.variantsMD5, - file("$outputDir/cnv_calling/hificnv/HG002_Revio_B/HG002_Revio_B.vcf.gz.tbi"), - file("$outputDir/methylation/modkit/pileup/unphased/HG002_Revio_B/HG002_Revio_B_modkit_pileup.bed.gz"), - file("$outputDir/methylation/modkit/pileup/unphased/HG002_Revio_B/HG002_Revio_B_modkit_pileup.bed.gz.tbi"), - bam("$outputDir/paraphase/HG002_Revio_B/HG002_Revio_B.paraphase.bam", stringency: 'silent').getReadsMD5(), - file("$outputDir/qc/cramino/phased/HG002_Revio_B/HG002_Revio_B_cramino_aligned_phased.arrow"), - file("$outputDir/qc/cramino/unphased/HG002_Revio_B/HG002_Revio_B_cramino_aligned.arrow"), - file("$outputDir/qc/mosdepth/HG002_Revio_B/HG002_Revio_B.regions.bed.gz"), - file("$outputDir/qc/mosdepth/HG002_Revio_B/HG002_Revio_B.regions.bed.gz.csi"), - file("$outputDir/repeat_calling/trgt/single_sample/HG002_Revio_B/HG002_Revio_B_sorted.vcf.gz"), - file("$outputDir/repeat_calling/trgt/single_sample/HG002_Revio_B/HG002_Revio_B_sorted.vcf.gz.tbi"), - bam("$outputDir/repeat_calling/trgt/single_sample/HG002_Revio_B/HG002_Revio_B_spanning_sorted.bam", stringency: 'silent').getReadsMD5(), - file("$outputDir/snvs/stats/single_sample/HG002_Revio_B.vcf.gz.bcftools_stats.txt").readLines()[0..2], - ).match() }, - // Assert exists multisample - note the trgt multisample that doesn't exist in singlesample - { assert new File("$outputDir/databases/echtvar/encode/test/test.zip").exists() }, - { assert new File("$outputDir/qc/somalier/relate/test/test.pairs.tsv").exists() }, - { assert new File("$outputDir/qc/somalier/relate/test/test.samples.tsv").exists() }, - { assert new File("$outputDir/qc/somalier/relate/test/test.html").exists() }, - { assert new File("$outputDir/multiqc/multiqc_data/multiqc_general_stats.txt").exists() }, - { assert new File("$outputDir/multiqc/multiqc_data/multiqc_somalier.txt").exists() }, - { assert new File("$outputDir/multiqc/multiqc_data/multiqc_data.json").exists() }, - { assert new File("$outputDir/multiqc/multiqc_data/multiqc.log").exists() }, - { assert new File("$outputDir/multiqc/multiqc_report.html").exists() }, - { assert new File("$outputDir/multiqc/multiqc_data/multiqc_sources.txt").exists() }, - { assert new File("$outputDir/multiqc/multiqc_data/multiqc_software_versions.txt").exists() }, - { assert new File("$outputDir/snvs/multi_sample/test/test_snv_annotated_ranked.vcf.gz").exists() }, - { assert new File("$outputDir/snvs/multi_sample/test/test_snv_annotated_ranked.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/svs/multi_sample/test/test_svs_annotated.vcf.gz").exists() }, - { assert new File("$outputDir/svs/multi_sample/test/test_svs_annotated.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/repeat_calling/trgt/multi_sample/test/test.vcf.gz").exists() }, - { assert new File("$outputDir/repeat_calling/trgt/multi_sample/test/test.vcf.gz.tbi").exists() }, - // Assert exists HG002_Revio_A - { assert new File("$outputDir/aligned_reads/HG002_Revio_A/HG002_Revio_A_haplotagged.bam.bai").exists() }, - { assert new File("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap1.bam.bai").exists() }, - { assert new File("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap1.sam.gz").exists() }, - { assert new File("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap2.bam.bai").exists() }, - { assert new File("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap2.sam.gz").exists() }, - { assert new File("$outputDir/cnv_calling/hificnv/HG002_Revio_A/HG002_Revio_A.log").exists() }, - { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_Revio_A/HG002_Revio_A_modkit_pileup_phased_1.bed.gz").exists() }, - { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_Revio_A/HG002_Revio_A_modkit_pileup_phased_1.bed.gz.tbi").exists() }, - { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_Revio_A/HG002_Revio_A_modkit_pileup_phased_2.bed.gz").exists() }, - { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_Revio_A/HG002_Revio_A_modkit_pileup_phased_2.bed.gz.tbi").exists() }, - { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_Revio_A/HG002_Revio_A_modkit_pileup_phased_ungrouped.bed.gz").exists() }, - { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_Revio_A/HG002_Revio_A_modkit_pileup_phased_ungrouped.bed.gz.tbi").exists() }, - { assert new File("$outputDir/paraphase/HG002_Revio_A/HG002_Revio_A.paraphase.bam.bai").exists() }, - { assert new File("$outputDir/paraphase/HG002_Revio_A/HG002_Revio_A_paraphase_vcfs/HG002_Revio_A_hba.vcf.gz").exists() }, - { assert new File("$outputDir/paraphase/HG002_Revio_A/HG002_Revio_A_paraphase_vcfs/HG002_Revio_A_hba.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/paraphase/HG002_Revio_A/HG002_Revio_A.paraphase.json").exists() }, - { assert new File("$outputDir/qc/cramino/phased/HG002_Revio_A/HG002_Revio_A_cramino_aligned_phased.txt").exists() }, - { assert new File("$outputDir/qc/cramino/unphased/HG002_Revio_A/HG002_Revio_A_cramino_aligned.txt").exists() }, - { assert new File("$outputDir/aligned_reads/HG002_Revio_A/HG002_Revio_A_haplotagged.bam.bai").exists() }, - { assert new File("$outputDir/phased_variants/HG002_Revio_A/HG002_Revio_A_phased.vcf.gz").exists() }, - { assert new File("$outputDir/phased_variants/HG002_Revio_A/HG002_Revio_A_phased.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/qc/phasing_stats/HG002_Revio_A/HG002_Revio_A_stats.stats.tsv").exists() }, - { assert new File("$outputDir/qc/phasing_stats/HG002_Revio_A/HG002_Revio_A_stats.blocks.tsv").exists() }, - { assert new File("$outputDir/qc/fastqc/HG002_Revio_A/HG002_Revio_A_fastqc.html").exists() }, - { assert new File("$outputDir/qc/fastqc/HG002_Revio_A/HG002_Revio_A_fastqc.zip").exists() }, - { assert new File("$outputDir/repeat_annotation/stranger/HG002_Revio_A/HG002_Revio_A_repeat_expansion_stranger.vcf.gz").exists() }, - { assert new File("$outputDir/repeat_annotation/stranger/HG002_Revio_A/HG002_Revio_A_repeat_expansion_stranger.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/repeat_calling/trgt/single_sample/HG002_Revio_A/HG002_Revio_A_spanning_sorted.bam.bai").exists() }, - { assert new File("$outputDir/snvs/single_sample/HG002_Revio_A/HG002_Revio_A_snv_annotated_ranked.vcf.gz").exists() }, - { assert new File("$outputDir/snvs/single_sample/HG002_Revio_A/HG002_Revio_A_snv_annotated_ranked.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/svs/single_sample/HG002_Revio_A/HG002_Revio_A_svs_annotated.vcf.gz").exists() }, - { assert new File("$outputDir/svs/single_sample/HG002_Revio_A/HG002_Revio_A_svs_annotated.vcf.gz.tbi").exists() }, - // Assert exists HG002_Revio_B - { assert new File("$outputDir/aligned_reads/HG002_Revio_B/HG002_Revio_B_haplotagged.bam.bai").exists() }, - { assert new File("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap1.bam.bai").exists() }, - { assert new File("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap1.sam.gz").exists() }, - { assert new File("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap2.bam.bai").exists() }, - { assert new File("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap2.sam.gz").exists() }, - { assert new File("$outputDir/cnv_calling/hificnv/HG002_Revio_B/HG002_Revio_B.log").exists() }, - { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_Revio_B/HG002_Revio_B_modkit_pileup_phased_1.bed.gz").exists() }, - { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_Revio_B/HG002_Revio_B_modkit_pileup_phased_1.bed.gz.tbi").exists() }, - { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_Revio_B/HG002_Revio_B_modkit_pileup_phased_2.bed.gz").exists() }, - { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_Revio_B/HG002_Revio_B_modkit_pileup_phased_2.bed.gz.tbi").exists() }, - { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_Revio_B/HG002_Revio_B_modkit_pileup_phased_ungrouped.bed.gz").exists() }, - { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_Revio_B/HG002_Revio_B_modkit_pileup_phased_ungrouped.bed.gz.tbi").exists() }, - { assert new File("$outputDir/paraphase/HG002_Revio_B/HG002_Revio_B.paraphase.bam.bai").exists() }, - { assert new File("$outputDir/paraphase/HG002_Revio_B/HG002_Revio_B_paraphase_vcfs/HG002_Revio_B_hba.vcf.gz").exists() }, - { assert new File("$outputDir/paraphase/HG002_Revio_B/HG002_Revio_B_paraphase_vcfs/HG002_Revio_B_hba.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/paraphase/HG002_Revio_B/HG002_Revio_B.paraphase.json").exists() }, - { assert new File("$outputDir/qc/cramino/phased/HG002_Revio_B/HG002_Revio_B_cramino_aligned_phased.txt").exists() }, - { assert new File("$outputDir/qc/cramino/unphased/HG002_Revio_B/HG002_Revio_B_cramino_aligned.txt").exists() }, - { assert new File("$outputDir/aligned_reads/HG002_Revio_B/HG002_Revio_B_haplotagged.bam.bai").exists() }, - { assert new File("$outputDir/phased_variants/HG002_Revio_B/HG002_Revio_B_phased.vcf.gz").exists() }, - { assert new File("$outputDir/phased_variants/HG002_Revio_B/HG002_Revio_B_phased.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/qc/phasing_stats/HG002_Revio_B/HG002_Revio_B_stats.stats.tsv").exists() }, - { assert new File("$outputDir/qc/phasing_stats/HG002_Revio_B/HG002_Revio_B_stats.blocks.tsv").exists() }, - { assert new File("$outputDir/qc/fastqc/HG002_Revio_B/HG002_Revio_B_fastqc.html").exists() }, - { assert new File("$outputDir/qc/fastqc/HG002_Revio_B/HG002_Revio_B_fastqc.zip").exists() }, - { assert new File("$outputDir/repeat_annotation/stranger/HG002_Revio_B/HG002_Revio_B_repeat_expansion_stranger.vcf.gz").exists() }, - { assert new File("$outputDir/repeat_annotation/stranger/HG002_Revio_B/HG002_Revio_B_repeat_expansion_stranger.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/repeat_calling/trgt/single_sample/HG002_Revio_B/HG002_Revio_B_spanning_sorted.bam.bai").exists() }, - { assert new File("$outputDir/snvs/single_sample/HG002_Revio_B/HG002_Revio_B_snv_annotated_ranked.vcf.gz").exists() }, - { assert new File("$outputDir/snvs/single_sample/HG002_Revio_B/HG002_Revio_B_snv_annotated_ranked.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/svs/single_sample/HG002_Revio_B/HG002_Revio_B_svs_annotated.vcf.gz").exists() }, - { assert new File("$outputDir/svs/single_sample/HG002_Revio_B/HG002_Revio_B_svs_annotated.vcf.gz.tbi").exists() } - ) - } - } - - test("test profile - multisample - ont - parallel_alignments 2 - parallel_snv 1") { - tag "samplesheet_multisample_ont_bam" - - when { - params { - pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/7be7114cb132be8cae9343f225bcf42ec11ecc1b/' - input = params.pipelines_testdata_base_path + 'testdata/samplesheet_multisample_bam_ont.csv' - outdir = "$outputDir" - preset = 'ONT_R10' - parallel_alignments = 2 - parallel_snv = 1 - phaser = "whatshap" - } - } - - then { - assertAll ( - { assert workflow.success }, - // Assert with snapshot multisample - { assert snapshot( - file("$outputDir/pedigree/test.ped"), - file("$outputDir/multiqc/multiqc_data/multiqc_citations.txt"), - file("$outputDir/multiqc/multiqc_data/multiqc_fastqc.txt"), - // Assert with snapshot HG002_ONT_A - bam("$outputDir/aligned_reads/HG002_ONT_A/HG002_ONT_A_haplotagged.bam", stringency: 'silent').getReadsMD5(), - file("$outputDir/cnv_calling/hificnv/HG002_ONT_A/HG002_ONT_A.copynum.bedgraph"), - file("$outputDir/cnv_calling/hificnv/HG002_ONT_A/HG002_ONT_A.depth.bw"), - file("$outputDir/cnv_calling/hificnv/HG002_ONT_A/HG002_ONT_A.maf.bw"), - file("$outputDir/qc/mosdepth/HG002_ONT_A/HG002_ONT_A.mosdepth.global.dist.txt"), - file("$outputDir/qc/mosdepth/HG002_ONT_A/HG002_ONT_A.mosdepth.region.dist.txt"), - file("$outputDir/qc/mosdepth/HG002_ONT_A/HG002_ONT_A.mosdepth.summary.txt"), - path("$outputDir/cnv_calling/hificnv/HG002_ONT_A/HG002_ONT_A.vcf.gz").vcf.variantsMD5, - file("$outputDir/cnv_calling/hificnv/HG002_ONT_A/HG002_ONT_A.vcf.gz.tbi"), - file("$outputDir/methylation/modkit/pileup/unphased/HG002_ONT_A/HG002_ONT_A_modkit_pileup.bed.gz"), - file("$outputDir/methylation/modkit/pileup/unphased/HG002_ONT_A/HG002_ONT_A_modkit_pileup.bed.gz.tbi"), - bam("$outputDir/paraphase/HG002_ONT_A/HG002_ONT_A.paraphase.bam", stringency: 'silent').getReadsMD5(), - file("$outputDir/qc/cramino/phased/HG002_ONT_A/HG002_ONT_A_cramino_aligned_phased.arrow"), - file("$outputDir/qc/cramino/unphased/HG002_ONT_A/HG002_ONT_A_cramino_aligned.arrow"), - file("$outputDir/qc/mosdepth/HG002_ONT_A/HG002_ONT_A.regions.bed.gz"), - file("$outputDir/qc/mosdepth/HG002_ONT_A/HG002_ONT_A.regions.bed.gz.csi"), - file("$outputDir/snvs/stats/single_sample/HG002_ONT_A.vcf.gz.bcftools_stats.txt").readLines()[0..2], - // Assert with snapshot HG002_ONT_B - bam("$outputDir/aligned_reads/HG002_ONT_B/HG002_ONT_B_haplotagged.bam", stringency: 'silent').getReadsMD5(), - file("$outputDir/cnv_calling/hificnv/HG002_ONT_B/HG002_ONT_B.copynum.bedgraph"), - file("$outputDir/cnv_calling/hificnv/HG002_ONT_B/HG002_ONT_B.depth.bw"), - file("$outputDir/cnv_calling/hificnv/HG002_ONT_B/HG002_ONT_B.maf.bw"), - file("$outputDir/qc/mosdepth/HG002_ONT_B/HG002_ONT_B.mosdepth.global.dist.txt"), - file("$outputDir/qc/mosdepth/HG002_ONT_B/HG002_ONT_B.mosdepth.region.dist.txt"), - file("$outputDir/qc/mosdepth/HG002_ONT_B/HG002_ONT_B.mosdepth.summary.txt"), - path("$outputDir/cnv_calling/hificnv/HG002_ONT_B/HG002_ONT_B.vcf.gz").vcf.variantsMD5, - file("$outputDir/cnv_calling/hificnv/HG002_ONT_B/HG002_ONT_B.vcf.gz.tbi"), - file("$outputDir/methylation/modkit/pileup/unphased/HG002_ONT_B/HG002_ONT_B_modkit_pileup.bed.gz"), - file("$outputDir/methylation/modkit/pileup/unphased/HG002_ONT_B/HG002_ONT_B_modkit_pileup.bed.gz.tbi"), - bam("$outputDir/paraphase/HG002_ONT_B/HG002_ONT_B.paraphase.bam", stringency: 'silent').getReadsMD5(), - file("$outputDir/qc/cramino/phased/HG002_ONT_B/HG002_ONT_B_cramino_aligned_phased.arrow"), - file("$outputDir/qc/cramino/unphased/HG002_ONT_B/HG002_ONT_B_cramino_aligned.arrow"), - file("$outputDir/qc/mosdepth/HG002_ONT_B/HG002_ONT_B.regions.bed.gz"), - file("$outputDir/qc/mosdepth/HG002_ONT_B/HG002_ONT_B.regions.bed.gz.csi"), - file("$outputDir/snvs/stats/single_sample/HG002_ONT_B.vcf.gz.bcftools_stats.txt").readLines()[0..2], - ).match() }, - // Assert exists multisample - note the trgt multisample that doesn't exist in singlesample - { assert new File("$outputDir/databases/echtvar/encode/test/test.zip").exists() }, - { assert new File("$outputDir/qc/somalier/relate/test/test.pairs.tsv").exists() }, - { assert new File("$outputDir/qc/somalier/relate/test/test.samples.tsv").exists() }, - { assert new File("$outputDir/qc/somalier/relate/test/test.html").exists() }, - { assert new File("$outputDir/multiqc/multiqc_data/multiqc_general_stats.txt").exists() }, - { assert new File("$outputDir/multiqc/multiqc_data/multiqc_somalier.txt").exists() }, - { assert new File("$outputDir/multiqc/multiqc_data/multiqc_data.json").exists() }, - { assert new File("$outputDir/multiqc/multiqc_data/multiqc.log").exists() }, - { assert new File("$outputDir/multiqc/multiqc_report.html").exists() }, - { assert new File("$outputDir/multiqc/multiqc_data/multiqc_sources.txt").exists() }, - { assert new File("$outputDir/multiqc/multiqc_data/multiqc_software_versions.txt").exists() }, - { assert new File("$outputDir/snvs/multi_sample/test/test_snv_annotated_ranked.vcf.gz").exists() }, - { assert new File("$outputDir/snvs/multi_sample/test/test_snv_annotated_ranked.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/svs/multi_sample/test/test_svs_annotated.vcf.gz").exists() }, - { assert new File("$outputDir/svs/multi_sample/test/test_svs_annotated.vcf.gz.tbi").exists() }, - // Assert exists HG002_ONT_A - { assert new File("$outputDir/aligned_reads/HG002_ONT_A/HG002_ONT_A_haplotagged.bam.bai").exists() }, - { assert new File("$outputDir/cnv_calling/hificnv/HG002_ONT_A/HG002_ONT_A.log").exists() }, - { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_ONT_A/HG002_ONT_A_modkit_pileup_phased_1.bed.gz").exists() }, - { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_ONT_A/HG002_ONT_A_modkit_pileup_phased_1.bed.gz.tbi").exists() }, - { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_ONT_A/HG002_ONT_A_modkit_pileup_phased_2.bed.gz").exists() }, - { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_ONT_A/HG002_ONT_A_modkit_pileup_phased_2.bed.gz.tbi").exists() }, - { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_ONT_A/HG002_ONT_A_modkit_pileup_phased_ungrouped.bed.gz").exists() }, - { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_ONT_A/HG002_ONT_A_modkit_pileup_phased_ungrouped.bed.gz.tbi").exists() }, - { assert new File("$outputDir/paraphase/HG002_ONT_A/HG002_ONT_A.paraphase.bam.bai").exists() }, - { assert new File("$outputDir/paraphase/HG002_ONT_A/HG002_ONT_A_paraphase_vcfs/HG002_ONT_A_hba.vcf.gz").exists() }, - { assert new File("$outputDir/paraphase/HG002_ONT_A/HG002_ONT_A_paraphase_vcfs/HG002_ONT_A_hba.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/paraphase/HG002_ONT_A/HG002_ONT_A.paraphase.json").exists() }, - { assert new File("$outputDir/qc/cramino/phased/HG002_ONT_A/HG002_ONT_A_cramino_aligned_phased.txt").exists() }, - { assert new File("$outputDir/qc/cramino/unphased/HG002_ONT_A/HG002_ONT_A_cramino_aligned.txt").exists() }, - { assert new File("$outputDir/aligned_reads/HG002_ONT_A/HG002_ONT_A_haplotagged.bam.bai").exists() }, - { assert new File("$outputDir/phased_variants/HG002_ONT_A/HG002_ONT_A_phased.vcf.gz").exists() }, - { assert new File("$outputDir/phased_variants/HG002_ONT_A/HG002_ONT_A_phased.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/qc/phasing_stats/HG002_ONT_A/HG002_ONT_A_stats.stats.tsv").exists() }, - { assert new File("$outputDir/qc/phasing_stats/HG002_ONT_A/HG002_ONT_A_stats.blocks.tsv").exists() }, - { assert new File("$outputDir/qc/fastqc/HG002_ONT_A/HG002_ONT_A_fastqc.html").exists() }, - { assert new File("$outputDir/qc/fastqc/HG002_ONT_A/HG002_ONT_A_fastqc.zip").exists() }, - { assert new File("$outputDir/snvs/single_sample/HG002_ONT_A/HG002_ONT_A_snv_annotated_ranked.vcf.gz").exists() }, - { assert new File("$outputDir/snvs/single_sample/HG002_ONT_A/HG002_ONT_A_snv_annotated_ranked.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/svs/single_sample/HG002_ONT_A/HG002_ONT_A_svs_annotated.vcf.gz").exists() }, - { assert new File("$outputDir/svs/single_sample/HG002_ONT_A/HG002_ONT_A_svs_annotated.vcf.gz.tbi").exists() }, - // Assert exists HG002_ONT_B - { assert new File("$outputDir/aligned_reads/HG002_ONT_B/HG002_ONT_B_haplotagged.bam.bai").exists() }, - { assert new File("$outputDir/cnv_calling/hificnv/HG002_ONT_B/HG002_ONT_B.log").exists() }, - { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_ONT_B/HG002_ONT_B_modkit_pileup_phased_1.bed.gz").exists() }, - { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_ONT_B/HG002_ONT_B_modkit_pileup_phased_1.bed.gz.tbi").exists() }, - { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_ONT_B/HG002_ONT_B_modkit_pileup_phased_2.bed.gz").exists() }, - { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_ONT_B/HG002_ONT_B_modkit_pileup_phased_2.bed.gz.tbi").exists() }, - { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_ONT_B/HG002_ONT_B_modkit_pileup_phased_ungrouped.bed.gz").exists() }, - { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_ONT_B/HG002_ONT_B_modkit_pileup_phased_ungrouped.bed.gz.tbi").exists() }, - { assert new File("$outputDir/paraphase/HG002_ONT_B/HG002_ONT_B.paraphase.bam.bai").exists() }, - { assert new File("$outputDir/paraphase/HG002_ONT_B/HG002_ONT_B_paraphase_vcfs/HG002_ONT_B_hba.vcf.gz").exists() }, - { assert new File("$outputDir/paraphase/HG002_ONT_B/HG002_ONT_B_paraphase_vcfs/HG002_ONT_B_hba.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/paraphase/HG002_ONT_B/HG002_ONT_B.paraphase.json").exists() }, - { assert new File("$outputDir/qc/cramino/phased/HG002_ONT_B/HG002_ONT_B_cramino_aligned_phased.txt").exists() }, - { assert new File("$outputDir/qc/cramino/unphased/HG002_ONT_B/HG002_ONT_B_cramino_aligned.txt").exists() }, - { assert new File("$outputDir/aligned_reads/HG002_ONT_B/HG002_ONT_B_haplotagged.bam.bai").exists() }, - { assert new File("$outputDir/phased_variants/HG002_ONT_B/HG002_ONT_B_phased.vcf.gz").exists() }, - { assert new File("$outputDir/phased_variants/HG002_ONT_B/HG002_ONT_B_phased.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/qc/phasing_stats/HG002_ONT_B/HG002_ONT_B_stats.stats.tsv").exists() }, - { assert new File("$outputDir/qc/phasing_stats/HG002_ONT_B/HG002_ONT_B_stats.blocks.tsv").exists() }, - { assert new File("$outputDir/qc/fastqc/HG002_ONT_B/HG002_ONT_B_fastqc.html").exists() }, - { assert new File("$outputDir/qc/fastqc/HG002_ONT_B/HG002_ONT_B_fastqc.zip").exists() }, - { assert new File("$outputDir/snvs/single_sample/HG002_ONT_B/HG002_ONT_B_snv_annotated_ranked.vcf.gz").exists() }, - { assert new File("$outputDir/snvs/single_sample/HG002_ONT_B/HG002_ONT_B_snv_annotated_ranked.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/svs/single_sample/HG002_ONT_B/HG002_ONT_B_svs_annotated.vcf.gz").exists() }, - { assert new File("$outputDir/svs/single_sample/HG002_ONT_B/HG002_ONT_B_svs_annotated.vcf.gz.tbi").exists() } - ) - } - } -} diff --git a/tests/main.nf.test.snap b/tests/main.nf.test.snap index 83ce4226..ad27ca70 100644 --- a/tests/main.nf.test.snap +++ b/tests/main.nf.test.snap @@ -6,9 +6,9 @@ "test.samples.tsv:md5,1685dc6cb8c6b9806ca636662980d686", "test.html:md5,d05e0eceb70ada3a0c25f99a16ad1889", "multiqc_citations.txt:md5,a27affce20d456d20ed387097a4f0350", - "multiqc_fastqc.txt:md5,6168de97dd0d63807f925487735bdb60", + "multiqc_fastqc.txt:md5,f0717ca13d848aa8f5eaa5d0dba92178", "multiqc_somalier.txt:md5,20b4c5b2d5b94b77fb800548e07a874e", - "5df05408bd4f18a4ef1555bc5800601a", + "3367d07489e728a2a99d9abb618841ec", "HG002_Revio.asm.bp.hap1.p_ctg.assembly_summary:md5,b949217515292b5a7735af4ad4bd5b11", "HG002_Revio.asm.bp.hap2.p_ctg.assembly_summary:md5,c3e50f54e9e2871771d1735c54e57c5e", "da103c401cf854a00aa75a57cda0f34d", @@ -17,11 +17,11 @@ "HG002_Revio.hap1.bed:md5,44dcedabe0edb29af441df1f0b55210a", "HG002_Revio.hap2.bed:md5,6b4b879d4ebe97f778921252469a029c", "HG002_Revio.copynum.bedgraph:md5,517bc59c1b235490c79aa8319437b033", - "HG002_Revio.depth.bw:md5,0b9cae1d0646fdd2f690d4255282ee8f", - "HG002_Revio.maf.bw:md5,bacc69449af34efe8576245ae8188719", - "HG002_Revio.mosdepth.global.dist.txt:md5,63701e857361046628f89cb84988ea1d", - "HG002_Revio.mosdepth.region.dist.txt:md5,6b46396518979ff9d9771cb8a8fbbab0", - "HG002_Revio.mosdepth.summary.txt:md5,311aad293c6d8a646b6dd4edc337845c", + "HG002_Revio.depth.bw:md5,20757c985f4713b8568dee05765db701", + "HG002_Revio.maf.bw:md5,4699d7a664277863f06eb48c3cba3c41", + "HG002_Revio.mosdepth.global.dist.txt:md5,6186315d4d65eda85553af82a98829d1", + "HG002_Revio.mosdepth.region.dist.txt:md5,c6c7ee8f056b8b2b92c97ec472b1db16", + "HG002_Revio.mosdepth.summary.txt:md5,35c51f1ad9d2856d1e6446205f19a8e3", "HG002_Revio.asm.bp.hap1.p_ctg.fasta.gz:md5,380ed173f8d50419a86c229dd81a20c2", "HG002_Revio.asm.bp.hap2.p_ctg.fasta.gz:md5,6ca4cd66b46b2bf7b1ed1ee959fba6ab", "HG002_Revio.dip.vcf.gz:md5,747ea6c9532679ae7eb5ce06f511c4c2", @@ -32,12 +32,12 @@ "HG002_Revio.pair.vcf.gz:md5,1909dffa43850282fe7e5ae2b2d273a7", "ab9044066c7bd041966eed43e0d00f13", "HG002_Revio.vcf.gz.tbi:md5,5e42ce281f81b7fdb5fa6e42ec4c7f8b", - "HG002_Revio_modkit_pileup.bed.gz:md5,55496cdcd7e4ccad86adee3cb819da56", - "HG002_Revio_modkit_pileup.bed.gz.tbi:md5,b217c5e971ecb0b8c874b0038f0d2ae4", + "HG002_Revio_modkit_pileup.bed.gz:md5,a52bb9ab393e682d0b7118ef2efe5c15", + "HG002_Revio_modkit_pileup.bed.gz.tbi:md5,08312c13316ed9b4b582897c210ecb58", "fcc3f220bb09d3264f97e7f620779be0", - "HG002_Revio_cramino_aligned_phased.arrow:md5,a76219e9046db32c4b3d6d78425c5d78", - "HG002_Revio_cramino_aligned.arrow:md5,a76219e9046db32c4b3d6d78425c5d78", - "HG002_Revio.regions.bed.gz:md5,31db0f14146b65e339b54b963c304947", + "HG002_Revio_cramino_aligned_phased.arrow:md5,72df2934ff8aa7e1bf8cf8a4881a0d2a", + "HG002_Revio_cramino_aligned.arrow:md5,72df2934ff8aa7e1bf8cf8a4881a0d2a", + "HG002_Revio.regions.bed.gz:md5,e051f64c7a780d67ea6727a327dd4281", "HG002_Revio.regions.bed.gz.csi:md5,026eef1c69fb4aa3a1687463fe2088ab", "HG002_Revio_sorted.vcf.gz:md5,735d8ba586b01fb27e009e3964112ce9", "HG002_Revio_sorted.vcf.gz.tbi:md5,d4c7838d72a4200e790227ba4d7b25d5", @@ -52,14 +52,14 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-24T18:25:48.620936006" + "timestamp": "2024-10-25T09:58:48.73245113" }, "test profile - multisample": { "content": [ "test.ped:md5,24d8694d580f782ed77d4d1b5c6f6fb4", "multiqc_citations.txt:md5,a27affce20d456d20ed387097a4f0350", - "multiqc_fastqc.txt:md5,37674ae5d0d56386d87f38158fa18980", - "5df05408bd4f18a4ef1555bc5800601a", + "multiqc_fastqc.txt:md5,18ca1a3fb2afa8988dc5d604c049cd9c", + "74b4822241bd8d1bc42f494f1f3e326c", "HG002_Revio_A.asm.bp.hap1.p_ctg.assembly_summary:md5,b949217515292b5a7735af4ad4bd5b11", "HG002_Revio_A.asm.bp.hap2.p_ctg.assembly_summary:md5,c3e50f54e9e2871771d1735c54e57c5e", "da103c401cf854a00aa75a57cda0f34d", @@ -68,11 +68,11 @@ "HG002_Revio_A.hap1.bed:md5,44dcedabe0edb29af441df1f0b55210a", "HG002_Revio_A.hap2.bed:md5,6b4b879d4ebe97f778921252469a029c", "HG002_Revio_A.copynum.bedgraph:md5,517bc59c1b235490c79aa8319437b033", - "HG002_Revio_A.depth.bw:md5,0b9cae1d0646fdd2f690d4255282ee8f", - "HG002_Revio_A.maf.bw:md5,bacc69449af34efe8576245ae8188719", - "HG002_Revio_A.mosdepth.global.dist.txt:md5,63701e857361046628f89cb84988ea1d", - "HG002_Revio_A.mosdepth.region.dist.txt:md5,6b46396518979ff9d9771cb8a8fbbab0", - "HG002_Revio_A.mosdepth.summary.txt:md5,311aad293c6d8a646b6dd4edc337845c", + "HG002_Revio_A.depth.bw:md5,20757c985f4713b8568dee05765db701", + "HG002_Revio_A.maf.bw:md5,4699d7a664277863f06eb48c3cba3c41", + "HG002_Revio_A.mosdepth.global.dist.txt:md5,6186315d4d65eda85553af82a98829d1", + "HG002_Revio_A.mosdepth.region.dist.txt:md5,c6c7ee8f056b8b2b92c97ec472b1db16", + "HG002_Revio_A.mosdepth.summary.txt:md5,35c51f1ad9d2856d1e6446205f19a8e3", "HG002_Revio_A.asm.bp.hap1.p_ctg.fasta.gz:md5,380ed173f8d50419a86c229dd81a20c2", "HG002_Revio_A.asm.bp.hap2.p_ctg.fasta.gz:md5,6ca4cd66b46b2bf7b1ed1ee959fba6ab", "HG002_Revio_A.dip.vcf.gz:md5,d5a5d0620cba624a482d0e48e725e232", @@ -83,12 +83,12 @@ "HG002_Revio_A.pair.vcf.gz:md5,4680402dd40f18cc177bd50fb618e6f4", "ab9044066c7bd041966eed43e0d00f13", "HG002_Revio_A.vcf.gz.tbi:md5,38117ec4d71c688a6f43c53946908acd", - "HG002_Revio_A_modkit_pileup.bed.gz:md5,55496cdcd7e4ccad86adee3cb819da56", - "HG002_Revio_A_modkit_pileup.bed.gz.tbi:md5,b217c5e971ecb0b8c874b0038f0d2ae4", + "HG002_Revio_A_modkit_pileup.bed.gz:md5,a52bb9ab393e682d0b7118ef2efe5c15", + "HG002_Revio_A_modkit_pileup.bed.gz.tbi:md5,08312c13316ed9b4b582897c210ecb58", "fcc3f220bb09d3264f97e7f620779be0", - "HG002_Revio_A_cramino_aligned_phased.arrow:md5,a76219e9046db32c4b3d6d78425c5d78", - "HG002_Revio_A_cramino_aligned.arrow:md5,a76219e9046db32c4b3d6d78425c5d78", - "HG002_Revio_A.regions.bed.gz:md5,31db0f14146b65e339b54b963c304947", + "HG002_Revio_A_cramino_aligned_phased.arrow:md5,72df2934ff8aa7e1bf8cf8a4881a0d2a", + "HG002_Revio_A_cramino_aligned.arrow:md5,72df2934ff8aa7e1bf8cf8a4881a0d2a", + "HG002_Revio_A.regions.bed.gz:md5,e051f64c7a780d67ea6727a327dd4281", "HG002_Revio_A.regions.bed.gz.csi:md5,026eef1c69fb4aa3a1687463fe2088ab", "HG002_Revio_A_sorted.vcf.gz:md5,e7f53d86c027a7778e0e642cb2da8884", "HG002_Revio_A_sorted.vcf.gz.tbi:md5,d4c7838d72a4200e790227ba4d7b25d5", @@ -98,7 +98,7 @@ "# The command line was:\tbcftools stats HG002_Revio_A.vcf.gz", "#" ], - "e9aea8a85ecd1b9dde90e1a08e4a390d", + "4fc125e25365fa6e33193fd436ae135d", "HG002_Revio_B.asm.bp.hap1.p_ctg.assembly_summary:md5,7fd907d993bf1140eabc2f3c2116df96", "HG002_Revio_B.asm.bp.hap2.p_ctg.assembly_summary:md5,241c10b531eae6c6bd56d71be2b0806c", "2352f7a9960c400d8182ad2ec442887", @@ -107,11 +107,11 @@ "HG002_Revio_B.hap1.bed:md5,8d007624a4935390fb4731817e251cff", "HG002_Revio_B.hap2.bed:md5,f4d086b5254b13a8d7836290d2c1b1cb", "HG002_Revio_B.copynum.bedgraph:md5,42095da173e46804977bbbecc2fda3aa", - "HG002_Revio_B.depth.bw:md5,45c82491b7119b2d427c5bf2167811c5", - "HG002_Revio_B.maf.bw:md5,b27799b62d65661b384aa61944bd0590", - "HG002_Revio_B.mosdepth.global.dist.txt:md5,5c2dd519f3abc19c00d1a0618cf477d4", - "HG002_Revio_B.mosdepth.region.dist.txt:md5,4a6ccfd85f9837c6c57b3ddaa8c7d263", - "HG002_Revio_B.mosdepth.summary.txt:md5,6c1d1590ed9423552d56ee456c89e6ef", + "HG002_Revio_B.depth.bw:md5,38de98b391638ae12014bebffed42d66", + "HG002_Revio_B.maf.bw:md5,44e11b3b0cd1db5fbbc2d45bacf8f5b0", + "HG002_Revio_B.mosdepth.global.dist.txt:md5,830a8b737fea939dcfea4d1626e60576", + "HG002_Revio_B.mosdepth.region.dist.txt:md5,d4cb66ac28dc6816869a73757226f902", + "HG002_Revio_B.mosdepth.summary.txt:md5,191877ae5228e7880276585557a7b218", "HG002_Revio_B.asm.bp.hap1.p_ctg.fasta.gz:md5,323fd57714246acb37e4e5d55e953429", "HG002_Revio_B.asm.bp.hap2.p_ctg.fasta.gz:md5,6481372dcc00afaea3418749a04ffbbf", "HG002_Revio_B.dip.vcf.gz:md5,3b3644ef50af7d513e44e09bf043d129", @@ -122,12 +122,12 @@ "HG002_Revio_B.pair.vcf.gz:md5,676492865a9d4765835638d52651af73", "7db8959b4b1f46316bb7d5908a8b9f26", "HG002_Revio_B.vcf.gz.tbi:md5,7a72aa048fe8389233a2cf94d843cd1e", - "HG002_Revio_B_modkit_pileup.bed.gz:md5,c217ccd3e8514a6a5eca0e163dee9f20", - "HG002_Revio_B_modkit_pileup.bed.gz.tbi:md5,383b647625175e59420c5d8044ba711f", + "HG002_Revio_B_modkit_pileup.bed.gz:md5,60f856e145343697ff581e91fda288ff", + "HG002_Revio_B_modkit_pileup.bed.gz.tbi:md5,d04e7a6fb67e9b5a8342ae979bc0e5cd", "fcc3f220bb09d3264f97e7f620779be0", - "HG002_Revio_B_cramino_aligned_phased.arrow:md5,3bb08ac5958c6cb0801f319066c3a1b2", - "HG002_Revio_B_cramino_aligned.arrow:md5,3bb08ac5958c6cb0801f319066c3a1b2", - "HG002_Revio_B.regions.bed.gz:md5,837978e7b90ef81cb5aa015fbe7bb4a6", + "HG002_Revio_B_cramino_aligned_phased.arrow:md5,544a6513e7604d6425a664855212eced", + "HG002_Revio_B_cramino_aligned.arrow:md5,544a6513e7604d6425a664855212eced", + "HG002_Revio_B.regions.bed.gz:md5,9c4c037139c752c60385d3c0b905af7f", "HG002_Revio_B.regions.bed.gz.csi:md5,d0640255d527e36655281f64e184b02c", "HG002_Revio_B_sorted.vcf.gz:md5,8703d5602d79e9fe4d70aced838f518f", "HG002_Revio_B_sorted.vcf.gz.tbi:md5,01f65612542a83475217568bd50d4efd", @@ -142,7 +142,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-24T18:27:40.783546633" + "timestamp": "2024-10-25T10:00:21.767398339" }, "test profile - multisample - ont - parallel_alignments 2 - parallel_snv 1": { "content": [ diff --git a/tests/nextflow.config b/tests/nextflow.config deleted file mode 100644 index f0408182..00000000 --- a/tests/nextflow.config +++ /dev/null @@ -1,43 +0,0 @@ -params { - // Base directory for nf-core/modules test data - modules_testdata_base_path = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/' - - // Base directory for genomic-medicine-sweden/nallo test data - pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/7be7114cb132be8cae9343f225bcf42ec11ecc1b/' - -} - -// Impose same minimum Nextflow version as the pipeline for testing -manifest { - nextflowVersion = '!>=24.04.2' -} - -// Disable all Nextflow reporting options -timeline { enabled = false } -report { enabled = false } -trace { enabled = false } -dag { enabled = false } - -process { - resourceLimits = [ - cpus: 4, - memory: '15.GB', - time: '1.h' - ] - withLabel: 'process_high' { - cpus = 4 - memory = '15.GB' - } - withLabel: 'process_medium' { - cpus = 2 - memory = '7.GB' - } - withLabel: 'process_low' { - cpus = 1 - memory = '3.GB' - } - withLabel: 'process_single' { - cpus = 1 - memory = '3.GB' - } -} diff --git a/tests/samplesheet.nf.test b/tests/samplesheet.nf.test new file mode 100644 index 00000000..1b3448e4 --- /dev/null +++ b/tests/samplesheet.nf.test @@ -0,0 +1,51 @@ +nextflow_pipeline { + + name "Test pipeline GENOMICMEDICINESWEDEN_NALLO" + script "../main.nf" + tag "PIPELINE" + + test("test profile") { + tag "samplesheet" + + when { + params { + pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/7be7114cb132be8cae9343f225bcf42ec11ecc1b/' + input = params.pipelines_testdata_base_path + 'testdata/samplesheet.csv' + outdir = "$outputDir" + } + } + + then { + // stable_name: All files + folders in ${params.outdir}/ with a stable name + def stable_name = getAllFilesFromDir(params.outdir, relative: true, includeDir: true, ignore: ['pipeline_info/*.{html,json,txt}']) + // stable_path: All files in ${params.outdir}/ with stable content + def stable_path = getAllFilesFromDir(params.outdir, ignoreFile: 'tests/.nftignore') + // bam_files: All bam files + def bam_files = getAllFilesFromDir(params.outdir, include: ['**/*.bam']) + // all_vcf_files: All vcf files - can have unstable variants and/or unstable headers + def all_vcf_files = getAllFilesFromDir(params.outdir, include: ['**/*.vcf.gz']) + // stable_vcf_files: Vcf files with stable variants - can be snapshot unsing variantsMD5 + def stable_vcf_files = getAllFilesFromDir(params.outdir, ignoreFile: 'tests/.nftignore_unstable_variants', include: ['**/*.vcf.gz']) + assertAll( + { assert workflow.success}, + { assert snapshot( + // Number of successful tasks + workflow.trace.succeeded().size(), + // pipeline versions.yml file for multiqc from which Nextflow version is removed because we tests pipelines on multiple Nextflow versions + removeNextflowVersion("$outputDir/pipeline_info/nallo_pipeline_software_mqc_versions.yml"), + // All stable path name, with a relative path + stable_name, + // All files with stable contents + stable_path, + // All bam files + bam_files.collect{ file -> [ file.getName(), bam(file.toString(), stringency: 'silent').getReadsMD5() ] }, + // All vcf files + all_vcf_files.collect{ file -> [ file.getName(), path(file.toString()).vcf.summary ] }, + // Stable vcf files + stable_vcf_files.collect{ file -> [ file.getName(), path(file.toString()).vcf.variantsMD5 ] } + ).match() } + ) + } + } + +} diff --git a/tests/samplesheet.nf.test.snap b/tests/samplesheet.nf.test.snap new file mode 100644 index 00000000..4f9d4712 --- /dev/null +++ b/tests/samplesheet.nf.test.snap @@ -0,0 +1,550 @@ +{ + "test profile": { + "content": [ + 98, + { + "ADD_FOUND_IN_TAG": { + "bcftools": 1.2, + "busybox-awk": "1.36.1" + }, + "ADD_MOST_SEVERE_CSQ": { + "add_most_severe_consequence": 1.0, + "python": "3.8.3" + }, + "ADD_MOST_SEVERE_PLI": { + "add_most_severe_pli": 1.0, + "python": "3.8.3" + }, + "BCFTOOLS_CONCAT": { + "bcftools": 1.2 + }, + "BCFTOOLS_FILLTAGS": { + "bcftools": 1.2 + }, + "BCFTOOLS_FILLTAGS_ANNO": { + "bcftools": 1.2 + }, + "BCFTOOLS_MERGE": { + "bcftools": 1.2 + }, + "BCFTOOLS_NORM_MULTISAMPLE": { + "bcftools": 1.2 + }, + "BCFTOOLS_NORM_SINGLESAMPLE": { + "bcftools": 1.2 + }, + "BCFTOOLS_PLUGINSPLIT_SNVS": { + "bcftools": 1.2 + }, + "BCFTOOLS_PLUGINSPLIT_SVS": { + "bcftools": 1.2 + }, + "BCFTOOLS_QUERY": { + "bcftools": 1.2 + }, + "BCFTOOLS_REHEADER": { + "bcftools": 1.2 + }, + "BCFTOOLS_SORT": { + "bcftools": 1.2 + }, + "BCFTOOLS_SORT_TRGT": { + "bcftools": 1.2 + }, + "BCFTOOLS_STATS": { + "bcftools": 1.2 + }, + "BEDTOOLS_MERGE": { + "bedtools": "2.31.1" + }, + "BEDTOOLS_SORT": { + "bedtools": "2.31.1" + }, + "BGZIP_MODKIT_PILEUP_PHASED": { + "tabix": 1.2 + }, + "BGZIP_MODKIT_PILEUP_UNPHASED": { + "tabix": 1.2 + }, + "COMPRESS_STRANGER": { + "bcftools": 1.2 + }, + "CRAMINO": { + "cramino": "0.14.5" + }, + "CRAMINO_PHASED": { + "cramino": "0.14.5" + }, + "CREATE_SAMPLES_FILE": { + "gawk": "5.1.0" + }, + "DEEPVARIANT": { + "deepvariant": "1.6.1" + }, + "DIPCALL": { + "dipcall": 0.3 + }, + "ECHTVAR_ANNO": { + "echtvar": "0.2.0" + }, + "ECHTVAR_ENCODE": { + "echtvar": "0.2.0" + }, + "ENSEMBLVEP_SNV": { + "ensemblvep": 110.0 + }, + "FASTQC": { + "fastqc": "0.12.1" + }, + "GENMOD_ANNOTATE": { + "genmod": "3.8.3" + }, + "GENMOD_COMPOUND": { + "genmod": "3.8.3" + }, + "GENMOD_MODELS": { + "genmod": "3.8.3" + }, + "GENMOD_SCORE": { + "genmod": "3.8.3" + }, + "GFASTATS_MATERNAL": { + "gfastats": "1.3.6" + }, + "GFASTATS_PATERNAL": { + "gfastats": "1.3.6" + }, + "GLNEXUS": { + "glnexus": "1.4.3-0-gcecf42e" + }, + "GUNZIP_FASTA": { + "gunzip": 1.1 + }, + "HIFIASM": { + "hifiasm": "0.20.0-r639" + }, + "HIFICNV": { + "hificnv": "0.1.7-70e9988" + }, + "LONGPHASE_HAPLOTAG": { + "longphase": "1.7.3" + }, + "LONGPHASE_PHASE": { + "longphase": "1.7.3" + }, + "MINIMAP2_ALIGN": { + "minimap2": "2.28-r1209", + "samtools": 1.2 + }, + "MINIMAP2_INDEX": { + "minimap2": "2.28-r1209" + }, + "MINIMAP2_INDEX_DIPCALL": { + "minimap2": "2.28-r1209" + }, + "MODKIT_PILEUP_PHASED": { + "modkit": "0.3.0" + }, + "MODKIT_PILEUP_UNPHASED": { + "modkit": "0.3.0" + }, + "MOSDEPTH": { + "mosdepth": "0.3.8" + }, + "PARAPHASE": { + "minimap2": "2.28-r1209", + "paraphase": "3.1.1", + "samtools": 1.2 + }, + "RELATE_RELATE": { + "somalier": "0.2.18" + }, + "SAMPLESHEET_PED": { + "create_pedigree_file": 1.0, + "python": "3.8.3" + }, + "SAMTOOLS_FAIDX": { + "samtools": 1.2 + }, + "SAMTOOLS_IMPORT": { + "samtools": 1.2 + }, + "SAMTOOLS_INDEX_DIPCALL": { + "samtools": 1.2 + }, + "SAMTOOLS_INDEX_LONGPHASE": { + "samtools": 1.2 + }, + "SAMTOOLS_INDEX_TRGT": { + "samtools": 1.2 + }, + "SAMTOOLS_SORT_TRGT": { + "samtools": 1.2 + }, + "SEVERUS": { + "severus": 1.1 + }, + "SOMALIER_EXTRACT": { + "somalier": "0.2.18" + }, + "SOMALIER_PED": { + "create_pedigree_file": 1.0, + "python": "3.8.3" + }, + "SPLIT_BED_CHUNKS": { + "split_bed_chunks": 1.0 + }, + "STRANGER": { + "stranger": "0.9.1" + }, + "SVDB_MERGE": { + "svdb": "2.8.1", + "samtools": "1.19.2" + }, + "TABIX_BGZIPTABIX": { + "tabix": 1.2 + }, + "TABIX_ENSEMBLVEP_SNV": { + "tabix": 1.2 + }, + "TABIX_LONGPHASE_PHASE": { + "tabix": 1.2 + }, + "TABIX_SVDB_MERGE": { + "tabix": 1.2 + }, + "TRGT": { + "trgt": "0.7.0-4941fbb" + }, + "UNTAR_VEP_CACHE": { + "untar": 1.34 + }, + "WHATSHAP_STATS": { + "whatshap": 2.3 + }, + "Workflow": { + "genomic-medicine-sweden/nallo": "v0.4.0dev" + } + }, + [ + "aligned_reads", + "aligned_reads/HG002_Revio", + "aligned_reads/HG002_Revio/HG002_Revio_haplotagged.bam", + "aligned_reads/HG002_Revio/HG002_Revio_haplotagged.bam.bai", + "assembly_haplotypes", + "assembly_haplotypes/gfastats", + "assembly_haplotypes/gfastats/HG002_Revio", + "assembly_haplotypes/gfastats/HG002_Revio/HG002_Revio.asm.bp.hap1.p_ctg.assembly_summary", + "assembly_haplotypes/gfastats/HG002_Revio/HG002_Revio.asm.bp.hap1.p_ctg.fasta.gz", + "assembly_haplotypes/gfastats/HG002_Revio/HG002_Revio.asm.bp.hap2.p_ctg.assembly_summary", + "assembly_haplotypes/gfastats/HG002_Revio/HG002_Revio.asm.bp.hap2.p_ctg.fasta.gz", + "assembly_variant_calling", + "assembly_variant_calling/dipcall", + "assembly_variant_calling/dipcall/HG002_Revio", + "assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.dip.bed", + "assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.dip.vcf.gz", + "assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap1.bam", + "assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap1.bam.bai", + "assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap1.bed", + "assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap1.paf.gz", + "assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap1.sam.gz", + "assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap1.var.gz", + "assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap2.bam", + "assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap2.bam.bai", + "assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap2.bed", + "assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap2.paf.gz", + "assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap2.sam.gz", + "assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap2.var.gz", + "assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.pair.vcf.gz", + "cnv_calling", + "cnv_calling/hificnv", + "cnv_calling/hificnv/HG002_Revio", + "cnv_calling/hificnv/HG002_Revio/HG002_Revio.copynum.bedgraph", + "cnv_calling/hificnv/HG002_Revio/HG002_Revio.depth.bw", + "cnv_calling/hificnv/HG002_Revio/HG002_Revio.log", + "cnv_calling/hificnv/HG002_Revio/HG002_Revio.maf.bw", + "cnv_calling/hificnv/HG002_Revio/HG002_Revio.vcf.gz", + "cnv_calling/hificnv/HG002_Revio/HG002_Revio.vcf.gz.tbi", + "databases", + "databases/echtvar", + "databases/echtvar/encode", + "databases/echtvar/encode/test", + "databases/echtvar/encode/test/test.zip", + "methylation", + "methylation/modkit", + "methylation/modkit/pileup", + "methylation/modkit/pileup/phased", + "methylation/modkit/pileup/phased/HG002_Revio", + "methylation/modkit/pileup/phased/HG002_Revio/HG002_Revio_modkit_pileup_phased_1.bed.gz", + "methylation/modkit/pileup/phased/HG002_Revio/HG002_Revio_modkit_pileup_phased_1.bed.gz.tbi", + "methylation/modkit/pileup/phased/HG002_Revio/HG002_Revio_modkit_pileup_phased_2.bed.gz", + "methylation/modkit/pileup/phased/HG002_Revio/HG002_Revio_modkit_pileup_phased_2.bed.gz.tbi", + "methylation/modkit/pileup/phased/HG002_Revio/HG002_Revio_modkit_pileup_phased_ungrouped.bed.gz", + "methylation/modkit/pileup/phased/HG002_Revio/HG002_Revio_modkit_pileup_phased_ungrouped.bed.gz.tbi", + "methylation/modkit/pileup/unphased", + "methylation/modkit/pileup/unphased/HG002_Revio", + "methylation/modkit/pileup/unphased/HG002_Revio/HG002_Revio_modkit_pileup.bed.gz", + "methylation/modkit/pileup/unphased/HG002_Revio/HG002_Revio_modkit_pileup.bed.gz.tbi", + "multiqc", + "multiqc/multiqc_data", + "multiqc/multiqc_data/mosdepth_cov_dist.txt", + "multiqc/multiqc_data/mosdepth_cumcov_dist.txt", + "multiqc/multiqc_data/mosdepth_perchrom.txt", + "multiqc/multiqc_data/multiqc.log", + "multiqc/multiqc_data/multiqc_bcftools_stats.txt", + "multiqc/multiqc_data/multiqc_citations.txt", + "multiqc/multiqc_data/multiqc_data.json", + "multiqc/multiqc_data/multiqc_fastqc.txt", + "multiqc/multiqc_data/multiqc_general_stats.txt", + "multiqc/multiqc_data/multiqc_software_versions.txt", + "multiqc/multiqc_data/multiqc_somalier.txt", + "multiqc/multiqc_data/multiqc_sources.txt", + "multiqc/multiqc_data/multiqc_whatshap_stats.txt", + "multiqc/multiqc_plots", + "multiqc/multiqc_report.html", + "paraphase", + "paraphase/HG002_Revio", + "paraphase/HG002_Revio/HG002_Revio.paraphase.bam", + "paraphase/HG002_Revio/HG002_Revio.paraphase.bam.bai", + "paraphase/HG002_Revio/HG002_Revio.paraphase.json", + "paraphase/HG002_Revio/HG002_Revio_paraphase_vcfs", + "paraphase/HG002_Revio/HG002_Revio_paraphase_vcfs/HG002_Revio_hba.vcf.gz", + "paraphase/HG002_Revio/HG002_Revio_paraphase_vcfs/HG002_Revio_hba.vcf.gz.tbi", + "pedigree", + "pedigree/test.ped", + "phased_variants", + "phased_variants/HG002_Revio", + "phased_variants/HG002_Revio/HG002_Revio_phased.vcf.gz", + "phased_variants/HG002_Revio/HG002_Revio_phased.vcf.gz.tbi", + "pipeline_info", + "pipeline_info/nallo_pipeline_software_mqc_versions.yml", + "qc", + "qc/cramino", + "qc/cramino/phased", + "qc/cramino/phased/HG002_Revio", + "qc/cramino/phased/HG002_Revio/HG002_Revio_cramino_aligned_phased.arrow", + "qc/cramino/phased/HG002_Revio/HG002_Revio_cramino_aligned_phased.txt", + "qc/cramino/unphased", + "qc/cramino/unphased/HG002_Revio", + "qc/cramino/unphased/HG002_Revio/HG002_Revio_cramino_aligned.arrow", + "qc/cramino/unphased/HG002_Revio/HG002_Revio_cramino_aligned.txt", + "qc/fastqc", + "qc/fastqc/HG002_Revio", + "qc/fastqc/HG002_Revio/HG002_Revio_fastqc.html", + "qc/fastqc/HG002_Revio/HG002_Revio_fastqc.zip", + "qc/mosdepth", + "qc/mosdepth/HG002_Revio", + "qc/mosdepth/HG002_Revio/HG002_Revio.mosdepth.global.dist.txt", + "qc/mosdepth/HG002_Revio/HG002_Revio.mosdepth.region.dist.txt", + "qc/mosdepth/HG002_Revio/HG002_Revio.mosdepth.summary.txt", + "qc/mosdepth/HG002_Revio/HG002_Revio.regions.bed.gz", + "qc/mosdepth/HG002_Revio/HG002_Revio.regions.bed.gz.csi", + "qc/phasing_stats", + "qc/phasing_stats/HG002_Revio", + "qc/phasing_stats/HG002_Revio/HG002_Revio_stats.blocks.tsv", + "qc/phasing_stats/HG002_Revio/HG002_Revio_stats.stats.tsv", + "qc/somalier", + "qc/somalier/relate", + "qc/somalier/relate/test", + "qc/somalier/relate/test/test.html", + "qc/somalier/relate/test/test.pairs.tsv", + "qc/somalier/relate/test/test.samples.tsv", + "repeat_annotation", + "repeat_annotation/stranger", + "repeat_annotation/stranger/HG002_Revio", + "repeat_annotation/stranger/HG002_Revio/HG002_Revio_repeat_expansion_stranger.vcf.gz", + "repeat_annotation/stranger/HG002_Revio/HG002_Revio_repeat_expansion_stranger.vcf.gz.tbi", + "repeat_calling", + "repeat_calling/trgt", + "repeat_calling/trgt/multi_sample", + "repeat_calling/trgt/multi_sample/test", + "repeat_calling/trgt/multi_sample/test/test.vcf.gz", + "repeat_calling/trgt/multi_sample/test/test.vcf.gz.tbi", + "repeat_calling/trgt/single_sample", + "repeat_calling/trgt/single_sample/HG002_Revio", + "repeat_calling/trgt/single_sample/HG002_Revio/HG002_Revio_sorted.vcf.gz", + "repeat_calling/trgt/single_sample/HG002_Revio/HG002_Revio_sorted.vcf.gz.tbi", + "repeat_calling/trgt/single_sample/HG002_Revio/HG002_Revio_spanning_sorted.bam", + "repeat_calling/trgt/single_sample/HG002_Revio/HG002_Revio_spanning_sorted.bam.bai", + "snvs", + "snvs/multi_sample", + "snvs/multi_sample/test", + "snvs/multi_sample/test/test_snv_annotated_ranked.vcf.gz", + "snvs/multi_sample/test/test_snv_annotated_ranked.vcf.gz.tbi", + "snvs/single_sample", + "snvs/single_sample/HG002_Revio", + "snvs/single_sample/HG002_Revio/HG002_Revio_snv_annotated_ranked.vcf.gz", + "snvs/single_sample/HG002_Revio/HG002_Revio_snv_annotated_ranked.vcf.gz.tbi", + "snvs/stats", + "snvs/stats/single_sample", + "snvs/stats/single_sample/HG002_Revio.vcf.gz.bcftools_stats.txt", + "svs", + "svs/multi_sample", + "svs/multi_sample/test", + "svs/multi_sample/test/test_svs_annotated.vcf.gz", + "svs/multi_sample/test/test_svs_annotated.vcf.gz.tbi", + "svs/single_sample", + "svs/single_sample/HG002_Revio", + "svs/single_sample/HG002_Revio/HG002_Revio_svs_annotated.vcf.gz", + "svs/single_sample/HG002_Revio/HG002_Revio_svs_annotated.vcf.gz.tbi" + ], + [ + "HG002_Revio.asm.bp.hap1.p_ctg.assembly_summary:md5,b949217515292b5a7735af4ad4bd5b11", + "HG002_Revio.asm.bp.hap1.p_ctg.fasta.gz:md5,380ed173f8d50419a86c229dd81a20c2", + "HG002_Revio.asm.bp.hap2.p_ctg.assembly_summary:md5,c3e50f54e9e2871771d1735c54e57c5e", + "HG002_Revio.asm.bp.hap2.p_ctg.fasta.gz:md5,6ca4cd66b46b2bf7b1ed1ee959fba6ab", + "HG002_Revio.dip.bed:md5,8230ffcc5539eef359ab5128fa60e765", + "HG002_Revio.dip.vcf.gz:md5,747ea6c9532679ae7eb5ce06f511c4c2", + "HG002_Revio.hap1.bam:md5,91467717def7554e5ed667a103b52ebb", + "HG002_Revio.hap1.bam.bai:md5,3d7137693801619c4afb4cb493c35d40", + "HG002_Revio.hap1.bed:md5,44dcedabe0edb29af441df1f0b55210a", + "HG002_Revio.hap1.paf.gz:md5,680a7278a2d492ed6ee5c7b19dd5d80f", + "HG002_Revio.hap1.sam.gz:md5,87781cea76b064c23d1b63a34423b23f", + "HG002_Revio.hap1.var.gz:md5,bd714e935825d8c665445d93c7d82206", + "HG002_Revio.hap2.bam:md5,f1da738bd01db5c6e5e8b18906fe30f2", + "HG002_Revio.hap2.bam.bai:md5,04a41250610872ae3bf86108be610883", + "HG002_Revio.hap2.bed:md5,6b4b879d4ebe97f778921252469a029c", + "HG002_Revio.hap2.paf.gz:md5,77ff9e7c1b0ed8454f7a10beba01cbf9", + "HG002_Revio.hap2.sam.gz:md5,6d512a060c74428f7758aa51a99ae8c8", + "HG002_Revio.hap2.var.gz:md5,9ba9303b30730e419138e177c7d1e0c2", + "HG002_Revio.pair.vcf.gz:md5,1909dffa43850282fe7e5ae2b2d273a7", + "HG002_Revio.copynum.bedgraph:md5,517bc59c1b235490c79aa8319437b033", + "HG002_Revio.depth.bw:md5,0b9cae1d0646fdd2f690d4255282ee8f", + "HG002_Revio.maf.bw:md5,bacc69449af34efe8576245ae8188719", + "HG002_Revio.vcf.gz:md5,c5f77b97b9ef6d543171792074eb1322", + "HG002_Revio.vcf.gz.tbi:md5,5e42ce281f81b7fdb5fa6e42ec4c7f8b", + "test.zip:md5,2042de439a4cb1b37825169a773cf24a", + "HG002_Revio_modkit_pileup_phased_1.bed.gz:md5,00b5d207be5dc8a6605698d6139afc48", + "HG002_Revio_modkit_pileup_phased_1.bed.gz.tbi:md5,58e7b0a9ddaad5be350eec78b338c1e6", + "HG002_Revio_modkit_pileup_phased_2.bed.gz:md5,bb881b1838f17235e1dc295b29f2d473", + "HG002_Revio_modkit_pileup_phased_2.bed.gz.tbi:md5,e76d65f68af11d673eda080b522d81c2", + "HG002_Revio_modkit_pileup_phased_ungrouped.bed.gz:md5,df6d44c55925a894aa5fe838f9dd449e", + "HG002_Revio_modkit_pileup_phased_ungrouped.bed.gz.tbi:md5,8348f75c0ce6fec18b57739fc36b3011", + "HG002_Revio_modkit_pileup.bed.gz:md5,55496cdcd7e4ccad86adee3cb819da56", + "HG002_Revio_modkit_pileup.bed.gz.tbi:md5,b217c5e971ecb0b8c874b0038f0d2ae4", + "mosdepth_cov_dist.txt:md5,1ab27c6267c491c1a2ccf0ac988f61a0", + "mosdepth_cumcov_dist.txt:md5,ccca5d9ba66b884b83cf982958485948", + "mosdepth_perchrom.txt:md5,12bf09d8a371ca77f525c88190f2e07d", + "multiqc_bcftools_stats.txt:md5,6f68bd58414b016e5a0f7310e876a181", + "multiqc_citations.txt:md5,a27affce20d456d20ed387097a4f0350", + "multiqc_fastqc.txt:md5,6168de97dd0d63807f925487735bdb60", + "multiqc_general_stats.txt:md5,e60e67616f5ed60b6807f7aac236e3ab", + "multiqc_whatshap_stats.txt:md5,bf958293f6f56167c9a45ad07d84249c", + "test.ped:md5,bd5cec27ba7337a85cf98e787131e2b5", + "HG002_Revio_cramino_aligned_phased.arrow:md5,a76219e9046db32c4b3d6d78425c5d78", + "HG002_Revio_cramino_aligned.arrow:md5,a76219e9046db32c4b3d6d78425c5d78", + "HG002_Revio_fastqc.html:md5,1080b519dbbb66f45eee74e311d4922c", + "HG002_Revio.mosdepth.global.dist.txt:md5,63701e857361046628f89cb84988ea1d", + "HG002_Revio.mosdepth.region.dist.txt:md5,6b46396518979ff9d9771cb8a8fbbab0", + "HG002_Revio.mosdepth.summary.txt:md5,311aad293c6d8a646b6dd4edc337845c", + "HG002_Revio.regions.bed.gz:md5,31db0f14146b65e339b54b963c304947", + "HG002_Revio.regions.bed.gz.csi:md5,026eef1c69fb4aa3a1687463fe2088ab", + "HG002_Revio_stats.blocks.tsv:md5,d6e8baec71914acb176c4edc11a4ff15", + "HG002_Revio_stats.stats.tsv:md5,743288d0efd441904359474b9de892fb" + ], + [ + [ + "HG002_Revio_haplotagged.bam", + "5df05408bd4f18a4ef1555bc5800601a" + ], + [ + "HG002_Revio.hap1.bam", + "da103c401cf854a00aa75a57cda0f34d" + ], + [ + "HG002_Revio.hap2.bam", + "e8599cef23fc88e2fe09d2bda5ea372f" + ], + [ + "HG002_Revio.paraphase.bam", + "fcc3f220bb09d3264f97e7f620779be0" + ], + [ + "HG002_Revio_spanning_sorted.bam", + "65999ab8f2bc7841de8172468bf23ab6" + ] + ], + [ + [ + "HG002_Revio.dip.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=1917, phased=true, phasedAutodetect=false]" + ], + [ + "HG002_Revio.pair.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16], sampleCount=2, variantCount=1917, phased=false, phasedAutodetect=false]" + ], + [ + "HG002_Revio.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=36, phased=false, phasedAutodetect=false]" + ], + [ + "HG002_Revio_hba.vcf.gz", + "VcfFile [chromosomes=[chr16], sampleCount=2, variantCount=2121, phased=true, phasedAutodetect=false]" + ], + [ + "HG002_Revio_phased.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=252, phased=false, phasedAutodetect=false]" + ], + [ + "HG002_Revio_repeat_expansion_stranger.vcf.gz", + "VcfFile [chromosomes=[chr20], sampleCount=1, variantCount=2, phased=false, phasedAutodetect=false]" + ], + [ + "test.vcf.gz", + "VcfFile [chromosomes=[chr20], sampleCount=1, variantCount=1, phased=false, phasedAutodetect=false]" + ], + [ + "HG002_Revio_sorted.vcf.gz", + "VcfFile [chromosomes=[chr20], sampleCount=1, variantCount=1, phased=false, phasedAutodetect=false]" + ], + [ + "test_snv_annotated_ranked.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=106, phased=false, phasedAutodetect=false]" + ], + [ + "HG002_Revio_snv_annotated_ranked.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=106, phased=false, phasedAutodetect=false]" + ], + [ + "test_svs_annotated.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=51, phased=false, phasedAutodetect=false]" + ], + [ + "HG002_Revio_svs_annotated.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=49, phased=false, phasedAutodetect=false]" + ] + ], + [ + [ + "HG002_Revio.dip.vcf.gz", + "db10cdb233cb09a46c1694536c2e79e7" + ], + [ + "HG002_Revio.pair.vcf.gz", + "fa3bfacdab5449526d29d642340d6708" + ], + [ + "HG002_Revio.vcf.gz", + "ab9044066c7bd041966eed43e0d00f13" + ], + [ + "HG002_Revio_repeat_expansion_stranger.vcf.gz", + "492a5d1a0f1656e1f7fc1b97c922cab4" + ], + [ + "test.vcf.gz", + "4ab22ba6012b9f579f1831248bb95da" + ], + [ + "HG002_Revio_sorted.vcf.gz", + "43b909ba9628b92f5062be6c413e560d" + ] + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-25T11:09:29.282904011" + } +} \ No newline at end of file diff --git a/tests/samplesheet_multisample_bam.nf.test b/tests/samplesheet_multisample_bam.nf.test new file mode 100644 index 00000000..205348e6 --- /dev/null +++ b/tests/samplesheet_multisample_bam.nf.test @@ -0,0 +1,53 @@ +nextflow_pipeline { + + name "Test pipeline GENOMICMEDICINESWEDEN_NALLO" + script "../main.nf" + tag "PIPELINE" + + test("samplesheet_multisample_bam | --phaser hiphase") { + tag "samplesheet_multisample_bam" + + when { + params { + pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/7be7114cb132be8cae9343f225bcf42ec11ecc1b/' + input = params.pipelines_testdata_base_path + 'testdata/samplesheet_multisample_bam.csv' + outdir = "$outputDir" + phaser = "hiphase" + + } + } + + then { + // stable_name: All files + folders in ${params.outdir}/ with a stable name + def stable_name = getAllFilesFromDir(params.outdir, relative: true, includeDir: true, ignore: ['pipeline_info/*.{html,json,txt}']) + // stable_path: All files in ${params.outdir}/ with stable content + def stable_path = getAllFilesFromDir(params.outdir, ignoreFile: 'tests/.nftignore') + // bam_files: All bam files + def bam_files = getAllFilesFromDir(params.outdir, include: ['**/*.bam']) + // all_vcf_files: All vcf files - can have unstable variants and/or unstable headers + def all_vcf_files = getAllFilesFromDir(params.outdir, include: ['**/*.vcf.gz']) + // stable_vcf_files: Vcf files with stable variants - can be snapshot unsing variantsMD5 + def stable_vcf_files = getAllFilesFromDir(params.outdir, ignoreFile: 'tests/.nftignore_unstable_variants', include: ['**/*.vcf.gz']) + assertAll( + { assert workflow.success}, + { assert snapshot( + // Number of successful tasks + workflow.trace.succeeded().size(), + // pipeline versions.yml file for multiqc from which Nextflow version is removed because we tests pipelines on multiple Nextflow versions + removeNextflowVersion("$outputDir/pipeline_info/nallo_pipeline_software_mqc_versions.yml"), + // All stable path name, with a relative path + stable_name, + // All files with stable contents + stable_path, + // All bam files + bam_files.collect{ file -> [ file.getName(), bam(file.toString(), stringency: 'silent').getReadsMD5() ] }, + // All vcf files + all_vcf_files.collect{ file -> [ file.getName(), path(file.toString()).vcf.summary ] }, + // Stable vcf files + stable_vcf_files.collect{ file -> [ file.getName(), path(file.toString()).vcf.variantsMD5 ] } + ).match() } + ) + } + } + +} diff --git a/tests/samplesheet_multisample_bam.nf.test.snap b/tests/samplesheet_multisample_bam.nf.test.snap new file mode 100644 index 00000000..dc759e74 --- /dev/null +++ b/tests/samplesheet_multisample_bam.nf.test.snap @@ -0,0 +1,761 @@ +{ + "samplesheet_multisample_bam | --phaser hiphase": { + "content": [ + 139, + { + "ADD_FOUND_IN_TAG": { + "bcftools": 1.2, + "busybox-awk": "1.36.1" + }, + "ADD_MOST_SEVERE_CSQ": { + "add_most_severe_consequence": 1.0, + "python": "3.8.3" + }, + "ADD_MOST_SEVERE_PLI": { + "add_most_severe_pli": 1.0, + "python": "3.8.3" + }, + "BCFTOOLS_CONCAT": { + "bcftools": 1.2 + }, + "BCFTOOLS_FILLTAGS": { + "bcftools": 1.2 + }, + "BCFTOOLS_FILLTAGS_ANNO": { + "bcftools": 1.2 + }, + "BCFTOOLS_MERGE": { + "bcftools": 1.2 + }, + "BCFTOOLS_NORM_MULTISAMPLE": { + "bcftools": 1.2 + }, + "BCFTOOLS_NORM_SINGLESAMPLE": { + "bcftools": 1.2 + }, + "BCFTOOLS_PLUGINSPLIT_SNVS": { + "bcftools": 1.2 + }, + "BCFTOOLS_PLUGINSPLIT_SVS": { + "bcftools": 1.2 + }, + "BCFTOOLS_QUERY": { + "bcftools": 1.2 + }, + "BCFTOOLS_REHEADER": { + "bcftools": 1.2 + }, + "BCFTOOLS_SORT": { + "bcftools": 1.2 + }, + "BCFTOOLS_SORT_TRGT": { + "bcftools": 1.2 + }, + "BCFTOOLS_STATS": { + "bcftools": 1.2 + }, + "BEDTOOLS_MERGE": { + "bedtools": "2.31.1" + }, + "BEDTOOLS_SORT": { + "bedtools": "2.31.1" + }, + "BGZIP_MODKIT_PILEUP_PHASED": { + "tabix": 1.2 + }, + "BGZIP_MODKIT_PILEUP_UNPHASED": { + "tabix": 1.2 + }, + "COMPRESS_STRANGER": { + "bcftools": 1.2 + }, + "CRAMINO": { + "cramino": "0.14.5" + }, + "CRAMINO_PHASED": { + "cramino": "0.14.5" + }, + "CREATE_SAMPLES_FILE": { + "gawk": "5.1.0" + }, + "DEEPVARIANT": { + "deepvariant": "1.6.1" + }, + "DIPCALL": { + "dipcall": 0.3 + }, + "ECHTVAR_ANNO": { + "echtvar": "0.2.0" + }, + "ECHTVAR_ENCODE": { + "echtvar": "0.2.0" + }, + "ENSEMBLVEP_SNV": { + "ensemblvep": 110.0 + }, + "FASTQC": { + "fastqc": "0.12.1" + }, + "GENMOD_ANNOTATE": { + "genmod": "3.8.3" + }, + "GENMOD_COMPOUND": { + "genmod": "3.8.3" + }, + "GENMOD_MODELS": { + "genmod": "3.8.3" + }, + "GENMOD_SCORE": { + "genmod": "3.8.3" + }, + "GFASTATS_MATERNAL": { + "gfastats": "1.3.6" + }, + "GFASTATS_PATERNAL": { + "gfastats": "1.3.6" + }, + "GLNEXUS": { + "glnexus": "1.4.3-0-gcecf42e" + }, + "GUNZIP_FASTA": { + "gunzip": 1.1 + }, + "HIFIASM": { + "hifiasm": "0.20.0-r639" + }, + "HIFICNV": { + "hificnv": "0.1.7-70e9988" + }, + "HIPHASE": { + "hiphase": "1.4.0-7bf2743" + }, + "MINIMAP2_ALIGN": { + "minimap2": "2.28-r1209", + "samtools": 1.2 + }, + "MINIMAP2_INDEX": { + "minimap2": "2.28-r1209" + }, + "MINIMAP2_INDEX_DIPCALL": { + "minimap2": "2.28-r1209" + }, + "MODKIT_PILEUP_PHASED": { + "modkit": "0.3.0" + }, + "MODKIT_PILEUP_UNPHASED": { + "modkit": "0.3.0" + }, + "MOSDEPTH": { + "mosdepth": "0.3.8" + }, + "PARAPHASE": { + "minimap2": "2.28-r1209", + "paraphase": "3.1.1", + "samtools": 1.2 + }, + "RELATE_INFER": { + "somalier": "0.2.18" + }, + "RELATE_RELATE": { + "somalier": "0.2.18" + }, + "SAMPLESHEET_PED": { + "create_pedigree_file": 1.0, + "python": "3.8.3" + }, + "SAMTOOLS_FAIDX": { + "samtools": 1.2 + }, + "SAMTOOLS_FASTQ": { + "samtools": 1.2 + }, + "SAMTOOLS_INDEX_DIPCALL": { + "samtools": 1.2 + }, + "SAMTOOLS_INDEX_TRGT": { + "samtools": 1.2 + }, + "SAMTOOLS_MERGE": { + "samtools": 1.2 + }, + "SAMTOOLS_SORT_TRGT": { + "samtools": 1.2 + }, + "SEVERUS": { + "severus": 1.1 + }, + "SOMALIER_EXTRACT": { + "somalier": "0.2.18" + }, + "SOMALIER_PED": { + "create_pedigree_file": 1.0, + "python": "3.8.3" + }, + "SPLIT_BED_CHUNKS": { + "split_bed_chunks": 1.0 + }, + "STRANGER": { + "stranger": "0.9.1" + }, + "SVDB_MERGE": { + "svdb": "2.8.1", + "samtools": "1.19.2" + }, + "TABIX_BGZIPTABIX": { + "tabix": 1.2 + }, + "TABIX_ENSEMBLVEP_SNV": { + "tabix": 1.2 + }, + "TABIX_SVDB_MERGE": { + "tabix": 1.2 + }, + "TRGT": { + "trgt": "0.7.0-4941fbb" + }, + "UNTAR_VEP_CACHE": { + "untar": 1.34 + }, + "WHATSHAP_STATS": { + "whatshap": 2.3 + }, + "Workflow": { + "genomic-medicine-sweden/nallo": "v0.4.0dev" + } + }, + [ + "aligned_reads", + "aligned_reads/HG002_Revio_A", + "aligned_reads/HG002_Revio_A/HG002_Revio_A_haplotagged.bam", + "aligned_reads/HG002_Revio_A/HG002_Revio_A_haplotagged.bam.bai", + "aligned_reads/HG002_Revio_B", + "aligned_reads/HG002_Revio_B/HG002_Revio_B_haplotagged.bam", + "aligned_reads/HG002_Revio_B/HG002_Revio_B_haplotagged.bam.bai", + "assembly_haplotypes", + "assembly_haplotypes/gfastats", + "assembly_haplotypes/gfastats/HG002_Revio_A", + "assembly_haplotypes/gfastats/HG002_Revio_A/HG002_Revio_A.asm.bp.hap1.p_ctg.assembly_summary", + "assembly_haplotypes/gfastats/HG002_Revio_A/HG002_Revio_A.asm.bp.hap1.p_ctg.fasta.gz", + "assembly_haplotypes/gfastats/HG002_Revio_A/HG002_Revio_A.asm.bp.hap2.p_ctg.assembly_summary", + "assembly_haplotypes/gfastats/HG002_Revio_A/HG002_Revio_A.asm.bp.hap2.p_ctg.fasta.gz", + "assembly_haplotypes/gfastats/HG002_Revio_B", + "assembly_haplotypes/gfastats/HG002_Revio_B/HG002_Revio_B.asm.bp.hap1.p_ctg.assembly_summary", + "assembly_haplotypes/gfastats/HG002_Revio_B/HG002_Revio_B.asm.bp.hap1.p_ctg.fasta.gz", + "assembly_haplotypes/gfastats/HG002_Revio_B/HG002_Revio_B.asm.bp.hap2.p_ctg.assembly_summary", + "assembly_haplotypes/gfastats/HG002_Revio_B/HG002_Revio_B.asm.bp.hap2.p_ctg.fasta.gz", + "assembly_variant_calling", + "assembly_variant_calling/dipcall", + "assembly_variant_calling/dipcall/HG002_Revio_A", + "assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.dip.bed", + "assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.dip.vcf.gz", + "assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap1.bam", + "assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap1.bam.bai", + "assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap1.bed", + "assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap1.paf.gz", + "assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap1.sam.gz", + "assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap1.var.gz", + "assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap2.bam", + "assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap2.bam.bai", + "assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap2.bed", + "assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap2.paf.gz", + "assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap2.sam.gz", + "assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap2.var.gz", + "assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.pair.vcf.gz", + "assembly_variant_calling/dipcall/HG002_Revio_B", + "assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.dip.bed", + "assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.dip.vcf.gz", + "assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap1.bam", + "assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap1.bam.bai", + "assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap1.bed", + "assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap1.paf.gz", + "assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap1.sam.gz", + "assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap1.var.gz", + "assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap2.bam", + "assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap2.bam.bai", + "assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap2.bed", + "assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap2.paf.gz", + "assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap2.sam.gz", + "assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap2.var.gz", + "assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.pair.vcf.gz", + "cnv_calling", + "cnv_calling/hificnv", + "cnv_calling/hificnv/HG002_Revio_A", + "cnv_calling/hificnv/HG002_Revio_A/HG002_Revio_A.copynum.bedgraph", + "cnv_calling/hificnv/HG002_Revio_A/HG002_Revio_A.depth.bw", + "cnv_calling/hificnv/HG002_Revio_A/HG002_Revio_A.log", + "cnv_calling/hificnv/HG002_Revio_A/HG002_Revio_A.maf.bw", + "cnv_calling/hificnv/HG002_Revio_A/HG002_Revio_A.vcf.gz", + "cnv_calling/hificnv/HG002_Revio_A/HG002_Revio_A.vcf.gz.tbi", + "cnv_calling/hificnv/HG002_Revio_B", + "cnv_calling/hificnv/HG002_Revio_B/HG002_Revio_B.copynum.bedgraph", + "cnv_calling/hificnv/HG002_Revio_B/HG002_Revio_B.depth.bw", + "cnv_calling/hificnv/HG002_Revio_B/HG002_Revio_B.log", + "cnv_calling/hificnv/HG002_Revio_B/HG002_Revio_B.maf.bw", + "cnv_calling/hificnv/HG002_Revio_B/HG002_Revio_B.vcf.gz", + "cnv_calling/hificnv/HG002_Revio_B/HG002_Revio_B.vcf.gz.tbi", + "databases", + "databases/echtvar", + "databases/echtvar/encode", + "databases/echtvar/encode/test", + "databases/echtvar/encode/test/test.zip", + "methylation", + "methylation/modkit", + "methylation/modkit/pileup", + "methylation/modkit/pileup/phased", + "methylation/modkit/pileup/phased/HG002_Revio_A", + "methylation/modkit/pileup/phased/HG002_Revio_A/HG002_Revio_A_modkit_pileup_phased_1.bed.gz", + "methylation/modkit/pileup/phased/HG002_Revio_A/HG002_Revio_A_modkit_pileup_phased_1.bed.gz.tbi", + "methylation/modkit/pileup/phased/HG002_Revio_A/HG002_Revio_A_modkit_pileup_phased_2.bed.gz", + "methylation/modkit/pileup/phased/HG002_Revio_A/HG002_Revio_A_modkit_pileup_phased_2.bed.gz.tbi", + "methylation/modkit/pileup/phased/HG002_Revio_A/HG002_Revio_A_modkit_pileup_phased_ungrouped.bed.gz", + "methylation/modkit/pileup/phased/HG002_Revio_A/HG002_Revio_A_modkit_pileup_phased_ungrouped.bed.gz.tbi", + "methylation/modkit/pileup/phased/HG002_Revio_B", + "methylation/modkit/pileup/phased/HG002_Revio_B/HG002_Revio_B_modkit_pileup_phased_1.bed.gz", + "methylation/modkit/pileup/phased/HG002_Revio_B/HG002_Revio_B_modkit_pileup_phased_1.bed.gz.tbi", + "methylation/modkit/pileup/phased/HG002_Revio_B/HG002_Revio_B_modkit_pileup_phased_2.bed.gz", + "methylation/modkit/pileup/phased/HG002_Revio_B/HG002_Revio_B_modkit_pileup_phased_2.bed.gz.tbi", + "methylation/modkit/pileup/phased/HG002_Revio_B/HG002_Revio_B_modkit_pileup_phased_ungrouped.bed.gz", + "methylation/modkit/pileup/phased/HG002_Revio_B/HG002_Revio_B_modkit_pileup_phased_ungrouped.bed.gz.tbi", + "methylation/modkit/pileup/unphased", + "methylation/modkit/pileup/unphased/HG002_Revio_A", + "methylation/modkit/pileup/unphased/HG002_Revio_A/HG002_Revio_A_modkit_pileup.bed.gz", + "methylation/modkit/pileup/unphased/HG002_Revio_A/HG002_Revio_A_modkit_pileup.bed.gz.tbi", + "methylation/modkit/pileup/unphased/HG002_Revio_B", + "methylation/modkit/pileup/unphased/HG002_Revio_B/HG002_Revio_B_modkit_pileup.bed.gz", + "methylation/modkit/pileup/unphased/HG002_Revio_B/HG002_Revio_B_modkit_pileup.bed.gz.tbi", + "multiqc", + "multiqc/multiqc_data", + "multiqc/multiqc_data/mosdepth_cov_dist.txt", + "multiqc/multiqc_data/mosdepth_cumcov_dist.txt", + "multiqc/multiqc_data/mosdepth_perchrom.txt", + "multiqc/multiqc_data/multiqc.log", + "multiqc/multiqc_data/multiqc_bcftools_stats.txt", + "multiqc/multiqc_data/multiqc_citations.txt", + "multiqc/multiqc_data/multiqc_data.json", + "multiqc/multiqc_data/multiqc_fastqc.txt", + "multiqc/multiqc_data/multiqc_general_stats.txt", + "multiqc/multiqc_data/multiqc_software_versions.txt", + "multiqc/multiqc_data/multiqc_somalier.txt", + "multiqc/multiqc_data/multiqc_sources.txt", + "multiqc/multiqc_data/multiqc_whatshap_stats.txt", + "multiqc/multiqc_plots", + "multiqc/multiqc_report.html", + "paraphase", + "paraphase/HG002_Revio_A", + "paraphase/HG002_Revio_A/HG002_Revio_A.paraphase.bam", + "paraphase/HG002_Revio_A/HG002_Revio_A.paraphase.bam.bai", + "paraphase/HG002_Revio_A/HG002_Revio_A.paraphase.json", + "paraphase/HG002_Revio_A/HG002_Revio_A_paraphase_vcfs", + "paraphase/HG002_Revio_A/HG002_Revio_A_paraphase_vcfs/HG002_Revio_A_hba.vcf.gz", + "paraphase/HG002_Revio_A/HG002_Revio_A_paraphase_vcfs/HG002_Revio_A_hba.vcf.gz.tbi", + "paraphase/HG002_Revio_B", + "paraphase/HG002_Revio_B/HG002_Revio_B.paraphase.bam", + "paraphase/HG002_Revio_B/HG002_Revio_B.paraphase.bam.bai", + "paraphase/HG002_Revio_B/HG002_Revio_B.paraphase.json", + "paraphase/HG002_Revio_B/HG002_Revio_B_paraphase_vcfs", + "paraphase/HG002_Revio_B/HG002_Revio_B_paraphase_vcfs/HG002_Revio_B_hba.vcf.gz", + "paraphase/HG002_Revio_B/HG002_Revio_B_paraphase_vcfs/HG002_Revio_B_hba.vcf.gz.tbi", + "pedigree", + "pedigree/test.ped", + "phased_variants", + "phased_variants/HG002_Revio_A", + "phased_variants/HG002_Revio_A/HG002_Revio_A_phased.blocks.tsv", + "phased_variants/HG002_Revio_A/HG002_Revio_A_phased.stats.tsv", + "phased_variants/HG002_Revio_A/HG002_Revio_A_phased.summary.tsv", + "phased_variants/HG002_Revio_A/HG002_Revio_A_phased.vcf.gz", + "phased_variants/HG002_Revio_A/HG002_Revio_A_phased.vcf.gz.tbi", + "phased_variants/HG002_Revio_B", + "phased_variants/HG002_Revio_B/HG002_Revio_B_phased.blocks.tsv", + "phased_variants/HG002_Revio_B/HG002_Revio_B_phased.stats.tsv", + "phased_variants/HG002_Revio_B/HG002_Revio_B_phased.summary.tsv", + "phased_variants/HG002_Revio_B/HG002_Revio_B_phased.vcf.gz", + "phased_variants/HG002_Revio_B/HG002_Revio_B_phased.vcf.gz.tbi", + "pipeline_info", + "pipeline_info/nallo_pipeline_software_mqc_versions.yml", + "qc", + "qc/cramino", + "qc/cramino/phased", + "qc/cramino/phased/HG002_Revio_A", + "qc/cramino/phased/HG002_Revio_A/HG002_Revio_A_cramino_aligned_phased.arrow", + "qc/cramino/phased/HG002_Revio_A/HG002_Revio_A_cramino_aligned_phased.txt", + "qc/cramino/phased/HG002_Revio_B", + "qc/cramino/phased/HG002_Revio_B/HG002_Revio_B_cramino_aligned_phased.arrow", + "qc/cramino/phased/HG002_Revio_B/HG002_Revio_B_cramino_aligned_phased.txt", + "qc/cramino/unphased", + "qc/cramino/unphased/HG002_Revio_A", + "qc/cramino/unphased/HG002_Revio_A/HG002_Revio_A_cramino_aligned.arrow", + "qc/cramino/unphased/HG002_Revio_A/HG002_Revio_A_cramino_aligned.txt", + "qc/cramino/unphased/HG002_Revio_B", + "qc/cramino/unphased/HG002_Revio_B/HG002_Revio_B_cramino_aligned.arrow", + "qc/cramino/unphased/HG002_Revio_B/HG002_Revio_B_cramino_aligned.txt", + "qc/fastqc", + "qc/fastqc/HG002_Revio_A", + "qc/fastqc/HG002_Revio_A/HG002_Revio_A_fastqc.html", + "qc/fastqc/HG002_Revio_A/HG002_Revio_A_fastqc.zip", + "qc/fastqc/HG002_Revio_B", + "qc/fastqc/HG002_Revio_B/HG002_Revio_B_fastqc.html", + "qc/fastqc/HG002_Revio_B/HG002_Revio_B_fastqc.zip", + "qc/mosdepth", + "qc/mosdepth/HG002_Revio_A", + "qc/mosdepth/HG002_Revio_A/HG002_Revio_A.mosdepth.global.dist.txt", + "qc/mosdepth/HG002_Revio_A/HG002_Revio_A.mosdepth.region.dist.txt", + "qc/mosdepth/HG002_Revio_A/HG002_Revio_A.mosdepth.summary.txt", + "qc/mosdepth/HG002_Revio_A/HG002_Revio_A.regions.bed.gz", + "qc/mosdepth/HG002_Revio_A/HG002_Revio_A.regions.bed.gz.csi", + "qc/mosdepth/HG002_Revio_B", + "qc/mosdepth/HG002_Revio_B/HG002_Revio_B.mosdepth.global.dist.txt", + "qc/mosdepth/HG002_Revio_B/HG002_Revio_B.mosdepth.region.dist.txt", + "qc/mosdepth/HG002_Revio_B/HG002_Revio_B.mosdepth.summary.txt", + "qc/mosdepth/HG002_Revio_B/HG002_Revio_B.regions.bed.gz", + "qc/mosdepth/HG002_Revio_B/HG002_Revio_B.regions.bed.gz.csi", + "qc/phasing_stats", + "qc/phasing_stats/HG002_Revio_A", + "qc/phasing_stats/HG002_Revio_A/HG002_Revio_A_stats.blocks.tsv", + "qc/phasing_stats/HG002_Revio_A/HG002_Revio_A_stats.stats.tsv", + "qc/phasing_stats/HG002_Revio_B", + "qc/phasing_stats/HG002_Revio_B/HG002_Revio_B_stats.blocks.tsv", + "qc/phasing_stats/HG002_Revio_B/HG002_Revio_B_stats.stats.tsv", + "qc/somalier", + "qc/somalier/relate", + "qc/somalier/relate/test", + "qc/somalier/relate/test/test.html", + "qc/somalier/relate/test/test.pairs.tsv", + "qc/somalier/relate/test/test.samples.tsv", + "repeat_annotation", + "repeat_annotation/stranger", + "repeat_annotation/stranger/HG002_Revio_A", + "repeat_annotation/stranger/HG002_Revio_A/HG002_Revio_A_repeat_expansion_stranger.vcf.gz", + "repeat_annotation/stranger/HG002_Revio_A/HG002_Revio_A_repeat_expansion_stranger.vcf.gz.tbi", + "repeat_annotation/stranger/HG002_Revio_B", + "repeat_annotation/stranger/HG002_Revio_B/HG002_Revio_B_repeat_expansion_stranger.vcf.gz", + "repeat_annotation/stranger/HG002_Revio_B/HG002_Revio_B_repeat_expansion_stranger.vcf.gz.tbi", + "repeat_calling", + "repeat_calling/trgt", + "repeat_calling/trgt/multi_sample", + "repeat_calling/trgt/multi_sample/test", + "repeat_calling/trgt/multi_sample/test/test.vcf.gz", + "repeat_calling/trgt/multi_sample/test/test.vcf.gz.tbi", + "repeat_calling/trgt/single_sample", + "repeat_calling/trgt/single_sample/HG002_Revio_A", + "repeat_calling/trgt/single_sample/HG002_Revio_A/HG002_Revio_A_sorted.vcf.gz", + "repeat_calling/trgt/single_sample/HG002_Revio_A/HG002_Revio_A_sorted.vcf.gz.tbi", + "repeat_calling/trgt/single_sample/HG002_Revio_A/HG002_Revio_A_spanning_sorted.bam", + "repeat_calling/trgt/single_sample/HG002_Revio_A/HG002_Revio_A_spanning_sorted.bam.bai", + "repeat_calling/trgt/single_sample/HG002_Revio_B", + "repeat_calling/trgt/single_sample/HG002_Revio_B/HG002_Revio_B_sorted.vcf.gz", + "repeat_calling/trgt/single_sample/HG002_Revio_B/HG002_Revio_B_sorted.vcf.gz.tbi", + "repeat_calling/trgt/single_sample/HG002_Revio_B/HG002_Revio_B_spanning_sorted.bam", + "repeat_calling/trgt/single_sample/HG002_Revio_B/HG002_Revio_B_spanning_sorted.bam.bai", + "snvs", + "snvs/multi_sample", + "snvs/multi_sample/test", + "snvs/multi_sample/test/test_snv_annotated_ranked.vcf.gz", + "snvs/multi_sample/test/test_snv_annotated_ranked.vcf.gz.tbi", + "snvs/single_sample", + "snvs/single_sample/HG002_Revio_A", + "snvs/single_sample/HG002_Revio_A/HG002_Revio_A_snv_annotated_ranked.vcf.gz", + "snvs/single_sample/HG002_Revio_A/HG002_Revio_A_snv_annotated_ranked.vcf.gz.tbi", + "snvs/single_sample/HG002_Revio_B", + "snvs/single_sample/HG002_Revio_B/HG002_Revio_B_snv_annotated_ranked.vcf.gz", + "snvs/single_sample/HG002_Revio_B/HG002_Revio_B_snv_annotated_ranked.vcf.gz.tbi", + "snvs/stats", + "snvs/stats/single_sample", + "snvs/stats/single_sample/HG002_Revio_A.vcf.gz.bcftools_stats.txt", + "snvs/stats/single_sample/HG002_Revio_B.vcf.gz.bcftools_stats.txt", + "svs", + "svs/multi_sample", + "svs/multi_sample/test", + "svs/multi_sample/test/test_svs_annotated.vcf.gz", + "svs/multi_sample/test/test_svs_annotated.vcf.gz.tbi", + "svs/single_sample", + "svs/single_sample/HG002_Revio_A", + "svs/single_sample/HG002_Revio_A/HG002_Revio_A_svs_annotated.vcf.gz", + "svs/single_sample/HG002_Revio_A/HG002_Revio_A_svs_annotated.vcf.gz.tbi", + "svs/single_sample/HG002_Revio_B", + "svs/single_sample/HG002_Revio_B/HG002_Revio_B_svs_annotated.vcf.gz", + "svs/single_sample/HG002_Revio_B/HG002_Revio_B_svs_annotated.vcf.gz.tbi" + ], + [ + "HG002_Revio_A.asm.bp.hap1.p_ctg.assembly_summary:md5,b949217515292b5a7735af4ad4bd5b11", + "HG002_Revio_A.asm.bp.hap1.p_ctg.fasta.gz:md5,380ed173f8d50419a86c229dd81a20c2", + "HG002_Revio_A.asm.bp.hap2.p_ctg.assembly_summary:md5,c3e50f54e9e2871771d1735c54e57c5e", + "HG002_Revio_A.asm.bp.hap2.p_ctg.fasta.gz:md5,6ca4cd66b46b2bf7b1ed1ee959fba6ab", + "HG002_Revio_B.asm.bp.hap1.p_ctg.assembly_summary:md5,7fd907d993bf1140eabc2f3c2116df96", + "HG002_Revio_B.asm.bp.hap1.p_ctg.fasta.gz:md5,323fd57714246acb37e4e5d55e953429", + "HG002_Revio_B.asm.bp.hap2.p_ctg.assembly_summary:md5,241c10b531eae6c6bd56d71be2b0806c", + "HG002_Revio_B.asm.bp.hap2.p_ctg.fasta.gz:md5,6481372dcc00afaea3418749a04ffbbf", + "HG002_Revio_A.dip.bed:md5,8230ffcc5539eef359ab5128fa60e765", + "HG002_Revio_A.dip.vcf.gz:md5,d5a5d0620cba624a482d0e48e725e232", + "HG002_Revio_A.hap1.bam:md5,f5f71f0f37cf23c69981468ed1acc977", + "HG002_Revio_A.hap1.bam.bai:md5,3e8c67dc7fc05362ff09ecbd9d43c205", + "HG002_Revio_A.hap1.bed:md5,44dcedabe0edb29af441df1f0b55210a", + "HG002_Revio_A.hap1.paf.gz:md5,680a7278a2d492ed6ee5c7b19dd5d80f", + "HG002_Revio_A.hap1.sam.gz:md5,7588cdfcad98f12558e80eca03e22a7f", + "HG002_Revio_A.hap1.var.gz:md5,bd714e935825d8c665445d93c7d82206", + "HG002_Revio_A.hap2.bam:md5,490c6e0d6aeef42da8b430a237b390c2", + "HG002_Revio_A.hap2.bam.bai:md5,04a41250610872ae3bf86108be610883", + "HG002_Revio_A.hap2.bed:md5,6b4b879d4ebe97f778921252469a029c", + "HG002_Revio_A.hap2.paf.gz:md5,77ff9e7c1b0ed8454f7a10beba01cbf9", + "HG002_Revio_A.hap2.sam.gz:md5,981e2e08c4b9b4d1d16410514440c2d6", + "HG002_Revio_A.hap2.var.gz:md5,9ba9303b30730e419138e177c7d1e0c2", + "HG002_Revio_A.pair.vcf.gz:md5,4680402dd40f18cc177bd50fb618e6f4", + "HG002_Revio_B.dip.bed:md5,395e61d926c5f9cbda71f770182a52b6", + "HG002_Revio_B.dip.vcf.gz:md5,3b3644ef50af7d513e44e09bf043d129", + "HG002_Revio_B.hap1.bam:md5,c0efe721c19a94dab1037b7a80a8ee05", + "HG002_Revio_B.hap1.bam.bai:md5,479da74059364a71bd24a0a6b98edf8f", + "HG002_Revio_B.hap1.bed:md5,8d007624a4935390fb4731817e251cff", + "HG002_Revio_B.hap1.paf.gz:md5,df23f568c86230a5dea8719e47d233b8", + "HG002_Revio_B.hap1.sam.gz:md5,36f83a3f60747d41f1472a726d2ddad1", + "HG002_Revio_B.hap1.var.gz:md5,6234237b2aee91083b6d4c67a91c0d0b", + "HG002_Revio_B.hap2.bam:md5,2081ccd985b5cf938a258183a296aedf", + "HG002_Revio_B.hap2.bam.bai:md5,d28e7fd4f409cac6d9fb07781aa2184c", + "HG002_Revio_B.hap2.bed:md5,f4d086b5254b13a8d7836290d2c1b1cb", + "HG002_Revio_B.hap2.paf.gz:md5,b1cffc2fa1ed71057acc9cef610a7fc6", + "HG002_Revio_B.hap2.sam.gz:md5,ecdf9b9d50b54776d0555c71a194af7e", + "HG002_Revio_B.hap2.var.gz:md5,f09b01fcb43bf64f92ca7ec8a2380c25", + "HG002_Revio_B.pair.vcf.gz:md5,676492865a9d4765835638d52651af73", + "HG002_Revio_A.copynum.bedgraph:md5,517bc59c1b235490c79aa8319437b033", + "HG002_Revio_A.depth.bw:md5,0b9cae1d0646fdd2f690d4255282ee8f", + "HG002_Revio_A.maf.bw:md5,bacc69449af34efe8576245ae8188719", + "HG002_Revio_A.vcf.gz:md5,05551e6dee47321f8b03219f308106cc", + "HG002_Revio_A.vcf.gz.tbi:md5,38117ec4d71c688a6f43c53946908acd", + "HG002_Revio_B.copynum.bedgraph:md5,42095da173e46804977bbbecc2fda3aa", + "HG002_Revio_B.depth.bw:md5,45c82491b7119b2d427c5bf2167811c5", + "HG002_Revio_B.maf.bw:md5,b27799b62d65661b384aa61944bd0590", + "HG002_Revio_B.vcf.gz:md5,d99e7a7335ab5f3d1fcb4cf8eac48cca", + "HG002_Revio_B.vcf.gz.tbi:md5,7a72aa048fe8389233a2cf94d843cd1e", + "test.zip:md5,9d58b608c94252a8a754f1f67149bd78", + "HG002_Revio_A_modkit_pileup_phased_1.bed.gz:md5,4de5a7d9c533afb54191eb3ac3f74887", + "HG002_Revio_A_modkit_pileup_phased_1.bed.gz.tbi:md5,f4ccf8810eda0a5d232e1b5c09da0fdc", + "HG002_Revio_A_modkit_pileup_phased_2.bed.gz:md5,b84e63399caff8d487d17fd8d1f23161", + "HG002_Revio_A_modkit_pileup_phased_2.bed.gz.tbi:md5,9be8a8a7c8a8277d2c7b3d4a27b57c13", + "HG002_Revio_A_modkit_pileup_phased_ungrouped.bed.gz:md5,94555f3f2dd7a9af587afc3eeeb99c04", + "HG002_Revio_A_modkit_pileup_phased_ungrouped.bed.gz.tbi:md5,9c945b4b97f413462252f61015f30fbd", + "HG002_Revio_B_modkit_pileup_phased_1.bed.gz:md5,4de5a7d9c533afb54191eb3ac3f74887", + "HG002_Revio_B_modkit_pileup_phased_1.bed.gz.tbi:md5,f4ccf8810eda0a5d232e1b5c09da0fdc", + "HG002_Revio_B_modkit_pileup_phased_2.bed.gz:md5,d7cbca28a55acdb6c69dd806417a8005", + "HG002_Revio_B_modkit_pileup_phased_2.bed.gz.tbi:md5,e826dc808b66b6d3713a2869136ead26", + "HG002_Revio_B_modkit_pileup_phased_ungrouped.bed.gz:md5,dd5ee2fee95d290ba50581e7efe4efe3", + "HG002_Revio_B_modkit_pileup_phased_ungrouped.bed.gz.tbi:md5,9c945b4b97f413462252f61015f30fbd", + "HG002_Revio_A_modkit_pileup.bed.gz:md5,55496cdcd7e4ccad86adee3cb819da56", + "HG002_Revio_A_modkit_pileup.bed.gz.tbi:md5,b217c5e971ecb0b8c874b0038f0d2ae4", + "HG002_Revio_B_modkit_pileup.bed.gz:md5,c217ccd3e8514a6a5eca0e163dee9f20", + "HG002_Revio_B_modkit_pileup.bed.gz.tbi:md5,383b647625175e59420c5d8044ba711f", + "mosdepth_cov_dist.txt:md5,35f4e7dce805f3f281756e2e905123fa", + "mosdepth_cumcov_dist.txt:md5,d190e66dec359ced74051791f80c966d", + "mosdepth_perchrom.txt:md5,50effe9b9d29b59ed2f5ff7c78ad666c", + "multiqc_bcftools_stats.txt:md5,b027e397bc91f5c4ec22e00f6ebdcb8d", + "multiqc_citations.txt:md5,a27affce20d456d20ed387097a4f0350", + "multiqc_fastqc.txt:md5,37674ae5d0d56386d87f38158fa18980", + "multiqc_general_stats.txt:md5,68a79ea4ce43f307b6cabc89c5dc3a92", + "multiqc_whatshap_stats.txt:md5,5d5f79e16a07b0ea191d6df9110b9a38", + "test.ped:md5,24d8694d580f782ed77d4d1b5c6f6fb4", + "HG002_Revio_A_phased.blocks.tsv:md5,c5f81e0cf56763e3a8d4b6c722916bee", + "HG002_Revio_A_phased.stats.tsv:md5,c0421b85a95b90a1239576a9bb5e4ca7", + "HG002_Revio_A_phased.summary.tsv:md5,92ea0b2d8985a9e6435f461cbf7e9533", + "HG002_Revio_B_phased.blocks.tsv:md5,1a8b683f4d2f930758e4af3fe8eccd7f", + "HG002_Revio_B_phased.stats.tsv:md5,4c8866c1a6e5340af08f7a7ee7465b6a", + "HG002_Revio_B_phased.summary.tsv:md5,b8814ea318106ad2a3d4a83853c7e8d2", + "HG002_Revio_A_cramino_aligned_phased.arrow:md5,a76219e9046db32c4b3d6d78425c5d78", + "HG002_Revio_B_cramino_aligned_phased.arrow:md5,3bb08ac5958c6cb0801f319066c3a1b2", + "HG002_Revio_A_cramino_aligned.arrow:md5,a76219e9046db32c4b3d6d78425c5d78", + "HG002_Revio_B_cramino_aligned.arrow:md5,3bb08ac5958c6cb0801f319066c3a1b2", + "HG002_Revio_A_fastqc.html:md5,25f875c3a542ff8590655685bc152658", + "HG002_Revio_B_fastqc.html:md5,4b7d698cbe79dbfb4a74e8e7f84891d5", + "HG002_Revio_A.mosdepth.global.dist.txt:md5,63701e857361046628f89cb84988ea1d", + "HG002_Revio_A.mosdepth.region.dist.txt:md5,6b46396518979ff9d9771cb8a8fbbab0", + "HG002_Revio_A.mosdepth.summary.txt:md5,311aad293c6d8a646b6dd4edc337845c", + "HG002_Revio_A.regions.bed.gz:md5,31db0f14146b65e339b54b963c304947", + "HG002_Revio_A.regions.bed.gz.csi:md5,026eef1c69fb4aa3a1687463fe2088ab", + "HG002_Revio_B.mosdepth.global.dist.txt:md5,5c2dd519f3abc19c00d1a0618cf477d4", + "HG002_Revio_B.mosdepth.region.dist.txt:md5,4a6ccfd85f9837c6c57b3ddaa8c7d263", + "HG002_Revio_B.mosdepth.summary.txt:md5,6c1d1590ed9423552d56ee456c89e6ef", + "HG002_Revio_B.regions.bed.gz:md5,837978e7b90ef81cb5aa015fbe7bb4a6", + "HG002_Revio_B.regions.bed.gz.csi:md5,d0640255d527e36655281f64e184b02c", + "HG002_Revio_A_stats.blocks.tsv:md5,8d898e3d4544dd4bd6a9a3b8221a71cd", + "HG002_Revio_A_stats.stats.tsv:md5,b09849fda8d36260d5e56dd8df175675", + "HG002_Revio_B_stats.blocks.tsv:md5,c3155cb1cc119aea4214f43325c2583f", + "HG002_Revio_B_stats.stats.tsv:md5,5a60b5d1541fc6210834f03370f88160" + ], + [ + [ + "HG002_Revio_A_haplotagged.bam", + "5df05408bd4f18a4ef1555bc5800601a" + ], + [ + "HG002_Revio_B_haplotagged.bam", + "e9aea8a85ecd1b9dde90e1a08e4a390d" + ], + [ + "HG002_Revio_A.hap1.bam", + "da103c401cf854a00aa75a57cda0f34d" + ], + [ + "HG002_Revio_A.hap2.bam", + "e8599cef23fc88e2fe09d2bda5ea372f" + ], + [ + "HG002_Revio_B.hap1.bam", + "2352f7a9960c400d8182ad2ec442887" + ], + [ + "HG002_Revio_B.hap2.bam", + "6e4f7fa25e9905d538ecc65f923806" + ], + [ + "HG002_Revio_A.paraphase.bam", + "fcc3f220bb09d3264f97e7f620779be0" + ], + [ + "HG002_Revio_B.paraphase.bam", + "fcc3f220bb09d3264f97e7f620779be0" + ], + [ + "HG002_Revio_A_spanning_sorted.bam", + "65999ab8f2bc7841de8172468bf23ab6" + ], + [ + "HG002_Revio_B_spanning_sorted.bam", + "65999ab8f2bc7841de8172468bf23ab6" + ] + ], + [ + [ + "HG002_Revio_A.dip.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=1917, phased=true, phasedAutodetect=false]" + ], + [ + "HG002_Revio_A.pair.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16], sampleCount=2, variantCount=1917, phased=false, phasedAutodetect=false]" + ], + [ + "HG002_Revio_B.dip.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=1862, phased=true, phasedAutodetect=false]" + ], + [ + "HG002_Revio_B.pair.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16], sampleCount=2, variantCount=1862, phased=false, phasedAutodetect=false]" + ], + [ + "HG002_Revio_A.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=36, phased=false, phasedAutodetect=false]" + ], + [ + "HG002_Revio_B.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=36, phased=false, phasedAutodetect=false]" + ], + [ + "HG002_Revio_A_hba.vcf.gz", + "VcfFile [chromosomes=[chr16], sampleCount=2, variantCount=2121, phased=true, phasedAutodetect=false]" + ], + [ + "HG002_Revio_B_hba.vcf.gz", + "VcfFile [chromosomes=[chr16], sampleCount=2, variantCount=2121, phased=true, phasedAutodetect=false]" + ], + [ + "HG002_Revio_A_phased.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=252, phased=false, phasedAutodetect=false]" + ], + [ + "HG002_Revio_B_phased.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=252, phased=false, phasedAutodetect=false]" + ], + [ + "HG002_Revio_A_repeat_expansion_stranger.vcf.gz", + "VcfFile [chromosomes=[chr20], sampleCount=1, variantCount=2, phased=false, phasedAutodetect=false]" + ], + [ + "HG002_Revio_B_repeat_expansion_stranger.vcf.gz", + "VcfFile [chromosomes=[chr20], sampleCount=1, variantCount=2, phased=false, phasedAutodetect=false]" + ], + [ + "test.vcf.gz", + "VcfFile [chromosomes=[chr20], sampleCount=2, variantCount=1, phased=false, phasedAutodetect=false]" + ], + [ + "HG002_Revio_A_sorted.vcf.gz", + "VcfFile [chromosomes=[chr20], sampleCount=1, variantCount=1, phased=false, phasedAutodetect=false]" + ], + [ + "HG002_Revio_B_sorted.vcf.gz", + "VcfFile [chromosomes=[chr20], sampleCount=1, variantCount=1, phased=false, phasedAutodetect=false]" + ], + [ + "test_snv_annotated_ranked.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16], sampleCount=2, variantCount=106, phased=false, phasedAutodetect=false]" + ], + [ + "HG002_Revio_A_snv_annotated_ranked.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=106, phased=false, phasedAutodetect=false]" + ], + [ + "HG002_Revio_B_snv_annotated_ranked.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=105, phased=false, phasedAutodetect=false]" + ], + [ + "test_svs_annotated.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16], sampleCount=2, variantCount=51, phased=false, phasedAutodetect=false]" + ], + [ + "HG002_Revio_A_svs_annotated.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=49, phased=false, phasedAutodetect=false]" + ], + [ + "HG002_Revio_B_svs_annotated.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=49, phased=false, phasedAutodetect=false]" + ] + ], + [ + [ + "HG002_Revio_A.dip.vcf.gz", + "db10cdb233cb09a46c1694536c2e79e7" + ], + [ + "HG002_Revio_A.pair.vcf.gz", + "fa3bfacdab5449526d29d642340d6708" + ], + [ + "HG002_Revio_B.dip.vcf.gz", + "eecfa7a0111b2ababb2e37fb91686b3f" + ], + [ + "HG002_Revio_B.pair.vcf.gz", + "83dc2bb5d8f46bf3daf99f27e4d3b022" + ], + [ + "HG002_Revio_A.vcf.gz", + "ab9044066c7bd041966eed43e0d00f13" + ], + [ + "HG002_Revio_B.vcf.gz", + "7db8959b4b1f46316bb7d5908a8b9f26" + ], + [ + "HG002_Revio_A_repeat_expansion_stranger.vcf.gz", + "492a5d1a0f1656e1f7fc1b97c922cab4" + ], + [ + "HG002_Revio_B_repeat_expansion_stranger.vcf.gz", + "492a5d1a0f1656e1f7fc1b97c922cab4" + ], + [ + "test.vcf.gz", + "7fcabf1cb86be8e3e5ad35d91e8897f9" + ], + [ + "HG002_Revio_A_sorted.vcf.gz", + "43b909ba9628b92f5062be6c413e560d" + ], + [ + "HG002_Revio_B_sorted.vcf.gz", + "43b909ba9628b92f5062be6c413e560d" + ] + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-25T11:11:02.811874333" + } +} \ No newline at end of file diff --git a/tests/samplesheet_multisample_ont_bam.nf.test b/tests/samplesheet_multisample_ont_bam.nf.test new file mode 100644 index 00000000..819186aa --- /dev/null +++ b/tests/samplesheet_multisample_ont_bam.nf.test @@ -0,0 +1,55 @@ +nextflow_pipeline { + + name "Test pipeline GENOMICMEDICINESWEDEN_NALLO" + script "../main.nf" + tag "PIPELINE" + + test("samplesheet_multisample_ont_bam | --preset ONT_R10 --phaser whatshap --parallel_alignments 2 --parallel_snv 1") { + tag "samplesheet_multisample_ont_bam" + + when { + params { + pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/7be7114cb132be8cae9343f225bcf42ec11ecc1b/' + input = params.pipelines_testdata_base_path + 'testdata/samplesheet_multisample_bam_ont.csv' + outdir = "$outputDir" + preset = 'ONT_R10' + parallel_alignments = 2 + parallel_snv = 1 + phaser = "whatshap" + } + } + + then { + // stable_name: All files + folders in ${params.outdir}/ with a stable name + def stable_name = getAllFilesFromDir(params.outdir, relative: true, includeDir: true, ignore: ['pipeline_info/*.{html,json,txt}']) + // stable_path: All files in ${params.outdir}/ with stable content + def stable_path = getAllFilesFromDir(params.outdir, ignoreFile: 'tests/.nftignore') + // bam_files: All bam files + def bam_files = getAllFilesFromDir(params.outdir, include: ['**/*.bam']) + // all_vcf_files: All vcf files - can have unstable variants and/or unstable headers + def all_vcf_files = getAllFilesFromDir(params.outdir, include: ['**/*.vcf.gz']) + // stable_vcf_files: Vcf files with stable variants - can be snapshot unsing variantsMD5 + def stable_vcf_files = getAllFilesFromDir(params.outdir, ignoreFile: 'tests/.nftignore_unstable_variants', include: ['**/*.vcf.gz']) + assertAll( + { assert workflow.success}, + { assert snapshot( + // Number of successful tasks + workflow.trace.succeeded().size(), + // pipeline versions.yml file for multiqc from which Nextflow version is removed because we tests pipelines on multiple Nextflow versions + removeNextflowVersion("$outputDir/pipeline_info/nallo_pipeline_software_mqc_versions.yml"), + // All stable path name, with a relative path + stable_name, + // All files with stable contents + stable_path, + // All bam files + bam_files.collect{ file -> [ file.getName(), bam(file.toString(), stringency: 'silent').getReadsMD5() ] }, + // All vcf files + all_vcf_files.collect{ file -> [ file.getName(), path(file.toString()).vcf.summary ] }, + // Stable vcf files + stable_vcf_files.collect{ file -> [ file.getName(), path(file.toString()).vcf.variantsMD5 ] } + ).match() } + ) + } + } + +} diff --git a/tests/samplesheet_multisample_ont_bam.nf.test.snap b/tests/samplesheet_multisample_ont_bam.nf.test.snap new file mode 100644 index 00000000..e729b592 --- /dev/null +++ b/tests/samplesheet_multisample_ont_bam.nf.test.snap @@ -0,0 +1,510 @@ +{ + "samplesheet_multisample_ont_bam | --preset ONT_R10 --phaser whatshap --parallel_alignments 2 --parallel_snv 1": { + "content": [ + 102, + { + "ADD_FOUND_IN_TAG": { + "bcftools": 1.2, + "busybox-awk": "1.36.1" + }, + "ADD_MOST_SEVERE_CSQ": { + "add_most_severe_consequence": 1.0, + "python": "3.8.3" + }, + "ADD_MOST_SEVERE_PLI": { + "add_most_severe_pli": 1.0, + "python": "3.8.3" + }, + "BCFTOOLS_CONCAT": { + "bcftools": 1.2 + }, + "BCFTOOLS_FILLTAGS": { + "bcftools": 1.2 + }, + "BCFTOOLS_FILLTAGS_ANNO": { + "bcftools": 1.2 + }, + "BCFTOOLS_NORM_MULTISAMPLE": { + "bcftools": 1.2 + }, + "BCFTOOLS_NORM_SINGLESAMPLE": { + "bcftools": 1.2 + }, + "BCFTOOLS_PLUGINSPLIT_SNVS": { + "bcftools": 1.2 + }, + "BCFTOOLS_PLUGINSPLIT_SVS": { + "bcftools": 1.2 + }, + "BCFTOOLS_QUERY": { + "bcftools": 1.2 + }, + "BCFTOOLS_REHEADER": { + "bcftools": 1.2 + }, + "BCFTOOLS_SORT": { + "bcftools": 1.2 + }, + "BCFTOOLS_STATS": { + "bcftools": 1.2 + }, + "BEDTOOLS_MERGE": { + "bedtools": "2.31.1" + }, + "BEDTOOLS_SORT": { + "bedtools": "2.31.1" + }, + "BGZIP_MODKIT_PILEUP_PHASED": { + "tabix": 1.2 + }, + "BGZIP_MODKIT_PILEUP_UNPHASED": { + "tabix": 1.2 + }, + "CRAMINO": { + "cramino": "0.14.5" + }, + "CRAMINO_PHASED": { + "cramino": "0.14.5" + }, + "CREATE_SAMPLES_FILE": { + "gawk": "5.1.0" + }, + "DEEPVARIANT": { + "deepvariant": "1.6.1" + }, + "ECHTVAR_ANNO": { + "echtvar": "0.2.0" + }, + "ECHTVAR_ENCODE": { + "echtvar": "0.2.0" + }, + "ENSEMBLVEP_SNV": { + "ensemblvep": 110.0 + }, + "FASTQC": { + "fastqc": "0.12.1" + }, + "GENMOD_ANNOTATE": { + "genmod": "3.8.3" + }, + "GENMOD_COMPOUND": { + "genmod": "3.8.3" + }, + "GENMOD_MODELS": { + "genmod": "3.8.3" + }, + "GENMOD_SCORE": { + "genmod": "3.8.3" + }, + "GLNEXUS": { + "glnexus": "1.4.3-0-gcecf42e" + }, + "GUNZIP_FASTA": { + "gunzip": 1.1 + }, + "HIFICNV": { + "hificnv": "0.1.7-70e9988" + }, + "MINIMAP2_ALIGN": { + "minimap2": "2.28-r1209", + "samtools": 1.2 + }, + "MINIMAP2_INDEX": { + "minimap2": "2.28-r1209" + }, + "MODKIT_PILEUP_PHASED": { + "modkit": "0.3.0" + }, + "MODKIT_PILEUP_UNPHASED": { + "modkit": "0.3.0" + }, + "MOSDEPTH": { + "mosdepth": "0.3.8" + }, + "PARAPHASE": { + "minimap2": "2.28-r1209", + "paraphase": "3.1.1", + "samtools": 1.2 + }, + "RELATE_RELATE": { + "somalier": "0.2.18" + }, + "SAMPLESHEET_PED": { + "create_pedigree_file": 1.0, + "python": "3.8.3" + }, + "SAMTOOLS_FAIDX": { + "samtools": 1.2 + }, + "SAMTOOLS_INDEX_WHATSHAP": { + "samtools": 1.2 + }, + "SAMTOOLS_MERGE": { + "samtools": 1.2 + }, + "SEVERUS": { + "severus": 1.1 + }, + "SOMALIER_EXTRACT": { + "somalier": "0.2.18" + }, + "SOMALIER_PED": { + "create_pedigree_file": 1.0, + "python": "3.8.3" + }, + "SPLITUBAM": { + "splitubam": "0.1.1" + }, + "SPLIT_BED_CHUNKS": { + "split_bed_chunks": 1.0 + }, + "SVDB_MERGE": { + "svdb": "2.8.1", + "samtools": "1.19.2" + }, + "TABIX_BGZIPTABIX": { + "tabix": 1.2 + }, + "TABIX_ENSEMBLVEP_SNV": { + "tabix": 1.2 + }, + "TABIX_SVDB_MERGE": { + "tabix": 1.2 + }, + "UNTAR_VEP_CACHE": { + "untar": 1.34 + }, + "WHATSHAP_HAPLOTAG": { + "whatshap": 2.3 + }, + "WHATSHAP_PHASE": { + "whatshap": 2.3, + "bgzip": 1.2, + "tabix": 1.2 + }, + "WHATSHAP_STATS": { + "whatshap": 2.3 + }, + "Workflow": { + "genomic-medicine-sweden/nallo": "v0.4.0dev" + } + }, + [ + "aligned_reads", + "aligned_reads/HG002_ONT_A", + "aligned_reads/HG002_ONT_A/HG002_ONT_A_haplotagged.bam", + "aligned_reads/HG002_ONT_A/HG002_ONT_A_haplotagged.bam.bai", + "aligned_reads/HG002_ONT_B", + "aligned_reads/HG002_ONT_B/HG002_ONT_B_haplotagged.bam", + "aligned_reads/HG002_ONT_B/HG002_ONT_B_haplotagged.bam.bai", + "cnv_calling", + "cnv_calling/hificnv", + "cnv_calling/hificnv/HG002_ONT_A", + "cnv_calling/hificnv/HG002_ONT_A/HG002_ONT_A.copynum.bedgraph", + "cnv_calling/hificnv/HG002_ONT_A/HG002_ONT_A.depth.bw", + "cnv_calling/hificnv/HG002_ONT_A/HG002_ONT_A.log", + "cnv_calling/hificnv/HG002_ONT_A/HG002_ONT_A.maf.bw", + "cnv_calling/hificnv/HG002_ONT_A/HG002_ONT_A.vcf.gz", + "cnv_calling/hificnv/HG002_ONT_A/HG002_ONT_A.vcf.gz.tbi", + "cnv_calling/hificnv/HG002_ONT_B", + "cnv_calling/hificnv/HG002_ONT_B/HG002_ONT_B.copynum.bedgraph", + "cnv_calling/hificnv/HG002_ONT_B/HG002_ONT_B.depth.bw", + "cnv_calling/hificnv/HG002_ONT_B/HG002_ONT_B.log", + "cnv_calling/hificnv/HG002_ONT_B/HG002_ONT_B.maf.bw", + "cnv_calling/hificnv/HG002_ONT_B/HG002_ONT_B.vcf.gz", + "cnv_calling/hificnv/HG002_ONT_B/HG002_ONT_B.vcf.gz.tbi", + "databases", + "databases/echtvar", + "databases/echtvar/encode", + "databases/echtvar/encode/test", + "databases/echtvar/encode/test/test.zip", + "methylation", + "methylation/modkit", + "methylation/modkit/pileup", + "methylation/modkit/pileup/phased", + "methylation/modkit/pileup/phased/HG002_ONT_A", + "methylation/modkit/pileup/phased/HG002_ONT_A/HG002_ONT_A_modkit_pileup_phased_1.bed.gz", + "methylation/modkit/pileup/phased/HG002_ONT_A/HG002_ONT_A_modkit_pileup_phased_1.bed.gz.tbi", + "methylation/modkit/pileup/phased/HG002_ONT_A/HG002_ONT_A_modkit_pileup_phased_2.bed.gz", + "methylation/modkit/pileup/phased/HG002_ONT_A/HG002_ONT_A_modkit_pileup_phased_2.bed.gz.tbi", + "methylation/modkit/pileup/phased/HG002_ONT_A/HG002_ONT_A_modkit_pileup_phased_ungrouped.bed.gz", + "methylation/modkit/pileup/phased/HG002_ONT_A/HG002_ONT_A_modkit_pileup_phased_ungrouped.bed.gz.tbi", + "methylation/modkit/pileup/phased/HG002_ONT_B", + "methylation/modkit/pileup/phased/HG002_ONT_B/HG002_ONT_B_modkit_pileup_phased_1.bed.gz", + "methylation/modkit/pileup/phased/HG002_ONT_B/HG002_ONT_B_modkit_pileup_phased_1.bed.gz.tbi", + "methylation/modkit/pileup/phased/HG002_ONT_B/HG002_ONT_B_modkit_pileup_phased_2.bed.gz", + "methylation/modkit/pileup/phased/HG002_ONT_B/HG002_ONT_B_modkit_pileup_phased_2.bed.gz.tbi", + "methylation/modkit/pileup/phased/HG002_ONT_B/HG002_ONT_B_modkit_pileup_phased_ungrouped.bed.gz", + "methylation/modkit/pileup/phased/HG002_ONT_B/HG002_ONT_B_modkit_pileup_phased_ungrouped.bed.gz.tbi", + "methylation/modkit/pileup/unphased", + "methylation/modkit/pileup/unphased/HG002_ONT_A", + "methylation/modkit/pileup/unphased/HG002_ONT_A/HG002_ONT_A_modkit_pileup.bed.gz", + "methylation/modkit/pileup/unphased/HG002_ONT_A/HG002_ONT_A_modkit_pileup.bed.gz.tbi", + "methylation/modkit/pileup/unphased/HG002_ONT_B", + "methylation/modkit/pileup/unphased/HG002_ONT_B/HG002_ONT_B_modkit_pileup.bed.gz", + "methylation/modkit/pileup/unphased/HG002_ONT_B/HG002_ONT_B_modkit_pileup.bed.gz.tbi", + "multiqc", + "multiqc/multiqc_data", + "multiqc/multiqc_data/mosdepth_cov_dist.txt", + "multiqc/multiqc_data/mosdepth_cumcov_dist.txt", + "multiqc/multiqc_data/mosdepth_perchrom.txt", + "multiqc/multiqc_data/multiqc.log", + "multiqc/multiqc_data/multiqc_bcftools_stats.txt", + "multiqc/multiqc_data/multiqc_citations.txt", + "multiqc/multiqc_data/multiqc_data.json", + "multiqc/multiqc_data/multiqc_fastqc.txt", + "multiqc/multiqc_data/multiqc_general_stats.txt", + "multiqc/multiqc_data/multiqc_software_versions.txt", + "multiqc/multiqc_data/multiqc_somalier.txt", + "multiqc/multiqc_data/multiqc_sources.txt", + "multiqc/multiqc_data/multiqc_whatshap_stats.txt", + "multiqc/multiqc_plots", + "multiqc/multiqc_report.html", + "paraphase", + "paraphase/HG002_ONT_A", + "paraphase/HG002_ONT_A/HG002_ONT_A.paraphase.bam", + "paraphase/HG002_ONT_A/HG002_ONT_A.paraphase.bam.bai", + "paraphase/HG002_ONT_A/HG002_ONT_A.paraphase.json", + "paraphase/HG002_ONT_A/HG002_ONT_A_paraphase_vcfs", + "paraphase/HG002_ONT_A/HG002_ONT_A_paraphase_vcfs/HG002_ONT_A_hba.vcf.gz", + "paraphase/HG002_ONT_A/HG002_ONT_A_paraphase_vcfs/HG002_ONT_A_hba.vcf.gz.tbi", + "paraphase/HG002_ONT_B", + "paraphase/HG002_ONT_B/HG002_ONT_B.paraphase.bam", + "paraphase/HG002_ONT_B/HG002_ONT_B.paraphase.bam.bai", + "paraphase/HG002_ONT_B/HG002_ONT_B.paraphase.json", + "paraphase/HG002_ONT_B/HG002_ONT_B_paraphase_vcfs", + "paraphase/HG002_ONT_B/HG002_ONT_B_paraphase_vcfs/HG002_ONT_B_hba.vcf.gz", + "paraphase/HG002_ONT_B/HG002_ONT_B_paraphase_vcfs/HG002_ONT_B_hba.vcf.gz.tbi", + "pedigree", + "pedigree/test.ped", + "phased_variants", + "phased_variants/HG002_ONT_A", + "phased_variants/HG002_ONT_A/HG002_ONT_A_phased.vcf.gz", + "phased_variants/HG002_ONT_A/HG002_ONT_A_phased.vcf.gz.tbi", + "phased_variants/HG002_ONT_B", + "phased_variants/HG002_ONT_B/HG002_ONT_B_phased.vcf.gz", + "phased_variants/HG002_ONT_B/HG002_ONT_B_phased.vcf.gz.tbi", + "pipeline_info", + "pipeline_info/nallo_pipeline_software_mqc_versions.yml", + "qc", + "qc/cramino", + "qc/cramino/phased", + "qc/cramino/phased/HG002_ONT_A", + "qc/cramino/phased/HG002_ONT_A/HG002_ONT_A_cramino_aligned_phased.arrow", + "qc/cramino/phased/HG002_ONT_A/HG002_ONT_A_cramino_aligned_phased.txt", + "qc/cramino/phased/HG002_ONT_B", + "qc/cramino/phased/HG002_ONT_B/HG002_ONT_B_cramino_aligned_phased.arrow", + "qc/cramino/phased/HG002_ONT_B/HG002_ONT_B_cramino_aligned_phased.txt", + "qc/cramino/unphased", + "qc/cramino/unphased/HG002_ONT_A", + "qc/cramino/unphased/HG002_ONT_A/HG002_ONT_A_cramino_aligned.arrow", + "qc/cramino/unphased/HG002_ONT_A/HG002_ONT_A_cramino_aligned.txt", + "qc/cramino/unphased/HG002_ONT_B", + "qc/cramino/unphased/HG002_ONT_B/HG002_ONT_B_cramino_aligned.arrow", + "qc/cramino/unphased/HG002_ONT_B/HG002_ONT_B_cramino_aligned.txt", + "qc/fastqc", + "qc/fastqc/HG002_ONT_A", + "qc/fastqc/HG002_ONT_A/HG002_ONT_A_fastqc.html", + "qc/fastqc/HG002_ONT_A/HG002_ONT_A_fastqc.zip", + "qc/fastqc/HG002_ONT_B", + "qc/fastqc/HG002_ONT_B/HG002_ONT_B_fastqc.html", + "qc/fastqc/HG002_ONT_B/HG002_ONT_B_fastqc.zip", + "qc/mosdepth", + "qc/mosdepth/HG002_ONT_A", + "qc/mosdepth/HG002_ONT_A/HG002_ONT_A.mosdepth.global.dist.txt", + "qc/mosdepth/HG002_ONT_A/HG002_ONT_A.mosdepth.region.dist.txt", + "qc/mosdepth/HG002_ONT_A/HG002_ONT_A.mosdepth.summary.txt", + "qc/mosdepth/HG002_ONT_A/HG002_ONT_A.regions.bed.gz", + "qc/mosdepth/HG002_ONT_A/HG002_ONT_A.regions.bed.gz.csi", + "qc/mosdepth/HG002_ONT_B", + "qc/mosdepth/HG002_ONT_B/HG002_ONT_B.mosdepth.global.dist.txt", + "qc/mosdepth/HG002_ONT_B/HG002_ONT_B.mosdepth.region.dist.txt", + "qc/mosdepth/HG002_ONT_B/HG002_ONT_B.mosdepth.summary.txt", + "qc/mosdepth/HG002_ONT_B/HG002_ONT_B.regions.bed.gz", + "qc/mosdepth/HG002_ONT_B/HG002_ONT_B.regions.bed.gz.csi", + "qc/phasing_stats", + "qc/phasing_stats/HG002_ONT_A", + "qc/phasing_stats/HG002_ONT_A/HG002_ONT_A_stats.blocks.tsv", + "qc/phasing_stats/HG002_ONT_A/HG002_ONT_A_stats.stats.tsv", + "qc/phasing_stats/HG002_ONT_B", + "qc/phasing_stats/HG002_ONT_B/HG002_ONT_B_stats.blocks.tsv", + "qc/phasing_stats/HG002_ONT_B/HG002_ONT_B_stats.stats.tsv", + "qc/somalier", + "qc/somalier/relate", + "qc/somalier/relate/test", + "qc/somalier/relate/test/test.html", + "qc/somalier/relate/test/test.pairs.tsv", + "qc/somalier/relate/test/test.samples.tsv", + "snvs", + "snvs/multi_sample", + "snvs/multi_sample/test", + "snvs/multi_sample/test/test_snv_annotated_ranked.vcf.gz", + "snvs/multi_sample/test/test_snv_annotated_ranked.vcf.gz.tbi", + "snvs/single_sample", + "snvs/single_sample/HG002_ONT_A", + "snvs/single_sample/HG002_ONT_A/HG002_ONT_A_snv_annotated_ranked.vcf.gz", + "snvs/single_sample/HG002_ONT_A/HG002_ONT_A_snv_annotated_ranked.vcf.gz.tbi", + "snvs/single_sample/HG002_ONT_B", + "snvs/single_sample/HG002_ONT_B/HG002_ONT_B_snv_annotated_ranked.vcf.gz", + "snvs/single_sample/HG002_ONT_B/HG002_ONT_B_snv_annotated_ranked.vcf.gz.tbi", + "snvs/stats", + "snvs/stats/single_sample", + "snvs/stats/single_sample/HG002_ONT_A.vcf.gz.bcftools_stats.txt", + "snvs/stats/single_sample/HG002_ONT_B.vcf.gz.bcftools_stats.txt", + "svs", + "svs/multi_sample", + "svs/multi_sample/test", + "svs/multi_sample/test/test_svs_annotated.vcf.gz", + "svs/multi_sample/test/test_svs_annotated.vcf.gz.tbi", + "svs/single_sample", + "svs/single_sample/HG002_ONT_A", + "svs/single_sample/HG002_ONT_A/HG002_ONT_A_svs_annotated.vcf.gz", + "svs/single_sample/HG002_ONT_A/HG002_ONT_A_svs_annotated.vcf.gz.tbi", + "svs/single_sample/HG002_ONT_B", + "svs/single_sample/HG002_ONT_B/HG002_ONT_B_svs_annotated.vcf.gz", + "svs/single_sample/HG002_ONT_B/HG002_ONT_B_svs_annotated.vcf.gz.tbi" + ], + [ + "HG002_ONT_A.copynum.bedgraph:md5,4c5517c1783afa11ff93c8d8627fbe42", + "HG002_ONT_A.depth.bw:md5,7c1ad330a37ae8c9bfc89d5ed4f327ab", + "HG002_ONT_A.maf.bw:md5,c3a2453422665c6c25b7114ee258b85f", + "HG002_ONT_A.vcf.gz:md5,17b78d0f16662393fde35c8dba53dcd3", + "HG002_ONT_A.vcf.gz.tbi:md5,0abf55893512d2546a3f3231bb990f5d", + "HG002_ONT_B.copynum.bedgraph:md5,7d30f621d502d16301fa79cf48a3b903", + "HG002_ONT_B.depth.bw:md5,633a878a4258d2bf767df96388abb4cd", + "HG002_ONT_B.maf.bw:md5,1951883a15f76e13f5a3ae01c062e265", + "HG002_ONT_B.vcf.gz:md5,6bdb2a31c8ffa0d30dccadb37487ce6d", + "HG002_ONT_B.vcf.gz.tbi:md5,418164cae69148cd90545a56728340c5", + "test.zip:md5,779efd29ec2cc66bef05c173c44e4168", + "HG002_ONT_A_modkit_pileup_phased_1.bed.gz:md5,2be86a42ac0384ac6d27fdf6e65304b7", + "HG002_ONT_A_modkit_pileup_phased_1.bed.gz.tbi:md5,a7955eabc34456dce834a2c966071eaa", + "HG002_ONT_A_modkit_pileup_phased_2.bed.gz:md5,ec565bd66fc73d380b7f9eb768369a65", + "HG002_ONT_A_modkit_pileup_phased_2.bed.gz.tbi:md5,e6eb3c61b79a4abd0fd952f710d6eab3", + "HG002_ONT_A_modkit_pileup_phased_ungrouped.bed.gz:md5,b42b812e1dced6242ed206754c7b3f3e", + "HG002_ONT_A_modkit_pileup_phased_ungrouped.bed.gz.tbi:md5,0c232dffb9651d934b179f95365931db", + "HG002_ONT_B_modkit_pileup_phased_1.bed.gz:md5,2be86a42ac0384ac6d27fdf6e65304b7", + "HG002_ONT_B_modkit_pileup_phased_1.bed.gz.tbi:md5,a7955eabc34456dce834a2c966071eaa", + "HG002_ONT_B_modkit_pileup_phased_2.bed.gz:md5,ec565bd66fc73d380b7f9eb768369a65", + "HG002_ONT_B_modkit_pileup_phased_2.bed.gz.tbi:md5,e6eb3c61b79a4abd0fd952f710d6eab3", + "HG002_ONT_B_modkit_pileup_phased_ungrouped.bed.gz:md5,42dcaedf8c379a4e5dee0822d5e8aca4", + "HG002_ONT_B_modkit_pileup_phased_ungrouped.bed.gz.tbi:md5,3d97d016882c99e4e21112fc76ceb2a2", + "HG002_ONT_A_modkit_pileup.bed.gz:md5,e04d51deb9019e67e7ddd7f1bd82a580", + "HG002_ONT_A_modkit_pileup.bed.gz.tbi:md5,1e198df01c63afea13ef9d04e2d03684", + "HG002_ONT_B_modkit_pileup.bed.gz:md5,95a96ceddc795c9c5c4a8d9e6f9d3b5b", + "HG002_ONT_B_modkit_pileup.bed.gz.tbi:md5,8276c6feeac0be16274198831c75023d", + "mosdepth_cov_dist.txt:md5,1eb2a5c39fd4b8dd814049b65b007037", + "mosdepth_cumcov_dist.txt:md5,5ad1d589df3fa7fe5d21fc95001573a9", + "mosdepth_perchrom.txt:md5,86a907217d64d4c2717885403058580f", + "multiqc_bcftools_stats.txt:md5,41a78d00bdca33cf0d2a558bb60838db", + "multiqc_citations.txt:md5,a27affce20d456d20ed387097a4f0350", + "multiqc_fastqc.txt:md5,5254c5d578af3a24182ccf3248183ac6", + "multiqc_general_stats.txt:md5,0722f1462d3502d5383eb86a484192c6", + "multiqc_whatshap_stats.txt:md5,5c4b972c8d52b3d997f117b39ba3ad5d", + "test.ped:md5,deb1ee6bd38d6e8f7cb92801d8a12f12", + "HG002_ONT_A_cramino_aligned_phased.arrow:md5,d2a5c81595fa34925ab8f03078487d81", + "HG002_ONT_B_cramino_aligned_phased.arrow:md5,61af72539e105cec79db7c9b78eb15a7", + "HG002_ONT_A_cramino_aligned.arrow:md5,d2a5c81595fa34925ab8f03078487d81", + "HG002_ONT_B_cramino_aligned.arrow:md5,61af72539e105cec79db7c9b78eb15a7", + "HG002_ONT_A_fastqc.html:md5,94d86b38a30f846de64b840656663d18", + "HG002_ONT_B_fastqc.html:md5,2ec692ee5acf69717811be481d38f775", + "HG002_ONT_A.mosdepth.global.dist.txt:md5,5ae0972357f99aa481a0bf12fb9e0b0b", + "HG002_ONT_A.mosdepth.region.dist.txt:md5,023b1c6aeaf8fa5ededd6b711a5cd012", + "HG002_ONT_A.mosdepth.summary.txt:md5,c3b664b0983213f73edf3c0d5a0b04a2", + "HG002_ONT_A.regions.bed.gz:md5,da66d741bb69b5c259a8611848839dc7", + "HG002_ONT_A.regions.bed.gz.csi:md5,76f06311933695287c8716fe2c8a2d20", + "HG002_ONT_B.mosdepth.global.dist.txt:md5,e551c7a9d1a26cecc99d15ac93a4a924", + "HG002_ONT_B.mosdepth.region.dist.txt:md5,11154f617f447f4c59dc192d9af4249f", + "HG002_ONT_B.mosdepth.summary.txt:md5,bcb06b29c22cb6ad200f283e72c29653", + "HG002_ONT_B.regions.bed.gz:md5,1aa62d46a1e6683da3d44c59c502354b", + "HG002_ONT_B.regions.bed.gz.csi:md5,11db27a464f8996bae5521ee7d71c1ce", + "HG002_ONT_A_stats.blocks.tsv:md5,aac8023443ddf578ffcd11121391f1cf", + "HG002_ONT_A_stats.stats.tsv:md5,27fdac1e01e6491374c631239e6183aa", + "HG002_ONT_B_stats.blocks.tsv:md5,0adf84be03536262bf8d58eda524d709", + "HG002_ONT_B_stats.stats.tsv:md5,eb2a2c3b64feb8acff4df3a1b8d33b78" + ], + [ + [ + "HG002_ONT_A_haplotagged.bam", + "53495f0b494894437c243a5c5f47c4fc" + ], + [ + "HG002_ONT_B_haplotagged.bam", + "325c284fc112dff72679b38c9ef2c2da" + ], + [ + "HG002_ONT_A.paraphase.bam", + "7b8dc04d36dc2290fd031da73e8c8553" + ], + [ + "HG002_ONT_B.paraphase.bam", + "7b8dc04d36dc2290fd031da73e8c8553" + ] + ], + [ + [ + "HG002_ONT_A.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=30, phased=false, phasedAutodetect=false]" + ], + [ + "HG002_ONT_B.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=31, phased=false, phasedAutodetect=false]" + ], + [ + "HG002_ONT_A_hba.vcf.gz", + "VcfFile [chromosomes=[chr16], sampleCount=2, variantCount=2101, phased=true, phasedAutodetect=false]" + ], + [ + "HG002_ONT_B_hba.vcf.gz", + "VcfFile [chromosomes=[chr16], sampleCount=2, variantCount=2101, phased=true, phasedAutodetect=false]" + ], + [ + "HG002_ONT_A_phased.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=236, phased=false, phasedAutodetect=false]" + ], + [ + "HG002_ONT_B_phased.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=236, phased=false, phasedAutodetect=false]" + ], + [ + "test_snv_annotated_ranked.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16], sampleCount=2, variantCount=105, phased=false, phasedAutodetect=false]" + ], + [ + "HG002_ONT_A_snv_annotated_ranked.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=99, phased=false, phasedAutodetect=false]" + ], + [ + "HG002_ONT_B_snv_annotated_ranked.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=99, phased=false, phasedAutodetect=false]" + ], + [ + "test_svs_annotated.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16], sampleCount=2, variantCount=66, phased=false, phasedAutodetect=false]" + ], + [ + "HG002_ONT_A_svs_annotated.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=61, phased=false, phasedAutodetect=false]" + ], + [ + "HG002_ONT_B_svs_annotated.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=60, phased=false, phasedAutodetect=false]" + ] + ], + [ + [ + "HG002_ONT_A.vcf.gz", + "7d27e8af63075fc17b4e6935e6397e9f" + ], + [ + "HG002_ONT_B.vcf.gz", + "ab11a22397e05e4b7f7c5c809e9407bf" + ] + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-25T11:12:30.270856551" + } +} \ No newline at end of file From 79b836b2368761b8aaf9b68460e11aff115238c7 Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Fri, 25 Oct 2024 14:10:09 +0200 Subject: [PATCH 044/106] Run 8 parallel alignment processes by default (#418) * Run 8 parallel alignments by default * wip - splitubam needs fix * try updating version * use 2 or 1parallel alignments in test * update snaps * restore * update snaps * Revert "restore" This reverts commit 888a1d806fd339f726d50c516d25ac4f83811c13. * update snaps * check for unique filenames * Update CHANGELOG.md Co-authored-by: Daniel Schmitz --------- Co-authored-by: Daniel Schmitz --- CHANGELOG.md | 2 + conf/modules/general.config | 4 +- conf/test.config | 5 +- docs/parameters.md | 2 +- docs/usage.md | 2 +- modules.json | 5 +- .../nf-core/samtools/merge/environment.yml | 10 +- modules/nf-core/samtools/merge/main.nf | 6 +- modules/nf-core/samtools/merge/meta.yml | 117 +++++----- .../samtools/merge/samtools-merge.diff | 50 +++-- .../samtools/merge/tests/main.nf.test.snap | 32 +-- nextflow.config | 2 +- nextflow_schema.json | 2 +- .../local/utils_nfcore_nallo_pipeline/main.nf | 7 +- tests/main.nf.test.snap | 201 ------------------ tests/samplesheet.nf.test.snap | 10 +- .../samplesheet_multisample_bam.nf.test.snap | 7 +- tests/samplesheet_multisample_ont_bam.nf.test | 4 +- ...mplesheet_multisample_ont_bam.nf.test.snap | 9 +- 19 files changed, 161 insertions(+), 316 deletions(-) delete mode 100644 tests/main.nf.test.snap diff --git a/CHANGELOG.md b/CHANGELOG.md index d4d6b48a..48d4df78 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#403](https://github.com/genomic-medicine-sweden/nallo/pull/403) - Added `FOUND_IN=hificnv` tags to CNV calling output - [#408](https://github.com/genomic-medicine-sweden/nallo/pull/408) - Added a new subworkflow to annotate SVs - [#417](https://github.com/genomic-medicine-sweden/nallo/pull/417) - Added `FOUND_IN=deepvariant` tags to SNV calling output +- [#418](https://github.com/genomic-medicine-sweden/nallo/pull/418) - Added a check for unique input filenames for each sample - [#419](https://github.com/genomic-medicine-sweden/nallo/pull/419) - Added support for SV filtering using input BED file ([#348](https://github.com/genomic-medicine-sweden/nallo/issues/348)) - [#430](https://github.com/genomic-medicine-sweden/nallo/pull/430) - Added a GitHub action to build and publish docs to GitHub Pages - [#431](https://github.com/genomic-medicine-sweden/nallo/pull/431) - Added files needed to automatically build and publish docs to GitHub Pages @@ -53,6 +54,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#411](https://github.com/genomic-medicine-sweden/nallo/pull/411) - Updated longphase module to most recent version. ([#409](https://github.com/genomic-medicine-sweden/nallo/issues/409)). - [#416](https://github.com/genomic-medicine-sweden/nallo/pull/416) - Updated WhatsHap to 2.3 and added the `--use-supplementary` flag to use supplementary reads for phasing by default. Changed modules to use biocontainers instead of custom containers. ([#296](https://github.com/genomic-medicine-sweden/nallo/issues/296)) - [#417](https://github.com/genomic-medicine-sweden/nallo/pull/417) - Updated SNV annotation tests to use correct configuration, and snapshot the md5sum, and summary of the variants +- [#418](https://github.com/genomic-medicine-sweden/nallo/pull/418) - Changed the default value of `--parallel_alignments` from 1 to 8, meaning the pipeline will perform parallel alignment by default - [#422](https://github.com/genomic-medicine-sweden/nallo/pull/422) - Updated nf-core/tools template to v3.0.1 - [#423](https://github.com/genomic-medicine-sweden/nallo/pull/423) - Updated metro map - [#428](https://github.com/genomic-medicine-sweden/nallo/pull/428) - Changed from using bcftools to SVDB for SV merging diff --git a/conf/modules/general.config b/conf/modules/general.config index afed3397..ccecf11e 100644 --- a/conf/modules/general.config +++ b/conf/modules/general.config @@ -138,7 +138,9 @@ process { } withName: '.*:NALLO:MINIMAP2_ALIGN' { - ext.prefix = { "${meta.id}_aligned" } + // Samtools will not sort supplementary reads properly, to snapshot the md5sum + // they must be input in the same order and can therefore not be named the same + ext.prefix = { meta.n_files > 1 ? "${reads}" : "${meta.id}_aligned}" } ext.args = { [ "-y", "-x ${params.minimap2_read_mapping_preset}", diff --git a/conf/test.config b/conf/test.config index 5da8c4c7..9f91f654 100644 --- a/conf/test.config +++ b/conf/test.config @@ -40,8 +40,9 @@ params { somalier_sites = params.pipelines_testdata_base_path + 'reference/somalier_sites.vcf.gz' // Pipeline options - parallel_snv = 2 - preset = "revio" + parallel_alignments = 2 + parallel_snv = 2 + preset = "revio" // Test config options extra_modkit_options = '--seed 1 --sampling-frac 0.1' diff --git a/docs/parameters.md b/docs/parameters.md index 13164921..96498185 100644 --- a/docs/parameters.md +++ b/docs/parameters.md @@ -101,7 +101,7 @@ Workflow options specific to genomic-medicine-sweden/nallo | `sv_caller` | Which structural variant caller to use (`severus`, `sniffles`) | `string` | severus | | | | `phaser` | Which phasing software to use (`longphase`, `whatshap`, `hiphase`) | `string` | longphase | | | | `hifiasm_mode` | Run hifiasm in hifi-only or hifi-trio mode (`hifi-only`, `trio-binning`) | `string` | hifi-only | | | -| `parallel_alignments` | If parallel_alignments is bigger than 1, input files will be split and aligned in parallel to reduce processing time. | `integer` | 1 | | | +| `parallel_alignments` | If parallel_alignments is bigger than 1, input files will be split and aligned in parallel to reduce processing time. | `integer` | 8 | | | | `parallel_snv` | If parallel_snv is bigger than 1, short variant calling will be done in parallel to reduce processing time. | `integer` | 13 | | | | `vep_cache_version` | VEP cache version | `integer` | 110 | | | | `vep_plugin_files` | A csv file with vep_plugins as header, and then paths to vep plugin files. Paths to pLI_values.txt and LoFtool_scores.txt are required. | `string` | | | | diff --git a/docs/usage.md b/docs/usage.md index 6eea24c9..b11265dd 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -302,7 +302,7 @@ Turned off with `--skip_sv_annotation`. - Limit SNV calling to regions in BED file (`--bed`). - By default SNV-calling is split into 13 parallel processes, this speeds up the variant calling significantly. Limit this by setting `--parallel_snv` to a different number. -- By default the pipeline does not perform parallel alignment, but this can be changed by setting `--parallel_alignments` to split the alignment into multiple processes. This comes with some additional overhead, but speeds up the alignment significantly. +- By default the pipeline splits the input files into eight pieces, performs parallel alignment and then merges the files. This can be changed to a different number with `--parallel_alignments`, or turned off by supplying a value of 1. Parallel alignment comes with some additional overhead, but can speed up the pipeline significantly. ## Reproducibility diff --git a/modules.json b/modules.json index a3fa2ed7..55088401 100644 --- a/modules.json +++ b/modules.json @@ -199,8 +199,9 @@ }, "samtools/merge": { "branch": "master", - "git_sha": "e9bc33485e420b51cfbed3cf63ac7463cd5739d3", - "installed_by": ["modules"] + "git_sha": "b13f07be4c508d6ff6312d354d09f2493243e208", + "installed_by": ["modules"], + "patch": "modules/nf-core/samtools/merge/samtools-merge.diff" }, "samtools/sort": { "branch": "master", diff --git a/modules/nf-core/samtools/merge/environment.yml b/modules/nf-core/samtools/merge/environment.yml index 0800e05e..62054fc9 100644 --- a/modules/nf-core/samtools/merge/environment.yml +++ b/modules/nf-core/samtools/merge/environment.yml @@ -1,10 +1,8 @@ -name: samtools_merge - +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda - - defaults - dependencies: - - bioconda::htslib=1.20 - - bioconda::samtools=1.20 + - bioconda::htslib=1.21 + - bioconda::samtools=1.21 diff --git a/modules/nf-core/samtools/merge/main.nf b/modules/nf-core/samtools/merge/main.nf index c60147ed..67712a68 100644 --- a/modules/nf-core/samtools/merge/main.nf +++ b/modules/nf-core/samtools/merge/main.nf @@ -8,7 +8,7 @@ process SAMTOOLS_MERGE { 'biocontainers/samtools:1.20--h50ea8bc_0' }" input: - tuple val(meta), path(input_files, stageAs: "?/*") + tuple val(meta), path(input_files) tuple val(meta2), path(fasta) tuple val(meta3), path(fai) val(index_type) @@ -17,7 +17,6 @@ process SAMTOOLS_MERGE { tuple val(meta), path("${prefix}.bam") , optional:true, emit: bam tuple val(meta), path("${prefix}.cram") , optional:true, emit: cram tuple val(meta), path("*.${index_type}"), optional:true, emit: index - tuple val(meta), path("*.crai") , optional:true, emit: crai path "versions.yml" , emit: versions when: @@ -28,6 +27,7 @@ process SAMTOOLS_MERGE { prefix = task.ext.prefix ?: "${meta.id}" def file_type = input_files instanceof List ? input_files[0].getExtension() : input_files.getExtension() def reference = fasta ? "--reference ${fasta}" : "" + def input = (input_files.collect().size() > 1) ? input_files.sort { it.name } : input_files """ samtools \\ merge \\ @@ -35,7 +35,7 @@ process SAMTOOLS_MERGE { $args \\ ${reference} \\ ${prefix}.${file_type}##idx##${prefix}.${file_type}.${index_type} \\ - $input_files + $input cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/samtools/merge/meta.yml b/modules/nf-core/samtools/merge/meta.yml index 2e8f3dbb..235aa219 100644 --- a/modules/nf-core/samtools/merge/meta.yml +++ b/modules/nf-core/samtools/merge/meta.yml @@ -15,60 +15,81 @@ tools: documentation: http://www.htslib.org/doc/samtools.html doi: 10.1093/bioinformatics/btp352 licence: ["MIT"] + identifier: biotools:samtools input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - input_files: - type: file - description: BAM/CRAM file - pattern: "*.{bam,cram,sam}" - - meta2: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'genome' ] - - fasta: - type: file - description: Reference file the CRAM was created with (optional) - pattern: "*.{fasta,fa}" - - meta3: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'genome' ] - - fai: - type: file - description: Index of the reference file the CRAM was created with (optional) - pattern: "*.fai" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - input_files: + type: file + description: BAM/CRAM file + pattern: "*.{bam,cram,sam}" + - - meta2: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'genome' ] + - fasta: + type: file + description: Reference file the CRAM was created with (optional) + pattern: "*.{fasta,fa}" + - - meta3: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'genome' ] + - fai: + type: file + description: Index of the reference file the CRAM was created with (optional) + pattern: "*.fai" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - bam: - type: file - description: BAM file - pattern: "*.{bam}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - ${prefix}.bam: + type: file + description: BAM file + pattern: "*.{bam}" - cram: - type: file - description: CRAM file - pattern: "*.{cram}" - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - ${prefix}.cram: + type: file + description: CRAM file + pattern: "*.{cram}" - csi: - type: file - description: BAM index file (optional) - pattern: "*.csi" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.csi": + type: file + description: BAM index file (optional) + pattern: "*.csi" - crai: - type: file - description: CRAM index file (optional) - pattern: "*.crai" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.crai": + type: file + description: CRAM index file (optional) + pattern: "*.crai" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@drpatelh" - "@yuukiiwa " diff --git a/modules/nf-core/samtools/merge/samtools-merge.diff b/modules/nf-core/samtools/merge/samtools-merge.diff index d252e1bd..e1402bb4 100644 --- a/modules/nf-core/samtools/merge/samtools-merge.diff +++ b/modules/nf-core/samtools/merge/samtools-merge.diff @@ -1,8 +1,20 @@ Changes in module 'nf-core/samtools/merge' +'modules/nf-core/samtools/merge/meta.yml' is unchanged +Changes in 'samtools/merge/main.nf': --- modules/nf-core/samtools/merge/main.nf +++ modules/nf-core/samtools/merge/main.nf -@@ -11,14 +11,14 @@ - tuple val(meta), path(input_files, stageAs: "?/*") +@@ -4,21 +4,20 @@ + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? +- 'https://depot.galaxyproject.org/singularity/samtools:1.21--h50ea8bc_0' : +- 'biocontainers/samtools:1.21--h50ea8bc_0' }" ++ 'https://depot.galaxyproject.org/singularity/samtools:1.20--h50ea8bc_0' : ++ 'biocontainers/samtools:1.20--h50ea8bc_0' }" + + input: +- tuple val(meta), path(input_files, stageAs: "?/*") ++ tuple val(meta), path(input_files) tuple val(meta2), path(fasta) tuple val(meta3), path(fai) - @@ -18,20 +30,28 @@ Changes in module 'nf-core/samtools/merge' + tuple val(meta), path("${prefix}.bam") , optional:true, emit: bam + tuple val(meta), path("${prefix}.cram") , optional:true, emit: cram + tuple val(meta), path("*.${index_type}"), optional:true, emit: index -+ tuple val(meta), path("*.crai") , optional:true, emit: crai + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when -@@ -34,7 +34,7 @@ +@@ -28,14 +27,15 @@ + prefix = task.ext.prefix ?: "${meta.id}" + def file_type = input_files instanceof List ? input_files[0].getExtension() : input_files.getExtension() + def reference = fasta ? "--reference ${fasta}" : "" ++ def input = (input_files.collect().size() > 1) ? input_files.sort { it.name } : input_files + """ + samtools \\ + merge \\ --threads ${task.cpus-1} \\ $args \\ ${reference} \\ - ${prefix}.${file_type} \\ +- $input_files + ${prefix}.${file_type}##idx##${prefix}.${file_type}.${index_type} \\ - $input_files ++ $input cat <<-END_VERSIONS > versions.yml + "${task.process}": @@ -47,10 +47,9 @@ def args = task.ext.args ?: '' prefix = task.ext.suffix ? "${meta.id}${task.ext.suffix}" : "${meta.id}" @@ -46,19 +66,9 @@ Changes in module 'nf-core/samtools/merge' cat <<-END_VERSIONS > versions.yml ---- modules/nf-core/samtools/merge/environment.yml -+++ modules/nf-core/samtools/merge/environment.yml -@@ -1,8 +1,10 @@ - name: samtools_merge -+ - channels: - - conda-forge - - bioconda - - defaults -+ - dependencies: -+ - bioconda::htslib=1.20 - - bioconda::samtools=1.20 -- - bioconda::htslib=1.20 - +'modules/nf-core/samtools/merge/environment.yml' is unchanged +'modules/nf-core/samtools/merge/tests/tags.yml' is unchanged +'modules/nf-core/samtools/merge/tests/index.config' is unchanged +'modules/nf-core/samtools/merge/tests/main.nf.test.snap' is unchanged +'modules/nf-core/samtools/merge/tests/main.nf.test' is unchanged ************************************************************ diff --git a/modules/nf-core/samtools/merge/tests/main.nf.test.snap b/modules/nf-core/samtools/merge/tests/main.nf.test.snap index 17bc846f..0a41e01a 100644 --- a/modules/nf-core/samtools/merge/tests/main.nf.test.snap +++ b/modules/nf-core/samtools/merge/tests/main.nf.test.snap @@ -80,14 +80,14 @@ "bam_versions": { "content": [ [ - "versions.yml:md5,84dab54b9812780df48f5cecef690c34" + "versions.yml:md5,d51d18a97513e370e43f0c891c51dfc4" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-05-28T15:46:35.851936597" + "timestamp": "2024-09-16T09:16:30.476887194" }, "bams_csi": { "content": [ @@ -124,14 +124,14 @@ "bams_stub_versions": { "content": [ [ - "versions.yml:md5,84dab54b9812780df48f5cecef690c34" + "versions.yml:md5,d51d18a97513e370e43f0c891c51dfc4" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-05-28T15:46:41.405707643" + "timestamp": "2024-09-16T09:16:52.203823961" }, "bam_cram": { "content": [ @@ -158,14 +158,14 @@ "bams_versions": { "content": [ [ - "versions.yml:md5,84dab54b9812780df48f5cecef690c34" + "versions.yml:md5,d51d18a97513e370e43f0c891c51dfc4" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-05-28T15:45:51.695689923" + "timestamp": "2024-09-16T08:29:57.524363148" }, "crams_bam": { "content": [ @@ -182,14 +182,14 @@ "crams_versions": { "content": [ [ - "versions.yml:md5,84dab54b9812780df48f5cecef690c34" + "versions.yml:md5,d51d18a97513e370e43f0c891c51dfc4" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-05-28T15:46:30.185392319" + "timestamp": "2024-09-16T09:16:06.977096207" }, "bam_csi": { "content": [ diff --git a/nextflow.config b/nextflow.config index 63934d6e..a3c9b19c 100644 --- a/nextflow.config +++ b/nextflow.config @@ -62,7 +62,7 @@ params { // Preprocessing/parallelisation parallel_snv = 13 - parallel_alignments = 1 + parallel_alignments = 8 // References fasta = null diff --git a/nextflow_schema.json b/nextflow_schema.json index a104f284..ec1fa4b2 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -436,7 +436,7 @@ "parallel_alignments": { "type": "integer", "minimum": 1, - "default": 1, + "default": 8, "description": "If parallel_alignments is bigger than 1, input files will be split and aligned in parallel to reduce processing time." }, "parallel_snv": { diff --git a/subworkflows/local/utils_nfcore_nallo_pipeline/main.nf b/subworkflows/local/utils_nfcore_nallo_pipeline/main.nf index e1b012bc..3061e3c0 100644 --- a/subworkflows/local/utils_nfcore_nallo_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_nallo_pipeline/main.nf @@ -173,10 +173,10 @@ workflow PIPELINE_INITIALISATION { .map { meta, reads -> [ meta.id, meta, reads ] // add sample as groupTuple key } + .groupTuple() // group by sample .map { validateInputSamplesheet(it) } - .groupTuple() // group by sample .map { sample, metas, reads -> // Add number of files per sample _after_ splitting to meta [ sample, metas[0] + [n_files: metas.size() + metas.size() * Math.max(0, params.parallel_alignments - 1), single_end:true ], reads ] @@ -280,6 +280,11 @@ def validateInputParameters(statusMap, workflowMap, workflowDependencies, fileDe // Validate channels from input samplesheet // def validateInputSamplesheet(input) { + // Filenames needs to be unique for each sample to avoid collisions when merging + fileNames = input[2].collect { new File(it.toString()).name } + if (fileNames.size() != fileNames.unique().size()) { + error "Error: Input filenames needs to be unique for each sample." + } return input } diff --git a/tests/main.nf.test.snap b/tests/main.nf.test.snap deleted file mode 100644 index ad27ca70..00000000 --- a/tests/main.nf.test.snap +++ /dev/null @@ -1,201 +0,0 @@ -{ - "test profile": { - "content": [ - "test.ped:md5,bd5cec27ba7337a85cf98e787131e2b5", - "test.pairs.tsv:md5,4a0988fc3c0fe5cfd5dd205fe6755595", - "test.samples.tsv:md5,1685dc6cb8c6b9806ca636662980d686", - "test.html:md5,d05e0eceb70ada3a0c25f99a16ad1889", - "multiqc_citations.txt:md5,a27affce20d456d20ed387097a4f0350", - "multiqc_fastqc.txt:md5,f0717ca13d848aa8f5eaa5d0dba92178", - "multiqc_somalier.txt:md5,20b4c5b2d5b94b77fb800548e07a874e", - "3367d07489e728a2a99d9abb618841ec", - "HG002_Revio.asm.bp.hap1.p_ctg.assembly_summary:md5,b949217515292b5a7735af4ad4bd5b11", - "HG002_Revio.asm.bp.hap2.p_ctg.assembly_summary:md5,c3e50f54e9e2871771d1735c54e57c5e", - "da103c401cf854a00aa75a57cda0f34d", - "e8599cef23fc88e2fe09d2bda5ea372f", - "HG002_Revio.dip.bed:md5,8230ffcc5539eef359ab5128fa60e765", - "HG002_Revio.hap1.bed:md5,44dcedabe0edb29af441df1f0b55210a", - "HG002_Revio.hap2.bed:md5,6b4b879d4ebe97f778921252469a029c", - "HG002_Revio.copynum.bedgraph:md5,517bc59c1b235490c79aa8319437b033", - "HG002_Revio.depth.bw:md5,20757c985f4713b8568dee05765db701", - "HG002_Revio.maf.bw:md5,4699d7a664277863f06eb48c3cba3c41", - "HG002_Revio.mosdepth.global.dist.txt:md5,6186315d4d65eda85553af82a98829d1", - "HG002_Revio.mosdepth.region.dist.txt:md5,c6c7ee8f056b8b2b92c97ec472b1db16", - "HG002_Revio.mosdepth.summary.txt:md5,35c51f1ad9d2856d1e6446205f19a8e3", - "HG002_Revio.asm.bp.hap1.p_ctg.fasta.gz:md5,380ed173f8d50419a86c229dd81a20c2", - "HG002_Revio.asm.bp.hap2.p_ctg.fasta.gz:md5,6ca4cd66b46b2bf7b1ed1ee959fba6ab", - "HG002_Revio.dip.vcf.gz:md5,747ea6c9532679ae7eb5ce06f511c4c2", - "HG002_Revio.hap1.paf.gz:md5,680a7278a2d492ed6ee5c7b19dd5d80f", - "HG002_Revio.hap1.var.gz:md5,bd714e935825d8c665445d93c7d82206", - "HG002_Revio.hap2.paf.gz:md5,77ff9e7c1b0ed8454f7a10beba01cbf9", - "HG002_Revio.hap2.var.gz:md5,9ba9303b30730e419138e177c7d1e0c2", - "HG002_Revio.pair.vcf.gz:md5,1909dffa43850282fe7e5ae2b2d273a7", - "ab9044066c7bd041966eed43e0d00f13", - "HG002_Revio.vcf.gz.tbi:md5,5e42ce281f81b7fdb5fa6e42ec4c7f8b", - "HG002_Revio_modkit_pileup.bed.gz:md5,a52bb9ab393e682d0b7118ef2efe5c15", - "HG002_Revio_modkit_pileup.bed.gz.tbi:md5,08312c13316ed9b4b582897c210ecb58", - "fcc3f220bb09d3264f97e7f620779be0", - "HG002_Revio_cramino_aligned_phased.arrow:md5,72df2934ff8aa7e1bf8cf8a4881a0d2a", - "HG002_Revio_cramino_aligned.arrow:md5,72df2934ff8aa7e1bf8cf8a4881a0d2a", - "HG002_Revio.regions.bed.gz:md5,e051f64c7a780d67ea6727a327dd4281", - "HG002_Revio.regions.bed.gz.csi:md5,026eef1c69fb4aa3a1687463fe2088ab", - "HG002_Revio_sorted.vcf.gz:md5,735d8ba586b01fb27e009e3964112ce9", - "HG002_Revio_sorted.vcf.gz.tbi:md5,d4c7838d72a4200e790227ba4d7b25d5", - "65999ab8f2bc7841de8172468bf23ab6", - [ - "# This file was produced by bcftools stats (1.20+htslib-1.20) and can be plotted using plot-vcfstats.", - "# The command line was:\tbcftools stats HG002_Revio.vcf.gz", - "#" - ] - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-10-25T09:58:48.73245113" - }, - "test profile - multisample": { - "content": [ - "test.ped:md5,24d8694d580f782ed77d4d1b5c6f6fb4", - "multiqc_citations.txt:md5,a27affce20d456d20ed387097a4f0350", - "multiqc_fastqc.txt:md5,18ca1a3fb2afa8988dc5d604c049cd9c", - "74b4822241bd8d1bc42f494f1f3e326c", - "HG002_Revio_A.asm.bp.hap1.p_ctg.assembly_summary:md5,b949217515292b5a7735af4ad4bd5b11", - "HG002_Revio_A.asm.bp.hap2.p_ctg.assembly_summary:md5,c3e50f54e9e2871771d1735c54e57c5e", - "da103c401cf854a00aa75a57cda0f34d", - "e8599cef23fc88e2fe09d2bda5ea372f", - "HG002_Revio_A.dip.bed:md5,8230ffcc5539eef359ab5128fa60e765", - "HG002_Revio_A.hap1.bed:md5,44dcedabe0edb29af441df1f0b55210a", - "HG002_Revio_A.hap2.bed:md5,6b4b879d4ebe97f778921252469a029c", - "HG002_Revio_A.copynum.bedgraph:md5,517bc59c1b235490c79aa8319437b033", - "HG002_Revio_A.depth.bw:md5,20757c985f4713b8568dee05765db701", - "HG002_Revio_A.maf.bw:md5,4699d7a664277863f06eb48c3cba3c41", - "HG002_Revio_A.mosdepth.global.dist.txt:md5,6186315d4d65eda85553af82a98829d1", - "HG002_Revio_A.mosdepth.region.dist.txt:md5,c6c7ee8f056b8b2b92c97ec472b1db16", - "HG002_Revio_A.mosdepth.summary.txt:md5,35c51f1ad9d2856d1e6446205f19a8e3", - "HG002_Revio_A.asm.bp.hap1.p_ctg.fasta.gz:md5,380ed173f8d50419a86c229dd81a20c2", - "HG002_Revio_A.asm.bp.hap2.p_ctg.fasta.gz:md5,6ca4cd66b46b2bf7b1ed1ee959fba6ab", - "HG002_Revio_A.dip.vcf.gz:md5,d5a5d0620cba624a482d0e48e725e232", - "HG002_Revio_A.hap1.paf.gz:md5,680a7278a2d492ed6ee5c7b19dd5d80f", - "HG002_Revio_A.hap1.var.gz:md5,bd714e935825d8c665445d93c7d82206", - "HG002_Revio_A.hap2.paf.gz:md5,77ff9e7c1b0ed8454f7a10beba01cbf9", - "HG002_Revio_A.hap2.var.gz:md5,9ba9303b30730e419138e177c7d1e0c2", - "HG002_Revio_A.pair.vcf.gz:md5,4680402dd40f18cc177bd50fb618e6f4", - "ab9044066c7bd041966eed43e0d00f13", - "HG002_Revio_A.vcf.gz.tbi:md5,38117ec4d71c688a6f43c53946908acd", - "HG002_Revio_A_modkit_pileup.bed.gz:md5,a52bb9ab393e682d0b7118ef2efe5c15", - "HG002_Revio_A_modkit_pileup.bed.gz.tbi:md5,08312c13316ed9b4b582897c210ecb58", - "fcc3f220bb09d3264f97e7f620779be0", - "HG002_Revio_A_cramino_aligned_phased.arrow:md5,72df2934ff8aa7e1bf8cf8a4881a0d2a", - "HG002_Revio_A_cramino_aligned.arrow:md5,72df2934ff8aa7e1bf8cf8a4881a0d2a", - "HG002_Revio_A.regions.bed.gz:md5,e051f64c7a780d67ea6727a327dd4281", - "HG002_Revio_A.regions.bed.gz.csi:md5,026eef1c69fb4aa3a1687463fe2088ab", - "HG002_Revio_A_sorted.vcf.gz:md5,e7f53d86c027a7778e0e642cb2da8884", - "HG002_Revio_A_sorted.vcf.gz.tbi:md5,d4c7838d72a4200e790227ba4d7b25d5", - "65999ab8f2bc7841de8172468bf23ab6", - [ - "# This file was produced by bcftools stats (1.20+htslib-1.20) and can be plotted using plot-vcfstats.", - "# The command line was:\tbcftools stats HG002_Revio_A.vcf.gz", - "#" - ], - "4fc125e25365fa6e33193fd436ae135d", - "HG002_Revio_B.asm.bp.hap1.p_ctg.assembly_summary:md5,7fd907d993bf1140eabc2f3c2116df96", - "HG002_Revio_B.asm.bp.hap2.p_ctg.assembly_summary:md5,241c10b531eae6c6bd56d71be2b0806c", - "2352f7a9960c400d8182ad2ec442887", - "6e4f7fa25e9905d538ecc65f923806", - "HG002_Revio_B.dip.bed:md5,395e61d926c5f9cbda71f770182a52b6", - "HG002_Revio_B.hap1.bed:md5,8d007624a4935390fb4731817e251cff", - "HG002_Revio_B.hap2.bed:md5,f4d086b5254b13a8d7836290d2c1b1cb", - "HG002_Revio_B.copynum.bedgraph:md5,42095da173e46804977bbbecc2fda3aa", - "HG002_Revio_B.depth.bw:md5,38de98b391638ae12014bebffed42d66", - "HG002_Revio_B.maf.bw:md5,44e11b3b0cd1db5fbbc2d45bacf8f5b0", - "HG002_Revio_B.mosdepth.global.dist.txt:md5,830a8b737fea939dcfea4d1626e60576", - "HG002_Revio_B.mosdepth.region.dist.txt:md5,d4cb66ac28dc6816869a73757226f902", - "HG002_Revio_B.mosdepth.summary.txt:md5,191877ae5228e7880276585557a7b218", - "HG002_Revio_B.asm.bp.hap1.p_ctg.fasta.gz:md5,323fd57714246acb37e4e5d55e953429", - "HG002_Revio_B.asm.bp.hap2.p_ctg.fasta.gz:md5,6481372dcc00afaea3418749a04ffbbf", - "HG002_Revio_B.dip.vcf.gz:md5,3b3644ef50af7d513e44e09bf043d129", - "HG002_Revio_B.hap1.paf.gz:md5,df23f568c86230a5dea8719e47d233b8", - "HG002_Revio_B.hap1.var.gz:md5,6234237b2aee91083b6d4c67a91c0d0b", - "HG002_Revio_B.hap2.paf.gz:md5,b1cffc2fa1ed71057acc9cef610a7fc6", - "HG002_Revio_B.hap2.var.gz:md5,f09b01fcb43bf64f92ca7ec8a2380c25", - "HG002_Revio_B.pair.vcf.gz:md5,676492865a9d4765835638d52651af73", - "7db8959b4b1f46316bb7d5908a8b9f26", - "HG002_Revio_B.vcf.gz.tbi:md5,7a72aa048fe8389233a2cf94d843cd1e", - "HG002_Revio_B_modkit_pileup.bed.gz:md5,60f856e145343697ff581e91fda288ff", - "HG002_Revio_B_modkit_pileup.bed.gz.tbi:md5,d04e7a6fb67e9b5a8342ae979bc0e5cd", - "fcc3f220bb09d3264f97e7f620779be0", - "HG002_Revio_B_cramino_aligned_phased.arrow:md5,544a6513e7604d6425a664855212eced", - "HG002_Revio_B_cramino_aligned.arrow:md5,544a6513e7604d6425a664855212eced", - "HG002_Revio_B.regions.bed.gz:md5,9c4c037139c752c60385d3c0b905af7f", - "HG002_Revio_B.regions.bed.gz.csi:md5,d0640255d527e36655281f64e184b02c", - "HG002_Revio_B_sorted.vcf.gz:md5,8703d5602d79e9fe4d70aced838f518f", - "HG002_Revio_B_sorted.vcf.gz.tbi:md5,01f65612542a83475217568bd50d4efd", - "65999ab8f2bc7841de8172468bf23ab6", - [ - "# This file was produced by bcftools stats (1.20+htslib-1.20) and can be plotted using plot-vcfstats.", - "# The command line was:\tbcftools stats HG002_Revio_B.vcf.gz", - "#" - ] - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-10-25T10:00:21.767398339" - }, - "test profile - multisample - ont - parallel_alignments 2 - parallel_snv 1": { - "content": [ - "test.ped:md5,deb1ee6bd38d6e8f7cb92801d8a12f12", - "multiqc_citations.txt:md5,a27affce20d456d20ed387097a4f0350", - "multiqc_fastqc.txt:md5,5254c5d578af3a24182ccf3248183ac6", - "53495f0b494894437c243a5c5f47c4fc", - "HG002_ONT_A.copynum.bedgraph:md5,4c5517c1783afa11ff93c8d8627fbe42", - "HG002_ONT_A.depth.bw:md5,7c1ad330a37ae8c9bfc89d5ed4f327ab", - "HG002_ONT_A.maf.bw:md5,c3a2453422665c6c25b7114ee258b85f", - "HG002_ONT_A.mosdepth.global.dist.txt:md5,5ae0972357f99aa481a0bf12fb9e0b0b", - "HG002_ONT_A.mosdepth.region.dist.txt:md5,023b1c6aeaf8fa5ededd6b711a5cd012", - "HG002_ONT_A.mosdepth.summary.txt:md5,c3b664b0983213f73edf3c0d5a0b04a2", - "7d27e8af63075fc17b4e6935e6397e9f", - "HG002_ONT_A.vcf.gz.tbi:md5,0abf55893512d2546a3f3231bb990f5d", - "HG002_ONT_A_modkit_pileup.bed.gz:md5,e04d51deb9019e67e7ddd7f1bd82a580", - "HG002_ONT_A_modkit_pileup.bed.gz.tbi:md5,1e198df01c63afea13ef9d04e2d03684", - "7b8dc04d36dc2290fd031da73e8c8553", - "HG002_ONT_A_cramino_aligned_phased.arrow:md5,d2a5c81595fa34925ab8f03078487d81", - "HG002_ONT_A_cramino_aligned.arrow:md5,d2a5c81595fa34925ab8f03078487d81", - "HG002_ONT_A.regions.bed.gz:md5,da66d741bb69b5c259a8611848839dc7", - "HG002_ONT_A.regions.bed.gz.csi:md5,76f06311933695287c8716fe2c8a2d20", - [ - "# This file was produced by bcftools stats (1.20+htslib-1.20) and can be plotted using plot-vcfstats.", - "# The command line was:\tbcftools stats HG002_ONT_A.vcf.gz", - "#" - ], - "325c284fc112dff72679b38c9ef2c2da", - "HG002_ONT_B.copynum.bedgraph:md5,7d30f621d502d16301fa79cf48a3b903", - "HG002_ONT_B.depth.bw:md5,633a878a4258d2bf767df96388abb4cd", - "HG002_ONT_B.maf.bw:md5,1951883a15f76e13f5a3ae01c062e265", - "HG002_ONT_B.mosdepth.global.dist.txt:md5,e551c7a9d1a26cecc99d15ac93a4a924", - "HG002_ONT_B.mosdepth.region.dist.txt:md5,11154f617f447f4c59dc192d9af4249f", - "HG002_ONT_B.mosdepth.summary.txt:md5,bcb06b29c22cb6ad200f283e72c29653", - "ab11a22397e05e4b7f7c5c809e9407bf", - "HG002_ONT_B.vcf.gz.tbi:md5,418164cae69148cd90545a56728340c5", - "HG002_ONT_B_modkit_pileup.bed.gz:md5,95a96ceddc795c9c5c4a8d9e6f9d3b5b", - "HG002_ONT_B_modkit_pileup.bed.gz.tbi:md5,8276c6feeac0be16274198831c75023d", - "7b8dc04d36dc2290fd031da73e8c8553", - "HG002_ONT_B_cramino_aligned_phased.arrow:md5,61af72539e105cec79db7c9b78eb15a7", - "HG002_ONT_B_cramino_aligned.arrow:md5,61af72539e105cec79db7c9b78eb15a7", - "HG002_ONT_B.regions.bed.gz:md5,1aa62d46a1e6683da3d44c59c502354b", - "HG002_ONT_B.regions.bed.gz.csi:md5,11db27a464f8996bae5521ee7d71c1ce", - [ - "# This file was produced by bcftools stats (1.20+htslib-1.20) and can be plotted using plot-vcfstats.", - "# The command line was:\tbcftools stats HG002_ONT_B.vcf.gz", - "#" - ] - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-10-01T10:17:40.930172057" - } -} \ No newline at end of file diff --git a/tests/samplesheet.nf.test.snap b/tests/samplesheet.nf.test.snap index 4f9d4712..d99fa7c1 100644 --- a/tests/samplesheet.nf.test.snap +++ b/tests/samplesheet.nf.test.snap @@ -1,7 +1,7 @@ { "test profile": { "content": [ - 98, + 101, { "ADD_FOUND_IN_TAG": { "bcftools": 1.2, @@ -178,6 +178,9 @@ "SAMTOOLS_INDEX_TRGT": { "samtools": 1.2 }, + "SAMTOOLS_MERGE": { + "samtools": 1.2 + }, "SAMTOOLS_SORT_TRGT": { "samtools": 1.2 }, @@ -191,6 +194,9 @@ "create_pedigree_file": 1.0, "python": "3.8.3" }, + "SPLITUBAM": { + "splitubam": "0.1.1" + }, "SPLIT_BED_CHUNKS": { "split_bed_chunks": 1.0 }, @@ -545,6 +551,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-25T11:09:29.282904011" + "timestamp": "2024-10-25T13:00:09.69999597" } } \ No newline at end of file diff --git a/tests/samplesheet_multisample_bam.nf.test.snap b/tests/samplesheet_multisample_bam.nf.test.snap index dc759e74..21e2178a 100644 --- a/tests/samplesheet_multisample_bam.nf.test.snap +++ b/tests/samplesheet_multisample_bam.nf.test.snap @@ -1,7 +1,7 @@ { "samplesheet_multisample_bam | --phaser hiphase": { "content": [ - 139, + 146, { "ADD_FOUND_IN_TAG": { "bcftools": 1.2, @@ -191,6 +191,9 @@ "create_pedigree_file": 1.0, "python": "3.8.3" }, + "SPLITUBAM": { + "splitubam": "0.1.1" + }, "SPLIT_BED_CHUNKS": { "split_bed_chunks": 1.0 }, @@ -756,6 +759,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-25T11:11:02.811874333" + "timestamp": "2024-10-25T13:01:47.642764093" } } \ No newline at end of file diff --git a/tests/samplesheet_multisample_ont_bam.nf.test b/tests/samplesheet_multisample_ont_bam.nf.test index 819186aa..e5216f0f 100644 --- a/tests/samplesheet_multisample_ont_bam.nf.test +++ b/tests/samplesheet_multisample_ont_bam.nf.test @@ -4,7 +4,7 @@ nextflow_pipeline { script "../main.nf" tag "PIPELINE" - test("samplesheet_multisample_ont_bam | --preset ONT_R10 --phaser whatshap --parallel_alignments 2 --parallel_snv 1") { + test("samplesheet_multisample_ont_bam | --preset ONT_R10 --phaser whatshap --parallel_alignments 1 --parallel_snv 1") { tag "samplesheet_multisample_ont_bam" when { @@ -13,7 +13,7 @@ nextflow_pipeline { input = params.pipelines_testdata_base_path + 'testdata/samplesheet_multisample_bam_ont.csv' outdir = "$outputDir" preset = 'ONT_R10' - parallel_alignments = 2 + parallel_alignments = 1 parallel_snv = 1 phaser = "whatshap" } diff --git a/tests/samplesheet_multisample_ont_bam.nf.test.snap b/tests/samplesheet_multisample_ont_bam.nf.test.snap index e729b592..5a25e57d 100644 --- a/tests/samplesheet_multisample_ont_bam.nf.test.snap +++ b/tests/samplesheet_multisample_ont_bam.nf.test.snap @@ -1,7 +1,7 @@ { - "samplesheet_multisample_ont_bam | --preset ONT_R10 --phaser whatshap --parallel_alignments 2 --parallel_snv 1": { + "samplesheet_multisample_ont_bam | --preset ONT_R10 --phaser whatshap --parallel_alignments 1 --parallel_snv 1": { "content": [ - 102, + 95, { "ADD_FOUND_IN_TAG": { "bcftools": 1.2, @@ -152,9 +152,6 @@ "create_pedigree_file": 1.0, "python": "3.8.3" }, - "SPLITUBAM": { - "splitubam": "0.1.1" - }, "SPLIT_BED_CHUNKS": { "split_bed_chunks": 1.0 }, @@ -505,6 +502,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-25T11:12:30.270856551" + "timestamp": "2024-10-25T13:10:46.10939576" } } \ No newline at end of file From ffcfb6e8a69ce624eadece687ed747da5ee81492 Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Tue, 29 Oct 2024 16:48:52 +0100 Subject: [PATCH 045/106] Merge CNV and SV calls (#429) * Clean up pipeline tests * Refactor CNV-calling * update snaps * wip * fix nf-core modules * rename channels * fix modules --- CHANGELOG.md | 6 + conf/modules/annotate_svs.config | 6 +- conf/modules/{cnv.config => call_cnvs.config} | 29 +- conf/modules/call_svs.config | 17 +- conf/modules/general.config | 17 + docs/output.md | 60 +-- modules.json | 93 +++-- modules/local/pacbio/hificnv/main.nf | 25 +- modules/nf-core/cadd/cadd.diff | 3 + modules/nf-core/cadd/environment.yml | 2 - modules/nf-core/cadd/meta.yml | 60 +-- .../ensemblvep/vep/ensemblvep-vep.diff | 15 +- modules/nf-core/ensemblvep/vep/meta.yml | 148 ++++---- .../nf-core/ensemblvep/vep/tests/main.nf.test | 6 +- .../ensemblvep/vep/tests/main.nf.test.snap | 12 +- .../ensemblvep/vep/tests/nextflow.config | 2 +- modules/nf-core/glnexus/environment.yml | 2 - modules/nf-core/glnexus/glnexus.diff | 12 +- modules/nf-core/glnexus/main.nf | 4 +- modules/nf-core/glnexus/meta.yml | 43 ++- modules/nf-core/svdb/merge/environment.yml | 5 +- modules/nf-core/svdb/merge/main.nf | 74 ++-- modules/nf-core/svdb/merge/meta.yml | 32 +- modules/nf-core/svdb/merge/tests/main.nf.test | 32 +- .../svdb/merge/tests/main.nf.test.snap | 106 ++++-- .../nf-core/svdb/merge/tests/nextflow.config | 1 + modules/nf-core/untar/environment.yml | 2 - modules/nf-core/untar/meta.yml | 43 ++- modules/nf-core/untar/untar.diff | 6 + nextflow.config | 4 +- .../annotate_svs/tests/main.nf.test.snap | 4 +- .../local/annotate_svs/tests/nextflow.config | 3 + subworkflows/local/call_cnvs/main.nf | 62 ++++ .../local/call_cnvs/tests/main.nf.test | 253 +++++++++++++ .../local/call_cnvs/tests/main.nf.test.snap | 344 ++++++++++++++++++ .../local/call_cnvs/tests/nextflow.config | 23 ++ subworkflows/local/call_svs/main.nf | 10 +- .../local/call_svs/tests/main.nf.test | 158 ++++---- .../local/call_svs/tests/main.nf.test.snap | 319 ++++++++-------- .../local/call_svs/tests/nextflow.config | 3 +- subworkflows/local/cnv.nf | 57 --- tests/.nftignore | 2 +- tests/samplesheet.nf.test.snap | 79 ++-- .../samplesheet_multisample_bam.nf.test.snap | 121 +++--- ...mplesheet_multisample_ont_bam.nf.test.snap | 122 +++---- workflows/nallo.nf | 104 +++--- 46 files changed, 1669 insertions(+), 862 deletions(-) rename conf/modules/{cnv.config => call_cnvs.config} (64%) create mode 100644 subworkflows/local/call_cnvs/main.nf create mode 100644 subworkflows/local/call_cnvs/tests/main.nf.test create mode 100644 subworkflows/local/call_cnvs/tests/main.nf.test.snap create mode 100644 subworkflows/local/call_cnvs/tests/nextflow.config delete mode 100644 subworkflows/local/cnv.nf diff --git a/CHANGELOG.md b/CHANGELOG.md index 48d4df78..e0f6c9f4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,6 +24,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#417](https://github.com/genomic-medicine-sweden/nallo/pull/417) - Added `FOUND_IN=deepvariant` tags to SNV calling output - [#418](https://github.com/genomic-medicine-sweden/nallo/pull/418) - Added a check for unique input filenames for each sample - [#419](https://github.com/genomic-medicine-sweden/nallo/pull/419) - Added support for SV filtering using input BED file ([#348](https://github.com/genomic-medicine-sweden/nallo/issues/348)) +- [#429](https://github.com/genomic-medicine-sweden/nallo/pull/429) - Added nf-test to CNV calling +- [#429](https://github.com/genomic-medicine-sweden/nallo/pull/429) - Added SVDB to merge CNV calling results - [#430](https://github.com/genomic-medicine-sweden/nallo/pull/430) - Added a GitHub action to build and publish docs to GitHub Pages - [#431](https://github.com/genomic-medicine-sweden/nallo/pull/431) - Added files needed to automatically build and publish docs to GitHub Pages - [#435](https://github.com/genomic-medicine-sweden/nallo/pull/435) - Added nf-test to rank variants @@ -58,6 +60,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#422](https://github.com/genomic-medicine-sweden/nallo/pull/422) - Updated nf-core/tools template to v3.0.1 - [#423](https://github.com/genomic-medicine-sweden/nallo/pull/423) - Updated metro map - [#428](https://github.com/genomic-medicine-sweden/nallo/pull/428) - Changed from using bcftools to SVDB for SV merging +- [#429](https://github.com/genomic-medicine-sweden/nallo/pull/429) - Updated HiFiCNV to 1.0.0 +- [#429](https://github.com/genomic-medicine-sweden/nallo/pull/429) - Refactored the CNV calling subworkflow +- [#429](https://github.com/genomic-medicine-sweden/nallo/pull/429) - Changed SV and CNV calling outputs, merging is now done per family - [#431](https://github.com/genomic-medicine-sweden/nallo/pull/431) - Changed `CITATIONS.md` to `docs/CITATIONS.md`, - [#433](https://github.com/genomic-medicine-sweden/nallo/pull/433) - Updated docs and README. - [#434](https://github.com/genomic-medicine-sweden/nallo/pull/434) - Updated the SVDB merge module to fix unstable CALL_SVS tests @@ -116,6 +121,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 | WhatsHap | 2.2 | 2.3 | | SVDB | | 2.8.1 | | hifiasm | 0.19.8 | 0.20.0 | +| HiFiCNV | 0.1.7 | 1.0.0 | > [!NOTE] > Version has been updated if both old and new version information is present. diff --git a/conf/modules/annotate_svs.config b/conf/modules/annotate_svs.config index dfed2cfd..f1a4e7c1 100644 --- a/conf/modules/annotate_svs.config +++ b/conf/modules/annotate_svs.config @@ -25,6 +25,7 @@ process { } withName: '.*ANNOTATE_SVS:ENSEMBLVEP_SV' { + ext.prefix = { params.skip_cnv_calling ? "${meta.id}_svs_merged_annotated" : "${meta.id}_svs_cnvs_merged_annotated" } ext.args = { [ "${params.extra_vep_options}", "--dir_plugins .", @@ -38,9 +39,8 @@ process { '--symbol --tsl --uniprot --vcf', '--no_stats' ].join(' ') } - ext.prefix = { "${meta.id}_svs_annotated" } publishDir = [ - path: { "${params.outdir}/svs/multi_sample/${meta.id}" }, + path: { "${params.outdir}/svs/family/${meta.id}" }, mode: params.publish_dir_mode, saveAs: { filename -> filename.equals('versions.yml') ? null : filename } ] @@ -48,7 +48,7 @@ process { withName: '.*ANNOTATE_SVS:TABIX_ENSEMBLVEP_SV' { publishDir = [ - path: { "${params.outdir}/svs/multi_sample/${meta.id}" }, + path: { "${params.outdir}/svs/family/${meta.id}" }, mode: params.publish_dir_mode, saveAs: { filename -> filename.equals('versions.yml') ? null : filename } ] diff --git a/conf/modules/cnv.config b/conf/modules/call_cnvs.config similarity index 64% rename from conf/modules/cnv.config rename to conf/modules/call_cnvs.config index ff330802..97044241 100644 --- a/conf/modules/cnv.config +++ b/conf/modules/call_cnvs.config @@ -14,19 +14,27 @@ process { /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - CNV + Call CNVs ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ - withName: '.*:CNV:HIFICNV' { + withName: '.*:CALL_CNVS:.*' { publishDir = [ - path: { "${params.outdir}/cnv_calling/hificnv/${meta.id}" }, + enabled: false, + ] + } + + withName: '.*:CALL_CNVS:HIFICNV' { + ext.prefix = { "${meta.id}_hificnv" } + publishDir = [ + path: { "${params.outdir}/visualization_tracks/${meta.id}" }, mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') || filename.endsWith('.vcf.gz') ? null : filename } + saveAs: { filename -> filename.endsWith('.bw') || filename.endsWith('.bedgraph') ? filename : null } ] } - withName: '.*:CNV:ADD_FOUND_IN_TAG' { + withName: '.*:CALL_CNVS:ADD_FOUND_IN_TAG' { + ext.prefix = { "${meta.id}_cnvs" } ext.args = '--no-version' ext.args2 = [ '--output-type z', @@ -34,9 +42,18 @@ process { '--no-version' ].join(' ') publishDir = [ - path: { "${params.outdir}/cnv_calling/hificnv/${meta.id}" }, + path: { "${params.outdir}/svs/single_sample/${meta.id}" }, mode: params.publish_dir_mode, saveAs: { filename -> filename.equals('versions.yml') ? null : filename } ] } + + withName: '.*:CALL_CNVS:SVDB_MERGE' { + ext.prefix = { "${meta.id}_cnvs_merged" } + ext.args = [ + '--bnd_distance 10000', + '--overlap .5' + ].join(' ') + } + } diff --git a/conf/modules/call_svs.config b/conf/modules/call_svs.config index b12d31ba..8781e3fd 100644 --- a/conf/modules/call_svs.config +++ b/conf/modules/call_svs.config @@ -48,31 +48,36 @@ process { } withName: '.*:CALL_SVS:SVDB_MERGE' { - ext.prefix = { "${meta.id}_svs" } + ext.prefix = { "${meta.id}_svs_merged" } ext.args = [ '--bnd_distance 1000', '--overlap .5' ].join(' ') publishDir = [ - path: { "${params.outdir}/svs/multi_sample/${meta.id}" }, + path: { "${params.outdir}/svs/family/${meta.id}" }, mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') || !params.skip_sv_annotation ? null : filename } + saveAs: { filename -> filename.equals('versions.yml') || !params.skip_sv_annotation || !params.skip_cnv_calling ? null : filename } ] } withName: '.*:CALL_SVS:TABIX_SVDB_MERGE' { publishDir = [ - path: { "${params.outdir}/svs/multi_sample/${meta.id}" }, + path: { "${params.outdir}/svs/family/${meta.id}" }, mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') || !params.skip_sv_annotation ? null : filename } + saveAs: { filename -> filename.equals('versions.yml') || !params.skip_sv_annotation || !params.skip_cnv_calling ? null : filename } ] } withName: '.*:CALL_SVS:BCFTOOLS_REHEADER' { - ext.prefix = { "${meta.id}_${params.sv_caller}" } + ext.prefix = { "${meta.id}_svs" } ext.args2 = [ '--output-type z', '--write-index=tbi' ].join(' ') + publishDir = [ + path: { "${params.outdir}/svs/single_sample/${meta.id}" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] } } diff --git a/conf/modules/general.config b/conf/modules/general.config index ccecf11e..92c504de 100644 --- a/conf/modules/general.config +++ b/conf/modules/general.config @@ -174,6 +174,23 @@ process { ] } + withName: '.*:NALLO:SVDB_MERGE_SVS_CNVS' { + ext.prefix = { "${meta.id}_svs_cnvs_merged" } + publishDir = [ + path: { "${params.outdir}/svs/family/${meta.id}" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') || !params.skip_sv_annotation ? null : filename } + ] + } + + withName: '.*:NALLO:TABIX_SVDB_MERGE_SVS_CNVS' { + publishDir = [ + path: { "${params.outdir}/svs/family/${meta.id}" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') || !params.skip_sv_annotation ? null : filename } + ] + } + withName: '.*:NALLO:ECHTVAR_ENCODE' { publishDir = [ path: { "${params.outdir}/databases/echtvar/encode/${meta.id}" }, diff --git a/docs/output.md b/docs/output.md index 9e09cfec..a08bfc99 100644 --- a/docs/output.md +++ b/docs/output.md @@ -130,18 +130,6 @@ If the pipeline is run with phasing, the aligned reads will be happlotagged usin ## Variants -### CNVs - -[HiFiCNV](https://github.com/PacificBiosciences/HiFiCNV) is used to call CNVs, producing copy number, depth, and MAF tracks for IGV. - -| Path | Description | -| ------------------------------------------------- | ----------------------------------------- | -| `cnv_calling/hificnv/{sample}/*.copynum.bedgraph` | Copy number in bedgraph format | -| `cnv_calling/hificnv/{sample}/*.depth.bw` | Depth track in BigWig format | -| `cnv_calling/hificnv/{sample}/*.maf.bw` | Minor allele frequencies in BigWig format | -| `cnv_calling/hificnv/{sample}/*.vcf.gz` | VCF file containing CNV variants | -| `cnv_calling/hificnv/{sample}/*.vcf.gz.tbi` | Index of the corresponding VCF file | - ### Paralogous genes [Paraphase](https://github.com/PacificBiosciences/paraphase) is used to call paralogous genes. @@ -213,26 +201,48 @@ If the pipeline is run with phasing, the aligned reads will be happlotagged usin | `snvs/multi_sample/{project}/{project}_snv_annotated_ranked.vcf.gz` | VCF file with annotated and ranked variants for all samples | | `snvs/multi_sample/{project}/{project}_snv_annotated_ranked.vcf.gz.tbi` | Index of the ranked VCF file | -### SVs +### SVs (and CNVs) -[Severus](https://github.com/KolmogorovLab/Severus) or [Sniffles](https://github.com/fritzsedlazeck/Sniffles) is used to call structural variants, and [SVDB](https://github.com/J35P312/SVDB) is used to merge variants within and between samples. +[Severus](https://github.com/KolmogorovLab/Severus) or [Sniffles](https://github.com/fritzsedlazeck/Sniffles) is used to call structural variants. +[HiFiCNV](https://github.com/PacificBiosciences/HiFiCNV) is used to call CNVs. It also produces copy number, depth, and MAF [visualization tracks](#visualization-tracks). +[SVDB](https://github.com/J35P312/SVDB) is used to combine and merge SVs and CNVs within and between samples. !!!note Variants are only output without annotation if that subworkflow is turned off. -| Path | Description | -| ----------------------------------------------------- | ------------------------------------------------------------ | -| `svs/multi_sample/{project}/{project}_svs.vcf.gz` | VCF file with merged structural variants for all samples | -| `svs/multi_sample/{project}/{project}_svs.vcf.gz.tbi` | Index of the merged VCF file | -| `svs/single_sample/{sample}/*.vcf.gz` | VCF file with merged structural variants for a single sample | -| `svs/single_sample/{sample}/*.vcf.gz.tbi` | Index of the VCF file | +!!!note -[SVDB](https://github.com/J35P312/SVDB) and [VEP](https://www.ensembl.org/vep) are used to annotate structural variants. + Due to the complexity of SV merging strategies, SVs and CNVs are reported per family rather than per project. + SV and CNV calls are output unmerged per sample, while the family files are first merged between samples for SVs and CNVs separately, + then the merged SV and CNV files are merged again, with priority given to coordinates from the SV calls. | Path | Description | | --------------------------------------------------------------- | ------------------------------------------------------------------ | -| `svs/multi_sample/{project}/{project}_svs_annotated.vcf.gz` | VCF file with annotated merged structural variants for all samples | -| `svs/multi_sample/{project}/{project}_svs_annotated.vcf.gz.tbi` | Index of the annotated VCF file | -| `svs/single_sample/{sample}/*.vcf_annotated.gz` | VCF file with annotated structural variants for a single sample | -| `svs/single_sample/{sample}/*.vcf_annotated.gz.tbi` | Index of the annotated VCF file | +| `svs/family/{family_id}/{family_id}_cnvs_svs_merged.vcf.gz` | VCF file with merged CNVs and SVs per family | +| `svs/family/{family_id}/{family_id}_cnvs_svs_merged.vcf.gz.tbi` | Index of the merged VCF file | +| `svs/family/{family_id}/{family_id}_svs_merged.vcf.gz` | VCF file with merged SVs per family (output if CNV-calling is off) | +| `svs/family/{family_id}/{family_id}_svs_merged.vcf.gz.tbi` | Index of the merged VCF file | +| `svs/single_sample/{sample}/{sample}_cnvs.vcf.gz` | VCF file with CNVs per sample | +| `svs/single_sample/{sample}/{sample}_cnvs.vcf.gz.tbi` | VCF file with CNVs per sample | +| `svs/single_sample/{sample}/{sample}_svs.vcf.gz` | VCF file with SVs per sample | +| `svs/single_sample/{sample}/{sample}_svs.vcf.gz.tbi` | VCF file with SVs per sample | + +[SVDB](https://github.com/J35P312/SVDB) and [VEP](https://www.ensembl.org/vep) are used to annotate structural variants. + +| Path | Description | +| ------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| `svs/family/{family_id}/{family_id}_cnvs_svs_merged_annotated.vcf.gz` | VCF file with merged and annotated CNVs and SVs per family | +| `svs/family/{family_id}/{family_id}_cnvs_svs_merged_annotated.vcf.gz.tbi` | Index of the merged VCF file | +| `svs/family/{family_id}/{family_id}_svs_merged_annotated.vcf.gz` | VCF file with merged and annotated SVs per family (output if CNV-calling is off) | +| `svs/family/{family_id}/{family_id}_svs_merged_annotated.vcf.gz.tbi` | Index of the merged VCF file | + +## Visualization Tracks + +[HiFiCNV](https://github.com/PacificBiosciences/HiFiCNV) is used to call CNVs, but it also produces copy number, depth, and MAF tracks that can be visualized in for example IGV. + +| Path | Description | +| --------------------------------------------------- | ----------------------------------------- | +|  `visualization_tracks/{sample}/*.copynum.bedgraph` | Copy number in bedgraph format | +| `visualization_tracks/{sample}/*.depth.bw` | Depth track in BigWig format | +| `visualization_tracks/{sample}/*.maf.bw` | Minor allele frequencies in BigWig format | diff --git a/modules.json b/modules.json index 55088401..f3a6139d 100644 --- a/modules.json +++ b/modules.json @@ -12,12 +12,12 @@ }, "bcftools/concat": { "branch": "master", - "git_sha": "cdf83b18471db290a28fe98c2a0852cb05864890", + "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", "installed_by": ["modules"] }, "bcftools/merge": { "branch": "master", - "git_sha": "99a7e61b359f7b7b379cee49259879942d2d2533", + "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", "installed_by": ["modules"] }, "bcftools/norm": { @@ -27,7 +27,7 @@ }, "bcftools/pluginsplit": { "branch": "master", - "git_sha": "c5abf7acbb2943bf09f4025cacbbcc2bc2292637", + "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", "installed_by": ["modules"] }, "bcftools/query": { @@ -37,42 +37,43 @@ }, "bcftools/reheader": { "branch": "master", - "git_sha": "c32611ac6813055b9321d2827678e2f8aebcb394", + "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", "installed_by": ["modules"] }, "bcftools/sort": { "branch": "master", - "git_sha": "cdf83b18471db290a28fe98c2a0852cb05864890", + "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", "installed_by": ["modules"] }, "bcftools/stats": { "branch": "master", - "git_sha": "a5ba4d59c2b248c0379b0f8aeb4e7e754566cd1f", + "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", "installed_by": ["modules"] }, "bcftools/view": { "branch": "master", - "git_sha": "34ac993e081b32d2170ab790d0386b74122f9d36", + "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", "installed_by": ["modules"] }, "bedtools/merge": { "branch": "master", - "git_sha": "a3d614e4a7b8691a259bcfe33ad80903217d6215", + "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", "installed_by": ["modules"] }, "bedtools/sort": { "branch": "master", - "git_sha": "571a5feac4c9ce0a8df0bc15b94230e7f3e8db47", + "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", "installed_by": ["modules"] }, "cadd": { "branch": "master", - "git_sha": "cf3ed075695639b0a0924eb0901146df1996dc08", - "installed_by": ["modules"] + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", + "installed_by": ["modules"], + "patch": "modules/nf-core/cadd/cadd.diff" }, "cat/fastq": { "branch": "master", - "git_sha": "1ceaa8ba4d0fd886dbca0e545815d905b7407de7", + "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", "installed_by": ["modules"] }, "deepvariant": { @@ -82,7 +83,7 @@ }, "ensemblvep/vep": { "branch": "master", - "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", + "git_sha": "6e3585d9ad20b41adc7d271009f8cb5e191ecab4", "installed_by": ["modules"], "patch": "modules/nf-core/ensemblvep/vep/ensemblvep-vep.diff" }, @@ -93,7 +94,7 @@ }, "gawk": { "branch": "master", - "git_sha": "cf3ed075695639b0a0924eb0901146df1996dc08", + "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", "installed_by": ["modules"] }, "genmod/annotate": { @@ -118,24 +119,24 @@ }, "gfastats": { "branch": "master", - "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5", + "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", "installed_by": ["modules"] }, "glnexus": { "branch": "master", - "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5", - "installed_by": ["modules"] + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", + "installed_by": ["modules"], + "patch": "modules/nf-core/glnexus/glnexus.diff" }, "gunzip": { "branch": "master", - "git_sha": "4e5f4687318f24ba944a13609d3ea6ebd890737d", + "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", "installed_by": ["modules"] }, "hifiasm": { "branch": "master", "git_sha": "daa15d5226111e10ca95c0d4a85fa6bd11a08a01", - "installed_by": ["modules"], - "patch": "modules/nf-core/hifiasm/hifiasm.diff" + "installed_by": ["modules"] }, "longphase/haplotag": { "branch": "master", @@ -149,22 +150,22 @@ }, "minimap2/align": { "branch": "master", - "git_sha": "a33ef9475558c6b8da08c5f522ddaca1ec810306", + "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", "installed_by": ["modules"] }, "minimap2/index": { "branch": "master", - "git_sha": "72e277acfd9e61a9f1368eafb4a9e83f5bcaa9f5", + "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", "installed_by": ["modules"] }, "modkit/pileup": { "branch": "master", - "git_sha": "e29c9dda946de3c4d310d0b3f75664f0f3d5a842", + "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", "installed_by": ["modules"] }, "mosdepth": { "branch": "master", - "git_sha": "9bfc81874554e87740bcb3e5e07acf0a153c9ecb", + "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", "installed_by": ["modules"] }, "multiqc": { @@ -179,38 +180,37 @@ }, "samtools/faidx": { "branch": "master", - "git_sha": "04fbbc7c43cebc0b95d5b126f6d9fe4effa33519", + "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", "installed_by": ["modules"] }, "samtools/fastq": { "branch": "master", - "git_sha": "04fbbc7c43cebc0b95d5b126f6d9fe4effa33519", + "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", "installed_by": ["modules"] }, "samtools/import": { "branch": "master", - "git_sha": "90b63cde0f838ca4da3a88a37a5309888cae97b9", + "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", "installed_by": ["modules"] }, "samtools/index": { "branch": "master", - "git_sha": "46eca555142d6e597729fcb682adcc791796f514", + "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", "installed_by": ["modules"] }, "samtools/merge": { "branch": "master", - "git_sha": "b13f07be4c508d6ff6312d354d09f2493243e208", - "installed_by": ["modules"], - "patch": "modules/nf-core/samtools/merge/samtools-merge.diff" + "git_sha": "e9bc33485e420b51cfbed3cf63ac7463cd5739d3", + "installed_by": ["modules"] }, "samtools/sort": { "branch": "master", - "git_sha": "46eca555142d6e597729fcb682adcc791796f514", + "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", "installed_by": ["modules"] }, "samtools/view": { "branch": "master", - "git_sha": "6c2309aaec566c0d44a6cf14d4b2d0c51afe2e91", + "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", "installed_by": ["modules"] }, "severus": { @@ -221,34 +221,31 @@ "sniffles": { "branch": "master", "git_sha": "b50aa17b1b604c7b3cfe58a2472d1e7b990ae8bf", - "installed_by": ["modules"], - "patch": "modules/nf-core/sniffles/sniffles.diff" + "installed_by": ["modules"] }, "somalier/extract": { "branch": "master", - "git_sha": "458c882987320e27fc90723ec96c127a243a5497", - "installed_by": ["modules"], - "patch": "modules/nf-core/somalier/extract/somalier-extract.diff" + "git_sha": "f62e4cf5f0ae77dad62027ba2a9f475192f5b123", + "installed_by": ["modules"] }, "somalier/relate": { "branch": "master", - "git_sha": "458c882987320e27fc90723ec96c127a243a5497", - "installed_by": ["modules"], - "patch": "modules/nf-core/somalier/relate/somalier-relate.diff" + "git_sha": "d8ba32c6b54a01f8efa7b51a1f3978f003f8873b", + "installed_by": ["modules"] }, "splitubam": { "branch": "master", - "git_sha": "d12bb6cdcd22ef8f26803a6a55e918ac017176e8", + "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", "installed_by": ["modules"] }, "stranger": { "branch": "master", - "git_sha": "4806239588f35d27a95b187b4000d80e15152022", + "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", "installed_by": ["modules"] }, "svdb/merge": { "branch": "master", - "git_sha": "b80931c5be241910c62795bbf70534df18b3905f", + "git_sha": "4ac2ef5c1ceba6bb28a73033802643093fe923b3", "installed_by": ["modules"] }, "svdb/query": { @@ -258,22 +255,22 @@ }, "tabix/bgzip": { "branch": "master", - "git_sha": "b20be35facfc5acdc1259f132ed79339d79e989f", + "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", "installed_by": ["modules"] }, "tabix/bgziptabix": { "branch": "master", - "git_sha": "0840b387799172e77510393ed09e4d4ec1bc6d7c", + "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", "installed_by": ["modules"] }, "tabix/tabix": { "branch": "master", - "git_sha": "0840b387799172e77510393ed09e4d4ec1bc6d7c", + "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", "installed_by": ["modules"] }, "untar": { "branch": "master", - "git_sha": "4e5f4687318f24ba944a13609d3ea6ebd890737d", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"], "patch": "modules/nf-core/untar/untar.diff" } diff --git a/modules/local/pacbio/hificnv/main.nf b/modules/local/pacbio/hificnv/main.nf index 0eebd3b3..9046dca8 100644 --- a/modules/local/pacbio/hificnv/main.nf +++ b/modules/local/pacbio/hificnv/main.nf @@ -2,14 +2,17 @@ process HIFICNV { tag "$meta.id" label 'process_medium' - conda "bioconda::hificnv=0.1.7" - container "quay.io/biocontainers/hificnv:0.1.7--h9ee0642_0" - + conda "bioconda::hificnv=1.0.0" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/hificnv:1.0.0--h9ee0642_0' : + 'quay.io/biocontainers/hificnv:1.0.0--h9ee0642_0' }" input: - tuple val(meta), path(bam), path(bai), path(maf_vcf), path(expected_cn_bed) + tuple val(meta), path(bam), path(bai), path(maf_vcf), val(sex) tuple val(meta2), path(fasta) - path(exclude_bed) + tuple val(meta3), path(expected_xy_bed) + tuple val(meta4), path(expected_xx_bed) + tuple val(meta5), path(exclude_bed) output: tuple val(meta), path("*.vcf.gz") , emit: vcf @@ -26,11 +29,14 @@ process HIFICNV { def args = task.ext.args ?: '' prefix = task.ext.prefix ?: "${meta.id}" - def expected_cn = expected_cn_bed ? "--expected-cn ${expected_cn_bed}" : "" + def expected_cn = (sex == 1 && expected_xy_bed) ? "--expected-cn ${expected_xy_bed}" : (sex == 2 && expected_xx_bed) ? "--expected-cn ${expected_xx_bed}" : "" def exclude = exclude_bed ? "--exclude ${exclude_bed}" : "" def maf = maf_vcf ? "--maf ${maf_vcf}" : "" if ("$maf_vcf" == "${prefix}.vcf.gz") error "Input and output names are the same, set prefix in module configuration to disambiguate!" + + mv_maf = maf ? "mv hificnv.*.maf.bw ${prefix}.maf.bw" : '' + """ hificnv \\ $args \\ @@ -43,7 +49,7 @@ process HIFICNV { mv hificnv.*.vcf.gz ${prefix}.vcf.gz mv hificnv.*.depth.bw ${prefix}.depth.bw - mv hificnv.*.maf.bw ${prefix}.maf.bw + $mv_maf mv hificnv.*.copynum.bedgraph ${prefix}.copynum.bedgraph mv *.log ${prefix}.log @@ -57,10 +63,11 @@ process HIFICNV { prefix = task.ext.prefix ?: "${meta.id}" if ("$maf_vcf" == "${prefix}.vcf.gz") error "Input and output names are the same, set prefix in module configuration to disambiguate!" + def maf = maf_vcf ? "touch ${prefix}.maf.bw" : "" """ - touch ${prefix}.vcf.gz + echo "" | gzip > ${prefix}.vcf.gz touch ${prefix}.depth.bw - touch ${prefix}.maf.bw + $maf touch ${prefix}.bedgraph touch ${prefix}.log diff --git a/modules/nf-core/cadd/cadd.diff b/modules/nf-core/cadd/cadd.diff index 2ee51723..f174cc67 100644 --- a/modules/nf-core/cadd/cadd.diff +++ b/modules/nf-core/cadd/cadd.diff @@ -1,4 +1,6 @@ Changes in module 'nf-core/cadd' +'modules/nf-core/cadd/meta.yml' is unchanged +Changes in 'cadd/main.nf': --- modules/nf-core/cadd/main.nf +++ modules/nf-core/cadd/main.nf @@ -7,13 +7,14 @@ @@ -19,4 +21,5 @@ Changes in module 'nf-core/cadd' output: tuple val(meta), path("*.tsv.gz"), emit: tsv +'modules/nf-core/cadd/environment.yml' is unchanged ************************************************************ diff --git a/modules/nf-core/cadd/environment.yml b/modules/nf-core/cadd/environment.yml index 26f170e9..4477e16e 100644 --- a/modules/nf-core/cadd/environment.yml +++ b/modules/nf-core/cadd/environment.yml @@ -1,8 +1,6 @@ -name: cadd channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::cadd-scripts=1.6.post1 - conda-forge::conda=4.14.0 diff --git a/modules/nf-core/cadd/meta.yml b/modules/nf-core/cadd/meta.yml index 230ed9c0..751bea45 100644 --- a/modules/nf-core/cadd/meta.yml +++ b/modules/nf-core/cadd/meta.yml @@ -1,5 +1,6 @@ name: "cadd" -description: CADD is a tool for scoring the deleteriousness of single nucleotide variants as well as insertion/deletions variants in the human genome. +description: CADD is a tool for scoring the deleteriousness of single nucleotide variants + as well as insertion/deletions variants in the human genome. keywords: - cadd - annotate @@ -13,36 +14,39 @@ tools: doi: "10.1093/nar/gky1016" licence: - Restricted. Free for non-commercial users. + identifier: biotools:cadd_phred input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - vcf: - type: file - description: Input file for annotation in vcf or vcf.gz format - pattern: "*.{vcf,vcf.gz}" - - annotation_dir: - type: file - description: | - Path to folder containing the vcf files with precomputed CADD scores. - This folder contains the uncompressed files that would otherwise be in data/annotation folder as described in https://github.com/kircherlab/CADD-scripts/#manual-installation. - pattern: "*.{vcf,vcf.gz}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - vcf: + type: file + description: Input file for annotation in vcf or vcf.gz format + pattern: "*.{vcf,vcf.gz}" + - - annotation_dir: + type: file + description: | + Path to folder containing the vcf files with precomputed CADD scores. + This folder contains the uncompressed files that would otherwise be in data/annotation folder as described in https://github.com/kircherlab/CADD-scripts/#manual-installation. + pattern: "*.{vcf,vcf.gz}" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - tsv: - type: file - description: Annotated tsv file - pattern: "*.{tsv,tsv.gz}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.tsv.gz": + type: file + description: Annotated tsv file + pattern: "*.{tsv,tsv.gz}" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@ramprasadn" maintainers: diff --git a/modules/nf-core/ensemblvep/vep/ensemblvep-vep.diff b/modules/nf-core/ensemblvep/vep/ensemblvep-vep.diff index b786e64b..00a03673 100644 --- a/modules/nf-core/ensemblvep/vep/ensemblvep-vep.diff +++ b/modules/nf-core/ensemblvep/vep/ensemblvep-vep.diff @@ -1,25 +1,34 @@ Changes in module 'nf-core/ensemblvep/vep' +'modules/nf-core/ensemblvep/vep/meta.yml' is unchanged +Changes in 'ensemblvep/vep/main.nf': --- modules/nf-core/ensemblvep/vep/main.nf +++ modules/nf-core/ensemblvep/vep/main.nf @@ -4,8 +4,8 @@ conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? -- 'https://depot.galaxyproject.org/singularity/ensembl-vep:112.0--pl5321h2a3209d_0' : -- 'biocontainers/ensembl-vep:112.0--pl5321h2a3209d_0' }" +- 'https://depot.galaxyproject.org/singularity/ensembl-vep:113.0--pl5321h2a3209d_0' : +- 'biocontainers/ensembl-vep:113.0--pl5321h2a3209d_0' }" + 'https://depot.galaxyproject.org/singularity/ensembl-vep:110.0--pl5321h2a3209d_0' : + 'biocontainers/ensembl-vep:110.0--pl5321h2a3209d_0' }" input: tuple val(meta), path(vcf), path(custom_extra_files) +Changes in 'ensemblvep/vep/environment.yml': --- modules/nf-core/ensemblvep/vep/environment.yml +++ modules/nf-core/ensemblvep/vep/environment.yml @@ -2,4 +2,4 @@ - conda-forge - bioconda dependencies: -- - bioconda::ensembl-vep=112.0 +- - bioconda::ensembl-vep=113.0 + - bioconda::ensembl-vep=110.0 +'modules/nf-core/ensemblvep/vep/tests/tags.yml' is unchanged +'modules/nf-core/ensemblvep/vep/tests/main.nf.test.snap' is unchanged +'modules/nf-core/ensemblvep/vep/tests/nextflow.config' is unchanged +'modules/nf-core/ensemblvep/vep/tests/tab.gz.config' is unchanged +'modules/nf-core/ensemblvep/vep/tests/main.nf.test' is unchanged +'modules/nf-core/ensemblvep/vep/tests/vcf.config' is unchanged ************************************************************ diff --git a/modules/nf-core/ensemblvep/vep/meta.yml b/modules/nf-core/ensemblvep/vep/meta.yml index d8ff8d14..9288a938 100644 --- a/modules/nf-core/ensemblvep/vep/meta.yml +++ b/modules/nf-core/ensemblvep/vep/meta.yml @@ -1,5 +1,6 @@ name: ensemblvep_vep -description: Ensembl Variant Effect Predictor (VEP). The output-file-format is controlled through `task.ext.args`. +description: Ensembl Variant Effect Predictor (VEP). The output-file-format is controlled + through `task.ext.args`. keywords: - annotation - vcf @@ -13,75 +14,96 @@ tools: homepage: https://www.ensembl.org/info/docs/tools/vep/index.html documentation: https://www.ensembl.org/info/docs/tools/vep/script/index.html licence: ["Apache-2.0"] + identifier: "" input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - vcf: - type: file - description: | - vcf to annotate - - custom_extra_files: - type: file - description: | - extra sample-specific files to be used with the `--custom` flag to be configured with ext.args - (optional) - - genome: - type: string - description: | - which genome to annotate with - - species: - type: string - description: | - which species to annotate with - - cache_version: - type: integer - description: | - which version of the cache to annotate with - - cache: - type: file - description: | - path to VEP cache (optional) - - meta2: - type: map - description: | - Groovy Map containing fasta reference information - e.g. [ id:'test' ] - - fasta: - type: file - description: | - reference FASTA file (optional) - pattern: "*.{fasta,fa}" - - extra_files: - type: file - description: | - path to file(s) needed for plugins (optional) + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - vcf: + type: file + description: | + vcf to annotate + - custom_extra_files: + type: file + description: | + extra sample-specific files to be used with the `--custom` flag to be configured with ext.args + (optional) + - - genome: + type: string + description: | + which genome to annotate with + - - species: + type: string + description: | + which species to annotate with + - - cache_version: + type: integer + description: | + which version of the cache to annotate with + - - cache: + type: file + description: | + path to VEP cache (optional) + - - meta2: + type: map + description: | + Groovy Map containing fasta reference information + e.g. [ id:'test' ] + - fasta: + type: file + description: | + reference FASTA file (optional) + pattern: "*.{fasta,fa}" + - - extra_files: + type: file + description: | + path to file(s) needed for plugins (optional) output: - vcf: - type: file - description: | - annotated vcf (optional) - pattern: "*.ann.vcf.gz" + - meta: + type: file + description: | + annotated vcf (optional) + pattern: "*.ann.vcf.gz" + - "*.vcf.gz": + type: file + description: | + annotated vcf (optional) + pattern: "*.ann.vcf.gz" - tab: - type: file - description: | - tab file with annotated variants (optional) - pattern: "*.ann.tab.gz" + - meta: + type: file + description: | + tab file with annotated variants (optional) + pattern: "*.ann.tab.gz" + - "*.tab.gz": + type: file + description: | + tab file with annotated variants (optional) + pattern: "*.ann.tab.gz" - json: - type: file - description: | - json file with annotated variants (optional) - pattern: "*.ann.json.gz" + - meta: + type: file + description: | + json file with annotated variants (optional) + pattern: "*.ann.json.gz" + - "*.json.gz": + type: file + description: | + json file with annotated variants (optional) + pattern: "*.ann.json.gz" - report: - type: file - description: VEP report file - pattern: "*.html" + - "*.html": + type: file + description: VEP report file + pattern: "*.html" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@maxulysse" - "@matthdsm" diff --git a/modules/nf-core/ensemblvep/vep/tests/main.nf.test b/modules/nf-core/ensemblvep/vep/tests/main.nf.test index e68fff3c..3e8c0b53 100644 --- a/modules/nf-core/ensemblvep/vep/tests/main.nf.test +++ b/modules/nf-core/ensemblvep/vep/tests/main.nf.test @@ -21,7 +21,7 @@ nextflow_process { process { """ input[0] = Channel.of([ - [id:"112_WBcel235"], + [id:"113_WBcel235"], params.vep_genome, params.vep_species, params.vep_cache_version @@ -72,7 +72,7 @@ nextflow_process { process { """ input[0] = Channel.of([ - [id:"112_WBcel235"], + [id:"113_WBcel235"], params.vep_genome, params.vep_species, params.vep_cache_version @@ -107,7 +107,7 @@ nextflow_process { assertAll( { assert process.success }, { assert snapshot(process.out.versions).match() }, - { assert path(process.out.tab.get(0).get(1)).linesGzip.contains("## ENSEMBL VARIANT EFFECT PREDICTOR v112.0") } + { assert path(process.out.tab.get(0).get(1)).linesGzip.contains("## ENSEMBL VARIANT EFFECT PREDICTOR v113.0") } ) } } diff --git a/modules/nf-core/ensemblvep/vep/tests/main.nf.test.snap b/modules/nf-core/ensemblvep/vep/tests/main.nf.test.snap index 1c4c0e4e..1df94276 100644 --- a/modules/nf-core/ensemblvep/vep/tests/main.nf.test.snap +++ b/modules/nf-core/ensemblvep/vep/tests/main.nf.test.snap @@ -2,25 +2,25 @@ "test_ensemblvep_vep_fasta_tab_gz": { "content": [ [ - "versions.yml:md5,d06f1eb60f534489026d682eb3aa5559" + "versions.yml:md5,4fbfeb73f0d4b4aa039f17be8ba9e1f2" ] ], "meta": { - "nf-test": "0.8.4", + "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-09-02T10:15:18.228927" + "timestamp": "2024-10-21T09:12:23.474703494" }, "test_ensemblvep_vep_fasta_vcf": { "content": [ [ - "versions.yml:md5,d06f1eb60f534489026d682eb3aa5559" + "versions.yml:md5,4fbfeb73f0d4b4aa039f17be8ba9e1f2" ] ], "meta": { - "nf-test": "0.8.4", + "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-09-02T10:14:50.193861" + "timestamp": "2024-10-21T09:11:54.343590485" } } \ No newline at end of file diff --git a/modules/nf-core/ensemblvep/vep/tests/nextflow.config b/modules/nf-core/ensemblvep/vep/tests/nextflow.config index 9aa48164..0a4ae1a6 100644 --- a/modules/nf-core/ensemblvep/vep/tests/nextflow.config +++ b/modules/nf-core/ensemblvep/vep/tests/nextflow.config @@ -1,5 +1,5 @@ params { - vep_cache_version = "112" + vep_cache_version = "113" vep_genome = "WBcel235" vep_species = "caenorhabditis_elegans" } diff --git a/modules/nf-core/glnexus/environment.yml b/modules/nf-core/glnexus/environment.yml index 922214e8..9190508a 100644 --- a/modules/nf-core/glnexus/environment.yml +++ b/modules/nf-core/glnexus/environment.yml @@ -1,7 +1,5 @@ -name: glnexus channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::glnexus=1.4.1 diff --git a/modules/nf-core/glnexus/glnexus.diff b/modules/nf-core/glnexus/glnexus.diff index c5bc3382..d7324596 100644 --- a/modules/nf-core/glnexus/glnexus.diff +++ b/modules/nf-core/glnexus/glnexus.diff @@ -1,17 +1,16 @@ Changes in module 'nf-core/glnexus' +'modules/nf-core/glnexus/meta.yml' is unchanged +Changes in 'glnexus/main.nf': --- modules/nf-core/glnexus/main.nf +++ modules/nf-core/glnexus/main.nf -@@ -1,14 +1,13 @@ - process GLNEXUS { - tag "$meta.id" -- label 'process_medium' -+ label 'process_high' +@@ -3,12 +3,11 @@ + label 'process_medium' conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/glnexus:1.4.1--h40d77a6_0' : - 'biocontainers/glnexus:1.4.1--h40d77a6_0' }" -+ container "pacbio/glnexus:v1.4.3" // Biocontainers version does not have jemalloc ++ container "pacbio/glnexus:v1.4.3" // Biocontainers version does not have jemalloc input: tuple val(meta), path(gvcfs) @@ -36,4 +35,5 @@ Changes in module 'nf-core/glnexus' ${input.join(' ')} \\ > ${prefix}.bcf +'modules/nf-core/glnexus/environment.yml' is unchanged ************************************************************ diff --git a/modules/nf-core/glnexus/main.nf b/modules/nf-core/glnexus/main.nf index 6147d71d..77754301 100644 --- a/modules/nf-core/glnexus/main.nf +++ b/modules/nf-core/glnexus/main.nf @@ -1,9 +1,9 @@ process GLNEXUS { tag "$meta.id" - label 'process_high' + label 'process_medium' conda "${moduleDir}/environment.yml" - container "pacbio/glnexus:v1.4.3" // Biocontainers version does not have jemalloc + container "pacbio/glnexus:v1.4.3" // Biocontainers version does not have jemalloc input: tuple val(meta), path(gvcfs) diff --git a/modules/nf-core/glnexus/meta.yml b/modules/nf-core/glnexus/meta.yml index 4944ebde..a79fc63c 100644 --- a/modules/nf-core/glnexus/meta.yml +++ b/modules/nf-core/glnexus/meta.yml @@ -3,32 +3,41 @@ description: merge gVCF files and perform joint variant calling keywords: - merge - gvcf + - joint-variant-calling tools: - glnexus: - description: scalable gVCF merging and joint variant calling for population sequencing projects. + description: scalable gVCF merging and joint variant calling for population sequencing + projects. homepage: https://github.com/dnanexus-rnd/GLnexus documentation: https://github.com/dnanexus-rnd/GLnexus/wiki/Getting-Started doi: 10.1101/343970 licence: ["Apache-2.0"] + identifier: "" input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test' ] - - gvcfs: - type: list - description: Input genomic vcf files - pattern: "*.{gvcf,gvcf.gz,g.vcf,g.vcf.gz}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test' ] + - gvcfs: + type: list + description: Input genomic vcf files + pattern: "*.{gvcf,gvcf.gz,g.vcf,g.vcf.gz}" output: - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - bcf: - type: file - description: merged BCF file - pattern: "*.bcf" + - meta: + type: file + description: merged BCF file + pattern: "*.bcf" + - "*.bcf": + type: file + description: merged BCF file + pattern: "*.bcf" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@ramprasadn" maintainers: diff --git a/modules/nf-core/svdb/merge/environment.yml b/modules/nf-core/svdb/merge/environment.yml index f725b652..ab87ec70 100644 --- a/modules/nf-core/svdb/merge/environment.yml +++ b/modules/nf-core/svdb/merge/environment.yml @@ -3,6 +3,5 @@ channels: - bioconda dependencies: - - htslib=1.19.1 - - samtools=1.19.2 - - svdb=2.8.1 + - bcftools=1.21 + - svdb=2.8.2 diff --git a/modules/nf-core/svdb/merge/main.nf b/modules/nf-core/svdb/merge/main.nf index d28f2a97..96d21eba 100644 --- a/modules/nf-core/svdb/merge/main.nf +++ b/modules/nf-core/svdb/merge/main.nf @@ -3,83 +3,103 @@ process SVDB_MERGE { label 'process_medium' conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/mulled-v2-c8daa8f9d69d3c5a1a4ff08283a166c18edb0000:511069f65a53621c5503e5cfee319aa3c735abfa-0': - 'biocontainers/mulled-v2-c8daa8f9d69d3c5a1a4ff08283a166c18edb0000:511069f65a53621c5503e5cfee319aa3c735abfa-0' }" + 'https://depot.galaxyproject.org/singularity/mulled-v2-375a758a4ca8c128fb9d38047a68a9f4322d2acd:b3615e06ef17566f2988a215ce9e10808c1d08bf-0': + 'biocontainers/mulled-v2-375a758a4ca8c128fb9d38047a68a9f4322d2acd:b3615e06ef17566f2988a215ce9e10808c1d08bf-0' }" input: tuple val(meta), path(vcfs) - val(priority) + val(input_priority) val(sort_inputs) output: - tuple val(meta), path("*.vcf.gz"), emit: vcf - path "versions.yml" , emit: versions + tuple val(meta), path("*.{vcf,vcf.gz,bcf,bcf.gz}"), emit: vcf + tuple val(meta), path("*.tbi") , emit: tbi, optional: true + tuple val(meta), path("*.csi") , emit: csi, optional: true + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when script: def args = task.ext.args ?: '' + def args2 = task.ext.args2 ?: '' def prefix = task.ext.prefix ?: "${meta.id}" // Ensure priority list matches the number of VCFs if priority is provided - if (priority && vcfs.collect().size() != priority.collect().size()) { + if (input_priority && vcfs.collect().size() != input_priority.collect().size()) { error "If priority is used, one tag per VCF is needed" } - if (sort_inputs && vcfs.collect().size() > 1) { - if (priority) { + def input = "" + def prio = "" + if (input_priority) { + if (vcfs.collect().size() > 1 && sort_inputs) { // make vcf-prioprity pairs and sort on VCF name, so priority is also sorted the same - def pairs = vcfs.indices.collect { [vcfs[it], priority[it]] } + def pairs = vcfs.indices.collect { [vcfs[it], input_priority[it]] } pairs = pairs.sort { a, b -> a[0].name <=> b[0].name } vcfs = pairs.collect { it[0] } priority = pairs.collect { it[1] } } else { - // if there's no priority input just sort the vcfs by name - vcfs = vcfs.sort { it.name } + priority = input_priority } - } - - // If there's only one input VCF the code above is not executed, and that VCF becomes the input - input = vcfs - def prio = "" - if(priority) { - prio = "--priority ${priority.join(',')}" + // Build inputs + prio = "--priority ${input_priority.join(',')}" input = "" for (int index = 0; index < vcfs.collect().size(); index++) { input += "${vcfs[index]}:${priority[index]} " } + + } else { + // if there's no priority input just sort the vcfs by name if possible + input = (vcfs.collect().size() > 1 && sort_inputs) ? vcfs.sort { it.name } : vcfs } + def extension = args2.contains("--output-type b") || args2.contains("-Ob") ? "bcf.gz" : + args2.contains("--output-type u") || args2.contains("-Ou") ? "bcf" : + args2.contains("--output-type z") || args2.contains("-Oz") ? "vcf.gz" : + args2.contains("--output-type v") || args2.contains("-Ov") ? "vcf" : + "vcf.gz" """ svdb \\ --merge \\ $args \\ $prio \\ - --vcf $input \\ - > ${prefix}.vcf - - bgzip \\ - --threads ${task.cpus} \\ - ${prefix}.vcf + --vcf $input |\\ + bcftools view \\ + $args2 \\ + --threads ${task.cpus} \\ + --output ${prefix}.${extension} cat <<-END_VERSIONS > versions.yml "${task.process}": svdb: \$( echo \$(svdb) | head -1 | sed 's/usage: SVDB-\\([0-9]\\.[0-9]\\.[0-9]\\).*/\\1/' ) - samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') + bcftools: \$(bcftools --version 2>&1 | head -n1 | sed 's/^.*bcftools //; s/ .*\$//') END_VERSIONS """ stub: def prefix = task.ext.prefix ?: "${meta.id}" + def args2 = task.ext.args2 ?: '' + def extension = args2.contains("--output-type b") || args2.contains("-Ob") ? "bcf.gz" : + args2.contains("--output-type u") || args2.contains("-Ou") ? "bcf" : + args2.contains("--output-type z") || args2.contains("-Oz") ? "vcf.gz" : + args2.contains("--output-type v") || args2.contains("-Ov") ? "vcf" : + "vcf.gz" + def index = args2.contains("--write-index=tbi") || args2.contains("-W=tbi") ? "tbi" : + args2.contains("--write-index=csi") || args2.contains("-W=csi") ? "csi" : + args2.contains("--write-index") || args2.contains("-W") ? "csi" : + "" + def create_cmd = extension.endsWith(".gz") ? "echo '' | gzip >" : "touch" + def create_index = extension.endsWith(".gz") && index.matches("csi|tbi") ? "touch ${prefix}.${extension}.${index}" : "" """ - echo | gzip > ${prefix}.vcf.gz + ${create_cmd} ${prefix}.${extension} + ${create_index} cat <<-END_VERSIONS > versions.yml "${task.process}": svdb: \$( echo \$(svdb) | head -1 | sed 's/usage: SVDB-\\([0-9]\\.[0-9]\\.[0-9]\\).*/\\1/' ) - samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') + bcftools: \$(bcftools --version 2>&1 | head -n1 | sed 's/^.*bcftools //; s/ .*\$//') END_VERSIONS """ } diff --git a/modules/nf-core/svdb/merge/meta.yml b/modules/nf-core/svdb/merge/meta.yml index d6cc1758..c34a9cb1 100644 --- a/modules/nf-core/svdb/merge/meta.yml +++ b/modules/nf-core/svdb/merge/meta.yml @@ -23,7 +23,7 @@ input: One or more VCF files. The order and number of files should correspond to the order and number of tags in the `priority` input channel. pattern: "*.{vcf,vcf.gz}" - - - priority: + - - input_priority: type: list description: | Prioritize the input VCF files according to this list, @@ -34,18 +34,37 @@ input: description: | Should the input files be sorted by name. The priority tag will be sorted together with it's corresponding VCF file. - output: - vcf: - meta: type: map description: | Groovy Map containing sample information - e.g. [ id:'test' ] - - "*.vcf.gz": + e.g. [ id:'test', single_end:false ] + - "*.{vcf,vcf.gz,bcf,bcf.gz}": type: file - description: merged VCF file - pattern: "*.vcf.gz" + description: VCF output file + pattern: "*.{vcf,vcf.gz,bcf,bcf.gz}" + - tbi: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.tbi": + type: file + description: Alternative VCF file index + pattern: "*.tbi" + - csi: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.csi": + type: file + description: Default VCF file index + pattern: "*.csi" - versions: - versions.yml: type: file @@ -55,3 +74,4 @@ authors: - "@ramprasadn" maintainers: - "@ramprasadn" + - "@fellen31" diff --git a/modules/nf-core/svdb/merge/tests/main.nf.test b/modules/nf-core/svdb/merge/tests/main.nf.test index 0dddffa3..6a79d7a0 100644 --- a/modules/nf-core/svdb/merge/tests/main.nf.test +++ b/modules/nf-core/svdb/merge/tests/main.nf.test @@ -16,9 +16,7 @@ nextflow_process { """ input[0] = Channel.of([ [ id:'test' ], // meta map - [ - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true) - ] + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true) ]) input[1] = [] input[2] = [] @@ -29,7 +27,7 @@ nextflow_process { then { assertAll ( { assert process.success }, - { assert path(process.out.vcf.get(0).get(1)).linesGzip[2].contains("--vcf test.vcf") }, // SVDB command line + { assert path(process.out.vcf.get(0).get(1)).linesGzip[3].contains("--vcf test.vcf") }, // SVDB command line { assert snapshot( path(process.out.vcf.get(0).get(1)).vcf.summary, path(process.out.vcf.get(0).get(1)).vcf.variantsMD5, @@ -46,9 +44,7 @@ nextflow_process { """ input[0] = Channel.of([ [ id:'test' ], // meta map - [ - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true) - ] + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true) ]) input[1] = [] input[2] = [] @@ -59,7 +55,7 @@ nextflow_process { then { assertAll ( { assert process.success }, - { assert path(process.out.vcf.get(0).get(1)).linesGzip[2].contains("--vcf test.vcf") }, // SVDB command line + { assert path(process.out.vcf.get(0).get(1)).linesGzip[3].contains("--vcf test.vcf") }, // SVDB command line { assert snapshot( path(process.out.vcf.get(0).get(1)).vcf.summary, path(process.out.vcf.get(0).get(1)).vcf.variantsMD5, @@ -76,9 +72,7 @@ nextflow_process { """ input[0] = Channel.of([ [ id:'test' ], // meta map - [ - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true) - ] + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true) ]) input[1] = ['tiddit'] input[2] = [] @@ -89,7 +83,7 @@ nextflow_process { then { assertAll ( { assert process.success }, - { assert path(process.out.vcf.get(0).get(1)).linesGzip[2].contains("--vcf test.vcf:tiddit") }, // SVDB command line + { assert path(process.out.vcf.get(0).get(1)).linesGzip[3].contains("--priority tiddit --vcf test.vcf:tiddit") }, // SVDB command line { assert snapshot( path(process.out.vcf.get(0).get(1)).vcf.summary, path(process.out.vcf.get(0).get(1)).vcf.variantsMD5, @@ -106,9 +100,7 @@ nextflow_process { """ input[0] = Channel.of([ [ id:'test' ], // meta map - [ - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true) - ] + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true) ]) input[1] = ['tiddit'] input[2] = true @@ -119,7 +111,7 @@ nextflow_process { then { assertAll ( { assert process.success }, - { assert path(process.out.vcf.get(0).get(1)).linesGzip[2].contains("--vcf test.vcf:tiddit") }, // SVDB command line + { assert path(process.out.vcf.get(0).get(1)).linesGzip[3].contains("--priority tiddit --vcf test.vcf:tiddit") }, // SVDB command line { assert snapshot( path(process.out.vcf.get(0).get(1)).vcf.summary, path(process.out.vcf.get(0).get(1)).vcf.variantsMD5, @@ -150,7 +142,7 @@ nextflow_process { then { assertAll ( { assert process.success }, - { assert path(process.out.vcf.get(0).get(1)).linesGzip[2].contains("--vcf test2.vcf test.vcf") }, // SVDB command line + { assert path(process.out.vcf.get(0).get(1)).linesGzip[3].contains("--vcf test2.vcf test.vcf") }, // SVDB command line { assert snapshot( path(process.out.vcf.get(0).get(1)).vcf.summary, path(process.out.vcf.get(0).get(1)).vcf.variantsMD5, @@ -181,7 +173,7 @@ nextflow_process { then { assertAll ( { assert process.success }, - { assert path(process.out.vcf.get(0).get(1)).linesGzip[2].contains("--vcf test.vcf test2.vcf") }, // SVDB command line + { assert path(process.out.vcf.get(0).get(1)).linesGzip[3].contains("--vcf test.vcf test2.vcf") }, // SVDB command line { assert snapshot( path(process.out.vcf.get(0).get(1)).vcf.summary, path(process.out.vcf.get(0).get(1)).vcf.variantsMD5, @@ -212,7 +204,7 @@ nextflow_process { then { assertAll ( { assert process.success }, - { assert path(process.out.vcf.get(0).get(1)).linesGzip[2].contains("--vcf test2.vcf:tiddit test.vcf:cnvnator") }, // SVDB command line + { assert path(process.out.vcf.get(0).get(1)).linesGzip[3].contains("--priority tiddit,cnvnator --vcf test2.vcf:tiddit test.vcf:cnvnator") }, // SVDB command line { assert snapshot( path(process.out.vcf.get(0).get(1)).vcf.summary, path(process.out.vcf.get(0).get(1)).vcf.variantsMD5, @@ -243,7 +235,7 @@ nextflow_process { then { assertAll ( { assert process.success }, - { assert path(process.out.vcf.get(0).get(1)).linesGzip[2].contains("--vcf test.vcf:cnvnator test2.vcf:tiddit") }, // SVDB command line + { assert path(process.out.vcf.get(0).get(1)).linesGzip[3].contains("--priority tiddit,cnvnator --vcf test.vcf:cnvnator test2.vcf:tiddit") }, // SVDB command line { assert snapshot( path(process.out.vcf.get(0).get(1)).vcf.summary, path(process.out.vcf.get(0).get(1)).vcf.variantsMD5, diff --git a/modules/nf-core/svdb/merge/tests/main.nf.test.snap b/modules/nf-core/svdb/merge/tests/main.nf.test.snap index a5daf368..e86662e5 100644 --- a/modules/nf-core/svdb/merge/tests/main.nf.test.snap +++ b/modules/nf-core/svdb/merge/tests/main.nf.test.snap @@ -4,14 +4,14 @@ "VcfFile [chromosomes=[MT192765.1], sampleCount=1, variantCount=9, phased=false, phasedAutodetect=false]", "60fb4cab2aa891bebef8ffdbd0e41bc3", [ - "versions.yml:md5,772f39343052d54d9bcb21d4892da203" + "versions.yml:md5,bf8271626d334b2a827f94a2daacadd0" ] ], "meta": { "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-17T08:30:08.029708713" + "timestamp": "2024-10-24T09:00:25.9277471" }, "2 samples, ['tiddit', 'cnvnator'], true - stub": { "content": [ @@ -25,7 +25,19 @@ ] ], "1": [ - "versions.yml:md5,772f39343052d54d9bcb21d4892da203" + + ], + "2": [ + + ], + "3": [ + "versions.yml:md5,bf8271626d334b2a827f94a2daacadd0" + ], + "csi": [ + + ], + "tbi": [ + ], "vcf": [ [ @@ -36,7 +48,7 @@ ] ], "versions": [ - "versions.yml:md5,772f39343052d54d9bcb21d4892da203" + "versions.yml:md5,bf8271626d334b2a827f94a2daacadd0" ] } ], @@ -44,105 +56,105 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-17T08:32:10.741546957" + "timestamp": "2024-10-24T09:05:49.325618245" }, "2 samples, ['tiddit', 'cnvnator'], []": { "content": [ "VcfFile [chromosomes=[MT192765.1], sampleCount=2, variantCount=9, phased=false, phasedAutodetect=false]", "254e56e4fc8356d68424828438da66e3", [ - "versions.yml:md5,772f39343052d54d9bcb21d4892da203" + "versions.yml:md5,bf8271626d334b2a827f94a2daacadd0" ] ], "meta": { "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-17T08:31:15.105041662" + "timestamp": "2024-10-24T09:02:27.964808463" }, "2 samples, [], []": { "content": [ "VcfFile [chromosomes=[MT192765.1], sampleCount=2, variantCount=9, phased=false, phasedAutodetect=false]", "7ad648266e57d405b5b01aaea4613d1c", [ - "versions.yml:md5,772f39343052d54d9bcb21d4892da203" + "versions.yml:md5,bf8271626d334b2a827f94a2daacadd0" ] ], "meta": { "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-17T08:41:54.793936976" + "timestamp": "2024-10-24T09:02:11.013532413" }, "2 samples, ['tiddit', 'cnvnator'], true": { "content": [ "VcfFile [chromosomes=[MT192765.1], sampleCount=2, variantCount=9, phased=false, phasedAutodetect=false]", - "74ed58e115db54f30036bfd68a7dc432", + "254e56e4fc8356d68424828438da66e3", [ - "versions.yml:md5,772f39343052d54d9bcb21d4892da203" + "versions.yml:md5,bf8271626d334b2a827f94a2daacadd0" ] ], "meta": { "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-17T08:31:29.320496992" + "timestamp": "2024-10-24T09:02:35.956320871" }, "1 sample, ['tiddit'], []": { "content": [ "VcfFile [chromosomes=[MT192765.1], sampleCount=1, variantCount=9, phased=false, phasedAutodetect=false]", "9dd588cd870672b78192f48ad440b5d", [ - "versions.yml:md5,772f39343052d54d9bcb21d4892da203" + "versions.yml:md5,bf8271626d334b2a827f94a2daacadd0" ] ], "meta": { "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-17T08:30:30.590239659" + "timestamp": "2024-10-24T09:00:42.064583463" }, "1 sample, [], true": { "content": [ "VcfFile [chromosomes=[MT192765.1], sampleCount=1, variantCount=9, phased=false, phasedAutodetect=false]", "60fb4cab2aa891bebef8ffdbd0e41bc3", [ - "versions.yml:md5,772f39343052d54d9bcb21d4892da203" + "versions.yml:md5,bf8271626d334b2a827f94a2daacadd0" ] ], "meta": { "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-17T08:30:22.670145479" + "timestamp": "2024-10-24T09:00:33.88572601" }, "1 sample, ['tiddit'], true": { "content": [ "VcfFile [chromosomes=[MT192765.1], sampleCount=1, variantCount=9, phased=false, phasedAutodetect=false]", "9dd588cd870672b78192f48ad440b5d", [ - "versions.yml:md5,772f39343052d54d9bcb21d4892da203" + "versions.yml:md5,bf8271626d334b2a827f94a2daacadd0" ] ], "meta": { "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-17T08:30:40.958649472" + "timestamp": "2024-10-24T09:00:50.18149857" }, "2 samples, [], true": { "content": [ "VcfFile [chromosomes=[MT192765.1], sampleCount=2, variantCount=9, phased=false, phasedAutodetect=false]", "de0a3b56cdee89e4c9cd4fbb4ad3391d", [ - "versions.yml:md5,772f39343052d54d9bcb21d4892da203" + "versions.yml:md5,bf8271626d334b2a827f94a2daacadd0" ] ], "meta": { "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-17T08:31:01.933044815" + "timestamp": "2024-10-24T09:02:19.556799178" }, "2 samples, ['tiddit', 'cnvnator'], [] - stub": { "content": [ @@ -156,7 +168,19 @@ ] ], "1": [ - "versions.yml:md5,772f39343052d54d9bcb21d4892da203" + + ], + "2": [ + + ], + "3": [ + "versions.yml:md5,bf8271626d334b2a827f94a2daacadd0" + ], + "csi": [ + + ], + "tbi": [ + ], "vcf": [ [ @@ -167,7 +191,7 @@ ] ], "versions": [ - "versions.yml:md5,772f39343052d54d9bcb21d4892da203" + "versions.yml:md5,bf8271626d334b2a827f94a2daacadd0" ] } ], @@ -175,7 +199,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-17T08:31:59.830493054" + "timestamp": "2024-10-24T09:05:40.427970257" }, "2 samples, [], [] - stub": { "content": [ @@ -189,7 +213,19 @@ ] ], "1": [ - "versions.yml:md5,772f39343052d54d9bcb21d4892da203" + + ], + "2": [ + + ], + "3": [ + "versions.yml:md5,bf8271626d334b2a827f94a2daacadd0" + ], + "csi": [ + + ], + "tbi": [ + ], "vcf": [ [ @@ -200,7 +236,7 @@ ] ], "versions": [ - "versions.yml:md5,772f39343052d54d9bcb21d4892da203" + "versions.yml:md5,bf8271626d334b2a827f94a2daacadd0" ] } ], @@ -208,7 +244,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-17T08:41:07.289491939" + "timestamp": "2024-10-24T09:05:24.34471465" }, "2 samples, [], true - stub": { "content": [ @@ -222,7 +258,19 @@ ] ], "1": [ - "versions.yml:md5,772f39343052d54d9bcb21d4892da203" + + ], + "2": [ + + ], + "3": [ + "versions.yml:md5,bf8271626d334b2a827f94a2daacadd0" + ], + "csi": [ + + ], + "tbi": [ + ], "vcf": [ [ @@ -233,7 +281,7 @@ ] ], "versions": [ - "versions.yml:md5,772f39343052d54d9bcb21d4892da203" + "versions.yml:md5,bf8271626d334b2a827f94a2daacadd0" ] } ], @@ -241,6 +289,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-17T08:31:48.40721064" + "timestamp": "2024-10-24T09:05:32.529261733" } } \ No newline at end of file diff --git a/modules/nf-core/svdb/merge/tests/nextflow.config b/modules/nf-core/svdb/merge/tests/nextflow.config index 25f38031..c267037c 100644 --- a/modules/nf-core/svdb/merge/tests/nextflow.config +++ b/modules/nf-core/svdb/merge/tests/nextflow.config @@ -1,5 +1,6 @@ process { withName: 'SVDB_MERGE' { ext.prefix = "merged" + ext.args2 = '--output-type z --no-version' } } diff --git a/modules/nf-core/untar/environment.yml b/modules/nf-core/untar/environment.yml index 4f498244..c7794856 100644 --- a/modules/nf-core/untar/environment.yml +++ b/modules/nf-core/untar/environment.yml @@ -1,8 +1,6 @@ -name: untar channels: - conda-forge - bioconda - - defaults dependencies: - conda-forge::grep=3.11 - conda-forge::sed=4.8 diff --git a/modules/nf-core/untar/meta.yml b/modules/nf-core/untar/meta.yml index a9a2110f..290346b3 100644 --- a/modules/nf-core/untar/meta.yml +++ b/modules/nf-core/untar/meta.yml @@ -10,30 +10,33 @@ tools: Extract tar.gz files. documentation: https://www.gnu.org/software/tar/manual/ licence: ["GPL-3.0-or-later"] + identifier: "" input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - archive: - type: file - description: File to be untar - pattern: "*.{tar}.{gz}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - archive: + type: file + description: File to be untar + pattern: "*.{tar}.{gz}" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - untar: - type: directory - description: Directory containing contents of archive - pattern: "*/" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - $prefix: + type: directory + description: Directory containing contents of archive + pattern: "*/" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@joseespinosa" - "@drpatelh" diff --git a/modules/nf-core/untar/untar.diff b/modules/nf-core/untar/untar.diff index 1f2cf9b4..2f1c8b6d 100644 --- a/modules/nf-core/untar/untar.diff +++ b/modules/nf-core/untar/untar.diff @@ -1,4 +1,6 @@ Changes in module 'nf-core/untar' +'modules/nf-core/untar/meta.yml' is unchanged +Changes in 'untar/main.nf': --- modules/nf-core/untar/main.nf +++ modules/nf-core/untar/main.nf @@ -11,8 +11,8 @@ @@ -36,4 +38,8 @@ Changes in module 'nf-core/untar' if [[ \$(tar -taf ${archive} | grep -o -P "^.*?\\/" | uniq | wc -l) -eq 1 ]]; then for i in `tar -tf ${archive}`; +'modules/nf-core/untar/environment.yml' is unchanged +'modules/nf-core/untar/tests/tags.yml' is unchanged +'modules/nf-core/untar/tests/main.nf.test.snap' is unchanged +'modules/nf-core/untar/tests/main.nf.test' is unchanged ************************************************************ diff --git a/nextflow.config b/nextflow.config index a3c9b19c..5ff16c18 100644 --- a/nextflow.config +++ b/nextflow.config @@ -318,8 +318,10 @@ includeConfig 'conf/modules/annotate_repeat_expansions.config' includeConfig 'conf/modules/annotate_svs.config' includeConfig 'conf/modules/general.config' includeConfig 'conf/modules/bam_infer_sex.config' +includeConfig 'conf/modules/call_cnvs.config' includeConfig 'conf/modules/call_paralogs.config' includeConfig 'conf/modules/call_repeat_expansions.config' +includeConfig 'conf/modules/call_svs.config' includeConfig 'conf/modules/convert_input_files.config' includeConfig 'conf/modules/assembly_variant_calling.config' includeConfig 'conf/modules/genome_assembly.config' @@ -331,6 +333,4 @@ includeConfig 'conf/modules/scatter_genome.config' includeConfig 'conf/modules/rank_variants.config' includeConfig 'conf/modules/short_variant_calling.config' includeConfig 'conf/modules/snv_annotation.config' -includeConfig 'conf/modules/call_svs.config' includeConfig 'conf/modules/short_variant_calling.config' -includeConfig 'conf/modules/cnv.config' diff --git a/subworkflows/local/annotate_svs/tests/main.nf.test.snap b/subworkflows/local/annotate_svs/tests/main.nf.test.snap index 0e7c747d..c56c9824 100644 --- a/subworkflows/local/annotate_svs/tests/main.nf.test.snap +++ b/subworkflows/local/annotate_svs/tests/main.nf.test.snap @@ -21,12 +21,12 @@ "versions.yml:md5,cb83982d3231b281882f4ddc478d93ae" ], "28e9be031273d5e4a94a8654da6e56ed", - "test_svs_annotated.vcf.gz.tbi" + "test_svs_cnvs_merged_annotated.vcf.gz.tbi" ], "meta": { "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-11T10:47:32.194191605" + "timestamp": "2024-10-28T18:04:07.763426107" } } \ No newline at end of file diff --git a/subworkflows/local/annotate_svs/tests/nextflow.config b/subworkflows/local/annotate_svs/tests/nextflow.config index 862966e9..ee5a33ed 100644 --- a/subworkflows/local/annotate_svs/tests/nextflow.config +++ b/subworkflows/local/annotate_svs/tests/nextflow.config @@ -11,4 +11,7 @@ process { '--compress_output bgzip' ].join(' ') } } + withName: 'CALL_SVS:SVDB_MERGE' { + ext.args2 = '--no-version' + } } diff --git a/subworkflows/local/call_cnvs/main.nf b/subworkflows/local/call_cnvs/main.nf new file mode 100644 index 00000000..7407a19a --- /dev/null +++ b/subworkflows/local/call_cnvs/main.nf @@ -0,0 +1,62 @@ +include { ADD_FOUND_IN_TAG } from '../../../modules/local/add_found_in_tag' +include { HIFICNV } from '../../../modules/local/pacbio/hificnv' +include { SVDB_MERGE } from '../../../modules/nf-core/svdb/merge/main' +include { TABIX_TABIX } from '../../../modules/nf-core/tabix/tabix/main' + +workflow CALL_CNVS { + + take: + ch_bam_bai_vcf // channel: [ val(meta), path(bam), path(vcf) ] + ch_fasta // channel: [ val(meta), path(fasta) ] + ch_expected_xy_bed // channel: [ val(meta), path(bed) ] + ch_expected_xx_bed // channel: [ val(meta), path(bed) ] + ch_exclude_bed // channel: [ val(meta), path(bed) ] + + main: + ch_versions = Channel.empty() + + ch_bam_bai_vcf + .map { meta, bam, bai, vcf -> [ meta, bam, bai, vcf, meta.sex ] } + .set { ch_hificnv_in } + + // Run HiFiCNV + HIFICNV ( + ch_hificnv_in, + ch_fasta, + ch_expected_xy_bed, + ch_expected_xx_bed, + ch_exclude_bed + ) + ch_versions = ch_versions.mix(HIFICNV.out.versions) + + // Add FOUND_IN=hificnv to VCF + ADD_FOUND_IN_TAG ( + HIFICNV.out.vcf.map { meta, vcf -> [ meta, vcf, [] ] }, + "hificnv" + ) + ch_versions = ch_versions.mix(ADD_FOUND_IN_TAG.out.versions) + + ADD_FOUND_IN_TAG.out.vcf + .map { meta, vcf -> [ [ 'id': meta.family_id ], vcf ] } + .groupTuple() + .set { svdb_merge_in } + + // Merge the files + SVDB_MERGE ( + svdb_merge_in, + [], + true + ) + ch_versions = ch_versions.mix(SVDB_MERGE.out.versions) + + TABIX_TABIX ( SVDB_MERGE.out.vcf ) + ch_versions = ch_versions.mix(TABIX_TABIX.out.versions) + + emit: + sample_vcf = ADD_FOUND_IN_TAG.out.vcf // channel: [ val(meta), path(vcf) ] + sample_tbi = ADD_FOUND_IN_TAG.out.tbi // channel: [ val(meta), path(tbi) ] + family_vcf = SVDB_MERGE.out.vcf // channel: [ val(meta), path(vcf) ] + family_tbi = TABIX_TABIX.out.tbi // channel: [ val(meta), path(tbi) ] + versions = ch_versions // channel: [ versions.yml ] +} + diff --git a/subworkflows/local/call_cnvs/tests/main.nf.test b/subworkflows/local/call_cnvs/tests/main.nf.test new file mode 100644 index 00000000..ad618567 --- /dev/null +++ b/subworkflows/local/call_cnvs/tests/main.nf.test @@ -0,0 +1,253 @@ +nextflow_workflow { + + name "Test Workflow CALL_CNVS" + script "../main.nf" + config "./nextflow.config" + workflow "CALL_CNVS" + + setup { + run("GUNZIP") { + script "../../../../modules/nf-core/gunzip/main.nf" + process { + """ + input[0] = [ + [ id:'test' ], + file(params.pipelines_testdata_base_path + 'reference/hg38.test.fa.gz', checkIfExists: true) + ] + """ + } + + } + run("SAMTOOLS_FAIDX") { + script "../../../../modules/nf-core/samtools/faidx/main.nf" + process { + """ + input[0] = GUNZIP.out.gunzip + input[1] = [[],[]] + """ + } + } + run("MINIMAP2_ALIGN") { + script "../../../../modules/nf-core/minimap2/align/main.nf" + process { + """ + input[0] = [ + [ id: 'test', family_id: 'test', sex: 1 ], + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam', checkIfExists: true) + ] + input[1] = GUNZIP.out.gunzip + input[2] = true + input[3] = 'bai' + input[4] = false + input[5] = false + """ + } + } + run("DEEPVARIANT") { + script "../../../../modules/nf-core/deepvariant/main.nf" + process { + """ + input[0] = MINIMAP2_ALIGN.out.bam + .join(MINIMAP2_ALIGN.out.index) + .map { meta, bam, bai -> [ meta, bam, bai, file(params.pipelines_testdata_base_path + 'reference/test_data.bed', checkIfExists: true) ] } + input[1] = GUNZIP.out.gunzip + input[2] = SAMTOOLS_FAIDX.out.fai + input[3] = [[],[]] + input[4] = [[],[]] + """ + } + } + + } + + test("1 sample - [bam, bai, [] ], fasta, [], [], [], []") { + + when { + workflow { + """ + input[0] = MINIMAP2_ALIGN.out.bam + .join(MINIMAP2_ALIGN.out.index) + .map { meta, bam, bai -> [ meta, bam, bai, [] ] } + input[1] = GUNZIP.out.gunzip + input[2] = [[],[]] + input[3] = [[],[]] + input[4] = [[],[]] + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert workflow.out.sample_tbi.get(0).get(1).endsWith("tbi") }, + { assert workflow.out.family_tbi.get(0).get(1).endsWith("tbi") }, + { assert snapshot( + path(workflow.out.sample_vcf.get(0).get(1)).vcf.summary, + path(workflow.out.sample_vcf.get(0).get(1)).vcf.variantsMD5, + path(workflow.out.family_vcf.get(0).get(1)).vcf.summary, + path(workflow.out.family_vcf.get(0).get(1)).vcf.variantsMD5, + workflow.out.versions, + ).match() } + ) + } + } + + test("1 sample - [bam, bai, vcf ], fasta, [], [], [], []") { + + when { + workflow { + """ + input[0] = MINIMAP2_ALIGN.out.bam + .join(MINIMAP2_ALIGN.out.index) + .join(DEEPVARIANT.out.vcf) + input[1] = GUNZIP.out.gunzip + input[2] = [[],[]] + input[3] = [[],[]] + input[4] = [[],[]] + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert workflow.out.sample_tbi.get(0).get(1).endsWith("tbi") }, + { assert workflow.out.family_tbi.get(0).get(1).endsWith("tbi") }, + { assert snapshot( + path(workflow.out.sample_vcf.get(0).get(1)).vcf.summary, + path(workflow.out.sample_vcf.get(0).get(1)).vcf.variantsMD5, + path(workflow.out.family_vcf.get(0).get(1)).vcf.summary, + path(workflow.out.family_vcf.get(0).get(1)).vcf.variantsMD5, + workflow.out.versions, + ).match() } + ) + } + } + + test("1 sample - [bam, bai, vcf ], fasta, xy_bed, xx_bed, exclude_bed") { + + when { + workflow { + """ + input[0] = MINIMAP2_ALIGN.out.bam + .join(MINIMAP2_ALIGN.out.index) + .join(DEEPVARIANT.out.vcf) + input[1] = GUNZIP.out.gunzip + input[2] = [ + [ id: 'xy_bed' ], + file(params.pipelines_testdata_base_path + 'reference/expected_cn.hg38.XY.bed', checkIfExists: true) + ] + input[3] = [ + [ id: 'xx_bed' ], + file(params.pipelines_testdata_base_path + 'reference/expected_cn.hg38.XX.bed', checkIfExists: true) + ] + input[4] = [ + [ id: 'exclude_bed' ], + file(params.pipelines_testdata_base_path + 'reference/cnv.excluded_regions.hg38.bed.gz', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert workflow.out.sample_tbi.get(0).get(1).endsWith("tbi") }, + { assert workflow.out.family_tbi.get(0).get(1).endsWith("tbi") }, + { assert snapshot( + path(workflow.out.sample_vcf.get(0).get(1)).vcf.summary, + path(workflow.out.sample_vcf.get(0).get(1)).vcf.variantsMD5, + path(workflow.out.family_vcf.get(0).get(1)).vcf.summary, + path(workflow.out.family_vcf.get(0).get(1)).vcf.variantsMD5, + workflow.out.versions, + ).match() } + ) + } + } + + test("1 sample - [bam, bai, [] ], fasta, [], [], [], [] - stub") { + + options "-stub" + + when { + workflow { + """ + input[0] = MINIMAP2_ALIGN.out.bam + .join(MINIMAP2_ALIGN.out.index) + .map { meta, bam, bai -> [ meta, bam, bai, [] ] } + input[1] = GUNZIP.out.gunzip + input[2] = [[],[]] + input[3] = [[],[]] + input[4] = [[],[]] + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out).match() } + ) + } + } + + test("1 sample - [bam, bai, vcf ], fasta, [], [], [], [] - stub") { + + options "-stub" + + when { + workflow { + """ + input[0] = MINIMAP2_ALIGN.out.bam + .join(MINIMAP2_ALIGN.out.index) + .join(DEEPVARIANT.out.vcf) + input[1] = GUNZIP.out.gunzip + input[2] = [[],[]] + input[3] = [[],[]] + input[4] = [[],[]] + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out).match() } + ) + } + } + + test("1 sample - [bam, bai, vcf ], fasta, xy_bed, xx_bed, exclude_bed - stub") { + + options "-stub" + + when { + workflow { + """ + input[0] = MINIMAP2_ALIGN.out.bam + .join(MINIMAP2_ALIGN.out.index) + .join(DEEPVARIANT.out.vcf) + input[1] = GUNZIP.out.gunzip + input[2] = [ + [ id: 'xy_bed' ], + file(params.pipelines_testdata_base_path + 'reference/expected_cn.hg38.XY.bed', checkIfExists: true) + ] + input[3] = [ + [ id: 'xx_bed' ], + file(params.pipelines_testdata_base_path + 'reference/expected_cn.hg38.XX.bed', checkIfExists: true) + ] + input[4] = [ + [ id: 'exclude_bed' ], + file(params.pipelines_testdata_base_path + 'reference/cnv.excluded_regions.hg38.bed.gz', checkIfExists: true) + ] + """ + } + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out).match() } + ) + } + } + } +} diff --git a/subworkflows/local/call_cnvs/tests/main.nf.test.snap b/subworkflows/local/call_cnvs/tests/main.nf.test.snap new file mode 100644 index 00000000..409b8527 --- /dev/null +++ b/subworkflows/local/call_cnvs/tests/main.nf.test.snap @@ -0,0 +1,344 @@ +{ + "1 sample - [bam, bai, vcf ], fasta, [], [], [], [] - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "family_id": "test", + "sex": 1 + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + [ + { + "id": "test", + "family_id": "test", + "sex": 1 + }, + "test.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test" + }, + "merged.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "3": [ + [ + { + "id": "test" + }, + "merged.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + "versions.yml:md5,28a7290514330df198a5df6687535177", + "versions.yml:md5,98e5fabb16a6a19137277ce414001426", + "versions.yml:md5,c22d7e7ddc52579e52ee8ac597b0e829", + "versions.yml:md5,fc490a5d4e1a6dce983637532901f1e9" + ], + "family_tbi": [ + [ + { + "id": "test" + }, + "merged.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "family_vcf": [ + [ + { + "id": "test" + }, + "merged.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "sample_tbi": [ + [ + { + "id": "test", + "family_id": "test", + "sex": 1 + }, + "test.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "sample_vcf": [ + [ + { + "id": "test", + "family_id": "test", + "sex": 1 + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,28a7290514330df198a5df6687535177", + "versions.yml:md5,98e5fabb16a6a19137277ce414001426", + "versions.yml:md5,c22d7e7ddc52579e52ee8ac597b0e829", + "versions.yml:md5,fc490a5d4e1a6dce983637532901f1e9" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-28T09:44:33.644600302" + }, + "1 sample - [bam, bai, [] ], fasta, [], [], [], [] - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "family_id": "test", + "sex": 1 + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + [ + { + "id": "test", + "family_id": "test", + "sex": 1 + }, + "test.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test" + }, + "merged.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "3": [ + [ + { + "id": "test" + }, + "merged.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + "versions.yml:md5,28a7290514330df198a5df6687535177", + "versions.yml:md5,98e5fabb16a6a19137277ce414001426", + "versions.yml:md5,c22d7e7ddc52579e52ee8ac597b0e829", + "versions.yml:md5,fc490a5d4e1a6dce983637532901f1e9" + ], + "family_tbi": [ + [ + { + "id": "test" + }, + "merged.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "family_vcf": [ + [ + { + "id": "test" + }, + "merged.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "sample_tbi": [ + [ + { + "id": "test", + "family_id": "test", + "sex": 1 + }, + "test.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "sample_vcf": [ + [ + { + "id": "test", + "family_id": "test", + "sex": 1 + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,28a7290514330df198a5df6687535177", + "versions.yml:md5,98e5fabb16a6a19137277ce414001426", + "versions.yml:md5,c22d7e7ddc52579e52ee8ac597b0e829", + "versions.yml:md5,fc490a5d4e1a6dce983637532901f1e9" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-28T09:44:20.756426372" + }, + "1 sample - [bam, bai, vcf ], fasta, xy_bed, xx_bed, exclude_bed": { + "content": [ + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=36, phased=false, phasedAutodetect=false]", + "444974b6ec3f9600ca12538628e6742c", + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=36, phased=false, phasedAutodetect=false]", + "171d1b5284a06778c87f54c27ee88bea", + [ + "versions.yml:md5,28a7290514330df198a5df6687535177", + "versions.yml:md5,98e5fabb16a6a19137277ce414001426", + "versions.yml:md5,c22d7e7ddc52579e52ee8ac597b0e829", + "versions.yml:md5,fc490a5d4e1a6dce983637532901f1e9" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-28T09:44:08.08094773" + }, + "1 sample - [bam, bai, [] ], fasta, [], [], [], []": { + "content": [ + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=41, phased=false, phasedAutodetect=false]", + "576892dd42d2b2cb06542862a4beddc1", + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=41, phased=false, phasedAutodetect=false]", + "4aaee123cd9279e17220409be6ed7ea3", + [ + "versions.yml:md5,28a7290514330df198a5df6687535177", + "versions.yml:md5,98e5fabb16a6a19137277ce414001426", + "versions.yml:md5,c22d7e7ddc52579e52ee8ac597b0e829", + "versions.yml:md5,fc490a5d4e1a6dce983637532901f1e9" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-28T09:42:49.173190275" + }, + "1 sample - [bam, bai, vcf ], fasta, xy_bed, xx_bed, exclude_bed - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "family_id": "test", + "sex": 1 + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + [ + { + "id": "test", + "family_id": "test", + "sex": 1 + }, + "test.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test" + }, + "merged.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "3": [ + [ + { + "id": "test" + }, + "merged.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + "versions.yml:md5,28a7290514330df198a5df6687535177", + "versions.yml:md5,98e5fabb16a6a19137277ce414001426", + "versions.yml:md5,c22d7e7ddc52579e52ee8ac597b0e829", + "versions.yml:md5,fc490a5d4e1a6dce983637532901f1e9" + ], + "family_tbi": [ + [ + { + "id": "test" + }, + "merged.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "family_vcf": [ + [ + { + "id": "test" + }, + "merged.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "sample_tbi": [ + [ + { + "id": "test", + "family_id": "test", + "sex": 1 + }, + "test.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "sample_vcf": [ + [ + { + "id": "test", + "family_id": "test", + "sex": 1 + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,28a7290514330df198a5df6687535177", + "versions.yml:md5,98e5fabb16a6a19137277ce414001426", + "versions.yml:md5,c22d7e7ddc52579e52ee8ac597b0e829", + "versions.yml:md5,fc490a5d4e1a6dce983637532901f1e9" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-28T09:44:46.71801265" + }, + "1 sample - [bam, bai, vcf ], fasta, [], [], [], []": { + "content": [ + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=41, phased=false, phasedAutodetect=false]", + "576892dd42d2b2cb06542862a4beddc1", + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=41, phased=false, phasedAutodetect=false]", + "4aaee123cd9279e17220409be6ed7ea3", + [ + "versions.yml:md5,28a7290514330df198a5df6687535177", + "versions.yml:md5,98e5fabb16a6a19137277ce414001426", + "versions.yml:md5,c22d7e7ddc52579e52ee8ac597b0e829", + "versions.yml:md5,fc490a5d4e1a6dce983637532901f1e9" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-28T09:43:28.248043419" + } +} \ No newline at end of file diff --git a/subworkflows/local/call_cnvs/tests/nextflow.config b/subworkflows/local/call_cnvs/tests/nextflow.config new file mode 100644 index 00000000..8b89208c --- /dev/null +++ b/subworkflows/local/call_cnvs/tests/nextflow.config @@ -0,0 +1,23 @@ +process { + withName: 'MINIMAP2_ALIGN' { + ext.args = '-x map-hifi' + } + withName: 'DEEPVARIANT' { + ext.args = '--model_type PACBIO' + } + withName: 'CALL_CNVS:HIFICNV' { + ext.prefix = 'hificnv' + } + withName: 'CALL_CNVS:SVDB_MERGE' { + ext.prefix = 'merged' + ext.args2 = '--no-version' + } + withName: 'CALL_CNVS:ADD_FOUND_IN_TAG' { + ext.args = '--no-version' + ext.args2 = [ + '--output-type z', + '--write-index=tbi', + '--no-version' + ].join(' ') + } +} diff --git a/subworkflows/local/call_svs/main.nf b/subworkflows/local/call_svs/main.nf index 1ea76469..e9bfe5f3 100644 --- a/subworkflows/local/call_svs/main.nf +++ b/subworkflows/local/call_svs/main.nf @@ -78,7 +78,7 @@ workflow CALL_SVS { ch_versions = ch_versions.mix(BCFTOOLS_REHEADER.out.versions) BCFTOOLS_REHEADER.out.vcf - .map { meta, vcf -> [ [ 'id': meta.project ], vcf ] } + .map { meta, vcf -> [ [ 'id': meta.family_id ], vcf ] } .groupTuple() .set { ch_svdb_merge_in } @@ -94,10 +94,10 @@ workflow CALL_SVS { ch_versions = ch_versions.mix(TABIX_SVDB_MERGE.out.versions) emit: - ch_sv_calls_vcf = BCFTOOLS_REHEADER.out.vcf // channel: [ val(meta), path(vcf) ] - ch_sv_calls_tbi = BCFTOOLS_REHEADER.out.index // channel: [ val(meta), path(tbi) ] - ch_multisample_vcf = SVDB_MERGE.out.vcf // channel: [ val(meta), path(vcf) ] - ch_multisample_tbi = TABIX_SVDB_MERGE.out.tbi // channel: [ val(meta), path(tbi) ] + sample_vcf = BCFTOOLS_REHEADER.out.vcf // channel: [ val(meta), path(vcf) ] + sample_tbi = BCFTOOLS_REHEADER.out.index // channel: [ val(meta), path(tbi) ] + family_vcf = SVDB_MERGE.out.vcf // channel: [ val(meta), path(vcf) ] + family_tbi = TABIX_SVDB_MERGE.out.tbi // channel: [ val(meta), path(tbi) ] versions = ch_versions // channel: [ path(versions.yml) ] } diff --git a/subworkflows/local/call_svs/tests/main.nf.test b/subworkflows/local/call_svs/tests/main.nf.test index 3e512512..3859de5b 100644 --- a/subworkflows/local/call_svs/tests/main.nf.test +++ b/subworkflows/local/call_svs/tests/main.nf.test @@ -37,7 +37,7 @@ nextflow_workflow { workflow { """ input[0] = Channel.of([ - [ id:'test', single_end:false, project: 'project' ], // meta map + [ id:'test', single_end:false, family_id: 'family' ], // meta map file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam', checkIfExists: true), file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) ]) @@ -53,11 +53,11 @@ nextflow_workflow { then { assertAll( { assert workflow.success }, - { assert workflow.out.ch_sv_calls_tbi.get(0).get(1).endsWith("tbi") }, - { assert workflow.out.ch_multisample_tbi.get(0).get(1).endsWith("tbi") }, + { assert workflow.out.sample_tbi.get(0).get(1).endsWith("tbi") }, + { assert workflow.out.family_tbi.get(0).get(1).endsWith("tbi") }, { assert snapshot( - path(workflow.out.ch_sv_calls_vcf.get(0).get(1)).vcf.variantsMD5, - path(workflow.out.ch_multisample_vcf.get(0).get(1)).vcf.variantsMD5, + path(workflow.out.sample_vcf.get(0).get(1)).vcf.variantsMD5, + path(workflow.out.family_vcf.get(0).get(1)).vcf.variantsMD5, workflow.out.versions, ).match() } ) @@ -71,7 +71,7 @@ nextflow_workflow { workflow { """ input[0] = Channel.of([ - [ id:'test', single_end:false, project: 'project' ], // meta map + [ id:'test', single_end:false, family_id: 'family' ], // meta map file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam', checkIfExists: true), file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) ]) @@ -90,13 +90,13 @@ nextflow_workflow { then { assertAll( { assert workflow.success }, - { assert workflow.out.ch_sv_calls_tbi.get(0).get(1).endsWith("tbi") }, - { assert workflow.out.ch_multisample_tbi.get(0).get(1).endsWith("tbi") }, + { assert workflow.out.sample_tbi.get(0).get(1).endsWith("tbi") }, + { assert workflow.out.family_tbi.get(0).get(1).endsWith("tbi") }, { assert snapshot( - path(workflow.out.ch_sv_calls_vcf.get(0).get(1)).vcf.summary, - path(workflow.out.ch_sv_calls_vcf.get(0).get(1)).vcf.variantsMD5, - path(workflow.out.ch_multisample_vcf.get(0).get(1)).vcf.summary, - path(workflow.out.ch_multisample_vcf.get(0).get(1)).vcf.variantsMD5, + path(workflow.out.sample_vcf.get(0).get(1)).vcf.summary, + path(workflow.out.sample_vcf.get(0).get(1)).vcf.variantsMD5, + path(workflow.out.family_vcf.get(0).get(1)).vcf.summary, + path(workflow.out.family_vcf.get(0).get(1)).vcf.variantsMD5, workflow.out.versions, ).match() } ) @@ -111,12 +111,12 @@ nextflow_workflow { """ input[0] = Channel.of( [ - [ id:'test_1', single_end:false, project: 'project' ], // meta map + [ id:'test_1', single_end:false, family_id: 'family' ], // meta map file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam', checkIfExists: true), file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) ], [ - [ id:'test_2', single_end:false, project: 'project' ], // meta map + [ id:'test_2', single_end:false, family_id: 'family' ], // meta map file(params.pipelines_testdata_base_path + 'testdata/HG002_ONT.bam', checkIfExists: true), file(params.pipelines_testdata_base_path + 'testdata/HG002_ONT.bam.bai', checkIfExists: true) ] @@ -133,17 +133,17 @@ nextflow_workflow { then { assertAll( { assert workflow.success }, - { assert workflow.out.ch_sv_calls_tbi.get(0).get(1).endsWith("tbi") }, - { assert workflow.out.ch_sv_calls_tbi.get(1).get(1).endsWith("tbi") }, - { assert workflow.out.ch_multisample_tbi.get(0).get(1).endsWith("tbi") }, + { assert workflow.out.sample_tbi.get(0).get(1).endsWith("tbi") }, + { assert workflow.out.sample_tbi.get(1).get(1).endsWith("tbi") }, + { assert workflow.out.family_tbi.get(0).get(1).endsWith("tbi") }, { assert snapshot( - path(workflow.out.ch_sv_calls_vcf.get(0).get(1)).vcf.summary, - path(workflow.out.ch_sv_calls_vcf.get(0).get(1)).vcf.variantsMD5, - path(workflow.out.ch_sv_calls_vcf.get(1).get(1)).vcf.summary, - path(workflow.out.ch_sv_calls_vcf.get(1).get(1)).vcf.variantsMD5, - path(workflow.out.ch_multisample_vcf.get(0).get(1)).vcf.summary, - path(workflow.out.ch_multisample_vcf.get(0).get(1)).vcf.variantsMD5, - path(workflow.out.ch_multisample_vcf.get(0).get(1)).linesGzip, + path(workflow.out.sample_vcf.get(0).get(1)).vcf.summary, + path(workflow.out.sample_vcf.get(0).get(1)).vcf.variantsMD5, + path(workflow.out.sample_vcf.get(1).get(1)).vcf.summary, + path(workflow.out.sample_vcf.get(1).get(1)).vcf.variantsMD5, + path(workflow.out.family_vcf.get(0).get(1)).vcf.summary, + path(workflow.out.family_vcf.get(0).get(1)).vcf.variantsMD5, + path(workflow.out.family_vcf.get(0).get(1)).linesGzip, workflow.out.versions, ).match() } ) @@ -157,7 +157,7 @@ nextflow_workflow { workflow { """ input[0] = Channel.of([ - [ id:'test', single_end:false, project: 'project' ], // meta map + [ id:'test', single_end:false, family_id: 'family' ], // meta map file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam', checkIfExists: true), file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) ]) @@ -175,11 +175,11 @@ nextflow_workflow { then { assertAll( { assert workflow.success }, - { assert workflow.out.ch_sv_calls_tbi.get(0).get(1).endsWith("tbi") }, - { assert workflow.out.ch_multisample_tbi.get(0).get(1).endsWith("tbi") }, + { assert workflow.out.sample_tbi.get(0).get(1).endsWith("tbi") }, + { assert workflow.out.family_tbi.get(0).get(1).endsWith("tbi") }, { assert snapshot( - path(workflow.out.ch_sv_calls_vcf.get(0).get(1)).vcf.variantsMD5, - path(workflow.out.ch_multisample_vcf.get(0).get(1)).vcf.variantsMD5, + path(workflow.out.sample_vcf.get(0).get(1)).vcf.variantsMD5, + path(workflow.out.family_vcf.get(0).get(1)).vcf.variantsMD5, workflow.out.versions, ).match() } ) @@ -193,7 +193,7 @@ nextflow_workflow { workflow { """ input[0] = Channel.of([ - [ id:'test', single_end:false, project: 'project' ], // meta map + [ id:'test', single_end:false, family_id: 'family' ], // meta map file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam', checkIfExists: true), file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) ]) @@ -209,13 +209,13 @@ nextflow_workflow { then { assertAll( { assert workflow.success }, - { assert workflow.out.ch_sv_calls_tbi.get(0).get(1).endsWith("tbi") }, - { assert workflow.out.ch_multisample_tbi.get(0).get(1).endsWith("tbi") }, + { assert workflow.out.sample_tbi.get(0).get(1).endsWith("tbi") }, + { assert workflow.out.family_tbi.get(0).get(1).endsWith("tbi") }, { assert snapshot( - path(workflow.out.ch_sv_calls_vcf.get(0).get(1)).vcf.summary, - path(workflow.out.ch_sv_calls_vcf.get(0).get(1)).vcf.variantsMD5, - path(workflow.out.ch_multisample_vcf.get(0).get(1)).vcf.summary, - path(workflow.out.ch_multisample_vcf.get(0).get(1)).vcf.variantsMD5, + path(workflow.out.sample_vcf.get(0).get(1)).vcf.summary, + path(workflow.out.sample_vcf.get(0).get(1)).vcf.variantsMD5, + path(workflow.out.family_vcf.get(0).get(1)).vcf.summary, + path(workflow.out.family_vcf.get(0).get(1)).vcf.variantsMD5, workflow.out.versions, ).match() } ) @@ -229,7 +229,7 @@ nextflow_workflow { workflow { """ input[0] = Channel.of([ - [ id:'test', single_end:false, project: 'project' ], // meta map + [ id:'test', single_end:false, family_id: 'family' ], // meta map file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam', checkIfExists: true), file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) ]) @@ -248,13 +248,13 @@ nextflow_workflow { then { assertAll( { assert workflow.success }, - { assert workflow.out.ch_sv_calls_tbi.get(0).get(1).endsWith("tbi") }, - { assert workflow.out.ch_multisample_tbi.get(0).get(1).endsWith("tbi") }, + { assert workflow.out.sample_tbi.get(0).get(1).endsWith("tbi") }, + { assert workflow.out.family_tbi.get(0).get(1).endsWith("tbi") }, { assert snapshot( - path(workflow.out.ch_sv_calls_vcf.get(0).get(1)).vcf.summary, - path(workflow.out.ch_sv_calls_vcf.get(0).get(1)).vcf.variantsMD5, - path(workflow.out.ch_multisample_vcf.get(0).get(1)).vcf.summary, - path(workflow.out.ch_multisample_vcf.get(0).get(1)).vcf.variantsMD5, + path(workflow.out.sample_vcf.get(0).get(1)).vcf.summary, + path(workflow.out.sample_vcf.get(0).get(1)).vcf.variantsMD5, + path(workflow.out.family_vcf.get(0).get(1)).vcf.summary, + path(workflow.out.family_vcf.get(0).get(1)).vcf.variantsMD5, workflow.out.versions, ).match() } ) @@ -268,7 +268,7 @@ nextflow_workflow { workflow { """ input[0] = Channel.of([ - [ id:'test', single_end:false, project: 'project' ], // meta map + [ id:'test', single_end:false, family_id: 'family' ], // meta map file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam', checkIfExists: true), file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) ]) @@ -286,13 +286,13 @@ nextflow_workflow { then { assertAll( { assert workflow.success }, - { assert workflow.out.ch_sv_calls_tbi.get(0).get(1).endsWith("tbi") }, - { assert workflow.out.ch_multisample_tbi.get(0).get(1).endsWith("tbi") }, + { assert workflow.out.sample_tbi.get(0).get(1).endsWith("tbi") }, + { assert workflow.out.family_tbi.get(0).get(1).endsWith("tbi") }, { assert snapshot( - path(workflow.out.ch_sv_calls_vcf.get(0).get(1)).vcf.summary, - path(workflow.out.ch_sv_calls_vcf.get(0).get(1)).vcf.variantsMD5, - path(workflow.out.ch_multisample_vcf.get(0).get(1)).vcf.summary, - path(workflow.out.ch_multisample_vcf.get(0).get(1)).vcf.variantsMD5, + path(workflow.out.sample_vcf.get(0).get(1)).vcf.summary, + path(workflow.out.sample_vcf.get(0).get(1)).vcf.variantsMD5, + path(workflow.out.family_vcf.get(0).get(1)).vcf.summary, + path(workflow.out.family_vcf.get(0).get(1)).vcf.variantsMD5, workflow.out.versions, ).match() } ) @@ -307,12 +307,12 @@ nextflow_workflow { """ input[0] = Channel.of( [ - [ id:'test_1', single_end:false, project: 'project' ], // meta map + [ id:'test_1', single_end:false, family_id: 'family' ], // meta map file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam', checkIfExists: true), file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) ], [ - [ id:'test_2', single_end:false, project: 'project' ], // meta map + [ id:'test_2', single_end:false, family_id: 'family' ], // meta map file(params.pipelines_testdata_base_path + 'testdata/HG002_ONT.bam', checkIfExists: true), file(params.pipelines_testdata_base_path + 'testdata/HG002_ONT.bam.bai', checkIfExists: true) ] @@ -329,16 +329,16 @@ nextflow_workflow { then { assertAll( { assert workflow.success }, - { assert workflow.out.ch_sv_calls_tbi.get(0).get(1).endsWith("tbi") }, - { assert workflow.out.ch_sv_calls_tbi.get(1).get(1).endsWith("tbi") }, - { assert workflow.out.ch_multisample_tbi.get(0).get(1).endsWith("tbi") }, + { assert workflow.out.sample_tbi.get(0).get(1).endsWith("tbi") }, + { assert workflow.out.sample_tbi.get(1).get(1).endsWith("tbi") }, + { assert workflow.out.family_tbi.get(0).get(1).endsWith("tbi") }, { assert snapshot( - path(workflow.out.ch_sv_calls_vcf.get(0).get(1)).vcf.summary, - path(workflow.out.ch_sv_calls_vcf.get(0).get(1)).vcf.variantsMD5, - path(workflow.out.ch_sv_calls_vcf.get(1).get(1)).vcf.summary, - path(workflow.out.ch_sv_calls_vcf.get(1).get(1)).vcf.variantsMD5, - path(workflow.out.ch_multisample_vcf.get(0).get(1)).vcf.summary, - path(workflow.out.ch_multisample_vcf.get(0).get(1)).vcf.variantsMD5, + path(workflow.out.sample_vcf.get(0).get(1)).vcf.summary, + path(workflow.out.sample_vcf.get(0).get(1)).vcf.variantsMD5, + path(workflow.out.sample_vcf.get(1).get(1)).vcf.summary, + path(workflow.out.sample_vcf.get(1).get(1)).vcf.variantsMD5, + path(workflow.out.family_vcf.get(0).get(1)).vcf.summary, + path(workflow.out.family_vcf.get(0).get(1)).vcf.variantsMD5, workflow.out.versions, ).match() } ) @@ -354,7 +354,7 @@ nextflow_workflow { workflow { """ input[0] = Channel.of([ - [ id:'test', single_end:false, project: 'project' ], // meta map + [ id:'test', single_end:false, family_id: 'family' ], // meta map file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam', checkIfExists: true), file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) ]) @@ -384,7 +384,7 @@ nextflow_workflow { workflow { """ input[0] = Channel.of([ - [ id:'test', single_end:false, project: 'project' ], // meta map + [ id:'test', single_end:false, family_id: 'family' ], // meta map file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam', checkIfExists: true), file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) ]) @@ -417,7 +417,7 @@ nextflow_workflow { workflow { """ input[0] = Channel.of([ - [ id:'test', single_end:false, project: 'project' ], // meta map + [ id:'test', single_end:false, family_id: 'family' ], // meta map file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam', checkIfExists: true), file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) ]) @@ -450,12 +450,12 @@ nextflow_workflow { """ input[0] = Channel.of( [ - [ id:'test_1', single_end:false, project: 'project' ], // meta map + [ id:'test_1', single_end:false, family_id: 'family' ], // meta map file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam', checkIfExists: true), file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) ], [ - [ id:'test_2', single_end:false, project: 'project' ], // meta map + [ id:'test_2', single_end:false, family_id: 'family' ], // meta map file(params.pipelines_testdata_base_path + 'testdata/HG002_ONT.bam', checkIfExists: true), file(params.pipelines_testdata_base_path + 'testdata/HG002_ONT.bam.bai', checkIfExists: true) ] @@ -473,10 +473,10 @@ nextflow_workflow { assertAll( { assert workflow.success }, { assert snapshot( - workflow.out.ch_sv_calls_vcf.collect { file(it[1]).name }.sort().toString(), // don't know the order of the output VCFs - workflow.out.ch_sv_calls_tbi, - workflow.out.ch_multisample_vcf, - workflow.out.ch_multisample_tbi, + workflow.out.sample_vcf.collect { file(it[1]).name }.sort().toString(), // don't know the order of the output VCFs + workflow.out.sample_tbi, + workflow.out.family_vcf, + workflow.out.family_tbi, workflow.out.versions, ).match() } ) @@ -492,7 +492,7 @@ nextflow_workflow { workflow { """ input[0] = Channel.of([ - [ id:'test', single_end:false, project: 'project' ], // meta map + [ id:'test', single_end:false, family_id: 'family' ], // meta map file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam', checkIfExists: true), file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) ]) @@ -522,7 +522,7 @@ nextflow_workflow { workflow { """ input[0] = Channel.of([ - [ id:'test', single_end:false, project: 'project' ], // meta map + [ id:'test', single_end:false, family_id: 'family' ], // meta map file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam', checkIfExists: true), file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) ]) @@ -554,7 +554,7 @@ nextflow_workflow { workflow { """ input[0] = Channel.of([ - [ id:'test', single_end:false, project: 'project' ], // meta map + [ id:'test', single_end:false, family_id: 'family' ], // meta map file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam', checkIfExists: true), file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) ]) @@ -588,12 +588,12 @@ nextflow_workflow { """ input[0] = Channel.of( [ - [ id:'test_1', single_end:false, project: 'project' ], // meta map + [ id:'test_1', single_end:false, family_id: 'family' ], // meta map file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam', checkIfExists: true), file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) ], [ - [ id:'test_2', single_end:false, project: 'project' ], // meta map + [ id:'test_2', single_end:false, family_id: 'family' ], // meta map file(params.pipelines_testdata_base_path + 'testdata/HG002_ONT.bam', checkIfExists: true), file(params.pipelines_testdata_base_path + 'testdata/HG002_ONT.bam.bai', checkIfExists: true) ] @@ -611,10 +611,10 @@ nextflow_workflow { assertAll( { assert workflow.success }, { assert snapshot( - workflow.out.ch_sv_calls_vcf.collect { file(it[1]).name }.sort().toString(), // don't know the order of the output VCFs - workflow.out.ch_sv_calls_tbi, - workflow.out.ch_multisample_vcf, - workflow.out.ch_multisample_tbi, + workflow.out.sample_vcf.collect { file(it[1]).name }.sort().toString(), // don't know the order of the output VCFs + workflow.out.sample_tbi, + workflow.out.family_vcf, + workflow.out.family_tbi, workflow.out.versions, ).match() } ) diff --git a/subworkflows/local/call_svs/tests/main.nf.test.snap b/subworkflows/local/call_svs/tests/main.nf.test.snap index 1b63321b..a7483a53 100644 --- a/subworkflows/local/call_svs/tests/main.nf.test.snap +++ b/subworkflows/local/call_svs/tests/main.nf.test.snap @@ -7,7 +7,7 @@ { "id": "test", "single_end": false, - "project": "project" + "family_id": "family" }, "test_reheader.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] @@ -17,7 +17,7 @@ { "id": "test", "single_end": false, - "project": "project" + "family_id": "family" }, "test_reheader.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -25,72 +25,72 @@ "2": [ [ { - "id": "project" + "id": "family" }, - "project_svs.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + "family_svs.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "3": [ [ { - "id": "project" + "id": "family" }, - "project_svs.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + "family_svs.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "4": [ - "versions.yml:md5,012a7d52b39310584f34d8819a042866", "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", - "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff" + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,d6665112b721f1651ae340c644f9a27c" ], - "ch_multisample_tbi": [ + "family_tbi": [ [ { - "id": "project" + "id": "family" }, - "project_svs.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + "family_svs.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "ch_multisample_vcf": [ + "family_vcf": [ [ { - "id": "project" + "id": "family" }, - "project_svs.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + "family_svs.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], - "ch_sv_calls_tbi": [ + "sample_tbi": [ [ { "id": "test", "single_end": false, - "project": "project" + "family_id": "family" }, "test_reheader.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "ch_sv_calls_vcf": [ + "sample_vcf": [ [ { "id": "test", "single_end": false, - "project": "project" + "family_id": "family" }, "test_reheader.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "versions": [ - "versions.yml:md5,012a7d52b39310584f34d8819a042866", "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", - "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff" + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,d6665112b721f1651ae340c644f9a27c" ] } ], @@ -98,7 +98,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-25T09:37:35.431766327" + "timestamp": "2024-10-28T09:48:16.872760798" }, "2 samples - [bam, bai], fasta, fai, [], [] - sniffles -stub": { "content": [ @@ -108,7 +108,7 @@ { "id": "test_1", "single_end": false, - "project": "project" + "family_id": "family" }, "test_1_reheader.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ], @@ -116,7 +116,7 @@ { "id": "test_2", "single_end": false, - "project": "project" + "family_id": "family" }, "test_2_reheader.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -124,21 +124,20 @@ [ [ { - "id": "project" + "id": "family" }, - "project_svs.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + "family_svs.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], [ [ { - "id": "project" + "id": "family" }, - "project_svs.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + "family_svs.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], [ - "versions.yml:md5,012a7d52b39310584f34d8819a042866", "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", @@ -149,14 +148,15 @@ "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", - "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff" + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,d6665112b721f1651ae340c644f9a27c" ] ], "meta": { "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-25T09:38:06.193254553" + "timestamp": "2024-10-28T09:48:47.623104856" }, "1 sample - [bam, bai], fasta, fai, [], [] - sniffles -stub": { "content": [ @@ -166,7 +166,7 @@ { "id": "test", "single_end": false, - "project": "project" + "family_id": "family" }, "test_reheader.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] @@ -176,7 +176,7 @@ { "id": "test", "single_end": false, - "project": "project" + "family_id": "family" }, "test_reheader.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -184,72 +184,72 @@ "2": [ [ { - "id": "project" + "id": "family" }, - "project_svs.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + "family_svs.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "3": [ [ { - "id": "project" + "id": "family" }, - "project_svs.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + "family_svs.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "4": [ - "versions.yml:md5,012a7d52b39310584f34d8819a042866", "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", - "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff" + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,d6665112b721f1651ae340c644f9a27c" ], - "ch_multisample_tbi": [ + "family_tbi": [ [ { - "id": "project" + "id": "family" }, - "project_svs.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + "family_svs.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "ch_multisample_vcf": [ + "family_vcf": [ [ { - "id": "project" + "id": "family" }, - "project_svs.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + "family_svs.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], - "ch_sv_calls_tbi": [ + "sample_tbi": [ [ { "id": "test", "single_end": false, - "project": "project" + "family_id": "family" }, "test_reheader.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "ch_sv_calls_vcf": [ + "sample_vcf": [ [ { "id": "test", "single_end": false, - "project": "project" + "family_id": "family" }, "test_reheader.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "versions": [ - "versions.yml:md5,012a7d52b39310584f34d8819a042866", "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", - "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff" + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,d6665112b721f1651ae340c644f9a27c" ] } ], @@ -257,7 +257,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-25T09:37:20.105508841" + "timestamp": "2024-10-28T09:48:01.475015636" }, "1 sample - [bam, bai], fasta, fai, [], [] - severus": { "content": [ @@ -266,12 +266,12 @@ "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=54, phased=false, phasedAutodetect=false]", "9788302ce089a9d1896f02355474b721", [ - "versions.yml:md5,012a7d52b39310584f34d8819a042866", "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,d6665112b721f1651ae340c644f9a27c", "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f" ] ], @@ -279,7 +279,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-25T09:35:35.527500054" + "timestamp": "2024-10-28T09:46:16.434467252" }, "1 sample - [bam, bai], fasta, fai, [], bed - severus -stub": { "content": [ @@ -289,7 +289,7 @@ { "id": "test", "single_end": false, - "project": "project" + "family_id": "family" }, "test_reheader.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] @@ -299,7 +299,7 @@ { "id": "test", "single_end": false, - "project": "project" + "family_id": "family" }, "test_reheader.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -307,71 +307,71 @@ "2": [ [ { - "id": "project" + "id": "family" }, - "project_svs.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + "family_svs.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "3": [ [ { - "id": "project" + "id": "family" }, - "project_svs.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + "family_svs.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "4": [ - "versions.yml:md5,012a7d52b39310584f34d8819a042866", "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,d6665112b721f1651ae340c644f9a27c", "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f" ], - "ch_multisample_tbi": [ + "family_tbi": [ [ { - "id": "project" + "id": "family" }, - "project_svs.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + "family_svs.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "ch_multisample_vcf": [ + "family_vcf": [ [ { - "id": "project" + "id": "family" }, - "project_svs.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + "family_svs.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], - "ch_sv_calls_tbi": [ + "sample_tbi": [ [ { "id": "test", "single_end": false, - "project": "project" + "family_id": "family" }, "test_reheader.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "ch_sv_calls_vcf": [ + "sample_vcf": [ [ { "id": "test", "single_end": false, - "project": "project" + "family_id": "family" }, "test_reheader.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "versions": [ - "versions.yml:md5,012a7d52b39310584f34d8819a042866", "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,d6665112b721f1651ae340c644f9a27c", "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f" ] } @@ -380,7 +380,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-25T09:38:35.435770849" + "timestamp": "2024-10-28T09:49:16.762933068" }, "1 sample - [bam, bai], fasta, fai, [], bed - severus": { "content": [ @@ -389,12 +389,12 @@ "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=54, phased=false, phasedAutodetect=false]", "9788302ce089a9d1896f02355474b721", [ - "versions.yml:md5,012a7d52b39310584f34d8819a042866", "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,d6665112b721f1651ae340c644f9a27c", "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f" ] ], @@ -402,7 +402,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-25T09:36:12.743102423" + "timestamp": "2024-10-28T09:46:53.615376875" }, "2 samples - [bam, bai], fasta, fai, [], [] - sniffles": { "content": [ @@ -414,8 +414,9 @@ "7d122c197ef319c573592e5f9356a4c0", [ "##fileformat=VCFv4.1", + "##FILTER=", "##source=MergeVCF", - "##SVDB_version=2.8.1 cmd=\"/usr/local/bin/svdb --merge --bnd_distance 1000 --overlap .5 --vcf test_1_reheader.vcf.gz test_2_reheader.vcf.gz\"", + "##SVDB_version=2.8.2 cmd=\"/usr/local/bin/svdb --merge --bnd_distance 1000 --overlap .5 --vcf test_1_reheader.vcf.gz test_2_reheader.vcf.gz\"", "##ALT=", "##ALT=", "##ALT=", @@ -454,7 +455,6 @@ "##INFO=", "##INFO=", "##INFO=", - "##INFO=", "##contig=", "##contig=", "##contig=", @@ -654,7 +654,6 @@ "##FILTER=", "##FILTER=", "##FILTER=", - "##FILTER=", "##FILTER=", "##FILTER=", "##FILTER=", @@ -804,7 +803,6 @@ "chrX\t14631916\tSniffles2.INS.4S16\tN\tATATGTATATGTATATATATAGACATACATATGTATATGTCTATATAGACATACATATACGTATGTCTATATAGACATACATATACGTATGTCTATATAGACATACATATATGTATGTCTATATACAAGACATATATATCTATATATACACATATACGTATATATAGACATATACGTATATGTGTATATATAGACATATACGTATATGTGTATATATAGACATATACGTATATGTGTATATATAGACATATATATGTATATGTGTAT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=267;END=14631916;SUPPORT=3;COVERAGE=4,4,4,2,1;STRAND=+-;AF=0.75;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;set=test_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.INS.4S16|chrX;test_2_reheader_POS=Sniffles2.INS.4S16|14631916;test_2_reheader_QUAL=Sniffles2.INS.4S16|60;test_2_reheader_FILTERS=Sniffles2.INS.4S16|PASS;test_2_reheader_SAMPLE=Sniffles2.INS.4S16|test_2|GT:0/1|GQ:1|DR:1|DV:3;test_2_reheader_INFO=Sniffles2.INS.4S16|PRECISE|SVTYPE:INS|SVLEN:267|END:14631916|SUPPORT:3|COVERAGE:4:4:4:2:1|STRAND:+-|AF:0.75|STDEV_LEN:0|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:1:1:3" ], [ - "versions.yml:md5,012a7d52b39310584f34d8819a042866", "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", @@ -815,14 +813,15 @@ "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", - "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff" + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,d6665112b721f1651ae340c644f9a27c" ] ], "meta": { "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-25T09:35:00.89925022" + "timestamp": "2024-10-29T08:25:17.479785577" }, "1 sample - [bam, bai], fasta, fai, [], bed - sniffles -stub": { "content": [ @@ -832,7 +831,7 @@ { "id": "test", "single_end": false, - "project": "project" + "family_id": "family" }, "test_reheader.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] @@ -842,7 +841,7 @@ { "id": "test", "single_end": false, - "project": "project" + "family_id": "family" }, "test_reheader.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -850,72 +849,72 @@ "2": [ [ { - "id": "project" + "id": "family" }, - "project_svs.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + "family_svs.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "3": [ [ { - "id": "project" + "id": "family" }, - "project_svs.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + "family_svs.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "4": [ - "versions.yml:md5,012a7d52b39310584f34d8819a042866", "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", - "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff" + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,d6665112b721f1651ae340c644f9a27c" ], - "ch_multisample_tbi": [ + "family_tbi": [ [ { - "id": "project" + "id": "family" }, - "project_svs.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + "family_svs.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "ch_multisample_vcf": [ + "family_vcf": [ [ { - "id": "project" + "id": "family" }, - "project_svs.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + "family_svs.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], - "ch_sv_calls_tbi": [ + "sample_tbi": [ [ { "id": "test", "single_end": false, - "project": "project" + "family_id": "family" }, "test_reheader.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "ch_sv_calls_vcf": [ + "sample_vcf": [ [ { "id": "test", "single_end": false, - "project": "project" + "family_id": "family" }, "test_reheader.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "versions": [ - "versions.yml:md5,012a7d52b39310584f34d8819a042866", "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", - "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff" + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,d6665112b721f1651ae340c644f9a27c" ] } ], @@ -923,7 +922,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-25T09:37:50.352129954" + "timestamp": "2024-10-28T09:48:31.835006564" }, "1 sample - [bam, bai], fasta, fai, [], [] - severus -stub": { "content": [ @@ -933,7 +932,7 @@ { "id": "test", "single_end": false, - "project": "project" + "family_id": "family" }, "test_reheader.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] @@ -943,7 +942,7 @@ { "id": "test", "single_end": false, - "project": "project" + "family_id": "family" }, "test_reheader.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -951,71 +950,71 @@ "2": [ [ { - "id": "project" + "id": "family" }, - "project_svs.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + "family_svs.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "3": [ [ { - "id": "project" + "id": "family" }, - "project_svs.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + "family_svs.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "4": [ - "versions.yml:md5,012a7d52b39310584f34d8819a042866", "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,d6665112b721f1651ae340c644f9a27c", "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f" ], - "ch_multisample_tbi": [ + "family_tbi": [ [ { - "id": "project" + "id": "family" }, - "project_svs.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + "family_svs.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "ch_multisample_vcf": [ + "family_vcf": [ [ { - "id": "project" + "id": "family" }, - "project_svs.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + "family_svs.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], - "ch_sv_calls_tbi": [ + "sample_tbi": [ [ { "id": "test", "single_end": false, - "project": "project" + "family_id": "family" }, "test_reheader.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "ch_sv_calls_vcf": [ + "sample_vcf": [ [ { "id": "test", "single_end": false, - "project": "project" + "family_id": "family" }, "test_reheader.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "versions": [ - "versions.yml:md5,012a7d52b39310584f34d8819a042866", "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,d6665112b721f1651ae340c644f9a27c", "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f" ] } @@ -1024,27 +1023,27 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-25T09:38:20.761201132" + "timestamp": "2024-10-28T09:49:02.270018205" }, "1 sample - [bam, bai], fasta, fai, [], [] - sniffles": { "content": [ "7cd0730159250c8945e2007da414651e", "46a46d863d6d0d0ac83778dfbf4e969f", [ - "versions.yml:md5,012a7d52b39310584f34d8819a042866", "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", - "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff" + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,d6665112b721f1651ae340c644f9a27c" ] ], "meta": { "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-25T09:34:19.713017708" + "timestamp": "2024-10-28T09:45:02.833173008" }, "1 sample - [bam, bai], fasta, fai, bed, [] - severus": { "content": [ @@ -1053,12 +1052,12 @@ "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=53, phased=false, phasedAutodetect=false]", "c37e6c17e6d1ccf07c23476f13c3e5ef", [ - "versions.yml:md5,012a7d52b39310584f34d8819a042866", "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,d6665112b721f1651ae340c644f9a27c", "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f" ] ], @@ -1066,27 +1065,27 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-25T09:35:54.683949942" + "timestamp": "2024-10-28T09:46:35.586319077" }, "1 sample - [bam, bai], fasta, fai, [], bed - sniffles": { "content": [ "7cd0730159250c8945e2007da414651e", "46a46d863d6d0d0ac83778dfbf4e969f", [ - "versions.yml:md5,012a7d52b39310584f34d8819a042866", "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", - "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff" + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,d6665112b721f1651ae340c644f9a27c" ] ], "meta": { "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-25T09:35:17.140931933" + "timestamp": "2024-10-28T09:45:58.327508015" }, "2 samples - [bam, bai], fasta, fai, [], [] - severus -stub": { "content": [ @@ -1096,7 +1095,7 @@ { "id": "test_1", "single_end": false, - "project": "project" + "family_id": "family" }, "test_1_reheader.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ], @@ -1104,7 +1103,7 @@ { "id": "test_2", "single_end": false, - "project": "project" + "family_id": "family" }, "test_2_reheader.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -1112,21 +1111,20 @@ [ [ { - "id": "project" + "id": "family" }, - "project_svs.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + "family_svs.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], [ [ { - "id": "project" + "id": "family" }, - "project_svs.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + "family_svs.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], [ - "versions.yml:md5,012a7d52b39310584f34d8819a042866", "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", @@ -1136,6 +1134,7 @@ "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,d6665112b721f1651ae340c644f9a27c", "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f", "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f" ] @@ -1144,7 +1143,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-25T09:39:05.336650014" + "timestamp": "2024-10-28T09:49:46.640106268" }, "1 sample - [bam, bai], fasta, fai, bed, [] - severus -stub": { "content": [ @@ -1154,7 +1153,7 @@ { "id": "test", "single_end": false, - "project": "project" + "family_id": "family" }, "test_reheader.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] @@ -1164,7 +1163,7 @@ { "id": "test", "single_end": false, - "project": "project" + "family_id": "family" }, "test_reheader.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -1172,71 +1171,71 @@ "2": [ [ { - "id": "project" + "id": "family" }, - "project_svs.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + "family_svs.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "3": [ [ { - "id": "project" + "id": "family" }, - "project_svs.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + "family_svs.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "4": [ - "versions.yml:md5,012a7d52b39310584f34d8819a042866", "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,d6665112b721f1651ae340c644f9a27c", "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f" ], - "ch_multisample_tbi": [ + "family_tbi": [ [ { - "id": "project" + "id": "family" }, - "project_svs.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + "family_svs.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "ch_multisample_vcf": [ + "family_vcf": [ [ { - "id": "project" + "id": "family" }, - "project_svs.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + "family_svs.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], - "ch_sv_calls_tbi": [ + "sample_tbi": [ [ { "id": "test", "single_end": false, - "project": "project" + "family_id": "family" }, "test_reheader.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "ch_sv_calls_vcf": [ + "sample_vcf": [ [ { "id": "test", "single_end": false, - "project": "project" + "family_id": "family" }, "test_reheader.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "versions": [ - "versions.yml:md5,012a7d52b39310584f34d8819a042866", "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,d6665112b721f1651ae340c644f9a27c", "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f" ] } @@ -1245,7 +1244,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-25T09:38:50.087535371" + "timestamp": "2024-10-28T09:49:31.495665136" }, "2 samples - [bam, bai], fasta, fai, [], [] - severus": { "content": [ @@ -1256,7 +1255,6 @@ "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=2, variantCount=80, phased=false, phasedAutodetect=false]", "bb2aa63da770c7f58eb5efa1a36101b8", [ - "versions.yml:md5,012a7d52b39310584f34d8819a042866", "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", @@ -1266,6 +1264,7 @@ "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,d6665112b721f1651ae340c644f9a27c", "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f", "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f" ] @@ -1274,7 +1273,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-25T09:37:05.257393263" + "timestamp": "2024-10-28T09:47:46.540905608" }, "1 sample - [bam, bai], fasta, fai, bed, [] - sniffles": { "content": [ @@ -1283,19 +1282,19 @@ "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=83, phased=false, phasedAutodetect=false]", "e1908dac54d273f92eb06162a574a217", [ - "versions.yml:md5,012a7d52b39310584f34d8819a042866", "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", - "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff" + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,d6665112b721f1651ae340c644f9a27c" ] ], "meta": { "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-25T09:34:38.657948226" + "timestamp": "2024-10-28T09:45:20.394200452" } } \ No newline at end of file diff --git a/subworkflows/local/call_svs/tests/nextflow.config b/subworkflows/local/call_svs/tests/nextflow.config index 9748c4ef..6065d7ee 100644 --- a/subworkflows/local/call_svs/tests/nextflow.config +++ b/subworkflows/local/call_svs/tests/nextflow.config @@ -9,12 +9,13 @@ process { ].join(' ') } - withName: 'SVDB_MERGE' { + withName: 'CALL_SVS:SVDB_MERGE' { ext.prefix = { "${meta.id}_svs" } ext.args = [ '--bnd_distance 1000', '--overlap .5' ].join(' ') + ext.args2 = '--no-version' } withName: 'BCFTOOLS_QUERY' { diff --git a/subworkflows/local/cnv.nf b/subworkflows/local/cnv.nf deleted file mode 100644 index 4aad2c72..00000000 --- a/subworkflows/local/cnv.nf +++ /dev/null @@ -1,57 +0,0 @@ -include { ADD_FOUND_IN_TAG } from '../../modules/local/add_found_in_tag' -include { HIFICNV } from '../../modules/local/pacbio/hificnv' - -workflow CNV { - - take: - ch_bam_bai_vcf // channel: [ val(meta), [[ bam ], [bai], [vcf] ] - ch_fasta - ch_expected_xy_bed - ch_expected_xx_bed - ch_exclude_bed - - main: - ch_versions = Channel.empty() - - // Split samples if male or female - ch_bam_bai_vcf - .branch{ meta, bam, bai, vcf -> - male: meta.sex == 1 - female: meta.sex == 2 - } - .set{branched_bam} - - // Then merge male with XY-bed - branched_bam - .male - .combine(ch_expected_xy_bed) - .set {branched_bam_male} - - // And female with XX-bed - branched_bam - .female - .combine(ch_expected_xx_bed) - .set {branched_bam_female} - - // Concatenate the two channels - branched_bam_male - .concat(branched_bam_female) - .set{ ch_hificnv_in } - - // Run HiFiCNV - HIFICNV(ch_hificnv_in, ch_fasta, ch_exclude_bed) - ch_versions = ch_versions.mix(HIFICNV.out.versions) - - // Add FOUND_IN=hificnv to VCF - ADD_FOUND_IN_TAG ( - HIFICNV.out.vcf.map { meta, vcf -> [ meta, vcf, [] ] }, - "hificnv" - ) - ch_versions = ch_versions.mix(ADD_FOUND_IN_TAG.out.versions) - - emit: - vcf = ADD_FOUND_IN_TAG.out.vcf // channel: [ val(meta), path(vcf) ] - tbi = ADD_FOUND_IN_TAG.out.tbi // channel: [ val(meta), path(tbi) ] - versions = ch_versions // channel: [ versions.yml ] -} - diff --git a/tests/.nftignore b/tests/.nftignore index 3499afeb..4a4111aa 100644 --- a/tests/.nftignore +++ b/tests/.nftignore @@ -10,7 +10,7 @@ paraphase/**/*.{vcf.gz,tbi,bam,bai,json} phased_variants/**/*.{vcf.gz,tbi} pipeline_info/*.{html,json,txt,yml} qc/cramino/**/*.txt -qc/fastqc/**/*.zip +qc/fastqc/**/*.{zip,html} qc/somalier/**/*.{html,tsv} repeat_annotation/**/*.{vcf.gz,tbi} repeat_calling/**/*.{vcf.gz,tbi,bam,bai} diff --git a/tests/samplesheet.nf.test.snap b/tests/samplesheet.nf.test.snap index d99fa7c1..f788c1df 100644 --- a/tests/samplesheet.nf.test.snap +++ b/tests/samplesheet.nf.test.snap @@ -1,7 +1,7 @@ { "test profile": { "content": [ - 101, + 103, { "ADD_FOUND_IN_TAG": { "bcftools": 1.2, @@ -36,9 +36,6 @@ "BCFTOOLS_PLUGINSPLIT_SNVS": { "bcftools": 1.2 }, - "BCFTOOLS_PLUGINSPLIT_SVS": { - "bcftools": 1.2 - }, "BCFTOOLS_QUERY": { "bcftools": 1.2 }, @@ -124,7 +121,7 @@ "hifiasm": "0.20.0-r639" }, "HIFICNV": { - "hificnv": "0.1.7-70e9988" + "hificnv": "1.0.0-36e6461" }, "LONGPHASE_HAPLOTAG": { "longphase": "1.7.3" @@ -204,8 +201,12 @@ "stranger": "0.9.1" }, "SVDB_MERGE": { - "svdb": "2.8.1", - "samtools": "1.19.2" + "svdb": "2.8.2", + "bcftools": 1.21 + }, + "SVDB_MERGE_SVS_CNVS": { + "svdb": "2.8.2", + "bcftools": 1.21 }, "TABIX_BGZIPTABIX": { "tabix": 1.2 @@ -219,6 +220,9 @@ "TABIX_SVDB_MERGE": { "tabix": 1.2 }, + "TABIX_TABIX": { + "tabix": 1.2 + }, "TRGT": { "trgt": "0.7.0-4941fbb" }, @@ -262,15 +266,6 @@ "assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap2.sam.gz", "assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap2.var.gz", "assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.pair.vcf.gz", - "cnv_calling", - "cnv_calling/hificnv", - "cnv_calling/hificnv/HG002_Revio", - "cnv_calling/hificnv/HG002_Revio/HG002_Revio.copynum.bedgraph", - "cnv_calling/hificnv/HG002_Revio/HG002_Revio.depth.bw", - "cnv_calling/hificnv/HG002_Revio/HG002_Revio.log", - "cnv_calling/hificnv/HG002_Revio/HG002_Revio.maf.bw", - "cnv_calling/hificnv/HG002_Revio/HG002_Revio.vcf.gz", - "cnv_calling/hificnv/HG002_Revio/HG002_Revio.vcf.gz.tbi", "databases", "databases/echtvar", "databases/echtvar/encode", @@ -385,14 +380,21 @@ "snvs/stats/single_sample", "snvs/stats/single_sample/HG002_Revio.vcf.gz.bcftools_stats.txt", "svs", - "svs/multi_sample", - "svs/multi_sample/test", - "svs/multi_sample/test/test_svs_annotated.vcf.gz", - "svs/multi_sample/test/test_svs_annotated.vcf.gz.tbi", + "svs/family", + "svs/family/FAM", + "svs/family/FAM/FAM_svs_cnvs_merged_annotated.vcf.gz", + "svs/family/FAM/FAM_svs_cnvs_merged_annotated.vcf.gz.tbi", "svs/single_sample", "svs/single_sample/HG002_Revio", - "svs/single_sample/HG002_Revio/HG002_Revio_svs_annotated.vcf.gz", - "svs/single_sample/HG002_Revio/HG002_Revio_svs_annotated.vcf.gz.tbi" + "svs/single_sample/HG002_Revio/HG002_Revio_cnvs.vcf.gz", + "svs/single_sample/HG002_Revio/HG002_Revio_cnvs.vcf.gz.tbi", + "svs/single_sample/HG002_Revio/HG002_Revio_svs.vcf.gz", + "svs/single_sample/HG002_Revio/HG002_Revio_svs.vcf.gz.tbi", + "visualization_tracks", + "visualization_tracks/HG002_Revio", + "visualization_tracks/HG002_Revio/HG002_Revio_hificnv.copynum.bedgraph", + "visualization_tracks/HG002_Revio/HG002_Revio_hificnv.depth.bw", + "visualization_tracks/HG002_Revio/HG002_Revio_hificnv.maf.bw" ], [ "HG002_Revio.asm.bp.hap1.p_ctg.assembly_summary:md5,b949217515292b5a7735af4ad4bd5b11", @@ -414,11 +416,6 @@ "HG002_Revio.hap2.sam.gz:md5,6d512a060c74428f7758aa51a99ae8c8", "HG002_Revio.hap2.var.gz:md5,9ba9303b30730e419138e177c7d1e0c2", "HG002_Revio.pair.vcf.gz:md5,1909dffa43850282fe7e5ae2b2d273a7", - "HG002_Revio.copynum.bedgraph:md5,517bc59c1b235490c79aa8319437b033", - "HG002_Revio.depth.bw:md5,0b9cae1d0646fdd2f690d4255282ee8f", - "HG002_Revio.maf.bw:md5,bacc69449af34efe8576245ae8188719", - "HG002_Revio.vcf.gz:md5,c5f77b97b9ef6d543171792074eb1322", - "HG002_Revio.vcf.gz.tbi:md5,5e42ce281f81b7fdb5fa6e42ec4c7f8b", "test.zip:md5,2042de439a4cb1b37825169a773cf24a", "HG002_Revio_modkit_pileup_phased_1.bed.gz:md5,00b5d207be5dc8a6605698d6139afc48", "HG002_Revio_modkit_pileup_phased_1.bed.gz.tbi:md5,58e7b0a9ddaad5be350eec78b338c1e6", @@ -439,14 +436,16 @@ "test.ped:md5,bd5cec27ba7337a85cf98e787131e2b5", "HG002_Revio_cramino_aligned_phased.arrow:md5,a76219e9046db32c4b3d6d78425c5d78", "HG002_Revio_cramino_aligned.arrow:md5,a76219e9046db32c4b3d6d78425c5d78", - "HG002_Revio_fastqc.html:md5,1080b519dbbb66f45eee74e311d4922c", "HG002_Revio.mosdepth.global.dist.txt:md5,63701e857361046628f89cb84988ea1d", "HG002_Revio.mosdepth.region.dist.txt:md5,6b46396518979ff9d9771cb8a8fbbab0", "HG002_Revio.mosdepth.summary.txt:md5,311aad293c6d8a646b6dd4edc337845c", "HG002_Revio.regions.bed.gz:md5,31db0f14146b65e339b54b963c304947", "HG002_Revio.regions.bed.gz.csi:md5,026eef1c69fb4aa3a1687463fe2088ab", "HG002_Revio_stats.blocks.tsv:md5,d6e8baec71914acb176c4edc11a4ff15", - "HG002_Revio_stats.stats.tsv:md5,743288d0efd441904359474b9de892fb" + "HG002_Revio_stats.stats.tsv:md5,743288d0efd441904359474b9de892fb", + "HG002_Revio_hificnv.copynum.bedgraph:md5,517bc59c1b235490c79aa8319437b033", + "HG002_Revio_hificnv.depth.bw:md5,0d8b56722cc24331be98a2ca5effa3a1", + "HG002_Revio_hificnv.maf.bw:md5,3ad9a690c0b66a6e5ad0ef4f23d7e197" ], [ [ @@ -479,10 +478,6 @@ "HG002_Revio.pair.vcf.gz", "VcfFile [chromosomes=[chrX, chr16], sampleCount=2, variantCount=1917, phased=false, phasedAutodetect=false]" ], - [ - "HG002_Revio.vcf.gz", - "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=36, phased=false, phasedAutodetect=false]" - ], [ "HG002_Revio_hba.vcf.gz", "VcfFile [chromosomes=[chr16], sampleCount=2, variantCount=2121, phased=true, phasedAutodetect=false]" @@ -512,12 +507,16 @@ "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=106, phased=false, phasedAutodetect=false]" ], [ - "test_svs_annotated.vcf.gz", - "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=51, phased=false, phasedAutodetect=false]" + "FAM_svs_cnvs_merged_annotated.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=85, phased=false, phasedAutodetect=false]" + ], + [ + "HG002_Revio_cnvs.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=36, phased=false, phasedAutodetect=false]" ], [ - "HG002_Revio_svs_annotated.vcf.gz", - "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=49, phased=false, phasedAutodetect=false]" + "HG002_Revio_svs.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=53, phased=false, phasedAutodetect=false]" ] ], [ @@ -529,10 +528,6 @@ "HG002_Revio.pair.vcf.gz", "fa3bfacdab5449526d29d642340d6708" ], - [ - "HG002_Revio.vcf.gz", - "ab9044066c7bd041966eed43e0d00f13" - ], [ "HG002_Revio_repeat_expansion_stranger.vcf.gz", "492a5d1a0f1656e1f7fc1b97c922cab4" @@ -551,6 +546,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-25T13:00:09.69999597" + "timestamp": "2024-10-29T08:06:35.225026148" } } \ No newline at end of file diff --git a/tests/samplesheet_multisample_bam.nf.test.snap b/tests/samplesheet_multisample_bam.nf.test.snap index 21e2178a..fb78962a 100644 --- a/tests/samplesheet_multisample_bam.nf.test.snap +++ b/tests/samplesheet_multisample_bam.nf.test.snap @@ -1,7 +1,7 @@ { "samplesheet_multisample_bam | --phaser hiphase": { "content": [ - 146, + 148, { "ADD_FOUND_IN_TAG": { "bcftools": 1.2, @@ -36,9 +36,6 @@ "BCFTOOLS_PLUGINSPLIT_SNVS": { "bcftools": 1.2 }, - "BCFTOOLS_PLUGINSPLIT_SVS": { - "bcftools": 1.2 - }, "BCFTOOLS_QUERY": { "bcftools": 1.2 }, @@ -124,7 +121,7 @@ "hifiasm": "0.20.0-r639" }, "HIFICNV": { - "hificnv": "0.1.7-70e9988" + "hificnv": "1.0.0-36e6461" }, "HIPHASE": { "hiphase": "1.4.0-7bf2743" @@ -201,8 +198,12 @@ "stranger": "0.9.1" }, "SVDB_MERGE": { - "svdb": "2.8.1", - "samtools": "1.19.2" + "svdb": "2.8.2", + "bcftools": 1.21 + }, + "SVDB_MERGE_SVS_CNVS": { + "svdb": "2.8.2", + "bcftools": 1.21 }, "TABIX_BGZIPTABIX": { "tabix": 1.2 @@ -213,6 +214,9 @@ "TABIX_SVDB_MERGE": { "tabix": 1.2 }, + "TABIX_TABIX": { + "tabix": 1.2 + }, "TRGT": { "trgt": "0.7.0-4941fbb" }, @@ -280,22 +284,6 @@ "assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap2.sam.gz", "assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap2.var.gz", "assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.pair.vcf.gz", - "cnv_calling", - "cnv_calling/hificnv", - "cnv_calling/hificnv/HG002_Revio_A", - "cnv_calling/hificnv/HG002_Revio_A/HG002_Revio_A.copynum.bedgraph", - "cnv_calling/hificnv/HG002_Revio_A/HG002_Revio_A.depth.bw", - "cnv_calling/hificnv/HG002_Revio_A/HG002_Revio_A.log", - "cnv_calling/hificnv/HG002_Revio_A/HG002_Revio_A.maf.bw", - "cnv_calling/hificnv/HG002_Revio_A/HG002_Revio_A.vcf.gz", - "cnv_calling/hificnv/HG002_Revio_A/HG002_Revio_A.vcf.gz.tbi", - "cnv_calling/hificnv/HG002_Revio_B", - "cnv_calling/hificnv/HG002_Revio_B/HG002_Revio_B.copynum.bedgraph", - "cnv_calling/hificnv/HG002_Revio_B/HG002_Revio_B.depth.bw", - "cnv_calling/hificnv/HG002_Revio_B/HG002_Revio_B.log", - "cnv_calling/hificnv/HG002_Revio_B/HG002_Revio_B.maf.bw", - "cnv_calling/hificnv/HG002_Revio_B/HG002_Revio_B.vcf.gz", - "cnv_calling/hificnv/HG002_Revio_B/HG002_Revio_B.vcf.gz.tbi", "databases", "databases/echtvar", "databases/echtvar/encode", @@ -466,17 +454,30 @@ "snvs/stats/single_sample/HG002_Revio_A.vcf.gz.bcftools_stats.txt", "snvs/stats/single_sample/HG002_Revio_B.vcf.gz.bcftools_stats.txt", "svs", - "svs/multi_sample", - "svs/multi_sample/test", - "svs/multi_sample/test/test_svs_annotated.vcf.gz", - "svs/multi_sample/test/test_svs_annotated.vcf.gz.tbi", + "svs/family", + "svs/family/FAM", + "svs/family/FAM/FAM_svs_cnvs_merged_annotated.vcf.gz", + "svs/family/FAM/FAM_svs_cnvs_merged_annotated.vcf.gz.tbi", "svs/single_sample", "svs/single_sample/HG002_Revio_A", - "svs/single_sample/HG002_Revio_A/HG002_Revio_A_svs_annotated.vcf.gz", - "svs/single_sample/HG002_Revio_A/HG002_Revio_A_svs_annotated.vcf.gz.tbi", + "svs/single_sample/HG002_Revio_A/HG002_Revio_A_cnvs.vcf.gz", + "svs/single_sample/HG002_Revio_A/HG002_Revio_A_cnvs.vcf.gz.tbi", + "svs/single_sample/HG002_Revio_A/HG002_Revio_A_svs.vcf.gz", + "svs/single_sample/HG002_Revio_A/HG002_Revio_A_svs.vcf.gz.tbi", "svs/single_sample/HG002_Revio_B", - "svs/single_sample/HG002_Revio_B/HG002_Revio_B_svs_annotated.vcf.gz", - "svs/single_sample/HG002_Revio_B/HG002_Revio_B_svs_annotated.vcf.gz.tbi" + "svs/single_sample/HG002_Revio_B/HG002_Revio_B_cnvs.vcf.gz", + "svs/single_sample/HG002_Revio_B/HG002_Revio_B_cnvs.vcf.gz.tbi", + "svs/single_sample/HG002_Revio_B/HG002_Revio_B_svs.vcf.gz", + "svs/single_sample/HG002_Revio_B/HG002_Revio_B_svs.vcf.gz.tbi", + "visualization_tracks", + "visualization_tracks/HG002_Revio_A", + "visualization_tracks/HG002_Revio_A/HG002_Revio_A_hificnv.copynum.bedgraph", + "visualization_tracks/HG002_Revio_A/HG002_Revio_A_hificnv.depth.bw", + "visualization_tracks/HG002_Revio_A/HG002_Revio_A_hificnv.maf.bw", + "visualization_tracks/HG002_Revio_B", + "visualization_tracks/HG002_Revio_B/HG002_Revio_B_hificnv.copynum.bedgraph", + "visualization_tracks/HG002_Revio_B/HG002_Revio_B_hificnv.depth.bw", + "visualization_tracks/HG002_Revio_B/HG002_Revio_B_hificnv.maf.bw" ], [ "HG002_Revio_A.asm.bp.hap1.p_ctg.assembly_summary:md5,b949217515292b5a7735af4ad4bd5b11", @@ -517,16 +518,6 @@ "HG002_Revio_B.hap2.sam.gz:md5,ecdf9b9d50b54776d0555c71a194af7e", "HG002_Revio_B.hap2.var.gz:md5,f09b01fcb43bf64f92ca7ec8a2380c25", "HG002_Revio_B.pair.vcf.gz:md5,676492865a9d4765835638d52651af73", - "HG002_Revio_A.copynum.bedgraph:md5,517bc59c1b235490c79aa8319437b033", - "HG002_Revio_A.depth.bw:md5,0b9cae1d0646fdd2f690d4255282ee8f", - "HG002_Revio_A.maf.bw:md5,bacc69449af34efe8576245ae8188719", - "HG002_Revio_A.vcf.gz:md5,05551e6dee47321f8b03219f308106cc", - "HG002_Revio_A.vcf.gz.tbi:md5,38117ec4d71c688a6f43c53946908acd", - "HG002_Revio_B.copynum.bedgraph:md5,42095da173e46804977bbbecc2fda3aa", - "HG002_Revio_B.depth.bw:md5,45c82491b7119b2d427c5bf2167811c5", - "HG002_Revio_B.maf.bw:md5,b27799b62d65661b384aa61944bd0590", - "HG002_Revio_B.vcf.gz:md5,d99e7a7335ab5f3d1fcb4cf8eac48cca", - "HG002_Revio_B.vcf.gz.tbi:md5,7a72aa048fe8389233a2cf94d843cd1e", "test.zip:md5,9d58b608c94252a8a754f1f67149bd78", "HG002_Revio_A_modkit_pileup_phased_1.bed.gz:md5,4de5a7d9c533afb54191eb3ac3f74887", "HG002_Revio_A_modkit_pileup_phased_1.bed.gz.tbi:md5,f4ccf8810eda0a5d232e1b5c09da0fdc", @@ -563,8 +554,6 @@ "HG002_Revio_B_cramino_aligned_phased.arrow:md5,3bb08ac5958c6cb0801f319066c3a1b2", "HG002_Revio_A_cramino_aligned.arrow:md5,a76219e9046db32c4b3d6d78425c5d78", "HG002_Revio_B_cramino_aligned.arrow:md5,3bb08ac5958c6cb0801f319066c3a1b2", - "HG002_Revio_A_fastqc.html:md5,25f875c3a542ff8590655685bc152658", - "HG002_Revio_B_fastqc.html:md5,4b7d698cbe79dbfb4a74e8e7f84891d5", "HG002_Revio_A.mosdepth.global.dist.txt:md5,63701e857361046628f89cb84988ea1d", "HG002_Revio_A.mosdepth.region.dist.txt:md5,6b46396518979ff9d9771cb8a8fbbab0", "HG002_Revio_A.mosdepth.summary.txt:md5,311aad293c6d8a646b6dd4edc337845c", @@ -578,7 +567,13 @@ "HG002_Revio_A_stats.blocks.tsv:md5,8d898e3d4544dd4bd6a9a3b8221a71cd", "HG002_Revio_A_stats.stats.tsv:md5,b09849fda8d36260d5e56dd8df175675", "HG002_Revio_B_stats.blocks.tsv:md5,c3155cb1cc119aea4214f43325c2583f", - "HG002_Revio_B_stats.stats.tsv:md5,5a60b5d1541fc6210834f03370f88160" + "HG002_Revio_B_stats.stats.tsv:md5,5a60b5d1541fc6210834f03370f88160", + "HG002_Revio_A_hificnv.copynum.bedgraph:md5,517bc59c1b235490c79aa8319437b033", + "HG002_Revio_A_hificnv.depth.bw:md5,0d8b56722cc24331be98a2ca5effa3a1", + "HG002_Revio_A_hificnv.maf.bw:md5,3ad9a690c0b66a6e5ad0ef4f23d7e197", + "HG002_Revio_B_hificnv.copynum.bedgraph:md5,42095da173e46804977bbbecc2fda3aa", + "HG002_Revio_B_hificnv.depth.bw:md5,d196df40f045597b28826bd090757d3a", + "HG002_Revio_B_hificnv.maf.bw:md5,87214af821c75080a20a8fa716176013" ], [ [ @@ -639,14 +634,6 @@ "HG002_Revio_B.pair.vcf.gz", "VcfFile [chromosomes=[chrX, chr16], sampleCount=2, variantCount=1862, phased=false, phasedAutodetect=false]" ], - [ - "HG002_Revio_A.vcf.gz", - "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=36, phased=false, phasedAutodetect=false]" - ], - [ - "HG002_Revio_B.vcf.gz", - "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=36, phased=false, phasedAutodetect=false]" - ], [ "HG002_Revio_A_hba.vcf.gz", "VcfFile [chromosomes=[chr16], sampleCount=2, variantCount=2121, phased=true, phasedAutodetect=false]" @@ -696,16 +683,24 @@ "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=105, phased=false, phasedAutodetect=false]" ], [ - "test_svs_annotated.vcf.gz", - "VcfFile [chromosomes=[chrX, chr16], sampleCount=2, variantCount=51, phased=false, phasedAutodetect=false]" + "FAM_svs_cnvs_merged_annotated.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16], sampleCount=2, variantCount=85, phased=false, phasedAutodetect=false]" ], [ - "HG002_Revio_A_svs_annotated.vcf.gz", - "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=49, phased=false, phasedAutodetect=false]" + "HG002_Revio_A_cnvs.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=36, phased=false, phasedAutodetect=false]" + ], + [ + "HG002_Revio_A_svs.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=53, phased=false, phasedAutodetect=false]" + ], + [ + "HG002_Revio_B_cnvs.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=36, phased=false, phasedAutodetect=false]" ], [ - "HG002_Revio_B_svs_annotated.vcf.gz", - "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=49, phased=false, phasedAutodetect=false]" + "HG002_Revio_B_svs.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=53, phased=false, phasedAutodetect=false]" ] ], [ @@ -725,14 +720,6 @@ "HG002_Revio_B.pair.vcf.gz", "83dc2bb5d8f46bf3daf99f27e4d3b022" ], - [ - "HG002_Revio_A.vcf.gz", - "ab9044066c7bd041966eed43e0d00f13" - ], - [ - "HG002_Revio_B.vcf.gz", - "7db8959b4b1f46316bb7d5908a8b9f26" - ], [ "HG002_Revio_A_repeat_expansion_stranger.vcf.gz", "492a5d1a0f1656e1f7fc1b97c922cab4" @@ -759,6 +746,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-25T13:01:47.642764093" + "timestamp": "2024-10-29T08:05:02.617396332" } } \ No newline at end of file diff --git a/tests/samplesheet_multisample_ont_bam.nf.test.snap b/tests/samplesheet_multisample_ont_bam.nf.test.snap index 5a25e57d..63f556cc 100644 --- a/tests/samplesheet_multisample_ont_bam.nf.test.snap +++ b/tests/samplesheet_multisample_ont_bam.nf.test.snap @@ -1,7 +1,7 @@ { "samplesheet_multisample_ont_bam | --preset ONT_R10 --phaser whatshap --parallel_alignments 1 --parallel_snv 1": { "content": [ - 95, + 97, { "ADD_FOUND_IN_TAG": { "bcftools": 1.2, @@ -33,9 +33,6 @@ "BCFTOOLS_PLUGINSPLIT_SNVS": { "bcftools": 1.2 }, - "BCFTOOLS_PLUGINSPLIT_SVS": { - "bcftools": 1.2 - }, "BCFTOOLS_QUERY": { "bcftools": 1.2 }, @@ -103,7 +100,7 @@ "gunzip": 1.1 }, "HIFICNV": { - "hificnv": "0.1.7-70e9988" + "hificnv": "1.0.0-36e6461" }, "MINIMAP2_ALIGN": { "minimap2": "2.28-r1209", @@ -156,8 +153,12 @@ "split_bed_chunks": 1.0 }, "SVDB_MERGE": { - "svdb": "2.8.1", - "samtools": "1.19.2" + "svdb": "2.8.2", + "bcftools": 1.21 + }, + "SVDB_MERGE_SVS_CNVS": { + "svdb": "2.8.2", + "bcftools": 1.21 }, "TABIX_BGZIPTABIX": { "tabix": 1.2 @@ -168,6 +169,9 @@ "TABIX_SVDB_MERGE": { "tabix": 1.2 }, + "TABIX_TABIX": { + "tabix": 1.2 + }, "UNTAR_VEP_CACHE": { "untar": 1.34 }, @@ -194,22 +198,6 @@ "aligned_reads/HG002_ONT_B", "aligned_reads/HG002_ONT_B/HG002_ONT_B_haplotagged.bam", "aligned_reads/HG002_ONT_B/HG002_ONT_B_haplotagged.bam.bai", - "cnv_calling", - "cnv_calling/hificnv", - "cnv_calling/hificnv/HG002_ONT_A", - "cnv_calling/hificnv/HG002_ONT_A/HG002_ONT_A.copynum.bedgraph", - "cnv_calling/hificnv/HG002_ONT_A/HG002_ONT_A.depth.bw", - "cnv_calling/hificnv/HG002_ONT_A/HG002_ONT_A.log", - "cnv_calling/hificnv/HG002_ONT_A/HG002_ONT_A.maf.bw", - "cnv_calling/hificnv/HG002_ONT_A/HG002_ONT_A.vcf.gz", - "cnv_calling/hificnv/HG002_ONT_A/HG002_ONT_A.vcf.gz.tbi", - "cnv_calling/hificnv/HG002_ONT_B", - "cnv_calling/hificnv/HG002_ONT_B/HG002_ONT_B.copynum.bedgraph", - "cnv_calling/hificnv/HG002_ONT_B/HG002_ONT_B.depth.bw", - "cnv_calling/hificnv/HG002_ONT_B/HG002_ONT_B.log", - "cnv_calling/hificnv/HG002_ONT_B/HG002_ONT_B.maf.bw", - "cnv_calling/hificnv/HG002_ONT_B/HG002_ONT_B.vcf.gz", - "cnv_calling/hificnv/HG002_ONT_B/HG002_ONT_B.vcf.gz.tbi", "databases", "databases/echtvar", "databases/echtvar/encode", @@ -349,29 +337,32 @@ "snvs/stats/single_sample/HG002_ONT_A.vcf.gz.bcftools_stats.txt", "snvs/stats/single_sample/HG002_ONT_B.vcf.gz.bcftools_stats.txt", "svs", - "svs/multi_sample", - "svs/multi_sample/test", - "svs/multi_sample/test/test_svs_annotated.vcf.gz", - "svs/multi_sample/test/test_svs_annotated.vcf.gz.tbi", + "svs/family", + "svs/family/FAM", + "svs/family/FAM/FAM_svs_cnvs_merged_annotated.vcf.gz", + "svs/family/FAM/FAM_svs_cnvs_merged_annotated.vcf.gz.tbi", "svs/single_sample", "svs/single_sample/HG002_ONT_A", - "svs/single_sample/HG002_ONT_A/HG002_ONT_A_svs_annotated.vcf.gz", - "svs/single_sample/HG002_ONT_A/HG002_ONT_A_svs_annotated.vcf.gz.tbi", + "svs/single_sample/HG002_ONT_A/HG002_ONT_A_cnvs.vcf.gz", + "svs/single_sample/HG002_ONT_A/HG002_ONT_A_cnvs.vcf.gz.tbi", + "svs/single_sample/HG002_ONT_A/HG002_ONT_A_svs.vcf.gz", + "svs/single_sample/HG002_ONT_A/HG002_ONT_A_svs.vcf.gz.tbi", "svs/single_sample/HG002_ONT_B", - "svs/single_sample/HG002_ONT_B/HG002_ONT_B_svs_annotated.vcf.gz", - "svs/single_sample/HG002_ONT_B/HG002_ONT_B_svs_annotated.vcf.gz.tbi" + "svs/single_sample/HG002_ONT_B/HG002_ONT_B_cnvs.vcf.gz", + "svs/single_sample/HG002_ONT_B/HG002_ONT_B_cnvs.vcf.gz.tbi", + "svs/single_sample/HG002_ONT_B/HG002_ONT_B_svs.vcf.gz", + "svs/single_sample/HG002_ONT_B/HG002_ONT_B_svs.vcf.gz.tbi", + "visualization_tracks", + "visualization_tracks/HG002_ONT_A", + "visualization_tracks/HG002_ONT_A/HG002_ONT_A_hificnv.copynum.bedgraph", + "visualization_tracks/HG002_ONT_A/HG002_ONT_A_hificnv.depth.bw", + "visualization_tracks/HG002_ONT_A/HG002_ONT_A_hificnv.maf.bw", + "visualization_tracks/HG002_ONT_B", + "visualization_tracks/HG002_ONT_B/HG002_ONT_B_hificnv.copynum.bedgraph", + "visualization_tracks/HG002_ONT_B/HG002_ONT_B_hificnv.depth.bw", + "visualization_tracks/HG002_ONT_B/HG002_ONT_B_hificnv.maf.bw" ], [ - "HG002_ONT_A.copynum.bedgraph:md5,4c5517c1783afa11ff93c8d8627fbe42", - "HG002_ONT_A.depth.bw:md5,7c1ad330a37ae8c9bfc89d5ed4f327ab", - "HG002_ONT_A.maf.bw:md5,c3a2453422665c6c25b7114ee258b85f", - "HG002_ONT_A.vcf.gz:md5,17b78d0f16662393fde35c8dba53dcd3", - "HG002_ONT_A.vcf.gz.tbi:md5,0abf55893512d2546a3f3231bb990f5d", - "HG002_ONT_B.copynum.bedgraph:md5,7d30f621d502d16301fa79cf48a3b903", - "HG002_ONT_B.depth.bw:md5,633a878a4258d2bf767df96388abb4cd", - "HG002_ONT_B.maf.bw:md5,1951883a15f76e13f5a3ae01c062e265", - "HG002_ONT_B.vcf.gz:md5,6bdb2a31c8ffa0d30dccadb37487ce6d", - "HG002_ONT_B.vcf.gz.tbi:md5,418164cae69148cd90545a56728340c5", "test.zip:md5,779efd29ec2cc66bef05c173c44e4168", "HG002_ONT_A_modkit_pileup_phased_1.bed.gz:md5,2be86a42ac0384ac6d27fdf6e65304b7", "HG002_ONT_A_modkit_pileup_phased_1.bed.gz.tbi:md5,a7955eabc34456dce834a2c966071eaa", @@ -402,8 +393,6 @@ "HG002_ONT_B_cramino_aligned_phased.arrow:md5,61af72539e105cec79db7c9b78eb15a7", "HG002_ONT_A_cramino_aligned.arrow:md5,d2a5c81595fa34925ab8f03078487d81", "HG002_ONT_B_cramino_aligned.arrow:md5,61af72539e105cec79db7c9b78eb15a7", - "HG002_ONT_A_fastqc.html:md5,94d86b38a30f846de64b840656663d18", - "HG002_ONT_B_fastqc.html:md5,2ec692ee5acf69717811be481d38f775", "HG002_ONT_A.mosdepth.global.dist.txt:md5,5ae0972357f99aa481a0bf12fb9e0b0b", "HG002_ONT_A.mosdepth.region.dist.txt:md5,023b1c6aeaf8fa5ededd6b711a5cd012", "HG002_ONT_A.mosdepth.summary.txt:md5,c3b664b0983213f73edf3c0d5a0b04a2", @@ -417,7 +406,13 @@ "HG002_ONT_A_stats.blocks.tsv:md5,aac8023443ddf578ffcd11121391f1cf", "HG002_ONT_A_stats.stats.tsv:md5,27fdac1e01e6491374c631239e6183aa", "HG002_ONT_B_stats.blocks.tsv:md5,0adf84be03536262bf8d58eda524d709", - "HG002_ONT_B_stats.stats.tsv:md5,eb2a2c3b64feb8acff4df3a1b8d33b78" + "HG002_ONT_B_stats.stats.tsv:md5,eb2a2c3b64feb8acff4df3a1b8d33b78", + "HG002_ONT_A_hificnv.copynum.bedgraph:md5,4c5517c1783afa11ff93c8d8627fbe42", + "HG002_ONT_A_hificnv.depth.bw:md5,69c333b205994200641ea539b4c277c6", + "HG002_ONT_A_hificnv.maf.bw:md5,5b46c27cc53cc8dd68903738ab220c5f", + "HG002_ONT_B_hificnv.copynum.bedgraph:md5,7d30f621d502d16301fa79cf48a3b903", + "HG002_ONT_B_hificnv.depth.bw:md5,5153fd5b008285e0fa0bcfe5026373bf", + "HG002_ONT_B_hificnv.maf.bw:md5,02eba7a84f1de8c042e071587a81d279" ], [ [ @@ -438,14 +433,6 @@ ] ], [ - [ - "HG002_ONT_A.vcf.gz", - "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=30, phased=false, phasedAutodetect=false]" - ], - [ - "HG002_ONT_B.vcf.gz", - "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=31, phased=false, phasedAutodetect=false]" - ], [ "HG002_ONT_A_hba.vcf.gz", "VcfFile [chromosomes=[chr16], sampleCount=2, variantCount=2101, phased=true, phasedAutodetect=false]" @@ -475,33 +462,34 @@ "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=99, phased=false, phasedAutodetect=false]" ], [ - "test_svs_annotated.vcf.gz", - "VcfFile [chromosomes=[chrX, chr16], sampleCount=2, variantCount=66, phased=false, phasedAutodetect=false]" + "FAM_svs_cnvs_merged_annotated.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16], sampleCount=2, variantCount=98, phased=false, phasedAutodetect=false]" ], [ - "HG002_ONT_A_svs_annotated.vcf.gz", - "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=61, phased=false, phasedAutodetect=false]" + "HG002_ONT_A_cnvs.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=30, phased=false, phasedAutodetect=false]" ], [ - "HG002_ONT_B_svs_annotated.vcf.gz", - "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=60, phased=false, phasedAutodetect=false]" - ] - ], - [ + "HG002_ONT_A_svs.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=68, phased=false, phasedAutodetect=false]" + ], [ - "HG002_ONT_A.vcf.gz", - "7d27e8af63075fc17b4e6935e6397e9f" + "HG002_ONT_B_cnvs.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=31, phased=false, phasedAutodetect=false]" ], [ - "HG002_ONT_B.vcf.gz", - "ab11a22397e05e4b7f7c5c809e9407bf" + "HG002_ONT_B_svs.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=68, phased=false, phasedAutodetect=false]" ] + ], + [ + ] ], "meta": { "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-25T13:10:46.10939576" + "timestamp": "2024-10-29T08:10:12.368361834" } -} \ No newline at end of file +} diff --git a/workflows/nallo.nf b/workflows/nallo.nf index 86a79a37..345859d3 100644 --- a/workflows/nallo.nf +++ b/workflows/nallo.nf @@ -11,12 +11,12 @@ include { ANNOTATE_SVS } from '../subworkflows/local/ include { ANNOTATE_REPEAT_EXPANSIONS } from '../subworkflows/local/annotate_repeat_expansions' include { ASSEMBLY } from '../subworkflows/local/genome_assembly' include { ASSEMBLY_VARIANT_CALLING } from '../subworkflows/local/assembly_variant_calling' -include { CALL_SVS } from '../subworkflows/local/call_svs' include { CONVERT_INPUT_FILES } from '../subworkflows/local/convert_input_files' include { BAM_INFER_SEX } from '../subworkflows/local/bam_infer_sex' +include { CALL_CNVS } from '../subworkflows/local/call_cnvs' include { CALL_PARALOGS } from '../subworkflows/local/call_paralogs' include { CALL_REPEAT_EXPANSIONS } from '../subworkflows/local/call_repeat_expansions' -include { CNV } from '../subworkflows/local/cnv' +include { CALL_SVS } from '../subworkflows/local/call_svs' include { METHYLATION } from '../subworkflows/local/methylation' include { PHASING } from '../subworkflows/local/phasing' include { PREPARE_GENOME } from '../subworkflows/local/prepare_genome' @@ -41,12 +41,13 @@ include { SAMTOOLS_MERGE } from '../modules/n // nf-core include { BCFTOOLS_CONCAT } from '../modules/nf-core/bcftools/concat/main' include { BCFTOOLS_PLUGINSPLIT as BCFTOOLS_PLUGINSPLIT_SNVS } from '../modules/nf-core/bcftools/pluginsplit/main' -include { BCFTOOLS_PLUGINSPLIT as BCFTOOLS_PLUGINSPLIT_SVS } from '../modules/nf-core/bcftools/pluginsplit/main' include { BCFTOOLS_SORT } from '../modules/nf-core/bcftools/sort/main' include { BCFTOOLS_STATS } from '../modules/nf-core/bcftools/stats/main' include { MINIMAP2_ALIGN } from '../modules/nf-core/minimap2/align/main' include { MULTIQC } from '../modules/nf-core/multiqc/main' include { SPLITUBAM } from '../modules/nf-core/splitubam/main' +include { SVDB_MERGE as SVDB_MERGE_SVS_CNVS } from '../modules/nf-core/svdb/merge/main' +include { TABIX_TABIX as TABIX_SVDB_MERGE_SVS_CNVS } from '../modules/nf-core/tabix/tabix/main' include { paramsSummaryMap } from 'plugin/nf-schema' include { paramsSummaryMultiqc } from '../subworkflows/nf-core/utils_nfcore_pipeline' include { softwareVersionsToYAML } from '../subworkflows/nf-core/utils_nfcore_pipeline' @@ -94,11 +95,11 @@ workflow NALLO { : Channel.value([[],[]]) ch_vep_extra_files_unsplit = params.vep_plugin_files ? Channel.fromPath(params.vep_plugin_files).collect() : '' - ch_expected_xy_bed = params.hificnv_xy ? Channel.fromPath(params.hificnv_xy).collect() + ch_expected_xy_bed = params.hificnv_xy ? Channel.fromPath(params.hificnv_xy).map { it -> [ [ id: it.simpleName ], it ] }.collect() : '' - ch_expected_xx_bed = params.hificnv_xx ? Channel.fromPath(params.hificnv_xx).collect() + ch_expected_xx_bed = params.hificnv_xx ? Channel.fromPath(params.hificnv_xx).map { it -> [ [ id: it.simpleName ], it ] }.collect() : '' - ch_exclude_bed = params.hificnv_exclude ? Channel.fromPath(params.hificnv_exclude).collect() + ch_exclude_bed = params.hificnv_exclude ? Channel.fromPath(params.hificnv_exclude).map { it -> [ [ id: it.simpleName ], it ] }.collect() : '' ch_reduced_penetrance = params.reduced_penetrance ? Channel.fromPath(params.reduced_penetrance).map { it -> [ it.simpleName, it ] }.collect() : Channel.value([]) @@ -293,6 +294,8 @@ workflow NALLO { // // Call structural variants // + + // If both CNV-calling and SV annotation is off, merged variants are output from here CALL_SVS ( bam_bai, fasta, @@ -303,37 +306,6 @@ workflow NALLO { ) ch_versions = ch_versions.mix(CALL_SVS.out.versions) - CALL_SVS.out.ch_multisample_vcf - .join( CALL_SVS.out.ch_multisample_tbi ) - .set { ch_split_svs_in } - // - // Annotate structural variants - // - if(!params.skip_sv_annotation) { - ANNOTATE_SVS ( - CALL_SVS.out.ch_multisample_vcf, - fasta, - ch_svdb_dbs, - ch_vep_cache, - params.vep_cache_version, - PREPARE_GENOME.out.vep_extra_files - ) - - ANNOTATE_SVS.out.vcf - .join( ANNOTATE_SVS.out.tbi ) - .set { ch_split_svs_in } - } - - // Split the multisample SV VCF to also publish an (annotated) VCF per sample - BCFTOOLS_PLUGINSPLIT_SVS ( - ch_split_svs_in, - [], - [], - [], - [] - ) - ch_versions = ch_versions.mix(BCFTOOLS_PLUGINSPLIT_SVS.out.versions) - // // Call (and annotate and rank) SNVs // @@ -462,12 +434,16 @@ workflow NALLO { // Call CNVs with HiFiCNV // if(!params.skip_cnv_calling) { - bam_bai - .join(SHORT_VARIANT_CALLING.out.snp_calls_vcf) - .set { cnv_workflow_in } - CNV(cnv_workflow_in, fasta, ch_expected_xy_bed, ch_expected_xx_bed, ch_exclude_bed) - ch_versions = ch_versions.mix(CNV.out.versions) + CALL_CNVS ( + bam_bai.join(SHORT_VARIANT_CALLING.out.snp_calls_vcf), + fasta, + ch_expected_xy_bed, + ch_expected_xx_bed, + ch_exclude_bed + ) + ch_versions = ch_versions.mix(CALL_CNVS.out.versions) + } // @@ -513,6 +489,50 @@ workflow NALLO { } } } + + // Merge SVs and CNVs if we've called both SVs and CNVs + if (!params.skip_cnv_calling) { + CALL_SVS.out.family_vcf + .join(CALL_CNVS.out.family_vcf) + .map { meta, svs, cnvs -> [ meta, [ svs, cnvs ] ] } + .set { svdb_merge_svs_cnvs_in } + + // If SV annotation is off, merged variants are output from here + SVDB_MERGE_SVS_CNVS ( + svdb_merge_svs_cnvs_in, + ['svs', 'cnvs'], // Because SVs have better breakpoint resolution, give them priority + true + ) + ch_versions = ch_versions.mix(SVDB_MERGE_SVS_CNVS.out.versions) + + if (params.skip_sv_annotation) { + // And tabixed here + TABIX_SVDB_MERGE_SVS_CNVS ( SVDB_MERGE_SVS_CNVS.out.vcf ) + ch_versions = ch_versions.mix(TABIX_SVDB_MERGE_SVS_CNVS.out.versions) + } + + SVDB_MERGE_SVS_CNVS.out.vcf + .set { annotate_svs_in } + + } else { + CALL_SVS.out.family_vcf + .set { annotate_svs_in } + } + + // + // Annotate structural variants + // + if(!params.skip_sv_annotation) { + // If annotation is on, then merged variants are output from here + ANNOTATE_SVS ( + annotate_svs_in, + fasta, + ch_svdb_dbs, + ch_vep_cache, + params.vep_cache_version, + PREPARE_GENOME.out.vep_extra_files + ) + } } // From 68823df393b64bd32351ff784c4e4df173baead4 Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Wed, 30 Oct 2024 10:00:59 +0100 Subject: [PATCH 046/106] minimap2 preset for pacbio should be map-hifi (#441) --- CHANGELOG.md | 1 + nextflow.config | 2 +- tests/samplesheet.nf.test.snap | 66 +++++----- .../samplesheet_multisample_bam.nf.test.snap | 122 +++++++++--------- 4 files changed, 96 insertions(+), 95 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e0f6c9f4..a896c863 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -69,6 +69,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#435](https://github.com/genomic-medicine-sweden/nallo/pull/435) - Updated and refactored processes and workflows related to variant ranking - [#438](https://github.com/genomic-medicine-sweden/nallo/pull/438) - Updated pipeline tests to use functions in nft-utils instead of checking hardcoded paths - [#440](https://github.com/genomic-medicine-sweden/nallo/pull/440) - Updated hifiasm to 0.20 with new default parameters for telomeres and scaffolding ([#295](https://github.com/genomic-medicine-sweden/nallo/issues/295)) +- [#441](https://github.com/genomic-medicine-sweden/nallo/pull/441) - Changed the minimap2 preset for hifi reads back to `map-hifi` ### `Removed` diff --git a/nextflow.config b/nextflow.config index 5ff16c18..5b0db077 100644 --- a/nextflow.config +++ b/nextflow.config @@ -46,7 +46,7 @@ params { skip_sv_annotation = false deepvariant_model_type = params.preset == 'ONT_R10' ? 'ONT_R104' : 'PACBIO' - minimap2_read_mapping_preset = params.preset == 'ONT_R10' ? 'lr:hq' : 'lr:hqae' + minimap2_read_mapping_preset = params.preset == 'ONT_R10' ? 'lr:hq' : 'map-hifi' phaser = 'longphase' sv_caller = 'severus' preset = 'revio' diff --git a/tests/samplesheet.nf.test.snap b/tests/samplesheet.nf.test.snap index f788c1df..eb2ddf76 100644 --- a/tests/samplesheet.nf.test.snap +++ b/tests/samplesheet.nf.test.snap @@ -416,41 +416,41 @@ "HG002_Revio.hap2.sam.gz:md5,6d512a060c74428f7758aa51a99ae8c8", "HG002_Revio.hap2.var.gz:md5,9ba9303b30730e419138e177c7d1e0c2", "HG002_Revio.pair.vcf.gz:md5,1909dffa43850282fe7e5ae2b2d273a7", - "test.zip:md5,2042de439a4cb1b37825169a773cf24a", - "HG002_Revio_modkit_pileup_phased_1.bed.gz:md5,00b5d207be5dc8a6605698d6139afc48", - "HG002_Revio_modkit_pileup_phased_1.bed.gz.tbi:md5,58e7b0a9ddaad5be350eec78b338c1e6", - "HG002_Revio_modkit_pileup_phased_2.bed.gz:md5,bb881b1838f17235e1dc295b29f2d473", - "HG002_Revio_modkit_pileup_phased_2.bed.gz.tbi:md5,e76d65f68af11d673eda080b522d81c2", - "HG002_Revio_modkit_pileup_phased_ungrouped.bed.gz:md5,df6d44c55925a894aa5fe838f9dd449e", - "HG002_Revio_modkit_pileup_phased_ungrouped.bed.gz.tbi:md5,8348f75c0ce6fec18b57739fc36b3011", - "HG002_Revio_modkit_pileup.bed.gz:md5,55496cdcd7e4ccad86adee3cb819da56", - "HG002_Revio_modkit_pileup.bed.gz.tbi:md5,b217c5e971ecb0b8c874b0038f0d2ae4", - "mosdepth_cov_dist.txt:md5,1ab27c6267c491c1a2ccf0ac988f61a0", - "mosdepth_cumcov_dist.txt:md5,ccca5d9ba66b884b83cf982958485948", - "mosdepth_perchrom.txt:md5,12bf09d8a371ca77f525c88190f2e07d", - "multiqc_bcftools_stats.txt:md5,6f68bd58414b016e5a0f7310e876a181", + "test.zip:md5,a0abe28a72b11b68126040dd38fa8e37", + "HG002_Revio_modkit_pileup_phased_1.bed.gz:md5,ac9bfc455d0b697a4bd565b510c155e0", + "HG002_Revio_modkit_pileup_phased_1.bed.gz.tbi:md5,5a9ac375a0ce33af002e0073635a3425", + "HG002_Revio_modkit_pileup_phased_2.bed.gz:md5,b2c6c3fc27d34b7c588a4a4b3e9611b0", + "HG002_Revio_modkit_pileup_phased_2.bed.gz.tbi:md5,2ad55c2f604cbdf6a784b2dd99b25cb1", + "HG002_Revio_modkit_pileup_phased_ungrouped.bed.gz:md5,04ee840c02e04238b9432bc374a1afe1", + "HG002_Revio_modkit_pileup_phased_ungrouped.bed.gz.tbi:md5,e1418c8075da8831a52e0cd56ceb910e", + "HG002_Revio_modkit_pileup.bed.gz:md5,a52bb9ab393e682d0b7118ef2efe5c15", + "HG002_Revio_modkit_pileup.bed.gz.tbi:md5,08312c13316ed9b4b582897c210ecb58", + "mosdepth_cov_dist.txt:md5,62011d1135dafcf05d7f6d5750d20c9f", + "mosdepth_cumcov_dist.txt:md5,eeb7f82eb03344d26a99b6596a1c7413", + "mosdepth_perchrom.txt:md5,53806d793d5627e60648daebb6606723", + "multiqc_bcftools_stats.txt:md5,09a616618fb506994ce178d32325159f", "multiqc_citations.txt:md5,a27affce20d456d20ed387097a4f0350", - "multiqc_fastqc.txt:md5,6168de97dd0d63807f925487735bdb60", - "multiqc_general_stats.txt:md5,e60e67616f5ed60b6807f7aac236e3ab", - "multiqc_whatshap_stats.txt:md5,bf958293f6f56167c9a45ad07d84249c", + "multiqc_fastqc.txt:md5,f0717ca13d848aa8f5eaa5d0dba92178", + "multiqc_general_stats.txt:md5,c82b773e9d5ab3251280f3f03f35193a", + "multiqc_whatshap_stats.txt:md5,c8c212ecc6fbf6803f8de87f2395363f", "test.ped:md5,bd5cec27ba7337a85cf98e787131e2b5", - "HG002_Revio_cramino_aligned_phased.arrow:md5,a76219e9046db32c4b3d6d78425c5d78", - "HG002_Revio_cramino_aligned.arrow:md5,a76219e9046db32c4b3d6d78425c5d78", - "HG002_Revio.mosdepth.global.dist.txt:md5,63701e857361046628f89cb84988ea1d", - "HG002_Revio.mosdepth.region.dist.txt:md5,6b46396518979ff9d9771cb8a8fbbab0", - "HG002_Revio.mosdepth.summary.txt:md5,311aad293c6d8a646b6dd4edc337845c", - "HG002_Revio.regions.bed.gz:md5,31db0f14146b65e339b54b963c304947", + "HG002_Revio_cramino_aligned_phased.arrow:md5,72df2934ff8aa7e1bf8cf8a4881a0d2a", + "HG002_Revio_cramino_aligned.arrow:md5,72df2934ff8aa7e1bf8cf8a4881a0d2a", + "HG002_Revio.mosdepth.global.dist.txt:md5,6186315d4d65eda85553af82a98829d1", + "HG002_Revio.mosdepth.region.dist.txt:md5,c6c7ee8f056b8b2b92c97ec472b1db16", + "HG002_Revio.mosdepth.summary.txt:md5,35c51f1ad9d2856d1e6446205f19a8e3", + "HG002_Revio.regions.bed.gz:md5,e051f64c7a780d67ea6727a327dd4281", "HG002_Revio.regions.bed.gz.csi:md5,026eef1c69fb4aa3a1687463fe2088ab", - "HG002_Revio_stats.blocks.tsv:md5,d6e8baec71914acb176c4edc11a4ff15", - "HG002_Revio_stats.stats.tsv:md5,743288d0efd441904359474b9de892fb", + "HG002_Revio_stats.blocks.tsv:md5,e73960d863a78848498499480ea9937f", + "HG002_Revio_stats.stats.tsv:md5,cffa4a500350b2227ab40bbbe428e9ef", "HG002_Revio_hificnv.copynum.bedgraph:md5,517bc59c1b235490c79aa8319437b033", - "HG002_Revio_hificnv.depth.bw:md5,0d8b56722cc24331be98a2ca5effa3a1", - "HG002_Revio_hificnv.maf.bw:md5,3ad9a690c0b66a6e5ad0ef4f23d7e197" + "HG002_Revio_hificnv.depth.bw:md5,70211e34c58cd83f6c9c6f2a8bda4a3b", + "HG002_Revio_hificnv.maf.bw:md5,8340a82b7b3da36383511631ed21066c" ], [ [ "HG002_Revio_haplotagged.bam", - "5df05408bd4f18a4ef1555bc5800601a" + "3367d07489e728a2a99d9abb618841ec" ], [ "HG002_Revio.hap1.bam", @@ -484,7 +484,7 @@ ], [ "HG002_Revio_phased.vcf.gz", - "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=252, phased=false, phasedAutodetect=false]" + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=191, phased=false, phasedAutodetect=false]" ], [ "HG002_Revio_repeat_expansion_stranger.vcf.gz", @@ -500,15 +500,15 @@ ], [ "test_snv_annotated_ranked.vcf.gz", - "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=106, phased=false, phasedAutodetect=false]" + "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=103, phased=false, phasedAutodetect=false]" ], [ "HG002_Revio_snv_annotated_ranked.vcf.gz", - "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=106, phased=false, phasedAutodetect=false]" + "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=100, phased=false, phasedAutodetect=false]" ], [ "FAM_svs_cnvs_merged_annotated.vcf.gz", - "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=85, phased=false, phasedAutodetect=false]" + "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=87, phased=false, phasedAutodetect=false]" ], [ "HG002_Revio_cnvs.vcf.gz", @@ -516,7 +516,7 @@ ], [ "HG002_Revio_svs.vcf.gz", - "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=53, phased=false, phasedAutodetect=false]" + "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=55, phased=false, phasedAutodetect=false]" ] ], [ @@ -546,6 +546,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-29T08:06:35.225026148" + "timestamp": "2024-10-30T08:28:49.483885889" } } \ No newline at end of file diff --git a/tests/samplesheet_multisample_bam.nf.test.snap b/tests/samplesheet_multisample_bam.nf.test.snap index fb78962a..f270dc75 100644 --- a/tests/samplesheet_multisample_bam.nf.test.snap +++ b/tests/samplesheet_multisample_bam.nf.test.snap @@ -518,71 +518,71 @@ "HG002_Revio_B.hap2.sam.gz:md5,ecdf9b9d50b54776d0555c71a194af7e", "HG002_Revio_B.hap2.var.gz:md5,f09b01fcb43bf64f92ca7ec8a2380c25", "HG002_Revio_B.pair.vcf.gz:md5,676492865a9d4765835638d52651af73", - "test.zip:md5,9d58b608c94252a8a754f1f67149bd78", - "HG002_Revio_A_modkit_pileup_phased_1.bed.gz:md5,4de5a7d9c533afb54191eb3ac3f74887", - "HG002_Revio_A_modkit_pileup_phased_1.bed.gz.tbi:md5,f4ccf8810eda0a5d232e1b5c09da0fdc", - "HG002_Revio_A_modkit_pileup_phased_2.bed.gz:md5,b84e63399caff8d487d17fd8d1f23161", - "HG002_Revio_A_modkit_pileup_phased_2.bed.gz.tbi:md5,9be8a8a7c8a8277d2c7b3d4a27b57c13", - "HG002_Revio_A_modkit_pileup_phased_ungrouped.bed.gz:md5,94555f3f2dd7a9af587afc3eeeb99c04", - "HG002_Revio_A_modkit_pileup_phased_ungrouped.bed.gz.tbi:md5,9c945b4b97f413462252f61015f30fbd", - "HG002_Revio_B_modkit_pileup_phased_1.bed.gz:md5,4de5a7d9c533afb54191eb3ac3f74887", - "HG002_Revio_B_modkit_pileup_phased_1.bed.gz.tbi:md5,f4ccf8810eda0a5d232e1b5c09da0fdc", - "HG002_Revio_B_modkit_pileup_phased_2.bed.gz:md5,d7cbca28a55acdb6c69dd806417a8005", - "HG002_Revio_B_modkit_pileup_phased_2.bed.gz.tbi:md5,e826dc808b66b6d3713a2869136ead26", - "HG002_Revio_B_modkit_pileup_phased_ungrouped.bed.gz:md5,dd5ee2fee95d290ba50581e7efe4efe3", - "HG002_Revio_B_modkit_pileup_phased_ungrouped.bed.gz.tbi:md5,9c945b4b97f413462252f61015f30fbd", - "HG002_Revio_A_modkit_pileup.bed.gz:md5,55496cdcd7e4ccad86adee3cb819da56", - "HG002_Revio_A_modkit_pileup.bed.gz.tbi:md5,b217c5e971ecb0b8c874b0038f0d2ae4", - "HG002_Revio_B_modkit_pileup.bed.gz:md5,c217ccd3e8514a6a5eca0e163dee9f20", - "HG002_Revio_B_modkit_pileup.bed.gz.tbi:md5,383b647625175e59420c5d8044ba711f", - "mosdepth_cov_dist.txt:md5,35f4e7dce805f3f281756e2e905123fa", - "mosdepth_cumcov_dist.txt:md5,d190e66dec359ced74051791f80c966d", - "mosdepth_perchrom.txt:md5,50effe9b9d29b59ed2f5ff7c78ad666c", - "multiqc_bcftools_stats.txt:md5,b027e397bc91f5c4ec22e00f6ebdcb8d", + "test.zip:md5,d3fc0769a4c707953cdb3fade9450660", + "HG002_Revio_A_modkit_pileup_phased_1.bed.gz:md5,7af3b6246d0c007aec686714b96a0f7f", + "HG002_Revio_A_modkit_pileup_phased_1.bed.gz.tbi:md5,b7083ebf6ba176ed5a472ad653c5be27", + "HG002_Revio_A_modkit_pileup_phased_2.bed.gz:md5,a2e1291b468361412899cf811022fe72", + "HG002_Revio_A_modkit_pileup_phased_2.bed.gz.tbi:md5,d1c192d65d8fa8cbb8ffa2e545282fde", + "HG002_Revio_A_modkit_pileup_phased_ungrouped.bed.gz:md5,9a077eb24b17d6511e849c5b533cda64", + "HG002_Revio_A_modkit_pileup_phased_ungrouped.bed.gz.tbi:md5,f569a923cc5204df5dc495354ab83a13", + "HG002_Revio_B_modkit_pileup_phased_1.bed.gz:md5,d8c15e30192ce878d17dffcc0981658a", + "HG002_Revio_B_modkit_pileup_phased_1.bed.gz.tbi:md5,2d400d38de3f45871bffac0ca0d3d7d3", + "HG002_Revio_B_modkit_pileup_phased_2.bed.gz:md5,a2e1291b468361412899cf811022fe72", + "HG002_Revio_B_modkit_pileup_phased_2.bed.gz.tbi:md5,d1c192d65d8fa8cbb8ffa2e545282fde", + "HG002_Revio_B_modkit_pileup_phased_ungrouped.bed.gz:md5,49d9380eb739081b7a0b4dfa7756d09c", + "HG002_Revio_B_modkit_pileup_phased_ungrouped.bed.gz.tbi:md5,f569a923cc5204df5dc495354ab83a13", + "HG002_Revio_A_modkit_pileup.bed.gz:md5,a52bb9ab393e682d0b7118ef2efe5c15", + "HG002_Revio_A_modkit_pileup.bed.gz.tbi:md5,08312c13316ed9b4b582897c210ecb58", + "HG002_Revio_B_modkit_pileup.bed.gz:md5,60f856e145343697ff581e91fda288ff", + "HG002_Revio_B_modkit_pileup.bed.gz.tbi:md5,d04e7a6fb67e9b5a8342ae979bc0e5cd", + "mosdepth_cov_dist.txt:md5,41793745406425cfa02d558875df8d16", + "mosdepth_cumcov_dist.txt:md5,c53933e0b572d115ecd35a5adb3e0a04", + "mosdepth_perchrom.txt:md5,9fd9c40c7a6be06a338f2039a5d91fb8", + "multiqc_bcftools_stats.txt:md5,dbbc176792fbf2845547dfdcd39fc208", "multiqc_citations.txt:md5,a27affce20d456d20ed387097a4f0350", - "multiqc_fastqc.txt:md5,37674ae5d0d56386d87f38158fa18980", - "multiqc_general_stats.txt:md5,68a79ea4ce43f307b6cabc89c5dc3a92", - "multiqc_whatshap_stats.txt:md5,5d5f79e16a07b0ea191d6df9110b9a38", + "multiqc_fastqc.txt:md5,18ca1a3fb2afa8988dc5d604c049cd9c", + "multiqc_general_stats.txt:md5,4a2c114e57d5581b606012d1604d51fa", + "multiqc_whatshap_stats.txt:md5,96447de4e14a9b4a570c24513de64970", "test.ped:md5,24d8694d580f782ed77d4d1b5c6f6fb4", - "HG002_Revio_A_phased.blocks.tsv:md5,c5f81e0cf56763e3a8d4b6c722916bee", - "HG002_Revio_A_phased.stats.tsv:md5,c0421b85a95b90a1239576a9bb5e4ca7", - "HG002_Revio_A_phased.summary.tsv:md5,92ea0b2d8985a9e6435f461cbf7e9533", - "HG002_Revio_B_phased.blocks.tsv:md5,1a8b683f4d2f930758e4af3fe8eccd7f", - "HG002_Revio_B_phased.stats.tsv:md5,4c8866c1a6e5340af08f7a7ee7465b6a", - "HG002_Revio_B_phased.summary.tsv:md5,b8814ea318106ad2a3d4a83853c7e8d2", - "HG002_Revio_A_cramino_aligned_phased.arrow:md5,a76219e9046db32c4b3d6d78425c5d78", - "HG002_Revio_B_cramino_aligned_phased.arrow:md5,3bb08ac5958c6cb0801f319066c3a1b2", - "HG002_Revio_A_cramino_aligned.arrow:md5,a76219e9046db32c4b3d6d78425c5d78", - "HG002_Revio_B_cramino_aligned.arrow:md5,3bb08ac5958c6cb0801f319066c3a1b2", - "HG002_Revio_A.mosdepth.global.dist.txt:md5,63701e857361046628f89cb84988ea1d", - "HG002_Revio_A.mosdepth.region.dist.txt:md5,6b46396518979ff9d9771cb8a8fbbab0", - "HG002_Revio_A.mosdepth.summary.txt:md5,311aad293c6d8a646b6dd4edc337845c", - "HG002_Revio_A.regions.bed.gz:md5,31db0f14146b65e339b54b963c304947", + "HG002_Revio_A_phased.blocks.tsv:md5,27ce044ba581da15ef838cbb343a64cf", + "HG002_Revio_A_phased.stats.tsv:md5,58ae1b01d01b922d022ad025a81f1026", + "HG002_Revio_A_phased.summary.tsv:md5,714496292cba53669081ac3be3078c28", + "HG002_Revio_B_phased.blocks.tsv:md5,07e7c8ebfff969db8d16890aa6a4766b", + "HG002_Revio_B_phased.stats.tsv:md5,f5d83609c032dee6d3056559a5994b15", + "HG002_Revio_B_phased.summary.tsv:md5,4acacb1a89a27ddf4c4ca49c49899245", + "HG002_Revio_A_cramino_aligned_phased.arrow:md5,72df2934ff8aa7e1bf8cf8a4881a0d2a", + "HG002_Revio_B_cramino_aligned_phased.arrow:md5,544a6513e7604d6425a664855212eced", + "HG002_Revio_A_cramino_aligned.arrow:md5,72df2934ff8aa7e1bf8cf8a4881a0d2a", + "HG002_Revio_B_cramino_aligned.arrow:md5,544a6513e7604d6425a664855212eced", + "HG002_Revio_A.mosdepth.global.dist.txt:md5,6186315d4d65eda85553af82a98829d1", + "HG002_Revio_A.mosdepth.region.dist.txt:md5,c6c7ee8f056b8b2b92c97ec472b1db16", + "HG002_Revio_A.mosdepth.summary.txt:md5,35c51f1ad9d2856d1e6446205f19a8e3", + "HG002_Revio_A.regions.bed.gz:md5,e051f64c7a780d67ea6727a327dd4281", "HG002_Revio_A.regions.bed.gz.csi:md5,026eef1c69fb4aa3a1687463fe2088ab", - "HG002_Revio_B.mosdepth.global.dist.txt:md5,5c2dd519f3abc19c00d1a0618cf477d4", - "HG002_Revio_B.mosdepth.region.dist.txt:md5,4a6ccfd85f9837c6c57b3ddaa8c7d263", - "HG002_Revio_B.mosdepth.summary.txt:md5,6c1d1590ed9423552d56ee456c89e6ef", - "HG002_Revio_B.regions.bed.gz:md5,837978e7b90ef81cb5aa015fbe7bb4a6", + "HG002_Revio_B.mosdepth.global.dist.txt:md5,830a8b737fea939dcfea4d1626e60576", + "HG002_Revio_B.mosdepth.region.dist.txt:md5,d4cb66ac28dc6816869a73757226f902", + "HG002_Revio_B.mosdepth.summary.txt:md5,191877ae5228e7880276585557a7b218", + "HG002_Revio_B.regions.bed.gz:md5,9c4c037139c752c60385d3c0b905af7f", "HG002_Revio_B.regions.bed.gz.csi:md5,d0640255d527e36655281f64e184b02c", - "HG002_Revio_A_stats.blocks.tsv:md5,8d898e3d4544dd4bd6a9a3b8221a71cd", - "HG002_Revio_A_stats.stats.tsv:md5,b09849fda8d36260d5e56dd8df175675", - "HG002_Revio_B_stats.blocks.tsv:md5,c3155cb1cc119aea4214f43325c2583f", - "HG002_Revio_B_stats.stats.tsv:md5,5a60b5d1541fc6210834f03370f88160", + "HG002_Revio_A_stats.blocks.tsv:md5,846f21bc3d8dd9e9d68cb00d63484ec2", + "HG002_Revio_A_stats.stats.tsv:md5,1504949804b510cc57d20e2c78fb7294", + "HG002_Revio_B_stats.blocks.tsv:md5,df646f43e67f37df5a9ec148e431d4c3", + "HG002_Revio_B_stats.stats.tsv:md5,40994b57e7c0bafee411bc2ad6ffb79d", "HG002_Revio_A_hificnv.copynum.bedgraph:md5,517bc59c1b235490c79aa8319437b033", - "HG002_Revio_A_hificnv.depth.bw:md5,0d8b56722cc24331be98a2ca5effa3a1", - "HG002_Revio_A_hificnv.maf.bw:md5,3ad9a690c0b66a6e5ad0ef4f23d7e197", + "HG002_Revio_A_hificnv.depth.bw:md5,70211e34c58cd83f6c9c6f2a8bda4a3b", + "HG002_Revio_A_hificnv.maf.bw:md5,8340a82b7b3da36383511631ed21066c", "HG002_Revio_B_hificnv.copynum.bedgraph:md5,42095da173e46804977bbbecc2fda3aa", - "HG002_Revio_B_hificnv.depth.bw:md5,d196df40f045597b28826bd090757d3a", - "HG002_Revio_B_hificnv.maf.bw:md5,87214af821c75080a20a8fa716176013" + "HG002_Revio_B_hificnv.depth.bw:md5,f49416b122b334f3defe7bee6dd60d48", + "HG002_Revio_B_hificnv.maf.bw:md5,186a7500b0c039650f726480e44b621d" ], [ [ "HG002_Revio_A_haplotagged.bam", - "5df05408bd4f18a4ef1555bc5800601a" + "74b4822241bd8d1bc42f494f1f3e326c" ], [ "HG002_Revio_B_haplotagged.bam", - "e9aea8a85ecd1b9dde90e1a08e4a390d" + "4fc125e25365fa6e33193fd436ae135d" ], [ "HG002_Revio_A.hap1.bam", @@ -644,11 +644,11 @@ ], [ "HG002_Revio_A_phased.vcf.gz", - "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=252, phased=false, phasedAutodetect=false]" + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=191, phased=false, phasedAutodetect=false]" ], [ "HG002_Revio_B_phased.vcf.gz", - "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=252, phased=false, phasedAutodetect=false]" + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=191, phased=false, phasedAutodetect=false]" ], [ "HG002_Revio_A_repeat_expansion_stranger.vcf.gz", @@ -672,19 +672,19 @@ ], [ "test_snv_annotated_ranked.vcf.gz", - "VcfFile [chromosomes=[chrX, chr16], sampleCount=2, variantCount=106, phased=false, phasedAutodetect=false]" + "VcfFile [chromosomes=[chrX, chr16], sampleCount=2, variantCount=104, phased=false, phasedAutodetect=false]" ], [ "HG002_Revio_A_snv_annotated_ranked.vcf.gz", - "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=106, phased=false, phasedAutodetect=false]" + "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=100, phased=false, phasedAutodetect=false]" ], [ "HG002_Revio_B_snv_annotated_ranked.vcf.gz", - "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=105, phased=false, phasedAutodetect=false]" + "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=100, phased=false, phasedAutodetect=false]" ], [ "FAM_svs_cnvs_merged_annotated.vcf.gz", - "VcfFile [chromosomes=[chrX, chr16], sampleCount=2, variantCount=85, phased=false, phasedAutodetect=false]" + "VcfFile [chromosomes=[chrX, chr16], sampleCount=2, variantCount=87, phased=false, phasedAutodetect=false]" ], [ "HG002_Revio_A_cnvs.vcf.gz", @@ -692,7 +692,7 @@ ], [ "HG002_Revio_A_svs.vcf.gz", - "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=53, phased=false, phasedAutodetect=false]" + "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=55, phased=false, phasedAutodetect=false]" ], [ "HG002_Revio_B_cnvs.vcf.gz", @@ -700,7 +700,7 @@ ], [ "HG002_Revio_B_svs.vcf.gz", - "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=53, phased=false, phasedAutodetect=false]" + "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=55, phased=false, phasedAutodetect=false]" ] ], [ @@ -746,6 +746,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-29T08:05:02.617396332" + "timestamp": "2024-10-30T08:30:23.614281608" } } \ No newline at end of file From e3098c6d25ca4563ae3cc2173e08d1b8fdb6b745 Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Wed, 30 Oct 2024 10:18:00 +0100 Subject: [PATCH 047/106] Update genmod to fix models (#444) * Update genmod to fix models * Update CHANGELOG.md --- CHANGELOG.md | 3 +- modules.json | 8 +-- .../nf-core/genmod/annotate/environment.yml | 2 +- modules/nf-core/genmod/annotate/main.nf | 6 +-- .../genmod/annotate/tests/main.nf.test | 31 +++++++++++- .../genmod/annotate/tests/main.nf.test.snap | 50 +++++++++++++++++++ .../nf-core/genmod/compound/environment.yml | 2 +- modules/nf-core/genmod/compound/main.nf | 6 +-- .../genmod/compound/tests/main.nf.test | 31 +++++++++++- .../genmod/compound/tests/main.nf.test.snap | 50 +++++++++++++++++++ modules/nf-core/genmod/models/environment.yml | 2 +- modules/nf-core/genmod/models/main.nf | 6 +-- .../nf-core/genmod/models/tests/main.nf.test | 32 +++++++++++- .../genmod/models/tests/main.nf.test.snap | 50 +++++++++++++++++++ modules/nf-core/genmod/score/environment.yml | 2 +- modules/nf-core/genmod/score/main.nf | 6 +-- .../nf-core/genmod/score/tests/main.nf.test | 33 +++++++++++- .../genmod/score/tests/main.nf.test.snap | 50 +++++++++++++++++++ .../rank_variants/tests/main.nf.test.snap | 22 ++++---- tests/samplesheet.nf.test.snap | 10 ++-- .../samplesheet_multisample_bam.nf.test.snap | 10 ++-- ...mplesheet_multisample_ont_bam.nf.test.snap | 14 +++--- 22 files changed, 369 insertions(+), 57 deletions(-) create mode 100644 modules/nf-core/genmod/annotate/tests/main.nf.test.snap create mode 100644 modules/nf-core/genmod/compound/tests/main.nf.test.snap create mode 100644 modules/nf-core/genmod/models/tests/main.nf.test.snap create mode 100644 modules/nf-core/genmod/score/tests/main.nf.test.snap diff --git a/CHANGELOG.md b/CHANGELOG.md index a896c863..8a5c78b7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -87,6 +87,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#393](https://github.com/genomic-medicine-sweden/nallo/pull/393) - Fixed minimap2 preset for ONT data being overwritten to `map-ont` when it should have been `lr:hq`, due to different settings in index and alignment processes [#392](https://github.com/genomic-medicine-sweden/nallo/issues/392) - [#402](https://github.com/genomic-medicine-sweden/nallo/pull/402) - Fixed double sample names in HiFiCNV output - [#438](https://github.com/genomic-medicine-sweden/nallo/pull/438) - Fixed missing/malformed software versions in `ADD_FOUND_IN_TAG`, `ADD_MOST_SEVERE_CSQ`, `ADD_MOST_SEVERE_PLI`, `SAMPLESHEET_PED`, `SOMALIER_PED` and `TRGT` +- [#444](https://github.com/genomic-medicine-sweden/nallo/pull/444) - Fixed genmod assigning wrong models on chromosome X when named `chrX` ([#343](https://github.com/genomic-medicine-sweden/nallo/issues/343)) ### Parameters @@ -118,7 +119,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 | fqcrs | 0.1.0 | | severus | | 1.1 | | longphase  |   | 1.7.3   | -| genmod | 3.8.2 | 3.8.3 | +| genmod | 3.8.2 | 3.9 | | WhatsHap | 2.2 | 2.3 | | SVDB | | 2.8.1 | | hifiasm | 0.19.8 | 0.20.0 | diff --git a/modules.json b/modules.json index f3a6139d..6dd77792 100644 --- a/modules.json +++ b/modules.json @@ -99,22 +99,22 @@ }, "genmod/annotate": { "branch": "master", - "git_sha": "55692e15e2ef8be6b37ad1475944a338770b4b3e", + "git_sha": "91a84f951358143e93dc9e03470db4e6a4a7105c", "installed_by": ["modules"] }, "genmod/compound": { "branch": "master", - "git_sha": "55692e15e2ef8be6b37ad1475944a338770b4b3e", + "git_sha": "91a84f951358143e93dc9e03470db4e6a4a7105c", "installed_by": ["modules"] }, "genmod/models": { "branch": "master", - "git_sha": "55692e15e2ef8be6b37ad1475944a338770b4b3e", + "git_sha": "91a84f951358143e93dc9e03470db4e6a4a7105c", "installed_by": ["modules"] }, "genmod/score": { "branch": "master", - "git_sha": "55692e15e2ef8be6b37ad1475944a338770b4b3e", + "git_sha": "91a84f951358143e93dc9e03470db4e6a4a7105c", "installed_by": ["modules"] }, "gfastats": { diff --git a/modules/nf-core/genmod/annotate/environment.yml b/modules/nf-core/genmod/annotate/environment.yml index bbc3fd97..227ee892 100644 --- a/modules/nf-core/genmod/annotate/environment.yml +++ b/modules/nf-core/genmod/annotate/environment.yml @@ -2,4 +2,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::genmod=3.8.3 + - bioconda::genmod=3.9 diff --git a/modules/nf-core/genmod/annotate/main.nf b/modules/nf-core/genmod/annotate/main.nf index 033caa9a..0b8b232d 100644 --- a/modules/nf-core/genmod/annotate/main.nf +++ b/modules/nf-core/genmod/annotate/main.nf @@ -4,15 +4,15 @@ process GENMOD_ANNOTATE { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/genmod:3.8.3--pyhdfd78af_0': - 'biocontainers/genmod:3.8.3--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/genmod:3.9--pyhdfd78af_0': + 'biocontainers/genmod:3.9--pyhdfd78af_0' }" input: tuple val(meta), path(input_vcf) output: tuple val(meta), path("*_annotate.vcf"), emit: vcf - path "versions.yml" , emit: versions + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when diff --git a/modules/nf-core/genmod/annotate/tests/main.nf.test b/modules/nf-core/genmod/annotate/tests/main.nf.test index d17ebc9e..a4b3fccb 100644 --- a/modules/nf-core/genmod/annotate/tests/main.nf.test +++ b/modules/nf-core/genmod/annotate/tests/main.nf.test @@ -24,8 +24,35 @@ nextflow_process { then { assertAll( - {assert process.success}, - {assert path(process.out.vcf.get(0).get(1)).readLines().contains("##fileformat=VCFv4.2")} + { assert process.success }, + { assert snapshot( + process.out.versions, + path(process.out.vcf.get(0).get(1)).vcf.summary, + ).match() } + ) + } + + } + + test("genmod_annotate - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/vcf/genmod.vcf.gz', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } ) } diff --git a/modules/nf-core/genmod/annotate/tests/main.nf.test.snap b/modules/nf-core/genmod/annotate/tests/main.nf.test.snap new file mode 100644 index 00000000..402b5c01 --- /dev/null +++ b/modules/nf-core/genmod/annotate/tests/main.nf.test.snap @@ -0,0 +1,50 @@ +{ + "genmod_annotate": { + "content": [ + [ + "versions.yml:md5,6ce3597967a536ab027d02f75d02056c" + ], + "VcfFile [chromosomes=[1], sampleCount=3, variantCount=57, phased=false, phasedAutodetect=false]" + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-25T11:44:57.176895794" + }, + "genmod_annotate - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test_annotate.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,6ce3597967a536ab027d02f75d02056c" + ], + "vcf": [ + [ + { + "id": "test", + "single_end": false + }, + "test_annotate.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,6ce3597967a536ab027d02f75d02056c" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-25T11:49:16.409331019" + } +} \ No newline at end of file diff --git a/modules/nf-core/genmod/compound/environment.yml b/modules/nf-core/genmod/compound/environment.yml index bbc3fd97..227ee892 100644 --- a/modules/nf-core/genmod/compound/environment.yml +++ b/modules/nf-core/genmod/compound/environment.yml @@ -2,4 +2,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::genmod=3.8.3 + - bioconda::genmod=3.9 diff --git a/modules/nf-core/genmod/compound/main.nf b/modules/nf-core/genmod/compound/main.nf index 4831da85..ca6a22a1 100644 --- a/modules/nf-core/genmod/compound/main.nf +++ b/modules/nf-core/genmod/compound/main.nf @@ -4,15 +4,15 @@ process GENMOD_COMPOUND { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/genmod:3.8.3--pyhdfd78af_0': - 'biocontainers/genmod:3.8.3--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/genmod:3.9--pyhdfd78af_0': + 'biocontainers/genmod:3.9--pyhdfd78af_0' }" input: tuple val(meta), path(input_vcf) output: tuple val(meta), path("*_compound.vcf"), emit: vcf - path "versions.yml" , emit: versions + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when diff --git a/modules/nf-core/genmod/compound/tests/main.nf.test b/modules/nf-core/genmod/compound/tests/main.nf.test index 43ed9f0d..4c667c17 100644 --- a/modules/nf-core/genmod/compound/tests/main.nf.test +++ b/modules/nf-core/genmod/compound/tests/main.nf.test @@ -23,8 +23,35 @@ nextflow_process { then { assertAll( - {assert process.success}, - {assert path(process.out.vcf.get(0).get(1)).readLines().contains("##fileformat=VCFv4.2")} + { assert process.success }, + { assert snapshot( + process.out.versions, + path(process.out.vcf.get(0).get(1)).vcf.summary, + ).match() } + ) + } + + } + + test("genmod_compound - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/vcf/genmod_compound.vcf', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } ) } diff --git a/modules/nf-core/genmod/compound/tests/main.nf.test.snap b/modules/nf-core/genmod/compound/tests/main.nf.test.snap new file mode 100644 index 00000000..b114cc33 --- /dev/null +++ b/modules/nf-core/genmod/compound/tests/main.nf.test.snap @@ -0,0 +1,50 @@ +{ + "genmod_compound": { + "content": [ + [ + "versions.yml:md5,822fb501a48a6f8c28ba8f678d27ba2e" + ], + "VcfFile [chromosomes=[MT], sampleCount=3, variantCount=22, phased=false, phasedAutodetect=false]" + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-25T11:49:41.417545149" + }, + "genmod_compound - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test_compound.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,822fb501a48a6f8c28ba8f678d27ba2e" + ], + "vcf": [ + [ + { + "id": "test", + "single_end": false + }, + "test_compound.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,822fb501a48a6f8c28ba8f678d27ba2e" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-25T11:49:48.678803012" + } +} \ No newline at end of file diff --git a/modules/nf-core/genmod/models/environment.yml b/modules/nf-core/genmod/models/environment.yml index bbc3fd97..227ee892 100644 --- a/modules/nf-core/genmod/models/environment.yml +++ b/modules/nf-core/genmod/models/environment.yml @@ -2,4 +2,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::genmod=3.8.3 + - bioconda::genmod=3.9 diff --git a/modules/nf-core/genmod/models/main.nf b/modules/nf-core/genmod/models/main.nf index 90c1fd48..ff71b660 100644 --- a/modules/nf-core/genmod/models/main.nf +++ b/modules/nf-core/genmod/models/main.nf @@ -4,8 +4,8 @@ process GENMOD_MODELS { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/genmod:3.8.3--pyhdfd78af_0': - 'biocontainers/genmod:3.8.3--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/genmod:3.9--pyhdfd78af_0': + 'biocontainers/genmod:3.9--pyhdfd78af_0' }" input: tuple val(meta), path(input_vcf) @@ -14,7 +14,7 @@ process GENMOD_MODELS { output: tuple val(meta), path("*_models.vcf"), emit: vcf - path "versions.yml" , emit: versions + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when diff --git a/modules/nf-core/genmod/models/tests/main.nf.test b/modules/nf-core/genmod/models/tests/main.nf.test index 9eba8dd5..afa85dfc 100644 --- a/modules/nf-core/genmod/models/tests/main.nf.test +++ b/modules/nf-core/genmod/models/tests/main.nf.test @@ -25,11 +25,39 @@ nextflow_process { then { assertAll( - {assert process.success}, - {assert path(process.out.vcf.get(0).get(1)).readLines().contains("##fileformat=VCFv4.2")} + { assert process.success }, + { assert snapshot( + process.out.versions, + path(process.out.vcf.get(0).get(1)).vcf.summary, + ).match() } ) } } + test("genmod_models - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/vcf/test_annotate.vcf.gz', checkIfExists: true) + ] + input[1] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/vcf/ped/justhusky.ped', checkIfExists: true) + input[2] = [] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } } diff --git a/modules/nf-core/genmod/models/tests/main.nf.test.snap b/modules/nf-core/genmod/models/tests/main.nf.test.snap new file mode 100644 index 00000000..7484a7fd --- /dev/null +++ b/modules/nf-core/genmod/models/tests/main.nf.test.snap @@ -0,0 +1,50 @@ +{ + "genmod_models - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test_models.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,10442b1602069000967f51837d7b5b63" + ], + "vcf": [ + [ + { + "id": "test", + "single_end": false + }, + "test_models.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,10442b1602069000967f51837d7b5b63" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-25T11:51:04.841425679" + }, + "genmod_models": { + "content": [ + [ + "versions.yml:md5,10442b1602069000967f51837d7b5b63" + ], + "VcfFile [chromosomes=[1], sampleCount=3, variantCount=57, phased=false, phasedAutodetect=false]" + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-25T11:49:56.642318737" + } +} \ No newline at end of file diff --git a/modules/nf-core/genmod/score/environment.yml b/modules/nf-core/genmod/score/environment.yml index bbc3fd97..227ee892 100644 --- a/modules/nf-core/genmod/score/environment.yml +++ b/modules/nf-core/genmod/score/environment.yml @@ -2,4 +2,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::genmod=3.8.3 + - bioconda::genmod=3.9 diff --git a/modules/nf-core/genmod/score/main.nf b/modules/nf-core/genmod/score/main.nf index 522e05b6..41d57bdc 100644 --- a/modules/nf-core/genmod/score/main.nf +++ b/modules/nf-core/genmod/score/main.nf @@ -4,8 +4,8 @@ process GENMOD_SCORE { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/genmod:3.8.3--pyhdfd78af_0': - 'biocontainers/genmod:3.8.3--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/genmod:3.9--pyhdfd78af_0': + 'biocontainers/genmod:3.9--pyhdfd78af_0' }" input: tuple val(meta), path(input_vcf) @@ -14,7 +14,7 @@ process GENMOD_SCORE { output: tuple val(meta), path("*_score.vcf"), emit: vcf - path "versions.yml" , emit: versions + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when diff --git a/modules/nf-core/genmod/score/tests/main.nf.test b/modules/nf-core/genmod/score/tests/main.nf.test index 030ef6ba..98c8f35a 100644 --- a/modules/nf-core/genmod/score/tests/main.nf.test +++ b/modules/nf-core/genmod/score/tests/main.nf.test @@ -25,8 +25,37 @@ nextflow_process { then { assertAll( - {assert process.success}, - {assert path(process.out.vcf.get(0).get(1)).readLines().contains("##fileformat=VCFv4.2")} + { assert process.success }, + { assert snapshot( + process.out.versions, + path(process.out.vcf.get(0).get(1)).vcf.summary, + ).match() } + ) + } + + } + + test("genmod_score - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/vcf/test_models.vcf.gz', checkIfExists: true) + ] + input[1] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/vcf/ped/justhusky.ped', checkIfExists: true) + input[2] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/genmod/svrank_model_-v1.8-.ini', checkIfExists: true) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } ) } diff --git a/modules/nf-core/genmod/score/tests/main.nf.test.snap b/modules/nf-core/genmod/score/tests/main.nf.test.snap new file mode 100644 index 00000000..b484b8e1 --- /dev/null +++ b/modules/nf-core/genmod/score/tests/main.nf.test.snap @@ -0,0 +1,50 @@ +{ + "genmod_score": { + "content": [ + [ + "versions.yml:md5,f310225b3c35456e84d52e2c400e2fd8" + ], + "VcfFile [chromosomes=[1], sampleCount=3, variantCount=57, phased=false, phasedAutodetect=false]" + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-25T11:50:12.03483811" + }, + "genmod_score - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test_score.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,f310225b3c35456e84d52e2c400e2fd8" + ], + "vcf": [ + [ + { + "id": "test", + "single_end": false + }, + "test_score.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,f310225b3c35456e84d52e2c400e2fd8" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-25T11:50:19.675962486" + } +} \ No newline at end of file diff --git a/subworkflows/local/rank_variants/tests/main.nf.test.snap b/subworkflows/local/rank_variants/tests/main.nf.test.snap index 178ee057..1522f705 100644 --- a/subworkflows/local/rank_variants/tests/main.nf.test.snap +++ b/subworkflows/local/rank_variants/tests/main.nf.test.snap @@ -33,11 +33,11 @@ ] ], "2": [ - "versions.yml:md5,58de7735498cf84a4284050260b6f929", - "versions.yml:md5,789b8f834c7851ecd93b3488aa0236da", - "versions.yml:md5,a1990357a1ce026de4ba955c877c2430", - "versions.yml:md5,f56d4e953de59ea23842d33c16e914cf", - "versions.yml:md5,f9b69655d279838966e636810ae15f5a" + "versions.yml:md5,7089dd9c4bcb1dc87f15d3b1a9d5e89d", + "versions.yml:md5,c9446a89a358fa2126b666399c2c804e", + "versions.yml:md5,cc68e7d53d2d24006094e28d37db20a8", + "versions.yml:md5,dd0a9b5a3a16e3bfdcea734de4509dce", + "versions.yml:md5,f56d4e953de59ea23842d33c16e914cf" ], "tbi": [ [ @@ -60,11 +60,11 @@ ] ], "versions": [ - "versions.yml:md5,58de7735498cf84a4284050260b6f929", - "versions.yml:md5,789b8f834c7851ecd93b3488aa0236da", - "versions.yml:md5,a1990357a1ce026de4ba955c877c2430", - "versions.yml:md5,f56d4e953de59ea23842d33c16e914cf", - "versions.yml:md5,f9b69655d279838966e636810ae15f5a" + "versions.yml:md5,7089dd9c4bcb1dc87f15d3b1a9d5e89d", + "versions.yml:md5,c9446a89a358fa2126b666399c2c804e", + "versions.yml:md5,cc68e7d53d2d24006094e28d37db20a8", + "versions.yml:md5,dd0a9b5a3a16e3bfdcea734de4509dce", + "versions.yml:md5,f56d4e953de59ea23842d33c16e914cf" ] } ], @@ -72,6 +72,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-18T13:48:10.616656902" + "timestamp": "2024-10-29T09:06:31.363029566" } } \ No newline at end of file diff --git a/tests/samplesheet.nf.test.snap b/tests/samplesheet.nf.test.snap index eb2ddf76..08c88aaf 100644 --- a/tests/samplesheet.nf.test.snap +++ b/tests/samplesheet.nf.test.snap @@ -94,16 +94,16 @@ "fastqc": "0.12.1" }, "GENMOD_ANNOTATE": { - "genmod": "3.8.3" + "genmod": 3.9 }, "GENMOD_COMPOUND": { - "genmod": "3.8.3" + "genmod": 3.9 }, "GENMOD_MODELS": { - "genmod": "3.8.3" + "genmod": 3.9 }, "GENMOD_SCORE": { - "genmod": "3.8.3" + "genmod": 3.9 }, "GFASTATS_MATERNAL": { "gfastats": "1.3.6" @@ -546,6 +546,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-30T08:28:49.483885889" + "timestamp": "2024-10-30T08:33:56.258093996" } } \ No newline at end of file diff --git a/tests/samplesheet_multisample_bam.nf.test.snap b/tests/samplesheet_multisample_bam.nf.test.snap index f270dc75..4ca6e6b0 100644 --- a/tests/samplesheet_multisample_bam.nf.test.snap +++ b/tests/samplesheet_multisample_bam.nf.test.snap @@ -94,16 +94,16 @@ "fastqc": "0.12.1" }, "GENMOD_ANNOTATE": { - "genmod": "3.8.3" + "genmod": 3.9 }, "GENMOD_COMPOUND": { - "genmod": "3.8.3" + "genmod": 3.9 }, "GENMOD_MODELS": { - "genmod": "3.8.3" + "genmod": 3.9 }, "GENMOD_SCORE": { - "genmod": "3.8.3" + "genmod": 3.9 }, "GFASTATS_MATERNAL": { "gfastats": "1.3.6" @@ -746,6 +746,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-30T08:30:23.614281608" + "timestamp": "2024-10-30T08:35:33.241655745" } } \ No newline at end of file diff --git a/tests/samplesheet_multisample_ont_bam.nf.test.snap b/tests/samplesheet_multisample_ont_bam.nf.test.snap index 63f556cc..7bce4132 100644 --- a/tests/samplesheet_multisample_ont_bam.nf.test.snap +++ b/tests/samplesheet_multisample_ont_bam.nf.test.snap @@ -82,16 +82,16 @@ "fastqc": "0.12.1" }, "GENMOD_ANNOTATE": { - "genmod": "3.8.3" + "genmod": 3.9 }, "GENMOD_COMPOUND": { - "genmod": "3.8.3" + "genmod": 3.9 }, "GENMOD_MODELS": { - "genmod": "3.8.3" + "genmod": 3.9 }, "GENMOD_SCORE": { - "genmod": "3.8.3" + "genmod": 3.9 }, "GLNEXUS": { "glnexus": "1.4.3-0-gcecf42e" @@ -483,13 +483,13 @@ ] ], [ - + ] ], "meta": { "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-29T08:10:12.368361834" + "timestamp": "2024-10-30T08:37:01.633018038" } -} +} \ No newline at end of file From 9000326c61f0b100c77419fec2b87beabfa9e810 Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Wed, 30 Oct 2024 11:16:04 +0100 Subject: [PATCH 048/106] Add found_in tag to call repeat expansions (#445) --- .github/workflows/ci.yml | 1 + CHANGELOG.md | 1 + modules/local/trgt/main.nf | 15 +- .../local/call_repeat_expansions/main.nf | 48 +++++-- .../call_repeat_expansions/tests/main.nf.test | 99 ++++++++++++++ .../tests/main.nf.test.snap | 128 ++++++++++++++++++ .../tests/nextflow.config | 11 ++ tests/samplesheet.nf.test.snap | 10 +- .../samplesheet_multisample_bam.nf.test.snap | 14 +- workflows/nallo.nf | 2 +- 10 files changed, 302 insertions(+), 27 deletions(-) create mode 100644 subworkflows/local/call_repeat_expansions/tests/main.nf.test create mode 100644 subworkflows/local/call_repeat_expansions/tests/main.nf.test.snap create mode 100644 subworkflows/local/call_repeat_expansions/tests/nextflow.config diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 346f8279..2c7daaeb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -39,6 +39,7 @@ jobs: - "CALL_SVS" - "ANNOTATE_SVS" - "RANK_VARIANTS" + - "CALL_REPEAT_EXPANSIONS" profile: - "docker" diff --git a/CHANGELOG.md b/CHANGELOG.md index 8a5c78b7..53949c87 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -29,6 +29,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#430](https://github.com/genomic-medicine-sweden/nallo/pull/430) - Added a GitHub action to build and publish docs to GitHub Pages - [#431](https://github.com/genomic-medicine-sweden/nallo/pull/431) - Added files needed to automatically build and publish docs to GitHub Pages - [#435](https://github.com/genomic-medicine-sweden/nallo/pull/435) - Added nf-test to rank variants +- [#445](https://github.com/genomic-medicine-sweden/nallo/pull/445) - Added FOUND_IN tag and nf-test to rank variants ### `Changed` diff --git a/modules/local/trgt/main.nf b/modules/local/trgt/main.nf index 3d2a34db..e4ce8278 100644 --- a/modules/local/trgt/main.nf +++ b/modules/local/trgt/main.nf @@ -9,7 +9,7 @@ process TRGT { tuple val(meta), path(bam), path(bai), val(sex) tuple val(meta2), path(fasta) tuple val(meta3), path(fai) - path(repeats) + tuple val(meta4), path(repeats) output: tuple val(meta), path("${meta.id}.spanning.bam"), emit: bam @@ -40,6 +40,19 @@ process TRGT { --output-prefix ${meta.id} + cat <<-END_VERSIONS > versions.yml + "${task.process}": + trgt: \$(echo \$(trgt -V) | sed 's/trgt //' ) + END_VERSIONS + """ + + stub: + prefix = task.ext.prefix ?: "${meta.id}" + + """ + echo | gzip > ${prefix}.vcf.gz + touch ${prefix}.spanning.bam + cat <<-END_VERSIONS > versions.yml "${task.process}": trgt: \$(echo \$(trgt -V) | sed 's/trgt //' ) diff --git a/subworkflows/local/call_repeat_expansions/main.nf b/subworkflows/local/call_repeat_expansions/main.nf index 36d55256..ed34b7f3 100644 --- a/subworkflows/local/call_repeat_expansions/main.nf +++ b/subworkflows/local/call_repeat_expansions/main.nf @@ -1,3 +1,4 @@ +include { ADD_FOUND_IN_TAG } from '../../../modules/local/add_found_in_tag/main' include { TRGT } from '../../../modules/local/trgt' include { SAMTOOLS_INDEX as SAMTOOLS_INDEX_TRGT } from '../../../modules/nf-core/samtools/index/main' include { SAMTOOLS_SORT as SAMTOOLS_SORT_TRGT } from '../../../modules/nf-core/samtools/sort/main' @@ -21,14 +22,33 @@ workflow CALL_REPEAT_EXPANSIONS { .set { ch_trgt_input } // Run TGRT - TRGT ( ch_trgt_input, ch_fasta, ch_fai, ch_trgt_bed.map { it[1] } ) + TRGT ( + ch_trgt_input, + ch_fasta, + ch_fai, + ch_trgt_bed + ) + ch_versions = ch_versions.mix(TRGT.out.versions) // Sort and index bam - SAMTOOLS_SORT_TRGT ( TRGT.out.bam, [[],[]] ) - SAMTOOLS_INDEX_TRGT(SAMTOOLS_SORT_TRGT.out.bam) + SAMTOOLS_SORT_TRGT ( + TRGT.out.bam, + [[],[]] + ) + ch_versions = ch_versions.mix(SAMTOOLS_SORT_TRGT.out.versions) + + SAMTOOLS_INDEX_TRGT ( SAMTOOLS_SORT_TRGT.out.bam ) + ch_versions = ch_versions.mix(SAMTOOLS_INDEX_TRGT.out.versions) + + // Add FOUND_IN=TRGT tag + ADD_FOUND_IN_TAG ( + TRGT.out.vcf.map { meta, vcf -> [ meta, vcf, [] ] }, + "TRGT" + ) // Sort and index bcf - BCFTOOLS_SORT_TRGT(TRGT.out.vcf) + BCFTOOLS_SORT_TRGT ( ADD_FOUND_IN_TAG.out.vcf ) + ch_versions = ch_versions.mix(BCFTOOLS_SORT_TRGT.out.versions) BCFTOOLS_SORT_TRGT.out.vcf .join( BCFTOOLS_SORT_TRGT.out.tbi ) @@ -36,17 +56,19 @@ workflow CALL_REPEAT_EXPANSIONS { .groupTuple() .set{ ch_bcftools_merge_in } - BCFTOOLS_MERGE ( ch_bcftools_merge_in, ch_fasta, ch_fai, [[],[]] ) - - - ch_versions = ch_versions.mix(TRGT.out.versions) - ch_versions = ch_versions.mix(SAMTOOLS_SORT_TRGT.out.versions) - ch_versions = ch_versions.mix(SAMTOOLS_INDEX_TRGT.out.versions) - ch_versions = ch_versions.mix(BCFTOOLS_SORT_TRGT.out.versions) + BCFTOOLS_MERGE ( + ch_bcftools_merge_in, + ch_fasta, + ch_fai, + [[],[]] + ) ch_versions = ch_versions.mix(BCFTOOLS_MERGE.out.versions) emit: - vcf = BCFTOOLS_SORT_TRGT.out.vcf // channel: [ val(meta), path(vcf) ] - versions = ch_versions // channel: [ versions.yml ] + sample_vcf = BCFTOOLS_SORT_TRGT.out.vcf // channel: [ val(meta), path(vcf) ] + project_vcf = BCFTOOLS_MERGE.out.vcf // channel: [ val(meta), path(vcf) ] + sample_bam = SAMTOOLS_SORT_TRGT.out.bam // channel: [ val(meta), path(bam) ] + sample_bai = SAMTOOLS_INDEX_TRGT.out.bai // channel: [ val(meta), path(bai) ] + versions = ch_versions // channel: [ versions.yml ] } diff --git a/subworkflows/local/call_repeat_expansions/tests/main.nf.test b/subworkflows/local/call_repeat_expansions/tests/main.nf.test new file mode 100644 index 00000000..84349c1b --- /dev/null +++ b/subworkflows/local/call_repeat_expansions/tests/main.nf.test @@ -0,0 +1,99 @@ +nextflow_workflow { + + name "Test Workflow CALL_REPEAT_EXPANSIONS" + script "../main.nf" + config "./nextflow.config" + workflow "CALL_REPEAT_EXPANSIONS" + + setup { + run("GUNZIP") { + script "../../../../modules/nf-core/gunzip/main.nf" + process { + """ + input[0] = [ + [ id:'test' ], + file(params.pipelines_testdata_base_path + 'reference/hg38.test.fa.gz', checkIfExists: true) + ] + """ + } + + } + + run("SAMTOOLS_FAIDX") { + script "../../../../modules/nf-core/samtools/faidx/main.nf" + process { + """ + input[0] = GUNZIP.out.gunzip + input[1] = [[],[]] + """ + } + + } + } + + test("[bam, bai], fasta, fai, bed") { + + when { + workflow { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false, project: 'project', sex: 1 ], // meta map + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam', checkIfExists: true), + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) + ]) + input[1] = GUNZIP.out.gunzip + input[2] = SAMTOOLS_FAIDX.out.fai + input[3] = Channel.of([ + [ id: 'pathogenic_repeats' ], + file(params.pipelines_testdata_base_path + 'reference/pathogenic_repeats.hg38.bed') + ]) + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert workflow.out.sample_bai.get(0).get(1).endsWith(".bai") }, + { assert snapshot( + path(workflow.out.sample_vcf.get(0).get(1)).vcf.variantsMD5, + path(workflow.out.project_vcf.get(0).get(1)).vcf.variantsMD5, + bam(workflow.out.sample_bam.get(0).get(1), stringency: 'silent').getReadsMD5(), + workflow.out.versions, + ).match() } + ) + } + + } + + test("[bam, bai], fasta, fai, bed - stub") { + + options "-stub" + + when { + workflow { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false, project: 'project', sex: 1 ], // meta map + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam', checkIfExists: true), + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) + ]) + input[1] = GUNZIP.out.gunzip + input[2] = SAMTOOLS_FAIDX.out.fai + input[3] = Channel.of([ + [ id: 'pathogenic_repeats' ], + file(params.pipelines_testdata_base_path + 'reference/pathogenic_repeats.hg38.bed') + ]) + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out).match() } + ) + } + + } +} diff --git a/subworkflows/local/call_repeat_expansions/tests/main.nf.test.snap b/subworkflows/local/call_repeat_expansions/tests/main.nf.test.snap new file mode 100644 index 00000000..768fb131 --- /dev/null +++ b/subworkflows/local/call_repeat_expansions/tests/main.nf.test.snap @@ -0,0 +1,128 @@ +{ + "[bam, bai], fasta, fai, bed": { + "content": [ + "502b7befd528ce70b8269a8e4b9281df", + "1de84bd070a82b37e6fac25d19ae604e", + "65999ab8f2bc7841de8172468bf23ab6", + [ + "versions.yml:md5,52272b464e62cb9e5d41622ea76cd070", + "versions.yml:md5,6576546ea5cf2a0cb6438b4c6758fd1e", + "versions.yml:md5,799b136592e7434ff7eb9ddcc70e7e41", + "versions.yml:md5,8a4b29c3089d4b00cfe6c5c39b88d1ab", + "versions.yml:md5,b9424dde80b33e84164cc956a14aa459" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-29T10:47:08.425030144" + }, + "[bam, bai], fasta, fai, bed - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false, + "project": "project", + "sex": 1 + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + [ + { + "id": "project" + }, + "project.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": false, + "project": "project", + "sex": 1 + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "test", + "single_end": false, + "project": "project", + "sex": 1 + }, + "test.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + "versions.yml:md5,52272b464e62cb9e5d41622ea76cd070", + "versions.yml:md5,6576546ea5cf2a0cb6438b4c6758fd1e", + "versions.yml:md5,799b136592e7434ff7eb9ddcc70e7e41", + "versions.yml:md5,8a4b29c3089d4b00cfe6c5c39b88d1ab", + "versions.yml:md5,b9424dde80b33e84164cc956a14aa459" + ], + "project_vcf": [ + [ + { + "id": "project" + }, + "project.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "sample_bai": [ + [ + { + "id": "test", + "single_end": false, + "project": "project", + "sex": 1 + }, + "test.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "sample_bam": [ + [ + { + "id": "test", + "single_end": false, + "project": "project", + "sex": 1 + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "sample_vcf": [ + [ + { + "id": "test", + "single_end": false, + "project": "project", + "sex": 1 + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,52272b464e62cb9e5d41622ea76cd070", + "versions.yml:md5,6576546ea5cf2a0cb6438b4c6758fd1e", + "versions.yml:md5,799b136592e7434ff7eb9ddcc70e7e41", + "versions.yml:md5,8a4b29c3089d4b00cfe6c5c39b88d1ab", + "versions.yml:md5,b9424dde80b33e84164cc956a14aa459" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-30T11:00:04.845039812" + } +} \ No newline at end of file diff --git a/subworkflows/local/call_repeat_expansions/tests/nextflow.config b/subworkflows/local/call_repeat_expansions/tests/nextflow.config new file mode 100644 index 00000000..d056805e --- /dev/null +++ b/subworkflows/local/call_repeat_expansions/tests/nextflow.config @@ -0,0 +1,11 @@ +process { + withName: 'CALL_REPEAT_EXPANSIONS:BCFTOOLS_MERGE' { + ext.args = '--output-type z --force-single --no-version' + } + withName: 'CALL_REPEAT_EXPANSIONS:BCFTOOLS_SORT_TRGT' { + ext.args = '--output-type z --write-index=tbi' + } + withName: 'CALL_REPEAT_EXPANSIONS:TRGT' { + ext.args = { "--sample-name ${meta.id}" } + } +} diff --git a/tests/samplesheet.nf.test.snap b/tests/samplesheet.nf.test.snap index 08c88aaf..838d5318 100644 --- a/tests/samplesheet.nf.test.snap +++ b/tests/samplesheet.nf.test.snap @@ -1,7 +1,7 @@ { "test profile": { "content": [ - 103, + 104, { "ADD_FOUND_IN_TAG": { "bcftools": 1.2, @@ -530,15 +530,15 @@ ], [ "HG002_Revio_repeat_expansion_stranger.vcf.gz", - "492a5d1a0f1656e1f7fc1b97c922cab4" + "73c6c1d07ff96ef44569b5534aa90174" ], [ "test.vcf.gz", - "4ab22ba6012b9f579f1831248bb95da" + "1de84bd070a82b37e6fac25d19ae604e" ], [ "HG002_Revio_sorted.vcf.gz", - "43b909ba9628b92f5062be6c413e560d" + "502b7befd528ce70b8269a8e4b9281df" ] ] ], @@ -546,6 +546,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-30T08:33:56.258093996" + "timestamp": "2024-10-30T10:27:37.120618269" } } \ No newline at end of file diff --git a/tests/samplesheet_multisample_bam.nf.test.snap b/tests/samplesheet_multisample_bam.nf.test.snap index 4ca6e6b0..75143c8d 100644 --- a/tests/samplesheet_multisample_bam.nf.test.snap +++ b/tests/samplesheet_multisample_bam.nf.test.snap @@ -1,7 +1,7 @@ { "samplesheet_multisample_bam | --phaser hiphase": { "content": [ - 148, + 150, { "ADD_FOUND_IN_TAG": { "bcftools": 1.2, @@ -722,23 +722,23 @@ ], [ "HG002_Revio_A_repeat_expansion_stranger.vcf.gz", - "492a5d1a0f1656e1f7fc1b97c922cab4" + "73c6c1d07ff96ef44569b5534aa90174" ], [ "HG002_Revio_B_repeat_expansion_stranger.vcf.gz", - "492a5d1a0f1656e1f7fc1b97c922cab4" + "73c6c1d07ff96ef44569b5534aa90174" ], [ "test.vcf.gz", - "7fcabf1cb86be8e3e5ad35d91e8897f9" + "9f54e9a4fed49a36e1ca3d4cbac049fe" ], [ "HG002_Revio_A_sorted.vcf.gz", - "43b909ba9628b92f5062be6c413e560d" + "502b7befd528ce70b8269a8e4b9281df" ], [ "HG002_Revio_B_sorted.vcf.gz", - "43b909ba9628b92f5062be6c413e560d" + "502b7befd528ce70b8269a8e4b9281df" ] ] ], @@ -746,6 +746,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-30T08:35:33.241655745" + "timestamp": "2024-10-30T10:29:12.353783346" } } \ No newline at end of file diff --git a/workflows/nallo.nf b/workflows/nallo.nf index 345859d3..45587e62 100644 --- a/workflows/nallo.nf +++ b/workflows/nallo.nf @@ -483,7 +483,7 @@ workflow NALLO { // Annotate repeat expansions with stranger // if(!params.skip_repeat_annotation) { - ANNOTATE_REPEAT_EXPANSIONS ( ch_variant_catalog, CALL_REPEAT_EXPANSIONS.out.vcf ) + ANNOTATE_REPEAT_EXPANSIONS ( ch_variant_catalog, CALL_REPEAT_EXPANSIONS.out.sample_vcf ) ch_versions = ch_versions.mix(ANNOTATE_REPEAT_EXPANSIONS.out.versions) } } From 558312d7e2cd46ae832aeacfd3c7aa427b56806c Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Wed, 30 Oct 2024 16:31:18 +0100 Subject: [PATCH 049/106] Rank SVs (#450) * wip * working * Update CHANGELOG * Update CHANGELOG again --- CHANGELOG.md | 1 + README.md | 2 +- conf/modules/annotate_consequence_pli.config | 25 ++++++++++ conf/modules/annotate_svs.config | 4 +- conf/modules/rank_variants.config | 47 +++++++++++++++---- conf/test.config | 4 +- docs/output.md | 12 ++++- docs/parameters.md | 6 ++- docs/usage.md | 11 +++++ nextflow.config | 4 +- nextflow_schema.json | 17 ++++++- .../local/utils_nfcore_nallo_pipeline/main.nf | 7 +-- tests/samplesheet.nf.test | 2 +- tests/samplesheet.nf.test.snap | 10 ++-- tests/samplesheet_multisample_bam.nf.test | 2 +- .../samplesheet_multisample_bam.nf.test.snap | 10 ++-- tests/samplesheet_multisample_ont_bam.nf.test | 2 +- ...mplesheet_multisample_ont_bam.nf.test.snap | 10 ++-- workflows/nallo.nf | 27 ++++++++++- 19 files changed, 162 insertions(+), 41 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 53949c87..bf6b540e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -30,6 +30,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#431](https://github.com/genomic-medicine-sweden/nallo/pull/431) - Added files needed to automatically build and publish docs to GitHub Pages - [#435](https://github.com/genomic-medicine-sweden/nallo/pull/435) - Added nf-test to rank variants - [#445](https://github.com/genomic-medicine-sweden/nallo/pull/445) - Added FOUND_IN tag and nf-test to rank variants +- [#450](https://github.com/genomic-medicine-sweden/nallo/pull/450) - Added ranking of SVs (and CNVs) ### `Changed` diff --git a/README.md b/README.md index d038d89d..ef9224ed 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,7 @@ ##### Ranking -- Rank SNVs with [GENMOD](https://github.com/Clinical-Genomics/genmod) +- Rank SNVs, INDELs and SVs with [GENMOD](https://github.com/Clinical-Genomics/genmod) ## Usage diff --git a/conf/modules/annotate_consequence_pli.config b/conf/modules/annotate_consequence_pli.config index 3158c4f4..648c98e6 100644 --- a/conf/modules/annotate_consequence_pli.config +++ b/conf/modules/annotate_consequence_pli.config @@ -12,6 +12,10 @@ */ process { + + // + // SNVs + // withName: '.*:ANN_CSQ_PLI_SNV:.*' { publishDir = [ enabled: false @@ -29,4 +33,25 @@ process { withName: '.*ANN_CSQ_PLI_SNV:TABIX_BGZIPTABIX' { ext.prefix = { "${meta.id}_snv_csq_pli" } } + + // + // SVs + // + withName: '.*:ANN_CSQ_PLI_SVS:.*' { + publishDir = [ + enabled: false + ] + } + + withName: '.*ANN_CSQ_PLI_SVS:ADD_MOST_SEVERE_CSQ' { + ext.prefix = { "${meta.id}_svs_csq" } + } + + withName: '.*ANN_CSQ_PLI_SVS:ADD_MOST_SEVERE_PLI' { + ext.prefix = { "${meta.id}_svs_csq_pli" } + } + + withName: '.*ANN_CSQ_PLI_SVS:TABIX_BGZIPTABIX' { + ext.prefix = { "${meta.id}_svs_csq_pli" } + } } diff --git a/conf/modules/annotate_svs.config b/conf/modules/annotate_svs.config index f1a4e7c1..1a672a65 100644 --- a/conf/modules/annotate_svs.config +++ b/conf/modules/annotate_svs.config @@ -42,7 +42,7 @@ process { publishDir = [ path: { "${params.outdir}/svs/family/${meta.id}" }, mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + saveAs: { filename -> filename.equals('versions.yml') || !params.skip_rank_variants ? null : filename } ] } @@ -50,7 +50,7 @@ process { publishDir = [ path: { "${params.outdir}/svs/family/${meta.id}" }, mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + saveAs: { filename -> filename.equals('versions.yml') || !params.skip_rank_variants ? null : filename } ] } diff --git a/conf/modules/rank_variants.config b/conf/modules/rank_variants.config index 30aad2fa..deea5785 100644 --- a/conf/modules/rank_variants.config +++ b/conf/modules/rank_variants.config @@ -11,18 +11,16 @@ ---------------------------------------------------------------------------------------- */ -// -// Score and rank SNVs -// - process { + // + // Score and rank SNVs + // withName: '.*:RANK_VARIANTS_SNV:.*' { publishDir = [ enabled: false, ] } - withName: '.*:RANK_VARIANTS_SNV:GENMOD_ANNOTATE' { ext.prefix = { "${meta.id}_snv_genmod_annotate" } ext.args = { [ @@ -31,20 +29,53 @@ process { '--temp_dir ./' ].join(' ') } } - withName: '.*:RANK_VARIANTS_SNV:GENMOD_MODELS' { ext.prefix = { "${meta.id}_snv_genmod_models" } ext.args = "--whole_gene --temp_dir ./" } - withName: '.*:RANK_VARIANTS_SNV:GENMOD_SCORE' { ext.prefix = { "${meta.id}_snv_genmod_score" } ext.args = "--rank_results" } - withName: '.*:RANK_VARIANTS_SNV:GENMOD_COMPOUND' { ext.prefix = { "${meta.id}_snv_genmod_compound" } ext.args = "--temp_dir ./" } + // + // Score and rank SVSs + // + withName: '.*:RANK_VARIANTS_SVS:.*' { + publishDir = [ + enabled: false, + ] + } + withName: '.*:RANK_VARIANTS_SVS:GENMOD_ANNOTATE' { + ext.prefix = { "${meta.id}_svs_genmod_annotate" } + ext.args = { [ + '--annotate_regions', + '--genome-build 38', + '--temp_dir ./' + ].join(' ') } + } + withName: '.*:RANK_VARIANTS_SVS:GENMOD_MODELS' { + ext.prefix = { "${meta.id}_svs_genmod_models" } + ext.args = "--whole_gene --temp_dir ./" + } + withName: '.*:RANK_VARIANTS_SVS:GENMOD_SCORE' { + ext.prefix = { "${meta.id}_svs_genmod_score" } + ext.args = "--rank_results" + } + withName: '.*:RANK_VARIANTS_SVS:GENMOD_COMPOUND' { + ext.prefix = { "${meta.id}_svs_genmod_compound" } + ext.args = "--temp_dir ./" + } + withName: '.*:RANK_VARIANTS_SVS:TABIX_BGZIPTABIX' { + ext.prefix = { params.skip_cnv_calling ? "${meta.id}_svs_merged_annotated_ranked" : "${meta.id}_svs_cnvs_merged_annotated_ranked" } + publishDir = [ + path: { "${params.outdir}/svs/family/${meta.id}" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } } diff --git a/conf/test.config b/conf/test.config index 9f91f654..5e30ea1b 100644 --- a/conf/test.config +++ b/conf/test.config @@ -18,7 +18,7 @@ params { modules_testdata_base_path = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/' // Base directory for genomic-medicine-sweden/nallo test data - pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/7be7114cb132be8cae9343f225bcf42ec11ecc1b/' + pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/22fb5b8a1a358df96e49f8d01a9c6e18770fbd6d/' // References fasta = params.pipelines_testdata_base_path + 'reference/hg38.test.fa.gz' @@ -36,7 +36,9 @@ params { svdb_dbs = params.pipelines_testdata_base_path + 'testdata/svdb_dbs.csv' reduced_penetrance = params.pipelines_testdata_base_path + 'reference/reduced_penetrance.tsv' score_config_snv = params.pipelines_testdata_base_path + 'reference/rank_model_snv.ini' + score_config_svs = params.pipelines_testdata_base_path + 'reference/rank_model_svs.ini' variant_consequences_snv = params.pipelines_testdata_base_path + 'reference/variant_consequences_v2.txt' + variant_consequences_svs = params.pipelines_testdata_base_path + 'reference/variant_consequences_v2.txt' somalier_sites = params.pipelines_testdata_base_path + 'reference/somalier_sites.vcf.gz' // Pipeline options diff --git a/docs/output.md b/docs/output.md index a08bfc99..294ef823 100644 --- a/docs/output.md +++ b/docs/output.md @@ -206,10 +206,11 @@ If the pipeline is run with phasing, the aligned reads will be happlotagged usin [Severus](https://github.com/KolmogorovLab/Severus) or [Sniffles](https://github.com/fritzsedlazeck/Sniffles) is used to call structural variants. [HiFiCNV](https://github.com/PacificBiosciences/HiFiCNV) is used to call CNVs. It also produces copy number, depth, and MAF [visualization tracks](#visualization-tracks). [SVDB](https://github.com/J35P312/SVDB) is used to combine and merge SVs and CNVs within and between samples. +[GENMOD](https://github.com/Clinical-Genomics/genmod) is used to rank the annotated SVs. !!!note - Variants are only output without annotation if that subworkflow is turned off. + Variants are only output without annotation and/or ranking if these subworkflow is turned off. !!!note @@ -237,6 +238,15 @@ If the pipeline is run with phasing, the aligned reads will be happlotagged usin | `svs/family/{family_id}/{family_id}_svs_merged_annotated.vcf.gz` | VCF file with merged and annotated SVs per family (output if CNV-calling is off) | | `svs/family/{family_id}/{family_id}_svs_merged_annotated.vcf.gz.tbi` | Index of the merged VCF file | +[GENMOD](https://github.com/Clinical-Genomics/genmod) is used to rank the annotated SVs. + +| Path | Description | +| -------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | +| `svs/family/{family_id}/{family_id}_cnvs_svs_merged_annotated_ranked.vcf.gz` | VCF file with merged, annotated and ranked CNVs and SVs per family | +| `svs/family/{family_id}/{family_id}_cnvs_svs_merged_annotated_ranked.vcf.gz.tbi` | Index of the merged VCF file | +| `svs/family/{family_id}/{family_id}_svs_merged_annotated_ranked.vcf.gz` | VCF file with merged, annotated and ranked SVs per family (output if CNV-calling is off) | +| `svs/family/{family_id}/{family_id}_svs_merged_annotated_ranked.vcf.gz.tbi` | Index of the merged VCF file | + ## Visualization Tracks [HiFiCNV](https://github.com/PacificBiosciences/HiFiCNV) is used to call CNVs, but it also produces copy number, depth, and MAF tracks that can be visualized in for example IGV. diff --git a/docs/parameters.md b/docs/parameters.md index 96498185..3a07f156 100644 --- a/docs/parameters.md +++ b/docs/parameters.md @@ -41,6 +41,7 @@ Define where the pipeline should find input data and save output data. | `svdb_dbs` | Databases used for structural variant annotation in vcf format.
    HelpPath to comma-separated file containing information about the databases used for structural variant annotation.
    | `string` | | | | | `variant_catalog` | A variant catalog json-file for stranger | `string` | | | | | `variant_consequences_snv` | File containing list of SO terms listed in the order of severity from most severe to lease severe for annotating genomic SNVs. For more information check https://ensembl.org/info/genome/variation/prediction/predicted_data.html | `string` | | | | +| `variant_consequences_svs` | File containing list of SO terms listed in the order of severity from most severe to lease severe for annotating genomic SVs. For more information check https://ensembl.org/info/genome/variation/prediction/predicted_data.html | `string` | | | | | `vep_cache` | A path to the VEP cache location | `string` | | | | | `bed` | A BED file with regions of interest, used to limit short variant calling. | `string` | | | | | `hificnv_xy` | A BED file containing expected copy number regions for XY samples. | `string` | | | | @@ -48,8 +49,9 @@ Define where the pipeline should find input data and save output data. | `hificnv_exclude` | A BED file specifying regions to exclude with HiFiCNV, such as centromeres. | `string` | | | | | `reduced_penetrance` | A file with gene ids that have reduced penetrance. For use with genmod. | `string` | | | | | `score_config_snv` | A SNV rank model config file for genmod. | `string` | | | | +| `score_config_svs` | A SV rank model config file for genmod. | `string` | | | | | `somalier_sites` | A VCF of known polymorphic sites for somalier | `string` | | | | -| `pipelines_testdata_base_path` | Base URL or local path to location of pipeline test dataset files | `string` | https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/7be7114cb132be8cae9343f225bcf42ec11ecc1b/ | | True | +| `pipelines_testdata_base_path` | Base URL or local path to location of pipeline test dataset files | `string` | https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/22fb5b8a1a358df96e49f8d01a9c6e18770fbd6d/ | | True | ## Reference genome options @@ -106,7 +108,7 @@ Workflow options specific to genomic-medicine-sweden/nallo | `vep_cache_version` | VEP cache version | `integer` | 110 | | | | `vep_plugin_files` | A csv file with vep_plugins as header, and then paths to vep plugin files. Paths to pLI_values.txt and LoFtool_scores.txt are required. | `string` | | | | | `deepvariant_model_type` | Sets the model type used for DeepVariant. This is set automatically using `--preset` by default. | `string` | PACBIO | | True | -| `minimap2_read_mapping_preset` | Sets the minimap2-preset (-x) for read alignment. This is set automatically using the pipeline `--preset` by default. | `string` | | | True | +| `minimap2_read_mapping_preset` | Sets the minimap2-preset (-x) for read alignment. This is set automatically using the pipeline `--preset` by default. | `string` | map-hifi | | True | | `extra_modkit_options` | Extra options to modkit, used for test profile. | `string` | | | True | | `extra_vep_options` | Extra options to VEP, used for test profile. | `string` | | | True | | `extra_paraphase_options` | Extra options to Paraphase, used for test profile. | `string` | | | True | diff --git a/docs/usage.md b/docs/usage.md index b11265dd..b5a9fe4d 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -298,6 +298,17 @@ These databases could for example come from [CoLoRSdb](https://zenodo.org/record Turned off with `--skip_sv_annotation`. +### Rank SVs + +This subworkflow ranks SVs, and relies on the mapping, SV calling and SV annotation subworkflows, and requires the following additional files: + +| Parameter | Description | +| -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `score_config_svs` |  Used by GENMOD when ranking variants. Sample file [here](https://github.com/nf-core/test-datasets/blob/raredisease/reference/rank_model_snv.ini). | +| `reduced_penetrance` | A list of loci that show [reduced penetrance](https://medlineplus.gov/genetics/understanding/inheritance/penetranceexpressivity/) in people. Sample file [here](https://github.com/nf-core/test-datasets/blob/raredisease/reference/reduced_penetrance.tsv) | + +`--skip_rank_variants`. + ## Other highlighted parameters - Limit SNV calling to regions in BED file (`--bed`). diff --git a/nextflow.config b/nextflow.config index 5b0db077..d424c0eb 100644 --- a/nextflow.config +++ b/nextflow.config @@ -20,9 +20,11 @@ params { variant_catalog = null reduced_penetrance = null score_config_snv = null + score_config_svs = null snp_db = null svdb_dbs = null variant_consequences_snv = null + variant_consequences_svs = null vep_cache = null vep_plugin_files = null hificnv_xy = null @@ -86,7 +88,7 @@ params { help_full = false show_hidden = false version = false - pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/7be7114cb132be8cae9343f225bcf42ec11ecc1b/' + pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/22fb5b8a1a358df96e49f8d01a9c6e18770fbd6d/' // Config options config_profile_name = null diff --git a/nextflow_schema.json b/nextflow_schema.json index ec1fa4b2..65f282cc 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -189,6 +189,11 @@ "description": "File containing list of SO terms listed in the order of severity from most severe to lease severe for annotating genomic SNVs. For more information check https://ensembl.org/info/genome/variation/prediction/predicted_data.html", "fa_icon": "fas fa-file-csv" }, + "variant_consequences_svs": { + "type": "string", + "description": "File containing list of SO terms listed in the order of severity from most severe to lease severe for annotating genomic SVs. For more information check https://ensembl.org/info/genome/variation/prediction/predicted_data.html", + "fa_icon": "fas fa-file-csv" + }, "vep_cache": { "type": "string", "description": "A path to the VEP cache location", @@ -234,6 +239,13 @@ "fa_icon": "fas fa-file", "description": "A SNV rank model config file for genmod." }, + "score_config_svs": { + "type": "string", + "exists": true, + "format": "path", + "fa_icon": "fas fa-file", + "description": "A SV rank model config file for genmod." + }, "somalier_sites": { "type": "string", "pattern": "^\\S+\\.vcf(\\.gz)?$", @@ -245,7 +257,7 @@ "type": "string", "fa_icon": "far fa-check-circle", "description": "Base URL or local path to location of pipeline test dataset files", - "default": "https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/7be7114cb132be8cae9343f225bcf42ec11ecc1b/", + "default": "https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/22fb5b8a1a358df96e49f8d01a9c6e18770fbd6d/", "hidden": true } } @@ -467,7 +479,8 @@ "type": "string", "description": "Sets the minimap2-preset (-x) for read alignment. This is set automatically using the pipeline `--preset` by default.", "hidden": true, - "enum": ["map-hifi", "map-ont", "lr:hq", "lr:hqae"] + "enum": ["map-hifi", "map-ont", "lr:hq", "lr:hqae"], + "default": "map-hifi" }, "extra_modkit_options": { "type": "string", diff --git a/subworkflows/local/utils_nfcore_nallo_pipeline/main.nf b/subworkflows/local/utils_nfcore_nallo_pipeline/main.nf index 3061e3c0..315f86ba 100644 --- a/subworkflows/local/utils_nfcore_nallo_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_nallo_pipeline/main.nf @@ -73,9 +73,9 @@ def fileDependencies = [ assembly : ["fasta", "par_regions"], // The assembly workflow should be split into two - assembly and variant calling (requires ref) snv_calling : ["fasta", "par_regions"], snv_annotation : ["snp_db", "vep_cache", "vep_plugin_files", "variant_consequences_snv"], - sv_annotation : ["svdb_dbs", "vep_cache", "vep_plugin_files"], + sv_annotation : ["svdb_dbs", "vep_cache", "vep_plugin_files", "variant_consequences_svs"], cnv_calling : ["hificnv_xy", "hificnv_xx", "hificnv_exclude"], - rank_variants : ["reduced_penetrance", "score_config_snv"], + rank_variants : ["reduced_penetrance", "score_config_snv", "score_config_svs"], repeat_calling : ["trgt_repeats"], repeat_annotation: ["variant_catalog"], ] @@ -108,10 +108,11 @@ def parameterStatus = [ fasta : params.fasta, trgt_repeats : params.trgt_repeats, variant_catalog : params.variant_catalog, - score_config_snv : params.score_config_snv, reduced_penetrance : params.reduced_penetrance, score_config_snv : params.score_config_snv, + score_config_svs : params.score_config_svs, variant_consequences_snv: params.variant_consequences_snv, + variant_consequences_svs: params.variant_consequences_svs, ] ] diff --git a/tests/samplesheet.nf.test b/tests/samplesheet.nf.test index 1b3448e4..3d4c9648 100644 --- a/tests/samplesheet.nf.test +++ b/tests/samplesheet.nf.test @@ -9,7 +9,7 @@ nextflow_pipeline { when { params { - pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/7be7114cb132be8cae9343f225bcf42ec11ecc1b/' + pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/22fb5b8a1a358df96e49f8d01a9c6e18770fbd6d/' input = params.pipelines_testdata_base_path + 'testdata/samplesheet.csv' outdir = "$outputDir" } diff --git a/tests/samplesheet.nf.test.snap b/tests/samplesheet.nf.test.snap index 838d5318..e97c63f2 100644 --- a/tests/samplesheet.nf.test.snap +++ b/tests/samplesheet.nf.test.snap @@ -1,7 +1,7 @@ { "test profile": { "content": [ - 104, + 112, { "ADD_FOUND_IN_TAG": { "bcftools": 1.2, @@ -382,8 +382,8 @@ "svs", "svs/family", "svs/family/FAM", - "svs/family/FAM/FAM_svs_cnvs_merged_annotated.vcf.gz", - "svs/family/FAM/FAM_svs_cnvs_merged_annotated.vcf.gz.tbi", + "svs/family/FAM/FAM_svs_cnvs_merged_annotated_ranked.vcf.gz", + "svs/family/FAM/FAM_svs_cnvs_merged_annotated_ranked.vcf.gz.tbi", "svs/single_sample", "svs/single_sample/HG002_Revio", "svs/single_sample/HG002_Revio/HG002_Revio_cnvs.vcf.gz", @@ -507,7 +507,7 @@ "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=100, phased=false, phasedAutodetect=false]" ], [ - "FAM_svs_cnvs_merged_annotated.vcf.gz", + "FAM_svs_cnvs_merged_annotated_ranked.vcf.gz", "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=87, phased=false, phasedAutodetect=false]" ], [ @@ -546,6 +546,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-30T10:27:37.120618269" + "timestamp": "2024-10-30T11:26:11.367381989" } } \ No newline at end of file diff --git a/tests/samplesheet_multisample_bam.nf.test b/tests/samplesheet_multisample_bam.nf.test index 205348e6..4fa19978 100644 --- a/tests/samplesheet_multisample_bam.nf.test +++ b/tests/samplesheet_multisample_bam.nf.test @@ -9,7 +9,7 @@ nextflow_pipeline { when { params { - pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/7be7114cb132be8cae9343f225bcf42ec11ecc1b/' + pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/22fb5b8a1a358df96e49f8d01a9c6e18770fbd6d/' input = params.pipelines_testdata_base_path + 'testdata/samplesheet_multisample_bam.csv' outdir = "$outputDir" phaser = "hiphase" diff --git a/tests/samplesheet_multisample_bam.nf.test.snap b/tests/samplesheet_multisample_bam.nf.test.snap index 75143c8d..3aa42ad2 100644 --- a/tests/samplesheet_multisample_bam.nf.test.snap +++ b/tests/samplesheet_multisample_bam.nf.test.snap @@ -1,7 +1,7 @@ { "samplesheet_multisample_bam | --phaser hiphase": { "content": [ - 150, + 158, { "ADD_FOUND_IN_TAG": { "bcftools": 1.2, @@ -456,8 +456,8 @@ "svs", "svs/family", "svs/family/FAM", - "svs/family/FAM/FAM_svs_cnvs_merged_annotated.vcf.gz", - "svs/family/FAM/FAM_svs_cnvs_merged_annotated.vcf.gz.tbi", + "svs/family/FAM/FAM_svs_cnvs_merged_annotated_ranked.vcf.gz", + "svs/family/FAM/FAM_svs_cnvs_merged_annotated_ranked.vcf.gz.tbi", "svs/single_sample", "svs/single_sample/HG002_Revio_A", "svs/single_sample/HG002_Revio_A/HG002_Revio_A_cnvs.vcf.gz", @@ -683,7 +683,7 @@ "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=100, phased=false, phasedAutodetect=false]" ], [ - "FAM_svs_cnvs_merged_annotated.vcf.gz", + "FAM_svs_cnvs_merged_annotated_ranked.vcf.gz", "VcfFile [chromosomes=[chrX, chr16], sampleCount=2, variantCount=87, phased=false, phasedAutodetect=false]" ], [ @@ -746,6 +746,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-30T10:29:12.353783346" + "timestamp": "2024-10-30T11:27:50.204023027" } } \ No newline at end of file diff --git a/tests/samplesheet_multisample_ont_bam.nf.test b/tests/samplesheet_multisample_ont_bam.nf.test index e5216f0f..5afa04af 100644 --- a/tests/samplesheet_multisample_ont_bam.nf.test +++ b/tests/samplesheet_multisample_ont_bam.nf.test @@ -9,7 +9,7 @@ nextflow_pipeline { when { params { - pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/7be7114cb132be8cae9343f225bcf42ec11ecc1b/' + pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/22fb5b8a1a358df96e49f8d01a9c6e18770fbd6d/' input = params.pipelines_testdata_base_path + 'testdata/samplesheet_multisample_bam_ont.csv' outdir = "$outputDir" preset = 'ONT_R10' diff --git a/tests/samplesheet_multisample_ont_bam.nf.test.snap b/tests/samplesheet_multisample_ont_bam.nf.test.snap index 7bce4132..1c19f9b8 100644 --- a/tests/samplesheet_multisample_ont_bam.nf.test.snap +++ b/tests/samplesheet_multisample_ont_bam.nf.test.snap @@ -1,7 +1,7 @@ { "samplesheet_multisample_ont_bam | --preset ONT_R10 --phaser whatshap --parallel_alignments 1 --parallel_snv 1": { "content": [ - 97, + 105, { "ADD_FOUND_IN_TAG": { "bcftools": 1.2, @@ -339,8 +339,8 @@ "svs", "svs/family", "svs/family/FAM", - "svs/family/FAM/FAM_svs_cnvs_merged_annotated.vcf.gz", - "svs/family/FAM/FAM_svs_cnvs_merged_annotated.vcf.gz.tbi", + "svs/family/FAM/FAM_svs_cnvs_merged_annotated_ranked.vcf.gz", + "svs/family/FAM/FAM_svs_cnvs_merged_annotated_ranked.vcf.gz.tbi", "svs/single_sample", "svs/single_sample/HG002_ONT_A", "svs/single_sample/HG002_ONT_A/HG002_ONT_A_cnvs.vcf.gz", @@ -462,7 +462,7 @@ "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=99, phased=false, phasedAutodetect=false]" ], [ - "FAM_svs_cnvs_merged_annotated.vcf.gz", + "FAM_svs_cnvs_merged_annotated_ranked.vcf.gz", "VcfFile [chromosomes=[chrX, chr16], sampleCount=2, variantCount=98, phased=false, phasedAutodetect=false]" ], [ @@ -490,6 +490,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-30T08:37:01.633018038" + "timestamp": "2024-10-30T11:29:20.61580529" } } \ No newline at end of file diff --git a/workflows/nallo.nf b/workflows/nallo.nf index 45587e62..28fa679c 100644 --- a/workflows/nallo.nf +++ b/workflows/nallo.nf @@ -7,6 +7,7 @@ include { samplesheetToList } from 'plugin/nf-schema' */ include { ANNOTATE_CSQ_PLI as ANN_CSQ_PLI_SNV } from '../subworkflows/local/annotate_consequence_pli' +include { ANNOTATE_CSQ_PLI as ANN_CSQ_PLI_SVS } from '../subworkflows/local/annotate_consequence_pli' include { ANNOTATE_SVS } from '../subworkflows/local/annotate_svs' include { ANNOTATE_REPEAT_EXPANSIONS } from '../subworkflows/local/annotate_repeat_expansions' include { ASSEMBLY } from '../subworkflows/local/genome_assembly' @@ -22,6 +23,7 @@ include { PHASING } from '../subworkflows/local/ include { PREPARE_GENOME } from '../subworkflows/local/prepare_genome' include { QC_ALIGNED_READS } from '../subworkflows/local/qc_aligned_reads' include { RANK_VARIANTS as RANK_VARIANTS_SNV } from '../subworkflows/local/rank_variants' +include { RANK_VARIANTS as RANK_VARIANTS_SVS } from '../subworkflows/local/rank_variants' include { SCATTER_GENOME } from '../subworkflows/local/scatter_genome' include { SHORT_VARIANT_CALLING } from '../subworkflows/local/short_variant_calling' include { SNV_ANNOTATION } from '../subworkflows/local/snv_annotation' @@ -91,6 +93,8 @@ workflow NALLO { : '' ch_variant_consequences_snv = params.variant_consequences_snv ? Channel.fromPath(params.variant_consequences_snv).map { it -> [ it.simpleName, it ] }.collect() : Channel.value([]) + ch_variant_consequences_svs = params.variant_consequences_svs ? Channel.fromPath(params.variant_consequences_svs).map { it -> [ it.simpleName, it ] }.collect() + : Channel.value([]) ch_vep_cache_unprocessed = params.vep_cache ? Channel.fromPath(params.vep_cache).map { it -> [ [ id:'vep_cache' ], it ] }.collect() : Channel.value([[],[]]) ch_vep_extra_files_unsplit = params.vep_plugin_files ? Channel.fromPath(params.vep_plugin_files).collect() @@ -105,6 +109,8 @@ workflow NALLO { : Channel.value([]) ch_score_config_snv = params.score_config_snv ? Channel.fromPath(params.score_config_snv).map { it -> [ it.simpleName, it ] }.collect() : Channel.value([]) + ch_score_config_svs = params.score_config_svs ? Channel.fromPath(params.score_config_svs).map { it -> [ it.simpleName, it ] }.collect() + : Channel.value([]) ch_somalier_sites = params.somalier_sites ? Channel.fromPath(params.somalier_sites).map { [ it.simpleName, it ] }.collect() : '' ch_svdb_dbs = params.svdb_dbs ? Channel.fromPath(params.svdb_dbs).map { [ it.simpleName, it ] }.collect() @@ -388,8 +394,8 @@ workflow NALLO { .set { ch_vcf_tbi_per_region } } else { // otherwise grab the VCF that should have gone into RANK_VARIANTS - ANN_CSQ_PLI_SNV.out.vcf_ann - .join( ANN_CSQ_PLI_SNV.out.tbi_ann ) + ANN_CSQ_PLI_SNV.out.vcf + .join( ANN_CSQ_PLI_SNV.out.tbi ) .set { ch_vcf_tbi_per_region } } } else { @@ -532,6 +538,23 @@ workflow NALLO { params.vep_cache_version, PREPARE_GENOME.out.vep_extra_files ) + + ANN_CSQ_PLI_SVS ( + ANNOTATE_SVS.out.vcf, + ch_variant_consequences_svs + ) + ch_versions = ch_versions.mix(ANN_CSQ_PLI_SVS.out.versions) + + if (!params.skip_rank_variants) { + RANK_VARIANTS_SVS ( + ANN_CSQ_PLI_SVS.out.vcf, + ch_updated_pedfile, + ch_reduced_penetrance, + ch_score_config_svs + ) + ch_versions = ch_versions.mix(RANK_VARIANTS_SVS.out.versions) + } + } } From d4443073c6b1ff679a300a08fef10d5863bd63ff Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Wed, 30 Oct 2024 17:08:10 +0100 Subject: [PATCH 050/106] Add deepvariant_vcfstatsreport (#446) --- CHANGELOG.md | 1 + conf/modules/short_variant_calling.config | 9 + docs/output.md | 121 +++--- modules.json | 5 + .../deepvariant/vcfstatsreport/main.nf | 59 +++ .../deepvariant/vcfstatsreport/meta.yml | 47 +++ .../vcfstatsreport/tests/main.nf.test | 183 +++++++++ .../vcfstatsreport/tests/main.nf.test.snap | 266 +++++++++++++ .../deepvariant/vcfstatsreport/tests/tags.yml | 2 + .../local/short_variant_calling/main.nf | 16 +- .../tests/main.nf.test.snap | 376 ++++++++++++++++-- tests/.nftignore | 1 + tests/samplesheet.nf.test.snap | 10 +- .../samplesheet_multisample_bam.nf.test.snap | 12 +- ...mplesheet_multisample_ont_bam.nf.test.snap | 12 +- 15 files changed, 1019 insertions(+), 101 deletions(-) create mode 100644 modules/nf-core/deepvariant/vcfstatsreport/main.nf create mode 100644 modules/nf-core/deepvariant/vcfstatsreport/meta.yml create mode 100644 modules/nf-core/deepvariant/vcfstatsreport/tests/main.nf.test create mode 100644 modules/nf-core/deepvariant/vcfstatsreport/tests/main.nf.test.snap create mode 100644 modules/nf-core/deepvariant/vcfstatsreport/tests/tags.yml diff --git a/CHANGELOG.md b/CHANGELOG.md index bf6b540e..0fa19ecb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -30,6 +30,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#431](https://github.com/genomic-medicine-sweden/nallo/pull/431) - Added files needed to automatically build and publish docs to GitHub Pages - [#435](https://github.com/genomic-medicine-sweden/nallo/pull/435) - Added nf-test to rank variants - [#445](https://github.com/genomic-medicine-sweden/nallo/pull/445) - Added FOUND_IN tag and nf-test to rank variants +- [#446](https://github.com/genomic-medicine-sweden/nallo/pull/446) - Added the vcfstatsreport from DeepVariant to snv calling - [#450](https://github.com/genomic-medicine-sweden/nallo/pull/450) - Added ranking of SVs (and CNVs) ### `Changed` diff --git a/conf/modules/short_variant_calling.config b/conf/modules/short_variant_calling.config index e767fdc1..c53793c5 100644 --- a/conf/modules/short_variant_calling.config +++ b/conf/modules/short_variant_calling.config @@ -43,6 +43,14 @@ process { meta.sex == 1 ? '--haploid_contigs="chrX,chrY"' : '' ].join(' ') } } + withName: '.*:SHORT_VARIANT_CALLING:DEEPVARIANT_VCFSTATSREPORT' { + publishDir = [ + path: { "${params.outdir}/qc/deepvariant_vcfstatsreport/${meta.id}" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + + } withName: '.*:SHORT_VARIANT_CALLING:GLNEXUS' { ext.args = '--config DeepVariant_unfiltered' @@ -75,4 +83,5 @@ process { '-w 10000' ].join(' ') } + } diff --git a/docs/output.md b/docs/output.md index 294ef823..cd80bdb8 100644 --- a/docs/output.md +++ b/docs/output.md @@ -11,10 +11,10 @@ If the pipeline is run with phasing, the aligned reads will be happlotagged using the active phasing tool. -| Path | Description | -| ----------------------------------------------------------------- | ----------------------- | -| `{outputdir}/aligned_reads/{sample}/{sample}_haplotagged.bam` | BAM file with haplotags | -| `{outputdir}/aligned_reads/{sample}/{sample}_haplotagged.bam.bai` | Index of the BAM file | +| Path | Description | +| ----------------------------------------------------- | ----------------------- | +| `aligned_reads/{sample}/{sample}_haplotagged.bam` | BAM file with haplotags | +| `aligned_reads/{sample}/{sample}_haplotagged.bam.bai` | Index of the BAM file | !!!note @@ -72,14 +72,14 @@ If the pipeline is run with phasing, the aligned reads will be happlotagged usin [LongPhase](https://github.com/twolinin/longphase), [WhatsHap](https://whatshap.readthedocs.io/en/latest/), or [HiPhase](https://github.com/PacificBiosciences/HiPhase) are used for phasing. -| Path | Description | -| ----------------------------------------------------------------- | ----------------------------- | -| `{outputdir}/aligned_reads/{sample}/{sample}_haplotagged.bam` | BAM file with haplotags | -| `{outputdir}/aligned_reads/{sample}/{sample}_haplotagged.bam.bai` | Index of the BAM file | -| `{outputdir}/phased_variants/{sample}/*.vcf.gz` | VCF file with phased variants | -| `{outputdir}/phased_variants/{sample}/*.vcf.gz.tbi` | Index of the VCF file | -| `{outputdir}/qc/phasing_stats/{sample}/*.blocks.tsv` | Phase block file | -| `{outputdir}/qc/phasing_stats/{sample}/*.stats.tsv` | Phasing statistics file | +| Path | Description | +| ----------------------------------------------------- | ----------------------------- | +| `aligned_reads/{sample}/{sample}_haplotagged.bam` | BAM file with haplotags | +| `aligned_reads/{sample}/{sample}_haplotagged.bam.bai` | Index of the BAM file | +| `phased_variants/{sample}/*.vcf.gz` | VCF file with phased variants | +| `phased_variants/{sample}/*.vcf.gz.tbi` | Index of the VCF file | +| `qc/phasing_stats/{sample}/*.blocks.tsv` | Phase block file | +| `qc/phasing_stats/{sample}/*.stats.tsv` | Phasing statistics file | ## QC @@ -89,44 +89,56 @@ If the pipeline is run with phasing, the aligned reads will be happlotagged usin [FastQC](http://www.bioinformatics.babraham.ac.uk/projects/fastqc/) provides general quality metrics for sequenced reads, including information on quality score distribution, per-base sequence content (%A/T/G/C), adapter contamination, and overrepresented sequences. For more details, refer to the [FastQC help pages](http://www.bioinformatics.babraham.ac.uk/projects/fastqc/Help/). -| Path | Description | -| ---------------------------------------------- | --------------------------------------------------------------- | -| `{outputdir}/qc/fastqc/{sample}/*_fastqc.html` | FastQC report containing quality metrics | -| `{outputdir}/qc/fastqc/{sample}/*_fastqc.zip` | Zip archive with the FastQC report, data files, and plot images | +| Path | Description | +| ---------------------------------- | --------------------------------------------------------------- | +| `qc/fastqc/{sample}/*_fastqc.html` | FastQC report containing quality metrics | +| `qc/fastqc/{sample}/*_fastqc.zip` | Zip archive with the FastQC report, data files, and plot images | ### Mosdepth [Mosdepth](https://github.com/brentp/mosdepth) is used to report quality control metrics such as coverage and GC content from alignment files. -| Path | Description | -| ------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | -| `{outputdir}/qc/mosdepth/{sample}/*.mosdepth.global.dist.txt` | Cumulative distribution of bases covered for at least a given coverage value, across chromosomes and the whole genome | -| `{outputdir}/qc/mosdepth/{sample}/*.mosdepth.region.dist.txt` | Cumulative distribution of bases covered for at least a given coverage value, across regions (if a BED file is used) | -| `{outputdir}/qc/mosdepth/{sample}/*.mosdepth.summary.txt` | Mosdepth summary file | -| `{outputdir}/qc/mosdepth/{sample}/*.regions.bed.gz` | Depth per region (if a BED file is used) | -| `{outputdir}/qc/mosdepth/{sample}/*.regions.bed.gz.csi` | Index of the regions.bed.gz file | +| Path | Description | +| ------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | +| `qc/mosdepth/{sample}/*.mosdepth.global.dist.txt` | Cumulative distribution of bases covered for at least a given coverage value, across chromosomes and the whole genome | +| `qc/mosdepth/{sample}/*.mosdepth.region.dist.txt` | Cumulative distribution of bases covered for at least a given coverage value, across regions (if a BED file is used) | +| `qc/mosdepth/{sample}/*.mosdepth.summary.txt` | Mosdepth summary file | +| `qc/mosdepth/{sample}/*.regions.bed.gz` | Depth per region (if a BED file is used) | +| `qc/mosdepth/{sample}/*.regions.bed.gz.csi` | Index of the regions.bed.gz file | ### Cramino [cramino](https://github.com/wdecoster/cramino) is used to analyze both phased and unphased reads. -| Path | Description | -| -------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | -| `{outputdir}/qc/cramino/phased/{sample}/*.arrow` | Read length and quality in [Apache Arrow](https://arrow.apache.org/docs/format/Columnar.html) format | -| `{outputdir}/qc/cramino/phased/{sample}/*.txt` | Summary information in text format | -| `{outputdir}/qc/cramino/unphased/{sample}/*.arrow` | Read length and quality in [Apache Arrow](https://arrow.apache.org/docs/format/Columnar.html) format | -| `{outputdir}/qc/cramino/unphased/{sample}/*.txt` | Summary information in text format | +| Path | Description | +| -------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `qc/cramino/phased/{sample}/*.arrow` | Read length and quality in [Apache Arrow](https://arrow.apache.org/docs/format/Columnar.html) format | +| `qc/cramino/phased/{sample}/*.txt` | Summary information in text format | +| `qc/cramino/unphased/{sample}/*.arrow` | Read length and quality in [Apache Arrow](https://arrow.apache.org/docs/format/Columnar.html) format | +| `qc/cramino/unphased/{sample}/*.txt` | Summary information in text format | ### Somalier [somalier](https://github.com/brentp/somalier) checks relatedness and sex. -| Path | Description | -| ---------------------------------------------------------------- | ------------------------------------------- | -| `{outputdir}/predigree/{project}.ped` | PED file updated with somalier-inferred sex | -| `{outputdir}/qc/somalier/relate/{project}/{project}.html` | HTML report | -| `{outputdir}/qc/somalier/relate/{project}/{project}.pairs.tsv` | Information about sample pairs | -| `{outputdir}/qc/somalier/relate/{project}/{project}.samples.tsv` | Information about individual samples | +| Path | Description | +| ----------------------------------------------------- | ------------------------------------------- | +| `pedigree/{project}.ped` | PED file updated with somalier-inferred sex | +| `qc/somalier/relate/{project}/{project}.html` | HTML report | +| `qc/somalier/relate/{project}/{project}.pairs.tsv` | Information about sample pairs | +| `/qc/somalier/relate/{project}/{project}.samples.tsv` | Information about individual samples | + +| Path | Description | +| ------------------------- | ------------------------------------------- | +| `predigree/{project}.ped` | PED file updated with somalier-inferred sex | + +### DeepVariant + +`vcf_stats_report.py` from [DeepVariant](https://github.com/google/deepvariant) is used to generate a html report per sample. + +| Path | Description | +| --------------------------------------------------------------------- | ------------------------------------------- | +| `qc/deepvariant_vcfstatsreport/{sample}/${sample}.visual_report.html` | Visual report of SNV calls from DeepVariant | ## Variants @@ -146,21 +158,21 @@ If the pipeline is run with phasing, the aligned reads will be happlotagged usin [TRGT](https://github.com/PacificBiosciences/trgt) is used to call repeats: -| Path | Description | -| --------------------------------------------------------------------- | ----------------------------------------- | -| `{outputdir}/repeat_calling/trgt/multi_sample/{project}/*.vcf.gz` | Merged VCF file for all samples | -| `{outputdir}/repeat_calling/trgt/multi_sample/{project}/*.vcf.gz.tbi` | Index of the VCF file | -| `{outputdir}/repeat_calling/trgt/single_sample/{sample}/*.vcf.gz` | VCF file with called repeats for a sample | -| `{outputdir}/repeat_calling/trgt/single_sample/{sample}/*.vcf.gz.tbi` | Index of the VCF file | -| `{outputdir}/repeat_calling/trgt/single_sample/{sample}/*.bam` | BAM file with sorted spanning reads | -| `{outputdir}/repeat_calling/trgt/single_sample/{sample}/*.bai` | Index of the BAM file | +| Path | Description | +| --------------------------------------------------------- | ----------------------------------------- | +| `repeat_calling/trgt/multi_sample/{project}/*.vcf.gz` | Merged VCF file for all samples | +| `repeat_calling/trgt/multi_sample/{project}/*.vcf.gz.tbi` | Index of the VCF file | +| `repeat_calling/trgt/single_sample/{sample}/*.vcf.gz` | VCF file with called repeats for a sample | +| `repeat_calling/trgt/single_sample/{sample}/*.vcf.gz.tbi` | Index of the VCF file | +| `repeat_calling/trgt/single_sample/{sample}/*.bam` | BAM file with sorted spanning reads | +| `repeat_calling/trgt/single_sample/{sample}/*.bai` | Index of the BAM file | [Stranger](https://github.com/Clinical-Genomics/stranger) is used to annotate them: -| Path | Description | -| -------------------------------------------------------------- | ------------------------------- | -| `{outputdir}/repeat_annotation/stranger/{sample}/*.vcf.gz` | Annotated VCF file | -| `{outputdir}/repeat_annotation/stranger/{sample}/*.vcf.gz.tbi` | Index of the annotated VCF file | +| Path | Description | +| -------------------------------------------------- | ------------------------------- | +| `repeat_annotation/stranger/{sample}/*.vcf.gz` | Annotated VCF file | +| `repeat_annotation/stranger/{sample}/*.vcf.gz.tbi` | Index of the annotated VCF file | ### SNVs @@ -170,13 +182,14 @@ If the pipeline is run with phasing, the aligned reads will be happlotagged usin Variants are only output without annotation and ranking if these subworkflows are turned off. -| Path | Description | -| ------------------------------------------------------ | --------------------------------------------------------------------------- | -| `snvs/single_sample/{sample}/{sample}_snv.vcf.gz` | VCF file containing called variants with alternative genotypes for a sample | -| `snvs/single_sample/{sample}/{sample}_snv.vcf.gz.tbi` | Index of the corresponding VCF file | -| `snvs/multi_sample/{project}/{project}_snv.vcf.gz` | VCF file containing called variants for all samples | -| `snvs/multi_sample/{project}/{project}_snv.vcf.gz.tbi` | Index of the corresponding VCF file | -| `snvs/stats/single_sample/*.stats.txt` | Variant statistics | +| Path | Description | +| --------------------------------------------------------------------- | --------------------------------------------------------------------------- | +| `snvs/single_sample/{sample}/{sample}_snv.vcf.gz` | VCF file containing called variants with alternative genotypes for a sample | +| `snvs/single_sample/{sample}/{sample}_snv.vcf.gz.tbi` | Index of the corresponding VCF file | +| `snvs/multi_sample/{project}/{project}_snv.vcf.gz` | VCF file containing called variants for all samples | +| `snvs/multi_sample/{project}/{project}_snv.vcf.gz.tbi` | Index of the corresponding VCF file | +| `snvs/stats/single_sample/*.stats.txt` | Variant statistics | +| `qc/deepvariant_vcfstatsreport/{sample}/${sample}.visual_report.html` | Visual report of SNV calls from DeepVariant | [echtvar](https://github.com/brentp/echtvar) and [VEP](https://www.ensembl.org/vep) are used for annotating SNVs, while [CADD](https://cadd.gs.washington.edu/) is used to annotate INDELs with CADD scores. diff --git a/modules.json b/modules.json index 6dd77792..9a4a3b04 100644 --- a/modules.json +++ b/modules.json @@ -81,6 +81,11 @@ "git_sha": "a7e8b8afd4fa82f20d745fa778bfdbf39c1f7efb", "installed_by": ["modules"] }, + "deepvariant/vcfstatsreport": { + "branch": "master", + "git_sha": "2f9a5431355897e299cb41928c45f51ea8410c42", + "installed_by": ["modules"] + }, "ensemblvep/vep": { "branch": "master", "git_sha": "6e3585d9ad20b41adc7d271009f8cb5e191ecab4", diff --git a/modules/nf-core/deepvariant/vcfstatsreport/main.nf b/modules/nf-core/deepvariant/vcfstatsreport/main.nf new file mode 100644 index 00000000..5bbf06b6 --- /dev/null +++ b/modules/nf-core/deepvariant/vcfstatsreport/main.nf @@ -0,0 +1,59 @@ +process DEEPVARIANT_VCFSTATSREPORT { + tag "$meta.id" + label 'process_single' + + // FIXME Conda is not supported at the moment + // BUG https://github.com/nf-core/modules/issues/1754 + // BUG https://github.com/bioconda/bioconda-recipes/issues/30310 + container "nf-core/deepvariant:1.6.1" + + input: + tuple val(meta), path(vcf) + + output: + tuple val(meta), path("${prefix}.visual_report.html"), emit: report + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + // Exit if running this module with -profile conda / -profile mamba + if (workflow.profile.tokenize(',').intersect(['conda', 'mamba']).size() >= 1) { + error "DEEPVARIANT module does not support Conda. Please use Docker / Singularity / Podman instead." + } + def args = task.ext.args ?: '' + prefix = task.ext.prefix ?: "${meta.id}" + // WARN https://github.com/nf-core/modules/pull/5801#issuecomment-2194293755 + // FIXME Revert this on next version bump + def VERSION = '1.6.1' + + """ + /opt/deepvariant/bin/vcf_stats_report \\ + --input_vcf=${vcf} \\ + --outfile_base ${prefix} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + deepvariant: $VERSION + END_VERSIONS + """ + + stub: + // Exit if running this module with -profile conda / -profile mamba + if (workflow.profile.tokenize(',').intersect(['conda', 'mamba']).size() >= 1) { + error "DEEPVARIANT module does not support Conda. Please use Docker / Singularity / Podman instead." + } + prefix = task.ext.prefix ?: "${meta.id}" + // WARN https://github.com/nf-core/modules/pull/5801#issuecomment-2194293755 + // FIXME Revert this on next version bump + def VERSION = '1.6.1' + """ + touch ${prefix}.visual_report.html + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + deepvariant: $VERSION + END_VERSIONS + """ +} diff --git a/modules/nf-core/deepvariant/vcfstatsreport/meta.yml b/modules/nf-core/deepvariant/vcfstatsreport/meta.yml new file mode 100644 index 00000000..c882a1b1 --- /dev/null +++ b/modules/nf-core/deepvariant/vcfstatsreport/meta.yml @@ -0,0 +1,47 @@ +name: deepvariant_vcfstatsreport +description: DeepVariant is an analysis pipeline that uses a deep neural network to + call genetic variants from next-generation DNA sequencing data +keywords: + - variant calling + - machine learning + - neural network +tools: + - deepvariant: + description: DeepVariant is an analysis pipeline that uses a deep neural network + to call genetic variants from next-generation DNA sequencing data + homepage: https://github.com/google/deepvariant + documentation: https://github.com/google/deepvariant + tool_dev_url: https://github.com/google/deepvariant + doi: "10.1038/nbt.4235" + licence: ["BSD-3-clause"] + identifier: biotools:deepvariant +input: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - vcf: + type: file + description: VCF file + pattern: "{*.vcf,vcf.gz,bcf,bcf.gz}" +output: + - report: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - ${prefix}.visual_report.html: + type: file + description: Visual report in HTML format + pattern: "*.html" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" +authors: + - "@fellen31" +maintainers: + - "@fellen31" diff --git a/modules/nf-core/deepvariant/vcfstatsreport/tests/main.nf.test b/modules/nf-core/deepvariant/vcfstatsreport/tests/main.nf.test new file mode 100644 index 00000000..bec946ef --- /dev/null +++ b/modules/nf-core/deepvariant/vcfstatsreport/tests/main.nf.test @@ -0,0 +1,183 @@ +nextflow_process { + + name "Test Process DEEPVARIANT_VCFSTATSREPORT" + script "../main.nf" + process "DEEPVARIANT_VCFSTATSREPORT" + + tag "deepvariant/vcfstatsreport" + tag "deepvariant" + tag "modules" + tag "modules_nfcore" + + test("vcf") { + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + '/genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("vcf.gz") { + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + '/genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("bcf") { + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + '/genomics/sarscov2/illumina/vcf/test.bcf', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("bcf.gz") { + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + '/genomics/sarscov2/illumina/vcf/test.bcf.gz', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("vcf - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + '/genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("vcf.gz - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + '/genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("bcf - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + '/genomics/sarscov2/illumina/vcf/test.bcf', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("bcf.gz - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + '/genomics/sarscov2/illumina/vcf/test.bcf.gz', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } +} diff --git a/modules/nf-core/deepvariant/vcfstatsreport/tests/main.nf.test.snap b/modules/nf-core/deepvariant/vcfstatsreport/tests/main.nf.test.snap new file mode 100644 index 00000000..9a9ac3ce --- /dev/null +++ b/modules/nf-core/deepvariant/vcfstatsreport/tests/main.nf.test.snap @@ -0,0 +1,266 @@ +{ + "bcf.gz": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.visual_report.html:md5,28e2e19d97cdeddf25813534384ae9ca" + ] + ], + "1": [ + "versions.yml:md5,3378d1cbd4b3ba7579dcd6c47266f996" + ], + "report": [ + [ + { + "id": "test" + }, + "test.visual_report.html:md5,28e2e19d97cdeddf25813534384ae9ca" + ] + ], + "versions": [ + "versions.yml:md5,3378d1cbd4b3ba7579dcd6c47266f996" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-14T08:19:35.672028563" + }, + "bcf": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.visual_report.html:md5,28e2e19d97cdeddf25813534384ae9ca" + ] + ], + "1": [ + "versions.yml:md5,3378d1cbd4b3ba7579dcd6c47266f996" + ], + "report": [ + [ + { + "id": "test" + }, + "test.visual_report.html:md5,28e2e19d97cdeddf25813534384ae9ca" + ] + ], + "versions": [ + "versions.yml:md5,3378d1cbd4b3ba7579dcd6c47266f996" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-11T07:47:10.485269156" + }, + "vcf.gz - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,3378d1cbd4b3ba7579dcd6c47266f996" + ], + "report": [ + [ + { + "id": "test" + }, + "test.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,3378d1cbd4b3ba7579dcd6c47266f996" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-14T08:34:50.411910578" + }, + "vcf.gz": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.visual_report.html:md5,28e2e19d97cdeddf25813534384ae9ca" + ] + ], + "1": [ + "versions.yml:md5,3378d1cbd4b3ba7579dcd6c47266f996" + ], + "report": [ + [ + { + "id": "test" + }, + "test.visual_report.html:md5,28e2e19d97cdeddf25813534384ae9ca" + ] + ], + "versions": [ + "versions.yml:md5,3378d1cbd4b3ba7579dcd6c47266f996" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-11T07:47:00.438649988" + }, + "vcf": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.visual_report.html:md5,28e2e19d97cdeddf25813534384ae9ca" + ] + ], + "1": [ + "versions.yml:md5,3378d1cbd4b3ba7579dcd6c47266f996" + ], + "report": [ + [ + { + "id": "test" + }, + "test.visual_report.html:md5,28e2e19d97cdeddf25813534384ae9ca" + ] + ], + "versions": [ + "versions.yml:md5,3378d1cbd4b3ba7579dcd6c47266f996" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-11T07:44:07.427456921" + }, + "bcf - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,3378d1cbd4b3ba7579dcd6c47266f996" + ], + "report": [ + [ + { + "id": "test" + }, + "test.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,3378d1cbd4b3ba7579dcd6c47266f996" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-14T08:35:03.341417618" + }, + "bcf.gz - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,3378d1cbd4b3ba7579dcd6c47266f996" + ], + "report": [ + [ + { + "id": "test" + }, + "test.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,3378d1cbd4b3ba7579dcd6c47266f996" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-14T08:35:13.52398762" + }, + "vcf - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,3378d1cbd4b3ba7579dcd6c47266f996" + ], + "report": [ + [ + { + "id": "test" + }, + "test.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,3378d1cbd4b3ba7579dcd6c47266f996" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-14T08:34:35.977457571" + } +} \ No newline at end of file diff --git a/modules/nf-core/deepvariant/vcfstatsreport/tests/tags.yml b/modules/nf-core/deepvariant/vcfstatsreport/tests/tags.yml new file mode 100644 index 00000000..3b1f5922 --- /dev/null +++ b/modules/nf-core/deepvariant/vcfstatsreport/tests/tags.yml @@ -0,0 +1,2 @@ +deepvariant/vcfstatsreport: + - modules/nf-core/deepvariant/vcfstatsreport/** diff --git a/subworkflows/local/short_variant_calling/main.nf b/subworkflows/local/short_variant_calling/main.nf index d6cc9342..c155ac14 100644 --- a/subworkflows/local/short_variant_calling/main.nf +++ b/subworkflows/local/short_variant_calling/main.nf @@ -7,6 +7,7 @@ include { BCFTOOLS_FILLTAGS } from '../../../modules/l include { BCFTOOLS_NORM as BCFTOOLS_NORM_MULTISAMPLE } from '../../../modules/nf-core/bcftools/norm/main' include { BCFTOOLS_NORM as BCFTOOLS_NORM_SINGLESAMPLE } from '../../../modules/nf-core/bcftools/norm/main' include { DEEPVARIANT } from '../../../modules/nf-core/deepvariant/main' +include { DEEPVARIANT_VCFSTATSREPORT } from '../../../modules/nf-core/deepvariant/vcfstatsreport/main' include { GLNEXUS } from '../../../modules/nf-core/glnexus/main' workflow SHORT_VARIANT_CALLING { @@ -99,10 +100,15 @@ workflow SHORT_VARIANT_CALLING { ) ch_versions = ch_versions.mix(BCFTOOLS_NORM_MULTISAMPLE.out.versions) + // This is run before normalization for each sample to mimic run_deepvariant pipeline + DEEPVARIANT_VCFSTATSREPORT ( BCFTOOLS_CONCAT.out.vcf ) + ch_versions = ch_versions.mix(DEEPVARIANT_VCFSTATSREPORT.out.versions) + emit: - snp_calls_vcf = BCFTOOLS_NORM_SINGLESAMPLE.out.vcf // channel: [ val(meta), path(vcf) ] - snp_calls_tbi = BCFTOOLS_NORM_SINGLESAMPLE.out.tbi // channel: [ val(meta), path(tbi) ] - combined_bcf = BCFTOOLS_NORM_MULTISAMPLE.out.vcf // channel: [ val(meta), path(bcf) ] - combined_csi = BCFTOOLS_NORM_MULTISAMPLE.out.csi // channel: [ val(meta), path(csi) ] - versions = ch_versions // channel: [ path(versions.yml) ] + snp_calls_vcf = BCFTOOLS_NORM_SINGLESAMPLE.out.vcf // channel: [ val(meta), path(vcf) ] + snp_calls_tbi = BCFTOOLS_NORM_SINGLESAMPLE.out.tbi // channel: [ val(meta), path(tbi) ] + combined_bcf = BCFTOOLS_NORM_MULTISAMPLE.out.vcf // channel: [ val(meta), path(bcf) ] + combined_csi = BCFTOOLS_NORM_MULTISAMPLE.out.csi // channel: [ val(meta), path(csi) ] + vcfstatsreport = DEEPVARIANT_VCFSTATSREPORT.out.report // channel: [ val(meta), path(html) ] + versions = ch_versions // channel: [ path(versions.yml) ] } diff --git a/subworkflows/local/short_variant_calling/tests/main.nf.test.snap b/subworkflows/local/short_variant_calling/tests/main.nf.test.snap index 1755ef49..d084a601 100644 --- a/subworkflows/local/short_variant_calling/tests/main.nf.test.snap +++ b/subworkflows/local/short_variant_calling/tests/main.nf.test.snap @@ -41,13 +41,23 @@ ] ], "4": [ + [ + { + "id": "test", + "single_end": false + }, + "test.visual_report.html:md5,828ada93b6101047c8de4789803c726c" + ] + ], + "5": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ], "combined_bcf": [ [ @@ -87,6 +97,15 @@ "test_norm_singlesample.vcf.gz:md5,8d1b64c0eed7eb66dd3294fcbc15b4a1" ] ], + "vcfstatsreport": [ + [ + { + "id": "test", + "single_end": false + }, + "test.visual_report.html:md5,828ada93b6101047c8de4789803c726c" + ] + ], "versions": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", @@ -94,7 +113,8 @@ "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ] } ], @@ -102,7 +122,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-25T09:40:03.879250426" + "timestamp": "2024-10-29T16:07:40.986337827" }, "1 sample - 2 bed, fasta, fai, bed, [] - stub": { "content": [ @@ -162,6 +182,15 @@ ] ], "4": [ + [ + { + "id": "test", + "single_end": false + }, + "test.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", @@ -173,7 +202,8 @@ "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ], "combined_bcf": [ [ @@ -229,6 +259,15 @@ "test_norm_singlesample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], + "vcfstatsreport": [ + [ + { + "id": "test", + "single_end": false + }, + "test.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], "versions": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", @@ -241,7 +280,8 @@ "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ] } ], @@ -249,7 +289,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-25T09:42:56.764594137" + "timestamp": "2024-10-29T16:10:40.730903286" }, "1 sample - 1 bed, fasta, fai, bed, []": { "content": [ @@ -293,13 +333,23 @@ ] ], "4": [ + [ + { + "id": "test", + "single_end": false + }, + "test.visual_report.html:md5,828ada93b6101047c8de4789803c726c" + ] + ], + "5": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ], "combined_bcf": [ [ @@ -339,6 +389,15 @@ "test_norm_singlesample.vcf.gz:md5,8d1b64c0eed7eb66dd3294fcbc15b4a1" ] ], + "vcfstatsreport": [ + [ + { + "id": "test", + "single_end": false + }, + "test.visual_report.html:md5,828ada93b6101047c8de4789803c726c" + ] + ], "versions": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", @@ -346,7 +405,8 @@ "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ] } ], @@ -354,7 +414,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-25T09:40:32.794032818" + "timestamp": "2024-10-29T16:08:11.306771116" }, "2 samples - 2 bed, fasta, fai, bed, par_bed": { "content": [ @@ -428,6 +488,22 @@ ] ], "4": [ + [ + { + "id": "test", + "single_end": false + }, + "test.visual_report.html:md5,316443518dbcf50923d09b07ec39a9f9" + ], + [ + { + "id": "test2", + "single_end": false + }, + "test2.visual_report.html:md5,3358ec9541a51f43ab77cc79a8ed2f23" + ] + ], + "5": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", @@ -443,7 +519,9 @@ "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ], "combined_bcf": [ [ @@ -513,6 +591,22 @@ "test2_norm_singlesample.vcf.gz:md5,0e42833e64e0f427ca09259e17e2765b" ] ], + "vcfstatsreport": [ + [ + { + "id": "test", + "single_end": false + }, + "test.visual_report.html:md5,316443518dbcf50923d09b07ec39a9f9" + ], + [ + { + "id": "test2", + "single_end": false + }, + "test2.visual_report.html:md5,3358ec9541a51f43ab77cc79a8ed2f23" + ] + ], "versions": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", @@ -529,7 +623,9 @@ "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ] } ], @@ -537,7 +633,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-25T09:42:10.61904887" + "timestamp": "2024-10-29T16:09:53.140402914" }, "2 samples - 2 bed, fasta, fai, bed, [] - stub": { "content": [ @@ -611,6 +707,22 @@ ] ], "4": [ + [ + { + "id": "test", + "single_end": false + }, + "test.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "test2", + "single_end": false + }, + "test2.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", @@ -626,7 +738,9 @@ "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ], "combined_bcf": [ [ @@ -696,6 +810,22 @@ "test2_norm_singlesample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], + "vcfstatsreport": [ + [ + { + "id": "test", + "single_end": false + }, + "test.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "test2", + "single_end": false + }, + "test2.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], "versions": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", @@ -712,7 +842,9 @@ "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ] } ], @@ -720,7 +852,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-25T09:43:09.654620289" + "timestamp": "2024-10-29T16:10:54.089846948" }, "2 samples - 2 bed, fasta, fai, bed, par_bed - stub": { "content": [ @@ -794,6 +926,22 @@ ] ], "4": [ + [ + { + "id": "test", + "single_end": false + }, + "test.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "test2", + "single_end": false + }, + "test2.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", @@ -809,7 +957,9 @@ "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ], "combined_bcf": [ [ @@ -879,6 +1029,22 @@ "test2_norm_singlesample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], + "vcfstatsreport": [ + [ + { + "id": "test", + "single_end": false + }, + "test.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "test2", + "single_end": false + }, + "test2.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], "versions": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", @@ -895,7 +1061,9 @@ "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ] } ], @@ -903,7 +1071,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-25T09:43:22.844047056" + "timestamp": "2024-10-29T16:11:07.961520037" }, "1 sample - 1 bed, fasta, fai, bed, [] - stub": { "content": [ @@ -947,13 +1115,23 @@ ] ], "4": [ + [ + { + "id": "test", + "single_end": false + }, + "test.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ], "combined_bcf": [ [ @@ -993,6 +1171,15 @@ "test_norm_singlesample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], + "vcfstatsreport": [ + [ + { + "id": "test", + "single_end": false + }, + "test.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], "versions": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", @@ -1000,7 +1187,8 @@ "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ] } ], @@ -1008,7 +1196,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-25T09:42:44.538312054" + "timestamp": "2024-10-29T16:10:27.465086494" }, "1 sample - no bed, fasta, fai, [], []": { "content": [ @@ -1056,13 +1244,23 @@ ] ], "4": [ + [ + { + "id": "test", + "single_end": false + }, + "test.visual_report.html:md5,828ada93b6101047c8de4789803c726c" + ] + ], + "5": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ], "combined_bcf": [ [ @@ -1106,6 +1304,15 @@ "test_norm_singlesample.vcf.gz:md5,8d1b64c0eed7eb66dd3294fcbc15b4a1" ] ], + "vcfstatsreport": [ + [ + { + "id": "test", + "single_end": false + }, + "test.visual_report.html:md5,828ada93b6101047c8de4789803c726c" + ] + ], "versions": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", @@ -1113,7 +1320,8 @@ "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ] } ], @@ -1121,7 +1329,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-25T09:39:34.803782002" + "timestamp": "2024-10-29T16:07:10.788542987" }, "1 sample - 2 bed, fasta, fai, bed, []": { "content": [ @@ -1181,6 +1389,15 @@ ] ], "4": [ + [ + { + "id": "test", + "single_end": false + }, + "test.visual_report.html:md5,316443518dbcf50923d09b07ec39a9f9" + ] + ], + "5": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", @@ -1192,7 +1409,8 @@ "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ], "combined_bcf": [ [ @@ -1248,6 +1466,15 @@ "test_norm_singlesample.vcf.gz:md5,f8e492c9c4d6e0cb027b300bb3f7155a" ] ], + "vcfstatsreport": [ + [ + { + "id": "test", + "single_end": false + }, + "test.visual_report.html:md5,316443518dbcf50923d09b07ec39a9f9" + ] + ], "versions": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", @@ -1260,7 +1487,8 @@ "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ] } ], @@ -1268,7 +1496,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-25T09:41:03.437551855" + "timestamp": "2024-10-29T16:08:43.412821579" }, "2 samples - 2 bed, fasta, fai, bed, []": { "content": [ @@ -1342,6 +1570,22 @@ ] ], "4": [ + [ + { + "id": "test", + "single_end": false + }, + "test.visual_report.html:md5,316443518dbcf50923d09b07ec39a9f9" + ], + [ + { + "id": "test2", + "single_end": false + }, + "test2.visual_report.html:md5,3358ec9541a51f43ab77cc79a8ed2f23" + ] + ], + "5": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", @@ -1357,7 +1601,9 @@ "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ], "combined_bcf": [ [ @@ -1427,6 +1673,22 @@ "test2_norm_singlesample.vcf.gz:md5,0e42833e64e0f427ca09259e17e2765b" ] ], + "vcfstatsreport": [ + [ + { + "id": "test", + "single_end": false + }, + "test.visual_report.html:md5,316443518dbcf50923d09b07ec39a9f9" + ], + [ + { + "id": "test2", + "single_end": false + }, + "test2.visual_report.html:md5,3358ec9541a51f43ab77cc79a8ed2f23" + ] + ], "versions": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", @@ -1443,7 +1705,9 @@ "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ] } ], @@ -1451,7 +1715,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-25T09:41:37.132064291" + "timestamp": "2024-10-29T16:09:18.071239185" }, "1 sample - no bed, fasta, fai, [], [] - stub": { "content": [ @@ -1499,13 +1763,23 @@ ] ], "4": [ + [ + { + "id": "test", + "single_end": false + }, + "test.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ], "combined_bcf": [ [ @@ -1549,6 +1823,15 @@ "test_norm_singlesample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], + "vcfstatsreport": [ + [ + { + "id": "test", + "single_end": false + }, + "test.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], "versions": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", @@ -1556,7 +1839,8 @@ "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ] } ], @@ -1564,7 +1848,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-25T09:42:22.040964953" + "timestamp": "2024-10-29T16:10:04.450948339" }, "1 sample - 1 bed, fasta, fai, [], [] - stub": { "content": [ @@ -1608,13 +1892,23 @@ ] ], "4": [ + [ + { + "id": "test", + "single_end": false + }, + "test.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ], "combined_bcf": [ [ @@ -1654,6 +1948,15 @@ "test_norm_singlesample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], + "vcfstatsreport": [ + [ + { + "id": "test", + "single_end": false + }, + "test.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], "versions": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", @@ -1661,7 +1964,8 @@ "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ] } ], @@ -1669,6 +1973,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-25T09:42:33.197137178" + "timestamp": "2024-10-29T16:10:15.936988344" } } \ No newline at end of file diff --git a/tests/.nftignore b/tests/.nftignore index 4a4111aa..0999bb4a 100644 --- a/tests/.nftignore +++ b/tests/.nftignore @@ -12,6 +12,7 @@ pipeline_info/*.{html,json,txt,yml} qc/cramino/**/*.txt qc/fastqc/**/*.{zip,html} qc/somalier/**/*.{html,tsv} +qc/deepvariant_vcfstatsreport/**/*.html repeat_annotation/**/*.{vcf.gz,tbi} repeat_calling/**/*.{vcf.gz,tbi,bam,bai} snvs/**/*.{vcf.gz,tbi,txt} diff --git a/tests/samplesheet.nf.test.snap b/tests/samplesheet.nf.test.snap index e97c63f2..c385a405 100644 --- a/tests/samplesheet.nf.test.snap +++ b/tests/samplesheet.nf.test.snap @@ -1,7 +1,7 @@ { "test profile": { "content": [ - 112, + 113, { "ADD_FOUND_IN_TAG": { "bcftools": 1.2, @@ -78,6 +78,9 @@ "DEEPVARIANT": { "deepvariant": "1.6.1" }, + "DEEPVARIANT_VCFSTATSREPORT": { + "deepvariant": "1.6.1" + }, "DIPCALL": { "dipcall": 0.3 }, @@ -329,6 +332,9 @@ "qc/cramino/unphased/HG002_Revio", "qc/cramino/unphased/HG002_Revio/HG002_Revio_cramino_aligned.arrow", "qc/cramino/unphased/HG002_Revio/HG002_Revio_cramino_aligned.txt", + "qc/deepvariant_vcfstatsreport", + "qc/deepvariant_vcfstatsreport/HG002_Revio", + "qc/deepvariant_vcfstatsreport/HG002_Revio/HG002_Revio.visual_report.html", "qc/fastqc", "qc/fastqc/HG002_Revio", "qc/fastqc/HG002_Revio/HG002_Revio_fastqc.html", @@ -546,6 +552,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-30T11:26:11.367381989" + "timestamp": "2024-10-30T16:34:25.418004313" } } \ No newline at end of file diff --git a/tests/samplesheet_multisample_bam.nf.test.snap b/tests/samplesheet_multisample_bam.nf.test.snap index 3aa42ad2..e1aff08a 100644 --- a/tests/samplesheet_multisample_bam.nf.test.snap +++ b/tests/samplesheet_multisample_bam.nf.test.snap @@ -1,7 +1,7 @@ { "samplesheet_multisample_bam | --phaser hiphase": { "content": [ - 158, + 160, { "ADD_FOUND_IN_TAG": { "bcftools": 1.2, @@ -78,6 +78,9 @@ "DEEPVARIANT": { "deepvariant": "1.6.1" }, + "DEEPVARIANT_VCFSTATSREPORT": { + "deepvariant": "1.6.1" + }, "DIPCALL": { "dipcall": 0.3 }, @@ -379,6 +382,11 @@ "qc/cramino/unphased/HG002_Revio_B", "qc/cramino/unphased/HG002_Revio_B/HG002_Revio_B_cramino_aligned.arrow", "qc/cramino/unphased/HG002_Revio_B/HG002_Revio_B_cramino_aligned.txt", + "qc/deepvariant_vcfstatsreport", + "qc/deepvariant_vcfstatsreport/HG002_Revio_A", + "qc/deepvariant_vcfstatsreport/HG002_Revio_A/HG002_Revio_A.visual_report.html", + "qc/deepvariant_vcfstatsreport/HG002_Revio_B", + "qc/deepvariant_vcfstatsreport/HG002_Revio_B/HG002_Revio_B.visual_report.html", "qc/fastqc", "qc/fastqc/HG002_Revio_A", "qc/fastqc/HG002_Revio_A/HG002_Revio_A_fastqc.html", @@ -746,6 +754,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-30T11:27:50.204023027" + "timestamp": "2024-10-30T16:36:03.651732371" } } \ No newline at end of file diff --git a/tests/samplesheet_multisample_ont_bam.nf.test.snap b/tests/samplesheet_multisample_ont_bam.nf.test.snap index 1c19f9b8..cc481cfa 100644 --- a/tests/samplesheet_multisample_ont_bam.nf.test.snap +++ b/tests/samplesheet_multisample_ont_bam.nf.test.snap @@ -1,7 +1,7 @@ { "samplesheet_multisample_ont_bam | --preset ONT_R10 --phaser whatshap --parallel_alignments 1 --parallel_snv 1": { "content": [ - 105, + 107, { "ADD_FOUND_IN_TAG": { "bcftools": 1.2, @@ -69,6 +69,9 @@ "DEEPVARIANT": { "deepvariant": "1.6.1" }, + "DEEPVARIANT_VCFSTATSREPORT": { + "deepvariant": "1.6.1" + }, "ECHTVAR_ANNO": { "echtvar": "0.2.0" }, @@ -287,6 +290,11 @@ "qc/cramino/unphased/HG002_ONT_B", "qc/cramino/unphased/HG002_ONT_B/HG002_ONT_B_cramino_aligned.arrow", "qc/cramino/unphased/HG002_ONT_B/HG002_ONT_B_cramino_aligned.txt", + "qc/deepvariant_vcfstatsreport", + "qc/deepvariant_vcfstatsreport/HG002_ONT_A", + "qc/deepvariant_vcfstatsreport/HG002_ONT_A/HG002_ONT_A.visual_report.html", + "qc/deepvariant_vcfstatsreport/HG002_ONT_B", + "qc/deepvariant_vcfstatsreport/HG002_ONT_B/HG002_ONT_B.visual_report.html", "qc/fastqc", "qc/fastqc/HG002_ONT_A", "qc/fastqc/HG002_ONT_A/HG002_ONT_A_fastqc.html", @@ -490,6 +498,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-30T11:29:20.61580529" + "timestamp": "2024-10-30T16:37:34.127632366" } } \ No newline at end of file From 0b2b81c39fe15e0d487953321fa8e2a480dae197 Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Wed, 30 Oct 2024 17:31:42 +0100 Subject: [PATCH 051/106] Refactor reference channels (#443) * Refactor reference channels * Remove line belonging to another PR --- CHANGELOG.md | 2 + .../{schema_snpdb.json => schema_snp_db.json} | 11 +- assets/schema_vep_plugin_files.json | 20 ++++ docs/usage.md | 2 +- modules/nf-core/cadd/cadd.diff | 5 +- modules/nf-core/cadd/main.nf | 4 +- nextflow.config | 2 +- nextflow_schema.json | 2 +- subworkflows/local/annotate_cadd/main.nf | 8 +- subworkflows/local/prepare_genome.nf | 23 +--- .../local/rank_variants/tests/main.nf.test | 9 +- subworkflows/local/snv_annotation/main.nf | 6 +- .../local/snv_annotation/tests/main.nf.test | 10 +- .../local/utils_nfcore_nallo_pipeline/main.nf | 12 +++ tests/samplesheet.nf.test.snap | 2 +- .../samplesheet_multisample_bam.nf.test.snap | 2 +- ...mplesheet_multisample_ont_bam.nf.test.snap | 2 +- workflows/nallo.nf | 100 +++++++----------- 18 files changed, 108 insertions(+), 114 deletions(-) rename assets/{schema_snpdb.json => schema_snp_db.json} (53%) create mode 100644 assets/schema_vep_plugin_files.json diff --git a/CHANGELOG.md b/CHANGELOG.md index 0fa19ecb..a2732b30 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -73,6 +73,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#438](https://github.com/genomic-medicine-sweden/nallo/pull/438) - Updated pipeline tests to use functions in nft-utils instead of checking hardcoded paths - [#440](https://github.com/genomic-medicine-sweden/nallo/pull/440) - Updated hifiasm to 0.20 with new default parameters for telomeres and scaffolding ([#295](https://github.com/genomic-medicine-sweden/nallo/issues/295)) - [#441](https://github.com/genomic-medicine-sweden/nallo/pull/441) - Changed the minimap2 preset for hifi reads back to `map-hifi` +- [#443](https://github.com/genomic-medicine-sweden/nallo/pull/443) - Refactored reference channel assignments +- [#443](https://github.com/genomic-medicine-sweden/nallo/pull/443) - Updated schemas for `vep_plugin_files` and `snp_db` ### `Removed` diff --git a/assets/schema_snpdb.json b/assets/schema_snp_db.json similarity index 53% rename from assets/schema_snpdb.json rename to assets/schema_snp_db.json index 648a5283..4d9141db 100644 --- a/assets/schema_snpdb.json +++ b/assets/schema_snp_db.json @@ -1,8 +1,8 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://raw.githubusercontent.com/genomic-medicine-sweden/nallo/master/assets/schema_gvcfs.json", - "title": "genomic-medicine-sweden/nallo pipeline - params.extra_gvcfs schema", - "description": "Schema for the file provided with params.extra_gvcfs", + "$id": "https://raw.githubusercontent.com/genomic-medicine-sweden/nallo/master/assets/schema_snp_db.json", + "title": "genomic-medicine-sweden/nallo pipeline - params.snp_db schema", + "description": "Schema for the file provided with params.snp_db", "type": "array", "items": { "type": "object", @@ -10,14 +10,13 @@ "sample": { "type": "string", "pattern": "^\\S+$", - "errorMessage": "Sample name must be provided and cannot contain spaces", - "meta": ["id"] + "errorMessage": "Sample must be provided and cannot contain spaces." }, "file": { "format": "file-path", "type": "string", "pattern": "^\\S+\\.zip$", - "errorMessage": "gVCF file must be provided, cannot contain spaces and must have extension 'g.vcf.gz' or 'gvcf.gz'" + "errorMessage": "Echtvar database must be provided, cannot contain spaces and must have extension '.zip'" } }, "required": ["sample", "file"] diff --git a/assets/schema_vep_plugin_files.json b/assets/schema_vep_plugin_files.json new file mode 100644 index 00000000..0be393a3 --- /dev/null +++ b/assets/schema_vep_plugin_files.json @@ -0,0 +1,20 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://raw.githubusercontent.com/genomic-medicine-sweden/nallo/master/assets/schema_vep_plugin_files.json", + "title": "genomic-medicine-sweden/nallo pipeline - params.vep_plugin_files schema", + "description": "Schema for the file provided with params.vep_plugin_files", + "type": "array", + "items": { + "type": "object", + "properties": { + "vep_files": { + "format": "file-path", + "type": "string", + "pattern": "^\\S+", + "exists": true, + "errorMessage": "Vep plugin file must be a path and exist." + } + }, + "required": ["vep_files"] + } +} diff --git a/docs/usage.md b/docs/usage.md index b5a9fe4d..870f3344 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -449,7 +449,7 @@ Find the version of nf-validation you downloaded in `$HOME/.nextflow/plugins`, t ``` plugins { // Set the plugin version explicitly, otherwise nextflow will look for the newest version online. - id 'nf-schema@2.1.1' + id 'nf-schema@2.2.0' } ``` diff --git a/modules/nf-core/cadd/cadd.diff b/modules/nf-core/cadd/cadd.diff index f174cc67..2243f02d 100644 --- a/modules/nf-core/cadd/cadd.diff +++ b/modules/nf-core/cadd/cadd.diff @@ -15,8 +15,9 @@ Changes in 'cadd/main.nf': input: tuple val(meta), path(vcf) - path(annotation_dir) -+ path(prescored_dir) +- path(annotation_dir) ++ tuple val(meta2), path(annotation_dir) ++ tuple val(meta3), path(prescored_dir) output: tuple val(meta), path("*.tsv.gz"), emit: tsv diff --git a/modules/nf-core/cadd/main.nf b/modules/nf-core/cadd/main.nf index 52490c64..d830ff72 100644 --- a/modules/nf-core/cadd/main.nf +++ b/modules/nf-core/cadd/main.nf @@ -13,8 +13,8 @@ process CADD { input: tuple val(meta), path(vcf) - path(annotation_dir) - path(prescored_dir) + tuple val(meta2), path(annotation_dir) + tuple val(meta3), path(prescored_dir) output: tuple val(meta), path("*.tsv.gz"), emit: tsv diff --git a/nextflow.config b/nextflow.config index d424c0eb..fe454b2c 100644 --- a/nextflow.config +++ b/nextflow.config @@ -278,7 +278,7 @@ manifest { // Nextflow plugins plugins { - id 'nf-schema@2.1.1' // Validation of pipeline parameters and creation of an input channel from a sample sheet + id 'nf-schema@2.2.0' // Validation of pipeline parameters and creation of an input channel from a sample sheet } validation { diff --git a/nextflow_schema.json b/nextflow_schema.json index 65f282cc..be205588 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -163,7 +163,7 @@ "pattern": "^\\S+\\.csv$", "format": "file-path", "mimetype": "text/csv", - "schema": "/assets/schema_snpdb.json", + "schema": "/assets/schema_snp_db.json", "description": "A csv file with echtvar databases to annotate SNVs with", "exists": true }, diff --git a/subworkflows/local/annotate_cadd/main.nf b/subworkflows/local/annotate_cadd/main.nf index 9a1dc047..a56d1450 100644 --- a/subworkflows/local/annotate_cadd/main.nf +++ b/subworkflows/local/annotate_cadd/main.nf @@ -17,9 +17,9 @@ workflow ANNOTATE_CADD { ch_fai // channel: [mandatory] [ val(meta), path(fai) ] ch_vcf // channel: [mandatory] [ val(meta), path(vcfs) ] ch_index // channel: [mandatory] [ val(meta), path(tbis) ] - ch_header // channel: [mandatory] [ path(txt) ] - ch_cadd_resources // channel: [mandatory] [ path(dir) ] - ch_cadd_prescored // channel: [mandatory] [ path(dir) ] + ch_header // channel: [mandatory] [ val(meta), path(txt) ] + ch_cadd_resources // channel: [mandatory] [ val(meta), path(dir) ] + ch_cadd_prescored // channel: [mandatory] [ val(meta), path(dir) ] main: ch_versions = Channel.empty() @@ -64,7 +64,7 @@ workflow ANNOTATE_CADD { ANNOTATE_INDELS ( ch_annotate_indels_in, - ch_header, + ch_header.map { meta, header -> header }, CADD_TO_REFERENCE_CHRNAMES.out.output.map { meta, txt -> txt } ) ch_versions = ch_versions.mix(ANNOTATE_INDELS.out.versions) diff --git a/subworkflows/local/prepare_genome.nf b/subworkflows/local/prepare_genome.nf index f18cf360..23bfe8f0 100644 --- a/subworkflows/local/prepare_genome.nf +++ b/subworkflows/local/prepare_genome.nf @@ -10,7 +10,6 @@ workflow PREPARE_GENOME { gunzip_fasta // bool: should we gunzip fasta ch_vep_cache // channel: [optional] [ val(meta), path(cache) ] split_vep_files // bool: are there vep extra files - ch_vep_extra_files_unsplit // channel: [optional] [ val(meta), path(csv) ] main: ch_versions = Channel.empty() @@ -40,33 +39,13 @@ workflow PREPARE_GENOME { ch_versions = ch_versions.mix(UNTAR_VEP_CACHE.out.versions) UNTAR_VEP_CACHE.out.untar - .map { meta, files -> [ files ] } .collect() .set { untarred_vep } - // Read and store paths in the vep_plugin_files file - if ( split_vep_files ) { - ch_vep_extra_files_unsplit - .splitCsv ( header:true ) - .map { row -> - path = file(row.vep_files[0]) - if(path.exists()) { - return [path] - } else { - error("\nVep database file ${path} does not exist.") - } - } - .collect() - .set { ch_vep_extra_files } - } else { - ch_vep_extra_files = Channel.value([]) - } - emit: mmi = MINIMAP2_INDEX.out.index.collect() // channel: [ val(meta), path(mmi) ] fai = SAMTOOLS_FAIDX.out.fai.collect() // channel: [ val(meta), path(fai) ] fasta = ch_fasta // channel: [ val(meta), path(fasta) ] - vep_resources = untarred_vep // channel: [ path(cache) ] - vep_extra_files = ch_vep_extra_files // channel: [ path(files) ] + vep_resources = untarred_vep // channel: [ val(meta), path(cache) ] versions = ch_versions // channel: [ versions.yml ] } diff --git a/subworkflows/local/rank_variants/tests/main.nf.test b/subworkflows/local/rank_variants/tests/main.nf.test index 581a7510..473f16c8 100644 --- a/subworkflows/local/rank_variants/tests/main.nf.test +++ b/subworkflows/local/rank_variants/tests/main.nf.test @@ -20,9 +20,6 @@ nextflow_workflow { file(params.pipelines_testdata_base_path + 'reference/vep_cache_test_data.tar.gz', checkIfExists:true) ] input[3] = true - input[4] = Channel.of([ - file(params.pipelines_testdata_base_path + 'reference/vep_plugin_files.csv', checkIfExists: true) - ]) """ } } @@ -69,9 +66,11 @@ nextflow_workflow { ] input[2] = PREPARE_GENOME.out.fasta input[3] = PREPARE_GENOME.out.fai - input[4] = PREPARE_GENOME.out.vep_resources + input[4] = PREPARE_GENOME.out.vep_resources.map { meta, cache -> cache } input[5] = Channel.value('110') - input[6] = PREPARE_GENOME.out.vep_extra_files + input[6] = Channel.of([ + file(params.pipelines_testdata_base_path + 'reference/vep_plugin_files.csv', checkIfExists: true) + ]).splitCsv(header:true).map { row -> row.vep_files }.collect() input[7] = false input[8] = Channel.value([]) input[9] = null diff --git a/subworkflows/local/snv_annotation/main.nf b/subworkflows/local/snv_annotation/main.nf index 82fd3695..d1e382be 100644 --- a/subworkflows/local/snv_annotation/main.nf +++ b/subworkflows/local/snv_annotation/main.nf @@ -8,7 +8,7 @@ workflow SNV_ANNOTATION { take: ch_vcf // channel [mandatory] [ val(meta), path(vcf) ] - ch_databases // channel: [mandatory] [ val(meta), path(db) ] + ch_databases // channel: [mandatory] [ path(db) ] ch_fasta // channel: [mandatory] [ val(meta), path(fasta) ] ch_fai // channel: [mandatory] [ val(meta), path(fai) ] ch_vep_cache // channel: [mandatory] [ path(cache) ] @@ -16,8 +16,8 @@ workflow SNV_ANNOTATION { ch_vep_extra_files // channel: [mandatory] [ path(files) ] val_annotate_cadd // bool: [mandatory] ch_cadd_header // channel: [mandatory] [ path(txt) ] - ch_cadd_resources // channel: [mandatory] [ path(annotation) ] - ch_cadd_prescored // channel: [mandatory] [ path(prescored) ] + ch_cadd_resources // channel: [mandatory] [ val(meta), path(annotation) ] + ch_cadd_prescored // channel: [mandatory] [ val(meta), path(prescored) ] main: ch_versions = Channel.empty() diff --git a/subworkflows/local/snv_annotation/tests/main.nf.test b/subworkflows/local/snv_annotation/tests/main.nf.test index 3164b44a..dd5ee5ef 100644 --- a/subworkflows/local/snv_annotation/tests/main.nf.test +++ b/subworkflows/local/snv_annotation/tests/main.nf.test @@ -88,11 +88,11 @@ nextflow_workflow { ] input[2] = GUNZIP.out.gunzip input[3] = SAMTOOLS_FAIDX.out.fai - input[4] = UNTAR.out.untar.map { meta, cache -> cache } + input[4] = UNTAR.out.untar.map { meta, cache -> cache} input[5] = Channel.value('110') - input[6] = [ + input[6] = Channel.of([ file(params.pipelines_testdata_base_path + 'reference/vep_plugin_files.csv', checkIfExists: true) - ] + ]).splitCsv(header:true).map { row -> row.vep_files }.collect() input[7] = false input[8] = Channel.value([]) input[9] = null @@ -132,9 +132,9 @@ nextflow_workflow { input[3] = SAMTOOLS_FAIDX.out.fai input[4] = UNTAR.out.untar.map { meta, cache -> cache } input[5] = Channel.value('110') - input[6] = [ + input[6] = Channel.of([ file(params.pipelines_testdata_base_path + 'reference/vep_plugin_files.csv', checkIfExists: true) - ] + ]).splitCsv(header:true).map { row -> row.vep_files }.collect() input[7] = false input[8] = Channel.value([]) input[9] = null diff --git a/subworkflows/local/utils_nfcore_nallo_pipeline/main.nf b/subworkflows/local/utils_nfcore_nallo_pipeline/main.nf index 315f86ba..1a04cf76 100644 --- a/subworkflows/local/utils_nfcore_nallo_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_nallo_pipeline/main.nf @@ -641,3 +641,15 @@ def findKeyForValue(def valueToFind, Map map) { } return null // Value not found } + +// Utility function to create channels from references +def createReferenceChannelFromPath(param, defaultValue = '') { + return param ? Channel.fromPath(param, checkIfExists: true) + .map { [ [ id: it.simpleName ], it ] } + .collect() : defaultValue +} +// Utility function to create channels from samplesheets +def createReferenceChannelFromSamplesheet(param, schema, defaultValue = '') { + return param ? Channel.fromList(samplesheetToList(param, schema)) : defaultValue +} + diff --git a/tests/samplesheet.nf.test.snap b/tests/samplesheet.nf.test.snap index c385a405..e5199e7a 100644 --- a/tests/samplesheet.nf.test.snap +++ b/tests/samplesheet.nf.test.snap @@ -552,6 +552,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-30T16:34:25.418004313" + "timestamp": "2024-10-30T17:17:40.017945721" } } \ No newline at end of file diff --git a/tests/samplesheet_multisample_bam.nf.test.snap b/tests/samplesheet_multisample_bam.nf.test.snap index e1aff08a..aa71fd46 100644 --- a/tests/samplesheet_multisample_bam.nf.test.snap +++ b/tests/samplesheet_multisample_bam.nf.test.snap @@ -754,6 +754,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-30T16:36:03.651732371" + "timestamp": "2024-10-30T17:19:17.8692492" } } \ No newline at end of file diff --git a/tests/samplesheet_multisample_ont_bam.nf.test.snap b/tests/samplesheet_multisample_ont_bam.nf.test.snap index cc481cfa..a06ff946 100644 --- a/tests/samplesheet_multisample_ont_bam.nf.test.snap +++ b/tests/samplesheet_multisample_ont_bam.nf.test.snap @@ -498,6 +498,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-30T16:37:34.127632366" + "timestamp": "2024-10-30T17:20:47.644972969" } } \ No newline at end of file diff --git a/workflows/nallo.nf b/workflows/nallo.nf index 28fa679c..50a43395 100644 --- a/workflows/nallo.nf +++ b/workflows/nallo.nf @@ -1,5 +1,8 @@ include { samplesheetToList } from 'plugin/nf-schema' - +include { + createReferenceChannelFromPath + createReferenceChannelFromSamplesheet +} from '../subworkflows/local/utils_nfcore_nallo_pipeline' /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ IMPORT LOCAL SUBWORKFLOWS @@ -71,50 +74,32 @@ workflow NALLO { ch_versions = Channel.empty() ch_multiqc_files = Channel.empty() - // Optional input files that has to be set depending on which workflow is run - ch_cadd_header = Channel.fromPath("$projectDir/assets/cadd_to_vcf_header_-1.0-.txt", checkIfExists: true).collect() - ch_cadd_resources = params.cadd_resources ? Channel.fromPath(params.cadd_resources).collect() - : '' - ch_cadd_prescored = params.cadd_prescored ? Channel.fromPath(params.cadd_prescored).collect() - : '' - ch_fasta = params.fasta ? Channel.fromPath(params.fasta).map { it -> [ it.simpleName, it ] }.collect() - : '' - ch_tandem_repeats = params.tandem_repeats ? Channel.fromPath(params.tandem_repeats).map{ [ it.simpleName, it ] }.collect() - : Channel.value([[],[]]) - ch_input_bed = params.bed ? Channel.fromPath(params.bed).map{ [ [ id:it.simpleName ] , it ] }.collect() - : Channel.value([[],[]]) - ch_par = params.par_regions ? Channel.fromPath(params.par_regions).map { [ [ id: it.simpleName ], it ] }.collect() - : '' - ch_trgt_bed = params.trgt_repeats ? Channel.fromPath(params.trgt_repeats).map { it -> [ it.simpleName, it ] }.collect() - : '' - ch_variant_catalog = params.variant_catalog ? Channel.fromPath(params.variant_catalog).map { it -> [ it.simpleName, it ] }.collect() - : '' - ch_databases = params.snp_db ? Channel.fromList(samplesheetToList(params.snp_db, 'assets/schema_snpdb.json')).map{ it[1] }.collect() - : '' - ch_variant_consequences_snv = params.variant_consequences_snv ? Channel.fromPath(params.variant_consequences_snv).map { it -> [ it.simpleName, it ] }.collect() - : Channel.value([]) - ch_variant_consequences_svs = params.variant_consequences_svs ? Channel.fromPath(params.variant_consequences_svs).map { it -> [ it.simpleName, it ] }.collect() - : Channel.value([]) - ch_vep_cache_unprocessed = params.vep_cache ? Channel.fromPath(params.vep_cache).map { it -> [ [ id:'vep_cache' ], it ] }.collect() - : Channel.value([[],[]]) - ch_vep_extra_files_unsplit = params.vep_plugin_files ? Channel.fromPath(params.vep_plugin_files).collect() - : '' - ch_expected_xy_bed = params.hificnv_xy ? Channel.fromPath(params.hificnv_xy).map { it -> [ [ id: it.simpleName ], it ] }.collect() - : '' - ch_expected_xx_bed = params.hificnv_xx ? Channel.fromPath(params.hificnv_xx).map { it -> [ [ id: it.simpleName ], it ] }.collect() - : '' - ch_exclude_bed = params.hificnv_exclude ? Channel.fromPath(params.hificnv_exclude).map { it -> [ [ id: it.simpleName ], it ] }.collect() - : '' - ch_reduced_penetrance = params.reduced_penetrance ? Channel.fromPath(params.reduced_penetrance).map { it -> [ it.simpleName, it ] }.collect() - : Channel.value([]) - ch_score_config_snv = params.score_config_snv ? Channel.fromPath(params.score_config_snv).map { it -> [ it.simpleName, it ] }.collect() - : Channel.value([]) - ch_score_config_svs = params.score_config_svs ? Channel.fromPath(params.score_config_svs).map { it -> [ it.simpleName, it ] }.collect() - : Channel.value([]) - ch_somalier_sites = params.somalier_sites ? Channel.fromPath(params.somalier_sites).map { [ it.simpleName, it ] }.collect() - : '' - ch_svdb_dbs = params.svdb_dbs ? Channel.fromPath(params.svdb_dbs).map { [ it.simpleName, it ] }.collect() - : '' + // Channels from (optional) input files + // If provided: [[id: 'reference'], [/path/to/reference_full_name.file]] + ch_cadd_header = createReferenceChannelFromPath("$projectDir/assets/cadd_to_vcf_header_-1.0-.txt") + ch_cadd_resources = createReferenceChannelFromPath(params.cadd_resouces) + ch_cadd_prescored = createReferenceChannelFromPath(params.cadd_prescored) + ch_fasta = createReferenceChannelFromPath(params.fasta) + ch_tandem_repeats = createReferenceChannelFromPath(params.tandem_repeats, Channel.value([[],[]])) + ch_input_bed = createReferenceChannelFromPath(params.bed, Channel.value([[],[]])) + ch_par = createReferenceChannelFromPath(params.par_regions) + ch_trgt_bed = createReferenceChannelFromPath(params.trgt_repeats) + ch_variant_catalog = createReferenceChannelFromPath(params.variant_catalog) + ch_variant_consequences_snv = createReferenceChannelFromPath(params.variant_consequences_snv) + ch_variant_consequences_svs = createReferenceChannelFromPath(params.variant_consequences_svs) + ch_vep_cache_unprocessed = createReferenceChannelFromPath(params.vep_cache, Channel.value([])) + ch_expected_xy_bed = createReferenceChannelFromPath(params.hificnv_xy) + ch_expected_xx_bed = createReferenceChannelFromPath(params.hificnv_xx) + ch_exclude_bed = createReferenceChannelFromPath(params.hificnv_exclude) + ch_reduced_penetrance = createReferenceChannelFromPath(params.reduced_penetrance) + ch_score_config_snv = createReferenceChannelFromPath(params.score_config_snv) + ch_score_config_svs = createReferenceChannelFromPath(params.score_config_svs) + ch_somalier_sites = createReferenceChannelFromPath(params.somalier_sites) + ch_svdb_dbs = createReferenceChannelFromPath(params.svdb_dbs) + + // Channels from (optional) input samplesheets validated by schema + ch_databases = createReferenceChannelFromSamplesheet(params.snp_db, 'assets/schema_snp_db.json') + ch_vep_plugin_files = createReferenceChannelFromSamplesheet(params.vep_plugin_files, 'assets/schema_vep_plugin_files.json', Channel.value([])) // Check parameter that doesn't conform to schema validation here if (params.phaser.matches('hiphase') && params.preset == 'ONT_R10') { error "The HiPhase license only permits analysis of data from PacBio. For details see: https://github.com/PacificBiosciences/HiPhase/blob/main/LICENSE.md" } @@ -131,24 +116,21 @@ workflow NALLO { // // Prepare references // - if(!params.skip_mapping_wf | !params.skip_assembly_wf ) { + if(!params.skip_mapping_wf || !params.skip_assembly_wf ) { PREPARE_GENOME ( ch_fasta, params.fasta.endsWith('.gz'), ch_vep_cache_unprocessed, params.vep_plugin_files, - ch_vep_extra_files_unsplit ) ch_versions = ch_versions.mix(PREPARE_GENOME.out.versions) - if(!params.skip_snv_annotation) { - if (params.vep_cache) { - if (params.vep_cache.endsWith("tar.gz")) { - ch_vep_cache = PREPARE_GENOME.out.vep_resources - } else { - ch_vep_cache = Channel.fromPath(params.vep_cache).collect() - } + if(!params.skip_snv_annotation && params.vep_cache) { + if (params.vep_cache.endsWith("tar.gz")) { + ch_vep_cache = PREPARE_GENOME.out.vep_resources + } else { + ch_vep_cache = Channel.fromPath(params.vep_cache).collect() } } @@ -355,12 +337,12 @@ workflow NALLO { // SNV_ANNOTATION( SHORT_VARIANT_CALLING.out.combined_bcf, - ch_databases, + ch_databases.map { meta, databases -> databases }.collect(), fasta, fai.map { name, fai -> [ [ id: name ], fai ] }, - ch_vep_cache, + ch_vep_cache.map { meta, cache -> cache }, params.vep_cache_version, - PREPARE_GENOME.out.vep_extra_files, + ch_vep_plugin_files.collect(), (params.cadd_resources && params.cadd_prescored), ch_cadd_header, ch_cadd_resources, @@ -534,9 +516,9 @@ workflow NALLO { annotate_svs_in, fasta, ch_svdb_dbs, - ch_vep_cache, + ch_vep_cache.map { meta, cache -> cache }, params.vep_cache_version, - PREPARE_GENOME.out.vep_extra_files + ch_vep_plugin_files.collect() ) ANN_CSQ_PLI_SVS ( From 56d09dcc3d8bbba31a56473b9487395002be9c4f Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Fri, 1 Nov 2024 13:28:33 +0100 Subject: [PATCH 052/106] Fix reference channels (#474) --- CHANGELOG.md | 1 + workflows/nallo.nf | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a2732b30..ab00e0c2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -75,6 +75,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#441](https://github.com/genomic-medicine-sweden/nallo/pull/441) - Changed the minimap2 preset for hifi reads back to `map-hifi` - [#443](https://github.com/genomic-medicine-sweden/nallo/pull/443) - Refactored reference channel assignments - [#443](https://github.com/genomic-medicine-sweden/nallo/pull/443) - Updated schemas for `vep_plugin_files` and `snp_db` +- [#474](https://github.com/genomic-medicine-sweden/nallo/pull/474) - Updated VEP and CADD channels to fix bugs introduced in [#443](https://github.com/genomic-medicine-sweden/nallo/pull/443) ### `Removed` diff --git a/workflows/nallo.nf b/workflows/nallo.nf index 50a43395..d89de0ef 100644 --- a/workflows/nallo.nf +++ b/workflows/nallo.nf @@ -77,7 +77,7 @@ workflow NALLO { // Channels from (optional) input files // If provided: [[id: 'reference'], [/path/to/reference_full_name.file]] ch_cadd_header = createReferenceChannelFromPath("$projectDir/assets/cadd_to_vcf_header_-1.0-.txt") - ch_cadd_resources = createReferenceChannelFromPath(params.cadd_resouces) + ch_cadd_resources = createReferenceChannelFromPath(params.cadd_resources) ch_cadd_prescored = createReferenceChannelFromPath(params.cadd_prescored) ch_fasta = createReferenceChannelFromPath(params.fasta) ch_tandem_repeats = createReferenceChannelFromPath(params.tandem_repeats, Channel.value([[],[]])) @@ -130,7 +130,7 @@ workflow NALLO { if (params.vep_cache.endsWith("tar.gz")) { ch_vep_cache = PREPARE_GENOME.out.vep_resources } else { - ch_vep_cache = Channel.fromPath(params.vep_cache).collect() + ch_vep_cache = createReferenceChannelFromPath(params.vep_cache) } } From ea1ec1e89ab706e2c633db150fc6a174d43e82d8 Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Fri, 1 Nov 2024 14:23:05 +0100 Subject: [PATCH 053/106] Fix rank SVs (#479) --- CHANGELOG.md | 1 + conf/modules/rank_variants.config | 15 ++++++++++++++- subworkflows/local/rank_variants/main.nf | 12 ++++++------ .../rank_variants/tests/main.nf.test.snap | 18 +++++++++--------- .../local/rank_variants/tests/nextflow.config | 5 +++++ 5 files changed, 35 insertions(+), 16 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ab00e0c2..c000d156 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -76,6 +76,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#443](https://github.com/genomic-medicine-sweden/nallo/pull/443) - Refactored reference channel assignments - [#443](https://github.com/genomic-medicine-sweden/nallo/pull/443) - Updated schemas for `vep_plugin_files` and `snp_db` - [#474](https://github.com/genomic-medicine-sweden/nallo/pull/474) - Updated VEP and CADD channels to fix bugs introduced in [#443](https://github.com/genomic-medicine-sweden/nallo/pull/443) +- [#479](https://github.com/genomic-medicine-sweden/nallo/pull/479) - Replaced bgzip tabix with bcftools sort in rank variants to fix [#457](https://github.com/genomic-medicine-sweden/nallo/issues/457) ### `Removed` diff --git a/conf/modules/rank_variants.config b/conf/modules/rank_variants.config index deea5785..05cf7708 100644 --- a/conf/modules/rank_variants.config +++ b/conf/modules/rank_variants.config @@ -41,6 +41,14 @@ process { ext.prefix = { "${meta.id}_snv_genmod_compound" } ext.args = "--temp_dir ./" } + withName: '.*:RANK_VARIANTS_SNV:BCFTOOLS_SORT' { + ext.prefix = { "${meta.id}_snv_genmod_compound_sorted" } + ext.args = [ + '--output-type z', + '--write-index=tbi', + '--max-mem 6G' + ].join(' ') + } // // Score and rank SVSs @@ -70,8 +78,13 @@ process { ext.prefix = { "${meta.id}_svs_genmod_compound" } ext.args = "--temp_dir ./" } - withName: '.*:RANK_VARIANTS_SVS:TABIX_BGZIPTABIX' { + withName: '.*:RANK_VARIANTS_SVS:BCFTOOLS_SORT' { ext.prefix = { params.skip_cnv_calling ? "${meta.id}_svs_merged_annotated_ranked" : "${meta.id}_svs_cnvs_merged_annotated_ranked" } + ext.args = [ + '--output-type z', + '--write-index=tbi', + '--max-mem 6G' + ].join(' ') publishDir = [ path: { "${params.outdir}/svs/family/${meta.id}" }, mode: params.publish_dir_mode, diff --git a/subworkflows/local/rank_variants/main.nf b/subworkflows/local/rank_variants/main.nf index b55d2126..c416b248 100644 --- a/subworkflows/local/rank_variants/main.nf +++ b/subworkflows/local/rank_variants/main.nf @@ -6,7 +6,7 @@ include { GENMOD_ANNOTATE } from '../../../modules/nf-core/genmod/annotate/main include { GENMOD_MODELS } from '../../../modules/nf-core/genmod/models/main' include { GENMOD_SCORE } from '../../../modules/nf-core/genmod/score/main' include { GENMOD_COMPOUND } from '../../../modules/nf-core/genmod/compound/main' -include { TABIX_BGZIPTABIX } from '../../../modules/nf-core/tabix/bgziptabix/main' +include { BCFTOOLS_SORT } from '../../../modules/nf-core/bcftools/sort/main' workflow RANK_VARIANTS { @@ -39,11 +39,11 @@ workflow RANK_VARIANTS { GENMOD_COMPOUND ( GENMOD_SCORE.out.vcf ) ch_versions = ch_versions.mix(GENMOD_COMPOUND.out.versions) - TABIX_BGZIPTABIX ( GENMOD_COMPOUND.out.vcf ) - ch_versions = ch_versions.mix(TABIX_BGZIPTABIX.out.versions) + BCFTOOLS_SORT ( GENMOD_COMPOUND.out.vcf ) + ch_versions = ch_versions.mix(BCFTOOLS_SORT.out.versions) emit: - vcf = TABIX_BGZIPTABIX.out.gz_tbi.map { meta, vcf, tbi -> [ meta, vcf ] } // channel: [ val(meta), path(vcf) ] - tbi = TABIX_BGZIPTABIX.out.gz_tbi.map { meta, vcf, tbi -> [ meta, tbi ] } // channel: [ val(meta), path(tbi) ] - versions = ch_versions // channel: [ path(versions.yml) ] + vcf = BCFTOOLS_SORT.out.vcf // channel: [ val(meta), path(vcf) ] + tbi = BCFTOOLS_SORT.out.tbi // channel: [ val(meta), path(tbi) ] + versions = ch_versions // channel: [ path(versions.yml) ] } diff --git a/subworkflows/local/rank_variants/tests/main.nf.test.snap b/subworkflows/local/rank_variants/tests/main.nf.test.snap index 1522f705..19326d68 100644 --- a/subworkflows/local/rank_variants/tests/main.nf.test.snap +++ b/subworkflows/local/rank_variants/tests/main.nf.test.snap @@ -19,7 +19,7 @@ "project": null, "contains_affected": false }, - "test_data.bed.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + "test_data.bed_sorted.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "1": [ @@ -29,15 +29,15 @@ "project": null, "contains_affected": false }, - "test_data.bed.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + "test_data.bed_sorted.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "2": [ "versions.yml:md5,7089dd9c4bcb1dc87f15d3b1a9d5e89d", + "versions.yml:md5,90ddd1e5113e3c0c61c403c53029d0f1", "versions.yml:md5,c9446a89a358fa2126b666399c2c804e", "versions.yml:md5,cc68e7d53d2d24006094e28d37db20a8", - "versions.yml:md5,dd0a9b5a3a16e3bfdcea734de4509dce", - "versions.yml:md5,f56d4e953de59ea23842d33c16e914cf" + "versions.yml:md5,dd0a9b5a3a16e3bfdcea734de4509dce" ], "tbi": [ [ @@ -46,7 +46,7 @@ "project": null, "contains_affected": false }, - "test_data.bed.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + "test_data.bed_sorted.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "vcf": [ @@ -56,15 +56,15 @@ "project": null, "contains_affected": false }, - "test_data.bed.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + "test_data.bed_sorted.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "versions": [ "versions.yml:md5,7089dd9c4bcb1dc87f15d3b1a9d5e89d", + "versions.yml:md5,90ddd1e5113e3c0c61c403c53029d0f1", "versions.yml:md5,c9446a89a358fa2126b666399c2c804e", "versions.yml:md5,cc68e7d53d2d24006094e28d37db20a8", - "versions.yml:md5,dd0a9b5a3a16e3bfdcea734de4509dce", - "versions.yml:md5,f56d4e953de59ea23842d33c16e914cf" + "versions.yml:md5,dd0a9b5a3a16e3bfdcea734de4509dce" ] } ], @@ -72,6 +72,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-29T09:06:31.363029566" + "timestamp": "2024-11-01T13:03:00.102392544" } } \ No newline at end of file diff --git a/subworkflows/local/rank_variants/tests/nextflow.config b/subworkflows/local/rank_variants/tests/nextflow.config index 682ee1ac..3c7e24d0 100644 --- a/subworkflows/local/rank_variants/tests/nextflow.config +++ b/subworkflows/local/rank_variants/tests/nextflow.config @@ -114,4 +114,9 @@ process { ext.prefix = { "${meta.id}_genmod_compound" } ext.args = "--temp_dir ./" } + + withName: 'RANK_VARIANTS:BCFTOOLS_SORT' { + ext.prefix = { "${meta.id}_sorted" } + ext.args = "--output-type z --write-index=tbi" + } } From ab0606e033afff4fe3b19a8fd0b00c2f366a4301 Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Mon, 4 Nov 2024 15:53:06 +0100 Subject: [PATCH 054/106] Update metro map (#484) --- CHANGELOG.md | 1 + docs/images/nallo_metromap.png | Bin 496790 -> 622381 bytes docs/images/nallo_metromap.svgz | Bin 0 -> 14980 bytes 3 files changed, 1 insertion(+) create mode 100644 docs/images/nallo_metromap.svgz diff --git a/CHANGELOG.md b/CHANGELOG.md index c000d156..72dfaf03 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -77,6 +77,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#443](https://github.com/genomic-medicine-sweden/nallo/pull/443) - Updated schemas for `vep_plugin_files` and `snp_db` - [#474](https://github.com/genomic-medicine-sweden/nallo/pull/474) - Updated VEP and CADD channels to fix bugs introduced in [#443](https://github.com/genomic-medicine-sweden/nallo/pull/443) - [#479](https://github.com/genomic-medicine-sweden/nallo/pull/479) - Replaced bgzip tabix with bcftools sort in rank variants to fix [#457](https://github.com/genomic-medicine-sweden/nallo/issues/457) +- [#484](https://github.com/genomic-medicine-sweden/nallo/pull/484) - Updated metro map and added SVG version ### `Removed` diff --git a/docs/images/nallo_metromap.png b/docs/images/nallo_metromap.png index 9cf5a106d1b5e0131c002b9bb2a9810ac81628ba..26804f76b80c41b664602a7a36874671c4236e99 100644 GIT binary patch literal 622381 zcmeFZc|4SD8#g|cN>W;cBvf{?m3?hdp@=NmiI8ow?@J_iBxOyuvZN9UV`A(=2qF8H zoh)PDm)~)Xp2ytJ+x^e)^M2mH?)kLLTytILb)Lt09N*)6EZ01~sc`iG87&zKg*qU6 z?Xofo#Sn@@9kM3f2}g$ZezJ!D_T9gxVT(d>pF#faa7vPLK%p2>vX?KYI7N?l^6fw| zk{5mS_N=>9e(=a{)$ixd?SPB^@S4KnPX6IAa;Qjh*5x0*`Zo3t!||r?{qrS^|2P)^ zznA<`WdBO+k77Zg{#BSi3+7*i`LkU9RhWM<`A?ehuf6<9Dsb#yfc>*z{#BSi%jI8% z`4?dSq#6I(%b%nI$NmM_KMUqxh555w{#BU&*8ofJ>R8utB^lg>`x^yjNxrQY8AjHTI3I9mrw ze(ZfEiORthJ8^~Gl}lu^x_M4h2csIlq~_*Kf1dW^ZLW=!g8@Y%s>6<@K;lb2D<#BfQ&TpUgw|68Z|CHh(eb}<=Z>RqE!y(dt zOy&H$AQbA~9YQqaUzGzP{A)uXgnv;Egy6+UnwG2sZ?;}VEdo(B#+lA4=|WMgHOA*i zy{{zHn_(K#_9NfxU%PSRM%QQSGo;?5$je;F#Q04z@@h;Ac}%-R9uHqx8lzI}7ET@9yn4L(Uv zf0F)WlNly!KU5>Uvac&D_7u2}MRi~a0`awOv=F2?SU^XA5@ecX4(I51UI+Q*+K)BY zL@AFSzqsw=yw1ZpBeTW5y{}CoksG1*oQYkd>&`#(Jup*2L36L(K{L!H4GZ|<$=k@t zNU3qEBqlDxH#DBpRc?+2Ikpq+D(#peseRk-u%X_R4uAD|cTmqJ3q%doJt%YNW?J6P`w1n>x;uG{2cL}1@2-K7im;6nrBzs^qr-U30at# z{i=;YUv53eMC5{fnk@tq>h{8kggF4VSoIW~?9M+YArS*({~SoPpBnu6^Jl>E3S{yy z_sFTq82C49zd`7av3W(;)jNo*zotZIz|fr^<#6h{=r$`Tl9q{++Fwkl_Rw&^?)Ad7 zC*49EPLYQS3&Mcq-4h*Hyl*eY{MJ3{l8@$sQLC%epA_2N{ihTKU zWnp7o3v2a8hcrZHo34Go%F3DwvrEndWwuWKrp@P?Lb~=e2+YijHL_=3|TVaRUR@x zAd_Ctn}sDemZtkFACsqB6D~sCNmU!e!;NU^Euyr85v8J0!e~x3c6+p|^0E`@Y(6V; z6WBcRujvdFgfo9~EzgHsw?QcEnN+oulXPyfaBJ^v=K5-JVPS!3i+VnJP(D4~-L2cM z`aMT8m4z@^?c>?8)K;N;gj0C;EF^q2M3H+DU0<=Vm{6LKkd;DM$19cz)kf6$n3DsbG338Pu#?;ZliT;2Qp5p21>Tb5?3#O%@t>$b&8 z*M0qMuIjKI1lfO20~K<~k99Z(v*g_=IWZ9v?KEx~O@O>%f)|d$p6hHA9E9OU((~89W)1f)-a|`G9Dzgnp@7s)WAm^hJZ6}e
    q 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
    nmDlK=7gA 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 literal 496790 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

    b4QCPSoI->aUA{j_N;BIGIIrLg4S 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%0Asm1Kp8@Y$-8!9I=F%M&h-UA&^+La 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Ɯ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 O?*9Wk;e)wRl>q>f;sSvH literal 0 HcmV?d00001 From b5cb868fc04cbbdb628bf6ac76834266f143f82a Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Tue, 5 Nov 2024 11:35:14 +0100 Subject: [PATCH 055/106] nf-test with changed-since (#487) * try changed-since * try again * mock change * revert previos and changelog --- .github/workflows/ci.yml | 33 ++++++++++++++------------------- CHANGELOG.md | 1 + 2 files changed, 15 insertions(+), 19 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2c7daaeb..c177600d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -11,7 +11,7 @@ on: env: NXF_ANSI_LOG: false - NFTEST_VER: "0.9.0" + NFTEST_VER: "0.9.2" concurrency: group: "${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}" @@ -46,6 +46,12 @@ jobs: steps: - name: Check out pipeline code uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 + with: + fetch-depth: 0 + - name: Fetch ${{ github.event.pull_request.base.ref }} branch + run: | + git remote add upstream ${{ github.event.repository.clone_url }} + git fetch upstream ${{ github.event.pull_request.base.ref }} - name: Install Nextflow uses: nf-core/setup-nextflow@v2 @@ -73,21 +79,10 @@ jobs: - name: Run nf-test run: | - nf-test test --verbose --tag ${{ matrix.tags }} --profile "+${{ matrix.profile }}" --junitxml=test.xml --tap=test.tap - - - uses: pcolby/tap-summary@v1 - with: - path: >- - test.tap - - - name: Output log on failure - if: failure() - run: | - sudo apt install bat > /dev/null - batcat --decorations=always --color=always ${{ github.workspace }}/.nf-test/tests/*/meta/nextflow.log - - - name: Publish Test Report - uses: mikepenz/action-junit-report@v3 - if: always() # always run even if the previous step fails - with: - report_paths: test.xml + nf-test test \ + --ci \ + --changed-since upstream/${{ github.event.pull_request.base.ref }} \ + --verbose \ + --tag ${{ matrix.tags }} \ + --profile "+${{ matrix.profile }}" \ + --junitxml=test.xml diff --git a/CHANGELOG.md b/CHANGELOG.md index 72dfaf03..fa438f14 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -78,6 +78,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#474](https://github.com/genomic-medicine-sweden/nallo/pull/474) - Updated VEP and CADD channels to fix bugs introduced in [#443](https://github.com/genomic-medicine-sweden/nallo/pull/443) - [#479](https://github.com/genomic-medicine-sweden/nallo/pull/479) - Replaced bgzip tabix with bcftools sort in rank variants to fix [#457](https://github.com/genomic-medicine-sweden/nallo/issues/457) - [#484](https://github.com/genomic-medicine-sweden/nallo/pull/484) - Updated metro map and added SVG version +- [#487](https://github.com/genomic-medicine-sweden/nallo/pull/487) - Changed CI tests to only run tests where changes have been made ### `Removed` From 9953afacb91f93fca7319bce4579ed90334fb522 Mon Sep 17 00:00:00 2001 From: Daniel Schmitz Date: Tue, 5 Nov 2024 12:59:13 +0100 Subject: [PATCH 056/106] Run modkit once + general changes to methylation subworkflow (#451) * Only running modkit once (depending on phasing) * Moved methylation subworkflow to own directory * Added tests * Fixed test failures * Updated tests * Added input to methylation call site * Renamed input channel 0 * Fixed alignment * Fixed workflow dependencies * Updated pipeline test snapshot * Only importing modkit once, setting args in config * Merged calls to METHYLATION * Corrected process names * Merge changelog * Added parameters to methylation tests * Removed input phased * Added files to workflow output * Moved parameter check to methylation callsite * Fixed test config * Fixed WhatsHap stats stub * Fixed process selectors in test config * Fixed join in test * Removed dumps * Updated pipeline test snaps * Fixed call to PREPARE_GENOME in test * Added methylation test to CI workflow * Fixed formatting * Removed unused channel * Removed unused config * Minor indentation and comment fixes * Updated docs * Added missing join * Updates snapshots * Changed formatting to appease the pre-commit gods --- .github/workflows/ci.yml | 1 + CHANGELOG.md | 3 + conf/modules/methylation.config | 34 +- docs/output.md | 16 +- docs/usage.md | 2 +- modules/local/whatshap/stats/main.nf | 2 +- subworkflows/local/methylation.nf | 38 -- subworkflows/local/methylation/main.nf | 32 ++ .../local/methylation/tests/main.nf.test | 261 +++++++++ .../local/methylation/tests/main.nf.test.snap | 504 ++++++++++++++++++ .../local/methylation/tests/nextflow.config | 75 +++ .../local/utils_nfcore_nallo_pipeline/main.nf | 2 +- tests/samplesheet.nf.test.snap | 48 +- .../samplesheet_multisample_bam.nf.test.snap | 79 +-- ...mplesheet_multisample_ont_bam.nf.test.snap | 79 +-- workflows/nallo.nf | 22 +- 16 files changed, 979 insertions(+), 219 deletions(-) delete mode 100644 subworkflows/local/methylation.nf create mode 100644 subworkflows/local/methylation/main.nf create mode 100644 subworkflows/local/methylation/tests/main.nf.test create mode 100644 subworkflows/local/methylation/tests/main.nf.test.snap create mode 100644 subworkflows/local/methylation/tests/nextflow.config diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c177600d..872deea8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -40,6 +40,7 @@ jobs: - "ANNOTATE_SVS" - "RANK_VARIANTS" - "CALL_REPEAT_EXPANSIONS" + - "METHYLATION" profile: - "docker" diff --git a/CHANGELOG.md b/CHANGELOG.md index fa438f14..6bd88ef5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -32,6 +32,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#445](https://github.com/genomic-medicine-sweden/nallo/pull/445) - Added FOUND_IN tag and nf-test to rank variants - [#446](https://github.com/genomic-medicine-sweden/nallo/pull/446) - Added the vcfstatsreport from DeepVariant to snv calling - [#450](https://github.com/genomic-medicine-sweden/nallo/pull/450) - Added ranking of SVs (and CNVs) +- [#451](https://github.com/genomic-medicine-sweden/nallo/pull/451) - Added support for running methylation subworkflow without phasing +- [#451](https://github.com/genomic-medicine-sweden/nallo/pull/451) - Added nf-test to methylation ### `Changed` @@ -75,6 +77,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#441](https://github.com/genomic-medicine-sweden/nallo/pull/441) - Changed the minimap2 preset for hifi reads back to `map-hifi` - [#443](https://github.com/genomic-medicine-sweden/nallo/pull/443) - Refactored reference channel assignments - [#443](https://github.com/genomic-medicine-sweden/nallo/pull/443) - Updated schemas for `vep_plugin_files` and `snp_db` +- [#451](https://github.com/genomic-medicine-sweden/nallo/pull/451) - Simplified methylation subworkflow - [#474](https://github.com/genomic-medicine-sweden/nallo/pull/474) - Updated VEP and CADD channels to fix bugs introduced in [#443](https://github.com/genomic-medicine-sweden/nallo/pull/443) - [#479](https://github.com/genomic-medicine-sweden/nallo/pull/479) - Replaced bgzip tabix with bcftools sort in rank variants to fix [#457](https://github.com/genomic-medicine-sweden/nallo/issues/457) - [#484](https://github.com/genomic-medicine-sweden/nallo/pull/484) - Updated metro map and added SVG version diff --git a/conf/modules/methylation.config b/conf/modules/methylation.config index b6c79cec..5f5e0390 100644 --- a/conf/modules/methylation.config +++ b/conf/modules/methylation.config @@ -24,51 +24,27 @@ process { ] } - withName: '.*:METHYLATION:MODKIT_PILEUP_UNPHASED' { + withName: '.*:METHYLATION:MODKIT_PILEUP' { ext.args = { [ "${params.extra_modkit_options}", '--combine-mods', '--cpg', '--combine-strands', + !params.skip_phasing_wf ? '--partition-tag HP' : '', ].join(' ') } ext.prefix = { "${meta.id}_modkit_pileup" } publishDir = [ - path: { "${params.outdir}/methylation/modkit/pileup/unphased/${meta.id}" }, + path: { "${params.outdir}/methylation/modkit/pileup/${meta.id}" }, mode: params.publish_dir_mode, saveAs: { filename -> filename.endsWith('.log') ? filename : null } ] } - withName: '.*:METHYLATION:MODKIT_PILEUP_PHASED' { - ext.args = { [ - "${params.extra_modkit_options}", - '--combine-mods', - '--cpg', - '--combine-strands', - '--partition-tag HP' - ].join(' ') } - ext.prefix = { "${meta.id}_modkit_pileup_phased" } - publishDir = [ - path: { "${params.outdir}/methylation/modkit/pileup/phased/${meta.id}" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.endsWith('.log') ? filename : null } - ] - - } - - withName: '.*:METHYLATION:BGZIP_MODKIT_PILEUP_UNPHASED' { - ext.prefix = { "${input.simpleName}" } - publishDir = [ - path: { "${params.outdir}/methylation/modkit/pileup/unphased/${meta.id}" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] - } - withName: '.*:METHYLATION:BGZIP_MODKIT_PILEUP_PHASED' { + withName: '.*:METHYLATION:TABIX_BGZIPTABIX' { ext.prefix = { "${input.simpleName}" } publishDir = [ - path: { "${params.outdir}/methylation/modkit/pileup/phased/${meta.id}" }, + path: { "${params.outdir}/methylation/modkit/pileup/${meta.id}" }, mode: params.publish_dir_mode, saveAs: { filename -> filename.equals('versions.yml') ? null : filename } ] diff --git a/docs/output.md b/docs/output.md index cd80bdb8..85de861f 100644 --- a/docs/output.md +++ b/docs/output.md @@ -36,14 +36,14 @@ If the pipeline is run with phasing, the aligned reads will be happlotagged usin ## Methylation pileups -[Modkit](https://github.com/nanoporetech/modkit) is used to create methylation pileups, producing bedMethyl files for both haplotagged and ungrouped reads. Additionaly, methylation information can be viewed in the BAM files, for example in IGV. - -| Path | Description | -| ----------------------------------------------------------------------------------- | --------------------------------------------------------- | -| `methylation/modkit/pileup/phased/{sample}/*.modkit_pileup_phased_*.bed.gz` | bedMethyl file with summary counts from haplotagged reads | -| `methylation/modkit/pileup/phased/{sample}/*.modkit_pileup_phased_ungrouped.bed.gz` | bedMethyl file for ungrouped reads | -| `methylation/modkit/pileup/unphased/{sample}/*.modkit_pileup.bed.gz` | bedMethyl file with summary counts from all reads | -| `methylation/modkit/pileup/unphased/{sample}/*.bed.gz.tbi` | Index of the corresponding bedMethyl file | +[Modkit](https://github.com/nanoporetech/modkit) is used to create methylation pileups, producing bedMethyl files for both haplotagged and ungrouped reads. Additionally, methylation information can be viewed in the BAM files, for example in IGV. + +| Path | Description | +| ---------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | +| `methylation/modkit/pileup/{sample}/*.modkit_pileup_phased_*.bed.gz` | bedMethyl file with summary counts from haplotagged reads (if phasing is turned on) | +| `methylation/modkit/pileup/{sample}/*.modkit_pileup_phased_ungrouped.bed.gz` | bedMethyl file for ungrouped reads (if phasing is turned on) | +| `methylation/modkit/pileup/{sample}/*.modkit_pileup.bed.gz` | bedMethyl file with summary counts from all reads (if phasing is turned off) | +| `methylation/modkit/pileup/{sample}/*.bed.gz.tbi` | Index of the corresponding bedMethyl file | ## MultiQC diff --git a/docs/usage.md b/docs/usage.md index 870f3344..1252c08c 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -200,7 +200,7 @@ Turned off with `--skip_phasing_wf`. ### Methylation -This subworkflow relies on mapping, short variant calling and phasing subworkflows, but requires no additional files. +This subworkflow relies on mapping and short variant calling subworkflows, but requires no additional files. Turned off with `--skip_methylation_wf`. diff --git a/modules/local/whatshap/stats/main.nf b/modules/local/whatshap/stats/main.nf index 7e2bb2be..c2074328 100644 --- a/modules/local/whatshap/stats/main.nf +++ b/modules/local/whatshap/stats/main.nf @@ -38,7 +38,7 @@ process WHATSHAP_STATS { stub: def prefix = task.ext.prefix ?: "${meta.id}" """ - touch ${prefix}.stats.tsv.gz + touch ${prefix}.stats.tsv touch ${prefix}.blocks.tsv cat <<-END_VERSIONS > versions.yml diff --git a/subworkflows/local/methylation.nf b/subworkflows/local/methylation.nf deleted file mode 100644 index 6541a9f4..00000000 --- a/subworkflows/local/methylation.nf +++ /dev/null @@ -1,38 +0,0 @@ -include { MODKIT_PILEUP as MODKIT_PILEUP_UNPHASED } from '../../modules/nf-core/modkit/pileup/main' -include { MODKIT_PILEUP as MODKIT_PILEUP_PHASED } from '../../modules/nf-core/modkit/pileup/main' -include { TABIX_BGZIPTABIX as BGZIP_MODKIT_PILEUP_UNPHASED } from '../../modules/nf-core/tabix/bgziptabix/main' -include { TABIX_BGZIPTABIX as BGZIP_MODKIT_PILEUP_PHASED } from '../../modules/nf-core/tabix/bgziptabix/main' - -workflow METHYLATION { - - take: - ch_haplotagged_bam_bai // channel: [ val(meta), bam, bai ] - ch_fasta // channel: [ val(meta), fasta ] - ch_fai // channel: [ val(meta), fai ] - ch_bed // channel: [ val(meta), bed ] - - main: - ch_versions = Channel.empty() - - // Run modkit pileup once without dividing by HP-tag and once with - MODKIT_PILEUP_UNPHASED (ch_haplotagged_bam_bai, ch_fasta, ch_bed) - ch_versions = ch_versions.mix(MODKIT_PILEUP_UNPHASED.out.versions) - - MODKIT_PILEUP_PHASED (ch_haplotagged_bam_bai, ch_fasta, ch_bed) - ch_versions = ch_versions.mix(MODKIT_PILEUP_PHASED.out.versions) - - // Bgzip and index output "BED" - BGZIP_MODKIT_PILEUP_UNPHASED ( MODKIT_PILEUP_UNPHASED.out.bed ) - ch_versions = ch_versions.mix(BGZIP_MODKIT_PILEUP_UNPHASED.out.versions) - - MODKIT_PILEUP_PHASED.out.bed - .transpose() - .set { ch_bgzip_modkit_pileup_phased_in } - - BGZIP_MODKIT_PILEUP_PHASED ( ch_bgzip_modkit_pileup_phased_in ) - ch_versions = ch_versions.mix(BGZIP_MODKIT_PILEUP_PHASED.out.versions) - - emit: - versions = ch_versions // channel: [ versions.yml ] -} - diff --git a/subworkflows/local/methylation/main.nf b/subworkflows/local/methylation/main.nf new file mode 100644 index 00000000..261af3f1 --- /dev/null +++ b/subworkflows/local/methylation/main.nf @@ -0,0 +1,32 @@ +include { MODKIT_PILEUP } from '../../../modules/nf-core/modkit/pileup/main' +include { TABIX_BGZIPTABIX } from '../../../modules/nf-core/tabix/bgziptabix/main' + +workflow METHYLATION { + + take: + ch_bam_bai // channel: [ val(meta), bam, bai ] + ch_fasta // channel: [ val(meta), fasta ] + ch_fai // channel: [ val(meta), fai ] + ch_bed // channel: [ val(meta), bed ] + + main: + ch_versions = Channel.empty() + + // Performs pileups per haplotype if the phasing workflow is on, set in config + MODKIT_PILEUP (ch_bam_bai, ch_fasta, ch_bed) + ch_versions = ch_versions.mix(MODKIT_PILEUP.out.versions) + + + MODKIT_PILEUP.out.bed + .transpose() + .set { ch_bgzip_modkit_pileup_in } + + TABIX_BGZIPTABIX ( ch_bgzip_modkit_pileup_in ) + ch_versions = ch_versions.mix(TABIX_BGZIPTABIX.out.versions) + + emit: + bed = TABIX_BGZIPTABIX.out.gz_tbi.map { meta, bed, tbi -> [ meta, bed ] } // channel: [ val(meta), path(bed) ] + tbi = TABIX_BGZIPTABIX.out.gz_tbi.map { meta, bed, tbi -> [ meta, tbi ] } // channel: [ val(meta), path(tbi) ] + versions = ch_versions // channel: [ versions.yml ] +} + diff --git a/subworkflows/local/methylation/tests/main.nf.test b/subworkflows/local/methylation/tests/main.nf.test new file mode 100644 index 00000000..7d5e6933 --- /dev/null +++ b/subworkflows/local/methylation/tests/main.nf.test @@ -0,0 +1,261 @@ +nextflow_workflow { + + name "Test Workflow METHYLATION" + script "../main.nf" + config "./nextflow.config" + workflow "METHYLATION" + + setup { + run("PREPARE_GENOME") { + script "../../prepare_genome.nf" + process { + """ + input[0] = Channel.of([ + [ id:'hg38' ], + file(params.pipelines_testdata_base_path + 'reference/hg38.test.fa.gz', checkIfExists: true) + ]) + input[1] = true + input[2] = Channel.empty() + input[3] = false + """ + } + } + run("MINIMAP2_ALIGN") { + script "../../../../modules/nf-core/minimap2/align/main.nf" + process { + """ + input[0] = [ + [ id: 'test', num_intervals:1 ], + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.fastq.gz', checkIfExists: true) + ] + input[1] = PREPARE_GENOME.out.fasta + input[2] = true + input[3] = 'csi' + input[4] = false + input[5] = false + """ + } + } + run("SHORT_VARIANT_CALLING") { + script "../../short_variant_calling/main.nf" + process { + """ + input[0] = MINIMAP2_ALIGN.out.bam + .join(MINIMAP2_ALIGN.out.index) + .join(Channel.of([ + [ id: 'test', num_intervals:1 ], + file(params.pipelines_testdata_base_path + 'reference/test_data.bed', checkIfExists: true) + ])) + input[1] = PREPARE_GENOME.out.fasta + input[2] = PREPARE_GENOME.out.fai + input[3] = [[],[]] + input[4] = [[],[]] + """ + } + } + run("PHASING") { + script "../../phasing.nf" + process { + """ + input[0] = SHORT_VARIANT_CALLING.out.snp_calls_vcf + input[1] = SHORT_VARIANT_CALLING.out.snp_calls_tbi + input[2] = MINIMAP2_ALIGN.out.bam + .join(MINIMAP2_ALIGN.out.index) + .map { meta, bam, bai -> + [ [ id : meta.id ], bam, bai ] + } + input[3] = PREPARE_GENOME.out.fasta + input[4] = PREPARE_GENOME.out.fai + """ + } + } + } + + test("1 sample - [] phased") { + when { + params { + skip_phasing_wf = false + } + workflow { + """ + input[0] = PHASING.out.haplotagged_bam_bai + input[1] = PREPARE_GENOME.out.fasta + input[2] = PREPARE_GENOME.out.fai + input[3] = [[],[]] + """ + } + } + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out).match() } + ) + } + } + + test("1 sample - [] unphased") { + when { + params { + skip_phasing_wf = true + } + workflow { + """ + input[0] = MINIMAP2_ALIGN.out.bam.join(MINIMAP2_ALIGN.out.index) + input[1] = PREPARE_GENOME.out.fasta + input[2] = PREPARE_GENOME.out.fai + input[3] = [[],[]] + """ + } + } + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out).match() } + ) + } + } + + test("1 sample - bed phased") { + when { + params { + skip_phasing_wf = false + } + workflow { + """ + input[0] = PHASING.out.haplotagged_bam_bai + input[1] = PREPARE_GENOME.out.fasta + input[2] = PREPARE_GENOME.out.fai + input[3] = Channel.of('chr20\t2650000\t2660000') + .collectFile(name: 'chr20.bed', newLine: true) + .map{ file -> [ [ id:'chr20'], file ] } + """ + } + } + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out).match() } + ) + } + } + + test("1 sample - bed unphased") { + when { + params { + skip_phasing_wf = true + } + workflow { + """ + input[0] = MINIMAP2_ALIGN.out.bam.join(MINIMAP2_ALIGN.out.index) + input[1] = PREPARE_GENOME.out.fasta + input[2] = PREPARE_GENOME.out.fai + input[3] = Channel.of('chr20\t2650000\t2660000') + .collectFile(name: 'chr20.bed', newLine: true) + .map{ file -> [ [ id:'chr20'], file ] } + """ + } + } + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out).match() } + ) + } + } + + test("1 sample - [] phased - stub") { + options "-stub" + when { + params { + skip_phasing_wf = false + } + workflow { + """ + input[0] = PHASING.out.haplotagged_bam_bai + input[1] = PREPARE_GENOME.out.fasta + input[2] = PREPARE_GENOME.out.fai + input[3] = [[],[]] + """ + } + } + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out).match() } + ) + } + } + + test("1 sample - bed phased - stub") { + options "-stub" + when { + params { + skip_phasing_wf = false + } + workflow { + """ + input[0] = PHASING.out.haplotagged_bam_bai + input[1] = PREPARE_GENOME.out.fasta + input[2] = PREPARE_GENOME.out.fai + input[3] = Channel.of('chr20\t2650000\t2660000') + .collectFile(name: 'chr20.bed', newLine: true) + .map{ file -> [ [ id:'chr20'], file ] } + """ + } + } + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out).match() } + ) + } + } + + test("1 sample - [] unphased - stub") { + options "-stub" + when { + params { + skip_phasing_wf = true + } + workflow { + """ + input[0] = MINIMAP2_ALIGN.out.bam.join(MINIMAP2_ALIGN.out.index) + input[1] = PREPARE_GENOME.out.fasta + input[2] = PREPARE_GENOME.out.fai + input[3] = [[],[]] + """ + } + } + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out).match() } + ) + } + } + + test("1 sample - bed unphased - stub") { + options "-stub" + when { + params { + skip_phasing_wf = true + } + workflow { + """ + input[0] = MINIMAP2_ALIGN.out.bam.join(MINIMAP2_ALIGN.out.index) + input[1] = PREPARE_GENOME.out.fasta + input[2] = PREPARE_GENOME.out.fai + input[3] = Channel.of('chr20\t2650000\t2660000') + .collectFile(name: 'chr20.bed', newLine: true) + .map{ file -> [ [ id:'chr20'], file ] } + """ + } + } + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out).match() } + ) + } + } +} diff --git a/subworkflows/local/methylation/tests/main.nf.test.snap b/subworkflows/local/methylation/tests/main.nf.test.snap new file mode 100644 index 00000000..a96efcdf --- /dev/null +++ b/subworkflows/local/methylation/tests/main.nf.test.snap @@ -0,0 +1,504 @@ +{ + "1 sample - [] phased": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test_modkit_pileup_1.bed.gz:md5,b980e56ca6d65d09892b069a7d51b827" + ], + [ + { + "id": "test" + }, + "test_modkit_pileup_2.bed.gz:md5,32a5e2148266fefba8159d98f5f5dd87" + ], + [ + { + "id": "test" + }, + "test_modkit_pileup_ungrouped.bed.gz:md5,bfeda9731d6d52508301ddf939302676" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test_modkit_pileup_1.bed.gz.tbi:md5,45800db86a2845fe961f536484369f61" + ], + [ + { + "id": "test" + }, + "test_modkit_pileup_2.bed.gz.tbi:md5,14f729ebf5ce7d265df85b21c30a67af" + ], + [ + { + "id": "test" + }, + "test_modkit_pileup_ungrouped.bed.gz.tbi:md5,d08da21ae562fcc3c3361a916439c552" + ] + ], + "2": [ + "versions.yml:md5,69dd5e76cc5e61cd0324b7412fc0546b", + "versions.yml:md5,dc8e3f1d4b20b910f5148d89337e5711", + "versions.yml:md5,dc8e3f1d4b20b910f5148d89337e5711", + "versions.yml:md5,dc8e3f1d4b20b910f5148d89337e5711" + ], + "bed": [ + [ + { + "id": "test" + }, + "test_modkit_pileup_1.bed.gz:md5,b980e56ca6d65d09892b069a7d51b827" + ], + [ + { + "id": "test" + }, + "test_modkit_pileup_2.bed.gz:md5,32a5e2148266fefba8159d98f5f5dd87" + ], + [ + { + "id": "test" + }, + "test_modkit_pileup_ungrouped.bed.gz:md5,bfeda9731d6d52508301ddf939302676" + ] + ], + "tbi": [ + [ + { + "id": "test" + }, + "test_modkit_pileup_1.bed.gz.tbi:md5,45800db86a2845fe961f536484369f61" + ], + [ + { + "id": "test" + }, + "test_modkit_pileup_2.bed.gz.tbi:md5,14f729ebf5ce7d265df85b21c30a67af" + ], + [ + { + "id": "test" + }, + "test_modkit_pileup_ungrouped.bed.gz.tbi:md5,d08da21ae562fcc3c3361a916439c552" + ] + ], + "versions": [ + "versions.yml:md5,69dd5e76cc5e61cd0324b7412fc0546b", + "versions.yml:md5,dc8e3f1d4b20b910f5148d89337e5711", + "versions.yml:md5,dc8e3f1d4b20b910f5148d89337e5711", + "versions.yml:md5,dc8e3f1d4b20b910f5148d89337e5711" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-11-01T16:42:19.164909715" + }, + "1 sample - bed unphased - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "num_intervals": 1 + }, + "test_modkit_pileup.bed.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + [ + { + "id": "test", + "num_intervals": 1 + }, + "test_modkit_pileup.bed.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,69dd5e76cc5e61cd0324b7412fc0546b", + "versions.yml:md5,dc8e3f1d4b20b910f5148d89337e5711" + ], + "bed": [ + [ + { + "id": "test", + "num_intervals": 1 + }, + "test_modkit_pileup.bed.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "tbi": [ + [ + { + "id": "test", + "num_intervals": 1 + }, + "test_modkit_pileup.bed.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,69dd5e76cc5e61cd0324b7412fc0546b", + "versions.yml:md5,dc8e3f1d4b20b910f5148d89337e5711" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-31T15:06:21.337874852" + }, + "1 sample - [] unphased - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "num_intervals": 1 + }, + "test_modkit_pileup.bed.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + [ + { + "id": "test", + "num_intervals": 1 + }, + "test_modkit_pileup.bed.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,69dd5e76cc5e61cd0324b7412fc0546b", + "versions.yml:md5,dc8e3f1d4b20b910f5148d89337e5711" + ], + "bed": [ + [ + { + "id": "test", + "num_intervals": 1 + }, + "test_modkit_pileup.bed.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "tbi": [ + [ + { + "id": "test", + "num_intervals": 1 + }, + "test_modkit_pileup.bed.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,69dd5e76cc5e61cd0324b7412fc0546b", + "versions.yml:md5,dc8e3f1d4b20b910f5148d89337e5711" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-31T15:05:51.048367417" + }, + "1 sample - [] phased - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test_modkit_pileup.bed.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test_modkit_pileup.bed.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,69dd5e76cc5e61cd0324b7412fc0546b", + "versions.yml:md5,dc8e3f1d4b20b910f5148d89337e5711" + ], + "bed": [ + [ + { + "id": "test" + }, + "test_modkit_pileup.bed.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "tbi": [ + [ + { + "id": "test" + }, + "test_modkit_pileup.bed.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,69dd5e76cc5e61cd0324b7412fc0546b", + "versions.yml:md5,dc8e3f1d4b20b910f5148d89337e5711" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-31T15:32:25.389277494" + }, + "1 sample - [] unphased": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "num_intervals": 1 + }, + "test_modkit_pileup.bed.gz:md5,d3252e8b77241fe25edbcfd520b86159" + ] + ], + "1": [ + [ + { + "id": "test", + "num_intervals": 1 + }, + "test_modkit_pileup.bed.gz.tbi:md5,d34b6e7ed5a3010fba35ea9b58672dfd" + ] + ], + "2": [ + "versions.yml:md5,69dd5e76cc5e61cd0324b7412fc0546b", + "versions.yml:md5,dc8e3f1d4b20b910f5148d89337e5711" + ], + "bed": [ + [ + { + "id": "test", + "num_intervals": 1 + }, + "test_modkit_pileup.bed.gz:md5,d3252e8b77241fe25edbcfd520b86159" + ] + ], + "tbi": [ + [ + { + "id": "test", + "num_intervals": 1 + }, + "test_modkit_pileup.bed.gz.tbi:md5,d34b6e7ed5a3010fba35ea9b58672dfd" + ] + ], + "versions": [ + "versions.yml:md5,69dd5e76cc5e61cd0324b7412fc0546b", + "versions.yml:md5,dc8e3f1d4b20b910f5148d89337e5711" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-11-01T16:43:20.61904287" + }, + "1 sample - bed phased": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test_modkit_pileup_1.bed.gz:md5,a0d9e7dd172fcbd0bbb19690b3570a3d" + ], + [ + { + "id": "test" + }, + "test_modkit_pileup_ungrouped.bed.gz:md5,59353caa892772acc71cbdef07cca17d" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test_modkit_pileup_1.bed.gz.tbi:md5,1b46636405409529be7df321af87acd2" + ], + [ + { + "id": "test" + }, + "test_modkit_pileup_ungrouped.bed.gz.tbi:md5,600db7bbfb1580cc2af629324e206045" + ] + ], + "2": [ + "versions.yml:md5,69dd5e76cc5e61cd0324b7412fc0546b", + "versions.yml:md5,dc8e3f1d4b20b910f5148d89337e5711", + "versions.yml:md5,dc8e3f1d4b20b910f5148d89337e5711" + ], + "bed": [ + [ + { + "id": "test" + }, + "test_modkit_pileup_1.bed.gz:md5,a0d9e7dd172fcbd0bbb19690b3570a3d" + ], + [ + { + "id": "test" + }, + "test_modkit_pileup_ungrouped.bed.gz:md5,59353caa892772acc71cbdef07cca17d" + ] + ], + "tbi": [ + [ + { + "id": "test" + }, + "test_modkit_pileup_1.bed.gz.tbi:md5,1b46636405409529be7df321af87acd2" + ], + [ + { + "id": "test" + }, + "test_modkit_pileup_ungrouped.bed.gz.tbi:md5,600db7bbfb1580cc2af629324e206045" + ] + ], + "versions": [ + "versions.yml:md5,69dd5e76cc5e61cd0324b7412fc0546b", + "versions.yml:md5,dc8e3f1d4b20b910f5148d89337e5711", + "versions.yml:md5,dc8e3f1d4b20b910f5148d89337e5711" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-11-01T16:44:23.18659219" + }, + "1 sample - bed phased - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test_modkit_pileup.bed.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test_modkit_pileup.bed.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,69dd5e76cc5e61cd0324b7412fc0546b", + "versions.yml:md5,dc8e3f1d4b20b910f5148d89337e5711" + ], + "bed": [ + [ + { + "id": "test" + }, + "test_modkit_pileup.bed.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "tbi": [ + [ + { + "id": "test" + }, + "test_modkit_pileup.bed.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,69dd5e76cc5e61cd0324b7412fc0546b", + "versions.yml:md5,dc8e3f1d4b20b910f5148d89337e5711" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-31T15:32:58.055229101" + }, + "1 sample - bed unphased": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "num_intervals": 1 + }, + "test_modkit_pileup.bed.gz:md5,1bd6be90eb9c11b4cc9fa43dea4160ac" + ] + ], + "1": [ + [ + { + "id": "test", + "num_intervals": 1 + }, + "test_modkit_pileup.bed.gz.tbi:md5,1983a3dfe9722ff9213cddcf6772d461" + ] + ], + "2": [ + "versions.yml:md5,69dd5e76cc5e61cd0324b7412fc0546b", + "versions.yml:md5,dc8e3f1d4b20b910f5148d89337e5711" + ], + "bed": [ + [ + { + "id": "test", + "num_intervals": 1 + }, + "test_modkit_pileup.bed.gz:md5,1bd6be90eb9c11b4cc9fa43dea4160ac" + ] + ], + "tbi": [ + [ + { + "id": "test", + "num_intervals": 1 + }, + "test_modkit_pileup.bed.gz.tbi:md5,1983a3dfe9722ff9213cddcf6772d461" + ] + ], + "versions": [ + "versions.yml:md5,69dd5e76cc5e61cd0324b7412fc0546b", + "versions.yml:md5,dc8e3f1d4b20b910f5148d89337e5711" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-11-01T16:45:25.026984417" + } +} \ No newline at end of file diff --git a/subworkflows/local/methylation/tests/nextflow.config b/subworkflows/local/methylation/tests/nextflow.config new file mode 100644 index 00000000..45b920fe --- /dev/null +++ b/subworkflows/local/methylation/tests/nextflow.config @@ -0,0 +1,75 @@ +params { + preset = "pacbio" + phaser = "longphase" +} + +process { + + withName: 'SHORT_VARIANT_CALLING:DEEPVARIANT' { + ext.args = { [ + '--model_type PACBIO', + "--sample_name=${meta.id}", + '-vcf_stats_report=False' + ].join(' ') } + } + + withName: 'SHORT_VARIANT_CALLING:BCFTOOLS_CONCAT' { + ext.prefix = { "${meta.id}_concat" } + ext.args = [ + '--no-version', + '--allow-overlaps' + ].join(' ') + } + + withName: 'SHORT_VARIANT_CALLING:BCFTOOLS_NORM_SINGLESAMPLE' { + ext.prefix = { "${meta.id}_norm_singlesample" } + ext.args = [ + '--no-version', + '-m -', + '-w 10000', + '--output-type z', + '--write-index=tbi', + ].join(' ') + } + + withName: 'SHORT_VARIANT_CALLING:BCFTOOLS_FILLTAGS' { + ext.prefix = { "${meta.id}_ac" } + ext.args = [ + '--no-version', + '--output-type u' + ].join(' ') + } + + withName: 'MINIMAP2_ALIGN' { + ext.args = [ + '-x map-hifi', + '-y' + ].join(' ') + } + + withName: 'METHYLATION:MODKIT_PILEUP' { + ext.args = { [ + '--combine-mods', + '--cpg', + '--combine-strands', + !params.skip_phasing_wf ? '--partition-tag HP' : '', + ].join(' ') } + ext.prefix = { "${meta.id}_modkit_pileup" } + } + + withName: 'METHYLATION:TABIX_BGZIPTABIX' { + ext.prefix = { "${input.simpleName}" } + } + withName: 'PHASING:LONGPHASE_PHASE' { + ext.prefix = { "${meta.id}_phased" } + ext.args = [ + '--pb', + '--indels' + ].join(' ') + } + + withName: 'PHASING:LONGPHASE_HAPLOTAG' { + ext.prefix = { "${meta.id}_haplotagged" } + } + +} diff --git a/subworkflows/local/utils_nfcore_nallo_pipeline/main.nf b/subworkflows/local/utils_nfcore_nallo_pipeline/main.nf index 1a04cf76..db858cdb 100644 --- a/subworkflows/local/utils_nfcore_nallo_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_nallo_pipeline/main.nf @@ -62,7 +62,7 @@ def workflowDependencies = [ rank_variants : ["mapping", "snv_calling", "snv_annotation"], repeat_calling : ["mapping", "snv_calling", "phasing"], repeat_annotation: ["mapping", "snv_calling", "phasing", "repeat_calling"], - methylation : ["mapping", "snv_calling", "phasing"], + methylation : ["mapping", "snv_calling"] ] // diff --git a/tests/samplesheet.nf.test.snap b/tests/samplesheet.nf.test.snap index e5199e7a..3fbdad9a 100644 --- a/tests/samplesheet.nf.test.snap +++ b/tests/samplesheet.nf.test.snap @@ -1,7 +1,7 @@ { "test profile": { "content": [ - 113, + 111, { "ADD_FOUND_IN_TAG": { "bcftools": 1.2, @@ -57,12 +57,6 @@ "BEDTOOLS_SORT": { "bedtools": "2.31.1" }, - "BGZIP_MODKIT_PILEUP_PHASED": { - "tabix": 1.2 - }, - "BGZIP_MODKIT_PILEUP_UNPHASED": { - "tabix": 1.2 - }, "COMPRESS_STRANGER": { "bcftools": 1.2 }, @@ -142,10 +136,7 @@ "MINIMAP2_INDEX_DIPCALL": { "minimap2": "2.28-r1209" }, - "MODKIT_PILEUP_PHASED": { - "modkit": "0.3.0" - }, - "MODKIT_PILEUP_UNPHASED": { + "MODKIT_PILEUP": { "modkit": "0.3.0" }, "MOSDEPTH": { @@ -277,18 +268,13 @@ "methylation", "methylation/modkit", "methylation/modkit/pileup", - "methylation/modkit/pileup/phased", - "methylation/modkit/pileup/phased/HG002_Revio", - "methylation/modkit/pileup/phased/HG002_Revio/HG002_Revio_modkit_pileup_phased_1.bed.gz", - "methylation/modkit/pileup/phased/HG002_Revio/HG002_Revio_modkit_pileup_phased_1.bed.gz.tbi", - "methylation/modkit/pileup/phased/HG002_Revio/HG002_Revio_modkit_pileup_phased_2.bed.gz", - "methylation/modkit/pileup/phased/HG002_Revio/HG002_Revio_modkit_pileup_phased_2.bed.gz.tbi", - "methylation/modkit/pileup/phased/HG002_Revio/HG002_Revio_modkit_pileup_phased_ungrouped.bed.gz", - "methylation/modkit/pileup/phased/HG002_Revio/HG002_Revio_modkit_pileup_phased_ungrouped.bed.gz.tbi", - "methylation/modkit/pileup/unphased", - "methylation/modkit/pileup/unphased/HG002_Revio", - "methylation/modkit/pileup/unphased/HG002_Revio/HG002_Revio_modkit_pileup.bed.gz", - "methylation/modkit/pileup/unphased/HG002_Revio/HG002_Revio_modkit_pileup.bed.gz.tbi", + "methylation/modkit/pileup/HG002_Revio", + "methylation/modkit/pileup/HG002_Revio/HG002_Revio_modkit_pileup_1.bed.gz", + "methylation/modkit/pileup/HG002_Revio/HG002_Revio_modkit_pileup_1.bed.gz.tbi", + "methylation/modkit/pileup/HG002_Revio/HG002_Revio_modkit_pileup_2.bed.gz", + "methylation/modkit/pileup/HG002_Revio/HG002_Revio_modkit_pileup_2.bed.gz.tbi", + "methylation/modkit/pileup/HG002_Revio/HG002_Revio_modkit_pileup_ungrouped.bed.gz", + "methylation/modkit/pileup/HG002_Revio/HG002_Revio_modkit_pileup_ungrouped.bed.gz.tbi", "multiqc", "multiqc/multiqc_data", "multiqc/multiqc_data/mosdepth_cov_dist.txt", @@ -423,14 +409,12 @@ "HG002_Revio.hap2.var.gz:md5,9ba9303b30730e419138e177c7d1e0c2", "HG002_Revio.pair.vcf.gz:md5,1909dffa43850282fe7e5ae2b2d273a7", "test.zip:md5,a0abe28a72b11b68126040dd38fa8e37", - "HG002_Revio_modkit_pileup_phased_1.bed.gz:md5,ac9bfc455d0b697a4bd565b510c155e0", - "HG002_Revio_modkit_pileup_phased_1.bed.gz.tbi:md5,5a9ac375a0ce33af002e0073635a3425", - "HG002_Revio_modkit_pileup_phased_2.bed.gz:md5,b2c6c3fc27d34b7c588a4a4b3e9611b0", - "HG002_Revio_modkit_pileup_phased_2.bed.gz.tbi:md5,2ad55c2f604cbdf6a784b2dd99b25cb1", - "HG002_Revio_modkit_pileup_phased_ungrouped.bed.gz:md5,04ee840c02e04238b9432bc374a1afe1", - "HG002_Revio_modkit_pileup_phased_ungrouped.bed.gz.tbi:md5,e1418c8075da8831a52e0cd56ceb910e", - "HG002_Revio_modkit_pileup.bed.gz:md5,a52bb9ab393e682d0b7118ef2efe5c15", - "HG002_Revio_modkit_pileup.bed.gz.tbi:md5,08312c13316ed9b4b582897c210ecb58", + "HG002_Revio_modkit_pileup_1.bed.gz:md5,ac9bfc455d0b697a4bd565b510c155e0", + "HG002_Revio_modkit_pileup_1.bed.gz.tbi:md5,5a9ac375a0ce33af002e0073635a3425", + "HG002_Revio_modkit_pileup_2.bed.gz:md5,b2c6c3fc27d34b7c588a4a4b3e9611b0", + "HG002_Revio_modkit_pileup_2.bed.gz.tbi:md5,2ad55c2f604cbdf6a784b2dd99b25cb1", + "HG002_Revio_modkit_pileup_ungrouped.bed.gz:md5,04ee840c02e04238b9432bc374a1afe1", + "HG002_Revio_modkit_pileup_ungrouped.bed.gz.tbi:md5,e1418c8075da8831a52e0cd56ceb910e", "mosdepth_cov_dist.txt:md5,62011d1135dafcf05d7f6d5750d20c9f", "mosdepth_cumcov_dist.txt:md5,eeb7f82eb03344d26a99b6596a1c7413", "mosdepth_perchrom.txt:md5,53806d793d5627e60648daebb6606723", @@ -552,6 +536,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-30T17:17:40.017945721" + "timestamp": "2024-10-31T16:12:33.482377002" } } \ No newline at end of file diff --git a/tests/samplesheet_multisample_bam.nf.test.snap b/tests/samplesheet_multisample_bam.nf.test.snap index aa71fd46..cb232f89 100644 --- a/tests/samplesheet_multisample_bam.nf.test.snap +++ b/tests/samplesheet_multisample_bam.nf.test.snap @@ -1,7 +1,7 @@ { "samplesheet_multisample_bam | --phaser hiphase": { "content": [ - 160, + 156, { "ADD_FOUND_IN_TAG": { "bcftools": 1.2, @@ -57,12 +57,6 @@ "BEDTOOLS_SORT": { "bedtools": "2.31.1" }, - "BGZIP_MODKIT_PILEUP_PHASED": { - "tabix": 1.2 - }, - "BGZIP_MODKIT_PILEUP_UNPHASED": { - "tabix": 1.2 - }, "COMPRESS_STRANGER": { "bcftools": 1.2 }, @@ -139,10 +133,7 @@ "MINIMAP2_INDEX_DIPCALL": { "minimap2": "2.28-r1209" }, - "MODKIT_PILEUP_PHASED": { - "modkit": "0.3.0" - }, - "MODKIT_PILEUP_UNPHASED": { + "MODKIT_PILEUP": { "modkit": "0.3.0" }, "MOSDEPTH": { @@ -295,28 +286,20 @@ "methylation", "methylation/modkit", "methylation/modkit/pileup", - "methylation/modkit/pileup/phased", - "methylation/modkit/pileup/phased/HG002_Revio_A", - "methylation/modkit/pileup/phased/HG002_Revio_A/HG002_Revio_A_modkit_pileup_phased_1.bed.gz", - "methylation/modkit/pileup/phased/HG002_Revio_A/HG002_Revio_A_modkit_pileup_phased_1.bed.gz.tbi", - "methylation/modkit/pileup/phased/HG002_Revio_A/HG002_Revio_A_modkit_pileup_phased_2.bed.gz", - "methylation/modkit/pileup/phased/HG002_Revio_A/HG002_Revio_A_modkit_pileup_phased_2.bed.gz.tbi", - "methylation/modkit/pileup/phased/HG002_Revio_A/HG002_Revio_A_modkit_pileup_phased_ungrouped.bed.gz", - "methylation/modkit/pileup/phased/HG002_Revio_A/HG002_Revio_A_modkit_pileup_phased_ungrouped.bed.gz.tbi", - "methylation/modkit/pileup/phased/HG002_Revio_B", - "methylation/modkit/pileup/phased/HG002_Revio_B/HG002_Revio_B_modkit_pileup_phased_1.bed.gz", - "methylation/modkit/pileup/phased/HG002_Revio_B/HG002_Revio_B_modkit_pileup_phased_1.bed.gz.tbi", - "methylation/modkit/pileup/phased/HG002_Revio_B/HG002_Revio_B_modkit_pileup_phased_2.bed.gz", - "methylation/modkit/pileup/phased/HG002_Revio_B/HG002_Revio_B_modkit_pileup_phased_2.bed.gz.tbi", - "methylation/modkit/pileup/phased/HG002_Revio_B/HG002_Revio_B_modkit_pileup_phased_ungrouped.bed.gz", - "methylation/modkit/pileup/phased/HG002_Revio_B/HG002_Revio_B_modkit_pileup_phased_ungrouped.bed.gz.tbi", - "methylation/modkit/pileup/unphased", - "methylation/modkit/pileup/unphased/HG002_Revio_A", - "methylation/modkit/pileup/unphased/HG002_Revio_A/HG002_Revio_A_modkit_pileup.bed.gz", - "methylation/modkit/pileup/unphased/HG002_Revio_A/HG002_Revio_A_modkit_pileup.bed.gz.tbi", - "methylation/modkit/pileup/unphased/HG002_Revio_B", - "methylation/modkit/pileup/unphased/HG002_Revio_B/HG002_Revio_B_modkit_pileup.bed.gz", - "methylation/modkit/pileup/unphased/HG002_Revio_B/HG002_Revio_B_modkit_pileup.bed.gz.tbi", + "methylation/modkit/pileup/HG002_Revio_A", + "methylation/modkit/pileup/HG002_Revio_A/HG002_Revio_A_modkit_pileup_1.bed.gz", + "methylation/modkit/pileup/HG002_Revio_A/HG002_Revio_A_modkit_pileup_1.bed.gz.tbi", + "methylation/modkit/pileup/HG002_Revio_A/HG002_Revio_A_modkit_pileup_2.bed.gz", + "methylation/modkit/pileup/HG002_Revio_A/HG002_Revio_A_modkit_pileup_2.bed.gz.tbi", + "methylation/modkit/pileup/HG002_Revio_A/HG002_Revio_A_modkit_pileup_ungrouped.bed.gz", + "methylation/modkit/pileup/HG002_Revio_A/HG002_Revio_A_modkit_pileup_ungrouped.bed.gz.tbi", + "methylation/modkit/pileup/HG002_Revio_B", + "methylation/modkit/pileup/HG002_Revio_B/HG002_Revio_B_modkit_pileup_1.bed.gz", + "methylation/modkit/pileup/HG002_Revio_B/HG002_Revio_B_modkit_pileup_1.bed.gz.tbi", + "methylation/modkit/pileup/HG002_Revio_B/HG002_Revio_B_modkit_pileup_2.bed.gz", + "methylation/modkit/pileup/HG002_Revio_B/HG002_Revio_B_modkit_pileup_2.bed.gz.tbi", + "methylation/modkit/pileup/HG002_Revio_B/HG002_Revio_B_modkit_pileup_ungrouped.bed.gz", + "methylation/modkit/pileup/HG002_Revio_B/HG002_Revio_B_modkit_pileup_ungrouped.bed.gz.tbi", "multiqc", "multiqc/multiqc_data", "multiqc/multiqc_data/mosdepth_cov_dist.txt", @@ -527,22 +510,18 @@ "HG002_Revio_B.hap2.var.gz:md5,f09b01fcb43bf64f92ca7ec8a2380c25", "HG002_Revio_B.pair.vcf.gz:md5,676492865a9d4765835638d52651af73", "test.zip:md5,d3fc0769a4c707953cdb3fade9450660", - "HG002_Revio_A_modkit_pileup_phased_1.bed.gz:md5,7af3b6246d0c007aec686714b96a0f7f", - "HG002_Revio_A_modkit_pileup_phased_1.bed.gz.tbi:md5,b7083ebf6ba176ed5a472ad653c5be27", - "HG002_Revio_A_modkit_pileup_phased_2.bed.gz:md5,a2e1291b468361412899cf811022fe72", - "HG002_Revio_A_modkit_pileup_phased_2.bed.gz.tbi:md5,d1c192d65d8fa8cbb8ffa2e545282fde", - "HG002_Revio_A_modkit_pileup_phased_ungrouped.bed.gz:md5,9a077eb24b17d6511e849c5b533cda64", - "HG002_Revio_A_modkit_pileup_phased_ungrouped.bed.gz.tbi:md5,f569a923cc5204df5dc495354ab83a13", - "HG002_Revio_B_modkit_pileup_phased_1.bed.gz:md5,d8c15e30192ce878d17dffcc0981658a", - "HG002_Revio_B_modkit_pileup_phased_1.bed.gz.tbi:md5,2d400d38de3f45871bffac0ca0d3d7d3", - "HG002_Revio_B_modkit_pileup_phased_2.bed.gz:md5,a2e1291b468361412899cf811022fe72", - "HG002_Revio_B_modkit_pileup_phased_2.bed.gz.tbi:md5,d1c192d65d8fa8cbb8ffa2e545282fde", - "HG002_Revio_B_modkit_pileup_phased_ungrouped.bed.gz:md5,49d9380eb739081b7a0b4dfa7756d09c", - "HG002_Revio_B_modkit_pileup_phased_ungrouped.bed.gz.tbi:md5,f569a923cc5204df5dc495354ab83a13", - "HG002_Revio_A_modkit_pileup.bed.gz:md5,a52bb9ab393e682d0b7118ef2efe5c15", - "HG002_Revio_A_modkit_pileup.bed.gz.tbi:md5,08312c13316ed9b4b582897c210ecb58", - "HG002_Revio_B_modkit_pileup.bed.gz:md5,60f856e145343697ff581e91fda288ff", - "HG002_Revio_B_modkit_pileup.bed.gz.tbi:md5,d04e7a6fb67e9b5a8342ae979bc0e5cd", + "HG002_Revio_A_modkit_pileup_1.bed.gz:md5,7af3b6246d0c007aec686714b96a0f7f", + "HG002_Revio_A_modkit_pileup_1.bed.gz.tbi:md5,b7083ebf6ba176ed5a472ad653c5be27", + "HG002_Revio_A_modkit_pileup_2.bed.gz:md5,a2e1291b468361412899cf811022fe72", + "HG002_Revio_A_modkit_pileup_2.bed.gz.tbi:md5,d1c192d65d8fa8cbb8ffa2e545282fde", + "HG002_Revio_A_modkit_pileup_ungrouped.bed.gz:md5,9a077eb24b17d6511e849c5b533cda64", + "HG002_Revio_A_modkit_pileup_ungrouped.bed.gz.tbi:md5,f569a923cc5204df5dc495354ab83a13", + "HG002_Revio_B_modkit_pileup_1.bed.gz:md5,d8c15e30192ce878d17dffcc0981658a", + "HG002_Revio_B_modkit_pileup_1.bed.gz.tbi:md5,2d400d38de3f45871bffac0ca0d3d7d3", + "HG002_Revio_B_modkit_pileup_2.bed.gz:md5,a2e1291b468361412899cf811022fe72", + "HG002_Revio_B_modkit_pileup_2.bed.gz.tbi:md5,d1c192d65d8fa8cbb8ffa2e545282fde", + "HG002_Revio_B_modkit_pileup_ungrouped.bed.gz:md5,49d9380eb739081b7a0b4dfa7756d09c", + "HG002_Revio_B_modkit_pileup_ungrouped.bed.gz.tbi:md5,f569a923cc5204df5dc495354ab83a13", "mosdepth_cov_dist.txt:md5,41793745406425cfa02d558875df8d16", "mosdepth_cumcov_dist.txt:md5,c53933e0b572d115ecd35a5adb3e0a04", "mosdepth_perchrom.txt:md5,9fd9c40c7a6be06a338f2039a5d91fb8", @@ -754,6 +733,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-30T17:19:17.8692492" + "timestamp": "2024-10-31T16:14:41.962593731" } } \ No newline at end of file diff --git a/tests/samplesheet_multisample_ont_bam.nf.test.snap b/tests/samplesheet_multisample_ont_bam.nf.test.snap index a06ff946..f186dfa3 100644 --- a/tests/samplesheet_multisample_ont_bam.nf.test.snap +++ b/tests/samplesheet_multisample_ont_bam.nf.test.snap @@ -1,7 +1,7 @@ { "samplesheet_multisample_ont_bam | --preset ONT_R10 --phaser whatshap --parallel_alignments 1 --parallel_snv 1": { "content": [ - 107, + 103, { "ADD_FOUND_IN_TAG": { "bcftools": 1.2, @@ -51,12 +51,6 @@ "BEDTOOLS_SORT": { "bedtools": "2.31.1" }, - "BGZIP_MODKIT_PILEUP_PHASED": { - "tabix": 1.2 - }, - "BGZIP_MODKIT_PILEUP_UNPHASED": { - "tabix": 1.2 - }, "CRAMINO": { "cramino": "0.14.5" }, @@ -112,10 +106,7 @@ "MINIMAP2_INDEX": { "minimap2": "2.28-r1209" }, - "MODKIT_PILEUP_PHASED": { - "modkit": "0.3.0" - }, - "MODKIT_PILEUP_UNPHASED": { + "MODKIT_PILEUP": { "modkit": "0.3.0" }, "MOSDEPTH": { @@ -209,28 +200,20 @@ "methylation", "methylation/modkit", "methylation/modkit/pileup", - "methylation/modkit/pileup/phased", - "methylation/modkit/pileup/phased/HG002_ONT_A", - "methylation/modkit/pileup/phased/HG002_ONT_A/HG002_ONT_A_modkit_pileup_phased_1.bed.gz", - "methylation/modkit/pileup/phased/HG002_ONT_A/HG002_ONT_A_modkit_pileup_phased_1.bed.gz.tbi", - "methylation/modkit/pileup/phased/HG002_ONT_A/HG002_ONT_A_modkit_pileup_phased_2.bed.gz", - "methylation/modkit/pileup/phased/HG002_ONT_A/HG002_ONT_A_modkit_pileup_phased_2.bed.gz.tbi", - "methylation/modkit/pileup/phased/HG002_ONT_A/HG002_ONT_A_modkit_pileup_phased_ungrouped.bed.gz", - "methylation/modkit/pileup/phased/HG002_ONT_A/HG002_ONT_A_modkit_pileup_phased_ungrouped.bed.gz.tbi", - "methylation/modkit/pileup/phased/HG002_ONT_B", - "methylation/modkit/pileup/phased/HG002_ONT_B/HG002_ONT_B_modkit_pileup_phased_1.bed.gz", - "methylation/modkit/pileup/phased/HG002_ONT_B/HG002_ONT_B_modkit_pileup_phased_1.bed.gz.tbi", - "methylation/modkit/pileup/phased/HG002_ONT_B/HG002_ONT_B_modkit_pileup_phased_2.bed.gz", - "methylation/modkit/pileup/phased/HG002_ONT_B/HG002_ONT_B_modkit_pileup_phased_2.bed.gz.tbi", - "methylation/modkit/pileup/phased/HG002_ONT_B/HG002_ONT_B_modkit_pileup_phased_ungrouped.bed.gz", - "methylation/modkit/pileup/phased/HG002_ONT_B/HG002_ONT_B_modkit_pileup_phased_ungrouped.bed.gz.tbi", - "methylation/modkit/pileup/unphased", - "methylation/modkit/pileup/unphased/HG002_ONT_A", - "methylation/modkit/pileup/unphased/HG002_ONT_A/HG002_ONT_A_modkit_pileup.bed.gz", - "methylation/modkit/pileup/unphased/HG002_ONT_A/HG002_ONT_A_modkit_pileup.bed.gz.tbi", - "methylation/modkit/pileup/unphased/HG002_ONT_B", - "methylation/modkit/pileup/unphased/HG002_ONT_B/HG002_ONT_B_modkit_pileup.bed.gz", - "methylation/modkit/pileup/unphased/HG002_ONT_B/HG002_ONT_B_modkit_pileup.bed.gz.tbi", + "methylation/modkit/pileup/HG002_ONT_A", + "methylation/modkit/pileup/HG002_ONT_A/HG002_ONT_A_modkit_pileup_1.bed.gz", + "methylation/modkit/pileup/HG002_ONT_A/HG002_ONT_A_modkit_pileup_1.bed.gz.tbi", + "methylation/modkit/pileup/HG002_ONT_A/HG002_ONT_A_modkit_pileup_2.bed.gz", + "methylation/modkit/pileup/HG002_ONT_A/HG002_ONT_A_modkit_pileup_2.bed.gz.tbi", + "methylation/modkit/pileup/HG002_ONT_A/HG002_ONT_A_modkit_pileup_ungrouped.bed.gz", + "methylation/modkit/pileup/HG002_ONT_A/HG002_ONT_A_modkit_pileup_ungrouped.bed.gz.tbi", + "methylation/modkit/pileup/HG002_ONT_B", + "methylation/modkit/pileup/HG002_ONT_B/HG002_ONT_B_modkit_pileup_1.bed.gz", + "methylation/modkit/pileup/HG002_ONT_B/HG002_ONT_B_modkit_pileup_1.bed.gz.tbi", + "methylation/modkit/pileup/HG002_ONT_B/HG002_ONT_B_modkit_pileup_2.bed.gz", + "methylation/modkit/pileup/HG002_ONT_B/HG002_ONT_B_modkit_pileup_2.bed.gz.tbi", + "methylation/modkit/pileup/HG002_ONT_B/HG002_ONT_B_modkit_pileup_ungrouped.bed.gz", + "methylation/modkit/pileup/HG002_ONT_B/HG002_ONT_B_modkit_pileup_ungrouped.bed.gz.tbi", "multiqc", "multiqc/multiqc_data", "multiqc/multiqc_data/mosdepth_cov_dist.txt", @@ -372,22 +355,18 @@ ], [ "test.zip:md5,779efd29ec2cc66bef05c173c44e4168", - "HG002_ONT_A_modkit_pileup_phased_1.bed.gz:md5,2be86a42ac0384ac6d27fdf6e65304b7", - "HG002_ONT_A_modkit_pileup_phased_1.bed.gz.tbi:md5,a7955eabc34456dce834a2c966071eaa", - "HG002_ONT_A_modkit_pileup_phased_2.bed.gz:md5,ec565bd66fc73d380b7f9eb768369a65", - "HG002_ONT_A_modkit_pileup_phased_2.bed.gz.tbi:md5,e6eb3c61b79a4abd0fd952f710d6eab3", - "HG002_ONT_A_modkit_pileup_phased_ungrouped.bed.gz:md5,b42b812e1dced6242ed206754c7b3f3e", - "HG002_ONT_A_modkit_pileup_phased_ungrouped.bed.gz.tbi:md5,0c232dffb9651d934b179f95365931db", - "HG002_ONT_B_modkit_pileup_phased_1.bed.gz:md5,2be86a42ac0384ac6d27fdf6e65304b7", - "HG002_ONT_B_modkit_pileup_phased_1.bed.gz.tbi:md5,a7955eabc34456dce834a2c966071eaa", - "HG002_ONT_B_modkit_pileup_phased_2.bed.gz:md5,ec565bd66fc73d380b7f9eb768369a65", - "HG002_ONT_B_modkit_pileup_phased_2.bed.gz.tbi:md5,e6eb3c61b79a4abd0fd952f710d6eab3", - "HG002_ONT_B_modkit_pileup_phased_ungrouped.bed.gz:md5,42dcaedf8c379a4e5dee0822d5e8aca4", - "HG002_ONT_B_modkit_pileup_phased_ungrouped.bed.gz.tbi:md5,3d97d016882c99e4e21112fc76ceb2a2", - "HG002_ONT_A_modkit_pileup.bed.gz:md5,e04d51deb9019e67e7ddd7f1bd82a580", - "HG002_ONT_A_modkit_pileup.bed.gz.tbi:md5,1e198df01c63afea13ef9d04e2d03684", - "HG002_ONT_B_modkit_pileup.bed.gz:md5,95a96ceddc795c9c5c4a8d9e6f9d3b5b", - "HG002_ONT_B_modkit_pileup.bed.gz.tbi:md5,8276c6feeac0be16274198831c75023d", + "HG002_ONT_A_modkit_pileup_1.bed.gz:md5,2be86a42ac0384ac6d27fdf6e65304b7", + "HG002_ONT_A_modkit_pileup_1.bed.gz.tbi:md5,a7955eabc34456dce834a2c966071eaa", + "HG002_ONT_A_modkit_pileup_2.bed.gz:md5,ec565bd66fc73d380b7f9eb768369a65", + "HG002_ONT_A_modkit_pileup_2.bed.gz.tbi:md5,e6eb3c61b79a4abd0fd952f710d6eab3", + "HG002_ONT_A_modkit_pileup_ungrouped.bed.gz:md5,b42b812e1dced6242ed206754c7b3f3e", + "HG002_ONT_A_modkit_pileup_ungrouped.bed.gz.tbi:md5,0c232dffb9651d934b179f95365931db", + "HG002_ONT_B_modkit_pileup_1.bed.gz:md5,2be86a42ac0384ac6d27fdf6e65304b7", + "HG002_ONT_B_modkit_pileup_1.bed.gz.tbi:md5,a7955eabc34456dce834a2c966071eaa", + "HG002_ONT_B_modkit_pileup_2.bed.gz:md5,ec565bd66fc73d380b7f9eb768369a65", + "HG002_ONT_B_modkit_pileup_2.bed.gz.tbi:md5,e6eb3c61b79a4abd0fd952f710d6eab3", + "HG002_ONT_B_modkit_pileup_ungrouped.bed.gz:md5,42dcaedf8c379a4e5dee0822d5e8aca4", + "HG002_ONT_B_modkit_pileup_ungrouped.bed.gz.tbi:md5,3d97d016882c99e4e21112fc76ceb2a2", "mosdepth_cov_dist.txt:md5,1eb2a5c39fd4b8dd814049b65b007037", "mosdepth_cumcov_dist.txt:md5,5ad1d589df3fa7fe5d21fc95001573a9", "mosdepth_perchrom.txt:md5,86a907217d64d4c2717885403058580f", @@ -498,6 +477,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-30T17:20:47.644972969" + "timestamp": "2024-10-31T16:16:52.848104929" } } \ No newline at end of file diff --git a/workflows/nallo.nf b/workflows/nallo.nf index d89de0ef..312ae3e0 100644 --- a/workflows/nallo.nf +++ b/workflows/nallo.nf @@ -450,15 +450,6 @@ workflow NALLO { ch_multiqc_files = ch_multiqc_files.mix(PHASING.out.stats.collect{it[1]}.ifEmpty([])) - // - // Create methylation pileups with modkit - // - if(!params.skip_methylation_wf) { - - METHYLATION( PHASING.out.haplotagged_bam_bai, fasta, fai, ch_input_bed ) - ch_versions = ch_versions.mix(METHYLATION.out.versions) - } - // // Call repeat expansions with TRGT // @@ -476,6 +467,19 @@ workflow NALLO { } } } + + // + // Create methylation pileups with modkit + // + if (!params.skip_methylation_wf) { + METHYLATION ( + !params.skip_phasing_wf ? PHASING.out.haplotagged_bam_bai : bam_bai, + fasta, + fai, + ch_input_bed, + ) + ch_versions = ch_versions.mix(METHYLATION.out.versions) + } } // Merge SVs and CNVs if we've called both SVs and CNVs From c47f69a198e63db4e34b4351a1664c350d901b37 Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Tue, 5 Nov 2024 16:43:42 +0100 Subject: [PATCH 057/106] Fix rank SVs with multiple families (#480) * Fix rank SVs with multiple families * use updated genmod modules * fix tests --- CHANGELOG.md | 1 + conf/modules/general.config | 9 ++++- docs/output.md | 13 ++++---- modules.json | 4 +-- modules/local/create_pedigree_file/main.nf | 19 ++++++----- modules/nf-core/genmod/models/main.nf | 3 +- modules/nf-core/genmod/models/meta.yml | 4 +-- .../nf-core/genmod/models/tests/main.nf.test | 12 +++---- modules/nf-core/genmod/score/main.nf | 3 +- modules/nf-core/genmod/score/meta.yml | 4 +-- .../nf-core/genmod/score/tests/main.nf.test | 12 +++---- subworkflows/local/rank_variants/main.nf | 16 ++++++--- .../local/rank_variants/tests/main.nf.test | 16 ++++----- .../rank_variants/tests/main.nf.test.snap | 26 +++++---------- tests/samplesheet.nf.test.snap | 14 ++++++-- .../samplesheet_multisample_bam.nf.test.snap | 14 ++++++-- ...mplesheet_multisample_ont_bam.nf.test.snap | 14 ++++++-- workflows/nallo.nf | 33 +++++++++++++++---- 18 files changed, 133 insertions(+), 84 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6bd88ef5..7a2f87f2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -80,6 +80,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#451](https://github.com/genomic-medicine-sweden/nallo/pull/451) - Simplified methylation subworkflow - [#474](https://github.com/genomic-medicine-sweden/nallo/pull/474) - Updated VEP and CADD channels to fix bugs introduced in [#443](https://github.com/genomic-medicine-sweden/nallo/pull/443) - [#479](https://github.com/genomic-medicine-sweden/nallo/pull/479) - Replaced bgzip tabix with bcftools sort in rank variants to fix [#457](https://github.com/genomic-medicine-sweden/nallo/issues/457) +- [#480](https://github.com/genomic-medicine-sweden/nallo/pull/480) - Updated ranking of SVs to work with multiple families per project - [#484](https://github.com/genomic-medicine-sweden/nallo/pull/484) - Updated metro map and added SVG version - [#487](https://github.com/genomic-medicine-sweden/nallo/pull/487) - Changed CI tests to only run tests where changes have been made diff --git a/conf/modules/general.config b/conf/modules/general.config index 92c504de..bcec5299 100644 --- a/conf/modules/general.config +++ b/conf/modules/general.config @@ -113,7 +113,14 @@ process { withName: '.*:NALLO:SOMALIER_PED' { publishDir = [ - path: { "${params.outdir}/pedigree" }, + path: { "${params.outdir}/pedigree/project/" }, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename }, + ] + } + + withName: '.*:NALLO:SOMALIER_PED_FAMILY' { + publishDir = [ + path: { "${params.outdir}/pedigree/family/" }, saveAs: { filename -> filename.equals('versions.yml') ? null : filename }, ] } diff --git a/docs/output.md b/docs/output.md index 85de861f..11b8d461 100644 --- a/docs/output.md +++ b/docs/output.md @@ -121,12 +121,13 @@ If the pipeline is run with phasing, the aligned reads will be happlotagged usin [somalier](https://github.com/brentp/somalier) checks relatedness and sex. -| Path | Description | -| ----------------------------------------------------- | ------------------------------------------- | -| `pedigree/{project}.ped` | PED file updated with somalier-inferred sex | -| `qc/somalier/relate/{project}/{project}.html` | HTML report | -| `qc/somalier/relate/{project}/{project}.pairs.tsv` | Information about sample pairs | -| `/qc/somalier/relate/{project}/{project}.samples.tsv` | Information about individual samples | +| Path | Description | +| ----------------------------------------------------- | ------------------------------------------------------- | +| `pedigree/{project}/{project}.ped` | PED file updated with somalier-inferred sex per project | +| `pedigree/{family}/{family).ped` | PED file updated with somalier-inferred sex per family | +| `qc/somalier/relate/{project}/{project}.html` | HTML report | +| `qc/somalier/relate/{project}/{project}.pairs.tsv` | Information about sample pairs | +| `/qc/somalier/relate/{project}/{project}.samples.tsv` | Information about individual samples | | Path | Description | | ------------------------- | ------------------------------------------- | diff --git a/modules.json b/modules.json index 9a4a3b04..4195dd68 100644 --- a/modules.json +++ b/modules.json @@ -114,12 +114,12 @@ }, "genmod/models": { "branch": "master", - "git_sha": "91a84f951358143e93dc9e03470db4e6a4a7105c", + "git_sha": "f888300c726e1f817a9f93a680866ff7e6c669f6", "installed_by": ["modules"] }, "genmod/score": { "branch": "master", - "git_sha": "91a84f951358143e93dc9e03470db4e6a4a7105c", + "git_sha": "f888300c726e1f817a9f93a680866ff7e6c669f6", "installed_by": ["modules"] }, "gfastats": { diff --git a/modules/local/create_pedigree_file/main.nf b/modules/local/create_pedigree_file/main.nf index 10ab7e81..fc6eca46 100644 --- a/modules/local/create_pedigree_file/main.nf +++ b/modules/local/create_pedigree_file/main.nf @@ -1,5 +1,5 @@ process CREATE_PEDIGREE_FILE { - tag "${project}" + tag "${meta.id}" label 'process_single' conda "conda-forge::python=3.8.3" @@ -8,20 +8,20 @@ process CREATE_PEDIGREE_FILE { 'biocontainers/python:3.8.3' }" input: - tuple val(project), val(meta) + tuple val(meta), val(metas) output: - tuple val(project), path("*.ped"), emit: ped - path "versions.yml" , emit: versions + tuple val(meta), path("*.ped"), emit: ped + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when script: - def out = new File(project + ".ped") - def samples = (meta.collect().size() > 1) ? meta.sort{ a, b -> + def prefix = task.ext.prefix ?: "${meta.id}" + def samples = (metas.collect().size() > 1) ? metas.sort{ a, b -> // First sort on family_id, then on sample id - a.family_id <=> b.family_id ?: a.id <=> b.id } : meta + a.family_id <=> b.family_id ?: a.id <=> b.id } : metas outfile_text = ['#family_id', 'sample_id', 'father', 'mother', 'sex', 'phenotype'].join('\\t') def samples_list = [] for(int i = 0; i${project}.ped + echo -e "$outfile_text" > ${prefix}.ped cat <<-END_VERSIONS > versions.yml "${task.process}": @@ -42,8 +42,9 @@ process CREATE_PEDIGREE_FILE { """ stub: + def prefix = task.ext.prefix ?: "${meta.id}" """ - touch ${project}.ped + touch ${prefix}.ped cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/genmod/models/main.nf b/modules/nf-core/genmod/models/main.nf index ff71b660..a869221e 100644 --- a/modules/nf-core/genmod/models/main.nf +++ b/modules/nf-core/genmod/models/main.nf @@ -8,8 +8,7 @@ process GENMOD_MODELS { 'biocontainers/genmod:3.9--pyhdfd78af_0' }" input: - tuple val(meta), path(input_vcf) - path (fam) + tuple val(meta), path(input_vcf), path (fam) path (reduced_penetrance) output: diff --git a/modules/nf-core/genmod/models/meta.yml b/modules/nf-core/genmod/models/meta.yml index dca74095..a6249114 100644 --- a/modules/nf-core/genmod/models/meta.yml +++ b/modules/nf-core/genmod/models/meta.yml @@ -22,9 +22,9 @@ input: type: file description: vcf file pattern: "*.{vcf}" - - - fam: + - fam: type: file - description: file with family information + description: PED file with family information - - reduced_penetrance: type: file description: file with gene ids that have reduced penetrance diff --git a/modules/nf-core/genmod/models/tests/main.nf.test b/modules/nf-core/genmod/models/tests/main.nf.test index afa85dfc..0b9a3ebd 100644 --- a/modules/nf-core/genmod/models/tests/main.nf.test +++ b/modules/nf-core/genmod/models/tests/main.nf.test @@ -15,10 +15,10 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/vcf/test_annotate.vcf.gz', checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/vcf/test_annotate.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/vcf/ped/justhusky.ped', checkIfExists: true) ] - input[1] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/vcf/ped/justhusky.ped', checkIfExists: true) - input[2] = [] + input[1] = [] """ } } @@ -44,10 +44,10 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/vcf/test_annotate.vcf.gz', checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/vcf/test_annotate.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/vcf/ped/justhusky.ped', checkIfExists: true) ] - input[1] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/vcf/ped/justhusky.ped', checkIfExists: true) - input[2] = [] + input[1] = [] """ } } diff --git a/modules/nf-core/genmod/score/main.nf b/modules/nf-core/genmod/score/main.nf index 41d57bdc..756fc731 100644 --- a/modules/nf-core/genmod/score/main.nf +++ b/modules/nf-core/genmod/score/main.nf @@ -8,8 +8,7 @@ process GENMOD_SCORE { 'biocontainers/genmod:3.9--pyhdfd78af_0' }" input: - tuple val(meta), path(input_vcf) - path (fam) + tuple val(meta), path(input_vcf), path (fam) path (score_config) output: diff --git a/modules/nf-core/genmod/score/meta.yml b/modules/nf-core/genmod/score/meta.yml index 32da6468..c5fe2e2a 100644 --- a/modules/nf-core/genmod/score/meta.yml +++ b/modules/nf-core/genmod/score/meta.yml @@ -22,9 +22,9 @@ input: type: file description: vcf file pattern: "*.{vcf}" - - - fam: + - fam: type: file - description: file with family information + description: PED file with family information - - score_config: type: file description: rank model config file diff --git a/modules/nf-core/genmod/score/tests/main.nf.test b/modules/nf-core/genmod/score/tests/main.nf.test index 98c8f35a..6181f63a 100644 --- a/modules/nf-core/genmod/score/tests/main.nf.test +++ b/modules/nf-core/genmod/score/tests/main.nf.test @@ -15,10 +15,10 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/vcf/test_models.vcf.gz', checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/vcf/test_models.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/vcf/ped/justhusky.ped', checkIfExists: true) ] - input[1] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/vcf/ped/justhusky.ped', checkIfExists: true) - input[2] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/genmod/svrank_model_-v1.8-.ini', checkIfExists: true) + input[1] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/genmod/svrank_model_-v1.8-.ini', checkIfExists: true) """ } } @@ -44,10 +44,10 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/vcf/test_models.vcf.gz', checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/vcf/test_models.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/vcf/ped/justhusky.ped', checkIfExists: true) ] - input[1] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/vcf/ped/justhusky.ped', checkIfExists: true) - input[2] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/genmod/svrank_model_-v1.8-.ini', checkIfExists: true) + input[1] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/genmod/svrank_model_-v1.8-.ini', checkIfExists: true) """ } } diff --git a/subworkflows/local/rank_variants/main.nf b/subworkflows/local/rank_variants/main.nf index c416b248..db7e0139 100644 --- a/subworkflows/local/rank_variants/main.nf +++ b/subworkflows/local/rank_variants/main.nf @@ -12,7 +12,7 @@ workflow RANK_VARIANTS { take: ch_vcf // channel: [mandatory] [ val(meta), path(vcf) ] - ch_pedfile // channel: [mandatory] [ val(meta), path(ped) ] + ch_ped // channel: [mandatory] [ val(meta), path(ped) ] ch_reduced_penetrance // channel: [mandatory] [ val(meta), path(pentrance) ] ch_score_config // channel: [mandatory] [ val(meta), path(ini) ] @@ -22,16 +22,22 @@ workflow RANK_VARIANTS { GENMOD_ANNOTATE ( ch_vcf ) ch_versions = ch_versions.mix(GENMOD_ANNOTATE.out.versions) + GENMOD_ANNOTATE.out.vcf + .join( ch_ped, failOnMismatch: true ) + .set { genmod_models_in } + GENMOD_MODELS ( - GENMOD_ANNOTATE.out.vcf, - ch_pedfile.map { meta, ped -> ped }, + genmod_models_in, ch_reduced_penetrance.map { meta, file -> file } ) ch_versions = ch_versions.mix(GENMOD_MODELS.out.versions) + GENMOD_MODELS.out.vcf + .join( ch_ped, failOnMismatch: true ) + .set { genmod_score_in } + GENMOD_SCORE ( - GENMOD_MODELS.out.vcf, - ch_pedfile.map { meta, ped -> ped }, + genmod_score_in, ch_score_config.map { meta, file -> file } ) ch_versions = ch_versions.mix(GENMOD_SCORE.out.versions) diff --git a/subworkflows/local/rank_variants/tests/main.nf.test b/subworkflows/local/rank_variants/tests/main.nf.test index 473f16c8..a544a445 100644 --- a/subworkflows/local/rank_variants/tests/main.nf.test +++ b/subworkflows/local/rank_variants/tests/main.nf.test @@ -28,7 +28,7 @@ nextflow_workflow { process { """ input[0] = [ - [ id: 'test', num_intervals:1 ], + [ id: 'project', num_intervals:1 ], file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.fastq.gz', checkIfExists: true) ] input[1] = PREPARE_GENOME.out.fasta @@ -46,7 +46,7 @@ nextflow_workflow { input[0] = MINIMAP2_ALIGN.out.bam .join(MINIMAP2_ALIGN.out.index) .join(Channel.of([ - [ id: 'test', num_intervals:1 ], + [ id: 'project', num_intervals:1 ], file(params.pipelines_testdata_base_path + 'reference/test_data.bed', checkIfExists: true) ])) input[1] = PREPARE_GENOME.out.fasta @@ -95,9 +95,9 @@ nextflow_workflow { process { """ input[0] = [ - 'project', + [id:'project'], [ - [ id: 'test', project: 'project', maternal_id: '0', paternal_id: '0', family_id: 'family', sex: '2', phenotype: '2' ] + [ id: 'project', project: 'project', maternal_id: '0', paternal_id: '0', family_id: 'family', sex: '2', phenotype: '2' ] ] ] """ @@ -110,8 +110,8 @@ nextflow_workflow { when { workflow { """ - input[0] = ANNOTATE_CSQ_PLI.out.vcf - input[1] = CREATE_PEDIGREE_FILE.out.ped + input[0] = ANNOTATE_CSQ_PLI.out.vcf.map { meta, vcf -> [ [ id: 'test' ], vcf ] } + input[1] = CREATE_PEDIGREE_FILE.out.ped.map { meta, ped -> [ [ id: 'test' ], ped ] } input[2] = Channel.of([ [ id: 'reduced_penetrance' ], file(params.pipelines_testdata_base_path + 'reference/reduced_penetrance.tsv', checkIfExists: true) @@ -142,8 +142,8 @@ nextflow_workflow { when { workflow { """ - input[0] = ANNOTATE_CSQ_PLI.out.vcf - input[1] = CREATE_PEDIGREE_FILE.out.ped + input[0] = ANNOTATE_CSQ_PLI.out.vcf.map { meta, vcf -> [ [ id: 'test' ], vcf ] } + input[1] = CREATE_PEDIGREE_FILE.out.ped.map { meta, ped -> [ [ id: 'test' ], ped ] } input[2] = Channel.of([ [ id: 'reduced_penetrance' ], file(params.pipelines_testdata_base_path + 'reference/reduced_penetrance.tsv', checkIfExists: true) diff --git a/subworkflows/local/rank_variants/tests/main.nf.test.snap b/subworkflows/local/rank_variants/tests/main.nf.test.snap index 19326d68..a955bed6 100644 --- a/subworkflows/local/rank_variants/tests/main.nf.test.snap +++ b/subworkflows/local/rank_variants/tests/main.nf.test.snap @@ -15,21 +15,17 @@ "0": [ [ { - "id": "test_data.bed", - "project": null, - "contains_affected": false + "id": "test" }, - "test_data.bed_sorted.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + "test_sorted.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "1": [ [ { - "id": "test_data.bed", - "project": null, - "contains_affected": false + "id": "test" }, - "test_data.bed_sorted.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + "test_sorted.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "2": [ @@ -42,21 +38,17 @@ "tbi": [ [ { - "id": "test_data.bed", - "project": null, - "contains_affected": false + "id": "test" }, - "test_data.bed_sorted.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + "test_sorted.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "vcf": [ [ { - "id": "test_data.bed", - "project": null, - "contains_affected": false + "id": "test" }, - "test_data.bed_sorted.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + "test_sorted.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "versions": [ @@ -72,6 +64,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-11-01T13:03:00.102392544" + "timestamp": "2024-11-04T14:34:36.22073696" } } \ No newline at end of file diff --git a/tests/samplesheet.nf.test.snap b/tests/samplesheet.nf.test.snap index 3fbdad9a..9e77b8bc 100644 --- a/tests/samplesheet.nf.test.snap +++ b/tests/samplesheet.nf.test.snap @@ -1,7 +1,7 @@ { "test profile": { "content": [ - 111, + 112, { "ADD_FOUND_IN_TAG": { "bcftools": 1.2, @@ -185,6 +185,10 @@ "create_pedigree_file": 1.0, "python": "3.8.3" }, + "SOMALIER_PED_FAMILY": { + "create_pedigree_file": 1.0, + "python": "3.8.3" + }, "SPLITUBAM": { "splitubam": "0.1.1" }, @@ -301,7 +305,10 @@ "paraphase/HG002_Revio/HG002_Revio_paraphase_vcfs/HG002_Revio_hba.vcf.gz", "paraphase/HG002_Revio/HG002_Revio_paraphase_vcfs/HG002_Revio_hba.vcf.gz.tbi", "pedigree", - "pedigree/test.ped", + "pedigree/family", + "pedigree/family/FAM.ped", + "pedigree/project", + "pedigree/project/test.ped", "phased_variants", "phased_variants/HG002_Revio", "phased_variants/HG002_Revio/HG002_Revio_phased.vcf.gz", @@ -423,6 +430,7 @@ "multiqc_fastqc.txt:md5,f0717ca13d848aa8f5eaa5d0dba92178", "multiqc_general_stats.txt:md5,c82b773e9d5ab3251280f3f03f35193a", "multiqc_whatshap_stats.txt:md5,c8c212ecc6fbf6803f8de87f2395363f", + "FAM.ped:md5,bd5cec27ba7337a85cf98e787131e2b5", "test.ped:md5,bd5cec27ba7337a85cf98e787131e2b5", "HG002_Revio_cramino_aligned_phased.arrow:md5,72df2934ff8aa7e1bf8cf8a4881a0d2a", "HG002_Revio_cramino_aligned.arrow:md5,72df2934ff8aa7e1bf8cf8a4881a0d2a", @@ -536,6 +544,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-31T16:12:33.482377002" + "timestamp": "2024-11-05T13:41:06.05402932" } } \ No newline at end of file diff --git a/tests/samplesheet_multisample_bam.nf.test.snap b/tests/samplesheet_multisample_bam.nf.test.snap index cb232f89..8c4a97ed 100644 --- a/tests/samplesheet_multisample_bam.nf.test.snap +++ b/tests/samplesheet_multisample_bam.nf.test.snap @@ -1,7 +1,7 @@ { "samplesheet_multisample_bam | --phaser hiphase": { "content": [ - 156, + 157, { "ADD_FOUND_IN_TAG": { "bcftools": 1.2, @@ -182,6 +182,10 @@ "create_pedigree_file": 1.0, "python": "3.8.3" }, + "SOMALIER_PED_FAMILY": { + "create_pedigree_file": 1.0, + "python": "3.8.3" + }, "SPLITUBAM": { "splitubam": "0.1.1" }, @@ -333,7 +337,10 @@ "paraphase/HG002_Revio_B/HG002_Revio_B_paraphase_vcfs/HG002_Revio_B_hba.vcf.gz", "paraphase/HG002_Revio_B/HG002_Revio_B_paraphase_vcfs/HG002_Revio_B_hba.vcf.gz.tbi", "pedigree", - "pedigree/test.ped", + "pedigree/family", + "pedigree/family/FAM.ped", + "pedigree/project", + "pedigree/project/test.ped", "phased_variants", "phased_variants/HG002_Revio_A", "phased_variants/HG002_Revio_A/HG002_Revio_A_phased.blocks.tsv", @@ -530,6 +537,7 @@ "multiqc_fastqc.txt:md5,18ca1a3fb2afa8988dc5d604c049cd9c", "multiqc_general_stats.txt:md5,4a2c114e57d5581b606012d1604d51fa", "multiqc_whatshap_stats.txt:md5,96447de4e14a9b4a570c24513de64970", + "FAM.ped:md5,24d8694d580f782ed77d4d1b5c6f6fb4", "test.ped:md5,24d8694d580f782ed77d4d1b5c6f6fb4", "HG002_Revio_A_phased.blocks.tsv:md5,27ce044ba581da15ef838cbb343a64cf", "HG002_Revio_A_phased.stats.tsv:md5,58ae1b01d01b922d022ad025a81f1026", @@ -733,6 +741,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-31T16:14:41.962593731" + "timestamp": "2024-11-05T13:42:51.526893089" } } \ No newline at end of file diff --git a/tests/samplesheet_multisample_ont_bam.nf.test.snap b/tests/samplesheet_multisample_ont_bam.nf.test.snap index f186dfa3..cf41a33c 100644 --- a/tests/samplesheet_multisample_ont_bam.nf.test.snap +++ b/tests/samplesheet_multisample_ont_bam.nf.test.snap @@ -1,7 +1,7 @@ { "samplesheet_multisample_ont_bam | --preset ONT_R10 --phaser whatshap --parallel_alignments 1 --parallel_snv 1": { "content": [ - 103, + 104, { "ADD_FOUND_IN_TAG": { "bcftools": 1.2, @@ -143,6 +143,10 @@ "create_pedigree_file": 1.0, "python": "3.8.3" }, + "SOMALIER_PED_FAMILY": { + "create_pedigree_file": 1.0, + "python": "3.8.3" + }, "SPLIT_BED_CHUNKS": { "split_bed_chunks": 1.0 }, @@ -247,7 +251,10 @@ "paraphase/HG002_ONT_B/HG002_ONT_B_paraphase_vcfs/HG002_ONT_B_hba.vcf.gz", "paraphase/HG002_ONT_B/HG002_ONT_B_paraphase_vcfs/HG002_ONT_B_hba.vcf.gz.tbi", "pedigree", - "pedigree/test.ped", + "pedigree/family", + "pedigree/family/FAM.ped", + "pedigree/project", + "pedigree/project/test.ped", "phased_variants", "phased_variants/HG002_ONT_A", "phased_variants/HG002_ONT_A/HG002_ONT_A_phased.vcf.gz", @@ -375,6 +382,7 @@ "multiqc_fastqc.txt:md5,5254c5d578af3a24182ccf3248183ac6", "multiqc_general_stats.txt:md5,0722f1462d3502d5383eb86a484192c6", "multiqc_whatshap_stats.txt:md5,5c4b972c8d52b3d997f117b39ba3ad5d", + "FAM.ped:md5,deb1ee6bd38d6e8f7cb92801d8a12f12", "test.ped:md5,deb1ee6bd38d6e8f7cb92801d8a12f12", "HG002_ONT_A_cramino_aligned_phased.arrow:md5,d2a5c81595fa34925ab8f03078487d81", "HG002_ONT_B_cramino_aligned_phased.arrow:md5,61af72539e105cec79db7c9b78eb15a7", @@ -477,6 +485,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-31T16:16:52.848104929" + "timestamp": "2024-11-05T13:44:39.150334649" } } \ No newline at end of file diff --git a/workflows/nallo.nf b/workflows/nallo.nf index 312ae3e0..84aee66d 100644 --- a/workflows/nallo.nf +++ b/workflows/nallo.nf @@ -40,6 +40,7 @@ include { SNV_ANNOTATION } from '../subworkflows/local/ // local include { CREATE_PEDIGREE_FILE as SAMPLESHEET_PED } from '../modules/local/create_pedigree_file/main' include { CREATE_PEDIGREE_FILE as SOMALIER_PED } from '../modules/local/create_pedigree_file/main' +include { CREATE_PEDIGREE_FILE as SOMALIER_PED_FAMILY } from '../modules/local/create_pedigree_file/main' include { ECHTVAR_ENCODE } from '../modules/local/echtvar/encode/main' include { SAMTOOLS_MERGE } from '../modules/nf-core/samtools/merge/main' @@ -190,7 +191,7 @@ workflow NALLO { // Create PED from samplesheet // ch_input - .map { meta, files -> [ meta.project, meta ] } + .map { meta, files -> [ [ id: meta.project ], meta ] } .groupTuple() .set { ch_samplesheet_ped_in } @@ -198,7 +199,6 @@ workflow NALLO { ch_versions = ch_versions.mix(SAMPLESHEET_PED.out.versions) SAMPLESHEET_PED.out.ped - .map { project, ped -> [ [ 'id': project ], ped ] } .collect() .set { ch_samplesheet_pedfile } @@ -216,10 +216,10 @@ workflow NALLO { bam_bai = BAM_INFER_SEX.out.bam_bai // - // Create PED with updated sex + // Create PED with updated sex per project (should perphaps be per SNV-calling region) // bam - .map { meta, files -> [ meta.project, meta ] } + .map { meta, files -> [ [ id: meta.project ], meta ] } .groupTuple() .set { ch_somalier_ped_in } @@ -227,10 +227,23 @@ workflow NALLO { ch_versions = ch_versions.mix(SOMALIER_PED.out.versions) SOMALIER_PED.out.ped - .map { project, ped -> [ [ 'id': project ], ped ] } .collect() .set { ch_updated_pedfile } + // + // Create PED with updated sex - per family + // + bam + .map { meta, files -> [ [ id: meta.family_id ], meta ] } + .groupTuple() + .set { ch_somalier_ped_family_in } + + SOMALIER_PED_FAMILY ( ch_somalier_ped_family_in ) + ch_versions = ch_versions.mix(SOMALIER_PED_FAMILY.out.versions) + + SOMALIER_PED_FAMILY.out.ped + .set { ch_updated_pedfile_family } + // // Run read QC with FastQC, mosdepth and cramino // @@ -356,6 +369,12 @@ workflow NALLO { ) ch_versions = ch_versions.mix(ANN_CSQ_PLI_SNV.out.versions) + // Give pedfile meta from + ANN_CSQ_PLI_SNV.out.vcf + .combine(ch_updated_pedfile.map { meta, ped -> ped } ) + .map { meta, vcf, ped -> [ meta, ped ] } + .set { rank_snvs_ped_in } + // // Ranks one multisample VCF per variant call region // Can only run if samplesheet has affected samples @@ -364,7 +383,7 @@ workflow NALLO { // Only run if we have affected individuals RANK_VARIANTS_SNV ( ANN_CSQ_PLI_SNV.out.vcf, - ch_updated_pedfile, + rank_snvs_ped_in, ch_reduced_penetrance, ch_score_config_snv ) @@ -534,7 +553,7 @@ workflow NALLO { if (!params.skip_rank_variants) { RANK_VARIANTS_SVS ( ANN_CSQ_PLI_SVS.out.vcf, - ch_updated_pedfile, + ch_updated_pedfile_family, ch_reduced_penetrance, ch_score_config_svs ) From c14669aa1f9509b3d15449cf8f3786229ecbc914 Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Wed, 6 Nov 2024 13:54:23 +0100 Subject: [PATCH 058/106] Template merge 3.0.2 (#489) --- .github/workflows/ci.yml | 4 +++- .../workflows/template_version_comment.yml | 22 ++++++++++--------- .gitignore | 1 + .nf-core.yml | 2 +- modules.json | 2 +- .../nf-core/utils_nfcore_pipeline/main.nf | 10 ++++----- 6 files changed, 23 insertions(+), 18 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 872deea8..66c29aed 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -11,6 +11,8 @@ on: env: NXF_ANSI_LOG: false + NXF_SINGULARITY_CACHEDIR: ${{ github.workspace }}/.singularity + NXF_SINGULARITY_LIBRARYDIR: ${{ github.workspace }}/.singularity NFTEST_VER: "0.9.2" concurrency: @@ -54,7 +56,7 @@ jobs: git remote add upstream ${{ github.event.repository.clone_url }} git fetch upstream ${{ github.event.pull_request.base.ref }} - - name: Install Nextflow + - name: Set up Nextflow uses: nf-core/setup-nextflow@v2 with: version: "${{ matrix.NXF_VER }}" diff --git a/.github/workflows/template_version_comment.yml b/.github/workflows/template_version_comment.yml index 9dea41f0..352649ae 100644 --- a/.github/workflows/template_version_comment.yml +++ b/.github/workflows/template_version_comment.yml @@ -10,9 +10,11 @@ jobs: steps: - name: Check out pipeline code uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4 + with: + ref: ${{ github.event.pull_request.head.sha }} - name: Read template version from .nf-core.yml - uses: pietrobolcato/action-read-yaml@1.0.0 + uses: nichmor/minimal-read-yaml@v0.0.2 id: read_yml with: config: ${{ github.workspace }}/.nf-core.yml @@ -24,20 +26,20 @@ jobs: - name: Check nf-core outdated id: nf_core_outdated - run: pip list --outdated | grep nf-core + run: echo "OUTPUT=$(pip list --outdated | grep nf-core)" >> ${GITHUB_ENV} - name: Post nf-core template version comment uses: mshick/add-pr-comment@b8f338c590a895d50bcbfa6c5859251edc8952fc # v2 if: | - ${{ steps.nf_core_outdated.outputs.stdout }} =~ 'nf-core' + contains(env.OUTPUT, 'nf-core') with: repo-token: ${{ secrets.NF_CORE_BOT_AUTH_TOKEN }} allow-repeats: false message: | - ## :warning: Newer version of the nf-core template is available. - - Your pipeline is using an old version of the nf-core template: ${{ steps.read_yml.outputs['nf_core_version'] }}. - Please update your pipeline to the latest version. - - For more documentation on how to update your pipeline, please see the [nf-core documentation](https://github.com/nf-core/tools?tab=readme-ov-file#sync-a-pipeline-with-the-template) and [Synchronisation documentation](https://nf-co.re/docs/contributing/sync). - # + > [!WARNING] + > Newer version of the nf-core template is available. + > + > Your pipeline is using an old version of the nf-core template: ${{ steps.read_yml.outputs['nf_core_version'] }}. + > Please update your pipeline to the latest version. + > + > For more documentation on how to update your pipeline, please see the [nf-core documentation](https://github.com/nf-core/tools?tab=readme-ov-file#sync-a-pipeline-with-the-template) and [Synchronisation documentation](https://nf-co.re/docs/contributing/sync). diff --git a/.gitignore b/.gitignore index 2eef655b..23b0c7de 100644 --- a/.gitignore +++ b/.gitignore @@ -6,4 +6,5 @@ results/ testing/ testing* *.pyc +null/ .nf-test* diff --git a/.nf-core.yml b/.nf-core.yml index b53031cd..21fc7d81 100644 --- a/.nf-core.yml +++ b/.nf-core.yml @@ -27,7 +27,7 @@ lint: nextflow_config: - manifest.name - manifest.homePage -nf_core_version: 3.0.1 +nf_core_version: 3.0.2 org_path: null repository_type: pipeline template: diff --git a/modules.json b/modules.json index 4195dd68..9ca51cbb 100644 --- a/modules.json +++ b/modules.json @@ -290,7 +290,7 @@ }, "utils_nfcore_pipeline": { "branch": "master", - "git_sha": "772684d9d66f37b650c8ba5146ac1ee3ecba2acb", + "git_sha": "1b6b9a3338d011367137808b49b923515080e3ba", "installed_by": ["subworkflows"] }, "utils_nfschema_plugin": { diff --git a/subworkflows/nf-core/utils_nfcore_pipeline/main.nf b/subworkflows/nf-core/utils_nfcore_pipeline/main.nf index b78273ca..5cb7bafe 100644 --- a/subworkflows/nf-core/utils_nfcore_pipeline/main.nf +++ b/subworkflows/nf-core/utils_nfcore_pipeline/main.nf @@ -3,9 +3,9 @@ // /* -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SUBWORKFLOW DEFINITION -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ workflow UTILS_NFCORE_PIPELINE { @@ -21,9 +21,9 @@ workflow UTILS_NFCORE_PIPELINE { } /* -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ FUNCTIONS -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ // @@ -62,7 +62,7 @@ def checkProfileProvided(nextflow_cli_args) { def workflowCitation() { def temp_doi_ref = "" def manifest_doi = workflow.manifest.doi.tokenize(",") - // Using a loop to handle multiple DOIs + // Handling multiple DOIs // Removing `https://doi.org/` to handle pipelines using DOIs vs DOI resolvers // Removing ` ` since the manifest.doi is a string and not a proper list manifest_doi.each { doi_ref -> From 73cca588db49967a6c5b746999766007354b1f76 Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Wed, 6 Nov 2024 13:55:09 +0100 Subject: [PATCH 059/106] Update nf-core modules (#486) * Update nf-core modules * fix tests * update methylation config * update test * update modules * update tests --- CHANGELOG.md | 25 +- conf/modules/short_variant_calling.config | 2 +- modules.json | 110 ++-- .../tests/main.nf.test.snap | 16 +- .../bcftools/annotate/bcftools-annotate.diff | 41 +- .../nf-core/bcftools/annotate/environment.yml | 2 - modules/nf-core/bcftools/annotate/main.nf | 12 +- modules/nf-core/bcftools/annotate/meta.yml | 94 ++-- .../bcftools/annotate/tests/main.nf.test | 170 ++++--- .../bcftools/annotate/tests/main.nf.test.snap | 160 +++--- .../nf-core/bcftools/concat/environment.yml | 2 - modules/nf-core/bcftools/concat/main.nf | 16 +- modules/nf-core/bcftools/concat/meta.yml | 90 ++-- .../bcftools/concat/tests/main.nf.test | 18 +- .../bcftools/concat/tests/main.nf.test.snap | 158 +++--- .../nf-core/bcftools/merge/environment.yml | 1 - modules/nf-core/bcftools/merge/meta.yml | 123 +++-- modules/nf-core/bcftools/norm/environment.yml | 2 - modules/nf-core/bcftools/norm/main.nf | 2 +- modules/nf-core/bcftools/norm/meta.yml | 102 ++-- .../bcftools/pluginsplit/environment.yml | 2 - modules/nf-core/bcftools/pluginsplit/meta.yml | 124 +++-- modules/nf-core/bcftools/query/meta.yml | 82 +-- .../bcftools/reheader/bcftools-reheader.diff | 36 -- .../nf-core/bcftools/reheader/environment.yml | 2 - modules/nf-core/bcftools/reheader/meta.yml | 91 ++-- modules/nf-core/bcftools/sort/environment.yml | 2 - modules/nf-core/bcftools/sort/meta.yml | 71 ++- .../nf-core/bcftools/stats/environment.yml | 2 - modules/nf-core/bcftools/stats/meta.yml | 124 +++-- modules/nf-core/bcftools/view/environment.yml | 2 - modules/nf-core/bcftools/view/meta.yml | 114 +++-- .../nf-core/bedtools/merge/environment.yml | 2 - modules/nf-core/bedtools/merge/meta.yml | 46 +- .../nf-core/bedtools/merge/tests/main.nf.test | 2 +- modules/nf-core/bedtools/sort/environment.yml | 2 - modules/nf-core/bedtools/sort/meta.yml | 53 +- modules/nf-core/cat/fastq/environment.yml | 4 +- modules/nf-core/cat/fastq/main.nf | 4 +- modules/nf-core/cat/fastq/meta.yml | 43 +- .../nf-core/cat/fastq/tests/main.nf.test.snap | 100 ++-- modules/nf-core/deepvariant/README.md | 11 - modules/nf-core/deepvariant/meta.yml | 92 ---- .../deepvariant/{ => rundeepvariant}/main.nf | 2 +- .../deepvariant/rundeepvariant/meta.yml | 122 +++++ .../{ => rundeepvariant}/tests/main.nf.test | 7 +- .../tests/main.nf.test.snap | 40 +- .../tests/nextflow-intervals.config | 2 +- .../nextflow-non-autosomal-calling.config | 2 +- .../tests/nextflow.config | 2 +- .../deepvariant/rundeepvariant/tests/tags.yml | 2 + modules/nf-core/deepvariant/tests/tags.yml | 2 - modules/nf-core/fastqc/environment.yml | 2 - modules/nf-core/fastqc/main.nf | 5 +- modules/nf-core/fastqc/meta.yml | 57 ++- modules/nf-core/fastqc/tests/main.nf.test | 225 +++++--- .../nf-core/fastqc/tests/main.nf.test.snap | 370 ++++++++++++-- modules/nf-core/gawk/environment.yml | 2 - modules/nf-core/gawk/main.nf | 12 +- modules/nf-core/gawk/meta.yml | 57 ++- modules/nf-core/gawk/tests/main.nf.test | 52 +- modules/nf-core/gawk/tests/main.nf.test.snap | 80 ++- modules/nf-core/gfastats/environment.yml | 2 - modules/nf-core/gfastats/meta.yml | 103 ++-- modules/nf-core/glnexus/glnexus.diff | 26 +- modules/nf-core/glnexus/main.nf | 2 +- modules/nf-core/glnexus/meta.yml | 9 + modules/nf-core/glnexus/tests/main.nf.test | 97 ++++ .../nf-core/glnexus/tests/main.nf.test.snap | 101 ++++ modules/nf-core/gunzip/environment.yml | 2 - modules/nf-core/gunzip/meta.yml | 37 +- .../nf-core/minimap2/align/environment.yml | 3 - modules/nf-core/minimap2/align/meta.yml | 115 +++-- .../nf-core/minimap2/index/environment.yml | 2 - modules/nf-core/minimap2/index/meta.yml | 43 +- modules/nf-core/modkit/pileup/environment.yml | 2 - modules/nf-core/modkit/pileup/meta.yml | 120 +++-- modules/nf-core/mosdepth/environment.yml | 2 - modules/nf-core/mosdepth/meta.yml | 214 +++++--- modules/nf-core/mosdepth/tests/main.nf.test | 50 +- modules/nf-core/multiqc/environment.yml | 4 +- modules/nf-core/multiqc/main.nf | 16 +- modules/nf-core/multiqc/meta.yml | 78 +-- modules/nf-core/multiqc/tests/main.nf.test | 8 + .../nf-core/multiqc/tests/main.nf.test.snap | 24 +- modules/nf-core/multiqc/tests/nextflow.config | 5 + modules/nf-core/paraphase/meta.yml | 144 +++--- .../nf-core/samtools/faidx/environment.yml | 10 +- modules/nf-core/samtools/faidx/main.nf | 4 +- modules/nf-core/samtools/faidx/meta.yml | 85 ++-- .../samtools/faidx/tests/main.nf.test.snap | 50 +- .../nf-core/samtools/fastq/environment.yml | 8 +- modules/nf-core/samtools/fastq/main.nf | 4 +- modules/nf-core/samtools/fastq/meta.yml | 90 ++-- .../samtools/fastq/tests/main.nf.test.snap | 16 +- .../nf-core/samtools/import/environment.yml | 8 +- modules/nf-core/samtools/import/main.nf | 4 +- modules/nf-core/samtools/import/meta.yml | 70 ++- .../samtools/import/tests/main.nf.test | 8 +- .../nf-core/samtools/index/environment.yml | 8 +- modules/nf-core/samtools/index/main.nf | 4 +- modules/nf-core/samtools/index/meta.yml | 68 ++- .../samtools/index/tests/main.nf.test.snap | 46 +- modules/nf-core/samtools/merge/main.nf | 26 +- .../samtools/merge/samtools-merge.diff | 51 +- modules/nf-core/samtools/sort/environment.yml | 8 +- modules/nf-core/samtools/sort/main.nf | 15 +- modules/nf-core/samtools/sort/meta.yml | 99 ++-- .../nf-core/samtools/sort/samtools-sort.diff | 22 + .../nf-core/samtools/sort/tests/main.nf.test | 64 +++ .../samtools/sort/tests/main.nf.test.snap | 125 ++++- modules/nf-core/samtools/view/environment.yml | 8 +- modules/nf-core/samtools/view/main.nf | 4 +- modules/nf-core/samtools/view/meta.yml | 163 +++--- .../samtools/view/tests/main.nf.test.snap | 66 ++- modules/nf-core/severus/meta.yml | 269 ++++++---- modules/nf-core/severus/tests/main.nf.test | 3 +- .../nf-core/severus/tests/main.nf.test.snap | 18 +- modules/nf-core/sniffles/environment.yml | 4 +- modules/nf-core/sniffles/meta.yml | 119 +++-- modules/nf-core/sniffles/sniffles.diff | 133 ++--- modules/nf-core/sniffles/tests/main.nf.test | 286 +++++++++++ .../nf-core/sniffles/tests/main.nf.test.snap | 481 ++++++++++++++++++ .../nf-core/sniffles/tests/nextflow.config | 5 + modules/nf-core/sniffles/tests/tags.yml | 2 + .../nf-core/somalier/extract/environment.yml | 2 - modules/nf-core/somalier/extract/meta.yml | 109 ++-- .../somalier/extract/somalier-extract.diff | 10 +- .../nf-core/somalier/relate/environment.yml | 2 - modules/nf-core/somalier/relate/meta.yml | 85 ++-- .../somalier/relate/somalier-relate.diff | 10 +- modules/nf-core/splitubam/environment.yml | 2 - modules/nf-core/splitubam/meta.yml | 48 +- modules/nf-core/stranger/environment.yml | 4 +- modules/nf-core/stranger/main.nf | 4 +- modules/nf-core/stranger/meta.yml | 66 +-- modules/nf-core/stranger/tests/main.nf.test | 2 +- .../nf-core/stranger/tests/main.nf.test.snap | 20 +- .../nf-core/stranger/tests/nextflow.config | 8 +- modules/nf-core/svdb/merge/main.nf | 2 +- modules/nf-core/svdb/query/environment.yml | 2 +- modules/nf-core/svdb/query/main.nf | 4 +- .../svdb/query/tests/main.nf.test.snap | 25 +- modules/nf-core/tabix/bgzip/environment.yml | 5 +- modules/nf-core/tabix/bgzip/meta.yml | 53 +- .../nf-core/tabix/bgziptabix/environment.yml | 5 +- modules/nf-core/tabix/bgziptabix/main.nf | 5 +- modules/nf-core/tabix/bgziptabix/meta.yml | 70 +-- .../tabix/bgziptabix/tests/main.nf.test | 29 ++ .../tabix/bgziptabix/tests/main.nf.test.snap | 73 ++- modules/nf-core/tabix/tabix/environment.yml | 3 - modules/nf-core/tabix/tabix/meta.yml | 55 +- .../annotate_svs/tests/main.nf.test.snap | 8 +- .../local/call_cnvs/tests/main.nf.test | 12 +- .../local/call_cnvs/tests/nextflow.config | 2 +- .../tests/main.nf.test.snap | 24 +- .../local/methylation/tests/nextflow.config | 2 +- .../local/rank_variants/tests/nextflow.config | 2 +- .../local/short_variant_calling/main.nf | 12 +- .../tests/main.nf.test.snap | 128 ++--- .../tests/nextflow.config | 2 +- .../snv_annotation/tests/nextflow.config | 2 +- .../nf-core/utils_nextflow_pipeline/main.nf | 30 +- .../tests/main.workflow.nf.test | 10 +- .../utils_nfschema_plugin/tests/main.nf.test | 4 +- tests/.nftignore | 6 + tests/samplesheet.nf.test.snap | 152 +++++- .../samplesheet_multisample_bam.nf.test.snap | 163 +++++- ...mplesheet_multisample_ont_bam.nf.test.snap | 155 +++++- workflows/nallo.nf | 8 +- 170 files changed, 5512 insertions(+), 2776 deletions(-) delete mode 100644 modules/nf-core/bcftools/reheader/bcftools-reheader.diff delete mode 100644 modules/nf-core/deepvariant/README.md delete mode 100644 modules/nf-core/deepvariant/meta.yml rename modules/nf-core/deepvariant/{ => rundeepvariant}/main.nf (98%) create mode 100644 modules/nf-core/deepvariant/rundeepvariant/meta.yml rename modules/nf-core/deepvariant/{ => rundeepvariant}/tests/main.nf.test (97%) rename modules/nf-core/deepvariant/{ => rundeepvariant}/tests/main.nf.test.snap (91%) rename modules/nf-core/deepvariant/{ => rundeepvariant}/tests/nextflow-intervals.config (70%) rename modules/nf-core/deepvariant/{ => rundeepvariant}/tests/nextflow-non-autosomal-calling.config (74%) rename modules/nf-core/deepvariant/{ => rundeepvariant}/tests/nextflow.config (75%) create mode 100644 modules/nf-core/deepvariant/rundeepvariant/tests/tags.yml delete mode 100644 modules/nf-core/deepvariant/tests/tags.yml create mode 100644 modules/nf-core/glnexus/tests/main.nf.test create mode 100644 modules/nf-core/glnexus/tests/main.nf.test.snap create mode 100644 modules/nf-core/multiqc/tests/nextflow.config create mode 100644 modules/nf-core/samtools/sort/samtools-sort.diff create mode 100644 modules/nf-core/sniffles/tests/main.nf.test create mode 100644 modules/nf-core/sniffles/tests/main.nf.test.snap create mode 100644 modules/nf-core/sniffles/tests/nextflow.config create mode 100644 modules/nf-core/sniffles/tests/tags.yml diff --git a/CHANGELOG.md b/CHANGELOG.md index 7a2f87f2..7cecf923 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -127,16 +127,21 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Module updates -| Tool | Old version | New version | -| ---------- | ----------- | ----------- | -| fqcrs | 0.1.0 | -| severus | | 1.1 | -| longphase  |   | 1.7.3   | -| genmod | 3.8.2 | 3.9 | -| WhatsHap | 2.2 | 2.3 | -| SVDB | | 2.8.1 | -| hifiasm | 0.19.8 | 0.20.0 | -| HiFiCNV | 0.1.7 | 1.0.0 | +| Tool | Old version | New version | +| -------------- | ----------- | ----------- | +| fqcrs | 0.1.0 | +| severus | | 1.1 | +| longphase  |   | 1.7.3   | +| genmod | 3.8.2 | 3.9 | +| WhatsHap | 2.2 | 2.3 | +| SVDB | | 2.8.1 | +| hifiasm | 0.19.8 | 0.20.0 | +| HiFiCNV | 0.1.7 | 1.0.0 | +| samtools/faidx | 1.2 | 1.21 | +| samtools/index | 1.2 | 1.21 | +| samtools/merge | 1.2 | 1.21 | +| stranger | 0.9.1 | 0.9.2 | +| multiqc | 1.21 | 1.25.1 | > [!NOTE] > Version has been updated if both old and new version information is present. diff --git a/conf/modules/short_variant_calling.config b/conf/modules/short_variant_calling.config index c53793c5..1975d044 100644 --- a/conf/modules/short_variant_calling.config +++ b/conf/modules/short_variant_calling.config @@ -34,7 +34,7 @@ process { } - withName: '.*:SHORT_VARIANT_CALLING:DEEPVARIANT' { + withName: '.*:SHORT_VARIANT_CALLING:DEEPVARIANT_RUNDEEPVARIANT' { ext.prefix = { intervals ? "${meta.id}_${intervals}_deepvariant" : "${meta.id}_deepvariant" } ext.args = { [ "--sample_name=${meta.id}", diff --git a/modules.json b/modules.json index 9ca51cbb..47a9ac33 100644 --- a/modules.json +++ b/modules.json @@ -7,62 +7,63 @@ "nf-core": { "bcftools/annotate": { "branch": "master", - "git_sha": "682f789f93070bd047868300dd018faf3d434e7c", - "installed_by": ["modules"] + "git_sha": "cb08035150685b11d890d90c9534d4f16869eaec", + "installed_by": ["modules"], + "patch": "modules/nf-core/bcftools/annotate/bcftools-annotate.diff" }, "bcftools/concat": { "branch": "master", - "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", + "git_sha": "d1e0ec7670fa77905a378627232566ce54c3c26d", "installed_by": ["modules"] }, "bcftools/merge": { "branch": "master", - "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] }, "bcftools/norm": { "branch": "master", - "git_sha": "33ef773a7ea36e88323902f63662aa53c9b88988", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] }, "bcftools/pluginsplit": { "branch": "master", - "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] }, "bcftools/query": { "branch": "master", - "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] }, "bcftools/reheader": { "branch": "master", - "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] }, "bcftools/sort": { "branch": "master", - "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] }, "bcftools/stats": { "branch": "master", - "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] }, "bcftools/view": { "branch": "master", - "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] }, "bedtools/merge": { "branch": "master", - "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] }, "bedtools/sort": { "branch": "master", - "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] }, "cadd": { @@ -73,12 +74,12 @@ }, "cat/fastq": { "branch": "master", - "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", + "git_sha": "a1abf90966a2a4016d3c3e41e228bfcbd4811ccc", "installed_by": ["modules"] }, - "deepvariant": { + "deepvariant/rundeepvariant": { "branch": "master", - "git_sha": "a7e8b8afd4fa82f20d745fa778bfdbf39c1f7efb", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] }, "deepvariant/vcfstatsreport": { @@ -94,12 +95,12 @@ }, "fastqc": { "branch": "master", - "git_sha": "46eca555142d6e597729fcb682adcc791796f514", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] }, "gawk": { "branch": "master", - "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", + "git_sha": "97321eded31a12598837a476d3615300af413bb7", "installed_by": ["modules"] }, "genmod/annotate": { @@ -124,18 +125,18 @@ }, "gfastats": { "branch": "master", - "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] }, "glnexus": { "branch": "master", - "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", + "git_sha": "bcf36bc95e3e5605e9859b8e9a49648841e04fe8", "installed_by": ["modules"], "patch": "modules/nf-core/glnexus/glnexus.diff" }, "gunzip": { "branch": "master", - "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] }, "hifiasm": { @@ -155,122 +156,127 @@ }, "minimap2/align": { "branch": "master", - "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] }, "minimap2/index": { "branch": "master", - "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] }, "modkit/pileup": { "branch": "master", - "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] }, "mosdepth": { "branch": "master", - "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] }, "multiqc": { "branch": "master", - "git_sha": "b7ebe95761cd389603f9cc0e0dc384c0f663815a", + "git_sha": "cf17ca47590cc578dfb47db1c2a44ef86f89976d", "installed_by": ["modules"] }, "paraphase": { "branch": "master", - "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] }, "samtools/faidx": { "branch": "master", - "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", + "git_sha": "b13f07be4c508d6ff6312d354d09f2493243e208", "installed_by": ["modules"] }, "samtools/fastq": { "branch": "master", - "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", + "git_sha": "b13f07be4c508d6ff6312d354d09f2493243e208", "installed_by": ["modules"] }, "samtools/import": { "branch": "master", - "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", + "git_sha": "b13f07be4c508d6ff6312d354d09f2493243e208", "installed_by": ["modules"] }, "samtools/index": { "branch": "master", - "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", + "git_sha": "b13f07be4c508d6ff6312d354d09f2493243e208", "installed_by": ["modules"] }, "samtools/merge": { "branch": "master", - "git_sha": "e9bc33485e420b51cfbed3cf63ac7463cd5739d3", - "installed_by": ["modules"] + "git_sha": "b13f07be4c508d6ff6312d354d09f2493243e208", + "installed_by": ["modules"], + "patch": "modules/nf-core/samtools/merge/samtools-merge.diff" }, "samtools/sort": { "branch": "master", - "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", - "installed_by": ["modules"] + "git_sha": "b7800db9b069ed505db3f9d91b8c72faea9be17b", + "installed_by": ["modules"], + "patch": "modules/nf-core/samtools/sort/samtools-sort.diff" }, "samtools/view": { "branch": "master", - "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", + "git_sha": "b13f07be4c508d6ff6312d354d09f2493243e208", "installed_by": ["modules"] }, "severus": { "branch": "master", - "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", + "git_sha": "8a36181859504560ef333c299f6773c7b99a801f", "installed_by": ["modules"] }, "sniffles": { "branch": "master", - "git_sha": "b50aa17b1b604c7b3cfe58a2472d1e7b990ae8bf", - "installed_by": ["modules"] + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", + "installed_by": ["modules"], + "patch": "modules/nf-core/sniffles/sniffles.diff" }, "somalier/extract": { "branch": "master", - "git_sha": "f62e4cf5f0ae77dad62027ba2a9f475192f5b123", - "installed_by": ["modules"] + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", + "installed_by": ["modules"], + "patch": "modules/nf-core/somalier/extract/somalier-extract.diff" }, "somalier/relate": { "branch": "master", - "git_sha": "d8ba32c6b54a01f8efa7b51a1f3978f003f8873b", - "installed_by": ["modules"] + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", + "installed_by": ["modules"], + "patch": "modules/nf-core/somalier/relate/somalier-relate.diff" }, "splitubam": { "branch": "master", - "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] }, "stranger": { "branch": "master", - "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", + "git_sha": "26cdbf29e76695c7fd85e42e0015c7e96f979fe9", "installed_by": ["modules"] }, "svdb/merge": { "branch": "master", - "git_sha": "4ac2ef5c1ceba6bb28a73033802643093fe923b3", + "git_sha": "a8ad84b7ee0cda0b001490e95d9ed277e687e368", "installed_by": ["modules"] }, "svdb/query": { "branch": "master", - "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", + "git_sha": "eb2c3f7ee2c938ab1a49764bdb1319adaa35492c", "installed_by": ["modules"] }, "tabix/bgzip": { "branch": "master", - "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] }, "tabix/bgziptabix": { "branch": "master", - "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", + "git_sha": "f448e846bdadd80fc8be31fbbc78d9f5b5131a45", "installed_by": ["modules"] }, "tabix/tabix": { "branch": "master", - "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] }, "untar": { @@ -285,7 +291,7 @@ "nf-core": { "utils_nextflow_pipeline": { "branch": "master", - "git_sha": "9d05360da397692321d377b6102d2fb22507c6ef", + "git_sha": "56372688d8979092cafbe0c5c3895b491166ca1c", "installed_by": ["subworkflows"] }, "utils_nfcore_pipeline": { @@ -295,7 +301,7 @@ }, "utils_nfschema_plugin": { "branch": "master", - "git_sha": "bbd5a41f4535a8defafe6080e00ea74c45f4f96c", + "git_sha": "2fd2cd6d0e7b273747f32e465fdc6bcc3ae0814e", "installed_by": ["subworkflows"] } } diff --git a/modules/local/create_pedigree_file/tests/main.nf.test.snap b/modules/local/create_pedigree_file/tests/main.nf.test.snap index 9cc396b3..38ecf6ba 100644 --- a/modules/local/create_pedigree_file/tests/main.nf.test.snap +++ b/modules/local/create_pedigree_file/tests/main.nf.test.snap @@ -6,14 +6,14 @@ "family\tHG002.Revio\t0\t0\t0\t2" ], [ - "versions.yml:md5,c0d2b2d33f1c465351d65e149ae88f0c" + "versions.yml:md5,fb643cd2fc69cab285a7f0061ad223d8" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.3" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-09-12T10:24:34.60478278" + "timestamp": "2024-11-04T16:16:12.293913485" }, "create_pedigree_file - multiple samples": { "content": [ @@ -25,13 +25,13 @@ "FAM2\tHG002_Revio_AB\t0\t0\t0\t1" ], [ - "versions.yml:md5,c0d2b2d33f1c465351d65e149ae88f0c" + "versions.yml:md5,fb643cd2fc69cab285a7f0061ad223d8" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.3" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-09-12T10:40:54.71628575" + "timestamp": "2024-11-04T16:16:19.916570689" } } \ No newline at end of file diff --git a/modules/nf-core/bcftools/annotate/bcftools-annotate.diff b/modules/nf-core/bcftools/annotate/bcftools-annotate.diff index 391089ff..8d3f5541 100644 --- a/modules/nf-core/bcftools/annotate/bcftools-annotate.diff +++ b/modules/nf-core/bcftools/annotate/bcftools-annotate.diff @@ -1,33 +1,17 @@ Changes in module 'nf-core/bcftools/annotate' ---- modules/nf-core/bcftools/annotate/meta.yml -+++ modules/nf-core/bcftools/annotate/meta.yml -@@ -34,6 +34,9 @@ - - header_lines: - type: file - description: Contains lines to append to the output VCF header -+ - rename_chrs: -+ type: file -+ description: Contains new and old chromosome names - output: - - meta: - type: map - +'modules/nf-core/bcftools/annotate/meta.yml' is unchanged +Changes in 'bcftools/annotate/main.nf': --- modules/nf-core/bcftools/annotate/main.nf +++ modules/nf-core/bcftools/annotate/main.nf -@@ -8,10 +8,9 @@ - 'biocontainers/bcftools:1.20--h8b25389_0' }" - +@@ -10,6 +10,7 @@ input: -- tuple val(meta), path(input), path(index) -- path(annotations) -- path(annotations_index) -+ tuple val(meta), path(input), path(index), path(annotations), path(annotations_index) + tuple val(meta), path(input), path(index), path(annotations), path(annotations_index) path(header_lines) + path(rename_chrs) output: tuple val(meta), path("*.{vcf,vcf.gz,bcf,bcf.gz}"), emit: vcf -@@ -27,6 +26,7 @@ +@@ -25,6 +26,7 @@ def prefix = task.ext.prefix ?: "${meta.id}" def header_file = header_lines ? "--header-lines ${header_lines}" : '' def annotations_file = annotations ? "--annotations ${annotations}" : '' @@ -35,13 +19,22 @@ Changes in module 'nf-core/bcftools/annotate' def extension = args.contains("--output-type b") || args.contains("-Ob") ? "bcf.gz" : args.contains("--output-type u") || args.contains("-Ou") ? "bcf" : args.contains("--output-type z") || args.contains("-Oz") ? "vcf.gz" : -@@ -43,6 +43,7 @@ +@@ -40,6 +42,7 @@ + annotate \\ $args \\ $annotations_file \\ - $header_file \\ + $rename_chrs_file \\ + $header_file \\ --output ${prefix}.${extension} \\ --threads $task.cpus \\ - $input +'modules/nf-core/bcftools/annotate/environment.yml' is unchanged +'modules/nf-core/bcftools/annotate/tests/tags.yml' is unchanged +'modules/nf-core/bcftools/annotate/tests/vcf_gz_index.config' is unchanged +'modules/nf-core/bcftools/annotate/tests/main.nf.test.snap' is unchanged +'modules/nf-core/bcftools/annotate/tests/bcf.config' is unchanged +'modules/nf-core/bcftools/annotate/tests/main.nf.test' is unchanged +'modules/nf-core/bcftools/annotate/tests/vcf_gz_index_tbi.config' is unchanged +'modules/nf-core/bcftools/annotate/tests/vcf.config' is unchanged +'modules/nf-core/bcftools/annotate/tests/vcf_gz_index_csi.config' is unchanged ************************************************************ diff --git a/modules/nf-core/bcftools/annotate/environment.yml b/modules/nf-core/bcftools/annotate/environment.yml index 3d4e3379..5c00b116 100644 --- a/modules/nf-core/bcftools/annotate/environment.yml +++ b/modules/nf-core/bcftools/annotate/environment.yml @@ -1,7 +1,5 @@ -name: bcftools_annotate channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bcftools=1.20 diff --git a/modules/nf-core/bcftools/annotate/main.nf b/modules/nf-core/bcftools/annotate/main.nf index 06eb6d34..b6b73309 100644 --- a/modules/nf-core/bcftools/annotate/main.nf +++ b/modules/nf-core/bcftools/annotate/main.nf @@ -42,8 +42,8 @@ process BCFTOOLS_ANNOTATE { annotate \\ $args \\ $annotations_file \\ - $header_file \\ $rename_chrs_file \\ + $header_file \\ --output ${prefix}.${extension} \\ --threads $task.cpus \\ $input @@ -62,12 +62,12 @@ process BCFTOOLS_ANNOTATE { args.contains("--output-type z") || args.contains("-Oz") ? "vcf.gz" : args.contains("--output-type v") || args.contains("-Ov") ? "vcf" : "vcf" - def index = args.contains("--write-index=tbi") || args.contains("-W=tbi") ? "tbi" : - args.contains("--write-index=csi") || args.contains("-W=csi") ? "csi" : - args.contains("--write-index") || args.contains("-W") ? "csi" : - "" + def index_extension = args.contains("--write-index=tbi") || args.contains("-W=tbi") ? "tbi" : + args.contains("--write-index=csi") || args.contains("-W=csi") ? "csi" : + args.contains("--write-index") || args.contains("-W") ? "csi" : + "" def create_cmd = extension.endsWith(".gz") ? "echo '' | gzip >" : "touch" - def create_index = extension.endsWith(".gz") && index.matches("csi|tbi") ? "touch ${prefix}.${extension}.${index}" : "" + def create_index = extension.endsWith(".gz") && index_extension.matches("csi|tbi") ? "touch ${prefix}.${extension}.${index_extension}" : "" """ ${create_cmd} ${prefix}.${extension} diff --git a/modules/nf-core/bcftools/annotate/meta.yml b/modules/nf-core/bcftools/annotate/meta.yml index 78f806a4..5bfccd2b 100644 --- a/modules/nf-core/bcftools/annotate/meta.yml +++ b/modules/nf-core/bcftools/annotate/meta.yml @@ -13,52 +13,64 @@ tools: documentation: https://samtools.github.io/bcftools/bcftools.html#annotate doi: 10.1093/bioinformatics/btp352 licence: ["MIT"] + identifier: biotools:bcftools input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - input: - type: file - description: Query VCF or BCF file, can be either uncompressed or compressed - - index: - type: file - description: Index of the query VCF or BCF file - - annotations: - type: file - description: Bgzip-compressed file with annotations - - annotations_index: - type: file - description: Index of the annotations file - - header_lines: - type: file - description: Contains lines to append to the output VCF header - - rename_chrs: - type: file - description: Contains new and old chromosome names + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - input: + type: file + description: Query VCF or BCF file, can be either uncompressed or compressed + - index: + type: file + description: Index of the query VCF or BCF file + - annotations: + type: file + description: Bgzip-compressed file with annotations + - annotations_index: + type: file + description: Index of the annotations file + - - header_lines: + type: file + description: Contains lines to append to the output VCF header output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - vcf: - type: file - description: Compressed annotated VCF file - pattern: "*{vcf,vcf.gz,bcf,bcf.gz}" - - csi: - type: file - description: Default VCF file index - pattern: "*.csi" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.{vcf,vcf.gz,bcf,bcf.gz}": + type: file + description: Compressed annotated VCF file + pattern: "*{vcf,vcf.gz,bcf,bcf.gz}" - tbi: - type: file - description: Alternative VCF file index - pattern: "*.tbi" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.tbi": + type: file + description: Alternative VCF file index + pattern: "*.tbi" + - csi: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.csi": + type: file + description: Default VCF file index + pattern: "*.csi" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@projectoriented" - "@ramprasadn" diff --git a/modules/nf-core/bcftools/annotate/tests/main.nf.test b/modules/nf-core/bcftools/annotate/tests/main.nf.test index 8cd87abc..3a5c4933 100644 --- a/modules/nf-core/bcftools/annotate/tests/main.nf.test +++ b/modules/nf-core/bcftools/annotate/tests/main.nf.test @@ -9,20 +9,21 @@ nextflow_process { tag "bcftools" tag "bcftools/annotate" - test("sarscov2 - [vcf, tbi] annotation, annotation_tbi, [] - vcf_output") { + test("sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - vcf_output") { config "./vcf.config" when { process { """ - input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_vcf_gz_tbi'], checkIfExists: true)] - - input[1] = file(params.test_data['sarscov2']['illumina']['test2_vcf_gz'], checkIfExists: true) - input[2] = file(params.test_data['sarscov2']['illumina']['test2_vcf_gz_tbi'], checkIfExists: true) - input[3] = [] + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true) + ] + input[1] = [] """ } } @@ -39,20 +40,21 @@ nextflow_process { } - test("sarscov2 - [vcf, []] annotation, annotation_tbi, [] - vcf_output") { + test("sarscov2 - [vcf, [], annotation, annotation_tbi], [] - vcf_output") { config "./vcf.config" when { process { """ - input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), - []] - - input[1] = file(params.test_data['sarscov2']['illumina']['test2_vcf_gz'], checkIfExists: true) - input[2] = file(params.test_data['sarscov2']['illumina']['test2_vcf_gz_tbi'], checkIfExists: true) - input[3] = [] + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + [], + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true) + ] + input[1] = [] """ } } @@ -68,20 +70,21 @@ nextflow_process { } } - test("sarscov2 - [vcf, tbi], annotation, annotation_tbi, [] - vcf_gz_index") { + test("sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - vcf_gz_index") { config "./vcf_gz_index.config" when { process { """ - input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_vcf_gz_tbi'], checkIfExists: true)] - - input[1] = file(params.test_data['sarscov2']['illumina']['test2_vcf_gz'], checkIfExists: true) - input[2] = file(params.test_data['sarscov2']['illumina']['test2_vcf_gz_tbi'], checkIfExists: true) - input[3] = [] + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true) + ] + input[1] = [] """ } } @@ -101,20 +104,21 @@ nextflow_process { } - test("sarscov2 - [vcf, tbi], annotation, annotation_tbi, [] - vcf_gz_index_csi") { + test("sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - vcf_gz_index_csi") { config "./vcf_gz_index_csi.config" when { process { """ - input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_vcf_gz_tbi'], checkIfExists: true)] - - input[1] = file(params.test_data['sarscov2']['illumina']['test2_vcf_gz'], checkIfExists: true) - input[2] = file(params.test_data['sarscov2']['illumina']['test2_vcf_gz_tbi'], checkIfExists: true) - input[3] = [] + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true) + ] + input[1] = [] """ } } @@ -134,20 +138,21 @@ nextflow_process { } - test("sarscov2 - [vcf, tbi], annotation, annotation_tbi, [] - vcf_gz_index_tbi") { + test("sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - vcf_gz_index_tbi") { config "./vcf_gz_index_tbi.config" when { process { """ - input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_vcf_gz_tbi'], checkIfExists: true)] - - input[1] = file(params.test_data['sarscov2']['illumina']['test2_vcf_gz'], checkIfExists: true) - input[2] = file(params.test_data['sarscov2']['illumina']['test2_vcf_gz_tbi'], checkIfExists: true) - input[3] = [] + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true) + ] + input[1] = [] """ } } @@ -166,20 +171,21 @@ nextflow_process { } } - test("sarscov2 - [vcf, []], annotation, annotation_tbi, header - bcf_output") { + test("sarscov2 - [vcf, [], annotation, annotation_tbi], header - bcf_output") { config "./bcf.config" when { process { """ - input[0] = Channel.of([ [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), - []]) - - input[1] = file(params.test_data['sarscov2']['illumina']['test2_vcf_gz'], checkIfExists: true) - input[2] = file(params.test_data['sarscov2']['illumina']['test2_vcf_gz_tbi'], checkIfExists: true) - input[3] = Channel.of( + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + [], + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true) + ] + input[1] = Channel.of( '##INFO=', '##INFO=' ).collectFile(name:"headers.vcf", newLine:true) @@ -199,7 +205,7 @@ nextflow_process { } - test("sarscov2 - [vcf, tbi] annotation, annotation_tbi, [] - stub") { + test("sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - stub") { config "./vcf.config" options "-stub" @@ -207,13 +213,14 @@ nextflow_process { when { process { """ - input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_vcf_gz_tbi'], checkIfExists: true)] - - input[1] = file(params.test_data['sarscov2']['illumina']['test2_vcf_gz'], checkIfExists: true) - input[2] = file(params.test_data['sarscov2']['illumina']['test2_vcf_gz_tbi'], checkIfExists: true) - input[3] = [] + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true) + ] + input[1] = [] """ } } @@ -227,7 +234,7 @@ nextflow_process { } - test("sarscov2 - [vcf, tbi] annotation, annotation_tbi, [] - vcf_gz_index - stub") { + test("sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - vcf_gz_index - stub") { config "./vcf_gz_index.config" options "-stub" @@ -235,13 +242,14 @@ nextflow_process { when { process { """ - input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_vcf_gz_tbi'], checkIfExists: true)] - - input[1] = file(params.test_data['sarscov2']['illumina']['test2_vcf_gz'], checkIfExists: true) - input[2] = file(params.test_data['sarscov2']['illumina']['test2_vcf_gz_tbi'], checkIfExists: true) - input[3] = [] + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true) + ] + input[1] = [] """ } } @@ -256,7 +264,7 @@ nextflow_process { } - test("sarscov2 - [vcf, tbi] annotation, annotation_tbi, [] - vcf_gz_index_csi - stub") { + test("sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - vcf_gz_index_csi - stub") { config "./vcf_gz_index_csi.config" options "-stub" @@ -264,13 +272,14 @@ nextflow_process { when { process { """ - input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_vcf_gz_tbi'], checkIfExists: true)] - - input[1] = file(params.test_data['sarscov2']['illumina']['test2_vcf_gz'], checkIfExists: true) - input[2] = file(params.test_data['sarscov2']['illumina']['test2_vcf_gz_tbi'], checkIfExists: true) - input[3] = [] + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true) + ] + input[1] = [] """ } } @@ -285,7 +294,7 @@ nextflow_process { } - test("sarscov2 - [vcf, tbi] annotation, annotation_tbi, [] - vcf_gz_index_tbi - stub") { + test("sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - vcf_gz_index_tbi - stub") { config "./vcf_gz_index_tbi.config" options "-stub" @@ -293,13 +302,14 @@ nextflow_process { when { process { """ - input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_vcf_gz_tbi'], checkIfExists: true)] - - input[1] = file(params.test_data['sarscov2']['illumina']['test2_vcf_gz'], checkIfExists: true) - input[2] = file(params.test_data['sarscov2']['illumina']['test2_vcf_gz_tbi'], checkIfExists: true) - input[3] = [] + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true) + ] + input[1] = [] """ } } diff --git a/modules/nf-core/bcftools/annotate/tests/main.nf.test.snap b/modules/nf-core/bcftools/annotate/tests/main.nf.test.snap index 8fd8d11d..bac2224a 100644 --- a/modules/nf-core/bcftools/annotate/tests/main.nf.test.snap +++ b/modules/nf-core/bcftools/annotate/tests/main.nf.test.snap @@ -1,38 +1,5 @@ { - "sarscov2 - [vcf, tbi], annotation, annotation_tbi, [] - vcf_gz_index_tbi": { - "content": [ - [ - [ - { - "id": "test", - "single_end": false - }, - "test_vcf.vcf.gz" - ] - ], - [ - [ - { - "id": "test", - "single_end": false - }, - "test_vcf.vcf.gz.tbi" - ] - ], - [ - - ], - [ - "versions.yml:md5,ea53f98610d42597cf384ff1fa3eb204" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-06-12T16:39:23.802873" - }, - "sarscov2 - [vcf, []] annotation, annotation_tbi, [] - vcf_output": { + "bcf": { "content": [ [ [ @@ -40,7 +7,7 @@ "id": "test", "single_end": false }, - "test_vcf.vcf.gz" + "test_ann.bcf" ] ], [ @@ -51,9 +18,9 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-12T16:38:57.039285" + "timestamp": "2024-06-12T16:39:33.331888" }, - "sarscov2 - [vcf, tbi], annotation, annotation_tbi, [] - vcf_gz_index_csi": { + "sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - vcf_gz_index": { "content": [ [ [ @@ -84,9 +51,9 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-12T16:39:15.152697" + "timestamp": "2024-08-15T10:07:59.658031137" }, - "sarscov2 - [vcf, tbi] annotation, annotation_tbi, [] - stub": { + "sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - vcf_gz_index_csi - stub": { "content": [ { "0": [ @@ -102,13 +69,25 @@ ], "2": [ - + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] ], "3": [ "versions.yml:md5,ea53f98610d42597cf384ff1fa3eb204" ], "csi": [ - + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] ], "tbi": [ @@ -131,9 +110,9 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-12T16:39:41.994785" + "timestamp": "2024-08-15T10:09:05.096883418" }, - "bcf": { + "sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - vcf_gz_index_csi": { "content": [ [ [ @@ -141,7 +120,19 @@ "id": "test", "single_end": false }, - "test_ann.bcf" + "test_vcf.vcf.gz" + ] + ], + [ + + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz.csi" ] ], [ @@ -152,9 +143,9 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-12T16:39:33.331888" + "timestamp": "2024-08-15T10:08:10.581301219" }, - "sarscov2 - [vcf, tbi] annotation, annotation_tbi, [] - vcf_gz_index_tbi - stub": { + "sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - stub": { "content": [ { "0": [ @@ -167,13 +158,7 @@ ] ], "1": [ - [ - { - "id": "test", - "single_end": false - }, - "test_vcf.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + ], "2": [ @@ -185,13 +170,7 @@ ], "tbi": [ - [ - { - "id": "test", - "single_end": false - }, - "test_vcf.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + ], "vcf": [ [ @@ -211,9 +190,9 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-12T16:40:13.835994" + "timestamp": "2024-08-15T10:08:43.975017625" }, - "sarscov2 - [vcf, tbi] annotation, annotation_tbi, [] - vcf_output": { + "sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - vcf_gz_index_tbi": { "content": [ [ [ @@ -223,6 +202,18 @@ }, "test_vcf.vcf.gz" ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz.tbi" + ] + ], + [ + ], [ "versions.yml:md5,ea53f98610d42597cf384ff1fa3eb204" @@ -232,9 +223,9 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-12T16:38:48.368629" + "timestamp": "2024-08-15T10:08:21.354059092" }, - "sarscov2 - [vcf, tbi], annotation, annotation_tbi, [] - vcf_gz_index": { + "sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - vcf_output": { "content": [ [ [ @@ -246,15 +237,24 @@ ] ], [ - - ], + "versions.yml:md5,ea53f98610d42597cf384ff1fa3eb204" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-08-15T10:07:37.788393317" + }, + "sarscov2 - [vcf, [], annotation, annotation_tbi], [] - vcf_output": { + "content": [ [ [ { "id": "test", "single_end": false }, - "test_vcf.vcf.gz.csi" + "test_vcf.vcf.gz" ] ], [ @@ -265,9 +265,9 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-12T16:39:05.608108" + "timestamp": "2024-08-15T10:07:48.500746325" }, - "sarscov2 - [vcf, tbi] annotation, annotation_tbi, [] - vcf_gz_index - stub": { + "sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - vcf_gz_index_tbi - stub": { "content": [ { "0": [ @@ -280,31 +280,31 @@ ] ], "1": [ - - ], - "2": [ [ { "id": "test", "single_end": false }, - "test_vcf.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + "test_vcf.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ] + ], + "2": [ + ], "3": [ "versions.yml:md5,ea53f98610d42597cf384ff1fa3eb204" ], "csi": [ + + ], + "tbi": [ [ { "id": "test", "single_end": false }, - "test_vcf.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + "test_vcf.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ] - ], - "tbi": [ - ], "vcf": [ [ @@ -324,9 +324,9 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-12T16:39:54.842082" + "timestamp": "2024-08-15T10:09:16.094918834" }, - "sarscov2 - [vcf, tbi] annotation, annotation_tbi, [] - vcf_gz_index_csi - stub": { + "sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - vcf_gz_index - stub": { "content": [ { "0": [ @@ -383,6 +383,6 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-12T16:40:04.074052" + "timestamp": "2024-08-15T10:08:54.366358502" } } \ No newline at end of file diff --git a/modules/nf-core/bcftools/concat/environment.yml b/modules/nf-core/bcftools/concat/environment.yml index 6544e949..5c00b116 100644 --- a/modules/nf-core/bcftools/concat/environment.yml +++ b/modules/nf-core/bcftools/concat/environment.yml @@ -1,7 +1,5 @@ -name: bcftools_concat channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bcftools=1.20 diff --git a/modules/nf-core/bcftools/concat/main.nf b/modules/nf-core/bcftools/concat/main.nf index e2337eff..a94b28d8 100644 --- a/modules/nf-core/bcftools/concat/main.nf +++ b/modules/nf-core/bcftools/concat/main.nf @@ -11,18 +11,22 @@ process BCFTOOLS_CONCAT { tuple val(meta), path(vcfs), path(tbi) output: - tuple val(meta), path("*.gz") , emit: vcf - tuple val(meta), path("*.tbi"), emit: tbi, optional: true - tuple val(meta), path("*.csi"), emit: csi, optional: true - path "versions.yml" , emit: versions + tuple val(meta), path("${prefix}.vcf.gz") , emit: vcf + tuple val(meta), path("${prefix}.vcf.gz.tbi"), emit: tbi, optional: true + tuple val(meta), path("${prefix}.vcf.gz.csi"), emit: csi, optional: true + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when script: def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" + prefix = task.ext.prefix ?: "${meta.id}" + def tbi_names = tbi.findAll { file -> !(file instanceof List) }.collect { file -> file.name } + def create_input_index = vcfs.collect { vcf -> tbi_names.contains(vcf.name + ".tbi") ? "" : "tabix ${vcf}" }.join("\n ") """ + ${create_input_index} + bcftools concat \\ --output ${prefix}.vcf.gz \\ $args \\ @@ -37,7 +41,7 @@ process BCFTOOLS_CONCAT { stub: def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" + prefix = task.ext.prefix ?: "${meta.id}" def index = args.contains("--write-index=tbi") || args.contains("-W=tbi") ? "tbi" : args.contains("--write-index=csi") || args.contains("-W=csi") ? "csi" : args.contains("--write-index") || args.contains("-W") ? "csi" : diff --git a/modules/nf-core/bcftools/concat/meta.yml b/modules/nf-core/bcftools/concat/meta.yml index eeeb2071..d2565b28 100644 --- a/modules/nf-core/bcftools/concat/meta.yml +++ b/modules/nf-core/bcftools/concat/meta.yml @@ -13,44 +13,68 @@ tools: documentation: http://www.htslib.org/doc/bcftools.html doi: 10.1093/bioinformatics/btp352 licence: ["MIT"] + identifier: biotools:bcftools input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - vcfs: - type: list - description: | - List containing 2 or more vcf files - e.g. [ 'file1.vcf', 'file2.vcf' ] - - tbi: - type: list - description: | - List containing 2 or more index files (optional) - e.g. [ 'file1.tbi', 'file2.tbi' ] + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - vcfs: + type: list + description: | + List containing 2 or more vcf files + e.g. [ 'file1.vcf', 'file2.vcf' ] + - tbi: + type: list + description: | + List containing 2 or more index files (optional) + e.g. [ 'file1.tbi', 'file2.tbi' ] output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - vcf: - type: file - description: VCF concatenated output file - pattern: "*.{vcf.gz}" - - csi: - type: file - description: Default VCF file index - pattern: "*.csi" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + pattern: "*.{vcf.gz}" + - ${prefix}.vcf.gz: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + pattern: "*.{vcf.gz}" - tbi: - type: file - description: Alternative VCF file index - pattern: "*.tbi" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + pattern: "*.tbi" + - ${prefix}.vcf.gz.tbi: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + pattern: "*.tbi" + - csi: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + pattern: "*.csi" + - ${prefix}.vcf.gz.csi: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + pattern: "*.csi" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@abhi18av" - "@nvnieuwk" diff --git a/modules/nf-core/bcftools/concat/tests/main.nf.test b/modules/nf-core/bcftools/concat/tests/main.nf.test index cea386e3..cb4642b2 100644 --- a/modules/nf-core/bcftools/concat/tests/main.nf.test +++ b/modules/nf-core/bcftools/concat/tests/main.nf.test @@ -10,7 +10,7 @@ nextflow_process { tag "bcftools/concat" - test("sarscov2 - [[vcf1, vcf2], [tbi1, tbi2]]") { + test("homo_sapiens - [[vcf1, vcf2], [tbi1, tbi2]]") { config "./nextflow.config" @@ -41,7 +41,7 @@ nextflow_process { } - test("sarscov2 - [[vcf1, vcf2], [tbi1, tbi2]] - vcf_gz_index") { + test("homo_sapiens - [[vcf1, vcf2], [tbi1, tbi2]] - vcf_gz_index") { config "./vcf_gz_index.config" @@ -78,7 +78,7 @@ nextflow_process { } - test("sarscov2 - [[vcf1, vcf2], [tbi1, tbi2]] - vcf_gz_index_csi") { + test("homo_sapiens - [[vcf1, vcf2], [tbi1, tbi2]] - vcf_gz_index_csi") { config "./vcf_gz_index_csi.config" @@ -115,7 +115,7 @@ nextflow_process { } - test("sarscov2 - [[vcf1, vcf2], [tbi1, tbi2]] - vcf_gz_index_tbi") { + test("homo_sapiens - [[vcf1, vcf2], [tbi1, tbi2]] - vcf_gz_index_tbi") { config "./vcf_gz_index_tbi.config" @@ -153,7 +153,7 @@ nextflow_process { } - test("sarscov2 - [[vcf1, vcf2], []]") { + test("homo_sapiens - [[vcf1, vcf2], []]") { config "./nextflow.config" @@ -181,7 +181,7 @@ nextflow_process { } - test("sarscov2 - [[vcf1, vcf2], [tbi1, tbi2]] - stub") { + test("homo_sapiens - [[vcf1, vcf2], [tbi1, tbi2]] - stub") { config "./nextflow.config" options "-stub" @@ -213,7 +213,7 @@ nextflow_process { } - test("sarscov2 - [[vcf1, vcf2], [tbi1, tbi2]] - vcf_gz_index - stub") { + test("homo_sapiens - [[vcf1, vcf2], [tbi1, tbi2]] - vcf_gz_index - stub") { config "./vcf_gz_index.config" options "-stub" @@ -246,7 +246,7 @@ nextflow_process { } - test("sarscov2 - [[vcf1, vcf2], [tbi1, tbi2]] - vcf_gz_index_csi - stub") { + test("homo_sapiens - [[vcf1, vcf2], [tbi1, tbi2]] - vcf_gz_index_csi - stub") { config "./vcf_gz_index_csi.config" options "-stub" @@ -279,7 +279,7 @@ nextflow_process { } - test("sarscov2 - [[vcf1, vcf2], [tbi1, tbi2]] - vcf_gz_index_tbi - stub") { + test("homo_sapiens - [[vcf1, vcf2], [tbi1, tbi2]] - vcf_gz_index_tbi - stub") { config "./vcf_gz_index_tbi.config" options "-stub" diff --git a/modules/nf-core/bcftools/concat/tests/main.nf.test.snap b/modules/nf-core/bcftools/concat/tests/main.nf.test.snap index 1182854f..09e87cd3 100644 --- a/modules/nf-core/bcftools/concat/tests/main.nf.test.snap +++ b/modules/nf-core/bcftools/concat/tests/main.nf.test.snap @@ -1,5 +1,5 @@ { - "sarscov2 - [[vcf1, vcf2], [tbi1, tbi2]] - vcf_gz_index - stub": { + "homo_sapiens - [[vcf1, vcf2], [tbi1, tbi2]] - vcf_gz_index - stub": { "content": [ { "0": [ @@ -49,12 +49,12 @@ } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-06-05T08:09:13.734103412" + "timestamp": "2024-09-26T11:04:11.178539482" }, - "sarscov2 - [[vcf1, vcf2], []]": { + "homo_sapiens - [[vcf1, vcf2], [tbi1, tbi2]]": { "content": [ { "0": [ @@ -94,12 +94,12 @@ } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-06-04T15:19:09.213249578" + "timestamp": "2024-09-26T11:03:08.765639958" }, - "sarscov2 - [[vcf1, vcf2], [tbi1, tbi2]] - vcf_gz_index": { + "homo_sapiens - [[vcf1, vcf2], [tbi1, tbi2]] - vcf_gz_index": { "content": [ [ [ @@ -125,12 +125,12 @@ ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-06-05T08:08:23.981388325" + "timestamp": "2024-09-26T11:03:21.607274757" }, - "sarscov2 - [[vcf1, vcf2], [tbi1, tbi2]] - vcf_gz_index_csi - stub": { + "homo_sapiens - [[vcf1, vcf2], [tbi1, tbi2]] - vcf_gz_index_tbi - stub": { "content": [ { "0": [ @@ -142,29 +142,29 @@ ] ], "1": [ - - ], - "2": [ [ { "id": "test3" }, - "test3_vcf.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + "test3_vcf.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ] + ], + "2": [ + ], "3": [ "versions.yml:md5,c6e19f105510a46af1c5da9064e2e659" ], "csi": [ + + ], + "tbi": [ [ { "id": "test3" }, - "test3_vcf.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + "test3_vcf.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ] - ], - "tbi": [ - ], "vcf": [ [ @@ -180,12 +180,43 @@ } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-26T11:04:27.332133878" + }, + "homo_sapiens - [[vcf1, vcf2], [tbi1, tbi2]] - vcf_gz_index_csi": { + "content": [ + [ + [ + { + "id": "test3" + }, + "test3_vcf.vcf.gz:md5,5f6796c3ae109a1a5b87353954693f5a" + ] + ], + [ + [ + { + "id": "test3" + }, + "test3_vcf.vcf.gz.csi" + ] + ], + [ + + ], + [ + "versions.yml:md5,c6e19f105510a46af1c5da9064e2e659" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-06-05T14:01:24.419027693" + "timestamp": "2024-09-26T11:03:36.575719606" }, - "sarscov2 - [[vcf1, vcf2], [tbi1, tbi2]]": { + "homo_sapiens - [[vcf1, vcf2], []]": { "content": [ { "0": [ @@ -225,43 +256,12 @@ } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-06-04T15:19:03.597061078" + "timestamp": "2024-09-26T11:03:54.069826178" }, - "sarscov2 - [[vcf1, vcf2], [tbi1, tbi2]] - vcf_gz_index_csi": { - "content": [ - [ - [ - { - "id": "test3" - }, - "test3_vcf.vcf.gz:md5,5f6796c3ae109a1a5b87353954693f5a" - ] - ], - [ - [ - { - "id": "test3" - }, - "test3_vcf.vcf.gz.csi" - ] - ], - [ - - ], - [ - "versions.yml:md5,c6e19f105510a46af1c5da9064e2e659" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-06-05T14:00:10.868487669" - }, - "sarscov2 - [[vcf1, vcf2], [tbi1, tbi2]] - stub": { + "homo_sapiens - [[vcf1, vcf2], [tbi1, tbi2]] - stub": { "content": [ { "0": [ @@ -301,12 +301,12 @@ } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-06-04T15:19:14.836256897" + "timestamp": "2024-09-26T11:04:02.45346063" }, - "sarscov2 - [[vcf1, vcf2], [tbi1, tbi2]] - vcf_gz_index_tbi": { + "homo_sapiens - [[vcf1, vcf2], [tbi1, tbi2]] - vcf_gz_index_tbi": { "content": [ [ [ @@ -332,12 +332,12 @@ ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-06-05T14:00:31.061411617" + "timestamp": "2024-09-26T11:03:44.618596639" }, - "sarscov2 - [[vcf1, vcf2], [tbi1, tbi2]] - vcf_gz_index_tbi - stub": { + "homo_sapiens - [[vcf1, vcf2], [tbi1, tbi2]] - vcf_gz_index_csi - stub": { "content": [ { "0": [ @@ -349,29 +349,29 @@ ] ], "1": [ + + ], + "2": [ [ { "id": "test3" }, - "test3_vcf.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + "test3_vcf.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" ] - ], - "2": [ - ], "3": [ "versions.yml:md5,c6e19f105510a46af1c5da9064e2e659" ], "csi": [ - - ], - "tbi": [ [ { "id": "test3" }, - "test3_vcf.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + "test3_vcf.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" ] + ], + "tbi": [ + ], "vcf": [ [ @@ -387,9 +387,9 @@ } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-06-05T14:01:35.209746508" + "timestamp": "2024-09-26T11:04:19.745768656" } } \ No newline at end of file diff --git a/modules/nf-core/bcftools/merge/environment.yml b/modules/nf-core/bcftools/merge/environment.yml index 71e39be3..5c00b116 100644 --- a/modules/nf-core/bcftools/merge/environment.yml +++ b/modules/nf-core/bcftools/merge/environment.yml @@ -1,4 +1,3 @@ -name: bcftools_merge channels: - conda-forge - bioconda diff --git a/modules/nf-core/bcftools/merge/meta.yml b/modules/nf-core/bcftools/merge/meta.yml index 2caf644e..2cf09a1d 100644 --- a/modules/nf-core/bcftools/merge/meta.yml +++ b/modules/nf-core/bcftools/merge/meta.yml @@ -12,67 +12,78 @@ tools: documentation: http://www.htslib.org/doc/bcftools.html doi: 10.1093/bioinformatics/btp352 licence: ["MIT"] + identifier: biotools:bcftools input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - vcfs: - type: file - description: | - List containing 2 or more vcf files - e.g. [ 'file1.vcf', 'file2.vcf' ] - - tbis: - type: file - description: | - List containing the tbi index files corresponding to the vcfs input files - e.g. [ 'file1.vcf.tbi', 'file2.vcf.tbi' ] - - meta2: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'genome' ] - - fasta: - type: file - description: "(Optional) The fasta reference file (only necessary for the `--gvcf FILE` parameter)" - pattern: "*.{fasta,fa}" - - meta3: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'genome' ] - - fai: - type: file - description: "(Optional) The fasta reference file index (only necessary for the `--gvcf FILE` parameter)" - pattern: "*.fai" - - meta4: - type: map - description: | - Groovy Map containing bed information - e.g. [ id:'genome' ] - - bed: - type: file - description: "(Optional) The bed regions to merge on" - pattern: "*.bed" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - vcfs: + type: file + description: | + List containing 2 or more vcf files + e.g. [ 'file1.vcf', 'file2.vcf' ] + - tbis: + type: file + description: | + List containing the tbi index files corresponding to the vcfs input files + e.g. [ 'file1.vcf.tbi', 'file2.vcf.tbi' ] + - - meta2: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'genome' ] + - fasta: + type: file + description: "(Optional) The fasta reference file (only necessary for the `--gvcf + FILE` parameter)" + pattern: "*.{fasta,fa}" + - - meta3: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'genome' ] + - fai: + type: file + description: "(Optional) The fasta reference file index (only necessary for + the `--gvcf FILE` parameter)" + pattern: "*.fai" + - - meta4: + type: map + description: | + Groovy Map containing bed information + e.g. [ id:'genome' ] + - bed: + type: file + description: "(Optional) The bed regions to merge on" + pattern: "*.bed" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - vcf: - type: file - description: merged output file - pattern: "*.{vcf,vcf.gz,bcf,bcf.gz}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.{bcf,vcf}{,.gz}": + type: file + description: merged output file + pattern: "*.{vcf,vcf.gz,bcf,bcf.gz}" - index: - type: file - description: index of merged output - pattern: "*.{csi,tbi}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.{csi,tbi}": + type: file + description: index of merged output + pattern: "*.{csi,tbi}" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@joseespinosa" - "@drpatelh" diff --git a/modules/nf-core/bcftools/norm/environment.yml b/modules/nf-core/bcftools/norm/environment.yml index 0c7dfa8f..5c00b116 100644 --- a/modules/nf-core/bcftools/norm/environment.yml +++ b/modules/nf-core/bcftools/norm/environment.yml @@ -1,7 +1,5 @@ -name: bcftools_norm channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bcftools=1.20 diff --git a/modules/nf-core/bcftools/norm/main.nf b/modules/nf-core/bcftools/norm/main.nf index 97658267..bd7a2501 100644 --- a/modules/nf-core/bcftools/norm/main.nf +++ b/modules/nf-core/bcftools/norm/main.nf @@ -32,7 +32,7 @@ process BCFTOOLS_NORM { """ bcftools norm \\ --fasta-ref ${fasta} \\ - --output ${prefix}.${extension}\\ + --output ${prefix}.${extension} \\ $args \\ --threads $task.cpus \\ ${vcf} diff --git a/modules/nf-core/bcftools/norm/meta.yml b/modules/nf-core/bcftools/norm/meta.yml index a0cdeaf1..b6edeb4a 100644 --- a/modules/nf-core/bcftools/norm/meta.yml +++ b/modules/nf-core/bcftools/norm/meta.yml @@ -13,54 +13,70 @@ tools: documentation: http://www.htslib.org/doc/bcftools.html doi: 10.1093/bioinformatics/btp352 licence: ["MIT"] + identifier: biotools:bcftools input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - vcf: - type: file - description: | - The vcf file to be normalized - e.g. 'file1.vcf' - pattern: "*.{vcf,vcf.gz}" - - tbi: - type: file - description: | - An optional index of the VCF file (for when the VCF is compressed) - pattern: "*.vcf.gz.tbi" - - meta2: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'genome' ] - - fasta: - type: file - description: FASTA reference file - pattern: "*.{fasta,fa}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - vcf: + type: file + description: | + The vcf file to be normalized + e.g. 'file1.vcf' + pattern: "*.{vcf,vcf.gz}" + - tbi: + type: file + description: | + An optional index of the VCF file (for when the VCF is compressed) + pattern: "*.vcf.gz.tbi" + - - meta2: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'genome' ] + - fasta: + type: file + description: FASTA reference file + pattern: "*.{fasta,fa}" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - vcf: - type: file - description: One of uncompressed VCF (.vcf), compressed VCF (.vcf.gz), compressed BCF (.bcf.gz) or uncompressed BCF (.bcf) normalized output file - pattern: "*.{vcf,vcf.gz,bcf,bcf.gz}" - - csi: - type: file - description: Default VCF file index - pattern: "*.csi" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.{vcf,vcf.gz,bcf,bcf.gz}": + type: file + description: One of uncompressed VCF (.vcf), compressed VCF (.vcf.gz), compressed + BCF (.bcf.gz) or uncompressed BCF (.bcf) normalized output file + pattern: "*.{vcf,vcf.gz,bcf,bcf.gz}" - tbi: - type: file - description: Alternative VCF file index - pattern: "*.tbi" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.tbi": + type: file + description: Alternative VCF file index + pattern: "*.tbi" + - csi: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.csi": + type: file + description: Default VCF file index + pattern: "*.csi" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@abhi18av" - "@ramprasadn" diff --git a/modules/nf-core/bcftools/pluginsplit/environment.yml b/modules/nf-core/bcftools/pluginsplit/environment.yml index 1f7bb1ff..5c00b116 100644 --- a/modules/nf-core/bcftools/pluginsplit/environment.yml +++ b/modules/nf-core/bcftools/pluginsplit/environment.yml @@ -1,7 +1,5 @@ -name: bcftools_pluginsplit channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bcftools=1.20 diff --git a/modules/nf-core/bcftools/pluginsplit/meta.yml b/modules/nf-core/bcftools/pluginsplit/meta.yml index 64bfce0a..41f76658 100644 --- a/modules/nf-core/bcftools/pluginsplit/meta.yml +++ b/modules/nf-core/bcftools/pluginsplit/meta.yml @@ -1,4 +1,3 @@ ---- # yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/yaml-schema.json name: "bcftools_pluginsplit" description: Split VCF by sample, creating single- or multi-sample VCFs. @@ -14,60 +13,83 @@ tools: documentation: http://www.htslib.org/doc/bcftools.html doi: 10.1093/bioinformatics/btp352 licence: ["MIT"] + identifier: biotools:bcftools input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - vcf: + type: file + description: The VCF file to split + pattern: "*.{vcf,vcf.gz,bcf,bcf.gz}" + - tbi: + type: file + description: OPTIONAL - The index of the input VCF/BCF + pattern: "*.tbi" + - - samples: + type: file + description: | + A tab-separated file determining which samples should be in which output file + column 1: The sample name(s) in the input file + column 2: The sample name(s) to use in the output file (use `-` to keep the original name) + column 3: The name of the output file + Either this or a groups file should be given + pattern: "*" + - - groups: + type: file + description: | + A tab-separated file determining which samples should be in which output file(s) + column 1: The sample name(s) in the input file + column 2: The sample name(s) to use in the output file (use `-` to keep the original name) + column 3: The name of the output file(s) + Either this or a samples file should be given + pattern: "*" + - - regions: + type: file + description: A BED file containing regions to use + pattern: "*.bed" + - - targets: + type: file + description: A BED file containing regions to use (but streams rather than index-jumps) + pattern: "*.bed" +output: - vcf: - type: file - description: The VCF file to split - pattern: "*.{vcf,vcf.gz,bcf,bcf.gz}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.{vcf,vcf.gz,bcf,bcf.gz}": + type: file + description: The resulting VCF files from the split + pattern: "*.{vcf,vcf.gz,bcf,bcf.gz}" - tbi: - type: file - description: OPTIONAL - The index of the input VCF/BCF - pattern: "*.tbi" - - samples: - type: file - description: | - A tab-separated file determining which samples should be in which output file - column 1: The sample name(s) in the input file - column 2: The sample name(s) to use in the output file (use `-` to keep the original name) - column 3: The name of the output file - Either this or a groups file should be given - pattern: "*" - - groups: - type: file - description: | - A tab-separated file determining which samples should be in which output file(s) - column 1: The sample name(s) in the input file - column 2: The sample name(s) to use in the output file (use `-` to keep the original name) - column 3: The name of the output file(s) - Either this or a samples file should be given - pattern: "*" - - regions: - type: file - description: A BED file containing regions to use - pattern: "*.bed" - - targets: - type: file - description: A BED file containing regions to use (but streams rather than index-jumps) - pattern: "*.bed" -output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.tbi": + type: file + description: TBI file + pattern: "*.tbi" + - csi: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.csi": + type: file + description: CSI file + pattern: "*.csi" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - - vcf: - type: file - description: The resulting VCF files from the split - pattern: "*.{vcf,vcf.gz,bcf,bcf.gz}" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@nvnieuwk" maintainers: diff --git a/modules/nf-core/bcftools/query/meta.yml b/modules/nf-core/bcftools/query/meta.yml index 303ef610..279b3205 100644 --- a/modules/nf-core/bcftools/query/meta.yml +++ b/modules/nf-core/bcftools/query/meta.yml @@ -1,5 +1,6 @@ name: bcftools_query -description: Extracts fields from VCF or BCF files and outputs them in user-defined format. +description: Extracts fields from VCF or BCF files and outputs them in user-defined + format. keywords: - query - variant calling @@ -13,48 +14,51 @@ tools: documentation: http://www.htslib.org/doc/bcftools.html doi: 10.1093/bioinformatics/btp352 licence: ["MIT"] + identifier: biotools:bcftools input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - vcf: - type: file - description: | - The vcf file to be qeuried. - pattern: "*.{vcf.gz, vcf}" - - tbi: - type: file - description: | - The tab index for the VCF file to be inspected. - pattern: "*.tbi" - - regions: - type: file - description: | - Optionally, restrict the operation to regions listed in this file. - - targets: - type: file - description: | - Optionally, restrict the operation to regions listed in this file (doesn't rely upon index files) - - samples: - type: file - description: | - Optional, file of sample names to be included or excluded. - e.g. 'file.tsv' + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - vcf: + type: file + description: | + The vcf file to be qeuried. + pattern: "*.{vcf.gz, vcf}" + - tbi: + type: file + description: | + The tab index for the VCF file to be inspected. + pattern: "*.tbi" + - - regions: + type: file + description: | + Optionally, restrict the operation to regions listed in this file. + - - targets: + type: file + description: | + Optionally, restrict the operation to regions listed in this file (doesn't rely upon index files) + - - samples: + type: file + description: | + Optional, file of sample names to be included or excluded. + e.g. 'file.tsv' output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - output: - type: file - description: BCFTools query output file + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.${suffix}": + type: file + description: BCFTools query output file - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@abhi18av" - "@drpatelh" diff --git a/modules/nf-core/bcftools/reheader/bcftools-reheader.diff b/modules/nf-core/bcftools/reheader/bcftools-reheader.diff deleted file mode 100644 index e2c7a9a8..00000000 --- a/modules/nf-core/bcftools/reheader/bcftools-reheader.diff +++ /dev/null @@ -1,36 +0,0 @@ -Changes in module 'nf-core/bcftools/reheader' ---- modules/nf-core/bcftools/reheader/main.nf -+++ modules/nf-core/bcftools/reheader/main.nf -@@ -13,6 +13,7 @@ - - output: - tuple val(meta), path("*.{vcf,vcf.gz,bcf,bcf.gz}"), emit: vcf -+ tuple val(meta), path("*.{csi,tbi}") , emit: index, optional: true - path "versions.yml" , emit: versions - - when: -@@ -59,8 +60,16 @@ - args2.contains("--output-type z") || args2.contains("-Oz") ? "vcf.gz" : - args2.contains("--output-type v") || args2.contains("-Ov") ? "vcf" : - "vcf" -+ def index = args2.contains("--write-index=tbi") || args2.contains("-W=tbi") ? "tbi" : -+ args2.contains("--write-index=csi") || args2.contains("-W=csi") ? "csi" : -+ args2.contains("--write-index") || args2.contains("-W") ? "csi" : -+ "" -+ def create_cmd = extension.endsWith(".gz") ? "echo '' | gzip >" : "touch" -+ def create_index = extension.endsWith(".gz") && index.matches("csi|tbi") ? "touch ${prefix}.${extension}.${index}" : "" -+ - """ -- touch ${prefix}.${extension} -+ ${create_cmd} ${prefix}.${extension} -+ ${create_index} - - cat <<-END_VERSIONS > versions.yml - "${task.process}": -@@ -68,3 +77,4 @@ - END_VERSIONS - """ - } -+ - -************************************************************ diff --git a/modules/nf-core/bcftools/reheader/environment.yml b/modules/nf-core/bcftools/reheader/environment.yml index 48fd72c9..5c00b116 100644 --- a/modules/nf-core/bcftools/reheader/environment.yml +++ b/modules/nf-core/bcftools/reheader/environment.yml @@ -1,7 +1,5 @@ -name: bcftools_reheader channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bcftools=1.20 diff --git a/modules/nf-core/bcftools/reheader/meta.yml b/modules/nf-core/bcftools/reheader/meta.yml index d903cc0f..47e5344c 100644 --- a/modules/nf-core/bcftools/reheader/meta.yml +++ b/modules/nf-core/bcftools/reheader/meta.yml @@ -12,51 +12,60 @@ tools: documentation: http://samtools.github.io/bcftools/bcftools.html#reheader doi: 10.1093/gigascience/giab008 licence: ["MIT"] + identifier: biotools:bcftools input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - vcf: - type: file - description: VCF/BCF file - pattern: "*.{vcf.gz,vcf,bcf}" - - header: - type: file - description: New header to add to the VCF - pattern: "*.{header.txt}" - - samples: - type: file - description: File containing sample names to update (one sample per line) - pattern: "*.{samples.txt}" - - meta2: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'genome' ] - - fai: - type: file - description: Fasta index to update header sequences with - pattern: "*.{fai}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - vcf: + type: file + description: VCF/BCF file + pattern: "*.{vcf.gz,vcf,bcf}" + - header: + type: file + description: New header to add to the VCF + pattern: "*.{header.txt}" + - samples: + type: file + description: File containing sample names to update (one sample per line) + pattern: "*.{samples.txt}" + - - meta2: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'genome' ] + - fai: + type: file + description: Fasta index to update header sequences with + pattern: "*.{fai}" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - vcf: - type: file - description: VCF with updated header, bgzipped per default - pattern: "*.{vcf,vcf.gz,bcf,bcf.gz}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.{vcf,vcf.gz,bcf,bcf.gz}": + type: file + description: VCF with updated header, bgzipped per default + pattern: "*.{vcf,vcf.gz,bcf,bcf.gz}" - index: - type: file - description: Index of VCF with updated header - pattern: "*.{csi,tbi}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.{csi,tbi}": + type: file + description: Index of VCF with updated header + pattern: "*.{csi,tbi}" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@bjohnnyd" - "@jemten" diff --git a/modules/nf-core/bcftools/sort/environment.yml b/modules/nf-core/bcftools/sort/environment.yml index 2295ecfd..5c00b116 100644 --- a/modules/nf-core/bcftools/sort/environment.yml +++ b/modules/nf-core/bcftools/sort/environment.yml @@ -1,7 +1,5 @@ -name: bcftools_sort channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bcftools=1.20 diff --git a/modules/nf-core/bcftools/sort/meta.yml b/modules/nf-core/bcftools/sort/meta.yml index dfbddcba..f7a6eff1 100644 --- a/modules/nf-core/bcftools/sort/meta.yml +++ b/modules/nf-core/bcftools/sort/meta.yml @@ -12,38 +12,53 @@ tools: tool_dev_url: https://github.com/samtools/bcftools doi: "10.1093/bioinformatics/btp352" licence: ["MIT"] + identifier: biotools:bcftools input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - vcf: - type: file - description: The VCF/BCF file to be sorted - pattern: "*.{vcf.gz,vcf,bcf}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - vcf: + type: file + description: The VCF/BCF file to be sorted + pattern: "*.{vcf.gz,vcf,bcf}" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - vcf: - type: file - description: Sorted VCF file - pattern: "*.{vcf.gz}" - - csi: - type: file - description: Default VCF file index - pattern: "*.csi" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.{vcf,vcf.gz,bcf,bcf.gz}": + type: file + description: Sorted VCF file + pattern: "*.{vcf.gz}" - tbi: - type: file - description: Alternative VCF file index - pattern: "*.tbi" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.tbi": + type: file + description: Alternative VCF file index + pattern: "*.tbi" + - csi: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.csi": + type: file + description: Default VCF file index + pattern: "*.csi" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@Gwennid" maintainers: diff --git a/modules/nf-core/bcftools/stats/environment.yml b/modules/nf-core/bcftools/stats/environment.yml index 128fe204..93357b41 100644 --- a/modules/nf-core/bcftools/stats/environment.yml +++ b/modules/nf-core/bcftools/stats/environment.yml @@ -1,8 +1,6 @@ -name: bcftools_stats channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bcftools=1.20 - bioconda::htslib=1.20 diff --git a/modules/nf-core/bcftools/stats/meta.yml b/modules/nf-core/bcftools/stats/meta.yml index 7ea2103e..655a61c5 100644 --- a/modules/nf-core/bcftools/stats/meta.yml +++ b/modules/nf-core/bcftools/stats/meta.yml @@ -13,58 +13,86 @@ tools: documentation: http://www.htslib.org/doc/bcftools.html doi: 10.1093/bioinformatics/btp352 licence: ["MIT"] + identifier: biotools:bcftools input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - vcf: - type: file - description: VCF input file - pattern: "*.{vcf}" - - tbi: - type: file - description: | - The tab index for the VCF file to be inspected. Optional: only required when parameter regions is chosen. - pattern: "*.tbi" - - regions: - type: file - description: | - Optionally, restrict the operation to regions listed in this file. (VCF, BED or tab-delimited) - - targets: - type: file - description: | - Optionally, restrict the operation to regions listed in this file (doesn't rely upon tbi index files) - - samples: - type: file - description: | - Optional, file of sample names to be included or excluded. - e.g. 'file.tsv' - - exons: - type: file - description: | - Tab-delimited file with exons for indel frameshifts (chr,beg,end; 1-based, inclusive, optionally bgzip compressed). - e.g. 'exons.tsv.gz' - - fasta: - type: file - description: | - Faidx indexed reference sequence file to determine INDEL context. - e.g. 'reference.fa' + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - vcf: + type: file + description: VCF input file + pattern: "*.{vcf}" + - tbi: + type: file + description: | + The tab index for the VCF file to be inspected. Optional: only required when parameter regions is chosen. + pattern: "*.tbi" + - - meta2: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - regions: + type: file + description: | + Optionally, restrict the operation to regions listed in this file. (VCF, BED or tab-delimited) + - - meta3: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - targets: + type: file + description: | + Optionally, restrict the operation to regions listed in this file (doesn't rely upon tbi index files) + - - meta4: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - samples: + type: file + description: | + Optional, file of sample names to be included or excluded. + e.g. 'file.tsv' + - - meta5: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - exons: + type: file + description: | + Tab-delimited file with exons for indel frameshifts (chr,beg,end; 1-based, inclusive, optionally bgzip compressed). + e.g. 'exons.tsv.gz' + - - meta6: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - fasta: + type: file + description: | + Faidx indexed reference sequence file to determine INDEL context. + e.g. 'reference.fa' output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - stats: - type: file - description: Text output file containing stats - pattern: "*_{stats.txt}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*stats.txt": + type: file + description: Text output file containing stats + pattern: "*_{stats.txt}" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@joseespinosa" - "@drpatelh" diff --git a/modules/nf-core/bcftools/view/environment.yml b/modules/nf-core/bcftools/view/environment.yml index 4b2a21df..5c00b116 100644 --- a/modules/nf-core/bcftools/view/environment.yml +++ b/modules/nf-core/bcftools/view/environment.yml @@ -1,7 +1,5 @@ -name: bcftools_view channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bcftools=1.20 diff --git a/modules/nf-core/bcftools/view/meta.yml b/modules/nf-core/bcftools/view/meta.yml index 5eb1b196..aa7785f1 100644 --- a/modules/nf-core/bcftools/view/meta.yml +++ b/modules/nf-core/bcftools/view/meta.yml @@ -1,5 +1,6 @@ name: bcftools_view -description: View, subset and filter VCF or BCF files by position and filtering expression. Convert between VCF and BCF +description: View, subset and filter VCF or BCF files by position and filtering expression. + Convert between VCF and BCF keywords: - variant calling - view @@ -13,59 +14,74 @@ tools: documentation: http://www.htslib.org/doc/bcftools.html doi: 10.1093/bioinformatics/btp352 licence: ["MIT"] + identifier: biotools:bcftools input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - vcf: - type: file - description: | - The vcf file to be inspected. - e.g. 'file.vcf' - - index: - type: file - description: | - The tab index for the VCF file to be inspected. - e.g. 'file.tbi' - - regions: - type: file - description: | - Optionally, restrict the operation to regions listed in this file. - e.g. 'file.vcf' - - targets: - type: file - description: | - Optionally, restrict the operation to regions listed in this file (doesn't rely upon index files) - e.g. 'file.vcf' - - samples: - type: file - description: | - Optional, file of sample names to be included or excluded. - e.g. 'file.tsv' + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - vcf: + type: file + description: | + The vcf file to be inspected. + e.g. 'file.vcf' + - index: + type: file + description: | + The tab index for the VCF file to be inspected. + e.g. 'file.tbi' + - - regions: + type: file + description: | + Optionally, restrict the operation to regions listed in this file. + e.g. 'file.vcf' + - - targets: + type: file + description: | + Optionally, restrict the operation to regions listed in this file (doesn't rely upon index files) + e.g. 'file.vcf' + - - samples: + type: file + description: | + Optional, file of sample names to be included or excluded. + e.g. 'file.tsv' output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - vcf: - type: file - description: VCF normalized output file - pattern: "*.{vcf,vcf.gz,bcf,bcf.gz}" - - csi: - type: file - description: Default VCF file index - pattern: "*.csi" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.{vcf,vcf.gz,bcf,bcf.gz}": + type: file + description: VCF normalized output file + pattern: "*.{vcf,vcf.gz,bcf,bcf.gz}" - tbi: - type: file - description: Alternative VCF file index - pattern: "*.tbi" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.tbi": + type: file + description: Alternative VCF file index + pattern: "*.tbi" + - csi: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.csi": + type: file + description: Default VCF file index + pattern: "*.csi" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@abhi18av" maintainers: diff --git a/modules/nf-core/bedtools/merge/environment.yml b/modules/nf-core/bedtools/merge/environment.yml index 99707878..5683bc05 100644 --- a/modules/nf-core/bedtools/merge/environment.yml +++ b/modules/nf-core/bedtools/merge/environment.yml @@ -1,7 +1,5 @@ -name: bedtools_merge channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bedtools=2.31.1 diff --git a/modules/nf-core/bedtools/merge/meta.yml b/modules/nf-core/bedtools/merge/meta.yml index d7463e3d..6da54205 100644 --- a/modules/nf-core/bedtools/merge/meta.yml +++ b/modules/nf-core/bedtools/merge/meta.yml @@ -1,5 +1,6 @@ name: bedtools_merge -description: combines overlapping or “book-ended” features in an interval file into a single feature which spans all of the combined features. +description: combines overlapping or “book-ended” features in an interval file into + a single feature which spans all of the combined features. keywords: - bed - merge @@ -11,30 +12,33 @@ tools: A set of tools for genomic analysis tasks, specifically enabling genome arithmetic (merge, count, complement) on various file types. documentation: https://bedtools.readthedocs.io/en/latest/content/tools/merge.html licence: ["MIT"] + identifier: biotools:bedtools input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - bed: - type: file - description: Input BED file - pattern: "*.{bed}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - bed: + type: file + description: Input BED file + pattern: "*.{bed}" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - bed: - type: file - description: Overlapped bed file with combined features - pattern: "*.{bed}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.bed": + type: file + description: Overlapped bed file with combined features + pattern: "*.{bed}" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@edmundmiller" - "@sruthipsuresh" diff --git a/modules/nf-core/bedtools/merge/tests/main.nf.test b/modules/nf-core/bedtools/merge/tests/main.nf.test index 95dba8e5..2959d6b9 100644 --- a/modules/nf-core/bedtools/merge/tests/main.nf.test +++ b/modules/nf-core/bedtools/merge/tests/main.nf.test @@ -16,7 +16,7 @@ nextflow_process { process { """ input[0] = [ [ id:'test'], - file(params.test_data['sarscov2']['genome']['test_bed'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test.bed', checkIfExists: true) ] """ } diff --git a/modules/nf-core/bedtools/sort/environment.yml b/modules/nf-core/bedtools/sort/environment.yml index 87b2e425..5683bc05 100644 --- a/modules/nf-core/bedtools/sort/environment.yml +++ b/modules/nf-core/bedtools/sort/environment.yml @@ -1,7 +1,5 @@ -name: bedtools_sort channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bedtools=2.31.1 diff --git a/modules/nf-core/bedtools/sort/meta.yml b/modules/nf-core/bedtools/sort/meta.yml index 7c915f5f..313698f1 100644 --- a/modules/nf-core/bedtools/sort/meta.yml +++ b/modules/nf-core/bedtools/sort/meta.yml @@ -11,35 +11,38 @@ tools: A set of tools for genomic analysis tasks, specifically enabling genome arithmetic (merge, count, complement) on various file types. documentation: https://bedtools.readthedocs.io/en/latest/content/tools/sort.html licence: ["MIT"] + identifier: biotools:bedtools input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - intervals: - type: file - description: BED/BEDGRAPH - pattern: "*.{bed|bedGraph}" - - genome_file: - type: file - description: | - Optional reference genome 2 column file that defines the expected chromosome order. - pattern: "*.{fai,txt,chromsizes}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - intervals: + type: file + description: BED/BEDGRAPH + pattern: "*.{bed|bedGraph}" + - - genome_file: + type: file + description: | + Optional reference genome 2 column file that defines the expected chromosome order. + pattern: "*.{fai,txt,chromsizes}" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - sorted: - type: file - description: Sorted output file - pattern: "*.${extension}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.${extension}": + type: file + description: Sorted output file + pattern: "*.${extension}" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@edmundmiller" - "@sruthipsuresh" diff --git a/modules/nf-core/cat/fastq/environment.yml b/modules/nf-core/cat/fastq/environment.yml index 8c69b121..71e04c3d 100644 --- a/modules/nf-core/cat/fastq/environment.yml +++ b/modules/nf-core/cat/fastq/environment.yml @@ -1,7 +1,5 @@ -name: cat_fastq channels: - conda-forge - bioconda - - defaults dependencies: - - conda-forge::coreutils=8.30 + - conda-forge::coreutils=9.5 diff --git a/modules/nf-core/cat/fastq/main.nf b/modules/nf-core/cat/fastq/main.nf index b68e5f91..4364a389 100644 --- a/modules/nf-core/cat/fastq/main.nf +++ b/modules/nf-core/cat/fastq/main.nf @@ -4,8 +4,8 @@ process CAT_FASTQ { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/ubuntu:20.04' : - 'nf-core/ubuntu:20.04' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/c2/c262fc09eca59edb5a724080eeceb00fb06396f510aefb229c2d2c6897e63975/data' : + 'community.wave.seqera.io/library/coreutils:9.5--ae99c88a9b28c264' }" input: tuple val(meta), path(reads, stageAs: "input*/*") diff --git a/modules/nf-core/cat/fastq/meta.yml b/modules/nf-core/cat/fastq/meta.yml index db4ac3c7..91ff2fb5 100644 --- a/modules/nf-core/cat/fastq/meta.yml +++ b/modules/nf-core/cat/fastq/meta.yml @@ -10,30 +10,33 @@ tools: The cat utility reads files sequentially, writing them to the standard output. documentation: https://www.gnu.org/software/coreutils/manual/html_node/cat-invocation.html licence: ["GPL-3.0-or-later"] + identifier: "" input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - reads: - type: file - description: | - List of input FastQ files to be concatenated. + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - reads: + type: file + description: | + List of input FastQ files to be concatenated. output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - reads: - type: file - description: Merged fastq file - pattern: "*.{merged.fastq.gz}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.merged.fastq.gz": + type: file + description: Merged fastq file + pattern: "*.{merged.fastq.gz}" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@joseespinosa" - "@drpatelh" diff --git a/modules/nf-core/cat/fastq/tests/main.nf.test.snap b/modules/nf-core/cat/fastq/tests/main.nf.test.snap index aec119a9..f8689a1c 100644 --- a/modules/nf-core/cat/fastq/tests/main.nf.test.snap +++ b/modules/nf-core/cat/fastq/tests/main.nf.test.snap @@ -12,7 +12,7 @@ ] ], "1": [ - "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + "versions.yml:md5,6ef4fd28546a005865b9454bbedbf81a" ], "reads": [ [ @@ -24,15 +24,15 @@ ] ], "versions": [ - "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + "versions.yml:md5,6ef4fd28546a005865b9454bbedbf81a" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-01-17T17:30:39.816981" + "timestamp": "2024-10-19T20:02:07.519211144" }, "test_cat_fastq_single_end_same_name": { "content": [ @@ -47,7 +47,7 @@ ] ], "1": [ - "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + "versions.yml:md5,6ef4fd28546a005865b9454bbedbf81a" ], "reads": [ [ @@ -59,15 +59,15 @@ ] ], "versions": [ - "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + "versions.yml:md5,6ef4fd28546a005865b9454bbedbf81a" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-01-17T17:32:35.229332" + "timestamp": "2024-10-19T20:02:31.618628921" }, "test_cat_fastq_single_end_single_file": { "content": [ @@ -82,7 +82,7 @@ ] ], "1": [ - "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + "versions.yml:md5,6ef4fd28546a005865b9454bbedbf81a" ], "reads": [ [ @@ -94,15 +94,15 @@ ] ], "versions": [ - "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + "versions.yml:md5,6ef4fd28546a005865b9454bbedbf81a" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-01-17T17:34:00.058829" + "timestamp": "2024-10-19T20:02:57.904149581" }, "test_cat_fastq_paired_end_same_name": { "content": [ @@ -120,7 +120,7 @@ ] ], "1": [ - "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + "versions.yml:md5,6ef4fd28546a005865b9454bbedbf81a" ], "reads": [ [ @@ -135,15 +135,15 @@ ] ], "versions": [ - "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + "versions.yml:md5,6ef4fd28546a005865b9454bbedbf81a" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-01-17T17:33:33.031555" + "timestamp": "2024-10-19T20:02:44.577183829" }, "test_cat_fastq_single_end - stub": { "content": [ @@ -158,7 +158,7 @@ ] ], "1": [ - "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + "versions.yml:md5,6ef4fd28546a005865b9454bbedbf81a" ], "reads": [ [ @@ -170,15 +170,15 @@ ] ], "versions": [ - "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + "versions.yml:md5,6ef4fd28546a005865b9454bbedbf81a" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-07-05T12:07:28.244999" + "timestamp": "2024-10-19T20:03:10.603734777" }, "test_cat_fastq_paired_end_same_name - stub": { "content": [ @@ -196,7 +196,7 @@ ] ], "1": [ - "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + "versions.yml:md5,6ef4fd28546a005865b9454bbedbf81a" ], "reads": [ [ @@ -211,15 +211,15 @@ ] ], "versions": [ - "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + "versions.yml:md5,6ef4fd28546a005865b9454bbedbf81a" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-07-05T12:07:57.070911" + "timestamp": "2024-10-19T20:03:46.041808828" }, "test_cat_fastq_single_end_same_name - stub": { "content": [ @@ -234,7 +234,7 @@ ] ], "1": [ - "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + "versions.yml:md5,6ef4fd28546a005865b9454bbedbf81a" ], "reads": [ [ @@ -246,15 +246,15 @@ ] ], "versions": [ - "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + "versions.yml:md5,6ef4fd28546a005865b9454bbedbf81a" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-07-05T12:07:46.796254" + "timestamp": "2024-10-19T20:03:34.13865402" }, "test_cat_fastq_paired_end": { "content": [ @@ -272,7 +272,7 @@ ] ], "1": [ - "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + "versions.yml:md5,6ef4fd28546a005865b9454bbedbf81a" ], "reads": [ [ @@ -287,15 +287,15 @@ ] ], "versions": [ - "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + "versions.yml:md5,6ef4fd28546a005865b9454bbedbf81a" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-01-17T17:32:02.270935" + "timestamp": "2024-10-19T20:02:19.64383573" }, "test_cat_fastq_paired_end - stub": { "content": [ @@ -313,7 +313,7 @@ ] ], "1": [ - "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + "versions.yml:md5,6ef4fd28546a005865b9454bbedbf81a" ], "reads": [ [ @@ -328,15 +328,15 @@ ] ], "versions": [ - "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + "versions.yml:md5,6ef4fd28546a005865b9454bbedbf81a" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-07-05T12:07:37.807553" + "timestamp": "2024-10-19T20:03:22.597246066" }, "test_cat_fastq_single_end_single_file - stub": { "content": [ @@ -351,7 +351,7 @@ ] ], "1": [ - "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + "versions.yml:md5,6ef4fd28546a005865b9454bbedbf81a" ], "reads": [ [ @@ -363,14 +363,14 @@ ] ], "versions": [ - "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + "versions.yml:md5,6ef4fd28546a005865b9454bbedbf81a" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-07-05T12:14:51.861264" + "timestamp": "2024-10-19T20:03:58.44849001" } } \ No newline at end of file diff --git a/modules/nf-core/deepvariant/README.md b/modules/nf-core/deepvariant/README.md deleted file mode 100644 index 9d1ceb34..00000000 --- a/modules/nf-core/deepvariant/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# Conda is not supported at the moment - -The [bioconda](https://bioconda.github.io/recipes/deepvariant/README.html) recipe is not fully working as expected. - -See https://github.com/bioconda/bioconda-recipes/issues/30310 and https://github.com/nf-core/modules/issues/1754 for more information. - -Hence, we are using the docker container provided by the authors of the tool: - -- [google/deepvariant](https://hub.docker.com/r/google/deepvariant) - -This image is mirrored on the [nf-core quay.io](https://quay.io/repository/nf-core/deepvariant) for convenience. diff --git a/modules/nf-core/deepvariant/meta.yml b/modules/nf-core/deepvariant/meta.yml deleted file mode 100644 index 2327dd5f..00000000 --- a/modules/nf-core/deepvariant/meta.yml +++ /dev/null @@ -1,92 +0,0 @@ -name: deepvariant -description: DeepVariant is an analysis pipeline that uses a deep neural network to call genetic variants from next-generation DNA sequencing data -keywords: - - variant calling - - machine learning - - neural network -tools: - - deepvariant: - description: DeepVariant is an analysis pipeline that uses a deep neural network to call genetic variants from next-generation DNA sequencing data - homepage: https://github.com/google/deepvariant - documentation: https://github.com/google/deepvariant - tool_dev_url: https://github.com/google/deepvariant - doi: "10.1038/nbt.4235" - licence: ["BSD-3-clause"] -input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - input: - type: file - description: BAM/CRAM file - pattern: "*.bam/cram" - - index: - type: file - description: Index of BAM/CRAM file - pattern: "*.bai/crai" - - interval: - type: file - description: Interval file for targeted regions - pattern: "*.bed" - - meta2: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'genome' ] - - fasta: - type: file - description: The reference fasta file - pattern: "*.fasta" - - meta3: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'genome' ] - - fai: - type: file - description: Index of reference fasta file - pattern: "*.fai" - - meta4: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'genome' ] - - gzi: - type: file - description: GZI index of reference fasta file - pattern: "*.gzi" - - meta5: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'genome' ] - - par_bed: - type: file - description: BED file containing PAR regions - pattern: "*.bed" -output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - vcf: - type: file - description: Compressed VCF file - pattern: "*.vcf.gz" - - gvcf: - type: file - description: Compressed GVCF file - pattern: "*.g.vcf.gz" - - version: - type: file - description: File containing software version - pattern: "*.{version.txt}" -authors: - - "@abhi18av" - - "@ramprasadn" -maintainers: - - "@abhi18av" - - "@ramprasadn" diff --git a/modules/nf-core/deepvariant/main.nf b/modules/nf-core/deepvariant/rundeepvariant/main.nf similarity index 98% rename from modules/nf-core/deepvariant/main.nf rename to modules/nf-core/deepvariant/rundeepvariant/main.nf index 8d3d0911..7f99c53f 100644 --- a/modules/nf-core/deepvariant/main.nf +++ b/modules/nf-core/deepvariant/rundeepvariant/main.nf @@ -1,4 +1,4 @@ -process DEEPVARIANT { +process DEEPVARIANT_RUNDEEPVARIANT { tag "$meta.id" label 'process_high' diff --git a/modules/nf-core/deepvariant/rundeepvariant/meta.yml b/modules/nf-core/deepvariant/rundeepvariant/meta.yml new file mode 100644 index 00000000..29b45ff9 --- /dev/null +++ b/modules/nf-core/deepvariant/rundeepvariant/meta.yml @@ -0,0 +1,122 @@ +name: deepvariant_rundeepvariant +description: DeepVariant is an analysis pipeline that uses a deep neural network to + call genetic variants from next-generation DNA sequencing data +keywords: + - variant calling + - machine learning + - neural network +tools: + - deepvariant: + description: DeepVariant is an analysis pipeline that uses a deep neural network + to call genetic variants from next-generation DNA sequencing data + homepage: https://github.com/google/deepvariant + documentation: https://github.com/google/deepvariant + tool_dev_url: https://github.com/google/deepvariant + doi: "10.1038/nbt.4235" + licence: ["BSD-3-clause"] + identifier: biotools:deepvariant +input: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - input: + type: file + description: BAM/CRAM file + pattern: "*.bam/cram" + - index: + type: file + description: Index of BAM/CRAM file + pattern: "*.bai/crai" + - intervals: + type: file + description: file containing intervals + - - meta2: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'genome' ] + - fasta: + type: file + description: The reference fasta file + pattern: "*.fasta" + - - meta3: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'genome' ] + - fai: + type: file + description: Index of reference fasta file + pattern: "*.fai" + - - meta4: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'genome' ] + - gzi: + type: file + description: GZI index of reference fasta file + pattern: "*.gzi" + - - meta5: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'genome' ] + - par_bed: + type: file + description: BED file containing PAR regions + pattern: "*.bed" +output: + - vcf: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - ${prefix}.vcf.gz: + type: file + description: Compressed VCF file + pattern: "*.vcf.gz" + - vcf_tbi: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - ${prefix}.vcf.gz.tbi: + type: file + description: Tabix index file of compressed VCF + pattern: "*.vcf.gz.tbi" + - gvcf: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - ${prefix}.g.vcf.gz: + type: file + description: Compressed GVCF file + pattern: "*.g.vcf.gz" + - gvcf_tbi: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - ${prefix}.g.vcf.gz.tbi: + type: file + description: Tabix index file of compressed GVCF + pattern: "*.g.vcf.gz.tbi" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" +authors: + - "@abhi18av" + - "@ramprasadn" +maintainers: + - "@abhi18av" + - "@ramprasadn" diff --git a/modules/nf-core/deepvariant/tests/main.nf.test b/modules/nf-core/deepvariant/rundeepvariant/tests/main.nf.test similarity index 97% rename from modules/nf-core/deepvariant/tests/main.nf.test rename to modules/nf-core/deepvariant/rundeepvariant/tests/main.nf.test index 17765233..0790fb81 100644 --- a/modules/nf-core/deepvariant/tests/main.nf.test +++ b/modules/nf-core/deepvariant/rundeepvariant/tests/main.nf.test @@ -1,9 +1,10 @@ nextflow_process { - name "Test Process DEEPVARIANT" + name "Test Process DEEPVARIANT_RUNDEEPVARIANT" script "../main.nf" - process "DEEPVARIANT" + process "DEEPVARIANT_RUNDEEPVARIANT" + tag "deepvariant/rundeepvariant" tag "deepvariant" tag "modules" tag "modules_nfcore" @@ -162,4 +163,4 @@ nextflow_process { } } -} \ No newline at end of file +} diff --git a/modules/nf-core/deepvariant/tests/main.nf.test.snap b/modules/nf-core/deepvariant/rundeepvariant/tests/main.nf.test.snap similarity index 91% rename from modules/nf-core/deepvariant/tests/main.nf.test.snap rename to modules/nf-core/deepvariant/rundeepvariant/tests/main.nf.test.snap index 04f87774..1ec351ee 100644 --- a/modules/nf-core/deepvariant/tests/main.nf.test.snap +++ b/modules/nf-core/deepvariant/rundeepvariant/tests/main.nf.test.snap @@ -39,7 +39,7 @@ ] ], "4": [ - "versions.yml:md5,efbdcb1ad96e0209b31bcafedd0017a8" + "versions.yml:md5,a251d8d9f5e8b737d8298eead96c0890" ], "gvcf": [ [ @@ -78,15 +78,15 @@ ] ], "versions": [ - "versions.yml:md5,efbdcb1ad96e0209b31bcafedd0017a8" + "versions.yml:md5,a251d8d9f5e8b737d8298eead96c0890" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-07-01T12:09:40.987117305" + "timestamp": "2024-08-29T11:36:27.325363" }, "homo_sapiens - [bam, bai] - fasta - fai": { "content": [ @@ -128,7 +128,7 @@ ] ], "4": [ - "versions.yml:md5,efbdcb1ad96e0209b31bcafedd0017a8" + "versions.yml:md5,a251d8d9f5e8b737d8298eead96c0890" ], "gvcf": [ [ @@ -167,15 +167,15 @@ ] ], "versions": [ - "versions.yml:md5,efbdcb1ad96e0209b31bcafedd0017a8" + "versions.yml:md5,a251d8d9f5e8b737d8298eead96c0890" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-07-01T12:08:47.058887374" + "timestamp": "2024-08-29T11:34:41.779153" }, "homo_sapiens - [cram, crai, genome_bed] - fasta - fai": { "content": [ @@ -217,7 +217,7 @@ ] ], "4": [ - "versions.yml:md5,efbdcb1ad96e0209b31bcafedd0017a8" + "versions.yml:md5,a251d8d9f5e8b737d8298eead96c0890" ], "gvcf": [ [ @@ -256,15 +256,15 @@ ] ], "versions": [ - "versions.yml:md5,efbdcb1ad96e0209b31bcafedd0017a8" + "versions.yml:md5,a251d8d9f5e8b737d8298eead96c0890" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-07-01T12:09:13.952808655" + "timestamp": "2024-08-29T11:35:16.993129" }, "homo_sapiens - [cram, crai, genome_bed] - fasta - fai - par_bed": { "content": [ @@ -306,7 +306,7 @@ ] ], "4": [ - "versions.yml:md5,efbdcb1ad96e0209b31bcafedd0017a8" + "versions.yml:md5,a251d8d9f5e8b737d8298eead96c0890" ], "gvcf": [ [ @@ -345,14 +345,14 @@ ] ], "versions": [ - "versions.yml:md5,efbdcb1ad96e0209b31bcafedd0017a8" + "versions.yml:md5,a251d8d9f5e8b737d8298eead96c0890" ] } ], "meta": { "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nextflow": "24.04.4" }, - "timestamp": "2024-07-23T14:29:24.939680679" + "timestamp": "2024-08-29T11:35:52.23093" } -} +} \ No newline at end of file diff --git a/modules/nf-core/deepvariant/tests/nextflow-intervals.config b/modules/nf-core/deepvariant/rundeepvariant/tests/nextflow-intervals.config similarity index 70% rename from modules/nf-core/deepvariant/tests/nextflow-intervals.config rename to modules/nf-core/deepvariant/rundeepvariant/tests/nextflow-intervals.config index 6d135f9f..78d8d598 100644 --- a/modules/nf-core/deepvariant/tests/nextflow-intervals.config +++ b/modules/nf-core/deepvariant/rundeepvariant/tests/nextflow-intervals.config @@ -1,6 +1,6 @@ process { - withName: DEEPVARIANT { + withName: DEEPVARIANT_RUNDEEPVARIANT { ext.args = '--model_type=WGS ' ext.prefix = { "${meta.id}_out" } } diff --git a/modules/nf-core/deepvariant/tests/nextflow-non-autosomal-calling.config b/modules/nf-core/deepvariant/rundeepvariant/tests/nextflow-non-autosomal-calling.config similarity index 74% rename from modules/nf-core/deepvariant/tests/nextflow-non-autosomal-calling.config rename to modules/nf-core/deepvariant/rundeepvariant/tests/nextflow-non-autosomal-calling.config index 4be8986b..6d265292 100644 --- a/modules/nf-core/deepvariant/tests/nextflow-non-autosomal-calling.config +++ b/modules/nf-core/deepvariant/rundeepvariant/tests/nextflow-non-autosomal-calling.config @@ -1,6 +1,6 @@ process { - withName: DEEPVARIANT { + withName: DEEPVARIANT_RUNDEEPVARIANT { ext.args = '--model_type=WGS --haploid_contigs chr22' ext.prefix = { "${meta.id}_out" } } diff --git a/modules/nf-core/deepvariant/tests/nextflow.config b/modules/nf-core/deepvariant/rundeepvariant/tests/nextflow.config similarity index 75% rename from modules/nf-core/deepvariant/tests/nextflow.config rename to modules/nf-core/deepvariant/rundeepvariant/tests/nextflow.config index d335d30b..77e355ca 100644 --- a/modules/nf-core/deepvariant/tests/nextflow.config +++ b/modules/nf-core/deepvariant/rundeepvariant/tests/nextflow.config @@ -1,6 +1,6 @@ process { - withName: DEEPVARIANT { + withName: DEEPVARIANT_RUNDEEPVARIANT { ext.args = ' --regions=\"chr22:0-40001\" --model_type=WGS ' ext.prefix = { "${meta.id}_out" } } diff --git a/modules/nf-core/deepvariant/rundeepvariant/tests/tags.yml b/modules/nf-core/deepvariant/rundeepvariant/tests/tags.yml new file mode 100644 index 00000000..958b8e41 --- /dev/null +++ b/modules/nf-core/deepvariant/rundeepvariant/tests/tags.yml @@ -0,0 +1,2 @@ +deepvariant/rundeepvariant: + - modules/nf-core/deepvariant/rundeepvariant/** diff --git a/modules/nf-core/deepvariant/tests/tags.yml b/modules/nf-core/deepvariant/tests/tags.yml deleted file mode 100644 index 8e838c7b..00000000 --- a/modules/nf-core/deepvariant/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -deepvariant: - - modules/nf-core/deepvariant/** diff --git a/modules/nf-core/fastqc/environment.yml b/modules/nf-core/fastqc/environment.yml index 1787b38a..691d4c76 100644 --- a/modules/nf-core/fastqc/environment.yml +++ b/modules/nf-core/fastqc/environment.yml @@ -1,7 +1,5 @@ -name: fastqc channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::fastqc=0.12.1 diff --git a/modules/nf-core/fastqc/main.nf b/modules/nf-core/fastqc/main.nf index d79f1c86..d8989f48 100644 --- a/modules/nf-core/fastqc/main.nf +++ b/modules/nf-core/fastqc/main.nf @@ -26,7 +26,10 @@ process FASTQC { def rename_to = old_new_pairs*.join(' ').join(' ') def renamed_files = old_new_pairs.collect{ old_name, new_name -> new_name }.join(' ') - def memory_in_mb = MemoryUnit.of("${task.memory}").toUnit('MB') + // The total amount of allocated RAM by FastQC is equal to the number of threads defined (--threads) time the amount of RAM defined (--memory) + // https://github.com/s-andrews/FastQC/blob/1faeea0412093224d7f6a07f777fad60a5650795/fastqc#L211-L222 + // Dividing the task.memory by task.cpu allows to stick to requested amount of RAM in the label + def memory_in_mb = MemoryUnit.of("${task.memory}").toUnit('MB') / task.cpus // FastQC memory value allowed range (100 - 10000) def fastqc_memory = memory_in_mb > 10000 ? 10000 : (memory_in_mb < 100 ? 100 : memory_in_mb) diff --git a/modules/nf-core/fastqc/meta.yml b/modules/nf-core/fastqc/meta.yml index ee5507e0..4827da7a 100644 --- a/modules/nf-core/fastqc/meta.yml +++ b/modules/nf-core/fastqc/meta.yml @@ -16,35 +16,44 @@ tools: homepage: https://www.bioinformatics.babraham.ac.uk/projects/fastqc/ documentation: https://www.bioinformatics.babraham.ac.uk/projects/fastqc/Help/ licence: ["GPL-2.0-only"] + identifier: biotools:fastqc input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - reads: - type: file - description: | - List of input FastQ files of size 1 and 2 for single-end and paired-end data, - respectively. + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - reads: + type: file + description: | + List of input FastQ files of size 1 and 2 for single-end and paired-end data, + respectively. output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - html: - type: file - description: FastQC report - pattern: "*_{fastqc.html}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.html": + type: file + description: FastQC report + pattern: "*_{fastqc.html}" - zip: - type: file - description: FastQC report archive - pattern: "*_{fastqc.zip}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.zip": + type: file + description: FastQC report archive + pattern: "*_{fastqc.zip}" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@drpatelh" - "@grst" diff --git a/modules/nf-core/fastqc/tests/main.nf.test b/modules/nf-core/fastqc/tests/main.nf.test index 70edae4d..e9d79a07 100644 --- a/modules/nf-core/fastqc/tests/main.nf.test +++ b/modules/nf-core/fastqc/tests/main.nf.test @@ -23,17 +23,14 @@ nextflow_process { then { assertAll ( - { assert process.success }, - - // NOTE The report contains the date inside it, which means that the md5sum is stable per day, but not longer than that. So you can't md5sum it. - // looks like this:

    - // https://github.com/nf-core/modules/pull/3903#issuecomment-1743620039 - - { assert process.out.html[0][1] ==~ ".*/test_fastqc.html" }, - { assert process.out.zip[0][1] ==~ ".*/test_fastqc.zip" }, - { assert path(process.out.html[0][1]).text.contains("File typeConventional base calls") }, - - { assert snapshot(process.out.versions).match("fastqc_versions_single") } + { assert process.success }, + // NOTE The report contains the date inside it, which means that the md5sum is stable per day, but not longer than that. So you can't md5sum it. + // looks like this:
    Mon 2 Oct 2023
    test.gz
    + // https://github.com/nf-core/modules/pull/3903#issuecomment-1743620039 + { assert process.out.html[0][1] ==~ ".*/test_fastqc.html" }, + { assert process.out.zip[0][1] ==~ ".*/test_fastqc.zip" }, + { assert path(process.out.html[0][1]).text.contains("File typeConventional base calls") }, + { assert snapshot(process.out.versions).match() } ) } } @@ -54,16 +51,14 @@ nextflow_process { then { assertAll ( - { assert process.success }, - - { assert process.out.html[0][1][0] ==~ ".*/test_1_fastqc.html" }, - { assert process.out.html[0][1][1] ==~ ".*/test_2_fastqc.html" }, - { assert process.out.zip[0][1][0] ==~ ".*/test_1_fastqc.zip" }, - { assert process.out.zip[0][1][1] ==~ ".*/test_2_fastqc.zip" }, - { assert path(process.out.html[0][1][0]).text.contains("File typeConventional base calls") }, - { assert path(process.out.html[0][1][1]).text.contains("File typeConventional base calls") }, - - { assert snapshot(process.out.versions).match("fastqc_versions_paired") } + { assert process.success }, + { assert process.out.html[0][1][0] ==~ ".*/test_1_fastqc.html" }, + { assert process.out.html[0][1][1] ==~ ".*/test_2_fastqc.html" }, + { assert process.out.zip[0][1][0] ==~ ".*/test_1_fastqc.zip" }, + { assert process.out.zip[0][1][1] ==~ ".*/test_2_fastqc.zip" }, + { assert path(process.out.html[0][1][0]).text.contains("File typeConventional base calls") }, + { assert path(process.out.html[0][1][1]).text.contains("File typeConventional base calls") }, + { assert snapshot(process.out.versions).match() } ) } } @@ -83,13 +78,11 @@ nextflow_process { then { assertAll ( - { assert process.success }, - - { assert process.out.html[0][1] ==~ ".*/test_fastqc.html" }, - { assert process.out.zip[0][1] ==~ ".*/test_fastqc.zip" }, - { assert path(process.out.html[0][1]).text.contains("File typeConventional base calls") }, - - { assert snapshot(process.out.versions).match("fastqc_versions_interleaved") } + { assert process.success }, + { assert process.out.html[0][1] ==~ ".*/test_fastqc.html" }, + { assert process.out.zip[0][1] ==~ ".*/test_fastqc.zip" }, + { assert path(process.out.html[0][1]).text.contains("File typeConventional base calls") }, + { assert snapshot(process.out.versions).match() } ) } } @@ -109,13 +102,11 @@ nextflow_process { then { assertAll ( - { assert process.success }, - - { assert process.out.html[0][1] ==~ ".*/test_fastqc.html" }, - { assert process.out.zip[0][1] ==~ ".*/test_fastqc.zip" }, - { assert path(process.out.html[0][1]).text.contains("File typeConventional base calls") }, - - { assert snapshot(process.out.versions).match("fastqc_versions_bam") } + { assert process.success }, + { assert process.out.html[0][1] ==~ ".*/test_fastqc.html" }, + { assert process.out.zip[0][1] ==~ ".*/test_fastqc.zip" }, + { assert path(process.out.html[0][1]).text.contains("File typeConventional base calls") }, + { assert snapshot(process.out.versions).match() } ) } } @@ -138,22 +129,20 @@ nextflow_process { then { assertAll ( - { assert process.success }, - - { assert process.out.html[0][1][0] ==~ ".*/test_1_fastqc.html" }, - { assert process.out.html[0][1][1] ==~ ".*/test_2_fastqc.html" }, - { assert process.out.html[0][1][2] ==~ ".*/test_3_fastqc.html" }, - { assert process.out.html[0][1][3] ==~ ".*/test_4_fastqc.html" }, - { assert process.out.zip[0][1][0] ==~ ".*/test_1_fastqc.zip" }, - { assert process.out.zip[0][1][1] ==~ ".*/test_2_fastqc.zip" }, - { assert process.out.zip[0][1][2] ==~ ".*/test_3_fastqc.zip" }, - { assert process.out.zip[0][1][3] ==~ ".*/test_4_fastqc.zip" }, - { assert path(process.out.html[0][1][0]).text.contains("File typeConventional base calls") }, - { assert path(process.out.html[0][1][1]).text.contains("File typeConventional base calls") }, - { assert path(process.out.html[0][1][2]).text.contains("File typeConventional base calls") }, - { assert path(process.out.html[0][1][3]).text.contains("File typeConventional base calls") }, - - { assert snapshot(process.out.versions).match("fastqc_versions_multiple") } + { assert process.success }, + { assert process.out.html[0][1][0] ==~ ".*/test_1_fastqc.html" }, + { assert process.out.html[0][1][1] ==~ ".*/test_2_fastqc.html" }, + { assert process.out.html[0][1][2] ==~ ".*/test_3_fastqc.html" }, + { assert process.out.html[0][1][3] ==~ ".*/test_4_fastqc.html" }, + { assert process.out.zip[0][1][0] ==~ ".*/test_1_fastqc.zip" }, + { assert process.out.zip[0][1][1] ==~ ".*/test_2_fastqc.zip" }, + { assert process.out.zip[0][1][2] ==~ ".*/test_3_fastqc.zip" }, + { assert process.out.zip[0][1][3] ==~ ".*/test_4_fastqc.zip" }, + { assert path(process.out.html[0][1][0]).text.contains("File typeConventional base calls") }, + { assert path(process.out.html[0][1][1]).text.contains("File typeConventional base calls") }, + { assert path(process.out.html[0][1][2]).text.contains("File typeConventional base calls") }, + { assert path(process.out.html[0][1][3]).text.contains("File typeConventional base calls") }, + { assert snapshot(process.out.versions).match() } ) } } @@ -173,21 +162,18 @@ nextflow_process { then { assertAll ( - { assert process.success }, - - { assert process.out.html[0][1] ==~ ".*/mysample_fastqc.html" }, - { assert process.out.zip[0][1] ==~ ".*/mysample_fastqc.zip" }, - { assert path(process.out.html[0][1]).text.contains("File typeConventional base calls") }, - - { assert snapshot(process.out.versions).match("fastqc_versions_custom_prefix") } + { assert process.success }, + { assert process.out.html[0][1] ==~ ".*/mysample_fastqc.html" }, + { assert process.out.zip[0][1] ==~ ".*/mysample_fastqc.zip" }, + { assert path(process.out.html[0][1]).text.contains("File typeConventional base calls") }, + { assert snapshot(process.out.versions).match() } ) } } test("sarscov2 single-end [fastq] - stub") { - options "-stub" - + options "-stub" when { process { """ @@ -201,12 +187,123 @@ nextflow_process { then { assertAll ( - { assert process.success }, - { assert snapshot(process.out.html.collect { file(it[1]).getName() } + - process.out.zip.collect { file(it[1]).getName() } + - process.out.versions ).match("fastqc_stub") } + { assert process.success }, + { assert snapshot(process.out).match() } ) } } + test("sarscov2 paired-end [fastq] - stub") { + + options "-stub" + when { + process { + """ + input[0] = Channel.of([ + [id: 'test', single_end: false], // meta map + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] + ]) + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("sarscov2 interleaved [fastq] - stub") { + + options "-stub" + when { + process { + """ + input[0] = Channel.of([ + [id: 'test', single_end: false], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_interleaved.fastq.gz', checkIfExists: true) + ]) + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("sarscov2 paired-end [bam] - stub") { + + options "-stub" + when { + process { + """ + input[0] = Channel.of([ + [id: 'test', single_end: false], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true) + ]) + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("sarscov2 multiple [fastq] - stub") { + + options "-stub" + when { + process { + """ + input[0] = Channel.of([ + [id: 'test', single_end: false], // meta map + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test2_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test2_2.fastq.gz', checkIfExists: true) ] + ]) + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("sarscov2 custom_prefix - stub") { + + options "-stub" + when { + process { + """ + input[0] = Channel.of([ + [ id:'mysample', single_end:true ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) + ]) + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } } diff --git a/modules/nf-core/fastqc/tests/main.nf.test.snap b/modules/nf-core/fastqc/tests/main.nf.test.snap index 86f7c311..d5db3092 100644 --- a/modules/nf-core/fastqc/tests/main.nf.test.snap +++ b/modules/nf-core/fastqc/tests/main.nf.test.snap @@ -1,88 +1,392 @@ { - "fastqc_versions_interleaved": { + "sarscov2 custom_prefix": { "content": [ [ "versions.yml:md5,e1cc25ca8af856014824abd842e93978" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-01-31T17:40:07.293713" + "timestamp": "2024-07-22T11:02:16.374038" }, - "fastqc_stub": { + "sarscov2 single-end [fastq] - stub": { "content": [ - [ - "test.html", - "test.zip", - "versions.yml:md5,e1cc25ca8af856014824abd842e93978" - ] + { + "0": [ + [ + { + "id": "test", + "single_end": true + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": true + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + ], + "html": [ + [ + { + "id": "test", + "single_end": true + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + ], + "zip": [ + [ + { + "id": "test", + "single_end": true + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-07-22T11:02:24.993809" + }, + "sarscov2 custom_prefix - stub": { + "content": [ + { + "0": [ + [ + { + "id": "mysample", + "single_end": true + }, + "mysample.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "mysample", + "single_end": true + }, + "mysample.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + ], + "html": [ + [ + { + "id": "mysample", + "single_end": true + }, + "mysample.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + ], + "zip": [ + [ + { + "id": "mysample", + "single_end": true + }, + "mysample.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-01-31T17:31:01.425198" + "timestamp": "2024-07-22T11:03:10.93942" }, - "fastqc_versions_multiple": { + "sarscov2 interleaved [fastq]": { "content": [ [ "versions.yml:md5,e1cc25ca8af856014824abd842e93978" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-01-31T17:40:55.797907" + "timestamp": "2024-07-22T11:01:42.355718" }, - "fastqc_versions_bam": { + "sarscov2 paired-end [bam]": { "content": [ [ "versions.yml:md5,e1cc25ca8af856014824abd842e93978" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-01-31T17:40:26.795862" + "timestamp": "2024-07-22T11:01:53.276274" }, - "fastqc_versions_single": { + "sarscov2 multiple [fastq]": { "content": [ [ "versions.yml:md5,e1cc25ca8af856014824abd842e93978" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-01-31T17:39:27.043675" + "timestamp": "2024-07-22T11:02:05.527626" }, - "fastqc_versions_paired": { + "sarscov2 paired-end [fastq]": { "content": [ [ "versions.yml:md5,e1cc25ca8af856014824abd842e93978" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-07-22T11:01:31.188871" + }, + "sarscov2 paired-end [fastq] - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + ], + "html": [ + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + ], + "zip": [ + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-07-22T11:02:34.273566" + }, + "sarscov2 multiple [fastq] - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + ], + "html": [ + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + ], + "zip": [ + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-01-31T17:39:47.584191" + "timestamp": "2024-07-22T11:03:02.304411" }, - "fastqc_versions_custom_prefix": { + "sarscov2 single-end [fastq]": { "content": [ [ "versions.yml:md5,e1cc25ca8af856014824abd842e93978" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-07-22T11:01:19.095607" + }, + "sarscov2 interleaved [fastq] - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + ], + "html": [ + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + ], + "zip": [ + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-07-22T11:02:44.640184" + }, + "sarscov2 paired-end [bam] - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + ], + "html": [ + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + ], + "zip": [ + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-01-31T17:41:14.576531" + "timestamp": "2024-07-22T11:02:53.550742" } } \ No newline at end of file diff --git a/modules/nf-core/gawk/environment.yml b/modules/nf-core/gawk/environment.yml index 3d98a08b..315f6dc6 100644 --- a/modules/nf-core/gawk/environment.yml +++ b/modules/nf-core/gawk/environment.yml @@ -1,7 +1,5 @@ -name: gawk channels: - conda-forge - bioconda - - defaults dependencies: - conda-forge::gawk=5.3.0 diff --git a/modules/nf-core/gawk/main.nf b/modules/nf-core/gawk/main.nf index ca468929..7514246e 100644 --- a/modules/nf-core/gawk/main.nf +++ b/modules/nf-core/gawk/main.nf @@ -8,7 +8,7 @@ process GAWK { 'biocontainers/gawk:5.3.0' }" input: - tuple val(meta), path(input) + tuple val(meta), path(input, arity: '0..*') path(program_file) output: @@ -22,15 +22,19 @@ process GAWK { def args = task.ext.args ?: '' // args is used for the main arguments of the tool def args2 = task.ext.args2 ?: '' // args2 is used to specify a program when no program file has been given prefix = task.ext.prefix ?: "${meta.id}" - suffix = task.ext.suffix ?: "${input.getExtension()}" + suffix = task.ext.suffix ?: "${input.collect{ it.getExtension()}.get(0)}" // use the first extension of the input files - program = program_file ? "-f ${program_file}" : "${args2}" + program = program_file ? "-f ${program_file}" : "${args2}" + lst_gz = input.collect{ it.getExtension().endsWith("gz") } + unzip = lst_gz.contains(false) ? "" : "find ${input} -exec zcat {} \\; | \\" + input_cmd = unzip ? "" : "${input}" """ + ${unzip} awk \\ ${args} \\ ${program} \\ - ${input} \\ + ${input_cmd} \\ > ${prefix}.${suffix} cat <<-END_VERSIONS > versions.yml diff --git a/modules/nf-core/gawk/meta.yml b/modules/nf-core/gawk/meta.yml index 2b6033b0..2da41405 100644 --- a/modules/nf-core/gawk/meta.yml +++ b/modules/nf-core/gawk/meta.yml @@ -16,34 +16,41 @@ tools: documentation: "https://www.gnu.org/software/gawk/manual/" tool_dev_url: "https://www.gnu.org/prep/ftp.html" licence: ["GPL v3"] + identifier: "" input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - input: - type: file - description: The input file - Specify the logic that needs to be executed on this file on the `ext.args2` or in the program file - pattern: "*" - - program_file: - type: file - description: Optional file containing logic for awk to execute. If you don't wish to use a file, you can use `ext.args2` to specify the logic. - pattern: "*" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - input: + type: file + description: The input file - Specify the logic that needs to be executed on + this file on the `ext.args2` or in the program file. + If the files have a `.gz` extension, they will be unzipped using `zcat`. + pattern: "*" + - - program_file: + type: file + description: Optional file containing logic for awk to execute. If you don't + wish to use a file, you can use `ext.args2` to specify the logic. + pattern: "*" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - output: - type: file - description: The output file - specify the name of this file using `ext.prefix` and the extension using `ext.suffix` - pattern: "*" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - ${prefix}.${suffix}: + type: file + description: The output file - specify the name of this file using `ext.prefix` + and the extension using `ext.suffix` + pattern: "*" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@nvnieuwk" maintainers: diff --git a/modules/nf-core/gawk/tests/main.nf.test b/modules/nf-core/gawk/tests/main.nf.test index fce82ca9..5952e9a2 100644 --- a/modules/nf-core/gawk/tests/main.nf.test +++ b/modules/nf-core/gawk/tests/main.nf.test @@ -8,7 +8,7 @@ nextflow_process { tag "modules_nfcore" tag "gawk" - test("convert fasta to bed") { + test("Convert fasta to bed") { config "./nextflow.config" when { @@ -31,7 +31,7 @@ nextflow_process { } } - test("convert fasta to bed with program file") { + test("Convert fasta to bed with program file") { config "./nextflow_with_program_file.config" when { @@ -53,4 +53,52 @@ nextflow_process { ) } } + + test("Extract first column from multiple files") { + config "./nextflow_with_program_file.config" + tag "test" + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + [file(params.modules_testdata_base_path + 'generic/txt/hello.txt', checkIfExists: true), + file(params.modules_testdata_base_path + 'generic/txt/species_names.txt', checkIfExists: true)] + ] + input[1] = Channel.of('BEGIN {FS=" "}; {print \$1}').collectFile(name:"program.txt") + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("Unzip files before processing") { + config "./nextflow_with_program_file.config" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + [file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/vcf/NA12878_chrM.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/vcf/NA24385_sv.vcf.gz', checkIfExists: true)] + ] + input[1] = Channel.of('/^#CHROM/ { print \$1, \$10 }').collectFile(name:"column_header.txt") + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } } \ No newline at end of file diff --git a/modules/nf-core/gawk/tests/main.nf.test.snap b/modules/nf-core/gawk/tests/main.nf.test.snap index 4f3a759c..d396f738 100644 --- a/modules/nf-core/gawk/tests/main.nf.test.snap +++ b/modules/nf-core/gawk/tests/main.nf.test.snap @@ -1,5 +1,5 @@ { - "convert fasta to bed with program file": { + "Convert fasta to bed": { "content": [ { "0": [ @@ -28,11 +28,11 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.03.0" + "nextflow": "24.04.4" }, - "timestamp": "2024-05-17T15:20:02.495430346" + "timestamp": "2024-10-19T13:14:02.347809811" }, - "convert fasta to bed": { + "Convert fasta to bed with program file": { "content": [ { "0": [ @@ -61,8 +61,74 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.03.0" + "nextflow": "24.04.4" }, - "timestamp": "2024-05-17T15:19:53.291809648" + "timestamp": "2024-10-19T13:14:11.894616209" + }, + "Extract first column from multiple files": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.bed:md5,566c51674bd643227bb2d83e0963376d" + ] + ], + "1": [ + "versions.yml:md5,842acc9870dc8ac280954047cb2aa23a" + ], + "output": [ + [ + { + "id": "test" + }, + "test.bed:md5,566c51674bd643227bb2d83e0963376d" + ] + ], + "versions": [ + "versions.yml:md5,842acc9870dc8ac280954047cb2aa23a" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-19T22:04:47.729300129" + }, + "Unzip files before processing": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.bed:md5,1e31ebd4a060aab5433bbbd9ab24e403" + ] + ], + "1": [ + "versions.yml:md5,842acc9870dc8ac280954047cb2aa23a" + ], + "output": [ + [ + { + "id": "test" + }, + "test.bed:md5,1e31ebd4a060aab5433bbbd9ab24e403" + ] + ], + "versions": [ + "versions.yml:md5,842acc9870dc8ac280954047cb2aa23a" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-19T22:08:19.533527657" } -} \ No newline at end of file +} diff --git a/modules/nf-core/gfastats/environment.yml b/modules/nf-core/gfastats/environment.yml index 1c875ce0..b47bbdbb 100644 --- a/modules/nf-core/gfastats/environment.yml +++ b/modules/nf-core/gfastats/environment.yml @@ -1,7 +1,5 @@ -name: gfastats channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::gfastats=1.3.6 diff --git a/modules/nf-core/gfastats/meta.yml b/modules/nf-core/gfastats/meta.yml index d0e97a8f..a6213433 100644 --- a/modules/nf-core/gfastats/meta.yml +++ b/modules/nf-core/gfastats/meta.yml @@ -16,56 +16,67 @@ tools: documentation: "https://github.com/vgl-hub/gfastats/tree/main/instructions" tool_dev_url: "https://github.com/vgl-hub/gfastats" doi: "10.1093/bioinformatics/btac460" - licence: "['MIT']" + licence: ["MIT"] + identifier: biotools:gfastats input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - assembly: - type: file - description: Draft assembly file - pattern: "*.{fasta,fastq,gfa}(.gz)?" - - out_fmt: - type: string - description: Output format (fasta, fastq, gfa) - - genome_size: - type: integer - description: estimated genome size (bp) for NG* statistics (optional). - - target: - type: string - description: target specific sequence by header, optionally with coordinates (optional). - - agpfile: - type: file - description: converts input agp to path and replaces existing paths. - - include_bed: - type: file - description: generates output on a subset list of headers or coordinates in 0-based bed format. - - exclude_bed: - type: file - description: opposite of --include-bed. They can be combined (no coordinates). - - instructions: - type: file - description: set of instructions provided as an ordered list. + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - assembly: + type: file + description: Draft assembly file + pattern: "*.{fasta,fastq,gfa}(.gz)?" + - - out_fmt: + type: string + description: Output format (fasta, fastq, gfa) + - - genome_size: + type: integer + description: estimated genome size (bp) for NG* statistics (optional). + - - target: + type: string + description: target specific sequence by header, optionally with coordinates + (optional). + - - agpfile: + type: file + description: converts input agp to path and replaces existing paths. + - - include_bed: + type: file + description: generates output on a subset list of headers or coordinates in + 0-based bed format. + - - exclude_bed: + type: file + description: opposite of --include-bed. They can be combined (no coordinates). + - - instructions: + type: file + description: set of instructions provided as an ordered list. output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - assembly_summary: - type: file - description: Assembly summary statistics file - pattern: "*.assembly_summary" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.assembly_summary": + type: file + description: Assembly summary statistics file + pattern: "*.assembly_summary" - assembly: - type: file - description: The assembly as modified by gfastats - pattern: "*.{fasta,fastq,gfa}.gz" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.${out_fmt}.gz": + type: file + description: The assembly as modified by gfastats + pattern: "*.{fasta,fastq,gfa}.gz" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@mahesh-panchal" maintainers: diff --git a/modules/nf-core/glnexus/glnexus.diff b/modules/nf-core/glnexus/glnexus.diff index d7324596..8684c709 100644 --- a/modules/nf-core/glnexus/glnexus.diff +++ b/modules/nf-core/glnexus/glnexus.diff @@ -3,8 +3,8 @@ Changes in module 'nf-core/glnexus' Changes in 'glnexus/main.nf': --- modules/nf-core/glnexus/main.nf +++ modules/nf-core/glnexus/main.nf -@@ -3,12 +3,11 @@ - label 'process_medium' +@@ -3,9 +3,7 @@ + label 'process_high' conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? @@ -14,26 +14,8 @@ Changes in 'glnexus/main.nf': input: tuple val(meta), path(gvcfs) -+ tuple val(meta2), path(bed) - - output: - tuple val(meta), path("*.bcf"), emit: bcf -@@ -20,6 +19,7 @@ - script: - def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" -+ def regions = bed ? "--bed ${bed}" : "" - - // Make list of GVCFs to merge - def input = gvcfs.collect { it.toString() } -@@ -33,6 +33,7 @@ - glnexus_cli \\ - --threads $task.cpus \\ - --mem-gbytes $avail_mem \\ -+ $regions \\ - $args \\ - ${input.join(' ')} \\ - > ${prefix}.bcf 'modules/nf-core/glnexus/environment.yml' is unchanged +'modules/nf-core/glnexus/tests/main.nf.test.snap' is unchanged +'modules/nf-core/glnexus/tests/main.nf.test' is unchanged ************************************************************ diff --git a/modules/nf-core/glnexus/main.nf b/modules/nf-core/glnexus/main.nf index 77754301..59857115 100644 --- a/modules/nf-core/glnexus/main.nf +++ b/modules/nf-core/glnexus/main.nf @@ -1,6 +1,6 @@ process GLNEXUS { tag "$meta.id" - label 'process_medium' + label 'process_high' conda "${moduleDir}/environment.yml" container "pacbio/glnexus:v1.4.3" // Biocontainers version does not have jemalloc diff --git a/modules/nf-core/glnexus/meta.yml b/modules/nf-core/glnexus/meta.yml index a79fc63c..8f18bf3f 100644 --- a/modules/nf-core/glnexus/meta.yml +++ b/modules/nf-core/glnexus/meta.yml @@ -23,6 +23,15 @@ input: type: list description: Input genomic vcf files pattern: "*.{gvcf,gvcf.gz,g.vcf,g.vcf.gz}" + - - meta2: + type: map + description: | + Groovy Map containing regions information + e.g. [ id:'test' ] + - bed: + type: list + description: Input BED file + pattern: "*.bed" output: - bcf: - meta: diff --git a/modules/nf-core/glnexus/tests/main.nf.test b/modules/nf-core/glnexus/tests/main.nf.test new file mode 100644 index 00000000..79f7adc8 --- /dev/null +++ b/modules/nf-core/glnexus/tests/main.nf.test @@ -0,0 +1,97 @@ +nextflow_process { + + name "Test Process GLNEXUS" + script "../main.nf" + process "GLNEXUS" + + tag "modules" + tag "modules_nfcore" + tag "glnexus" + + test("vcfs, []") { + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test' ], + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test.genome.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test2.genome.vcf.gz', checkIfExists: true), + ] + ]) + input[1] = [[],[]] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("vcfs, bed") { + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test' ], + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test.genome.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test2.genome.vcf.gz', checkIfExists: true), + ] + ]) + input[1] = [ + [ id:'region' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.bed', checkIfExists: true), + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("vcfs, bed - stub") { + + options "-stub" + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test' ], + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test.genome.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test2.genome.vcf.gz', checkIfExists: true), + ] + ]) + input[1] = [ + [ id:'region' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.bed', checkIfExists: true), + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} diff --git a/modules/nf-core/glnexus/tests/main.nf.test.snap b/modules/nf-core/glnexus/tests/main.nf.test.snap new file mode 100644 index 00000000..3d2e13f0 --- /dev/null +++ b/modules/nf-core/glnexus/tests/main.nf.test.snap @@ -0,0 +1,101 @@ +{ + "vcfs, bed - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.bcf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,dfeeb7f12f37cbef54a798614b83ffb0" + ], + "bcf": [ + [ + { + "id": "test" + }, + "test.bcf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,dfeeb7f12f37cbef54a798614b83ffb0" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-29T12:17:01.253378301" + }, + "vcfs, bed": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.bcf:md5,62b2cea9c1b92ac63645cb031eea46fc" + ] + ], + "1": [ + "versions.yml:md5,dfeeb7f12f37cbef54a798614b83ffb0" + ], + "bcf": [ + [ + { + "id": "test" + }, + "test.bcf:md5,62b2cea9c1b92ac63645cb031eea46fc" + ] + ], + "versions": [ + "versions.yml:md5,dfeeb7f12f37cbef54a798614b83ffb0" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-29T12:16:53.859544065" + }, + "vcfs, []": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.bcf:md5,62b2cea9c1b92ac63645cb031eea46fc" + ] + ], + "1": [ + "versions.yml:md5,dfeeb7f12f37cbef54a798614b83ffb0" + ], + "bcf": [ + [ + { + "id": "test" + }, + "test.bcf:md5,62b2cea9c1b92ac63645cb031eea46fc" + ] + ], + "versions": [ + "versions.yml:md5,dfeeb7f12f37cbef54a798614b83ffb0" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-29T12:13:03.068397129" + } +} \ No newline at end of file diff --git a/modules/nf-core/gunzip/environment.yml b/modules/nf-core/gunzip/environment.yml index dfc02a7b..c7794856 100644 --- a/modules/nf-core/gunzip/environment.yml +++ b/modules/nf-core/gunzip/environment.yml @@ -1,8 +1,6 @@ -name: gunzip channels: - conda-forge - bioconda - - defaults dependencies: - conda-forge::grep=3.11 - conda-forge::sed=4.8 diff --git a/modules/nf-core/gunzip/meta.yml b/modules/nf-core/gunzip/meta.yml index f32973a0..9066c035 100644 --- a/modules/nf-core/gunzip/meta.yml +++ b/modules/nf-core/gunzip/meta.yml @@ -10,25 +10,32 @@ tools: gzip is a file format and a software application used for file compression and decompression. documentation: https://www.gnu.org/software/gzip/manual/gzip.html licence: ["GPL-3.0-or-later"] + identifier: "" input: - - meta: - type: map - description: | - Optional groovy Map containing meta information - e.g. [ id:'test', single_end:false ] - - archive: - type: file - description: File to be compressed/uncompressed - pattern: "*.*" + - - meta: + type: map + description: | + Optional groovy Map containing meta information + e.g. [ id:'test', single_end:false ] + - archive: + type: file + description: File to be compressed/uncompressed + pattern: "*.*" output: - gunzip: - type: file - description: Compressed/uncompressed file - pattern: "*.*" + - meta: + type: file + description: Compressed/uncompressed file + pattern: "*.*" + - $gunzip: + type: file + description: Compressed/uncompressed file + pattern: "*.*" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@joseespinosa" - "@drpatelh" diff --git a/modules/nf-core/minimap2/align/environment.yml b/modules/nf-core/minimap2/align/environment.yml index 41e8fe9f..dc6476b7 100644 --- a/modules/nf-core/minimap2/align/environment.yml +++ b/modules/nf-core/minimap2/align/environment.yml @@ -1,9 +1,6 @@ -name: minimap2_align - channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::htslib=1.20 diff --git a/modules/nf-core/minimap2/align/meta.yml b/modules/nf-core/minimap2/align/meta.yml index 8996f881..a4cfc891 100644 --- a/modules/nf-core/minimap2/align/meta.yml +++ b/modules/nf-core/minimap2/align/meta.yml @@ -14,62 +14,77 @@ tools: homepage: https://github.com/lh3/minimap2 documentation: https://github.com/lh3/minimap2#uguide licence: ["MIT"] + identifier: "" input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - reads: - type: file - description: | - List of input FASTA or FASTQ files of size 1 and 2 for single-end - and paired-end data, respectively. - - meta2: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'test_ref'] - - reference: - type: file - description: | - Reference database in FASTA format. - - bam_format: - type: boolean - description: Specify that output should be in BAM format - - bam_index_extension: - type: string - description: BAM alignment index extension (e.g. "bai") - - cigar_paf_format: - type: boolean - description: Specify that output CIGAR should be in PAF format - - cigar_bam: - type: boolean - description: | - Write CIGAR with >65535 ops at the CG tag. This is recommended when - doing XYZ (https://github.com/lh3/minimap2#working-with-65535-cigar-operations) + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - reads: + type: file + description: | + List of input FASTA or FASTQ files of size 1 and 2 for single-end + and paired-end data, respectively. + - - meta2: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'test_ref'] + - reference: + type: file + description: | + Reference database in FASTA format. + - - bam_format: + type: boolean + description: Specify that output should be in BAM format + - - bam_index_extension: + type: string + description: BAM alignment index extension (e.g. "bai") + - - cigar_paf_format: + type: boolean + description: Specify that output CIGAR should be in PAF format + - - cigar_bam: + type: boolean + description: | + Write CIGAR with >65535 ops at the CG tag. This is recommended when + doing XYZ (https://github.com/lh3/minimap2#working-with-65535-cigar-operations) output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - paf: - type: file - description: Alignment in PAF format - pattern: "*.paf" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.paf": + type: file + description: Alignment in PAF format + pattern: "*.paf" - bam: - type: file - description: Alignment in BAM format - pattern: "*.bam" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.bam": + type: file + description: Alignment in BAM format + pattern: "*.bam" - index: - type: file - description: BAM alignment index - pattern: "*.bam.*" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.bam.${bam_index_extension}": + type: file + description: BAM alignment index + pattern: "*.bam.*" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@heuermh" - "@sofstam" diff --git a/modules/nf-core/minimap2/index/environment.yml b/modules/nf-core/minimap2/index/environment.yml index 8a912a12..d1c1b471 100644 --- a/modules/nf-core/minimap2/index/environment.yml +++ b/modules/nf-core/minimap2/index/environment.yml @@ -1,7 +1,5 @@ -name: minimap2_index channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::minimap2=2.28 diff --git a/modules/nf-core/minimap2/index/meta.yml b/modules/nf-core/minimap2/index/meta.yml index 1d29e3f2..57c80e29 100644 --- a/modules/nf-core/minimap2/index/meta.yml +++ b/modules/nf-core/minimap2/index/meta.yml @@ -11,30 +11,33 @@ tools: homepage: https://github.com/lh3/minimap2 documentation: https://github.com/lh3/minimap2#uguide licence: ["MIT"] + identifier: "" input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - fasta: - type: file - description: | - Reference database in FASTA format. + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - fasta: + type: file + description: | + Reference database in FASTA format. output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - index: - type: file - description: Minimap2 fasta index. - pattern: "*.mmi" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.mmi": + type: file + description: Minimap2 fasta index. + pattern: "*.mmi" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@yuukiiwa" - "@drpatelh" diff --git a/modules/nf-core/modkit/pileup/environment.yml b/modules/nf-core/modkit/pileup/environment.yml index 95074539..1343a05b 100644 --- a/modules/nf-core/modkit/pileup/environment.yml +++ b/modules/nf-core/modkit/pileup/environment.yml @@ -1,7 +1,5 @@ -name: modkit_pileup channels: - conda-forge - bioconda - - defaults dependencies: - ont-modkit=0.3.0 diff --git a/modules/nf-core/modkit/pileup/meta.yml b/modules/nf-core/modkit/pileup/meta.yml index eb2875f4..2f274d0c 100644 --- a/modules/nf-core/modkit/pileup/meta.yml +++ b/modules/nf-core/modkit/pileup/meta.yml @@ -6,67 +6,83 @@ keywords: - long-read tools: - "modkit": - description: A bioinformatics tool for working with modified bases in Oxford Nanopore sequencing data + description: A bioinformatics tool for working with modified bases in Oxford Nanopore + sequencing data homepage: https://github.com/nanoporetech/modkit documentation: https://github.com/nanoporetech/modkit tool_dev_url: https://github.com/nanoporetech/modkit licence: ["Oxford Nanopore Technologies PLC. Public License Version 1.0"] + identifier: "" input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. `[ id:'test', single_end:false ]` - - bam: - type: file - description: Sorted BAM/CRAM file - pattern: "*.{bam,cram}" - - bai: - type: file - description: Associated index file for BAM - pattern: "*.bai" - - meta2: - type: map - description: | - Groovy Map containing reference information - e.g. `[ id:'hg38' ]` - - fasta: - type: file - description: Reference sequence in FASTA format. Required for motif (e.g. CpG) filtering - pattern: "*.fasta" - - meta3: - type: map - description: | - Groovy Map containing BED file information - e.g. `[ id:'regions' ]` - - bed: - type: file - description: - BED file that will restrict threshold estimation and pileup results to positions overlapping intervals in the - file - pattern: "*.bed" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'test', single_end:false ]` + - bam: + type: file + description: Sorted BAM/CRAM file + pattern: "*.{bam,cram}" + - bai: + type: file + description: Associated index file for BAM + pattern: "*.bai" + - - meta2: + type: map + description: | + Groovy Map containing reference information + e.g. `[ id:'hg38' ]` + - fasta: + type: file + description: Reference sequence in FASTA format. Required for motif (e.g. CpG) + filtering + pattern: "*.fasta" + - - meta3: + type: map + description: | + Groovy Map containing BED file information + e.g. `[ id:'regions' ]` + - bed: + type: file + description: BED file that will restrict threshold estimation and pileup results + to positions overlapping intervals in the file + pattern: "*.bed" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. `[ id:'test', single_end:false ]` - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - bed: - type: file - description: bedMethyl output file(s) - pattern: "*.bed" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'test', single_end:false ]` + - "*.bed": + type: file + description: bedMethyl output file(s) + pattern: "*.bed" - bedgraph: - type: file - description: bedgraph output files - pattern: "*.bedgraph" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'test', single_end:false ]` + - "*.bedgraph": + type: file + description: bedgraph output files + pattern: "*.bedgraph" - log: - type: file - description: File for debug logs to be written to - pattern: "*.log" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'test', single_end:false ]` + - "*.log": + type: file + description: File for debug logs to be written to + pattern: "*.log" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@Michal-Babins" - "@fellen31" diff --git a/modules/nf-core/mosdepth/environment.yml b/modules/nf-core/mosdepth/environment.yml index bcb9d64a..e9379873 100644 --- a/modules/nf-core/mosdepth/environment.yml +++ b/modules/nf-core/mosdepth/environment.yml @@ -1,8 +1,6 @@ -name: mosdepth channels: - conda-forge - bioconda - - defaults dependencies: # renovate: datasource=conda depName=bioconda/mosdepth - mosdepth=0.3.8 diff --git a/modules/nf-core/mosdepth/meta.yml b/modules/nf-core/mosdepth/meta.yml index 9caaf2cd..dc783c90 100644 --- a/modules/nf-core/mosdepth/meta.yml +++ b/modules/nf-core/mosdepth/meta.yml @@ -12,91 +12,161 @@ tools: documentation: https://github.com/brentp/mosdepth doi: 10.1093/bioinformatics/btx699 licence: ["MIT"] + identifier: biotools:mosdepth input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - bam: - type: file - description: Input BAM/CRAM file - pattern: "*.{bam,cram}" - - bai: - type: file - description: Index for BAM/CRAM file - pattern: "*.{bai,crai}" - - bed: - type: file - description: BED file with intersected intervals - pattern: "*.{bed}" - - meta2: - type: map - description: | - Groovy Map containing bed information - e.g. [ id:'test' ] - - fasta: - type: file - description: Reference genome FASTA file - pattern: "*.{fa,fasta}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - bam: + type: file + description: Input BAM/CRAM file + pattern: "*.{bam,cram}" + - bai: + type: file + description: Index for BAM/CRAM file + pattern: "*.{bai,crai}" + - bed: + type: file + description: BED file with intersected intervals + pattern: "*.{bed}" + - - meta2: + type: map + description: | + Groovy Map containing bed information + e.g. [ id:'test' ] + - fasta: + type: file + description: Reference genome FASTA file + pattern: "*.{fa,fasta}" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - global_txt: - type: file - description: Text file with global cumulative coverage distribution - pattern: "*.{global.dist.txt}" - - regions_txt: - type: file - description: Text file with region cumulative coverage distribution - pattern: "*.{region.dist.txt}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.global.dist.txt": + type: file + description: Text file with global cumulative coverage distribution + pattern: "*.{global.dist.txt}" - summary_txt: - type: file - description: Text file with summary mean depths per chromosome and regions - pattern: "*.{summary.txt}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.summary.txt": + type: file + description: Text file with summary mean depths per chromosome and regions + pattern: "*.{summary.txt}" + - regions_txt: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.region.dist.txt": + type: file + description: Text file with region cumulative coverage distribution + pattern: "*.{region.dist.txt}" + - per_base_d4: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.per-base.d4": + type: file + description: D4 file with per-base coverage + pattern: "*.{per-base.d4}" - per_base_bed: - type: file - description: BED file with per-base coverage - pattern: "*.{per-base.bed.gz}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.per-base.bed.gz": + type: file + description: BED file with per-base coverage + pattern: "*.{per-base.bed.gz}" - per_base_csi: - type: file - description: Index file for BED file with per-base coverage - pattern: "*.{per-base.bed.gz.csi}" - - per_base_d4: - type: file - description: D4 file with per-base coverage - pattern: "*.{per-base.d4}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.per-base.bed.gz.csi": + type: file + description: Index file for BED file with per-base coverage + pattern: "*.{per-base.bed.gz.csi}" - regions_bed: - type: file - description: BED file with per-region coverage - pattern: "*.{regions.bed.gz}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.regions.bed.gz": + type: file + description: BED file with per-region coverage + pattern: "*.{regions.bed.gz}" - regions_csi: - type: file - description: Index file for BED file with per-region coverage - pattern: "*.{regions.bed.gz.csi}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.regions.bed.gz.csi": + type: file + description: Index file for BED file with per-region coverage + pattern: "*.{regions.bed.gz.csi}" - quantized_bed: - type: file - description: BED file with binned coverage - pattern: "*.{quantized.bed.gz}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.quantized.bed.gz": + type: file + description: BED file with binned coverage + pattern: "*.{quantized.bed.gz}" - quantized_csi: - type: file - description: Index file for BED file with binned coverage - pattern: "*.{quantized.bed.gz.csi}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.quantized.bed.gz.csi": + type: file + description: Index file for BED file with binned coverage + pattern: "*.{quantized.bed.gz.csi}" - thresholds_bed: - type: file - description: BED file with the number of bases in each region that are covered at or above each threshold - pattern: "*.{thresholds.bed.gz}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.thresholds.bed.gz": + type: file + description: BED file with the number of bases in each region that are covered + at or above each threshold + pattern: "*.{thresholds.bed.gz}" - thresholds_csi: - type: file - description: Index file for BED file with threshold coverage - pattern: "*.{thresholds.bed.gz.csi}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.thresholds.bed.gz.csi": + type: file + description: Index file for BED file with threshold coverage + pattern: "*.{thresholds.bed.gz.csi}" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@joseespinosa" - "@drpatelh" diff --git a/modules/nf-core/mosdepth/tests/main.nf.test b/modules/nf-core/mosdepth/tests/main.nf.test index 21eebc1f..0b3c860d 100644 --- a/modules/nf-core/mosdepth/tests/main.nf.test +++ b/modules/nf-core/mosdepth/tests/main.nf.test @@ -15,8 +15,8 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:true ], - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true), - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_bam_bai'], checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), [] ] input[1] = [[],[]] @@ -40,9 +40,9 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:true ], - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true), - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_bam_bai'], checkIfExists: true), - file(params.test_data['homo_sapiens']['genome']['genome_bed'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.bed', checkIfExists: true) ] input[1] = [[],[]] """ @@ -65,13 +65,13 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:true ], - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_cram'], checkIfExists: true), - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_cram_crai'], checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram.crai', checkIfExists: true), [] ] input[1] = [ [ id:'test' ], - file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) ] """ } @@ -93,13 +93,13 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:true ], - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_cram'], checkIfExists: true), - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_cram_crai'], checkIfExists: true), - file(params.test_data['homo_sapiens']['genome']['genome_bed'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram.crai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.bed', checkIfExists: true) ] input[1] = [ [ id:'test' ], - file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) ] """ } @@ -122,8 +122,8 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:true ], - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true), - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_bam_bai'], checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), [] ] input[1] = [[],[]] @@ -148,8 +148,8 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:true ], - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true), - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_bam_bai'], checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), [] ] input[1] = [[],[]] @@ -174,9 +174,9 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:true ], - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true), - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_bam_bai'], checkIfExists: true), - file(params.test_data['homo_sapiens']['genome']['genome_bed'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.bed', checkIfExists: true) ] input[1] = [[],[]] """ @@ -200,9 +200,9 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:true ], - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true), - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_bam_bai'], checkIfExists: true), - file(params.test_data['homo_sapiens']['genome']['genome_bed'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.bed', checkIfExists: true) ] input[1] = [[],[]] """ @@ -225,9 +225,9 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:true ], - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true), - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_bam_bai'], checkIfExists: true), - file(params.test_data['homo_sapiens']['genome']['genome_bed'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.bed', checkIfExists: true) ] input[1] = [[],[]] """ diff --git a/modules/nf-core/multiqc/environment.yml b/modules/nf-core/multiqc/environment.yml index ca39fb67..6f5b867b 100644 --- a/modules/nf-core/multiqc/environment.yml +++ b/modules/nf-core/multiqc/environment.yml @@ -1,7 +1,5 @@ -name: multiqc channels: - conda-forge - bioconda - - defaults dependencies: - - bioconda::multiqc=1.21 + - bioconda::multiqc=1.25.1 diff --git a/modules/nf-core/multiqc/main.nf b/modules/nf-core/multiqc/main.nf index 47ac352f..cc0643e1 100644 --- a/modules/nf-core/multiqc/main.nf +++ b/modules/nf-core/multiqc/main.nf @@ -3,14 +3,16 @@ process MULTIQC { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/multiqc:1.21--pyhdfd78af_0' : - 'biocontainers/multiqc:1.21--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/multiqc:1.25.1--pyhdfd78af_0' : + 'biocontainers/multiqc:1.25.1--pyhdfd78af_0' }" input: path multiqc_files, stageAs: "?/*" path(multiqc_config) path(extra_multiqc_config) path(multiqc_logo) + path(replace_names) + path(sample_names) output: path "*multiqc_report.html", emit: report @@ -23,16 +25,22 @@ process MULTIQC { script: def args = task.ext.args ?: '' + def prefix = task.ext.prefix ? "--filename ${task.ext.prefix}.html" : '' def config = multiqc_config ? "--config $multiqc_config" : '' def extra_config = extra_multiqc_config ? "--config $extra_multiqc_config" : '' - def logo = multiqc_logo ? /--cl-config 'custom_logo: "${multiqc_logo}"'/ : '' + def logo = multiqc_logo ? "--cl-config 'custom_logo: \"${multiqc_logo}\"'" : '' + def replace = replace_names ? "--replace-names ${replace_names}" : '' + def samples = sample_names ? "--sample-names ${sample_names}" : '' """ multiqc \\ --force \\ $args \\ $config \\ + $prefix \\ $extra_config \\ $logo \\ + $replace \\ + $samples \\ . cat <<-END_VERSIONS > versions.yml @@ -44,7 +52,7 @@ process MULTIQC { stub: """ mkdir multiqc_data - touch multiqc_plots + mkdir multiqc_plots touch multiqc_report.html cat <<-END_VERSIONS > versions.yml diff --git a/modules/nf-core/multiqc/meta.yml b/modules/nf-core/multiqc/meta.yml index 45a9bc35..b16c1879 100644 --- a/modules/nf-core/multiqc/meta.yml +++ b/modules/nf-core/multiqc/meta.yml @@ -1,5 +1,6 @@ name: multiqc -description: Aggregate results from bioinformatics analyses across many samples into a single report +description: Aggregate results from bioinformatics analyses across many samples into + a single report keywords: - QC - bioinformatics tools @@ -12,40 +13,59 @@ tools: homepage: https://multiqc.info/ documentation: https://multiqc.info/docs/ licence: ["GPL-3.0-or-later"] + identifier: biotools:multiqc input: - - multiqc_files: - type: file - description: | - List of reports / files recognised by MultiQC, for example the html and zip output of FastQC - - multiqc_config: - type: file - description: Optional config yml for MultiQC - pattern: "*.{yml,yaml}" - - extra_multiqc_config: - type: file - description: Second optional config yml for MultiQC. Will override common sections in multiqc_config. - pattern: "*.{yml,yaml}" - - multiqc_logo: - type: file - description: Optional logo file for MultiQC - pattern: "*.{png}" + - - multiqc_files: + type: file + description: | + List of reports / files recognised by MultiQC, for example the html and zip output of FastQC + - - multiqc_config: + type: file + description: Optional config yml for MultiQC + pattern: "*.{yml,yaml}" + - - extra_multiqc_config: + type: file + description: Second optional config yml for MultiQC. Will override common sections + in multiqc_config. + pattern: "*.{yml,yaml}" + - - multiqc_logo: + type: file + description: Optional logo file for MultiQC + pattern: "*.{png}" + - - replace_names: + type: file + description: | + Optional two-column sample renaming file. First column a set of + patterns, second column a set of corresponding replacements. Passed via + MultiQC's `--replace-names` option. + pattern: "*.{tsv}" + - - sample_names: + type: file + description: | + Optional TSV file with headers, passed to the MultiQC --sample_names + argument. + pattern: "*.{tsv}" output: - report: - type: file - description: MultiQC report file - pattern: "multiqc_report.html" + - "*multiqc_report.html": + type: file + description: MultiQC report file + pattern: "multiqc_report.html" - data: - type: directory - description: MultiQC data dir - pattern: "multiqc_data" + - "*_data": + type: directory + description: MultiQC data dir + pattern: "multiqc_data" - plots: - type: file - description: Plots created by MultiQC - pattern: "*_data" + - "*_plots": + type: file + description: Plots created by MultiQC + pattern: "*_data" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@abhi18av" - "@bunop" diff --git a/modules/nf-core/multiqc/tests/main.nf.test b/modules/nf-core/multiqc/tests/main.nf.test index f1c4242e..33316a7d 100644 --- a/modules/nf-core/multiqc/tests/main.nf.test +++ b/modules/nf-core/multiqc/tests/main.nf.test @@ -8,6 +8,8 @@ nextflow_process { tag "modules_nfcore" tag "multiqc" + config "./nextflow.config" + test("sarscov2 single-end [fastqc]") { when { @@ -17,6 +19,8 @@ nextflow_process { input[1] = [] input[2] = [] input[3] = [] + input[4] = [] + input[5] = [] """ } } @@ -41,6 +45,8 @@ nextflow_process { input[1] = Channel.of(file("https://github.com/nf-core/tools/raw/dev/nf_core/pipeline-template/assets/multiqc_config.yml", checkIfExists: true)) input[2] = [] input[3] = [] + input[4] = [] + input[5] = [] """ } } @@ -66,6 +72,8 @@ nextflow_process { input[1] = [] input[2] = [] input[3] = [] + input[4] = [] + input[5] = [] """ } } diff --git a/modules/nf-core/multiqc/tests/main.nf.test.snap b/modules/nf-core/multiqc/tests/main.nf.test.snap index bfebd802..2fcbb5ff 100644 --- a/modules/nf-core/multiqc/tests/main.nf.test.snap +++ b/modules/nf-core/multiqc/tests/main.nf.test.snap @@ -2,14 +2,14 @@ "multiqc_versions_single": { "content": [ [ - "versions.yml:md5,21f35ee29416b9b3073c28733efe4b7d" + "versions.yml:md5,41f391dcedce7f93ca188f3a3ffa0916" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-02-29T08:48:55.657331" + "timestamp": "2024-10-02T17:51:46.317523" }, "multiqc_stub": { "content": [ @@ -17,25 +17,25 @@ "multiqc_report.html", "multiqc_data", "multiqc_plots", - "versions.yml:md5,21f35ee29416b9b3073c28733efe4b7d" + "versions.yml:md5,41f391dcedce7f93ca188f3a3ffa0916" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-02-29T08:49:49.071937" + "timestamp": "2024-10-02T17:52:20.680978" }, "multiqc_versions_config": { "content": [ [ - "versions.yml:md5,21f35ee29416b9b3073c28733efe4b7d" + "versions.yml:md5,41f391dcedce7f93ca188f3a3ffa0916" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-02-29T08:49:25.457567" + "timestamp": "2024-10-02T17:52:09.185842" } } \ No newline at end of file diff --git a/modules/nf-core/multiqc/tests/nextflow.config b/modules/nf-core/multiqc/tests/nextflow.config new file mode 100644 index 00000000..c537a6a3 --- /dev/null +++ b/modules/nf-core/multiqc/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: 'MULTIQC' { + ext.prefix = null + } +} diff --git a/modules/nf-core/paraphase/meta.yml b/modules/nf-core/paraphase/meta.yml index e6cc6d63..50c3c9e0 100644 --- a/modules/nf-core/paraphase/meta.yml +++ b/modules/nf-core/paraphase/meta.yml @@ -1,4 +1,3 @@ ---- # yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/meta-schema.json name: "paraphase" description: "HiFi-based caller for highly homologous genes" @@ -14,73 +13,96 @@ tools: tool_dev_url: "https://github.com/PacificBiosciences/paraphase" doi: "10.1016/j.ajhg.2023.01.001" licence: ["BSD-3-clause-Clear"] + identifier: "" input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. `[ id:'sample1', single_end:true ]` - - - bam: - type: file - description: Sorted BAM file - pattern: "*.bam" - - - bai: - type: file - description: Index of BAM file - pattern: "*.bai" - - - meta2: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'genome' ] - - fasta: - type: file - description: The reference fasta file - pattern: "*.fasta" - - meta3: - type: map - description: | - Groovy Map containing config information - e.g. [ id:'config' ] - - config: - type: file - description: Config file - pattern: "*.yaml" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:true ]` + - bam: + type: file + description: Sorted BAM file + pattern: "*.bam" + - bai: + type: file + description: Index of BAM file + pattern: "*.bai" + - - meta2: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'genome' ] + - fasta: + type: file + description: The reference fasta file + pattern: "*.fasta" + - - meta3: + type: map + description: | + Groovy Map containing config information + e.g. [ id:'config' ] + - config: + type: file + description: Config file + pattern: "*.yaml" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. `[ id:'sample1', single_end:true ]` - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - json: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:true ]` + - "*.paraphase.json": + type: file + description: Summary of haplotype and variant calls + pattern: "*.paraphase.json" - bam: - type: file - description: (re)aligned BAM file - pattern: "*.paraphase.bam" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:true ]` + - "*.paraphase.bam": + type: file + description: (re)aligned BAM file + pattern: "*.paraphase.bam" - bai: - type: file - description: Index of (re)aligned BAM file - pattern: "*.paraphase.bam.bai" - - json: - type: file - description: Summary of haplotype and variant calls - pattern: "*.paraphase.json" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:true ]` + - "*.paraphase.bam.bai": + type: file + description: Index of (re)aligned BAM file + pattern: "*.paraphase.bam.bai" - vcf: - type: file - description: compressed VCF file(s) per gene - pattern: "*.vcf.gz" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:true ]` + - ${prefix}_paraphase_vcfs/*.vcf.gz: + type: file + description: compressed VCF file(s) per gene + pattern: "*.vcf.gz" - vcf_index: - type: file - description: compressed VCF file index - pattern: "*.vcf.gz.{tbi,csi}" - + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:true ]` + - ${prefix}_paraphase_vcfs/*.vcf.gz.{csi,tbi}: + type: file + description: compressed VCF file index + pattern: "*.vcf.gz.{tbi,csi}" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@fellen31" maintainers: diff --git a/modules/nf-core/samtools/faidx/environment.yml b/modules/nf-core/samtools/faidx/environment.yml index f8450fa5..62054fc9 100644 --- a/modules/nf-core/samtools/faidx/environment.yml +++ b/modules/nf-core/samtools/faidx/environment.yml @@ -1,10 +1,8 @@ -name: samtools_faidx - +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda - - defaults - dependencies: - - bioconda::htslib=1.20 - - bioconda::samtools=1.20 + - bioconda::htslib=1.21 + - bioconda::samtools=1.21 diff --git a/modules/nf-core/samtools/faidx/main.nf b/modules/nf-core/samtools/faidx/main.nf index bdcdbc95..28c0a81c 100644 --- a/modules/nf-core/samtools/faidx/main.nf +++ b/modules/nf-core/samtools/faidx/main.nf @@ -4,8 +4,8 @@ process SAMTOOLS_FAIDX { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.20--h50ea8bc_0' : - 'biocontainers/samtools:1.20--h50ea8bc_0' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.21--h50ea8bc_0' : + 'biocontainers/samtools:1.21--h50ea8bc_0' }" input: tuple val(meta), path(fasta) diff --git a/modules/nf-core/samtools/faidx/meta.yml b/modules/nf-core/samtools/faidx/meta.yml index f3c25de2..6721b2cb 100644 --- a/modules/nf-core/samtools/faidx/meta.yml +++ b/modules/nf-core/samtools/faidx/meta.yml @@ -14,47 +14,62 @@ tools: documentation: http://www.htslib.org/doc/samtools.html doi: 10.1093/bioinformatics/btp352 licence: ["MIT"] + identifier: biotools:samtools input: - - meta: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'test' ] - - fasta: - type: file - description: FASTA file - pattern: "*.{fa,fasta}" - - meta2: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'test' ] - - fai: - type: file - description: FASTA index file - pattern: "*.{fai}" + - - meta: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'test' ] + - fasta: + type: file + description: FASTA file + pattern: "*.{fa,fasta}" + - - meta2: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'test' ] + - fai: + type: file + description: FASTA index file + pattern: "*.{fai}" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - fa: - type: file - description: FASTA file - pattern: "*.{fa}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.{fa,fasta}": + type: file + description: FASTA file + pattern: "*.{fa}" - fai: - type: file - description: FASTA index file - pattern: "*.{fai}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.fai": + type: file + description: FASTA index file + pattern: "*.{fai}" - gzi: - type: file - description: Optional gzip index file for compressed inputs - pattern: "*.gzi" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.gzi": + type: file + description: Optional gzip index file for compressed inputs + pattern: "*.gzi" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@drpatelh" - "@ewels" diff --git a/modules/nf-core/samtools/faidx/tests/main.nf.test.snap b/modules/nf-core/samtools/faidx/tests/main.nf.test.snap index 3223b72b..1bbb3ec2 100644 --- a/modules/nf-core/samtools/faidx/tests/main.nf.test.snap +++ b/modules/nf-core/samtools/faidx/tests/main.nf.test.snap @@ -18,7 +18,7 @@ ], "3": [ - "versions.yml:md5,2db78952923a61e05d50b95518b21856" + "versions.yml:md5,6bbe80a2e14bd61202ca63e12d66027f" ], "fa": [ @@ -36,15 +36,15 @@ ], "versions": [ - "versions.yml:md5,2db78952923a61e05d50b95518b21856" + "versions.yml:md5,6bbe80a2e14bd61202ca63e12d66027f" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-05-28T15:42:14.779784761" + "timestamp": "2024-09-16T07:57:47.450887871" }, "test_samtools_faidx_bgzip": { "content": [ @@ -71,7 +71,7 @@ ] ], "3": [ - "versions.yml:md5,2db78952923a61e05d50b95518b21856" + "versions.yml:md5,6bbe80a2e14bd61202ca63e12d66027f" ], "fa": [ @@ -95,15 +95,15 @@ ] ], "versions": [ - "versions.yml:md5,2db78952923a61e05d50b95518b21856" + "versions.yml:md5,6bbe80a2e14bd61202ca63e12d66027f" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-05-28T15:42:20.256633877" + "timestamp": "2024-09-16T07:58:04.804905659" }, "test_samtools_faidx_fasta": { "content": [ @@ -124,7 +124,7 @@ ], "3": [ - "versions.yml:md5,2db78952923a61e05d50b95518b21856" + "versions.yml:md5,6bbe80a2e14bd61202ca63e12d66027f" ], "fa": [ [ @@ -142,15 +142,15 @@ ], "versions": [ - "versions.yml:md5,2db78952923a61e05d50b95518b21856" + "versions.yml:md5,6bbe80a2e14bd61202ca63e12d66027f" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-05-28T15:42:25.632577273" + "timestamp": "2024-09-16T07:58:23.831268154" }, "test_samtools_faidx_stub_fasta": { "content": [ @@ -171,7 +171,7 @@ ], "3": [ - "versions.yml:md5,2db78952923a61e05d50b95518b21856" + "versions.yml:md5,6bbe80a2e14bd61202ca63e12d66027f" ], "fa": [ [ @@ -189,15 +189,15 @@ ], "versions": [ - "versions.yml:md5,2db78952923a61e05d50b95518b21856" + "versions.yml:md5,6bbe80a2e14bd61202ca63e12d66027f" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-05-28T15:42:31.058424849" + "timestamp": "2024-09-16T07:58:35.600243706" }, "test_samtools_faidx_stub_fai": { "content": [ @@ -218,7 +218,7 @@ ], "3": [ - "versions.yml:md5,2db78952923a61e05d50b95518b21856" + "versions.yml:md5,6bbe80a2e14bd61202ca63e12d66027f" ], "fa": [ @@ -236,14 +236,14 @@ ], "versions": [ - "versions.yml:md5,2db78952923a61e05d50b95518b21856" + "versions.yml:md5,6bbe80a2e14bd61202ca63e12d66027f" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-05-28T15:42:36.479929617" + "timestamp": "2024-09-16T07:58:54.705460167" } } \ No newline at end of file diff --git a/modules/nf-core/samtools/fastq/environment.yml b/modules/nf-core/samtools/fastq/environment.yml index 4455904e..62054fc9 100644 --- a/modules/nf-core/samtools/fastq/environment.yml +++ b/modules/nf-core/samtools/fastq/environment.yml @@ -1,8 +1,8 @@ -name: samtools_fastq +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda - - defaults dependencies: - - bioconda::samtools=1.20 - - bioconda::htslib=1.20 + - bioconda::htslib=1.21 + - bioconda::samtools=1.21 diff --git a/modules/nf-core/samtools/fastq/main.nf b/modules/nf-core/samtools/fastq/main.nf index 6796c02b..136744d5 100644 --- a/modules/nf-core/samtools/fastq/main.nf +++ b/modules/nf-core/samtools/fastq/main.nf @@ -4,8 +4,8 @@ process SAMTOOLS_FASTQ { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.20--h50ea8bc_0' : - 'biocontainers/samtools:1.20--h50ea8bc_0' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.21--h50ea8bc_0' : + 'biocontainers/samtools:1.21--h50ea8bc_0' }" input: tuple val(meta), path(input) diff --git a/modules/nf-core/samtools/fastq/meta.yml b/modules/nf-core/samtools/fastq/meta.yml index c4002a45..c15a0b6f 100644 --- a/modules/nf-core/samtools/fastq/meta.yml +++ b/modules/nf-core/samtools/fastq/meta.yml @@ -15,45 +15,69 @@ tools: documentation: http://www.htslib.org/doc/samtools.html doi: 10.1093/bioinformatics/btp352 licence: ["MIT"] + identifier: biotools:samtools input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - input: - type: file - description: BAM/CRAM/SAM file - pattern: "*.{bam,cram,sam}" - - interleave: - type: boolean - description: Set true for interleaved fastq file + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - input: + type: file + description: BAM/CRAM/SAM file + pattern: "*.{bam,cram,sam}" + - - interleave: + type: boolean + description: Set true for interleaved fastq file output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - fastq: - type: file - description: Compressed FASTQ file(s) with reads with either the READ1 or READ2 flag set in separate files. - pattern: "*_{1,2}.fastq.gz" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*_{1,2}.fastq.gz": + type: file + description: Compressed FASTQ file(s) with reads with either the READ1 or READ2 + flag set in separate files. + pattern: "*_{1,2}.fastq.gz" - interleaved: - type: file - description: Compressed FASTQ file with reads with either the READ1 or READ2 flag set in a combined file. Needs collated input file. - pattern: "*_interleaved.fastq.gz" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*_interleaved.fastq": + type: file + description: Compressed FASTQ file with reads with either the READ1 or READ2 + flag set in a combined file. Needs collated input file. + pattern: "*_interleaved.fastq.gz" - singleton: - type: file - description: Compressed FASTQ file with singleton reads - pattern: "*_singleton.fastq.gz" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*_singleton.fastq.gz": + type: file + description: Compressed FASTQ file with singleton reads + pattern: "*_singleton.fastq.gz" - other: - type: file - description: Compressed FASTQ file with reads with either both READ1 and READ2 flags set or unset - pattern: "*_other.fastq.gz" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*_other.fastq.gz": + type: file + description: Compressed FASTQ file with reads with either both READ1 and READ2 + flags set or unset + pattern: "*_other.fastq.gz" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@priyanka-surana" - "@suzannejin" diff --git a/modules/nf-core/samtools/fastq/tests/main.nf.test.snap b/modules/nf-core/samtools/fastq/tests/main.nf.test.snap index 1ba09d3a..10e5cd3d 100644 --- a/modules/nf-core/samtools/fastq/tests/main.nf.test.snap +++ b/modules/nf-core/samtools/fastq/tests/main.nf.test.snap @@ -93,26 +93,26 @@ "bam_versions": { "content": [ [ - "versions.yml:md5,3a8725ed574091b661fbc64754bfcef1" + "versions.yml:md5,11e074d69900de5a7dfdbe1fb4e789fd" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-05-28T15:45:40.362380302" + "timestamp": "2024-09-16T08:00:41.44921616" }, "bam_verinterleave_sions": { "content": [ [ - "versions.yml:md5,3a8725ed574091b661fbc64754bfcef1" + "versions.yml:md5,11e074d69900de5a7dfdbe1fb4e789fd" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-05-28T15:45:45.632731997" + "timestamp": "2024-09-16T08:00:56.47781168" }, "bam_singleton": { "content": [ diff --git a/modules/nf-core/samtools/import/environment.yml b/modules/nf-core/samtools/import/environment.yml index 38f1ebab..62054fc9 100644 --- a/modules/nf-core/samtools/import/environment.yml +++ b/modules/nf-core/samtools/import/environment.yml @@ -1,8 +1,8 @@ -name: samtools_import +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda - - defaults dependencies: - - bioconda::samtools=1.20 - - bioconda::htslib=1.20 + - bioconda::htslib=1.21 + - bioconda::samtools=1.21 diff --git a/modules/nf-core/samtools/import/main.nf b/modules/nf-core/samtools/import/main.nf index 954a8052..e0a51c03 100644 --- a/modules/nf-core/samtools/import/main.nf +++ b/modules/nf-core/samtools/import/main.nf @@ -4,8 +4,8 @@ process SAMTOOLS_IMPORT { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.20--h50ea8bc_0': - 'biocontainers/samtools:1.20--h50ea8bc_0' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.21--h50ea8bc_0': + 'biocontainers/samtools:1.21--h50ea8bc_0' }" input: tuple val(meta), path(reads) diff --git a/modules/nf-core/samtools/import/meta.yml b/modules/nf-core/samtools/import/meta.yml index 9002e092..5c98b8be 100644 --- a/modules/nf-core/samtools/import/meta.yml +++ b/modules/nf-core/samtools/import/meta.yml @@ -1,4 +1,3 @@ ---- # yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/yaml-schema.json name: "samtools_import" description: converts FASTQ files to unmapped SAM/BAM/CRAM @@ -18,38 +17,53 @@ tools: documentation: http://www.htslib.org/doc/samtools.html doi: 10.1093/bioinformatics/btp352 licence: ["MIT"] + identifier: biotools:samtools input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. `[ id:'test', single_end:false ]` - - reads: - type: file - description: fastq data to be converted to SAM/BAM/CRAM - pattern: "*.{fastq,fq,fastq.gz,fq.gz}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'test', single_end:false ]` + - reads: + type: file + description: fastq data to be converted to SAM/BAM/CRAM + pattern: "*.{fastq,fq,fastq.gz,fq.gz}" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. `[ id:'test', single_end:false ]` - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - sam: - type: file - description: SAM file - pattern: "*.sam" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'test', single_end:false ]` + - "*.sam": + type: file + description: SAM file + pattern: "*.sam" - bam: - type: file - description: Unaligned BAM file - pattern: "*.bam" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'test', single_end:false ]` + - "*.bam": + type: file + description: Unaligned BAM file + pattern: "*.bam" - cram: - type: file - description: Unaligned CRAM file - pattern: "*.cram" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'test', single_end:false ]` + - "*.cram": + type: file + description: Unaligned CRAM file + pattern: "*.cram" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@matthdsm" maintainers: diff --git a/modules/nf-core/samtools/import/tests/main.nf.test b/modules/nf-core/samtools/import/tests/main.nf.test index d029ca70..9c7ce5d9 100644 --- a/modules/nf-core/samtools/import/tests/main.nf.test +++ b/modules/nf-core/samtools/import/tests/main.nf.test @@ -18,7 +18,7 @@ nextflow_process { """ input[0] = Channel.of([ [ id:'test', single_end:true ], // meta map - file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ]) """ } @@ -42,8 +42,8 @@ nextflow_process { """ input[0] = Channel.of([ [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_2_fastq_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ]) """ } @@ -67,7 +67,7 @@ nextflow_process { """ input[0] = Channel.of([ [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_interleaved_fastq_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_interleaved.fastq.gz', checkIfExists: true) ]) """ } diff --git a/modules/nf-core/samtools/index/environment.yml b/modules/nf-core/samtools/index/environment.yml index 260d516b..62054fc9 100644 --- a/modules/nf-core/samtools/index/environment.yml +++ b/modules/nf-core/samtools/index/environment.yml @@ -1,8 +1,8 @@ -name: samtools_index +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda - - defaults dependencies: - - bioconda::samtools=1.20 - - bioconda::htslib=1.20 + - bioconda::htslib=1.21 + - bioconda::samtools=1.21 diff --git a/modules/nf-core/samtools/index/main.nf b/modules/nf-core/samtools/index/main.nf index e002585b..31175610 100644 --- a/modules/nf-core/samtools/index/main.nf +++ b/modules/nf-core/samtools/index/main.nf @@ -4,8 +4,8 @@ process SAMTOOLS_INDEX { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.20--h50ea8bc_0' : - 'biocontainers/samtools:1.20--h50ea8bc_0' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.21--h50ea8bc_0' : + 'biocontainers/samtools:1.21--h50ea8bc_0' }" input: tuple val(meta), path(input) diff --git a/modules/nf-core/samtools/index/meta.yml b/modules/nf-core/samtools/index/meta.yml index 01a4ee03..db8df0d5 100644 --- a/modules/nf-core/samtools/index/meta.yml +++ b/modules/nf-core/samtools/index/meta.yml @@ -15,38 +15,52 @@ tools: documentation: http://www.htslib.org/doc/samtools.html doi: 10.1093/bioinformatics/btp352 licence: ["MIT"] + identifier: biotools:samtools input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - bam: - type: file - description: BAM/CRAM/SAM file - pattern: "*.{bam,cram,sam}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - input: + type: file + description: input file output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - bai: - type: file - description: BAM/CRAM/SAM index file - pattern: "*.{bai,crai,sai}" - - crai: - type: file - description: BAM/CRAM/SAM index file - pattern: "*.{bai,crai,sai}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.bai": + type: file + description: BAM/CRAM/SAM index file + pattern: "*.{bai,crai,sai}" - csi: - type: file - description: CSI index file - pattern: "*.{csi}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.csi": + type: file + description: CSI index file + pattern: "*.{csi}" + - crai: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.crai": + type: file + description: BAM/CRAM/SAM index file + pattern: "*.{bai,crai,sai}" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@drpatelh" - "@ewels" diff --git a/modules/nf-core/samtools/index/tests/main.nf.test.snap b/modules/nf-core/samtools/index/tests/main.nf.test.snap index 799d199c..72d65e81 100644 --- a/modules/nf-core/samtools/index/tests/main.nf.test.snap +++ b/modules/nf-core/samtools/index/tests/main.nf.test.snap @@ -18,7 +18,7 @@ ], "3": [ - "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77" + "versions.yml:md5,5e09a6fdf76de396728f877193d72315" ], "bai": [ @@ -36,15 +36,15 @@ ] ], "versions": [ - "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77" + "versions.yml:md5,5e09a6fdf76de396728f877193d72315" ] } ], "meta": { "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nextflow": "24.04.4" }, - "timestamp": "2024-07-22T16:51:53.9057" + "timestamp": "2024-09-16T08:21:25.261127166" }, "crai - stub": { "content": [ @@ -65,7 +65,7 @@ ] ], "3": [ - "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77" + "versions.yml:md5,5e09a6fdf76de396728f877193d72315" ], "bai": [ @@ -83,15 +83,15 @@ ], "versions": [ - "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77" + "versions.yml:md5,5e09a6fdf76de396728f877193d72315" ] } ], "meta": { "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nextflow": "24.04.4" }, - "timestamp": "2024-07-22T16:51:45.931558" + "timestamp": "2024-09-16T08:21:12.653194876" }, "bai - stub": { "content": [ @@ -112,7 +112,7 @@ ], "3": [ - "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77" + "versions.yml:md5,5e09a6fdf76de396728f877193d72315" ], "bai": [ [ @@ -130,28 +130,28 @@ ], "versions": [ - "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77" + "versions.yml:md5,5e09a6fdf76de396728f877193d72315" ] } ], "meta": { "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nextflow": "24.04.4" }, - "timestamp": "2024-07-22T16:51:34.807525" + "timestamp": "2024-09-16T08:21:01.854932651" }, "csi": { "content": [ "test.paired_end.sorted.bam.csi", [ - "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77" + "versions.yml:md5,5e09a6fdf76de396728f877193d72315" ] ], "meta": { "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nextflow": "24.04.4" }, - "timestamp": "2024-07-22T16:52:55.688799" + "timestamp": "2024-09-16T08:20:51.485364222" }, "crai": { "content": [ @@ -172,7 +172,7 @@ ] ], "3": [ - "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77" + "versions.yml:md5,5e09a6fdf76de396728f877193d72315" ], "bai": [ @@ -190,15 +190,15 @@ ], "versions": [ - "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77" + "versions.yml:md5,5e09a6fdf76de396728f877193d72315" ] } ], "meta": { "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nextflow": "24.04.4" }, - "timestamp": "2024-07-22T16:51:17.609533" + "timestamp": "2024-09-16T08:20:40.518873972" }, "bai": { "content": [ @@ -219,7 +219,7 @@ ], "3": [ - "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77" + "versions.yml:md5,5e09a6fdf76de396728f877193d72315" ], "bai": [ [ @@ -237,14 +237,14 @@ ], "versions": [ - "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77" + "versions.yml:md5,5e09a6fdf76de396728f877193d72315" ] } ], "meta": { "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nextflow": "24.04.4" }, - "timestamp": "2024-07-22T16:51:04.16585" + "timestamp": "2024-09-16T08:20:21.184050361" } } \ No newline at end of file diff --git a/modules/nf-core/samtools/merge/main.nf b/modules/nf-core/samtools/merge/main.nf index 67712a68..b08fc5f6 100644 --- a/modules/nf-core/samtools/merge/main.nf +++ b/modules/nf-core/samtools/merge/main.nf @@ -4,20 +4,21 @@ process SAMTOOLS_MERGE { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.20--h50ea8bc_0' : - 'biocontainers/samtools:1.20--h50ea8bc_0' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.21--h50ea8bc_0' : + 'biocontainers/samtools:1.21--h50ea8bc_0' }" input: tuple val(meta), path(input_files) tuple val(meta2), path(fasta) tuple val(meta3), path(fai) - val(index_type) - + output: - tuple val(meta), path("${prefix}.bam") , optional:true, emit: bam - tuple val(meta), path("${prefix}.cram") , optional:true, emit: cram - tuple val(meta), path("*.${index_type}"), optional:true, emit: index - path "versions.yml" , emit: versions + tuple val(meta), path("${prefix}.bam") , optional:true, emit: bam + tuple val(meta), path("${prefix}.cram"), optional:true, emit: cram + tuple val(meta), path("*.bai") , optional:true, emit: bai + tuple val(meta), path("*.crai") , optional:true, emit: crai + path "versions.yml" , emit: versions + when: task.ext.when == null || task.ext.when @@ -26,15 +27,15 @@ process SAMTOOLS_MERGE { def args = task.ext.args ?: '' prefix = task.ext.prefix ?: "${meta.id}" def file_type = input_files instanceof List ? input_files[0].getExtension() : input_files.getExtension() - def reference = fasta ? "--reference ${fasta}" : "" def input = (input_files.collect().size() > 1) ? input_files.sort { it.name } : input_files + def reference = fasta ? "--reference ${fasta}" : "" """ samtools \\ merge \\ --threads ${task.cpus-1} \\ $args \\ ${reference} \\ - ${prefix}.${file_type}##idx##${prefix}.${file_type}.${index_type} \\ + ${prefix}.${file_type}##idx##${prefix}.${file_type}.bai \\ $input cat <<-END_VERSIONS > versions.yml @@ -47,9 +48,10 @@ process SAMTOOLS_MERGE { def args = task.ext.args ?: '' prefix = task.ext.suffix ? "${meta.id}${task.ext.suffix}" : "${meta.id}" def file_type = input_files instanceof List ? input_files[0].getExtension() : input_files.getExtension() - def index = args.contains("--write-index") ? "touch ${prefix}.${file_type}.${index_type}" : "" + def index_type = "bai" + def index = args.contains("--write-index") ? "touch ${prefix}.${index_type}" : "" """ - touch ${prefix}.${file_type}.${index_type} + touch ${prefix}.${file_type} ${index} cat <<-END_VERSIONS > versions.yml diff --git a/modules/nf-core/samtools/merge/samtools-merge.diff b/modules/nf-core/samtools/merge/samtools-merge.diff index e1402bb4..e4e6434d 100644 --- a/modules/nf-core/samtools/merge/samtools-merge.diff +++ b/modules/nf-core/samtools/merge/samtools-merge.diff @@ -3,68 +3,51 @@ Changes in module 'nf-core/samtools/merge' Changes in 'samtools/merge/main.nf': --- modules/nf-core/samtools/merge/main.nf +++ modules/nf-core/samtools/merge/main.nf -@@ -4,21 +4,20 @@ - - conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? -- 'https://depot.galaxyproject.org/singularity/samtools:1.21--h50ea8bc_0' : -- 'biocontainers/samtools:1.21--h50ea8bc_0' }" -+ 'https://depot.galaxyproject.org/singularity/samtools:1.20--h50ea8bc_0' : -+ 'biocontainers/samtools:1.20--h50ea8bc_0' }" +@@ -8,14 +8,14 @@ + 'biocontainers/samtools:1.21--h50ea8bc_0' }" input: - tuple val(meta), path(input_files, stageAs: "?/*") + tuple val(meta), path(input_files) tuple val(meta2), path(fasta) tuple val(meta3), path(fai) -- -+ val(index_type) -+ + output: -- tuple val(meta), path("${prefix}.bam") , optional:true, emit: bam -- tuple val(meta), path("${prefix}.cram"), optional:true, emit: cram + tuple val(meta), path("${prefix}.bam") , optional:true, emit: bam + tuple val(meta), path("${prefix}.cram"), optional:true, emit: cram - tuple val(meta), path("*.csi") , optional:true, emit: csi -- tuple val(meta), path("*.crai") , optional:true, emit: crai -- path "versions.yml" , emit: versions -- -+ tuple val(meta), path("${prefix}.bam") , optional:true, emit: bam -+ tuple val(meta), path("${prefix}.cram") , optional:true, emit: cram -+ tuple val(meta), path("*.${index_type}"), optional:true, emit: index -+ path "versions.yml" , emit: versions ++ tuple val(meta), path("*.bai") , optional:true, emit: bai + tuple val(meta), path("*.crai") , optional:true, emit: crai + path "versions.yml" , emit: versions - when: - task.ext.when == null || task.ext.when -@@ -28,14 +27,15 @@ +@@ -27,6 +27,7 @@ + def args = task.ext.args ?: '' prefix = task.ext.prefix ?: "${meta.id}" def file_type = input_files instanceof List ? input_files[0].getExtension() : input_files.getExtension() - def reference = fasta ? "--reference ${fasta}" : "" + def input = (input_files.collect().size() > 1) ? input_files.sort { it.name } : input_files + def reference = fasta ? "--reference ${fasta}" : "" """ samtools \\ - merge \\ +@@ -34,8 +35,8 @@ --threads ${task.cpus-1} \\ $args \\ ${reference} \\ - ${prefix}.${file_type} \\ - $input_files -+ ${prefix}.${file_type}##idx##${prefix}.${file_type}.${index_type} \\ ++ ${prefix}.${file_type}##idx##${prefix}.${file_type}.bai \\ + $input cat <<-END_VERSIONS > versions.yml "${task.process}": -@@ -47,10 +47,9 @@ +@@ -47,7 +48,7 @@ def args = task.ext.args ?: '' prefix = task.ext.suffix ? "${meta.id}${task.ext.suffix}" : "${meta.id}" def file_type = input_files instanceof List ? input_files[0].getExtension() : input_files.getExtension() - def index_type = file_type == "bam" ? "csi" : "crai" -- def index = args.contains("--write-index") ? "touch ${prefix}.${index_type}" : "" -+ def index = args.contains("--write-index") ? "touch ${prefix}.${file_type}.${index_type}" : "" ++ def index_type = "bai" + def index = args.contains("--write-index") ? "touch ${prefix}.${index_type}" : "" """ -- touch ${prefix}.${file_type} -+ touch ${prefix}.${file_type}.${index_type} - ${index} - - cat <<-END_VERSIONS > versions.yml + touch ${prefix}.${file_type} 'modules/nf-core/samtools/merge/environment.yml' is unchanged 'modules/nf-core/samtools/merge/tests/tags.yml' is unchanged diff --git a/modules/nf-core/samtools/sort/environment.yml b/modules/nf-core/samtools/sort/environment.yml index 36a12eab..62054fc9 100644 --- a/modules/nf-core/samtools/sort/environment.yml +++ b/modules/nf-core/samtools/sort/environment.yml @@ -1,8 +1,8 @@ -name: samtools_sort +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda - - defaults dependencies: - - bioconda::samtools=1.20 - - bioconda::htslib=1.20 + - bioconda::htslib=1.21 + - bioconda::samtools=1.21 diff --git a/modules/nf-core/samtools/sort/main.nf b/modules/nf-core/samtools/sort/main.nf index 8e019099..caf3c61a 100644 --- a/modules/nf-core/samtools/sort/main.nf +++ b/modules/nf-core/samtools/sort/main.nf @@ -4,19 +4,19 @@ process SAMTOOLS_SORT { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.20--h50ea8bc_0' : - 'biocontainers/samtools:1.20--h50ea8bc_0' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.21--h50ea8bc_0' : + 'biocontainers/samtools:1.21--h50ea8bc_0' }" input: tuple val(meta) , path(bam) tuple val(meta2), path(fasta) output: - tuple val(meta), path("*.bam"), emit: bam, optional: true - tuple val(meta), path("*.cram"), emit: cram, optional: true - tuple val(meta), path("*.crai"), emit: crai, optional: true - tuple val(meta), path("*.csi"), emit: csi, optional: true - path "versions.yml" , emit: versions + tuple val(meta), path("*.bam"), emit: bam, optional: true + tuple val(meta), path("*.cram"), emit: cram, optional: true + tuple val(meta), path("*.crai"), emit: crai, optional: true + tuple val(meta), path("*.csi"), emit: csi, optional: true + path "versions.yml", emit: versions when: task.ext.when == null || task.ext.when @@ -32,7 +32,6 @@ process SAMTOOLS_SORT { """ samtools cat \\ - --threads $task.cpus \\ ${bam} \\ | \\ samtools sort \\ diff --git a/modules/nf-core/samtools/sort/meta.yml b/modules/nf-core/samtools/sort/meta.yml index 341a7d0e..a9dbec5a 100644 --- a/modules/nf-core/samtools/sort/meta.yml +++ b/modules/nf-core/samtools/sort/meta.yml @@ -15,52 +15,73 @@ tools: documentation: http://www.htslib.org/doc/samtools.html doi: 10.1093/bioinformatics/btp352 licence: ["MIT"] + identifier: biotools:samtools input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - bam: - type: file - description: BAM/CRAM/SAM file(s) - pattern: "*.{bam,cram,sam}" - - meta2: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'genome' ] - - fasta: - type: file - description: Reference genome FASTA file - pattern: "*.{fa,fasta,fna}" - optional: true + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - bam: + type: file + description: BAM/CRAM/SAM file(s) + pattern: "*.{bam,cram,sam}" + - - meta2: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'genome' ] + - fasta: + type: file + description: Reference genome FASTA file + pattern: "*.{fa,fasta,fna}" + optional: true output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - bam: - type: file - description: Sorted BAM file - pattern: "*.{bam}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.bam": + type: file + description: Sorted BAM file + pattern: "*.{bam}" - cram: - type: file - description: Sorted CRAM file - pattern: "*.{cram}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.cram": + type: file + description: Sorted CRAM file + pattern: "*.{cram}" - crai: - type: file - description: CRAM index file (optional) - pattern: "*.crai" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.crai": + type: file + description: CRAM index file (optional) + pattern: "*.crai" - csi: - type: file - description: BAM index file (optional) - pattern: "*.csi" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.csi": + type: file + description: BAM index file (optional) + pattern: "*.csi" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@drpatelh" - "@ewels" diff --git a/modules/nf-core/samtools/sort/samtools-sort.diff b/modules/nf-core/samtools/sort/samtools-sort.diff new file mode 100644 index 00000000..1a6d1649 --- /dev/null +++ b/modules/nf-core/samtools/sort/samtools-sort.diff @@ -0,0 +1,22 @@ +Changes in module 'nf-core/samtools/sort' +'modules/nf-core/samtools/sort/meta.yml' is unchanged +'modules/nf-core/samtools/sort/main.nf' is unchanged +Changes in 'samtools/sort/environment.yml': +--- modules/nf-core/samtools/sort/environment.yml ++++ modules/nf-core/samtools/sort/environment.yml +@@ -1,6 +1,8 @@ ++name: samtools_sort + channels: + - conda-forge + - bioconda ++ - defaults + dependencies: + - bioconda::samtools=1.20 + - bioconda::htslib=1.20 + +'modules/nf-core/samtools/sort/tests/tags.yml' is unchanged +'modules/nf-core/samtools/sort/tests/nextflow_cram.config' is unchanged +'modules/nf-core/samtools/sort/tests/main.nf.test.snap' is unchanged +'modules/nf-core/samtools/sort/tests/nextflow.config' is unchanged +'modules/nf-core/samtools/sort/tests/main.nf.test' is unchanged +************************************************************ diff --git a/modules/nf-core/samtools/sort/tests/main.nf.test b/modules/nf-core/samtools/sort/tests/main.nf.test index c2ea9c72..b05e6691 100644 --- a/modules/nf-core/samtools/sort/tests/main.nf.test +++ b/modules/nf-core/samtools/sort/tests/main.nf.test @@ -39,6 +39,40 @@ nextflow_process { } } + test("multiple bam") { + + config "./nextflow.config" + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test2.paired_end.sorted.bam', checkIfExists: true) + ] + ]) + input[1] = Channel.of([ + [ id:'fasta' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ]) + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot( + process.out.bam, + process.out.csi.collect { it.collect { it instanceof Map ? it : file(it).name } }, + process.out.versions + ).match()} + ) + } + } + test("cram") { config "./nextflow_cram.config" @@ -98,6 +132,36 @@ nextflow_process { } } + test("multiple bam - stub") { + + config "./nextflow.config" + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test2.paired_end.sorted.bam', checkIfExists: true) + ] + ]) + input[1] = Channel.of([ + [ id:'fasta' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ]) + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + test("cram - stub") { options "-stub" diff --git a/modules/nf-core/samtools/sort/tests/main.nf.test.snap b/modules/nf-core/samtools/sort/tests/main.nf.test.snap index da38d5d1..469891fe 100644 --- a/modules/nf-core/samtools/sort/tests/main.nf.test.snap +++ b/modules/nf-core/samtools/sort/tests/main.nf.test.snap @@ -20,14 +20,14 @@ ] ], [ - "versions.yml:md5,7a360de20e1d7a6f15a5e8fbe0a9c062" + "versions.yml:md5,2659b187d681241451539d4c53500b9f" ] ], "meta": { "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nextflow": "24.04.4" }, - "timestamp": "2024-07-22T17:19:37.196205" + "timestamp": "2024-09-16T08:49:58.207549273" }, "bam - stub": { "content": [ @@ -57,7 +57,7 @@ ] ], "4": [ - "versions.yml:md5,7a360de20e1d7a6f15a5e8fbe0a9c062" + "versions.yml:md5,2659b187d681241451539d4c53500b9f" ], "bam": [ [ @@ -84,15 +84,15 @@ ] ], "versions": [ - "versions.yml:md5,7a360de20e1d7a6f15a5e8fbe0a9c062" + "versions.yml:md5,2659b187d681241451539d4c53500b9f" ] } ], "meta": { "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nextflow": "24.04.4" }, - "timestamp": "2024-07-22T15:54:46.580756" + "timestamp": "2024-09-16T08:50:08.630951018" }, "cram - stub": { "content": [ @@ -122,7 +122,7 @@ ], "4": [ - "versions.yml:md5,7a360de20e1d7a6f15a5e8fbe0a9c062" + "versions.yml:md5,2659b187d681241451539d4c53500b9f" ], "bam": [ @@ -149,15 +149,110 @@ ], "versions": [ - "versions.yml:md5,7a360de20e1d7a6f15a5e8fbe0a9c062" + "versions.yml:md5,2659b187d681241451539d4c53500b9f" ] } ], "meta": { "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nextflow": "24.04.4" }, - "timestamp": "2024-07-22T15:57:30.505698" + "timestamp": "2024-09-16T08:50:19.061912443" + }, + "multiple bam": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.bam:md5,8a16ba90c7d294cbb4c33ac0f7127a12" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.bam.csi" + ] + ], + [ + "versions.yml:md5,2659b187d681241451539d4c53500b9f" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.09.0" + }, + "timestamp": "2024-10-08T11:59:55.479443" + }, + "multiple bam - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.bam:md5,8a16ba90c7d294cbb4c33ac0f7127a12" + ] + ], + "1": [ + + ], + "2": [ + + ], + "3": [ + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.bam.csi:md5,d185916eaff9afeb4d0aeab3310371f9" + ] + ], + "4": [ + "versions.yml:md5,2659b187d681241451539d4c53500b9f" + ], + "bam": [ + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.bam:md5,8a16ba90c7d294cbb4c33ac0f7127a12" + ] + ], + "crai": [ + + ], + "cram": [ + + ], + "csi": [ + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.bam.csi:md5,d185916eaff9afeb4d0aeab3310371f9" + ] + ], + "versions": [ + "versions.yml:md5,2659b187d681241451539d4c53500b9f" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.09.0" + }, + "timestamp": "2024-10-08T11:36:13.781404" }, "bam": { "content": [ @@ -167,7 +262,7 @@ "id": "test", "single_end": false }, - "test.sorted.bam:md5,21c992d59615936b99f2ad008aa54400" + "test.sorted.bam:md5,34aa85e86abefe637f7a4a9887f016fc" ] ], [ @@ -180,13 +275,13 @@ ] ], [ - "versions.yml:md5,7a360de20e1d7a6f15a5e8fbe0a9c062" + "versions.yml:md5,2659b187d681241451539d4c53500b9f" ] ], "meta": { "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nextflow": "24.09.0" }, - "timestamp": "2024-07-22T15:54:25.872954" + "timestamp": "2024-10-08T11:59:46.372244" } } \ No newline at end of file diff --git a/modules/nf-core/samtools/view/environment.yml b/modules/nf-core/samtools/view/environment.yml index 150c3777..62054fc9 100644 --- a/modules/nf-core/samtools/view/environment.yml +++ b/modules/nf-core/samtools/view/environment.yml @@ -1,8 +1,8 @@ -name: samtools_view +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda - - defaults dependencies: - - bioconda::samtools=1.20 - - bioconda::htslib=1.20 + - bioconda::htslib=1.21 + - bioconda::samtools=1.21 diff --git a/modules/nf-core/samtools/view/main.nf b/modules/nf-core/samtools/view/main.nf index dc611448..37e05cec 100644 --- a/modules/nf-core/samtools/view/main.nf +++ b/modules/nf-core/samtools/view/main.nf @@ -4,8 +4,8 @@ process SAMTOOLS_VIEW { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.20--h50ea8bc_0' : - 'biocontainers/samtools:1.20--h50ea8bc_0' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.21--h50ea8bc_0' : + 'biocontainers/samtools:1.21--h50ea8bc_0' }" input: tuple val(meta), path(input), path(index) diff --git a/modules/nf-core/samtools/view/meta.yml b/modules/nf-core/samtools/view/meta.yml index 27be60d0..caa7b015 100644 --- a/modules/nf-core/samtools/view/meta.yml +++ b/modules/nf-core/samtools/view/meta.yml @@ -15,77 +15,120 @@ tools: documentation: http://www.htslib.org/doc/samtools.html doi: 10.1093/bioinformatics/btp352 licence: ["MIT"] + identifier: biotools:samtools input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - input: - type: file - description: BAM/CRAM/SAM file - pattern: "*.{bam,cram,sam}" - - index: - type: file - description: BAM.BAI/BAM.CSI/CRAM.CRAI file (optional) - pattern: "*.{.bai,.csi,.crai}" - - meta2: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'test' ] - - fasta: - type: file - description: Reference file the CRAM was created with (optional) - pattern: "*.{fasta,fa}" - - qname: - type: file - description: Optional file with read names to output only select alignments - pattern: "*.{txt,list}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - input: + type: file + description: BAM/CRAM/SAM file + pattern: "*.{bam,cram,sam}" + - index: + type: file + description: BAM.BAI/BAM.CSI/CRAM.CRAI file (optional) + pattern: "*.{.bai,.csi,.crai}" + - - meta2: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'test' ] + - fasta: + type: file + description: Reference file the CRAM was created with (optional) + pattern: "*.{fasta,fa}" + - - qname: + type: file + description: Optional file with read names to output only select alignments + pattern: "*.{txt,list}" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - bam: - type: file - description: optional filtered/converted BAM file - pattern: "*.{bam}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - ${prefix}.bam: + type: file + description: optional filtered/converted BAM file + pattern: "*.{bam}" - cram: - type: file - description: optional filtered/converted CRAM file - pattern: "*.{cram}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - ${prefix}.cram: + type: file + description: optional filtered/converted CRAM file + pattern: "*.{cram}" - sam: - type: file - description: optional filtered/converted SAM file - pattern: "*.{sam}" - # bai, csi, and crai are created with `--write-index` + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - ${prefix}.sam: + type: file + description: optional filtered/converted SAM file + pattern: "*.{sam}" - bai: - type: file - description: optional BAM file index - pattern: "*.{bai}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - ${prefix}.${file_type}.bai: + type: file + description: optional BAM file index + pattern: "*.{bai}" - csi: - type: file - description: optional tabix BAM file index - pattern: "*.{csi}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - ${prefix}.${file_type}.csi: + type: file + description: optional tabix BAM file index + pattern: "*.{csi}" - crai: - type: file - description: optional CRAM file index - pattern: "*.{crai}" - # unselected and unselected_index are created when passing a qname + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - ${prefix}.${file_type}.crai: + type: file + description: optional CRAM file index + pattern: "*.{crai}" - unselected: - type: file - description: optional file with unselected alignments - pattern: "*.unselected.{bam,cram,sam}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - ${prefix}.unselected.${file_type}: + type: file + description: optional file with unselected alignments + pattern: "*.unselected.{bam,cram,sam}" - unselected_index: - type: file - description: index for the "unselected" file - pattern: "*.unselected.{bai,csi,crai}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - ${prefix}.unselected.${file_type}.{bai,csi,crsi}: + type: file + description: index for the "unselected" file + pattern: "*.unselected.{bai,csi,crai}" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@drpatelh" - "@joseespinosa" diff --git a/modules/nf-core/samtools/view/tests/main.nf.test.snap b/modules/nf-core/samtools/view/tests/main.nf.test.snap index 6bcce9fe..63849b03 100644 --- a/modules/nf-core/samtools/view/tests/main.nf.test.snap +++ b/modules/nf-core/samtools/view/tests/main.nf.test.snap @@ -56,14 +56,14 @@ "bam_stub_versions": { "content": [ [ - "versions.yml:md5,6cd41a9a3b4a95271ec011ea990a2838" + "versions.yml:md5,176db5ec46b965219604bcdbb3ef9e07" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-05-28T15:43:20.390692583" + "timestamp": "2024-09-16T09:26:24.461775464" }, "cram_to_bam_index_cram": { "content": [ @@ -169,6 +169,16 @@ }, "timestamp": "2024-02-12T19:37:56.490286" }, + "cram_to_bam_index_qname_unselected_csi": { + "content": [ + "test.unselected.bam.csi" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.04.3" + }, + "timestamp": "2024-02-12T19:38:23.328458" + }, "bam_csi": { "content": [ [ @@ -208,14 +218,14 @@ "cram_to_bam_index_qname_versions": { "content": [ [ - "versions.yml:md5,6cd41a9a3b4a95271ec011ea990a2838" + "versions.yml:md5,176db5ec46b965219604bcdbb3ef9e07" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-05-28T15:43:15.007493874" + "timestamp": "2024-09-16T09:25:51.953436682" }, "cram_to_bam_bam": { "content": [ @@ -240,14 +250,14 @@ "cram_to_bam_index_versions": { "content": [ [ - "versions.yml:md5,6cd41a9a3b4a95271ec011ea990a2838" + "versions.yml:md5,176db5ec46b965219604bcdbb3ef9e07" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-05-28T15:43:09.472376824" + "timestamp": "2024-09-16T09:25:14.475388399" }, "cram_to_bam_bai": { "content": [ @@ -264,14 +274,14 @@ "cram_to_bam_versions": { "content": [ [ - "versions.yml:md5,6cd41a9a3b4a95271ec011ea990a2838" + "versions.yml:md5,176db5ec46b965219604bcdbb3ef9e07" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-05-28T15:43:04.080050906" + "timestamp": "2024-09-16T09:24:49.673441798" }, "cram_bam": { "content": [ @@ -378,14 +388,14 @@ "bam_versions": { "content": [ [ - "versions.yml:md5,6cd41a9a3b4a95271ec011ea990a2838" + "versions.yml:md5,176db5ec46b965219604bcdbb3ef9e07" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-05-28T15:42:52.978954857" + "timestamp": "2024-09-16T09:23:27.151650338" }, "cram_to_bam_index_qname_cram": { "content": [ @@ -450,14 +460,24 @@ "cram_versions": { "content": [ [ - "versions.yml:md5,6cd41a9a3b4a95271ec011ea990a2838" + "versions.yml:md5,176db5ec46b965219604bcdbb3ef9e07" ] ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-16T09:24:12.95416913" + }, + "cram_to_bam_index_qname_unselected": { + "content": [ + "test.unselected.bam" + ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "23.04.3" }, - "timestamp": "2024-05-28T15:42:58.400776109" + "timestamp": "2024-02-12T19:38:23.322874" }, "bam_sam": { "content": [ diff --git a/modules/nf-core/severus/meta.yml b/modules/nf-core/severus/meta.yml index 844eee44..8ada3548 100644 --- a/modules/nf-core/severus/meta.yml +++ b/modules/nf-core/severus/meta.yml @@ -1,7 +1,7 @@ ---- # yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/meta-schema.json name: "severus" -description: Severus is a somatic structural variation (SV) caller for long reads (both PacBio and ONT) +description: Severus is a somatic structural variation (SV) caller for long reads + (both PacBio and ONT) keywords: - structural - variation @@ -16,112 +16,201 @@ tools: tool_dev_url: "https://github.com/KolmogorovLab/Severus" doi: "10.1101/2024.03.22.24304756" licence: ["BSD-3-clause"] + identifier: "" input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. `[ id:'sample1', single_end:false ]` - - target_input: - type: file - description: path to one or multiple target BAM/CRAM files (e.g. tumor, must be indexed) - pattern: "*.{bam,cram}" - - target_index: - type: file - description: path to one or multiple target BAM/CRAM index files - pattern: "*.{bai,crai,csi}" - - control_input: - type: file - description: path to the control BAM/CRAM file (e.g. normal, must be indexed) - pattern: "*.{bam,cram}" - - control_index: - type: file - description: path to the control BAM/CRAM file index - pattern: "*.{bai,crai,csi}" - - vcf: - type: file - description: path to vcf file used for phasing (if using haplotype specific SV calling - pattern: "*.{vcf,vcf.gz}" - - meta2: - type: map - description: | - Groovy Map containing tandem repeat regions information - e.g. `[ id:'hg38']` - - bed: - type: file - description: path to bed file for tandem repeat regions (must be ordered) - pattern: "*.bed" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - target_input: + type: file + description: path to one or multiple target BAM/CRAM files (e.g. tumor, must + be indexed) + pattern: "*.{bam,cram}" + - target_index: + type: file + description: path to one or multiple target BAM/CRAM index files + pattern: "*.{bai,crai,csi}" + - control_input: + type: file + description: path to the control BAM/CRAM file (e.g. normal, must be indexed) + pattern: "*.{bam,cram}" + - control_index: + type: file + description: path to the control BAM/CRAM file index + pattern: "*.{bai,crai,csi}" + - vcf: + type: file + description: path to vcf file used for phasing (if using haplotype specific + SV calling + pattern: "*.{vcf,vcf.gz}" + - - meta2: + type: map + description: | + Groovy Map containing tandem repeat regions information + e.g. `[ id:'hg38']` + - bed: + type: file + description: path to bed file for tandem repeat regions (must be ordered) + pattern: "*.bed" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. `[ id:'sample1', single_end:false ]` - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - log: - type: file - description: Severus log file - pattern: "${prefix}/severus.log" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - ${prefix}/severus.log: + type: file + description: Severus log file + pattern: "${prefix}/severus.log" - read_qual: - type: file - description: Severus read_qual file - pattern: "${prefix}/read_qual.txt" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - ${prefix}/read_qual.txt: + type: file + description: Severus read_qual file + pattern: "${prefix}/read_qual.txt" - breakpoints_double: - type: file - description: Severus breakpoints_double file - pattern: "${prefix}/breakpoints_double.csv" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - ${prefix}/breakpoints_double.csv: + type: file + description: Severus breakpoints_double file + pattern: "${prefix}/breakpoints_double.csv" - read_alignments: - type: file - description: read alignments file - pattern: "${prefix}/read_alignments" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - ${prefix}/read_alignments: + type: file + description: read alignments file + pattern: "${prefix}/read_alignments" - read_ids: - type: file - description: read IDs for support reads - pattern: "${prefix}/read_ids" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - ${prefix}/read_ids.csv: + type: file + description: read IDs for support reads + pattern: "${prefix}/read_ids" - collapsed_dup: - type: file - description: a bed file with identified collapsed duplication regions - pattern: "${prefix}/severus_collaped_dup" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - ${prefix}/severus_collaped_dup.bed: + type: file + description: a bed file with identified collapsed duplication regions + pattern: "${prefix}/severus_collaped_dup" - loh: - type: file - description: a bed file with predicted LOH regions - pattern: "${prefix}/severus_LOH.bed" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - ${prefix}/severus_LOH.bed: + type: file + description: a bed file with predicted LOH regions + pattern: "${prefix}/severus_LOH.bed" - all_vcf: - type: file - description: VCF file with all SVs (somatic + germline) - pattern: "${prefix}/all_SVs/severus_all.vcf" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - ${prefix}/all_SVs/severus_all.vcf: + type: file + description: VCF file with all SVs (somatic + germline) + pattern: "${prefix}/all_SVs/severus_all.vcf" - all_breakpoints_clusters_list: - type: file - description: Severus breakpoints clusters list file - pattern: "${prefix}/all_SVs/breakpoints_clusters_list.tsv" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - ${prefix}/all_SVs/breakpoints_clusters_list.tsv: + type: file + description: Severus breakpoints clusters list file + pattern: "${prefix}/all_SVs/breakpoints_clusters_list.tsv" - all_breakpoints_clusters: - type: file - description: Severus breakpoints clusters file - pattern: "${prefix}/all_SVs/breakpoints_clusters.tsv" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - ${prefix}/all_SVs/breakpoints_clusters.tsv: + type: file + description: Severus breakpoints clusters file + pattern: "${prefix}/all_SVs/breakpoints_clusters.tsv" - all_plots: - type: file - description: Severus plots - pattern: "${prefix}/all_SVs/plots/*.html" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - ${prefix}/all_SVs/plots/severus_*.html: + type: file + description: Severus plots + pattern: "${prefix}/all_SVs/plots/*.html" - somatic_vcf: - type: file - description: VCF file with somatic SVs - pattern: "${prefix}/somatic_SVs/severus_all.vcf" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - ${prefix}/somatic_SVs/severus_all.vcf: + type: file + description: VCF file with somatic SVs + pattern: "${prefix}/somatic_SVs/severus_all.vcf" - somatic_breakpoints_clusters_list: - type: file - description: Severus somatic breakpoints clusters list file - pattern: "${prefix}/somatic_SVs/breakpoints_clusters_list.tsv" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - ${prefix}/somatic_SVs/breakpoints_clusters_list.tsv: + type: file + description: Severus somatic breakpoints clusters list file + pattern: "${prefix}/somatic_SVs/breakpoints_clusters_list.tsv" - somatic_breakpoints_clusters: - type: file - description: Severus somatic breakpoints clusters file - pattern: "${prefix}/somatic_SVs/breakpoints_clusters.tsv" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - ${prefix}/somatic_SVs/breakpoints_clusters.tsv: + type: file + description: Severus somatic breakpoints clusters file + pattern: "${prefix}/somatic_SVs/breakpoints_clusters.tsv" - somatic_plots: - type: file - description: Severus somatic plots - pattern: "${prefix}/somatic_SVs/plots/*.html" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - ${prefix}/somatic_SVs/plots/severus_*.html: + type: file + description: Severus somatic plots + pattern: "${prefix}/somatic_SVs/plots/*.html" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@fellen31" maintainers: diff --git a/modules/nf-core/severus/tests/main.nf.test b/modules/nf-core/severus/tests/main.nf.test index 1b85a109..ab700a4c 100644 --- a/modules/nf-core/severus/tests/main.nf.test +++ b/modules/nf-core/severus/tests/main.nf.test @@ -7,7 +7,6 @@ nextflow_process { tag "modules" tag "modules_nfcore" tag "severus" - tag "deepvariant" test("homo_sapiens - [ bam, bai, [], [], [] ], [[],[]]") { @@ -206,4 +205,4 @@ nextflow_process { } -} \ No newline at end of file +} diff --git a/modules/nf-core/severus/tests/main.nf.test.snap b/modules/nf-core/severus/tests/main.nf.test.snap index 0dc24142..a5c527eb 100644 --- a/modules/nf-core/severus/tests/main.nf.test.snap +++ b/modules/nf-core/severus/tests/main.nf.test.snap @@ -268,7 +268,12 @@ ] ], "7": [ - + [ + { + "id": "test" + }, + "severus_all.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] ], "8": [ [ @@ -314,7 +319,12 @@ ] ], "all_vcf": [ - + [ + { + "id": "test" + }, + "severus_all.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] ], "breakpoints_double": [ [ @@ -409,9 +419,9 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.04.3" + "nextflow": "24.04.2" }, - "timestamp": "2024-09-11T19:09:18.357545892" + "timestamp": "2024-07-10T12:00:07.296601854" }, "homo_sapiens - [ bam, bai, bam, bai, [] ], [[],[]]": { "content": [ diff --git a/modules/nf-core/sniffles/environment.yml b/modules/nf-core/sniffles/environment.yml index db8f3f69..b3d97d0e 100644 --- a/modules/nf-core/sniffles/environment.yml +++ b/modules/nf-core/sniffles/environment.yml @@ -1,7 +1,5 @@ -name: sniffles channels: - conda-forge - bioconda - - defaults dependencies: - - bioconda::sniffles=2.0.7 + - bioconda::sniffles=2.4 diff --git a/modules/nf-core/sniffles/meta.yml b/modules/nf-core/sniffles/meta.yml index c8b2da7d..b52d45a3 100644 --- a/modules/nf-core/sniffles/meta.yml +++ b/modules/nf-core/sniffles/meta.yml @@ -11,59 +11,88 @@ tools: documentation: https://github.com/fritzsedlazeck/Sniffles#readme tool_dev_url: https://github.com/fritzsedlazeck/Sniffles licence: ["MIT"] + identifier: biotools:sniffles input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test' ] - - input: - type: file - description: BAM or SNF file - pattern: "*.{bam, snf}" - - bai: - type: file - description: Index of BAM file - pattern: "*.bai" - - meta2: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'fasta' ] - - fasta: - type: file - description: | - Reference database in FASTA format - - meta3: - type: map - description: | - Groovy Map containing tandem repeat file information - e.g. [ id:'tandem_repeats' ] - - tandem_file: - type: file - description: | - Tandem repeats file in BED format + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test' ] + - input: + type: file + description: A single .bam/.cram file - OR - one or more .snf files - OR - a + single .tsv file containing a list of .snf files and optional sample ids as + input + pattern: "*.{bam,cram,snf,tsv}" + - index: + type: file + description: Index of BAM/CAM file + pattern: "*.{bai,crai}" + - - meta2: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'fasta' ] + - fasta: + type: file + description: | + Reference database in FASTA format + - - meta3: + type: map + description: | + Groovy Map containing tandem repeat information + e.g. [ id:'hg38' ] + - tandem_file: + type: file + description: Tandem repeat file + pattern: "*.bed" + - - vcf_output: + type: file + description: VCF output file + pattern: "*.vcf.gz" + - - snf_output: + type: file + description: SNF output file output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test' ] - vcf: - type: file - description: Compressed VCF file - pattern: "*.vcf.gz" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test' ] + - "*.vcf.gz": + type: file + description: Compressed VCF file + pattern: "*.vcf.gz" + - tbi: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test' ] + - "*.vcf.gz.tbi": + type: file + description: Compressed VCF file index + pattern: "*.tbi" - snf: - type: file - description: SNF file - pattern: "*.snf" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test' ] + - "*.snf": + type: file + description: SNF file + pattern: "*.snf" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@christopher-hakkaart" - "@yuukiiwa" maintainers: - "@christopher-hakkaart" - "@yuukiiwa" + - "@fellen31" diff --git a/modules/nf-core/sniffles/sniffles.diff b/modules/nf-core/sniffles/sniffles.diff index b36fb319..30d9c425 100644 --- a/modules/nf-core/sniffles/sniffles.diff +++ b/modules/nf-core/sniffles/sniffles.diff @@ -1,110 +1,67 @@ Changes in module 'nf-core/sniffles' ---- modules/nf-core/sniffles/meta.yml -+++ modules/nf-core/sniffles/meta.yml -@@ -17,10 +17,10 @@ - description: | - Groovy Map containing sample information - e.g. [ id:'test' ] -- - bam: -+ - input: - type: file -- description: BAM file -- pattern: "*.bam" -+ description: BAM or SNF file -+ pattern: "*.{bam, snf}" - - bai: - type: file - description: Index of BAM file -@@ -34,6 +34,15 @@ - type: file - description: | - Reference database in FASTA format -+ - meta3: -+ type: map -+ description: | -+ Groovy Map containing tandem repeat file information -+ e.g. [ id:'tandem_repeats' ] -+ - tandem_file: -+ type: file -+ description: | -+ Tandem repeats file in BED format - output: - - meta: - type: map -@@ -46,8 +55,8 @@ - pattern: "*.vcf.gz" - - snf: - type: file -- description: Compressed SNF file -- pattern: "*.snf.gz" -+ description: SNF file -+ pattern: "*.snf" - - versions: - type: file - description: File containing software versions - +'modules/nf-core/sniffles/meta.yml' is unchanged +Changes in 'sniffles/main.nf': --- modules/nf-core/sniffles/main.nf +++ modules/nf-core/sniffles/main.nf -@@ -8,14 +8,17 @@ - 'biocontainers/sniffles:2.0.7--pyhdfd78af_0' }" +@@ -4,16 +4,15 @@ + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? +- 'https://depot.galaxyproject.org/singularity/sniffles:2.4--pyhdfd78af_0' : +- 'biocontainers/sniffles:2.4--pyhdfd78af_0' }" ++ 'https://depot.galaxyproject.org/singularity/sniffles:2.0.7--pyhdfd78af_0' : ++ 'biocontainers/sniffles:2.0.7--pyhdfd78af_0' }" input: -- tuple val(meta), path(bam), path(bai) +- tuple val(meta), path(input), path(index) + tuple val(meta), path(input), path(bai) tuple val(meta2), path(fasta) + tuple val(meta3), path(tandem_file) + val(vcf_output) + val(snf_output) - -+ tuple val(meta3), path(tandem_file) -+ val(vcf_output) -+ val(snf_output) output: -- tuple val(meta), path("*.vcf"), emit: vcf -- tuple val(meta), path("*.snf"), emit: snf -- path "versions.yml" , emit: versions -+ tuple val(meta), path("*.vcf.gz") , emit: vcf, optional: true -+ tuple val(meta), path("*.vcf.gz.tbi"), emit: tbi, optional: true -+ tuple val(meta), path("*.snf") , emit: snf, optional: true -+ path "versions.yml" , emit: versions - - when: - task.ext.when == null || task.ext.when -@@ -23,14 +26,33 @@ - script: - def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" -+ def reference = fasta ? "--reference ${fasta}" : "" -+ def tandem_repeats = tandem_file ? "--tandem-repeats ${tandem_file}" : '' -+ def vcf = vcf_output ? "--vcf ${prefix}.vcf.gz": '' -+ def snf = snf_output ? "--snf ${prefix}.snf": '' + tuple val(meta), path("*.vcf.gz") , emit: vcf, optional: true +@@ -31,7 +30,7 @@ + def tandem_repeats = tandem_file ? "--tandem-repeats ${tandem_file}" : '' + def vcf = vcf_output ? "--vcf ${prefix}.vcf.gz": '' + def snf = snf_output ? "--snf ${prefix}.snf": '' +- + """ sniffles \\ -- --input $bam \\ -- --vcf ${prefix}.vcf \\ -- --snf ${prefix}.snf \\ -- --reference $fasta \\ -+ --input $input \\ -+ $reference \\ - -t $task.cpus \\ -+ $tandem_repeats \\ -+ $vcf \\ -+ $snf \\ + --input $input \\ +@@ -41,21 +40,18 @@ + $vcf \\ + $snf \\ $args +- + -+ cat <<-END_VERSIONS > versions.yml -+ "${task.process}": -+ sniffles: \$(sniffles --help 2>&1 | grep Version |sed 's/^.*Version //') -+ END_VERSIONS -+ """ + cat <<-END_VERSIONS > versions.yml + "${task.process}": + sniffles: \$(sniffles --help 2>&1 | grep Version |sed 's/^.*Version //') + END_VERSIONS + """ +- + -+ stub: -+ def prefix = task.ext.prefix ?: "${meta.id}" -+ """ + stub: + def prefix = task.ext.prefix ?: "${meta.id}" +- def vcf = vcf_output ? "echo \"\" | gzip > ${prefix}.vcf.gz; touch ${prefix}.vcf.gz.tbi": '' +- def snf = snf_output ? "touch ${prefix}.snf": '' +- + """ +- ${vcf} +- ${snf} + echo "" | gzip > ${prefix}.vcf.gz + touch ${prefix}.snf -+ + cat <<-END_VERSIONS > versions.yml "${task.process}": - sniffles: \$(sniffles --help 2>&1 | grep Version |sed 's/^.*Version //') +'modules/nf-core/sniffles/environment.yml' is unchanged +'modules/nf-core/sniffles/tests/tags.yml' is unchanged +'modules/nf-core/sniffles/tests/main.nf.test.snap' is unchanged +'modules/nf-core/sniffles/tests/nextflow.config' is unchanged +'modules/nf-core/sniffles/tests/main.nf.test' is unchanged ************************************************************ diff --git a/modules/nf-core/sniffles/tests/main.nf.test b/modules/nf-core/sniffles/tests/main.nf.test new file mode 100644 index 00000000..9560b02d --- /dev/null +++ b/modules/nf-core/sniffles/tests/main.nf.test @@ -0,0 +1,286 @@ +nextflow_process { + + name "Test Process SNIFFLES" + script "../main.nf" + process "SNIFFLES" + config "./nextflow.config" + + tag "modules" + tag "modules_nfcore" + tag "sniffles" + + test("homo_sapiens - [bam, bai], fasta, [], true, false") { + + when { + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam.bai', checkIfExists: true) + ] + input[1] = [ + [ id:'genome' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ] + input[2] = [[],[]] + input[3] = true + input[4] = false + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.versions, + file(process.out.tbi.get(0).get(1)).name, + path(process.out.vcf.get(0).get(1)).linesGzip[0..1], + path(process.out.vcf.get(0).get(1)).linesGzip[4..62], + ).match() } + ) + } + + } + + test("homo_sapiens - [bam, bai], fasta, [], false, true") { + + when { + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam.bai', checkIfExists: true) + ] + input[1] = [ + [ id:'genome' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ] + input[2] = [[],[]] + input[3] = false + input[4] = true + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.versions, + file(process.out.snf.get(0).get(1)).name, + ).match() } + ) + } + + } + + test("homo_sapiens - [bam, bai], fasta, [], true, true") { + + when { + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam.bai', checkIfExists: true) + ] + input[1] = [ + [ id:'genome' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ] + input[2] = [[],[]] + input[3] = true + input[4] = true + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.versions, + file(process.out.snf.get(0).get(1)).name, + file(process.out.tbi.get(0).get(1)).name, + path(process.out.vcf.get(0).get(1)).linesGzip[0..1], + path(process.out.vcf.get(0).get(1)).linesGzip[4..62], + ).match() } + ) + } + + } + + test("homo_sapiens - [bam, bai], fasta, bed, true, true") { + + when { + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam.bai', checkIfExists: true) + ] + input[1] = [ + [ id:'genome' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ] + input[2] = [ + [ id:'genome' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.bed', checkIfExists: true) + ] + input[3] = true + input[4] = true + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.versions, + file(process.out.snf.get(0).get(1)).name, + file(process.out.tbi.get(0).get(1)).name, + path(process.out.vcf.get(0).get(1)).linesGzip[0..1], + path(process.out.vcf.get(0).get(1)).linesGzip[4..62], + ).match() } + ) + } + + } + + test("homo_sapiens - [bam, bai], fasta, [], true, false -stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam.bai', checkIfExists: true) + ] + input[1] = [ + [ id:'genome' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ] + input[2] = [[],[]] + input[3] = true + input[4] = false + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("homo_sapiens - [bam, bai], fasta, [], false, true -stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam.bai', checkIfExists: true) + ] + input[1] = [ + [ id:'genome' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ] + input[2] = [[],[]] + input[3] = false + input[4] = true + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("homo_sapiens - [bam, bai], fasta, [], true, true -stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam.bai', checkIfExists: true) + ] + input[1] = [ + [ id:'genome' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ] + input[2] = [[],[]] + input[3] = true + input[4] = true + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("homo_sapiens - [bam, bai], fasta, bed, true, true -stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam.bai', checkIfExists: true) + ] + input[1] = [ + [ id:'genome' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ] + input[2] = [ + [ id:'genome' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.bed', checkIfExists: true) + ] + input[3] = true + input[4] = true + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} \ No newline at end of file diff --git a/modules/nf-core/sniffles/tests/main.nf.test.snap b/modules/nf-core/sniffles/tests/main.nf.test.snap new file mode 100644 index 00000000..cb690bac --- /dev/null +++ b/modules/nf-core/sniffles/tests/main.nf.test.snap @@ -0,0 +1,481 @@ +{ + "homo_sapiens - [bam, bai], fasta, bed, true, true -stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test" + }, + "test.snf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + "versions.yml:md5,0786af72683ced7f193b290fad51e914" + ], + "snf": [ + [ + { + "id": "test" + }, + "test.snf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "tbi": [ + [ + { + "id": "test" + }, + "test.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "vcf": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,0786af72683ced7f193b290fad51e914" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-08-30T12:18:52.803761263" + }, + "homo_sapiens - [bam, bai], fasta, [], true, false": { + "content": [ + [ + "versions.yml:md5,0786af72683ced7f193b290fad51e914" + ], + "test.vcf.gz.tbi", + [ + "##fileformat=VCFv4.2", + "##source=Sniffles2_2.4" + ], + [ + "##contig=", + "##ALT=", + "##ALT=", + "##ALT=", + "##ALT=", + "##ALT=", + "##FORMAT=", + "##FORMAT=", + "##FORMAT=", + "##FORMAT=", + "##FORMAT=", + "##FORMAT=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO\tFORMAT\tSAMPLE", + "chr22\t1\tSniffles2.INS.0S0\tA\tATTAGGCAAAGAGAATATACTCGACTCATTTTGCTATACAGGAAAAAAGTGCTTCCTTAGCTCATTTGGAAAGAGATTGAGATTAGAAAAGATGGTTAATTTGTATGTATTTATAGAAATAAATAGAATACAAAATGAGGCTTTTAAATTTTTTCCCACATGAAAATATGATTACTTTAATCATTACGTTTTACATTGTTAGTTTGCAGACAGGCATAATTAGGTCCTCAGTTGCAGAAATCACAGACATCTGAAGGCCAGCCCTTTAATTTGGCCACCCCTAGATTTCTCTGCTCCTTCCTTTGCTCCTCCTACTGCACAGTTTGAACTGATGCTGTTCTATATAAGGTACTTTTCCACCTACCTCATCTCTGACTACAGTGCTATATTTTTCACACAGTAAGGACAGGTGTTGTGTTAATCTCACCATGCCAACAATCAGGGCACCACCTAGCAGAGTCAGTGAAGGCCAAAATAAACAGTGGAAGATAGCCATTTGGTCATACTTTTTTATAAGAATGACATCTTCAGATTGGCTGGCTGGACTGTAGAAGCATGAAAAGGGGGTTCCATTTTTGTGATCGAAGAATTCTTTTATGTCCAGAGCACTGTTGAGCAAATCATTTCTATCTTGGTGGCACTTAGGTGTGTAAAAGCACTAGGAATATGGAAGAGGGAAAAAGATAAAGGCACTGTCACCAATACCAAATACTTAACAGTTTCTAATTATGAAATAGCTTCAGGCTGAAGTTATTAGTGGGCAGTTTCAATCTTAGAAGGTGGTAAAATATTACATAGCTCATGGGAAAGGGTTGATTGGAGGGCCACAGTGAAATGGCCATTTCCAGTCATTAAGCAAGGATGTGGAAGAGAATTCTTAGTTTATATGACATTGCAGGAGAGTCAGTGACCAATTTCATAAGGAATATGACTCCTCCCTACATGCAGGTTCTTGGACTCTTGGACAGTATGAATCCGTTTGTCCATTGAACAAAAATGTATTGAGCCTTACTATGAGCTTTCAACACCTAGTAGTGCCTCTGTGGTCTCTGTCTTGATCTCCTGTAGCAAAATATTACCCTGAAGAAAAGCACGTTGAGGCTTTTGCTCTAGACTCACAGACAGGGAGCCCCACCTGGACTTTGGTTCCTGGGAGACAGAACCAGTGGAGAAGGGAGCTCTGTCAGCTGGTGACTTTTTTAAAAAAGCTTGAGGTTTATTACCATATCCATTAGGTACTTGAGGTACTGTGCTAAAGGCCTACAAACTGTTTGAAATCTTAAAAATCATTGCATCCAAAATAGAAAACAAAAGTCATCAGATTGAAATTGTAGGACTAAAGACAATAAAGTGTAACATGTCAACTAATCTTAACACAACTCAACTTTTATAGTTAGGTATAAATATAAATTTTAAATGATATGAAAGACTATACTTTCAGGGATCATTTCTATAATTCGTTAAATTATATGAACCCATTGTGTAACTTATTAAAATAAAAATAATCTTTACATTTATTTGATAAGAAAAAATTACTCGCTTGATTCAAGGGAGACTGTGGTACACTGTGTAGCATATGTTATATGGCGCGGAGTGGAATCTCCAAAAGAAAGACTCCCCACAAATGACTACTCATTGGCTCAGCCTATAAATTCCAGACACCAAGTTGTGAAATTGGAATAATTTCTCTCCTTTCTATATACCCCATTTCTCCACCAAGAAGAAAGCTTCATTTATCCTGATTTGATCACTATAAAAATGTTCACTCCAAAAAAATAGATTTATCCCTAAAGACAGCCCTGGGTTATTTATGTACCCTGCTAGGGACAGTCTGGCAGGGAAGGGTTGCTGTCATAAGAACTCTTTAAACTTTACAATACCTTGGGATTTATCTGGACAGCCTCTTCATTATAATGTAGGAGAGCTTTCTGAGCTGAATGGGTGAGGTTCACAAACACCCGAAGACACGAGTACTTCCCGTGACCACGGCAGTGCACACCACAGGTGAAGGCACAGTCCAGCCAGTCGTCCATGATATCTGTGTGGATGGCAGTGCAGGTTGATTCTTCTCTCCGAATGCTTCAATTTGAAAAAAAAAAAAATGTTCTTCACTTACTAGAAAATTTCGTTCTACATTTTGGTGCGGTTATGAGCTTATGTACACAATTAGCTGGGATTACAGGCGCTCAGCTGCCATGTCCAGCTAATTTTTGTATTTTTAGTAGAGACAGGGTGTTGGCCAGGCTCGTCTCCAACTCCTGACCTCAAGTGATCCACCCACCTTGGCCTCCCAAAGTGCTGGGATTACAGGCATGAGCCACTGCACCTGGCCCAAATACTATGTTTTATCAATTCTAAAGTGCACTTTAGTATTTACATTTTAATATAACTAAAATCAATATGTATTTTGCAATCAATGGCATCTTGCTATTATTTGAAAACATTTCTTTAATAGTCTGTAAAATAATGGAACATGCCCAGATGCAGTGGCTTGTGCCTGTAATCCCAGCACTTTGAAGGGTCAAGATAGGAGGATCGCTTGAGCCCAGGAGCTGGAGACCAGCCTGGCCAATATAGTGACAGAATAAATAAATAAGTAAATAAAATAATGGAAAATCTCACAAATGGTGATGTTTTAGGTTCGACAAAATACATTAACTAGCCCATTTAGTTTTCTGAAATTATTTTGATGTTATTGCTTACAATATTTGTTCTGTGGTACACAACCATAGGATTAATAATATTGATGAAAATAATAAAAGAATAATAAGCATGTATTGAGCTCTTCCTGTGTGAAGTTCTGGACAAATCCTCATAAAGCCTTAAAAGGCAGATACTAGGCTGGGCACGGTGGCTCATGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCAGGCAGATCACGAGGTCAGGAGATTGAGACCATCCTGGCTAACATGATGAAACACGGTCTCTACTAAAAATACAAAAAATTAGCCAGGCATGGTGGCACGTGCCTGTAGTCCCAGCTACTCGGGAGGCTGAGGCAGGAAAATCGCTTGAACCTGGGAGGCTGAGGTTGCAGTGAGCCAAGATCGCACCACTGCTCTCCAGCCTGGGCGACAGAGCAAGACTCTGTCTTAAAAAAAAAAAAAAAAAAGAAAGAAACAGGCAGATACTAGCCCAGGCACGGTGGCTCATGCCTGTAATCCCACACCTTCGAAGGCCCAGGCGGGTGGATTATCTGAGGTCAGGAGTTTGAGACCAGCCTGACCAACATTGTGAAACCCTGTCTCTACTAAAAATACAAAAATATTAGCCAGGTGTGGTGACAGGTGCCTGTAATTCCAGCTACTCAGGAGGCTAAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCTGAGATTGTGCCACTTTACTCCAGCCTAGGTGACAGAGGAAGACTCTGTCTCAAAAAAAACAAACAAACAACAACAACAACATCAAAAAGAAACCTATAGTAATAAAATTGAAACAGAAGGAGGTTTGCAATCAAAATGACTGACTAGGAATGAAATAGGAAAACATAATAATTTGCATCTGCATAGGGAAGTCTGAGATTGGCTGATCTTGTTCTCTTCGAGGGGGAATACTAGTCCAGAACTTGGGGTGCCTGCCAAGAGGGGAGCAGCCACAGTAGGAAAGGGGGACTCTGGAATGCTAGGGTTCTGGGGTCTGTGGACACAGGAGGCAGAGGACATGTGTTAAGATGTTTTAAGAAATGAATGTTGAACTGGATATGAAAATATTTTTCAGCCGGGCGCAGTGGCTCACGTCTGTAATCCCAGTACTTTGGGAGGCTGAGGCGGGTGGATCATGAGGTCAGGAGATCGAGACCATCCTGGCTAACACGGTGAAACCCCGTCCGTCTCTACTGAAAATACAAAAAGTTAGCCAGGCGTGGTGGCGGAGGCCTGTAATCCCAGTTACTCTGGCGGCTGAAGCAGGAGAATGGCGTGAACCTGGGAGACGGAGCTTGCAGTGAGCCGAGATTGCGCCTCTGCACTCTAGCCTGGGCGACAGAGGGAGACTCCATCTAAAAAAAAAAAAAAAAAAAAAAGAAAGAAAATATTTTTCACTATAGAGAGGCATATGTCCCCTGAACTTGCCGGGATCCACCTTTCCTGCTGGTGCATTCTGTGAGTTAGAAGAAAACTTCCAAAGAGCCATTTTTTCCACCCTGTCTACTGTATAAAATTGCTTCTCAAACATGTGCTGCATTGCAGAGGATTACCATTGTTTTGCTAACCAGCGTCTGGTCTTTCTTATGTGGCGCTGCAATTACTAGTGTCAAACCCTGTTGGTAATACCCAGAGGATGGTGTCTGAAGTCTTTACTCAATATTCACATTGGCTGGGTGTGGTGGCTCACACCTGTAATCCCAGCACTTTCGGAAGCAGAGGCAGGCGGATCACTTGAGGTCAGGAGTTCAAGACCAGCCTGGCCAACATGGTGAAACTCCATCTCTACTAAAAATACAAAAATTAGCCGGGTATGGTGGCGGGTGCCTGTAATCTCAGCTACTAGGGAGGCTGAGACAGGAGAATCACTTGAACCCAGGAGGTGGAGGTTACAGTGAGCCAAGATTGTGCCACTGTACTCCAGCCTGGGGGAAAATTCACATTTGTAGAGAGTTTAAATTCTTTTTTGATACGGAGTCTCGCTCTGTTGCCCGGGCTGGAGTGCAGTGGCAGGGTCTTGACTCACTACAACCTCTGCCTCCCAGGCTCAAGGGATTCTCCTGCTTTAGCCTCCTGAGTAGTTGGGATTACAGGCACCCACCAAAACACCTGGGCAATTTTTGTATTTTTATTAGAGACAGGGTTTCACCATGTTGTCCAGGCTGATCTGAAACTCCTGACCTCAGGTGATCTGCCTGCCCTGGCCTCCCAAAGTGCTGGGATTACAGGCATGAGCCACCACGCCCGGCCGAGAGTTTAAATTCTTAAATCCTACACTCCAATGTGTGGGAAGTATTCGTGCTATGCTTTTATAACTAAATCGTCTCAGTATTTCTATTCTAGCCCCCTTTTTCTGCCTGATGGTAAGATACTTAATCTAGTCAATTCCAGGTAAACTTTGGCCTTTTATGAATTCTCCTGATCAGGCCAAACCTCAACCAAGTCCCTTCTTGATCTTCTCCTTCACCTCCTTCCCTCATTCACCCAACAATTAGCCTCCAGTCCACGGGCTGATGCAGCATCTTGGTGTCCTGTGGTCTGAGGTCATTTTCTGTCTTTCTCAAGCCTCAGCTAAAGTTTACAATCCTACCTTTTCTACTGCCTTGAAATGCCCTAAGGTTCAGGGGCTTCATGGTTGCTGCTTCATGGGGGGAACCTGGCTGTTCTCTGAGGCTGCTCGGCCCGAACACCCCATCAACTACCCGGGGCCCATCTACGCCCGAGGCCTCAGCCATTCCTGCTCTACAGCTCTGCTGTCCCATTAACAGCACCTTTGGGGCCCCAGGGTTCCAGATTGGAAGCAGAGAATCTCCTCTGTTCTCAGACCCCCAAACTTTGTTGTGGATTCTAATTGTCCTTTCCCCCATCTCACTCCTTGGAACCCACTGGGAGGTGAGTAGAATCCCTGTCAGAGATTCTACCACCATCTCCCTCATTCTTACCCTAACTTTCTTCCTCTTCCTCCCTAGTTAGGAAAGAGGATCTTTAGCCTGCGGCGGGGGTGGGGGTGGGGATGCTTGATGTTTCAGGGGAAAAGGTGACTCAGCTACTTTTGGAATATCTGTCATACCTGTCTACTGGTGCAATGAGCTGGGATCACACCACTACACTCCAGCCTGGGTGACAGAGCAAGATTCCATCTCAAAAATAAATAAATAAATAAATAAAGACTCTGGAGAAACAACTCAATACACATGAGAAGAGGCTGGCCCATGAGGAAAGGATGGAAACTACTACAACTCTTTTCTGTTGTTTTGTTTTCAATAGTCTCTTCACAGTTCTTTTCACAGTTTGGAATTGATACCTTTTTCTCTTCATCAGAACTCCAATGTTTTTGTAGATTGAAGTCTTTTTTTTTTTTTCTTGAGAAAGGGTCTCACTTTGTCACCCAGGCTGGAGTGCAGTGGACCAATCACTGCTCACTGCAGCCTCGACTTCCTGGGCTCAAGAAATCCTTCCACCTCAGCCCCCCAAGTAGCTAGGACTACAGGTGTTCACCACCATGCCCAGTTAATTTTTATTTTTTAATGTATTATTATTATTATTATTATTATTATTATTATTTTGAGATGGAGTCTTGCTCTGTTGCCCAGGCTGGAGTGCAGTGGCACCATCTCGGCTCACTGCAACCTCTGCCTCCTGGGTTCAAGAGATTCTCTTGCCTCAGCCTTCCAAGTAAGTGGGACTACAGGTGCATGCCCCCACACCTGGGTAATTTATTTTTTTGTAGAAAAGGGGTATCAGTGTGCTGTCCAGGCTGGTCTCAAACTCCTAACCTCGAGTGATCTGCCTGCCTTGGCCTTCCAAACTACTGGGATTAGAGGTAATGAGTCACCATGACTGGCCTACGTATAGCCCAAATGGATGAGCAGTTCCCAAGGCTCATTCCCAGCCTCCACTATCCAAGTCAGCCTCTCATCTCCTTCATTTCCCAGGACTTAGTTCTCATTTTCCTCCCCTGTTTTCTCCGGATTGTGGCTATTGTTCCCTGGTTGCTAGATCAACCTGGAGCACAGTAAAGCAGTGTCACAAAGCTGGAAGGGGTCTGGGATGAGTCCACCAGCTACAAGTTCTTATAGAAAACGTACTCCGGGGATGGCCGGGCCCAGTGGCTCATGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGTGGGCGGATCCCCTGAGGTTGGGAGTTCGAGACCAGCCTGACCAACATGGAGAAACCCCGTCTCTACTAAAAATACAAAATTAGCTGGGTGTGGTGGCACATGCCTGTAATCCCAGCTACTAGGGAGGCTGAGGCAGGGGAATCGCTTGAACCTGGGAGGCGGAGGTTGCGGTGAGCCAAGATTATGCCATTGCACTCCAGCCTGGGCAACAAGAGTGAAACTCCATCTCAAAAAAAAAAAAAAAAAAAGAAAATGTACTCCAGGAATTGTCATTTCTGAAATTCAACAGCTTCTGGAATTGAAGCAAACAGCTCATCTTGGAAGAGAAATATGTAGCCAACTCCAAAGCCAAAGCCTTTGAATATCTGAGACCTAGCATGCTAGGAGACCTTTATCTGTAACCTCAGAAGAAGAATCTGGATCTGGCCAAATTGAGGTCAAATTCTGCTCAACTTCTCCATAGTCAGTAGGAGAAAAAAACCAACTTGATGTTTGAGTCATATGTTTTGACAACTAAAGAGGACACTTATGCTGGGGTCGGTGGTTCA\t44\tCOV_CHANGE_INS\tPRECISE;SVTYPE=INS;SVLEN=7407;END=0;SUPPORT=3;COVERAGE=0,0,0,0,8;STRAND=+-;STDEV_LEN=16.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t./.:0:0:0", + "chr22\t10115\tSniffles2.INS.2S0\tA\tAATGTGAAATTGCAAATAATTCACCTGAGAAATGAAAATTAATCTTCTTTGCTAAATGCCATAGAGATATTTTAAGTTGCTAATGTTACTTAGATGTTCATTAACTTAGTGAGTTACATTAAGTAGAGAAGATGCCTTTTTTTTTTTCTGTACGAAGTCTTGCTCTGTAGCCCAGTGTAGTGGTATGATCTCGGCTCACCACAACCTCCGCCTCCTGTATTCAAGCGACTCTCCTGCCTCAGCCTCCAGAGTAGCTGGGATTACAGGTGTGCACCATCGCACCTAGCTAATTTTTTGTATTTTTAGCAGAGACAGCATTTCACCATGTTGGCCAGGCTGTTCTTGAACCCCCGACCTCAGGTAATCCACCCTCCTTAGCCTCCCAAAGTGCCAGGATTACAGGCGTGAGCCACTGCACCCTGCTGAGAAGATGCCTTTTGACAATGAAGTGGATTTGTATATTTATCTTTGGCTTAAAAAAACATGCACCACCAATTACACTTTCCTCAAGTTTAAATTTTTAATAATTAGGAAAATAAAGCATTTTCTTGTCTTATAGTGTTAGCTAGATTGTTTTTGTGTATTTTGTCATGAATAAAAAGCATAGCTATATAGTTACTGCTTTTACATTAACTATAAATATCTTAAAATTTTACTACCTAAAATCAGGAAACTTGAACTGAAGCTACTAATCTTAGAGTTGGAAAAGTAAATACATAGAGGTTTCCTGTTGTACAAATGTCAAGTGGCACAGTGAAATTTACATTCATTTGAAAGTTTTCCTAACTGTAAAAAGTATCAAATTACTTGATACTTTGGAGTAGTTCATCATCTTTATCAGAGGCACAGGTCTTAACCATTGGCAAGCCTCTGTCAGAATATGCACATATTAAAGATCTGATTATTTTTGTGTTAATGTTAAAAAATTTTTCTGAAGCTTTTATCTTATTTTTTCCATCCTTACACCGTAAATTCACATTACCAAGTTGGGAAGCCAAAGAAACATTCTACTCTACTCATGTTTTTTCACCAGTTCATGAAAGTTGATGTTAGAAATGGGTGTGGGTGTGGGGGATGGGGGTGGTTGTACAGAAGCAGCAGGTGGTAGGGATAGGATTTCTGAAGCACTATCCTTGGCCTTTTTTGAGTAAACTCTTTATACCCTGAGCCACTTTCTTTTCAGAGGGCAATTGCTATTATTAGAGAGCCACCTTAAGCATTATTGTTGTAGAAAAATTAGGCACAACCAGTGATTGTCATTACAAGGACCAGCAAAAATGGCTAGGTTGCTACTCTGTATTTGTAACGCCCTTCCCCCAACAAAATTTCTCCTTTTCATATCTGTGAATTAGAAATAAGTGATAGAAAACTGTACTGCATTACAATATATACCATTTAATAAAACAAGTTTATAGTTGAGAGCACTATTCATGCTTTTTGAAAGAATGCAAATTTGTAATTTTTATGATAGCAATTCTTAATAATTTATTGTCCAAGAGATTTGATAAAATTTTTGATAGTTATTGGTCTCTGGGACTCAATAGGCACTGGAATGTTTTAATTCAGTTGAAAAGTTGGTTCAGGATTGCTACCCTCTCTTACCTGTTAGGAGGTTGTTGTTTAACCTGACCTGAAATTCCCATGAATAAGAACCTGTTTTTTTTTTTTTTTTTCTTTGACAGAGTCTTGCTCTGTCGCCCAGGCTGCAGTGCAGTGGTGCGATCTTGGCTCGCTGCAAGTTCCGCCTCCCAGGTTCAAGCGATTCTCCTGTCTCAGCCTCCCAAGTAGCTGGAGTAGCTGGGACTGCAGGCACGTACCACCATGCCTGACTAATTTTTGTATTTTTAGTAGAGACAGGGTTTCACCGTGTTAGCCAGGATGGTCGCAATCTCTTGACCTCATGATCTGCCTGCCTTGGCCTCCCAAAGTGCTGGGATTACAGGTGTGAGCCACCGCACCTGGCCCAGGGAATTTCTAATATTTGAGAAGATGTTATTTTTAGTCTATTATACAAATTTATATATTGTTTACTAATATATAAATTTACATATTGGTTACTAATATGTAAACACCAATTTACATATTGGTTACTAATATGTAAACTTGATAAACATGGATTTCCATGGAAATTTAAAAGTATCACAACAATTTGTTTTCCCATTCTGAAACTTGTGATTTATTACATTTTCCTACTATTTCAGTTAATTCCATAATGCCAGATTTGTTGTAAATTTGCCGAGTGACAAGCCACACTGCTTCCTCTCATTCCTCTATTCCACAAAACTGCAAAGTTTCCCAGACCACAGTCAGGTTTCTCTGGGTTGTCCACTCTGTAAACTTACAGAGTGGTTGTCCAACTCTGTAAACTTACAGAGTGGTTGTCCAACTCTGTAAACTTACAGAGTGGTTGTCCAACTCTGTAAACTTAAGTCACTTTAAGTTTATGACGGAGGGGCTTCGTGAAACTTCATTGACCTTCCAAGGTGAAAATTGGTCAGTTTTCAGTTATAAAGGACATTAAGGATGGGTGTGGTGGCTGATACATGTAATCCCAGCACTTTCGGGAGACTCAGTCAGGAGGATCACTTAATCCTCATTTAAAAGGAGTTTGAGACCAGCCTGGGCAACAAAGTGAGGCCTTGTCTCTACAAAAAAATTAGCTGGGTGTGGTGGTAGGCACTTGTAGTCCCAACTACTCTGGAGACTGAGCTGAGAGAAGATTGTGTGAGGCTTGGAGGTTGAGGCTGCAGTGAACGGACATCACACCACTACACTCTAGTCAGGTGACAGAGCAAGACTCTAAATAAATAGGAACATTAGATGGTCTCTCTGCACTCTTGCCTGGTGGGGACGTGTTAGATACCCTCGTTAGGTTGTGATTTAGTTTTTAATCTGTGAGATGTTTGGGTCAAACAATTTTTAGCTGCCATGGAATAAACTTTCCAGTCAACGTGTGAGTTTGTGTTTGCCTTTACTTTTTTTTTTTTCTATATTGTTTTGGTCTATTTTTATCTTTTAATTTCAGAAAGCTGATTAATCTCTTCCTTTTCTCTTTAAAAATTTTCTTTATCATGTTTGTGCTACAGTGGTTATTTTGAGAACTTGTTGGCAGGATAAGTTGCAAAAGTTATGAAGTAGAATAGGGATGATTTCTGTTTTTGTTTTTTTTTTTTTCAGACAGAGTCTCACTCTCTTGCCTAGGCTGGAGTGCAGTGGCGTGATCCTGGCTCACTGCAGCCGCCGCCCTCCGGATTCAAGTGATTTGCCTGGCTCAGCCTCCCAAAAAGCTGGGATTACAGGTGCATGCCACCACACCCAGCTAATTTTTGTGTTTTTAGTAGAGATGGGTGTTCACCATGTTGGCCAGGCTGGTCTCAAACTCCTGACCTCAGGTGATCTGCCTGCCTCCGCACTCCCAAAGTGCTGGGATTACAGACGTGAGCCACCATGCCTGGCTGAGATTATTTCTTTTTTTATTATAGCCATTGCTTGTAGATATATGCTGGTGGTTATCTGTAAAAATGTAATAGAAAGGCCGGGCACGGTGGCTCACACCTGTAATCCCAGCACTTTGGGAGGCTGAGGTGGGCGGATCACAAGGTCAGGAGTGGGAGACCAGCCTGGCCAATATGGTAAAACCCCGTCTCTACCAAAAATACAAAAATTAGCTGGGCATAGTGGCGGGCACCTATAGTCCCAGTGACTCGGGAAGCTGAGGCAGGACAATCGCTTGAACCCAGGAGGCAGAGGTTGCAGTGAGCTGAGATCGTGCTATTATTGCACACCAGCCTGGGCGACAGAGTGAGACTCCGTCTCAAAAAAGAAAAAAGTAATAGACCAATCTTGAATTTATAATTGGAAGTGTTATTTCTTTATTTGCAGAATTTATTTATTTGTGACGCAGCTGTTGCTACCTCGCCTTTTCTTTTGTTGAGCTTAATCTCATGTCAAGTCATTCAACCAACTCAAAAGCGATGAAGACATTATTGAATCAACCTGAACTAAATCAGACCTAGGCTTCTTAAAATATACAGCTTAATGCTTCCAAATGATTTAGAAAACTAAAAAACCTAGCTACGCTGTAGGACACACAGTGGCCAATAAAAACAGGACCCCCAAACTGGCCAGTGGACCACTGCAACCACTATTTACTTCCTCCGTGTTTAGGAATGTTCAACGCTCCAAGCCCCATAGGCTGATTCAAGAAGATAAAGTGAGACTCAAGGAATTTCGAAGTGGAACAATACACCAAAGCCTTAAACCTGAAATGACTCTCCTTTTCTGGGGGTGAGGGAAGAAAAAGAAAAAGTTTCTAGGGCTCTCGGGGTGGCCTGGATGCCAGGGTCCCAGAAGTGGCCTTTTCTAGCTCCTGTAACTAAACCTGGCGGAAAACTCCCCGCCTGCTCACTCCACCCCCACCCGCCCAAGAATGCGTCTTCCCGTCTTCGGTGGCCCTACCCAGAATCCCAAAATGTGGGTTCCAACCCGGGCCCTGAATGTCTTCTCAAATCCCCGGGACCCAGGTTCCGGTGCGTGCCTTGCGTGCCGGGTCTTGCCCCTCGGGCGGTACCACCCAGGCAGCCCTAAATCCAGCCTCCCGGGCCCCCAGCAGCGCCCTCCGCCCCTCCACTATCCGGTCCGGCTCGAAGTCGGGGCCAAATCCAGAGACAAGAGGGCTGTGCCTGAAACTGAGCAGTTTCACCACTCGGCACTCCTGGCGGAAACTTCCCTTTAAAAAAAAAAAAAAAGAAAAGAAAGAAAAGCAACAGCACTTTTGGGCTAGCATTTCAATCCTTCCTGCCCTTTAGAGTTCCCAGTTCTGCTTCCAGCTGGCTTTGGGTGTTCCACTAGAATTGAGTTGTAAAGATATTCTTTAAGTGTTTATAGAACATTAAGACTTAAAAAAAATCTTTAAAATTAGAGGAGGGAAGCCACTGATCGCACACATCCAGGAAATGCAGCCCCGTGCATCCCTGCTCAGGGATGAGCAGGCGCCCCAGGACTCCCGGAGACAGATTTTTGGGCACCCGAGGGAGTCACCGGGCGCGTGTCGGGGTCCGCGGTGAGGCCCAGCCCCTCCGGCGGTCCCTTAGACGCGCCCTCTGCCCGGCCGGTGATCGGCCATTGTTTACGGGGGATGCCCGTCCAGACGCATTGTTTTGGCCGTTTCCAACTTGCCCCGGCCCTTTCCGGGGCATCGCGGGGGACCCTACACCGACGTCCCCCCTCCGCCCGCGCCCCAAGGGCTGACTGGGCAAATTGGCAGATCCGCCCCGCGGGGCGACCCAACTTTTCGGAACAGCCCCCCACCGCCCACCCCTGCAGATCCCCGGACCCCCGCTCCCGGCGGAGATTCAGGGAACCCCGCATCCCAAGCCCTTCTAAATCGTGCGGCCTGAGTGTGACGGCCAAGAGCGGATGCAGCCCGGGATCGCCCGCACCTTCCCGTGGGCGGAAGCGCAGGAGCCGGCTGGGGGAGGGGGCGCCCTAGAGAAGCGGCTAGAAAGCTGAGACGGGGAACTGAGGTCATCCTGGGGGGGACAAGACAATGAGAGCCGGGCGCCTTGGGGGCGGCGCGGGAGCCTCCGCAGGACCAGGCGGGCGCCCCCTTTACCTGCGGCTCCGGCGCCTCGGCCGTTTCCTCGCGCGGCGGCGGCCGGGACTGAGCTGACACCACTCAGCCGGCGGGGTTTGAATGAGGAGGAGCGGGCGCGGAGGGGAGGGGGCGGGGAGGGAGGGAGGGAGGCGTCGCGGAGTTTCTCTCGGCCTTTTGTGCCATCCGCCGAGGCGCCTTGAGTATAAATCCAGATAGTGCAGTTTTTGTTGTGCTTGTGCTGATCAACTTTATGGTGTGATTAAATACGATTTTTTTTATTACGCTCTTGAAATTGTACTCTTGAGGTTGCAGAATGGCAATTAGATGGCAGTCGCTGATAGCCATGTAGAAGTTTTGATGAACATGCAAGTTAATTTTAATTTCTGATCAGTTACGGTTAGTGACTGTGGCCAAACATGTGCGTACTGATTCTACATGTGCTAATTCCGTGACGTTTATTCACCAGCTATGTGTCCCGTGCCTAATCCTGTGTCAGGCACCTTGTTCCAGGCATTGGGGGCAGCAGTGGACAAGGCAACAGAGTCTCCATCCTGAGGTGTTACTTTTAGAAAAAGATAGTTACAAGCAAATAAACAGGATGGTTTTAGATCTGGACAGAGGTTTTCAGAGGAAGTCATCCTTGAGCTGTCACAATGCTTTGGGGAGGGGTGTGCTGGGTAATCAGGGATGGCACATTTGGGGTGCCTAAGGATTGCTGTGGCCCTGGGAGCCTAGGACAGTTGGTCACAATTGACTTATTAGAGTCAGTCTCAGAAGCTTTCCTGGAAGTAGAATTGCTGCTGTTTTGCCAGGAGGGTTTCCTTCCCCATCTGACCACACAAGAAGACCCCTGCCCACAAATGCCTACCACTCCCAGGTCTCCCAGGCTGTTCACCCTCCCAGGCAAAGTGGAAGCTTCCTCTGTCCTAAGATCGTTTCCCACTGAACCTCCTTCATTTTCCTTCACTGCAGAGAAATAATCCTACAAGGTCTTGTGTGGAGAGTGATGGTACCTTCTTTAACCCAGATAATTGAGAATTGGAACCAAAACATCTGTGTATTAATAAATATTTTCAGTAACTAGGTTATGCTATTTCCCTGAGTGGGAAATAACACTCCATCATGTTTCTTTTTTTGGGGGGCAAGGGGGAGTCAAAGTTGTCAGGCCTCTGAGCCCAGGCCAGGCCATCGCATCCCGTGACTTGCACATATACATCCAGATGGCCTGAAGTAATTGAAGATCCACAGAAGAAGTAAAAACAGCCTTAACTGATGACATTCCACCATTGTGATTTGTTCCTGCCCCACCCTAACTGATCAATGTACTTTGTAATCTCCCCCACCCTTAAGAAGGTTCTTTGGAGTCTCCCACCCTTGAGAATGTACTTTGTGAGATCCACCCCTGCCCACCAGAGAACAACCCCCTTTGACTGTAATTTTCCATTACCTTCCCAAATCCTATAAAACAGCCCCACCCCTATCTCCCTTCACTTGACTCTCTTTTCAGACTCAGCCCACCTGCACCCAGGTGAAATAAACAGCTTTATTGCTCACACGAAGCCTGTTTGGTGGTCTCTTCACACGGATGCGCATGAAATTTGGTGCCGTGACTTGGATCGGGGGACCTCCCTTAGGAGATCAATCCCCTGTCCTCCTGCTCTTTGCTCCGTGAGAAAGATCCACCTACGACCTCAGGTCCTCAGACCGACCAGCCCAAGAAACATCTCACCAATTTCAAATCTGGTAAGCGGCCTCTTTTTACTCTCTTCTCCATTCCTCCTCCTTCTCCCTTAGCTTCTCCAACCTCCCTCACTATCCCTCAACCTCTTTCTCCTTTCAATCTTGGCGCCACACTTCA\t7\tPASS\tPRECISE;SVTYPE=INS;SVLEN=7453;END=10115;SUPPORT=1;COVERAGE=10,10,10,29,10;STRAND=-;AF=0.300;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:10:7:3", + "chr22\t10126\tSniffles2.INS.1S0\tA\tACCGCTTTTCTGGGGCAGGGGCAAGTACCCCTCAACCCCTTCCCCTTCACACTTAGTGGCAAGTCCCGCTTTCCTGGGCAGGGGCAAGTACCCCTCAACGCCTTCTCCTTCACCCTTAGTGGCAAGTCCCGCTTTTCTAGGGGGGCAAGAACCCCCAAACCCCTTCCATCTGTGTCTCTACGCTCTCTTCTGTGGGTTTGCTTCCTTCACTATGGAACCTTCCACCCTCCATTCCTCCTTCTTCTCCCTTAGCCTGTGTGCTCAAAAAGTTAAAACCTCTTCAACTCACACCTGACCTAAAACCTAAATGCCTTATTTTCTTCTGCAACACCGCATATCTTGCTTGGCCCCAATACAAACTTGACAATGTCTCTAAATGGCCGGAAAATGGCACTTTGATTTCCCCACTGACAAACACCTAAATAATTTTTGTCGAAAAATGGGCAAATGGTCTGAGGTGCCTTACGTCCAGGCATTTTTCACACTTCGTTCCCTCCCTAGTCTCTGTTCCCAATGCGATTCCTCCCAGATCCTCCTCCTTTCCTCTCCTGTCCCCTCGGTCCCAACCCCAAGCGTCGCTGAGTCTTCCCAGTCTTCCTTTTCTACAGACCCATCTGACCTTTCCCCTCCTCCCCAAGCTGCTTGTCGCCAGACCGAGCTAAGTCCCAAGTACCTCCCTCAACTCTCCACTCCTCCACCCTATAATCCTTCTATCACCTCCCCTCCTCACACCTGGTCCGGCTTACAGTTTAGTTCCGCGACTAGCGCTTCCCCACCTGCCCAACAATTTCCTCTTAGAGAAAGTGGCTGGAGCTGAAGGCATAGTCAAGGGACATGTACTTTTTTCTCTATCAGACCTCTCTCAGATCAGTCAATGTTTAGGCTCTTTCTCATCAGACCCCACTAAATATATACAGGAATTCCAATATCTAACTCTGTCCTACAACTTAACCTGGAGTGACTTAAATGTCATCCTGACTTCTACTCTCTCCCCAATATGAACGGGAAAGTTTTTTCTCTAGCCCAATCTCGTGCTGATAACCGCCGGCTTCATGAGCCAGACCTCCAGGAAGGCATTAGAGCAGTTCCCCGAGAGGATCCCCAATGGAACTATCAGGCAGATTCCCCAGGTACAGCTAGGCGAGATTACATGGTTTCCTGCCTAGTTGAAGGGCTTAAAAAAGCAGCTTACAAAGCTGTTAATTATGACAAGCTTAAAGAAACTACCCGAGGTAAAGACGAAAACCCAGCCCAGGTCATGGCCCACTTAGCAGCAACCATTAGATGCTATACTGCCCTAGACCCAGAGGGGCCAGAAGGCCGCCTTATTCTTAATATGCATTTTTATCACCCAATCCACTCCTGACATTAGGAAAAAACTTCAAAAATTAGAATCTGGCCTTCAAACCCAGCAGGAATTAATCAACCTTGCCTTCAAGGTGTACAATAATAGAGAGGAAGCAGCCAGACGGCAACGCATTTCGAGTTACAATTACTTGCCTCTGCTGTGAGACAAAACCCAGCCACACCTCCTGCATACAGGAACTTCAAAATGCCTAAGCCGCAGCAATCAGACACTCCTACAAGACTTCATCAGGATCTTGCTTCAAGTGCCAGAAATCTGGCCACTGGGCCAAGGAATGCCCACAGCCCAGGATTCCTCCCAAGCCATGTCCCATCTGTGCAGGCACCCACTGGAAATCAGACTGCCCAGCTCGCCCGACAGCCACTCCTGGAGCCCCTAAAGCTCTAGCCCAAGGCTCTCTGACTCCTTCCCAGATCTATTCGGCTTAGCGACTGAAGATTGACGCTGCCCGATCGCCTCGGAAGTCCCCTGGACCATCACAGAAGCCGAGCTTCGGGTAACTCTCACAGTGGAGGGTAAGTCCATCCCCTGTTTAATCGATACGGGGGCTACCCACTCCACGTTGCCTTCTTTTCAAGGGCCTGTTTCCCTTGCCCCCATAACTGTTGTGGGTATTGACGGCCAAGCTTCAAAACCCCTGAAAACTCCCCCACTCTGGTGCCAACTTGGACAACACTCTTTTATGCACTCTTTTTTAGTTATCCCCACCTGCCCACTTCCCTTATTAGGCCGAAATATTTTAACCAAATTATCTGCTTCCCTGACTATTCCTGGAGTACAGCTACATCTCATTGCTGCCCTTCTTCCCAATCCAAAGCCTCCTTTGTGTCCTCTAACATCCCCACAATATCACCCCTTACCACAAGACCTCCCTTCAGCTTAATCTCTCCCACTCTAGGTTCCCACGCCGCCCCTAATCCCACTTGAAGCAGCCCTGAGAAACATCGTCCATTCTCTCTCCATACCACCCCCCAAAAATTTTCGCCGCTCCAACACTTCAACACTATTTTGTTTTATTTGTCTTATTAATATCAGAAGGCAGGAATGTCAGGCCTCTGAGCCCAGGCCAGGCCATCGCATCCCCTGTGACTTGCACGTATACATCCAGATGGCCTGAAGTAACTGAAGATCCACAAAAGAAGTAAAAACAGCCTTAACTGATGACATTCCACCATTGTGATTTGTTCCTGCCCCACCCTAACTGATCAATGTACTTTGTAGACTCCCTCCCCCCACCCTTAAGAAGGTTCTTTGTAATTCTCCCCACCCTTGAGAATGTACTTTGTGAGATCCACCCCTGCCCACCAGAGAACAACCCCCTTTGATTGTAATTTTTTATTACCTTCCCAAATCCTATAAAACAGCCCCACCCCTATCTTCCTTCACTGAACTCTCTTTTCGGACTCAGCCCACCGGCACCCAGGTGAAATAAACAGCTTTATTGCTCACACAAAGCCTGTTTGGTGGTCTCTTCACACGGACGCGTATGAAAAAAGTCTCGCCCTGTTGCCCAGGCTGGAATGCAGTGGCACGATCTTGGCTCACTGCTACCTCCACTTCCTGGGTTCAAGTGATTCCCAAGTAGCTGGGATTACAGGTGTGTATTACCATGCCCAGCTAATTTTTGTATTTTTAGCAGATAAGGGGTTTCACCATGTTGGCCAGGCTGGTCTCCAACTCCTGGCCTCAAGTGATCCACCCACTTCGGCTACCCAAAGCATTGGGAGTACAGGGGTGAGCCACTATGCCCAGCCTCACATCATATTTCTAATCCCGAGACTGTAGAGCTGGTGTCTCTTTTTGGAAAGGATGTCAGTAGAGAAAATGGAGTTCCCCAAAATTACAGTTTCACATATTAGTAAAGTTTCTAAAATACAGTAATAATGTTGAGAGCTGACATAGGGACTAACTTAGTTTTTTTTTTTTTTTAGATTGTCACCTAACTTTGATTTTGCTAAATAAGGACATTAAAAGAAAACCAAAAAAGTCCACTATTGGCTATTGCCACTATTTGATTTTTTAAAAAATAAGCGTATTTTAGCATCTAAAAGTAGGAAGGACCTCAAATAAATGAGTCTTTGTTCTTGGCCAGGGAAACAGCGTTGTCAGCATTTGATAACTGTTTTTCTAGGGTATGTGCTGTTATTCAGTTAAAACCTTGCCTGGGGATGTTAGCATTGGTAAATACTTGTTGAATAAGCAAATGAAACTTAAGCTTCTATGTATAGAAACCTAAGTCACTTCACATTCTGATTAGCAGAGTAATTGAATATTCTTTTCAGTGTGTAGATCTATACCCAGAACCACAGAATATCGGAACTGTAAAAACCAACTGCATTAAATAGATGTGGTATGTGGCAGTGTACCAAGGTTGTGACTAGAACTCCGGTCTTGGAGTGTTCTATTATATCACACCAAGCTGGTCACCAGCCCATGTGTTGATCCTCCATTGTGATAGCAACAAAGAAAAGACTTCAGGACATTCTTTCCTTTACCCTAATCCTTCATCTTCAGTCTTATTTAGAAAAGCTTAATGTTAAAGATCTAGTTTATTCAAAACTAAAGATAAGGAGTATGAGAATTTCTATTTCGGAGTGTAAAGGAGGAGATGTTTCCTTGGCTTCTCTGAGCCTACAGGCCTTCCTTGCTCTTTAAGGAAGTAGAGAGAGAGAGGAAAGTAAAGTATGCTTTTGTTTTTTAAGGTTACTTTGCTGGGAGTAGTTTGCATGCCATTTGGTTTTCTTGGGTGGAATTAACTGACTTAAGTTTTAAGTAGTTGGGACTATTTAGAAACAATGCCTATCCAATGTTTGCCATAAAGGCAGAGGGTATTGGCTTTAGAAGTTAATTCTTCTCCAGGAGTGAAAATGAGCTGCTAAACCAGAAGCAGCAGAGCTAAAGAAAGTAATTTTCCACCTGGCCAGTGCATGATGTGAAAGGTAGACTAAAAGAATGAGAGGACCCATTTTCTGATGAAAGACTAAGCCATGTTGAAACAGCCCTGTTGAGGATTTTATTTTAAATCTATACATTCACAAAGGAGCTTTGTGTATGTCTTTCCCTATTTGTTGTTTGGACTAAGGGAGCCCCACCCAGTGCTTGTTCAGTAAGTTGTTGAAAGAAATCTGGATTTGAACAGTGGATTGAGGTTTCGAATATCCAGTGAACCAAAATATATCAGGGTTCCCCTGGCCAAGATGAGTGACCATTCTGAGGTGTTACGTATTTCTTGAATGGGGATTTTAGGAAAAGTTTCTGTATTTCTGTGCTCATTTTGTTGACCTCTGTATGTGCAAAATCTCTAAGGGGGTGTTTGGGCACTTAGATTTCTTGGATGCAGATTTGTTTGTATATGAAACAAATTTTAAATTGTTTCGTATACACTGGATTTAAAATAGTTTAGTTTACTAAAGTGTTTTAATGTTTTCATCTTAATTTTCAGTTCTTATAGTCTTTAGATTTAGGGAGGCTGTTGATGGCATCCACATATGCATTTTAATGTCATTTAAAATGTATTCTGCTGAATTTAACAATTTCTGACCTAAAACTTGACATTTTAATATTTAAGTCGGTAAAGCGCTGATTTAAACTGGATTTTAACTGGATGAAATTCTGATTTAATGAGTGTACTGACTGGATAAAATGCCAATGATTTAATTAACAAGCACGTTTACAGCATGCCCTATATATTAGTTAAAAGTGAAGCAATTGAATTAGGTACCATTTCAAAATGGTTGCTGTACCCACTCACCCTCTCTATCCTCCAATTAGGGTATATTTTGAAATGATTGCTTTTCCCTTTTCCTTGTGTAAAGAGCCTGAGGAAATTTTCTTCGGCCTTCATCATGAGAACCTGGTGGGGTTTCTGGAAGTAAAATTCATGAAAGTATAAGGGGCCCCCAAGACGGGACTCCAACAAGTTTTTAACTCTCAAGCTAGTCCACACTCAGCCACCAGTAAATTTATTGATTACCATTGAAGTGTTCCTACCAATTAC\t9\tPASS\tPRECISE;SVTYPE=INS;SVLEN=5362;END=10126;SUPPORT=1;COVERAGE=10,10,10,29,10;STRAND=-;AF=0.200;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/0:2:8:2", + "chr22\t13000\tSniffles2.INS.3S0\tT\tTGATAATCAAGAGAACGTCTCAGCACCGCGCCTGAGCGCTTAGTAGGTAGTGATCAAGAGAGAAGACCTC\t36\tGT\tIMPRECISE;SVTYPE=INS;SVLEN=69;END=13000;SUPPORT=2;COVERAGE=11,13,13,16,51;STRAND=+-;AF=0.154;STDEV_LEN=6.364;STDEV_POS=37.477;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/0:10:11:2" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-08-30T13:26:19.039514387" + }, + "homo_sapiens - [bam, bai], fasta, [], false, true -stub": { + "content": [ + { + "0": [ + + ], + "1": [ + + ], + "2": [ + [ + { + "id": "test" + }, + "test.snf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + "versions.yml:md5,0786af72683ced7f193b290fad51e914" + ], + "snf": [ + [ + { + "id": "test" + }, + "test.snf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "tbi": [ + + ], + "vcf": [ + + ], + "versions": [ + "versions.yml:md5,0786af72683ced7f193b290fad51e914" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-08-30T12:18:29.154473769" + }, + "homo_sapiens - [bam, bai], fasta, bed, true, true": { + "content": [ + [ + "versions.yml:md5,0786af72683ced7f193b290fad51e914" + ], + "test.snf", + "test.vcf.gz.tbi", + [ + "##fileformat=VCFv4.2", + "##source=Sniffles2_2.4" + ], + [ + "##contig=", + "##ALT=", + "##ALT=", + "##ALT=", + "##ALT=", + "##ALT=", + "##FORMAT=", + "##FORMAT=", + "##FORMAT=", + "##FORMAT=", + "##FORMAT=", + "##FORMAT=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO\tFORMAT\tSAMPLE", + "chr22\t1\tSniffles2.INS.0S0\tA\tATTAGGCAAAGAGAATATACTCGACTCATTTTGCTATACAGGAAAAAAGTGCTTCCTTAGCTCATTTGGAAAGAGATTGAGATTAGAAAAGATGGTTAATTTGTATGTATTTATAGAAATAAATAGAATACAAAATGAGGCTTTTAAATTTTTTCCCACATGAAAATATGATTACTTTAATCATTACGTTTTACATTGTTAGTTTGCAGACAGGCATAATTAGGTCCTCAGTTGCAGAAATCACAGACATCTGAAGGCCAGCCCTTTAATTTGGCCACCCCTAGATTTCTCTGCTCCTTCCTTTGCTCCTCCTACTGCACAGTTTGAACTGATGCTGTTCTATATAAGGTACTTTTCCACCTACCTCATCTCTGACTACAGTGCTATATTTTTCACACAGTAAGGACAGGTGTTGTGTTAATCTCACCATGCCAACAATCAGGGCACCACCTAGCAGAGTCAGTGAAGGCCAAAATAAACAGTGGAAGATAGCCATTTGGTCATACTTTTTTATAAGAATGACATCTTCAGATTGGCTGGCTGGACTGTAGAAGCATGAAAAGGGGGTTCCATTTTTGTGATCGAAGAATTCTTTTATGTCCAGAGCACTGTTGAGCAAATCATTTCTATCTTGGTGGCACTTAGGTGTGTAAAAGCACTAGGAATATGGAAGAGGGAAAAAGATAAAGGCACTGTCACCAATACCAAATACTTAACAGTTTCTAATTATGAAATAGCTTCAGGCTGAAGTTATTAGTGGGCAGTTTCAATCTTAGAAGGTGGTAAAATATTACATAGCTCATGGGAAAGGGTTGATTGGAGGGCCACAGTGAAATGGCCATTTCCAGTCATTAAGCAAGGATGTGGAAGAGAATTCTTAGTTTATATGACATTGCAGGAGAGTCAGTGACCAATTTCATAAGGAATATGACTCCTCCCTACATGCAGGTTCTTGGACTCTTGGACAGTATGAATCCGTTTGTCCATTGAACAAAAATGTATTGAGCCTTACTATGAGCTTTCAACACCTAGTAGTGCCTCTGTGGTCTCTGTCTTGATCTCCTGTAGCAAAATATTACCCTGAAGAAAAGCACGTTGAGGCTTTTGCTCTAGACTCACAGACAGGGAGCCCCACCTGGACTTTGGTTCCTGGGAGACAGAACCAGTGGAGAAGGGAGCTCTGTCAGCTGGTGACTTTTTTAAAAAAGCTTGAGGTTTATTACCATATCCATTAGGTACTTGAGGTACTGTGCTAAAGGCCTACAAACTGTTTGAAATCTTAAAAATCATTGCATCCAAAATAGAAAACAAAAGTCATCAGATTGAAATTGTAGGACTAAAGACAATAAAGTGTAACATGTCAACTAATCTTAACACAACTCAACTTTTATAGTTAGGTATAAATATAAATTTTAAATGATATGAAAGACTATACTTTCAGGGATCATTTCTATAATTCGTTAAATTATATGAACCCATTGTGTAACTTATTAAAATAAAAATAATCTTTACATTTATTTGATAAGAAAAAATTACTCGCTTGATTCAAGGGAGACTGTGGTACACTGTGTAGCATATGTTATATGGCGCGGAGTGGAATCTCCAAAAGAAAGACTCCCCACAAATGACTACTCATTGGCTCAGCCTATAAATTCCAGACACCAAGTTGTGAAATTGGAATAATTTCTCTCCTTTCTATATACCCCATTTCTCCACCAAGAAGAAAGCTTCATTTATCCTGATTTGATCACTATAAAAATGTTCACTCCAAAAAAATAGATTTATCCCTAAAGACAGCCCTGGGTTATTTATGTACCCTGCTAGGGACAGTCTGGCAGGGAAGGGTTGCTGTCATAAGAACTCTTTAAACTTTACAATACCTTGGGATTTATCTGGACAGCCTCTTCATTATAATGTAGGAGAGCTTTCTGAGCTGAATGGGTGAGGTTCACAAACACCCGAAGACACGAGTACTTCCCGTGACCACGGCAGTGCACACCACAGGTGAAGGCACAGTCCAGCCAGTCGTCCATGATATCTGTGTGGATGGCAGTGCAGGTTGATTCTTCTCTCCGAATGCTTCAATTTGAAAAAAAAAAAAATGTTCTTCACTTACTAGAAAATTTCGTTCTACATTTTGGTGCGGTTATGAGCTTATGTACACAATTAGCTGGGATTACAGGCGCTCAGCTGCCATGTCCAGCTAATTTTTGTATTTTTAGTAGAGACAGGGTGTTGGCCAGGCTCGTCTCCAACTCCTGACCTCAAGTGATCCACCCACCTTGGCCTCCCAAAGTGCTGGGATTACAGGCATGAGCCACTGCACCTGGCCCAAATACTATGTTTTATCAATTCTAAAGTGCACTTTAGTATTTACATTTTAATATAACTAAAATCAATATGTATTTTGCAATCAATGGCATCTTGCTATTATTTGAAAACATTTCTTTAATAGTCTGTAAAATAATGGAACATGCCCAGATGCAGTGGCTTGTGCCTGTAATCCCAGCACTTTGAAGGGTCAAGATAGGAGGATCGCTTGAGCCCAGGAGCTGGAGACCAGCCTGGCCAATATAGTGACAGAATAAATAAATAAGTAAATAAAATAATGGAAAATCTCACAAATGGTGATGTTTTAGGTTCGACAAAATACATTAACTAGCCCATTTAGTTTTCTGAAATTATTTTGATGTTATTGCTTACAATATTTGTTCTGTGGTACACAACCATAGGATTAATAATATTGATGAAAATAATAAAAGAATAATAAGCATGTATTGAGCTCTTCCTGTGTGAAGTTCTGGACAAATCCTCATAAAGCCTTAAAAGGCAGATACTAGGCTGGGCACGGTGGCTCATGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCAGGCAGATCACGAGGTCAGGAGATTGAGACCATCCTGGCTAACATGATGAAACACGGTCTCTACTAAAAATACAAAAAATTAGCCAGGCATGGTGGCACGTGCCTGTAGTCCCAGCTACTCGGGAGGCTGAGGCAGGAAAATCGCTTGAACCTGGGAGGCTGAGGTTGCAGTGAGCCAAGATCGCACCACTGCTCTCCAGCCTGGGCGACAGAGCAAGACTCTGTCTTAAAAAAAAAAAAAAAAAAGAAAGAAACAGGCAGATACTAGCCCAGGCACGGTGGCTCATGCCTGTAATCCCACACCTTCGAAGGCCCAGGCGGGTGGATTATCTGAGGTCAGGAGTTTGAGACCAGCCTGACCAACATTGTGAAACCCTGTCTCTACTAAAAATACAAAAATATTAGCCAGGTGTGGTGACAGGTGCCTGTAATTCCAGCTACTCAGGAGGCTAAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCTGAGATTGTGCCACTTTACTCCAGCCTAGGTGACAGAGGAAGACTCTGTCTCAAAAAAAACAAACAAACAACAACAACAACATCAAAAAGAAACCTATAGTAATAAAATTGAAACAGAAGGAGGTTTGCAATCAAAATGACTGACTAGGAATGAAATAGGAAAACATAATAATTTGCATCTGCATAGGGAAGTCTGAGATTGGCTGATCTTGTTCTCTTCGAGGGGGAATACTAGTCCAGAACTTGGGGTGCCTGCCAAGAGGGGAGCAGCCACAGTAGGAAAGGGGGACTCTGGAATGCTAGGGTTCTGGGGTCTGTGGACACAGGAGGCAGAGGACATGTGTTAAGATGTTTTAAGAAATGAATGTTGAACTGGATATGAAAATATTTTTCAGCCGGGCGCAGTGGCTCACGTCTGTAATCCCAGTACTTTGGGAGGCTGAGGCGGGTGGATCATGAGGTCAGGAGATCGAGACCATCCTGGCTAACACGGTGAAACCCCGTCCGTCTCTACTGAAAATACAAAAAGTTAGCCAGGCGTGGTGGCGGAGGCCTGTAATCCCAGTTACTCTGGCGGCTGAAGCAGGAGAATGGCGTGAACCTGGGAGACGGAGCTTGCAGTGAGCCGAGATTGCGCCTCTGCACTCTAGCCTGGGCGACAGAGGGAGACTCCATCTAAAAAAAAAAAAAAAAAAAAAAGAAAGAAAATATTTTTCACTATAGAGAGGCATATGTCCCCTGAACTTGCCGGGATCCACCTTTCCTGCTGGTGCATTCTGTGAGTTAGAAGAAAACTTCCAAAGAGCCATTTTTTCCACCCTGTCTACTGTATAAAATTGCTTCTCAAACATGTGCTGCATTGCAGAGGATTACCATTGTTTTGCTAACCAGCGTCTGGTCTTTCTTATGTGGCGCTGCAATTACTAGTGTCAAACCCTGTTGGTAATACCCAGAGGATGGTGTCTGAAGTCTTTACTCAATATTCACATTGGCTGGGTGTGGTGGCTCACACCTGTAATCCCAGCACTTTCGGAAGCAGAGGCAGGCGGATCACTTGAGGTCAGGAGTTCAAGACCAGCCTGGCCAACATGGTGAAACTCCATCTCTACTAAAAATACAAAAATTAGCCGGGTATGGTGGCGGGTGCCTGTAATCTCAGCTACTAGGGAGGCTGAGACAGGAGAATCACTTGAACCCAGGAGGTGGAGGTTACAGTGAGCCAAGATTGTGCCACTGTACTCCAGCCTGGGGGAAAATTCACATTTGTAGAGAGTTTAAATTCTTTTTTGATACGGAGTCTCGCTCTGTTGCCCGGGCTGGAGTGCAGTGGCAGGGTCTTGACTCACTACAACCTCTGCCTCCCAGGCTCAAGGGATTCTCCTGCTTTAGCCTCCTGAGTAGTTGGGATTACAGGCACCCACCAAAACACCTGGGCAATTTTTGTATTTTTATTAGAGACAGGGTTTCACCATGTTGTCCAGGCTGATCTGAAACTCCTGACCTCAGGTGATCTGCCTGCCCTGGCCTCCCAAAGTGCTGGGATTACAGGCATGAGCCACCACGCCCGGCCGAGAGTTTAAATTCTTAAATCCTACACTCCAATGTGTGGGAAGTATTCGTGCTATGCTTTTATAACTAAATCGTCTCAGTATTTCTATTCTAGCCCCCTTTTTCTGCCTGATGGTAAGATACTTAATCTAGTCAATTCCAGGTAAACTTTGGCCTTTTATGAATTCTCCTGATCAGGCCAAACCTCAACCAAGTCCCTTCTTGATCTTCTCCTTCACCTCCTTCCCTCATTCACCCAACAATTAGCCTCCAGTCCACGGGCTGATGCAGCATCTTGGTGTCCTGTGGTCTGAGGTCATTTTCTGTCTTTCTCAAGCCTCAGCTAAAGTTTACAATCCTACCTTTTCTACTGCCTTGAAATGCCCTAAGGTTCAGGGGCTTCATGGTTGCTGCTTCATGGGGGGAACCTGGCTGTTCTCTGAGGCTGCTCGGCCCGAACACCCCATCAACTACCCGGGGCCCATCTACGCCCGAGGCCTCAGCCATTCCTGCTCTACAGCTCTGCTGTCCCATTAACAGCACCTTTGGGGCCCCAGGGTTCCAGATTGGAAGCAGAGAATCTCCTCTGTTCTCAGACCCCCAAACTTTGTTGTGGATTCTAATTGTCCTTTCCCCCATCTCACTCCTTGGAACCCACTGGGAGGTGAGTAGAATCCCTGTCAGAGATTCTACCACCATCTCCCTCATTCTTACCCTAACTTTCTTCCTCTTCCTCCCTAGTTAGGAAAGAGGATCTTTAGCCTGCGGCGGGGGTGGGGGTGGGGATGCTTGATGTTTCAGGGGAAAAGGTGACTCAGCTACTTTTGGAATATCTGTCATACCTGTCTACTGGTGCAATGAGCTGGGATCACACCACTACACTCCAGCCTGGGTGACAGAGCAAGATTCCATCTCAAAAATAAATAAATAAATAAATAAAGACTCTGGAGAAACAACTCAATACACATGAGAAGAGGCTGGCCCATGAGGAAAGGATGGAAACTACTACAACTCTTTTCTGTTGTTTTGTTTTCAATAGTCTCTTCACAGTTCTTTTCACAGTTTGGAATTGATACCTTTTTCTCTTCATCAGAACTCCAATGTTTTTGTAGATTGAAGTCTTTTTTTTTTTTTCTTGAGAAAGGGTCTCACTTTGTCACCCAGGCTGGAGTGCAGTGGACCAATCACTGCTCACTGCAGCCTCGACTTCCTGGGCTCAAGAAATCCTTCCACCTCAGCCCCCCAAGTAGCTAGGACTACAGGTGTTCACCACCATGCCCAGTTAATTTTTATTTTTTAATGTATTATTATTATTATTATTATTATTATTATTATTTTGAGATGGAGTCTTGCTCTGTTGCCCAGGCTGGAGTGCAGTGGCACCATCTCGGCTCACTGCAACCTCTGCCTCCTGGGTTCAAGAGATTCTCTTGCCTCAGCCTTCCAAGTAAGTGGGACTACAGGTGCATGCCCCCACACCTGGGTAATTTATTTTTTTGTAGAAAAGGGGTATCAGTGTGCTGTCCAGGCTGGTCTCAAACTCCTAACCTCGAGTGATCTGCCTGCCTTGGCCTTCCAAACTACTGGGATTAGAGGTAATGAGTCACCATGACTGGCCTACGTATAGCCCAAATGGATGAGCAGTTCCCAAGGCTCATTCCCAGCCTCCACTATCCAAGTCAGCCTCTCATCTCCTTCATTTCCCAGGACTTAGTTCTCATTTTCCTCCCCTGTTTTCTCCGGATTGTGGCTATTGTTCCCTGGTTGCTAGATCAACCTGGAGCACAGTAAAGCAGTGTCACAAAGCTGGAAGGGGTCTGGGATGAGTCCACCAGCTACAAGTTCTTATAGAAAACGTACTCCGGGGATGGCCGGGCCCAGTGGCTCATGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGTGGGCGGATCCCCTGAGGTTGGGAGTTCGAGACCAGCCTGACCAACATGGAGAAACCCCGTCTCTACTAAAAATACAAAATTAGCTGGGTGTGGTGGCACATGCCTGTAATCCCAGCTACTAGGGAGGCTGAGGCAGGGGAATCGCTTGAACCTGGGAGGCGGAGGTTGCGGTGAGCCAAGATTATGCCATTGCACTCCAGCCTGGGCAACAAGAGTGAAACTCCATCTCAAAAAAAAAAAAAAAAAAAGAAAATGTACTCCAGGAATTGTCATTTCTGAAATTCAACAGCTTCTGGAATTGAAGCAAACAGCTCATCTTGGAAGAGAAATATGTAGCCAACTCCAAAGCCAAAGCCTTTGAATATCTGAGACCTAGCATGCTAGGAGACCTTTATCTGTAACCTCAGAAGAAGAATCTGGATCTGGCCAAATTGAGGTCAAATTCTGCTCAACTTCTCCATAGTCAGTAGGAGAAAAAAACCAACTTGATGTTTGAGTCATATGTTTTGACAACTAAAGAGGACACTTATGCTGGGGTCGGTGGTTCA\t44\tCOV_CHANGE_INS\tPRECISE;SVTYPE=INS;SVLEN=7407;END=0;SUPPORT=3;COVERAGE=0,0,0,0,8;STRAND=+-;STDEV_LEN=16.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t./.:0:0:0", + "chr22\t10115\tSniffles2.INS.1S0\tA\tAATGTGAAATTGCAAATAATTCACCTGAGAAATGAAAATTAATCTTCTTTGCTAAATGCCATAGAGATATTTTAAGTTGCTAATGTTACTTAGATGTTCATTAACTTAGTGAGTTACATTAAGTAGAGAAGATGCCTTTTTTTTTTTCTGTACGAAGTCTTGCTCTGTAGCCCAGTGTAGTGGTATGATCTCGGCTCACCACAACCTCCGCCTCCTGTATTCAAGCGACTCTCCTGCCTCAGCCTCCAGAGTAGCTGGGATTACAGGTGTGCACCATCGCACCTAGCTAATTTTTTGTATTTTTAGCAGAGACAGCATTTCACCATGTTGGCCAGGCTGTTCTTGAACCCCCGACCTCAGGTAATCCACCCTCCTTAGCCTCCCAAAGTGCCAGGATTACAGGCGTGAGCCACTGCACCCTGCTGAGAAGATGCCTTTTGACAATGAAGTGGATTTGTATATTTATCTTTGGCTTAAAAAAACATGCACCACCAATTACACTTTCCTCAAGTTTAAATTTTTAATAATTAGGAAAATAAAGCATTTTCTTGTCTTATAGTGTTAGCTAGATTGTTTTTGTGTATTTTGTCATGAATAAAAAGCATAGCTATATAGTTACTGCTTTTACATTAACTATAAATATCTTAAAATTTTACTACCTAAAATCAGGAAACTTGAACTGAAGCTACTAATCTTAGAGTTGGAAAAGTAAATACATAGAGGTTTCCTGTTGTACAAATGTCAAGTGGCACAGTGAAATTTACATTCATTTGAAAGTTTTCCTAACTGTAAAAAGTATCAAATTACTTGATACTTTGGAGTAGTTCATCATCTTTATCAGAGGCACAGGTCTTAACCATTGGCAAGCCTCTGTCAGAATATGCACATATTAAAGATCTGATTATTTTTGTGTTAATGTTAAAAAATTTTTCTGAAGCTTTTATCTTATTTTTTCCATCCTTACACCGTAAATTCACATTACCAAGTTGGGAAGCCAAAGAAACATTCTACTCTACTCATGTTTTTTCACCAGTTCATGAAAGTTGATGTTAGAAATGGGTGTGGGTGTGGGGGATGGGGGTGGTTGTACAGAAGCAGCAGGTGGTAGGGATAGGATTTCTGAAGCACTATCCTTGGCCTTTTTTGAGTAAACTCTTTATACCCTGAGCCACTTTCTTTTCAGAGGGCAATTGCTATTATTAGAGAGCCACCTTAAGCATTATTGTTGTAGAAAAATTAGGCACAACCAGTGATTGTCATTACAAGGACCAGCAAAAATGGCTAGGTTGCTACTCTGTATTTGTAACGCCCTTCCCCCAACAAAATTTCTCCTTTTCATATCTGTGAATTAGAAATAAGTGATAGAAAACTGTACTGCATTACAATATATACCATTTAATAAAACAAGTTTATAGTTGAGAGCACTATTCATGCTTTTTGAAAGAATGCAAATTTGTAATTTTTATGATAGCAATTCTTAATAATTTATTGTCCAAGAGATTTGATAAAATTTTTGATAGTTATTGGTCTCTGGGACTCAATAGGCACTGGAATGTTTTAATTCAGTTGAAAAGTTGGTTCAGGATTGCTACCCTCTCTTACCTGTTAGGAGGTTGTTGTTTAACCTGACCTGAAATTCCCATGAATAAGAACCTGTTTTTTTTTTTTTTTTTCTTTGACAGAGTCTTGCTCTGTCGCCCAGGCTGCAGTGCAGTGGTGCGATCTTGGCTCGCTGCAAGTTCCGCCTCCCAGGTTCAAGCGATTCTCCTGTCTCAGCCTCCCAAGTAGCTGGAGTAGCTGGGACTGCAGGCACGTACCACCATGCCTGACTAATTTTTGTATTTTTAGTAGAGACAGGGTTTCACCGTGTTAGCCAGGATGGTCGCAATCTCTTGACCTCATGATCTGCCTGCCTTGGCCTCCCAAAGTGCTGGGATTACAGGTGTGAGCCACCGCACCTGGCCCAGGGAATTTCTAATATTTGAGAAGATGTTATTTTTAGTCTATTATACAAATTTATATATTGTTTACTAATATATAAATTTACATATTGGTTACTAATATGTAAACACCAATTTACATATTGGTTACTAATATGTAAACTTGATAAACATGGATTTCCATGGAAATTTAAAAGTATCACAACAATTTGTTTTCCCATTCTGAAACTTGTGATTTATTACATTTTCCTACTATTTCAGTTAATTCCATAATGCCAGATTTGTTGTAAATTTGCCGAGTGACAAGCCACACTGCTTCCTCTCATTCCTCTATTCCACAAAACTGCAAAGTTTCCCAGACCACAGTCAGGTTTCTCTGGGTTGTCCACTCTGTAAACTTACAGAGTGGTTGTCCAACTCTGTAAACTTACAGAGTGGTTGTCCAACTCTGTAAACTTACAGAGTGGTTGTCCAACTCTGTAAACTTAAGTCACTTTAAGTTTATGACGGAGGGGCTTCGTGAAACTTCATTGACCTTCCAAGGTGAAAATTGGTCAGTTTTCAGTTATAAAGGACATTAAGGATGGGTGTGGTGGCTGATACATGTAATCCCAGCACTTTCGGGAGACTCAGTCAGGAGGATCACTTAATCCTCATTTAAAAGGAGTTTGAGACCAGCCTGGGCAACAAAGTGAGGCCTTGTCTCTACAAAAAAATTAGCTGGGTGTGGTGGTAGGCACTTGTAGTCCCAACTACTCTGGAGACTGAGCTGAGAGAAGATTGTGTGAGGCTTGGAGGTTGAGGCTGCAGTGAACGGACATCACACCACTACACTCTAGTCAGGTGACAGAGCAAGACTCTAAATAAATAGGAACATTAGATGGTCTCTCTGCACTCTTGCCTGGTGGGGACGTGTTAGATACCCTCGTTAGGTTGTGATTTAGTTTTTAATCTGTGAGATGTTTGGGTCAAACAATTTTTAGCTGCCATGGAATAAACTTTCCAGTCAACGTGTGAGTTTGTGTTTGCCTTTACTTTTTTTTTTTTCTATATTGTTTTGGTCTATTTTTATCTTTTAATTTCAGAAAGCTGATTAATCTCTTCCTTTTCTCTTTAAAAATTTTCTTTATCATGTTTGTGCTACAGTGGTTATTTTGAGAACTTGTTGGCAGGATAAGTTGCAAAAGTTATGAAGTAGAATAGGGATGATTTCTGTTTTTGTTTTTTTTTTTTTCAGACAGAGTCTCACTCTCTTGCCTAGGCTGGAGTGCAGTGGCGTGATCCTGGCTCACTGCAGCCGCCGCCCTCCGGATTCAAGTGATTTGCCTGGCTCAGCCTCCCAAAAAGCTGGGATTACAGGTGCATGCCACCACACCCAGCTAATTTTTGTGTTTTTAGTAGAGATGGGTGTTCACCATGTTGGCCAGGCTGGTCTCAAACTCCTGACCTCAGGTGATCTGCCTGCCTCCGCACTCCCAAAGTGCTGGGATTACAGACGTGAGCCACCATGCCTGGCTGAGATTATTTCTTTTTTTATTATAGCCATTGCTTGTAGATATATGCTGGTGGTTATCTGTAAAAATGTAATAGAAAGGCCGGGCACGGTGGCTCACACCTGTAATCCCAGCACTTTGGGAGGCTGAGGTGGGCGGATCACAAGGTCAGGAGTGGGAGACCAGCCTGGCCAATATGGTAAAACCCCGTCTCTACCAAAAATACAAAAATTAGCTGGGCATAGTGGCGGGCACCTATAGTCCCAGTGACTCGGGAAGCTGAGGCAGGACAATCGCTTGAACCCAGGAGGCAGAGGTTGCAGTGAGCTGAGATCGTGCTATTATTGCACACCAGCCTGGGCGACAGAGTGAGACTCCGTCTCAAAAAAGAAAAAAGTAATAGACCAATCTTGAATTTATAATTGGAAGTGTTATTTCTTTATTTGCAGAATTTATTTATTTGTGACGCAGCTGTTGCTACCTCGCCTTTTCTTTTGTTGAGCTTAATCTCATGTCAAGTCATTCAACCAACTCAAAAGCGATGAAGACATTATTGAATCAACCTGAACTAAATCAGACCTAGGCTTCTTAAAATATACAGCTTAATGCTTCCAAATGATTTAGAAAACTAAAAAACCTAGCTACGCTGTAGGACACACAGTGGCCAATAAAAACAGGACCCCCAAACTGGCCAGTGGACCACTGCAACCACTATTTACTTCCTCCGTGTTTAGGAATGTTCAACGCTCCAAGCCCCATAGGCTGATTCAAGAAGATAAAGTGAGACTCAAGGAATTTCGAAGTGGAACAATACACCAAAGCCTTAAACCTGAAATGACTCTCCTTTTCTGGGGGTGAGGGAAGAAAAAGAAAAAGTTTCTAGGGCTCTCGGGGTGGCCTGGATGCCAGGGTCCCAGAAGTGGCCTTTTCTAGCTCCTGTAACTAAACCTGGCGGAAAACTCCCCGCCTGCTCACTCCACCCCCACCCGCCCAAGAATGCGTCTTCCCGTCTTCGGTGGCCCTACCCAGAATCCCAAAATGTGGGTTCCAACCCGGGCCCTGAATGTCTTCTCAAATCCCCGGGACCCAGGTTCCGGTGCGTGCCTTGCGTGCCGGGTCTTGCCCCTCGGGCGGTACCACCCAGGCAGCCCTAAATCCAGCCTCCCGGGCCCCCAGCAGCGCCCTCCGCCCCTCCACTATCCGGTCCGGCTCGAAGTCGGGGCCAAATCCAGAGACAAGAGGGCTGTGCCTGAAACTGAGCAGTTTCACCACTCGGCACTCCTGGCGGAAACTTCCCTTTAAAAAAAAAAAAAAAGAAAAGAAAGAAAAGCAACAGCACTTTTGGGCTAGCATTTCAATCCTTCCTGCCCTTTAGAGTTCCCAGTTCTGCTTCCAGCTGGCTTTGGGTGTTCCACTAGAATTGAGTTGTAAAGATATTCTTTAAGTGTTTATAGAACATTAAGACTTAAAAAAAATCTTTAAAATTAGAGGAGGGAAGCCACTGATCGCACACATCCAGGAAATGCAGCCCCGTGCATCCCTGCTCAGGGATGAGCAGGCGCCCCAGGACTCCCGGAGACAGATTTTTGGGCACCCGAGGGAGTCACCGGGCGCGTGTCGGGGTCCGCGGTGAGGCCCAGCCCCTCCGGCGGTCCCTTAGACGCGCCCTCTGCCCGGCCGGTGATCGGCCATTGTTTACGGGGGATGCCCGTCCAGACGCATTGTTTTGGCCGTTTCCAACTTGCCCCGGCCCTTTCCGGGGCATCGCGGGGGACCCTACACCGACGTCCCCCCTCCGCCCGCGCCCCAAGGGCTGACTGGGCAAATTGGCAGATCCGCCCCGCGGGGCGACCCAACTTTTCGGAACAGCCCCCCACCGCCCACCCCTGCAGATCCCCGGACCCCCGCTCCCGGCGGAGATTCAGGGAACCCCGCATCCCAAGCCCTTCTAAATCGTGCGGCCTGAGTGTGACGGCCAAGAGCGGATGCAGCCCGGGATCGCCCGCACCTTCCCGTGGGCGGAAGCGCAGGAGCCGGCTGGGGGAGGGGGCGCCCTAGAGAAGCGGCTAGAAAGCTGAGACGGGGAACTGAGGTCATCCTGGGGGGGACAAGACAATGAGAGCCGGGCGCCTTGGGGGCGGCGCGGGAGCCTCCGCAGGACCAGGCGGGCGCCCCCTTTACCTGCGGCTCCGGCGCCTCGGCCGTTTCCTCGCGCGGCGGCGGCCGGGACTGAGCTGACACCACTCAGCCGGCGGGGTTTGAATGAGGAGGAGCGGGCGCGGAGGGGAGGGGGCGGGGAGGGAGGGAGGGAGGCGTCGCGGAGTTTCTCTCGGCCTTTTGTGCCATCCGCCGAGGCGCCTTGAGTATAAATCCAGATAGTGCAGTTTTTGTTGTGCTTGTGCTGATCAACTTTATGGTGTGATTAAATACGATTTTTTTTATTACGCTCTTGAAATTGTACTCTTGAGGTTGCAGAATGGCAATTAGATGGCAGTCGCTGATAGCCATGTAGAAGTTTTGATGAACATGCAAGTTAATTTTAATTTCTGATCAGTTACGGTTAGTGACTGTGGCCAAACATGTGCGTACTGATTCTACATGTGCTAATTCCGTGACGTTTATTCACCAGCTATGTGTCCCGTGCCTAATCCTGTGTCAGGCACCTTGTTCCAGGCATTGGGGGCAGCAGTGGACAAGGCAACAGAGTCTCCATCCTGAGGTGTTACTTTTAGAAAAAGATAGTTACAAGCAAATAAACAGGATGGTTTTAGATCTGGACAGAGGTTTTCAGAGGAAGTCATCCTTGAGCTGTCACAATGCTTTGGGGAGGGGTGTGCTGGGTAATCAGGGATGGCACATTTGGGGTGCCTAAGGATTGCTGTGGCCCTGGGAGCCTAGGACAGTTGGTCACAATTGACTTATTAGAGTCAGTCTCAGAAGCTTTCCTGGAAGTAGAATTGCTGCTGTTTTGCCAGGAGGGTTTCCTTCCCCATCTGACCACACAAGAAGACCCCTGCCCACAAATGCCTACCACTCCCAGGTCTCCCAGGCTGTTCACCCTCCCAGGCAAAGTGGAAGCTTCCTCTGTCCTAAGATCGTTTCCCACTGAACCTCCTTCATTTTCCTTCACTGCAGAGAAATAATCCTACAAGGTCTTGTGTGGAGAGTGATGGTACCTTCTTTAACCCAGATAATTGAGAATTGGAACCAAAACATCTGTGTATTAATAAATATTTTCAGTAACTAGGTTATGCTATTTCCCTGAGTGGGAAATAACACTCCATCATGTTTCTTTTTTTGGGGGGCAAGGGGGAGTCAAAGTTGTCAGGCCTCTGAGCCCAGGCCAGGCCATCGCATCCCGTGACTTGCACATATACATCCAGATGGCCTGAAGTAATTGAAGATCCACAGAAGAAGTAAAAACAGCCTTAACTGATGACATTCCACCATTGTGATTTGTTCCTGCCCCACCCTAACTGATCAATGTACTTTGTAATCTCCCCCACCCTTAAGAAGGTTCTTTGGAGTCTCCCACCCTTGAGAATGTACTTTGTGAGATCCACCCCTGCCCACCAGAGAACAACCCCCTTTGACTGTAATTTTCCATTACCTTCCCAAATCCTATAAAACAGCCCCACCCCTATCTCCCTTCACTTGACTCTCTTTTCAGACTCAGCCCACCTGCACCCAGGTGAAATAAACAGCTTTATTGCTCACACGAAGCCTGTTTGGTGGTCTCTTCACACGGATGCGCATGAAATTTGGTGCCGTGACTTGGATCGGGGGACCTCCCTTAGGAGATCAATCCCCTGTCCTCCTGCTCTTTGCTCCGTGAGAAAGATCCACCTACGACCTCAGGTCCTCAGACCGACCAGCCCAAGAAACATCTCACCAATTTCAAATCTGGTAAGCGGCCTCTTTTTACTCTCTTCTCCATTCCTCCTCCTTCTCCCTTAGCTTCTCCAACCTCCCTCACTATCCCTCAACCTCTTTCTCCTTTCAATCTTGGCGCCACACTTCACCGCTTTTCTGGGGCAGGGGCAAGTACCCCTCAACCCCTTCCCCTTCACACTTAGTGGCAAGTCCCGCTTTCCTGGGCAGGGGCAAGTACCCCTCAACGCCTTCTCCTTCACCCTTAGTGGCAAGTCCCGCTTTTCTAGGGGGGCAAGAACCCCCAAACCCCTTCCATCTGTGTCTCTACGCTCTCTTCTGTGGGTTTGCTTCCTTCACTATGGAACCTTCCACCCTCCATTCCTCCTTCTTCTCCCTTAGCCTGTGTGCTCAAAAAGTTAAAACCTCTTCAACTCACACCTGACCTAAAACCTAAATGCCTTATTTTCTTCTGCAACACCGCATATCTTGCTTGGCCCCAATACAAACTTGACAATGTCTCTAAATGGCCGGAAAATGGCACTTTGATTTCCCCACTGACAAACACCTAAATAATTTTTGTCGAAAAATGGGCAAATGGTCTGAGGTGCCTTACGTCCAGGCATTTTTCACACTTCGTTCCCTCCCTAGTCTCTGTTCCCAATGCGATTCCTCCCAGATCCTCCTCCTTTCCTCTCCTGTCCCCTCGGTCCCAACCCCAAGCGTCGCTGAGTCTTCCCAGTCTTCCTTTTCTACAGACCCATCTGACCTTTCCCCTCCTCCCCAAGCTGCTTGTCGCCAGACCGAGCTAAGTCCCAAGTACCTCCCTCAACTCTCCACTCCTCCACCCTATAATCCTTCTATCACCTCCCCTCCTCACACCTGGTCCGGCTTACAGTTTAGTTCCGCGACTAGCGCTTCCCCACCTGCCCAACAATTTCCTCTTAGAGAAAGTGGCTGGAGCTGAAGGCATAGTCAAGGGACATGTACTTTTTTCTCTATCAGACCTCTCTCAGATCAGTCAATGTTTAGGCTCTTTCTCATCAGACCCCACTAAATATATACAGGAATTCCAATATCTAACTCTGTCCTACAACTTAACCTGGAGTGACTTAAATGTCATCCTGACTTCTACTCTCTCCCCAATATGAACGGGAAAGTTTTTTCTCTAGCCCAATCTCGTGCTGATAACCGCCGGCTTCATGAGCCAGACCTCCAGGAAGGCATTAGAGCAGTTCCCCGAGAGGATCCCCAATGGAACTATCAGGCAGATTCCCCAGGTACAGCTAGGCGAGATTACATGGTTTCCTGCCTAGTTGAAGGGCTTAAAAAAGCAGCTTACAAAGCTGTTAATTATGACAAGCTTAAAGAAACTACCCGAGGTAAAGACGAAAACCCAGCCCAGGTCATGGCCCACTTAGCAGCAACCATTAGATGCTATACTGCCCTAGACCCAGAGGGGCCAGAAGGCCGCCTTATTCTTAATATGCATTTTTATCACCCAATCCACTCCTGACATTAGGAAAAAACTTCAAAAATTAGAATCTGGCCTTCAAACCCAGCAGGAATTAATCAACCTTGCCTTCAAGGTGTACAATAATAGAGAGGAAGCAGCCAGACGGCAACGCATTTCGAGTTACAATTACTTGCCTCTGCTGTGAGACAAAACCCAGCCACACCTCCTGCATACAGGAACTTCAAAATGCCTAAGCCGCAGCAATCAGACACTCCTACAAGACTTCATCAGGATCTTGCTTCAAGTGCCAGAAATCTGGCCACTGGGCCAAGGAATGCCCACAGCCCAGGATTCCTCCCAAGCCATGTCCCATCTGTGCAGGCACCCACTGGAAATCAGACTGCCCAGCTCGCCCGACAGCCACTCCTGGAGCCCCTAAAGCTCTAGCCCAAGGCTCTCTGACTCCTTCCCAGATCTATTCGGCTTAGCGACTGAAGATTGACGCTGCCCGATCGCCTCGGAAGTCCCCTGGACCATCACAGAAGCCGAGCTTCGGGTAACTCTCACAGTGGAGGGTAAGTCCATCCCCTGTTTAATCGATACGGGGGCTACCCACTCCACGTTGCCTTCTTTTCAAGGGCCTGTTTCCCTTGCCCCCATAACTGTTGTGGGTATTGACGGCCAAGCTTCAAAACCCCTGAAAACTCCCCCACTCTGGTGCCAACTTGGACAACACTCTTTTATGCACTCTTTTTTAGTTATCCCCACCTGCCCACTTCCCTTATTAGGCCGAAATATTTTAACCAAATTATCTGCTTCCCTGACTATTCCTGGAGTACAGCTACATCTCATTGCTGCCCTTCTTCCCAATCCAAAGCCTCCTTTGTGTCCTCTAACATCCCCACAATATCACCCCTTACCACAAGACCTCCCTTCAGCTTAATCTCTCCCACTCTAGGTTCCCACGCCGCCCCTAATCCCACTTGAAGCAGCCCTGAGAAACATCGTCCATTCTCTCTCCATACCACCCCCCAAAAATTTTCGCCGCTCCAACACTTCAACACTATTTTGTTTTATTTGTCTTATTAATATCAGAAGGCAGGAATGTCAGGCCTCTGAGCCCAGGCCAGGCCATCGCATCCCCTGTGACTTGCACGTATACATCCAGATGGCCTGAAGTAACTGAAGATCCACAAAAGAAGTAAAAACAGCCTTAACTGATGACATTCCACCATTGTGATTTGTTCCTGCCCCACCCTAACTGATCAATGTACTTTGTAGACTCCCTCCCCCCACCCTTAAGAAGGTTCTTTGTAATTCTCCCCACCCTTGAGAATGTACTTTGTGAGATCCACCCCTGCCCACCAGAGAACAACCCCCTTTGATTGTAATTTTTTATTACCTTCCCAAATCCTATAAAACAGCCCCACCCCTATCTTCCTTCACTGAACTCTCTTTTCGGACTCAGCCCACCGGCACCCAGGTGAAATAAACAGCTTTATTGCTCACACAAAGCCTGTTTGGTGGTCTCTTCACACGGACGCGTATGAAAAAAGTCTCGCCCTGTTGCCCAGGCTGGAATGCAGTGGCACGATCTTGGCTCACTGCTACCTCCACTTCCTGGGTTCAAGTGATTCCCAAGTAGCTGGGATTACAGGTGTGTATTACCATGCCCAGCTAATTTTTGTATTTTTAGCAGATAAGGGGTTTCACCATGTTGGCCAGGCTGGTCTCCAACTCCTGGCCTCAAGTGATCCACCCACTTCGGCTACCCAAAGCATTGGGAGTACAGGGGTGAGCCACTATGCCCAGCCTCACATCATATTTCTAATCCCGAGACTGTAGAGCTGGTGTCTCTTTTTGGAAAGGATGTCAGTAGAGAAAATGGAGTTCCCCAAAATTACAGTTTCACATATTAGTAAAGTTTCTAAAATACAGTAATAATGTTGAGAGCTGACATAGGGACTAACTTAGTTTTTTTTTTTTTTTAGATTGTCACCTAACTTTGATTTTGCTAAATAAGGACATTAAAAGAAAACCAAAAAAGTCCACTATTGGCTATTGCCACTATTTGATTTTTTAAAAAATAAGCGTATTTTAGCATCTAAAAGTAGGAAGGACCTCAAATAAATGAGTCTTTGTTCTTGGCCAGGGAAACAGCGTTGTCAGCATTTGATAACTGTTTTTCTAGGGTATGTGCTGTTATTCAGTTAAAACCTTGCCTGGGGATGTTAGCATTGGTAAATACTTGTTGAATAAGCAAATGAAACTTAAGCTTCTATGTATAGAAACCTAAGTCACTTCACATTCTGATTAGCAGAGTAATTGAATATTCTTTTCAGTGTGTAGATCTATACCCAGAACCACAGAATATCGGAACTGTAAAAACCAACTGCATTAAATAGATGTGGTATGTGGCAGTGTACCAAGGTTGTGACTAGAACTCCGGTCTTGGAGTGTTCTATTATATCACACCAAGCTGGTCACCAGCCCATGTGTTGATCCTCCATTGTGATAGCAACAAAGAAAAGACTTCAGGACATTCTTTCCTTTACCCTAATCCTTCATCTTCAGTCTTATTTAGAAAAGCTTAATGTTAAAGATCTAGTTTATTCAAAACTAAAGATAAGGAGTATGAGAATTTCTATTTCGGAGTGTAAAGGAGGAGATGTTTCCTTGGCTTCTCTGAGCCTACAGGCCTTCCTTGCTCTTTAAGGAAGTAGAGAGAGAGAGGAAAGTAAAGTATGCTTTTGTTTTTTAAGGTTACTTTGCTGGGAGTAGTTTGCATGCCATTTGGTTTTCTTGGGTGGAATTAACTGACTTAAGTTTTAAGTAGTTGGGACTATTTAGAAACAATGCCTATCCAATGTTTGCCATAAAGGCAGAGGGTATTGGCTTTAGAAGTTAATTCTTCTCCAGGAGTGAAAATGAGCTGCTAAACCAGAAGCAGCAGAGCTAAAGAAAGTAATTTTCCACCTGGCCAGTGCATGATGTGAAAGGTAGACTAAAAGAATGAGAGGACCCATTTTCTGATGAAAGACTAAGCCATGTTGAAACAGCCCTGTTGAGGATTTTATTTTAAATCTATACATTCACAAAGGAGCTTTGTGTATGTCTTTCCCTATTTGTTGTTTGGACTAAGGGAGCCCCACCCAGTGCTTGTTCAGTAAGTTGTTGAAAGAAATCTGGATTTGAACAGTGGATTGAGGTTTCGAATATCCAGTGAACCAAAATATATCAGGGTTCCCCTGGCCAAGATGAGTGACCATTCTGAGGTGTTACGTATTTCTTGAATGGGGATTTTAGGAAAAGTTTCTGTATTTCTGTGCTCATTTTGTTGACCTCTGTATGTGCAAAATCTCTAAGGGGGTGTTTGGGCACTTAGATTTCTTGGATGCAGATTTGTTTGTATATGAAACAAATTTTAAATTGTTTCGTATACACTGGATTTAAAATAGTTTAGTTTACTAAAGTGTTTTAATGTTTTCATCTTAATTTTCAGTTCTTATAGTCTTTAGATTTAGGGAGGCTGTTGATGGCATCCACATATGCATTTTAATGTCATTTAAAATGTATTCTGCTGAATTTAACAATTTCTGACCTAAAACTTGACATTTTAATATTTAAGTCGGTAAAGCGCTGATTTAAACTGGATTTTAACTGGATGAAATTCTGATTTAATGAGTGTACTGACTGGATAAAATGCCAATGATTTAATTAACAAGCACGTTTACAGCATGCCCTATATATTAGTTAAAAGTGAAGCAATTGAATTAGGTACCATTTCAAAATGGTTGCTGTACCCACTCACCCTCTCTATCCTCCAATTAGGGTATATTTTGAAATGATTGCTTTTCCCTTTTCCTTGTGTAAAGAGCCTGAGGAAATTTTCTTCGGCCTTCATCATGAGAACCTGGTGGGGTTTCTGGAAGTAAAATTCATGAAAGTATAAGGGGCCCCCAAGACGGGACTCCAACAAGTTTTTAACTCTCAAGCTAGTCCACACTCAGCCACCAGTAAATTTATTGATTACCATTGAAGTGTTCCTACCAATTAC\t7\tPASS\tPRECISE;SVTYPE=INS;SVLEN=12815;END=10115;SUPPORT=1;COVERAGE=10,10,10,29,10;STRAND=-;AF=0.300;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:10:7:3", + "chr22\t13000\tSniffles2.INS.2S0\tT\tTGATAATCAAGAGAACGTCTCAGCACCGCGCCTGAGCGCTTAGTAGGTAGTGATCAAGAGAGAAGACCTC\t36\tGT\tIMPRECISE;SVTYPE=INS;SVLEN=69;END=13000;SUPPORT=2;COVERAGE=11,13,13,16,51;STRAND=+-;AF=0.154;STDEV_LEN=6.364;STDEV_POS=37.477;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/0:10:11:2", + "chr22\t13433\tSniffles2.INS.4S0\tC\tCTGGAAGATGCTGTGGTGAGTCAGTGAGTGTGAAGGCATAGGACCTTACTGTACACTACTGTAGACTTTATAAACACCATATGCTTAGGCTACACCAAAAATTTTTATCTCCTCTGATAACAATGCCTTCTTCTTCCAGAATACTTCCTGAAGGACCTGCCTGAGGCTGTTTTATAGTTAACTACTTT\t36\tGT\tPRECISE;SVTYPE=INS;SVLEN=187;END=13433;SUPPORT=2;COVERAGE=13,15,15,51,30;STRAND=+-;AF=0.133;STDEV_LEN=0.707;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/0:16:13:2" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-08-30T13:26:58.425668806" + }, + "homo_sapiens - [bam, bai], fasta, [], true, false -stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + + ], + "3": [ + "versions.yml:md5,0786af72683ced7f193b290fad51e914" + ], + "snf": [ + + ], + "tbi": [ + [ + { + "id": "test" + }, + "test.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "vcf": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,0786af72683ced7f193b290fad51e914" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-08-30T12:18:17.116928744" + }, + "homo_sapiens - [bam, bai], fasta, [], true, true -stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test" + }, + "test.snf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + "versions.yml:md5,0786af72683ced7f193b290fad51e914" + ], + "snf": [ + [ + { + "id": "test" + }, + "test.snf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "tbi": [ + [ + { + "id": "test" + }, + "test.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "vcf": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,0786af72683ced7f193b290fad51e914" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-08-30T12:12:36.161185999" + }, + "homo_sapiens - [bam, bai], fasta, [], false, true": { + "content": [ + [ + "versions.yml:md5,0786af72683ced7f193b290fad51e914" + ], + "test.snf" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-08-30T12:14:02.409838384" + }, + "homo_sapiens - [bam, bai], fasta, [], true, true": { + "content": [ + [ + "versions.yml:md5,0786af72683ced7f193b290fad51e914" + ], + "test.snf", + "test.vcf.gz.tbi", + [ + "##fileformat=VCFv4.2", + "##source=Sniffles2_2.4" + ], + [ + "##contig=", + "##ALT=", + "##ALT=", + "##ALT=", + "##ALT=", + "##ALT=", + "##FORMAT=", + "##FORMAT=", + "##FORMAT=", + "##FORMAT=", + "##FORMAT=", + "##FORMAT=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO\tFORMAT\tSAMPLE", + "chr22\t1\tSniffles2.INS.0S0\tA\tATTAGGCAAAGAGAATATACTCGACTCATTTTGCTATACAGGAAAAAAGTGCTTCCTTAGCTCATTTGGAAAGAGATTGAGATTAGAAAAGATGGTTAATTTGTATGTATTTATAGAAATAAATAGAATACAAAATGAGGCTTTTAAATTTTTTCCCACATGAAAATATGATTACTTTAATCATTACGTTTTACATTGTTAGTTTGCAGACAGGCATAATTAGGTCCTCAGTTGCAGAAATCACAGACATCTGAAGGCCAGCCCTTTAATTTGGCCACCCCTAGATTTCTCTGCTCCTTCCTTTGCTCCTCCTACTGCACAGTTTGAACTGATGCTGTTCTATATAAGGTACTTTTCCACCTACCTCATCTCTGACTACAGTGCTATATTTTTCACACAGTAAGGACAGGTGTTGTGTTAATCTCACCATGCCAACAATCAGGGCACCACCTAGCAGAGTCAGTGAAGGCCAAAATAAACAGTGGAAGATAGCCATTTGGTCATACTTTTTTATAAGAATGACATCTTCAGATTGGCTGGCTGGACTGTAGAAGCATGAAAAGGGGGTTCCATTTTTGTGATCGAAGAATTCTTTTATGTCCAGAGCACTGTTGAGCAAATCATTTCTATCTTGGTGGCACTTAGGTGTGTAAAAGCACTAGGAATATGGAAGAGGGAAAAAGATAAAGGCACTGTCACCAATACCAAATACTTAACAGTTTCTAATTATGAAATAGCTTCAGGCTGAAGTTATTAGTGGGCAGTTTCAATCTTAGAAGGTGGTAAAATATTACATAGCTCATGGGAAAGGGTTGATTGGAGGGCCACAGTGAAATGGCCATTTCCAGTCATTAAGCAAGGATGTGGAAGAGAATTCTTAGTTTATATGACATTGCAGGAGAGTCAGTGACCAATTTCATAAGGAATATGACTCCTCCCTACATGCAGGTTCTTGGACTCTTGGACAGTATGAATCCGTTTGTCCATTGAACAAAAATGTATTGAGCCTTACTATGAGCTTTCAACACCTAGTAGTGCCTCTGTGGTCTCTGTCTTGATCTCCTGTAGCAAAATATTACCCTGAAGAAAAGCACGTTGAGGCTTTTGCTCTAGACTCACAGACAGGGAGCCCCACCTGGACTTTGGTTCCTGGGAGACAGAACCAGTGGAGAAGGGAGCTCTGTCAGCTGGTGACTTTTTTAAAAAAGCTTGAGGTTTATTACCATATCCATTAGGTACTTGAGGTACTGTGCTAAAGGCCTACAAACTGTTTGAAATCTTAAAAATCATTGCATCCAAAATAGAAAACAAAAGTCATCAGATTGAAATTGTAGGACTAAAGACAATAAAGTGTAACATGTCAACTAATCTTAACACAACTCAACTTTTATAGTTAGGTATAAATATAAATTTTAAATGATATGAAAGACTATACTTTCAGGGATCATTTCTATAATTCGTTAAATTATATGAACCCATTGTGTAACTTATTAAAATAAAAATAATCTTTACATTTATTTGATAAGAAAAAATTACTCGCTTGATTCAAGGGAGACTGTGGTACACTGTGTAGCATATGTTATATGGCGCGGAGTGGAATCTCCAAAAGAAAGACTCCCCACAAATGACTACTCATTGGCTCAGCCTATAAATTCCAGACACCAAGTTGTGAAATTGGAATAATTTCTCTCCTTTCTATATACCCCATTTCTCCACCAAGAAGAAAGCTTCATTTATCCTGATTTGATCACTATAAAAATGTTCACTCCAAAAAAATAGATTTATCCCTAAAGACAGCCCTGGGTTATTTATGTACCCTGCTAGGGACAGTCTGGCAGGGAAGGGTTGCTGTCATAAGAACTCTTTAAACTTTACAATACCTTGGGATTTATCTGGACAGCCTCTTCATTATAATGTAGGAGAGCTTTCTGAGCTGAATGGGTGAGGTTCACAAACACCCGAAGACACGAGTACTTCCCGTGACCACGGCAGTGCACACCACAGGTGAAGGCACAGTCCAGCCAGTCGTCCATGATATCTGTGTGGATGGCAGTGCAGGTTGATTCTTCTCTCCGAATGCTTCAATTTGAAAAAAAAAAAAATGTTCTTCACTTACTAGAAAATTTCGTTCTACATTTTGGTGCGGTTATGAGCTTATGTACACAATTAGCTGGGATTACAGGCGCTCAGCTGCCATGTCCAGCTAATTTTTGTATTTTTAGTAGAGACAGGGTGTTGGCCAGGCTCGTCTCCAACTCCTGACCTCAAGTGATCCACCCACCTTGGCCTCCCAAAGTGCTGGGATTACAGGCATGAGCCACTGCACCTGGCCCAAATACTATGTTTTATCAATTCTAAAGTGCACTTTAGTATTTACATTTTAATATAACTAAAATCAATATGTATTTTGCAATCAATGGCATCTTGCTATTATTTGAAAACATTTCTTTAATAGTCTGTAAAATAATGGAACATGCCCAGATGCAGTGGCTTGTGCCTGTAATCCCAGCACTTTGAAGGGTCAAGATAGGAGGATCGCTTGAGCCCAGGAGCTGGAGACCAGCCTGGCCAATATAGTGACAGAATAAATAAATAAGTAAATAAAATAATGGAAAATCTCACAAATGGTGATGTTTTAGGTTCGACAAAATACATTAACTAGCCCATTTAGTTTTCTGAAATTATTTTGATGTTATTGCTTACAATATTTGTTCTGTGGTACACAACCATAGGATTAATAATATTGATGAAAATAATAAAAGAATAATAAGCATGTATTGAGCTCTTCCTGTGTGAAGTTCTGGACAAATCCTCATAAAGCCTTAAAAGGCAGATACTAGGCTGGGCACGGTGGCTCATGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCAGGCAGATCACGAGGTCAGGAGATTGAGACCATCCTGGCTAACATGATGAAACACGGTCTCTACTAAAAATACAAAAAATTAGCCAGGCATGGTGGCACGTGCCTGTAGTCCCAGCTACTCGGGAGGCTGAGGCAGGAAAATCGCTTGAACCTGGGAGGCTGAGGTTGCAGTGAGCCAAGATCGCACCACTGCTCTCCAGCCTGGGCGACAGAGCAAGACTCTGTCTTAAAAAAAAAAAAAAAAAAGAAAGAAACAGGCAGATACTAGCCCAGGCACGGTGGCTCATGCCTGTAATCCCACACCTTCGAAGGCCCAGGCGGGTGGATTATCTGAGGTCAGGAGTTTGAGACCAGCCTGACCAACATTGTGAAACCCTGTCTCTACTAAAAATACAAAAATATTAGCCAGGTGTGGTGACAGGTGCCTGTAATTCCAGCTACTCAGGAGGCTAAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCTGAGATTGTGCCACTTTACTCCAGCCTAGGTGACAGAGGAAGACTCTGTCTCAAAAAAAACAAACAAACAACAACAACAACATCAAAAAGAAACCTATAGTAATAAAATTGAAACAGAAGGAGGTTTGCAATCAAAATGACTGACTAGGAATGAAATAGGAAAACATAATAATTTGCATCTGCATAGGGAAGTCTGAGATTGGCTGATCTTGTTCTCTTCGAGGGGGAATACTAGTCCAGAACTTGGGGTGCCTGCCAAGAGGGGAGCAGCCACAGTAGGAAAGGGGGACTCTGGAATGCTAGGGTTCTGGGGTCTGTGGACACAGGAGGCAGAGGACATGTGTTAAGATGTTTTAAGAAATGAATGTTGAACTGGATATGAAAATATTTTTCAGCCGGGCGCAGTGGCTCACGTCTGTAATCCCAGTACTTTGGGAGGCTGAGGCGGGTGGATCATGAGGTCAGGAGATCGAGACCATCCTGGCTAACACGGTGAAACCCCGTCCGTCTCTACTGAAAATACAAAAAGTTAGCCAGGCGTGGTGGCGGAGGCCTGTAATCCCAGTTACTCTGGCGGCTGAAGCAGGAGAATGGCGTGAACCTGGGAGACGGAGCTTGCAGTGAGCCGAGATTGCGCCTCTGCACTCTAGCCTGGGCGACAGAGGGAGACTCCATCTAAAAAAAAAAAAAAAAAAAAAAGAAAGAAAATATTTTTCACTATAGAGAGGCATATGTCCCCTGAACTTGCCGGGATCCACCTTTCCTGCTGGTGCATTCTGTGAGTTAGAAGAAAACTTCCAAAGAGCCATTTTTTCCACCCTGTCTACTGTATAAAATTGCTTCTCAAACATGTGCTGCATTGCAGAGGATTACCATTGTTTTGCTAACCAGCGTCTGGTCTTTCTTATGTGGCGCTGCAATTACTAGTGTCAAACCCTGTTGGTAATACCCAGAGGATGGTGTCTGAAGTCTTTACTCAATATTCACATTGGCTGGGTGTGGTGGCTCACACCTGTAATCCCAGCACTTTCGGAAGCAGAGGCAGGCGGATCACTTGAGGTCAGGAGTTCAAGACCAGCCTGGCCAACATGGTGAAACTCCATCTCTACTAAAAATACAAAAATTAGCCGGGTATGGTGGCGGGTGCCTGTAATCTCAGCTACTAGGGAGGCTGAGACAGGAGAATCACTTGAACCCAGGAGGTGGAGGTTACAGTGAGCCAAGATTGTGCCACTGTACTCCAGCCTGGGGGAAAATTCACATTTGTAGAGAGTTTAAATTCTTTTTTGATACGGAGTCTCGCTCTGTTGCCCGGGCTGGAGTGCAGTGGCAGGGTCTTGACTCACTACAACCTCTGCCTCCCAGGCTCAAGGGATTCTCCTGCTTTAGCCTCCTGAGTAGTTGGGATTACAGGCACCCACCAAAACACCTGGGCAATTTTTGTATTTTTATTAGAGACAGGGTTTCACCATGTTGTCCAGGCTGATCTGAAACTCCTGACCTCAGGTGATCTGCCTGCCCTGGCCTCCCAAAGTGCTGGGATTACAGGCATGAGCCACCACGCCCGGCCGAGAGTTTAAATTCTTAAATCCTACACTCCAATGTGTGGGAAGTATTCGTGCTATGCTTTTATAACTAAATCGTCTCAGTATTTCTATTCTAGCCCCCTTTTTCTGCCTGATGGTAAGATACTTAATCTAGTCAATTCCAGGTAAACTTTGGCCTTTTATGAATTCTCCTGATCAGGCCAAACCTCAACCAAGTCCCTTCTTGATCTTCTCCTTCACCTCCTTCCCTCATTCACCCAACAATTAGCCTCCAGTCCACGGGCTGATGCAGCATCTTGGTGTCCTGTGGTCTGAGGTCATTTTCTGTCTTTCTCAAGCCTCAGCTAAAGTTTACAATCCTACCTTTTCTACTGCCTTGAAATGCCCTAAGGTTCAGGGGCTTCATGGTTGCTGCTTCATGGGGGGAACCTGGCTGTTCTCTGAGGCTGCTCGGCCCGAACACCCCATCAACTACCCGGGGCCCATCTACGCCCGAGGCCTCAGCCATTCCTGCTCTACAGCTCTGCTGTCCCATTAACAGCACCTTTGGGGCCCCAGGGTTCCAGATTGGAAGCAGAGAATCTCCTCTGTTCTCAGACCCCCAAACTTTGTTGTGGATTCTAATTGTCCTTTCCCCCATCTCACTCCTTGGAACCCACTGGGAGGTGAGTAGAATCCCTGTCAGAGATTCTACCACCATCTCCCTCATTCTTACCCTAACTTTCTTCCTCTTCCTCCCTAGTTAGGAAAGAGGATCTTTAGCCTGCGGCGGGGGTGGGGGTGGGGATGCTTGATGTTTCAGGGGAAAAGGTGACTCAGCTACTTTTGGAATATCTGTCATACCTGTCTACTGGTGCAATGAGCTGGGATCACACCACTACACTCCAGCCTGGGTGACAGAGCAAGATTCCATCTCAAAAATAAATAAATAAATAAATAAAGACTCTGGAGAAACAACTCAATACACATGAGAAGAGGCTGGCCCATGAGGAAAGGATGGAAACTACTACAACTCTTTTCTGTTGTTTTGTTTTCAATAGTCTCTTCACAGTTCTTTTCACAGTTTGGAATTGATACCTTTTTCTCTTCATCAGAACTCCAATGTTTTTGTAGATTGAAGTCTTTTTTTTTTTTTCTTGAGAAAGGGTCTCACTTTGTCACCCAGGCTGGAGTGCAGTGGACCAATCACTGCTCACTGCAGCCTCGACTTCCTGGGCTCAAGAAATCCTTCCACCTCAGCCCCCCAAGTAGCTAGGACTACAGGTGTTCACCACCATGCCCAGTTAATTTTTATTTTTTAATGTATTATTATTATTATTATTATTATTATTATTATTTTGAGATGGAGTCTTGCTCTGTTGCCCAGGCTGGAGTGCAGTGGCACCATCTCGGCTCACTGCAACCTCTGCCTCCTGGGTTCAAGAGATTCTCTTGCCTCAGCCTTCCAAGTAAGTGGGACTACAGGTGCATGCCCCCACACCTGGGTAATTTATTTTTTTGTAGAAAAGGGGTATCAGTGTGCTGTCCAGGCTGGTCTCAAACTCCTAACCTCGAGTGATCTGCCTGCCTTGGCCTTCCAAACTACTGGGATTAGAGGTAATGAGTCACCATGACTGGCCTACGTATAGCCCAAATGGATGAGCAGTTCCCAAGGCTCATTCCCAGCCTCCACTATCCAAGTCAGCCTCTCATCTCCTTCATTTCCCAGGACTTAGTTCTCATTTTCCTCCCCTGTTTTCTCCGGATTGTGGCTATTGTTCCCTGGTTGCTAGATCAACCTGGAGCACAGTAAAGCAGTGTCACAAAGCTGGAAGGGGTCTGGGATGAGTCCACCAGCTACAAGTTCTTATAGAAAACGTACTCCGGGGATGGCCGGGCCCAGTGGCTCATGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGTGGGCGGATCCCCTGAGGTTGGGAGTTCGAGACCAGCCTGACCAACATGGAGAAACCCCGTCTCTACTAAAAATACAAAATTAGCTGGGTGTGGTGGCACATGCCTGTAATCCCAGCTACTAGGGAGGCTGAGGCAGGGGAATCGCTTGAACCTGGGAGGCGGAGGTTGCGGTGAGCCAAGATTATGCCATTGCACTCCAGCCTGGGCAACAAGAGTGAAACTCCATCTCAAAAAAAAAAAAAAAAAAAGAAAATGTACTCCAGGAATTGTCATTTCTGAAATTCAACAGCTTCTGGAATTGAAGCAAACAGCTCATCTTGGAAGAGAAATATGTAGCCAACTCCAAAGCCAAAGCCTTTGAATATCTGAGACCTAGCATGCTAGGAGACCTTTATCTGTAACCTCAGAAGAAGAATCTGGATCTGGCCAAATTGAGGTCAAATTCTGCTCAACTTCTCCATAGTCAGTAGGAGAAAAAAACCAACTTGATGTTTGAGTCATATGTTTTGACAACTAAAGAGGACACTTATGCTGGGGTCGGTGGTTCA\t44\tCOV_CHANGE_INS\tPRECISE;SVTYPE=INS;SVLEN=7407;END=0;SUPPORT=3;COVERAGE=0,0,0,0,8;STRAND=+-;STDEV_LEN=16.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t./.:0:0:0", + "chr22\t10115\tSniffles2.INS.2S0\tA\tAATGTGAAATTGCAAATAATTCACCTGAGAAATGAAAATTAATCTTCTTTGCTAAATGCCATAGAGATATTTTAAGTTGCTAATGTTACTTAGATGTTCATTAACTTAGTGAGTTACATTAAGTAGAGAAGATGCCTTTTTTTTTTTCTGTACGAAGTCTTGCTCTGTAGCCCAGTGTAGTGGTATGATCTCGGCTCACCACAACCTCCGCCTCCTGTATTCAAGCGACTCTCCTGCCTCAGCCTCCAGAGTAGCTGGGATTACAGGTGTGCACCATCGCACCTAGCTAATTTTTTGTATTTTTAGCAGAGACAGCATTTCACCATGTTGGCCAGGCTGTTCTTGAACCCCCGACCTCAGGTAATCCACCCTCCTTAGCCTCCCAAAGTGCCAGGATTACAGGCGTGAGCCACTGCACCCTGCTGAGAAGATGCCTTTTGACAATGAAGTGGATTTGTATATTTATCTTTGGCTTAAAAAAACATGCACCACCAATTACACTTTCCTCAAGTTTAAATTTTTAATAATTAGGAAAATAAAGCATTTTCTTGTCTTATAGTGTTAGCTAGATTGTTTTTGTGTATTTTGTCATGAATAAAAAGCATAGCTATATAGTTACTGCTTTTACATTAACTATAAATATCTTAAAATTTTACTACCTAAAATCAGGAAACTTGAACTGAAGCTACTAATCTTAGAGTTGGAAAAGTAAATACATAGAGGTTTCCTGTTGTACAAATGTCAAGTGGCACAGTGAAATTTACATTCATTTGAAAGTTTTCCTAACTGTAAAAAGTATCAAATTACTTGATACTTTGGAGTAGTTCATCATCTTTATCAGAGGCACAGGTCTTAACCATTGGCAAGCCTCTGTCAGAATATGCACATATTAAAGATCTGATTATTTTTGTGTTAATGTTAAAAAATTTTTCTGAAGCTTTTATCTTATTTTTTCCATCCTTACACCGTAAATTCACATTACCAAGTTGGGAAGCCAAAGAAACATTCTACTCTACTCATGTTTTTTCACCAGTTCATGAAAGTTGATGTTAGAAATGGGTGTGGGTGTGGGGGATGGGGGTGGTTGTACAGAAGCAGCAGGTGGTAGGGATAGGATTTCTGAAGCACTATCCTTGGCCTTTTTTGAGTAAACTCTTTATACCCTGAGCCACTTTCTTTTCAGAGGGCAATTGCTATTATTAGAGAGCCACCTTAAGCATTATTGTTGTAGAAAAATTAGGCACAACCAGTGATTGTCATTACAAGGACCAGCAAAAATGGCTAGGTTGCTACTCTGTATTTGTAACGCCCTTCCCCCAACAAAATTTCTCCTTTTCATATCTGTGAATTAGAAATAAGTGATAGAAAACTGTACTGCATTACAATATATACCATTTAATAAAACAAGTTTATAGTTGAGAGCACTATTCATGCTTTTTGAAAGAATGCAAATTTGTAATTTTTATGATAGCAATTCTTAATAATTTATTGTCCAAGAGATTTGATAAAATTTTTGATAGTTATTGGTCTCTGGGACTCAATAGGCACTGGAATGTTTTAATTCAGTTGAAAAGTTGGTTCAGGATTGCTACCCTCTCTTACCTGTTAGGAGGTTGTTGTTTAACCTGACCTGAAATTCCCATGAATAAGAACCTGTTTTTTTTTTTTTTTTTCTTTGACAGAGTCTTGCTCTGTCGCCCAGGCTGCAGTGCAGTGGTGCGATCTTGGCTCGCTGCAAGTTCCGCCTCCCAGGTTCAAGCGATTCTCCTGTCTCAGCCTCCCAAGTAGCTGGAGTAGCTGGGACTGCAGGCACGTACCACCATGCCTGACTAATTTTTGTATTTTTAGTAGAGACAGGGTTTCACCGTGTTAGCCAGGATGGTCGCAATCTCTTGACCTCATGATCTGCCTGCCTTGGCCTCCCAAAGTGCTGGGATTACAGGTGTGAGCCACCGCACCTGGCCCAGGGAATTTCTAATATTTGAGAAGATGTTATTTTTAGTCTATTATACAAATTTATATATTGTTTACTAATATATAAATTTACATATTGGTTACTAATATGTAAACACCAATTTACATATTGGTTACTAATATGTAAACTTGATAAACATGGATTTCCATGGAAATTTAAAAGTATCACAACAATTTGTTTTCCCATTCTGAAACTTGTGATTTATTACATTTTCCTACTATTTCAGTTAATTCCATAATGCCAGATTTGTTGTAAATTTGCCGAGTGACAAGCCACACTGCTTCCTCTCATTCCTCTATTCCACAAAACTGCAAAGTTTCCCAGACCACAGTCAGGTTTCTCTGGGTTGTCCACTCTGTAAACTTACAGAGTGGTTGTCCAACTCTGTAAACTTACAGAGTGGTTGTCCAACTCTGTAAACTTACAGAGTGGTTGTCCAACTCTGTAAACTTAAGTCACTTTAAGTTTATGACGGAGGGGCTTCGTGAAACTTCATTGACCTTCCAAGGTGAAAATTGGTCAGTTTTCAGTTATAAAGGACATTAAGGATGGGTGTGGTGGCTGATACATGTAATCCCAGCACTTTCGGGAGACTCAGTCAGGAGGATCACTTAATCCTCATTTAAAAGGAGTTTGAGACCAGCCTGGGCAACAAAGTGAGGCCTTGTCTCTACAAAAAAATTAGCTGGGTGTGGTGGTAGGCACTTGTAGTCCCAACTACTCTGGAGACTGAGCTGAGAGAAGATTGTGTGAGGCTTGGAGGTTGAGGCTGCAGTGAACGGACATCACACCACTACACTCTAGTCAGGTGACAGAGCAAGACTCTAAATAAATAGGAACATTAGATGGTCTCTCTGCACTCTTGCCTGGTGGGGACGTGTTAGATACCCTCGTTAGGTTGTGATTTAGTTTTTAATCTGTGAGATGTTTGGGTCAAACAATTTTTAGCTGCCATGGAATAAACTTTCCAGTCAACGTGTGAGTTTGTGTTTGCCTTTACTTTTTTTTTTTTCTATATTGTTTTGGTCTATTTTTATCTTTTAATTTCAGAAAGCTGATTAATCTCTTCCTTTTCTCTTTAAAAATTTTCTTTATCATGTTTGTGCTACAGTGGTTATTTTGAGAACTTGTTGGCAGGATAAGTTGCAAAAGTTATGAAGTAGAATAGGGATGATTTCTGTTTTTGTTTTTTTTTTTTTCAGACAGAGTCTCACTCTCTTGCCTAGGCTGGAGTGCAGTGGCGTGATCCTGGCTCACTGCAGCCGCCGCCCTCCGGATTCAAGTGATTTGCCTGGCTCAGCCTCCCAAAAAGCTGGGATTACAGGTGCATGCCACCACACCCAGCTAATTTTTGTGTTTTTAGTAGAGATGGGTGTTCACCATGTTGGCCAGGCTGGTCTCAAACTCCTGACCTCAGGTGATCTGCCTGCCTCCGCACTCCCAAAGTGCTGGGATTACAGACGTGAGCCACCATGCCTGGCTGAGATTATTTCTTTTTTTATTATAGCCATTGCTTGTAGATATATGCTGGTGGTTATCTGTAAAAATGTAATAGAAAGGCCGGGCACGGTGGCTCACACCTGTAATCCCAGCACTTTGGGAGGCTGAGGTGGGCGGATCACAAGGTCAGGAGTGGGAGACCAGCCTGGCCAATATGGTAAAACCCCGTCTCTACCAAAAATACAAAAATTAGCTGGGCATAGTGGCGGGCACCTATAGTCCCAGTGACTCGGGAAGCTGAGGCAGGACAATCGCTTGAACCCAGGAGGCAGAGGTTGCAGTGAGCTGAGATCGTGCTATTATTGCACACCAGCCTGGGCGACAGAGTGAGACTCCGTCTCAAAAAAGAAAAAAGTAATAGACCAATCTTGAATTTATAATTGGAAGTGTTATTTCTTTATTTGCAGAATTTATTTATTTGTGACGCAGCTGTTGCTACCTCGCCTTTTCTTTTGTTGAGCTTAATCTCATGTCAAGTCATTCAACCAACTCAAAAGCGATGAAGACATTATTGAATCAACCTGAACTAAATCAGACCTAGGCTTCTTAAAATATACAGCTTAATGCTTCCAAATGATTTAGAAAACTAAAAAACCTAGCTACGCTGTAGGACACACAGTGGCCAATAAAAACAGGACCCCCAAACTGGCCAGTGGACCACTGCAACCACTATTTACTTCCTCCGTGTTTAGGAATGTTCAACGCTCCAAGCCCCATAGGCTGATTCAAGAAGATAAAGTGAGACTCAAGGAATTTCGAAGTGGAACAATACACCAAAGCCTTAAACCTGAAATGACTCTCCTTTTCTGGGGGTGAGGGAAGAAAAAGAAAAAGTTTCTAGGGCTCTCGGGGTGGCCTGGATGCCAGGGTCCCAGAAGTGGCCTTTTCTAGCTCCTGTAACTAAACCTGGCGGAAAACTCCCCGCCTGCTCACTCCACCCCCACCCGCCCAAGAATGCGTCTTCCCGTCTTCGGTGGCCCTACCCAGAATCCCAAAATGTGGGTTCCAACCCGGGCCCTGAATGTCTTCTCAAATCCCCGGGACCCAGGTTCCGGTGCGTGCCTTGCGTGCCGGGTCTTGCCCCTCGGGCGGTACCACCCAGGCAGCCCTAAATCCAGCCTCCCGGGCCCCCAGCAGCGCCCTCCGCCCCTCCACTATCCGGTCCGGCTCGAAGTCGGGGCCAAATCCAGAGACAAGAGGGCTGTGCCTGAAACTGAGCAGTTTCACCACTCGGCACTCCTGGCGGAAACTTCCCTTTAAAAAAAAAAAAAAAGAAAAGAAAGAAAAGCAACAGCACTTTTGGGCTAGCATTTCAATCCTTCCTGCCCTTTAGAGTTCCCAGTTCTGCTTCCAGCTGGCTTTGGGTGTTCCACTAGAATTGAGTTGTAAAGATATTCTTTAAGTGTTTATAGAACATTAAGACTTAAAAAAAATCTTTAAAATTAGAGGAGGGAAGCCACTGATCGCACACATCCAGGAAATGCAGCCCCGTGCATCCCTGCTCAGGGATGAGCAGGCGCCCCAGGACTCCCGGAGACAGATTTTTGGGCACCCGAGGGAGTCACCGGGCGCGTGTCGGGGTCCGCGGTGAGGCCCAGCCCCTCCGGCGGTCCCTTAGACGCGCCCTCTGCCCGGCCGGTGATCGGCCATTGTTTACGGGGGATGCCCGTCCAGACGCATTGTTTTGGCCGTTTCCAACTTGCCCCGGCCCTTTCCGGGGCATCGCGGGGGACCCTACACCGACGTCCCCCCTCCGCCCGCGCCCCAAGGGCTGACTGGGCAAATTGGCAGATCCGCCCCGCGGGGCGACCCAACTTTTCGGAACAGCCCCCCACCGCCCACCCCTGCAGATCCCCGGACCCCCGCTCCCGGCGGAGATTCAGGGAACCCCGCATCCCAAGCCCTTCTAAATCGTGCGGCCTGAGTGTGACGGCCAAGAGCGGATGCAGCCCGGGATCGCCCGCACCTTCCCGTGGGCGGAAGCGCAGGAGCCGGCTGGGGGAGGGGGCGCCCTAGAGAAGCGGCTAGAAAGCTGAGACGGGGAACTGAGGTCATCCTGGGGGGGACAAGACAATGAGAGCCGGGCGCCTTGGGGGCGGCGCGGGAGCCTCCGCAGGACCAGGCGGGCGCCCCCTTTACCTGCGGCTCCGGCGCCTCGGCCGTTTCCTCGCGCGGCGGCGGCCGGGACTGAGCTGACACCACTCAGCCGGCGGGGTTTGAATGAGGAGGAGCGGGCGCGGAGGGGAGGGGGCGGGGAGGGAGGGAGGGAGGCGTCGCGGAGTTTCTCTCGGCCTTTTGTGCCATCCGCCGAGGCGCCTTGAGTATAAATCCAGATAGTGCAGTTTTTGTTGTGCTTGTGCTGATCAACTTTATGGTGTGATTAAATACGATTTTTTTTATTACGCTCTTGAAATTGTACTCTTGAGGTTGCAGAATGGCAATTAGATGGCAGTCGCTGATAGCCATGTAGAAGTTTTGATGAACATGCAAGTTAATTTTAATTTCTGATCAGTTACGGTTAGTGACTGTGGCCAAACATGTGCGTACTGATTCTACATGTGCTAATTCCGTGACGTTTATTCACCAGCTATGTGTCCCGTGCCTAATCCTGTGTCAGGCACCTTGTTCCAGGCATTGGGGGCAGCAGTGGACAAGGCAACAGAGTCTCCATCCTGAGGTGTTACTTTTAGAAAAAGATAGTTACAAGCAAATAAACAGGATGGTTTTAGATCTGGACAGAGGTTTTCAGAGGAAGTCATCCTTGAGCTGTCACAATGCTTTGGGGAGGGGTGTGCTGGGTAATCAGGGATGGCACATTTGGGGTGCCTAAGGATTGCTGTGGCCCTGGGAGCCTAGGACAGTTGGTCACAATTGACTTATTAGAGTCAGTCTCAGAAGCTTTCCTGGAAGTAGAATTGCTGCTGTTTTGCCAGGAGGGTTTCCTTCCCCATCTGACCACACAAGAAGACCCCTGCCCACAAATGCCTACCACTCCCAGGTCTCCCAGGCTGTTCACCCTCCCAGGCAAAGTGGAAGCTTCCTCTGTCCTAAGATCGTTTCCCACTGAACCTCCTTCATTTTCCTTCACTGCAGAGAAATAATCCTACAAGGTCTTGTGTGGAGAGTGATGGTACCTTCTTTAACCCAGATAATTGAGAATTGGAACCAAAACATCTGTGTATTAATAAATATTTTCAGTAACTAGGTTATGCTATTTCCCTGAGTGGGAAATAACACTCCATCATGTTTCTTTTTTTGGGGGGCAAGGGGGAGTCAAAGTTGTCAGGCCTCTGAGCCCAGGCCAGGCCATCGCATCCCGTGACTTGCACATATACATCCAGATGGCCTGAAGTAATTGAAGATCCACAGAAGAAGTAAAAACAGCCTTAACTGATGACATTCCACCATTGTGATTTGTTCCTGCCCCACCCTAACTGATCAATGTACTTTGTAATCTCCCCCACCCTTAAGAAGGTTCTTTGGAGTCTCCCACCCTTGAGAATGTACTTTGTGAGATCCACCCCTGCCCACCAGAGAACAACCCCCTTTGACTGTAATTTTCCATTACCTTCCCAAATCCTATAAAACAGCCCCACCCCTATCTCCCTTCACTTGACTCTCTTTTCAGACTCAGCCCACCTGCACCCAGGTGAAATAAACAGCTTTATTGCTCACACGAAGCCTGTTTGGTGGTCTCTTCACACGGATGCGCATGAAATTTGGTGCCGTGACTTGGATCGGGGGACCTCCCTTAGGAGATCAATCCCCTGTCCTCCTGCTCTTTGCTCCGTGAGAAAGATCCACCTACGACCTCAGGTCCTCAGACCGACCAGCCCAAGAAACATCTCACCAATTTCAAATCTGGTAAGCGGCCTCTTTTTACTCTCTTCTCCATTCCTCCTCCTTCTCCCTTAGCTTCTCCAACCTCCCTCACTATCCCTCAACCTCTTTCTCCTTTCAATCTTGGCGCCACACTTCA\t7\tPASS\tPRECISE;SVTYPE=INS;SVLEN=7453;END=10115;SUPPORT=1;COVERAGE=10,10,10,29,10;STRAND=-;AF=0.300;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:10:7:3", + "chr22\t10126\tSniffles2.INS.1S0\tA\tACCGCTTTTCTGGGGCAGGGGCAAGTACCCCTCAACCCCTTCCCCTTCACACTTAGTGGCAAGTCCCGCTTTCCTGGGCAGGGGCAAGTACCCCTCAACGCCTTCTCCTTCACCCTTAGTGGCAAGTCCCGCTTTTCTAGGGGGGCAAGAACCCCCAAACCCCTTCCATCTGTGTCTCTACGCTCTCTTCTGTGGGTTTGCTTCCTTCACTATGGAACCTTCCACCCTCCATTCCTCCTTCTTCTCCCTTAGCCTGTGTGCTCAAAAAGTTAAAACCTCTTCAACTCACACCTGACCTAAAACCTAAATGCCTTATTTTCTTCTGCAACACCGCATATCTTGCTTGGCCCCAATACAAACTTGACAATGTCTCTAAATGGCCGGAAAATGGCACTTTGATTTCCCCACTGACAAACACCTAAATAATTTTTGTCGAAAAATGGGCAAATGGTCTGAGGTGCCTTACGTCCAGGCATTTTTCACACTTCGTTCCCTCCCTAGTCTCTGTTCCCAATGCGATTCCTCCCAGATCCTCCTCCTTTCCTCTCCTGTCCCCTCGGTCCCAACCCCAAGCGTCGCTGAGTCTTCCCAGTCTTCCTTTTCTACAGACCCATCTGACCTTTCCCCTCCTCCCCAAGCTGCTTGTCGCCAGACCGAGCTAAGTCCCAAGTACCTCCCTCAACTCTCCACTCCTCCACCCTATAATCCTTCTATCACCTCCCCTCCTCACACCTGGTCCGGCTTACAGTTTAGTTCCGCGACTAGCGCTTCCCCACCTGCCCAACAATTTCCTCTTAGAGAAAGTGGCTGGAGCTGAAGGCATAGTCAAGGGACATGTACTTTTTTCTCTATCAGACCTCTCTCAGATCAGTCAATGTTTAGGCTCTTTCTCATCAGACCCCACTAAATATATACAGGAATTCCAATATCTAACTCTGTCCTACAACTTAACCTGGAGTGACTTAAATGTCATCCTGACTTCTACTCTCTCCCCAATATGAACGGGAAAGTTTTTTCTCTAGCCCAATCTCGTGCTGATAACCGCCGGCTTCATGAGCCAGACCTCCAGGAAGGCATTAGAGCAGTTCCCCGAGAGGATCCCCAATGGAACTATCAGGCAGATTCCCCAGGTACAGCTAGGCGAGATTACATGGTTTCCTGCCTAGTTGAAGGGCTTAAAAAAGCAGCTTACAAAGCTGTTAATTATGACAAGCTTAAAGAAACTACCCGAGGTAAAGACGAAAACCCAGCCCAGGTCATGGCCCACTTAGCAGCAACCATTAGATGCTATACTGCCCTAGACCCAGAGGGGCCAGAAGGCCGCCTTATTCTTAATATGCATTTTTATCACCCAATCCACTCCTGACATTAGGAAAAAACTTCAAAAATTAGAATCTGGCCTTCAAACCCAGCAGGAATTAATCAACCTTGCCTTCAAGGTGTACAATAATAGAGAGGAAGCAGCCAGACGGCAACGCATTTCGAGTTACAATTACTTGCCTCTGCTGTGAGACAAAACCCAGCCACACCTCCTGCATACAGGAACTTCAAAATGCCTAAGCCGCAGCAATCAGACACTCCTACAAGACTTCATCAGGATCTTGCTTCAAGTGCCAGAAATCTGGCCACTGGGCCAAGGAATGCCCACAGCCCAGGATTCCTCCCAAGCCATGTCCCATCTGTGCAGGCACCCACTGGAAATCAGACTGCCCAGCTCGCCCGACAGCCACTCCTGGAGCCCCTAAAGCTCTAGCCCAAGGCTCTCTGACTCCTTCCCAGATCTATTCGGCTTAGCGACTGAAGATTGACGCTGCCCGATCGCCTCGGAAGTCCCCTGGACCATCACAGAAGCCGAGCTTCGGGTAACTCTCACAGTGGAGGGTAAGTCCATCCCCTGTTTAATCGATACGGGGGCTACCCACTCCACGTTGCCTTCTTTTCAAGGGCCTGTTTCCCTTGCCCCCATAACTGTTGTGGGTATTGACGGCCAAGCTTCAAAACCCCTGAAAACTCCCCCACTCTGGTGCCAACTTGGACAACACTCTTTTATGCACTCTTTTTTAGTTATCCCCACCTGCCCACTTCCCTTATTAGGCCGAAATATTTTAACCAAATTATCTGCTTCCCTGACTATTCCTGGAGTACAGCTACATCTCATTGCTGCCCTTCTTCCCAATCCAAAGCCTCCTTTGTGTCCTCTAACATCCCCACAATATCACCCCTTACCACAAGACCTCCCTTCAGCTTAATCTCTCCCACTCTAGGTTCCCACGCCGCCCCTAATCCCACTTGAAGCAGCCCTGAGAAACATCGTCCATTCTCTCTCCATACCACCCCCCAAAAATTTTCGCCGCTCCAACACTTCAACACTATTTTGTTTTATTTGTCTTATTAATATCAGAAGGCAGGAATGTCAGGCCTCTGAGCCCAGGCCAGGCCATCGCATCCCCTGTGACTTGCACGTATACATCCAGATGGCCTGAAGTAACTGAAGATCCACAAAAGAAGTAAAAACAGCCTTAACTGATGACATTCCACCATTGTGATTTGTTCCTGCCCCACCCTAACTGATCAATGTACTTTGTAGACTCCCTCCCCCCACCCTTAAGAAGGTTCTTTGTAATTCTCCCCACCCTTGAGAATGTACTTTGTGAGATCCACCCCTGCCCACCAGAGAACAACCCCCTTTGATTGTAATTTTTTATTACCTTCCCAAATCCTATAAAACAGCCCCACCCCTATCTTCCTTCACTGAACTCTCTTTTCGGACTCAGCCCACCGGCACCCAGGTGAAATAAACAGCTTTATTGCTCACACAAAGCCTGTTTGGTGGTCTCTTCACACGGACGCGTATGAAAAAAGTCTCGCCCTGTTGCCCAGGCTGGAATGCAGTGGCACGATCTTGGCTCACTGCTACCTCCACTTCCTGGGTTCAAGTGATTCCCAAGTAGCTGGGATTACAGGTGTGTATTACCATGCCCAGCTAATTTTTGTATTTTTAGCAGATAAGGGGTTTCACCATGTTGGCCAGGCTGGTCTCCAACTCCTGGCCTCAAGTGATCCACCCACTTCGGCTACCCAAAGCATTGGGAGTACAGGGGTGAGCCACTATGCCCAGCCTCACATCATATTTCTAATCCCGAGACTGTAGAGCTGGTGTCTCTTTTTGGAAAGGATGTCAGTAGAGAAAATGGAGTTCCCCAAAATTACAGTTTCACATATTAGTAAAGTTTCTAAAATACAGTAATAATGTTGAGAGCTGACATAGGGACTAACTTAGTTTTTTTTTTTTTTTAGATTGTCACCTAACTTTGATTTTGCTAAATAAGGACATTAAAAGAAAACCAAAAAAGTCCACTATTGGCTATTGCCACTATTTGATTTTTTAAAAAATAAGCGTATTTTAGCATCTAAAAGTAGGAAGGACCTCAAATAAATGAGTCTTTGTTCTTGGCCAGGGAAACAGCGTTGTCAGCATTTGATAACTGTTTTTCTAGGGTATGTGCTGTTATTCAGTTAAAACCTTGCCTGGGGATGTTAGCATTGGTAAATACTTGTTGAATAAGCAAATGAAACTTAAGCTTCTATGTATAGAAACCTAAGTCACTTCACATTCTGATTAGCAGAGTAATTGAATATTCTTTTCAGTGTGTAGATCTATACCCAGAACCACAGAATATCGGAACTGTAAAAACCAACTGCATTAAATAGATGTGGTATGTGGCAGTGTACCAAGGTTGTGACTAGAACTCCGGTCTTGGAGTGTTCTATTATATCACACCAAGCTGGTCACCAGCCCATGTGTTGATCCTCCATTGTGATAGCAACAAAGAAAAGACTTCAGGACATTCTTTCCTTTACCCTAATCCTTCATCTTCAGTCTTATTTAGAAAAGCTTAATGTTAAAGATCTAGTTTATTCAAAACTAAAGATAAGGAGTATGAGAATTTCTATTTCGGAGTGTAAAGGAGGAGATGTTTCCTTGGCTTCTCTGAGCCTACAGGCCTTCCTTGCTCTTTAAGGAAGTAGAGAGAGAGAGGAAAGTAAAGTATGCTTTTGTTTTTTAAGGTTACTTTGCTGGGAGTAGTTTGCATGCCATTTGGTTTTCTTGGGTGGAATTAACTGACTTAAGTTTTAAGTAGTTGGGACTATTTAGAAACAATGCCTATCCAATGTTTGCCATAAAGGCAGAGGGTATTGGCTTTAGAAGTTAATTCTTCTCCAGGAGTGAAAATGAGCTGCTAAACCAGAAGCAGCAGAGCTAAAGAAAGTAATTTTCCACCTGGCCAGTGCATGATGTGAAAGGTAGACTAAAAGAATGAGAGGACCCATTTTCTGATGAAAGACTAAGCCATGTTGAAACAGCCCTGTTGAGGATTTTATTTTAAATCTATACATTCACAAAGGAGCTTTGTGTATGTCTTTCCCTATTTGTTGTTTGGACTAAGGGAGCCCCACCCAGTGCTTGTTCAGTAAGTTGTTGAAAGAAATCTGGATTTGAACAGTGGATTGAGGTTTCGAATATCCAGTGAACCAAAATATATCAGGGTTCCCCTGGCCAAGATGAGTGACCATTCTGAGGTGTTACGTATTTCTTGAATGGGGATTTTAGGAAAAGTTTCTGTATTTCTGTGCTCATTTTGTTGACCTCTGTATGTGCAAAATCTCTAAGGGGGTGTTTGGGCACTTAGATTTCTTGGATGCAGATTTGTTTGTATATGAAACAAATTTTAAATTGTTTCGTATACACTGGATTTAAAATAGTTTAGTTTACTAAAGTGTTTTAATGTTTTCATCTTAATTTTCAGTTCTTATAGTCTTTAGATTTAGGGAGGCTGTTGATGGCATCCACATATGCATTTTAATGTCATTTAAAATGTATTCTGCTGAATTTAACAATTTCTGACCTAAAACTTGACATTTTAATATTTAAGTCGGTAAAGCGCTGATTTAAACTGGATTTTAACTGGATGAAATTCTGATTTAATGAGTGTACTGACTGGATAAAATGCCAATGATTTAATTAACAAGCACGTTTACAGCATGCCCTATATATTAGTTAAAAGTGAAGCAATTGAATTAGGTACCATTTCAAAATGGTTGCTGTACCCACTCACCCTCTCTATCCTCCAATTAGGGTATATTTTGAAATGATTGCTTTTCCCTTTTCCTTGTGTAAAGAGCCTGAGGAAATTTTCTTCGGCCTTCATCATGAGAACCTGGTGGGGTTTCTGGAAGTAAAATTCATGAAAGTATAAGGGGCCCCCAAGACGGGACTCCAACAAGTTTTTAACTCTCAAGCTAGTCCACACTCAGCCACCAGTAAATTTATTGATTACCATTGAAGTGTTCCTACCAATTAC\t9\tPASS\tPRECISE;SVTYPE=INS;SVLEN=5362;END=10126;SUPPORT=1;COVERAGE=10,10,10,29,10;STRAND=-;AF=0.200;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/0:2:8:2", + "chr22\t13000\tSniffles2.INS.3S0\tT\tTGATAATCAAGAGAACGTCTCAGCACCGCGCCTGAGCGCTTAGTAGGTAGTGATCAAGAGAGAAGACCTC\t36\tGT\tIMPRECISE;SVTYPE=INS;SVLEN=69;END=13000;SUPPORT=2;COVERAGE=11,13,13,16,51;STRAND=+-;AF=0.154;STDEV_LEN=6.364;STDEV_POS=37.477;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/0:10:11:2" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-08-30T13:26:44.362217872" + } +} \ No newline at end of file diff --git a/modules/nf-core/sniffles/tests/nextflow.config b/modules/nf-core/sniffles/tests/nextflow.config new file mode 100644 index 00000000..06e38362 --- /dev/null +++ b/modules/nf-core/sniffles/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: 'SNIFFLES' { + ext.args = '--minsupport 1 --no-qc --mapq 0' + } +} diff --git a/modules/nf-core/sniffles/tests/tags.yml b/modules/nf-core/sniffles/tests/tags.yml new file mode 100644 index 00000000..7010d53c --- /dev/null +++ b/modules/nf-core/sniffles/tests/tags.yml @@ -0,0 +1,2 @@ +sniffles: + - "modules/nf-core/sniffles/**" diff --git a/modules/nf-core/somalier/extract/environment.yml b/modules/nf-core/somalier/extract/environment.yml index fe32ebda..757967b2 100644 --- a/modules/nf-core/somalier/extract/environment.yml +++ b/modules/nf-core/somalier/extract/environment.yml @@ -1,7 +1,5 @@ -name: somalier_extract channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::somalier=0.2.18 diff --git a/modules/nf-core/somalier/extract/meta.yml b/modules/nf-core/somalier/extract/meta.yml index aabaf5d6..25621667 100644 --- a/modules/nf-core/somalier/extract/meta.yml +++ b/modules/nf-core/somalier/extract/meta.yml @@ -1,5 +1,6 @@ name: "somalier_extract" -description: Somalier can extract informative sites, evaluate relatedness, and perform quality-control on BAM/CRAM/BCF/VCF/GVCF or from jointly-called VCFs +description: Somalier can extract informative sites, evaluate relatedness, and perform + quality-control on BAM/CRAM/BCF/VCF/GVCF or from jointly-called VCFs keywords: - relatedness - QC @@ -14,65 +15,69 @@ keywords: - family tools: - "somalier": - description: "Somalier can extract informative sites, evaluate relatedness, and perform quality-control on BAM/CRAM/BCF/VCF/GVCF or from jointly-called VCFs" + description: "Somalier can extract informative sites, evaluate relatedness, and + perform quality-control on BAM/CRAM/BCF/VCF/GVCF or from jointly-called VCFs" homepage: "https://github.com/brentp/somalier" documentation: "https://github.com/brentp/somalier/blob/master/README.md" tool_dev_url: "https://github.com/brentp/somalier" doi: "10.1186/s13073-020-00761-2" licence: ["MIT"] + identifier: biotools:somalier input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - input: - type: file - description: BAM/CRAM/SAM/BCF/VCF/GVCF or jointly-called VCF file - - input_index: - type: file - description: index file of the input data, e.g., bam.bai, cram.crai - - meta2: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'hg38' ] - - fasta: - type: file - description: The reference fasta file - pattern: "*.{fasta,fna,fas,fa}" - - meta3: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'hg38' ] - - fai: - type: file - description: FASTA index file - pattern: "*.fai" - - meta4: - type: map - description: | - Groovy Map containing sites information - e.g. [ id:'hg38' ] - - sites: - type: file - description: sites file in VCF format which can be taken from https://github.com/brentp/somalier - pattern: "*.vcf.gz" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - input: + type: file + description: BAM/CRAM/SAM/BCF/VCF/GVCF or jointly-called VCF file + - input_index: + type: file + description: index file of the input data, e.g., bam.bai, cram.crai + - - meta2: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'hg38' ] + - fasta: + type: file + description: The reference fasta file + pattern: "*.{fasta,fna,fas,fa}" + - - meta3: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'hg38' ] + - fai: + type: file + description: FASTA index file + pattern: "*.fai" + - - meta4: + type: map + description: | + Groovy Map containing sites information + e.g. [ id:'hg38' ] + - sites: + type: file + description: sites file in VCF format which can be taken from https://github.com/brentp/somalier + pattern: "*.vcf.gz" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - extract: - type: file - description: binary output file based on extracted sites - pattern: "*.{somalier}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.somalier": + type: file + description: binary output file based on extracted sites + pattern: "*.{somalier}" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@ashotmarg" - "@nvnieuwk" diff --git a/modules/nf-core/somalier/extract/somalier-extract.diff b/modules/nf-core/somalier/extract/somalier-extract.diff index 59f472ab..b1118b5e 100644 --- a/modules/nf-core/somalier/extract/somalier-extract.diff +++ b/modules/nf-core/somalier/extract/somalier-extract.diff @@ -1,4 +1,6 @@ Changes in module 'nf-core/somalier/extract' +'modules/nf-core/somalier/extract/meta.yml' is unchanged +Changes in 'somalier/extract/main.nf': --- modules/nf-core/somalier/extract/main.nf +++ modules/nf-core/somalier/extract/main.nf @@ -5,8 +5,8 @@ @@ -13,13 +15,17 @@ Changes in module 'nf-core/somalier/extract' input: tuple val(meta), path(input), path(input_index) +Changes in 'somalier/extract/environment.yml': --- modules/nf-core/somalier/extract/environment.yml +++ modules/nf-core/somalier/extract/environment.yml -@@ -4,4 +4,4 @@ +@@ -2,4 +2,4 @@ + - conda-forge - bioconda - - defaults dependencies: - - bioconda::somalier=0.2.19 + - bioconda::somalier=0.2.18 +'modules/nf-core/somalier/extract/tests/tags.yml' is unchanged +'modules/nf-core/somalier/extract/tests/main.nf.test.snap' is unchanged +'modules/nf-core/somalier/extract/tests/main.nf.test' is unchanged ************************************************************ diff --git a/modules/nf-core/somalier/relate/environment.yml b/modules/nf-core/somalier/relate/environment.yml index 3a730471..757967b2 100644 --- a/modules/nf-core/somalier/relate/environment.yml +++ b/modules/nf-core/somalier/relate/environment.yml @@ -1,7 +1,5 @@ -name: somalier_relate channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::somalier=0.2.18 diff --git a/modules/nf-core/somalier/relate/meta.yml b/modules/nf-core/somalier/relate/meta.yml index 42638f4f..0da72821 100644 --- a/modules/nf-core/somalier/relate/meta.yml +++ b/modules/nf-core/somalier/relate/meta.yml @@ -1,5 +1,6 @@ name: "somalier_relate" -description: Somalier can extract informative sites, evaluate relatedness, and perform quality-control on BAM/CRAM/BCF/VCF/GVCF or from jointly-called VCFs +description: Somalier can extract informative sites, evaluate relatedness, and perform + quality-control on BAM/CRAM/BCF/VCF/GVCF or from jointly-called VCFs keywords: - relatedness - QC @@ -14,47 +15,67 @@ keywords: - family tools: - "somalier": - description: "Somalier can extract informative sites, evaluate relatedness, and perform quality-control on BAM/CRAM/BCF/VCF/GVCF or from jointly-called VCFs" + description: "Somalier can extract informative sites, evaluate relatedness, and + perform quality-control on BAM/CRAM/BCF/VCF/GVCF or from jointly-called VCFs" homepage: "https://github.com/brentp/somalier" documentation: "https://github.com/brentp/somalier/blob/master/README.md" tool_dev_url: "https://github.com/brentp/somalier" doi: "10.1186/s13073-020-00761-2" licence: ["MIT"] + identifier: biotools:somalier input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - extract: - type: file - description: extract file(s) from Somalier extract - pattern: "*.somalier" - - ped: - type: file - description: optional path to a ped or fam file indicating the expected relationships among samples - pattern: "*.{ped,fam}" - - sample_groups: - type: file - description: optional path to expected groups of samples such as tumor normal pairs specified as comma-separated groups per line - pattern: "*.{txt,csv}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - extract: + type: file + description: extract file(s) from Somalier extract + pattern: "*.somalier" + - ped: + type: file + description: optional path to a ped or fam file indicating the expected relationships + among samples + pattern: "*.{ped,fam}" + - - sample_groups: + type: file + description: optional path to expected groups of samples such as tumor normal + pairs specified as comma-separated groups per line + pattern: "*.{txt,csv}" output: - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - html: - type: file - description: html file - pattern: "*.html" + - meta: + type: file + description: html file + pattern: "*.html" + - "*.html": + type: file + description: html file + pattern: "*.html" - pairs_tsv: - type: file - description: tsv file with output stats for pairs of samples - pattern: "*.pairs.tsv" + - meta: + type: file + description: tsv file with output stats for pairs of samples + pattern: "*.pairs.tsv" + - "*.pairs.tsv": + type: file + description: tsv file with output stats for pairs of samples + pattern: "*.pairs.tsv" - samples_tsv: - type: file - description: tsv file with sample-level information - pattern: "*.samples.tsv" + - meta: + type: file + description: tsv file with sample-level information + pattern: "*.samples.tsv" + - "*.samples.tsv": + type: file + description: tsv file with sample-level information + pattern: "*.samples.tsv" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@ashotmarg" - "@nvnieuwk" diff --git a/modules/nf-core/somalier/relate/somalier-relate.diff b/modules/nf-core/somalier/relate/somalier-relate.diff index f583d612..7dd8b76c 100644 --- a/modules/nf-core/somalier/relate/somalier-relate.diff +++ b/modules/nf-core/somalier/relate/somalier-relate.diff @@ -1,4 +1,6 @@ Changes in module 'nf-core/somalier/relate' +'modules/nf-core/somalier/relate/meta.yml' is unchanged +Changes in 'somalier/relate/main.nf': --- modules/nf-core/somalier/relate/main.nf +++ modules/nf-core/somalier/relate/main.nf @@ -5,8 +5,8 @@ @@ -13,13 +15,17 @@ Changes in module 'nf-core/somalier/relate' input: tuple val(meta), path(extract), path(ped) +Changes in 'somalier/relate/environment.yml': --- modules/nf-core/somalier/relate/environment.yml +++ modules/nf-core/somalier/relate/environment.yml -@@ -4,4 +4,4 @@ +@@ -2,4 +2,4 @@ + - conda-forge - bioconda - - defaults dependencies: - - bioconda::somalier=0.2.19 + - bioconda::somalier=0.2.18 +'modules/nf-core/somalier/relate/tests/tags.yml' is unchanged +'modules/nf-core/somalier/relate/tests/main.nf.test.snap' is unchanged +'modules/nf-core/somalier/relate/tests/main.nf.test' is unchanged ************************************************************ diff --git a/modules/nf-core/splitubam/environment.yml b/modules/nf-core/splitubam/environment.yml index ef128202..382f9112 100644 --- a/modules/nf-core/splitubam/environment.yml +++ b/modules/nf-core/splitubam/environment.yml @@ -1,9 +1,7 @@ --- # yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json -name: "splitubam" channels: - conda-forge - bioconda - - defaults dependencies: - "bioconda::splitubam=0.1.1" diff --git a/modules/nf-core/splitubam/meta.yml b/modules/nf-core/splitubam/meta.yml index 3d11eaae..64691357 100644 --- a/modules/nf-core/splitubam/meta.yml +++ b/modules/nf-core/splitubam/meta.yml @@ -1,4 +1,3 @@ ---- # yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/meta-schema.json name: "splitubam" description: split one ubam into multiple, per line, fast @@ -13,33 +12,34 @@ tools: documentation: "https://github.com/fellen31/splitubam" tool_dev_url: "https://github.com/fellen31/splitubam" licence: ["MIT"] + identifier: "" input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. `[ id:'sample1', single_end:true ]` - - bam: - type: file - description: (u)BAM file - pattern: "*.{bam}" - + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:true ]` + - bam: + type: file + description: (u)BAM file + pattern: "*.{bam}" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. `[ id:'sample1', single_end:false ]` - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - bam: - type: file - description: Split (u)BAM file - pattern: "*.{bam}" - + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - "*.bam": + type: file + description: Split (u)BAM file + pattern: "*.{bam}" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@fellen31" maintainers: diff --git a/modules/nf-core/stranger/environment.yml b/modules/nf-core/stranger/environment.yml index 530ce375..c476e2b3 100644 --- a/modules/nf-core/stranger/environment.yml +++ b/modules/nf-core/stranger/environment.yml @@ -1,7 +1,5 @@ -name: stranger channels: - conda-forge - bioconda - - defaults dependencies: - - bioconda::stranger=0.9.1 + - bioconda::stranger=0.9.2 diff --git a/modules/nf-core/stranger/main.nf b/modules/nf-core/stranger/main.nf index 923483f4..bc31e703 100644 --- a/modules/nf-core/stranger/main.nf +++ b/modules/nf-core/stranger/main.nf @@ -4,8 +4,8 @@ process STRANGER { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/stranger:0.9.1--pyh7e72e81_0': - 'biocontainers/stranger:0.9.1--pyh7e72e81_0' }" + 'https://depot.galaxyproject.org/singularity/stranger:0.9.2--pyh7e72e81_0': + 'biocontainers/stranger:0.9.2--pyh7e72e81_0' }" input: tuple val(meta), path(vcf) diff --git a/modules/nf-core/stranger/meta.yml b/modules/nf-core/stranger/meta.yml index 5e0bc0bb..a5486dbd 100644 --- a/modules/nf-core/stranger/meta.yml +++ b/modules/nf-core/stranger/meta.yml @@ -1,5 +1,6 @@ name: stranger -description: Annotates output files from ExpansionHunter with the pathologic implications of the repeat sizes. +description: Annotates output files from ExpansionHunter with the pathologic implications + of the repeat sizes. keywords: - STR - repeat_expansions @@ -13,39 +14,42 @@ tools: tool_dev_url: https://github.com/moonso/stranger doi: "10.5281/zenodo.4548873" licence: ["MIT"] + identifier: "" input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - vcf: - type: file - description: VCF with repeat expansions - pattern: "*.{vcf.gz,vcf}" - - meta2: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'test' ] - - variant_catalog: - type: file - description: json file with repeat expansion sites to genotype - pattern: "*.{json}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - vcf: + type: file + description: VCF with repeat expansions + pattern: "*.{vcf.gz,vcf}" + - - meta2: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'test' ] + - variant_catalog: + type: file + description: json file with repeat expansion sites to genotype + pattern: "*.{json}" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - vcf: - type: file - description: annotated VCF with keys STR_STATUS, NormalMax and PathologicMin - pattern: "*.{vcf.gz}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.gz": + type: file + description: annotated VCF with keys STR_STATUS, NormalMax and PathologicMin + pattern: "*.{vcf.gz}" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@ljmesi" maintainers: diff --git a/modules/nf-core/stranger/tests/main.nf.test b/modules/nf-core/stranger/tests/main.nf.test index 13c61f43..3c12a2c5 100644 --- a/modules/nf-core/stranger/tests/main.nf.test +++ b/modules/nf-core/stranger/tests/main.nf.test @@ -15,7 +15,7 @@ nextflow_process { script "../../expansionhunter/main.nf" process { """ - input[0] = [ + input[0] = [ [ id:'test' ], // meta map file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true) diff --git a/modules/nf-core/stranger/tests/main.nf.test.snap b/modules/nf-core/stranger/tests/main.nf.test.snap index 3faa4e58..b0ce7380 100644 --- a/modules/nf-core/stranger/tests/main.nf.test.snap +++ b/modules/nf-core/stranger/tests/main.nf.test.snap @@ -11,7 +11,7 @@ ] ], "1": [ - "versions.yml:md5,68446c9e91e20825f7430db64e85aa7c" + "versions.yml:md5,a3f4f3b2391e96e77caa158199436fcb" ], "vcf": [ [ @@ -22,15 +22,15 @@ ] ], "versions": [ - "versions.yml:md5,68446c9e91e20825f7430db64e85aa7c" + "versions.yml:md5,a3f4f3b2391e96e77caa158199436fcb" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-07-03T08:09:27.725425094" + "timestamp": "2024-11-04T10:27:41.164430492" }, "homo_sapiens - vcf, repeat_catalogue": { "content": [ @@ -44,7 +44,7 @@ ] ], "1": [ - "versions.yml:md5,68446c9e91e20825f7430db64e85aa7c" + "versions.yml:md5,a3f4f3b2391e96e77caa158199436fcb" ], "vcf": [ [ @@ -55,14 +55,14 @@ ] ], "versions": [ - "versions.yml:md5,68446c9e91e20825f7430db64e85aa7c" + "versions.yml:md5,a3f4f3b2391e96e77caa158199436fcb" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-07-03T08:09:14.472394433" + "timestamp": "2024-11-04T10:27:31.05008915" } } \ No newline at end of file diff --git a/modules/nf-core/stranger/tests/nextflow.config b/modules/nf-core/stranger/tests/nextflow.config index 98459330..0ddc8bbd 100644 --- a/modules/nf-core/stranger/tests/nextflow.config +++ b/modules/nf-core/stranger/tests/nextflow.config @@ -1,5 +1,5 @@ process { - withName: 'STRANGER' { - ext.prefix = "stranger" - } - } + withName: 'STRANGER' { + ext.prefix = "stranger" + } +} diff --git a/modules/nf-core/svdb/merge/main.nf b/modules/nf-core/svdb/merge/main.nf index 96d21eba..24c5effd 100644 --- a/modules/nf-core/svdb/merge/main.nf +++ b/modules/nf-core/svdb/merge/main.nf @@ -1,6 +1,6 @@ process SVDB_MERGE { tag "$meta.id" - label 'process_medium' + label 'process_single' conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/mulled-v2-375a758a4ca8c128fb9d38047a68a9f4322d2acd:b3615e06ef17566f2988a215ce9e10808c1d08bf-0': diff --git a/modules/nf-core/svdb/query/environment.yml b/modules/nf-core/svdb/query/environment.yml index cd35cf48..2af55220 100644 --- a/modules/nf-core/svdb/query/environment.yml +++ b/modules/nf-core/svdb/query/environment.yml @@ -2,4 +2,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::svdb=2.8.1 + - bioconda::svdb=2.8.2 diff --git a/modules/nf-core/svdb/query/main.nf b/modules/nf-core/svdb/query/main.nf index d516d382..4ceb477a 100644 --- a/modules/nf-core/svdb/query/main.nf +++ b/modules/nf-core/svdb/query/main.nf @@ -4,8 +4,8 @@ process SVDB_QUERY { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/svdb:2.8.1--py39h5371cbf_0': - 'biocontainers/svdb:2.8.1--py39h5371cbf_0' }" + 'https://depot.galaxyproject.org/singularity/svdb:2.8.2--py39h5371cbf_0': + 'biocontainers/svdb:2.8.2--py39h5371cbf_0' }" input: tuple val(meta), path(vcf) diff --git a/modules/nf-core/svdb/query/tests/main.nf.test.snap b/modules/nf-core/svdb/query/tests/main.nf.test.snap index 22021d0a..65f2fcfa 100644 --- a/modules/nf-core/svdb/query/tests/main.nf.test.snap +++ b/modules/nf-core/svdb/query/tests/main.nf.test.snap @@ -4,27 +4,10 @@ "test_query.vcf", "versions.yml" ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, "timestamp": "2023-11-22T14:56:08.90223505" - }, - "versions": { - "content": [ - [ - "versions.yml:md5,e10873514a6dfc4ff377d645e7b3c9f5" - ] - ], - "timestamp": "2023-11-22T14:36:48.543666873" - }, - "vcf": { - "content": [ - [ - [ - { - "id": "test" - }, - "test_query.vcf:md5,a29542606323b2430ec52ffb5c4c7f5e" - ] - ] - ], - "timestamp": "2023-11-22T14:36:48.523155905" } } \ No newline at end of file diff --git a/modules/nf-core/tabix/bgzip/environment.yml b/modules/nf-core/tabix/bgzip/environment.yml index 56cc0fb1..017c259d 100644 --- a/modules/nf-core/tabix/bgzip/environment.yml +++ b/modules/nf-core/tabix/bgzip/environment.yml @@ -1,8 +1,7 @@ -name: tabix_bgzip channels: - conda-forge - bioconda - - defaults + dependencies: - - bioconda::tabix=1.11 - bioconda::htslib=1.20 + - bioconda::tabix=1.11 diff --git a/modules/nf-core/tabix/bgzip/meta.yml b/modules/nf-core/tabix/bgzip/meta.yml index 621d49ea..131e92cf 100644 --- a/modules/nf-core/tabix/bgzip/meta.yml +++ b/modules/nf-core/tabix/bgzip/meta.yml @@ -13,33 +13,42 @@ tools: documentation: http://www.htslib.org/doc/bgzip.html doi: 10.1093/bioinformatics/btp352 licence: ["MIT"] + identifier: biotools:tabix input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - input: - type: file - description: file to compress or to decompress + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - input: + type: file + description: file to compress or to decompress output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - output: - type: file - description: Output compressed/decompressed file - pattern: "*." + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - ${output}: + type: file + description: Output compressed/decompressed file + pattern: "*." - gzi: - type: file - description: Optional gzip index file for compressed inputs - pattern: "*.gzi" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - ${output}.gzi: + type: file + description: Optional gzip index file for compressed inputs + pattern: "*.gzi" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@joseespinosa" - "@drpatelh" diff --git a/modules/nf-core/tabix/bgziptabix/environment.yml b/modules/nf-core/tabix/bgziptabix/environment.yml index b9644de9..017c259d 100644 --- a/modules/nf-core/tabix/bgziptabix/environment.yml +++ b/modules/nf-core/tabix/bgziptabix/environment.yml @@ -1,8 +1,7 @@ -name: tabix_bgziptabix channels: - conda-forge - bioconda - - defaults + dependencies: - - bioconda::tabix=1.11 - bioconda::htslib=1.20 + - bioconda::tabix=1.11 diff --git a/modules/nf-core/tabix/bgziptabix/main.nf b/modules/nf-core/tabix/bgziptabix/main.nf index 05041f49..22f37a77 100644 --- a/modules/nf-core/tabix/bgziptabix/main.nf +++ b/modules/nf-core/tabix/bgziptabix/main.nf @@ -34,10 +34,11 @@ process TABIX_BGZIPTABIX { stub: def prefix = task.ext.prefix ?: "${meta.id}" + def args2 = task.ext.args2 ?: '' + def index = args2.contains("-C ") || args2.contains("--csi") ? "csi" : "tbi" """ echo "" | gzip > ${prefix}.${input.getExtension()}.gz - touch ${prefix}.${input.getExtension()}.gz.tbi - touch ${prefix}.${input.getExtension()}.gz.csi + touch ${prefix}.${input.getExtension()}.gz.${index} cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/tabix/bgziptabix/meta.yml b/modules/nf-core/tabix/bgziptabix/meta.yml index 438aba4d..806fbc12 100644 --- a/modules/nf-core/tabix/bgziptabix/meta.yml +++ b/modules/nf-core/tabix/bgziptabix/meta.yml @@ -13,38 +13,50 @@ tools: documentation: https://www.htslib.org/doc/tabix.1.html doi: 10.1093/bioinformatics/btq671 licence: ["MIT"] + identifier: biotools:tabix input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - tab: - type: file - description: TAB-delimited genome position file - pattern: "*.{bed,gff,sam,vcf}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - input: + type: file + description: Sorted tab-delimited genome file output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - gz: - type: file - description: Output compressed file - pattern: "*.{gz}" - - tbi: - type: file - description: tabix index file - pattern: "*.{gz.tbi}" - - csi: - type: file - description: tabix alternate index file - pattern: "*.{gz.csi}" + - gz_tbi: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.gz": + type: file + description: bgzipped tab-delimited genome file + pattern: "*.gz" + - "*.tbi": + type: file + description: tabix index file + pattern: "*.tbi" + - gz_csi: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.gz": + type: file + description: bgzipped tab-delimited genome file + pattern: "*.gz" + - "*.csi": + type: file + description: csi index file + pattern: "*.csi" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@maxulysse" - "@DLBPointon" diff --git a/modules/nf-core/tabix/bgziptabix/tests/main.nf.test b/modules/nf-core/tabix/bgziptabix/tests/main.nf.test index 1a84d74f..4d4130dc 100644 --- a/modules/nf-core/tabix/bgziptabix/tests/main.nf.test +++ b/modules/nf-core/tabix/bgziptabix/tests/main.nf.test @@ -91,4 +91,33 @@ nextflow_process { } + test("sarscov2_bed_tbi_stub") { + config "./tabix_tbi.config" + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test' ], + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test.bed', checkIfExists: true) ] + ] + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out).match() }, + { assert snapshot( + file(process.out.gz_tbi[0][1]).name + ).match("tbi_stub") + } + ) + } + + } + } diff --git a/modules/nf-core/tabix/bgziptabix/tests/main.nf.test.snap b/modules/nf-core/tabix/bgziptabix/tests/main.nf.test.snap index c166ea72..fb87799b 100644 --- a/modules/nf-core/tabix/bgziptabix/tests/main.nf.test.snap +++ b/modules/nf-core/tabix/bgziptabix/tests/main.nf.test.snap @@ -91,6 +91,47 @@ }, "timestamp": "2024-02-19T14:51:00.548801" }, + "sarscov2_bed_tbi_stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.bed.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test.bed.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + + ], + "2": [ + "versions.yml:md5,736e7c3b16a3ac525253e5b5f5d8fdfa" + ], + "gz_csi": [ + + ], + "gz_tbi": [ + [ + { + "id": "test" + }, + "test.bed.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test.bed.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,736e7c3b16a3ac525253e5b5f5d8fdfa" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-25T14:45:18.533169949" + }, "csi_stub": { "content": [ "test.bed.gz" @@ -101,6 +142,16 @@ }, "timestamp": "2024-02-19T14:51:09.218454" }, + "tbi_stub": { + "content": [ + "test.bed.gz" + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-25T14:45:18.550930179" + }, "tbi_test": { "content": [ "tbi_test.bed.gz" @@ -115,13 +166,7 @@ "content": [ { "0": [ - [ - { - "id": "test" - }, - "test.bed.gz:md5,68b329da9893e34099c7d8ad5cb9c940", - "test.bed.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + ], "1": [ [ @@ -145,13 +190,7 @@ ] ], "gz_tbi": [ - [ - { - "id": "test" - }, - "test.bed.gz:md5,68b329da9893e34099c7d8ad5cb9c940", - "test.bed.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + ], "versions": [ "versions.yml:md5,736e7c3b16a3ac525253e5b5f5d8fdfa" @@ -159,9 +198,9 @@ } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-07-19T11:29:45.105209991" + "timestamp": "2024-09-25T14:44:19.786135972" } } \ No newline at end of file diff --git a/modules/nf-core/tabix/tabix/environment.yml b/modules/nf-core/tabix/tabix/environment.yml index 4d1f9dd4..017c259d 100644 --- a/modules/nf-core/tabix/tabix/environment.yml +++ b/modules/nf-core/tabix/tabix/environment.yml @@ -1,9 +1,6 @@ -name: tabix_tabix - channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::htslib=1.20 diff --git a/modules/nf-core/tabix/tabix/meta.yml b/modules/nf-core/tabix/tabix/meta.yml index ae5b4f43..7864832d 100644 --- a/modules/nf-core/tabix/tabix/meta.yml +++ b/modules/nf-core/tabix/tabix/meta.yml @@ -11,34 +11,43 @@ tools: documentation: https://www.htslib.org/doc/tabix.1.html doi: 10.1093/bioinformatics/btq671 licence: ["MIT"] + identifier: biotools:tabix input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - tab: - type: file - description: TAB-delimited genome position file compressed with bgzip - pattern: "*.{bed.gz,gff.gz,sam.gz,vcf.gz}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - tab: + type: file + description: TAB-delimited genome position file compressed with bgzip + pattern: "*.{bed.gz,gff.gz,sam.gz,vcf.gz}" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - tbi: - type: file - description: tabix index file - pattern: "*.{tbi}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.tbi": + type: file + description: tabix index file + pattern: "*.{tbi}" - csi: - type: file - description: coordinate sorted index file - pattern: "*.{csi}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.csi": + type: file + description: coordinate sorted index file + pattern: "*.{csi}" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@joseespinosa" - "@drpatelh" diff --git a/subworkflows/local/annotate_svs/tests/main.nf.test.snap b/subworkflows/local/annotate_svs/tests/main.nf.test.snap index c56c9824..c39dd47a 100644 --- a/subworkflows/local/annotate_svs/tests/main.nf.test.snap +++ b/subworkflows/local/annotate_svs/tests/main.nf.test.snap @@ -4,21 +4,21 @@ [ "versions.yml:md5,84c59e3a0a183b01a21620b16ee9ca4d", "versions.yml:md5,8b626b9e41c9e6de6edc8f94e0e75aed", - "versions.yml:md5,cb83982d3231b281882f4ddc478d93ae" + "versions.yml:md5,d2a9a640a711b2d559e13f9bca9d7a3b" ] ], "meta": { "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-11T10:47:43.954466231" + "timestamp": "2024-11-04T16:18:47.369135866" }, "severus, fasta, svdb, vep_cache, '110', vep_plugins": { "content": [ [ "versions.yml:md5,84c59e3a0a183b01a21620b16ee9ca4d", "versions.yml:md5,8b626b9e41c9e6de6edc8f94e0e75aed", - "versions.yml:md5,cb83982d3231b281882f4ddc478d93ae" + "versions.yml:md5,d2a9a640a711b2d559e13f9bca9d7a3b" ], "28e9be031273d5e4a94a8654da6e56ed", "test_svs_cnvs_merged_annotated.vcf.gz.tbi" @@ -27,6 +27,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-28T18:04:07.763426107" + "timestamp": "2024-11-04T16:18:35.246526033" } } \ No newline at end of file diff --git a/subworkflows/local/call_cnvs/tests/main.nf.test b/subworkflows/local/call_cnvs/tests/main.nf.test index ad618567..3341f7c2 100644 --- a/subworkflows/local/call_cnvs/tests/main.nf.test +++ b/subworkflows/local/call_cnvs/tests/main.nf.test @@ -43,8 +43,8 @@ nextflow_workflow { """ } } - run("DEEPVARIANT") { - script "../../../../modules/nf-core/deepvariant/main.nf" + run("DEEPVARIANT_RUNDEEPVARIANT") { + script "../../../../modules/nf-core/deepvariant/rundeepvariant/main.nf" process { """ input[0] = MINIMAP2_ALIGN.out.bam @@ -99,7 +99,7 @@ nextflow_workflow { """ input[0] = MINIMAP2_ALIGN.out.bam .join(MINIMAP2_ALIGN.out.index) - .join(DEEPVARIANT.out.vcf) + .join(DEEPVARIANT_RUNDEEPVARIANT.out.vcf) input[1] = GUNZIP.out.gunzip input[2] = [[],[]] input[3] = [[],[]] @@ -131,7 +131,7 @@ nextflow_workflow { """ input[0] = MINIMAP2_ALIGN.out.bam .join(MINIMAP2_ALIGN.out.index) - .join(DEEPVARIANT.out.vcf) + .join(DEEPVARIANT_RUNDEEPVARIANT.out.vcf) input[1] = GUNZIP.out.gunzip input[2] = [ [ id: 'xy_bed' ], @@ -200,7 +200,7 @@ nextflow_workflow { """ input[0] = MINIMAP2_ALIGN.out.bam .join(MINIMAP2_ALIGN.out.index) - .join(DEEPVARIANT.out.vcf) + .join(DEEPVARIANT_RUNDEEPVARIANT.out.vcf) input[1] = GUNZIP.out.gunzip input[2] = [[],[]] input[3] = [[],[]] @@ -226,7 +226,7 @@ nextflow_workflow { """ input[0] = MINIMAP2_ALIGN.out.bam .join(MINIMAP2_ALIGN.out.index) - .join(DEEPVARIANT.out.vcf) + .join(DEEPVARIANT_RUNDEEPVARIANT.out.vcf) input[1] = GUNZIP.out.gunzip input[2] = [ [ id: 'xy_bed' ], diff --git a/subworkflows/local/call_cnvs/tests/nextflow.config b/subworkflows/local/call_cnvs/tests/nextflow.config index 8b89208c..d5ce57da 100644 --- a/subworkflows/local/call_cnvs/tests/nextflow.config +++ b/subworkflows/local/call_cnvs/tests/nextflow.config @@ -2,7 +2,7 @@ process { withName: 'MINIMAP2_ALIGN' { ext.args = '-x map-hifi' } - withName: 'DEEPVARIANT' { + withName: 'DEEPVARIANT_RUNDEEPVARIANT' { ext.args = '--model_type PACBIO' } withName: 'CALL_CNVS:HIFICNV' { diff --git a/subworkflows/local/call_repeat_expansions/tests/main.nf.test.snap b/subworkflows/local/call_repeat_expansions/tests/main.nf.test.snap index 768fb131..196b8825 100644 --- a/subworkflows/local/call_repeat_expansions/tests/main.nf.test.snap +++ b/subworkflows/local/call_repeat_expansions/tests/main.nf.test.snap @@ -6,17 +6,17 @@ "65999ab8f2bc7841de8172468bf23ab6", [ "versions.yml:md5,52272b464e62cb9e5d41622ea76cd070", - "versions.yml:md5,6576546ea5cf2a0cb6438b4c6758fd1e", + "versions.yml:md5,78d86f9ddc871705ca029444a498322f", "versions.yml:md5,799b136592e7434ff7eb9ddcc70e7e41", - "versions.yml:md5,8a4b29c3089d4b00cfe6c5c39b88d1ab", - "versions.yml:md5,b9424dde80b33e84164cc956a14aa459" + "versions.yml:md5,b9424dde80b33e84164cc956a14aa459", + "versions.yml:md5,d7098c270381ae9c3c54fd4224f50206" ] ], "meta": { "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-29T10:47:08.425030144" + "timestamp": "2024-11-04T16:23:30.11542862" }, "[bam, bai], fasta, fai, bed - stub": { "content": [ @@ -64,10 +64,10 @@ ], "4": [ "versions.yml:md5,52272b464e62cb9e5d41622ea76cd070", - "versions.yml:md5,6576546ea5cf2a0cb6438b4c6758fd1e", + "versions.yml:md5,78d86f9ddc871705ca029444a498322f", "versions.yml:md5,799b136592e7434ff7eb9ddcc70e7e41", - "versions.yml:md5,8a4b29c3089d4b00cfe6c5c39b88d1ab", - "versions.yml:md5,b9424dde80b33e84164cc956a14aa459" + "versions.yml:md5,b9424dde80b33e84164cc956a14aa459", + "versions.yml:md5,d7098c270381ae9c3c54fd4224f50206" ], "project_vcf": [ [ @@ -112,10 +112,10 @@ ], "versions": [ "versions.yml:md5,52272b464e62cb9e5d41622ea76cd070", - "versions.yml:md5,6576546ea5cf2a0cb6438b4c6758fd1e", + "versions.yml:md5,78d86f9ddc871705ca029444a498322f", "versions.yml:md5,799b136592e7434ff7eb9ddcc70e7e41", - "versions.yml:md5,8a4b29c3089d4b00cfe6c5c39b88d1ab", - "versions.yml:md5,b9424dde80b33e84164cc956a14aa459" + "versions.yml:md5,b9424dde80b33e84164cc956a14aa459", + "versions.yml:md5,d7098c270381ae9c3c54fd4224f50206" ] } ], @@ -123,6 +123,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-30T11:00:04.845039812" + "timestamp": "2024-11-04T16:23:42.483750233" } -} \ No newline at end of file +} diff --git a/subworkflows/local/methylation/tests/nextflow.config b/subworkflows/local/methylation/tests/nextflow.config index 45b920fe..b977ef2a 100644 --- a/subworkflows/local/methylation/tests/nextflow.config +++ b/subworkflows/local/methylation/tests/nextflow.config @@ -5,7 +5,7 @@ params { process { - withName: 'SHORT_VARIANT_CALLING:DEEPVARIANT' { + withName: 'SHORT_VARIANT_CALLING:DEEPVARIANT_RUNDEEPVARIANT' { ext.args = { [ '--model_type PACBIO', "--sample_name=${meta.id}", diff --git a/subworkflows/local/rank_variants/tests/nextflow.config b/subworkflows/local/rank_variants/tests/nextflow.config index 3c7e24d0..60f0bcf9 100644 --- a/subworkflows/local/rank_variants/tests/nextflow.config +++ b/subworkflows/local/rank_variants/tests/nextflow.config @@ -4,7 +4,7 @@ process { ext.prefix = { "${name}".contains('merged') ? './vep_cache/homo_sapiens_merged/' : './vep_cache/homo_sapiens/' } } - withName: 'SHORT_VARIANT_CALLING:DEEPVARIANT' { + withName: 'SHORT_VARIANT_CALLING:DEEPVARIANT_RUNDEEPVARIANT' { ext.prefix = { intervals ? "${meta.id}_${intervals}_deepvariant" : "${meta.id}_deepvariant" } ext.args = { [ '--model_type WGS', diff --git a/subworkflows/local/short_variant_calling/main.nf b/subworkflows/local/short_variant_calling/main.nf index c155ac14..d7183dca 100644 --- a/subworkflows/local/short_variant_calling/main.nf +++ b/subworkflows/local/short_variant_calling/main.nf @@ -6,7 +6,7 @@ include { BCFTOOLS_CONCAT } from '../../../modules/n include { BCFTOOLS_FILLTAGS } from '../../../modules/local/bcftools/filltags/main' include { BCFTOOLS_NORM as BCFTOOLS_NORM_MULTISAMPLE } from '../../../modules/nf-core/bcftools/norm/main' include { BCFTOOLS_NORM as BCFTOOLS_NORM_SINGLESAMPLE } from '../../../modules/nf-core/bcftools/norm/main' -include { DEEPVARIANT } from '../../../modules/nf-core/deepvariant/main' +include { DEEPVARIANT_RUNDEEPVARIANT } from '../../../modules/nf-core/deepvariant/rundeepvariant/main' include { DEEPVARIANT_VCFSTATSREPORT } from '../../../modules/nf-core/deepvariant/vcfstatsreport/main' include { GLNEXUS } from '../../../modules/nf-core/glnexus/main' @@ -29,18 +29,18 @@ workflow SHORT_VARIANT_CALLING { } .set { ch_deepvariant_in } - DEEPVARIANT ( ch_deepvariant_in, ch_fasta, ch_fai, [[],[]], ch_par_bed ) - ch_versions = ch_versions.mix(DEEPVARIANT.out.versions) + DEEPVARIANT_RUNDEEPVARIANT ( ch_deepvariant_in, ch_fasta, ch_fai, [[],[]], ch_par_bed ) + ch_versions = ch_versions.mix(DEEPVARIANT_RUNDEEPVARIANT.out.versions) // First remove region so we can group per sample // Then after grouping remove num_intervals since to match the meta of other workflows - DEEPVARIANT.out.vcf + DEEPVARIANT_RUNDEEPVARIANT.out.vcf .map { meta, vcf -> new_meta = meta - meta.subMap('region') [ groupKey(new_meta, new_meta.num_intervals ), vcf ] } .groupTuple() - .join( DEEPVARIANT.out.vcf_tbi + .join( DEEPVARIANT_RUNDEEPVARIANT.out.vcf_tbi .map{ meta, tbi -> new_meta = meta - meta.subMap('region') [ groupKey(new_meta, new_meta.num_intervals ), tbi ] @@ -62,7 +62,7 @@ workflow SHORT_VARIANT_CALLING { ch_versions = ch_versions.mix(BCFTOOLS_NORM_SINGLESAMPLE.out.versions) // This creates a multisample VCF, with regions from ONE bed file - DEEPVARIANT.out.gvcf + DEEPVARIANT_RUNDEEPVARIANT.out.gvcf .map { meta, gvcf -> [ meta.region.name, meta.project, meta.phenotype == 2, gvcf ] } diff --git a/subworkflows/local/short_variant_calling/tests/main.nf.test.snap b/subworkflows/local/short_variant_calling/tests/main.nf.test.snap index d084a601..9e8570ee 100644 --- a/subworkflows/local/short_variant_calling/tests/main.nf.test.snap +++ b/subworkflows/local/short_variant_calling/tests/main.nf.test.snap @@ -51,12 +51,12 @@ ], "5": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ], "combined_bcf": [ @@ -108,12 +108,12 @@ ], "versions": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ] } @@ -122,7 +122,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-29T16:07:40.986337827" + "timestamp": "2024-11-04T16:32:32.7841728" }, "1 sample - 2 bed, fasta, fai, bed, [] - stub": { "content": [ @@ -193,8 +193,6 @@ "5": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", @@ -203,6 +201,8 @@ "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ], "combined_bcf": [ @@ -271,8 +271,6 @@ "versions": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", @@ -281,6 +279,8 @@ "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ] } @@ -289,7 +289,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-29T16:10:40.730903286" + "timestamp": "2024-11-04T16:36:05.888336005" }, "1 sample - 1 bed, fasta, fai, bed, []": { "content": [ @@ -343,12 +343,12 @@ ], "5": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ], "combined_bcf": [ @@ -400,12 +400,12 @@ ], "versions": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ] } @@ -414,7 +414,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-29T16:08:11.306771116" + "timestamp": "2024-11-04T16:33:12.370911679" }, "2 samples - 2 bed, fasta, fai, bed, par_bed": { "content": [ @@ -506,10 +506,6 @@ "5": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", @@ -520,6 +516,10 @@ "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ], @@ -610,10 +610,6 @@ "versions": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", @@ -624,6 +620,10 @@ "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ] @@ -633,7 +633,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-29T16:09:53.140402914" + "timestamp": "2024-11-04T16:35:11.690919461" }, "2 samples - 2 bed, fasta, fai, bed, [] - stub": { "content": [ @@ -725,10 +725,6 @@ "5": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", @@ -739,6 +735,10 @@ "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ], @@ -829,10 +829,6 @@ "versions": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", @@ -843,6 +839,10 @@ "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ] @@ -852,7 +852,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-29T16:10:54.089846948" + "timestamp": "2024-11-04T16:36:19.778517029" }, "2 samples - 2 bed, fasta, fai, bed, par_bed - stub": { "content": [ @@ -944,10 +944,6 @@ "5": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", @@ -958,6 +954,10 @@ "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ], @@ -1048,10 +1048,6 @@ "versions": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", @@ -1062,6 +1058,10 @@ "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ] @@ -1071,7 +1071,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-29T16:11:07.961520037" + "timestamp": "2024-11-04T16:36:33.89917989" }, "1 sample - 1 bed, fasta, fai, bed, [] - stub": { "content": [ @@ -1125,12 +1125,12 @@ ], "5": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ], "combined_bcf": [ @@ -1182,12 +1182,12 @@ ], "versions": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ] } @@ -1196,7 +1196,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-29T16:10:27.465086494" + "timestamp": "2024-11-04T16:35:53.449459889" }, "1 sample - no bed, fasta, fai, [], []": { "content": [ @@ -1254,12 +1254,12 @@ ], "5": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ], "combined_bcf": [ @@ -1315,12 +1315,12 @@ ], "versions": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ] } @@ -1329,7 +1329,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-29T16:07:10.788542987" + "timestamp": "2024-11-04T16:31:59.210062583" }, "1 sample - 2 bed, fasta, fai, bed, []": { "content": [ @@ -1400,8 +1400,6 @@ "5": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", @@ -1410,6 +1408,8 @@ "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ], "combined_bcf": [ @@ -1478,8 +1478,6 @@ "versions": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", @@ -1488,6 +1486,8 @@ "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ] } @@ -1496,7 +1496,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-29T16:08:43.412821579" + "timestamp": "2024-11-04T16:33:50.391467443" }, "2 samples - 2 bed, fasta, fai, bed, []": { "content": [ @@ -1588,10 +1588,6 @@ "5": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", @@ -1602,6 +1598,10 @@ "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ], @@ -1692,10 +1692,6 @@ "versions": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", @@ -1706,6 +1702,10 @@ "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ] @@ -1715,7 +1715,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-29T16:09:18.071239185" + "timestamp": "2024-11-04T16:34:29.736634447" }, "1 sample - no bed, fasta, fai, [], [] - stub": { "content": [ @@ -1773,12 +1773,12 @@ ], "5": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ], "combined_bcf": [ @@ -1834,12 +1834,12 @@ ], "versions": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ] } @@ -1848,7 +1848,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-29T16:10:04.450948339" + "timestamp": "2024-11-04T16:35:27.990658402" }, "1 sample - 1 bed, fasta, fai, [], [] - stub": { "content": [ @@ -1902,12 +1902,12 @@ ], "5": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ], "combined_bcf": [ @@ -1959,12 +1959,12 @@ ], "versions": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ] } @@ -1973,6 +1973,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-29T16:10:15.936988344" + "timestamp": "2024-11-04T16:35:41.50464501" } } \ No newline at end of file diff --git a/subworkflows/local/short_variant_calling/tests/nextflow.config b/subworkflows/local/short_variant_calling/tests/nextflow.config index 613c9e07..2b85525c 100644 --- a/subworkflows/local/short_variant_calling/tests/nextflow.config +++ b/subworkflows/local/short_variant_calling/tests/nextflow.config @@ -1,5 +1,5 @@ process { - withName: 'SHORT_VARIANT_CALLING:DEEPVARIANT' { + withName: 'SHORT_VARIANT_CALLING:DEEPVARIANT_RUNDEEPVARIANT' { ext.prefix = { intervals ? "${meta.id}_${intervals}_deepvariant" : "${meta.id}_deepvariant" } ext.args = { [ '--model_type WGS', diff --git a/subworkflows/local/snv_annotation/tests/nextflow.config b/subworkflows/local/snv_annotation/tests/nextflow.config index 746f9c59..62fc7b69 100644 --- a/subworkflows/local/snv_annotation/tests/nextflow.config +++ b/subworkflows/local/snv_annotation/tests/nextflow.config @@ -1,5 +1,5 @@ process { - withName: 'DEEPVARIANT' { + withName: 'DEEPVARIANT_RUNDEEPVARIANT' { ext.prefix = { intervals ? "${meta.id}_${intervals}_deepvariant" : "${meta.id}_deepvariant" } ext.args = { [ '--model_type WGS', diff --git a/subworkflows/nf-core/utils_nextflow_pipeline/main.nf b/subworkflows/nf-core/utils_nextflow_pipeline/main.nf index 2b0dc67a..0fcbf7b3 100644 --- a/subworkflows/nf-core/utils_nextflow_pipeline/main.nf +++ b/subworkflows/nf-core/utils_nextflow_pipeline/main.nf @@ -3,9 +3,9 @@ // /* -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SUBWORKFLOW DEFINITION -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ workflow UTILS_NEXTFLOW_PIPELINE { @@ -44,9 +44,9 @@ workflow UTILS_NEXTFLOW_PIPELINE { } /* -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ FUNCTIONS -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ // @@ -106,17 +106,19 @@ def checkCondaChannels() { def channels_missing = ((required_channels_in_order as Set) - (channels as Set)) as Boolean // Check that they are in the right order - def channel_priority_violation = false - - required_channels_in_order.eachWithIndex { channel, index -> - if (index < required_channels_in_order.size() - 1) { - channel_priority_violation |= !(channels.indexOf(channel) < channels.indexOf(required_channels_in_order[index + 1])) - } - } + def channel_priority_violation = required_channels_in_order != channels.findAll { ch -> ch in required_channels_in_order } if (channels_missing | channel_priority_violation) { - log.warn( - "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" + " There is a problem with your Conda configuration!\n\n" + " You will need to set-up the conda-forge and bioconda channels correctly.\n" + " Please refer to https://bioconda.github.io/\n" + " The observed channel order is \n" + " ${channels}\n" + " but the following channel order is required:\n" + " ${required_channels_in_order}\n" + "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" - ) + log.warn """\ + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + There is a problem with your Conda configuration! + You will need to set-up the conda-forge and bioconda channels correctly. + Please refer to https://bioconda.github.io/ + The observed channel order is + ${channels} + but the following channel order is required: + ${required_channels_in_order} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" + """.stripIndent(true) } } diff --git a/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.workflow.nf.test b/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.workflow.nf.test index ca964ce8..02dbf094 100644 --- a/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.workflow.nf.test +++ b/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.workflow.nf.test @@ -52,10 +52,12 @@ nextflow_workflow { } then { - assertAll( - { assert workflow.success }, - { assert workflow.stdout.contains("nextflow_workflow v9.9.9") } - ) + expect { + with(workflow) { + assert success + assert "nextflow_workflow v9.9.9" in stdout + } + } } } diff --git a/subworkflows/nf-core/utils_nfschema_plugin/tests/main.nf.test b/subworkflows/nf-core/utils_nfschema_plugin/tests/main.nf.test index 842dc432..8fb30164 100644 --- a/subworkflows/nf-core/utils_nfschema_plugin/tests/main.nf.test +++ b/subworkflows/nf-core/utils_nfschema_plugin/tests/main.nf.test @@ -42,7 +42,7 @@ nextflow_workflow { params { test_data = '' - outdir = 1 + outdir = null } workflow { @@ -94,7 +94,7 @@ nextflow_workflow { params { test_data = '' - outdir = 1 + outdir = null } workflow { diff --git a/tests/.nftignore b/tests/.nftignore index 0999bb4a..827e5c29 100644 --- a/tests/.nftignore +++ b/tests/.nftignore @@ -4,7 +4,13 @@ multiqc/multiqc_data/multiqc.log multiqc/multiqc_data/multiqc_data.json multiqc/multiqc_data/multiqc_software_versions.txt multiqc/multiqc_data/multiqc_somalier.txt +multiqc/multiqc_data/somalier_*_plot.txt multiqc/multiqc_data/multiqc_sources.txt +multiqc/multiqc_data/bcftools_stats_vqc_Count_Transversions.txt +multiqc/multiqc_data/bcftools_stats_vqc_Count_Transitions.txt +multiqc/multiqc_data/bcftools_stats_vqc_Count_SNP.txt +multiqc/multiqc_data/bcftools_stats_vqc_Count_Indels.txt +multiqc/multiqc_plots/**/*.{pdf,svg,txt,png} multiqc/multiqc_report.html paraphase/**/*.{vcf.gz,tbi,bam,bai,json} phased_variants/**/*.{vcf.gz,tbi} diff --git a/tests/samplesheet.nf.test.snap b/tests/samplesheet.nf.test.snap index 9e77b8bc..c2e1374c 100644 --- a/tests/samplesheet.nf.test.snap +++ b/tests/samplesheet.nf.test.snap @@ -69,7 +69,7 @@ "CREATE_SAMPLES_FILE": { "gawk": "5.1.0" }, - "DEEPVARIANT": { + "DEEPVARIANT_RUNDEEPVARIANT": { "deepvariant": "1.6.1" }, "DEEPVARIANT_VCFSTATSREPORT": { @@ -155,25 +155,25 @@ "python": "3.8.3" }, "SAMTOOLS_FAIDX": { - "samtools": 1.2 + "samtools": 1.21 }, "SAMTOOLS_IMPORT": { - "samtools": 1.2 + "samtools": 1.21 }, "SAMTOOLS_INDEX_DIPCALL": { - "samtools": 1.2 + "samtools": 1.21 }, "SAMTOOLS_INDEX_LONGPHASE": { - "samtools": 1.2 + "samtools": 1.21 }, "SAMTOOLS_INDEX_TRGT": { - "samtools": 1.2 + "samtools": 1.21 }, "SAMTOOLS_MERGE": { - "samtools": 1.2 + "samtools": 1.21 }, "SAMTOOLS_SORT_TRGT": { - "samtools": 1.2 + "samtools": 1.21 }, "SEVERUS": { "severus": 1.1 @@ -196,7 +196,7 @@ "split_bed_chunks": 1.0 }, "STRANGER": { - "stranger": "0.9.1" + "stranger": "0.9.2" }, "SVDB_MERGE": { "svdb": "2.8.2", @@ -281,6 +281,25 @@ "methylation/modkit/pileup/HG002_Revio/HG002_Revio_modkit_pileup_ungrouped.bed.gz.tbi", "multiqc", "multiqc/multiqc_data", + "multiqc/multiqc_data/bcftools-stats-subtypes.txt", + "multiqc/multiqc_data/bcftools_stats_indel-lengths.txt", + "multiqc/multiqc_data/bcftools_stats_vqc_Count_Indels.txt", + "multiqc/multiqc_data/bcftools_stats_vqc_Count_SNP.txt", + "multiqc/multiqc_data/bcftools_stats_vqc_Count_Transitions.txt", + "multiqc/multiqc_data/bcftools_stats_vqc_Count_Transversions.txt", + "multiqc/multiqc_data/fastqc-status-check-heatmap.txt", + "multiqc/multiqc_data/fastqc_adapter_content_plot.txt", + "multiqc/multiqc_data/fastqc_per_base_n_content_plot.txt", + "multiqc/multiqc_data/fastqc_per_base_sequence_quality_plot.txt", + "multiqc/multiqc_data/fastqc_per_sequence_gc_content_plot_Counts.txt", + "multiqc/multiqc_data/fastqc_per_sequence_gc_content_plot_Percentages.txt", + "multiqc/multiqc_data/fastqc_per_sequence_quality_scores_plot.txt", + "multiqc/multiqc_data/fastqc_sequence_counts_plot.txt", + "multiqc/multiqc_data/fastqc_sequence_duplication_levels_plot.txt", + "multiqc/multiqc_data/fastqc_sequence_length_distribution_plot.txt", + "multiqc/multiqc_data/fastqc_top_overrepresented_sequences_table.txt", + "multiqc/multiqc_data/mosdepth-coverage-per-contig-multi.txt", + "multiqc/multiqc_data/mosdepth-cumcoverage-dist-id.txt", "multiqc/multiqc_data/mosdepth_cov_dist.txt", "multiqc/multiqc_data/mosdepth_cumcov_dist.txt", "multiqc/multiqc_data/mosdepth_perchrom.txt", @@ -293,8 +312,97 @@ "multiqc/multiqc_data/multiqc_software_versions.txt", "multiqc/multiqc_data/multiqc_somalier.txt", "multiqc/multiqc_data/multiqc_sources.txt", + "multiqc/multiqc_data/multiqc_whatshap_phased_bp_plot.txt", "multiqc/multiqc_data/multiqc_whatshap_stats.txt", + "multiqc/multiqc_data/somalier_het_check_plot.txt", + "multiqc/multiqc_data/somalier_sex_check_plot.txt", + "multiqc/multiqc_data/somalier_stats.txt", + "multiqc/multiqc_data/whatshap-stats-table.txt", "multiqc/multiqc_plots", + "multiqc/multiqc_plots/pdf", + "multiqc/multiqc_plots/pdf/bcftools-stats-subtypes-cnt.pdf", + "multiqc/multiqc_plots/pdf/bcftools-stats-subtypes-pct.pdf", + "multiqc/multiqc_plots/pdf/bcftools_stats_indel-lengths.pdf", + "multiqc/multiqc_plots/pdf/bcftools_stats_vqc_Count_Indels.pdf", + "multiqc/multiqc_plots/pdf/bcftools_stats_vqc_Count_SNP.pdf", + "multiqc/multiqc_plots/pdf/bcftools_stats_vqc_Count_Transitions.pdf", + "multiqc/multiqc_plots/pdf/bcftools_stats_vqc_Count_Transversions.pdf", + "multiqc/multiqc_plots/pdf/fastqc-status-check-heatmap.pdf", + "multiqc/multiqc_plots/pdf/fastqc_adapter_content_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc_per_base_n_content_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc_per_base_sequence_quality_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc_per_sequence_gc_content_plot_Counts.pdf", + "multiqc/multiqc_plots/pdf/fastqc_per_sequence_gc_content_plot_Percentages.pdf", + "multiqc/multiqc_plots/pdf/fastqc_per_sequence_quality_scores_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc_sequence_counts_plot-cnt.pdf", + "multiqc/multiqc_plots/pdf/fastqc_sequence_counts_plot-pct.pdf", + "multiqc/multiqc_plots/pdf/fastqc_sequence_duplication_levels_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc_sequence_length_distribution_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc_top_overrepresented_sequences_table.pdf", + "multiqc/multiqc_plots/pdf/general_stats_table.pdf", + "multiqc/multiqc_plots/pdf/mosdepth-coverage-per-contig-multi-cnt.pdf", + "multiqc/multiqc_plots/pdf/mosdepth-coverage-per-contig-multi-log.pdf", + "multiqc/multiqc_plots/pdf/mosdepth-cumcoverage-dist-id.pdf", + "multiqc/multiqc_plots/pdf/multiqc_whatshap_phased_bp_plot.pdf", + "multiqc/multiqc_plots/pdf/somalier_het_check_plot.pdf", + "multiqc/multiqc_plots/pdf/somalier_sex_check_plot.pdf", + "multiqc/multiqc_plots/pdf/whatshap-stats-table.pdf", + "multiqc/multiqc_plots/png", + "multiqc/multiqc_plots/png/bcftools-stats-subtypes-cnt.png", + "multiqc/multiqc_plots/png/bcftools-stats-subtypes-pct.png", + "multiqc/multiqc_plots/png/bcftools_stats_indel-lengths.png", + "multiqc/multiqc_plots/png/bcftools_stats_vqc_Count_Indels.png", + "multiqc/multiqc_plots/png/bcftools_stats_vqc_Count_SNP.png", + "multiqc/multiqc_plots/png/bcftools_stats_vqc_Count_Transitions.png", + "multiqc/multiqc_plots/png/bcftools_stats_vqc_Count_Transversions.png", + "multiqc/multiqc_plots/png/fastqc-status-check-heatmap.png", + "multiqc/multiqc_plots/png/fastqc_adapter_content_plot.png", + "multiqc/multiqc_plots/png/fastqc_per_base_n_content_plot.png", + "multiqc/multiqc_plots/png/fastqc_per_base_sequence_quality_plot.png", + "multiqc/multiqc_plots/png/fastqc_per_sequence_gc_content_plot_Counts.png", + "multiqc/multiqc_plots/png/fastqc_per_sequence_gc_content_plot_Percentages.png", + "multiqc/multiqc_plots/png/fastqc_per_sequence_quality_scores_plot.png", + "multiqc/multiqc_plots/png/fastqc_sequence_counts_plot-cnt.png", + "multiqc/multiqc_plots/png/fastqc_sequence_counts_plot-pct.png", + "multiqc/multiqc_plots/png/fastqc_sequence_duplication_levels_plot.png", + "multiqc/multiqc_plots/png/fastqc_sequence_length_distribution_plot.png", + "multiqc/multiqc_plots/png/fastqc_top_overrepresented_sequences_table.png", + "multiqc/multiqc_plots/png/general_stats_table.png", + "multiqc/multiqc_plots/png/mosdepth-coverage-per-contig-multi-cnt.png", + "multiqc/multiqc_plots/png/mosdepth-coverage-per-contig-multi-log.png", + "multiqc/multiqc_plots/png/mosdepth-cumcoverage-dist-id.png", + "multiqc/multiqc_plots/png/multiqc_whatshap_phased_bp_plot.png", + "multiqc/multiqc_plots/png/somalier_het_check_plot.png", + "multiqc/multiqc_plots/png/somalier_sex_check_plot.png", + "multiqc/multiqc_plots/png/whatshap-stats-table.png", + "multiqc/multiqc_plots/svg", + "multiqc/multiqc_plots/svg/bcftools-stats-subtypes-cnt.svg", + "multiqc/multiqc_plots/svg/bcftools-stats-subtypes-pct.svg", + "multiqc/multiqc_plots/svg/bcftools_stats_indel-lengths.svg", + "multiqc/multiqc_plots/svg/bcftools_stats_vqc_Count_Indels.svg", + "multiqc/multiqc_plots/svg/bcftools_stats_vqc_Count_SNP.svg", + "multiqc/multiqc_plots/svg/bcftools_stats_vqc_Count_Transitions.svg", + "multiqc/multiqc_plots/svg/bcftools_stats_vqc_Count_Transversions.svg", + "multiqc/multiqc_plots/svg/fastqc-status-check-heatmap.svg", + "multiqc/multiqc_plots/svg/fastqc_adapter_content_plot.svg", + "multiqc/multiqc_plots/svg/fastqc_per_base_n_content_plot.svg", + "multiqc/multiqc_plots/svg/fastqc_per_base_sequence_quality_plot.svg", + "multiqc/multiqc_plots/svg/fastqc_per_sequence_gc_content_plot_Counts.svg", + "multiqc/multiqc_plots/svg/fastqc_per_sequence_gc_content_plot_Percentages.svg", + "multiqc/multiqc_plots/svg/fastqc_per_sequence_quality_scores_plot.svg", + "multiqc/multiqc_plots/svg/fastqc_sequence_counts_plot-cnt.svg", + "multiqc/multiqc_plots/svg/fastqc_sequence_counts_plot-pct.svg", + "multiqc/multiqc_plots/svg/fastqc_sequence_duplication_levels_plot.svg", + "multiqc/multiqc_plots/svg/fastqc_sequence_length_distribution_plot.svg", + "multiqc/multiqc_plots/svg/fastqc_top_overrepresented_sequences_table.svg", + "multiqc/multiqc_plots/svg/general_stats_table.svg", + "multiqc/multiqc_plots/svg/mosdepth-coverage-per-contig-multi-cnt.svg", + "multiqc/multiqc_plots/svg/mosdepth-coverage-per-contig-multi-log.svg", + "multiqc/multiqc_plots/svg/mosdepth-cumcoverage-dist-id.svg", + "multiqc/multiqc_plots/svg/multiqc_whatshap_phased_bp_plot.svg", + "multiqc/multiqc_plots/svg/somalier_het_check_plot.svg", + "multiqc/multiqc_plots/svg/somalier_sex_check_plot.svg", + "multiqc/multiqc_plots/svg/whatshap-stats-table.svg", "multiqc/multiqc_report.html", "paraphase", "paraphase/HG002_Revio", @@ -422,14 +530,32 @@ "HG002_Revio_modkit_pileup_2.bed.gz.tbi:md5,2ad55c2f604cbdf6a784b2dd99b25cb1", "HG002_Revio_modkit_pileup_ungrouped.bed.gz:md5,04ee840c02e04238b9432bc374a1afe1", "HG002_Revio_modkit_pileup_ungrouped.bed.gz.tbi:md5,e1418c8075da8831a52e0cd56ceb910e", - "mosdepth_cov_dist.txt:md5,62011d1135dafcf05d7f6d5750d20c9f", + "bcftools-stats-subtypes.txt:md5,2c23b13117d584b4f424c2bc56dfa4ba", + "bcftools_stats_indel-lengths.txt:md5,bea599c38615af6a033ea3a4436d52c5", + "fastqc-status-check-heatmap.txt:md5,f98c3e5395cfd3061b3228a97ba86043", + "fastqc_adapter_content_plot.txt:md5,85e76640241ce1fd8e3bbf42eb3fa447", + "fastqc_per_base_n_content_plot.txt:md5,c9e46e2888289c319e1b9f412cb0d8e5", + "fastqc_per_base_sequence_quality_plot.txt:md5,6900fc0ad6d05cc49412c9a169473ea8", + "fastqc_per_sequence_gc_content_plot_Counts.txt:md5,4f7571e0b1ef7c917054325aff07d96f", + "fastqc_per_sequence_gc_content_plot_Percentages.txt:md5,70bb2678985be387db93805d5e9fbf2f", + "fastqc_per_sequence_quality_scores_plot.txt:md5,f45a447b91a80e8c6d69607057c828fa", + "fastqc_sequence_counts_plot.txt:md5,464423ea1a9c9db427b47df6f441c079", + "fastqc_sequence_duplication_levels_plot.txt:md5,3da083f3e5e3c37d8ba3d766c5ef2b85", + "fastqc_sequence_length_distribution_plot.txt:md5,014a4c2dbe604408e7b0c359252016f1", + "fastqc_top_overrepresented_sequences_table.txt:md5,21d4be95f2fc981c3f5f8fbe1855bf53", + "mosdepth-coverage-per-contig-multi.txt:md5,39f24c236ea9413f3835ddf24eea86a8", + "mosdepth-cumcoverage-dist-id.txt:md5,ae88f53eaadf28d333f1fbd490d38725", + "mosdepth_cov_dist.txt:md5,eeb7f82eb03344d26a99b6596a1c7413", "mosdepth_cumcov_dist.txt:md5,eeb7f82eb03344d26a99b6596a1c7413", "mosdepth_perchrom.txt:md5,53806d793d5627e60648daebb6606723", "multiqc_bcftools_stats.txt:md5,09a616618fb506994ce178d32325159f", "multiqc_citations.txt:md5,a27affce20d456d20ed387097a4f0350", - "multiqc_fastqc.txt:md5,f0717ca13d848aa8f5eaa5d0dba92178", - "multiqc_general_stats.txt:md5,c82b773e9d5ab3251280f3f03f35193a", + "multiqc_fastqc.txt:md5,8c0330b85e73f68610d35dd71f234cce", + "multiqc_general_stats.txt:md5,8ead46d7d8d14fc8892789a40193646f", + "multiqc_whatshap_phased_bp_plot.txt:md5,41dcd2951f7a6f925f64519491c18d45", "multiqc_whatshap_stats.txt:md5,c8c212ecc6fbf6803f8de87f2395363f", + "somalier_stats.txt:md5,150fa6b9c197c539947168c11d2115f9", + "whatshap-stats-table.txt:md5,c89df1fe6abe77dcbfce8e443c1cecde", "FAM.ped:md5,bd5cec27ba7337a85cf98e787131e2b5", "test.ped:md5,bd5cec27ba7337a85cf98e787131e2b5", "HG002_Revio_cramino_aligned_phased.arrow:md5,72df2934ff8aa7e1bf8cf8a4881a0d2a", @@ -544,6 +670,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-11-05T13:41:06.05402932" + "timestamp": "2024-11-06T10:59:47.782981349" } } \ No newline at end of file diff --git a/tests/samplesheet_multisample_bam.nf.test.snap b/tests/samplesheet_multisample_bam.nf.test.snap index 8c4a97ed..bd8ef294 100644 --- a/tests/samplesheet_multisample_bam.nf.test.snap +++ b/tests/samplesheet_multisample_bam.nf.test.snap @@ -69,7 +69,7 @@ "CREATE_SAMPLES_FILE": { "gawk": "5.1.0" }, - "DEEPVARIANT": { + "DEEPVARIANT_RUNDEEPVARIANT": { "deepvariant": "1.6.1" }, "DEEPVARIANT_VCFSTATSREPORT": { @@ -155,22 +155,22 @@ "python": "3.8.3" }, "SAMTOOLS_FAIDX": { - "samtools": 1.2 + "samtools": 1.21 }, "SAMTOOLS_FASTQ": { - "samtools": 1.2 + "samtools": 1.21 }, "SAMTOOLS_INDEX_DIPCALL": { - "samtools": 1.2 + "samtools": 1.21 }, "SAMTOOLS_INDEX_TRGT": { - "samtools": 1.2 + "samtools": 1.21 }, "SAMTOOLS_MERGE": { - "samtools": 1.2 + "samtools": 1.21 }, "SAMTOOLS_SORT_TRGT": { - "samtools": 1.2 + "samtools": 1.21 }, "SEVERUS": { "severus": 1.1 @@ -193,7 +193,7 @@ "split_bed_chunks": 1.0 }, "STRANGER": { - "stranger": "0.9.1" + "stranger": "0.9.2" }, "SVDB_MERGE": { "svdb": "2.8.2", @@ -306,6 +306,26 @@ "methylation/modkit/pileup/HG002_Revio_B/HG002_Revio_B_modkit_pileup_ungrouped.bed.gz.tbi", "multiqc", "multiqc/multiqc_data", + "multiqc/multiqc_data/bcftools-stats-subtypes.txt", + "multiqc/multiqc_data/bcftools_stats_indel-lengths.txt", + "multiqc/multiqc_data/bcftools_stats_vqc_Count_Indels.txt", + "multiqc/multiqc_data/bcftools_stats_vqc_Count_SNP.txt", + "multiqc/multiqc_data/bcftools_stats_vqc_Count_Transitions.txt", + "multiqc/multiqc_data/bcftools_stats_vqc_Count_Transversions.txt", + "multiqc/multiqc_data/fastqc-status-check-heatmap.txt", + "multiqc/multiqc_data/fastqc_adapter_content_plot.txt", + "multiqc/multiqc_data/fastqc_overrepresented_sequences_plot.txt", + "multiqc/multiqc_data/fastqc_per_base_n_content_plot.txt", + "multiqc/multiqc_data/fastqc_per_base_sequence_quality_plot.txt", + "multiqc/multiqc_data/fastqc_per_sequence_gc_content_plot_Counts.txt", + "multiqc/multiqc_data/fastqc_per_sequence_gc_content_plot_Percentages.txt", + "multiqc/multiqc_data/fastqc_per_sequence_quality_scores_plot.txt", + "multiqc/multiqc_data/fastqc_sequence_counts_plot.txt", + "multiqc/multiqc_data/fastqc_sequence_duplication_levels_plot.txt", + "multiqc/multiqc_data/fastqc_sequence_length_distribution_plot.txt", + "multiqc/multiqc_data/fastqc_top_overrepresented_sequences_table.txt", + "multiqc/multiqc_data/mosdepth-coverage-per-contig-multi.txt", + "multiqc/multiqc_data/mosdepth-cumcoverage-dist-id.txt", "multiqc/multiqc_data/mosdepth_cov_dist.txt", "multiqc/multiqc_data/mosdepth_cumcov_dist.txt", "multiqc/multiqc_data/mosdepth_perchrom.txt", @@ -318,8 +338,108 @@ "multiqc/multiqc_data/multiqc_software_versions.txt", "multiqc/multiqc_data/multiqc_somalier.txt", "multiqc/multiqc_data/multiqc_sources.txt", + "multiqc/multiqc_data/multiqc_whatshap_phased_bp_plot.txt", "multiqc/multiqc_data/multiqc_whatshap_stats.txt", + "multiqc/multiqc_data/somalier_het_check_plot.txt", + "multiqc/multiqc_data/somalier_relatedness_heatmap_plot.txt", + "multiqc/multiqc_data/somalier_relatedness_plot.txt", + "multiqc/multiqc_data/somalier_sex_check_plot.txt", + "multiqc/multiqc_data/somalier_stats.txt", + "multiqc/multiqc_data/whatshap-stats-table.txt", "multiqc/multiqc_plots", + "multiqc/multiqc_plots/pdf", + "multiqc/multiqc_plots/pdf/bcftools-stats-subtypes-cnt.pdf", + "multiqc/multiqc_plots/pdf/bcftools-stats-subtypes-pct.pdf", + "multiqc/multiqc_plots/pdf/bcftools_stats_indel-lengths.pdf", + "multiqc/multiqc_plots/pdf/bcftools_stats_vqc_Count_Indels.pdf", + "multiqc/multiqc_plots/pdf/bcftools_stats_vqc_Count_SNP.pdf", + "multiqc/multiqc_plots/pdf/bcftools_stats_vqc_Count_Transitions.pdf", + "multiqc/multiqc_plots/pdf/bcftools_stats_vqc_Count_Transversions.pdf", + "multiqc/multiqc_plots/pdf/fastqc-status-check-heatmap.pdf", + "multiqc/multiqc_plots/pdf/fastqc_adapter_content_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc_overrepresented_sequences_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc_per_base_n_content_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc_per_base_sequence_quality_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc_per_sequence_gc_content_plot_Counts.pdf", + "multiqc/multiqc_plots/pdf/fastqc_per_sequence_gc_content_plot_Percentages.pdf", + "multiqc/multiqc_plots/pdf/fastqc_per_sequence_quality_scores_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc_sequence_counts_plot-cnt.pdf", + "multiqc/multiqc_plots/pdf/fastqc_sequence_counts_plot-pct.pdf", + "multiqc/multiqc_plots/pdf/fastqc_sequence_duplication_levels_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc_sequence_length_distribution_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc_top_overrepresented_sequences_table.pdf", + "multiqc/multiqc_plots/pdf/general_stats_table.pdf", + "multiqc/multiqc_plots/pdf/mosdepth-coverage-per-contig-multi-cnt.pdf", + "multiqc/multiqc_plots/pdf/mosdepth-coverage-per-contig-multi-log.pdf", + "multiqc/multiqc_plots/pdf/mosdepth-cumcoverage-dist-id.pdf", + "multiqc/multiqc_plots/pdf/multiqc_whatshap_phased_bp_plot.pdf", + "multiqc/multiqc_plots/pdf/somalier_het_check_plot.pdf", + "multiqc/multiqc_plots/pdf/somalier_relatedness_heatmap_plot.pdf", + "multiqc/multiqc_plots/pdf/somalier_relatedness_plot.pdf", + "multiqc/multiqc_plots/pdf/somalier_sex_check_plot.pdf", + "multiqc/multiqc_plots/pdf/whatshap-stats-table.pdf", + "multiqc/multiqc_plots/png", + "multiqc/multiqc_plots/png/bcftools-stats-subtypes-cnt.png", + "multiqc/multiqc_plots/png/bcftools-stats-subtypes-pct.png", + "multiqc/multiqc_plots/png/bcftools_stats_indel-lengths.png", + "multiqc/multiqc_plots/png/bcftools_stats_vqc_Count_Indels.png", + "multiqc/multiqc_plots/png/bcftools_stats_vqc_Count_SNP.png", + "multiqc/multiqc_plots/png/bcftools_stats_vqc_Count_Transitions.png", + "multiqc/multiqc_plots/png/bcftools_stats_vqc_Count_Transversions.png", + "multiqc/multiqc_plots/png/fastqc-status-check-heatmap.png", + "multiqc/multiqc_plots/png/fastqc_adapter_content_plot.png", + "multiqc/multiqc_plots/png/fastqc_overrepresented_sequences_plot.png", + "multiqc/multiqc_plots/png/fastqc_per_base_n_content_plot.png", + "multiqc/multiqc_plots/png/fastqc_per_base_sequence_quality_plot.png", + "multiqc/multiqc_plots/png/fastqc_per_sequence_gc_content_plot_Counts.png", + "multiqc/multiqc_plots/png/fastqc_per_sequence_gc_content_plot_Percentages.png", + "multiqc/multiqc_plots/png/fastqc_per_sequence_quality_scores_plot.png", + "multiqc/multiqc_plots/png/fastqc_sequence_counts_plot-cnt.png", + "multiqc/multiqc_plots/png/fastqc_sequence_counts_plot-pct.png", + "multiqc/multiqc_plots/png/fastqc_sequence_duplication_levels_plot.png", + "multiqc/multiqc_plots/png/fastqc_sequence_length_distribution_plot.png", + "multiqc/multiqc_plots/png/fastqc_top_overrepresented_sequences_table.png", + "multiqc/multiqc_plots/png/general_stats_table.png", + "multiqc/multiqc_plots/png/mosdepth-coverage-per-contig-multi-cnt.png", + "multiqc/multiqc_plots/png/mosdepth-coverage-per-contig-multi-log.png", + "multiqc/multiqc_plots/png/mosdepth-cumcoverage-dist-id.png", + "multiqc/multiqc_plots/png/multiqc_whatshap_phased_bp_plot.png", + "multiqc/multiqc_plots/png/somalier_het_check_plot.png", + "multiqc/multiqc_plots/png/somalier_relatedness_heatmap_plot.png", + "multiqc/multiqc_plots/png/somalier_relatedness_plot.png", + "multiqc/multiqc_plots/png/somalier_sex_check_plot.png", + "multiqc/multiqc_plots/png/whatshap-stats-table.png", + "multiqc/multiqc_plots/svg", + "multiqc/multiqc_plots/svg/bcftools-stats-subtypes-cnt.svg", + "multiqc/multiqc_plots/svg/bcftools-stats-subtypes-pct.svg", + "multiqc/multiqc_plots/svg/bcftools_stats_indel-lengths.svg", + "multiqc/multiqc_plots/svg/bcftools_stats_vqc_Count_Indels.svg", + "multiqc/multiqc_plots/svg/bcftools_stats_vqc_Count_SNP.svg", + "multiqc/multiqc_plots/svg/bcftools_stats_vqc_Count_Transitions.svg", + "multiqc/multiqc_plots/svg/bcftools_stats_vqc_Count_Transversions.svg", + "multiqc/multiqc_plots/svg/fastqc-status-check-heatmap.svg", + "multiqc/multiqc_plots/svg/fastqc_adapter_content_plot.svg", + "multiqc/multiqc_plots/svg/fastqc_overrepresented_sequences_plot.svg", + "multiqc/multiqc_plots/svg/fastqc_per_base_n_content_plot.svg", + "multiqc/multiqc_plots/svg/fastqc_per_base_sequence_quality_plot.svg", + "multiqc/multiqc_plots/svg/fastqc_per_sequence_gc_content_plot_Counts.svg", + "multiqc/multiqc_plots/svg/fastqc_per_sequence_gc_content_plot_Percentages.svg", + "multiqc/multiqc_plots/svg/fastqc_per_sequence_quality_scores_plot.svg", + "multiqc/multiqc_plots/svg/fastqc_sequence_counts_plot-cnt.svg", + "multiqc/multiqc_plots/svg/fastqc_sequence_counts_plot-pct.svg", + "multiqc/multiqc_plots/svg/fastqc_sequence_duplication_levels_plot.svg", + "multiqc/multiqc_plots/svg/fastqc_sequence_length_distribution_plot.svg", + "multiqc/multiqc_plots/svg/fastqc_top_overrepresented_sequences_table.svg", + "multiqc/multiqc_plots/svg/general_stats_table.svg", + "multiqc/multiqc_plots/svg/mosdepth-coverage-per-contig-multi-cnt.svg", + "multiqc/multiqc_plots/svg/mosdepth-coverage-per-contig-multi-log.svg", + "multiqc/multiqc_plots/svg/mosdepth-cumcoverage-dist-id.svg", + "multiqc/multiqc_plots/svg/multiqc_whatshap_phased_bp_plot.svg", + "multiqc/multiqc_plots/svg/somalier_het_check_plot.svg", + "multiqc/multiqc_plots/svg/somalier_relatedness_heatmap_plot.svg", + "multiqc/multiqc_plots/svg/somalier_relatedness_plot.svg", + "multiqc/multiqc_plots/svg/somalier_sex_check_plot.svg", + "multiqc/multiqc_plots/svg/whatshap-stats-table.svg", "multiqc/multiqc_report.html", "paraphase", "paraphase/HG002_Revio_A", @@ -529,14 +649,33 @@ "HG002_Revio_B_modkit_pileup_2.bed.gz.tbi:md5,d1c192d65d8fa8cbb8ffa2e545282fde", "HG002_Revio_B_modkit_pileup_ungrouped.bed.gz:md5,49d9380eb739081b7a0b4dfa7756d09c", "HG002_Revio_B_modkit_pileup_ungrouped.bed.gz.tbi:md5,f569a923cc5204df5dc495354ab83a13", - "mosdepth_cov_dist.txt:md5,41793745406425cfa02d558875df8d16", + "bcftools-stats-subtypes.txt:md5,5b9c985c35950dfb8cd7827fc8d524c4", + "bcftools_stats_indel-lengths.txt:md5,9272a5340f808c3f5874f1b2fd18da6c", + "fastqc-status-check-heatmap.txt:md5,20c6520b895e05df6cfeab492819e94a", + "fastqc_adapter_content_plot.txt:md5,8f9e7b3e1e31caeb58b0fbf31624ea53", + "fastqc_overrepresented_sequences_plot.txt:md5,9b021bffa0a2d100fdbe637fa7c40a62", + "fastqc_per_base_n_content_plot.txt:md5,47f64b0eb087268bae1d1172c4ce31d6", + "fastqc_per_base_sequence_quality_plot.txt:md5,a3d1e7e58b6c859a06f661f01f920ce7", + "fastqc_per_sequence_gc_content_plot_Counts.txt:md5,cfbe632f2c5e4a519381c3e3e807909f", + "fastqc_per_sequence_gc_content_plot_Percentages.txt:md5,1172a95a897c2f171dab3d12ce10a70a", + "fastqc_per_sequence_quality_scores_plot.txt:md5,89d24f2fe5c673e9dcf3dbb97e4aa477", + "fastqc_sequence_counts_plot.txt:md5,70873e76a534c7a52c0fc5a87a071121", + "fastqc_sequence_duplication_levels_plot.txt:md5,af3f96831de8d9953021be605fea74cd", + "fastqc_sequence_length_distribution_plot.txt:md5,f857786dd1f7dba0aa558980009d19d4", + "fastqc_top_overrepresented_sequences_table.txt:md5,966e1c4f34623fbf427d2ce5d1adf926", + "mosdepth-coverage-per-contig-multi.txt:md5,9ad34655cae2598a7448da87e147643e", + "mosdepth-cumcoverage-dist-id.txt:md5,f82fef24eefb391616c07268fcc826b4", + "mosdepth_cov_dist.txt:md5,c53933e0b572d115ecd35a5adb3e0a04", "mosdepth_cumcov_dist.txt:md5,c53933e0b572d115ecd35a5adb3e0a04", "mosdepth_perchrom.txt:md5,9fd9c40c7a6be06a338f2039a5d91fb8", "multiqc_bcftools_stats.txt:md5,dbbc176792fbf2845547dfdcd39fc208", "multiqc_citations.txt:md5,a27affce20d456d20ed387097a4f0350", - "multiqc_fastqc.txt:md5,18ca1a3fb2afa8988dc5d604c049cd9c", - "multiqc_general_stats.txt:md5,4a2c114e57d5581b606012d1604d51fa", + "multiqc_fastqc.txt:md5,e466de366de86998b84ba6c25aafafd6", + "multiqc_general_stats.txt:md5,d1bfae61713bed6068386db5cb92cde9", + "multiqc_whatshap_phased_bp_plot.txt:md5,d70d629693c3229c37750440636c0a90", "multiqc_whatshap_stats.txt:md5,96447de4e14a9b4a570c24513de64970", + "somalier_stats.txt:md5,5f523bdaa8f6b6bf1581694564521891", + "whatshap-stats-table.txt:md5,862f90185133703811c955c45f5750fa", "FAM.ped:md5,24d8694d580f782ed77d4d1b5c6f6fb4", "test.ped:md5,24d8694d580f782ed77d4d1b5c6f6fb4", "HG002_Revio_A_phased.blocks.tsv:md5,27ce044ba581da15ef838cbb343a64cf", @@ -741,6 +880,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-11-05T13:42:51.526893089" + "timestamp": "2024-11-06T11:01:42.969612471" } } \ No newline at end of file diff --git a/tests/samplesheet_multisample_ont_bam.nf.test.snap b/tests/samplesheet_multisample_ont_bam.nf.test.snap index cf41a33c..abd0e8dd 100644 --- a/tests/samplesheet_multisample_ont_bam.nf.test.snap +++ b/tests/samplesheet_multisample_ont_bam.nf.test.snap @@ -60,7 +60,7 @@ "CREATE_SAMPLES_FILE": { "gawk": "5.1.0" }, - "DEEPVARIANT": { + "DEEPVARIANT_RUNDEEPVARIANT": { "deepvariant": "1.6.1" }, "DEEPVARIANT_VCFSTATSREPORT": { @@ -125,13 +125,13 @@ "python": "3.8.3" }, "SAMTOOLS_FAIDX": { - "samtools": 1.2 + "samtools": 1.21 }, "SAMTOOLS_INDEX_WHATSHAP": { - "samtools": 1.2 + "samtools": 1.21 }, "SAMTOOLS_MERGE": { - "samtools": 1.2 + "samtools": 1.21 }, "SEVERUS": { "severus": 1.1 @@ -220,6 +220,26 @@ "methylation/modkit/pileup/HG002_ONT_B/HG002_ONT_B_modkit_pileup_ungrouped.bed.gz.tbi", "multiqc", "multiqc/multiqc_data", + "multiqc/multiqc_data/bcftools-stats-subtypes.txt", + "multiqc/multiqc_data/bcftools_stats_indel-lengths.txt", + "multiqc/multiqc_data/bcftools_stats_vqc_Count_Indels.txt", + "multiqc/multiqc_data/bcftools_stats_vqc_Count_SNP.txt", + "multiqc/multiqc_data/bcftools_stats_vqc_Count_Transitions.txt", + "multiqc/multiqc_data/bcftools_stats_vqc_Count_Transversions.txt", + "multiqc/multiqc_data/fastqc-status-check-heatmap.txt", + "multiqc/multiqc_data/fastqc_adapter_content_plot.txt", + "multiqc/multiqc_data/fastqc_overrepresented_sequences_plot.txt", + "multiqc/multiqc_data/fastqc_per_base_n_content_plot.txt", + "multiqc/multiqc_data/fastqc_per_base_sequence_quality_plot.txt", + "multiqc/multiqc_data/fastqc_per_sequence_gc_content_plot_Counts.txt", + "multiqc/multiqc_data/fastqc_per_sequence_gc_content_plot_Percentages.txt", + "multiqc/multiqc_data/fastqc_per_sequence_quality_scores_plot.txt", + "multiqc/multiqc_data/fastqc_sequence_counts_plot.txt", + "multiqc/multiqc_data/fastqc_sequence_duplication_levels_plot.txt", + "multiqc/multiqc_data/fastqc_sequence_length_distribution_plot.txt", + "multiqc/multiqc_data/fastqc_top_overrepresented_sequences_table.txt", + "multiqc/multiqc_data/mosdepth-coverage-per-contig-multi.txt", + "multiqc/multiqc_data/mosdepth-cumcoverage-dist-id.txt", "multiqc/multiqc_data/mosdepth_cov_dist.txt", "multiqc/multiqc_data/mosdepth_cumcov_dist.txt", "multiqc/multiqc_data/mosdepth_perchrom.txt", @@ -232,8 +252,108 @@ "multiqc/multiqc_data/multiqc_software_versions.txt", "multiqc/multiqc_data/multiqc_somalier.txt", "multiqc/multiqc_data/multiqc_sources.txt", + "multiqc/multiqc_data/multiqc_whatshap_phased_bp_plot.txt", "multiqc/multiqc_data/multiqc_whatshap_stats.txt", + "multiqc/multiqc_data/somalier_het_check_plot.txt", + "multiqc/multiqc_data/somalier_relatedness_heatmap_plot.txt", + "multiqc/multiqc_data/somalier_relatedness_plot.txt", + "multiqc/multiqc_data/somalier_sex_check_plot.txt", + "multiqc/multiqc_data/somalier_stats.txt", + "multiqc/multiqc_data/whatshap-stats-table.txt", "multiqc/multiqc_plots", + "multiqc/multiqc_plots/pdf", + "multiqc/multiqc_plots/pdf/bcftools-stats-subtypes-cnt.pdf", + "multiqc/multiqc_plots/pdf/bcftools-stats-subtypes-pct.pdf", + "multiqc/multiqc_plots/pdf/bcftools_stats_indel-lengths.pdf", + "multiqc/multiqc_plots/pdf/bcftools_stats_vqc_Count_Indels.pdf", + "multiqc/multiqc_plots/pdf/bcftools_stats_vqc_Count_SNP.pdf", + "multiqc/multiqc_plots/pdf/bcftools_stats_vqc_Count_Transitions.pdf", + "multiqc/multiqc_plots/pdf/bcftools_stats_vqc_Count_Transversions.pdf", + "multiqc/multiqc_plots/pdf/fastqc-status-check-heatmap.pdf", + "multiqc/multiqc_plots/pdf/fastqc_adapter_content_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc_overrepresented_sequences_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc_per_base_n_content_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc_per_base_sequence_quality_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc_per_sequence_gc_content_plot_Counts.pdf", + "multiqc/multiqc_plots/pdf/fastqc_per_sequence_gc_content_plot_Percentages.pdf", + "multiqc/multiqc_plots/pdf/fastqc_per_sequence_quality_scores_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc_sequence_counts_plot-cnt.pdf", + "multiqc/multiqc_plots/pdf/fastqc_sequence_counts_plot-pct.pdf", + "multiqc/multiqc_plots/pdf/fastqc_sequence_duplication_levels_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc_sequence_length_distribution_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc_top_overrepresented_sequences_table.pdf", + "multiqc/multiqc_plots/pdf/general_stats_table.pdf", + "multiqc/multiqc_plots/pdf/mosdepth-coverage-per-contig-multi-cnt.pdf", + "multiqc/multiqc_plots/pdf/mosdepth-coverage-per-contig-multi-log.pdf", + "multiqc/multiqc_plots/pdf/mosdepth-cumcoverage-dist-id.pdf", + "multiqc/multiqc_plots/pdf/multiqc_whatshap_phased_bp_plot.pdf", + "multiqc/multiqc_plots/pdf/somalier_het_check_plot.pdf", + "multiqc/multiqc_plots/pdf/somalier_relatedness_heatmap_plot.pdf", + "multiqc/multiqc_plots/pdf/somalier_relatedness_plot.pdf", + "multiqc/multiqc_plots/pdf/somalier_sex_check_plot.pdf", + "multiqc/multiqc_plots/pdf/whatshap-stats-table.pdf", + "multiqc/multiqc_plots/png", + "multiqc/multiqc_plots/png/bcftools-stats-subtypes-cnt.png", + "multiqc/multiqc_plots/png/bcftools-stats-subtypes-pct.png", + "multiqc/multiqc_plots/png/bcftools_stats_indel-lengths.png", + "multiqc/multiqc_plots/png/bcftools_stats_vqc_Count_Indels.png", + "multiqc/multiqc_plots/png/bcftools_stats_vqc_Count_SNP.png", + "multiqc/multiqc_plots/png/bcftools_stats_vqc_Count_Transitions.png", + "multiqc/multiqc_plots/png/bcftools_stats_vqc_Count_Transversions.png", + "multiqc/multiqc_plots/png/fastqc-status-check-heatmap.png", + "multiqc/multiqc_plots/png/fastqc_adapter_content_plot.png", + "multiqc/multiqc_plots/png/fastqc_overrepresented_sequences_plot.png", + "multiqc/multiqc_plots/png/fastqc_per_base_n_content_plot.png", + "multiqc/multiqc_plots/png/fastqc_per_base_sequence_quality_plot.png", + "multiqc/multiqc_plots/png/fastqc_per_sequence_gc_content_plot_Counts.png", + "multiqc/multiqc_plots/png/fastqc_per_sequence_gc_content_plot_Percentages.png", + "multiqc/multiqc_plots/png/fastqc_per_sequence_quality_scores_plot.png", + "multiqc/multiqc_plots/png/fastqc_sequence_counts_plot-cnt.png", + "multiqc/multiqc_plots/png/fastqc_sequence_counts_plot-pct.png", + "multiqc/multiqc_plots/png/fastqc_sequence_duplication_levels_plot.png", + "multiqc/multiqc_plots/png/fastqc_sequence_length_distribution_plot.png", + "multiqc/multiqc_plots/png/fastqc_top_overrepresented_sequences_table.png", + "multiqc/multiqc_plots/png/general_stats_table.png", + "multiqc/multiqc_plots/png/mosdepth-coverage-per-contig-multi-cnt.png", + "multiqc/multiqc_plots/png/mosdepth-coverage-per-contig-multi-log.png", + "multiqc/multiqc_plots/png/mosdepth-cumcoverage-dist-id.png", + "multiqc/multiqc_plots/png/multiqc_whatshap_phased_bp_plot.png", + "multiqc/multiqc_plots/png/somalier_het_check_plot.png", + "multiqc/multiqc_plots/png/somalier_relatedness_heatmap_plot.png", + "multiqc/multiqc_plots/png/somalier_relatedness_plot.png", + "multiqc/multiqc_plots/png/somalier_sex_check_plot.png", + "multiqc/multiqc_plots/png/whatshap-stats-table.png", + "multiqc/multiqc_plots/svg", + "multiqc/multiqc_plots/svg/bcftools-stats-subtypes-cnt.svg", + "multiqc/multiqc_plots/svg/bcftools-stats-subtypes-pct.svg", + "multiqc/multiqc_plots/svg/bcftools_stats_indel-lengths.svg", + "multiqc/multiqc_plots/svg/bcftools_stats_vqc_Count_Indels.svg", + "multiqc/multiqc_plots/svg/bcftools_stats_vqc_Count_SNP.svg", + "multiqc/multiqc_plots/svg/bcftools_stats_vqc_Count_Transitions.svg", + "multiqc/multiqc_plots/svg/bcftools_stats_vqc_Count_Transversions.svg", + "multiqc/multiqc_plots/svg/fastqc-status-check-heatmap.svg", + "multiqc/multiqc_plots/svg/fastqc_adapter_content_plot.svg", + "multiqc/multiqc_plots/svg/fastqc_overrepresented_sequences_plot.svg", + "multiqc/multiqc_plots/svg/fastqc_per_base_n_content_plot.svg", + "multiqc/multiqc_plots/svg/fastqc_per_base_sequence_quality_plot.svg", + "multiqc/multiqc_plots/svg/fastqc_per_sequence_gc_content_plot_Counts.svg", + "multiqc/multiqc_plots/svg/fastqc_per_sequence_gc_content_plot_Percentages.svg", + "multiqc/multiqc_plots/svg/fastqc_per_sequence_quality_scores_plot.svg", + "multiqc/multiqc_plots/svg/fastqc_sequence_counts_plot-cnt.svg", + "multiqc/multiqc_plots/svg/fastqc_sequence_counts_plot-pct.svg", + "multiqc/multiqc_plots/svg/fastqc_sequence_duplication_levels_plot.svg", + "multiqc/multiqc_plots/svg/fastqc_sequence_length_distribution_plot.svg", + "multiqc/multiqc_plots/svg/fastqc_top_overrepresented_sequences_table.svg", + "multiqc/multiqc_plots/svg/general_stats_table.svg", + "multiqc/multiqc_plots/svg/mosdepth-coverage-per-contig-multi-cnt.svg", + "multiqc/multiqc_plots/svg/mosdepth-coverage-per-contig-multi-log.svg", + "multiqc/multiqc_plots/svg/mosdepth-cumcoverage-dist-id.svg", + "multiqc/multiqc_plots/svg/multiqc_whatshap_phased_bp_plot.svg", + "multiqc/multiqc_plots/svg/somalier_het_check_plot.svg", + "multiqc/multiqc_plots/svg/somalier_relatedness_heatmap_plot.svg", + "multiqc/multiqc_plots/svg/somalier_relatedness_plot.svg", + "multiqc/multiqc_plots/svg/somalier_sex_check_plot.svg", + "multiqc/multiqc_plots/svg/whatshap-stats-table.svg", "multiqc/multiqc_report.html", "paraphase", "paraphase/HG002_ONT_A", @@ -374,14 +494,33 @@ "HG002_ONT_B_modkit_pileup_2.bed.gz.tbi:md5,e6eb3c61b79a4abd0fd952f710d6eab3", "HG002_ONT_B_modkit_pileup_ungrouped.bed.gz:md5,42dcaedf8c379a4e5dee0822d5e8aca4", "HG002_ONT_B_modkit_pileup_ungrouped.bed.gz.tbi:md5,3d97d016882c99e4e21112fc76ceb2a2", - "mosdepth_cov_dist.txt:md5,1eb2a5c39fd4b8dd814049b65b007037", + "bcftools-stats-subtypes.txt:md5,1a8c8da19e5bc947cfb77de3683c8c00", + "bcftools_stats_indel-lengths.txt:md5,cc976b96114f0b68daffec58a7643d53", + "fastqc-status-check-heatmap.txt:md5,03e5dc3abd2f2599a7bb03739dd5ca86", + "fastqc_adapter_content_plot.txt:md5,00c7bec7dd9304848f7d891d7d1fab7f", + "fastqc_overrepresented_sequences_plot.txt:md5,6f0148406e9d5358bf37375b33a4bc01", + "fastqc_per_base_n_content_plot.txt:md5,8551be865db8162f7d6203e0e34288e0", + "fastqc_per_base_sequence_quality_plot.txt:md5,f5e2e866bebda66cd877522342a2bf8a", + "fastqc_per_sequence_gc_content_plot_Counts.txt:md5,8f108751cb49e0d80729247b84ddee76", + "fastqc_per_sequence_gc_content_plot_Percentages.txt:md5,2c68289482d7bffc37efe8110eff9328", + "fastqc_per_sequence_quality_scores_plot.txt:md5,eb18c5356c9bf4eae99f0103b04a8a81", + "fastqc_sequence_counts_plot.txt:md5,d80ddc5d3e3810f5bad4e04b85bd3056", + "fastqc_sequence_duplication_levels_plot.txt:md5,005e3c05e83b9e681f7d02709007df15", + "fastqc_sequence_length_distribution_plot.txt:md5,befaab9e643f27b4fc184577e2dd9dda", + "fastqc_top_overrepresented_sequences_table.txt:md5,48a5253938a61c69babe90a5c7c4b862", + "mosdepth-coverage-per-contig-multi.txt:md5,4339c1147fa7ec9059126bf4c8b6760e", + "mosdepth-cumcoverage-dist-id.txt:md5,d18aa3d23b90333c6d6d84bd0510c5c6", + "mosdepth_cov_dist.txt:md5,5ad1d589df3fa7fe5d21fc95001573a9", "mosdepth_cumcov_dist.txt:md5,5ad1d589df3fa7fe5d21fc95001573a9", "mosdepth_perchrom.txt:md5,86a907217d64d4c2717885403058580f", "multiqc_bcftools_stats.txt:md5,41a78d00bdca33cf0d2a558bb60838db", "multiqc_citations.txt:md5,a27affce20d456d20ed387097a4f0350", - "multiqc_fastqc.txt:md5,5254c5d578af3a24182ccf3248183ac6", - "multiqc_general_stats.txt:md5,0722f1462d3502d5383eb86a484192c6", + "multiqc_fastqc.txt:md5,ce26d17e62f3c8a1c9a01a871a4b9586", + "multiqc_general_stats.txt:md5,0814fb98fbb85e001e9c0c04d586d602", + "multiqc_whatshap_phased_bp_plot.txt:md5,e97b7038c7155326b5d6a2289cc0aeb7", "multiqc_whatshap_stats.txt:md5,5c4b972c8d52b3d997f117b39ba3ad5d", + "somalier_stats.txt:md5,fec840d4fe202c0e3ff7ce94b2a3bf92", + "whatshap-stats-table.txt:md5,d552daaaef1c92c3351ec2f4de64e6ad", "FAM.ped:md5,deb1ee6bd38d6e8f7cb92801d8a12f12", "test.ped:md5,deb1ee6bd38d6e8f7cb92801d8a12f12", "HG002_ONT_A_cramino_aligned_phased.arrow:md5,d2a5c81595fa34925ab8f03078487d81", @@ -485,6 +624,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-11-05T13:44:39.150334649" + "timestamp": "2024-11-06T09:55:21.893675661" } } \ No newline at end of file diff --git a/workflows/nallo.nf b/workflows/nallo.nf index 84aee66d..36b4e37e 100644 --- a/workflows/nallo.nf +++ b/workflows/nallo.nf @@ -177,12 +177,12 @@ workflow NALLO { .set { bam_to_merge } // Merge files if we have multiple files per sample - SAMTOOLS_MERGE ( bam_to_merge.multiple.map { meta, bam, bai -> [ meta, bam ] }, [[],[]], [[],[]], 'bai' ) + SAMTOOLS_MERGE ( bam_to_merge.multiple.map { meta, bam, bai -> [ meta, bam ] }, [[],[]], [[],[]]) ch_versions = ch_versions.mix(SAMTOOLS_MERGE.out.versions) // Combine merged with unmerged bams SAMTOOLS_MERGE.out.bam - .join(SAMTOOLS_MERGE.out.index) + .join(SAMTOOLS_MERGE.out.bai) .concat(bam_to_merge.single) .map { meta, bam, bai -> [ meta - meta.subMap('n_files'), bam, bai ] } .set { bam_infer_sex_in } @@ -610,7 +610,9 @@ workflow NALLO { ch_multiqc_files.collect(), ch_multiqc_config.toList(), ch_multiqc_custom_config.toList(), - ch_multiqc_logo.toList() + ch_multiqc_logo.toList(), + [], + [] ) emit: From c656df7a6362d5cb2fed5f0c72050c94e2a42463 Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Wed, 6 Nov 2024 14:19:42 +0100 Subject: [PATCH 060/106] Add keep a changelog enforcer (#491) * Add keep a changelog enforcer * changelog --- .github/workflows/keep_a_changelog.yml | 15 +++++++++++++++ CHANGELOG.md | 1 + 2 files changed, 16 insertions(+) create mode 100644 .github/workflows/keep_a_changelog.yml diff --git a/.github/workflows/keep_a_changelog.yml b/.github/workflows/keep_a_changelog.yml new file mode 100644 index 00000000..952f2e54 --- /dev/null +++ b/.github/workflows/keep_a_changelog.yml @@ -0,0 +1,15 @@ +name: "Changelog Reminder" +on: + pull_request: + types: [opened, synchronize, reopened, ready_for_review, labeled, unlabeled] + +jobs: + # Enforces the update of a changelog file on every pull request + changelog: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: dangoslen/changelog-enforcer@v3 + with: + changeLogPath: "CHANGELOG.md" + skipLabels: "Skip-Changelog" diff --git a/CHANGELOG.md b/CHANGELOG.md index 7cecf923..cb996b1c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -34,6 +34,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#450](https://github.com/genomic-medicine-sweden/nallo/pull/450) - Added ranking of SVs (and CNVs) - [#451](https://github.com/genomic-medicine-sweden/nallo/pull/451) - Added support for running methylation subworkflow without phasing - [#451](https://github.com/genomic-medicine-sweden/nallo/pull/451) - Added nf-test to methylation +- [#491](https://github.com/genomic-medicine-sweden/nallo/pull/491) - Added a changelog reminder action ### `Changed` From d023a57a8ca28956022a5abf1b4267cc7191af36 Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Wed, 6 Nov 2024 14:58:30 +0100 Subject: [PATCH 061/106] missing changelog items (#490) --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index cb996b1c..e8034c31 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -83,7 +83,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#479](https://github.com/genomic-medicine-sweden/nallo/pull/479) - Replaced bgzip tabix with bcftools sort in rank variants to fix [#457](https://github.com/genomic-medicine-sweden/nallo/issues/457) - [#480](https://github.com/genomic-medicine-sweden/nallo/pull/480) - Updated ranking of SVs to work with multiple families per project - [#484](https://github.com/genomic-medicine-sweden/nallo/pull/484) - Updated metro map and added SVG version +- [#486](https://github.com/genomic-medicine-sweden/nallo/pull/486) - Updated nf-core modules - [#487](https://github.com/genomic-medicine-sweden/nallo/pull/487) - Changed CI tests to only run tests where changes have been made +- [#489](https://github.com/genomic-medicine-sweden/nallo/pull/489) - Updated nf-core template to 3.0.2 ### `Removed` From c88bafb80c253cff88690a3747dcf8aff46a6a07 Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Thu, 7 Nov 2024 11:23:45 +0100 Subject: [PATCH 062/106] Annotate repeats per family (#485) * Annotate repeats per family * docs * test pdiff ci * remove stranger diff --- .github/workflows/ci.yml | 11 +-- CHANGELOG.md | 1 + .../modules/annotate_repeat_expansions.config | 4 +- conf/modules/call_repeat_expansions.config | 11 +-- docs/output.md | 38 +++++----- .../local/call_repeat_expansions/main.nf | 4 +- .../call_repeat_expansions/tests/main.nf.test | 6 +- .../tests/main.nf.test.snap | 24 +++---- tests/.nftignore | 3 +- tests/samplesheet.nf.test.snap | 44 ++++-------- .../samplesheet_multisample_bam.nf.test.snap | 69 ++++++------------- workflows/nallo.nf | 5 +- 12 files changed, 90 insertions(+), 130 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 66c29aed..08c1b0a3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -64,22 +64,13 @@ jobs: - uses: nf-core/setup-nf-test@v1 with: version: ${{ env.NFTEST_VER }} + install-pdiff: true - uses: actions/setup-python@v4 with: python-version: "3.11" architecture: "x64" - - name: Cache pdiff - uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4 - id: cache-pip-pdiff - with: - path: ~/.cache/pip - key: ${{ runner.os }}-pip-pdiff - - - name: Install pdiff - run: python -m pip install --upgrade pip pdiff cryptography - - name: Run nf-test run: | nf-test test \ diff --git a/CHANGELOG.md b/CHANGELOG.md index e8034c31..2c033ac8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -83,6 +83,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#479](https://github.com/genomic-medicine-sweden/nallo/pull/479) - Replaced bgzip tabix with bcftools sort in rank variants to fix [#457](https://github.com/genomic-medicine-sweden/nallo/issues/457) - [#480](https://github.com/genomic-medicine-sweden/nallo/pull/480) - Updated ranking of SVs to work with multiple families per project - [#484](https://github.com/genomic-medicine-sweden/nallo/pull/484) - Updated metro map and added SVG version +- [#485](https://github.com/genomic-medicine-sweden/nallo/pull/485) - Updated repeat expansion annotation to annotate per family instead of per sample - [#486](https://github.com/genomic-medicine-sweden/nallo/pull/486) - Updated nf-core modules - [#487](https://github.com/genomic-medicine-sweden/nallo/pull/487) - Changed CI tests to only run tests where changes have been made - [#489](https://github.com/genomic-medicine-sweden/nallo/pull/489) - Updated nf-core template to 3.0.2 diff --git a/conf/modules/annotate_repeat_expansions.config b/conf/modules/annotate_repeat_expansions.config index 93538810..db1d0481 100644 --- a/conf/modules/annotate_repeat_expansions.config +++ b/conf/modules/annotate_repeat_expansions.config @@ -23,13 +23,13 @@ process { } withName: '.*:ANNOTATE_REPEAT_EXPANSIONS:COMPRESS_STRANGER' { - ext.prefix = { "${meta.id}_repeat_expansion_stranger" } + ext.prefix = { "${meta.id}_repeats_annotated" } ext.args = [ '--output-type z', '--write-index=tbi' ].join(' ') publishDir = [ - path: { "${params.outdir}/repeat_annotation/stranger/${meta.id}" }, + path: { "${params.outdir}/repeats/family/${meta.id}" }, mode: params.publish_dir_mode, saveAs: { filename -> filename.equals('versions.yml') ? null : filename } ] diff --git a/conf/modules/call_repeat_expansions.config b/conf/modules/call_repeat_expansions.config index 27979fc1..175ac0f5 100644 --- a/conf/modules/call_repeat_expansions.config +++ b/conf/modules/call_repeat_expansions.config @@ -31,7 +31,7 @@ process { withName: '.*:CALL_REPEAT_EXPANSIONS:SAMTOOLS_SORT_TRGT' { ext.prefix = { "${meta.id}_spanning_sorted" } publishDir = [ - path: { "${params.outdir}/repeat_calling/trgt/single_sample/${meta.id}" }, + path: { "${params.outdir}/repeats/sample/${meta.id}" }, mode: params.publish_dir_mode, saveAs: { filename -> filename.equals('versions.yml') ? null : filename } ] @@ -39,7 +39,7 @@ process { withName: '.*:CALL_REPEAT_EXPANSIONS:SAMTOOLS_INDEX_TRGT' { publishDir = [ - path: { "${params.outdir}/repeat_calling/trgt/single_sample/${meta.id}" }, + path: { "${params.outdir}/repeats/sample/${meta.id}" }, mode: params.publish_dir_mode, saveAs: { filename -> filename.equals('versions.yml') ? null : filename } ] @@ -52,22 +52,23 @@ process { '--write-index=tbi' ].join(' ') publishDir = [ - path: { "${params.outdir}/repeat_calling/trgt/single_sample/${meta.id}" }, + path: { "${params.outdir}/repeats/sample/${meta.id}" }, mode: params.publish_dir_mode, saveAs: { filename -> filename.equals('versions.yml') ? null : filename } ] } withName: '.*:CALL_REPEAT_EXPANSIONS:BCFTOOLS_MERGE' { + ext.prefix = { "${meta.id}_repeats" } ext.args = [ '--output-type z', '--write-index=tbi', '--force-single' ].join(' ') publishDir = [ - path: { "${params.outdir}/repeat_calling/trgt/multi_sample/${meta.id}" }, + path: { "${params.outdir}/repeats/family/${meta.id}" }, mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + saveAs: { filename -> filename.equals('versions.yml') || !params.skip_repeat_annotation ? null : filename } ] } diff --git a/docs/output.md b/docs/output.md index 11b8d461..a3bb523a 100644 --- a/docs/output.md +++ b/docs/output.md @@ -157,23 +157,27 @@ If the pipeline is run with phasing, the aligned reads will be happlotagged usin ### Repeats -[TRGT](https://github.com/PacificBiosciences/trgt) is used to call repeats: - -| Path | Description | -| --------------------------------------------------------- | ----------------------------------------- | -| `repeat_calling/trgt/multi_sample/{project}/*.vcf.gz` | Merged VCF file for all samples | -| `repeat_calling/trgt/multi_sample/{project}/*.vcf.gz.tbi` | Index of the VCF file | -| `repeat_calling/trgt/single_sample/{sample}/*.vcf.gz` | VCF file with called repeats for a sample | -| `repeat_calling/trgt/single_sample/{sample}/*.vcf.gz.tbi` | Index of the VCF file | -| `repeat_calling/trgt/single_sample/{sample}/*.bam` | BAM file with sorted spanning reads | -| `repeat_calling/trgt/single_sample/{sample}/*.bai` | Index of the BAM file | - -[Stranger](https://github.com/Clinical-Genomics/stranger) is used to annotate them: - -| Path | Description | -| -------------------------------------------------- | ------------------------------- | -| `repeat_annotation/stranger/{sample}/*.vcf.gz` | Annotated VCF file | -| `repeat_annotation/stranger/{sample}/*.vcf.gz.tbi` | Index of the annotated VCF file | +[TRGT](https://github.com/PacificBiosciences/trgt) is used to call repeats. + +!!!note + + Merged variants per family are only output without annotation if `--skip_repeat_annotation` is true. Variants per sample are always output without annotation. + +| Path | Description | +| -------------------------------------------------------- | ----------------------------------------- | +| `repeats/{family}/{family}_repeat_expansions.vcf.gz` | Merged VCF file per family | +| `repeats/{family}/{family}_repeat_expansions.vcf.gz.tbi` | Index of the VCF file | +| `repeats/sample/{sample}/{sample}_sorted.vcf.gz` | VCF file with called repeats for a sample | +| `repeats/sample/{sample}/{sample}_sorted.vcf.gz.tbi` | Index of the VCF file | +| `repeats/sample/{sample}/{sample}_spanning_sorted.bam` | BAM file with sorted spanning reads | +| `repeats/sample/{sample}/{sample}_spanning_sorted.bai` | Index of the BAM file | + +[Stranger](https://github.com/Clinical-Genomics/stranger) is used to annotate repeats. + +| Path | Description | +| ---------------------------------------------------------------------------- | ------------------------------------- | +| `repeat_expansions/{family}/{family}_repeat_expansions_annotated.vcf.gz` | Merged, annotated VCF file per family | +| `repeat_expansions/{family}/{family}_repeat_expansions_annotated.vcf.gz.tbi` | Index of the VCF file | ### SNVs diff --git a/subworkflows/local/call_repeat_expansions/main.nf b/subworkflows/local/call_repeat_expansions/main.nf index ed34b7f3..1fb13ef5 100644 --- a/subworkflows/local/call_repeat_expansions/main.nf +++ b/subworkflows/local/call_repeat_expansions/main.nf @@ -52,7 +52,7 @@ workflow CALL_REPEAT_EXPANSIONS { BCFTOOLS_SORT_TRGT.out.vcf .join( BCFTOOLS_SORT_TRGT.out.tbi ) - .map { meta, bcf, csi -> [ [ id : meta.project ], bcf, csi ] } + .map { meta, bcf, csi -> [ [ id : meta.family_id ], bcf, csi ] } .groupTuple() .set{ ch_bcftools_merge_in } @@ -66,7 +66,7 @@ workflow CALL_REPEAT_EXPANSIONS { emit: sample_vcf = BCFTOOLS_SORT_TRGT.out.vcf // channel: [ val(meta), path(vcf) ] - project_vcf = BCFTOOLS_MERGE.out.vcf // channel: [ val(meta), path(vcf) ] + family_vcf = BCFTOOLS_MERGE.out.vcf // channel: [ val(meta), path(vcf) ] sample_bam = SAMTOOLS_SORT_TRGT.out.bam // channel: [ val(meta), path(bam) ] sample_bai = SAMTOOLS_INDEX_TRGT.out.bai // channel: [ val(meta), path(bai) ] versions = ch_versions // channel: [ versions.yml ] diff --git a/subworkflows/local/call_repeat_expansions/tests/main.nf.test b/subworkflows/local/call_repeat_expansions/tests/main.nf.test index 84349c1b..6a5af047 100644 --- a/subworkflows/local/call_repeat_expansions/tests/main.nf.test +++ b/subworkflows/local/call_repeat_expansions/tests/main.nf.test @@ -37,7 +37,7 @@ nextflow_workflow { workflow { """ input[0] = Channel.of([ - [ id:'test', single_end:false, project: 'project', sex: 1 ], // meta map + [ id:'test', single_end:false, family_id: 'family', sex: 1 ], // meta map file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam', checkIfExists: true), file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) ]) @@ -57,7 +57,7 @@ nextflow_workflow { { assert workflow.out.sample_bai.get(0).get(1).endsWith(".bai") }, { assert snapshot( path(workflow.out.sample_vcf.get(0).get(1)).vcf.variantsMD5, - path(workflow.out.project_vcf.get(0).get(1)).vcf.variantsMD5, + path(workflow.out.family_vcf.get(0).get(1)).vcf.variantsMD5, bam(workflow.out.sample_bam.get(0).get(1), stringency: 'silent').getReadsMD5(), workflow.out.versions, ).match() } @@ -74,7 +74,7 @@ nextflow_workflow { workflow { """ input[0] = Channel.of([ - [ id:'test', single_end:false, project: 'project', sex: 1 ], // meta map + [ id:'test', single_end:false, family_id: 'family', sex: 1 ], // meta map file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam', checkIfExists: true), file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) ]) diff --git a/subworkflows/local/call_repeat_expansions/tests/main.nf.test.snap b/subworkflows/local/call_repeat_expansions/tests/main.nf.test.snap index 196b8825..21f4893f 100644 --- a/subworkflows/local/call_repeat_expansions/tests/main.nf.test.snap +++ b/subworkflows/local/call_repeat_expansions/tests/main.nf.test.snap @@ -26,7 +26,7 @@ { "id": "test", "single_end": false, - "project": "project", + "family_id": "family", "sex": 1 }, "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" @@ -35,9 +35,9 @@ "1": [ [ { - "id": "project" + "id": "family" }, - "project.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + "family.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "2": [ @@ -45,7 +45,7 @@ { "id": "test", "single_end": false, - "project": "project", + "family_id": "family", "sex": 1 }, "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" @@ -56,7 +56,7 @@ { "id": "test", "single_end": false, - "project": "project", + "family_id": "family", "sex": 1 }, "test.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e" @@ -69,12 +69,12 @@ "versions.yml:md5,b9424dde80b33e84164cc956a14aa459", "versions.yml:md5,d7098c270381ae9c3c54fd4224f50206" ], - "project_vcf": [ + "family_vcf": [ [ { - "id": "project" + "id": "family" }, - "project.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + "family.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "sample_bai": [ @@ -82,7 +82,7 @@ { "id": "test", "single_end": false, - "project": "project", + "family_id": "family", "sex": 1 }, "test.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e" @@ -93,7 +93,7 @@ { "id": "test", "single_end": false, - "project": "project", + "family_id": "family", "sex": 1 }, "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" @@ -104,7 +104,7 @@ { "id": "test", "single_end": false, - "project": "project", + "family_id": "family", "sex": 1 }, "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" @@ -123,6 +123,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-11-04T16:23:42.483750233" + "timestamp": "2024-11-04T16:43:06.104050126" } } diff --git a/tests/.nftignore b/tests/.nftignore index 827e5c29..3ed901fb 100644 --- a/tests/.nftignore +++ b/tests/.nftignore @@ -19,7 +19,6 @@ qc/cramino/**/*.txt qc/fastqc/**/*.{zip,html} qc/somalier/**/*.{html,tsv} qc/deepvariant_vcfstatsreport/**/*.html -repeat_annotation/**/*.{vcf.gz,tbi} -repeat_calling/**/*.{vcf.gz,tbi,bam,bai} +repeats/**/*.{vcf.gz,tbi,bam,bai} snvs/**/*.{vcf.gz,tbi,txt} svs/**/*.{vcf.gz,tbi} diff --git a/tests/samplesheet.nf.test.snap b/tests/samplesheet.nf.test.snap index c2e1374c..ff133b7b 100644 --- a/tests/samplesheet.nf.test.snap +++ b/tests/samplesheet.nf.test.snap @@ -457,23 +457,17 @@ "qc/somalier/relate/test/test.html", "qc/somalier/relate/test/test.pairs.tsv", "qc/somalier/relate/test/test.samples.tsv", - "repeat_annotation", - "repeat_annotation/stranger", - "repeat_annotation/stranger/HG002_Revio", - "repeat_annotation/stranger/HG002_Revio/HG002_Revio_repeat_expansion_stranger.vcf.gz", - "repeat_annotation/stranger/HG002_Revio/HG002_Revio_repeat_expansion_stranger.vcf.gz.tbi", - "repeat_calling", - "repeat_calling/trgt", - "repeat_calling/trgt/multi_sample", - "repeat_calling/trgt/multi_sample/test", - "repeat_calling/trgt/multi_sample/test/test.vcf.gz", - "repeat_calling/trgt/multi_sample/test/test.vcf.gz.tbi", - "repeat_calling/trgt/single_sample", - "repeat_calling/trgt/single_sample/HG002_Revio", - "repeat_calling/trgt/single_sample/HG002_Revio/HG002_Revio_sorted.vcf.gz", - "repeat_calling/trgt/single_sample/HG002_Revio/HG002_Revio_sorted.vcf.gz.tbi", - "repeat_calling/trgt/single_sample/HG002_Revio/HG002_Revio_spanning_sorted.bam", - "repeat_calling/trgt/single_sample/HG002_Revio/HG002_Revio_spanning_sorted.bam.bai", + "repeats", + "repeats/family", + "repeats/family/FAM", + "repeats/family/FAM/FAM_repeats_annotated.vcf.gz", + "repeats/family/FAM/FAM_repeats_annotated.vcf.gz.tbi", + "repeats/sample", + "repeats/sample/HG002_Revio", + "repeats/sample/HG002_Revio/HG002_Revio_sorted.vcf.gz", + "repeats/sample/HG002_Revio/HG002_Revio_sorted.vcf.gz.tbi", + "repeats/sample/HG002_Revio/HG002_Revio_spanning_sorted.bam", + "repeats/sample/HG002_Revio/HG002_Revio_spanning_sorted.bam.bai", "snvs", "snvs/multi_sample", "snvs/multi_sample/test", @@ -611,13 +605,9 @@ "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=191, phased=false, phasedAutodetect=false]" ], [ - "HG002_Revio_repeat_expansion_stranger.vcf.gz", + "FAM_repeats_annotated.vcf.gz", "VcfFile [chromosomes=[chr20], sampleCount=1, variantCount=2, phased=false, phasedAutodetect=false]" ], - [ - "test.vcf.gz", - "VcfFile [chromosomes=[chr20], sampleCount=1, variantCount=1, phased=false, phasedAutodetect=false]" - ], [ "HG002_Revio_sorted.vcf.gz", "VcfFile [chromosomes=[chr20], sampleCount=1, variantCount=1, phased=false, phasedAutodetect=false]" @@ -653,12 +643,8 @@ "fa3bfacdab5449526d29d642340d6708" ], [ - "HG002_Revio_repeat_expansion_stranger.vcf.gz", - "73c6c1d07ff96ef44569b5534aa90174" - ], - [ - "test.vcf.gz", - "1de84bd070a82b37e6fac25d19ae604e" + "FAM_repeats_annotated.vcf.gz", + "7358cfc448a3f679765ec9acc19e3214" ], [ "HG002_Revio_sorted.vcf.gz", @@ -672,4 +658,4 @@ }, "timestamp": "2024-11-06T10:59:47.782981349" } -} \ No newline at end of file +} diff --git a/tests/samplesheet_multisample_bam.nf.test.snap b/tests/samplesheet_multisample_bam.nf.test.snap index bd8ef294..3502f83e 100644 --- a/tests/samplesheet_multisample_bam.nf.test.snap +++ b/tests/samplesheet_multisample_bam.nf.test.snap @@ -1,7 +1,7 @@ { "samplesheet_multisample_bam | --phaser hiphase": { "content": [ - 157, + 155, { "ADD_FOUND_IN_TAG": { "bcftools": 1.2, @@ -530,31 +530,22 @@ "qc/somalier/relate/test/test.html", "qc/somalier/relate/test/test.pairs.tsv", "qc/somalier/relate/test/test.samples.tsv", - "repeat_annotation", - "repeat_annotation/stranger", - "repeat_annotation/stranger/HG002_Revio_A", - "repeat_annotation/stranger/HG002_Revio_A/HG002_Revio_A_repeat_expansion_stranger.vcf.gz", - "repeat_annotation/stranger/HG002_Revio_A/HG002_Revio_A_repeat_expansion_stranger.vcf.gz.tbi", - "repeat_annotation/stranger/HG002_Revio_B", - "repeat_annotation/stranger/HG002_Revio_B/HG002_Revio_B_repeat_expansion_stranger.vcf.gz", - "repeat_annotation/stranger/HG002_Revio_B/HG002_Revio_B_repeat_expansion_stranger.vcf.gz.tbi", - "repeat_calling", - "repeat_calling/trgt", - "repeat_calling/trgt/multi_sample", - "repeat_calling/trgt/multi_sample/test", - "repeat_calling/trgt/multi_sample/test/test.vcf.gz", - "repeat_calling/trgt/multi_sample/test/test.vcf.gz.tbi", - "repeat_calling/trgt/single_sample", - "repeat_calling/trgt/single_sample/HG002_Revio_A", - "repeat_calling/trgt/single_sample/HG002_Revio_A/HG002_Revio_A_sorted.vcf.gz", - "repeat_calling/trgt/single_sample/HG002_Revio_A/HG002_Revio_A_sorted.vcf.gz.tbi", - "repeat_calling/trgt/single_sample/HG002_Revio_A/HG002_Revio_A_spanning_sorted.bam", - "repeat_calling/trgt/single_sample/HG002_Revio_A/HG002_Revio_A_spanning_sorted.bam.bai", - "repeat_calling/trgt/single_sample/HG002_Revio_B", - "repeat_calling/trgt/single_sample/HG002_Revio_B/HG002_Revio_B_sorted.vcf.gz", - "repeat_calling/trgt/single_sample/HG002_Revio_B/HG002_Revio_B_sorted.vcf.gz.tbi", - "repeat_calling/trgt/single_sample/HG002_Revio_B/HG002_Revio_B_spanning_sorted.bam", - "repeat_calling/trgt/single_sample/HG002_Revio_B/HG002_Revio_B_spanning_sorted.bam.bai", + "repeats", + "repeats/family", + "repeats/family/FAM", + "repeats/family/FAM/FAM_repeats_annotated.vcf.gz", + "repeats/family/FAM/FAM_repeats_annotated.vcf.gz.tbi", + "repeats/sample", + "repeats/sample/HG002_Revio_A", + "repeats/sample/HG002_Revio_A/HG002_Revio_A_sorted.vcf.gz", + "repeats/sample/HG002_Revio_A/HG002_Revio_A_sorted.vcf.gz.tbi", + "repeats/sample/HG002_Revio_A/HG002_Revio_A_spanning_sorted.bam", + "repeats/sample/HG002_Revio_A/HG002_Revio_A_spanning_sorted.bam.bai", + "repeats/sample/HG002_Revio_B", + "repeats/sample/HG002_Revio_B/HG002_Revio_B_sorted.vcf.gz", + "repeats/sample/HG002_Revio_B/HG002_Revio_B_sorted.vcf.gz.tbi", + "repeats/sample/HG002_Revio_B/HG002_Revio_B_spanning_sorted.bam", + "repeats/sample/HG002_Revio_B/HG002_Revio_B_spanning_sorted.bam.bai", "snvs", "snvs/multi_sample", "snvs/multi_sample/test", @@ -785,16 +776,8 @@ "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=191, phased=false, phasedAutodetect=false]" ], [ - "HG002_Revio_A_repeat_expansion_stranger.vcf.gz", - "VcfFile [chromosomes=[chr20], sampleCount=1, variantCount=2, phased=false, phasedAutodetect=false]" - ], - [ - "HG002_Revio_B_repeat_expansion_stranger.vcf.gz", - "VcfFile [chromosomes=[chr20], sampleCount=1, variantCount=2, phased=false, phasedAutodetect=false]" - ], - [ - "test.vcf.gz", - "VcfFile [chromosomes=[chr20], sampleCount=2, variantCount=1, phased=false, phasedAutodetect=false]" + "FAM_repeats_annotated.vcf.gz", + "VcfFile [chromosomes=[chr20], sampleCount=2, variantCount=2, phased=false, phasedAutodetect=false]" ], [ "HG002_Revio_A_sorted.vcf.gz", @@ -855,16 +838,8 @@ "83dc2bb5d8f46bf3daf99f27e4d3b022" ], [ - "HG002_Revio_A_repeat_expansion_stranger.vcf.gz", - "73c6c1d07ff96ef44569b5534aa90174" - ], - [ - "HG002_Revio_B_repeat_expansion_stranger.vcf.gz", - "73c6c1d07ff96ef44569b5534aa90174" - ], - [ - "test.vcf.gz", - "9f54e9a4fed49a36e1ca3d4cbac049fe" + "FAM_repeats_annotated.vcf.gz", + "c8694565de0481b357da91d07d85a228" ], [ "HG002_Revio_A_sorted.vcf.gz", @@ -882,4 +857,4 @@ }, "timestamp": "2024-11-06T11:01:42.969612471" } -} \ No newline at end of file +} diff --git a/workflows/nallo.nf b/workflows/nallo.nf index 36b4e37e..3a2f41a2 100644 --- a/workflows/nallo.nf +++ b/workflows/nallo.nf @@ -481,7 +481,10 @@ workflow NALLO { // Annotate repeat expansions with stranger // if(!params.skip_repeat_annotation) { - ANNOTATE_REPEAT_EXPANSIONS ( ch_variant_catalog, CALL_REPEAT_EXPANSIONS.out.sample_vcf ) + ANNOTATE_REPEAT_EXPANSIONS ( + ch_variant_catalog, + CALL_REPEAT_EXPANSIONS.out.family_vcf + ) ch_versions = ch_versions.mix(ANNOTATE_REPEAT_EXPANSIONS.out.versions) } } From 42ec8147ca1f333d09888b34a1cc72a0a4fc84a2 Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Mon, 11 Nov 2024 13:36:46 +0100 Subject: [PATCH 063/106] Remove nested ifs in nallo.nf (#493) * Refactor nallo.nf * review suggestions --- CHANGELOG.md | 2 + subworkflows/local/convert_input_files.nf | 14 +- .../local/methylation/tests/main.nf.test | 4 +- subworkflows/local/prepare_genome.nf | 28 +- .../local/rank_variants/tests/main.nf.test | 4 +- .../local/utils_nfcore_nallo_pipeline/main.nf | 9 +- tests/samplesheet.nf.test.snap | 18 +- .../samplesheet_multisample_bam.nf.test.snap | 18 +- ...mplesheet_multisample_ont_bam.nf.test.snap | 16 +- workflows/nallo.nf | 694 +++++++++--------- 10 files changed, 430 insertions(+), 377 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2c033ac8..9cbd4974 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -87,6 +87,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#486](https://github.com/genomic-medicine-sweden/nallo/pull/486) - Updated nf-core modules - [#487](https://github.com/genomic-medicine-sweden/nallo/pull/487) - Changed CI tests to only run tests where changes have been made - [#489](https://github.com/genomic-medicine-sweden/nallo/pull/489) - Updated nf-core template to 3.0.2 +- [#493](https://github.com/genomic-medicine-sweden/nallo/pull/493) - Refactored `nallo.nf` to remove many nested ifs and easier to follow logic +- [#493](https://github.com/genomic-medicine-sweden/nallo/pull/493) - Updated rank_variants dependencies with sv_annotation ### `Removed` diff --git a/subworkflows/local/convert_input_files.nf b/subworkflows/local/convert_input_files.nf index f06d2020..0cd46bf2 100644 --- a/subworkflows/local/convert_input_files.nf +++ b/subworkflows/local/convert_input_files.nf @@ -5,6 +5,7 @@ workflow CONVERT_INPUT_FILES { take: ch_sample // channel: [ val(meta), reads ] + convert_bam // bool convert_fastq // bool main: @@ -20,19 +21,20 @@ workflow CONVERT_INPUT_FILES { ch_bam = ch_filetypes.bam ch_fastq = ch_filetypes.fastq - if(convert_fastq) { + if(convert_bam) { SAMTOOLS_FASTQ ( ch_filetypes.bam, false ) ch_versions = ch_versions.mix(SAMTOOLS_FASTQ.out.versions) // Mix converted files back in ch_fastq = ch_fastq.mix(SAMTOOLS_FASTQ.out.other) } + if(convert_fastq) { + SAMTOOLS_IMPORT ( ch_filetypes.fastq ) + ch_versions = ch_versions.mix(SAMTOOLS_IMPORT.out.versions) - SAMTOOLS_IMPORT ( ch_filetypes.fastq ) - ch_versions = ch_versions.mix(SAMTOOLS_IMPORT.out.versions) - - // Mix converted files back in - ch_bam = ch_bam.mix(SAMTOOLS_IMPORT.out.bam) + // Mix converted files back in + ch_bam = ch_bam.mix(SAMTOOLS_IMPORT.out.bam) + } emit: bam = ch_bam // channel: [ val(meta), bam ] diff --git a/subworkflows/local/methylation/tests/main.nf.test b/subworkflows/local/methylation/tests/main.nf.test index 7d5e6933..f95c984c 100644 --- a/subworkflows/local/methylation/tests/main.nf.test +++ b/subworkflows/local/methylation/tests/main.nf.test @@ -14,8 +14,8 @@ nextflow_workflow { [ id:'hg38' ], file(params.pipelines_testdata_base_path + 'reference/hg38.test.fa.gz', checkIfExists: true) ]) - input[1] = true - input[2] = Channel.empty() + input[1] = Channel.empty() + input[2] = true input[3] = false """ } diff --git a/subworkflows/local/prepare_genome.nf b/subworkflows/local/prepare_genome.nf index 23bfe8f0..31d88952 100644 --- a/subworkflows/local/prepare_genome.nf +++ b/subworkflows/local/prepare_genome.nf @@ -6,10 +6,10 @@ include { UNTAR as UNTAR_VEP_CACHE } from '../../modules/nf-core/untar/main' workflow PREPARE_GENOME { take: - fasta_in // channel: [mandatory] [ val(meta), path(fasta) ] - gunzip_fasta // bool: should we gunzip fasta - ch_vep_cache // channel: [optional] [ val(meta), path(cache) ] - split_vep_files // bool: are there vep extra files + fasta_in // channel: [ val(meta), path(fasta) ] + ch_vep_cache // channel: [ val(meta), path(cache) ] + gunzip_fasta // boolean: should we gunzip fasta + untar_vep_cache // boolean: should we untar vep cache main: ch_versions = Channel.empty() @@ -35,17 +35,15 @@ workflow PREPARE_GENOME { MINIMAP2_INDEX ( ch_fasta ) ch_versions = ch_versions.mix(MINIMAP2_INDEX.out.versions) - UNTAR_VEP_CACHE (ch_vep_cache) - ch_versions = ch_versions.mix(UNTAR_VEP_CACHE.out.versions) - - UNTAR_VEP_CACHE.out.untar - .collect() - .set { untarred_vep } + if (untar_vep_cache) { + UNTAR_VEP_CACHE (ch_vep_cache) + ch_versions = ch_versions.mix(UNTAR_VEP_CACHE.out.versions) + } emit: - mmi = MINIMAP2_INDEX.out.index.collect() // channel: [ val(meta), path(mmi) ] - fai = SAMTOOLS_FAIDX.out.fai.collect() // channel: [ val(meta), path(fai) ] - fasta = ch_fasta // channel: [ val(meta), path(fasta) ] - vep_resources = untarred_vep // channel: [ val(meta), path(cache) ] - versions = ch_versions // channel: [ versions.yml ] + mmi = MINIMAP2_INDEX.out.index.collect() // channel: [ val(meta), path(mmi) ] + fai = SAMTOOLS_FAIDX.out.fai.collect() // channel: [ val(meta), path(fai) ] + fasta = ch_fasta // channel: [ val(meta), path(fasta) ] + vep_resources = untar_vep_cache ? UNTAR_VEP_CACHE.out.untar.collect() : ch_vep_cache // channel: [ val(meta), path(cache) ] + versions = ch_versions // channel: [ versions.yml ] } diff --git a/subworkflows/local/rank_variants/tests/main.nf.test b/subworkflows/local/rank_variants/tests/main.nf.test index a544a445..4be209d1 100644 --- a/subworkflows/local/rank_variants/tests/main.nf.test +++ b/subworkflows/local/rank_variants/tests/main.nf.test @@ -14,11 +14,11 @@ nextflow_workflow { [ id:'hg38' ], file(params.pipelines_testdata_base_path + 'reference/hg38.test.fa.gz', checkIfExists: true) ]) - input[1] = true - input[2] = [ + input[1] = [ [ id: 'vep_cache' ], file(params.pipelines_testdata_base_path + 'reference/vep_cache_test_data.tar.gz', checkIfExists:true) ] + input[2] = true input[3] = true """ } diff --git a/subworkflows/local/utils_nfcore_nallo_pipeline/main.nf b/subworkflows/local/utils_nfcore_nallo_pipeline/main.nf index db858cdb..0c4308ec 100644 --- a/subworkflows/local/utils_nfcore_nallo_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_nallo_pipeline/main.nf @@ -59,7 +59,7 @@ def workflowDependencies = [ snv_annotation : ["mapping", "snv_calling"], cnv_calling : ["mapping", "snv_calling"], phasing : ["mapping", "snv_calling"], - rank_variants : ["mapping", "snv_calling", "snv_annotation"], + rank_variants : ["mapping", "snv_calling", "snv_annotation", "sv_annotation"], repeat_calling : ["mapping", "snv_calling", "phasing"], repeat_annotation: ["mapping", "snv_calling", "phasing", "repeat_calling"], methylation : ["mapping", "snv_calling"] @@ -165,6 +165,7 @@ workflow PIPELINE_INITIALISATION { // Custom validation for pipeline parameters // validateInputParameters(parameterStatus, workflowSkips, workflowDependencies, fileDependencies) + validatePacBioLicense() // // Create channel from input file provided through params.input @@ -322,7 +323,6 @@ def toolCitationText() { def citation_text = [ "MultiQC (Ewels et al. 2016)", - "SAMtools (Danecek et al. 2021)", ] if (!params.skip_mapping_wf) { if (params.parallel_alignments > 1) { @@ -653,3 +653,8 @@ def createReferenceChannelFromSamplesheet(param, schema, defaultValue = '') { return param ? Channel.fromList(samplesheetToList(param, schema)) : defaultValue } +def validatePacBioLicense() { + if (params.phaser.matches('hiphase') && params.preset == 'ONT_R10') { + error "ERROR: The HiPhase license only permits analysis of data from PacBio." + } +} diff --git a/tests/samplesheet.nf.test.snap b/tests/samplesheet.nf.test.snap index ff133b7b..e1c5ce90 100644 --- a/tests/samplesheet.nf.test.snap +++ b/tests/samplesheet.nf.test.snap @@ -1,7 +1,7 @@ { "test profile": { "content": [ - 112, + 113, { "ADD_FOUND_IN_TAG": { "bcftools": 1.2, @@ -87,6 +87,9 @@ "ENSEMBLVEP_SNV": { "ensemblvep": 110.0 }, + "ENSEMBLVEP_SV": { + "ensemblvep": 110.0 + }, "FASTQC": { "fastqc": "0.12.1" }, @@ -206,18 +209,27 @@ "svdb": "2.8.2", "bcftools": 1.21 }, + "SVDB_QUERY": { + "svdb": "2.8.2" + }, "TABIX_BGZIPTABIX": { "tabix": 1.2 }, "TABIX_ENSEMBLVEP_SNV": { "tabix": 1.2 }, + "TABIX_ENSEMBLVEP_SV": { + "tabix": 1.2 + }, "TABIX_LONGPHASE_PHASE": { "tabix": 1.2 }, "TABIX_SVDB_MERGE": { "tabix": 1.2 }, + "TABIX_SVDB_MERGE_SVS_CNVS": { + "tabix": 1.2 + }, "TABIX_TABIX": { "tabix": 1.2 }, @@ -656,6 +668,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-11-06T10:59:47.782981349" + "timestamp": "2024-11-07T12:46:21.477060114" } -} +} \ No newline at end of file diff --git a/tests/samplesheet_multisample_bam.nf.test.snap b/tests/samplesheet_multisample_bam.nf.test.snap index 3502f83e..0df96a6b 100644 --- a/tests/samplesheet_multisample_bam.nf.test.snap +++ b/tests/samplesheet_multisample_bam.nf.test.snap @@ -1,7 +1,7 @@ { "samplesheet_multisample_bam | --phaser hiphase": { "content": [ - 155, + 156, { "ADD_FOUND_IN_TAG": { "bcftools": 1.2, @@ -87,6 +87,9 @@ "ENSEMBLVEP_SNV": { "ensemblvep": 110.0 }, + "ENSEMBLVEP_SV": { + "ensemblvep": 110.0 + }, "FASTQC": { "fastqc": "0.12.1" }, @@ -203,15 +206,24 @@ "svdb": "2.8.2", "bcftools": 1.21 }, + "SVDB_QUERY": { + "svdb": "2.8.2" + }, "TABIX_BGZIPTABIX": { "tabix": 1.2 }, "TABIX_ENSEMBLVEP_SNV": { "tabix": 1.2 }, + "TABIX_ENSEMBLVEP_SV": { + "tabix": 1.2 + }, "TABIX_SVDB_MERGE": { "tabix": 1.2 }, + "TABIX_SVDB_MERGE_SVS_CNVS": { + "tabix": 1.2 + }, "TABIX_TABIX": { "tabix": 1.2 }, @@ -855,6 +867,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-11-06T11:01:42.969612471" + "timestamp": "2024-11-07T12:48:14.873817687" } -} +} \ No newline at end of file diff --git a/tests/samplesheet_multisample_ont_bam.nf.test.snap b/tests/samplesheet_multisample_ont_bam.nf.test.snap index abd0e8dd..099f1b81 100644 --- a/tests/samplesheet_multisample_ont_bam.nf.test.snap +++ b/tests/samplesheet_multisample_ont_bam.nf.test.snap @@ -1,7 +1,7 @@ { "samplesheet_multisample_ont_bam | --preset ONT_R10 --phaser whatshap --parallel_alignments 1 --parallel_snv 1": { "content": [ - 104, + 105, { "ADD_FOUND_IN_TAG": { "bcftools": 1.2, @@ -75,6 +75,9 @@ "ENSEMBLVEP_SNV": { "ensemblvep": 110.0 }, + "ENSEMBLVEP_SV": { + "ensemblvep": 110.0 + }, "FASTQC": { "fastqc": "0.12.1" }, @@ -158,15 +161,24 @@ "svdb": "2.8.2", "bcftools": 1.21 }, + "SVDB_QUERY": { + "svdb": "2.8.2" + }, "TABIX_BGZIPTABIX": { "tabix": 1.2 }, "TABIX_ENSEMBLVEP_SNV": { "tabix": 1.2 }, + "TABIX_ENSEMBLVEP_SV": { + "tabix": 1.2 + }, "TABIX_SVDB_MERGE": { "tabix": 1.2 }, + "TABIX_SVDB_MERGE_SVS_CNVS": { + "tabix": 1.2 + }, "TABIX_TABIX": { "tabix": 1.2 }, @@ -624,6 +636,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-11-06T09:55:21.893675661" + "timestamp": "2024-11-07T12:51:02.903461641" } } \ No newline at end of file diff --git a/workflows/nallo.nf b/workflows/nallo.nf index 3a2f41a2..50061e57 100644 --- a/workflows/nallo.nf +++ b/workflows/nallo.nf @@ -71,7 +71,6 @@ workflow NALLO { ch_input main: - ch_vep_cache = Channel.value([]) ch_versions = Channel.empty() ch_multiqc_files = Channel.empty() @@ -102,63 +101,52 @@ workflow NALLO { ch_databases = createReferenceChannelFromSamplesheet(params.snp_db, 'assets/schema_snp_db.json') ch_vep_plugin_files = createReferenceChannelFromSamplesheet(params.vep_plugin_files, 'assets/schema_vep_plugin_files.json', Channel.value([])) - // Check parameter that doesn't conform to schema validation here - if (params.phaser.matches('hiphase') && params.preset == 'ONT_R10') { error "The HiPhase license only permits analysis of data from PacBio. For details see: https://github.com/PacificBiosciences/HiPhase/blob/main/LICENSE.md" } - // // Convert FASTQ to BAM (and vice versa if assembly workflow is active) // CONVERT_INPUT_FILES ( ch_input, - !params.skip_assembly_wf + !params.skip_assembly_wf, // should bam -> fastq conversion be done + !params.skip_mapping_wf // should fastq -> bam conversion be done ) ch_versions = ch_versions.mix(CONVERT_INPUT_FILES.out.versions) // - // Prepare references + // Map reads to reference // - if(!params.skip_mapping_wf || !params.skip_assembly_wf ) { + if (!params.skip_mapping_wf) { + // Prepeare references PREPARE_GENOME ( ch_fasta, - params.fasta.endsWith('.gz'), ch_vep_cache_unprocessed, - params.vep_plugin_files, + params.fasta.endsWith('.gz'), // should we unzip fasta + params.vep_cache.endsWith("tar.gz") // should we untar vep cache ) ch_versions = ch_versions.mix(PREPARE_GENOME.out.versions) - if(!params.skip_snv_annotation && params.vep_cache) { - if (params.vep_cache.endsWith("tar.gz")) { - ch_vep_cache = PREPARE_GENOME.out.vep_resources - } else { - ch_vep_cache = createReferenceChannelFromPath(params.vep_cache) - } - } - // Gather indices fasta = PREPARE_GENOME.out.fasta fai = PREPARE_GENOME.out.fai mmi = PREPARE_GENOME.out.mmi - } - - // - // (Split input files and), map reads to reference and merge into a single BAM per sample - // - if(!params.skip_mapping_wf) { - - // Split input files for alignment - if (params.parallel_alignments > 1) { + // Split input BAM files + if(params.parallel_alignments > 1) { SPLITUBAM ( CONVERT_INPUT_FILES.out.bam ) ch_versions = ch_versions.mix(SPLITUBAM.out.versions) - - reads_for_alignment = SPLITUBAM.out.bam.transpose() - - } else { - reads_for_alignment = CONVERT_INPUT_FILES.out.bam } - // Align (split) reads - MINIMAP2_ALIGN ( reads_for_alignment, mmi, true, 'bai', false, false ) + + // + // Align reads (could be a split-align-merge subworkflow) + // + MINIMAP2_ALIGN ( + params.parallel_alignments > 1 ? SPLITUBAM.out.bam.transpose() : CONVERT_INPUT_FILES.out.bam, + mmi, + true, + 'bai', + false, + false + ) ch_versions = ch_versions.mix(MINIMAP2_ALIGN.out.versions) // Split channel into cases where we have multiple files or single files @@ -177,7 +165,11 @@ workflow NALLO { .set { bam_to_merge } // Merge files if we have multiple files per sample - SAMTOOLS_MERGE ( bam_to_merge.multiple.map { meta, bam, bai -> [ meta, bam ] }, [[],[]], [[],[]]) + SAMTOOLS_MERGE ( + bam_to_merge.multiple.map { meta, bam, bai -> [ meta, bam ] }, + [[],[]], + [[],[]] + ) ch_versions = ch_versions.mix(SAMTOOLS_MERGE.out.versions) // Combine merged with unmerged bams @@ -205,96 +197,228 @@ workflow NALLO { // // Check sex and relatedness, and update with infered sex if the sex for a sample is unknown // - BAM_INFER_SEX ( bam_infer_sex_in, fasta, fai, ch_somalier_sites, ch_samplesheet_pedfile ) + BAM_INFER_SEX ( + bam_infer_sex_in, + fasta, + fai, + ch_somalier_sites, + ch_samplesheet_pedfile + ) ch_versions = ch_versions.mix(BAM_INFER_SEX.out.versions) - ch_multiqc_files = ch_multiqc_files.mix(BAM_INFER_SEX.out.somalier_samples.map{it[1]}.collect().ifEmpty([])) ch_multiqc_files = ch_multiqc_files.mix(BAM_INFER_SEX.out.somalier_pairs.map{it[1]}.collect().ifEmpty([])) + // Set files with updated meta for subsequent processes bam = BAM_INFER_SEX.out.bam bai = BAM_INFER_SEX.out.bai bam_bai = BAM_INFER_SEX.out.bam_bai - // - // Create PED with updated sex per project (should perphaps be per SNV-calling region) - // + } + + // + // Run read QC with FastQC, mosdepth and cramino + // + if (!params.skip_qc) { + + QC_ALIGNED_READS ( + bam_bai, + fasta, + ch_input_bed + ) + ch_versions = ch_versions.mix(QC_ALIGNED_READS.out.versions) + ch_multiqc_files = ch_multiqc_files.mix( QC_ALIGNED_READS.out.fastqc_zip.collect { it[1] }.ifEmpty([]) ) + ch_multiqc_files = ch_multiqc_files.mix( QC_ALIGNED_READS.out.mosdepth_summary.collect { it[1] } ) + ch_multiqc_files = ch_multiqc_files.mix( QC_ALIGNED_READS.out.mosdepth_global_dist.collect { it[1] } ) + ch_multiqc_files = ch_multiqc_files.mix( QC_ALIGNED_READS.out.mosdepth_region_dist.collect { it[1] }.ifEmpty([]) ) + + } + + // + // Call paralogous genes with paraphase + // + if(!params.skip_call_paralogs) { + CALL_PARALOGS ( + bam_bai, + fasta + ) + ch_versions = ch_versions.mix(CALL_PARALOGS.out.versions) + } + + // + // Hifiasm assembly and assembly variant calling + // + if(!params.skip_assembly_wf) { + + //Hifiasm assembly + ASSEMBLY( CONVERT_INPUT_FILES.out.fastq ) + ch_versions = ch_versions.mix(ASSEMBLY.out.versions) + + // Update assembly variant calling meta with sex from somalier + ASSEMBLY.out.assembled_haplotypes + .map { meta, hap1, hap2 -> [ meta.id, [ hap1, hap2 ] ] } + .set { haplotypes } + bam - .map { meta, files -> [ [ id: meta.project ], meta ] } - .groupTuple() - .set { ch_somalier_ped_in } + .map { meta, bam -> [ meta.id, meta ] } + .join( haplotypes ) + .map { id, meta, haplotypes -> [ meta, haplotypes[0], haplotypes[1] ] } + .set { ch_assembly_variant_calling_in } + + // Run dipcall + ASSEMBLY_VARIANT_CALLING ( + ch_assembly_variant_calling_in, + fasta, + fai, + ch_par + ) + ch_versions = ch_versions.mix(ASSEMBLY_VARIANT_CALLING.out.versions) + } + + // + // Call SNVs + // + if(!params.skip_short_variant_calling) { + + // Make BED intervals, to be used for parallel SNV calling + SCATTER_GENOME ( + fai, + ch_input_bed, + !params.bed, // should a bed be made from fai + !params.skip_short_variant_calling, // should bed be split and snv-calling intervals be made + params.parallel_snv // how many splits should be done + ) + ch_versions = ch_versions.mix(SCATTER_GENOME.out.versions) + + // Combine to create a bam_bai - interval pair for each sample + bam_bai + .combine( SCATTER_GENOME.out.bed_intervals ) + .map { meta, bam, bai, bed, intervals -> + [ meta + [ num_intervals: intervals ], bam, bai, bed ] + } + .set{ ch_snv_calling_in } + + // This subworkflow calls SNVs with DeepVariant and outputs: + // 1. A merged and normalised VCF, containing one sample with all regions, to be used in downstream subworkflows requiring SNVs. + // 2. A merged and normalised VCF, containing one region with all samples, to be used in annotation and ranking. + SHORT_VARIANT_CALLING( ch_snv_calling_in, fasta, fai, SCATTER_GENOME.out.bed, ch_par ) + ch_versions = ch_versions.mix(SHORT_VARIANT_CALLING.out.versions) + + SHORT_VARIANT_CALLING.out.combined_bcf + .join( SHORT_VARIANT_CALLING.out.combined_csi ) + .set { ch_vcf_tbi_per_region } + } + + // + // Annotate SNVs + // + if(!params.skip_snv_annotation) { + + // Annotates one multisample VCF per variant call region + SNV_ANNOTATION( + SHORT_VARIANT_CALLING.out.combined_bcf, + ch_databases.map { meta, databases -> databases }.collect(), + fasta, + fai.map { name, fai -> [ [ id: name ], fai ] }, + PREPARE_GENOME.out.vep_resources.map { meta, cache -> cache }, + params.vep_cache_version, + ch_vep_plugin_files.collect(), + (params.cadd_resources && params.cadd_prescored), // should indels be annotated with CADD + ch_cadd_header, + ch_cadd_resources, + ch_cadd_prescored + ) + ch_versions = ch_versions.mix(SNV_ANNOTATION.out.versions) - SOMALIER_PED ( ch_somalier_ped_in ) + ANN_CSQ_PLI_SNV ( + SNV_ANNOTATION.out.vcf, + ch_variant_consequences_snv + ) + ch_versions = ch_versions.mix(ANN_CSQ_PLI_SNV.out.versions) + + ANN_CSQ_PLI_SNV.out.vcf + .join( ANN_CSQ_PLI_SNV.out.tbi ) + .set { ch_vcf_tbi_per_region } + + } + + // + // Ranks one multisample VCF per variant call region + // Can only run if samplesheet has affected samples + // + if(!params.skip_rank_variants) { + + // Create PED with updated sex per project (should perhaps be per SNV-calling region) + SOMALIER_PED ( + bam + .map { meta, files -> [ [ id: meta.project ], meta ] } + .groupTuple() + ) ch_versions = ch_versions.mix(SOMALIER_PED.out.versions) SOMALIER_PED.out.ped .collect() .set { ch_updated_pedfile } - // - // Create PED with updated sex - per family - // - bam - .map { meta, files -> [ [ id: meta.family_id ], meta ] } - .groupTuple() - .set { ch_somalier_ped_family_in } - - SOMALIER_PED_FAMILY ( ch_somalier_ped_family_in ) - ch_versions = ch_versions.mix(SOMALIER_PED_FAMILY.out.versions) - - SOMALIER_PED_FAMILY.out.ped - .set { ch_updated_pedfile_family } + // Give pedfile meta from variants + ANN_CSQ_PLI_SNV.out.vcf + .combine(ch_updated_pedfile.map { meta, ped -> ped } ) + .map { meta, vcf, ped -> [ meta, ped ] } + .set { rank_snvs_ped_in } + + // Only run if we have affected individuals + RANK_VARIANTS_SNV ( + ANN_CSQ_PLI_SNV.out.vcf, + rank_snvs_ped_in, + ch_reduced_penetrance, + ch_score_config_snv + ) + ch_versions = ch_versions.mix(RANK_VARIANTS_SNV.out.versions) - // - // Run read QC with FastQC, mosdepth and cramino - // - if (!params.skip_qc) { + RANK_VARIANTS_SNV.out.vcf + .join( RANK_VARIANTS_SNV.out.tbi ) + .set { ch_vcf_tbi_per_region } + } - QC_ALIGNED_READS( bam_bai, fasta, ch_input_bed ) - ch_versions = ch_versions.mix(QC_ALIGNED_READS.out.versions) + // + // Concatenate, sort, split, make database and get statistics of SNVs (should be a subworkflow) + // + if(!params.skip_short_variant_calling) { - ch_multiqc_files = ch_multiqc_files.mix( QC_ALIGNED_READS.out.fastqc_zip.collect { it[1] }.ifEmpty([]) ) - ch_multiqc_files = ch_multiqc_files.mix( QC_ALIGNED_READS.out.mosdepth_summary.collect { it[1] } ) - ch_multiqc_files = ch_multiqc_files.mix( QC_ALIGNED_READS.out.mosdepth_global_dist.collect { it[1] } ) - ch_multiqc_files = ch_multiqc_files.mix( QC_ALIGNED_READS.out.mosdepth_region_dist.collect { it[1] }.ifEmpty([]) ) + ch_vcf_tbi_per_region + .map { meta, vcf, tbi -> [ [ id: meta.project ], vcf, tbi ] } + .groupTuple() + .set { ch_bcftools_concat_in } - } + // Concat into a multisample VCF with all regions + BCFTOOLS_CONCAT ( ch_bcftools_concat_in ) + ch_versions = ch_versions.mix(BCFTOOLS_CONCAT.out.versions) - // - // Call paralogous genes with paraphase - // - if(!params.skip_call_paralogs) { - CALL_PARALOGS ( bam_bai, fasta ) - ch_versions = ch_versions.mix(CALL_PARALOGS.out.versions) - } + // Sort and publish + BCFTOOLS_SORT ( BCFTOOLS_CONCAT.out.vcf ) + ch_versions = ch_versions.mix(BCFTOOLS_SORT.out.versions) - // - // Hifiasm assembly and assembly variant calling - // - if(!params.skip_assembly_wf) { + // Make an echtvar database of all samples + ECHTVAR_ENCODE ( BCFTOOLS_SORT.out.vcf ) + ch_versions = ch_versions.mix(ECHTVAR_ENCODE.out.versions) - //Hifiasm assembly - ASSEMBLY( CONVERT_INPUT_FILES.out.fastq ) - ch_versions = ch_versions.mix(ASSEMBLY.out.versions) + // Split multisample VCF to also publish a VCF per sample + BCFTOOLS_PLUGINSPLIT_SNVS ( BCFTOOLS_SORT.out.vcf.join(BCFTOOLS_SORT.out.tbi ), [], [], [], [] ) + ch_versions = ch_versions.mix(BCFTOOLS_PLUGINSPLIT_SNVS.out.versions) - // Update assembly variant calling meta with sex from somalier - ASSEMBLY.out.assembled_haplotypes - .map { meta, hap1, hap2 -> [ meta.id, [ hap1, hap2 ] ] } - .set { haplotypes } + BCFTOOLS_PLUGINSPLIT_SNVS.out.vcf + .transpose() + .map { meta, vcf -> [ meta, vcf, [] ] } + .set { ch_bcftools_stats_snv_in } - bam - .map { meta, bam -> [ meta.id, meta ] } - .join( haplotypes ) - .map { id, meta, haplotypes -> [ meta, haplotypes[0], haplotypes[1] ] } - .set { ch_assembly_variant_calling_in } - - // Run dipcall - ASSEMBLY_VARIANT_CALLING( ch_assembly_variant_calling_in, fasta, fai , ch_par) - ch_versions = ch_versions.mix(ASSEMBLY_VARIANT_CALLING.out.versions) - } + BCFTOOLS_STATS ( ch_bcftools_stats_snv_in, [[],[]], [[],[]], [[],[]], [[],[]], [[],[]] ) + ch_versions = ch_versions.mix(BCFTOOLS_STATS.out.versions) + ch_multiqc_files = ch_multiqc_files.mix(BCFTOOLS_STATS.out.stats.collect{it[1]}.ifEmpty([])) + } - // - // Call structural variants - // + // + // Call SVs + // + if(!params.skip_mapping_wf) { // If both CNV-calling and SV annotation is off, merged variants are output from here CALL_SVS ( @@ -307,263 +431,149 @@ workflow NALLO { ) ch_versions = ch_versions.mix(CALL_SVS.out.versions) - // - // Call (and annotate and rank) SNVs - // - if(!params.skip_short_variant_calling) { - - // - // Make BED intervals, to be used for parallel SNV calling - // - SCATTER_GENOME ( - fai, - ch_input_bed, - !params.bed, - !params.skip_short_variant_calling, - params.parallel_snv - ) - ch_versions = ch_versions.mix(SCATTER_GENOME.out.versions) - - // Combine to create a bam_bai - interval pair for each sample - bam_bai - .combine( SCATTER_GENOME.out.bed_intervals ) - .map { meta, bam, bai, bed, intervals -> - [ meta + [ num_intervals: intervals ], bam, bai, bed ] - } - .set{ ch_snv_calling_in } - - // - // This subworkflow calls SNVs with DeepVariant and outputs: - // 1. A merged and normalised VCF, containing one sample with all regions, to be used in downstream subworkflows requiring SNVs. - // 2. A merged and normalised VCF, containing one region with all samples, to be used in annotation and ranking. - // - SHORT_VARIANT_CALLING( ch_snv_calling_in, fasta, fai, SCATTER_GENOME.out.bed, ch_par ) - ch_versions = ch_versions.mix(SHORT_VARIANT_CALLING.out.versions) - - // - // Annotate SNVs - // - if(!params.skip_snv_annotation) { - - // - // Annotates one multisample VCF per variant call region - // - SNV_ANNOTATION( - SHORT_VARIANT_CALLING.out.combined_bcf, - ch_databases.map { meta, databases -> databases }.collect(), - fasta, - fai.map { name, fai -> [ [ id: name ], fai ] }, - ch_vep_cache.map { meta, cache -> cache }, - params.vep_cache_version, - ch_vep_plugin_files.collect(), - (params.cadd_resources && params.cadd_prescored), - ch_cadd_header, - ch_cadd_resources, - ch_cadd_prescored - ) - ch_versions = ch_versions.mix(SNV_ANNOTATION.out.versions) - - ANN_CSQ_PLI_SNV ( - SNV_ANNOTATION.out.vcf, - ch_variant_consequences_snv - ) - ch_versions = ch_versions.mix(ANN_CSQ_PLI_SNV.out.versions) - - // Give pedfile meta from - ANN_CSQ_PLI_SNV.out.vcf - .combine(ch_updated_pedfile.map { meta, ped -> ped } ) - .map { meta, vcf, ped -> [ meta, ped ] } - .set { rank_snvs_ped_in } - - // - // Ranks one multisample VCF per variant call region - // Can only run if samplesheet has affected samples - // - if(!params.skip_rank_variants) { - // Only run if we have affected individuals - RANK_VARIANTS_SNV ( - ANN_CSQ_PLI_SNV.out.vcf, - rank_snvs_ped_in, - ch_reduced_penetrance, - ch_score_config_snv - ) - ch_versions = ch_versions.mix(RANK_VARIANTS_SNV.out.versions) - - // If RANK_VARIANTS has been run input that to VCF concatenation - RANK_VARIANTS_SNV.out.vcf - .join( RANK_VARIANTS_SNV.out.tbi ) - .set { ch_vcf_tbi_per_region } - } else { - // otherwise grab the VCF that should have gone into RANK_VARIANTS - ANN_CSQ_PLI_SNV.out.vcf - .join( ANN_CSQ_PLI_SNV.out.tbi ) - .set { ch_vcf_tbi_per_region } - } - } else { - // If neither snv_annotation nor rank_variants was run, take the output from - // SHORT_VARIANT_CALLING - SHORT_VARIANT_CALLING.out.combined_bcf - .join( SHORT_VARIANT_CALLING.out.combined_csi ) - .set { ch_vcf_tbi_per_region } - } + CALL_SVS.out.family_vcf + .set { annotate_svs_in } + } - ch_vcf_tbi_per_region - .map { meta, vcf, tbi -> [ [ id: meta.project ], vcf, tbi ] } - .groupTuple() - .set { ch_bcftools_concat_in } - - // Concat into a multisample VCF with all regions - BCFTOOLS_CONCAT ( ch_bcftools_concat_in ) - ch_versions = ch_versions.mix(BCFTOOLS_CONCAT.out.versions) - - // Sort and publish - BCFTOOLS_SORT ( BCFTOOLS_CONCAT.out.vcf ) - ch_versions = ch_versions.mix(BCFTOOLS_SORT.out.versions) - - // Make an echtvar database of all samples - ECHTVAR_ENCODE ( BCFTOOLS_SORT.out.vcf ) - ch_versions = ch_versions.mix(ECHTVAR_ENCODE.out.versions) - - // Split multisample VCF to also publish a VCF per sample - BCFTOOLS_PLUGINSPLIT_SNVS ( BCFTOOLS_SORT.out.vcf.join(BCFTOOLS_SORT.out.tbi ), [], [], [], [] ) - ch_versions = ch_versions.mix(BCFTOOLS_PLUGINSPLIT_SNVS.out.versions) - - BCFTOOLS_PLUGINSPLIT_SNVS.out.vcf - .transpose() - .map { meta, vcf -> [ meta, vcf, [] ] } - .set { ch_bcftools_stats_snv_in } - - BCFTOOLS_STATS ( ch_bcftools_stats_snv_in, [[],[]], [[],[]], [[],[]], [[],[]], [[],[]] ) - ch_versions = ch_versions.mix(BCFTOOLS_STATS.out.versions) - ch_multiqc_files = ch_multiqc_files.mix(BCFTOOLS_STATS.out.stats.collect{it[1]}.ifEmpty([])) - - // - // Call CNVs with HiFiCNV - // - if(!params.skip_cnv_calling) { - - CALL_CNVS ( - bam_bai.join(SHORT_VARIANT_CALLING.out.snp_calls_vcf), - fasta, - ch_expected_xy_bed, - ch_expected_xx_bed, - ch_exclude_bed - ) - ch_versions = ch_versions.mix(CALL_CNVS.out.versions) + // + // Call CNVs with HiFiCNV + // + if(!params.skip_cnv_calling) { - } + CALL_CNVS ( + bam_bai.join(SHORT_VARIANT_CALLING.out.snp_calls_vcf), + fasta, + ch_expected_xy_bed, + ch_expected_xx_bed, + ch_exclude_bed + ) + ch_versions = ch_versions.mix(CALL_CNVS.out.versions) - // - // Phase SNVs and INDELs - // - if(!params.skip_phasing_wf) { - - PHASING ( - SHORT_VARIANT_CALLING.out.snp_calls_vcf, - SHORT_VARIANT_CALLING.out.snp_calls_tbi, - bam_bai, - fasta, - fai - ) - ch_versions = ch_versions.mix(PHASING.out.versions) - - ch_multiqc_files = ch_multiqc_files.mix(PHASING.out.stats.collect{it[1]}.ifEmpty([])) - - // - // Call repeat expansions with TRGT - // - if(!params.skip_repeat_calling) { - - CALL_REPEAT_EXPANSIONS ( PHASING.out.haplotagged_bam_bai, fasta, fai, ch_trgt_bed ) - ch_versions = ch_versions.mix(CALL_REPEAT_EXPANSIONS.out.versions) - - // - // Annotate repeat expansions with stranger - // - if(!params.skip_repeat_annotation) { - ANNOTATE_REPEAT_EXPANSIONS ( - ch_variant_catalog, - CALL_REPEAT_EXPANSIONS.out.family_vcf - ) - ch_versions = ch_versions.mix(ANNOTATE_REPEAT_EXPANSIONS.out.versions) - } - } - } + } - // - // Create methylation pileups with modkit - // - if (!params.skip_methylation_wf) { - METHYLATION ( - !params.skip_phasing_wf ? PHASING.out.haplotagged_bam_bai : bam_bai, - fasta, - fai, - ch_input_bed, - ) - ch_versions = ch_versions.mix(METHYLATION.out.versions) - } - } + // + // Merge SVs and CNVs if we've called both SVs and CNVs + // + if (!params.skip_cnv_calling) { - // Merge SVs and CNVs if we've called both SVs and CNVs - if (!params.skip_cnv_calling) { - CALL_SVS.out.family_vcf + CALL_SVS.out.family_vcf .join(CALL_CNVS.out.family_vcf) .map { meta, svs, cnvs -> [ meta, [ svs, cnvs ] ] } .set { svdb_merge_svs_cnvs_in } - // If SV annotation is off, merged variants are output from here - SVDB_MERGE_SVS_CNVS ( - svdb_merge_svs_cnvs_in, - ['svs', 'cnvs'], // Because SVs have better breakpoint resolution, give them priority - true - ) - ch_versions = ch_versions.mix(SVDB_MERGE_SVS_CNVS.out.versions) - - if (params.skip_sv_annotation) { - // And tabixed here - TABIX_SVDB_MERGE_SVS_CNVS ( SVDB_MERGE_SVS_CNVS.out.vcf ) - ch_versions = ch_versions.mix(TABIX_SVDB_MERGE_SVS_CNVS.out.versions) - } + // If SV annotation is off, merged variants are output from here (should be a merge and index subworkflow) + SVDB_MERGE_SVS_CNVS ( + svdb_merge_svs_cnvs_in, + ['svs', 'cnvs'], // Because SVs have better breakpoint resolution, give them priority + true + ) + ch_versions = ch_versions.mix(SVDB_MERGE_SVS_CNVS.out.versions) - SVDB_MERGE_SVS_CNVS.out.vcf - .set { annotate_svs_in } + SVDB_MERGE_SVS_CNVS.out.vcf + .set { annotate_svs_in } + } - } else { - CALL_SVS.out.family_vcf - .set { annotate_svs_in } - } + // + // Index the merged SVs and SVs if not skipping sv annotation (should be a merge and index subworkflow) + // + if (!params.skip_sv_annotation) { - // - // Annotate structural variants - // - if(!params.skip_sv_annotation) { - // If annotation is on, then merged variants are output from here - ANNOTATE_SVS ( - annotate_svs_in, - fasta, - ch_svdb_dbs, - ch_vep_cache.map { meta, cache -> cache }, - params.vep_cache_version, - ch_vep_plugin_files.collect() - ) - - ANN_CSQ_PLI_SVS ( - ANNOTATE_SVS.out.vcf, - ch_variant_consequences_svs - ) - ch_versions = ch_versions.mix(ANN_CSQ_PLI_SVS.out.versions) - - if (!params.skip_rank_variants) { - RANK_VARIANTS_SVS ( - ANN_CSQ_PLI_SVS.out.vcf, - ch_updated_pedfile_family, - ch_reduced_penetrance, - ch_score_config_svs - ) - ch_versions = ch_versions.mix(RANK_VARIANTS_SVS.out.versions) - } + TABIX_SVDB_MERGE_SVS_CNVS ( SVDB_MERGE_SVS_CNVS.out.vcf ) + ch_versions = ch_versions.mix(TABIX_SVDB_MERGE_SVS_CNVS.out.versions) + } - } + // + // Annotate SVs + // + if (!params.skip_sv_annotation) { + + // If annotation is on, then merged variants are output from here + ANNOTATE_SVS ( + annotate_svs_in, + fasta, + ch_svdb_dbs, + PREPARE_GENOME.out.vep_resources.map { meta, cache -> cache }, + params.vep_cache_version, + ch_vep_plugin_files.collect() + ) + ch_versions = ch_versions.mix(ANNOTATE_SVS.out.versions) + + ANN_CSQ_PLI_SVS ( + ANNOTATE_SVS.out.vcf, + ch_variant_consequences_svs + ) + ch_versions = ch_versions.mix(ANN_CSQ_PLI_SVS.out.versions) + } + + // + // Rank SVs + // + if (!params.skip_rank_variants) { + + // Create PED with updated sex - per family + SOMALIER_PED_FAMILY ( + bam + .map { meta, files -> [ [ id: meta.family_id ], meta ] } + .groupTuple() + ) + ch_versions = ch_versions.mix(SOMALIER_PED_FAMILY.out.versions) + + RANK_VARIANTS_SVS ( + ANN_CSQ_PLI_SVS.out.vcf, + SOMALIER_PED_FAMILY.out.ped, + ch_reduced_penetrance, + ch_score_config_svs + ) + ch_versions = ch_versions.mix(RANK_VARIANTS_SVS.out.versions) + } + + // + // Phase SNVs and INDELs + // + if(!params.skip_mapping_wf && !params.skip_phasing_wf) { + + PHASING ( + SHORT_VARIANT_CALLING.out.snp_calls_vcf, + SHORT_VARIANT_CALLING.out.snp_calls_tbi, + bam_bai, + fasta, + fai + ) + ch_versions = ch_versions.mix(PHASING.out.versions) + + ch_multiqc_files = ch_multiqc_files.mix(PHASING.out.stats.collect{it[1]}.ifEmpty([])) + + } + + // + // Create methylation pileups with modkit + // + if(!params.skip_methylation_wf) { + METHYLATION ( + !params.skip_phasing_wf ? PHASING.out.haplotagged_bam_bai : bam_bai, + fasta, + fai, + ch_input_bed, + ) + ch_versions = ch_versions.mix(METHYLATION.out.versions) + } + + // + // Call repeat expansions with TRGT + // + if(!params.skip_repeat_calling) { + + CALL_REPEAT_EXPANSIONS ( PHASING.out.haplotagged_bam_bai, fasta, fai, ch_trgt_bed ) + ch_versions = ch_versions.mix(CALL_REPEAT_EXPANSIONS.out.versions) + } + + // + // Annotate repeat expansions with stranger + // + if(!params.skip_repeat_annotation) { + + ANNOTATE_REPEAT_EXPANSIONS ( ch_variant_catalog, CALL_REPEAT_EXPANSIONS.out.family_vcf ) + ch_versions = ch_versions.mix(ANNOTATE_REPEAT_EXPANSIONS.out.versions) } // From cf8abb51cb9347704e7d3673368f3f643cb8590e Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Fri, 15 Nov 2024 08:43:51 +0100 Subject: [PATCH 064/106] Fix CI not passing after merge (#498) --- .github/workflows/ci.yml | 6 +----- CHANGELOG.md | 1 + 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 08c1b0a3..7c466c2a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -51,10 +51,6 @@ jobs: uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 with: fetch-depth: 0 - - name: Fetch ${{ github.event.pull_request.base.ref }} branch - run: | - git remote add upstream ${{ github.event.repository.clone_url }} - git fetch upstream ${{ github.event.pull_request.base.ref }} - name: Set up Nextflow uses: nf-core/setup-nextflow@v2 @@ -75,7 +71,7 @@ jobs: run: | nf-test test \ --ci \ - --changed-since upstream/${{ github.event.pull_request.base.ref }} \ + --changed-since HEAD^ \ --verbose \ --tag ${{ matrix.tags }} \ --profile "+${{ matrix.profile }}" \ diff --git a/CHANGELOG.md b/CHANGELOG.md index 9cbd4974..39b40f2b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -89,6 +89,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#489](https://github.com/genomic-medicine-sweden/nallo/pull/489) - Updated nf-core template to 3.0.2 - [#493](https://github.com/genomic-medicine-sweden/nallo/pull/493) - Refactored `nallo.nf` to remove many nested ifs and easier to follow logic - [#493](https://github.com/genomic-medicine-sweden/nallo/pull/493) - Updated rank_variants dependencies with sv_annotation +- [#498](https://github.com/genomic-medicine-sweden/nallo/pull/498) - Updated CI to fix CI failures after merge ### `Removed` From b77eff4318fc682a00f80e65a2b2fe5830d6cbaa Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Mon, 18 Nov 2024 08:45:06 +0100 Subject: [PATCH 065/106] Annotate and rank SNVs per family (#502) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Annotate and rank SNVs per family * Update CHANGELOG again * remove mistakenly added file * Update output.md * Update subworkflows/local/short_variant_calling/main.nf Co-authored-by: Lucía Peña-Pérez --------- Co-authored-by: Lucía Peña-Pérez --- CHANGELOG.md | 6 + conf/modules/call_svs.config | 2 +- conf/modules/general.config | 23 +- docs/output.md | 110 ++++--- .../local/rank_variants/tests/main.nf.test | 2 +- .../local/short_variant_calling/main.nf | 20 +- .../tests/main.nf.test.snap | 288 +++++++----------- .../local/snv_annotation/tests/main.nf.test | 4 +- .../snv_annotation/tests/main.nf.test.snap | 10 +- .../local/utils_nfcore_nallo_pipeline/main.nf | 58 ++-- tests/samplesheet.nf.test.snap | 56 ++-- .../samplesheet_multisample_bam.nf.test.snap | 73 ++--- ...mplesheet_multisample_ont_bam.nf.test.snap | 75 ++--- workflows/nallo.nf | 55 ++-- 14 files changed, 328 insertions(+), 454 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 39b40f2b..83b7cccc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -90,6 +90,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#493](https://github.com/genomic-medicine-sweden/nallo/pull/493) - Refactored `nallo.nf` to remove many nested ifs and easier to follow logic - [#493](https://github.com/genomic-medicine-sweden/nallo/pull/493) - Updated rank_variants dependencies with sv_annotation - [#498](https://github.com/genomic-medicine-sweden/nallo/pull/498) - Updated CI to fix CI failures after merge +- [#502](https://github.com/genomic-medicine-sweden/nallo/pull/502) - Changed to annotating and ranking SNVs per family instead of per project +- [#502](https://github.com/genomic-medicine-sweden/nallo/pull/502) - Changed output documentation and structure to match `sample` and `family` for all variants +- [#502](https://github.com/genomic-medicine-sweden/nallo/pull/502) - Changed the way of validating the samplesheet to remove outputing false errors with `ifEmpty` ### `Removed` @@ -98,6 +101,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#379](https://github.com/genomic-medicine-sweden/nallo/pull/379) - Removed VEP Plugins from testdata ([genomic-medicine-sweden/test-datasets#16](https://github.com/genomic-medicine-sweden/test-datasets/pull/16)) - [#388](https://github.com/genomic-medicine-sweden/nallo/pull/388) - Removed support for co-phasing SVs with HiPhase, as the officially supported caller (pbsv) is not in the pipeline - [#412](https://github.com/genomic-medicine-sweden/nallo/pull/412) - Removed `bcftools/index`, as indexing is handled by other modules and no references remained. ([#377](https://github.com/genomic-medicine-sweden/nallo/issues/377)) +- [#502](https://github.com/genomic-medicine-sweden/nallo/pull/502) - Removed support for automatically creating an echvar database with SNVs and INDELs +- [#502](https://github.com/genomic-medicine-sweden/nallo/pull/502) - Removed `containts_affected` logic from the snv-calling workflow, since this was previously changed to be checked before pipeline start ### `Fixed` @@ -108,6 +113,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#402](https://github.com/genomic-medicine-sweden/nallo/pull/402) - Fixed double sample names in HiFiCNV output - [#438](https://github.com/genomic-medicine-sweden/nallo/pull/438) - Fixed missing/malformed software versions in `ADD_FOUND_IN_TAG`, `ADD_MOST_SEVERE_CSQ`, `ADD_MOST_SEVERE_PLI`, `SAMPLESHEET_PED`, `SOMALIER_PED` and `TRGT` - [#444](https://github.com/genomic-medicine-sweden/nallo/pull/444) - Fixed genmod assigning wrong models on chromosome X when named `chrX` ([#343](https://github.com/genomic-medicine-sweden/nallo/issues/343)) +- [#502](https://github.com/genomic-medicine-sweden/nallo/pull/502) - Fixed genmod only scoring compounds in one family [#501](https://github.com/genomic-medicine-sweden/nallo/issues/501) ### Parameters diff --git a/conf/modules/call_svs.config b/conf/modules/call_svs.config index 8781e3fd..2969b1ff 100644 --- a/conf/modules/call_svs.config +++ b/conf/modules/call_svs.config @@ -75,7 +75,7 @@ process { '--write-index=tbi' ].join(' ') publishDir = [ - path: { "${params.outdir}/svs/single_sample/${meta.id}" }, + path: { "${params.outdir}/svs/sample/${meta.id}" }, mode: params.publish_dir_mode, saveAs: { filename -> filename.equals('versions.yml') ? null : filename } ] diff --git a/conf/modules/general.config b/conf/modules/general.config index bcec5299..5560368e 100644 --- a/conf/modules/general.config +++ b/conf/modules/general.config @@ -27,7 +27,7 @@ process { withName: '.*:NALLO:BCFTOOLS_STATS' { ext.prefix = { "${vcf}" } publishDir = [ - path: { "${params.outdir}/snvs/stats/single_sample" }, + path: { "${params.outdir}/snvs/stats/sample" }, mode: params.publish_dir_mode, saveAs: { filename -> filename.equals('versions.yml') ? null : filename } ] @@ -51,7 +51,7 @@ process { '--write-index=tbi' ].join(' ') } publishDir = [ - path: { "${params.outdir}/snvs/multi_sample/${meta.id}" }, + path: { "${params.outdir}/snvs/family/${meta.id}" }, mode: params.publish_dir_mode, saveAs: { filename -> filename.equals('versions.yml') ? null : filename } ] @@ -64,7 +64,7 @@ process { '--write-index=tbi' ].join(' ') publishDir = [ - path: { "${params.outdir}/snvs/single_sample/" }, + path: { "${params.outdir}/snvs/sample/" }, mode: params.publish_dir_mode, // Can't use prefix as it would come from the original file saveAs: { filename -> @@ -88,7 +88,7 @@ process { '--write-index=tbi' ].join(' ') publishDir = [ - path: { "${params.outdir}/svs/single_sample/" }, + path: { "${params.outdir}/svs/sample/" }, mode: params.publish_dir_mode, // Can't use prefix as it would come from the original file saveAs: { filename -> @@ -111,13 +111,6 @@ process { ] } - withName: '.*:NALLO:SOMALIER_PED' { - publishDir = [ - path: { "${params.outdir}/pedigree/project/" }, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename }, - ] - } - withName: '.*:NALLO:SOMALIER_PED_FAMILY' { publishDir = [ path: { "${params.outdir}/pedigree/family/" }, @@ -198,14 +191,6 @@ process { ] } - withName: '.*:NALLO:ECHTVAR_ENCODE' { - publishDir = [ - path: { "${params.outdir}/databases/echtvar/encode/${meta.id}" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] - } - /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Summary diff --git a/docs/output.md b/docs/output.md index a3bb523a..0cf4f471 100644 --- a/docs/output.md +++ b/docs/output.md @@ -1,5 +1,7 @@ # genomic-medicine-sweden/nallo: Output +In general, annotated variant calls are output per family, while unannotated calls are output per sample. + ## Aligned reads [Minimap2](https://github.com/lh3/minimap2) is used to map the reads to a reference genome. The aligned reads are sorted, (merged) and indexed using [samtools](https://github.com/samtools/samtools). @@ -121,17 +123,12 @@ If the pipeline is run with phasing, the aligned reads will be happlotagged usin [somalier](https://github.com/brentp/somalier) checks relatedness and sex. -| Path | Description | -| ----------------------------------------------------- | ------------------------------------------------------- | -| `pedigree/{project}/{project}.ped` | PED file updated with somalier-inferred sex per project | -| `pedigree/{family}/{family).ped` | PED file updated with somalier-inferred sex per family | -| `qc/somalier/relate/{project}/{project}.html` | HTML report | -| `qc/somalier/relate/{project}/{project}.pairs.tsv` | Information about sample pairs | -| `/qc/somalier/relate/{project}/{project}.samples.tsv` | Information about individual samples | - -| Path | Description | -| ------------------------- | ------------------------------------------- | -| `predigree/{project}.ped` | PED file updated with somalier-inferred sex | +| Path | Description | +| ---------------------------------------------------- | ------------------------------------------------------ | +| `pedigree/family/{family).ped` | PED file updated with somalier-inferred sex per family | +| `qc/somalier/relate/{project}/{project}.html` | HTML report | +| `qc/somalier/relate/{project}/{project}.pairs.tsv` | Information about sample pairs | +| `qc/somalier/relate/{project}/{project}.samples.tsv` | Information about individual samples | ### DeepVariant @@ -147,13 +144,13 @@ If the pipeline is run with phasing, the aligned reads will be happlotagged usin [Paraphase](https://github.com/PacificBiosciences/paraphase) is used to call paralogous genes. -| Path | Description | -| ----------------------------------------------------------- | --------------------------------------- | -| `paraphase/{sample}/*.bam` | BAM file with haplotypes grouped by HP | -| `paraphase/{sample}/*.bai` | Index of the BAM file | -| `paraphase/{sample}/*.json` | Summary of haplotypes and variant calls | -| `paraphase/{sample}_paraphase_vcfs/{sample}_{gene}_vcf` | VCF file per gene | -| `paraphase/{sample}_paraphase_vcfs/{sample}_{gene}_vcf.tbi` | Index of the VCF file | +| Path | Description | +| -------------------------------------------------------------------- | --------------------------------------- | +| `paraphase/{sample}/*.bam` | BAM file with haplotypes grouped by HP | +| `paraphase/{sample}/*.bai` | Index of the BAM file | +| `paraphase/{sample}/*.json` | Summary of haplotypes and variant calls | +| `paraphase/{sample}/{sample}_paraphase_vcfs/{sample}_{gene}_vcf` | VCF file per gene | +| `paraphase/{sample}/{sample}_paraphase_vcfs/{sample}_{gene}_vcf.tbi` | Index of the VCF file | ### Repeats @@ -163,21 +160,21 @@ If the pipeline is run with phasing, the aligned reads will be happlotagged usin Merged variants per family are only output without annotation if `--skip_repeat_annotation` is true. Variants per sample are always output without annotation. -| Path | Description | -| -------------------------------------------------------- | ----------------------------------------- | -| `repeats/{family}/{family}_repeat_expansions.vcf.gz` | Merged VCF file per family | -| `repeats/{family}/{family}_repeat_expansions.vcf.gz.tbi` | Index of the VCF file | -| `repeats/sample/{sample}/{sample}_sorted.vcf.gz` | VCF file with called repeats for a sample | -| `repeats/sample/{sample}/{sample}_sorted.vcf.gz.tbi` | Index of the VCF file | -| `repeats/sample/{sample}/{sample}_spanning_sorted.bam` | BAM file with sorted spanning reads | -| `repeats/sample/{sample}/{sample}_spanning_sorted.bai` | Index of the BAM file | +| Path | Description | +| --------------------------------------------------------------- | ----------------------------------------- | +| `repeats/family/{family}/{family}_repeat_expansions.vcf.gz` | Merged VCF file per family | +| `repeats/family/{family}/{family}_repeat_expansions.vcf.gz.tbi` | Index of the VCF file | +| `repeats/sample/{sample}/{sample}_sorted.vcf.gz` | VCF file with called repeats for a sample | +| `repeats/sample/{sample}/{sample}_sorted.vcf.gz.tbi` | Index of the VCF file | +| `repeats/sample/{sample}/{sample}_spanning_sorted.bam` | BAM file with sorted spanning reads | +| `repeats/sample/{sample}/{sample}_spanning_sorted.bai` | Index of the BAM file | [Stranger](https://github.com/Clinical-Genomics/stranger) is used to annotate repeats. -| Path | Description | -| ---------------------------------------------------------------------------- | ------------------------------------- | -| `repeat_expansions/{family}/{family}_repeat_expansions_annotated.vcf.gz` | Merged, annotated VCF file per family | -| `repeat_expansions/{family}/{family}_repeat_expansions_annotated.vcf.gz.tbi` | Index of the VCF file | +| Path | Description | +| ----------------------------------------------------------------------------------- | ------------------------------------- | +| `repeat_expansions/family/{family}/{family}_repeat_expansions_annotated.vcf.gz` | Merged, annotated VCF file per family | +| `repeat_expansions/family/{family}/{family}_repeat_expansions_annotated.vcf.gz.tbi` | Index of the VCF file | ### SNVs @@ -189,11 +186,11 @@ If the pipeline is run with phasing, the aligned reads will be happlotagged usin | Path | Description | | --------------------------------------------------------------------- | --------------------------------------------------------------------------- | -| `snvs/single_sample/{sample}/{sample}_snv.vcf.gz` | VCF file containing called variants with alternative genotypes for a sample | -| `snvs/single_sample/{sample}/{sample}_snv.vcf.gz.tbi` | Index of the corresponding VCF file | -| `snvs/multi_sample/{project}/{project}_snv.vcf.gz` | VCF file containing called variants for all samples | -| `snvs/multi_sample/{project}/{project}_snv.vcf.gz.tbi` | Index of the corresponding VCF file | -| `snvs/stats/single_sample/*.stats.txt` | Variant statistics | +| `snvs/sample/{sample}/{sample}_snv.vcf.gz` | VCF file containing called variants with alternative genotypes for a sample | +| `snvs/sample/{sample}/{sample}_snv.vcf.gz.tbi` | Index of the corresponding VCF file | +| `snvs/family/{family}/{family}_snv.vcf.gz` | VCF file containing called variants for all samples | +| `snvs/family/{family}/{family}_snv.vcf.gz.tbi` | Index of the corresponding VCF file | +| `snvs/stats/sample/*.stats.txt` | Variant statistics | | `qc/deepvariant_vcfstatsreport/{sample}/${sample}.visual_report.html` | Visual report of SNV calls from DeepVariant | [echtvar](https://github.com/brentp/echtvar) and [VEP](https://www.ensembl.org/vep) are used for annotating SNVs, while [CADD](https://cadd.gs.washington.edu/) is used to annotate INDELs with CADD scores. @@ -202,22 +199,21 @@ If the pipeline is run with phasing, the aligned reads will be happlotagged usin Variants are only output without ranking if that subworkflows are turned off. -| Path | Description | -| ---------------------------------------------------------------- | ------------------------------------------------------------------------------ | -| `databases/echtvar/encode/{project}/*.zip` | Database with allele frequency (AF) and allele count (AC) for all samples | -| `snvs/single_sample/{sample}/{sample}_snv_annotated.vcf.gz` | VCF file containing annotated variants with alternative genotypes for a sample | -| `snvs/single_sample/{sample}/{sample}_snv_annotated.vcf.gz.tbi` | Index of the annotated VCF file | -| `snvs/multi_sample/{project}/{project}_snv_annotated.vcf.gz` | VCF file containing annotated variants for all samples | -| `snvs/multi_sample/{project}/{project}_snv_annotated.vcf.gz.tbi` | Index of the annotated VCF file | +| Path | Description | +| -------------------------------------------------------- | ------------------------------------------------------------------------------ | +| `snvs/sample/{sample}/{sample}_snv_annotated.vcf.gz` | VCF file containing annotated variants with alternative genotypes for a sample | +| `snvs/sample/{sample}/{sample}_snv_annotated.vcf.gz.tbi` | Index of the annotated VCF file | +| `snvs/family/{family}/{family}_snv_annotated.vcf.gz` | VCF file containing annotated variants per family | +| `snvs/family/{family}/{family}_snv_annotated.vcf.gz.tbi` | Index of the annotated VCF file | [GENMOD](https://github.com/Clinical-Genomics/genmod) is used to rank the annotated SNVs and INDELs. -| Path | Description | -| ----------------------------------------------------------------------- | ----------------------------------------------------------- | -| `snvs/single_sample/{sample}/{sample}_snv_annotated_ranked.vcf.gz` | VCF file with annotated and ranked variants for a sample | -| `snvs/single_sample/{sample}/{sample}_snv_annotated_ranked.vcf.gz.tbi` | Index of the ranked VCF file | -| `snvs/multi_sample/{project}/{project}_snv_annotated_ranked.vcf.gz` | VCF file with annotated and ranked variants for all samples | -| `snvs/multi_sample/{project}/{project}_snv_annotated_ranked.vcf.gz.tbi` | Index of the ranked VCF file | +| Path | Description | +| --------------------------------------------------------------- | -------------------------------------------------------- | +| `snvs/sample/{sample}/{sample}_snv_annotated_ranked.vcf.gz` | VCF file with annotated and ranked variants for a sample | +| `snvs/sample/{sample}/{sample}_snv_annotated_ranked.vcf.gz.tbi` | Index of the ranked VCF file | +| `snvs/family/{family}/{family}_snv_annotated_ranked.vcf.gz` | VCF file with annotated and ranked variants per family | +| `snvs/family/{family}/{family}_snv_annotated_ranked.vcf.gz.tbi` | Index of the ranked VCF file | ### SVs (and CNVs) @@ -242,10 +238,10 @@ If the pipeline is run with phasing, the aligned reads will be happlotagged usin | `svs/family/{family_id}/{family_id}_cnvs_svs_merged.vcf.gz.tbi` | Index of the merged VCF file | | `svs/family/{family_id}/{family_id}_svs_merged.vcf.gz` | VCF file with merged SVs per family (output if CNV-calling is off) | | `svs/family/{family_id}/{family_id}_svs_merged.vcf.gz.tbi` | Index of the merged VCF file | -| `svs/single_sample/{sample}/{sample}_cnvs.vcf.gz` | VCF file with CNVs per sample | -| `svs/single_sample/{sample}/{sample}_cnvs.vcf.gz.tbi` | VCF file with CNVs per sample | -| `svs/single_sample/{sample}/{sample}_svs.vcf.gz` | VCF file with SVs per sample | -| `svs/single_sample/{sample}/{sample}_svs.vcf.gz.tbi` | VCF file with SVs per sample | +| `svs/sample/{sample}/{sample}_cnvs.vcf.gz` | VCF file with CNVs per sample | +| `svs/sample/{sample}/{sample}_cnvs.vcf.gz.tbi` | VCF file with CNVs per sample | +| `svs/sample/{sample}/{sample}_svs.vcf.gz` | VCF file with SVs per sample | +| `svs/sample/{sample}/{sample}_svs.vcf.gz.tbi` | VCF file with SVs per sample | [SVDB](https://github.com/J35P312/SVDB) and [VEP](https://www.ensembl.org/vep) are used to annotate structural variants. @@ -269,8 +265,8 @@ If the pipeline is run with phasing, the aligned reads will be happlotagged usin [HiFiCNV](https://github.com/PacificBiosciences/HiFiCNV) is used to call CNVs, but it also produces copy number, depth, and MAF tracks that can be visualized in for example IGV. -| Path | Description | -| --------------------------------------------------- | ----------------------------------------- | -|  `visualization_tracks/{sample}/*.copynum.bedgraph` | Copy number in bedgraph format | -| `visualization_tracks/{sample}/*.depth.bw` | Depth track in BigWig format | -| `visualization_tracks/{sample}/*.maf.bw` | Minor allele frequencies in BigWig format | +| Path | Description | +| -------------------------------------------------- | ----------------------------------------- | +| `visualization_tracks/{sample}/*.copynum.bedgraph` | Copy number in bedgraph format | +| `visualization_tracks/{sample}/*.depth.bw` | Depth track in BigWig format | +| `visualization_tracks/{sample}/*.maf.bw` | Minor allele frequencies in BigWig format | diff --git a/subworkflows/local/rank_variants/tests/main.nf.test b/subworkflows/local/rank_variants/tests/main.nf.test index 4be209d1..aba1c085 100644 --- a/subworkflows/local/rank_variants/tests/main.nf.test +++ b/subworkflows/local/rank_variants/tests/main.nf.test @@ -60,7 +60,7 @@ nextflow_workflow { script "../../snv_annotation/main.nf" process { """ - input[0] = SHORT_VARIANT_CALLING.out.combined_bcf + input[0] = SHORT_VARIANT_CALLING.out.family_bcf input[1] = [ file(params.pipelines_testdata_base_path + 'reference/cadd.v1.6.hg38.test_data.zip', checkIfExists: true) ] diff --git a/subworkflows/local/short_variant_calling/main.nf b/subworkflows/local/short_variant_calling/main.nf index d7183dca..3b743847 100644 --- a/subworkflows/local/short_variant_calling/main.nf +++ b/subworkflows/local/short_variant_calling/main.nf @@ -61,22 +61,12 @@ workflow SHORT_VARIANT_CALLING { BCFTOOLS_NORM_SINGLESAMPLE ( BCFTOOLS_CONCAT.out.vcf.map { meta, vcf -> [ meta, vcf, [] ] }, ch_fasta ) ch_versions = ch_versions.mix(BCFTOOLS_NORM_SINGLESAMPLE.out.versions) - // This creates a multisample VCF, with regions from ONE bed file + // This creates one multisample VCF per family, with regions from ONE bed file DEEPVARIANT_RUNDEEPVARIANT.out.gvcf .map { meta, gvcf -> - [ meta.region.name, meta.project, meta.phenotype == 2, gvcf ] - } - .groupTuple() // Group all files together per region - // If any of the samples in the VCF have an affected phenotype (2) - // add this to the meta of the multisample VCF to know if we should run RANK_VARIANTS or not - .map { meta, project, affected, gvcfs -> - new_meta = [ - 'id': meta, - 'project': project.first(), // Works only because only one project per run is allowed - 'contains_affected': affected.any(), - ] - [ new_meta, gvcfs ] + [ [ id:meta.region.name, family_id:meta.family_id ], gvcf ] } + .groupTuple() // Groups files from the same family together per region .set{ glnexus_in } GLNEXUS( glnexus_in, ch_bed ) @@ -107,8 +97,8 @@ workflow SHORT_VARIANT_CALLING { emit: snp_calls_vcf = BCFTOOLS_NORM_SINGLESAMPLE.out.vcf // channel: [ val(meta), path(vcf) ] snp_calls_tbi = BCFTOOLS_NORM_SINGLESAMPLE.out.tbi // channel: [ val(meta), path(tbi) ] - combined_bcf = BCFTOOLS_NORM_MULTISAMPLE.out.vcf // channel: [ val(meta), path(bcf) ] - combined_csi = BCFTOOLS_NORM_MULTISAMPLE.out.csi // channel: [ val(meta), path(csi) ] + family_bcf = BCFTOOLS_NORM_MULTISAMPLE.out.vcf // channel: [ val(meta), path(bcf) ] + family_csi = BCFTOOLS_NORM_MULTISAMPLE.out.csi // channel: [ val(meta), path(csi) ] vcfstatsreport = DEEPVARIANT_VCFSTATSREPORT.out.report // channel: [ val(meta), path(html) ] versions = ch_versions // channel: [ path(versions.yml) ] } diff --git a/subworkflows/local/short_variant_calling/tests/main.nf.test.snap b/subworkflows/local/short_variant_calling/tests/main.nf.test.snap index 9e8570ee..8dec0cb3 100644 --- a/subworkflows/local/short_variant_calling/tests/main.nf.test.snap +++ b/subworkflows/local/short_variant_calling/tests/main.nf.test.snap @@ -24,8 +24,7 @@ [ { "id": "genome.bed", - "project": null, - "contains_affected": false + "family_id": null }, "genome.bed_norm_multisample.vcf.gz:md5,5d1828b40d43a2a18e30b1dffffd99b0" ] @@ -34,8 +33,7 @@ [ { "id": "genome.bed", - "project": null, - "contains_affected": false + "family_id": null }, "genome.bed_norm_multisample.vcf.gz.csi:md5,83a0cecdb72c82ae0f5fc56f1426f5c0" ] @@ -59,22 +57,20 @@ "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ], - "combined_bcf": [ + "family_bcf": [ [ { "id": "genome.bed", - "project": null, - "contains_affected": false + "family_id": null }, "genome.bed_norm_multisample.vcf.gz:md5,5d1828b40d43a2a18e30b1dffffd99b0" ] ], - "combined_csi": [ + "family_csi": [ [ { "id": "genome.bed", - "project": null, - "contains_affected": false + "family_id": null }, "genome.bed_norm_multisample.vcf.gz.csi:md5,83a0cecdb72c82ae0f5fc56f1426f5c0" ] @@ -122,7 +118,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-11-04T16:32:32.7841728" + "timestamp": "2024-11-12T18:13:18.281203796" }, "1 sample - 2 bed, fasta, fai, bed, [] - stub": { "content": [ @@ -149,16 +145,14 @@ [ { "id": "genome.bed", - "project": null, - "contains_affected": false + "family_id": null }, "genome.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ], [ { "id": "genome.multi_intervals.bed", - "project": null, - "contains_affected": false + "family_id": null }, "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] @@ -167,16 +161,14 @@ [ { "id": "genome.bed", - "project": null, - "contains_affected": false + "family_id": null }, "genome.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ { "id": "genome.multi_intervals.bed", - "project": null, - "contains_affected": false + "family_id": null }, "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -205,38 +197,34 @@ "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ], - "combined_bcf": [ + "family_bcf": [ [ { "id": "genome.bed", - "project": null, - "contains_affected": false + "family_id": null }, "genome.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ], [ { "id": "genome.multi_intervals.bed", - "project": null, - "contains_affected": false + "family_id": null }, "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], - "combined_csi": [ + "family_csi": [ [ { "id": "genome.bed", - "project": null, - "contains_affected": false + "family_id": null }, "genome.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ { "id": "genome.multi_intervals.bed", - "project": null, - "contains_affected": false + "family_id": null }, "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -289,7 +277,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-11-04T16:36:05.888336005" + "timestamp": "2024-11-12T18:16:17.601722369" }, "1 sample - 1 bed, fasta, fai, bed, []": { "content": [ @@ -316,8 +304,7 @@ [ { "id": "genome.bed", - "project": null, - "contains_affected": false + "family_id": null }, "genome.bed_norm_multisample.vcf.gz:md5,5d1828b40d43a2a18e30b1dffffd99b0" ] @@ -326,8 +313,7 @@ [ { "id": "genome.bed", - "project": null, - "contains_affected": false + "family_id": null }, "genome.bed_norm_multisample.vcf.gz.csi:md5,83a0cecdb72c82ae0f5fc56f1426f5c0" ] @@ -351,22 +337,20 @@ "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ], - "combined_bcf": [ + "family_bcf": [ [ { "id": "genome.bed", - "project": null, - "contains_affected": false + "family_id": null }, "genome.bed_norm_multisample.vcf.gz:md5,5d1828b40d43a2a18e30b1dffffd99b0" ] ], - "combined_csi": [ + "family_csi": [ [ { "id": "genome.bed", - "project": null, - "contains_affected": false + "family_id": null }, "genome.bed_norm_multisample.vcf.gz.csi:md5,83a0cecdb72c82ae0f5fc56f1426f5c0" ] @@ -414,7 +398,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-11-04T16:33:12.370911679" + "timestamp": "2024-11-12T18:13:48.779934595" }, "2 samples - 2 bed, fasta, fai, bed, par_bed": { "content": [ @@ -455,16 +439,14 @@ [ { "id": "genome.bed", - "project": null, - "contains_affected": false + "family_id": null }, "genome.bed_norm_multisample.vcf.gz:md5,ce3866081a0bb6d9bd0df30dd3361213" ], [ { "id": "genome.multi_intervals.bed", - "project": null, - "contains_affected": false + "family_id": null }, "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,ce3866081a0bb6d9bd0df30dd3361213" ] @@ -473,16 +455,14 @@ [ { "id": "genome.bed", - "project": null, - "contains_affected": false + "family_id": null }, "genome.bed_norm_multisample.vcf.gz.csi:md5,95eecbb89b9a60ecebc292e36ab4ebcf" ], [ { "id": "genome.multi_intervals.bed", - "project": null, - "contains_affected": false + "family_id": null }, "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,95eecbb89b9a60ecebc292e36ab4ebcf" ] @@ -523,38 +503,34 @@ "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ], - "combined_bcf": [ + "family_bcf": [ [ { "id": "genome.bed", - "project": null, - "contains_affected": false + "family_id": null }, "genome.bed_norm_multisample.vcf.gz:md5,ce3866081a0bb6d9bd0df30dd3361213" ], [ { "id": "genome.multi_intervals.bed", - "project": null, - "contains_affected": false + "family_id": null }, "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,ce3866081a0bb6d9bd0df30dd3361213" ] ], - "combined_csi": [ + "family_csi": [ [ { "id": "genome.bed", - "project": null, - "contains_affected": false + "family_id": null }, "genome.bed_norm_multisample.vcf.gz.csi:md5,95eecbb89b9a60ecebc292e36ab4ebcf" ], [ { "id": "genome.multi_intervals.bed", - "project": null, - "contains_affected": false + "family_id": null }, "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,95eecbb89b9a60ecebc292e36ab4ebcf" ] @@ -633,7 +609,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-11-04T16:35:11.690919461" + "timestamp": "2024-11-12T18:15:32.090234345" }, "2 samples - 2 bed, fasta, fai, bed, [] - stub": { "content": [ @@ -674,16 +650,14 @@ [ { "id": "genome.bed", - "project": null, - "contains_affected": false + "family_id": null }, "genome.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ], [ { "id": "genome.multi_intervals.bed", - "project": null, - "contains_affected": false + "family_id": null }, "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] @@ -692,16 +666,14 @@ [ { "id": "genome.bed", - "project": null, - "contains_affected": false + "family_id": null }, "genome.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ { "id": "genome.multi_intervals.bed", - "project": null, - "contains_affected": false + "family_id": null }, "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -742,38 +714,34 @@ "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ], - "combined_bcf": [ + "family_bcf": [ [ { "id": "genome.bed", - "project": null, - "contains_affected": false + "family_id": null }, "genome.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ], [ { "id": "genome.multi_intervals.bed", - "project": null, - "contains_affected": false + "family_id": null }, "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], - "combined_csi": [ + "family_csi": [ [ { "id": "genome.bed", - "project": null, - "contains_affected": false + "family_id": null }, "genome.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ { "id": "genome.multi_intervals.bed", - "project": null, - "contains_affected": false + "family_id": null }, "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -852,7 +820,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-11-04T16:36:19.778517029" + "timestamp": "2024-11-12T18:16:31.350382929" }, "2 samples - 2 bed, fasta, fai, bed, par_bed - stub": { "content": [ @@ -893,16 +861,14 @@ [ { "id": "genome.bed", - "project": null, - "contains_affected": false + "family_id": null }, "genome.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ], [ { "id": "genome.multi_intervals.bed", - "project": null, - "contains_affected": false + "family_id": null }, "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] @@ -911,16 +877,14 @@ [ { "id": "genome.bed", - "project": null, - "contains_affected": false + "family_id": null }, "genome.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ { "id": "genome.multi_intervals.bed", - "project": null, - "contains_affected": false + "family_id": null }, "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -961,38 +925,34 @@ "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ], - "combined_bcf": [ + "family_bcf": [ [ { "id": "genome.bed", - "project": null, - "contains_affected": false + "family_id": null }, "genome.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ], [ { "id": "genome.multi_intervals.bed", - "project": null, - "contains_affected": false + "family_id": null }, "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], - "combined_csi": [ + "family_csi": [ [ { "id": "genome.bed", - "project": null, - "contains_affected": false + "family_id": null }, "genome.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ { "id": "genome.multi_intervals.bed", - "project": null, - "contains_affected": false + "family_id": null }, "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -1071,7 +1031,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-11-04T16:36:33.89917989" + "timestamp": "2024-11-12T18:16:44.845313016" }, "1 sample - 1 bed, fasta, fai, bed, [] - stub": { "content": [ @@ -1098,8 +1058,7 @@ [ { "id": "genome.bed", - "project": null, - "contains_affected": false + "family_id": null }, "genome.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] @@ -1108,8 +1067,7 @@ [ { "id": "genome.bed", - "project": null, - "contains_affected": false + "family_id": null }, "genome.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -1133,22 +1091,20 @@ "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ], - "combined_bcf": [ + "family_bcf": [ [ { "id": "genome.bed", - "project": null, - "contains_affected": false + "family_id": null }, "genome.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], - "combined_csi": [ + "family_csi": [ [ { "id": "genome.bed", - "project": null, - "contains_affected": false + "family_id": null }, "genome.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -1196,7 +1152,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-11-04T16:35:53.449459889" + "timestamp": "2024-11-12T18:16:05.823110437" }, "1 sample - no bed, fasta, fai, [], []": { "content": [ @@ -1225,8 +1181,7 @@ "id": [ ], - "project": null, - "contains_affected": false + "family_id": null }, "[]_norm_multisample.vcf.gz:md5,5d1828b40d43a2a18e30b1dffffd99b0" ] @@ -1237,8 +1192,7 @@ "id": [ ], - "project": null, - "contains_affected": false + "family_id": null }, "[]_norm_multisample.vcf.gz.csi:md5,83a0cecdb72c82ae0f5fc56f1426f5c0" ] @@ -1262,26 +1216,24 @@ "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ], - "combined_bcf": [ + "family_bcf": [ [ { "id": [ ], - "project": null, - "contains_affected": false + "family_id": null }, "[]_norm_multisample.vcf.gz:md5,5d1828b40d43a2a18e30b1dffffd99b0" ] ], - "combined_csi": [ + "family_csi": [ [ { "id": [ ], - "project": null, - "contains_affected": false + "family_id": null }, "[]_norm_multisample.vcf.gz.csi:md5,83a0cecdb72c82ae0f5fc56f1426f5c0" ] @@ -1329,7 +1281,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-11-04T16:31:59.210062583" + "timestamp": "2024-11-12T18:12:47.703475448" }, "1 sample - 2 bed, fasta, fai, bed, []": { "content": [ @@ -1356,16 +1308,14 @@ [ { "id": "genome.bed", - "project": null, - "contains_affected": false + "family_id": null }, "genome.bed_norm_multisample.vcf.gz:md5,5d1828b40d43a2a18e30b1dffffd99b0" ], [ { "id": "genome.multi_intervals.bed", - "project": null, - "contains_affected": false + "family_id": null }, "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,5d1828b40d43a2a18e30b1dffffd99b0" ] @@ -1374,16 +1324,14 @@ [ { "id": "genome.bed", - "project": null, - "contains_affected": false + "family_id": null }, "genome.bed_norm_multisample.vcf.gz.csi:md5,83a0cecdb72c82ae0f5fc56f1426f5c0" ], [ { "id": "genome.multi_intervals.bed", - "project": null, - "contains_affected": false + "family_id": null }, "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,83a0cecdb72c82ae0f5fc56f1426f5c0" ] @@ -1412,38 +1360,34 @@ "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ], - "combined_bcf": [ + "family_bcf": [ [ { "id": "genome.bed", - "project": null, - "contains_affected": false + "family_id": null }, "genome.bed_norm_multisample.vcf.gz:md5,5d1828b40d43a2a18e30b1dffffd99b0" ], [ { "id": "genome.multi_intervals.bed", - "project": null, - "contains_affected": false + "family_id": null }, "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,5d1828b40d43a2a18e30b1dffffd99b0" ] ], - "combined_csi": [ + "family_csi": [ [ { "id": "genome.bed", - "project": null, - "contains_affected": false + "family_id": null }, "genome.bed_norm_multisample.vcf.gz.csi:md5,83a0cecdb72c82ae0f5fc56f1426f5c0" ], [ { "id": "genome.multi_intervals.bed", - "project": null, - "contains_affected": false + "family_id": null }, "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,83a0cecdb72c82ae0f5fc56f1426f5c0" ] @@ -1496,7 +1440,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-11-04T16:33:50.391467443" + "timestamp": "2024-11-12T18:14:21.10363239" }, "2 samples - 2 bed, fasta, fai, bed, []": { "content": [ @@ -1537,16 +1481,14 @@ [ { "id": "genome.bed", - "project": null, - "contains_affected": false + "family_id": null }, "genome.bed_norm_multisample.vcf.gz:md5,ce3866081a0bb6d9bd0df30dd3361213" ], [ { "id": "genome.multi_intervals.bed", - "project": null, - "contains_affected": false + "family_id": null }, "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,ce3866081a0bb6d9bd0df30dd3361213" ] @@ -1555,16 +1497,14 @@ [ { "id": "genome.bed", - "project": null, - "contains_affected": false + "family_id": null }, "genome.bed_norm_multisample.vcf.gz.csi:md5,95eecbb89b9a60ecebc292e36ab4ebcf" ], [ { "id": "genome.multi_intervals.bed", - "project": null, - "contains_affected": false + "family_id": null }, "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,95eecbb89b9a60ecebc292e36ab4ebcf" ] @@ -1605,38 +1545,34 @@ "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ], - "combined_bcf": [ + "family_bcf": [ [ { "id": "genome.bed", - "project": null, - "contains_affected": false + "family_id": null }, "genome.bed_norm_multisample.vcf.gz:md5,ce3866081a0bb6d9bd0df30dd3361213" ], [ { "id": "genome.multi_intervals.bed", - "project": null, - "contains_affected": false + "family_id": null }, "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,ce3866081a0bb6d9bd0df30dd3361213" ] ], - "combined_csi": [ + "family_csi": [ [ { "id": "genome.bed", - "project": null, - "contains_affected": false + "family_id": null }, "genome.bed_norm_multisample.vcf.gz.csi:md5,95eecbb89b9a60ecebc292e36ab4ebcf" ], [ { "id": "genome.multi_intervals.bed", - "project": null, - "contains_affected": false + "family_id": null }, "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,95eecbb89b9a60ecebc292e36ab4ebcf" ] @@ -1715,7 +1651,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-11-04T16:34:29.736634447" + "timestamp": "2024-11-12T18:14:56.572901896" }, "1 sample - no bed, fasta, fai, [], [] - stub": { "content": [ @@ -1744,8 +1680,7 @@ "id": [ ], - "project": null, - "contains_affected": false + "family_id": null }, "[]_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] @@ -1756,8 +1691,7 @@ "id": [ ], - "project": null, - "contains_affected": false + "family_id": null }, "[]_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -1781,26 +1715,24 @@ "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ], - "combined_bcf": [ + "family_bcf": [ [ { "id": [ ], - "project": null, - "contains_affected": false + "family_id": null }, "[]_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], - "combined_csi": [ + "family_csi": [ [ { "id": [ ], - "project": null, - "contains_affected": false + "family_id": null }, "[]_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -1848,7 +1780,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-11-04T16:35:27.990658402" + "timestamp": "2024-11-12T18:15:43.480727946" }, "1 sample - 1 bed, fasta, fai, [], [] - stub": { "content": [ @@ -1875,8 +1807,7 @@ [ { "id": "genome.bed", - "project": null, - "contains_affected": false + "family_id": null }, "genome.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] @@ -1885,8 +1816,7 @@ [ { "id": "genome.bed", - "project": null, - "contains_affected": false + "family_id": null }, "genome.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -1910,22 +1840,20 @@ "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ], - "combined_bcf": [ + "family_bcf": [ [ { "id": "genome.bed", - "project": null, - "contains_affected": false + "family_id": null }, "genome.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], - "combined_csi": [ + "family_csi": [ [ { "id": "genome.bed", - "project": null, - "contains_affected": false + "family_id": null }, "genome.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -1973,6 +1901,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-11-04T16:35:41.50464501" + "timestamp": "2024-11-12T18:15:54.801886568" } } \ No newline at end of file diff --git a/subworkflows/local/snv_annotation/tests/main.nf.test b/subworkflows/local/snv_annotation/tests/main.nf.test index dd5ee5ef..6cf9e390 100644 --- a/subworkflows/local/snv_annotation/tests/main.nf.test +++ b/subworkflows/local/snv_annotation/tests/main.nf.test @@ -82,7 +82,7 @@ nextflow_workflow { when { workflow { """ - input[0] = SHORT_VARIANT_CALLING.out.combined_bcf + input[0] = SHORT_VARIANT_CALLING.out.family_bcf input[1] = [ file(params.pipelines_testdata_base_path + 'reference/cadd.v1.6.hg38.test_data.zip', checkIfExists: true) ] @@ -124,7 +124,7 @@ nextflow_workflow { } workflow { """ - input[0] = SHORT_VARIANT_CALLING.out.combined_bcf + input[0] = SHORT_VARIANT_CALLING.out.family_bcf input[1] = [ file(params.pipelines_testdata_base_path + 'reference/cadd.v1.6.hg38.test_data.zip', checkIfExists: true) ] diff --git a/subworkflows/local/snv_annotation/tests/main.nf.test.snap b/subworkflows/local/snv_annotation/tests/main.nf.test.snap index be278f54..2973a379 100644 --- a/subworkflows/local/snv_annotation/tests/main.nf.test.snap +++ b/subworkflows/local/snv_annotation/tests/main.nf.test.snap @@ -11,8 +11,7 @@ [ { "id": "test_data.bed", - "project": null, - "contains_affected": false + "family_id": null }, "test_data.bed.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -21,8 +20,7 @@ [ { "id": "test_data.bed", - "project": null, - "contains_affected": false + "family_id": null }, "test_data.bed.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] @@ -32,7 +30,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-07T14:29:17.858999735" + "timestamp": "2024-11-12T17:30:08.202090846" }, "bcf, db, vep_cache, '110'": { "content": [ @@ -52,4 +50,4 @@ }, "timestamp": "2024-10-08T11:44:29.495925133" } -} +} \ No newline at end of file diff --git a/subworkflows/local/utils_nfcore_nallo_pipeline/main.nf b/subworkflows/local/utils_nfcore_nallo_pipeline/main.nf index 0c4308ec..2ac3b504 100644 --- a/subworkflows/local/utils_nfcore_nallo_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_nallo_pipeline/main.nf @@ -161,6 +161,7 @@ workflow PIPELINE_INITIALISATION { UTILS_NFCORE_PIPELINE ( nextflow_cli_args ) + // // Custom validation for pipeline parameters // @@ -190,25 +191,11 @@ workflow PIPELINE_INITIALISATION { } .set { ch_samplesheet } - // Check that there's samples with affected phenotype if we are ranking variants - ch_samplesheet - .filter { meta, reads -> meta.phenotype == 2 } - .ifEmpty { - if(!params.skip_rank_variants) { - error("No samples in samplesheet has affected phenotype (=2), --skip_rank_variants has to be active.") - } - } + // Check that all families has at least one sample with affected phenotype if ranking is active + validateAllFamiliesHasAffectedSamples(ch_samplesheet, params) // Check that there's no more than one project - // TODO: Try to do this in nf-schema - ch_samplesheet - .map { meta, reads -> meta.project } - .unique() - .collect() - .filter{ it.size() == 1 } - .ifEmpty { - error("Only one project may be specified per run") - } + validateSingleProjectPerRun(ch_samplesheet) emit: samplesheet = ch_samplesheet @@ -658,3 +645,40 @@ def validatePacBioLicense() { error "ERROR: The HiPhase license only permits analysis of data from PacBio." } } + +// Genmod within RANK_VARIANTS requires affected individuals in the samplesheet. +// This is a convinience function to fail early if there are families without affected individuals. +def validateAllFamiliesHasAffectedSamples(ch_samplesheet, params) { + + if (params.skip_rank_variants) { + return + } + + def familiesWithPhenotypes = ch_samplesheet + .map { meta, reads -> [ meta.family_id, meta.phenotype ] } + .groupTuple() + + def familiesWithoutAffected = familiesWithPhenotypes + .filter { family, phenotype -> !phenotype.contains(2) } + + familiesWithoutAffected + .map { family, phenotype -> family } + .collect() + .subscribe { familyList -> + if (familyList) { + error("ERROR: No samples in families: ${familyList.join(", ")} have affected phenotype (=2); --skip_rank_variants has to be active.") + } + } +} + +def validateSingleProjectPerRun(ch_samplesheet) { + def oneProject = ch_samplesheet + .map { meta, reads -> meta.project } + .unique() + .collect() + .filter{ it.size() == 1 } + + if(!oneProject) { + error("Only one project may be specified per run") + } +} diff --git a/tests/samplesheet.nf.test.snap b/tests/samplesheet.nf.test.snap index e1c5ce90..0060fe6c 100644 --- a/tests/samplesheet.nf.test.snap +++ b/tests/samplesheet.nf.test.snap @@ -1,7 +1,7 @@ { "test profile": { "content": [ - 113, + 111, { "ADD_FOUND_IN_TAG": { "bcftools": 1.2, @@ -81,9 +81,6 @@ "ECHTVAR_ANNO": { "echtvar": "0.2.0" }, - "ECHTVAR_ENCODE": { - "echtvar": "0.2.0" - }, "ENSEMBLVEP_SNV": { "ensemblvep": 110.0 }, @@ -184,10 +181,6 @@ "SOMALIER_EXTRACT": { "somalier": "0.2.18" }, - "SOMALIER_PED": { - "create_pedigree_file": 1.0, - "python": "3.8.3" - }, "SOMALIER_PED_FAMILY": { "create_pedigree_file": 1.0, "python": "3.8.3" @@ -276,11 +269,6 @@ "assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap2.sam.gz", "assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap2.var.gz", "assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.pair.vcf.gz", - "databases", - "databases/echtvar", - "databases/echtvar/encode", - "databases/echtvar/encode/test", - "databases/echtvar/encode/test/test.zip", "methylation", "methylation/modkit", "methylation/modkit/pileup", @@ -427,8 +415,6 @@ "pedigree", "pedigree/family", "pedigree/family/FAM.ped", - "pedigree/project", - "pedigree/project/test.ped", "phased_variants", "phased_variants/HG002_Revio", "phased_variants/HG002_Revio/HG002_Revio_phased.vcf.gz", @@ -481,28 +467,30 @@ "repeats/sample/HG002_Revio/HG002_Revio_spanning_sorted.bam", "repeats/sample/HG002_Revio/HG002_Revio_spanning_sorted.bam.bai", "snvs", - "snvs/multi_sample", - "snvs/multi_sample/test", - "snvs/multi_sample/test/test_snv_annotated_ranked.vcf.gz", - "snvs/multi_sample/test/test_snv_annotated_ranked.vcf.gz.tbi", - "snvs/single_sample", - "snvs/single_sample/HG002_Revio", - "snvs/single_sample/HG002_Revio/HG002_Revio_snv_annotated_ranked.vcf.gz", - "snvs/single_sample/HG002_Revio/HG002_Revio_snv_annotated_ranked.vcf.gz.tbi", + "snvs/family", + "snvs/family/FAM", + "snvs/family/FAM/FAM_snv_annotated_ranked.vcf.gz", + "snvs/family/FAM/FAM_snv_annotated_ranked.vcf.gz.tbi", + "snvs/sample", + "snvs/sample/HG002_Revio", + "snvs/sample/HG002_Revio/HG002_Revio_snv_annotated_ranked.vcf.gz", + "snvs/sample/HG002_Revio/HG002_Revio_snv_annotated_ranked.vcf.gz.tbi", "snvs/stats", - "snvs/stats/single_sample", - "snvs/stats/single_sample/HG002_Revio.vcf.gz.bcftools_stats.txt", + "snvs/stats/sample", + "snvs/stats/sample/HG002_Revio.vcf.gz.bcftools_stats.txt", "svs", "svs/family", "svs/family/FAM", "svs/family/FAM/FAM_svs_cnvs_merged_annotated_ranked.vcf.gz", "svs/family/FAM/FAM_svs_cnvs_merged_annotated_ranked.vcf.gz.tbi", + "svs/sample", + "svs/sample/HG002_Revio", + "svs/sample/HG002_Revio/HG002_Revio_svs.vcf.gz", + "svs/sample/HG002_Revio/HG002_Revio_svs.vcf.gz.tbi", "svs/single_sample", "svs/single_sample/HG002_Revio", "svs/single_sample/HG002_Revio/HG002_Revio_cnvs.vcf.gz", "svs/single_sample/HG002_Revio/HG002_Revio_cnvs.vcf.gz.tbi", - "svs/single_sample/HG002_Revio/HG002_Revio_svs.vcf.gz", - "svs/single_sample/HG002_Revio/HG002_Revio_svs.vcf.gz.tbi", "visualization_tracks", "visualization_tracks/HG002_Revio", "visualization_tracks/HG002_Revio/HG002_Revio_hificnv.copynum.bedgraph", @@ -529,7 +517,6 @@ "HG002_Revio.hap2.sam.gz:md5,6d512a060c74428f7758aa51a99ae8c8", "HG002_Revio.hap2.var.gz:md5,9ba9303b30730e419138e177c7d1e0c2", "HG002_Revio.pair.vcf.gz:md5,1909dffa43850282fe7e5ae2b2d273a7", - "test.zip:md5,a0abe28a72b11b68126040dd38fa8e37", "HG002_Revio_modkit_pileup_1.bed.gz:md5,ac9bfc455d0b697a4bd565b510c155e0", "HG002_Revio_modkit_pileup_1.bed.gz.tbi:md5,5a9ac375a0ce33af002e0073635a3425", "HG002_Revio_modkit_pileup_2.bed.gz:md5,b2c6c3fc27d34b7c588a4a4b3e9611b0", @@ -563,7 +550,6 @@ "somalier_stats.txt:md5,150fa6b9c197c539947168c11d2115f9", "whatshap-stats-table.txt:md5,c89df1fe6abe77dcbfce8e443c1cecde", "FAM.ped:md5,bd5cec27ba7337a85cf98e787131e2b5", - "test.ped:md5,bd5cec27ba7337a85cf98e787131e2b5", "HG002_Revio_cramino_aligned_phased.arrow:md5,72df2934ff8aa7e1bf8cf8a4881a0d2a", "HG002_Revio_cramino_aligned.arrow:md5,72df2934ff8aa7e1bf8cf8a4881a0d2a", "HG002_Revio.mosdepth.global.dist.txt:md5,6186315d4d65eda85553af82a98829d1", @@ -625,7 +611,7 @@ "VcfFile [chromosomes=[chr20], sampleCount=1, variantCount=1, phased=false, phasedAutodetect=false]" ], [ - "test_snv_annotated_ranked.vcf.gz", + "FAM_snv_annotated_ranked.vcf.gz", "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=103, phased=false, phasedAutodetect=false]" ], [ @@ -636,13 +622,13 @@ "FAM_svs_cnvs_merged_annotated_ranked.vcf.gz", "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=87, phased=false, phasedAutodetect=false]" ], - [ - "HG002_Revio_cnvs.vcf.gz", - "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=36, phased=false, phasedAutodetect=false]" - ], [ "HG002_Revio_svs.vcf.gz", "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=55, phased=false, phasedAutodetect=false]" + ], + [ + "HG002_Revio_cnvs.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=36, phased=false, phasedAutodetect=false]" ] ], [ @@ -668,6 +654,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-11-07T12:46:21.477060114" + "timestamp": "2024-11-12T16:46:53.528609548" } } \ No newline at end of file diff --git a/tests/samplesheet_multisample_bam.nf.test.snap b/tests/samplesheet_multisample_bam.nf.test.snap index 0df96a6b..ebbae97f 100644 --- a/tests/samplesheet_multisample_bam.nf.test.snap +++ b/tests/samplesheet_multisample_bam.nf.test.snap @@ -1,7 +1,7 @@ { "samplesheet_multisample_bam | --phaser hiphase": { "content": [ - 156, + 154, { "ADD_FOUND_IN_TAG": { "bcftools": 1.2, @@ -81,9 +81,6 @@ "ECHTVAR_ANNO": { "echtvar": "0.2.0" }, - "ECHTVAR_ENCODE": { - "echtvar": "0.2.0" - }, "ENSEMBLVEP_SNV": { "ensemblvep": 110.0 }, @@ -181,10 +178,6 @@ "SOMALIER_EXTRACT": { "somalier": "0.2.18" }, - "SOMALIER_PED": { - "create_pedigree_file": 1.0, - "python": "3.8.3" - }, "SOMALIER_PED_FAMILY": { "create_pedigree_file": 1.0, "python": "3.8.3" @@ -294,11 +287,6 @@ "assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap2.sam.gz", "assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap2.var.gz", "assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.pair.vcf.gz", - "databases", - "databases/echtvar", - "databases/echtvar/encode", - "databases/echtvar/encode/test", - "databases/echtvar/encode/test/test.zip", "methylation", "methylation/modkit", "methylation/modkit/pileup", @@ -471,8 +459,6 @@ "pedigree", "pedigree/family", "pedigree/family/FAM.ped", - "pedigree/project", - "pedigree/project/test.ped", "phased_variants", "phased_variants/HG002_Revio_A", "phased_variants/HG002_Revio_A/HG002_Revio_A_phased.blocks.tsv", @@ -559,37 +545,40 @@ "repeats/sample/HG002_Revio_B/HG002_Revio_B_spanning_sorted.bam", "repeats/sample/HG002_Revio_B/HG002_Revio_B_spanning_sorted.bam.bai", "snvs", - "snvs/multi_sample", - "snvs/multi_sample/test", - "snvs/multi_sample/test/test_snv_annotated_ranked.vcf.gz", - "snvs/multi_sample/test/test_snv_annotated_ranked.vcf.gz.tbi", - "snvs/single_sample", - "snvs/single_sample/HG002_Revio_A", - "snvs/single_sample/HG002_Revio_A/HG002_Revio_A_snv_annotated_ranked.vcf.gz", - "snvs/single_sample/HG002_Revio_A/HG002_Revio_A_snv_annotated_ranked.vcf.gz.tbi", - "snvs/single_sample/HG002_Revio_B", - "snvs/single_sample/HG002_Revio_B/HG002_Revio_B_snv_annotated_ranked.vcf.gz", - "snvs/single_sample/HG002_Revio_B/HG002_Revio_B_snv_annotated_ranked.vcf.gz.tbi", + "snvs/family", + "snvs/family/FAM", + "snvs/family/FAM/FAM_snv_annotated_ranked.vcf.gz", + "snvs/family/FAM/FAM_snv_annotated_ranked.vcf.gz.tbi", + "snvs/sample", + "snvs/sample/HG002_Revio_A", + "snvs/sample/HG002_Revio_A/HG002_Revio_A_snv_annotated_ranked.vcf.gz", + "snvs/sample/HG002_Revio_A/HG002_Revio_A_snv_annotated_ranked.vcf.gz.tbi", + "snvs/sample/HG002_Revio_B", + "snvs/sample/HG002_Revio_B/HG002_Revio_B_snv_annotated_ranked.vcf.gz", + "snvs/sample/HG002_Revio_B/HG002_Revio_B_snv_annotated_ranked.vcf.gz.tbi", "snvs/stats", - "snvs/stats/single_sample", - "snvs/stats/single_sample/HG002_Revio_A.vcf.gz.bcftools_stats.txt", - "snvs/stats/single_sample/HG002_Revio_B.vcf.gz.bcftools_stats.txt", + "snvs/stats/sample", + "snvs/stats/sample/HG002_Revio_A.vcf.gz.bcftools_stats.txt", + "snvs/stats/sample/HG002_Revio_B.vcf.gz.bcftools_stats.txt", "svs", "svs/family", "svs/family/FAM", "svs/family/FAM/FAM_svs_cnvs_merged_annotated_ranked.vcf.gz", "svs/family/FAM/FAM_svs_cnvs_merged_annotated_ranked.vcf.gz.tbi", + "svs/sample", + "svs/sample/HG002_Revio_A", + "svs/sample/HG002_Revio_A/HG002_Revio_A_svs.vcf.gz", + "svs/sample/HG002_Revio_A/HG002_Revio_A_svs.vcf.gz.tbi", + "svs/sample/HG002_Revio_B", + "svs/sample/HG002_Revio_B/HG002_Revio_B_svs.vcf.gz", + "svs/sample/HG002_Revio_B/HG002_Revio_B_svs.vcf.gz.tbi", "svs/single_sample", "svs/single_sample/HG002_Revio_A", "svs/single_sample/HG002_Revio_A/HG002_Revio_A_cnvs.vcf.gz", "svs/single_sample/HG002_Revio_A/HG002_Revio_A_cnvs.vcf.gz.tbi", - "svs/single_sample/HG002_Revio_A/HG002_Revio_A_svs.vcf.gz", - "svs/single_sample/HG002_Revio_A/HG002_Revio_A_svs.vcf.gz.tbi", "svs/single_sample/HG002_Revio_B", "svs/single_sample/HG002_Revio_B/HG002_Revio_B_cnvs.vcf.gz", "svs/single_sample/HG002_Revio_B/HG002_Revio_B_cnvs.vcf.gz.tbi", - "svs/single_sample/HG002_Revio_B/HG002_Revio_B_svs.vcf.gz", - "svs/single_sample/HG002_Revio_B/HG002_Revio_B_svs.vcf.gz.tbi", "visualization_tracks", "visualization_tracks/HG002_Revio_A", "visualization_tracks/HG002_Revio_A/HG002_Revio_A_hificnv.copynum.bedgraph", @@ -639,7 +628,6 @@ "HG002_Revio_B.hap2.sam.gz:md5,ecdf9b9d50b54776d0555c71a194af7e", "HG002_Revio_B.hap2.var.gz:md5,f09b01fcb43bf64f92ca7ec8a2380c25", "HG002_Revio_B.pair.vcf.gz:md5,676492865a9d4765835638d52651af73", - "test.zip:md5,d3fc0769a4c707953cdb3fade9450660", "HG002_Revio_A_modkit_pileup_1.bed.gz:md5,7af3b6246d0c007aec686714b96a0f7f", "HG002_Revio_A_modkit_pileup_1.bed.gz.tbi:md5,b7083ebf6ba176ed5a472ad653c5be27", "HG002_Revio_A_modkit_pileup_2.bed.gz:md5,a2e1291b468361412899cf811022fe72", @@ -680,7 +668,6 @@ "somalier_stats.txt:md5,5f523bdaa8f6b6bf1581694564521891", "whatshap-stats-table.txt:md5,862f90185133703811c955c45f5750fa", "FAM.ped:md5,24d8694d580f782ed77d4d1b5c6f6fb4", - "test.ped:md5,24d8694d580f782ed77d4d1b5c6f6fb4", "HG002_Revio_A_phased.blocks.tsv:md5,27ce044ba581da15ef838cbb343a64cf", "HG002_Revio_A_phased.stats.tsv:md5,58ae1b01d01b922d022ad025a81f1026", "HG002_Revio_A_phased.summary.tsv:md5,714496292cba53669081ac3be3078c28", @@ -800,7 +787,7 @@ "VcfFile [chromosomes=[chr20], sampleCount=1, variantCount=1, phased=false, phasedAutodetect=false]" ], [ - "test_snv_annotated_ranked.vcf.gz", + "FAM_snv_annotated_ranked.vcf.gz", "VcfFile [chromosomes=[chrX, chr16], sampleCount=2, variantCount=104, phased=false, phasedAutodetect=false]" ], [ @@ -816,20 +803,20 @@ "VcfFile [chromosomes=[chrX, chr16], sampleCount=2, variantCount=87, phased=false, phasedAutodetect=false]" ], [ - "HG002_Revio_A_cnvs.vcf.gz", - "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=36, phased=false, phasedAutodetect=false]" + "HG002_Revio_A_svs.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=55, phased=false, phasedAutodetect=false]" ], [ - "HG002_Revio_A_svs.vcf.gz", + "HG002_Revio_B_svs.vcf.gz", "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=55, phased=false, phasedAutodetect=false]" ], [ - "HG002_Revio_B_cnvs.vcf.gz", + "HG002_Revio_A_cnvs.vcf.gz", "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=36, phased=false, phasedAutodetect=false]" ], [ - "HG002_Revio_B_svs.vcf.gz", - "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=55, phased=false, phasedAutodetect=false]" + "HG002_Revio_B_cnvs.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=36, phased=false, phasedAutodetect=false]" ] ], [ @@ -867,6 +854,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-11-07T12:48:14.873817687" + "timestamp": "2024-11-12T16:48:50.801407496" } } \ No newline at end of file diff --git a/tests/samplesheet_multisample_ont_bam.nf.test.snap b/tests/samplesheet_multisample_ont_bam.nf.test.snap index 099f1b81..e5fca20e 100644 --- a/tests/samplesheet_multisample_ont_bam.nf.test.snap +++ b/tests/samplesheet_multisample_ont_bam.nf.test.snap @@ -1,7 +1,7 @@ { "samplesheet_multisample_ont_bam | --preset ONT_R10 --phaser whatshap --parallel_alignments 1 --parallel_snv 1": { "content": [ - 105, + 103, { "ADD_FOUND_IN_TAG": { "bcftools": 1.2, @@ -69,9 +69,6 @@ "ECHTVAR_ANNO": { "echtvar": "0.2.0" }, - "ECHTVAR_ENCODE": { - "echtvar": "0.2.0" - }, "ENSEMBLVEP_SNV": { "ensemblvep": 110.0 }, @@ -142,10 +139,6 @@ "SOMALIER_EXTRACT": { "somalier": "0.2.18" }, - "SOMALIER_PED": { - "create_pedigree_file": 1.0, - "python": "3.8.3" - }, "SOMALIER_PED_FAMILY": { "create_pedigree_file": 1.0, "python": "3.8.3" @@ -208,11 +201,6 @@ "aligned_reads/HG002_ONT_B", "aligned_reads/HG002_ONT_B/HG002_ONT_B_haplotagged.bam", "aligned_reads/HG002_ONT_B/HG002_ONT_B_haplotagged.bam.bai", - "databases", - "databases/echtvar", - "databases/echtvar/encode", - "databases/echtvar/encode/test", - "databases/echtvar/encode/test/test.zip", "methylation", "methylation/modkit", "methylation/modkit/pileup", @@ -385,8 +373,6 @@ "pedigree", "pedigree/family", "pedigree/family/FAM.ped", - "pedigree/project", - "pedigree/project/test.ped", "phased_variants", "phased_variants/HG002_ONT_A", "phased_variants/HG002_ONT_A/HG002_ONT_A_phased.vcf.gz", @@ -451,37 +437,40 @@ "qc/somalier/relate/test/test.pairs.tsv", "qc/somalier/relate/test/test.samples.tsv", "snvs", - "snvs/multi_sample", - "snvs/multi_sample/test", - "snvs/multi_sample/test/test_snv_annotated_ranked.vcf.gz", - "snvs/multi_sample/test/test_snv_annotated_ranked.vcf.gz.tbi", - "snvs/single_sample", - "snvs/single_sample/HG002_ONT_A", - "snvs/single_sample/HG002_ONT_A/HG002_ONT_A_snv_annotated_ranked.vcf.gz", - "snvs/single_sample/HG002_ONT_A/HG002_ONT_A_snv_annotated_ranked.vcf.gz.tbi", - "snvs/single_sample/HG002_ONT_B", - "snvs/single_sample/HG002_ONT_B/HG002_ONT_B_snv_annotated_ranked.vcf.gz", - "snvs/single_sample/HG002_ONT_B/HG002_ONT_B_snv_annotated_ranked.vcf.gz.tbi", + "snvs/family", + "snvs/family/FAM", + "snvs/family/FAM/FAM_snv_annotated_ranked.vcf.gz", + "snvs/family/FAM/FAM_snv_annotated_ranked.vcf.gz.tbi", + "snvs/sample", + "snvs/sample/HG002_ONT_A", + "snvs/sample/HG002_ONT_A/HG002_ONT_A_snv_annotated_ranked.vcf.gz", + "snvs/sample/HG002_ONT_A/HG002_ONT_A_snv_annotated_ranked.vcf.gz.tbi", + "snvs/sample/HG002_ONT_B", + "snvs/sample/HG002_ONT_B/HG002_ONT_B_snv_annotated_ranked.vcf.gz", + "snvs/sample/HG002_ONT_B/HG002_ONT_B_snv_annotated_ranked.vcf.gz.tbi", "snvs/stats", - "snvs/stats/single_sample", - "snvs/stats/single_sample/HG002_ONT_A.vcf.gz.bcftools_stats.txt", - "snvs/stats/single_sample/HG002_ONT_B.vcf.gz.bcftools_stats.txt", + "snvs/stats/sample", + "snvs/stats/sample/HG002_ONT_A.vcf.gz.bcftools_stats.txt", + "snvs/stats/sample/HG002_ONT_B.vcf.gz.bcftools_stats.txt", "svs", "svs/family", "svs/family/FAM", "svs/family/FAM/FAM_svs_cnvs_merged_annotated_ranked.vcf.gz", "svs/family/FAM/FAM_svs_cnvs_merged_annotated_ranked.vcf.gz.tbi", + "svs/sample", + "svs/sample/HG002_ONT_A", + "svs/sample/HG002_ONT_A/HG002_ONT_A_svs.vcf.gz", + "svs/sample/HG002_ONT_A/HG002_ONT_A_svs.vcf.gz.tbi", + "svs/sample/HG002_ONT_B", + "svs/sample/HG002_ONT_B/HG002_ONT_B_svs.vcf.gz", + "svs/sample/HG002_ONT_B/HG002_ONT_B_svs.vcf.gz.tbi", "svs/single_sample", "svs/single_sample/HG002_ONT_A", "svs/single_sample/HG002_ONT_A/HG002_ONT_A_cnvs.vcf.gz", "svs/single_sample/HG002_ONT_A/HG002_ONT_A_cnvs.vcf.gz.tbi", - "svs/single_sample/HG002_ONT_A/HG002_ONT_A_svs.vcf.gz", - "svs/single_sample/HG002_ONT_A/HG002_ONT_A_svs.vcf.gz.tbi", "svs/single_sample/HG002_ONT_B", "svs/single_sample/HG002_ONT_B/HG002_ONT_B_cnvs.vcf.gz", "svs/single_sample/HG002_ONT_B/HG002_ONT_B_cnvs.vcf.gz.tbi", - "svs/single_sample/HG002_ONT_B/HG002_ONT_B_svs.vcf.gz", - "svs/single_sample/HG002_ONT_B/HG002_ONT_B_svs.vcf.gz.tbi", "visualization_tracks", "visualization_tracks/HG002_ONT_A", "visualization_tracks/HG002_ONT_A/HG002_ONT_A_hificnv.copynum.bedgraph", @@ -493,7 +482,6 @@ "visualization_tracks/HG002_ONT_B/HG002_ONT_B_hificnv.maf.bw" ], [ - "test.zip:md5,779efd29ec2cc66bef05c173c44e4168", "HG002_ONT_A_modkit_pileup_1.bed.gz:md5,2be86a42ac0384ac6d27fdf6e65304b7", "HG002_ONT_A_modkit_pileup_1.bed.gz.tbi:md5,a7955eabc34456dce834a2c966071eaa", "HG002_ONT_A_modkit_pileup_2.bed.gz:md5,ec565bd66fc73d380b7f9eb768369a65", @@ -534,7 +522,6 @@ "somalier_stats.txt:md5,fec840d4fe202c0e3ff7ce94b2a3bf92", "whatshap-stats-table.txt:md5,d552daaaef1c92c3351ec2f4de64e6ad", "FAM.ped:md5,deb1ee6bd38d6e8f7cb92801d8a12f12", - "test.ped:md5,deb1ee6bd38d6e8f7cb92801d8a12f12", "HG002_ONT_A_cramino_aligned_phased.arrow:md5,d2a5c81595fa34925ab8f03078487d81", "HG002_ONT_B_cramino_aligned_phased.arrow:md5,61af72539e105cec79db7c9b78eb15a7", "HG002_ONT_A_cramino_aligned.arrow:md5,d2a5c81595fa34925ab8f03078487d81", @@ -596,7 +583,7 @@ "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=236, phased=false, phasedAutodetect=false]" ], [ - "test_snv_annotated_ranked.vcf.gz", + "FAM_snv_annotated_ranked.vcf.gz", "VcfFile [chromosomes=[chrX, chr16], sampleCount=2, variantCount=105, phased=false, phasedAutodetect=false]" ], [ @@ -612,20 +599,20 @@ "VcfFile [chromosomes=[chrX, chr16], sampleCount=2, variantCount=98, phased=false, phasedAutodetect=false]" ], [ - "HG002_ONT_A_cnvs.vcf.gz", - "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=30, phased=false, phasedAutodetect=false]" + "HG002_ONT_A_svs.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=68, phased=false, phasedAutodetect=false]" ], [ - "HG002_ONT_A_svs.vcf.gz", + "HG002_ONT_B_svs.vcf.gz", "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=68, phased=false, phasedAutodetect=false]" ], [ - "HG002_ONT_B_cnvs.vcf.gz", - "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=31, phased=false, phasedAutodetect=false]" + "HG002_ONT_A_cnvs.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=30, phased=false, phasedAutodetect=false]" ], [ - "HG002_ONT_B_svs.vcf.gz", - "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=68, phased=false, phasedAutodetect=false]" + "HG002_ONT_B_cnvs.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=31, phased=false, phasedAutodetect=false]" ] ], [ @@ -636,6 +623,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-11-07T12:51:02.903461641" + "timestamp": "2024-11-12T16:50:40.322312965" } } \ No newline at end of file diff --git a/workflows/nallo.nf b/workflows/nallo.nf index 50061e57..0c551e54 100644 --- a/workflows/nallo.nf +++ b/workflows/nallo.nf @@ -41,7 +41,6 @@ include { SNV_ANNOTATION } from '../subworkflows/local/ include { CREATE_PEDIGREE_FILE as SAMPLESHEET_PED } from '../modules/local/create_pedigree_file/main' include { CREATE_PEDIGREE_FILE as SOMALIER_PED } from '../modules/local/create_pedigree_file/main' include { CREATE_PEDIGREE_FILE as SOMALIER_PED_FAMILY } from '../modules/local/create_pedigree_file/main' -include { ECHTVAR_ENCODE } from '../modules/local/echtvar/encode/main' include { SAMTOOLS_MERGE } from '../modules/nf-core/samtools/merge/main' // nf-core @@ -303,8 +302,8 @@ workflow NALLO { SHORT_VARIANT_CALLING( ch_snv_calling_in, fasta, fai, SCATTER_GENOME.out.bed, ch_par ) ch_versions = ch_versions.mix(SHORT_VARIANT_CALLING.out.versions) - SHORT_VARIANT_CALLING.out.combined_bcf - .join( SHORT_VARIANT_CALLING.out.combined_csi ) + SHORT_VARIANT_CALLING.out.family_bcf + .join( SHORT_VARIANT_CALLING.out.family_csi ) .set { ch_vcf_tbi_per_region } } @@ -313,9 +312,9 @@ workflow NALLO { // if(!params.skip_snv_annotation) { - // Annotates one multisample VCF per variant call region + // Annotates family VCFs per variant call region SNV_ANNOTATION( - SHORT_VARIANT_CALLING.out.combined_bcf, + SHORT_VARIANT_CALLING.out.family_bcf, ch_databases.map { meta, databases -> databases }.collect(), fasta, fai.map { name, fai -> [ [ id: name ], fai ] }, @@ -342,33 +341,33 @@ workflow NALLO { } // - // Ranks one multisample VCF per variant call region + // Ranks family VCFs per variant call region // Can only run if samplesheet has affected samples // if(!params.skip_rank_variants) { - // Create PED with updated sex per project (should perhaps be per SNV-calling region) - SOMALIER_PED ( + // Create PED with updated sex - per family + SOMALIER_PED_FAMILY ( bam - .map { meta, files -> [ [ id: meta.project ], meta ] } + .map { meta, files -> [ [ id: meta.family_id ], meta ] } .groupTuple() ) - ch_versions = ch_versions.mix(SOMALIER_PED.out.versions) - - SOMALIER_PED.out.ped - .collect() - .set { ch_updated_pedfile } + ch_versions = ch_versions.mix(SOMALIER_PED_FAMILY.out.versions) - // Give pedfile meta from variants + // Give PED file SNV meta so they can be joined later in the subworkflow. + // Since we don't always have matching number of ped files and call regions + // we need to combine and filter instead of join ANN_CSQ_PLI_SNV.out.vcf - .combine(ch_updated_pedfile.map { meta, ped -> ped } ) - .map { meta, vcf, ped -> [ meta, ped ] } - .set { rank_snvs_ped_in } + .map { meta, vcf -> [ [ id:meta.family_id ], meta ] } + .combine ( SOMALIER_PED_FAMILY.out.ped ) + .filter { family_id_snv, meta, family_id_ped, ped -> family_id_snv == family_id_ped } + .map { family_id_snv, meta, family_id_ped, ped -> [ meta, ped ] } + .set { snv_ranking_ped_file } // Only run if we have affected individuals RANK_VARIANTS_SNV ( ANN_CSQ_PLI_SNV.out.vcf, - rank_snvs_ped_in, + snv_ranking_ped_file, ch_reduced_penetrance, ch_score_config_snv ) @@ -385,11 +384,11 @@ workflow NALLO { if(!params.skip_short_variant_calling) { ch_vcf_tbi_per_region - .map { meta, vcf, tbi -> [ [ id: meta.project ], vcf, tbi ] } + .map { meta, vcf, tbi -> [ [ id: meta.family_id ], vcf, tbi ] } .groupTuple() .set { ch_bcftools_concat_in } - // Concat into a multisample VCF with all regions + // Concat into family VCFs per family with all regions BCFTOOLS_CONCAT ( ch_bcftools_concat_in ) ch_versions = ch_versions.mix(BCFTOOLS_CONCAT.out.versions) @@ -397,11 +396,7 @@ workflow NALLO { BCFTOOLS_SORT ( BCFTOOLS_CONCAT.out.vcf ) ch_versions = ch_versions.mix(BCFTOOLS_SORT.out.versions) - // Make an echtvar database of all samples - ECHTVAR_ENCODE ( BCFTOOLS_SORT.out.vcf ) - ch_versions = ch_versions.mix(ECHTVAR_ENCODE.out.versions) - - // Split multisample VCF to also publish a VCF per sample + // Split family VCFs to also publish a VCF per sample BCFTOOLS_PLUGINSPLIT_SNVS ( BCFTOOLS_SORT.out.vcf.join(BCFTOOLS_SORT.out.tbi ), [], [], [], [] ) ch_versions = ch_versions.mix(BCFTOOLS_PLUGINSPLIT_SNVS.out.versions) @@ -510,14 +505,6 @@ workflow NALLO { // if (!params.skip_rank_variants) { - // Create PED with updated sex - per family - SOMALIER_PED_FAMILY ( - bam - .map { meta, files -> [ [ id: meta.family_id ], meta ] } - .groupTuple() - ) - ch_versions = ch_versions.mix(SOMALIER_PED_FAMILY.out.versions) - RANK_VARIANTS_SVS ( ANN_CSQ_PLI_SVS.out.vcf, SOMALIER_PED_FAMILY.out.ped, From 4817e1f753f7b4fb8891048323997d400f7abcfb Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Mon, 18 Nov 2024 11:18:50 +0100 Subject: [PATCH 066/106] Rename input file parameters (#488) * rename parameters * formatting * fix files * Update CHANGELOG.md Co-authored-by: Daniel Schmitz * Update CHANGELOG.md Co-authored-by: Daniel Schmitz * review suggestions * fix CHANGELOG * Update nextflow.config Co-authored-by: Daniel Schmitz * Update nextflow.config Co-authored-by: Daniel Schmitz * Update nextflow.config Co-authored-by: Daniel Schmitz --------- Co-authored-by: Daniel Schmitz --- CHANGELOG.md | 21 +++- assets/schema_snp_db.json | 4 +- conf/modules/general.config | 6 +- conf/modules/methylation.config | 2 +- conf/modules/qc_aligned_reads.config | 2 +- conf/test.config | 52 ++++----- docs/parameters.md | 42 ++++---- docs/usage.md | 90 ++++++++-------- nextflow.config | 74 ++++++------- nextflow_schema.json | 48 ++++----- subworkflows/local/annotate_cadd/main.nf | 14 +-- .../local/annotate_repeat_expansions/main.nf | 6 +- .../local/annotate_svs/tests/main.nf.test | 8 +- .../annotate_svs/tests/main.nf.test.snap | 4 +- .../local/methylation/tests/main.nf.test | 16 +-- .../local/methylation/tests/nextflow.config | 2 +- subworkflows/local/rank_variants/main.nf | 10 +- .../local/rank_variants/tests/main.nf.test | 8 +- subworkflows/local/snv_annotation/main.nf | 24 ++--- .../local/utils_nfcore_nallo_pipeline/main.nf | 92 ++++++++-------- tests/samplesheet_multisample_ont_bam.nf.test | 6 +- ...mplesheet_multisample_ont_bam.nf.test.snap | 2 +- workflows/nallo.nf | 102 +++++++++--------- 23 files changed, 330 insertions(+), 305 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 83b7cccc..63c0d1e8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -62,7 +62,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#411](https://github.com/genomic-medicine-sweden/nallo/pull/411) - Updated longphase module to most recent version. ([#409](https://github.com/genomic-medicine-sweden/nallo/issues/409)). - [#416](https://github.com/genomic-medicine-sweden/nallo/pull/416) - Updated WhatsHap to 2.3 and added the `--use-supplementary` flag to use supplementary reads for phasing by default. Changed modules to use biocontainers instead of custom containers. ([#296](https://github.com/genomic-medicine-sweden/nallo/issues/296)) - [#417](https://github.com/genomic-medicine-sweden/nallo/pull/417) - Updated SNV annotation tests to use correct configuration, and snapshot the md5sum, and summary of the variants -- [#418](https://github.com/genomic-medicine-sweden/nallo/pull/418) - Changed the default value of `--parallel_alignments` from 1 to 8, meaning the pipeline will perform parallel alignment by default +- [#418](https://github.com/genomic-medicine-sweden/nallo/pull/418) - Changed the default value of `--alignment_processes` from 1 to 8, meaning the pipeline will perform parallel alignment by default - [#422](https://github.com/genomic-medicine-sweden/nallo/pull/422) - Updated nf-core/tools template to v3.0.1 - [#423](https://github.com/genomic-medicine-sweden/nallo/pull/423) - Updated metro map - [#428](https://github.com/genomic-medicine-sweden/nallo/pull/428) - Changed from using bcftools to SVDB for SV merging @@ -132,6 +132,25 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 | `--validationSkipDuplicateCheck` | | | `--validationS3PathCheck` | | | `--monochromeLogs` | `--monochrome_logs` | +| `--skip_short_variant_calling` | `--skip_snv_calling` | +| `--skip_assembly_wf` | `--skip_genome_assembly` | +| `--skip_mapping_wf` | `--skip_alignment` | +| `--skip_methylation_wf` | `--skip_methylation_pileups` | +| `--skip_phasing_wf` | `--skip_phasing` | +| `--variant_caller` | `--snv_caller` | +| `--parallel_snv` | `--snv_calling_processes` | +| `--cadd_prescored` | `--cadd_prescored_indels` | +| `--snp_db` | `--echtvar_snv_databases` | +| `--variant_catalog` | `--stranger_repeat_catalog` | +| `--bed` | `--target_regions` | +| `--hificnv_xy` | `--hificnv_expected_xy_cn` | +| `--hificnv_xx` | `--hificnv_expected_xx_cn` | +| `--hificnv_exclude` | `--hificnv_excluded_regions` | +| `--reduced_penetrance` | `--genmod_reduced_penetrance` | +| `--score_config_snv` | `--genmod_score_config_snvs` | +| `--score_config_sv` | `--genmod_score_config_svs` | +| `--parallel_alignments` | `--alignment_processes` | +| `--svdb_dbs` | `--svdb_sv_databases` | > [!NOTE] > Parameter has been updated if both old and new parameter information is present. diff --git a/assets/schema_snp_db.json b/assets/schema_snp_db.json index 4d9141db..61480f73 100644 --- a/assets/schema_snp_db.json +++ b/assets/schema_snp_db.json @@ -1,8 +1,8 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/genomic-medicine-sweden/nallo/master/assets/schema_snp_db.json", - "title": "genomic-medicine-sweden/nallo pipeline - params.snp_db schema", - "description": "Schema for the file provided with params.snp_db", + "title": "genomic-medicine-sweden/nallo pipeline - params.echtvar_snv_databases schema", + "description": "Schema for the file provided with params.echtvar_snv_databases", "type": "array", "items": { "type": "object", diff --git a/conf/modules/general.config b/conf/modules/general.config index 5560368e..516fb73d 100644 --- a/conf/modules/general.config +++ b/conf/modules/general.config @@ -131,7 +131,7 @@ process { } withName: '.*:NALLO:SPLITUBAM' { - ext.args = { "--split ${params.parallel_alignments}" } + ext.args = { "--split ${params.alignment_processes}" } publishDir = [ enabled: false ] @@ -159,7 +159,7 @@ process { path: { "${params.outdir}/aligned_reads/${meta.id}" }, // only a single BAM file per sample saveAs: { filename -> - filename.equals('versions.yml') ? null : (meta.n_files == 1 && params.skip_phasing_wf ? filename : null) + filename.equals('versions.yml') ? null : (meta.n_files == 1 && params.skip_phasing ? filename : null) } ] } @@ -170,7 +170,7 @@ process { publishDir = [ path: { "${params.outdir}/aligned_reads/${meta.id}" }, mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : (params.skip_phasing_wf ? filename : null) } + saveAs: { filename -> filename.equals('versions.yml') ? null : (params.skip_phasing ? filename : null) } ] } diff --git a/conf/modules/methylation.config b/conf/modules/methylation.config index 5f5e0390..188842a7 100644 --- a/conf/modules/methylation.config +++ b/conf/modules/methylation.config @@ -30,7 +30,7 @@ process { '--combine-mods', '--cpg', '--combine-strands', - !params.skip_phasing_wf ? '--partition-tag HP' : '', + !params.skip_phasing ? '--partition-tag HP' : '', ].join(' ') } ext.prefix = { "${meta.id}_modkit_pileup" } publishDir = [ diff --git a/conf/modules/qc_aligned_reads.config b/conf/modules/qc_aligned_reads.config index 181f97a7..fd3746bb 100644 --- a/conf/modules/qc_aligned_reads.config +++ b/conf/modules/qc_aligned_reads.config @@ -41,7 +41,7 @@ process { ext.args = { [ '--fast-mode', '--no-per-base', - params.bed ? '' : '--by 500' + params.target_regions ? '' : '--by 500' ].join(' ') } publishDir = [ path: { "${params.outdir}/qc/mosdepth/${meta.id}" }, diff --git a/conf/test.config b/conf/test.config index 5e30ea1b..86a53776 100644 --- a/conf/test.config +++ b/conf/test.config @@ -21,36 +21,36 @@ params { pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/22fb5b8a1a358df96e49f8d01a9c6e18770fbd6d/' // References - fasta = params.pipelines_testdata_base_path + 'reference/hg38.test.fa.gz' - input = params.pipelines_testdata_base_path + 'testdata/samplesheet.csv' - bed = params.pipelines_testdata_base_path + 'reference/test_data.bed' - hificnv_xy = params.pipelines_testdata_base_path + 'reference/expected_cn.hg38.XY.bed' - hificnv_xx = params.pipelines_testdata_base_path + 'reference/expected_cn.hg38.XX.bed' - hificnv_exclude = params.pipelines_testdata_base_path + 'reference/empty.bed' - par_regions = params.pipelines_testdata_base_path + 'reference/hs38.PAR.bed' - trgt_repeats = params.pipelines_testdata_base_path + 'reference/pathogenic_repeats.hg38.bed' - variant_catalog = params.pipelines_testdata_base_path + 'reference/variant_catalog_grch38.json' - vep_cache = params.pipelines_testdata_base_path + 'reference/vep_cache_test_data.tar.gz' - vep_plugin_files = params.pipelines_testdata_base_path + 'reference/vep_plugin_files.csv' - snp_db = params.pipelines_testdata_base_path + 'testdata/snp_dbs.csv' - svdb_dbs = params.pipelines_testdata_base_path + 'testdata/svdb_dbs.csv' - reduced_penetrance = params.pipelines_testdata_base_path + 'reference/reduced_penetrance.tsv' - score_config_snv = params.pipelines_testdata_base_path + 'reference/rank_model_snv.ini' - score_config_svs = params.pipelines_testdata_base_path + 'reference/rank_model_svs.ini' - variant_consequences_snv = params.pipelines_testdata_base_path + 'reference/variant_consequences_v2.txt' - variant_consequences_svs = params.pipelines_testdata_base_path + 'reference/variant_consequences_v2.txt' - somalier_sites = params.pipelines_testdata_base_path + 'reference/somalier_sites.vcf.gz' + fasta = params.pipelines_testdata_base_path + 'reference/hg38.test.fa.gz' + input = params.pipelines_testdata_base_path + 'testdata/samplesheet.csv' + target_regions = params.pipelines_testdata_base_path + 'reference/test_data.bed' + hificnv_expected_xy_cn = params.pipelines_testdata_base_path + 'reference/expected_cn.hg38.XY.bed' + hificnv_expected_xx_cn = params.pipelines_testdata_base_path + 'reference/expected_cn.hg38.XX.bed' + hificnv_excluded_regions = params.pipelines_testdata_base_path + 'reference/empty.bed' + par_regions = params.pipelines_testdata_base_path + 'reference/hs38.PAR.bed' + trgt_repeats = params.pipelines_testdata_base_path + 'reference/pathogenic_repeats.hg38.bed' + stranger_repeat_catalog = params.pipelines_testdata_base_path + 'reference/variant_catalog_grch38.json' + vep_cache = params.pipelines_testdata_base_path + 'reference/vep_cache_test_data.tar.gz' + vep_plugin_files = params.pipelines_testdata_base_path + 'reference/vep_plugin_files.csv' + echtvar_snv_databases = params.pipelines_testdata_base_path + 'testdata/snp_dbs.csv' + svdb_sv_databases = params.pipelines_testdata_base_path + 'testdata/svdb_dbs.csv' + genmod_reduced_penetrance = params.pipelines_testdata_base_path + 'reference/reduced_penetrance.tsv' + genmod_score_config_snvs = params.pipelines_testdata_base_path + 'reference/rank_model_snv.ini' + genmod_score_config_svs = params.pipelines_testdata_base_path + 'reference/rank_model_svs.ini' + variant_consequences_snvs = params.pipelines_testdata_base_path + 'reference/variant_consequences_v2.txt' + variant_consequences_svs = params.pipelines_testdata_base_path + 'reference/variant_consequences_v2.txt' + somalier_sites = params.pipelines_testdata_base_path + 'reference/somalier_sites.vcf.gz' // Pipeline options - parallel_alignments = 2 - parallel_snv = 2 - preset = "revio" + alignment_processes = 2 + snv_calling_processes = 2 + preset = "revio" // Test config options - extra_modkit_options = '--seed 1 --sampling-frac 0.1' - extra_vep_options = '--plugin SpliceAI,snv=spliceai_21_scores_raw_snv_-v1.3-.vcf.gz,indel=spliceai_21_scores_raw_snv_-v1.3-.vcf.gz' - extra_paraphase_options = '--gene hba' - extra_hifiasm_options = '-f0 -k30 -w30 -D10 -r1 -N1' + extra_modkit_options = '--seed 1 --sampling-frac 0.1' + extra_vep_options = '--plugin SpliceAI,snv=spliceai_21_scores_raw_snv_-v1.3-.vcf.gz,indel=spliceai_21_scores_raw_snv_-v1.3-.vcf.gz' + extra_paraphase_options = '--gene hba' + extra_hifiasm_options = '-f0 -k30 -w30 -D10 -r1 -N1' } // Impose same minimum Nextflow version as in nextflow.config diff --git a/docs/parameters.md b/docs/parameters.md index 3a07f156..1956fe46 100644 --- a/docs/parameters.md +++ b/docs/parameters.md @@ -9,13 +9,13 @@ Allows skipping certain parts of the pipeline | Parameter | Description | Type | Default | Required | Hidden | |-----------|-----------|-----------|-----------|-----------|-----------| | `skip_qc` | Skip QC of reads | `boolean` | False | | | -| `skip_short_variant_calling` | Skip short variant calling | `boolean` | False | | | -| `skip_assembly_wf` | Skip genome assembly and assembly variant calling | `boolean` | False | | | -| `skip_mapping_wf` | Skip read mapping (alignment) | `boolean` | False | | | -| `skip_methylation_wf` | Skip generation of methylation pileups | `boolean` | False | | | +| `skip_snv_calling` | Skip short variant calling | `boolean` | False | | | +| `skip_genome_assembly` | Skip genome assembly and assembly variant calling | `boolean` | False | | | +| `skip_alignment` | Skip read mapping (alignment) | `boolean` | False | | | +| `skip_methylation_pileups` | Skip generation of methylation pileups | `boolean` | False | | | | `skip_repeat_calling` | Skip tandem repeat calling | `boolean` | False | | | | `skip_repeat_annotation` | Skip tandem repeat annotation | `boolean` | False | | | -| `skip_phasing_wf` | Skip phasing of variants and haplotagging of reads | `boolean` | False | | | +| `skip_phasing` | Skip phasing of variants and haplotagging of reads | `boolean` | False | | | | `skip_snv_annotation` | Skip short variant annotation | `boolean` | False | | | | `skip_sv_annotation` | Skip structural variant annotation | `boolean` | False | | | | `skip_cnv_calling` | Skip CNV calling | `boolean` | False | | | @@ -32,24 +32,24 @@ Define where the pipeline should find input data and save output data. | `outdir` | The output directory where the results will be saved. You have to use absolute paths to storage on Cloud infrastructure. | `string` | | True | | | `email` | Email address for completion summary.
    HelpSet this parameter to your e-mail address to get a summary e-mail with details of the run sent to you when the workflow exits. If set in your user config file (`~/.nextflow/config`) then you don't need to specify this on the command line for every run.
    | `string` | | | | | `multiqc_title` | MultiQC report title. Printed as page header, used for filename if not otherwise specified. | `string` | | | | -| `cadd_prescored` | Path to a directory containing prescored indels for CADD.
    HelpThis folder contains the compressed files and indexes that would otherwise be in data/prescored folder as described in https://github.com/kircherlab/CADD-scripts/#manual-installation.
    | `string` | | | | +| `cadd_prescored_indels` | Path to a directory containing prescored indels for CADD.
    HelpThis folder contains the compressed files and indexes that would otherwise be in data/prescored folder as described in https://github.com/kircherlab/CADD-scripts/#manual-installation.
    | `string` | | | | | `cadd_resources` | Path to a directory containing CADD annotations.
    HelpThis folder contains the uncompressed files that would otherwise be in data/annotation folder as described in https://github.com/kircherlab/CADD-scripts/#manual-installation.
    | `string` | | | | | `par_regions` | Provide a bed file of chrX and chrY PAR regions for dipcall and DeepVariant | `string` | | | | | `tandem_repeats` | A tandem repeat BED file for sniffles | `string` | | | | | `trgt_repeats` | A BED file with repeats to be genotyped with TRGT | `string` | | | | -| `snp_db` | A csv file with echtvar databases to annotate SNVs with | `string` | | | | -| `svdb_dbs` | Databases used for structural variant annotation in vcf format.
    HelpPath to comma-separated file containing information about the databases used for structural variant annotation.
    | `string` | | | | -| `variant_catalog` | A variant catalog json-file for stranger | `string` | | | | -| `variant_consequences_snv` | File containing list of SO terms listed in the order of severity from most severe to lease severe for annotating genomic SNVs. For more information check https://ensembl.org/info/genome/variation/prediction/predicted_data.html | `string` | | | | +| `echtvar_snv_databases` | A csv file with echtvar databases to annotate SNVs with | `string` | | | | +| `svdb_sv_databases` | Databases used for structural variant annotation in vcf format.
    HelpPath to comma-separated file containing information about the databases used for structural variant annotation.
    | `string` | | | | +| `stranger_repeat_catalog` | A variant catalog json-file for stranger | `string` | | | | +| `variant_consequences_snvs` | File containing list of SO terms listed in the order of severity from most severe to lease severe for annotating genomic SNVs. For more information check https://ensembl.org/info/genome/variation/prediction/predicted_data.html | `string` | | | | | `variant_consequences_svs` | File containing list of SO terms listed in the order of severity from most severe to lease severe for annotating genomic SVs. For more information check https://ensembl.org/info/genome/variation/prediction/predicted_data.html | `string` | | | | | `vep_cache` | A path to the VEP cache location | `string` | | | | -| `bed` | A BED file with regions of interest, used to limit short variant calling. | `string` | | | | -| `hificnv_xy` | A BED file containing expected copy number regions for XY samples. | `string` | | | | -| `hificnv_xx` | A BED file containing expected copy number regions for XX samples. | `string` | | | | -| `hificnv_exclude` | A BED file specifying regions to exclude with HiFiCNV, such as centromeres. | `string` | | | | -| `reduced_penetrance` | A file with gene ids that have reduced penetrance. For use with genmod. | `string` | | | | -| `score_config_snv` | A SNV rank model config file for genmod. | `string` | | | | -| `score_config_svs` | A SV rank model config file for genmod. | `string` | | | | +| `target_regions` | A BED file with regions of interest, used to limit variant calling. | `string` | | | | +| `hificnv_expected_xy_cn` | A BED file containing expected copy number regions for XY samples. | `string` | | | | +| `hificnv_expected_xx_cn` | A BED file containing expected copy number regions for XX samples. | `string` | | | | +| `hificnv_excluded_regions` | A BED file specifying regions to exclude with HiFiCNV, such as centromeres. | `string` | | | | +| `genmod_reduced_penetrance` | A file with gene ids that have reduced penetrance. For use with genmod. | `string` | | | | +| `genmod_score_config_snvs` | A SNV rank model config file for genmod. | `string` | | | | +| `genmod_score_config_svs` | A SV rank model config file for genmod. | `string` | | | | | `somalier_sites` | A VCF of known polymorphic sites for somalier | `string` | | | | | `pipelines_testdata_base_path` | Base URL or local path to location of pipeline test dataset files | `string` | https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/22fb5b8a1a358df96e49f8d01a9c6e18770fbd6d/ | | True | @@ -99,14 +99,14 @@ Workflow options specific to genomic-medicine-sweden/nallo | Parameter | Description | Type | Default | Required | Hidden | |-----------|-----------|-----------|-----------|-----------|-----------| | `preset` | Enable or disable certain parts of the pipeline by default, depending on data type (`revio`, `pacbio`, `ONT_R10`) | `string` | revio | True | | -| `variant_caller` | Which short variant software to use (`deepvariant`) | `string` | deepvariant | | | +| `snv_caller` | Which short variant software to use (`deepvariant`) | `string` | deepvariant | | | | `sv_caller` | Which structural variant caller to use (`severus`, `sniffles`) | `string` | severus | | | | `phaser` | Which phasing software to use (`longphase`, `whatshap`, `hiphase`) | `string` | longphase | | | | `hifiasm_mode` | Run hifiasm in hifi-only or hifi-trio mode (`hifi-only`, `trio-binning`) | `string` | hifi-only | | | -| `parallel_alignments` | If parallel_alignments is bigger than 1, input files will be split and aligned in parallel to reduce processing time. | `integer` | 8 | | | -| `parallel_snv` | If parallel_snv is bigger than 1, short variant calling will be done in parallel to reduce processing time. | `integer` | 13 | | | +| `alignment_processes` | If alignment_processes is bigger than 1, input files will be split and aligned in parallel to reduce processing time. | `integer` | 8 | | | +| `snv_calling_processes` | If snv_calling_processes is bigger than 1, short variant calling will be done in parallel to reduce processing time. | `integer` | 13 | | | | `vep_cache_version` | VEP cache version | `integer` | 110 | | | -| `vep_plugin_files` | A csv file with vep_plugins as header, and then paths to vep plugin files. Paths to pLI_values.txt and LoFtool_scores.txt are required. | `string` | | | | +| `vep_plugin_files` | A csv file with vep_plugin_files as header, and then paths to vep plugin files. Paths to pLI_values.txt and LoFtool_scores.txt are required. | `string` | | | | | `deepvariant_model_type` | Sets the model type used for DeepVariant. This is set automatically using `--preset` by default. | `string` | PACBIO | | True | | `minimap2_read_mapping_preset` | Sets the minimap2-preset (-x) for read alignment. This is set automatically using the pipeline `--preset` by default. | `string` | map-hifi | | True | | `extra_modkit_options` | Extra options to modkit, used for test profile. | `string` | | | True | diff --git a/docs/usage.md b/docs/usage.md index 1252c08c..53def5eb 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -88,8 +88,8 @@ This pipeline comes with three different presets that should be set with the `-- The selected preset will turn off subworkflows: - - `--skip_assembly_wf` and `--skip_repeat_wf` will be set to `true` for `ONT_R10` - - `--skip_methylation_wf` will be set to `true` for `pacbio` + - `--skip_genome_assembly` and `--skip_repeat_wf` will be set to `true` for `ONT_R10` + - `--skip_methylation_pileups` will be set to `true` for `pacbio` ## Subworkflows @@ -101,9 +101,9 @@ For example, if you would run `nextflow run genomic-medicine-sweden/nallo -profi ``` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - --skip_assembly_wf is NOT active, the following files are required: --dipcall_par - --skip_snv_annotation is NOT active, the following files are required: --snp_db - --skip_mapping_wf is NOT active, the following files are required: --somalier_sites + --skip_genome_assembly is NOT active, the following files are required: --dipcall_par + --skip_snv_annotation is NOT active, the following files are required: --echtvar_snv_databases + --skip_alignment is NOT active, the following files are required: --somalier_sites --skip_snv_annotation is NOT active, the following files are required: --vep_cache ... ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -113,11 +113,11 @@ A thorough description of required files are provided below. Additionally, if you want to skip a subworkflow, you will need to explicitly state to skip all subworkflows that rely on it. -For example, `nextflow run genomic-medicine-sweden/nallo -profile docker --outdir results --input samplesheet.csv --skip_mapping_wf` will tell you +For example, `nextflow run genomic-medicine-sweden/nallo -profile docker --outdir results --input samplesheet.csv --skip_alignment` will tell you ``` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - --skip_mapping_wf is active, the pipeline has to be run with: --skip_qc --skip_assembly_wf --skip_call_paralogs --skip_short_variant_calling --skip_snv_annotation --skip_cnv_calling --skip_phasing_wf --skip_rank_variants --skip_repeat_calling --skip_repeat_annotation --skip_methylation_wf + --skip_alignment is active, the pipeline has to be run with: --skip_qc --skip_genome_assembly --skip_call_paralogs --skip_snv_calling --skip_snv_annotation --skip_cnv_calling --skip_phasing --skip_rank_variants --skip_repeat_calling --skip_repeat_annotation --skip_methylation_pileups ... ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ``` @@ -137,7 +137,7 @@ The majority of subworkflows depend on the mapping (alignment) subworkflow which | `fasta` | Reference genome, either gzipped or uncompressed FASTA (e.g. [GCA_000001405.15_GRCh38_no_alt_analysis_set.fna.gz](https://lh3.github.io/2017/11/13/which-human-reference-genome-to-use)) | | `somalier_sites` | A VCF of known polymorphic sites (e.g. [sites.hg38.vcg.gz](https://github.com/brentp/somalier/files/3412456/sites.hg38.vcf.gz)), from which sex will be inferred if possible. | -Turned off with `--skip_mapping_wf`. +Turned off with `--skip_alignment`. ### QC @@ -159,7 +159,7 @@ It requires a BED file with PAR regions. Make sure chrY PAR is hard masked in reference genome you are using. -Turned off with `--skip_assembly_wf`. +Turned off with `--skip_genome_assembly`. ### Call paralogs @@ -178,17 +178,17 @@ This subworkflow depends on the mapping subworkflow, and required the same PAR r | ------------- | --------------------------------------------------------------------------------------------------------------------------------- | | `par_regions` | A BED file with PAR regions (e.g. [GRCh38_PAR.bed](ttps://storage.googleapis.com/deepvariant/case-study-testdata/GRCh38_PAR.bed)) | -Turned off with `--skip_short_variant_calling`. +Turned off with `--skip_snv_calling`. ### CNV calling This subworkflow depends on the mapping and short variant calling subworkflows, and requires the following additional files: -| Parameter | Description | -| ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `hificnv_xy` | expected XY copy number regions for your reference genome (e.g. [expected_cn.hg38.XY.bed](https://github.com/PacificBiosciences/HiFiCNV/raw/main/data/expected_cn/expected_cn.hg38.XY.bed)) | -| `hificnv_xx` | expected XX copy number regions for your reference genome (e.g. [expected_cn.hg38.XX.bed](https://github.com/PacificBiosciences/HiFiCNV/raw/main/data/expected_cn/expected_cn.hg38.XX.bed)) | -| `hificnv_exclude` | BED file specifying regions to exclude (e.g. [cnv.excluded_regions.hg38.bed.gz](https://github.com/PacificBiosciences/HiFiCNV/raw/main/data/excluded_regions/cnv.excluded_regions.hg38.bed.gz)) | +| Parameter | Description | +| -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `hificnv_expected_xy_cn` | expected XY copy number regions for your reference genome (e.g. [expected_cn.hg38.XY.bed](https://github.com/PacificBiosciences/HiFiCNV/raw/main/data/expected_cn/expected_cn.hg38.XY.bed)) | +| `hificnv_expected_xx_cn` | expected XX copy number regions for your reference genome (e.g. [expected_cn.hg38.XX.bed](https://github.com/PacificBiosciences/HiFiCNV/raw/main/data/expected_cn/expected_cn.hg38.XX.bed)) | +| `hificnv_excluded_regions` | BED file specifying regions to exclude (e.g. [cnv.excluded_regions.hg38.bed.gz](https://github.com/PacificBiosciences/HiFiCNV/raw/main/data/excluded_regions/cnv.excluded_regions.hg38.bed.gz)) | Turned off with `--skip_cnv_calling`. @@ -196,13 +196,13 @@ Turned off with `--skip_cnv_calling`. This subworkflow phases variants and haplotags aligned BAM files, and such relies on the mapping and short variant calling subworkflows, but requires no additional files. -Turned off with `--skip_phasing_wf`. +Turned off with `--skip_phasing`. ### Methylation This subworkflow relies on mapping and short variant calling subworkflows, but requires no additional files. -Turned off with `--skip_methylation_wf`. +Turned off with `--skip_methylation_pileups`. ### Repeat calling @@ -218,9 +218,9 @@ Turned off with `--skip_repeat_calling`. This subworkflow relies on the mapping, short variant calling, phasing and repeat calling subworkflows, and requires the following additional files: -| Parameter | Description | -| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `variant_catalog` | a variant catalog matching your reference (e.g. [variant_catalog_grch38.json](https://github.com/Clinical-Genomics/stranger/raw/main/stranger/resources/variant_catalog_grch38.json)) | +| Parameter | Description | +| ------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `stranger_repeat_catalog` | a variant catalog matching your reference (e.g. [stranger_repeat_catalog_grch38.json](https://github.com/Clinical-Genomics/stranger/raw/main/stranger/resources/stranger_repeat_catalog_grch38.json)) | Turned off with `--skip_repeat_annotation`. @@ -228,16 +228,16 @@ Turned off with `--skip_repeat_annotation`. This subworkflow relies on the mapping and short variant calling, and requires the following additional files: - + -| Parameter | Description | -| -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `vep_cache` | VEP cache matching your reference genome, either as a `.tar.gz` archive or path to a directory (e.g. [homo_sapiens_vep_110_GRCh38.tar.gz](https://ftp.ensembl.org/pub/release-110/variation/vep/homo_sapiens_vep_110_GRCh38.tar.gz)) | -| `vep_plugins` 1 | A csv file with VEP plugin files, pLI and LoFtool are required. Example provided below. | -| `snp_db` 2 |  A csv file with annotation databases from ([`echtvar encode`](https://github.com/brentp/echtvar)) | -| `variant_consequences_snv` | A list of SO terms listed in the order of severity from most severe to lease severe for annotating genomic and mitochondrial SNVs. Sample file [here](https://github.com/nf-core/test-datasets/blob/raredisease/reference/variant_consequences_v2.txt). You can learn more about these terms [here](https://ensembl.org/info/genome/variation/prediction/predicted_data.html) | +| Parameter | Description | +| ------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `vep_cache` | VEP cache matching your reference genome, either as a `.tar.gz` archive or path to a directory (e.g. [homo_sapiens_vep_110_GRCh38.tar.gz](https://ftp.ensembl.org/pub/release-110/variation/vep/homo_sapiens_vep_110_GRCh38.tar.gz)) | +| `vep_plugin_files` 1 | A csv file with VEP plugin files, pLI and LoFtool are required. Example provided below. | +| `echtvar_snv_databases` 2 |  A csv file with annotation databases from ([`echtvar encode`](https://github.com/brentp/echtvar)) | +| `variant_consequences_snvs` | A list of SO terms listed in the order of severity from most severe to lease severe for annotating genomic and mitochondrial SNVs. Sample file [here](https://github.com/nf-core/test-datasets/blob/raredisease/reference/variant_consequences_v2.txt). You can learn more about these terms [here](https://ensembl.org/info/genome/variation/prediction/predicted_data.html) | -1 Example file for input with `--vep_plugins` +1 Example file for input with `--vep_plugin_files` ``` vep_files @@ -248,7 +248,7 @@ https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/nallo/re https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/nallo/reference/vep_plugins/LoFtool_scores.txt ``` -2 Example file for input with `--snp_db`: +2 Example file for input with `--echtvar_snv_databases`: ``` sample,file @@ -264,7 +264,7 @@ cadd,/path/to/cadd.v1.6.hg38.zip !!!tip - Optionally, to calcuate CADD scores for small indels, supply a path to a folder containing cadd annotations with `--cadd_resources` and prescored indels with `--cadd_prescored`. Equivalent of the `data/annotations/` and `data/prescored/` folders described [here](https://github.com/kircherlab/CADD-scripts/#manual-installation). CADD scores for SNVs can be annotated through echvtvar and `--snp_db`. + Optionally, to calcuate CADD scores for small indels, supply a path to a folder containing cadd annotations with `--cadd_resources` and prescored indels with `--cadd_prescored_indels`. Equivalent of the `data/annotations/` and `data/prescored/` folders described [here](https://github.com/kircherlab/CADD-scripts/#manual-installation). CADD scores for SNVs can be annotated through echvtvar and `--echtvar_snv_databases`. Turned off with `--skip_snv_annotation`. @@ -272,10 +272,10 @@ Turned off with `--skip_snv_annotation`. This subworkflow ranks SNVs, and relies on the mapping, short variant calling and SNV annotation subworkflows, and requires the following additional files: -| Parameter | Description | -| -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `score_config_snv` |  Used by GENMOD when ranking variants. Sample file [here](https://github.com/nf-core/test-datasets/blob/raredisease/reference/rank_model_snv.ini). | -| `reduced_penetrance` | A list of loci that show [reduced penetrance](https://medlineplus.gov/genetics/understanding/inheritance/penetranceexpressivity/) in people. Sample file [here](https://github.com/nf-core/test-datasets/blob/raredisease/reference/reduced_penetrance.tsv) | +| Parameter | Description | +| --------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `genmod_score_config_snvs` |  Used by GENMOD when ranking variants. Sample file [here](https://github.com/nf-core/test-datasets/blob/raredisease/reference/rank_model_snv.ini). | +| `genmod_reduced_penetrance` | A list of loci that show [reduced penetrance](https://medlineplus.gov/genetics/understanding/inheritance/penetranceexpressivity/) in people. Sample file [here](https://github.com/nf-core/test-datasets/blob/raredisease/reference/reduced_penetrance.tsv) | `--skip_rank_variants`. @@ -283,11 +283,11 @@ This subworkflow ranks SNVs, and relies on the mapping, short variant calling an This subworkflow relies on the mapping subworkflow, and requires the following additional files: -| Parameter | Description | -| ----------------------- | ----------------------------------------------------------------------------- | -| `svdb_dbs` 1 | Csv file with databases used for structural variant annotation in vcf format. | +| Parameter | Description | +| -------------------------------- | ----------------------------------------------------------------------------- | +| `svdb_sv_databases` 1 | Csv file with databases used for structural variant annotation in vcf format. | -1 Example file for input with `--svdb_dbs`: +1 Example file for input with `--svdb_sv_databases`: ``` filename,in_freq_info_key,in_allele_count_info_key,out_freq_info_key,out_allele_count_info_key @@ -302,18 +302,18 @@ Turned off with `--skip_sv_annotation`. This subworkflow ranks SVs, and relies on the mapping, SV calling and SV annotation subworkflows, and requires the following additional files: -| Parameter | Description | -| -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `score_config_svs` |  Used by GENMOD when ranking variants. Sample file [here](https://github.com/nf-core/test-datasets/blob/raredisease/reference/rank_model_snv.ini). | -| `reduced_penetrance` | A list of loci that show [reduced penetrance](https://medlineplus.gov/genetics/understanding/inheritance/penetranceexpressivity/) in people. Sample file [here](https://github.com/nf-core/test-datasets/blob/raredisease/reference/reduced_penetrance.tsv) | +| Parameter | Description | +| --------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `genmod_score_config_svs` |  Used by GENMOD when ranking variants. Sample file [here](https://github.com/nf-core/test-datasets/blob/raredisease/reference/rank_model_snv.ini). | +| `genmod_reduced_penetrance` | A list of loci that show [reduced penetrance](https://medlineplus.gov/genetics/understanding/inheritance/penetranceexpressivity/) in people. Sample file [here](https://github.com/nf-core/test-datasets/blob/raredisease/reference/reduced_penetrance.tsv) | `--skip_rank_variants`. ## Other highlighted parameters -- Limit SNV calling to regions in BED file (`--bed`). -- By default SNV-calling is split into 13 parallel processes, this speeds up the variant calling significantly. Limit this by setting `--parallel_snv` to a different number. -- By default the pipeline splits the input files into eight pieces, performs parallel alignment and then merges the files. This can be changed to a different number with `--parallel_alignments`, or turned off by supplying a value of 1. Parallel alignment comes with some additional overhead, but can speed up the pipeline significantly. +- Limit SNV calling to regions in BED file (`--target_bed`). +- By default SNV-calling is split into 13 parallel processes, this speeds up the variant calling significantly. Limit this by setting `--snv_calling_processes` to a different number. +- By default the pipeline splits the input files into eight pieces, performs parallel alignment and then merges the files. This can be changed to a different number with `--alignment_processes`, or turned off by supplying a value of 1. Parallel alignment comes with some additional overhead, but can speed up the pipeline significantly. ## Reproducibility diff --git a/nextflow.config b/nextflow.config index fe454b2c..cfcf60e4 100644 --- a/nextflow.config +++ b/nextflow.config @@ -11,39 +11,39 @@ params { // Input options input = null - bed = null + target_regions = null cadd_resources = null - cadd_prescored = null + cadd_prescored_indels = null par_regions = null tandem_repeats = null trgt_repeats = null - variant_catalog = null - reduced_penetrance = null - score_config_snv = null - score_config_svs = null - snp_db = null - svdb_dbs = null - variant_consequences_snv = null + stranger_repeat_catalog = null + genmod_reduced_penetrance = null + genmod_score_config_snvs = null + genmod_score_config_svs = null + echtvar_snv_databases = null + svdb_sv_databases = null + variant_consequences_snvs = null variant_consequences_svs = null vep_cache = null vep_plugin_files = null - hificnv_xy = null - hificnv_xx = null - hificnv_exclude = null + hificnv_expected_xy_cn = null + hificnv_expected_xx_cn = null + hificnv_excluded_regions = null somalier_sites = null // Skip parts of the workflow - skip_assembly_wf = params.preset == 'ONT_R10' ? true : false + skip_genome_assembly = params.preset == 'ONT_R10' ? true : false skip_call_paralogs = false skip_cnv_calling = false - skip_mapping_wf = false - skip_methylation_wf = params.preset == 'pacbio' ? true : false - skip_phasing_wf = false + skip_alignment = false + skip_methylation_pileups = params.preset == 'pacbio' ? true : false + skip_phasing = false skip_qc = false skip_rank_variants = false skip_repeat_calling = params.preset == 'ONT_R10' ? true : false skip_repeat_annotation = params.preset == 'ONT_R10' ? true : false - skip_short_variant_calling = false + skip_snv_calling = false skip_snv_annotation = false skip_sv_annotation = false @@ -53,28 +53,28 @@ params { sv_caller = 'severus' preset = 'revio' hifiasm_mode = 'hifi-only' - variant_caller = 'deepvariant' + snv_caller = 'deepvariant' vep_cache_version = 110 // Test config options - extra_modkit_options = '' - extra_vep_options = '' - extra_paraphase_options = '' - extra_hifiasm_options = '' + extra_modkit_options = '' + extra_vep_options = '' + extra_paraphase_options = '' + extra_hifiasm_options = '' // Preprocessing/parallelisation - parallel_snv = 13 - parallel_alignments = 8 + snv_calling_processes = 13 + alignment_processes = 8 // References - fasta = null + fasta = null // MultiQC options - multiqc_config = null - multiqc_title = null - multiqc_logo = null - max_multiqc_email_size = '25.MB' - multiqc_methods_description = null + multiqc_config = null + multiqc_title = null + multiqc_logo = null + max_multiqc_email_size = '25.MB' + multiqc_methods_description = null // Boilerplate options outdir = null @@ -91,17 +91,17 @@ params { pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/22fb5b8a1a358df96e49f8d01a9c6e18770fbd6d/' // Config options - config_profile_name = null - config_profile_description = null + config_profile_name = null + config_profile_description = null - custom_config_version = 'master' - custom_config_base = "https://raw.githubusercontent.com/nf-core/configs/${params.custom_config_version}" - config_profile_contact = null - config_profile_url = null + custom_config_version = 'master' + custom_config_base = "https://raw.githubusercontent.com/nf-core/configs/${params.custom_config_version}" + config_profile_contact = null + config_profile_url = null // Schema validation default options - validate_params = true + validate_params = true } diff --git a/nextflow_schema.json b/nextflow_schema.json index be205588..5a039737 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -17,25 +17,25 @@ "description": "Skip QC of reads", "default": false }, - "skip_short_variant_calling": { + "skip_snv_calling": { "type": "boolean", "description": "Skip short variant calling", "fa_icon": "fas fa-fast-forward", "default": false }, - "skip_assembly_wf": { + "skip_genome_assembly": { "type": "boolean", "description": "Skip genome assembly and assembly variant calling", "fa_icon": "fas fa-fast-forward", "default": false }, - "skip_mapping_wf": { + "skip_alignment": { "type": "boolean", "description": "Skip read mapping (alignment)", "fa_icon": "fas fa-fast-forward", "default": false }, - "skip_methylation_wf": { + "skip_methylation_pileups": { "type": "boolean", "description": "Skip generation of methylation pileups", "fa_icon": "fas fa-fast-forward", @@ -53,7 +53,7 @@ "fa_icon": "fas fa-fast-forward", "default": false }, - "skip_phasing_wf": { + "skip_phasing": { "type": "boolean", "fa_icon": "fas fa-fast-forward", "description": "Skip phasing of variants and haplotagging of reads", @@ -123,7 +123,7 @@ "description": "MultiQC report title. Printed as page header, used for filename if not otherwise specified.", "fa_icon": "fas fa-file-signature" }, - "cadd_prescored": { + "cadd_prescored_indels": { "type": "string", "exists": true, "format": "directory-path", @@ -158,7 +158,7 @@ "format": "file-path", "exists": true }, - "snp_db": { + "echtvar_snv_databases": { "type": "string", "pattern": "^\\S+\\.csv$", "format": "file-path", @@ -167,7 +167,7 @@ "description": "A csv file with echtvar databases to annotate SNVs with", "exists": true }, - "svdb_dbs": { + "svdb_sv_databases": { "type": "string", "exists": true, "format": "file-path", @@ -178,13 +178,13 @@ "mimetype": "text/csv", "schema": "assets/svdb_query_vcf_schema.json" }, - "variant_catalog": { + "stranger_repeat_catalog": { "type": "string", "description": "A variant catalog json-file for stranger", "format": "file-path", "exists": true }, - "variant_consequences_snv": { + "variant_consequences_snvs": { "type": "string", "description": "File containing list of SO terms listed in the order of severity from most severe to lease severe for annotating genomic SNVs. For more information check https://ensembl.org/info/genome/variation/prediction/predicted_data.html", "fa_icon": "fas fa-file-csv" @@ -200,46 +200,46 @@ "format": "path", "exists": true }, - "bed": { + "target_regions": { "type": "string", "pattern": "^\\S+\\.bed$", "format": "file-path", - "description": "A BED file with regions of interest, used to limit short variant calling.", + "description": "A BED file with regions of interest, used to limit variant calling.", "exists": true }, - "hificnv_xy": { + "hificnv_expected_xy_cn": { "type": "string", "format": "file-path", "description": "A BED file containing expected copy number regions for XY samples.", "exists": true }, - "hificnv_xx": { + "hificnv_expected_xx_cn": { "type": "string", "format": "file-path", "description": "A BED file containing expected copy number regions for XX samples.", "exists": true }, - "hificnv_exclude": { + "hificnv_excluded_regions": { "type": "string", "format": "file-path", "description": "A BED file specifying regions to exclude with HiFiCNV, such as centromeres.", "exists": true }, - "reduced_penetrance": { + "genmod_reduced_penetrance": { "type": "string", "exists": true, "format": "path", "fa_icon": "fas fa-file-csv", "description": "A file with gene ids that have reduced penetrance. For use with genmod." }, - "score_config_snv": { + "genmod_score_config_snvs": { "type": "string", "exists": true, "format": "path", "fa_icon": "fas fa-file", "description": "A SNV rank model config file for genmod." }, - "score_config_svs": { + "genmod_score_config_svs": { "type": "string", "exists": true, "format": "path", @@ -421,7 +421,7 @@ "description": "Enable or disable certain parts of the pipeline by default, depending on data type (`revio`, `pacbio`, `ONT_R10`)", "enum": ["revio", "pacbio", "ONT_R10"] }, - "variant_caller": { + "snv_caller": { "type": "string", "default": "deepvariant", "description": "Which short variant software to use (`deepvariant`)", @@ -445,16 +445,16 @@ "enum": ["hifi-only", "trio-binning"], "default": "hifi-only" }, - "parallel_alignments": { + "alignment_processes": { "type": "integer", "minimum": 1, "default": 8, - "description": "If parallel_alignments is bigger than 1, input files will be split and aligned in parallel to reduce processing time." + "description": "If alignment_processes is bigger than 1, input files will be split and aligned in parallel to reduce processing time." }, - "parallel_snv": { + "snv_calling_processes": { "type": "integer", "default": 13, - "description": "If parallel_snv is bigger than 1, short variant calling will be done in parallel to reduce processing time.", + "description": "If snv_calling_processes is bigger than 1, short variant calling will be done in parallel to reduce processing time.", "minimum": 1 }, "vep_cache_version": { @@ -465,7 +465,7 @@ "vep_plugin_files": { "type": "string", "mimetype": "text/csv", - "description": "A csv file with vep_plugins as header, and then paths to vep plugin files. Paths to pLI_values.txt and LoFtool_scores.txt are required.", + "description": "A csv file with vep_files as header, and then paths to vep plugin files. Paths to pLI_values.txt and LoFtool_scores.txt are required.", "schema": "assets/vep_plugin_files_schema.json" }, "deepvariant_model_type": { diff --git a/subworkflows/local/annotate_cadd/main.nf b/subworkflows/local/annotate_cadd/main.nf index a56d1450..223624a3 100644 --- a/subworkflows/local/annotate_cadd/main.nf +++ b/subworkflows/local/annotate_cadd/main.nf @@ -14,12 +14,12 @@ include { TABIX_TABIX as TABIX_CADD } from '../../../modules/nf-core/ workflow ANNOTATE_CADD { take: - ch_fai // channel: [mandatory] [ val(meta), path(fai) ] - ch_vcf // channel: [mandatory] [ val(meta), path(vcfs) ] - ch_index // channel: [mandatory] [ val(meta), path(tbis) ] - ch_header // channel: [mandatory] [ val(meta), path(txt) ] - ch_cadd_resources // channel: [mandatory] [ val(meta), path(dir) ] - ch_cadd_prescored // channel: [mandatory] [ val(meta), path(dir) ] + ch_fai // channel: [mandatory] [ val(meta), path(fai) ] + ch_vcf // channel: [mandatory] [ val(meta), path(vcfs) ] + ch_index // channel: [mandatory] [ val(meta), path(tbis) ] + ch_header // channel: [mandatory] [ val(meta), path(txt) ] + ch_cadd_resources // channel: [mandatory] [ val(meta), path(dir) ] + ch_cadd_prescored_indels // channel: [mandatory] [ val(meta), path(dir) ] main: ch_versions = Channel.empty() @@ -50,7 +50,7 @@ workflow ANNOTATE_CADD { ) ch_versions = ch_versions.mix(BCFTOOLS_VIEW.out.versions) - CADD ( BCFTOOLS_VIEW.out.vcf, ch_cadd_resources, ch_cadd_prescored ) + CADD ( BCFTOOLS_VIEW.out.vcf, ch_cadd_resources, ch_cadd_prescored_indels ) ch_versions = ch_versions.mix(CADD.out.versions) TABIX_CADD ( CADD.out.tsv ) diff --git a/subworkflows/local/annotate_repeat_expansions/main.nf b/subworkflows/local/annotate_repeat_expansions/main.nf index 62b138c6..dc7c5603 100644 --- a/subworkflows/local/annotate_repeat_expansions/main.nf +++ b/subworkflows/local/annotate_repeat_expansions/main.nf @@ -7,14 +7,14 @@ include { STRANGER } from '../../../modules/nf-core/st workflow ANNOTATE_REPEAT_EXPANSIONS { take: - ch_variant_catalog // channel: [mandatory] [ path(variant_catalog.json) ] - ch_vcf // channel: [mandatory] [ val(meta), path(vcf) ] + ch_stranger_repeat_catalog // channel: [mandatory] [ path(stranger_repeat_catalog.json) ] + ch_vcf // channel: [mandatory] [ val(meta), path(vcf) ] main: ch_versions = Channel.empty() // Annotate, compress and index - STRANGER ( ch_vcf, ch_variant_catalog ) + STRANGER ( ch_vcf, ch_stranger_repeat_catalog ) ch_versions = ch_versions.mix(STRANGER.out.versions) COMPRESS_STRANGER ( diff --git a/subworkflows/local/annotate_svs/tests/main.nf.test b/subworkflows/local/annotate_svs/tests/main.nf.test index cab1851b..df7bc027 100644 --- a/subworkflows/local/annotate_svs/tests/main.nf.test +++ b/subworkflows/local/annotate_svs/tests/main.nf.test @@ -49,7 +49,7 @@ nextflow_workflow { } - test("severus, fasta, svdb, vep_cache, '110', vep_plugins") { + test("severus, fasta, svdb, vep_cache, '110', vep_plugin_files") { when { workflow { @@ -57,7 +57,7 @@ nextflow_workflow { input[0] = SEVERUS.out.all_vcf input[1] = GUNZIP.out.gunzip input[2] = Channel.of([ - [ id: 'svdb_dbs' ], + [ id: 'svdb_sv_databases' ], file(params.pipelines_testdata_base_path + 'testdata/svdb_dbs.csv', checkIfExists: true) ]) input[3] = UNTAR.out.untar.map { meta, cache -> cache } @@ -82,7 +82,7 @@ nextflow_workflow { } - test("severus, fasta, svdb, vep_cache, '110', vep_plugins -stub") { + test("severus, fasta, svdb, vep_cache, '110', vep_plugin_files -stub") { options "-stub" @@ -92,7 +92,7 @@ nextflow_workflow { input[0] = SEVERUS.out.all_vcf input[1] = GUNZIP.out.gunzip input[2] = Channel.of([ - [ id: 'svdb_dbs' ], + [ id: 'svdb_sv_databases' ], file(params.pipelines_testdata_base_path + 'testdata/svdb_dbs.csv', checkIfExists: true) ]) input[3] = UNTAR.out.untar.map { meta, cache -> cache } diff --git a/subworkflows/local/annotate_svs/tests/main.nf.test.snap b/subworkflows/local/annotate_svs/tests/main.nf.test.snap index c39dd47a..338a454e 100644 --- a/subworkflows/local/annotate_svs/tests/main.nf.test.snap +++ b/subworkflows/local/annotate_svs/tests/main.nf.test.snap @@ -1,5 +1,5 @@ { - "severus, fasta, svdb, vep_cache, '110', vep_plugins -stub": { + "severus, fasta, svdb, vep_cache, '110', vep_plugin_files -stub": { "content": [ [ "versions.yml:md5,84c59e3a0a183b01a21620b16ee9ca4d", @@ -13,7 +13,7 @@ }, "timestamp": "2024-11-04T16:18:47.369135866" }, - "severus, fasta, svdb, vep_cache, '110', vep_plugins": { + "severus, fasta, svdb, vep_cache, '110', vep_plugin_files": { "content": [ [ "versions.yml:md5,84c59e3a0a183b01a21620b16ee9ca4d", diff --git a/subworkflows/local/methylation/tests/main.nf.test b/subworkflows/local/methylation/tests/main.nf.test index f95c984c..4b72ed1c 100644 --- a/subworkflows/local/methylation/tests/main.nf.test +++ b/subworkflows/local/methylation/tests/main.nf.test @@ -74,7 +74,7 @@ nextflow_workflow { test("1 sample - [] phased") { when { params { - skip_phasing_wf = false + skip_phasing = false } workflow { """ @@ -96,7 +96,7 @@ nextflow_workflow { test("1 sample - [] unphased") { when { params { - skip_phasing_wf = true + skip_phasing = true } workflow { """ @@ -118,7 +118,7 @@ nextflow_workflow { test("1 sample - bed phased") { when { params { - skip_phasing_wf = false + skip_phasing = false } workflow { """ @@ -142,7 +142,7 @@ nextflow_workflow { test("1 sample - bed unphased") { when { params { - skip_phasing_wf = true + skip_phasing = true } workflow { """ @@ -167,7 +167,7 @@ nextflow_workflow { options "-stub" when { params { - skip_phasing_wf = false + skip_phasing = false } workflow { """ @@ -190,7 +190,7 @@ nextflow_workflow { options "-stub" when { params { - skip_phasing_wf = false + skip_phasing = false } workflow { """ @@ -215,7 +215,7 @@ nextflow_workflow { options "-stub" when { params { - skip_phasing_wf = true + skip_phasing = true } workflow { """ @@ -238,7 +238,7 @@ nextflow_workflow { options "-stub" when { params { - skip_phasing_wf = true + skip_phasing = true } workflow { """ diff --git a/subworkflows/local/methylation/tests/nextflow.config b/subworkflows/local/methylation/tests/nextflow.config index b977ef2a..1152c16d 100644 --- a/subworkflows/local/methylation/tests/nextflow.config +++ b/subworkflows/local/methylation/tests/nextflow.config @@ -52,7 +52,7 @@ process { '--combine-mods', '--cpg', '--combine-strands', - !params.skip_phasing_wf ? '--partition-tag HP' : '', + !params.skip_phasing ? '--partition-tag HP' : '', ].join(' ') } ext.prefix = { "${meta.id}_modkit_pileup" } } diff --git a/subworkflows/local/rank_variants/main.nf b/subworkflows/local/rank_variants/main.nf index db7e0139..97f00869 100644 --- a/subworkflows/local/rank_variants/main.nf +++ b/subworkflows/local/rank_variants/main.nf @@ -11,10 +11,10 @@ include { BCFTOOLS_SORT } from '../../../modules/nf-core/bcftools/sort/main' workflow RANK_VARIANTS { take: - ch_vcf // channel: [mandatory] [ val(meta), path(vcf) ] - ch_ped // channel: [mandatory] [ val(meta), path(ped) ] - ch_reduced_penetrance // channel: [mandatory] [ val(meta), path(pentrance) ] - ch_score_config // channel: [mandatory] [ val(meta), path(ini) ] + ch_vcf // channel: [mandatory] [ val(meta), path(vcf) ] + ch_ped // channel: [mandatory] [ val(meta), path(ped) ] + ch_genmod_reduced_penetrance // channel: [mandatory] [ val(meta), path(pentrance) ] + ch_score_config // channel: [mandatory] [ val(meta), path(ini) ] main: ch_versions = Channel.empty() @@ -28,7 +28,7 @@ workflow RANK_VARIANTS { GENMOD_MODELS ( genmod_models_in, - ch_reduced_penetrance.map { meta, file -> file } + ch_genmod_reduced_penetrance.map { meta, file -> file } ) ch_versions = ch_versions.mix(GENMOD_MODELS.out.versions) diff --git a/subworkflows/local/rank_variants/tests/main.nf.test b/subworkflows/local/rank_variants/tests/main.nf.test index aba1c085..f87e18b0 100644 --- a/subworkflows/local/rank_variants/tests/main.nf.test +++ b/subworkflows/local/rank_variants/tests/main.nf.test @@ -113,11 +113,11 @@ nextflow_workflow { input[0] = ANNOTATE_CSQ_PLI.out.vcf.map { meta, vcf -> [ [ id: 'test' ], vcf ] } input[1] = CREATE_PEDIGREE_FILE.out.ped.map { meta, ped -> [ [ id: 'test' ], ped ] } input[2] = Channel.of([ - [ id: 'reduced_penetrance' ], + [ id: 'genmod_reduced_penetrance' ], file(params.pipelines_testdata_base_path + 'reference/reduced_penetrance.tsv', checkIfExists: true) ]) input[3] = Channel.of([ - [ id: 'score_config_snv' ], + [ id: 'genmod_score_config_snvs' ], file(params.pipelines_testdata_base_path + 'reference/rank_model_snv.ini', checkIfExists: true) ]) """ @@ -145,11 +145,11 @@ nextflow_workflow { input[0] = ANNOTATE_CSQ_PLI.out.vcf.map { meta, vcf -> [ [ id: 'test' ], vcf ] } input[1] = CREATE_PEDIGREE_FILE.out.ped.map { meta, ped -> [ [ id: 'test' ], ped ] } input[2] = Channel.of([ - [ id: 'reduced_penetrance' ], + [ id: 'genmod_reduced_penetrance' ], file(params.pipelines_testdata_base_path + 'reference/reduced_penetrance.tsv', checkIfExists: true) ]) input[3] = Channel.of([ - [ id: 'score_config_snv' ], + [ id: 'genmod_score_config_snvs' ], file(params.pipelines_testdata_base_path + 'reference/rank_model_snv.ini', checkIfExists: true) ]) """ diff --git a/subworkflows/local/snv_annotation/main.nf b/subworkflows/local/snv_annotation/main.nf index d1e382be..96182294 100644 --- a/subworkflows/local/snv_annotation/main.nf +++ b/subworkflows/local/snv_annotation/main.nf @@ -7,17 +7,17 @@ include { TABIX_TABIX as TABIX_ENSEMBLVEP_SNV } from '../../../modules/n workflow SNV_ANNOTATION { take: - ch_vcf // channel [mandatory] [ val(meta), path(vcf) ] - ch_databases // channel: [mandatory] [ path(db) ] - ch_fasta // channel: [mandatory] [ val(meta), path(fasta) ] - ch_fai // channel: [mandatory] [ val(meta), path(fai) ] - ch_vep_cache // channel: [mandatory] [ path(cache) ] - val_vep_cache_version // string: [mandatory] default: 110 - ch_vep_extra_files // channel: [mandatory] [ path(files) ] - val_annotate_cadd // bool: [mandatory] - ch_cadd_header // channel: [mandatory] [ path(txt) ] - ch_cadd_resources // channel: [mandatory] [ val(meta), path(annotation) ] - ch_cadd_prescored // channel: [mandatory] [ val(meta), path(prescored) ] + ch_vcf // channel [mandatory] [ val(meta), path(vcf) ] + ch_databases // channel: [mandatory] [ path(db) ] + ch_fasta // channel: [mandatory] [ val(meta), path(fasta) ] + ch_fai // channel: [mandatory] [ val(meta), path(fai) ] + ch_vep_cache // channel: [mandatory] [ path(cache) ] + val_vep_cache_version // string: [mandatory] default: 110 + ch_vep_extra_files // channel: [mandatory] [ path(files) ] + val_annotate_cadd // bool: [mandatory] + ch_cadd_header // channel: [mandatory] [ path(txt) ] + ch_cadd_resources // channel: [mandatory] [ val(meta), path(annotation) ] + ch_cadd_prescored_indels // channel: [mandatory] [ val(meta), path(prescored) ] main: ch_versions = Channel.empty() @@ -38,7 +38,7 @@ workflow SNV_ANNOTATION { BCFTOOLS_FILLTAGS_ANNO.out.tbi, ch_cadd_header, ch_cadd_resources, - ch_cadd_prescored + ch_cadd_prescored_indels ) ch_versions = ch_versions.mix(ANNOTATE_CADD.out.versions) diff --git a/subworkflows/local/utils_nfcore_nallo_pipeline/main.nf b/subworkflows/local/utils_nfcore_nallo_pipeline/main.nf index 2ac3b504..b89ba7ac 100644 --- a/subworkflows/local/utils_nfcore_nallo_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_nallo_pipeline/main.nf @@ -32,18 +32,18 @@ include { UTILS_NEXTFLOW_PIPELINE } from '../../nf-core/utils_nextflow_pipelin // Define subworkflows and their associated "--skip" // def workflowSkips = [ - assembly : "skip_assembly_wf", - mapping : "skip_mapping_wf", - snv_calling : "skip_short_variant_calling", + assembly : "skip_genome_assembly", + mapping : "skip_alignment", + snv_calling : "skip_snv_calling", snv_annotation : "skip_snv_annotation", sv_annotation : "skip_sv_annotation", call_paralogs : "skip_call_paralogs", cnv_calling : "skip_cnv_calling", - phasing : "skip_phasing_wf", + phasing : "skip_phasing", rank_variants : "skip_rank_variants", repeat_calling : "skip_repeat_calling", repeat_annotation: "skip_repeat_annotation", - methylation : "skip_methylation_wf", + methylation : "skip_methylation_pileups", qc : "skip_qc", ] @@ -72,47 +72,47 @@ def fileDependencies = [ mapping : ["fasta", "somalier_sites"], assembly : ["fasta", "par_regions"], // The assembly workflow should be split into two - assembly and variant calling (requires ref) snv_calling : ["fasta", "par_regions"], - snv_annotation : ["snp_db", "vep_cache", "vep_plugin_files", "variant_consequences_snv"], - sv_annotation : ["svdb_dbs", "vep_cache", "vep_plugin_files", "variant_consequences_svs"], - cnv_calling : ["hificnv_xy", "hificnv_xx", "hificnv_exclude"], - rank_variants : ["reduced_penetrance", "score_config_snv", "score_config_svs"], + snv_annotation : ["echtvar_snv_databases", "vep_cache", "vep_plugin_files", "variant_consequences_snvs"], + sv_annotation : ["svdb_sv_databases", "vep_cache", "vep_plugin_files", "variant_consequences_svs"], + cnv_calling : ["hificnv_expected_xy_cn", "hificnv_expected_xx_cn", "hificnv_excluded_regions"], + rank_variants : ["genmod_reduced_penetrance", "genmod_score_config_snvs", "genmod_score_config_svs"], repeat_calling : ["trgt_repeats"], - repeat_annotation: ["variant_catalog"], + repeat_annotation: ["stranger_repeat_catalog"], ] def parameterStatus = [ workflow: [ - skip_short_variant_calling: params.skip_short_variant_calling, - skip_phasing_wf : params.skip_phasing_wf, - skip_methylation_wf : params.skip_methylation_wf, - skip_rank_variants : params.skip_rank_variants, - skip_repeat_calling : params.skip_repeat_calling, - skip_repeat_annotation : params.skip_repeat_annotation, - skip_snv_annotation : params.skip_snv_annotation, - skip_sv_annotation : params.skip_sv_annotation, - skip_call_paralogs : params.skip_call_paralogs, - skip_cnv_calling : params.skip_cnv_calling, - skip_mapping_wf : params.skip_mapping_wf, - skip_qc : params.skip_qc, - skip_assembly_wf : params.skip_assembly_wf, + skip_snv_calling : params.skip_snv_calling, + skip_phasing : params.skip_phasing, + skip_methylation_pileups: params.skip_methylation_pileups, + skip_rank_variants : params.skip_rank_variants, + skip_repeat_calling : params.skip_repeat_calling, + skip_repeat_annotation : params.skip_repeat_annotation, + skip_snv_annotation : params.skip_snv_annotation, + skip_sv_annotation : params.skip_sv_annotation, + skip_call_paralogs : params.skip_call_paralogs, + skip_cnv_calling : params.skip_cnv_calling, + skip_alignment : params.skip_alignment, + skip_qc : params.skip_qc, + skip_genome_assembly : params.skip_genome_assembly, ], files: [ - par_regions : params.par_regions, - snp_db : params.snp_db, - svdb_dbs : params.svdb_dbs, - somalier_sites : params.somalier_sites, - vep_cache : params.vep_cache, - hificnv_xy : params.hificnv_xy, - hificnv_xx : params.hificnv_xx, - hificnv_exclude : params.hificnv_exclude, - fasta : params.fasta, - trgt_repeats : params.trgt_repeats, - variant_catalog : params.variant_catalog, - reduced_penetrance : params.reduced_penetrance, - score_config_snv : params.score_config_snv, - score_config_svs : params.score_config_svs, - variant_consequences_snv: params.variant_consequences_snv, - variant_consequences_svs: params.variant_consequences_svs, + par_regions : params.par_regions, + echtvar_snv_databases : params.echtvar_snv_databases, + svdb_sv_databases : params.svdb_sv_databases, + somalier_sites : params.somalier_sites, + vep_cache : params.vep_cache, + hificnv_expected_xy_cn : params.hificnv_expected_xy_cn, + hificnv_expected_xx_cn : params.hificnv_expected_xx_cn, + hificnv_excluded_regions : params.hificnv_excluded_regions, + fasta : params.fasta, + trgt_repeats : params.trgt_repeats, + stranger_repeat_catalog : params.stranger_repeat_catalog, + genmod_reduced_penetrance: params.genmod_reduced_penetrance, + genmod_score_config_snvs : params.genmod_score_config_snvs, + genmod_score_config_svs : params.genmod_score_config_svs, + variant_consequences_snvs : params.variant_consequences_snvs, + variant_consequences_svs : params.variant_consequences_svs, ] ] @@ -182,7 +182,7 @@ workflow PIPELINE_INITIALISATION { } .map { sample, metas, reads -> // Add number of files per sample _after_ splitting to meta - [ sample, metas[0] + [n_files: metas.size() + metas.size() * Math.max(0, params.parallel_alignments - 1), single_end:true ], reads ] + [ sample, metas[0] + [n_files: metas.size() + metas.size() * Math.max(0, params.alignment_processes - 1), single_end:true ], reads ] } // Convert back to [ meta, reads ] .flatMap { @@ -311,8 +311,8 @@ def toolCitationText() { def citation_text = [ "MultiQC (Ewels et al. 2016)", ] - if (!params.skip_mapping_wf) { - if (params.parallel_alignments > 1) { + if (!params.skip_alignment) { + if (params.alignment_processes > 1) { citation_text = citation_text + [ "splitubam", ] @@ -337,7 +337,7 @@ def toolCitationText() { "paraphase", ] } - if (!params.skip_assembly_wf) { + if (!params.skip_genome_assembly) { if (params.hifiasm_mode == 'trio-binning') { citation_text = citation_text + [ "yak", @@ -351,7 +351,7 @@ def toolCitationText() { "Minimap2 (Li 2018)", ] } - if (!params.skip_short_variant_calling) { + if (!params.skip_snv_calling) { citation_text = citation_text + [ "BEDTools (Quinlan & Hall 2010)", "BCFtools (Danecek et al. 2021)", @@ -385,7 +385,7 @@ def toolCitationText() { "HiFiCNV", ] } - if (!params.skip_phasing_wf) { + if (!params.skip_phasing) { citation_text = citation_text + [ "SAMtools (Danecek et al. 2021)", "cramino (De Coster & Rademakers 2023)", @@ -405,7 +405,7 @@ def toolCitationText() { "LongPhase (Lin et al. 2024)", ] } - if (!params.skip_methylation_wf) { + if (!params.skip_methylation_pileups) { citation_text = citation_text + [ "modkit", "Tabix (Li 2011)", diff --git a/tests/samplesheet_multisample_ont_bam.nf.test b/tests/samplesheet_multisample_ont_bam.nf.test index 5afa04af..635a31e3 100644 --- a/tests/samplesheet_multisample_ont_bam.nf.test +++ b/tests/samplesheet_multisample_ont_bam.nf.test @@ -4,7 +4,7 @@ nextflow_pipeline { script "../main.nf" tag "PIPELINE" - test("samplesheet_multisample_ont_bam | --preset ONT_R10 --phaser whatshap --parallel_alignments 1 --parallel_snv 1") { + test("samplesheet_multisample_ont_bam | --preset ONT_R10 --phaser whatshap --alignment_processes 1 --snv_calling_processes 1") { tag "samplesheet_multisample_ont_bam" when { @@ -13,8 +13,8 @@ nextflow_pipeline { input = params.pipelines_testdata_base_path + 'testdata/samplesheet_multisample_bam_ont.csv' outdir = "$outputDir" preset = 'ONT_R10' - parallel_alignments = 1 - parallel_snv = 1 + alignment_processes = 1 + snv_calling_processes = 1 phaser = "whatshap" } } diff --git a/tests/samplesheet_multisample_ont_bam.nf.test.snap b/tests/samplesheet_multisample_ont_bam.nf.test.snap index e5fca20e..f92f434f 100644 --- a/tests/samplesheet_multisample_ont_bam.nf.test.snap +++ b/tests/samplesheet_multisample_ont_bam.nf.test.snap @@ -1,5 +1,5 @@ { - "samplesheet_multisample_ont_bam | --preset ONT_R10 --phaser whatshap --parallel_alignments 1 --parallel_snv 1": { + "samplesheet_multisample_ont_bam | --preset ONT_R10 --phaser whatshap --alignment_processes 1 --snv_calling_processes 1": { "content": [ 103, { diff --git a/workflows/nallo.nf b/workflows/nallo.nf index 0c551e54..2d675915 100644 --- a/workflows/nallo.nf +++ b/workflows/nallo.nf @@ -75,45 +75,48 @@ workflow NALLO { // Channels from (optional) input files // If provided: [[id: 'reference'], [/path/to/reference_full_name.file]] - ch_cadd_header = createReferenceChannelFromPath("$projectDir/assets/cadd_to_vcf_header_-1.0-.txt") - ch_cadd_resources = createReferenceChannelFromPath(params.cadd_resources) - ch_cadd_prescored = createReferenceChannelFromPath(params.cadd_prescored) - ch_fasta = createReferenceChannelFromPath(params.fasta) - ch_tandem_repeats = createReferenceChannelFromPath(params.tandem_repeats, Channel.value([[],[]])) - ch_input_bed = createReferenceChannelFromPath(params.bed, Channel.value([[],[]])) - ch_par = createReferenceChannelFromPath(params.par_regions) - ch_trgt_bed = createReferenceChannelFromPath(params.trgt_repeats) - ch_variant_catalog = createReferenceChannelFromPath(params.variant_catalog) - ch_variant_consequences_snv = createReferenceChannelFromPath(params.variant_consequences_snv) - ch_variant_consequences_svs = createReferenceChannelFromPath(params.variant_consequences_svs) - ch_vep_cache_unprocessed = createReferenceChannelFromPath(params.vep_cache, Channel.value([])) - ch_expected_xy_bed = createReferenceChannelFromPath(params.hificnv_xy) - ch_expected_xx_bed = createReferenceChannelFromPath(params.hificnv_xx) - ch_exclude_bed = createReferenceChannelFromPath(params.hificnv_exclude) - ch_reduced_penetrance = createReferenceChannelFromPath(params.reduced_penetrance) - ch_score_config_snv = createReferenceChannelFromPath(params.score_config_snv) - ch_score_config_svs = createReferenceChannelFromPath(params.score_config_svs) - ch_somalier_sites = createReferenceChannelFromPath(params.somalier_sites) - ch_svdb_dbs = createReferenceChannelFromPath(params.svdb_dbs) + ch_cadd_header = createReferenceChannelFromPath("$projectDir/assets/cadd_to_vcf_header_-1.0-.txt") + ch_cadd_resources = createReferenceChannelFromPath(params.cadd_resources) + ch_cadd_prescored_indels = createReferenceChannelFromPath(params.cadd_prescored_indels) + ch_fasta = createReferenceChannelFromPath(params.fasta) + ch_tandem_repeats = createReferenceChannelFromPath(params.tandem_repeats, Channel.value([[],[]])) + ch_input_bed = createReferenceChannelFromPath(params.target_regions, Channel.value([[],[]])) + ch_par = createReferenceChannelFromPath(params.par_regions) + ch_trgt_bed = createReferenceChannelFromPath(params.trgt_repeats) + ch_stranger_repeat_catalog = createReferenceChannelFromPath(params.stranger_repeat_catalog) + ch_variant_consequences_snvs = createReferenceChannelFromPath(params.variant_consequences_snvs) + ch_variant_consequences_svs = createReferenceChannelFromPath(params.variant_consequences_svs) + ch_vep_cache_unprocessed = createReferenceChannelFromPath(params.vep_cache, Channel.value([])) + ch_expected_xy_bed = createReferenceChannelFromPath(params.hificnv_expected_xy_cn) + ch_expected_xx_bed = createReferenceChannelFromPath(params.hificnv_expected_xx_cn) + ch_exclude_bed = createReferenceChannelFromPath(params.hificnv_excluded_regions) + ch_genmod_reduced_penetrance = createReferenceChannelFromPath(params.genmod_reduced_penetrance) + ch_genmod_score_config_snvs = createReferenceChannelFromPath(params.genmod_score_config_snvs) + ch_genmod_score_config_svs = createReferenceChannelFromPath(params.genmod_score_config_svs) + ch_somalier_sites = createReferenceChannelFromPath(params.somalier_sites) + ch_svdb_sv_databases = createReferenceChannelFromPath(params.svdb_sv_databases) // Channels from (optional) input samplesheets validated by schema - ch_databases = createReferenceChannelFromSamplesheet(params.snp_db, 'assets/schema_snp_db.json') - ch_vep_plugin_files = createReferenceChannelFromSamplesheet(params.vep_plugin_files, 'assets/schema_vep_plugin_files.json', Channel.value([])) + ch_databases = createReferenceChannelFromSamplesheet(params.echtvar_snv_databases, 'assets/schema_snp_db.json') + ch_vep_plugin_files = createReferenceChannelFromSamplesheet(params.vep_plugin_files, 'assets/schema_vep_plugin_files.json', Channel.value([])) + + // Check parameter that doesn't conform to schema validation here + if (params.phaser.matches('hiphase') && params.preset == 'ONT_R10') { error "The HiPhase license only permits analysis of data from PacBio. For details see: https://github.com/PacificBiosciences/HiPhase/blob/main/LICENSE.md" } // // Convert FASTQ to BAM (and vice versa if assembly workflow is active) // CONVERT_INPUT_FILES ( ch_input, - !params.skip_assembly_wf, // should bam -> fastq conversion be done - !params.skip_mapping_wf // should fastq -> bam conversion be done + !params.skip_genome_assembly, // should bam -> fastq conversion be done + !params.skip_alignment // should fastq -> bam conversion be done ) ch_versions = ch_versions.mix(CONVERT_INPUT_FILES.out.versions) // // Map reads to reference // - if (!params.skip_mapping_wf) { + if (!params.skip_alignment) { // Prepeare references PREPARE_GENOME ( @@ -129,8 +132,9 @@ workflow NALLO { fai = PREPARE_GENOME.out.fai mmi = PREPARE_GENOME.out.mmi - // Split input BAM files - if(params.parallel_alignments > 1) { + // Split input files for alignment + if (params.alignment_processes > 1) { + SPLITUBAM ( CONVERT_INPUT_FILES.out.bam ) ch_versions = ch_versions.mix(SPLITUBAM.out.versions) } @@ -139,7 +143,7 @@ workflow NALLO { // Align reads (could be a split-align-merge subworkflow) // MINIMAP2_ALIGN ( - params.parallel_alignments > 1 ? SPLITUBAM.out.bam.transpose() : CONVERT_INPUT_FILES.out.bam, + params.alignment_processes > 1 ? SPLITUBAM.out.bam.transpose() : CONVERT_INPUT_FILES.out.bam, mmi, true, 'bai', @@ -246,7 +250,7 @@ workflow NALLO { // // Hifiasm assembly and assembly variant calling // - if(!params.skip_assembly_wf) { + if(!params.skip_genome_assembly) { //Hifiasm assembly ASSEMBLY( CONVERT_INPUT_FILES.out.fastq ) @@ -276,15 +280,17 @@ workflow NALLO { // // Call SNVs // - if(!params.skip_short_variant_calling) { + if(!params.skip_snv_calling) { + // // Make BED intervals, to be used for parallel SNV calling + // SCATTER_GENOME ( fai, - ch_input_bed, - !params.bed, // should a bed be made from fai - !params.skip_short_variant_calling, // should bed be split and snv-calling intervals be made - params.parallel_snv // how many splits should be done + ch_input_bed, // BED file to scatter + !params.target_regions, // Make bed from fai + !params.skip_snv_calling, + params.snv_calling_processes ) ch_versions = ch_versions.mix(SCATTER_GENOME.out.versions) @@ -321,16 +327,16 @@ workflow NALLO { PREPARE_GENOME.out.vep_resources.map { meta, cache -> cache }, params.vep_cache_version, ch_vep_plugin_files.collect(), - (params.cadd_resources && params.cadd_prescored), // should indels be annotated with CADD + (params.cadd_resources && params.cadd_prescored_indels), // should indels be annotated with CADD ch_cadd_header, ch_cadd_resources, - ch_cadd_prescored + ch_cadd_prescored_indels ) ch_versions = ch_versions.mix(SNV_ANNOTATION.out.versions) ANN_CSQ_PLI_SNV ( SNV_ANNOTATION.out.vcf, - ch_variant_consequences_snv + ch_variant_consequences_snvs ) ch_versions = ch_versions.mix(ANN_CSQ_PLI_SNV.out.versions) @@ -368,8 +374,8 @@ workflow NALLO { RANK_VARIANTS_SNV ( ANN_CSQ_PLI_SNV.out.vcf, snv_ranking_ped_file, - ch_reduced_penetrance, - ch_score_config_snv + ch_genmod_reduced_penetrance, + ch_genmod_score_config_snvs ) ch_versions = ch_versions.mix(RANK_VARIANTS_SNV.out.versions) @@ -381,7 +387,7 @@ workflow NALLO { // // Concatenate, sort, split, make database and get statistics of SNVs (should be a subworkflow) // - if(!params.skip_short_variant_calling) { + if(!params.skip_snv_calling) { ch_vcf_tbi_per_region .map { meta, vcf, tbi -> [ [ id: meta.family_id ], vcf, tbi ] } @@ -413,7 +419,7 @@ workflow NALLO { // // Call SVs // - if(!params.skip_mapping_wf) { + if(!params.skip_alignment) { // If both CNV-calling and SV annotation is off, merged variants are output from here CALL_SVS ( @@ -486,7 +492,7 @@ workflow NALLO { ANNOTATE_SVS ( annotate_svs_in, fasta, - ch_svdb_dbs, + ch_svdb_sv_databases, PREPARE_GENOME.out.vep_resources.map { meta, cache -> cache }, params.vep_cache_version, ch_vep_plugin_files.collect() @@ -508,8 +514,8 @@ workflow NALLO { RANK_VARIANTS_SVS ( ANN_CSQ_PLI_SVS.out.vcf, SOMALIER_PED_FAMILY.out.ped, - ch_reduced_penetrance, - ch_score_config_svs + ch_genmod_reduced_penetrance, + ch_genmod_score_config_svs ) ch_versions = ch_versions.mix(RANK_VARIANTS_SVS.out.versions) } @@ -517,7 +523,7 @@ workflow NALLO { // // Phase SNVs and INDELs // - if(!params.skip_mapping_wf && !params.skip_phasing_wf) { + if(!params.skip_phasing) { PHASING ( SHORT_VARIANT_CALLING.out.snp_calls_vcf, @@ -535,9 +541,9 @@ workflow NALLO { // // Create methylation pileups with modkit // - if(!params.skip_methylation_wf) { + if(!params.skip_methylation_pileups) { METHYLATION ( - !params.skip_phasing_wf ? PHASING.out.haplotagged_bam_bai : bam_bai, + !params.skip_phasing ? PHASING.out.haplotagged_bam_bai : bam_bai, fasta, fai, ch_input_bed, @@ -559,7 +565,7 @@ workflow NALLO { // if(!params.skip_repeat_annotation) { - ANNOTATE_REPEAT_EXPANSIONS ( ch_variant_catalog, CALL_REPEAT_EXPANSIONS.out.family_vcf ) + ANNOTATE_REPEAT_EXPANSIONS ( ch_stranger_repeat_catalog, CALL_REPEAT_EXPANSIONS.out.family_vcf ) ch_versions = ch_versions.mix(ANNOTATE_REPEAT_EXPANSIONS.out.versions) } From e9ff17c2cea26896b49759e9799d2df0e180a22a Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Tue, 19 Nov 2024 08:27:36 +0100 Subject: [PATCH 067/106] Filter SNVs, INDELs, CNVs and SVs (#496) * Filter variants * CHANGELOG * Update CHANGELOG.md * Update assets/schema_hgnc_ids.json * Update subworkflows/local/filter_variants/main.nf Co-authored-by: Daniel Schmitz * merge and review suggestions * review suggestions * Update subworkflows/local/filter_variants/main.nf Co-authored-by: Anders Jemt * Review suggestions --------- Co-authored-by: Daniel Schmitz Co-authored-by: Anders Jemt --- CHANGELOG.md | 35 ++-- README.md | 6 +- assets/schema_hgnc_ids.json | 26 +++ conf/modules/filter_variants.config | 77 +++++++++ conf/test.config | 3 +- docs/index.md | 6 +- docs/output.md | 34 +++- docs/parameters.md | 7 +- docs/usage.md | 20 +++ modules.json | 5 + .../ensemblvep/filtervep/environment.yml | 5 + modules/nf-core/ensemblvep/filtervep/main.nf | 49 ++++++ modules/nf-core/ensemblvep/filtervep/meta.yml | 50 ++++++ .../ensemblvep/filtervep/tests/main.nf.test | 136 ++++++++++++++++ .../filtervep/tests/main.nf.test.snap | 26 +++ .../filtervep/tests/nextflow.config | 10 ++ .../ensemblvep/filtervep/tests/tab.gz.config | 24 +++ .../ensemblvep/filtervep/tests/tags.yml | 2 + .../ensemblvep/filtervep/tests/vcf.config | 23 +++ nextflow.config | 6 +- nextflow_schema.json | 20 ++- subworkflows/local/filter_variants/main.nf | 39 +++++ .../local/filter_variants/tests/main.nf.test | 150 ++++++++++++++++++ .../filter_variants/tests/main.nf.test.snap | 33 ++++ .../filter_variants/tests/nextflow.config | 80 ++++++++++ tests/samplesheet.nf.test | 2 +- tests/samplesheet.nf.test.snap | 24 ++- tests/samplesheet_multisample_bam.nf.test | 2 +- .../samplesheet_multisample_bam.nf.test.snap | 24 ++- tests/samplesheet_multisample_ont_bam.nf.test | 2 +- ...mplesheet_multisample_ont_bam.nf.test.snap | 24 ++- workflows/nallo.nf | 46 +++++- 32 files changed, 958 insertions(+), 38 deletions(-) create mode 100644 assets/schema_hgnc_ids.json create mode 100644 conf/modules/filter_variants.config create mode 100644 modules/nf-core/ensemblvep/filtervep/environment.yml create mode 100644 modules/nf-core/ensemblvep/filtervep/main.nf create mode 100644 modules/nf-core/ensemblvep/filtervep/meta.yml create mode 100644 modules/nf-core/ensemblvep/filtervep/tests/main.nf.test create mode 100644 modules/nf-core/ensemblvep/filtervep/tests/main.nf.test.snap create mode 100644 modules/nf-core/ensemblvep/filtervep/tests/nextflow.config create mode 100644 modules/nf-core/ensemblvep/filtervep/tests/tab.gz.config create mode 100644 modules/nf-core/ensemblvep/filtervep/tests/tags.yml create mode 100644 modules/nf-core/ensemblvep/filtervep/tests/vcf.config create mode 100644 subworkflows/local/filter_variants/main.nf create mode 100644 subworkflows/local/filter_variants/tests/main.nf.test create mode 100644 subworkflows/local/filter_variants/tests/main.nf.test.snap create mode 100644 subworkflows/local/filter_variants/tests/nextflow.config diff --git a/CHANGELOG.md b/CHANGELOG.md index 63c0d1e8..6cfad570 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -35,6 +35,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#451](https://github.com/genomic-medicine-sweden/nallo/pull/451) - Added support for running methylation subworkflow without phasing - [#451](https://github.com/genomic-medicine-sweden/nallo/pull/451) - Added nf-test to methylation - [#491](https://github.com/genomic-medicine-sweden/nallo/pull/491) - Added a changelog reminder action +- [#496](https://github.com/genomic-medicine-sweden/nallo/pull/496) - Added a subworkflow to filter variants ### `Changed` @@ -132,6 +133,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 | `--validationSkipDuplicateCheck` | | | `--validationS3PathCheck` | | | `--monochromeLogs` | `--monochrome_logs` | +| | `--filter_variants_hgnc_ids` | +| | `--filter_snvs_expression` | +| | `--filter_svs_expression` | | `--skip_short_variant_calling` | `--skip_snv_calling` | | `--skip_assembly_wf` | `--skip_genome_assembly` | | `--skip_mapping_wf` | `--skip_alignment` | @@ -159,21 +163,22 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Module updates -| Tool | Old version | New version | -| -------------- | ----------- | ----------- | -| fqcrs | 0.1.0 | -| severus | | 1.1 | -| longphase  |   | 1.7.3   | -| genmod | 3.8.2 | 3.9 | -| WhatsHap | 2.2 | 2.3 | -| SVDB | | 2.8.1 | -| hifiasm | 0.19.8 | 0.20.0 | -| HiFiCNV | 0.1.7 | 1.0.0 | -| samtools/faidx | 1.2 | 1.21 | -| samtools/index | 1.2 | 1.21 | -| samtools/merge | 1.2 | 1.21 | -| stranger | 0.9.1 | 0.9.2 | -| multiqc | 1.21 | 1.25.1 | +| Tool | Old version | New version | +| --------------------- | ----------- | ----------- | +| fqcrs | 0.1.0 | +| severus | | 1.1 | +| longphase  |   | 1.7.3   | +| genmod | 3.8.2 | 3.9 | +| WhatsHap | 2.2 | 2.3 | +| SVDB | | 2.8.2 | +| hifiasm | 0.19.8 | 0.20.0 | +| HiFiCNV | 0.1.7 | 1.0.0 | +| samtools/faidx | 1.2 | 1.21 | +| samtools/index | 1.2 | 1.21 | +| samtools/merge | 1.2 | 1.21 | +| stranger | 0.9.1 | 0.9.2 | +| multiqc | 1.21 | 1.25.1 | +| ensemblvep/filter_vep | | 113 | > [!NOTE] > Version has been updated if both old and new version information is present. diff --git a/README.md b/README.md index ef9224ed..42e1f721 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,11 @@ ##### Ranking -- Rank SNVs, INDELs and SVs with [GENMOD](https://github.com/Clinical-Genomics/genmod) +- Rank SNVs, INDELs, SVs and CNVs with [GENMOD](https://github.com/Clinical-Genomics/genmod) + +##### Filtering + +- Filter SNVs, INDELs, SVs and CNVs with [filter_vep](https://www.ensembl.org/vep) and [bcftools view](https://samtools.github.io/bcftools/bcftools.html). ## Usage diff --git a/assets/schema_hgnc_ids.json b/assets/schema_hgnc_ids.json new file mode 100644 index 00000000..2f3e64e1 --- /dev/null +++ b/assets/schema_hgnc_ids.json @@ -0,0 +1,26 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://raw.githubusercontent.com/genomic-medicine-sweden/nallo/master/assets/schema_hgnc_ids.json", + "title": "genomic-medicine-sweden/nallo pipeline - params.filter_variants_hgnc_ids schema", + "description": "Schema for the file provided with params.filter_variants_hgnc_ids", + "type": "array", + "items": { + "type": "object", + "properties": { + "hgnc_id": { + "oneOf": [ + { + "type": "string", + "pattern": "^\\S+$" + }, + { + "type": "integer" + } + ], + "exists": true, + "errorMessage": "HGNC IDs must exist with a header line `hgnc_id`, then one HGNC ID per line, either as e.g. `4826` or `HGNC:4826`." + } + }, + "required": ["hgnc_id"] + } +} diff --git a/conf/modules/filter_variants.config b/conf/modules/filter_variants.config new file mode 100644 index 00000000..b709aa59 --- /dev/null +++ b/conf/modules/filter_variants.config @@ -0,0 +1,77 @@ +/* +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Config file for defining DSL2 per module options and publishing paths +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Available keys to override module options: + ext.args = Additional arguments appended to command in module. + ext.args2 = Second set of arguments appended to command in module (multi-tool modules). + ext.args3 = Third set of arguments appended to command in module (multi-tool modules). + ext.prefix = File name prefix for output files. +---------------------------------------------------------------------------------------- +*/ + +process { + + /* + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Filter variants + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + */ + + withName: '.*:FILTER_VARIANTS_SNV:.*' { + publishDir = [ + enabled: false, + ] + } + + withName: '.*:FILTER_VARIANTS_SNVS:ENSEMBLVEP_FILTERVEP' { + ext.args = { "--filter \"HGNC_ID in ${feature_file}\"" } + publishDir = [ + enabled: false, + ] + } + + withName: '.*:FILTER_VARIANTS_SVS:ENSEMBLVEP_FILTERVEP' { + ext.args = { "--filter \"HGNC_ID in ${feature_file}\"" } + publishDir = [ + enabled: false, + ] + } + + withName: '.*:FILTER_VARIANTS_SNVS:BCFTOOLS_VIEW' { + ext.prefix = { params.skip_snv_annotation ? "${meta.id}_snvs_filtered" : (params.skip_rank_variants ? "${meta.id}_snvs_annotated_filtered" : "${meta.id}_snvs_annotated_ranked_filtered") } + ext.args = { [ + '--output-type z', + '--write-index=tbi', + "${params.filter_snvs_expression}" + ].join(" ") } + publishDir = [ + path: { "${params.outdir}/snvs/multi_sample/${meta.id}" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } + + withName: '.*:FILTER_VARIANTS_SVS:BCFTOOLS_VIEW' { + ext.prefix = { + def parts = [] + parts << "${meta.id}" + parts << (params.skip_cnv_calling ? 'svs_merged' : 'svs_cnvs_merged') + if (!params.skip_sv_annotation) parts << 'annotated' + if (!params.skip_rank_variants) parts << 'ranked' + parts << 'filtered' + return parts.join('_') + } + ext.args = { [ + '--output-type z', + '--write-index=tbi', + "${params.filter_svs_expression}" + ].join(" ") } + publishDir = [ + path: { "${params.outdir}/svs/family/${meta.id}" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } + +} diff --git a/conf/test.config b/conf/test.config index 86a53776..ec51373c 100644 --- a/conf/test.config +++ b/conf/test.config @@ -18,12 +18,13 @@ params { modules_testdata_base_path = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/' // Base directory for genomic-medicine-sweden/nallo test data - pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/22fb5b8a1a358df96e49f8d01a9c6e18770fbd6d/' + pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/ba720cd29322036d966ab3e4bc4c3d03e1731af5/' // References fasta = params.pipelines_testdata_base_path + 'reference/hg38.test.fa.gz' input = params.pipelines_testdata_base_path + 'testdata/samplesheet.csv' target_regions = params.pipelines_testdata_base_path + 'reference/test_data.bed' + filter_variants_hgnc_ids = params.pipelines_testdata_base_path + 'testdata/hgnc_ids.tsv' hificnv_expected_xy_cn = params.pipelines_testdata_base_path + 'reference/expected_cn.hg38.XY.bed' hificnv_expected_xx_cn = params.pipelines_testdata_base_path + 'reference/expected_cn.hg38.XX.bed' hificnv_excluded_regions = params.pipelines_testdata_base_path + 'reference/empty.bed' diff --git a/docs/index.md b/docs/index.md index 0b06c33e..ecce661c 100644 --- a/docs/index.md +++ b/docs/index.md @@ -44,7 +44,11 @@ description: A bioinformatics analysis pipeline for long-reads from both PacBio ### Ranking -- Rank SNVs with [GENMOD](https://github.com/Clinical-Genomics/genmod) +- Rank SNVs, INDELs, SVs and CNVs with [GENMOD](https://github.com/Clinical-Genomics/genmod) + +### Filtering + +- Filter SNVs, INDELs, SVs and CNVs with [filter_vep](https://www.ensembl.org/vep) and [bcftools view](https://samtools.github.io/bcftools/bcftools.html). ## Usage diff --git a/docs/output.md b/docs/output.md index 0cf4f471..cc2f4b14 100644 --- a/docs/output.md +++ b/docs/output.md @@ -215,6 +215,21 @@ If the pipeline is run with phasing, the aligned reads will be happlotagged usin | `snvs/family/{family}/{family}_snv_annotated_ranked.vcf.gz` | VCF file with annotated and ranked variants per family | | `snvs/family/{family}/{family}_snv_annotated_ranked.vcf.gz.tbi` | Index of the ranked VCF file | +[filter_vep](https://www.ensembl.org/vep) and [bcftools view](https://samtools.github.io/bcftools/bcftools.html) can be used to filter variants. + +!!!note + + Variants are only output if either of `--filter_variants_hgnc_id` and `--filter_snvs_expression` has been used, and only family VCFs are output. + +!!!tip + + Filtered variants are output alongside unfiltered variants as additional files. + +| Path | Description | +| ---------------------------------------------- | -------------------------------------------- | +| `snvs/{family}/{family}_*_filtered.vcf.gz` | VCF file with filtered variants for a family | +| `snvs/{family}/{family}_*_filtered.vcf.gz.tbi` | Index of the filtered VCF file | + ### SVs (and CNVs) [Severus](https://github.com/KolmogorovLab/Severus) or [Sniffles](https://github.com/fritzsedlazeck/Sniffles) is used to call structural variants. @@ -228,9 +243,7 @@ If the pipeline is run with phasing, the aligned reads will be happlotagged usin !!!note - Due to the complexity of SV merging strategies, SVs and CNVs are reported per family rather than per project. - SV and CNV calls are output unmerged per sample, while the family files are first merged between samples for SVs and CNVs separately, - then the merged SV and CNV files are merged again, with priority given to coordinates from the SV calls. + SV and CNV calls are output unmerged per sample, while the family files are first merged between samples for SVs and CNVs separately, then the merged SV and CNV files are merged again, with priority given to coordinates from the SV calls. | Path | Description | | --------------------------------------------------------------- | ------------------------------------------------------------------ | @@ -261,6 +274,21 @@ If the pipeline is run with phasing, the aligned reads will be happlotagged usin | `svs/family/{family_id}/{family_id}_svs_merged_annotated_ranked.vcf.gz` | VCF file with merged, annotated and ranked SVs per family (output if CNV-calling is off) | | `svs/family/{family_id}/{family_id}_svs_merged_annotated_ranked.vcf.gz.tbi` | Index of the merged VCF file | +[filter_vep](https://www.ensembl.org/vep) and [bcftools view](https://samtools.github.io/bcftools/bcftools.html) can be used to filter variants. + +!!!note + + Variants are only output if either of `--filter_variants_hgnc_id` and `--filter_svs_expression` has been used, and only family variants are output. + +!!!tip + + Filtered variants are output alongside unfiltered variants as additional files. + +| Path | Description | +| ---------------------------------------------------- | -------------------------------------------- | +| `svs/family/{family}/{family}_*_filtered.vcf.gz` | VCF file with filtered variants for a family | +| `svs/family/{family}/{family}_*_filtered.vcf.gz.tbi` | Index of the filtered VCF file | + ## Visualization Tracks [HiFiCNV](https://github.com/PacificBiosciences/HiFiCNV) is used to call CNVs, but it also produces copy number, depth, and MAF tracks that can be visualized in for example IGV. diff --git a/docs/parameters.md b/docs/parameters.md index 1956fe46..c843fa98 100644 --- a/docs/parameters.md +++ b/docs/parameters.md @@ -51,7 +51,7 @@ Define where the pipeline should find input data and save output data. | `genmod_score_config_snvs` | A SNV rank model config file for genmod. | `string` | | | | | `genmod_score_config_svs` | A SV rank model config file for genmod. | `string` | | | | | `somalier_sites` | A VCF of known polymorphic sites for somalier | `string` | | | | -| `pipelines_testdata_base_path` | Base URL or local path to location of pipeline test dataset files | `string` | https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/22fb5b8a1a358df96e49f8d01a9c6e18770fbd6d/ | | True | +| `pipelines_testdata_base_path` | Base URL or local path to location of pipeline test dataset files | `string` | https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/ba720cd29322036d966ab3e4bc4c3d03e1731af5/ | | True | ## Reference genome options @@ -106,7 +106,10 @@ Workflow options specific to genomic-medicine-sweden/nallo | `alignment_processes` | If alignment_processes is bigger than 1, input files will be split and aligned in parallel to reduce processing time. | `integer` | 8 | | | | `snv_calling_processes` | If snv_calling_processes is bigger than 1, short variant calling will be done in parallel to reduce processing time. | `integer` | 13 | | | | `vep_cache_version` | VEP cache version | `integer` | 110 | | | -| `vep_plugin_files` | A csv file with vep_plugin_files as header, and then paths to vep plugin files. Paths to pLI_values.txt and LoFtool_scores.txt are required. | `string` | | | | +| `vep_plugin_files` | A csv file with vep_files as header, and then paths to vep plugin files. Paths to pLI_values.txt and LoFtool_scores.txt are required. | `string` | | | | +| `filter_variants_hgnc_ids` | A tsv/csv file with a `#hgnc_ids` column header, and then one numerical HGNC ID per row. E.g. `4281`, not `HGNC:4281`. | `string` | | | | +| `filter_snvs_expression` | An expression that is passed to bcftools view to filter SNVs, e.g. --filter_snvs_expression "-e 'INFO/AQ>60'" | `string` | | | | +| `filter_svs_expression` | An expression that is passed to bcftools view to filter SVs, e.g. --filter_svs_expression "-e 'INFO/AQ>60'" | `string` | | | | | `deepvariant_model_type` | Sets the model type used for DeepVariant. This is set automatically using `--preset` by default. | `string` | PACBIO | | True | | `minimap2_read_mapping_preset` | Sets the minimap2-preset (-x) for read alignment. This is set automatically using the pipeline `--preset` by default. | `string` | map-hifi | | True | | `extra_modkit_options` | Extra options to modkit, used for test profile. | `string` | | | True | diff --git a/docs/usage.md b/docs/usage.md index 53def5eb..84786bb7 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -309,6 +309,26 @@ This subworkflow ranks SVs, and relies on the mapping, SV calling and SV annotat `--skip_rank_variants`. +#### Filter variants + +SNVs and INDELs, and SVs and CNVs can be filtered using [filter_vep](https://www.ensembl.org/vep) and [bcftools view](https://samtools.github.io/bcftools/bcftools.html). + +| Parameter | Description | +| --------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `filter_variants_hgnc_ids` 1 |  Used by filter_vep to filter variants on HGNC IDs. Requires a tsv/bed file with a `#hgnc_ids` column with one numerical HGNC ID per row. E.g. `4281`, not `HGNC:4281`. | + +1 Example file for input with `--filter_variants_hgnc_ids`: + +``` +#hgnc_id +4865 +14150 +``` + +To pass filters to bcftools view, use `--filter_snvs_expression` and `--filter_svs_expression`. E.g `--filter_snvs_expression "-e 'INFO/AQ>60'"`. + +Filtering of variants only happens if any of these three parameters is active. + ## Other highlighted parameters - Limit SNV calling to regions in BED file (`--target_bed`). diff --git a/modules.json b/modules.json index 47a9ac33..40ce3646 100644 --- a/modules.json +++ b/modules.json @@ -87,6 +87,11 @@ "git_sha": "2f9a5431355897e299cb41928c45f51ea8410c42", "installed_by": ["modules"] }, + "ensemblvep/filtervep": { + "branch": "master", + "git_sha": "6e3585d9ad20b41adc7d271009f8cb5e191ecab4", + "installed_by": ["modules"] + }, "ensemblvep/vep": { "branch": "master", "git_sha": "6e3585d9ad20b41adc7d271009f8cb5e191ecab4", diff --git a/modules/nf-core/ensemblvep/filtervep/environment.yml b/modules/nf-core/ensemblvep/filtervep/environment.yml new file mode 100644 index 00000000..3d36eb17 --- /dev/null +++ b/modules/nf-core/ensemblvep/filtervep/environment.yml @@ -0,0 +1,5 @@ +channels: + - conda-forge + - bioconda +dependencies: + - bioconda::ensembl-vep=113.0 diff --git a/modules/nf-core/ensemblvep/filtervep/main.nf b/modules/nf-core/ensemblvep/filtervep/main.nf new file mode 100644 index 00000000..69245df0 --- /dev/null +++ b/modules/nf-core/ensemblvep/filtervep/main.nf @@ -0,0 +1,49 @@ +process ENSEMBLVEP_FILTERVEP { + tag "$meta.id" + label 'process_single' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/ensembl-vep:113.0--pl5321h2a3209d_0' : + 'biocontainers/ensembl-vep:113.0--pl5321h2a3209d_0' }" + + input: + tuple val(meta), path(input) + path (feature_file) + + output: + tuple val(meta), path("*.${extension}"), emit: output + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + extension = task.ext.suffix ?: "vcf" + """ + filter_vep \\ + $args \\ + --input_file $input \\ + --output_file ${prefix}.${extension} \\ + --only_matched + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + ensemblvep: \$( echo \$(vep --help 2>&1) | sed 's/^.*Versions:.*ensembl-vep : //;s/ .*\$//') + END_VERSIONS + """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + extension = task.ext.suffix ?: "vcf" + """ + touch ${prefix}.${extension} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + ensemblvep: \$( echo \$(vep --help 2>&1) | sed 's/^.*Versions:.*ensembl-vep : //;s/ .*\$//') + END_VERSIONS + """ +} diff --git a/modules/nf-core/ensemblvep/filtervep/meta.yml b/modules/nf-core/ensemblvep/filtervep/meta.yml new file mode 100644 index 00000000..a73e3b7a --- /dev/null +++ b/modules/nf-core/ensemblvep/filtervep/meta.yml @@ -0,0 +1,50 @@ +name: ensemblvep_filtervep +description: Filter variants based on Ensembl Variant Effect Predictor (VEP) annotations. +keywords: + - annotation + - vcf + - tab + - filter +tools: + - ensemblvep: + description: | + VEP determines the effect of your variants (SNPs, insertions, deletions, CNVs + or structural variants) on genes, transcripts, and protein sequence, as well as regulatory regions. + homepage: https://www.ensembl.org/info/docs/tools/vep/index.html + documentation: https://www.ensembl.org/info/docs/tools/vep/script/index.html + licence: ["Apache-2.0"] + identifier: "" +input: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'test', single_end:false ]` + - input: + type: file + description: VCF/TAB file annotated with vep + pattern: "*.{vcf,tab,tsv,txt}" + - - feature_file: + type: file + description: File containing features on separate lines. To be used with --filter + option. +output: + - output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'test', single_end:false ]` + - "*.${extension}": + type: file + description: VCF/TAB file + pattern: "*.{vcf,tab,txt,tsv}" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" +authors: + - "@ramprasadn" +maintainers: + - "@ramprasadn" diff --git a/modules/nf-core/ensemblvep/filtervep/tests/main.nf.test b/modules/nf-core/ensemblvep/filtervep/tests/main.nf.test new file mode 100644 index 00000000..7147792f --- /dev/null +++ b/modules/nf-core/ensemblvep/filtervep/tests/main.nf.test @@ -0,0 +1,136 @@ +nextflow_process { + + name "Test Process ENSEMBLVEP_FILTERVEP" + script "../main.nf" + process "ENSEMBLVEP_FILTERVEP" + config "./nextflow.config" + + tag "modules" + tag "modules_nfcore" + tag "ensemblvep" + tag "ensemblvep/vep" + tag "ensemblvep/filtervep" + tag "ensemblvep/download" + + // Test for filtering VCF file + test("test_ensemblvep_filtervep_vcf") { + config "./vcf.config" + + setup { + run("ENSEMBLVEP_DOWNLOAD") { + script "../../download/main.nf" + + process { + """ + input[0] = Channel.of([ + [id:"113_WBcel235"], + params.vep_genome, + params.vep_species, + params.vep_cache_version + ]) + """ + } + } + run("ENSEMBLVEP_VEP") { + script "../../vep/main.nf" + + process { + """ + input[0] = Channel.of([ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true), + [] + ]) + input[1] = params.vep_genome + input[2] = params.vep_species + input[3] = params.vep_cache_version + input[4] = ENSEMBLVEP_DOWNLOAD.out.cache.map{ meta, cache -> [cache] } + input[5] = Channel.value([ + [id:"fasta"], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ]) + input[6] = [] + """ + } + } + } + + when { + process { + """ + input[0] = ENSEMBLVEP_VEP.out.vcf + input[1] = [] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.versions).match() }, + { assert path(process.out.output.get(0).get(1)).readLines().first().contains("##fileformat=VCFv4.2") } + ) + } + } + + // Test for filtering TAB file + test("test_ensemblvep_filtervep_tab_gz") { + config "./tab.gz.config" + + setup { + run("ENSEMBLVEP_DOWNLOAD") { + script "../../download/main.nf" + + process { + """ + input[0] = Channel.of([ + [id:"113_WBcel235"], + params.vep_genome, + params.vep_species, + params.vep_cache_version + ]) + """ + } + } + run("ENSEMBLVEP_VEP") { + script "../../vep/main.nf" + + process { + """ + input[0] = Channel.of([ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true), + [] + ]) + input[1] = params.vep_genome + input[2] = params.vep_species + input[3] = params.vep_cache_version + input[4] = ENSEMBLVEP_DOWNLOAD.out.cache.map{ meta, cache -> [cache] } + input[5] = Channel.value([ + [id:"fasta"], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ]) + input[6] = [] + """ + } + } + } + + when { + process { + """ + input[0] = ENSEMBLVEP_VEP.out.tab + input[1] = [] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.versions).match() }, + { assert path(process.out.output.get(0).get(1)).readLines().first().contains("## ENSEMBL VARIANT EFFECT PREDICTOR v113.0") } + ) + } + } +} diff --git a/modules/nf-core/ensemblvep/filtervep/tests/main.nf.test.snap b/modules/nf-core/ensemblvep/filtervep/tests/main.nf.test.snap new file mode 100644 index 00000000..065d747b --- /dev/null +++ b/modules/nf-core/ensemblvep/filtervep/tests/main.nf.test.snap @@ -0,0 +1,26 @@ +{ + "test_ensemblvep_filtervep_vcf": { + "content": [ + [ + "versions.yml:md5,1e8906572b04dd21d8c6973efac773c6" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-21T09:10:47.874831491" + }, + "test_ensemblvep_filtervep_tab_gz": { + "content": [ + [ + "versions.yml:md5,1e8906572b04dd21d8c6973efac773c6" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-21T09:11:18.765461163" + } +} \ No newline at end of file diff --git a/modules/nf-core/ensemblvep/filtervep/tests/nextflow.config b/modules/nf-core/ensemblvep/filtervep/tests/nextflow.config new file mode 100644 index 00000000..40b3a3bd --- /dev/null +++ b/modules/nf-core/ensemblvep/filtervep/tests/nextflow.config @@ -0,0 +1,10 @@ +/* +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Nextflow config file for running tests +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +*/ +params { + vep_cache_version = "113" + vep_genome = "WBcel235" + vep_species = "caenorhabditis_elegans" +} diff --git a/modules/nf-core/ensemblvep/filtervep/tests/tab.gz.config b/modules/nf-core/ensemblvep/filtervep/tests/tab.gz.config new file mode 100644 index 00000000..cdad2d94 --- /dev/null +++ b/modules/nf-core/ensemblvep/filtervep/tests/tab.gz.config @@ -0,0 +1,24 @@ +/* +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Nextflow config file for running tests +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +*/ + +process { + + publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } + + withName: ENSEMBLVEP_DOWNLOAD { + ext.args = '--AUTO c --CONVERT --NO_BIOPERL --NO_HTSLIB --NO_TEST --NO_UPDATE' + } + + withName: ENSEMBLVEP_VEP { + ext.args = '--tab' + ext.prefix = { "${meta.id}_vep" } + } + + withName: ENSEMBLVEP_FILTERVEP { + ext.args = '--filter "Feature_type is Transcript"' + ext.suffix = "tab" + } +} diff --git a/modules/nf-core/ensemblvep/filtervep/tests/tags.yml b/modules/nf-core/ensemblvep/filtervep/tests/tags.yml new file mode 100644 index 00000000..b43bf40d --- /dev/null +++ b/modules/nf-core/ensemblvep/filtervep/tests/tags.yml @@ -0,0 +1,2 @@ +ensemblvep/filtervep: + - "modules/nf-core/ensemblvep/filtervep/**" diff --git a/modules/nf-core/ensemblvep/filtervep/tests/vcf.config b/modules/nf-core/ensemblvep/filtervep/tests/vcf.config new file mode 100644 index 00000000..ee2aef57 --- /dev/null +++ b/modules/nf-core/ensemblvep/filtervep/tests/vcf.config @@ -0,0 +1,23 @@ +/* +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Nextflow config file for running tests +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +*/ + +process { + + publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } + + withName: ENSEMBLVEP_DOWNLOAD { + ext.args = '--AUTO c --CONVERT --NO_BIOPERL --NO_HTSLIB --NO_TEST --NO_UPDATE' + } + + withName: ENSEMBLVEP_VEP { + ext.args = '--vcf' + ext.prefix = { "${meta.id}_vep" } + } + + withName: ENSEMBLVEP_FILTERVEP { + ext.args = '--filter "Feature_type is Transcript"' + } +} diff --git a/nextflow.config b/nextflow.config index cfcf60e4..f35e534b 100644 --- a/nextflow.config +++ b/nextflow.config @@ -14,6 +14,7 @@ params { target_regions = null cadd_resources = null cadd_prescored_indels = null + filter_variants_hgnc_ids = null par_regions = null tandem_repeats = null trgt_repeats = null @@ -49,6 +50,8 @@ params { deepvariant_model_type = params.preset == 'ONT_R10' ? 'ONT_R104' : 'PACBIO' minimap2_read_mapping_preset = params.preset == 'ONT_R10' ? 'lr:hq' : 'map-hifi' + filter_snvs_expression = '' + filter_svs_expression = '' phaser = 'longphase' sv_caller = 'severus' preset = 'revio' @@ -88,7 +91,7 @@ params { help_full = false show_hidden = false version = false - pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/22fb5b8a1a358df96e49f8d01a9c6e18770fbd6d/' + pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/ba720cd29322036d966ab3e4bc4c3d03e1731af5/' // Config options config_profile_name = null @@ -325,6 +328,7 @@ includeConfig 'conf/modules/call_paralogs.config' includeConfig 'conf/modules/call_repeat_expansions.config' includeConfig 'conf/modules/call_svs.config' includeConfig 'conf/modules/convert_input_files.config' +includeConfig 'conf/modules/filter_variants.config' includeConfig 'conf/modules/assembly_variant_calling.config' includeConfig 'conf/modules/genome_assembly.config' includeConfig 'conf/modules/methylation.config' diff --git a/nextflow_schema.json b/nextflow_schema.json index 5a039737..f283d38f 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -257,7 +257,7 @@ "type": "string", "fa_icon": "far fa-check-circle", "description": "Base URL or local path to location of pipeline test dataset files", - "default": "https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/22fb5b8a1a358df96e49f8d01a9c6e18770fbd6d/", + "default": "https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/ba720cd29322036d966ab3e4bc4c3d03e1731af5/", "hidden": true } } @@ -468,6 +468,24 @@ "description": "A csv file with vep_files as header, and then paths to vep plugin files. Paths to pLI_values.txt and LoFtool_scores.txt are required.", "schema": "assets/vep_plugin_files_schema.json" }, + "filter_variants_hgnc_ids": { + "type": "string", + "pattern": "^\\S+\\.(csv|tsv)$", + "description": "A tsv/csv file with a `hgnc_ids` column header, and then one numerical HGNC ID per row. E.g. `4281` or `HGNC:4281`.", + "format": "file-path", + "exits": true, + "schema": "assets/schema_hgnc_ids.json" + }, + "filter_snvs_expression": { + "type": "string", + "default": "", + "description": "An expression that is passed to bcftools view to filter SNVs, e.g. --filter_snvs_expression \"-e 'INFO/AQ>60'\"" + }, + "filter_svs_expression": { + "type": "string", + "default": "", + "description": "An expression that is passed to bcftools view to filter SVs, e.g. --filter_svs_expression \"-e 'INFO/AQ>60'\"" + }, "deepvariant_model_type": { "type": "string", "default": "PACBIO", diff --git a/subworkflows/local/filter_variants/main.nf b/subworkflows/local/filter_variants/main.nf new file mode 100644 index 00000000..dd87ddf9 --- /dev/null +++ b/subworkflows/local/filter_variants/main.nf @@ -0,0 +1,39 @@ +include { ENSEMBLVEP_FILTERVEP } from '../../../modules/nf-core/ensemblvep/filtervep/main' +include { BCFTOOLS_VIEW } from '../../../modules/nf-core/bcftools/view/main' +include { ENSEMBLVEP_VEP } from '../../../modules/nf-core/ensemblvep/vep/main.nf' + +workflow FILTER_VARIANTS { + + take: + ch_vcf // channel [optional] [ val(meta), path(vcf) ] + ch_hgnc_ids // channel: [optional] [ val(meta), path(txt) ] + filter_hgnc // bool: should filter_vep be run to filter on hgnc ids + + main: + ch_versions = Channel.empty() + + if ( filter_hgnc ) { + + ENSEMBLVEP_FILTERVEP ( + ch_vcf, + ch_hgnc_ids.map { meta, file -> file } + ) + ch_versions = ch_versions.mix(ENSEMBLVEP_FILTERVEP.out.versions) + + ch_vcf = ENSEMBLVEP_FILTERVEP.out.output + } + + BCFTOOLS_VIEW ( + ch_vcf.map { meta, vcf -> [ meta, vcf, [] ] }, + [], + [], + [] + ) + ch_versions = ch_versions.mix(BCFTOOLS_VIEW.out.versions) + + emit: + vcf = BCFTOOLS_VIEW.out.vcf // channel: [ val(meta), path(vcf) ] + tbi = BCFTOOLS_VIEW.out.tbi // channel: [ val(meta), path(tbi) ] + versions = ch_versions // channel: [ path(versions.yml) ] +} + diff --git a/subworkflows/local/filter_variants/tests/main.nf.test b/subworkflows/local/filter_variants/tests/main.nf.test new file mode 100644 index 00000000..692cf9ec --- /dev/null +++ b/subworkflows/local/filter_variants/tests/main.nf.test @@ -0,0 +1,150 @@ +nextflow_workflow { + + name "Test Workflow FILTER_VARIANTS" + script "../main.nf" + config "./nextflow.config" + workflow "FILTER_VARIANTS" + + setup { + run("GUNZIP") { + script "../../../../modules/nf-core/gunzip/main.nf" + process { + """ + input[0] = [ + [ id:'hg38' ], + file(params.pipelines_testdata_base_path + 'reference/hg38.test.fa.gz', checkIfExists: true) + ] + """ + } + } + run("SAMTOOLS_FAIDX") { + script "../../../../modules/nf-core/samtools/faidx/main.nf" + process { + """ + input[0] = GUNZIP.out.gunzip + input[1] = [[],[]] + """ + } + } + + run("MINIMAP2_ALIGN") { + script "../../../../modules/nf-core/minimap2/align/main.nf" + process { + """ + input[0] = [ + [ id: 'test', num_intervals:1 ], + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.fastq.gz', checkIfExists: true) + ] + input[1] = GUNZIP.out.gunzip + input[2] = true + input[3] = 'csi' + input[4] = false + input[5] = false + """ + } + } + + run("SHORT_VARIANT_CALLING") { + script "../../short_variant_calling/main.nf" + process { + """ + input[0] = MINIMAP2_ALIGN.out.bam + .join(MINIMAP2_ALIGN.out.index) + .join(Channel.of([ + [ id: 'test', num_intervals:1 ], + file(params.pipelines_testdata_base_path + 'reference/test_data.bed', checkifexists: true) + ])) + input[1] = GUNZIP.out.gunzip + input[2] = SAMTOOLS_FAIDX.out.fai + input[3] = [[],[]] + input[4] = [[],[]] + """ + } + } + run("UNTAR") { + script "../../../../modules/nf-core/untar/main.nf" + process { + """ + input[0] = [ + [ id: 'vep_cache' ], + file(params.pipelines_testdata_base_path + 'reference/vep_cache_test_data.tar.gz', checkIfExists:true) + ] + """ + } + } + run("SNV_ANNOTATION") { + script "../../snv_annotation/main.nf" + process { + """ + input[0] = SHORT_VARIANT_CALLING.out.combined_bcf + input[1] = [ + file(params.pipelines_testdata_base_path + 'reference/cadd.v1.6.hg38.test_data.zip', checkIfExists: true) + ] + input[2] = GUNZIP.out.gunzip + input[3] = SAMTOOLS_FAIDX.out.fai + input[4] = UNTAR.out.untar.map { meta, cache -> cache} + input[5] = Channel.value('110') + input[6] = Channel.of([ + file(params.pipelines_testdata_base_path + 'reference/vep_plugin_files.csv', checkIfExists: true) + ]).splitCsv(header:true).map { row -> row.vep_files }.collect() + input[7] = false + input[8] = Channel.value([]) + input[9] = null + input[10] = null + """ + } + } + } + + test("vcf, [[],[]], false") { + + when { + workflow { + """ + input[0] = SNV_ANNOTATION.out.vcf + input[1] = Channel.of([[],[]]) + input[2] = false + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot( + workflow.out.versions, + file(workflow.out.tbi.get(0).get(1)).name, + path(workflow.out.vcf.get(0).get(1)).vcf.variantsMD5, + path(workflow.out.vcf.get(0).get(1)).vcf.summary, + ).match() } + ) + } + } + + test("vcf, hgnc_ids, true") { + tag "hgnc" + when { + workflow { + """ + input[0] = SNV_ANNOTATION.out.vcf + input[1] = Channel.of('HGNC:4826') + .collectFile(name: 'hgnc_ids.txt') + .map { file -> [ [ id: 'hgnc_ids' ], file ] } + input[2] = true + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot( + workflow.out.versions, + file(workflow.out.tbi.get(0).get(1)).name, + path(workflow.out.vcf.get(0).get(1)).vcf.variantsMD5, + path(workflow.out.vcf.get(0).get(1)).vcf.summary, + ).match() } + ) + } + } +} diff --git a/subworkflows/local/filter_variants/tests/main.nf.test.snap b/subworkflows/local/filter_variants/tests/main.nf.test.snap new file mode 100644 index 00000000..75153877 --- /dev/null +++ b/subworkflows/local/filter_variants/tests/main.nf.test.snap @@ -0,0 +1,33 @@ +{ + "vcf, [[],[]], false": { + "content": [ + [ + "versions.yml:md5,c6563ccec6867a29e00bdbb19abee900" + ], + "test_data.bed_filtered.vcf.gz.tbi", + "28024aed73c5c0fd09c14cf32008a335", + "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=80, phased=false, phasedAutodetect=false]" + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-11-06T15:09:53.145300431" + }, + "vcf, hgnc_ids, true": { + "content": [ + [ + "versions.yml:md5,24b641f905e26c567657e04d22f2e337", + "versions.yml:md5,c6563ccec6867a29e00bdbb19abee900" + ], + "test_data.bed_filtered.vcf.gz.tbi", + "77c14f11bd3af0802b1736cd87b949eb", + "VcfFile [chromosomes=[chr16], sampleCount=1, variantCount=49, phased=false, phasedAutodetect=false]" + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-11-06T16:37:39.828165612" + } +} \ No newline at end of file diff --git a/subworkflows/local/filter_variants/tests/nextflow.config b/subworkflows/local/filter_variants/tests/nextflow.config new file mode 100644 index 00000000..b9fd0da1 --- /dev/null +++ b/subworkflows/local/filter_variants/tests/nextflow.config @@ -0,0 +1,80 @@ +process { + withName: 'SHORT_VARIANT_CALLING:DEEPVARIANT' { + ext.prefix = { intervals ? "${meta.id}_${intervals}_deepvariant" : "${meta.id}_deepvariant" } + ext.args = { [ + '--model_type PACBIO', + "--sample_name=${meta.id}", + '-vcf_stats_report=False' + ].join(' ') } + } + + withName: 'SHORT_VARIANT_CALLING:GLNEXUS' { + ext.args = '--config DeepVariant_unfiltered' + } + + withName: 'SHORT_VARIANT_CALLING:BCFTOOLS_CONCAT' { + ext.prefix = { "${meta.id}_concat" } + ext.args = [ + '--no-version', + '--allow-overlaps' + ].join(' ') + } + + withName: 'SHORT_VARIANT_CALLING:BCFTOOLS_NORM_MULTISAMPLE' { + ext.prefix = { "${meta.id}_norm_multisample" } + ext.args = [ + '--no-version', + '-m -', + '--output-type u', + '--write-index=csi', + '-w 10000' + ].join(' ') + } + + withName: 'SHORT_VARIANT_CALLING:BCFTOOLS_NORM_SINGLESAMPLE' { + ext.prefix = { "${meta.id}_norm_singlesample" } + ext.args = [ + '--no-version', + '-m -', + '-w 10000', + '--output-type u', + ].join(' ') + } + + withName: 'SHORT_VARIANT_CALLING:BCFTOOLS_FILLTAGS' { + ext.prefix = { "${meta.id}_ac" } + ext.args = [ + '--no-version', + '--output-type u' + ].join(' ') + } + + withName: 'SNV_ANNOTATION:BCFTOOLS_FILLTAGS_ANNO' { + ext.prefix = { "${meta.id}_filltags_anno" } + ext.args = [ + '--no-version', + '--output-type z' + ].join(' ') + } + + withName: 'UNTAR' { + ext.prefix = { "${name}".contains('merged') ? './vep_cache/homo_sapiens_merged/' : './vep_cache/homo_sapiens/' } + } + + withName: 'SNV_ANNOTATION:ENSEMBLVEP_SNV' { + ext.args = { [ + '--offline', + '--vcf', + '--compress_output bgzip' + ].join(' ') } + } + + withName: 'FILTER_VARIANTS:ENSEMBLVEP_FILTERVEP' { + ext.args = { "--filter \"HGNC_ID in ${feature_file}\"" } + } + + withName: 'FILTER_VARIANTS:BCFTOOLS_VIEW' { + ext.prefix = { "${meta.id}_filtered" } + ext.args = '-e "INFO/AQ>60" --no-version --output-type z --write-index=tbi' + } +} diff --git a/tests/samplesheet.nf.test b/tests/samplesheet.nf.test index 3d4c9648..ea02a959 100644 --- a/tests/samplesheet.nf.test +++ b/tests/samplesheet.nf.test @@ -9,7 +9,7 @@ nextflow_pipeline { when { params { - pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/22fb5b8a1a358df96e49f8d01a9c6e18770fbd6d/' + pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/ba720cd29322036d966ab3e4bc4c3d03e1731af5/' input = params.pipelines_testdata_base_path + 'testdata/samplesheet.csv' outdir = "$outputDir" } diff --git a/tests/samplesheet.nf.test.snap b/tests/samplesheet.nf.test.snap index 0060fe6c..dfe4afe1 100644 --- a/tests/samplesheet.nf.test.snap +++ b/tests/samplesheet.nf.test.snap @@ -1,7 +1,7 @@ { "test profile": { "content": [ - 111, + 115, { "ADD_FOUND_IN_TAG": { "bcftools": 1.2, @@ -51,6 +51,9 @@ "BCFTOOLS_STATS": { "bcftools": 1.2 }, + "BCFTOOLS_VIEW": { + "bcftools": 1.2 + }, "BEDTOOLS_MERGE": { "bedtools": "2.31.1" }, @@ -81,6 +84,9 @@ "ECHTVAR_ANNO": { "echtvar": "0.2.0" }, + "ENSEMBLVEP_FILTERVEP": { + "ensemblvep": 113.0 + }, "ENSEMBLVEP_SNV": { "ensemblvep": 110.0 }, @@ -471,6 +477,10 @@ "snvs/family/FAM", "snvs/family/FAM/FAM_snv_annotated_ranked.vcf.gz", "snvs/family/FAM/FAM_snv_annotated_ranked.vcf.gz.tbi", + "snvs/multi_sample", + "snvs/multi_sample/FAM", + "snvs/multi_sample/FAM/FAM_snvs_annotated_ranked_filtered.vcf.gz", + "snvs/multi_sample/FAM/FAM_snvs_annotated_ranked_filtered.vcf.gz.tbi", "snvs/sample", "snvs/sample/HG002_Revio", "snvs/sample/HG002_Revio/HG002_Revio_snv_annotated_ranked.vcf.gz", @@ -483,6 +493,8 @@ "svs/family/FAM", "svs/family/FAM/FAM_svs_cnvs_merged_annotated_ranked.vcf.gz", "svs/family/FAM/FAM_svs_cnvs_merged_annotated_ranked.vcf.gz.tbi", + "svs/family/FAM/FAM_svs_cnvs_merged_annotated_ranked_filtered.vcf.gz", + "svs/family/FAM/FAM_svs_cnvs_merged_annotated_ranked_filtered.vcf.gz.tbi", "svs/sample", "svs/sample/HG002_Revio", "svs/sample/HG002_Revio/HG002_Revio_svs.vcf.gz", @@ -614,6 +626,10 @@ "FAM_snv_annotated_ranked.vcf.gz", "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=103, phased=false, phasedAutodetect=false]" ], + [ + "FAM_snvs_annotated_ranked_filtered.vcf.gz", + "VcfFile [chromosomes=[chr16], sampleCount=1, variantCount=54, phased=false, phasedAutodetect=false]" + ], [ "HG002_Revio_snv_annotated_ranked.vcf.gz", "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=100, phased=false, phasedAutodetect=false]" @@ -622,6 +638,10 @@ "FAM_svs_cnvs_merged_annotated_ranked.vcf.gz", "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=87, phased=false, phasedAutodetect=false]" ], + [ + "FAM_svs_cnvs_merged_annotated_ranked_filtered.vcf.gz", + "VcfFile [chromosomes=[chr16], sampleCount=1, variantCount=5, phased=false, phasedAutodetect=false]" + ], [ "HG002_Revio_svs.vcf.gz", "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=55, phased=false, phasedAutodetect=false]" @@ -654,6 +674,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-11-12T16:46:53.528609548" + "timestamp": "2024-11-18T08:53:15.024737825" } } \ No newline at end of file diff --git a/tests/samplesheet_multisample_bam.nf.test b/tests/samplesheet_multisample_bam.nf.test index 4fa19978..3099f149 100644 --- a/tests/samplesheet_multisample_bam.nf.test +++ b/tests/samplesheet_multisample_bam.nf.test @@ -9,7 +9,7 @@ nextflow_pipeline { when { params { - pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/22fb5b8a1a358df96e49f8d01a9c6e18770fbd6d/' + pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/ba720cd29322036d966ab3e4bc4c3d03e1731af5/' input = params.pipelines_testdata_base_path + 'testdata/samplesheet_multisample_bam.csv' outdir = "$outputDir" phaser = "hiphase" diff --git a/tests/samplesheet_multisample_bam.nf.test.snap b/tests/samplesheet_multisample_bam.nf.test.snap index ebbae97f..e2eb81ef 100644 --- a/tests/samplesheet_multisample_bam.nf.test.snap +++ b/tests/samplesheet_multisample_bam.nf.test.snap @@ -1,7 +1,7 @@ { "samplesheet_multisample_bam | --phaser hiphase": { "content": [ - 154, + 158, { "ADD_FOUND_IN_TAG": { "bcftools": 1.2, @@ -51,6 +51,9 @@ "BCFTOOLS_STATS": { "bcftools": 1.2 }, + "BCFTOOLS_VIEW": { + "bcftools": 1.2 + }, "BEDTOOLS_MERGE": { "bedtools": "2.31.1" }, @@ -81,6 +84,9 @@ "ECHTVAR_ANNO": { "echtvar": "0.2.0" }, + "ENSEMBLVEP_FILTERVEP": { + "ensemblvep": 113.0 + }, "ENSEMBLVEP_SNV": { "ensemblvep": 110.0 }, @@ -549,6 +555,10 @@ "snvs/family/FAM", "snvs/family/FAM/FAM_snv_annotated_ranked.vcf.gz", "snvs/family/FAM/FAM_snv_annotated_ranked.vcf.gz.tbi", + "snvs/multi_sample", + "snvs/multi_sample/FAM", + "snvs/multi_sample/FAM/FAM_snvs_annotated_ranked_filtered.vcf.gz", + "snvs/multi_sample/FAM/FAM_snvs_annotated_ranked_filtered.vcf.gz.tbi", "snvs/sample", "snvs/sample/HG002_Revio_A", "snvs/sample/HG002_Revio_A/HG002_Revio_A_snv_annotated_ranked.vcf.gz", @@ -565,6 +575,8 @@ "svs/family/FAM", "svs/family/FAM/FAM_svs_cnvs_merged_annotated_ranked.vcf.gz", "svs/family/FAM/FAM_svs_cnvs_merged_annotated_ranked.vcf.gz.tbi", + "svs/family/FAM/FAM_svs_cnvs_merged_annotated_ranked_filtered.vcf.gz", + "svs/family/FAM/FAM_svs_cnvs_merged_annotated_ranked_filtered.vcf.gz.tbi", "svs/sample", "svs/sample/HG002_Revio_A", "svs/sample/HG002_Revio_A/HG002_Revio_A_svs.vcf.gz", @@ -790,6 +802,10 @@ "FAM_snv_annotated_ranked.vcf.gz", "VcfFile [chromosomes=[chrX, chr16], sampleCount=2, variantCount=104, phased=false, phasedAutodetect=false]" ], + [ + "FAM_snvs_annotated_ranked_filtered.vcf.gz", + "VcfFile [chromosomes=[chr16], sampleCount=2, variantCount=55, phased=false, phasedAutodetect=false]" + ], [ "HG002_Revio_A_snv_annotated_ranked.vcf.gz", "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=100, phased=false, phasedAutodetect=false]" @@ -802,6 +818,10 @@ "FAM_svs_cnvs_merged_annotated_ranked.vcf.gz", "VcfFile [chromosomes=[chrX, chr16], sampleCount=2, variantCount=87, phased=false, phasedAutodetect=false]" ], + [ + "FAM_svs_cnvs_merged_annotated_ranked_filtered.vcf.gz", + "VcfFile [chromosomes=[chr16], sampleCount=2, variantCount=5, phased=false, phasedAutodetect=false]" + ], [ "HG002_Revio_A_svs.vcf.gz", "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=55, phased=false, phasedAutodetect=false]" @@ -854,6 +874,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-11-12T16:48:50.801407496" + "timestamp": "2024-11-18T08:55:12.484845801" } } \ No newline at end of file diff --git a/tests/samplesheet_multisample_ont_bam.nf.test b/tests/samplesheet_multisample_ont_bam.nf.test index 635a31e3..826bcd65 100644 --- a/tests/samplesheet_multisample_ont_bam.nf.test +++ b/tests/samplesheet_multisample_ont_bam.nf.test @@ -9,7 +9,7 @@ nextflow_pipeline { when { params { - pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/22fb5b8a1a358df96e49f8d01a9c6e18770fbd6d/' + pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/ba720cd29322036d966ab3e4bc4c3d03e1731af5/' input = params.pipelines_testdata_base_path + 'testdata/samplesheet_multisample_bam_ont.csv' outdir = "$outputDir" preset = 'ONT_R10' diff --git a/tests/samplesheet_multisample_ont_bam.nf.test.snap b/tests/samplesheet_multisample_ont_bam.nf.test.snap index f92f434f..85446506 100644 --- a/tests/samplesheet_multisample_ont_bam.nf.test.snap +++ b/tests/samplesheet_multisample_ont_bam.nf.test.snap @@ -1,7 +1,7 @@ { "samplesheet_multisample_ont_bam | --preset ONT_R10 --phaser whatshap --alignment_processes 1 --snv_calling_processes 1": { "content": [ - 103, + 107, { "ADD_FOUND_IN_TAG": { "bcftools": 1.2, @@ -45,6 +45,9 @@ "BCFTOOLS_STATS": { "bcftools": 1.2 }, + "BCFTOOLS_VIEW": { + "bcftools": 1.2 + }, "BEDTOOLS_MERGE": { "bedtools": "2.31.1" }, @@ -69,6 +72,9 @@ "ECHTVAR_ANNO": { "echtvar": "0.2.0" }, + "ENSEMBLVEP_FILTERVEP": { + "ensemblvep": 113.0 + }, "ENSEMBLVEP_SNV": { "ensemblvep": 110.0 }, @@ -441,6 +447,10 @@ "snvs/family/FAM", "snvs/family/FAM/FAM_snv_annotated_ranked.vcf.gz", "snvs/family/FAM/FAM_snv_annotated_ranked.vcf.gz.tbi", + "snvs/multi_sample", + "snvs/multi_sample/FAM", + "snvs/multi_sample/FAM/FAM_snvs_annotated_ranked_filtered.vcf.gz", + "snvs/multi_sample/FAM/FAM_snvs_annotated_ranked_filtered.vcf.gz.tbi", "snvs/sample", "snvs/sample/HG002_ONT_A", "snvs/sample/HG002_ONT_A/HG002_ONT_A_snv_annotated_ranked.vcf.gz", @@ -457,6 +467,8 @@ "svs/family/FAM", "svs/family/FAM/FAM_svs_cnvs_merged_annotated_ranked.vcf.gz", "svs/family/FAM/FAM_svs_cnvs_merged_annotated_ranked.vcf.gz.tbi", + "svs/family/FAM/FAM_svs_cnvs_merged_annotated_ranked_filtered.vcf.gz", + "svs/family/FAM/FAM_svs_cnvs_merged_annotated_ranked_filtered.vcf.gz.tbi", "svs/sample", "svs/sample/HG002_ONT_A", "svs/sample/HG002_ONT_A/HG002_ONT_A_svs.vcf.gz", @@ -586,6 +598,10 @@ "FAM_snv_annotated_ranked.vcf.gz", "VcfFile [chromosomes=[chrX, chr16], sampleCount=2, variantCount=105, phased=false, phasedAutodetect=false]" ], + [ + "FAM_snvs_annotated_ranked_filtered.vcf.gz", + "VcfFile [chromosomes=[chr16], sampleCount=2, variantCount=56, phased=false, phasedAutodetect=false]" + ], [ "HG002_ONT_A_snv_annotated_ranked.vcf.gz", "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=99, phased=false, phasedAutodetect=false]" @@ -598,6 +614,10 @@ "FAM_svs_cnvs_merged_annotated_ranked.vcf.gz", "VcfFile [chromosomes=[chrX, chr16], sampleCount=2, variantCount=98, phased=false, phasedAutodetect=false]" ], + [ + "FAM_svs_cnvs_merged_annotated_ranked_filtered.vcf.gz", + "VcfFile [chromosomes=[chr16], sampleCount=2, variantCount=6, phased=false, phasedAutodetect=false]" + ], [ "HG002_ONT_A_svs.vcf.gz", "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=68, phased=false, phasedAutodetect=false]" @@ -623,6 +643,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-11-12T16:50:40.322312965" + "timestamp": "2024-11-18T08:57:05.873919937" } } \ No newline at end of file diff --git a/workflows/nallo.nf b/workflows/nallo.nf index 2d675915..cc355876 100644 --- a/workflows/nallo.nf +++ b/workflows/nallo.nf @@ -21,6 +21,8 @@ include { CALL_CNVS } from '../subworkflows/local/ include { CALL_PARALOGS } from '../subworkflows/local/call_paralogs' include { CALL_REPEAT_EXPANSIONS } from '../subworkflows/local/call_repeat_expansions' include { CALL_SVS } from '../subworkflows/local/call_svs' +include { FILTER_VARIANTS as FILTER_VARIANTS_SNVS } from '../subworkflows/local/filter_variants' +include { FILTER_VARIANTS as FILTER_VARIANTS_SVS } from '../subworkflows/local/filter_variants' include { METHYLATION } from '../subworkflows/local/methylation' include { PHASING } from '../subworkflows/local/phasing' include { PREPARE_GENOME } from '../subworkflows/local/prepare_genome' @@ -99,9 +101,10 @@ workflow NALLO { // Channels from (optional) input samplesheets validated by schema ch_databases = createReferenceChannelFromSamplesheet(params.echtvar_snv_databases, 'assets/schema_snp_db.json') ch_vep_plugin_files = createReferenceChannelFromSamplesheet(params.vep_plugin_files, 'assets/schema_vep_plugin_files.json', Channel.value([])) - - // Check parameter that doesn't conform to schema validation here - if (params.phaser.matches('hiphase') && params.preset == 'ONT_R10') { error "The HiPhase license only permits analysis of data from PacBio. For details see: https://github.com/PacificBiosciences/HiPhase/blob/main/LICENSE.md" } + ch_hgnc_ids = createReferenceChannelFromSamplesheet(params.filter_variants_hgnc_ids, 'assets/schema_hgnc_ids.json') + .map { it[0].toString() } // only one element per row + .collectFile(name: 'hgnc_ids.txt', newLine: true, sort: true) + .map { file -> [ [ id: 'hgnc_ids' ], file ] } // // Convert FASTQ to BAM (and vice versa if assembly workflow is active) @@ -395,7 +398,9 @@ workflow NALLO { .set { ch_bcftools_concat_in } // Concat into family VCFs per family with all regions - BCFTOOLS_CONCAT ( ch_bcftools_concat_in ) + BCFTOOLS_CONCAT ( + ch_bcftools_concat_in + ) ch_versions = ch_versions.mix(BCFTOOLS_CONCAT.out.versions) // Sort and publish @@ -414,6 +419,21 @@ workflow NALLO { BCFTOOLS_STATS ( ch_bcftools_stats_snv_in, [[],[]], [[],[]], [[],[]], [[],[]], [[],[]] ) ch_versions = ch_versions.mix(BCFTOOLS_STATS.out.versions) ch_multiqc_files = ch_multiqc_files.mix(BCFTOOLS_STATS.out.stats.collect{it[1]}.ifEmpty([])) + + } + // + // Filter SNVs + // + if(params.filter_variants_hgnc_ids || params.filter_snvs_expression != '') { + + // Publish filtered `project` SNVs from here + FILTER_VARIANTS_SNVS ( + BCFTOOLS_SORT.out.vcf, + ch_hgnc_ids, + params.filter_variants_hgnc_ids + ) + ch_versions = ch_versions.mix(FILTER_VARIANTS_SNVS.out.versions) + } // @@ -520,6 +540,24 @@ workflow NALLO { ch_versions = ch_versions.mix(RANK_VARIANTS_SVS.out.versions) } + // + // Filter SVs + // + if(params.filter_variants_hgnc_ids || params.filter_svs_expression != '') { + + if(params.skip_cnv_calling) { + ch_filter_svs_in = params.skip_sv_annotation ? CALL_SVS.out.family_vcf : params.skip_rank_variants ? ANN_CSQ_PLI_SVS.out.vcf : RANK_VARIANTS_SVS.out.vcf + } else { + ch_filter_svs_in = params.skip_sv_annotation ? annotate_svs_in : params.skip_rank_variants ? ANN_CSQ_PLI_SVS.out.vcf : RANK_VARIANTS_SVS.out.vcf + } + + FILTER_VARIANTS_SVS ( + ch_filter_svs_in, + ch_hgnc_ids, + params.filter_variants_hgnc_ids + ) + } + // // Phase SNVs and INDELs // From a36ad2278f0cbf6e0c13af3cdb12d778832827ba Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Tue, 19 Nov 2024 21:12:11 +0100 Subject: [PATCH 068/106] Update docs (#506) * update docs * prettier * update params * prettier * parameters * changelog --- CHANGELOG.md | 1 + README.md | 2 +- docs/index.md | 2 +- docs/output.md | 237 +++++++++++++++++++++------------------------ docs/parameters.md | 2 +- docs/usage.md | 154 ++++++++++++----------------- 6 files changed, 178 insertions(+), 220 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6cfad570..142e9291 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -94,6 +94,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#502](https://github.com/genomic-medicine-sweden/nallo/pull/502) - Changed to annotating and ranking SNVs per family instead of per project - [#502](https://github.com/genomic-medicine-sweden/nallo/pull/502) - Changed output documentation and structure to match `sample` and `family` for all variants - [#502](https://github.com/genomic-medicine-sweden/nallo/pull/502) - Changed the way of validating the samplesheet to remove outputing false errors with `ifEmpty` +- [#506](https://github.com/genomic-medicine-sweden/nallo/pull/506) - Updated documentation ### `Removed` diff --git a/README.md b/README.md index 42e1f721..541fd71f 100644 --- a/README.md +++ b/README.md @@ -52,7 +52,7 @@ ##### Filtering -- Filter SNVs, INDELs, SVs and CNVs with [filter_vep](https://www.ensembl.org/vep) and [bcftools view](https://samtools.github.io/bcftools/bcftools.html). +- Filter SNVs, INDELs, SVs and CNVs with [filter_vep](https://www.ensembl.org/vep) and [bcftools](https://samtools.github.io/bcftools/bcftools.html) ## Usage diff --git a/docs/index.md b/docs/index.md index ecce661c..a51e039b 100644 --- a/docs/index.md +++ b/docs/index.md @@ -48,7 +48,7 @@ description: A bioinformatics analysis pipeline for long-reads from both PacBio ### Filtering -- Filter SNVs, INDELs, SVs and CNVs with [filter_vep](https://www.ensembl.org/vep) and [bcftools view](https://samtools.github.io/bcftools/bcftools.html). +- Filter SNVs, INDELs, SVs and CNVs with [filter_vep](https://www.ensembl.org/vep) and [bcftools](https://samtools.github.io/bcftools/bcftools.html) ## Usage diff --git a/docs/output.md b/docs/output.md index cc2f4b14..0735e06f 100644 --- a/docs/output.md +++ b/docs/output.md @@ -1,30 +1,26 @@ # genomic-medicine-sweden/nallo: Output -In general, annotated variant calls are output per family, while unannotated calls are output per sample. +## Introduction -## Aligned reads - -[Minimap2](https://github.com/lh3/minimap2) is used to map the reads to a reference genome. The aligned reads are sorted, (merged) and indexed using [samtools](https://github.com/samtools/samtools). - -| Path | Description | -| --------------------------------------- | ----------------------------------- | -| `aligned_reads/minimap2/{sample}/*.bam` | Alignment file in bam format | -| `aligned_reads/minimap2/{sample}/*.bai` | Index of the corresponding bam file | +This document describes the pipeline output files and the tools used to generate them. -If the pipeline is run with phasing, the aligned reads will be happlotagged using the active phasing tool. +## Aligned reads -| Path | Description | -| ----------------------------------------------------- | ----------------------- | -| `aligned_reads/{sample}/{sample}_haplotagged.bam` | BAM file with haplotags | -| `aligned_reads/{sample}/{sample}_haplotagged.bam.bai` | Index of the BAM file | +[Minimap2](https://github.com/lh3/minimap2) is used to map the reads to a reference genome. The aligned reads are sorted, merged and indexed using [samtools](https://github.com/samtools/samtools). If the pipeline is run with phasing, the aligned reads will be happlotagged using the active phasing tool. -!!!note +| Path | Description | Alignment | Alignment & phasing | +| --------------------------------------- | ----------------------------------- | ------------------ | ------------------- | +| `aligned_reads/minimap2/{sample}/*.bam` | Alignment file in bam format | :white_check_mark: | | +| `aligned_reads/minimap2/{sample}/*.bai` | Index of the corresponding bam file | :white_check_mark: | | - Alignments will only be output without haplotags if phasing is off. +| Path | Description | Alignment | Alignment & phasing | +| ----------------------------------------------------- | ----------------------- | --------- | ------------------- | +| `aligned_reads/{sample}/{sample}_haplotagged.bam` | BAM file with haplotags | | :white_check_mark: | +| `aligned_reads/{sample}/{sample}_haplotagged.bam.bai` | Index of the BAM file | | :white_check_mark: | ## Assembly -[Hifiasm](https://github.com/chhylp123/hifiasm) is used to assemble genomes. The assembled haplotypes are then comverted to fasta files using [gfastats](https://github.com/vgl-hub/gfastats). A deconstructed version of [dipcall](https://github.com/lh3/dipcall) is to map the assembled haplotypes back to the reference genome. +[Hifiasm](https://github.com/chhylp123/hifiasm) is used to assemble genomes. The assembled haplotypes are then converted to fasta files using [gfastats](https://github.com/vgl-hub/gfastats). A deconstructed version of [dipcall](https://github.com/lh3/dipcall) is used to map the assembled haplotypes back to the reference genome. | Path | Description | | ------------------------------------------------------------ | ---------------------------------------------------- | @@ -38,14 +34,14 @@ If the pipeline is run with phasing, the aligned reads will be happlotagged usin ## Methylation pileups -[Modkit](https://github.com/nanoporetech/modkit) is used to create methylation pileups, producing bedMethyl files for both haplotagged and ungrouped reads. Additionally, methylation information can be viewed in the BAM files, for example in IGV. +[Modkit](https://github.com/nanoporetech/modkit) is used to create methylation pileups, producing bedMethyl files for both haplotagged and ungrouped reads. Additionally, methylation information can be viewed in the BAM files, for example in IGV. When phasing is on, modkit outputs pileups per haplotype. -| Path | Description | -| ---------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | -| `methylation/modkit/pileup/{sample}/*.modkit_pileup_phased_*.bed.gz` | bedMethyl file with summary counts from haplotagged reads (if phasing is turned on) | -| `methylation/modkit/pileup/{sample}/*.modkit_pileup_phased_ungrouped.bed.gz` | bedMethyl file for ungrouped reads (if phasing is turned on) | -| `methylation/modkit/pileup/{sample}/*.modkit_pileup.bed.gz` | bedMethyl file with summary counts from all reads (if phasing is turned off) | -| `methylation/modkit/pileup/{sample}/*.bed.gz.tbi` | Index of the corresponding bedMethyl file | +| Path | Description | Alignment | Alignment & phasing | +| ---------------------------------------------------------------------------- | --------------------------------------------------------- | ------------------ | ------------------- | +| `methylation/modkit/pileup/{sample}/*.modkit_pileup_phased_*.bed.gz` | bedMethyl file with summary counts from haplotagged reads | | :white_check_mark: | +| `methylation/modkit/pileup/{sample}/*.modkit_pileup_phased_ungrouped.bed.gz` | bedMethyl file for ungrouped reads | | :white_check_mark: | +| `methylation/modkit/pileup/{sample}/*.modkit_pileup.bed.gz` | bedMethyl file with summary counts from all reads | :white_check_mark: | | +| `methylation/modkit/pileup/{sample}/*.bed.gz.tbi` | Index of the corresponding bedMethyl file | :white_check_mark: | | ## MultiQC @@ -100,13 +96,13 @@ If the pipeline is run with phasing, the aligned reads will be happlotagged usin [Mosdepth](https://github.com/brentp/mosdepth) is used to report quality control metrics such as coverage and GC content from alignment files. -| Path | Description | -| ------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | -| `qc/mosdepth/{sample}/*.mosdepth.global.dist.txt` | Cumulative distribution of bases covered for at least a given coverage value, across chromosomes and the whole genome | -| `qc/mosdepth/{sample}/*.mosdepth.region.dist.txt` | Cumulative distribution of bases covered for at least a given coverage value, across regions (if a BED file is used) | -| `qc/mosdepth/{sample}/*.mosdepth.summary.txt` | Mosdepth summary file | -| `qc/mosdepth/{sample}/*.regions.bed.gz` | Depth per region (if a BED file is used) | -| `qc/mosdepth/{sample}/*.regions.bed.gz.csi` | Index of the regions.bed.gz file | +| Path | Description | With `--target_regions` | Without `--target_regions` | +| ------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | ----------------------- | -------------------------- | +| `qc/mosdepth/{sample}/*.mosdepth.global.dist.txt` | Cumulative distribution of bases covered for at least a given coverage value, across chromosomes and the whole genome | :white_check_mark: | :white_check_mark: | +| `qc/mosdepth/{sample}/*.mosdepth.summary.txt` | Mosdepth summary file | :white_check_mark: | :white_check_mark: | +| `qc/mosdepth/{sample}/*.mosdepth.region.dist.txt` | Cumulative distribution of bases covered for at least a given coverage value, across regions | :white_check_mark: | | +| `qc/mosdepth/{sample}/*.regions.bed.gz` | Depth per region | :white_check_mark: | +| `qc/mosdepth/{sample}/*.regions.bed.gz.csi` | Index of the regions.bed.gz file | :white_check_mark: | ### Cramino @@ -140,155 +136,142 @@ If the pipeline is run with phasing, the aligned reads will be happlotagged usin ## Variants +In general, annotated variant calls are output per family while unannotated calls are output per sample. + ### Paralogous genes [Paraphase](https://github.com/PacificBiosciences/paraphase) is used to call paralogous genes. -| Path | Description | -| -------------------------------------------------------------------- | --------------------------------------- | -| `paraphase/{sample}/*.bam` | BAM file with haplotypes grouped by HP | -| `paraphase/{sample}/*.bai` | Index of the BAM file | -| `paraphase/{sample}/*.json` | Summary of haplotypes and variant calls | -| `paraphase/{sample}/{sample}_paraphase_vcfs/{sample}_{gene}_vcf` | VCF file per gene | -| `paraphase/{sample}/{sample}_paraphase_vcfs/{sample}_{gene}_vcf.tbi` | Index of the VCF file | +| Path | Description | +| -------------------------------------------------------------------- | ----------------------------------------- | +| `paraphase/{sample}/*.bam` | BAM file with reads from analysed regions | +| `paraphase/{sample}/*.bai` | Index of the BAM file | +| `paraphase/{sample}/*.json` | Summary of haplotypes and variant calls | +| `paraphase/{sample}/{sample}_paraphase_vcfs/{sample}_{gene}_vcf` | VCF file per gene | +| `paraphase/{sample}/{sample}_paraphase_vcfs/{sample}_{gene}_vcf.tbi` | Index of the VCF file | ### Repeats [TRGT](https://github.com/PacificBiosciences/trgt) is used to call repeats. -!!!note - - Merged variants per family are only output without annotation if `--skip_repeat_annotation` is true. Variants per sample are always output without annotation. - -| Path | Description | -| --------------------------------------------------------------- | ----------------------------------------- | -| `repeats/family/{family}/{family}_repeat_expansions.vcf.gz` | Merged VCF file per family | -| `repeats/family/{family}/{family}_repeat_expansions.vcf.gz.tbi` | Index of the VCF file | -| `repeats/sample/{sample}/{sample}_sorted.vcf.gz` | VCF file with called repeats for a sample | -| `repeats/sample/{sample}/{sample}_sorted.vcf.gz.tbi` | Index of the VCF file | -| `repeats/sample/{sample}/{sample}_spanning_sorted.bam` | BAM file with sorted spanning reads | -| `repeats/sample/{sample}/{sample}_spanning_sorted.bai` | Index of the BAM file | +| Path | Description | Call repeats | Call & annotate repeats | +| --------------------------------------------------------------- | ----------------------------------------- | ------------------ | ----------------------- | +| `repeats/family/{family}/{family}_repeat_expansions.vcf.gz` | Merged VCF file per family | :white_check_mark: | | +| `repeats/family/{family}/{family}_repeat_expansions.vcf.gz.tbi` | Index of the VCF file | :white_check_mark: | | +| `repeats/sample/{sample}/{sample}_sorted.vcf.gz` | VCF file with called repeats for a sample | :white_check_mark: | :white_check_mark: | +| `repeats/sample/{sample}/{sample}_sorted.vcf.gz.tbi` | Index of the VCF file | :white_check_mark: | :white_check_mark: | +| `repeats/sample/{sample}/{sample}_spanning_sorted.bam` | BAM file with sorted spanning reads | :white_check_mark: | :white_check_mark: | +| `repeats/sample/{sample}/{sample}_spanning_sorted.bai` | Index of the BAM file | :white_check_mark: | :white_check_mark: | [Stranger](https://github.com/Clinical-Genomics/stranger) is used to annotate repeats. -| Path | Description | -| ----------------------------------------------------------------------------------- | ------------------------------------- | -| `repeat_expansions/family/{family}/{family}_repeat_expansions_annotated.vcf.gz` | Merged, annotated VCF file per family | -| `repeat_expansions/family/{family}/{family}_repeat_expansions_annotated.vcf.gz.tbi` | Index of the VCF file | +| Path | Description | Call repeats | Call & annotate repeats | +| ----------------------------------------------------------------------------------- | ------------------------------------- | ------------ | ----------------------- | +| `repeat_expansions/family/{family}/{family}_repeat_expansions_annotated.vcf.gz` | Merged, annotated VCF file per family | | :white_check_mark: | +| `repeat_expansions/family/{family}/{family}_repeat_expansions_annotated.vcf.gz.tbi` | Index of the VCF file | | :white_check_mark: | ### SNVs [DeepVariant](https://github.com/google/deepvariant) is used to call variants, while [bcftools](https://samtools.github.io/bcftools/bcftools.html) and [GLnexus](https://github.com/dnanexus-rnd/GLnexus) are used for merging variants. -!!!note - - Variants are only output without annotation and ranking if these subworkflows are turned off. - -| Path | Description | -| --------------------------------------------------------------------- | --------------------------------------------------------------------------- | -| `snvs/sample/{sample}/{sample}_snv.vcf.gz` | VCF file containing called variants with alternative genotypes for a sample | -| `snvs/sample/{sample}/{sample}_snv.vcf.gz.tbi` | Index of the corresponding VCF file | -| `snvs/family/{family}/{family}_snv.vcf.gz` | VCF file containing called variants for all samples | -| `snvs/family/{family}/{family}_snv.vcf.gz.tbi` | Index of the corresponding VCF file | -| `snvs/stats/sample/*.stats.txt` | Variant statistics | -| `qc/deepvariant_vcfstatsreport/{sample}/${sample}.visual_report.html` | Visual report of SNV calls from DeepVariant | +| Path | Description | Call SNVs | Call & annotate SNVs | Call, annotate and rank SNVs | +| --------------------------------------------------------------------- | --------------------------------------------------------------------------- | ------------------ | -------------------- | ---------------------------- | +| `snvs/sample/{sample}/{sample}_snv.vcf.gz` | VCF file containing called variants with alternative genotypes for a sample | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| `snvs/sample/{sample}/{sample}_snv.vcf.gz.tbi` | Index of the corresponding VCF file | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| `snvs/stats/sample/*.stats.txt` | Variant statistics | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| `qc/deepvariant_vcfstatsreport/{sample}/${sample}.visual_report.html` | Visual report of SNV calls from DeepVariant | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| `snvs/family/{family}/{family}_snv.vcf.gz` | VCF file containing called variants for all samples | :white_check_mark: | | | +| `snvs/family/{family}/{family}_snv.vcf.gz.tbi` | Index of the corresponding VCF file | :white_check_mark: | | | -[echtvar](https://github.com/brentp/echtvar) and [VEP](https://www.ensembl.org/vep) are used for annotating SNVs, while [CADD](https://cadd.gs.washington.edu/) is used to annotate INDELs with CADD scores. +#### Annotation -!!!note +[Echtvar](https://github.com/brentp/echtvar) and [VEP](https://www.ensembl.org/vep) are used for annotating SNVs, while [CADD](https://cadd.gs.washington.edu/) is used to annotate INDELs with CADD scores. - Variants are only output without ranking if that subworkflows are turned off. +| Path | Description | Call SNVs | Call & annotate SNVs | Call, annotate and rank SNVs | +| -------------------------------------------------------- | ------------------------------------------------------------------------------ | --------- | -------------------- | ---------------------------- | +| `snvs/sample/{sample}/{sample}_snv_annotated.vcf.gz` | VCF file containing annotated variants with alternative genotypes for a sample | | :white_check_mark: | | +| `snvs/sample/{sample}/{sample}_snv_annotated.vcf.gz.tbi` | Index of the annotated VCF file | | :white_check_mark: | | +| `snvs/family/{family}/{family}_snv_annotated.vcf.gz` | VCF file containing annotated variants per family | | :white_check_mark: | | +| `snvs/family/{family}/{family}_snv_annotated.vcf.gz.tbi` | Index of the annotated VCF file | | :white_check_mark: | | -| Path | Description | -| -------------------------------------------------------- | ------------------------------------------------------------------------------ | -| `snvs/sample/{sample}/{sample}_snv_annotated.vcf.gz` | VCF file containing annotated variants with alternative genotypes for a sample | -| `snvs/sample/{sample}/{sample}_snv_annotated.vcf.gz.tbi` | Index of the annotated VCF file | -| `snvs/family/{family}/{family}_snv_annotated.vcf.gz` | VCF file containing annotated variants per family | -| `snvs/family/{family}/{family}_snv_annotated.vcf.gz.tbi` | Index of the annotated VCF file | +#### Ranking [GENMOD](https://github.com/Clinical-Genomics/genmod) is used to rank the annotated SNVs and INDELs. -| Path | Description | -| --------------------------------------------------------------- | -------------------------------------------------------- | -| `snvs/sample/{sample}/{sample}_snv_annotated_ranked.vcf.gz` | VCF file with annotated and ranked variants for a sample | -| `snvs/sample/{sample}/{sample}_snv_annotated_ranked.vcf.gz.tbi` | Index of the ranked VCF file | -| `snvs/family/{family}/{family}_snv_annotated_ranked.vcf.gz` | VCF file with annotated and ranked variants per family | -| `snvs/family/{family}/{family}_snv_annotated_ranked.vcf.gz.tbi` | Index of the ranked VCF file | - -[filter_vep](https://www.ensembl.org/vep) and [bcftools view](https://samtools.github.io/bcftools/bcftools.html) can be used to filter variants. - -!!!note +| Path | Description | Call SNVs | Call & annotate SNVs | Call, annotate and rank SNVs | +| --------------------------------------------------------------- | -------------------------------------------------------- | --------- | -------------------- | ---------------------------- | +| `snvs/sample/{sample}/{sample}_snv_annotated_ranked.vcf.gz` | VCF file with annotated and ranked variants for a sample | | :white_check_mark: | +| `snvs/sample/{sample}/{sample}_snv_annotated_ranked.vcf.gz.tbi` | Index of the ranked VCF file | | :white_check_mark: | +| `snvs/family/{family}/{family}_snv_annotated_ranked.vcf.gz` | VCF file with annotated and ranked variants per family | | | :white_check_mark: | +| `snvs/family/{family}/{family}_snv_annotated_ranked.vcf.gz.tbi` | Index of the ranked VCF file | | | :white_check_mark: | - Variants are only output if either of `--filter_variants_hgnc_id` and `--filter_snvs_expression` has been used, and only family VCFs are output. +#### Filtering -!!!tip - - Filtered variants are output alongside unfiltered variants as additional files. +[Filter_vep](https://www.ensembl.org/vep) and [bcftools](https://samtools.github.io/bcftools/bcftools.html) can be used to filter variants. These will be output if either of `--filter_variants_hgnc_id` and `--filter_snvs_expression` has been used, and only family VCFs are filtered. | Path | Description | | ---------------------------------------------- | -------------------------------------------- | | `snvs/{family}/{family}_*_filtered.vcf.gz` | VCF file with filtered variants for a family | | `snvs/{family}/{family}_*_filtered.vcf.gz.tbi` | Index of the filtered VCF file | -### SVs (and CNVs) +!!!tip -[Severus](https://github.com/KolmogorovLab/Severus) or [Sniffles](https://github.com/fritzsedlazeck/Sniffles) is used to call structural variants. -[HiFiCNV](https://github.com/PacificBiosciences/HiFiCNV) is used to call CNVs. It also produces copy number, depth, and MAF [visualization tracks](#visualization-tracks). -[SVDB](https://github.com/J35P312/SVDB) is used to combine and merge SVs and CNVs within and between samples. -[GENMOD](https://github.com/Clinical-Genomics/genmod) is used to rank the annotated SVs. + Filtered variants are output alongside unfiltered variants as additional files. -!!!note +### SVs (and CNVs) - Variants are only output without annotation and/or ranking if these subworkflow is turned off. +[Severus](https://github.com/KolmogorovLab/Severus) or [Sniffles](https://github.com/fritzsedlazeck/Sniffles) are used to call structural variants, while [HiFiCNV](https://github.com/PacificBiosciences/HiFiCNV) is used to call CNVs. HiFiCNV also produces copy number, depth, and MAF [visualization tracks](#visualization-tracks). -!!!note +!!!info "Variant :white_check_markemerging strategies" SV and CNV calls are output unmerged per sample, while the family files are first merged between samples for SVs and CNVs separately, then the merged SV and CNV files are merged again, with priority given to coordinates from the SV calls. -| Path | Description | -| --------------------------------------------------------------- | ------------------------------------------------------------------ | -| `svs/family/{family_id}/{family_id}_cnvs_svs_merged.vcf.gz` | VCF file with merged CNVs and SVs per family | -| `svs/family/{family_id}/{family_id}_cnvs_svs_merged.vcf.gz.tbi` | Index of the merged VCF file | -| `svs/family/{family_id}/{family_id}_svs_merged.vcf.gz` | VCF file with merged SVs per family (output if CNV-calling is off) | -| `svs/family/{family_id}/{family_id}_svs_merged.vcf.gz.tbi` | Index of the merged VCF file | -| `svs/sample/{sample}/{sample}_cnvs.vcf.gz` | VCF file with CNVs per sample | -| `svs/sample/{sample}/{sample}_cnvs.vcf.gz.tbi` | VCF file with CNVs per sample | -| `svs/sample/{sample}/{sample}_svs.vcf.gz` | VCF file with SVs per sample | -| `svs/sample/{sample}/{sample}_svs.vcf.gz.tbi` | VCF file with SVs per sample | +| Path | Description | Call SVs | Call CNVs | Call SVs & CNVs | +| --------------------------------------------------------------- | -------------------------------------------- | ------------------ | ------------------ | ------------------ | +| `svs/sample/{sample}/{sample}_svs.vcf.gz` | VCF file with SVs per sample | :white_check_mark: | | :white_check_mark: | +| `svs/sample/{sample}/{sample}_svs.vcf.gz.tbi` | VCF file with SVs per sample | :white_check_mark: | | :white_check_mark: | +| `svs/sample/{sample}/{sample}_cnvs.vcf.gz` | VCF file with CNVs per sample | | :white_check_mark: | :white_check_mark: | +| `svs/sample/{sample}/{sample}_cnvs.vcf.gz.tbi` | VCF file with CNVs per sample | | :white_check_mark: | :white_check_mark: | +| `svs/family/{family_id}/{family_id}_svs_merged.vcf.gz` | VCF file with merged SVs per family | :white_check_mark: | | | +| `svs/family/{family_id}/{family_id}_svs_merged.vcf.gz.tbi` | Index of the merged VCF file | :white_check_mark: | | | +| `svs/family/{family_id}/{family_id}_cnvs_svs_merged.vcf.gz` | VCF file with merged CNVs and SVs per family | | | :white_check_mark: | +| `svs/family/{family_id}/{family_id}_cnvs_svs_merged.vcf.gz.tbi` | Index of the merged VCF file | | | :white_check_mark: | + +#### Annotation [SVDB](https://github.com/J35P312/SVDB) and [VEP](https://www.ensembl.org/vep) are used to annotate structural variants. -| Path | Description | -| ------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -| `svs/family/{family_id}/{family_id}_cnvs_svs_merged_annotated.vcf.gz` | VCF file with merged and annotated CNVs and SVs per family | -| `svs/family/{family_id}/{family_id}_cnvs_svs_merged_annotated.vcf.gz.tbi` | Index of the merged VCF file | -| `svs/family/{family_id}/{family_id}_svs_merged_annotated.vcf.gz` | VCF file with merged and annotated SVs per family (output if CNV-calling is off) | -| `svs/family/{family_id}/{family_id}_svs_merged_annotated.vcf.gz.tbi` | Index of the merged VCF file | +| Path | Description | Call & annotate SVs |  Call & annotate SVs & CNVs | +| ------------------------------------------------------------------------- | ---------------------------------------------------------- | ------------------- | --------------------------- | +| `svs/family/{family_id}/{family_id}_cnvs_svs_merged_annotated.vcf.gz` | VCF file with merged and annotated CNVs and SVs per family | | :white_check_mark: | +| `svs/family/{family_id}/{family_id}_cnvs_svs_merged_annotated.vcf.gz.tbi` | Index of the merged VCF file | | :white_check_mark: | +| `svs/family/{family_id}/{family_id}_svs_merged_annotated.vcf.gz` | VCF file with merged and annotated SVs per family | :white_check_mark: | +| `svs/family/{family_id}/{family_id}_svs_merged_annotated.vcf.gz.tbi` | Index of the merged VCF file | :white_check_mark: | + +#### Ranking [GENMOD](https://github.com/Clinical-Genomics/genmod) is used to rank the annotated SVs. -| Path | Description | -| -------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | -| `svs/family/{family_id}/{family_id}_cnvs_svs_merged_annotated_ranked.vcf.gz` | VCF file with merged, annotated and ranked CNVs and SVs per family | -| `svs/family/{family_id}/{family_id}_cnvs_svs_merged_annotated_ranked.vcf.gz.tbi` | Index of the merged VCF file | -| `svs/family/{family_id}/{family_id}_svs_merged_annotated_ranked.vcf.gz` | VCF file with merged, annotated and ranked SVs per family (output if CNV-calling is off) | -| `svs/family/{family_id}/{family_id}_svs_merged_annotated_ranked.vcf.gz.tbi` | Index of the merged VCF file | +| Path | Description | Rank SVs | Rank SVs & CNVs | +| -------------------------------------------------------------------------------- | ------------------------------------------------------------------ | ------------------ | ------------------ | +| `svs/family/{family_id}/{family_id}_cnvs_svs_merged_annotated_ranked.vcf.gz` | VCF file with merged, annotated and ranked CNVs and SVs per family | | :white_check_mark: | +| `svs/family/{family_id}/{family_id}_cnvs_svs_merged_annotated_ranked.vcf.gz.tbi` | Index of the merged VCF file | | :white_check_mark: | +| `svs/family/{family_id}/{family_id}_svs_merged_annotated_ranked.vcf.gz` | VCF file with merged, annotated and ranked SVs per family | :white_check_mark: | | +| `svs/family/{family_id}/{family_id}_svs_merged_annotated_ranked.vcf.gz.tbi` | Index of the merged VCF file | :white_check_mark: | | -[filter_vep](https://www.ensembl.org/vep) and [bcftools view](https://samtools.github.io/bcftools/bcftools.html) can be used to filter variants. +#### Filtering -!!!note +[Filter_vep](https://www.ensembl.org/vep) and [bcftools](https://samtools.github.io/bcftools/bcftools.html) can be used to filter variants. These will be output if either of `--filter_variants_hgnc_id` and `--filter_svs_expression` has been used, and only family VCFs are filtered. - Variants are only output if either of `--filter_variants_hgnc_id` and `--filter_svs_expression` has been used, and only family variants are output. +| Path | Description | +| --------------------------------------------- | -------------------------------------------- | +| `svs/{family}/{family}_*_filtered.vcf.gz` | VCF file with filtered variants for a family | +| `svs/{family}/{family}_*_filtered.vcf.gz.tbi` | Index of the filtered VCF file | !!!tip Filtered variants are output alongside unfiltered variants as additional files. -| Path | Description | -| ---------------------------------------------------- | -------------------------------------------- | -| `svs/family/{family}/{family}_*_filtered.vcf.gz` | VCF file with filtered variants for a family | -| `svs/family/{family}/{family}_*_filtered.vcf.gz.tbi` | Index of the filtered VCF file | - ## Visualization Tracks [HiFiCNV](https://github.com/PacificBiosciences/HiFiCNV) is used to call CNVs, but it also produces copy number, depth, and MAF tracks that can be visualized in for example IGV. diff --git a/docs/parameters.md b/docs/parameters.md index c843fa98..0acde4c8 100644 --- a/docs/parameters.md +++ b/docs/parameters.md @@ -107,7 +107,7 @@ Workflow options specific to genomic-medicine-sweden/nallo | `snv_calling_processes` | If snv_calling_processes is bigger than 1, short variant calling will be done in parallel to reduce processing time. | `integer` | 13 | | | | `vep_cache_version` | VEP cache version | `integer` | 110 | | | | `vep_plugin_files` | A csv file with vep_files as header, and then paths to vep plugin files. Paths to pLI_values.txt and LoFtool_scores.txt are required. | `string` | | | | -| `filter_variants_hgnc_ids` | A tsv/csv file with a `#hgnc_ids` column header, and then one numerical HGNC ID per row. E.g. `4281`, not `HGNC:4281`. | `string` | | | | +| `filter_variants_hgnc_ids` | A tsv/csv file with a `hgnc_ids` column header, and then one numerical HGNC ID per row. E.g. `4281` or `HGNC:4281`. | `string` | | | | | `filter_snvs_expression` | An expression that is passed to bcftools view to filter SNVs, e.g. --filter_snvs_expression "-e 'INFO/AQ>60'" | `string` | | | | | `filter_svs_expression` | An expression that is passed to bcftools view to filter SVs, e.g. --filter_svs_expression "-e 'INFO/AQ>60'" | `string` | | | | | `deepvariant_model_type` | Sets the model type used for DeepVariant. This is set automatically using `--preset` by default. | `string` | PACBIO | | True | diff --git a/docs/usage.md b/docs/usage.md index 84786bb7..2f882118 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -47,9 +47,9 @@ The above command downloads the pipeline from GitHub, caches it, and tests it on Running the pipeline on real data involves three steps: -1. Preparing a samplesheet with your data -2. Gather required files and references -3. Supply samplesheet, refeferences and files and run the pipeline +1. Prepare a samplesheet with your data +2. Gather the required files and references +3. Supply the samplesheet, reference files and run the pipeline ## Samplesheet @@ -59,7 +59,7 @@ First, you will need to create a samplesheet with information about the samples --input '[path to samplesheet file]' ``` -It has to be a comma-separated file with 7 columns, and a header row as shown in the example below: +It has to be a comma-separated file with seven columns and a header row, as shown in the example below: ```console project,sample,file,family_id,paternal_id,maternal_id,sex,phenotype @@ -69,7 +69,7 @@ testrun,HG003,/path/to/HG003.bam,FAM,0,0,2,1 | Fields | Description | | ------------- | --------------------------------------------------------------------------------------------------------------------------------- | -| `project` | Project name must be provided and cannot contain spaces, needs to be the same for all samples." | +| `project` | Project name must be provided and cannot contain spaces, needs to be the same for all samples. | | `sample` | Custom sample name, cannot contain spaces. | | `file` | Absolute path to gzipped FASTQ or BAM file. File has to have the extension ".fastq.gz", .fq.gz" or ".bam". | | `family_id` | Family ID must be provided and cannot contain spaces. If no family ID is available use the same ID as sample. | @@ -78,30 +78,28 @@ testrun,HG003,/path/to/HG003.bam,FAM,0,0,2,1 | `sex` | Sex must be provided as 0, 1 or 2 (0=unknown; 1=male; 2=female). If sex is unknown it will be assigned automatically if possible. | | `phenotype` | Affected status of patient (0 = missing; 1=unaffected; 2=affected). | -An [example samplesheet](../assets/samplesheet.csv) has been provided with the pipeline. - ## Presets -This pipeline comes with three different presets that should be set with the `--preset` parameter: `revio` (default), `pacbio` or `ONT_R10`. - -!!!note "Effect of preset on subworkflows" +This pipeline comes with three different presets that should be set with the `--preset` parameter: `revio` (default), `pacbio` or `ONT_R10`. The preset parameter controls certain technology specific tools and parameters. - The selected preset will turn off subworkflows: +!!!info "Preset effects on subworkflows" - `--skip_genome_assembly` and `--skip_repeat_wf` will be set to `true` for `ONT_R10` - `--skip_methylation_pileups` will be set to `true` for `pacbio` ## Subworkflows -As indicated above, this pipeline is divided into multiple subworkflows, each with its own input requirements and outputs. By default, all subworklows are active, and thus all mandatory input files are required. +As indicated above, this pipeline is divided into multiple subworkflows, each with their own input requirements and outputs. By default all subworklows are active, and thus all mandatory input files are required. + +### Required parameters -The only mandatory parameters for all subworkflows is the `--input` and `--outdir` parameters, all other parameters are determined by the active subworkflows. +The only mandatory parameters for all subworkflows are the `--input` and `--outdir` parameters, all other parameters are determined by the active subworkflows. -For example, if you would run `nextflow run genomic-medicine-sweden/nallo -profile docker --outdir results --input samplesheet.csv`, the pipeline will try to guide you through which files are required: +For example, if you would run `nextflow run genomic-medicine-sweden/nallo -profile docker --outdir results --input samplesheet.csv`, the pipeline will would to guide you through which files are required: ``` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - --skip_genome_assembly is NOT active, the following files are required: --dipcall_par + --skip_genome_assembly is NOT active, the following files are required: --par_regions --skip_snv_annotation is NOT active, the following files are required: --echtvar_snv_databases --skip_alignment is NOT active, the following files are required: --somalier_sites --skip_snv_annotation is NOT active, the following files are required: --vep_cache @@ -109,9 +107,11 @@ For example, if you would run `nextflow run genomic-medicine-sweden/nallo -profi ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ``` -A thorough description of required files are provided below. +A thorough description of the required files are provided below. -Additionally, if you want to skip a subworkflow, you will need to explicitly state to skip all subworkflows that rely on it. +### Skipping subworkflows + +If you want to skip a subworkflow, you will need to explicitly state to skip all subworkflows that rely on it. For example, `nextflow run genomic-medicine-sweden/nallo -profile docker --outdir results --input samplesheet.csv --skip_alignment` will tell you @@ -126,30 +126,28 @@ Because almost all other subworkflows relies on the mapping subworkflow. ## Reference files and parameters -As descibed above, the files required depend on the active subworkflows. All parameters are listed [here](parameters.md), but the most useful parameters needed to run the pipeline described in more detail below. +All parameters are listed in the [parameters section](parameters.md), but the most useful parameters needed to run the pipeline described in more detail below. -### Mapping +### Alignment -The majority of subworkflows depend on the mapping (alignment) subworkflow which requires `--fasta` and `--somalier_sites`. +The majority of subworkflows depend on the alignment subworkflow which requires `--fasta` and `--somalier_sites`. -| Parameter | Description | -| ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `fasta` | Reference genome, either gzipped or uncompressed FASTA (e.g. [GCA_000001405.15_GRCh38_no_alt_analysis_set.fna.gz](https://lh3.github.io/2017/11/13/which-human-reference-genome-to-use)) | -| `somalier_sites` | A VCF of known polymorphic sites (e.g. [sites.hg38.vcg.gz](https://github.com/brentp/somalier/files/3412456/sites.hg38.vcf.gz)), from which sex will be inferred if possible. | +| Parameter | Description | +| ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `fasta` | Reference genome, either gzipped or uncompressed (e.g. [GCA_000001405.15_GRCh38_no_alt_analysis_set.fna.gz](https://lh3.github.io/2017/11/13/which-human-reference-genome-to-use)) | +| `somalier_sites` | A VCF with known polymorphic sites from which sex will be inferred, if possible (e.g. [sites.hg38.vcg.gz](https://github.com/brentp/somalier/files/3412456/sites.hg38.vcf.gz)) | Turned off with `--skip_alignment`. ### QC -This subworkflow depends on the mapping subworkflow, but requires no additional files. +This subworkflow depends on the alignment subworkflow, but requires no additional files. Turned off with `--skip_qc`. ### Assembly -This subworkflow contains both genome assembly and assembly variant calling. The assemblyt variant calling needs the sex of samples and for samples with unknown sex this is inferred from aligned reads, therefore it depends on the mapping subworkflow. - -It requires a BED file with PAR regions. +This subworkflow contains both genome assembly and assembly variant calling. The assembly variant calling needs the sex of samples. For samples with unknown sex this is inferred with the help of the aligned reads. Therefore it depends on the alignment subworkflow. It requires a BED file with PARs. | Parameter | Description | | ------------- | ---------------------------------------------------------------------------------------------------------------------------------- | @@ -157,7 +155,7 @@ It requires a BED file with PAR regions. !!!warning - Make sure chrY PAR is hard masked in reference genome you are using. + Make sure chrY PAR is hard masked in the reference genome. Turned off with `--skip_genome_assembly`. @@ -165,14 +163,15 @@ Turned off with `--skip_genome_assembly`. This subworkflow depends on the mapping subworkflow, but requires no additional files. -!!warning -Only GRCh38 is supported. +!!!warning + + Only GRCh38 is supported. Turned off with `--skip_call_paralogs`. -### Short variant calling +### SNV calling -This subworkflow depends on the mapping subworkflow, and required the same PAR regions file as the assembly workflow. +This subworkflow depends on the alignment subworkflow, and requires PARs. | Parameter | Description | | ------------- | --------------------------------------------------------------------------------------------------------------------------------- | @@ -182,41 +181,41 @@ Turned off with `--skip_snv_calling`. ### CNV calling -This subworkflow depends on the mapping and short variant calling subworkflows, and requires the following additional files: +This subworkflow depends on the alignment and SNV calling subworkflows, and requires the following additional files: | Parameter | Description | | -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `hificnv_expected_xy_cn` | expected XY copy number regions for your reference genome (e.g. [expected_cn.hg38.XY.bed](https://github.com/PacificBiosciences/HiFiCNV/raw/main/data/expected_cn/expected_cn.hg38.XY.bed)) | -| `hificnv_expected_xx_cn` | expected XX copy number regions for your reference genome (e.g. [expected_cn.hg38.XX.bed](https://github.com/PacificBiosciences/HiFiCNV/raw/main/data/expected_cn/expected_cn.hg38.XX.bed)) | +| `hificnv_expected_xy_cn` | Expected XY copy number regions for your reference genome (e.g. [expected_cn.hg38.XY.bed](https://github.com/PacificBiosciences/HiFiCNV/raw/main/data/expected_cn/expected_cn.hg38.XY.bed)) | +| `hificnv_expected_xx_cn` | Expected XX copy number regions for your reference genome (e.g. [expected_cn.hg38.XX.bed](https://github.com/PacificBiosciences/HiFiCNV/raw/main/data/expected_cn/expected_cn.hg38.XX.bed)) | | `hificnv_excluded_regions` | BED file specifying regions to exclude (e.g. [cnv.excluded_regions.hg38.bed.gz](https://github.com/PacificBiosciences/HiFiCNV/raw/main/data/excluded_regions/cnv.excluded_regions.hg38.bed.gz)) | Turned off with `--skip_cnv_calling`. ### Phasing -This subworkflow phases variants and haplotags aligned BAM files, and such relies on the mapping and short variant calling subworkflows, but requires no additional files. +This subworkflow phases variants and haplotags aligned BAM files, and such relies on the alignment and SNV calling subworkflows, but requires no additional files. Turned off with `--skip_phasing`. -### Methylation +### Methylation pileups -This subworkflow relies on mapping and short variant calling subworkflows, but requires no additional files. +This subworkflow relies on alignment and short variant calling subworkflows, but requires no additional files. Turned off with `--skip_methylation_pileups`. ### Repeat calling -This subworkflow requires haplotagged BAM files, and such relies on the mapping, short variant calling and phasing subworkflows, and requires the following additional files: +This subworkflow requires haplotagged BAM files, and such relies on aligment, SNV calling and phasing subworkflows. It requires the following additional files: -| Parameter | Description | -| -------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `trgt_repeats` | a BED file with tandem repeats matching your reference genome (e.g. [pathogenic_repeats.hg38.bed](https://github.com/PacificBiosciences/trgt/raw/main/repeats/pathogenic_repeats.hg38.bed)>)) | +| Parameter | Description | +| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `trgt_repeats` | a BED file with tandem repeats matching your reference genome (e.g. [pathogenic_repeats.hg38.bed](https://github.com/PacificBiosciences/trgt/raw/main/repeats/pathogenic_repeats.hg38.bed)) | Turned off with `--skip_repeat_calling`. ### Repeat annotation -This subworkflow relies on the mapping, short variant calling, phasing and repeat calling subworkflows, and requires the following additional files: +This subworkflow relies on the alignment, SNV calling, phasing and repeat calling subworkflows. It requires the following additional files: | Parameter | Description | | ------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | @@ -226,7 +225,7 @@ Turned off with `--skip_repeat_annotation`. ### SNV annotation -This subworkflow relies on the mapping and short variant calling, and requires the following additional files: +This subworkflow relies on the alignment and SNV calling, and requires the following additional files: @@ -234,7 +233,7 @@ This subworkflow relies on the mapping and short variant calling, and requires t | ------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `vep_cache` | VEP cache matching your reference genome, either as a `.tar.gz` archive or path to a directory (e.g. [homo_sapiens_vep_110_GRCh38.tar.gz](https://ftp.ensembl.org/pub/release-110/variation/vep/homo_sapiens_vep_110_GRCh38.tar.gz)) | | `vep_plugin_files` 1 | A csv file with VEP plugin files, pLI and LoFtool are required. Example provided below. | -| `echtvar_snv_databases` 2 |  A csv file with annotation databases from ([`echtvar encode`](https://github.com/brentp/echtvar)) | +| `echtvar_snv_databases` 2 | A csv file with annotation databases from [echtvar encode](https://github.com/brentp/echtvar) (e.g. [`gnomad.v3.1.2.echtvar.popmax.v2.zip`](https://surfdrive.surf.nl/files/index.php/s/LddbAYQAYPqtYu6/download)) | | `variant_consequences_snvs` | A list of SO terms listed in the order of severity from most severe to lease severe for annotating genomic and mitochondrial SNVs. Sample file [here](https://github.com/nf-core/test-datasets/blob/raredisease/reference/variant_consequences_v2.txt). You can learn more about these terms [here](https://ensembl.org/info/genome/variation/prediction/predicted_data.html) | 1 Example file for input with `--vep_plugin_files` @@ -256,12 +255,6 @@ gnomad,/path/to/gnomad.v3.1.2.echtvar.popmax.v2.zip cadd,/path/to/cadd.v1.6.hg38.zip ``` -!!!warning - - Generating an echtvar database from a VCF-file is a fairly straightforward process described on the [echtvar GitHub](https://github.com/brentp/echtvar). However, the pre-made `gnomad.v3.1.2.echtvar.v2.zip` provided by them results in malformed INFO lines that are not compatible with genmod (run in the subsequent ranking subworkflow). - - For a very small test database that only overlaps the coordinates of the pipeline test data set, you could use [`cadd.v1.6.hg38.test_data.zip`](https://github.com/genomic-medicine-sweden/test-datasets/raw/refs/heads/nallo/reference/cadd.v1.6.hg38.test_data.zip) to get started. - !!!tip Optionally, to calcuate CADD scores for small indels, supply a path to a folder containing cadd annotations with `--cadd_resources` and prescored indels with `--cadd_prescored_indels`. Equivalent of the `data/annotations/` and `data/prescored/` folders described [here](https://github.com/kircherlab/CADD-scripts/#manual-installation). CADD scores for SNVs can be annotated through echvtvar and `--echtvar_snv_databases`. @@ -270,22 +263,22 @@ Turned off with `--skip_snv_annotation`. ### Rank SNVs and INDELs -This subworkflow ranks SNVs, and relies on the mapping, short variant calling and SNV annotation subworkflows, and requires the following additional files: +This subworkflow ranks SNVs, and relies on the alignment, SNV calling and SNV annotation subworkflows. It requires the following additional files: | Parameter | Description | | --------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `genmod_score_config_snvs` |  Used by GENMOD when ranking variants. Sample file [here](https://github.com/nf-core/test-datasets/blob/raredisease/reference/rank_model_snv.ini). | +| `genmod_score_config_snvs` |  Used by GENMOD when ranking variants. Sample file [here](https://github.com/nf-core/test-datasets/blob/raredisease/reference/rank_model_snv.ini) | | `genmod_reduced_penetrance` | A list of loci that show [reduced penetrance](https://medlineplus.gov/genetics/understanding/inheritance/penetranceexpressivity/) in people. Sample file [here](https://github.com/nf-core/test-datasets/blob/raredisease/reference/reduced_penetrance.tsv) | -`--skip_rank_variants`. +Turned off with `--skip_rank_variants`. ### SV annotation -This subworkflow relies on the mapping subworkflow, and requires the following additional files: +This subworkflow relies on the alignment subworkflow, and requires the following additional files: -| Parameter | Description | -| -------------------------------- | ----------------------------------------------------------------------------- | -| `svdb_sv_databases` 1 | Csv file with databases used for structural variant annotation in vcf format. | +| Parameter | Description | +| -------------------------------- | --------------------------------------------------------------------- | +| `svdb_sv_databases` 1 | Csv file with databases (VCFs) used for structural variant annotation | 1 Example file for input with `--svdb_sv_databases`: @@ -304,36 +297,36 @@ This subworkflow ranks SVs, and relies on the mapping, SV calling and SV annotat | Parameter | Description | | --------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `genmod_score_config_svs` |  Used by GENMOD when ranking variants. Sample file [here](https://github.com/nf-core/test-datasets/blob/raredisease/reference/rank_model_snv.ini). | +| `genmod_score_config_svs` |  Used by GENMOD when ranking variants. Sample file [here](https://github.com/nf-core/test-datasets/blob/raredisease/reference/rank_model_snv.ini) | | `genmod_reduced_penetrance` | A list of loci that show [reduced penetrance](https://medlineplus.gov/genetics/understanding/inheritance/penetranceexpressivity/) in people. Sample file [here](https://github.com/nf-core/test-datasets/blob/raredisease/reference/reduced_penetrance.tsv) | `--skip_rank_variants`. -#### Filter variants +### Filter variants -SNVs and INDELs, and SVs and CNVs can be filtered using [filter_vep](https://www.ensembl.org/vep) and [bcftools view](https://samtools.github.io/bcftools/bcftools.html). +This subworkflow filters SNVs and SVs. It required at least the alignment and SNV calling workflows, but most of the time also the SNV annotation and ranking workflows. -| Parameter | Description | -| --------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `filter_variants_hgnc_ids` 1 |  Used by filter_vep to filter variants on HGNC IDs. Requires a tsv/bed file with a `#hgnc_ids` column with one numerical HGNC ID per row. E.g. `4281`, not `HGNC:4281`. | +| Parameter | Description | +| --------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `filter_variants_hgnc_ids` 1 |  Used by filter_vep to filter variants on HGNC IDs. Requires a tsv/csv file with a `hgnc_ids` column, that has one numerical HGNC ID per row, e.g. `4281` or `HGNC:4281`. | +| `filter_snvs_expression` | An expression that is passed to bcftools view to filter SNVs, e.g. `--filter_snvs_expression "-e 'INFO/AQ>60'"` | +| `filter_svs_expression` | An expression that is passed to bcftools view to filter SVs, e.g.`--filter_snvs_expression "-e 'INFO/AQ>60'"` | 1 Example file for input with `--filter_variants_hgnc_ids`: ``` -#hgnc_id +hgnc_id 4865 14150 ``` -To pass filters to bcftools view, use `--filter_snvs_expression` and `--filter_svs_expression`. E.g `--filter_snvs_expression "-e 'INFO/AQ>60'"`. - Filtering of variants only happens if any of these three parameters is active. ## Other highlighted parameters - Limit SNV calling to regions in BED file (`--target_bed`). -- By default SNV-calling is split into 13 parallel processes, this speeds up the variant calling significantly. Limit this by setting `--snv_calling_processes` to a different number. -- By default the pipeline splits the input files into eight pieces, performs parallel alignment and then merges the files. This can be changed to a different number with `--alignment_processes`, or turned off by supplying a value of 1. Parallel alignment comes with some additional overhead, but can speed up the pipeline significantly. +- By default SNV-calling is split into 13 parallel processes, this speeds up the variant calling significantly. Change this by setting `--snv_calling_processes` to a different number. +- By default the pipeline splits the input files into 8 pieces, performs parallel alignment and then merges the files. This can be changed to a different number with `--alignment_processes`, or turned off by supplying a value of 1. Parallel alignment comes with some additional overhead, but can speed up the pipeline significantly. ## Reproducibility @@ -454,23 +447,4 @@ The pipeline and container images can be downloaded using `nf-core download`, e. nf-core download genomic-medicine-sweden/nallo -r 0.3.2 ``` -### Download references - -When running offline, you will have to make all the reference data available locally. The test profile will not be able to fetch data automatically. - -### Download plugins - -[This](https://nf-co.re/docs/usage/offline#nextflow) section from the nf-core docs should be followed to download and transfer nextflow plugins from a computer connected to the internet to the offline environment. - -It is necessary to use an explicit version of `nf-validation` offline, or Nextflow will check for the most recent version online. - -Find the version of nf-validation you downloaded in `$HOME/.nextflow/plugins`, then specify this version for `nf-validation` in your configuration file: - -``` -plugins { - // Set the plugin version explicitly, otherwise nextflow will look for the newest version online. - id 'nf-schema@2.2.0' -} -``` - -This should go in your Nextflow configuration file, specified with `-c ` when running the pipeline. +The [offline section](https://nf-co.re/docs/usage/offline#nextflow) from the nf-core docs should be followed for more information about offline usage. From f172c0dcd436a20ca53c4c70944b7f8fc10ac472 Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Wed, 20 Nov 2024 11:39:14 +0100 Subject: [PATCH 069/106] Set ch_hgnc_ids default value (#507) * Update nallo.nf * changelog --- CHANGELOG.md | 1 + workflows/nallo.nf | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 142e9291..68dfc36f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -95,6 +95,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#502](https://github.com/genomic-medicine-sweden/nallo/pull/502) - Changed output documentation and structure to match `sample` and `family` for all variants - [#502](https://github.com/genomic-medicine-sweden/nallo/pull/502) - Changed the way of validating the samplesheet to remove outputing false errors with `ifEmpty` - [#506](https://github.com/genomic-medicine-sweden/nallo/pull/506) - Updated documentation +- [#507](https://github.com/genomic-medicine-sweden/nallo/pull/507) - Changed the default value of `ch_hgnc_ids` to allow running without `--filter_variants_hgnc_ids` introduced in [#496](https://github.com/genomic-medicine-sweden/nallo/pull/443) ### `Removed` diff --git a/workflows/nallo.nf b/workflows/nallo.nf index cc355876..799789ab 100644 --- a/workflows/nallo.nf +++ b/workflows/nallo.nf @@ -101,7 +101,7 @@ workflow NALLO { // Channels from (optional) input samplesheets validated by schema ch_databases = createReferenceChannelFromSamplesheet(params.echtvar_snv_databases, 'assets/schema_snp_db.json') ch_vep_plugin_files = createReferenceChannelFromSamplesheet(params.vep_plugin_files, 'assets/schema_vep_plugin_files.json', Channel.value([])) - ch_hgnc_ids = createReferenceChannelFromSamplesheet(params.filter_variants_hgnc_ids, 'assets/schema_hgnc_ids.json') + ch_hgnc_ids = createReferenceChannelFromSamplesheet(params.filter_variants_hgnc_ids, 'assets/schema_hgnc_ids.json', Channel.value([])) .map { it[0].toString() } // only one element per row .collectFile(name: 'hgnc_ids.txt', newLine: true, sort: true) .map { file -> [ [ id: 'hgnc_ids' ], file ] } From 43c16aec7267b1844c6ec8741903d254cbd12214 Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Wed, 20 Nov 2024 14:22:41 +0100 Subject: [PATCH 070/106] Update output.md (#509) --- CHANGELOG.md | 1 + docs/output.md | 16 ++++++++-------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 68dfc36f..adb7e7e8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -96,6 +96,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#502](https://github.com/genomic-medicine-sweden/nallo/pull/502) - Changed the way of validating the samplesheet to remove outputing false errors with `ifEmpty` - [#506](https://github.com/genomic-medicine-sweden/nallo/pull/506) - Updated documentation - [#507](https://github.com/genomic-medicine-sweden/nallo/pull/507) - Changed the default value of `ch_hgnc_ids` to allow running without `--filter_variants_hgnc_ids` introduced in [#496](https://github.com/genomic-medicine-sweden/nallo/pull/443) +- [#509](https://github.com/genomic-medicine-sweden/nallo/pull/509) - Updated documentation to fix mistakes ### `Removed` diff --git a/docs/output.md b/docs/output.md index 0735e06f..9e18a1f2 100644 --- a/docs/output.md +++ b/docs/output.md @@ -142,13 +142,13 @@ In general, annotated variant calls are output per family while unannotated call [Paraphase](https://github.com/PacificBiosciences/paraphase) is used to call paralogous genes. -| Path | Description | -| -------------------------------------------------------------------- | ----------------------------------------- | -| `paraphase/{sample}/*.bam` | BAM file with reads from analysed regions | -| `paraphase/{sample}/*.bai` | Index of the BAM file | -| `paraphase/{sample}/*.json` | Summary of haplotypes and variant calls | -| `paraphase/{sample}/{sample}_paraphase_vcfs/{sample}_{gene}_vcf` | VCF file per gene | -| `paraphase/{sample}/{sample}_paraphase_vcfs/{sample}_{gene}_vcf.tbi` | Index of the VCF file | +| Path | Description | +| ----------------------------------------------------------------------- | ----------------------------------------- | +| `paraphase/{sample}/*.bam` | BAM file with reads from analysed regions | +| `paraphase/{sample}/*.bai` | Index of the BAM file | +| `paraphase/{sample}/*.json` | Summary of haplotypes and variant calls | +| `paraphase/{sample}/{sample}_paraphase_vcfs/{sample}_{gene}_vcf.gz` | VCF file per gene | +| `paraphase/{sample}/{sample}_paraphase_vcfs/{sample}_{gene}_vcf.gz.tbi` | Index of the VCF file | ### Repeats @@ -222,7 +222,7 @@ In general, annotated variant calls are output per family while unannotated call [Severus](https://github.com/KolmogorovLab/Severus) or [Sniffles](https://github.com/fritzsedlazeck/Sniffles) are used to call structural variants, while [HiFiCNV](https://github.com/PacificBiosciences/HiFiCNV) is used to call CNVs. HiFiCNV also produces copy number, depth, and MAF [visualization tracks](#visualization-tracks). -!!!info "Variant :white_check_markemerging strategies" +!!!info "Variant merging strategies" SV and CNV calls are output unmerged per sample, while the family files are first merged between samples for SVs and CNVs separately, then the merged SV and CNV files are merged again, with priority given to coordinates from the SV calls. From 07df8fe0b08601045c75fb8d4619d9fd3cc81620 Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Fri, 22 Nov 2024 13:20:42 +0100 Subject: [PATCH 071/106] Fix broken link in README.md (#513) * Update README.md * Update CHANGELOG.md --- CHANGELOG.md | 1 + README.md | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index adb7e7e8..065d2c79 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -97,6 +97,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#506](https://github.com/genomic-medicine-sweden/nallo/pull/506) - Updated documentation - [#507](https://github.com/genomic-medicine-sweden/nallo/pull/507) - Changed the default value of `ch_hgnc_ids` to allow running without `--filter_variants_hgnc_ids` introduced in [#496](https://github.com/genomic-medicine-sweden/nallo/pull/443) - [#509](https://github.com/genomic-medicine-sweden/nallo/pull/509) - Updated documentation to fix mistakes +- [#513](https://github.com/genomic-medicine-sweden/nallo/pull/513) - Updated CITATIONS.md link in README ### `Removed` diff --git a/README.md b/README.md index 541fd71f..846815e0 100644 --- a/README.md +++ b/README.md @@ -104,4 +104,4 @@ This pipeline uses code and infrastructure developed and maintained by the [nf-c > > _Nat Biotechnol._ 2020 Feb 13. doi: [10.1038/s41587-020-0439-x](https://dx.doi.org/10.1038/s41587-020-0439-x). -An extensive list of references for the tools used by the pipeline can be found in the [`docs/CITATIONS.md`](CITATIONS.md) file. +An extensive list of references for the tools used by the pipeline can be found in the [`docs/CITATIONS.md`](docs/CITATIONS.md) file. From 1e5a25bfaab9914c264c4fd90713b050616f15ca Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Fri, 22 Nov 2024 13:53:42 +0100 Subject: [PATCH 072/106] Change missed `single_sample` and `multi_sample` output directories (#512) * Change missed output directory to * Change missed multi_sample output directory to family * snv to snvs * docs --- CHANGELOG.md | 2 + conf/modules/call_cnvs.config | 2 +- conf/modules/filter_variants.config | 2 +- conf/modules/general.config | 2 +- docs/output.md | 24 +++++----- tests/samplesheet.nf.test.snap | 28 +++++------- .../samplesheet_multisample_bam.nf.test.snap | 43 ++++++++---------- ...mplesheet_multisample_ont_bam.nf.test.snap | 45 +++++++++---------- 8 files changed, 68 insertions(+), 80 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 065d2c79..f1aa6311 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -97,6 +97,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#506](https://github.com/genomic-medicine-sweden/nallo/pull/506) - Updated documentation - [#507](https://github.com/genomic-medicine-sweden/nallo/pull/507) - Changed the default value of `ch_hgnc_ids` to allow running without `--filter_variants_hgnc_ids` introduced in [#496](https://github.com/genomic-medicine-sweden/nallo/pull/443) - [#509](https://github.com/genomic-medicine-sweden/nallo/pull/509) - Updated documentation to fix mistakes +- [#512](https://github.com/genomic-medicine-sweden/nallo/pull/512) - Changed one `single_sample` to `sample` and one `multi_sample` to `family` output directories missed in [#502](https://github.com/genomic-medicine-sweden/nallo/pull/502) +- [#512](https://github.com/genomic-medicine-sweden/nallo/pull/512) - Changed all `*_snv_*` to `*_snvs_*` for published output files to match `snvs`, `cnvs`, `svs` and `repeats`. - [#513](https://github.com/genomic-medicine-sweden/nallo/pull/513) - Updated CITATIONS.md link in README ### `Removed` diff --git a/conf/modules/call_cnvs.config b/conf/modules/call_cnvs.config index 97044241..9256907a 100644 --- a/conf/modules/call_cnvs.config +++ b/conf/modules/call_cnvs.config @@ -42,7 +42,7 @@ process { '--no-version' ].join(' ') publishDir = [ - path: { "${params.outdir}/svs/single_sample/${meta.id}" }, + path: { "${params.outdir}/svs/sample/${meta.id}" }, mode: params.publish_dir_mode, saveAs: { filename -> filename.equals('versions.yml') ? null : filename } ] diff --git a/conf/modules/filter_variants.config b/conf/modules/filter_variants.config index b709aa59..be030953 100644 --- a/conf/modules/filter_variants.config +++ b/conf/modules/filter_variants.config @@ -46,7 +46,7 @@ process { "${params.filter_snvs_expression}" ].join(" ") } publishDir = [ - path: { "${params.outdir}/snvs/multi_sample/${meta.id}" }, + path: { "${params.outdir}/snvs/family/${meta.id}" }, mode: params.publish_dir_mode, saveAs: { filename -> filename.equals('versions.yml') ? null : filename } ] diff --git a/conf/modules/general.config b/conf/modules/general.config index 516fb73d..932345db 100644 --- a/conf/modules/general.config +++ b/conf/modules/general.config @@ -75,7 +75,7 @@ process { def sample = matcher[0][1] def extension = matcher[0][2] def annotated = params.skip_snv_annotation ? "" : (params.skip_rank_variants ? "_annotated" : "_annotated_ranked" ) - "${sample}/${sample}_snv${annotated}${extension}" + "${sample}/${sample}_snvs${annotated}${extension}" } } ] diff --git a/docs/output.md b/docs/output.md index 9e18a1f2..f8450ee2 100644 --- a/docs/output.md +++ b/docs/output.md @@ -187,23 +187,23 @@ In general, annotated variant calls are output per family while unannotated call [Echtvar](https://github.com/brentp/echtvar) and [VEP](https://www.ensembl.org/vep) are used for annotating SNVs, while [CADD](https://cadd.gs.washington.edu/) is used to annotate INDELs with CADD scores. -| Path | Description | Call SNVs | Call & annotate SNVs | Call, annotate and rank SNVs | -| -------------------------------------------------------- | ------------------------------------------------------------------------------ | --------- | -------------------- | ---------------------------- | -| `snvs/sample/{sample}/{sample}_snv_annotated.vcf.gz` | VCF file containing annotated variants with alternative genotypes for a sample | | :white_check_mark: | | -| `snvs/sample/{sample}/{sample}_snv_annotated.vcf.gz.tbi` | Index of the annotated VCF file | | :white_check_mark: | | -| `snvs/family/{family}/{family}_snv_annotated.vcf.gz` | VCF file containing annotated variants per family | | :white_check_mark: | | -| `snvs/family/{family}/{family}_snv_annotated.vcf.gz.tbi` | Index of the annotated VCF file | | :white_check_mark: | | +| Path | Description | Call SNVs | Call & annotate SNVs | Call, annotate and rank SNVs | +| --------------------------------------------------------- | ------------------------------------------------------------------------------ | --------- | -------------------- | ---------------------------- | +| `snvs/sample/{sample}/{sample}_snvs_annotated.vcf.gz` | VCF file containing annotated variants with alternative genotypes for a sample | | :white_check_mark: | | +| `snvs/sample/{sample}/{sample}_snvs_annotated.vcf.gz.tbi` | Index of the annotated VCF file | | :white_check_mark: | | +| `snvs/family/{family}/{family}_snvs_annotated.vcf.gz` | VCF file containing annotated variants per family | | :white_check_mark: | | +| `snvs/family/{family}/{family}_snvs_annotated.vcf.gz.tbi` | Index of the annotated VCF file | | :white_check_mark: | | #### Ranking [GENMOD](https://github.com/Clinical-Genomics/genmod) is used to rank the annotated SNVs and INDELs. -| Path | Description | Call SNVs | Call & annotate SNVs | Call, annotate and rank SNVs | -| --------------------------------------------------------------- | -------------------------------------------------------- | --------- | -------------------- | ---------------------------- | -| `snvs/sample/{sample}/{sample}_snv_annotated_ranked.vcf.gz` | VCF file with annotated and ranked variants for a sample | | :white_check_mark: | -| `snvs/sample/{sample}/{sample}_snv_annotated_ranked.vcf.gz.tbi` | Index of the ranked VCF file | | :white_check_mark: | -| `snvs/family/{family}/{family}_snv_annotated_ranked.vcf.gz` | VCF file with annotated and ranked variants per family | | | :white_check_mark: | -| `snvs/family/{family}/{family}_snv_annotated_ranked.vcf.gz.tbi` | Index of the ranked VCF file | | | :white_check_mark: | +| Path | Description | Call SNVs | Call & annotate SNVs | Call, annotate and rank SNVs | +| ---------------------------------------------------------------- | -------------------------------------------------------- | --------- | -------------------- | ---------------------------- | +| `snvs/sample/{sample}/{sample}_snvs_annotated_ranked.vcf.gz` | VCF file with annotated and ranked variants for a sample | | :white_check_mark: | +| `snvs/sample/{sample}/{sample}_snvs_annotated_ranked.vcf.gz.tbi` | Index of the ranked VCF file | | :white_check_mark: | +| `snvs/family/{family}/{family}_snvs_annotated_ranked.vcf.gz` | VCF file with annotated and ranked variants per family | | | :white_check_mark: | +| `snvs/family/{family}/{family}_snvs_annotated_ranked.vcf.gz.tbi` | Index of the ranked VCF file | | | :white_check_mark: | #### Filtering diff --git a/tests/samplesheet.nf.test.snap b/tests/samplesheet.nf.test.snap index dfe4afe1..ed3341c3 100644 --- a/tests/samplesheet.nf.test.snap +++ b/tests/samplesheet.nf.test.snap @@ -477,14 +477,12 @@ "snvs/family/FAM", "snvs/family/FAM/FAM_snv_annotated_ranked.vcf.gz", "snvs/family/FAM/FAM_snv_annotated_ranked.vcf.gz.tbi", - "snvs/multi_sample", - "snvs/multi_sample/FAM", - "snvs/multi_sample/FAM/FAM_snvs_annotated_ranked_filtered.vcf.gz", - "snvs/multi_sample/FAM/FAM_snvs_annotated_ranked_filtered.vcf.gz.tbi", + "snvs/family/FAM/FAM_snvs_annotated_ranked_filtered.vcf.gz", + "snvs/family/FAM/FAM_snvs_annotated_ranked_filtered.vcf.gz.tbi", "snvs/sample", "snvs/sample/HG002_Revio", - "snvs/sample/HG002_Revio/HG002_Revio_snv_annotated_ranked.vcf.gz", - "snvs/sample/HG002_Revio/HG002_Revio_snv_annotated_ranked.vcf.gz.tbi", + "snvs/sample/HG002_Revio/HG002_Revio_snvs_annotated_ranked.vcf.gz", + "snvs/sample/HG002_Revio/HG002_Revio_snvs_annotated_ranked.vcf.gz.tbi", "snvs/stats", "snvs/stats/sample", "snvs/stats/sample/HG002_Revio.vcf.gz.bcftools_stats.txt", @@ -497,12 +495,10 @@ "svs/family/FAM/FAM_svs_cnvs_merged_annotated_ranked_filtered.vcf.gz.tbi", "svs/sample", "svs/sample/HG002_Revio", + "svs/sample/HG002_Revio/HG002_Revio_cnvs.vcf.gz", + "svs/sample/HG002_Revio/HG002_Revio_cnvs.vcf.gz.tbi", "svs/sample/HG002_Revio/HG002_Revio_svs.vcf.gz", "svs/sample/HG002_Revio/HG002_Revio_svs.vcf.gz.tbi", - "svs/single_sample", - "svs/single_sample/HG002_Revio", - "svs/single_sample/HG002_Revio/HG002_Revio_cnvs.vcf.gz", - "svs/single_sample/HG002_Revio/HG002_Revio_cnvs.vcf.gz.tbi", "visualization_tracks", "visualization_tracks/HG002_Revio", "visualization_tracks/HG002_Revio/HG002_Revio_hificnv.copynum.bedgraph", @@ -631,7 +627,7 @@ "VcfFile [chromosomes=[chr16], sampleCount=1, variantCount=54, phased=false, phasedAutodetect=false]" ], [ - "HG002_Revio_snv_annotated_ranked.vcf.gz", + "HG002_Revio_snvs_annotated_ranked.vcf.gz", "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=100, phased=false, phasedAutodetect=false]" ], [ @@ -642,13 +638,13 @@ "FAM_svs_cnvs_merged_annotated_ranked_filtered.vcf.gz", "VcfFile [chromosomes=[chr16], sampleCount=1, variantCount=5, phased=false, phasedAutodetect=false]" ], - [ - "HG002_Revio_svs.vcf.gz", - "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=55, phased=false, phasedAutodetect=false]" - ], [ "HG002_Revio_cnvs.vcf.gz", "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=36, phased=false, phasedAutodetect=false]" + ], + [ + "HG002_Revio_svs.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=55, phased=false, phasedAutodetect=false]" ] ], [ @@ -674,6 +670,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-11-18T08:53:15.024737825" + "timestamp": "2024-11-22T11:48:49.364619961" } } \ No newline at end of file diff --git a/tests/samplesheet_multisample_bam.nf.test.snap b/tests/samplesheet_multisample_bam.nf.test.snap index e2eb81ef..20d29438 100644 --- a/tests/samplesheet_multisample_bam.nf.test.snap +++ b/tests/samplesheet_multisample_bam.nf.test.snap @@ -555,17 +555,15 @@ "snvs/family/FAM", "snvs/family/FAM/FAM_snv_annotated_ranked.vcf.gz", "snvs/family/FAM/FAM_snv_annotated_ranked.vcf.gz.tbi", - "snvs/multi_sample", - "snvs/multi_sample/FAM", - "snvs/multi_sample/FAM/FAM_snvs_annotated_ranked_filtered.vcf.gz", - "snvs/multi_sample/FAM/FAM_snvs_annotated_ranked_filtered.vcf.gz.tbi", + "snvs/family/FAM/FAM_snvs_annotated_ranked_filtered.vcf.gz", + "snvs/family/FAM/FAM_snvs_annotated_ranked_filtered.vcf.gz.tbi", "snvs/sample", "snvs/sample/HG002_Revio_A", - "snvs/sample/HG002_Revio_A/HG002_Revio_A_snv_annotated_ranked.vcf.gz", - "snvs/sample/HG002_Revio_A/HG002_Revio_A_snv_annotated_ranked.vcf.gz.tbi", + "snvs/sample/HG002_Revio_A/HG002_Revio_A_snvs_annotated_ranked.vcf.gz", + "snvs/sample/HG002_Revio_A/HG002_Revio_A_snvs_annotated_ranked.vcf.gz.tbi", "snvs/sample/HG002_Revio_B", - "snvs/sample/HG002_Revio_B/HG002_Revio_B_snv_annotated_ranked.vcf.gz", - "snvs/sample/HG002_Revio_B/HG002_Revio_B_snv_annotated_ranked.vcf.gz.tbi", + "snvs/sample/HG002_Revio_B/HG002_Revio_B_snvs_annotated_ranked.vcf.gz", + "snvs/sample/HG002_Revio_B/HG002_Revio_B_snvs_annotated_ranked.vcf.gz.tbi", "snvs/stats", "snvs/stats/sample", "snvs/stats/sample/HG002_Revio_A.vcf.gz.bcftools_stats.txt", @@ -579,18 +577,15 @@ "svs/family/FAM/FAM_svs_cnvs_merged_annotated_ranked_filtered.vcf.gz.tbi", "svs/sample", "svs/sample/HG002_Revio_A", + "svs/sample/HG002_Revio_A/HG002_Revio_A_cnvs.vcf.gz", + "svs/sample/HG002_Revio_A/HG002_Revio_A_cnvs.vcf.gz.tbi", "svs/sample/HG002_Revio_A/HG002_Revio_A_svs.vcf.gz", "svs/sample/HG002_Revio_A/HG002_Revio_A_svs.vcf.gz.tbi", "svs/sample/HG002_Revio_B", + "svs/sample/HG002_Revio_B/HG002_Revio_B_cnvs.vcf.gz", + "svs/sample/HG002_Revio_B/HG002_Revio_B_cnvs.vcf.gz.tbi", "svs/sample/HG002_Revio_B/HG002_Revio_B_svs.vcf.gz", "svs/sample/HG002_Revio_B/HG002_Revio_B_svs.vcf.gz.tbi", - "svs/single_sample", - "svs/single_sample/HG002_Revio_A", - "svs/single_sample/HG002_Revio_A/HG002_Revio_A_cnvs.vcf.gz", - "svs/single_sample/HG002_Revio_A/HG002_Revio_A_cnvs.vcf.gz.tbi", - "svs/single_sample/HG002_Revio_B", - "svs/single_sample/HG002_Revio_B/HG002_Revio_B_cnvs.vcf.gz", - "svs/single_sample/HG002_Revio_B/HG002_Revio_B_cnvs.vcf.gz.tbi", "visualization_tracks", "visualization_tracks/HG002_Revio_A", "visualization_tracks/HG002_Revio_A/HG002_Revio_A_hificnv.copynum.bedgraph", @@ -807,11 +802,11 @@ "VcfFile [chromosomes=[chr16], sampleCount=2, variantCount=55, phased=false, phasedAutodetect=false]" ], [ - "HG002_Revio_A_snv_annotated_ranked.vcf.gz", + "HG002_Revio_A_snvs_annotated_ranked.vcf.gz", "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=100, phased=false, phasedAutodetect=false]" ], [ - "HG002_Revio_B_snv_annotated_ranked.vcf.gz", + "HG002_Revio_B_snvs_annotated_ranked.vcf.gz", "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=100, phased=false, phasedAutodetect=false]" ], [ @@ -823,20 +818,20 @@ "VcfFile [chromosomes=[chr16], sampleCount=2, variantCount=5, phased=false, phasedAutodetect=false]" ], [ - "HG002_Revio_A_svs.vcf.gz", - "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=55, phased=false, phasedAutodetect=false]" + "HG002_Revio_A_cnvs.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=36, phased=false, phasedAutodetect=false]" ], [ - "HG002_Revio_B_svs.vcf.gz", + "HG002_Revio_A_svs.vcf.gz", "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=55, phased=false, phasedAutodetect=false]" ], [ - "HG002_Revio_A_cnvs.vcf.gz", + "HG002_Revio_B_cnvs.vcf.gz", "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=36, phased=false, phasedAutodetect=false]" ], [ - "HG002_Revio_B_cnvs.vcf.gz", - "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=36, phased=false, phasedAutodetect=false]" + "HG002_Revio_B_svs.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=55, phased=false, phasedAutodetect=false]" ] ], [ @@ -874,6 +869,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-11-18T08:55:12.484845801" + "timestamp": "2024-11-22T11:48:57.369487572" } } \ No newline at end of file diff --git a/tests/samplesheet_multisample_ont_bam.nf.test.snap b/tests/samplesheet_multisample_ont_bam.nf.test.snap index 85446506..c3bfc566 100644 --- a/tests/samplesheet_multisample_ont_bam.nf.test.snap +++ b/tests/samplesheet_multisample_ont_bam.nf.test.snap @@ -447,17 +447,15 @@ "snvs/family/FAM", "snvs/family/FAM/FAM_snv_annotated_ranked.vcf.gz", "snvs/family/FAM/FAM_snv_annotated_ranked.vcf.gz.tbi", - "snvs/multi_sample", - "snvs/multi_sample/FAM", - "snvs/multi_sample/FAM/FAM_snvs_annotated_ranked_filtered.vcf.gz", - "snvs/multi_sample/FAM/FAM_snvs_annotated_ranked_filtered.vcf.gz.tbi", + "snvs/family/FAM/FAM_snvs_annotated_ranked_filtered.vcf.gz", + "snvs/family/FAM/FAM_snvs_annotated_ranked_filtered.vcf.gz.tbi", "snvs/sample", "snvs/sample/HG002_ONT_A", - "snvs/sample/HG002_ONT_A/HG002_ONT_A_snv_annotated_ranked.vcf.gz", - "snvs/sample/HG002_ONT_A/HG002_ONT_A_snv_annotated_ranked.vcf.gz.tbi", + "snvs/sample/HG002_ONT_A/HG002_ONT_A_snvs_annotated_ranked.vcf.gz", + "snvs/sample/HG002_ONT_A/HG002_ONT_A_snvs_annotated_ranked.vcf.gz.tbi", "snvs/sample/HG002_ONT_B", - "snvs/sample/HG002_ONT_B/HG002_ONT_B_snv_annotated_ranked.vcf.gz", - "snvs/sample/HG002_ONT_B/HG002_ONT_B_snv_annotated_ranked.vcf.gz.tbi", + "snvs/sample/HG002_ONT_B/HG002_ONT_B_snvs_annotated_ranked.vcf.gz", + "snvs/sample/HG002_ONT_B/HG002_ONT_B_snvs_annotated_ranked.vcf.gz.tbi", "snvs/stats", "snvs/stats/sample", "snvs/stats/sample/HG002_ONT_A.vcf.gz.bcftools_stats.txt", @@ -471,18 +469,15 @@ "svs/family/FAM/FAM_svs_cnvs_merged_annotated_ranked_filtered.vcf.gz.tbi", "svs/sample", "svs/sample/HG002_ONT_A", + "svs/sample/HG002_ONT_A/HG002_ONT_A_cnvs.vcf.gz", + "svs/sample/HG002_ONT_A/HG002_ONT_A_cnvs.vcf.gz.tbi", "svs/sample/HG002_ONT_A/HG002_ONT_A_svs.vcf.gz", "svs/sample/HG002_ONT_A/HG002_ONT_A_svs.vcf.gz.tbi", "svs/sample/HG002_ONT_B", + "svs/sample/HG002_ONT_B/HG002_ONT_B_cnvs.vcf.gz", + "svs/sample/HG002_ONT_B/HG002_ONT_B_cnvs.vcf.gz.tbi", "svs/sample/HG002_ONT_B/HG002_ONT_B_svs.vcf.gz", "svs/sample/HG002_ONT_B/HG002_ONT_B_svs.vcf.gz.tbi", - "svs/single_sample", - "svs/single_sample/HG002_ONT_A", - "svs/single_sample/HG002_ONT_A/HG002_ONT_A_cnvs.vcf.gz", - "svs/single_sample/HG002_ONT_A/HG002_ONT_A_cnvs.vcf.gz.tbi", - "svs/single_sample/HG002_ONT_B", - "svs/single_sample/HG002_ONT_B/HG002_ONT_B_cnvs.vcf.gz", - "svs/single_sample/HG002_ONT_B/HG002_ONT_B_cnvs.vcf.gz.tbi", "visualization_tracks", "visualization_tracks/HG002_ONT_A", "visualization_tracks/HG002_ONT_A/HG002_ONT_A_hificnv.copynum.bedgraph", @@ -603,11 +598,11 @@ "VcfFile [chromosomes=[chr16], sampleCount=2, variantCount=56, phased=false, phasedAutodetect=false]" ], [ - "HG002_ONT_A_snv_annotated_ranked.vcf.gz", + "HG002_ONT_A_snvs_annotated_ranked.vcf.gz", "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=99, phased=false, phasedAutodetect=false]" ], [ - "HG002_ONT_B_snv_annotated_ranked.vcf.gz", + "HG002_ONT_B_snvs_annotated_ranked.vcf.gz", "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=99, phased=false, phasedAutodetect=false]" ], [ @@ -619,20 +614,20 @@ "VcfFile [chromosomes=[chr16], sampleCount=2, variantCount=6, phased=false, phasedAutodetect=false]" ], [ - "HG002_ONT_A_svs.vcf.gz", - "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=68, phased=false, phasedAutodetect=false]" + "HG002_ONT_A_cnvs.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=30, phased=false, phasedAutodetect=false]" ], [ - "HG002_ONT_B_svs.vcf.gz", + "HG002_ONT_A_svs.vcf.gz", "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=68, phased=false, phasedAutodetect=false]" ], - [ - "HG002_ONT_A_cnvs.vcf.gz", - "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=30, phased=false, phasedAutodetect=false]" - ], [ "HG002_ONT_B_cnvs.vcf.gz", "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=31, phased=false, phasedAutodetect=false]" + ], + [ + "HG002_ONT_B_svs.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=68, phased=false, phasedAutodetect=false]" ] ], [ @@ -643,6 +638,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-11-18T08:57:05.873919937" + "timestamp": "2024-11-22T11:48:58.903274383" } } \ No newline at end of file From aae65d773ca0790ac56026ba43d005ee8b1db6cd Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Fri, 22 Nov 2024 14:09:08 +0100 Subject: [PATCH 073/106] Dynamically build methods description from ch_versions (#510) * Dynamically build methods description from ch_versions * Update CONTRIBUTING.md --- .github/CONTRIBUTING.md | 3 +- CHANGELOG.md | 1 + assets/methods_description_template.yml | 11 +- assets/software_references.yml | 139 +++++++++++ modules/local/add_found_in_tag/main.nf | 4 +- .../local/call_svs/tests/main.nf.test.snap | 84 +++---- .../tests/main.nf.test.snap | 144 ++++++------ .../local/utils_nfcore_nallo_pipeline/main.nf | 218 ++++-------------- tests/samplesheet.nf.test.snap | 2 +- .../samplesheet_multisample_bam.nf.test.snap | 2 +- ...mplesheet_multisample_ont_bam.nf.test.snap | 2 +- workflows/nallo.nf | 29 ++- 12 files changed, 339 insertions(+), 300 deletions(-) create mode 100644 assets/software_references.yml diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index de8f4598..98343750 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -73,7 +73,8 @@ If you wish to contribute a new step, please use the following coding standards: 7. Perform local tests to validate that the new code works as expected. 8. If applicable, add a new test command in `.github/workflow/ci.yml`. 9. Update MultiQC config `assets/multiqc_config.yml` so relevant suffixes, file name clean up and module plots are in the appropriate order. If applicable, add a [MultiQC](https://https://multiqc.info/) module. -10. Add a description of the output files and if relevant any appropriate images from the MultiQC report to `docs/output.md`. +10. Update the tool references `assets/software_references.yml`. +11. Add a description of the output files and if relevant any appropriate images from the MultiQC report to `docs/output.md`. ### Default values diff --git a/CHANGELOG.md b/CHANGELOG.md index f1aa6311..dda988c8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -97,6 +97,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#506](https://github.com/genomic-medicine-sweden/nallo/pull/506) - Updated documentation - [#507](https://github.com/genomic-medicine-sweden/nallo/pull/507) - Changed the default value of `ch_hgnc_ids` to allow running without `--filter_variants_hgnc_ids` introduced in [#496](https://github.com/genomic-medicine-sweden/nallo/pull/443) - [#509](https://github.com/genomic-medicine-sweden/nallo/pull/509) - Updated documentation to fix mistakes +- [#510](https://github.com/genomic-medicine-sweden/nallo/pull/510) - Changed the MultiQC methods description to update dynamically based on `ch_versions` - [#512](https://github.com/genomic-medicine-sweden/nallo/pull/512) - Changed one `single_sample` to `sample` and one `multi_sample` to `family` output directories missed in [#502](https://github.com/genomic-medicine-sweden/nallo/pull/502) - [#512](https://github.com/genomic-medicine-sweden/nallo/pull/512) - Changed all `*_snv_*` to `*_snvs_*` for published output files to match `snvs`, `cnvs`, `svs` and `repeats`. - [#513](https://github.com/genomic-medicine-sweden/nallo/pull/513) - Updated CITATIONS.md link in README diff --git a/assets/methods_description_template.yml b/assets/methods_description_template.yml index 8c9c1c1b..d8195c2e 100644 --- a/assets/methods_description_template.yml +++ b/assets/methods_description_template.yml @@ -5,5 +5,14 @@ section_href: "https://github.com/genomic-medicine-sweden/nallo" plot_type: "html" data: |

    Methods

    -
    +

    Data was processed using genomic-medicine-sweden/nallo v${workflow.manifest.version} ${doi_text} which uses uses code and infrastructure developed and maintained by the nf-core community, reused here under the MIT licence (Ewels et al., 2020), utilising reproducible software environments from the Bioconda (Grüning et al., 2018) and Biocontainers (da Veiga Leprevost et al., 2017) projects.

    The pipeline was executed with Nextflow v${workflow.nextflow.version} (Di Tommaso et al., 2017) with the following command:

    +
    ${workflow.commandLine}
    +
    +
    Notes:
    +
      + ${nodoi_text} +
    • The command above does not include parameters contained in any configs or profiles that may have been used. Ensure the config file is also uploaded with your publication!
    • +
    • You should also cite all software used within this run. Check the "Software Versions" of this report to get version information.
    • +
    +
    diff --git a/assets/software_references.yml b/assets/software_references.yml new file mode 100644 index 00000000..f5048133 --- /dev/null +++ b/assets/software_references.yml @@ -0,0 +1,139 @@ +tool: + nextflow: + citation: "" + bibliography: 'Di Tommaso, P., Chatzou, M., Floden, E. W., Barja, P. P., Palumbo, E., & Notredame, C. (2017). Nextflow enables reproducible computational workflows. Nature Biotechnology, 35(4), 316-319. doi: 10.1038/nbt.3820' + nf_core: + citation: "" + bibliography: 'Di Tommaso, P., Chatzou, M., Floden, E. W., Barja, P. P., Palumbo, E., & Notredame, C. (2017). Nextflow enables reproducible computational workflows. Nature Biotechnology, 35(4), 316-319. doi: 10.1038/nbt.3820' + bioconda: + citation: "" + bibliography: 'Grüning, B., Dale, R., Sjödin, A., Chapman, B. A., Rowe, J., Tomkins-Tinch, C. H., Valieris, R., Köster, J., & Bioconda Team. (2018). Bioconda: sustainable and comprehensive software distribution for the life sciences. Nature Methods, 15(7), 475–476. doi: 10.1038/s41592-018-0046-7' + biocontainers: + citation: "" + bibliography: 'da Veiga Leprevost, F., Grüning, B. A., Alves Aflitos, S., Röst, H. L., Uszkoreit, J., Barsnes, H., Vaudel, M., Moreno, P., Gatto, L., Weber, J., Bai, M., Jimenez, R. C., Sachsenberg, T., Pfeuffer, J., Vera Alvarez, R., Griss, J., Nesvizhskii, A. I., & Perez-Riverol, Y. (2017). BioContainers: an open-source and community-driven framework for software standardization. Bioinformatics (Oxford, England), 33(16), 2580–2582. doi: 10.1093/bioinformatics/btx192' + multiqc: + citation: "MultiQC (Ewels et al. 2016)" + bibliography: "Ewels P, Magnusson M, Lundin S, Käller M. MultiQC: summarize analysis results for multiple tools and samples in a single report. Bioinformatics. 2016 Oct 1;32(19):3047-8. doi: 10.1093/bioinformatics/btw354. Epub 2016 Jun 16. PMID: 27312411; PMCID: PMC5039924." + add_most_severe_consequence: + citation: "add_most_severe_consequence (Neethiraj 2022)" + bibliography: "" + add_most_severe_pli: + citation: "add_most_severe_pli (Neethiraj 2022)" + bibliography: "" + bcftools: + citation: "BCFtools (Danecek et al. 2021)" + bibliography: "Danecek P, Bonfield JK, Liddle J, et al. Twelve years of SAMtools and BCFtools. GigaScience. 2021;10(2):giab008. doi:10.1093/gigascience/giab008" + bedtools: + citation: "BEDTools (Quinlan & Hall 2010)" + bibliography: "Quinlan AR and Hall IM, 2010. BEDTools: a flexible suite of utilities for comparing genomic features. Bioinformatics. 26, 6, pp. 841–842." + bgzip: + citation: "bgzip" + bibliography: "" + busybox_awk: + citation: "BusyBox's awk" + bibliography: "" + cadd: + citation: "CADD (Rentzsch et al. 2019, Rentzsch et al. 2021)" + bibliography: "Rentzsch P, Schubach M, Shendure J, Kircher M. CADD-Splice—improving genome-wide variant effect prediction using deep learning-derived splice scores. Genome Med. 2021;13(1):31. doi:10.1186/s13073-021-00835-9" + cramino: + citation: "cramino (De Coster & Rademakers 2023)" + bibliography: "Wouter De Coster, Rosa Rademakers, NanoPack2: population-scale evaluation of long-read sequencing data, Bioinformatics, Volume 39, Issue 5, May 2023, btad311, https://doi.org/10.1093/bioinformatics/btad311" + create_pedigree_file: + citation: "create_pedigree_file" + bibliography: "" + deepvariant: + citation: "DeepVariant (Poplin et al. 2018)" + bibliography: "Poplin R, Chang PC, Alexander D, et al. A universal SNP and small-indel variant caller using deep neural networks. Nat Biotechnol. 2018;36(10):983-987. doi:10.1038/nbt.4235" + dipcall: + citation: "dipcall (Li et al. 2018)" + bibliography: "Li H, Bloom JM, Farjoun Y, Fleharty M, Gauthier L, Neale B, MacArthur D (2018) A synthetic-diploid benchmark for accurate variant-calling evaluation. Nat Methods, 15:595-597. [PMID:30013044]" + echtvar: + citation: "Echtvar (Pedersen & de Ridder 2023)" + bibliography: "Brent S Pedersen, Jeroen de Ridder, Echtvar: compressed variant representation for rapid annotation and filtering of SNPs and indels, Nucleic Acids Research, Volume 51, Issue 1, 11 January 2023, Page e3, https://doi.org/10.1093/nar/gkac931" + ensemblvep: + citation: "VEP (McLaren et al. 2016)" + bibliography: "McLaren W, Gil L, Hunt SE, et al. The Ensembl Variant Effect Predictor. Genome Biol. 2016;17(1):122. doi:10.1186/s13059-016-0974-4" + fastqc: + citation: "FastQC (Andrews 2010)" + bibliography: "Andrews S, (2010) FastQC, URL: https://www.bioinformatics.babraham.ac.uk/projects/fastqc/" + gawk: + citation: "gawk" + bibliography: "" + genmod: + citation: "Genmod (Magnusson et al. 2018)" + bibliography: "Magnusson M, Hughes T, Glabilloy, Bitdeli Chef. genmod: Version 3.7.3. Published online November 15, 2018. doi:10.5281/ZENODO.3841142" + gfastats: + citation: "Gfastats (Formenti et al. 2022)" + bibliography: "Giulio Formenti, Linelle Abueg, Angelo Brajuka, Nadolina Brajuka, Cristóbal Gallardo-Alba, Alice Giani, Olivier Fedrigo, Erich D Jarvis, Gfastats: conversion, evaluation and manipulation of genome sequences using assembly graphs, Bioinformatics, Volume 38, Issue 17, September 2022, Pages 4214–4216, https://doi.org/10.1093/bioinformatics/btac460" + glnexus: + citation: "GLnexus (Yun et al. 2021)" + bibliography: "Yun T, Li H, Chang PC, Lin MF, Carroll A, McLean CY. Accurate, scalable cohort variant calls using DeepVariant and GLnexus. Robinson P, ed. Bioinformatics. 2021;36(24):5582-5589. doi:10.1093/bioinformatics/btaa1081" + gunzip: + citation: "gunzip" + bibliography: "" + hifiasm: + citation: "Hifiasm (Cheng et al. 2021)" + bibliography: "Cheng, H., Concepcion, G.T., Feng, X. et al. Haplotype-resolved de novo assembly using phased assembly graphs with hifiasm. Nat Methods 18, 170–175 (2021). https://doi.org/10.1038/s41592-020-01056-5" + hificnv: + citation: "HiFiCNV" + bibliography: "" + hiphase: + citation: "HiPhase (Holt et al. 2024)" + bibliography: "James M Holt, Christopher T Saunders, William J Rowell, Zev Kronenberg, Aaron M Wenger, Michael Eberle, HiPhase: jointly phasing small, structural, and tandem repeat variants from HiFi sequencing, Bioinformatics, Volume 40, Issue 2, February 2024, btae042, https://doi.org/10.1093/bioinformatics/btae042" + longphase: + citation: "LongPhase (Lin et al. 2024)" + bibliography: "Jyun-Hong Lin, Liang-Chi Chen, Shu-Chi Yu, Yao-Ting Huang, LongPhase: an ultra-fast chromosome-scale phasing algorithm for small and large variants, Bioinformatics, Volume 38, Issue 7, March 2022, Pages 1816–1822, https://doi.org/10.1093/bioinformatics/btac058" + minimap2: + citation: "Minimap2 (Li 2018)" + bibliography: "Heng Li, Minimap2: pairwise alignment for nucleotide sequences, Bioinformatics, Volume 34, Issue 18, September 2018, Pages 3094–3100, https://doi.org/10.1093/bioinformatics/bty191" + modkit: + citation: "modkit" + bibliography: "" + mosdepth: + citation: "mosdepth (Pedersen & Quinlan 2018)" + bibliography: "Pedersen BS, Quinlan AR. Mosdepth: quick coverage calculation for genomes and exomes. Hancock J, ed. Bioinformatics. 2018;34(5):867-868. doi:10.1093/bioinformatics/btx699" + paraphase: + citation: "Paraphase (Chen et al. 2023)" + bibliography: "Genome-wide profiling of highly similar paralogous genes using HiFi sequencing. Xiao Chen, Daniel Baker, Egor Dolzhenko, Joseph M Devaney, Jessica Noya, April S Berlyoung, Rhonda Brandon, Kathleen S Hruska, Lucas Lochovsky, Paul Kruszka, Scott Newman, Emily Farrow, Isabelle Thiffault, Tomi Pastinen, Dalia Kasperaviciute, Christian Gilissen, Lisenka Vissers, Alexander Hoischen, Seth Berger, Eric Vilain, Emmanuèle Délot, UCI Genomics Research to Elucidate the Genetics of Rare Diseases (UCI GREGoR) Consortium, Michael A Eberle. bioRxiv 2024.04.19.590294; doi: https://doi.org/10.1101/2024.04.19.590294" + python: + citation: "Python (Van Rossum & Drake Jr 2009)" + bibliography: "" + samtools: + citation: "SAMtools (Danecek et al. 2021)" + bibliography: "Danecek P, Bonfield JK, Liddle J, et al. Twelve years of SAMtools and BCFtools. GigaScience. 2021;10(2):giab008. doi:10.1093/gigascience/giab008" + sniffles: + citation: "Sniffles2 (Smolka et al. 2024)" + bibliography: "Smolka, M., Paulin, L.F., Grochowski, C.M. et al. Detection of mosaic and population-level structural variants with Sniffles2. Nat Biotechnol (2024). https://doi.org/10.1038/s41587-023-02024-y" + severus: + citation: "Severus (Keskus et al. 2024)" + bibliography: "Ayse Keskus, Asher Bryant, Tanveer Ahmad, Byunggil Yoo, Sergey Aganezov, Anton Goretsky, Ataberk Donmez, Lisa A. Lansdon, Isabel Rodriguez, Jimin Park, Yuelin Liu, Xiwen Cui, Joshua Gardner, Brandy McNulty, Samuel Sacco, Jyoti Shetty, Yongmei Zhao, Bao Tran, Giuseppe Narzisi, Adrienne Helland, Daniel E. Cook, Pi-Chuan Chang, Alexey Kolesnikov, Andrew Carroll, Erin K. Molloy, Irina Pushel, Erin Guest, Tomi Pastinen, Kishwar Shafin, Karen H. Miga, Salem Malikic, Chi-Ping Day, Nicolas Robine, Cenk Sahinalp, Michael Dean, Midhat S. Farooqi, Benedict Paten, Mikhail Kolmogorov. Severus: accurate detection and characterization of somatic structural variation in tumor genomes using long reads. medRxiv 2024.03.22.24304756; doi: https://doi.org/10.1101/2024.03.22.24304756" + somalier: + citation: "Somalier (Pedersen et al. 2020)" + bibliography: "Pedersen, B.S., Bhetariya, P.J., Brown, J. et al. Somalier: rapid relatedness estimation for cancer and germline studies using efficient genome sketches. Genome Med 12, 62 (2020). https://doi.org/10.1186/s13073-020-00761-2" + split_bed_chunks: + citation: "split_bed_chunks" + bibliography: "" + splitubam: + citation: "splitubam" + bibliography: "" + stranger: + citation: "Stranger (Nilsson & Magnusson 2021)" + bibliography: "Nilsson D, Magnusson M. moonso/stranger v0.7.1. Published online February 18, 2021. doi:10.5281/ZENODO.4548873" + svdb: + citation: "SVDB (Eisfeldt et al. 2017)" + bibliography: "" + tabix: + citation: "Tabix (Li 2011)" + bibliography: "Li H. Tabix: fast retrieval of sequence features from generic TAB-delimited files. Bioinformatics. 2011;27(5):718-719. doi:10.1093/bioinformatics/btq671" + trgt: + citation: "TRGT (Dolzhenko et al. 2024)" + bibliography: "Dolzhenko, E., English, A., Dashnow, H. et al. Characterization and visualization of tandem repeats at genome scale. Nat Biotechnol (2024). https://doi.org/10.1038/s41587-023-02057-3" + untar: + citation: "untar" + bibliography: "" + yak: + citation: "yak" + bibliography: "" + whatshap: + citation: "WhatsHap (Martin et al. 2016)" + bibliography: "Marcel Martin, Murray Patterson, Shilpa Garg, Sarah O Fischer, Nadia Pisanti, Gunnar W Klau, Alexander Schöenhuth, Tobias Marschall. bioRxiv 085050; doi: https://doi.org/10.1101/085050" diff --git a/modules/local/add_found_in_tag/main.nf b/modules/local/add_found_in_tag/main.nf index f176d8a8..1cff6c52 100644 --- a/modules/local/add_found_in_tag/main.nf +++ b/modules/local/add_found_in_tag/main.nf @@ -64,7 +64,7 @@ process ADD_FOUND_IN_TAG { cat <<-END_VERSIONS > versions.yml "${task.process}": bcftools: \$(bcftools --version 2>&1 | head -n1 | sed 's/^.*bcftools //; s/ .*\$//') - busybox-awk: \$(awk 2>&1 | sed -n 's/.*v\\([^ ]*\\) (.*/\\1/p') + busybox_awk: \$(awk 2>&1 | sed -n 's/.*v\\([^ ]*\\) (.*/\\1/p') END_VERSIONS """ @@ -90,7 +90,7 @@ process ADD_FOUND_IN_TAG { cat <<-END_VERSIONS > versions.yml "${task.process}": bcftools: \$(bcftools --version 2>&1 | head -n1 | sed 's/^.*bcftools //; s/ .*\$//') - busybox-awk: \$(awk 2>&1 | sed -n 's/.*v\\([^ ]*\\) (.*/\\1/p') + busybox_awk: \$(awk 2>&1 | sed -n 's/.*v\\([^ ]*\\) (.*/\\1/p') END_VERSIONS """ } diff --git a/subworkflows/local/call_svs/tests/main.nf.test.snap b/subworkflows/local/call_svs/tests/main.nf.test.snap index a7483a53..72aa70d4 100644 --- a/subworkflows/local/call_svs/tests/main.nf.test.snap +++ b/subworkflows/local/call_svs/tests/main.nf.test.snap @@ -43,8 +43,8 @@ "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", - "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,cff333ea42eb748bf5dcc2c2a7d59c5f", "versions.yml:md5,d6665112b721f1651ae340c644f9a27c" ], "family_tbi": [ @@ -88,8 +88,8 @@ "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", - "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,cff333ea42eb748bf5dcc2c2a7d59c5f", "versions.yml:md5,d6665112b721f1651ae340c644f9a27c" ] } @@ -98,7 +98,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-28T09:48:16.872760798" + "timestamp": "2024-11-21T14:29:03.235235925" }, "2 samples - [bam, bai], fasta, fai, [], [] - sniffles -stub": { "content": [ @@ -145,10 +145,10 @@ "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", - "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", - "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,cff333ea42eb748bf5dcc2c2a7d59c5f", + "versions.yml:md5,cff333ea42eb748bf5dcc2c2a7d59c5f", "versions.yml:md5,d6665112b721f1651ae340c644f9a27c" ] ], @@ -156,7 +156,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-28T09:48:47.623104856" + "timestamp": "2024-11-21T14:29:33.316947597" }, "1 sample - [bam, bai], fasta, fai, [], [] - sniffles -stub": { "content": [ @@ -202,8 +202,8 @@ "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", - "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,cff333ea42eb748bf5dcc2c2a7d59c5f", "versions.yml:md5,d6665112b721f1651ae340c644f9a27c" ], "family_tbi": [ @@ -247,8 +247,8 @@ "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", - "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,cff333ea42eb748bf5dcc2c2a7d59c5f", "versions.yml:md5,d6665112b721f1651ae340c644f9a27c" ] } @@ -257,7 +257,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-28T09:48:01.475015636" + "timestamp": "2024-11-21T14:28:47.871974459" }, "1 sample - [bam, bai], fasta, fai, [], [] - severus": { "content": [ @@ -269,8 +269,8 @@ "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", - "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,cff333ea42eb748bf5dcc2c2a7d59c5f", "versions.yml:md5,d6665112b721f1651ae340c644f9a27c", "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f" ] @@ -279,7 +279,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-28T09:46:16.434467252" + "timestamp": "2024-11-21T14:27:02.494989112" }, "1 sample - [bam, bai], fasta, fai, [], bed - severus -stub": { "content": [ @@ -324,8 +324,8 @@ "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", - "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,cff333ea42eb748bf5dcc2c2a7d59c5f", "versions.yml:md5,d6665112b721f1651ae340c644f9a27c", "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f" ], @@ -369,8 +369,8 @@ "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", - "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,cff333ea42eb748bf5dcc2c2a7d59c5f", "versions.yml:md5,d6665112b721f1651ae340c644f9a27c", "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f" ] @@ -380,7 +380,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-28T09:49:16.762933068" + "timestamp": "2024-11-21T14:30:02.236874166" }, "1 sample - [bam, bai], fasta, fai, [], bed - severus": { "content": [ @@ -392,8 +392,8 @@ "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", - "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,cff333ea42eb748bf5dcc2c2a7d59c5f", "versions.yml:md5,d6665112b721f1651ae340c644f9a27c", "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f" ] @@ -402,7 +402,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-28T09:46:53.615376875" + "timestamp": "2024-11-21T14:27:40.147457805" }, "2 samples - [bam, bai], fasta, fai, [], [] - sniffles": { "content": [ @@ -810,10 +810,10 @@ "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", - "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", - "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,cff333ea42eb748bf5dcc2c2a7d59c5f", + "versions.yml:md5,cff333ea42eb748bf5dcc2c2a7d59c5f", "versions.yml:md5,d6665112b721f1651ae340c644f9a27c" ] ], @@ -821,7 +821,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-29T08:25:17.479785577" + "timestamp": "2024-11-21T14:26:28.586336982" }, "1 sample - [bam, bai], fasta, fai, [], bed - sniffles -stub": { "content": [ @@ -867,8 +867,8 @@ "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", - "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,cff333ea42eb748bf5dcc2c2a7d59c5f", "versions.yml:md5,d6665112b721f1651ae340c644f9a27c" ], "family_tbi": [ @@ -912,8 +912,8 @@ "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", - "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,cff333ea42eb748bf5dcc2c2a7d59c5f", "versions.yml:md5,d6665112b721f1651ae340c644f9a27c" ] } @@ -922,7 +922,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-28T09:48:31.835006564" + "timestamp": "2024-11-21T14:29:17.841219039" }, "1 sample - [bam, bai], fasta, fai, [], [] - severus -stub": { "content": [ @@ -967,8 +967,8 @@ "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", - "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,cff333ea42eb748bf5dcc2c2a7d59c5f", "versions.yml:md5,d6665112b721f1651ae340c644f9a27c", "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f" ], @@ -1012,8 +1012,8 @@ "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", - "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,cff333ea42eb748bf5dcc2c2a7d59c5f", "versions.yml:md5,d6665112b721f1651ae340c644f9a27c", "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f" ] @@ -1023,7 +1023,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-28T09:49:02.270018205" + "timestamp": "2024-11-21T14:29:47.72768953" }, "1 sample - [bam, bai], fasta, fai, [], [] - sniffles": { "content": [ @@ -1034,8 +1034,8 @@ "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", - "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,cff333ea42eb748bf5dcc2c2a7d59c5f", "versions.yml:md5,d6665112b721f1651ae340c644f9a27c" ] ], @@ -1043,7 +1043,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-28T09:45:02.833173008" + "timestamp": "2024-11-21T14:25:50.038358587" }, "1 sample - [bam, bai], fasta, fai, bed, [] - severus": { "content": [ @@ -1055,8 +1055,8 @@ "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", - "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,cff333ea42eb748bf5dcc2c2a7d59c5f", "versions.yml:md5,d6665112b721f1651ae340c644f9a27c", "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f" ] @@ -1065,7 +1065,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-28T09:46:35.586319077" + "timestamp": "2024-11-21T14:27:21.812768584" }, "1 sample - [bam, bai], fasta, fai, [], bed - sniffles": { "content": [ @@ -1076,8 +1076,8 @@ "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", - "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,cff333ea42eb748bf5dcc2c2a7d59c5f", "versions.yml:md5,d6665112b721f1651ae340c644f9a27c" ] ], @@ -1085,7 +1085,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-28T09:45:58.327508015" + "timestamp": "2024-11-21T14:26:44.491561807" }, "2 samples - [bam, bai], fasta, fai, [], [] - severus -stub": { "content": [ @@ -1130,10 +1130,10 @@ "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", - "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", - "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,cff333ea42eb748bf5dcc2c2a7d59c5f", + "versions.yml:md5,cff333ea42eb748bf5dcc2c2a7d59c5f", "versions.yml:md5,d6665112b721f1651ae340c644f9a27c", "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f", "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f" @@ -1143,7 +1143,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-28T09:49:46.640106268" + "timestamp": "2024-11-21T14:30:32.349238883" }, "1 sample - [bam, bai], fasta, fai, bed, [] - severus -stub": { "content": [ @@ -1188,8 +1188,8 @@ "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", - "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,cff333ea42eb748bf5dcc2c2a7d59c5f", "versions.yml:md5,d6665112b721f1651ae340c644f9a27c", "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f" ], @@ -1233,8 +1233,8 @@ "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", - "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,cff333ea42eb748bf5dcc2c2a7d59c5f", "versions.yml:md5,d6665112b721f1651ae340c644f9a27c", "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f" ] @@ -1244,7 +1244,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-28T09:49:31.495665136" + "timestamp": "2024-11-21T14:30:16.946977312" }, "2 samples - [bam, bai], fasta, fai, [], [] - severus": { "content": [ @@ -1260,10 +1260,10 @@ "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", - "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", - "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,cff333ea42eb748bf5dcc2c2a7d59c5f", + "versions.yml:md5,cff333ea42eb748bf5dcc2c2a7d59c5f", "versions.yml:md5,d6665112b721f1651ae340c644f9a27c", "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f", "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f" @@ -1273,7 +1273,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-28T09:47:46.540905608" + "timestamp": "2024-11-21T14:28:33.091100608" }, "1 sample - [bam, bai], fasta, fai, bed, [] - sniffles": { "content": [ @@ -1286,8 +1286,8 @@ "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", - "versions.yml:md5,80c39296f4a0ebb7f53a6ea4819c1fd9", "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,cff333ea42eb748bf5dcc2c2a7d59c5f", "versions.yml:md5,d6665112b721f1651ae340c644f9a27c" ] ], @@ -1295,6 +1295,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-28T09:45:20.394200452" + "timestamp": "2024-11-21T14:26:07.339172165" } } \ No newline at end of file diff --git a/subworkflows/local/short_variant_calling/tests/main.nf.test.snap b/subworkflows/local/short_variant_calling/tests/main.nf.test.snap index 8dec0cb3..04be59dd 100644 --- a/subworkflows/local/short_variant_calling/tests/main.nf.test.snap +++ b/subworkflows/local/short_variant_calling/tests/main.nf.test.snap @@ -52,10 +52,10 @@ "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", - "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", - "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50" ], "family_bcf": [ [ @@ -107,10 +107,10 @@ "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", - "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", - "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50" ] } ], @@ -118,7 +118,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-11-12T18:13:18.281203796" + "timestamp": "2024-11-21T14:31:35.224934094" }, "1 sample - 2 bed, fasta, fai, bed, [] - stub": { "content": [ @@ -189,13 +189,13 @@ "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", - "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", - "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", - "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50" ], "family_bcf": [ [ @@ -263,13 +263,13 @@ "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", - "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", - "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", - "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50" ] } ], @@ -277,7 +277,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-11-12T18:16:17.601722369" + "timestamp": "2024-11-21T14:34:35.379604763" }, "1 sample - 1 bed, fasta, fai, bed, []": { "content": [ @@ -332,10 +332,10 @@ "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", - "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", - "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50" ], "family_bcf": [ [ @@ -387,10 +387,10 @@ "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", - "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", - "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50" ] } ], @@ -398,7 +398,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-11-12T18:13:48.779934595" + "timestamp": "2024-11-21T14:32:05.96601253" }, "2 samples - 2 bed, fasta, fai, bed, par_bed": { "content": [ @@ -492,8 +492,6 @@ "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", - "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", - "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", @@ -501,7 +499,9 @@ "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", - "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50" ], "family_bcf": [ [ @@ -592,8 +592,6 @@ "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", - "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", - "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", @@ -601,7 +599,9 @@ "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", - "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50" ] } ], @@ -609,7 +609,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-11-12T18:15:32.090234345" + "timestamp": "2024-11-21T14:33:48.773081634" }, "2 samples - 2 bed, fasta, fai, bed, [] - stub": { "content": [ @@ -703,8 +703,6 @@ "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", - "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", - "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", @@ -712,7 +710,9 @@ "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", - "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50" ], "family_bcf": [ [ @@ -803,8 +803,6 @@ "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", - "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", - "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", @@ -812,7 +810,9 @@ "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", - "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50" ] } ], @@ -820,7 +820,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-11-12T18:16:31.350382929" + "timestamp": "2024-11-21T14:34:48.741504128" }, "2 samples - 2 bed, fasta, fai, bed, par_bed - stub": { "content": [ @@ -914,8 +914,6 @@ "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", - "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", - "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", @@ -923,7 +921,9 @@ "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", - "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50" ], "family_bcf": [ [ @@ -1014,8 +1014,6 @@ "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", - "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", - "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", @@ -1023,7 +1021,9 @@ "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", - "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50" ] } ], @@ -1031,7 +1031,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-11-12T18:16:44.845313016" + "timestamp": "2024-11-21T14:35:02.231722564" }, "1 sample - 1 bed, fasta, fai, bed, [] - stub": { "content": [ @@ -1086,10 +1086,10 @@ "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", - "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", - "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50" ], "family_bcf": [ [ @@ -1141,10 +1141,10 @@ "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", - "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", - "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50" ] } ], @@ -1152,7 +1152,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-11-12T18:16:05.823110437" + "timestamp": "2024-11-21T14:34:22.842191526" }, "1 sample - no bed, fasta, fai, [], []": { "content": [ @@ -1211,10 +1211,10 @@ "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", - "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", - "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50" ], "family_bcf": [ [ @@ -1270,10 +1270,10 @@ "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", - "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", - "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50" ] } ], @@ -1281,7 +1281,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-11-12T18:12:47.703475448" + "timestamp": "2024-11-21T14:31:04.363638442" }, "1 sample - 2 bed, fasta, fai, bed, []": { "content": [ @@ -1352,13 +1352,13 @@ "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", - "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", - "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", - "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50" ], "family_bcf": [ [ @@ -1426,13 +1426,13 @@ "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", - "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", - "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", - "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50" ] } ], @@ -1440,7 +1440,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-11-12T18:14:21.10363239" + "timestamp": "2024-11-21T14:32:38.48715039" }, "2 samples - 2 bed, fasta, fai, bed, []": { "content": [ @@ -1534,8 +1534,6 @@ "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", - "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", - "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", @@ -1543,7 +1541,9 @@ "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", - "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50" ], "family_bcf": [ [ @@ -1634,8 +1634,6 @@ "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", - "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", - "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", @@ -1643,7 +1641,9 @@ "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", - "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50" ] } ], @@ -1651,7 +1651,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-11-12T18:14:56.572901896" + "timestamp": "2024-11-21T14:33:13.404225198" }, "1 sample - no bed, fasta, fai, [], [] - stub": { "content": [ @@ -1710,10 +1710,10 @@ "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", - "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", - "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50" ], "family_bcf": [ [ @@ -1769,10 +1769,10 @@ "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", - "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", - "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50" ] } ], @@ -1780,7 +1780,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-11-12T18:15:43.480727946" + "timestamp": "2024-11-21T14:33:59.832105156" }, "1 sample - 1 bed, fasta, fai, [], [] - stub": { "content": [ @@ -1835,10 +1835,10 @@ "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", - "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", - "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50" ], "family_bcf": [ [ @@ -1890,10 +1890,10 @@ "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", - "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", - "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50" ] } ], @@ -1901,6 +1901,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-11-12T18:15:54.801886568" + "timestamp": "2024-11-21T14:34:11.123087909" } } \ No newline at end of file diff --git a/subworkflows/local/utils_nfcore_nallo_pipeline/main.nf b/subworkflows/local/utils_nfcore_nallo_pipeline/main.nf index b89ba7ac..e7c7aa68 100644 --- a/subworkflows/local/utils_nfcore_nallo_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_nallo_pipeline/main.nf @@ -306,171 +306,6 @@ def genomeExistsError() { // // Generate methods description for MultiQC // -def toolCitationText() { - - def citation_text = [ - "MultiQC (Ewels et al. 2016)", - ] - if (!params.skip_alignment) { - if (params.alignment_processes > 1) { - citation_text = citation_text + [ - "splitubam", - ] - } - citation_text = citation_text + [ - "SAMtools (Danecek et al. 2021)", - "Minimap2 (Li 2018)", - "Somalier (Pedersen et al. 2020)", - "Severus (Keskus et al. 2024)", - "Sniffles2 (Smolka et al. 2024)", - "SVDB (Eisfeldt et al. 2017)", - ] - if (!params.skip_qc) { - citation_text = citation_text + [ - "FastQC (Andrews 2010)", - "cramino (De Coster & Rademakers 2023)", - "mosdepth (Pedersen & Quinlan 2018)", - ] - } - if (!params.skip_call_paralogs) { - citation_text = citation_text + [ - "paraphase", - ] - } - if (!params.skip_genome_assembly) { - if (params.hifiasm_mode == 'trio-binning') { - citation_text = citation_text + [ - "yak", - ] - } - citation_text = citation_text + [ - "Hifiasm (Cheng et al. 2021)", - "Gfastats (Formenti et al. 2022)", - "dipcall (Li et al. 2018)", - "SAMtools (Danecek et al. 2021)", - "Minimap2 (Li 2018)", - ] - } - if (!params.skip_snv_calling) { - citation_text = citation_text + [ - "BEDTools (Quinlan & Hall 2010)", - "BCFtools (Danecek et al. 2021)", - "DeepVariant (Poplin et al. 2018)", - "GLnexus (Yun et al. 2021)", - ] - } - if (!params.skip_sv_annotation) { - citation_text = citation_text + [ - "VEP (McLaren et al. 2016)", - "SVDB (Eisfeldt et al. 2017)", - ] - } - if (!params.skip_snv_annotation) { - citation_text = citation_text + [ - "CADD (Rentzsch et al. 2019, Rentzsch et al. 2021)", - "BCFtools (Danecek et al. 2021)", - "VEP (McLaren et al. 2016)", - "Tabix (Li 2011)", - "Echtvar (Pedersen & de Ridder 2023)", - ] - if (!params.skip_rank_variants) { - citation_text = citation_text + [ - "Genmod (Magnusson et al. 2018)", - "Tabix (Li 2011)", - ] - } - } - if (!params.skip_cnv_calling) { - citation_text = citation_text + [ - "HiFiCNV", - ] - } - if (!params.skip_phasing) { - citation_text = citation_text + [ - "SAMtools (Danecek et al. 2021)", - "cramino (De Coster & Rademakers 2023)", - ] - if(params.phaser == 'whatshap') { - citation_text = citation_text + [ - "WhatsHap (Martin et al. 2016)", - ] - } - if(params.phaser == 'hiphase') { - citation_text = citation_text + [ - "HiPhase (Holt et al. 2024)", - ] - } - if(params.phaser == 'longphase') { - citation_text = citation_text + [ - "LongPhase (Lin et al. 2024)", - ] - } - if (!params.skip_methylation_pileups) { - citation_text = citation_text + [ - "modkit", - "Tabix (Li 2011)", - ] - } - if (!params.skip_repeat_calling) { - citation_text = citation_text + [ - "TRGT (Dolzhenko et al. 2024)", - ] - if (!params.skip_repeat_annotation) { - citation_text = citation_text + [ - "Stranger (Nilsson & Magnusson 2021)", - ] - } - } - } - } - - def return_text = "Tools used in the workflow included: " + citation_text.unique(false) { a, b -> a <=> b }.join(', ') - "" + "." - return return_text -} - -def toolBibliographyText() { - - reference_text = [ - "
  • Andrews S, (2010) FastQC, URL: https://www.bioinformatics.babraham.ac.uk/projects/fastqc/
  • ", - "
  • Ewels PA, Peltzer A, Fillinger S, Patel H, Alneberg J, Wilm A, Garcia MU, Di Tommaso P, Nahnsen S. The nf-core framework for community-curated bioinformatics pipelines. Nat Biotechnol. 2020 Mar;38(3):276-278. doi: 10.1038/s41587-020-0439-x. PubMed PMID: 32055031.
  • ", - "
  • Ewels P, Magnusson M, Lundin S, Käller M. MultiQC: summarize analysis results for multiple tools and samples in a single report. Bioinformatics. 2016 Oct 1;32(19):3047-8. doi: 10.1093/bioinformatics/btw354. Epub 2016 Jun 16. PubMed PMID: 27312411; PubMed Central PMCID: PMC5039924.
  • ", - "
  • Di Tommaso P, Chatzou M, Floden EW, Barja PP, Palumbo E, Notredame C. Nextflow enables reproducible computational workflows. Nat Biotechnol. 2017 Apr 11;35(4):316-319. doi: 10.1038/nbt.3820. PubMed PMID: 28398311.
  • ", - "
  • Danecek P, Bonfield JK, Liddle J, et al. Twelve years of SAMtools and BCFtools. GigaScience. 2021;10(2):giab008. doi:10.1093/gigascience/giab008
  • ", - "
  • Quinlan AR and Hall IM, 2010. BEDTools: a flexible suite of utilities for comparing genomic features. Bioinformatics. 26, 6, pp. 841–842.
  • ", - "
  • Wouter De Coster, Rosa Rademakers, NanoPack2: population-scale evaluation of long-read sequencing data, Bioinformatics, Volume 39, Issue 5, May 2023, btad311, https://doi.org/10.1093/bioinformatics/btad311
  • ", - "
  • Rentzsch P, Schubach M, Shendure J, Kircher M. CADD-Splice—improving genome-wide variant effect prediction using deep learning-derived splice scores. Genome Med. 2021;13(1):31. doi:10.1186/s13073-021-00835-9
  • ", - "
  • Rentzsch P, Witten D, Cooper GM, Shendure J, Kircher M. CADD: predicting the deleteriousness of variants throughout the human genome. Nucleic Acids Research. 2019;47(D1):D886-D894. doi:10.1093/nar/gky1016
  • ", - "
  • Poplin R, Chang PC, Alexander D, et al. A universal SNP and small-indel variant caller using deep neural networks. Nat Biotechnol. 2018;36(10):983-987. doi:10.1038/nbt.4235
  • ", - "
  • Li H, Bloom JM, Farjoun Y, Fleharty M, Gauthier L, Neale B, MacArthur D (2018) A synthetic-diploid benchmark for accurate variant-calling evaluation. Nat Methods, 15:595-597. [PMID:30013044]
  • ", - "
  • Brent S Pedersen, Jeroen de Ridder, Echtvar: compressed variant representation for rapid annotation and filtering of SNPs and indels, Nucleic Acids Research, Volume 51, Issue 1, 11 January 2023, Page e3, https://doi.org/10.1093/nar/gkac931
  • ", - "
  • McLaren W, Gil L, Hunt SE, et al. The Ensembl Variant Effect Predictor. Genome Biol. 2016;17(1):122. doi:10.1186/s13059-016-0974-4
  • ", - "
  • Andrews, S. (2010). FastQC: A Quality Control Tool for High Throughput Sequence Data [Online].
  • ", - "
  • Magnusson M, Hughes T, Glabilloy, Bitdeli Chef. genmod: Version 3.7.3. Published online November 15, 2018. doi:10.5281/ZENODO.3841142
  • ", - "
  • Giulio Formenti, Linelle Abueg, Angelo Brajuka, Nadolina Brajuka, Cristóbal Gallardo-Alba, Alice Giani, Olivier Fedrigo, Erich D Jarvis, Gfastats: conversion, evaluation and manipulation of genome sequences using assembly graphs, Bioinformatics, Volume 38, Issue 17, September 2022, Pages 4214–4216, https://doi.org/10.1093/bioinformatics/btac460
  • ", - "
  • Yun T, Li H, Chang PC, Lin MF, Carroll A, McLean CY. Accurate, scalable cohort variant calls using DeepVariant and GLnexus. Robinson P, ed. Bioinformatics. 2021;36(24):5582-5589. doi:10.1093/bioinformatics/btaa1081
  • ", - "
  • Cheng, H., Concepcion, G.T., Feng, X. et al. Haplotype-resolved de novo assembly using phased assembly graphs with hifiasm. Nat Methods 18, 170–175 (2021). https://doi.org/10.1038/s41592-020-01056-5
  • ", - "
  • James M Holt, Christopher T Saunders, William J Rowell, Zev Kronenberg, Aaron M Wenger, Michael Eberle, HiPhase: jointly phasing small, structural, and tandem repeat variants from HiFi sequencing, Bioinformatics, Volume 40, Issue 2, February 2024, btae042, https://doi.org/10.1093/bioinformatics/btae042
  • ", - "
  • Jyun-Hong Lin, Liang-Chi Chen, Shu-Chi Yu, Yao-Ting Huang, LongPhase: an ultra-fast chromosome-scale phasing algorithm for small and large variants, Bioinformatics, Volume 38, Issue 7, March 2022, Pages 1816–1822, https://doi.org/10.1093/bioinformatics/btac058
  • ", - "
  • Heng Li, Minimap2: pairwise alignment for nucleotide sequences, Bioinformatics, Volume 34, Issue 18, September 2018, Pages 3094–3100, https://doi.org/10.1093/bioinformatics/bty191
  • ", - "
  • Pedersen BS, Quinlan AR. Mosdepth: quick coverage calculation for genomes and exomes. Hancock J, ed. Bioinformatics. 2018;34(5):867-868. doi:10.1093/bioinformatics/btx699
  • ", - "
  • Genome-wide profiling of highly similar paralogous genes using HiFi sequencing. Xiao Chen, Daniel Baker, Egor Dolzhenko, Joseph M Devaney, Jessica Noya, April S Berlyoung, Rhonda Brandon, Kathleen S Hruska, Lucas Lochovsky, Paul Kruszka, Scott Newman, Emily Farrow, Isabelle Thiffault, Tomi Pastinen, Dalia Kasperaviciute, Christian Gilissen, Lisenka Vissers, Alexander Hoischen, Seth Berger, Eric Vilain, Emmanuèle Délot, UCI Genomics Research to Elucidate the Genetics of Rare Diseases (UCI GREGoR) Consortium, Michael A Eberle. bioRxiv 2024.04.19.590294; doi: https://doi.org/10.1101/2024.04.19.590294
  • ", - "
  • Ayse Keskus, Asher Bryant, Tanveer Ahmad, Byunggil Yoo, Sergey Aganezov, Anton Goretsky, Ataberk Donmez, Lisa A. Lansdon, Isabel Rodriguez, Jimin Park, Yuelin Liu, Xiwen Cui, Joshua Gardner, Brandy McNulty, Samuel Sacco, Jyoti Shetty, Yongmei Zhao, Bao Tran, Giuseppe Narzisi, Adrienne Helland, Daniel E. Cook, Pi-Chuan Chang, Alexey Kolesnikov, Andrew Carroll, Erin K. Molloy, Irina Pushel, Erin Guest, Tomi Pastinen, Kishwar Shafin, Karen H. Miga, Salem Malikic, Chi-Ping Day, Nicolas Robine, Cenk Sahinalp, Michael Dean, Midhat S. Farooqi, Benedict Paten, Mikhail Kolmogorov. Severus: accurate detection and characterization of somatic structural variation in tumor genomes using long reads. medRxiv 2024.03.22.24304756; doi: https://doi.org/10.1101/2024.03.22.24304756", - "
  • Smolka, M., Paulin, L.F., Grochowski, C.M. et al. Detection of mosaic and population-level structural variants with Sniffles2. Nat Biotechnol (2024). https://doi.org/10.1038/s41587-023-02024-y
  • ", - "
  • Pedersen, B.S., Bhetariya, P.J., Brown, J. et al. Somalier: rapid relatedness estimation for cancer and germline studies using efficient genome sketches. Genome Med 12, 62 (2020). https://doi.org/10.1186/s13073-020-00761-2
  • ", - "
  • Nilsson D, Magnusson M. moonso/stranger v0.7.1. Published online February 18, 2021. doi:10.5281/ZENODO.4548873
  • ", - "
  • Li H. Tabix: fast retrieval of sequence features from generic TAB-delimited files. Bioinformatics. 2011;27(5):718-719. doi:10.1093/bioinformatics/btq671
  • ", - "
  • Dolzhenko, E., English, A., Dashnow, H. et al. Characterization and visualization of tandem repeats at genome scale. Nat Biotechnol (2024). https://doi.org/10.1038/s41587-023-02057-3
  • ", - "
  • Marcel Martin, Murray Patterson, Shilpa Garg, Sarah O Fischer, Nadia Pisanti, Gunnar W Klau, Alexander Schöenhuth, Tobias Marschall. bioRxiv 085050; doi: https://doi.org/10.1101/085050
  • ", - "
  • Anaconda Software Distribution. Computer software. Vers. 2-2.4.0. Anaconda, Nov. 2016. Web.
  • ", - "
  • Grüning B, Dale R, Sjödin A, Chapman BA, Rowe J, Tomkins-Tinch CH, Valieris R, Köster J; Bioconda Team. Bioconda: sustainable and comprehensive software distribution for the life sciences. Nat Methods. 2018 Jul;15(7):475-476. doi: 10.1038/s41592-018-0046-7. PubMed PMID: 29967506.
  • ", - "
  • da Veiga Leprevost F, Grüning B, Aflitos SA, Röst HL, Uszkoreit J, Barsnes H, Vaudel M, Moreno P, Gatto L, Weber J, Bai M, Jimenez RC, Sachsenberg T, Pfeuffer J, Alvarez RV, Griss J, Nesvizhskii AI, Perez-Riverol Y. BioContainers: an open-source and community-driven framework for software standardization. Bioinformatics. 2017 Aug 15;33(16):2580-2582. doi: 10.1093/bioinformatics/btx192. PubMed PMID: 28379341; PubMed Central PMCID: PMC5870671.
  • ", - "
  • Merkel, D. (2014). Docker: lightweight linux containers for consistent development and deployment. Linux Journal, 2014(239), 2. doi: 10.5555/2600239.2600241.
  • ", - "
  • Kurtzer GM, Sochat V, Bauer MW. Singularity: Scientific containers for mobility of compute. PLoS One. 2017 May 11;12(5):e0177459. doi: 10.1371/journal.pone.0177459. eCollection 2017. PubMed PMID: 28494014; PubMed Central PMCID: PMC5426675.
  • ", - ].join(' ').trim() - - return reference_text -} - def methodsDescriptionText(mqc_methods_yaml) { // Convert to a named map so can be used as with familar NXF ${workflow} variable syntax in the MultiQC YML file def meta = [:] @@ -491,13 +326,6 @@ def methodsDescriptionText(mqc_methods_yaml) { } else meta["doi_text"] = "" meta["nodoi_text"] = meta.manifest_map.doi ? "" : "
  • If available, make sure to update the text to include the Zenodo DOI of version of the pipeline used.
  • " - // Tool references - meta["tool_citations"] = "" - meta["tool_bibliography"] = "" - - meta["tool_citations"] = toolCitationText().replaceAll(", \\.", ".").replaceAll("\\. \\.", ".").replaceAll(", \\.", ".") - meta["tool_bibliography"] = toolBibliographyText() - def methods_text = mqc_methods_yaml.text def engine = new groovy.text.SimpleTemplateEngine() @@ -506,6 +334,52 @@ def methodsDescriptionText(mqc_methods_yaml) { return description_html.toString() } +def extractSoftwareFromVersions(module_yaml_file) { + def yaml = new org.yaml.snakeyaml.Yaml() + def yamlData = yaml.load(module_yaml_file) + // Extract all software (keys) from a module yaml + def softwareInModule = yamlData.values().collect { it.keySet() }.flatten() + return softwareInModule +} + +def generateReferenceHTML(tool_list, description) { + def items = tool_list + .collect { it.trim() } + .unique() // samtools and bcftools share reference + .findAll { it != "" } // some tools does not have a reference, e.g. awk, gunzip + + if (description == 'citation') { + return "

    Tools used in the workflow included: ${items.join(', ')}.

    " + } else if (description == 'bibliography') { + return "

    References

    • ${items.join('
    • ')}
    " + } +} + +def citationBibliographyText(ch_versions, references_yaml, description) { + def yaml = new org.yaml.snakeyaml.Yaml() + def softwareReferences = yaml.load(references_yaml.text).tool + + def unwantedReferences = ['genomic-medicine-sweden/nallo', 'Nextflow'] + // These are not collected in ch_versions but should be referenced + baseTools = Channel.from(['nextflow', 'nf_core', 'bioconda', 'biocontainers', 'multiqc']) + + ch_versions + .map { module_yaml -> extractSoftwareFromVersions(module_yaml) } + .flatten() // split multi-tool modules + .unique() + .filter { tool -> !unwantedReferences.contains(tool) } + .concat(baseTools) + .collect { tool -> + def toolDetails = softwareReferences[tool] + if (toolDetails == null) { + throw new IllegalStateException("Tool: '${tool}' not found in ${references_yaml}") + } + return toolDetails[description] + } + .sort() + .map { tools -> generateReferenceHTML(tools, description) } +} + // // Validate workflow skip combinations // diff --git a/tests/samplesheet.nf.test.snap b/tests/samplesheet.nf.test.snap index ed3341c3..bc375a87 100644 --- a/tests/samplesheet.nf.test.snap +++ b/tests/samplesheet.nf.test.snap @@ -5,7 +5,7 @@ { "ADD_FOUND_IN_TAG": { "bcftools": 1.2, - "busybox-awk": "1.36.1" + "busybox_awk": "1.36.1" }, "ADD_MOST_SEVERE_CSQ": { "add_most_severe_consequence": 1.0, diff --git a/tests/samplesheet_multisample_bam.nf.test.snap b/tests/samplesheet_multisample_bam.nf.test.snap index 20d29438..ffc6d25c 100644 --- a/tests/samplesheet_multisample_bam.nf.test.snap +++ b/tests/samplesheet_multisample_bam.nf.test.snap @@ -5,7 +5,7 @@ { "ADD_FOUND_IN_TAG": { "bcftools": 1.2, - "busybox-awk": "1.36.1" + "busybox_awk": "1.36.1" }, "ADD_MOST_SEVERE_CSQ": { "add_most_severe_consequence": 1.0, diff --git a/tests/samplesheet_multisample_ont_bam.nf.test.snap b/tests/samplesheet_multisample_ont_bam.nf.test.snap index c3bfc566..425e7c48 100644 --- a/tests/samplesheet_multisample_ont_bam.nf.test.snap +++ b/tests/samplesheet_multisample_ont_bam.nf.test.snap @@ -5,7 +5,7 @@ { "ADD_FOUND_IN_TAG": { "bcftools": 1.2, - "busybox-awk": "1.36.1" + "busybox_awk": "1.36.1" }, "ADD_MOST_SEVERE_CSQ": { "add_most_severe_consequence": 1.0, diff --git a/workflows/nallo.nf b/workflows/nallo.nf index 799789ab..4da63a3b 100644 --- a/workflows/nallo.nf +++ b/workflows/nallo.nf @@ -59,6 +59,7 @@ include { paramsSummaryMap } from 'plugin/nf-sc include { paramsSummaryMultiqc } from '../subworkflows/nf-core/utils_nfcore_pipeline' include { softwareVersionsToYAML } from '../subworkflows/nf-core/utils_nfcore_pipeline' include { methodsDescriptionText } from '../subworkflows/local/utils_nfcore_nallo_pipeline' +include { citationBibliographyText } from '../subworkflows/local/utils_nfcore_nallo_pipeline' /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -639,15 +640,29 @@ workflow NALLO { ch_multiqc_custom_methods_description = params.multiqc_methods_description ? file(params.multiqc_methods_description, checkIfExists: true) : file("$projectDir/assets/methods_description_template.yml", checkIfExists: true) - ch_methods_description = Channel.value( - methodsDescriptionText(ch_multiqc_custom_methods_description)) - + ch_methods_description = Channel.of( + methodsDescriptionText(ch_multiqc_custom_methods_description) + ) + ch_methods_description_citation = citationBibliographyText( + ch_versions, + file("$projectDir/assets/software_references.yml"), + 'citation' + ) + ch_methods_description_bibliography = citationBibliographyText( + ch_versions, + file("$projectDir/assets/software_references.yml"), + 'bibliography' + ) ch_multiqc_files = ch_multiqc_files.mix(ch_collated_versions) ch_multiqc_files = ch_multiqc_files.mix( - ch_methods_description.collectFile( - name: 'methods_description_mqc.yaml', - sort: true - ) + ch_methods_description + .concat(ch_methods_description_citation) + .concat(ch_methods_description_bibliography) + .flatten() + .collectFile( + name: 'methods_description_mqc.yaml', + sort: false // preserve order for correct yaml structure + ) ) MULTIQC ( From 98b2f11014b84b72c05516dc05fe248c6883840b Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Fri, 22 Nov 2024 14:12:40 +0100 Subject: [PATCH 074/106] Prep release 0.4.0 (#511) --- CHANGELOG.md | 2 +- assets/multiqc_config.yml | 2 +- nextflow.config | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index dda988c8..9b80d04b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## 0.4.0dev - [XXXX-XX-XX] +## 0.4.0 - [2024-11-22] ### `Added` diff --git a/assets/multiqc_config.yml b/assets/multiqc_config.yml index 12f3b257..125517b7 100644 --- a/assets/multiqc_config.yml +++ b/assets/multiqc_config.yml @@ -1,5 +1,5 @@ report_comment: > - This report has been generated by the genomic-medicine-sweden/nallo + This report has been generated by the genomic-medicine-sweden/nallo analysis pipeline. report_section_order: "genomic-medicine-sweden-nallo-methods-description": diff --git a/nextflow.config b/nextflow.config index f35e534b..5dd6f78f 100644 --- a/nextflow.config +++ b/nextflow.config @@ -275,7 +275,7 @@ manifest { description = """Long-read variant calling pipeline""" mainScript = 'main.nf' nextflowVersion = '!>=24.04.2' - version = '0.4.0dev' + version = '0.4.0' doi = '10.5281/zenodo.13748210' } From 4f6a66d69d78f6dd8a25dcb8adcebf41042a722e Mon Sep 17 00:00:00 2001 From: fellen31 Date: Fri, 22 Nov 2024 14:26:54 +0100 Subject: [PATCH 075/106] remove merge markers --- nextflow_schema.json | 141 ------------------------------------------- 1 file changed, 141 deletions(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index 7f7c79ac..f283d38f 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -522,147 +522,6 @@ } }, "required": ["preset"] -<<<<<<< HEAD -======= - }, - "file_inputs": { - "title": "File inputs", - "type": "object", - "description": "The different files that are required. Some are only required by certain workflows, see the usage documentation.", - "default": "", - "fa_icon": "fas fa-copy", - "properties": { - "cadd_prescored": { - "type": "string", - "exists": true, - "format": "directory-path", - "fa_icon": "fas fa-file", - "description": "Path to a directory containing prescored indels for CADD.", - "help_text": "This folder contains the compressed files and indexes that would otherwise be in data/prescored folder as described in https://github.com/kircherlab/CADD-scripts/#manual-installation." - }, - "cadd_resources": { - "type": "string", - "exists": true, - "format": "directory-path", - "fa_icon": "fas fa-file", - "description": "Path to a directory containing CADD annotations.", - "help_text": "This folder contains the uncompressed files that would otherwise be in data/annotation folder as described in https://github.com/kircherlab/CADD-scripts/#manual-installation." - }, - "par_regions": { - "type": "string", - "description": "Provide a bed file of chrX and chrY PAR regions for dipcall and DeepVariant", - "format": "file-path", - "exists": true - }, - "tandem_repeats": { - "type": "string", - "format": "file-path", - "description": "A tandem repeat BED file for sniffles", - "pattern": "^\\S+\\.bed$", - "exists": true - }, - "trgt_repeats": { - "type": "string", - "description": "A BED file with repeats to be genotyped with TRGT", - "format": "file-path", - "exists": true - }, - "snp_db": { - "type": "string", - "pattern": "^\\S+\\.csv$", - "format": "file-path", - "mimetype": "text/csv", - "schema": "/assets/schema_snpdb.json", - "description": "A csv file with echtvar databases to annotate SNVs with", - "exists": true - }, - "variant_catalog": { - "type": "string", - "description": "A variant catalog json-file for stranger", - "format": "file-path", - "exists": true - }, - "variant_consequences_snv": { - "type": "string", - "description": "File containing list of SO terms listed in the order of severity from most severe to lease severe for annotating genomic SNVs.", - "help_text": "For more information check https://ensembl.org/info/genome/variation/prediction/predicted_data.html", - "fa_icon": "fas fa-file-csv" - }, - "vep_cache": { - "type": "string", - "description": "A path to the VEP cache location", - "format": "path", - "exists": true - }, - "bed": { - "type": "string", - "pattern": "^\\S+\\.bed$", - "format": "file-path", - "description": "A BED file with regions of interest, used to limit short variant calling.", - "exists": true - }, - "hificnv_xy": { - "type": "string", - "format": "file-path", - "description": "A BED file containing expected copy number regions for XY samples.", - "exists": true - }, - "hificnv_xx": { - "type": "string", - "format": "file-path", - "description": "A BED file containing expected copy number regions for XX samples.", - "exists": true - }, - "hificnv_exclude": { - "type": "string", - "format": "file-path", - "description": "A BED file specifying regions to exclude with HiFiCNV, such as centromeres.", - "exists": true - }, - "reduced_penetrance": { - "type": "string", - "exists": true, - "format": "path", - "fa_icon": "fas fa-file-csv", - "description": "A file with gene ids that have reduced penetrance. For use with genmod." - }, - "score_config_snv": { - "type": "string", - "exists": true, - "format": "path", - "fa_icon": "fas fa-file", - "description": "A SNV rank model config file for genmod." - }, - "somalier_sites": { - "type": "string", - "pattern": "^\\S+\\.vcf(\\.gz)?$", - "description": "A VCF of known polymorphic sites for somalier", - "format": "file-path", - "exists": true - }, - "validationFailUnrecognisedParams": { - "type": "boolean", - "fa_icon": "far fa-check-circle", - "description": "Validation of parameters fails when an unrecognised parameter is found.", - "hidden": true, - "help_text": "By default, when an unrecognised parameter is found, it returns a warning." - }, - "validationLenientMode": { - "type": "boolean", - "fa_icon": "far fa-check-circle", - "description": "Validation of parameters in lenient more.", - "hidden": true, - "help_text": "Allows string values that are parseable as numbers or booleans. For further information see [JSONSchema docs](https://github.com/everit-org/json-schema#lenient-mode)." - }, - "pipelines_testdata_base_path": { - "type": "string", - "fa_icon": "far fa-check-circle", - "description": "Base URL or local path to location of pipeline test dataset files", - "default": "https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/nallo-0.3.2/", - "hidden": true - } - } ->>>>>>> master } }, "allOf": [ From 2fb6cac8ca82deee31eaacdc6f0cc9bdd3cabdd7 Mon Sep 17 00:00:00 2001 From: fellen31 Date: Fri, 22 Nov 2024 14:29:33 +0100 Subject: [PATCH 076/106] prettier --- CHANGELOG.md | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 325ce84b..baddf2ce 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). <<<<<<< HEAD + ## 0.4.0 - [2024-11-22] ### `Added` @@ -194,19 +195,26 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 > Version has been removed if new version information isn't present. ## 0.3.2 - [2024-09-20] + ======= + ## v0.3.2 - [2024-09-20] ->>>>>>> master + +> > > > > > > master ### `Fixed` - [#396](https://github.com/genomic-medicine-sweden/nallo/pull/396) - Fixed the release test profile not working, by pinning the testdata used [#395](https://github.com/genomic-medicine-sweden/nallo/issues/395) <<<<<<< HEAD + ## 0.3.1 - [2024-09-11] + ======= + ## v0.3.1 - [2024-09-11] ->>>>>>> master + +> > > > > > > master ### `Fixed` From 1b5e9d4a86ae52744bf3240c90c1b9cdbd7098b5 Mon Sep 17 00:00:00 2001 From: fellen31 Date: Fri, 22 Nov 2024 14:33:10 +0100 Subject: [PATCH 077/106] remove merge markers in changelog --- CHANGELOG.md | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index baddf2ce..9b80d04b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,8 +3,6 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -<<<<<<< HEAD - ## 0.4.0 - [2024-11-22] ### `Added` @@ -196,26 +194,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## 0.3.2 - [2024-09-20] -======= - -## v0.3.2 - [2024-09-20] - -> > > > > > > master - ### `Fixed` - [#396](https://github.com/genomic-medicine-sweden/nallo/pull/396) - Fixed the release test profile not working, by pinning the testdata used [#395](https://github.com/genomic-medicine-sweden/nallo/issues/395) -<<<<<<< HEAD - ## 0.3.1 - [2024-09-11] -======= - -## v0.3.1 - [2024-09-11] - -> > > > > > > master - ### `Fixed` - [#359](https://github.com/genomic-medicine-sweden/nallo/pull/359) - Fixed single sample SNV VCFs containing variants from all samples, resuling in a large number of empty GT calls From 930f080b862a0046624cccfdf9271efd90f5e740 Mon Sep 17 00:00:00 2001 From: fellen31 Date: Fri, 22 Nov 2024 14:44:26 +0100 Subject: [PATCH 078/106] bump minimum master CI nextflow version to 24.04.2 --- .github/workflows/ci_master.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci_master.yml b/.github/workflows/ci_master.yml index 2de564cd..a2ee5d35 100644 --- a/.github/workflows/ci_master.yml +++ b/.github/workflows/ci_master.yml @@ -39,7 +39,7 @@ jobs: parameters: - "--bed=`null`" NXF_VER: - - "23.04.0" + - "24.04.2" - "latest-everything" steps: - name: Check out pipeline code From 23480d922ced1e97ca39988d4ea61cc9cf028a44 Mon Sep 17 00:00:00 2001 From: fellen31 Date: Fri, 22 Nov 2024 15:37:18 +0100 Subject: [PATCH 079/106] fix tests merge mistakes and snapshot version bump --- tests/samplesheet.nf.test.snap | 4 ++-- tests/samplesheet_multisample_bam.nf.test.snap | 4 ++-- tests/samplesheet_multisample_ont_bam.nf.test.snap | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/samplesheet.nf.test.snap b/tests/samplesheet.nf.test.snap index bc375a87..c8e14330 100644 --- a/tests/samplesheet.nf.test.snap +++ b/tests/samplesheet.nf.test.snap @@ -242,7 +242,7 @@ "whatshap": 2.3 }, "Workflow": { - "genomic-medicine-sweden/nallo": "v0.4.0dev" + "genomic-medicine-sweden/nallo": "v0.4.0" } }, [ @@ -670,6 +670,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-11-22T11:48:49.364619961" + "timestamp": "2024-11-22T15:33:19.851771321" } } \ No newline at end of file diff --git a/tests/samplesheet_multisample_bam.nf.test.snap b/tests/samplesheet_multisample_bam.nf.test.snap index ffc6d25c..f0cc2cc1 100644 --- a/tests/samplesheet_multisample_bam.nf.test.snap +++ b/tests/samplesheet_multisample_bam.nf.test.snap @@ -236,7 +236,7 @@ "whatshap": 2.3 }, "Workflow": { - "genomic-medicine-sweden/nallo": "v0.4.0dev" + "genomic-medicine-sweden/nallo": "v0.4.0" } }, [ @@ -869,6 +869,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-11-22T11:48:57.369487572" + "timestamp": "2024-11-22T15:15:01.966301935" } } \ No newline at end of file diff --git a/tests/samplesheet_multisample_ont_bam.nf.test.snap b/tests/samplesheet_multisample_ont_bam.nf.test.snap index 425e7c48..01e5e5ab 100644 --- a/tests/samplesheet_multisample_ont_bam.nf.test.snap +++ b/tests/samplesheet_multisample_ont_bam.nf.test.snap @@ -196,7 +196,7 @@ "whatshap": 2.3 }, "Workflow": { - "genomic-medicine-sweden/nallo": "v0.4.0dev" + "genomic-medicine-sweden/nallo": "v0.4.0" } }, [ @@ -638,6 +638,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-11-22T11:48:58.903274383" + "timestamp": "2024-11-22T15:35:40.786297675" } } \ No newline at end of file From 21fece44ad7deccdc7421e72f092215223d71a23 Mon Sep 17 00:00:00 2001 From: fellen31 Date: Fri, 22 Nov 2024 15:37:46 +0100 Subject: [PATCH 080/106] fix merge mistake, keeping main.nf.test --- tests/main.nf.test | 345 --------------------------------------------- 1 file changed, 345 deletions(-) delete mode 100644 tests/main.nf.test diff --git a/tests/main.nf.test b/tests/main.nf.test deleted file mode 100644 index 4976e9d5..00000000 --- a/tests/main.nf.test +++ /dev/null @@ -1,345 +0,0 @@ -nextflow_pipeline { - - name "Test pipeline GENOMICMEDICINESWEDEN_NALLO" - script "../main.nf" - profile "test" - tag "PIPELINE" - - test("test profile") { - tag "samplesheet" - - when { - params { - // Base directory for genomic-medicine-sweden/nallo test data - pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/ba720cd29322036d966ab3e4bc4c3d03e1731af5/' - // Test files - fasta = params.pipelines_testdata_base_path + 'reference/hg38.test.fa.gz' - input = params.pipelines_testdata_base_path + 'testdata/samplesheet.csv' - bed = params.pipelines_testdata_base_path + 'reference/test_data.bed' - hificnv_xy = params.pipelines_testdata_base_path + 'reference/expected_cn.hg38.XY.bed' - hificnv_xx = params.pipelines_testdata_base_path + 'reference/expected_cn.hg38.XX.bed' - hificnv_exclude = params.pipelines_testdata_base_path + 'reference/empty.bed' - par_regions = params.pipelines_testdata_base_path + 'reference/hs38.PAR.bed' - trgt_repeats = params.pipelines_testdata_base_path + 'reference/pathogenic_repeats.hg38.bed' - variant_catalog = params.pipelines_testdata_base_path + 'reference/variant_catalog_grch38.json' - vep_cache = params.pipelines_testdata_base_path + 'reference/vep_cache_test_data.tar.gz' - vep_plugin_files = params.pipelines_testdata_base_path + 'reference/vep_plugin_files.csv' - snp_db = params.pipelines_testdata_base_path + 'testdata/snp_dbs.csv' - somalier_sites = params.pipelines_testdata_base_path + 'reference/somalier_sites.vcf.gz' - reduced_penetrance = params.pipelines_testdata_base_path + 'reference/reduced_penetrance.tsv' - score_config_snv = params.pipelines_testdata_base_path + 'reference/rank_model_snv.ini' - variant_consequences_snv = params.pipelines_testdata_base_path + 'reference/variant_consequences_v2.txt' - - // Parameters - parallel_snv = 2 - preset = "revio" - outdir = "$outputDir" - } - } - - then { - assertAll ( - { assert workflow.success }, - // Assert with snapshot multisample - { assert snapshot( - file("$outputDir/pedigree/test.ped"), - file("$outputDir/qc_aligned_reads/somalier/relate/test/test.pairs.tsv"), - file("$outputDir/qc_aligned_reads/somalier/relate/test/test.samples.tsv"), - file("$outputDir/qc_aligned_reads/somalier/relate/test/test.html"), - file("$outputDir/multiqc/multiqc_data/multiqc_citations.txt"), - file("$outputDir/multiqc/multiqc_data/multiqc_fastqc.txt"), - file("$outputDir/multiqc/multiqc_data/multiqc_somalier.txt"), - // Assert with snapshot HG002_Revio - bam("$outputDir/aligned_reads/HG002_Revio/HG002_Revio_phased.bam", stringency: 'silent').getReadsMD5(), - file("$outputDir/assembly_haplotypes/gfastats/HG002_Revio/HG002_Revio.asm.bp.hap1.p_ctg.assembly_summary"), - file("$outputDir/assembly_haplotypes/gfastats/HG002_Revio/HG002_Revio.asm.bp.hap2.p_ctg.assembly_summary"), - bam("$outputDir/assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap1.bam", stringency: 'silent').getReadsMD5(), - bam("$outputDir/assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap2.bam", stringency: 'silent').getReadsMD5(), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.dip.bed"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap1.bed"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap2.bed"), - file("$outputDir/cnv_calling/hificnv/HG002_Revio/HG002_Revio.HG002_Revio.copynum.bedgraph"), - file("$outputDir/cnv_calling/hificnv/HG002_Revio/HG002_Revio.HG002_Revio.depth.bw"), - file("$outputDir/cnv_calling/hificnv/HG002_Revio/HG002_Revio.HG002_Revio.maf.bw"), - file("$outputDir/qc_aligned_reads/mosdepth/HG002_Revio/HG002_Revio.mosdepth.global.dist.txt"), - file("$outputDir/qc_aligned_reads/mosdepth/HG002_Revio/HG002_Revio.mosdepth.region.dist.txt"), - file("$outputDir/qc_aligned_reads/mosdepth/HG002_Revio/HG002_Revio.mosdepth.summary.txt"), - file("$outputDir/assembly_haplotypes/gfastats/HG002_Revio/HG002_Revio.asm.bp.hap1.p_ctg.fasta.gz"), - file("$outputDir/assembly_haplotypes/gfastats/HG002_Revio/HG002_Revio.asm.bp.hap2.p_ctg.fasta.gz"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.dip.vcf.gz"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap1.paf.gz"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap1.var.gz"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap2.paf.gz"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap2.var.gz"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.pair.vcf.gz"), - file("$outputDir/cnv_calling/hificnv/HG002_Revio/HG002_Revio.HG002_Revio.vcf.gz"), - file("$outputDir/cnv_calling/hificnv/HG002_Revio/HG002_Revio.HG002_Revio.vcf.gz.tbi"), - file("$outputDir/methylation/modkit/pileup/unphased/HG002_Revio/HG002_Revio_modkit_pileup.bed.gz"), - file("$outputDir/methylation/modkit/pileup/unphased/HG002_Revio/HG002_Revio_modkit_pileup.bed.gz.tbi"), - bam("$outputDir/paraphase/HG002_Revio/HG002_Revio.paraphase.bam", stringency: 'silent').getReadsMD5(), - file("$outputDir/qc_aligned_reads/cramino/phased/HG002_Revio/HG002_Revio_cramino_aligned_phased.arrow"), - file("$outputDir/qc_aligned_reads/cramino/unphased/HG002_Revio/HG002_Revio_cramino_aligned.arrow"), - file("$outputDir/qc_aligned_reads/mosdepth/HG002_Revio/HG002_Revio.regions.bed.gz"), - file("$outputDir/qc_aligned_reads/mosdepth/HG002_Revio/HG002_Revio.regions.bed.gz.csi"), - file("$outputDir/qc_raw_reads/fqcrs/HG002_Revio/HG002_PacBio_Revio.fastq.gz.tsv.zst"), - file("$outputDir/repeat_calling/trgt/single_sample/HG002_Revio/HG002_Revio_sorted.vcf.gz"), - file("$outputDir/repeat_calling/trgt/single_sample/HG002_Revio/HG002_Revio_sorted.vcf.gz.tbi"), - bam("$outputDir/repeat_calling/trgt/single_sample/HG002_Revio/HG002_Revio_spanning_sorted.bam", stringency: 'silent').getReadsMD5(), - file("$outputDir/snvs/stats/single_sample/HG002_Revio.vcf.gz.bcftools_stats.txt").readLines()[0..2], - ).match() }, - // Assert exists multisample - { assert new File("$outputDir/databases/echtvar/encode/test/test.zip").exists() }, - { assert new File("$outputDir/multiqc/multiqc_data/multiqc_data.json").exists() }, - { assert new File("$outputDir/multiqc/multiqc_data/multiqc.log").exists() }, - { assert new File("$outputDir/multiqc/multiqc_report.html").exists() }, - { assert new File("$outputDir/multiqc/multiqc_data/multiqc_general_stats.txt").exists() }, - { assert new File("$outputDir/multiqc/multiqc_data/multiqc_sources.txt").exists() }, - { assert new File("$outputDir/multiqc/multiqc_data/multiqc_software_versions.txt").exists() }, - { assert new File("$outputDir/repeat_calling/trgt/multi_sample/test/test.vcf.gz").exists() }, - { assert new File("$outputDir/repeat_calling/trgt/multi_sample/test/test.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/snvs/multi_sample/test/test_snv_annotated_ranked.vcf.gz").exists() }, - { assert new File("$outputDir/snvs/multi_sample/test/test_snv_annotated_ranked.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/sv_calling/sniffles/multi_sample/test/test_sniffles.vcf.gz").exists() }, - { assert new File("$outputDir/sv_calling/sniffles/multi_sample/test/test_sniffles.vcf.gz.tbi").exists() }, - // Assert exists HG002_Revio - { assert new File("$outputDir/aligned_reads/HG002_Revio/HG002_Revio_phased.bam.bai").exists() }, - { assert new File("$outputDir/assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap1.bam.bai").exists() }, - { assert new File("$outputDir/assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap1.sam.gz").exists() }, - { assert new File("$outputDir/assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap2.bam.bai").exists() }, - { assert new File("$outputDir/assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap2.sam.gz").exists() }, - { assert new File("$outputDir/cnv_calling/hificnv/HG002_Revio/HG002_Revio.log").exists() }, - { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_Revio/HG002_Revio_modkit_pileup_phased_1.bed.gz").exists() }, - { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_Revio/HG002_Revio_modkit_pileup_phased_1.bed.gz.tbi").exists() }, - { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_Revio/HG002_Revio_modkit_pileup_phased_2.bed.gz").exists() }, - { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_Revio/HG002_Revio_modkit_pileup_phased_2.bed.gz.tbi").exists() }, - { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_Revio/HG002_Revio_modkit_pileup_phased_ungrouped.bed.gz").exists() }, - { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_Revio/HG002_Revio_modkit_pileup_phased_ungrouped.bed.gz.tbi").exists() }, - { assert new File("$outputDir/paraphase/HG002_Revio/HG002_Revio.paraphase.bam.bai").exists() }, - { assert new File("$outputDir/paraphase/HG002_Revio/HG002_Revio_paraphase_vcfs/HG002_Revio_hba.vcf.gz").exists() }, - { assert new File("$outputDir/paraphase/HG002_Revio/HG002_Revio_paraphase_vcfs/HG002_Revio_hba.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/paraphase/HG002_Revio/HG002_Revio.paraphase.json").exists() }, - { assert new File("$outputDir/qc_aligned_reads/cramino/phased/HG002_Revio/HG002_Revio_cramino_aligned_phased.txt").exists() }, - { assert new File("$outputDir/qc_aligned_reads/cramino/unphased/HG002_Revio/HG002_Revio_cramino_aligned.txt").exists() }, - { assert new File("$outputDir/phasing/whatshap/phase/HG002_Revio/HG002_Revio_phased.vcf.gz").exists() }, - { assert new File("$outputDir/phasing/whatshap/phase/HG002_Revio/HG002_Revio_phased.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/phasing/whatshap/stats/HG002_Revio/HG002_Revio_stats.stats.tsv").exists() }, - { assert new File("$outputDir/phasing/whatshap/stats/HG002_Revio/HG002_Revio_stats.blocks.tsv").exists() }, - { assert new File("$outputDir/qc_raw_reads/fastqc/HG002_Revio/HG002_Revio_fastqc.html").exists() }, - { assert new File("$outputDir/qc_raw_reads/fastqc/HG002_Revio/HG002_Revio_fastqc.zip").exists() }, - { assert new File("$outputDir/repeat_annotation/stranger/HG002_Revio/HG002_Revio_repeat_expansion_stranger.vcf.gz").exists() }, - { assert new File("$outputDir/repeat_annotation/stranger/HG002_Revio/HG002_Revio_repeat_expansion_stranger.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/repeat_calling/trgt/single_sample/HG002_Revio/HG002_Revio_spanning_sorted.bam.bai").exists() }, - { assert new File("$outputDir/snvs/single_sample/HG002_Revio/HG002_Revio_snv_annotated_ranked.vcf.gz").exists() }, - { assert new File("$outputDir/snvs/single_sample/HG002_Revio/HG002_Revio_snv_annotated_ranked.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/sv_calling/sniffles/single_sample/HG002_Revio/HG002_Revio_sniffles.snf").exists() }, - { assert new File("$outputDir/sv_calling/sniffles/single_sample/HG002_Revio/HG002_Revio_sniffles.vcf.gz").exists() }, - { assert new File("$outputDir/sv_calling/sniffles/single_sample/HG002_Revio/HG002_Revio_sniffles.vcf.gz.tbi").exists() } - ) - } - } - - test("test profile - multisample") { - tag "samplesheet_multisample_bam" - - when { - params { - // Base directory for genomic-medicine-sweden/nallo test data - pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/nallo-0.3.2/' - // Test files - fasta = params.pipelines_testdata_base_path + 'reference/hg38.test.fa.gz' - input = params.pipelines_testdata_base_path + 'testdata/samplesheet_multisample_bam.csv' - bed = params.pipelines_testdata_base_path + 'reference/test_data.bed' - hificnv_xy = params.pipelines_testdata_base_path + 'reference/expected_cn.hg38.XY.bed' - hificnv_xx = params.pipelines_testdata_base_path + 'reference/expected_cn.hg38.XX.bed' - hificnv_exclude = params.pipelines_testdata_base_path + 'reference/empty.bed' - par_regions = params.pipelines_testdata_base_path + 'reference/hs38.PAR.bed' - trgt_repeats = params.pipelines_testdata_base_path + 'reference/pathogenic_repeats.hg38.bed' - variant_catalog = params.pipelines_testdata_base_path + 'reference/variant_catalog_grch38.json' - vep_cache = params.pipelines_testdata_base_path + 'reference/vep_cache_test_data.tar.gz' - vep_plugin_files = params.pipelines_testdata_base_path + 'reference/vep_plugin_files.csv' - snp_db = params.pipelines_testdata_base_path + 'testdata/snp_dbs.csv' - somalier_sites = params.pipelines_testdata_base_path + 'reference/somalier_sites.vcf.gz' - reduced_penetrance = params.pipelines_testdata_base_path + 'reference/reduced_penetrance.tsv' - score_config_snv = params.pipelines_testdata_base_path + 'reference/rank_model_snv.ini' - variant_consequences_snv = params.pipelines_testdata_base_path + 'reference/variant_consequences_v2.txt' - - // Parameters - parallel_snv = 2 - preset = "revio" - outdir = "$outputDir" - } - } - - then { - assertAll ( - { assert workflow.success }, - // Assert with snapshot multisample - { assert snapshot( - file("$outputDir/pedigree/test.ped"), - file("$outputDir/multiqc/multiqc_data/multiqc_citations.txt"), - file("$outputDir/multiqc/multiqc_data/multiqc_fastqc.txt"), - // Assert with snapshot HG002_Revio_A - bam("$outputDir/aligned_reads/HG002_Revio_A/HG002_Revio_A_phased.bam", stringency: 'silent').getReadsMD5(), - file("$outputDir/assembly_haplotypes/gfastats/HG002_Revio_A/HG002_Revio_A.asm.bp.hap1.p_ctg.assembly_summary"), - file("$outputDir/assembly_haplotypes/gfastats/HG002_Revio_A/HG002_Revio_A.asm.bp.hap2.p_ctg.assembly_summary"), - bam("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap1.bam", stringency: 'silent').getReadsMD5(), - bam("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap2.bam", stringency: 'silent').getReadsMD5(), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.dip.bed"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap1.bed"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap2.bed"), - file("$outputDir/cnv_calling/hificnv/HG002_Revio_A/HG002_Revio_A.HG002_Revio_A.copynum.bedgraph"), - file("$outputDir/cnv_calling/hificnv/HG002_Revio_A/HG002_Revio_A.HG002_Revio_A.depth.bw"), - file("$outputDir/cnv_calling/hificnv/HG002_Revio_A/HG002_Revio_A.HG002_Revio_A.maf.bw"), - file("$outputDir/qc_aligned_reads/mosdepth/HG002_Revio_A/HG002_Revio_A.mosdepth.global.dist.txt"), - file("$outputDir/qc_aligned_reads/mosdepth/HG002_Revio_A/HG002_Revio_A.mosdepth.region.dist.txt"), - file("$outputDir/qc_aligned_reads/mosdepth/HG002_Revio_A/HG002_Revio_A.mosdepth.summary.txt"), - file("$outputDir/assembly_haplotypes/gfastats/HG002_Revio_A/HG002_Revio_A.asm.bp.hap1.p_ctg.fasta.gz"), - file("$outputDir/assembly_haplotypes/gfastats/HG002_Revio_A/HG002_Revio_A.asm.bp.hap2.p_ctg.fasta.gz"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.dip.vcf.gz"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap1.paf.gz"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap1.var.gz"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap2.paf.gz"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap2.var.gz"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.pair.vcf.gz"), - file("$outputDir/cnv_calling/hificnv/HG002_Revio_A/HG002_Revio_A.HG002_Revio_A.vcf.gz"), - file("$outputDir/cnv_calling/hificnv/HG002_Revio_A/HG002_Revio_A.HG002_Revio_A.vcf.gz.tbi"), - file("$outputDir/methylation/modkit/pileup/unphased/HG002_Revio_A/HG002_Revio_A_modkit_pileup.bed.gz"), - file("$outputDir/methylation/modkit/pileup/unphased/HG002_Revio_A/HG002_Revio_A_modkit_pileup.bed.gz.tbi"), - bam("$outputDir/paraphase/HG002_Revio_A/HG002_Revio_A.paraphase.bam", stringency: 'silent').getReadsMD5(), - file("$outputDir/qc_aligned_reads/cramino/phased/HG002_Revio_A/HG002_Revio_A_cramino_aligned_phased.arrow"), - file("$outputDir/qc_aligned_reads/cramino/unphased/HG002_Revio_A/HG002_Revio_A_cramino_aligned.arrow"), - file("$outputDir/qc_aligned_reads/mosdepth/HG002_Revio_A/HG002_Revio_A.regions.bed.gz"), - file("$outputDir/qc_aligned_reads/mosdepth/HG002_Revio_A/HG002_Revio_A.regions.bed.gz.csi"), - file("$outputDir/qc_raw_reads/fqcrs/HG002_Revio_A/HG002_PacBio_Revio.bam_other.fastq.gz.tsv.zst"), - file("$outputDir/repeat_calling/trgt/single_sample/HG002_Revio_A/HG002_Revio_A_sorted.vcf.gz"), - file("$outputDir/repeat_calling/trgt/single_sample/HG002_Revio_A/HG002_Revio_A_sorted.vcf.gz.tbi"), - bam("$outputDir/repeat_calling/trgt/single_sample/HG002_Revio_A/HG002_Revio_A_spanning_sorted.bam", stringency: 'silent').getReadsMD5(), - file("$outputDir/snvs/stats/single_sample/HG002_Revio_A.vcf.gz.bcftools_stats.txt").readLines()[0..2], - // Assert with snapshot HG002_Revio_B - bam("$outputDir/aligned_reads/HG002_Revio_B/HG002_Revio_B_phased.bam", stringency: 'silent').getReadsMD5(), - file("$outputDir/assembly_haplotypes/gfastats/HG002_Revio_B/HG002_Revio_B.asm.bp.hap1.p_ctg.assembly_summary"), - file("$outputDir/assembly_haplotypes/gfastats/HG002_Revio_B/HG002_Revio_B.asm.bp.hap2.p_ctg.assembly_summary"), - bam("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap1.bam", stringency: 'silent').getReadsMD5(), - bam("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap2.bam", stringency: 'silent').getReadsMD5(), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.dip.bed"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap1.bed"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap2.bed"), - file("$outputDir/cnv_calling/hificnv/HG002_Revio_B/HG002_Revio_B.HG002_Revio_B.copynum.bedgraph"), - file("$outputDir/cnv_calling/hificnv/HG002_Revio_B/HG002_Revio_B.HG002_Revio_B.depth.bw"), - file("$outputDir/cnv_calling/hificnv/HG002_Revio_B/HG002_Revio_B.HG002_Revio_B.maf.bw"), - file("$outputDir/qc_aligned_reads/mosdepth/HG002_Revio_B/HG002_Revio_B.mosdepth.global.dist.txt"), - file("$outputDir/qc_aligned_reads/mosdepth/HG002_Revio_B/HG002_Revio_B.mosdepth.region.dist.txt"), - file("$outputDir/qc_aligned_reads/mosdepth/HG002_Revio_B/HG002_Revio_B.mosdepth.summary.txt"), - file("$outputDir/assembly_haplotypes/gfastats/HG002_Revio_B/HG002_Revio_B.asm.bp.hap1.p_ctg.fasta.gz"), - file("$outputDir/assembly_haplotypes/gfastats/HG002_Revio_B/HG002_Revio_B.asm.bp.hap2.p_ctg.fasta.gz"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.dip.vcf.gz"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap1.paf.gz"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap1.var.gz"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap2.paf.gz"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap2.var.gz"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.pair.vcf.gz"), - file("$outputDir/cnv_calling/hificnv/HG002_Revio_B/HG002_Revio_B.HG002_Revio_B.vcf.gz"), - file("$outputDir/cnv_calling/hificnv/HG002_Revio_B/HG002_Revio_B.HG002_Revio_B.vcf.gz.tbi"), - file("$outputDir/methylation/modkit/pileup/unphased/HG002_Revio_B/HG002_Revio_B_modkit_pileup.bed.gz"), - file("$outputDir/methylation/modkit/pileup/unphased/HG002_Revio_B/HG002_Revio_B_modkit_pileup.bed.gz.tbi"), - bam("$outputDir/paraphase/HG002_Revio_B/HG002_Revio_B.paraphase.bam", stringency: 'silent').getReadsMD5(), - file("$outputDir/qc_aligned_reads/cramino/phased/HG002_Revio_B/HG002_Revio_B_cramino_aligned_phased.arrow"), - file("$outputDir/qc_aligned_reads/cramino/unphased/HG002_Revio_B/HG002_Revio_B_cramino_aligned.arrow"), - file("$outputDir/qc_aligned_reads/mosdepth/HG002_Revio_B/HG002_Revio_B.regions.bed.gz"), - file("$outputDir/qc_aligned_reads/mosdepth/HG002_Revio_B/HG002_Revio_B.regions.bed.gz.csi"), - file("$outputDir/qc_raw_reads/fqcrs/HG002_Revio_B/HG002_Revio_B.merged.fastq.gz.tsv.zst"), - file("$outputDir/repeat_calling/trgt/single_sample/HG002_Revio_B/HG002_Revio_B_sorted.vcf.gz"), - file("$outputDir/repeat_calling/trgt/single_sample/HG002_Revio_B/HG002_Revio_B_sorted.vcf.gz.tbi"), - bam("$outputDir/repeat_calling/trgt/single_sample/HG002_Revio_B/HG002_Revio_B_spanning_sorted.bam", stringency: 'silent').getReadsMD5(), - file("$outputDir/snvs/stats/single_sample/HG002_Revio_B.vcf.gz.bcftools_stats.txt").readLines()[0..2], - ).match() }, - // Assert exists multisample - note the trgt multisample that doesn't exist in singlesample - { assert new File("$outputDir/databases/echtvar/encode/test/test.zip").exists() }, - { assert new File("$outputDir/qc_aligned_reads/somalier/relate/test/test.pairs.tsv").exists() }, - { assert new File("$outputDir/qc_aligned_reads/somalier/relate/test/test.samples.tsv").exists() }, - { assert new File("$outputDir/qc_aligned_reads/somalier/relate/test/test.html").exists() }, - { assert new File("$outputDir/multiqc/multiqc_data/multiqc_general_stats.txt").exists() }, - { assert new File("$outputDir/multiqc/multiqc_data/multiqc_somalier.txt").exists() }, - { assert new File("$outputDir/multiqc/multiqc_data/multiqc_data.json").exists() }, - { assert new File("$outputDir/multiqc/multiqc_data/multiqc.log").exists() }, - { assert new File("$outputDir/multiqc/multiqc_report.html").exists() }, - { assert new File("$outputDir/multiqc/multiqc_data/multiqc_sources.txt").exists() }, - { assert new File("$outputDir/multiqc/multiqc_data/multiqc_software_versions.txt").exists() }, - { assert new File("$outputDir/snvs/multi_sample/test/test_snv_annotated_ranked.vcf.gz").exists() }, - { assert new File("$outputDir/snvs/multi_sample/test/test_snv_annotated_ranked.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/sv_calling/sniffles/multi_sample/test/test_sniffles.vcf.gz").exists() }, - { assert new File("$outputDir/sv_calling/sniffles/multi_sample/test/test_sniffles.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/repeat_calling/trgt/multi_sample/test/test.vcf.gz").exists() }, - { assert new File("$outputDir/repeat_calling/trgt/multi_sample/test/test.vcf.gz.tbi").exists() }, - // Assert exists HG002_Revio_A - { assert new File("$outputDir/aligned_reads/HG002_Revio_A/HG002_Revio_A_phased.bam.bai").exists() }, - { assert new File("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap1.bam.bai").exists() }, - { assert new File("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap1.sam.gz").exists() }, - { assert new File("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap2.bam.bai").exists() }, - { assert new File("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap2.sam.gz").exists() }, - { assert new File("$outputDir/cnv_calling/hificnv/HG002_Revio_A/HG002_Revio_A.log").exists() }, - { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_Revio_A/HG002_Revio_A_modkit_pileup_phased_1.bed.gz").exists() }, - { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_Revio_A/HG002_Revio_A_modkit_pileup_phased_1.bed.gz.tbi").exists() }, - { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_Revio_A/HG002_Revio_A_modkit_pileup_phased_2.bed.gz").exists() }, - { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_Revio_A/HG002_Revio_A_modkit_pileup_phased_2.bed.gz.tbi").exists() }, - { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_Revio_A/HG002_Revio_A_modkit_pileup_phased_ungrouped.bed.gz").exists() }, - { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_Revio_A/HG002_Revio_A_modkit_pileup_phased_ungrouped.bed.gz.tbi").exists() }, - { assert new File("$outputDir/paraphase/HG002_Revio_A/HG002_Revio_A.paraphase.bam.bai").exists() }, - { assert new File("$outputDir/paraphase/HG002_Revio_A/HG002_Revio_A_paraphase_vcfs/HG002_Revio_A_hba.vcf.gz").exists() }, - { assert new File("$outputDir/paraphase/HG002_Revio_A/HG002_Revio_A_paraphase_vcfs/HG002_Revio_A_hba.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/paraphase/HG002_Revio_A/HG002_Revio_A.paraphase.json").exists() }, - { assert new File("$outputDir/qc_aligned_reads/cramino/phased/HG002_Revio_A/HG002_Revio_A_cramino_aligned_phased.txt").exists() }, - { assert new File("$outputDir/qc_aligned_reads/cramino/unphased/HG002_Revio_A/HG002_Revio_A_cramino_aligned.txt").exists() }, - { assert new File("$outputDir/aligned_reads/HG002_Revio_A/HG002_Revio_A_phased.bam.bai").exists() }, - { assert new File("$outputDir/phasing/whatshap/phase/HG002_Revio_A/HG002_Revio_A_phased.vcf.gz").exists() }, - { assert new File("$outputDir/phasing/whatshap/phase/HG002_Revio_A/HG002_Revio_A_phased.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/phasing/whatshap/stats/HG002_Revio_A/HG002_Revio_A_stats.stats.tsv").exists() }, - { assert new File("$outputDir/phasing/whatshap/stats/HG002_Revio_A/HG002_Revio_A_stats.blocks.tsv").exists() }, - { assert new File("$outputDir/qc_raw_reads/fastqc/HG002_Revio_A/HG002_Revio_A_fastqc.html").exists() }, - { assert new File("$outputDir/qc_raw_reads/fastqc/HG002_Revio_A/HG002_Revio_A_fastqc.zip").exists() }, - { assert new File("$outputDir/repeat_annotation/stranger/HG002_Revio_A/HG002_Revio_A_repeat_expansion_stranger.vcf.gz").exists() }, - { assert new File("$outputDir/repeat_annotation/stranger/HG002_Revio_A/HG002_Revio_A_repeat_expansion_stranger.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/repeat_calling/trgt/single_sample/HG002_Revio_A/HG002_Revio_A_spanning_sorted.bam.bai").exists() }, - { assert new File("$outputDir/snvs/single_sample/HG002_Revio_A/HG002_Revio_A_snv_annotated_ranked.vcf.gz").exists() }, - { assert new File("$outputDir/snvs/single_sample/HG002_Revio_A/HG002_Revio_A_snv_annotated_ranked.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/sv_calling/sniffles/single_sample/HG002_Revio_A/HG002_Revio_A_sniffles.snf").exists() }, - { assert new File("$outputDir/sv_calling/sniffles/single_sample/HG002_Revio_A/HG002_Revio_A_sniffles.vcf.gz").exists() }, - { assert new File("$outputDir/sv_calling/sniffles/single_sample/HG002_Revio_A/HG002_Revio_A_sniffles.vcf.gz.tbi").exists() }, - // Assert exists HG002_Revio_B - { assert new File("$outputDir/aligned_reads/HG002_Revio_B/HG002_Revio_B_phased.bam.bai").exists() }, - { assert new File("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap1.bam.bai").exists() }, - { assert new File("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap1.sam.gz").exists() }, - { assert new File("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap2.bam.bai").exists() }, - { assert new File("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap2.sam.gz").exists() }, - { assert new File("$outputDir/cnv_calling/hificnv/HG002_Revio_B/HG002_Revio_B.log").exists() }, - { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_Revio_B/HG002_Revio_B_modkit_pileup_phased_1.bed.gz").exists() }, - { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_Revio_B/HG002_Revio_B_modkit_pileup_phased_1.bed.gz.tbi").exists() }, - { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_Revio_B/HG002_Revio_B_modkit_pileup_phased_2.bed.gz").exists() }, - { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_Revio_B/HG002_Revio_B_modkit_pileup_phased_2.bed.gz.tbi").exists() }, - { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_Revio_B/HG002_Revio_B_modkit_pileup_phased_ungrouped.bed.gz").exists() }, - { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_Revio_B/HG002_Revio_B_modkit_pileup_phased_ungrouped.bed.gz.tbi").exists() }, - { assert new File("$outputDir/paraphase/HG002_Revio_B/HG002_Revio_B.paraphase.bam.bai").exists() }, - { assert new File("$outputDir/paraphase/HG002_Revio_B/HG002_Revio_B_paraphase_vcfs/HG002_Revio_B_hba.vcf.gz").exists() }, - { assert new File("$outputDir/paraphase/HG002_Revio_B/HG002_Revio_B_paraphase_vcfs/HG002_Revio_B_hba.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/paraphase/HG002_Revio_B/HG002_Revio_B.paraphase.json").exists() }, - { assert new File("$outputDir/qc_aligned_reads/cramino/phased/HG002_Revio_B/HG002_Revio_B_cramino_aligned_phased.txt").exists() }, - { assert new File("$outputDir/qc_aligned_reads/cramino/unphased/HG002_Revio_B/HG002_Revio_B_cramino_aligned.txt").exists() }, - { assert new File("$outputDir/aligned_reads/HG002_Revio_B/HG002_Revio_B_phased.bam.bai").exists() }, - { assert new File("$outputDir/phasing/whatshap/phase/HG002_Revio_B/HG002_Revio_B_phased.vcf.gz").exists() }, - { assert new File("$outputDir/phasing/whatshap/phase/HG002_Revio_B/HG002_Revio_B_phased.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/phasing/whatshap/stats/HG002_Revio_B/HG002_Revio_B_stats.stats.tsv").exists() }, - { assert new File("$outputDir/phasing/whatshap/stats/HG002_Revio_B/HG002_Revio_B_stats.blocks.tsv").exists() }, - { assert new File("$outputDir/qc_raw_reads/fastqc/HG002_Revio_B/HG002_Revio_B_fastqc.html").exists() }, - { assert new File("$outputDir/qc_raw_reads/fastqc/HG002_Revio_B/HG002_Revio_B_fastqc.zip").exists() }, - { assert new File("$outputDir/repeat_annotation/stranger/HG002_Revio_B/HG002_Revio_B_repeat_expansion_stranger.vcf.gz").exists() }, - { assert new File("$outputDir/repeat_annotation/stranger/HG002_Revio_B/HG002_Revio_B_repeat_expansion_stranger.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/repeat_calling/trgt/single_sample/HG002_Revio_B/HG002_Revio_B_spanning_sorted.bam.bai").exists() }, - { assert new File("$outputDir/snvs/single_sample/HG002_Revio_B/HG002_Revio_B_snv_annotated_ranked.vcf.gz").exists() }, - { assert new File("$outputDir/snvs/single_sample/HG002_Revio_B/HG002_Revio_B_snv_annotated_ranked.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/sv_calling/sniffles/single_sample/HG002_Revio_B/HG002_Revio_B_sniffles.snf").exists() }, - { assert new File("$outputDir/sv_calling/sniffles/single_sample/HG002_Revio_B/HG002_Revio_B_sniffles.vcf.gz").exists() }, - { assert new File("$outputDir/sv_calling/sniffles/single_sample/HG002_Revio_B/HG002_Revio_B_sniffles.vcf.gz.tbi").exists() } - ) - } - } -} From 67a5e1598e59a33bf6ebcdc13754dc813f471972 Mon Sep 17 00:00:00 2001 From: Daniel Schmitz Date: Tue, 10 Dec 2024 09:23:00 +0100 Subject: [PATCH 081/106] Trgt 1.2.0 (#505) * Replaced local TRGT module with nf-core * Updated tests * fixed include * Fixed include again * Updated changelog * Updated test snaps * Renamed TRGT merge input channel * Removed bcftools merge * Added bcftools/index back * Added indexes to output * Updated trgt/merge * Updated test snapshots * Updated the last snapshot * Recording version of bcftools index * Updated snapshots --- CHANGELOG.md | 2 + conf/modules/call_repeat_expansions.config | 15 +- modules.json | 12 +- modules/local/trgt/enviroment.yml | 7 - modules/local/trgt/main.nf | 62 -- .../bcftools/{merge => index}/environment.yml | 0 modules/nf-core/bcftools/index/main.nf | 51 ++ modules/nf-core/bcftools/index/meta.yml | 63 ++ .../nf-core/bcftools/index/tests/main.nf.test | 113 +++ .../bcftools/index/tests/main.nf.test.snap | 120 +++ .../bcftools/index/tests/nextflow.config | 3 + modules/nf-core/bcftools/index/tests/tags.yml | 2 + modules/nf-core/bcftools/merge/meta.yml | 96 -- .../nf-core/bcftools/merge/tests/bcf.config | 3 - .../bcftools/merge/tests/bcf_gz.config | 3 - .../nf-core/bcftools/merge/tests/main.nf.test | 853 ------------------ .../bcftools/merge/tests/main.nf.test.snap | 607 ------------- .../bcftools/merge/tests/nextflow.config | 5 - .../bcftools/merge/tests/nextflow.gvcf.config | 5 - modules/nf-core/bcftools/merge/tests/tags.yml | 2 - .../nf-core/bcftools/merge/tests/vcf.config | 3 - .../bcftools/merge/tests/vcf_gz.config | 3 - .../bcftools/merge/tests/vcf_gz_index.config | 3 - .../merge/tests/vcf_gz_index_csi.config | 3 - .../merge/tests/vcf_gz_index_tbi.config | 3 - modules/nf-core/trgt/genotype/environment.yml | 7 + modules/nf-core/trgt/genotype/main.nf | 56 ++ modules/nf-core/trgt/genotype/meta.yml | 98 ++ .../nf-core/trgt/genotype/tests/main.nf.test | 154 ++++ .../trgt/genotype/tests/main.nf.test.snap | 198 ++++ modules/nf-core/trgt/merge/environment.yml | 6 + .../nf-core/{bcftools => trgt}/merge/main.nf | 47 +- modules/nf-core/trgt/merge/meta.yml | 80 ++ modules/nf-core/trgt/merge/tests/main.nf.test | 193 ++++ .../trgt/merge/tests/main.nf.test.snap | 80 ++ .../nf-core/trgt/merge/tests/nextflow.config | 15 + .../local/call_repeat_expansions/main.nf | 38 +- .../tests/main.nf.test.snap | 79 +- .../tests/nextflow.config | 5 +- tests/samplesheet.nf.test.snap | 21 +- .../samplesheet_multisample_bam.nf.test.snap | 25 +- 41 files changed, 1395 insertions(+), 1746 deletions(-) delete mode 100644 modules/local/trgt/enviroment.yml delete mode 100644 modules/local/trgt/main.nf rename modules/nf-core/bcftools/{merge => index}/environment.yml (100%) create mode 100644 modules/nf-core/bcftools/index/main.nf create mode 100644 modules/nf-core/bcftools/index/meta.yml create mode 100644 modules/nf-core/bcftools/index/tests/main.nf.test create mode 100644 modules/nf-core/bcftools/index/tests/main.nf.test.snap create mode 100644 modules/nf-core/bcftools/index/tests/nextflow.config create mode 100644 modules/nf-core/bcftools/index/tests/tags.yml delete mode 100644 modules/nf-core/bcftools/merge/meta.yml delete mode 100644 modules/nf-core/bcftools/merge/tests/bcf.config delete mode 100644 modules/nf-core/bcftools/merge/tests/bcf_gz.config delete mode 100644 modules/nf-core/bcftools/merge/tests/main.nf.test delete mode 100644 modules/nf-core/bcftools/merge/tests/main.nf.test.snap delete mode 100644 modules/nf-core/bcftools/merge/tests/nextflow.config delete mode 100644 modules/nf-core/bcftools/merge/tests/nextflow.gvcf.config delete mode 100644 modules/nf-core/bcftools/merge/tests/tags.yml delete mode 100644 modules/nf-core/bcftools/merge/tests/vcf.config delete mode 100644 modules/nf-core/bcftools/merge/tests/vcf_gz.config delete mode 100644 modules/nf-core/bcftools/merge/tests/vcf_gz_index.config delete mode 100644 modules/nf-core/bcftools/merge/tests/vcf_gz_index_csi.config delete mode 100644 modules/nf-core/bcftools/merge/tests/vcf_gz_index_tbi.config create mode 100644 modules/nf-core/trgt/genotype/environment.yml create mode 100644 modules/nf-core/trgt/genotype/main.nf create mode 100644 modules/nf-core/trgt/genotype/meta.yml create mode 100644 modules/nf-core/trgt/genotype/tests/main.nf.test create mode 100644 modules/nf-core/trgt/genotype/tests/main.nf.test.snap create mode 100644 modules/nf-core/trgt/merge/environment.yml rename modules/nf-core/{bcftools => trgt}/merge/main.nf (50%) create mode 100644 modules/nf-core/trgt/merge/meta.yml create mode 100644 modules/nf-core/trgt/merge/tests/main.nf.test create mode 100644 modules/nf-core/trgt/merge/tests/main.nf.test.snap create mode 100644 modules/nf-core/trgt/merge/tests/nextflow.config diff --git a/CHANGELOG.md b/CHANGELOG.md index 9b80d04b..7a9977f0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -94,6 +94,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#502](https://github.com/genomic-medicine-sweden/nallo/pull/502) - Changed to annotating and ranking SNVs per family instead of per project - [#502](https://github.com/genomic-medicine-sweden/nallo/pull/502) - Changed output documentation and structure to match `sample` and `family` for all variants - [#502](https://github.com/genomic-medicine-sweden/nallo/pull/502) - Changed the way of validating the samplesheet to remove outputing false errors with `ifEmpty` +- [#505](https://github.com/genomic-medicine-sweden/nallo/pull/505) - Updated TRGT to 1.2.0 - [#506](https://github.com/genomic-medicine-sweden/nallo/pull/506) - Updated documentation - [#507](https://github.com/genomic-medicine-sweden/nallo/pull/507) - Changed the default value of `ch_hgnc_ids` to allow running without `--filter_variants_hgnc_ids` introduced in [#496](https://github.com/genomic-medicine-sweden/nallo/pull/443) - [#509](https://github.com/genomic-medicine-sweden/nallo/pull/509) - Updated documentation to fix mistakes @@ -186,6 +187,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 | stranger | 0.9.1 | 0.9.2 | | multiqc | 1.21 | 1.25.1 | | ensemblvep/filter_vep | | 113 | +| TRGT | 0.4.0 | 1.2.0 | > [!NOTE] > Version has been updated if both old and new version information is present. diff --git a/conf/modules/call_repeat_expansions.config b/conf/modules/call_repeat_expansions.config index 175ac0f5..43b2d1c9 100644 --- a/conf/modules/call_repeat_expansions.config +++ b/conf/modules/call_repeat_expansions.config @@ -24,7 +24,7 @@ process { ] } - withName: '.*:CALL_REPEAT_EXPANSIONS:TRGT' { + withName: '.*:CALL_REPEAT_EXPANSIONS:TRGT_GENOTYPE' { ext.args = { "--sample-name ${meta.id}" } } @@ -58,11 +58,10 @@ process { ] } - withName: '.*:CALL_REPEAT_EXPANSIONS:BCFTOOLS_MERGE' { + withName: '.*:CALL_REPEAT_EXPANSIONS:TRGT_MERGE' { ext.prefix = { "${meta.id}_repeats" } ext.args = [ '--output-type z', - '--write-index=tbi', '--force-single' ].join(' ') publishDir = [ @@ -72,4 +71,14 @@ process { ] } + withName: '.*:CALL_REPEAT_EXPANSIONS:BCFTOOLS_INDEX' { + ext.prefix = { "${meta.id}_repeats" } + ext.args = "--tbi" + publishDir = [ + path: { "${params.outdir}/repeats/family/${meta.id}" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') || !params.skip_repeat_annotation ? null : filename } + ] + } + } diff --git a/modules.json b/modules.json index 40ce3646..0e060712 100644 --- a/modules.json +++ b/modules.json @@ -16,7 +16,7 @@ "git_sha": "d1e0ec7670fa77905a378627232566ce54c3c26d", "installed_by": ["modules"] }, - "bcftools/merge": { + "bcftools/index": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] @@ -284,6 +284,16 @@ "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] }, + "trgt/genotype": { + "branch": "master", + "git_sha": "484afd16770cf3c466a6c385e33746c877656663", + "installed_by": ["modules"] + }, + "trgt/merge": { + "branch": "master", + "git_sha": "8f77dd07042aef4eb19ea7fa91496a41975299b0", + "installed_by": ["modules"] + }, "untar": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", diff --git a/modules/local/trgt/enviroment.yml b/modules/local/trgt/enviroment.yml deleted file mode 100644 index e6c0944a..00000000 --- a/modules/local/trgt/enviroment.yml +++ /dev/null @@ -1,7 +0,0 @@ -name: trgt -channels: - - conda-forge - - bioconda - - defaults -dependencies: - - bioconda::trgt=0.4.0 diff --git a/modules/local/trgt/main.nf b/modules/local/trgt/main.nf deleted file mode 100644 index e4ce8278..00000000 --- a/modules/local/trgt/main.nf +++ /dev/null @@ -1,62 +0,0 @@ -process TRGT { - tag "$meta.id" - label 'process_medium' - - conda "${moduleDir}/environment.yml" - container "biocontainers/trgt:0.7.0--hdfd78af_0" - - input: - tuple val(meta), path(bam), path(bai), val(sex) - tuple val(meta2), path(fasta) - tuple val(meta3), path(fai) - tuple val(meta4), path(repeats) - - output: - tuple val(meta), path("${meta.id}.spanning.bam"), emit: bam - tuple val(meta), path("${meta.id}.vcf.gz") , emit: vcf - path "versions.yml" , emit: versions - - when: - task.ext.when == null || task.ext.when - - script: - def args = task.ext.args ?: '' - prefix = task.ext.prefix ?: "${meta.id}" - - if (sex == 1) { - karyotype = "XY" - } else if (sex == 2) { - karyotype = "XX" - } - - """ - trgt \\ - $args \\ - --genome ${fasta} \\ - --karyotype ${karyotype} \\ - --repeats ${repeats} \\ - --reads ${bam} \\ - --threads ${task.cpus} \\ - --output-prefix ${meta.id} - - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - trgt: \$(echo \$(trgt -V) | sed 's/trgt //' ) - END_VERSIONS - """ - - stub: - prefix = task.ext.prefix ?: "${meta.id}" - - """ - echo | gzip > ${prefix}.vcf.gz - touch ${prefix}.spanning.bam - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - trgt: \$(echo \$(trgt -V) | sed 's/trgt //' ) - END_VERSIONS - """ -} - diff --git a/modules/nf-core/bcftools/merge/environment.yml b/modules/nf-core/bcftools/index/environment.yml similarity index 100% rename from modules/nf-core/bcftools/merge/environment.yml rename to modules/nf-core/bcftools/index/environment.yml diff --git a/modules/nf-core/bcftools/index/main.nf b/modules/nf-core/bcftools/index/main.nf new file mode 100644 index 00000000..408e584c --- /dev/null +++ b/modules/nf-core/bcftools/index/main.nf @@ -0,0 +1,51 @@ +process BCFTOOLS_INDEX { + tag "$meta.id" + label 'process_low' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/bcftools:1.20--h8b25389_0': + 'biocontainers/bcftools:1.20--h8b25389_0' }" + + input: + tuple val(meta), path(vcf) + + output: + tuple val(meta), path("*.csi"), optional:true, emit: csi + tuple val(meta), path("*.tbi"), optional:true, emit: tbi + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + + """ + bcftools \\ + index \\ + $args \\ + --threads $task.cpus \\ + $vcf + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + bcftools: \$(bcftools --version 2>&1 | head -n1 | sed 's/^.*bcftools //; s/ .*\$//') + END_VERSIONS + """ + + stub: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def extension = args.contains("--tbi") || args.contains("-t") ? "tbi" : + "csi" + """ + touch ${vcf}.${extension} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + bcftools: \$(bcftools --version 2>&1 | head -n1 | sed 's/^.*bcftools //; s/ .*\$//') + END_VERSIONS + """ +} diff --git a/modules/nf-core/bcftools/index/meta.yml b/modules/nf-core/bcftools/index/meta.yml new file mode 100644 index 00000000..6897d1bd --- /dev/null +++ b/modules/nf-core/bcftools/index/meta.yml @@ -0,0 +1,63 @@ +name: bcftools_index +description: Index VCF tools +keywords: + - vcf + - index + - bcftools + - csi + - tbi +tools: + - bcftools: + description: BCFtools is a set of utilities that manipulate variant calls in the + Variant Call Format (VCF) and its binary counterpart BCF. All commands work + transparently with both VCFs and BCFs, both uncompressed and BGZF-compressed. Most + commands accept VCF, bgzipped VCF and BCF with filetype detected automatically + even when streaming from a pipe. Indexed VCF and BCF will work in all situations. + Un-indexed VCF and BCF and streams will work in most, but not all situations. + homepage: https://samtools.github.io/bcftools/ + documentation: https://samtools.github.io/bcftools/howtos/index.html + tool_dev_url: https://github.com/samtools/bcftools + doi: "10.1093/gigascience/giab008" + licence: ["MIT", "GPL-3.0-or-later"] + identifier: biotools:bcftools +input: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - vcf: + type: file + description: VCF file (optionally GZIPPED) + pattern: "*.{vcf,vcf.gz}" +output: + - csi: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.csi": + type: file + description: Default VCF file index file + pattern: "*.csi" + - tbi: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.tbi": + type: file + description: Alternative VCF file index file for larger files (activated with + -t parameter) + pattern: "*.tbi" + - versions: + - versions.yml: + type: file + description: File containing software version + pattern: "versions.yml" +authors: + - "@jfy133" +maintainers: + - "@jfy133" diff --git a/modules/nf-core/bcftools/index/tests/main.nf.test b/modules/nf-core/bcftools/index/tests/main.nf.test new file mode 100644 index 00000000..9b374853 --- /dev/null +++ b/modules/nf-core/bcftools/index/tests/main.nf.test @@ -0,0 +1,113 @@ +nextflow_process { + + name "Test Process BCFTOOLS_INDEX" + script "../main.nf" + process "BCFTOOLS_INDEX" + + tag "modules" + tag "modules_nfcore" + tag "bcftools" + tag "bcftools/index" + + test("sarscov2 - vcf - csi") { + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.csi.collect { it.collect { it instanceof Map ? it : file(it).name } }, + process.out.versions).match() + } + ) + } + + } + + test("sarscov2 - vcf - tbi") { + + config "./nextflow.config" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.tbi.collect { it.collect { it instanceof Map ? it : file(it).name } }, + process.out.versions).match() + } + ) + } + + } + + test("sarscov2 - vcf - csi - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("sarscov2 - vcf - tbi - stub") { + + config "./nextflow.config" + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} \ No newline at end of file diff --git a/modules/nf-core/bcftools/index/tests/main.nf.test.snap b/modules/nf-core/bcftools/index/tests/main.nf.test.snap new file mode 100644 index 00000000..b6f7b700 --- /dev/null +++ b/modules/nf-core/bcftools/index/tests/main.nf.test.snap @@ -0,0 +1,120 @@ +{ + "sarscov2 - vcf - csi - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + + ], + "2": [ + "versions.yml:md5,b4ea0f633dba7f5992fbf41b518f98e9" + ], + "csi": [ + [ + { + "id": "test" + }, + "test.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "tbi": [ + + ], + "versions": [ + "versions.yml:md5,b4ea0f633dba7f5992fbf41b518f98e9" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-03T11:43:09.347303629" + }, + "sarscov2 - vcf - tbi": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.vcf.gz.tbi" + ] + ], + [ + "versions.yml:md5,b4ea0f633dba7f5992fbf41b518f98e9" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-03T11:42:46.38669168" + }, + "sarscov2 - vcf - tbi - stub": { + "content": [ + { + "0": [ + + ], + "1": [ + [ + { + "id": "test" + }, + "test.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,b4ea0f633dba7f5992fbf41b518f98e9" + ], + "csi": [ + + ], + "tbi": [ + [ + { + "id": "test" + }, + "test.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,b4ea0f633dba7f5992fbf41b518f98e9" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-03T11:43:32.494612317" + }, + "sarscov2 - vcf - csi": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.vcf.gz.csi" + ] + ], + [ + "versions.yml:md5,b4ea0f633dba7f5992fbf41b518f98e9" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-03T11:42:33.652109509" + } +} \ No newline at end of file diff --git a/modules/nf-core/bcftools/index/tests/nextflow.config b/modules/nf-core/bcftools/index/tests/nextflow.config new file mode 100644 index 00000000..db83f7e5 --- /dev/null +++ b/modules/nf-core/bcftools/index/tests/nextflow.config @@ -0,0 +1,3 @@ +process { + ext.args = '--tbi' +} diff --git a/modules/nf-core/bcftools/index/tests/tags.yml b/modules/nf-core/bcftools/index/tests/tags.yml new file mode 100644 index 00000000..b4c349be --- /dev/null +++ b/modules/nf-core/bcftools/index/tests/tags.yml @@ -0,0 +1,2 @@ +bcftools/index: + - "modules/nf-core/bcftools/index/**" diff --git a/modules/nf-core/bcftools/merge/meta.yml b/modules/nf-core/bcftools/merge/meta.yml deleted file mode 100644 index 2cf09a1d..00000000 --- a/modules/nf-core/bcftools/merge/meta.yml +++ /dev/null @@ -1,96 +0,0 @@ -name: bcftools_merge -description: Merge VCF files -keywords: - - variant calling - - merge - - VCF -tools: - - merge: - description: | - Merge VCF files. - homepage: http://samtools.github.io/bcftools/bcftools.html - documentation: http://www.htslib.org/doc/bcftools.html - doi: 10.1093/bioinformatics/btp352 - licence: ["MIT"] - identifier: biotools:bcftools -input: - - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - vcfs: - type: file - description: | - List containing 2 or more vcf files - e.g. [ 'file1.vcf', 'file2.vcf' ] - - tbis: - type: file - description: | - List containing the tbi index files corresponding to the vcfs input files - e.g. [ 'file1.vcf.tbi', 'file2.vcf.tbi' ] - - - meta2: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'genome' ] - - fasta: - type: file - description: "(Optional) The fasta reference file (only necessary for the `--gvcf - FILE` parameter)" - pattern: "*.{fasta,fa}" - - - meta3: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'genome' ] - - fai: - type: file - description: "(Optional) The fasta reference file index (only necessary for - the `--gvcf FILE` parameter)" - pattern: "*.fai" - - - meta4: - type: map - description: | - Groovy Map containing bed information - e.g. [ id:'genome' ] - - bed: - type: file - description: "(Optional) The bed regions to merge on" - pattern: "*.bed" -output: - - vcf: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - "*.{bcf,vcf}{,.gz}": - type: file - description: merged output file - pattern: "*.{vcf,vcf.gz,bcf,bcf.gz}" - - index: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - "*.{csi,tbi}": - type: file - description: index of merged output - pattern: "*.{csi,tbi}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" -authors: - - "@joseespinosa" - - "@drpatelh" - - "@nvnieuwk" - - "@ramprasadn" -maintainers: - - "@joseespinosa" - - "@drpatelh" - - "@nvnieuwk" - - "@ramprasadn" diff --git a/modules/nf-core/bcftools/merge/tests/bcf.config b/modules/nf-core/bcftools/merge/tests/bcf.config deleted file mode 100644 index 4467d07d..00000000 --- a/modules/nf-core/bcftools/merge/tests/bcf.config +++ /dev/null @@ -1,3 +0,0 @@ -process { - ext.args = '--output-type u --no-version' -} diff --git a/modules/nf-core/bcftools/merge/tests/bcf_gz.config b/modules/nf-core/bcftools/merge/tests/bcf_gz.config deleted file mode 100644 index 280de8db..00000000 --- a/modules/nf-core/bcftools/merge/tests/bcf_gz.config +++ /dev/null @@ -1,3 +0,0 @@ -process { - ext.args = '--output-type b --no-version' -} diff --git a/modules/nf-core/bcftools/merge/tests/main.nf.test b/modules/nf-core/bcftools/merge/tests/main.nf.test deleted file mode 100644 index 3995fc1a..00000000 --- a/modules/nf-core/bcftools/merge/tests/main.nf.test +++ /dev/null @@ -1,853 +0,0 @@ -nextflow_process { - - name "Test Process BCFTOOLS_MERGE" - script "../main.nf" - process "BCFTOOLS_MERGE" - - tag "modules" - tag "modules_nfcore" - tag "bcftools" - tag "bcftools/merge" - - test("sarscov2 - [vcf, tbi], [], [], []") { - - config "./nextflow.config" - - when { - process { - """ - input[0] = [ - [ id:'test' ], // meta map - [ - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true) - ], - [ - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz.tbi', checkIfExists: true), - ] - ] - input[1] = [[],[]] - input[2] = [[],[]] - input[3] = [[],[]] - """ - } - } - - then { - assertAll( - { assert process.success }, - { assert process.out.vcf.get(0).get(1).endsWith("vcf") }, - { assert snapshot( - path(process.out.vcf.get(0).get(1)).vcf.variantsMD5, - process.out.versions, - ).match() } - ) - } - - } - - test("sarscov2 - [vcf, tbi], [], [], [] - vcf output") { - - config "./vcf.config" - - when { - process { - """ - input[0] = [ - [ id:'test' ], // meta map - [ - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true) - ], - [ - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz.tbi', checkIfExists: true), - ] - ] - input[1] = [[],[]] - input[2] = [[],[]] - input[3] = [[],[]] - """ - } - } - - then { - assertAll( - { assert process.success }, - { assert process.out.vcf.get(0).get(1).endsWith("vcf") }, - { assert snapshot( - path(process.out.vcf.get(0).get(1)).md5, - process.out.versions, - ).match() } - ) - } - - } - - test("sarscov2 - [vcf, tbi], [], [], [] - vcf.gz output") { - - config "./vcf_gz.config" - - when { - process { - """ - input[0] = [ - [ id:'test' ], // meta map - [ - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true) - ], - [ - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz.tbi', checkIfExists: true), - ] - ] - input[1] = [[],[]] - input[2] = [[],[]] - input[3] = [[],[]] - """ - } - } - - then { - assertAll( - { assert process.success }, - { assert process.out.vcf.get(0).get(1).endsWith("vcf.gz") }, - { assert snapshot( - path(process.out.vcf.get(0).get(1)).vcf.variantsMD5, - process.out.versions, - ).match() } - ) - } - - } - - test("sarscov2 - [vcf, tbi], [], [], [] - bcf output") { - - config "./bcf.config" - - when { - process { - """ - input[0] = [ - [ id:'test' ], // meta map - [ - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true) - ], - [ - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz.tbi', checkIfExists: true), - ] - ] - input[1] = [[],[]] - input[2] = [[],[]] - input[3] = [[],[]] - """ - } - } - - then { - assertAll( - { assert process.success }, - { assert process.out.vcf.get(0).get(1).endsWith("bcf") }, - { assert snapshot( - file(process.out.vcf.get(0).get(1)).name, - process.out.versions, - ).match() } - ) - } - - } - - test("sarscov2 - [vcf, tbi], [], [], [] - bcf.gz output") { - - config "./bcf_gz.config" - - when { - process { - """ - input[0] = [ - [ id:'test' ], // meta map - [ - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true) - ], - [ - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz.tbi', checkIfExists: true), - ] - ] - input[1] = [[],[]] - input[2] = [[],[]] - input[3] = [[],[]] - """ - } - } - - then { - assertAll( - { assert process.success }, - { assert process.out.vcf.get(0).get(1).endsWith("bcf.gz") }, - { assert snapshot( - file(process.out.vcf.get(0).get(1)).name, - process.out.versions, - ).match() } - ) - } - - } - - test("sarscov2 - [vcf, tbi], [], [], [] - vcf.gz output - index") { - - config "./vcf_gz_index.config" - - when { - process { - """ - input[0] = [ - [ id:'test' ], // meta map - [ - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true) - ], - [ - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz.tbi', checkIfExists: true), - ] - ] - input[1] = [[],[]] - input[2] = [[],[]] - input[3] = [[],[]] - """ - } - } - - then { - assertAll( - { assert process.success }, - { assert process.out.vcf.get(0).get(1).endsWith("vcf.gz") }, - { assert process.out.index.get(0).get(1).endsWith("csi") }, - { assert snapshot( - path(process.out.vcf.get(0).get(1)).vcf.variantsMD5, - file(process.out.index.get(0).get(1)).name, - process.out.versions, - ).match() } - ) - } - - } - - test("sarscov2 - [vcf, tbi], [], [], [] - vcf.gz output - csi index") { - - config "./vcf_gz_index_csi.config" - - when { - - process { - """ - input[0] = [ - [ id:'test' ], // meta map - [ - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true) - ], - [ - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz.tbi', checkIfExists: true), - ] - ] - input[1] = [[],[]] - input[2] = [[],[]] - input[3] = [[],[]] - """ - } - } - - then { - assertAll( - { assert process.success }, - { assert process.out.vcf.get(0).get(1).endsWith("vcf.gz") }, - { assert process.out.index.get(0).get(1).endsWith("csi") }, - { assert snapshot( - path(process.out.vcf.get(0).get(1)).vcf.variantsMD5, - file(process.out.index.get(0).get(1)).name, - process.out.versions, - ).match() } - ) - } - - } - - test("sarscov2 - [vcf, tbi], [], [], [] - vcf.gz output - tbi index") { - - config "./vcf_gz_index_tbi.config" - - when { - process { - """ - input[0] = [ - [ id:'test' ], // meta map - [ - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true) - ], - [ - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz.tbi', checkIfExists: true), - ] - ] - input[1] = [[],[]] - input[2] = [[],[]] - input[3] = [[],[]] - """ - } - } - - then { - assertAll( - { assert process.success }, - { assert process.out.vcf.get(0).get(1).endsWith("vcf.gz") }, - { assert process.out.index.get(0).get(1).endsWith("tbi") }, - { assert snapshot( - path(process.out.vcf.get(0).get(1)).vcf.variantsMD5, - file(process.out.index.get(0).get(1)).name, - process.out.versions, - ).match() } - ) - } - - } - - test("sarscov2 - [vcf, tbi], [], [], bed") { - - config "./nextflow.config" - - when { - process { - """ - input[0] = [ - [ id:'test' ], // meta map - [ - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true) - ], - [ - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz.tbi', checkIfExists: true), - ] - ] - input[1] = [[],[]] - input[2] = [[],[]] - input[3] = [ - [ id:'test' ], // meta map - [ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test.bed', checkIfExists: true) ] - ] - """ - } - } - - then { - assertAll( - { assert process.success }, - { assert process.out.vcf.get(0).get(1).endsWith("vcf") }, - { assert snapshot( - path(process.out.vcf.get(0).get(1)).md5, - process.out.versions, - ).match() } - ) - } - - } - - test("homo_sapiens - [vcf, tbi], fasta, fai, bed - vcf.gz output") { - - config "./nextflow.gvcf.config" - - when { - process { - """ - input[0] = [ - [ id:'test' ], // meta map - [ - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test.genome.vcf.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test2.genome.vcf.gz', checkIfExists: true) - ], - [ - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test.genome.vcf.gz.tbi', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test2.genome.vcf.gz.tbi', checkIfExists: true), - ] - ] - input[1] = [ - [ id:'test' ], // meta map - [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) ] - ] - input[2] = [ - [ id:'test' ], // meta map - [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) ] - ] - input[3] = [ - [ id:'test' ], // meta map - [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.bed', checkIfExists: true) ] - ] - """ - } - } - - then { - assertAll( - { assert process.success }, - { assert process.out.vcf.get(0).get(1).endsWith("vcf.gz") }, - { assert snapshot( - path(process.out.vcf.get(0).get(1)).vcf.variantsMD5, - process.out.versions, - ).match() } - ) - } - - } - - test("sarscov2 - [vcf, tbi], [], [], [] - one sample") { - - config "./nextflow.config" - when { - process { - """ - input[0] = [ - [ id:'test' ], // meta map - [ - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true) - ], - [ - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true) - ] - ] - input[1] = [[],[]] - input[2] = [[],[]] - input[3] = [[],[]] - """ - } - } - - then { - assertAll( - { assert process.success }, - { assert process.out.vcf.get(0).get(1).endsWith("vcf") }, - { assert snapshot( - path(process.out.vcf.get(0).get(1)).md5, - process.out.versions, - ).match() } - ) - } - - } - - test("sarscov2 - [vcf, tbi], [], [], [] - stub") { - - options "-stub" - config "./nextflow.config" - - when { - process { - """ - input[0] = [ - [ id:'test' ], // meta map - [ - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true) - ], - [ - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz.tbi', checkIfExists: true), - ] - ] - input[1] = [[],[]] - input[2] = [[],[]] - input[3] = [[],[]] - """ - } - } - - then { - assertAll( - { assert process.success }, - { assert process.out.vcf.get(0).get(1).endsWith("vcf") }, - { assert snapshot(process.out).match() } - ) - } - - } - - test("sarscov2 - [vcf, tbi], [], [], [] - vcf output - stub") { - - options "-stub" - config "./vcf.config" - - when { - process { - """ - input[0] = [ - [ id:'test' ], // meta map - [ - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true) - ], - [ - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz.tbi', checkIfExists: true), - ] - ] - input[1] = [[],[]] - input[2] = [[],[]] - input[3] = [[],[]] - """ - } - } - - then { - assertAll( - { assert process.success }, - { assert process.out.vcf.get(0).get(1).endsWith("vcf") }, - { assert snapshot(process.out).match() } - ) - } - - } - - test("sarscov2 - [vcf, tbi], [], [], [] - vcf.gz output - stub") { - - options "-stub" - config "./vcf_gz.config" - - when { - process { - """ - input[0] = [ - [ id:'test' ], // meta map - [ - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true) - ], - [ - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz.tbi', checkIfExists: true), - ] - ] - input[1] = [[],[]] - input[2] = [[],[]] - input[3] = [[],[]] - """ - } - } - - then { - assertAll( - { assert process.success }, - { assert process.out.vcf.get(0).get(1).endsWith("vcf.gz") }, - { assert snapshot(process.out).match() } - ) - } - - } - - test("sarscov2 - [vcf, tbi], [], [], [] - bcf output - stub") { - - options "-stub" - config "./bcf.config" - - when { - process { - """ - input[0] = [ - [ id:'test' ], // meta map - [ - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true) - ], - [ - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz.tbi', checkIfExists: true), - ] - ] - input[1] = [[],[]] - input[2] = [[],[]] - input[3] = [[],[]] - """ - } - } - - then { - assertAll( - { assert process.success }, - { assert process.out.vcf.get(0).get(1).endsWith("bcf") }, - { assert snapshot(process.out).match() } - ) - } - - } - - test("sarscov2 - [vcf, tbi], [], [], [] - bcf.gz output - stub") { - - options "-stub" - config "./bcf_gz.config" - - when { - process { - """ - input[0] = [ - [ id:'test' ], // meta map - [ - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true) - ], - [ - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz.tbi', checkIfExists: true), - ] - ] - input[1] = [[],[]] - input[2] = [[],[]] - input[3] = [[],[]] - """ - } - } - - then { - assertAll( - { assert process.success }, - { assert process.out.vcf.get(0).get(1).endsWith("bcf.gz") }, - { assert snapshot(process.out).match() } - ) - } - - } - - test("sarscov2 - [vcf, tbi], [], [], [] - vcf.gz output - index - stub") { - - options "-stub" - config "./vcf_gz_index.config" - - when { - process { - """ - input[0] = [ - [ id:'test' ], // meta map - [ - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true) - ], - [ - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz.tbi', checkIfExists: true), - ] - ] - input[1] = [[],[]] - input[2] = [[],[]] - input[3] = [[],[]] - """ - } - } - - then { - assertAll( - { assert process.success }, - { assert process.out.vcf.get(0).get(1).endsWith("vcf.gz") }, - { assert process.out.index.get(0).get(1).endsWith("csi") }, - { assert snapshot(process.out).match() } - ) - } - - } - - test("sarscov2 - [vcf, tbi], [], [], [] - vcf.gz output - csi index - stub") { - - options "-stub" - config "./vcf_gz_index_csi.config" - - when { - process { - """ - input[0] = [ - [ id:'test' ], // meta map - [ - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true) - ], - [ - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz.tbi', checkIfExists: true), - ] - ] - input[1] = [[],[]] - input[2] = [[],[]] - input[3] = [[],[]] - """ - } - } - - then { - assertAll( - { assert process.success }, - { assert process.out.vcf.get(0).get(1).endsWith("vcf.gz") }, - { assert process.out.index.get(0).get(1).endsWith("csi") }, - { assert snapshot(process.out).match() } - ) - } - - } - - test("sarscov2 - [vcf, tbi], [], [], [] - vcf.gz output - tbi index - stub") { - - options "-stub" - config "./vcf_gz_index_tbi.config" - - when { - process { - """ - input[0] = [ - [ id:'test' ], // meta map - [ - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true) - ], - [ - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz.tbi', checkIfExists: true), - ] - ] - input[1] = [[],[]] - input[2] = [[],[]] - input[3] = [[],[]] - """ - } - } - - then { - assertAll( - { assert process.success }, - { assert process.out.vcf.get(0).get(1).endsWith("vcf.gz") }, - { assert process.out.index.get(0).get(1).endsWith("tbi") }, - { assert snapshot(process.out).match() } - ) - } - - } - - test("sarscov2 - [vcf, tbi], [], [], bed - stub") { - - options "-stub" - config "./nextflow.config" - - when { - process { - """ - input[0] = [ - [ id:'test' ], // meta map - [ - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true) - ], - [ - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz.tbi', checkIfExists: true), - ] - ] - input[1] = [[],[]] - input[2] = [[],[]] - input[3] = [ - [ id:'test' ], // meta map - [ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test.bed', checkIfExists: true) ] - ] - """ - } - } - - then { - assertAll( - { assert process.success }, - { assert process.out.vcf.get(0).get(1).endsWith("vcf") }, - { assert snapshot(process.out).match() } - ) - } - - } - - test("homo_sapiens - [vcf, tbi], fasta, fai, bed - vcf.gz output - stub") { - - options "-stub" - config "./nextflow.gvcf.config" - when { - process { - """ - input[0] = [ - [ id:'test' ], // meta map - [ - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test.genome.vcf.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test2.genome.vcf.gz', checkIfExists: true) - ], - [ - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test.genome.vcf.gz.tbi', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test2.genome.vcf.gz.tbi', checkIfExists: true), - ] - ] - input[1] = [ - [ id:'test' ], // meta map - [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) ] - ] - input[2] = [ - [ id:'test' ], // meta map - [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) ] - ] - input[3] = [ - [ id:'test' ], // meta map - [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.bed', checkIfExists: true) ] - ] - """ - } - } - - then { - assertAll( - { assert process.success }, - { assert process.out.vcf.get(0).get(1).endsWith("vcf.gz") }, - { assert snapshot(process.out).match() } - ) - } - - } - - test("sarscov2 - [vcf, tbi], [], [], [] - one sample - stub") { - - options "-stub" - config "./nextflow.config" - - when { - process { - """ - input[0] = [ - [ id:'test' ], // meta map - [ - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true) - ], - [ - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true) - ] - ] - input[1] = [[],[]] - input[2] = [[],[]] - input[3] = [[],[]] - """ - } - } - - then { - assertAll( - { assert process.success }, - { assert process.out.vcf.get(0).get(1).endsWith("vcf") }, - { assert snapshot(process.out).match() } - ) - } - - } -} diff --git a/modules/nf-core/bcftools/merge/tests/main.nf.test.snap b/modules/nf-core/bcftools/merge/tests/main.nf.test.snap deleted file mode 100644 index b3b62556..00000000 --- a/modules/nf-core/bcftools/merge/tests/main.nf.test.snap +++ /dev/null @@ -1,607 +0,0 @@ -{ - "sarscov2 - [vcf, tbi], [], [], [] - vcf.gz output - tbi index": { - "content": [ - "e0de448dc8e712956a03ce68d79a0b3a", - "test.vcf.gz.tbi", - [ - "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-09-05T12:34:16.977726522" - }, - "sarscov2 - [vcf, tbi], [], [], [] - vcf output - stub": { - "content": [ - { - "0": [ - [ - { - "id": "test" - }, - "test.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "1": [ - - ], - "2": [ - "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" - ], - "index": [ - - ], - "vcf": [ - [ - { - "id": "test" - }, - "test.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "versions": [ - "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" - ] - } - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-09-05T13:17:34.532910365" - }, - "sarscov2 - [vcf, tbi], [], [], bed": { - "content": [ - "febdcfb851dcfc83d8248520830aef10", - [ - "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" - ] - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-09-05T13:29:48.630057872" - }, - "sarscov2 - [vcf, tbi], [], [], [] - vcf.gz output - index - stub": { - "content": [ - { - "0": [ - [ - { - "id": "test" - }, - "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ] - ], - "1": [ - [ - { - "id": "test" - }, - "test.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "2": [ - "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" - ], - "index": [ - [ - { - "id": "test" - }, - "test.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "vcf": [ - [ - { - "id": "test" - }, - "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ] - ], - "versions": [ - "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" - ] - } - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-09-05T13:17:59.983157569" - }, - "sarscov2 - [vcf, tbi], [], [], [] - vcf output": { - "content": [ - "57bb84274f336465d0a0946b532093b0", - [ - "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" - ] - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-09-05T13:29:05.528412678" - }, - "sarscov2 - [vcf, tbi], [], [], [] - bcf.gz output - stub": { - "content": [ - { - "0": [ - [ - { - "id": "test" - }, - "test.bcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ] - ], - "1": [ - - ], - "2": [ - "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" - ], - "index": [ - - ], - "vcf": [ - [ - { - "id": "test" - }, - "test.bcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ] - ], - "versions": [ - "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" - ] - } - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-09-05T11:58:46.619657457" - }, - "sarscov2 - [vcf, tbi], [], [], [] - vcf.gz output - tbi index - stub": { - "content": [ - { - "0": [ - [ - { - "id": "test" - }, - "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ] - ], - "1": [ - [ - { - "id": "test" - }, - "test.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "2": [ - "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" - ], - "index": [ - [ - { - "id": "test" - }, - "test.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "vcf": [ - [ - { - "id": "test" - }, - "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ] - ], - "versions": [ - "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" - ] - } - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-09-05T13:18:12.848227353" - }, - "sarscov2 - [vcf, tbi], [], [], [] - vcf.gz output - stub": { - "content": [ - { - "0": [ - [ - { - "id": "test" - }, - "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ] - ], - "1": [ - - ], - "2": [ - "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" - ], - "index": [ - - ], - "vcf": [ - [ - { - "id": "test" - }, - "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ] - ], - "versions": [ - "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" - ] - } - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-09-05T11:23:15.794389239" - }, - "sarscov2 - [vcf, tbi], [], [], [] - vcf.gz output - csi index": { - "content": [ - "e0de448dc8e712956a03ce68d79a0b3a", - "test.vcf.gz.csi", - [ - "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-09-05T11:57:16.850641473" - }, - "sarscov2 - [vcf, tbi], [], [], [] - vcf.gz output": { - "content": [ - "e0de448dc8e712956a03ce68d79a0b3a", - [ - "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-09-05T11:56:27.949031071" - }, - "sarscov2 - [vcf, tbi], [], [], bed - stub": { - "content": [ - { - "0": [ - [ - { - "id": "test" - }, - "test.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "1": [ - - ], - "2": [ - "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" - ], - "index": [ - - ], - "vcf": [ - [ - { - "id": "test" - }, - "test.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "versions": [ - "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" - ] - } - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-09-05T13:18:19.273064822" - }, - "sarscov2 - [vcf, tbi], [], [], [] - bcf output": { - "content": [ - "test.bcf", - [ - "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-09-05T11:56:38.567500859" - }, - "sarscov2 - [vcf, tbi], [], [], [] - bcf output - stub": { - "content": [ - { - "0": [ - [ - { - "id": "test" - }, - "test.bcf:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "1": [ - - ], - "2": [ - "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" - ], - "index": [ - - ], - "vcf": [ - [ - { - "id": "test" - }, - "test.bcf:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "versions": [ - "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" - ] - } - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-09-05T13:17:47.356328326" - }, - "sarscov2 - [vcf, tbi], [], [], [] - one sample - stub": { - "content": [ - { - "0": [ - [ - { - "id": "test" - }, - "test.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "1": [ - - ], - "2": [ - "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" - ], - "index": [ - - ], - "vcf": [ - [ - { - "id": "test" - }, - "test.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "versions": [ - "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" - ] - } - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-09-05T15:13:18.708495878" - }, - "homo_sapiens - [vcf, tbi], fasta, fai, bed - vcf.gz output - stub": { - "content": [ - { - "0": [ - [ - { - "id": "test" - }, - "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ] - ], - "1": [ - - ], - "2": [ - "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" - ], - "index": [ - - ], - "vcf": [ - [ - { - "id": "test" - }, - "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ] - ], - "versions": [ - "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" - ] - } - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-09-05T13:56:45.706125286" - }, - "sarscov2 - [vcf, tbi], [], [], [] - vcf.gz output - index": { - "content": [ - "e0de448dc8e712956a03ce68d79a0b3a", - "test.vcf.gz.csi", - [ - "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-09-05T12:33:43.639646108" - }, - "homo_sapiens - [vcf, tbi], fasta, fai, bed - vcf.gz output": { - "content": [ - "645b7f7f9131bfe350a9ec3cf82c17fe", - [ - "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" - ] - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-09-05T13:55:44.299812124" - }, - "sarscov2 - [vcf, tbi], [], [], [] - one sample": { - "content": [ - "2a374cf02f0c32cf607646167e7f153b", - [ - "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" - ] - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-09-05T15:37:38.491844702" - }, - "sarscov2 - [vcf, tbi], [], [], [] - stub": { - "content": [ - { - "0": [ - [ - { - "id": "test" - }, - "test.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "1": [ - - ], - "2": [ - "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" - ], - "index": [ - - ], - "vcf": [ - [ - { - "id": "test" - }, - "test.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "versions": [ - "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" - ] - } - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-09-05T13:17:28.188178904" - }, - "sarscov2 - [vcf, tbi], [], [], [] - vcf.gz output - csi index - stub": { - "content": [ - { - "0": [ - [ - { - "id": "test" - }, - "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ] - ], - "1": [ - [ - { - "id": "test" - }, - "test.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "2": [ - "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" - ], - "index": [ - [ - { - "id": "test" - }, - "test.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "vcf": [ - [ - { - "id": "test" - }, - "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ] - ], - "versions": [ - "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" - ] - } - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-09-05T13:18:06.430943593" - }, - "sarscov2 - [vcf, tbi], [], [], []": { - "content": [ - "e0de448dc8e712956a03ce68d79a0b3a", - [ - "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-09-05T12:31:03.893007442" - }, - "sarscov2 - [vcf, tbi], [], [], [] - bcf.gz output": { - "content": [ - "test.bcf.gz", - [ - "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-09-05T11:56:56.416361069" - } -} \ No newline at end of file diff --git a/modules/nf-core/bcftools/merge/tests/nextflow.config b/modules/nf-core/bcftools/merge/tests/nextflow.config deleted file mode 100644 index c3f0b715..00000000 --- a/modules/nf-core/bcftools/merge/tests/nextflow.config +++ /dev/null @@ -1,5 +0,0 @@ -process { - withName: BCFTOOLS_MERGE { - ext.args = '--force-samples --force-single --no-version' - } -} diff --git a/modules/nf-core/bcftools/merge/tests/nextflow.gvcf.config b/modules/nf-core/bcftools/merge/tests/nextflow.gvcf.config deleted file mode 100644 index 8c457b71..00000000 --- a/modules/nf-core/bcftools/merge/tests/nextflow.gvcf.config +++ /dev/null @@ -1,5 +0,0 @@ -process { - withName: BCFTOOLS_MERGE { - ext.args = { "--force-samples --no-version --output-type z --gvcf $fasta" } - } -} diff --git a/modules/nf-core/bcftools/merge/tests/tags.yml b/modules/nf-core/bcftools/merge/tests/tags.yml deleted file mode 100644 index 1464d0c1..00000000 --- a/modules/nf-core/bcftools/merge/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -bcftools/merge: - - "modules/nf-core/bcftools/merge/**" diff --git a/modules/nf-core/bcftools/merge/tests/vcf.config b/modules/nf-core/bcftools/merge/tests/vcf.config deleted file mode 100644 index 759222e5..00000000 --- a/modules/nf-core/bcftools/merge/tests/vcf.config +++ /dev/null @@ -1,3 +0,0 @@ -process { - ext.args = '--output-type v --no-version' -} diff --git a/modules/nf-core/bcftools/merge/tests/vcf_gz.config b/modules/nf-core/bcftools/merge/tests/vcf_gz.config deleted file mode 100644 index 8b6ad8b4..00000000 --- a/modules/nf-core/bcftools/merge/tests/vcf_gz.config +++ /dev/null @@ -1,3 +0,0 @@ -process { - ext.args = '--output-type z --no-version' -} diff --git a/modules/nf-core/bcftools/merge/tests/vcf_gz_index.config b/modules/nf-core/bcftools/merge/tests/vcf_gz_index.config deleted file mode 100644 index 9f1e9b1d..00000000 --- a/modules/nf-core/bcftools/merge/tests/vcf_gz_index.config +++ /dev/null @@ -1,3 +0,0 @@ -process { - ext.args = "--output-type z --write-index --no-version" -} diff --git a/modules/nf-core/bcftools/merge/tests/vcf_gz_index_csi.config b/modules/nf-core/bcftools/merge/tests/vcf_gz_index_csi.config deleted file mode 100644 index 8308ee1a..00000000 --- a/modules/nf-core/bcftools/merge/tests/vcf_gz_index_csi.config +++ /dev/null @@ -1,3 +0,0 @@ -process { - ext.args = "--output-type z --write-index=csi --no-version" -} diff --git a/modules/nf-core/bcftools/merge/tests/vcf_gz_index_tbi.config b/modules/nf-core/bcftools/merge/tests/vcf_gz_index_tbi.config deleted file mode 100644 index 9be4075b..00000000 --- a/modules/nf-core/bcftools/merge/tests/vcf_gz_index_tbi.config +++ /dev/null @@ -1,3 +0,0 @@ -process { - ext.args = "--output-type z --write-index=tbi --no-version" -} diff --git a/modules/nf-core/trgt/genotype/environment.yml b/modules/nf-core/trgt/genotype/environment.yml new file mode 100644 index 00000000..721e0df3 --- /dev/null +++ b/modules/nf-core/trgt/genotype/environment.yml @@ -0,0 +1,7 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json +channels: + - conda-forge + - bioconda +dependencies: + - "bioconda::trgt=1.2.0" diff --git a/modules/nf-core/trgt/genotype/main.nf b/modules/nf-core/trgt/genotype/main.nf new file mode 100644 index 00000000..3fa0b7b4 --- /dev/null +++ b/modules/nf-core/trgt/genotype/main.nf @@ -0,0 +1,56 @@ +process TRGT_GENOTYPE { + tag "$meta.id" + label 'process_medium' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/trgt:1.2.0--h9ee0642_0': + 'biocontainers/trgt:1.2.0--h9ee0642_0' }" + + input: + tuple val(meta) , path(bam), path(bai), val(karyotype) + tuple val(meta2), path(fasta) + tuple val(meta3), path(fai) + tuple val(meta4), path(repeats) + + output: + tuple val(meta), path("*.vcf.gz") , emit: vcf + tuple val(meta), path("*.spanning.bam"), emit: bam , optional: true + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def karyo = karyotype ? "--karyotype ${karyotype}" : "" + """ + trgt genotype \\ + $args \\ + --genome ${fasta} \\ + --reads ${bam} \\ + --repeats ${repeats} \\ + ${karyo} \\ + --threads ${task.cpus} \\ + --output-prefix ${prefix} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + trgt: \$(trgt --version |& sed '1!d ; s/trgt //') + END_VERSIONS + """ + + stub: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + """ + touch ${prefix}.spanning.bam + echo "" | gzip > ${prefix}.vcf.gz + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + trgt: \$(trgt --version |& sed '1!d ; s/trgt //') + END_VERSIONS + """ +} diff --git a/modules/nf-core/trgt/genotype/meta.yml b/modules/nf-core/trgt/genotype/meta.yml new file mode 100644 index 00000000..bd17e4ca --- /dev/null +++ b/modules/nf-core/trgt/genotype/meta.yml @@ -0,0 +1,98 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/meta-schema.json +name: "trgt_genotype" +description: Tandem repeat genotyping from PacBio HiFi data +keywords: + - repeat expansion + - pacbio + - genomics +tools: + - "trgt": + description: "Tandem repeat genotyping and visualization from PacBio HiFi data" + homepage: "https://github.com/PacificBiosciences/trgt" + documentation: "https://github.com/PacificBiosciences/trgt/blob/main/docs/tutorial.md" + tool_dev_url: "https://github.com/PacificBiosciences/trgt" + doi: "10.1038/s41587-023-02057-3" + licence: + ["Pacific Biosciences Software License (https://github.com/PacificBiosciences/trgt/blob/main/LICENSE.md)"] + +input: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - bam: + type: file + description: Sorted BAM file + pattern: "*.bam" + - bai: + type: file + description: "Index of the BAM file" + pattern: "*.bam" + - karyotype: + type: string + description: "Karyotype of the sample. Either XX or XY. Defaults to XX if not given" + enum: + - XX + - XY + - - meta2: + type: map + description: | + Groovy map containing reference information + e.g. `[ id: 'genome' ]` + - fasta: + type: file + description: "FASTA reference file" + pattern: "*.{fasta,fa,fna}" + - - meta3: + type: map + description: | + Groovy map containing reference information + e.g. `[ id: 'genome' ]` + - fai: + type: file + description: "Index for FASTA file" + pattern: "*.fai" + - - meta4: + type: map + description: | + Groovy map containing repeat information + e.g. `[ id: 'repeats' ]` + - repeats: + type: file + description: "BED file with repeat coordinates" + pattern: "*.bed" + +output: + - vcf: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - "*.vcf.gz": + type: file + description: "VCF file with repeat genotypes" + pattern: "*.vcf.gz" + - bam: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - "*.spanning.bam": + type: file + description: BAM file with pieces of reads aligning to repeats + pattern: "*.spanning.bam" + - versions: + - "versions.yml": + type: file + description: File containing software versions + pattern: "versions.yml" + +authors: + - "@Schmytzi" + - "@fellen31" +maintainers: + - "@Schmytzi" diff --git a/modules/nf-core/trgt/genotype/tests/main.nf.test b/modules/nf-core/trgt/genotype/tests/main.nf.test new file mode 100644 index 00000000..d93a2e96 --- /dev/null +++ b/modules/nf-core/trgt/genotype/tests/main.nf.test @@ -0,0 +1,154 @@ +// nf-core modules test trgt +nextflow_process { + + name "Test Process TRGT_GENOTYPE" + script "../main.nf" + process "TRGT_GENOTYPE" + + tag "modules" + tag "modules_nfcore" + tag "trgt" + tag "trgt/genotype" + tag "samtools/faidx" + tag "gunzip" + + setup { + run("GUNZIP"){ + script "../../../gunzip/main.nf" + process { + """ + input[0] = [ + [ id : 'chr22' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr22_chr22_KI270734v1_random/sequence/genome.fa.gz', checkIfExists: true) + ] + """ + } + } + run("SAMTOOLS_FAIDX"){ + script "../../../samtools/faidx/main.nf" + process { + """ + input[0] = GUNZIP.out.gunzip + input[1] = [[],[]] + """ + } + } + } + + test("homo sapiens - [bam,bai,XX], [fa,fai], bed") { + + when { + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/pacbio/bam/test.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/pacbio/bam/test.sorted.bam.bai', checkIfExists: true), + 'XX' + ] + input[1] = GUNZIP.out.gunzip + input[2] = SAMTOOLS_FAIDX.out.fai + input[3] = Channel.of('chr22\t18890357\t18890451\tID=TEST;MOTIFS=AT;STRUC=(AT)n') + .collectFile(name : 'repeats.bed', newLine: false) + .map { file -> [ [ id : 'chr22' ], file ] } + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("homo sapiens - [bam,bai,[]], [fa,fai], bed") { + + when { + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/pacbio/bam/test.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/pacbio/bam/test.sorted.bam.bai', checkIfExists: true), + [] + ] + input[1] = GUNZIP.out.gunzip + input[2] = SAMTOOLS_FAIDX.out.fai + input[3] = Channel.of('chr22\t18890357\t18890451\tID=TEST;MOTIFS=AT;STRUC=(AT)n') + .collectFile(name : 'repeats.bed', newLine: false) + .map { file -> [ [ id : 'chr22' ], file ] } + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("homo sapiens - [bam,bai,XX], [fa,fai], bed - stub") { + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/pacbio/bam/test.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/pacbio/bam/test.sorted.bam.bai', checkIfExists: true), + 'XX' + ] + input[1] = GUNZIP.out.gunzip + input[2] = SAMTOOLS_FAIDX.out.fai + input[3] = Channel.of('chr22\t18890357\t18890451\tID=TEST;MOTIFS=AT;STRUC=(AT)n') + .collectFile(name : 'repeats.bed', newLine: false) + .map { file -> [ [ id : 'chr22' ], file ] } + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("homo sapiens - [bam,bai,[]], [fa,fai], bed - stub") { + + when { + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/pacbio/bam/test.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/pacbio/bam/test.sorted.bam.bai', checkIfExists: true), + [] + ] + input[1] = GUNZIP.out.gunzip + input[2] = SAMTOOLS_FAIDX.out.fai + input[3] = Channel.of('chr22\t18890357\t18890451\tID=TEST;MOTIFS=AT;STRUC=(AT)n') + .collectFile(name : 'repeats.bed', newLine: false) + .map { file -> [ [ id : 'chr22' ], file ] } + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } +} diff --git a/modules/nf-core/trgt/genotype/tests/main.nf.test.snap b/modules/nf-core/trgt/genotype/tests/main.nf.test.snap new file mode 100644 index 00000000..9e50fb81 --- /dev/null +++ b/modules/nf-core/trgt/genotype/tests/main.nf.test.snap @@ -0,0 +1,198 @@ +{ + "homo sapiens - [bam,bai,XX], [fa,fai], bed": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,4e5b6028e3ea3d06829ca18af1cc492e" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test.spanning.bam:md5,645a2c199d04aaf733ce84247f0b0f37" + ] + ], + "2": [ + "versions.yml:md5,b773615cf974b094032306822d32017b" + ], + "bam": [ + [ + { + "id": "test" + }, + "test.spanning.bam:md5,645a2c199d04aaf733ce84247f0b0f37" + ] + ], + "vcf": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,4e5b6028e3ea3d06829ca18af1cc492e" + ] + ], + "versions": [ + "versions.yml:md5,b773615cf974b094032306822d32017b" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-11-15T16:07:55.029938504" + }, + "homo sapiens - [bam,bai,[]], [fa,fai], bed - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,0337e3287dcc71728c36c185dae7738f" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test.spanning.bam:md5,8d6d1bf813109870692d2f20d59399e7" + ] + ], + "2": [ + "versions.yml:md5,b773615cf974b094032306822d32017b" + ], + "bam": [ + [ + { + "id": "test" + }, + "test.spanning.bam:md5,8d6d1bf813109870692d2f20d59399e7" + ] + ], + "vcf": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,0337e3287dcc71728c36c185dae7738f" + ] + ], + "versions": [ + "versions.yml:md5,b773615cf974b094032306822d32017b" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-11-15T16:08:33.937952067" + }, + "homo sapiens - [bam,bai,XX], [fa,fai], bed - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test.spanning.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,b773615cf974b094032306822d32017b" + ], + "bam": [ + [ + { + "id": "test" + }, + "test.spanning.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "vcf": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,b773615cf974b094032306822d32017b" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-11-15T16:16:39.197756426" + }, + "homo sapiens - [bam,bai,[]], [fa,fai], bed": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,0337e3287dcc71728c36c185dae7738f" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test.spanning.bam:md5,8d6d1bf813109870692d2f20d59399e7" + ] + ], + "2": [ + "versions.yml:md5,b773615cf974b094032306822d32017b" + ], + "bam": [ + [ + { + "id": "test" + }, + "test.spanning.bam:md5,8d6d1bf813109870692d2f20d59399e7" + ] + ], + "vcf": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,0337e3287dcc71728c36c185dae7738f" + ] + ], + "versions": [ + "versions.yml:md5,b773615cf974b094032306822d32017b" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-11-15T16:08:07.631383773" + } +} \ No newline at end of file diff --git a/modules/nf-core/trgt/merge/environment.yml b/modules/nf-core/trgt/merge/environment.yml new file mode 100644 index 00000000..614dc872 --- /dev/null +++ b/modules/nf-core/trgt/merge/environment.yml @@ -0,0 +1,6 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json +channels: + - conda-forge + - bioconda +dependencies: + - "bioconda::trgt=1.2.0" diff --git a/modules/nf-core/bcftools/merge/main.nf b/modules/nf-core/trgt/merge/main.nf similarity index 50% rename from modules/nf-core/bcftools/merge/main.nf rename to modules/nf-core/trgt/merge/main.nf index facb14ea..73e51b02 100644 --- a/modules/nf-core/bcftools/merge/main.nf +++ b/modules/nf-core/trgt/merge/main.nf @@ -1,22 +1,20 @@ -process BCFTOOLS_MERGE { +process TRGT_MERGE { tag "$meta.id" label 'process_medium' conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/bcftools:1.20--h8b25389_0': - 'biocontainers/bcftools:1.20--h8b25389_0' }" + 'https://depot.galaxyproject.org/singularity/trgt:1.2.0--h9ee0642_0': + 'biocontainers/trgt:1.2.0--h9ee0642_0' }" input: - tuple val(meta), path(vcfs), path(tbis) - tuple val(meta2), path(fasta) - tuple val(meta3), path(fai) - tuple val(meta4), path(bed) + tuple val(meta) , path(vcfs), path(tbis) + tuple val(meta2), path(fasta) // optional + tuple val(meta3), path(fai) // optional output: - tuple val(meta), path("*.{bcf,vcf}{,.gz}"), emit: vcf - tuple val(meta), path("*.{csi,tbi}") , emit: index, optional: true - path "versions.yml" , emit: versions + tuple val(meta), path("*.{vcf,vcf.gz,bcf,bcf.gz}"), emit: vcf + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when @@ -24,51 +22,42 @@ process BCFTOOLS_MERGE { script: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" - - def input = (vcfs.collect().size() > 1) ? vcfs.sort{ it.name } : vcfs - def regions = bed ? "--regions-file $bed" : "" def extension = args.contains("--output-type b") || args.contains("-Ob") ? "bcf.gz" : args.contains("--output-type u") || args.contains("-Ou") ? "bcf" : args.contains("--output-type z") || args.contains("-Oz") ? "vcf.gz" : args.contains("--output-type v") || args.contains("-Ov") ? "vcf" : "vcf" + def output = args.contains("--output ") || args.contains("--output=") || args.contains("-o ") ? "" : "--output ${prefix}.${extension}" + def reference = fasta ? "--genome ${fasta}" : "" """ - bcftools merge \\ + trgt merge \\ $args \\ - $regions \\ - --threads $task.cpus \\ - --output ${prefix}.${extension} \\ - $input + $reference \\ + $output \\ + --vcf ${vcfs} cat <<-END_VERSIONS > versions.yml "${task.process}": - bcftools: \$(bcftools --version 2>&1 | head -n1 | sed 's/^.*bcftools //; s/ .*\$//') + trgt: \$(trgt --version |& sed '1!d ; s/trgt //') END_VERSIONS """ stub: - def args = task.ext.args ?: '' + def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" def extension = args.contains("--output-type b") || args.contains("-Ob") ? "bcf.gz" : args.contains("--output-type u") || args.contains("-Ou") ? "bcf" : args.contains("--output-type z") || args.contains("-Oz") ? "vcf.gz" : args.contains("--output-type v") || args.contains("-Ov") ? "vcf" : "vcf" - def index = args.contains("--write-index=tbi") || args.contains("-W=tbi") ? "tbi" : - args.contains("--write-index=csi") || args.contains("-W=csi") ? "csi" : - args.contains("--write-index") || args.contains("-W") ? "csi" : - "" def create_cmd = extension.endsWith(".gz") ? "echo '' | gzip >" : "touch" - def create_index = extension.endsWith(".gz") && index.matches("csi|tbi") ? "touch ${prefix}.${extension}.${index}" : "" - """ - ${create_cmd} ${prefix}.${extension} - ${create_index} + $create_cmd ${prefix}.${extension} cat <<-END_VERSIONS > versions.yml "${task.process}": - bcftools: \$(bcftools --version 2>&1 | head -n1 | sed 's/^.*bcftools //; s/ .*\$//') + trgt: \$(trgt --version |& sed '1!d ; s/trgt //') END_VERSIONS """ } diff --git a/modules/nf-core/trgt/merge/meta.yml b/modules/nf-core/trgt/merge/meta.yml new file mode 100644 index 00000000..e8b79cb2 --- /dev/null +++ b/modules/nf-core/trgt/merge/meta.yml @@ -0,0 +1,80 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/meta-schema.json +name: "trgt_merge" +description: Merge TRGT VCFs from multiple samples +keywords: + - trgt + - repeat expansion + - pacbio + - genomics +tools: + - "trgt": + description: "Tandem repeat genotyping and visualization from PacBio HiFi data" + homepage: "https://github.com/PacificBiosciences/trgt" + documentation: "https://github.com/PacificBiosciences/trgt/blob/main/docs/tutorial.md" + tool_dev_url: "https://github.com/PacificBiosciences/trgt" + doi: "10.1038/s41587-023-02057-3" + licence: + ["Pacific Biosciences Software License (https://github.com/PacificBiosciences/trgt/blob/main/LICENSE.md)"] + +input: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - vcfs: + type: file + description: | + List containing VCF files from TRGT + Must contain at least 2 elements unless `--force-single` is given + Samples in each VCf must be pairwise disjoint + - tbis: + type: file + description: | + List containing indexes of VCF files from TRGT + Must contain at least 2 elements unless `--force-single` is given + - - meta2: + type: map + description: | + Groovy map containing reference information + e.g. `[ id: 'genome' ]` + - fasta: + type: file + description: | + FASTA reference file (optional) + Required if VCFs were generated with TRGT pre 1.0 + pattern: "*.{fasta,fa,fna}" + - - meta3: + type: map + description: | + Groovy map containing reference information + e.g. `[ id: 'genome' ]` + - fai: + type: file + description: | + Index for FASTA file (optional) + Required if VCFs were generated with TRGT pre 1.0 + pattern: "*.fai" + +output: + - vcf: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - "*.{vcf,vcf.gz,bcf,bcf.gz}": + type: file + description: "Merged output file" + pattern: "*.{vcf,vcf.gz,bcf,bcf.gz}" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + +authors: + - "@Schmytzi" +maintainers: + - "@Schmytzi" diff --git a/modules/nf-core/trgt/merge/tests/main.nf.test b/modules/nf-core/trgt/merge/tests/main.nf.test new file mode 100644 index 00000000..dfccd4f9 --- /dev/null +++ b/modules/nf-core/trgt/merge/tests/main.nf.test @@ -0,0 +1,193 @@ +// nf-core modules test trgt/merge +nextflow_process { + + name "Test Process TRGT_MERGE" + script "../main.nf" + process "TRGT_MERGE" + config "./nextflow.config" + + tag "modules" + tag "modules_nfcore" + tag "trgt" + tag "trgt/merge" + tag "trgt/genotype" + tag "samtools/faidx" + tag "samtools/sort" + tag "samtools/index" + tag "bcftools/sort" + tag "gunzip" + + setup { + run("GUNZIP"){ + script "../../../gunzip/main.nf" + process { + """ + input[0] = [ + [ id : 'chr22' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr22_chr22_KI270734v1_random/sequence/genome.fa.gz', checkIfExists: true) + ] + """ + } + } + run("SAMTOOLS_FAIDX"){ + script "../../../samtools/faidx/main.nf" + process { + """ + input[0] = GUNZIP.out.gunzip + input[1] = [[],[]] + """ + } + } + run("TRGT_GENOTYPE"){ + script "../../genotype/main.nf" + process { + """ + input[0] = Channel.fromList([ + tuple( + [ id:'test1' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/pacbio/bam/test.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/pacbio/bam/test.sorted.bam.bai', checkIfExists: true), + 'XX' + ), + tuple( + [ id:'test2' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/pacbio/bam/test.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/pacbio/bam/test.sorted.bam.bai', checkIfExists: true), + 'XX' + ) + ]) + input[1] = GUNZIP.out.gunzip + input[2] = SAMTOOLS_FAIDX.out.fai + input[3] = Channel.of('chr22\t18890357\t18890451\tID=TEST;MOTIFS=AT;STRUC=(AT)n') + .collectFile(name : 'repeats.bed', newLine: false) + .map { file -> [ [ id : 'chr22' ], file ] } + .first() + """ + } + } + run("BCFTOOLS_SORT"){ + script "../../../bcftools/sort/main.nf" + process { + """ + input[0] = TRGT_GENOTYPE.out.vcf + """ + } + } + } + test("homo sapiens - 2 VCFs") { + when { + process { + """ + input[0] = BCFTOOLS_SORT.out.vcf + .join(BCFTOOLS_SORT.out.tbi) + .map { meta, vcf, tbi -> [ [ id : 'test' ], vcf, tbi ] } + .groupTuple() + input[1] = [[],[]] + input[2] = [[],[]] + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot( + path(process.out.vcf.get(0).get(1)).vcf.variantsMD5, + path(process.out.vcf.get(0).get(1)).vcf.summary, + path(process.out.vcf.get(0).get(1)).vcf.sampleCount, + process.out.versions + ).match() } + ) + } + } + test("homo sapiens - 2 VCFs - reference") { + when { + process { + """ + input[0] = BCFTOOLS_SORT.out.vcf + .join(BCFTOOLS_SORT.out.tbi) + .map { meta, vcf, tbi -> [ [ id : 'test' ], vcf, tbi ] } + .groupTuple() + input[1] = GUNZIP.out.gunzip + input[2] = SAMTOOLS_FAIDX.out.fai + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot( + path(process.out.vcf.get(0).get(1)).vcf.variantsMD5, + path(process.out.vcf.get(0).get(1)).vcf.summary, + path(process.out.vcf.get(0).get(1)).vcf.sampleCount, + process.out.versions + ).match() } + ) + } + } + test("homo sapiens - 1 VCF") { + when { + process { + """ + input[0] = BCFTOOLS_SORT.out.vcf + .join(BCFTOOLS_SORT.out.tbi) + .first() + input[1] = GUNZIP.out.gunzip + input[2] = SAMTOOLS_FAIDX.out.fai + """ + } + } + then { + assertAll( + { assert !process.success } + ) + } + } + test("homo sapiens - 1 VCF - --force-single") { + when { + params { + trgt_merge_args = "--force-single" + } + process { + """ + input[0] = BCFTOOLS_SORT.out.vcf + .join(BCFTOOLS_SORT.out.tbi) + .first() + input[1] = GUNZIP.out.gunzip + input[2] = SAMTOOLS_FAIDX.out.fai + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot( + path(process.out.vcf.get(0).get(1)).vcf.variantsMD5, + path(process.out.vcf.get(0).get(1)).vcf.summary, + path(process.out.vcf.get(0).get(1)).vcf.sampleCount, + process.out.versions + ).match() } + ) + } + } + test("homo sapiens - 2 VCFs - stub") { + options "-stub" + when { + process { + """ + input[0] = BCFTOOLS_SORT.out.vcf + .join(BCFTOOLS_SORT.out.tbi) + .map { meta, vcf, tbi -> [ [ id : 'test' ], vcf, tbi ] } + .groupTuple() + input[1] = [[],[]] + input[2] = [[],[]] + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } +} diff --git a/modules/nf-core/trgt/merge/tests/main.nf.test.snap b/modules/nf-core/trgt/merge/tests/main.nf.test.snap new file mode 100644 index 00000000..73f306b0 --- /dev/null +++ b/modules/nf-core/trgt/merge/tests/main.nf.test.snap @@ -0,0 +1,80 @@ +{ + "homo sapiens - 2 VCFs - reference": { + "content": [ + "75acbf6205a44ca44d6fc644dda57d82", + "VcfFile [chromosomes=[chr22], sampleCount=2, variantCount=1, phased=false, phasedAutodetect=false]", + 2, + [ + "versions.yml:md5,ac3a6dca80725cee1bf724975e54c067" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-11-15T14:52:26.329527707" + }, + "homo sapiens - 2 VCFs": { + "content": [ + "75acbf6205a44ca44d6fc644dda57d82", + "VcfFile [chromosomes=[chr22], sampleCount=2, variantCount=1, phased=false, phasedAutodetect=false]", + 2, + [ + "versions.yml:md5,ac3a6dca80725cee1bf724975e54c067" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-11-15T14:39:54.475134386" + }, + "homo sapiens - 2 VCFs - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,ac3a6dca80725cee1bf724975e54c067" + ], + "vcf": [ + [ + { + "id": "test" + }, + "test.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,ac3a6dca80725cee1bf724975e54c067" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-11-15T15:06:23.198648143" + }, + "homo sapiens - 1 VCF - --force-single": { + "content": [ + "6e09773892c37f17e01c9771e8ef2171", + "VcfFile [chromosomes=[chr22], sampleCount=1, variantCount=1, phased=false, phasedAutodetect=false]", + 1, + [ + "versions.yml:md5,ac3a6dca80725cee1bf724975e54c067" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-11-15T15:01:59.765895584" + } +} \ No newline at end of file diff --git a/modules/nf-core/trgt/merge/tests/nextflow.config b/modules/nf-core/trgt/merge/tests/nextflow.config new file mode 100644 index 00000000..b5caec9f --- /dev/null +++ b/modules/nf-core/trgt/merge/tests/nextflow.config @@ -0,0 +1,15 @@ +params { + trgt_merge_args = "" +} +process { + withName: "BCFTOOLS_SORT" { + ext.args = "--write-index=tbi --output-type z" + ext.prefix = { "sorted_${meta.id}" } + } + withName: "TRGT_GENOTYPE" { + ext.args = { "--sample-name ${meta.id}"} + } + withName: "TRGT_MERGE" { + ext.args = params.trgt_merge_args + } +} diff --git a/subworkflows/local/call_repeat_expansions/main.nf b/subworkflows/local/call_repeat_expansions/main.nf index 1fb13ef5..8a1ddbea 100644 --- a/subworkflows/local/call_repeat_expansions/main.nf +++ b/subworkflows/local/call_repeat_expansions/main.nf @@ -1,9 +1,10 @@ include { ADD_FOUND_IN_TAG } from '../../../modules/local/add_found_in_tag/main' -include { TRGT } from '../../../modules/local/trgt' +include { TRGT_GENOTYPE } from '../../../modules/nf-core/trgt/genotype/main' include { SAMTOOLS_INDEX as SAMTOOLS_INDEX_TRGT } from '../../../modules/nf-core/samtools/index/main' include { SAMTOOLS_SORT as SAMTOOLS_SORT_TRGT } from '../../../modules/nf-core/samtools/sort/main' include { BCFTOOLS_SORT as BCFTOOLS_SORT_TRGT } from '../../../modules/nf-core/bcftools/sort/main' -include { BCFTOOLS_MERGE } from '../../../modules/nf-core/bcftools/merge/main' +include { TRGT_MERGE } from '../../../modules/nf-core/trgt/merge/main' +include { BCFTOOLS_INDEX } from '../../../modules/nf-core/bcftools/index/main' workflow CALL_REPEAT_EXPANSIONS { @@ -18,21 +19,21 @@ workflow CALL_REPEAT_EXPANSIONS { ch_versions = Channel.empty() ch_bam_bai - .map { meta, bam, bai -> [meta, bam, bai, meta.sex] } + .map { meta, bam, bai -> [ meta, bam, bai, meta.sex == 1 ? 'XY' : 'XX' ] } .set { ch_trgt_input } // Run TGRT - TRGT ( + TRGT_GENOTYPE ( ch_trgt_input, ch_fasta, ch_fai, ch_trgt_bed ) - ch_versions = ch_versions.mix(TRGT.out.versions) + ch_versions = ch_versions.mix(TRGT_GENOTYPE.out.versions) // Sort and index bam SAMTOOLS_SORT_TRGT ( - TRGT.out.bam, + TRGT_GENOTYPE.out.bam, [[],[]] ) ch_versions = ch_versions.mix(SAMTOOLS_SORT_TRGT.out.versions) @@ -42,7 +43,7 @@ workflow CALL_REPEAT_EXPANSIONS { // Add FOUND_IN=TRGT tag ADD_FOUND_IN_TAG ( - TRGT.out.vcf.map { meta, vcf -> [ meta, vcf, [] ] }, + TRGT_GENOTYPE.out.vcf.map { meta, vcf -> [ meta, vcf, [] ] }, "TRGT" ) @@ -54,19 +55,26 @@ workflow CALL_REPEAT_EXPANSIONS { .join( BCFTOOLS_SORT_TRGT.out.tbi ) .map { meta, bcf, csi -> [ [ id : meta.family_id ], bcf, csi ] } .groupTuple() - .set{ ch_bcftools_merge_in } + .set{ ch_trgt_merge_in } - BCFTOOLS_MERGE ( - ch_bcftools_merge_in, - ch_fasta, - ch_fai, - [[],[]] + TRGT_MERGE ( + ch_trgt_merge_in, + [[],[]], + [[],[]], ) - ch_versions = ch_versions.mix(BCFTOOLS_MERGE.out.versions) + ch_versions = ch_versions.mix(TRGT_MERGE.out.versions) + + BCFTOOLS_INDEX( + TRGT_MERGE.out.vcf + ) + ch_versions = ch_versions.mix(BCFTOOLS_INDEX.out.versions) + emit: sample_vcf = BCFTOOLS_SORT_TRGT.out.vcf // channel: [ val(meta), path(vcf) ] - family_vcf = BCFTOOLS_MERGE.out.vcf // channel: [ val(meta), path(vcf) ] + sample_tbi = BCFTOOLS_SORT_TRGT.out.tbi // channel: [ val(meta), path(tbi) ] + family_vcf = TRGT_MERGE.out.vcf // channel: [ val(meta), path(vcf) ] + family_tbi = BCFTOOLS_INDEX.out.tbi // channel: [ val(meta), path(tbi) ] sample_bam = SAMTOOLS_SORT_TRGT.out.bam // channel: [ val(meta), path(bam) ] sample_bai = SAMTOOLS_INDEX_TRGT.out.bai // channel: [ val(meta), path(bai) ] versions = ch_versions // channel: [ versions.yml ] diff --git a/subworkflows/local/call_repeat_expansions/tests/main.nf.test.snap b/subworkflows/local/call_repeat_expansions/tests/main.nf.test.snap index 21f4893f..84f6ef94 100644 --- a/subworkflows/local/call_repeat_expansions/tests/main.nf.test.snap +++ b/subworkflows/local/call_repeat_expansions/tests/main.nf.test.snap @@ -1,22 +1,23 @@ { "[bam, bai], fasta, fai, bed": { "content": [ - "502b7befd528ce70b8269a8e4b9281df", - "1de84bd070a82b37e6fac25d19ae604e", - "65999ab8f2bc7841de8172468bf23ab6", + "d7d518f68789d3d51a26be28a93b9654", + "51174ac303f7b78f4672f90c13363412", + "a51f00198c7449fd64772fe680c6241", [ + "versions.yml:md5,21f644fc2bb29eb5ed97231b3b95d5d1", + "versions.yml:md5,445b9cde08bfee6fc492aec41ccd39c2", "versions.yml:md5,52272b464e62cb9e5d41622ea76cd070", + "versions.yml:md5,539d877809cffefa48dd1f20b1381cff", "versions.yml:md5,78d86f9ddc871705ca029444a498322f", - "versions.yml:md5,799b136592e7434ff7eb9ddcc70e7e41", - "versions.yml:md5,b9424dde80b33e84164cc956a14aa459", "versions.yml:md5,d7098c270381ae9c3c54fd4224f50206" ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.1" }, - "timestamp": "2024-11-04T16:23:30.11542862" + "timestamp": "2024-12-09T15:52:26.560152049" }, "[bam, bai], fasta, fai, bed - stub": { "content": [ @@ -33,6 +34,17 @@ ] ], "1": [ + [ + { + "id": "test", + "single_end": false, + "family_id": "family", + "sex": 1 + }, + "test.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ [ { "id": "family" @@ -40,7 +52,15 @@ "family.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], - "2": [ + "3": [ + [ + { + "id": "family" + }, + "family.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ [ { "id": "test", @@ -51,7 +71,7 @@ "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "3": [ + "5": [ [ { "id": "test", @@ -62,13 +82,22 @@ "test.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "4": [ + "6": [ + "versions.yml:md5,21f644fc2bb29eb5ed97231b3b95d5d1", + "versions.yml:md5,445b9cde08bfee6fc492aec41ccd39c2", "versions.yml:md5,52272b464e62cb9e5d41622ea76cd070", + "versions.yml:md5,539d877809cffefa48dd1f20b1381cff", "versions.yml:md5,78d86f9ddc871705ca029444a498322f", - "versions.yml:md5,799b136592e7434ff7eb9ddcc70e7e41", - "versions.yml:md5,b9424dde80b33e84164cc956a14aa459", "versions.yml:md5,d7098c270381ae9c3c54fd4224f50206" ], + "family_tbi": [ + [ + { + "id": "family" + }, + "family.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], "family_vcf": [ [ { @@ -99,6 +128,17 @@ "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], + "sample_tbi": [ + [ + { + "id": "test", + "single_end": false, + "family_id": "family", + "sex": 1 + }, + "test.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], "sample_vcf": [ [ { @@ -111,18 +151,19 @@ ] ], "versions": [ + "versions.yml:md5,21f644fc2bb29eb5ed97231b3b95d5d1", + "versions.yml:md5,445b9cde08bfee6fc492aec41ccd39c2", "versions.yml:md5,52272b464e62cb9e5d41622ea76cd070", + "versions.yml:md5,539d877809cffefa48dd1f20b1381cff", "versions.yml:md5,78d86f9ddc871705ca029444a498322f", - "versions.yml:md5,799b136592e7434ff7eb9ddcc70e7e41", - "versions.yml:md5,b9424dde80b33e84164cc956a14aa459", "versions.yml:md5,d7098c270381ae9c3c54fd4224f50206" ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.1" }, - "timestamp": "2024-11-04T16:43:06.104050126" + "timestamp": "2024-12-09T15:52:40.512924071" } -} +} \ No newline at end of file diff --git a/subworkflows/local/call_repeat_expansions/tests/nextflow.config b/subworkflows/local/call_repeat_expansions/tests/nextflow.config index d056805e..b51f0527 100644 --- a/subworkflows/local/call_repeat_expansions/tests/nextflow.config +++ b/subworkflows/local/call_repeat_expansions/tests/nextflow.config @@ -1,5 +1,5 @@ process { - withName: 'CALL_REPEAT_EXPANSIONS:BCFTOOLS_MERGE' { + withName: 'CALL_REPEAT_EXPANSIONS:TRGT_MERGE' { ext.args = '--output-type z --force-single --no-version' } withName: 'CALL_REPEAT_EXPANSIONS:BCFTOOLS_SORT_TRGT' { @@ -8,4 +8,7 @@ process { withName: 'CALL_REPEAT_EXPANSIONS:TRGT' { ext.args = { "--sample-name ${meta.id}" } } + withName: 'CALL_REPEAT_EXPANSIONS:BCFTOOLS_INDEX' { + ext.args = "--tbi" + } } diff --git a/tests/samplesheet.nf.test.snap b/tests/samplesheet.nf.test.snap index c8e14330..7036b956 100644 --- a/tests/samplesheet.nf.test.snap +++ b/tests/samplesheet.nf.test.snap @@ -1,7 +1,7 @@ { "test profile": { "content": [ - 115, + 116, { "ADD_FOUND_IN_TAG": { "bcftools": 1.2, @@ -24,7 +24,7 @@ "BCFTOOLS_FILLTAGS_ANNO": { "bcftools": 1.2 }, - "BCFTOOLS_MERGE": { + "BCFTOOLS_INDEX": { "bcftools": 1.2 }, "BCFTOOLS_NORM_MULTISAMPLE": { @@ -232,8 +232,11 @@ "TABIX_TABIX": { "tabix": 1.2 }, - "TRGT": { - "trgt": "0.7.0-4941fbb" + "TRGT_GENOTYPE": { + "trgt": "1.2.0-9eda4dd" + }, + "TRGT_MERGE": { + "trgt": "1.2.0-9eda4dd" }, "UNTAR_VEP_CACHE": { "untar": 1.34 @@ -590,7 +593,7 @@ ], [ "HG002_Revio_spanning_sorted.bam", - "65999ab8f2bc7841de8172468bf23ab6" + "a51f00198c7449fd64772fe680c6241" ] ], [ @@ -658,17 +661,17 @@ ], [ "FAM_repeats_annotated.vcf.gz", - "7358cfc448a3f679765ec9acc19e3214" + "c70a3906d95d9d9c0a1a61c354302c7c" ], [ "HG002_Revio_sorted.vcf.gz", - "502b7befd528ce70b8269a8e4b9281df" + "d7d518f68789d3d51a26be28a93b9654" ] ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.1" }, "timestamp": "2024-11-22T15:33:19.851771321" } diff --git a/tests/samplesheet_multisample_bam.nf.test.snap b/tests/samplesheet_multisample_bam.nf.test.snap index f0cc2cc1..6a6c10e0 100644 --- a/tests/samplesheet_multisample_bam.nf.test.snap +++ b/tests/samplesheet_multisample_bam.nf.test.snap @@ -1,7 +1,7 @@ { "samplesheet_multisample_bam | --phaser hiphase": { "content": [ - 158, + 159, { "ADD_FOUND_IN_TAG": { "bcftools": 1.2, @@ -24,7 +24,7 @@ "BCFTOOLS_FILLTAGS_ANNO": { "bcftools": 1.2 }, - "BCFTOOLS_MERGE": { + "BCFTOOLS_INDEX": { "bcftools": 1.2 }, "BCFTOOLS_NORM_MULTISAMPLE": { @@ -226,8 +226,11 @@ "TABIX_TABIX": { "tabix": 1.2 }, - "TRGT": { - "trgt": "0.7.0-4941fbb" + "TRGT_GENOTYPE": { + "trgt": "1.2.0-9eda4dd" + }, + "TRGT_MERGE": { + "trgt": "1.2.0-9eda4dd" }, "UNTAR_VEP_CACHE": { "untar": 1.34 @@ -741,11 +744,11 @@ ], [ "HG002_Revio_A_spanning_sorted.bam", - "65999ab8f2bc7841de8172468bf23ab6" + "a51f00198c7449fd64772fe680c6241" ], [ "HG002_Revio_B_spanning_sorted.bam", - "65999ab8f2bc7841de8172468bf23ab6" + "a51f00198c7449fd64772fe680c6241" ] ], [ @@ -853,21 +856,21 @@ ], [ "FAM_repeats_annotated.vcf.gz", - "c8694565de0481b357da91d07d85a228" + "951b776cf91119f9962b75756acedbd0" ], [ "HG002_Revio_A_sorted.vcf.gz", - "502b7befd528ce70b8269a8e4b9281df" + "d7d518f68789d3d51a26be28a93b9654" ], [ "HG002_Revio_B_sorted.vcf.gz", - "502b7befd528ce70b8269a8e4b9281df" + "d7d518f68789d3d51a26be28a93b9654" ] ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.1" }, "timestamp": "2024-11-22T15:15:01.966301935" } From 50cb107909cfddb9820cd9552dc811f254fa87bf Mon Sep 17 00:00:00 2001 From: fellen31 Date: Tue, 7 Jan 2025 15:37:59 +0100 Subject: [PATCH 082/106] Update CHANGELOG because of reviewer comments --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7a9977f0..6b8afbc6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -87,6 +87,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#485](https://github.com/genomic-medicine-sweden/nallo/pull/485) - Updated repeat expansion annotation to annotate per family instead of per sample - [#486](https://github.com/genomic-medicine-sweden/nallo/pull/486) - Updated nf-core modules - [#487](https://github.com/genomic-medicine-sweden/nallo/pull/487) - Changed CI tests to only run tests where changes have been made +- [#488](https://github.com/genomic-medicine-sweden/nallo/pull/488) - Changed naming of input parameters - [#489](https://github.com/genomic-medicine-sweden/nallo/pull/489) - Updated nf-core template to 3.0.2 - [#493](https://github.com/genomic-medicine-sweden/nallo/pull/493) - Refactored `nallo.nf` to remove many nested ifs and easier to follow logic - [#493](https://github.com/genomic-medicine-sweden/nallo/pull/493) - Updated rank_variants dependencies with sv_annotation @@ -188,6 +189,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 | multiqc | 1.21 | 1.25.1 | | ensemblvep/filter_vep | | 113 | | TRGT | 0.4.0 | 1.2.0 | +| bcftools/merge | 1.2 | | > [!NOTE] > Version has been updated if both old and new version information is present. From e383a4a6f5cfc29bf4b85e9043e414a26b4a06b6 Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Wed, 8 Jan 2025 16:12:43 +0100 Subject: [PATCH 083/106] Update conf/modules/annotate_svs.config Co-authored-by: Annick Renevey <47788523+rannick@users.noreply.github.com> --- conf/modules/annotate_svs.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/modules/annotate_svs.config b/conf/modules/annotate_svs.config index 1a672a65..a3274a9f 100644 --- a/conf/modules/annotate_svs.config +++ b/conf/modules/annotate_svs.config @@ -28,7 +28,7 @@ process { ext.prefix = { params.skip_cnv_calling ? "${meta.id}_svs_merged_annotated" : "${meta.id}_svs_cnvs_merged_annotated" } ext.args = { [ "${params.extra_vep_options}", - "--dir_plugins .", + '--dir_plugins .', '--plugin pLI,pLI_values.txt', '--appris --biotype --buffer_size 100 --canonical --cache --ccds', '--compress_output bgzip --distance 5000 --domains', From 034de30a3a84352a33bf3d3f6072b747723f0410 Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Wed, 8 Jan 2025 16:19:15 +0100 Subject: [PATCH 084/106] Update conf/modules/genome_assembly.config Co-authored-by: Annick Renevey <47788523+rannick@users.noreply.github.com> --- conf/modules/genome_assembly.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/modules/genome_assembly.config b/conf/modules/genome_assembly.config index cbab7e9d..5a33ae3c 100644 --- a/conf/modules/genome_assembly.config +++ b/conf/modules/genome_assembly.config @@ -27,7 +27,7 @@ process { withName: '.*:ASSEMBLY:HIFIASM' { ext.args = { [ "${params.extra_hifiasm_options}", - "--dual-scaf", + '--dual-scaf', "--telo-m CCCTAA" ].join(' ') } publishDir = [ From 7329b7b88889fb81719287e8175ca473b3288e81 Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Wed, 8 Jan 2025 16:20:25 +0100 Subject: [PATCH 085/106] Update conf/modules/genome_assembly.config Co-authored-by: Annick Renevey <47788523+rannick@users.noreply.github.com> --- conf/modules/genome_assembly.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/modules/genome_assembly.config b/conf/modules/genome_assembly.config index 5a33ae3c..4c2e91a4 100644 --- a/conf/modules/genome_assembly.config +++ b/conf/modules/genome_assembly.config @@ -28,7 +28,7 @@ process { ext.args = { [ "${params.extra_hifiasm_options}", '--dual-scaf', - "--telo-m CCCTAA" + '--telo-m CCCTAA' ].join(' ') } publishDir = [ enabled: false, From 809d058a9073730ae0e6e4619593f1d2bb862b1c Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Wed, 8 Jan 2025 16:21:31 +0100 Subject: [PATCH 086/106] Update conf/modules/rank_variants.config Co-authored-by: Annick Renevey <47788523+rannick@users.noreply.github.com> --- conf/modules/rank_variants.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/modules/rank_variants.config b/conf/modules/rank_variants.config index 05cf7708..ec2047bb 100644 --- a/conf/modules/rank_variants.config +++ b/conf/modules/rank_variants.config @@ -68,7 +68,7 @@ process { } withName: '.*:RANK_VARIANTS_SVS:GENMOD_MODELS' { ext.prefix = { "${meta.id}_svs_genmod_models" } - ext.args = "--whole_gene --temp_dir ./" + ext.args = '--whole_gene --temp_dir ./' } withName: '.*:RANK_VARIANTS_SVS:GENMOD_SCORE' { ext.prefix = { "${meta.id}_svs_genmod_score" } From 5061b096306b125f28c632c2d8b2607b7ed46953 Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Wed, 8 Jan 2025 16:21:55 +0100 Subject: [PATCH 087/106] Update conf/modules/rank_variants.config Co-authored-by: Annick Renevey <47788523+rannick@users.noreply.github.com> --- conf/modules/rank_variants.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/modules/rank_variants.config b/conf/modules/rank_variants.config index ec2047bb..4c9562f4 100644 --- a/conf/modules/rank_variants.config +++ b/conf/modules/rank_variants.config @@ -72,7 +72,7 @@ process { } withName: '.*:RANK_VARIANTS_SVS:GENMOD_SCORE' { ext.prefix = { "${meta.id}_svs_genmod_score" } - ext.args = "--rank_results" + ext.args = '--rank_results' } withName: '.*:RANK_VARIANTS_SVS:GENMOD_COMPOUND' { ext.prefix = { "${meta.id}_svs_genmod_compound" } From 5af86316b2a38fa8ece4a78d99612e55f8f17fe2 Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Wed, 8 Jan 2025 16:22:24 +0100 Subject: [PATCH 088/106] Update conf/modules/rank_variants.config Co-authored-by: Annick Renevey <47788523+rannick@users.noreply.github.com> --- conf/modules/rank_variants.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/modules/rank_variants.config b/conf/modules/rank_variants.config index 4c9562f4..26be17dc 100644 --- a/conf/modules/rank_variants.config +++ b/conf/modules/rank_variants.config @@ -76,7 +76,7 @@ process { } withName: '.*:RANK_VARIANTS_SVS:GENMOD_COMPOUND' { ext.prefix = { "${meta.id}_svs_genmod_compound" } - ext.args = "--temp_dir ./" + ext.args = '--temp_dir ./' } withName: '.*:RANK_VARIANTS_SVS:BCFTOOLS_SORT' { ext.prefix = { params.skip_cnv_calling ? "${meta.id}_svs_merged_annotated_ranked" : "${meta.id}_svs_cnvs_merged_annotated_ranked" } From a8b1ed4d5bccea321ab63002e8784fe0b3149401 Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Wed, 8 Jan 2025 16:22:41 +0100 Subject: [PATCH 089/106] Update conf/modules/snv_annotation.config Co-authored-by: Annick Renevey <47788523+rannick@users.noreply.github.com> --- conf/modules/snv_annotation.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/modules/snv_annotation.config b/conf/modules/snv_annotation.config index ec2063b3..7cc79292 100644 --- a/conf/modules/snv_annotation.config +++ b/conf/modules/snv_annotation.config @@ -40,7 +40,7 @@ process { ext.prefix = { "${meta.id}_vep" } ext.args = { [ "${params.extra_vep_options}", - "--dir_plugins .", + '--dir_plugins .', "--plugin LoFtool,LoFtool_scores.txt", "--plugin pLI,pLI_values.txt", '--distance 5000', From 5405de50bbb6fcb566da7348b7d731a6099ce387 Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Wed, 8 Jan 2025 16:23:26 +0100 Subject: [PATCH 090/106] Update conf/modules/snv_annotation.config Co-authored-by: Annick Renevey <47788523+rannick@users.noreply.github.com> --- conf/modules/snv_annotation.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/modules/snv_annotation.config b/conf/modules/snv_annotation.config index 7cc79292..a8818ab9 100644 --- a/conf/modules/snv_annotation.config +++ b/conf/modules/snv_annotation.config @@ -41,7 +41,7 @@ process { ext.args = { [ "${params.extra_vep_options}", '--dir_plugins .', - "--plugin LoFtool,LoFtool_scores.txt", + '--plugin LoFtool,LoFtool_scores.txt', "--plugin pLI,pLI_values.txt", '--distance 5000', '--buffer_size 20000', From d3c0dde4df79a74475542d382de9d1e12783e297 Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Wed, 8 Jan 2025 16:23:59 +0100 Subject: [PATCH 091/106] Update conf/modules/snv_annotation.config Co-authored-by: Annick Renevey <47788523+rannick@users.noreply.github.com> --- conf/modules/snv_annotation.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/modules/snv_annotation.config b/conf/modules/snv_annotation.config index a8818ab9..01ae9f94 100644 --- a/conf/modules/snv_annotation.config +++ b/conf/modules/snv_annotation.config @@ -42,7 +42,7 @@ process { "${params.extra_vep_options}", '--dir_plugins .', '--plugin LoFtool,LoFtool_scores.txt', - "--plugin pLI,pLI_values.txt", + '--plugin pLI,pLI_values.txt', '--distance 5000', '--buffer_size 20000', '--format vcf --max_sv_size 248387328', From d7692f1f960e65e96b2c1c3c9b4f9abda42c3197 Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Wed, 8 Jan 2025 16:38:37 +0100 Subject: [PATCH 092/106] Update modules/local/add_found_in_tag/main.nf Co-authored-by: Annick Renevey <47788523+rannick@users.noreply.github.com> --- modules/local/add_found_in_tag/main.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/local/add_found_in_tag/main.nf b/modules/local/add_found_in_tag/main.nf index 1cff6c52..b0a6bc3b 100644 --- a/modules/local/add_found_in_tag/main.nf +++ b/modules/local/add_found_in_tag/main.nf @@ -24,7 +24,7 @@ process ADD_FOUND_IN_TAG { def args = task.ext.args ?: '' def args2 = task.ext.args2 ?: '' def prefix = task.ext.prefix ?: "${meta.id}" - def extension = args2.contains("--output-type b") || args2.contains("-Ob") ? "bcf.gz" : + def extension = args2.contains('--output-type b') || args2.contains('-Ob') ? 'bcf.gz' : args2.contains("--output-type u") || args2.contains("-Ou") ? "bcf" : args2.contains("--output-type z") || args2.contains("-Oz") ? "vcf.gz" : args2.contains("--output-type v") || args2.contains("-Ov") ? "vcf" : From 6f5f108ff7a827a1b005a6508ed2f4aa3aa0a2aa Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Wed, 8 Jan 2025 16:39:02 +0100 Subject: [PATCH 093/106] Update modules/local/add_found_in_tag/main.nf Co-authored-by: Annick Renevey <47788523+rannick@users.noreply.github.com> --- modules/local/add_found_in_tag/main.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/local/add_found_in_tag/main.nf b/modules/local/add_found_in_tag/main.nf index b0a6bc3b..b3e1cbc2 100644 --- a/modules/local/add_found_in_tag/main.nf +++ b/modules/local/add_found_in_tag/main.nf @@ -25,7 +25,7 @@ process ADD_FOUND_IN_TAG { def args2 = task.ext.args2 ?: '' def prefix = task.ext.prefix ?: "${meta.id}" def extension = args2.contains('--output-type b') || args2.contains('-Ob') ? 'bcf.gz' : - args2.contains("--output-type u") || args2.contains("-Ou") ? "bcf" : + args2.contains('--output-type u') || args2.contains('-Ou') ? 'bcf' : args2.contains("--output-type z") || args2.contains("-Oz") ? "vcf.gz" : args2.contains("--output-type v") || args2.contains("-Ov") ? "vcf" : "vcf" From 2c9b2153deca636e6ed1bd7bf35372f6d4c1438a Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Wed, 8 Jan 2025 16:39:27 +0100 Subject: [PATCH 094/106] Update modules/local/add_found_in_tag/main.nf Co-authored-by: Annick Renevey <47788523+rannick@users.noreply.github.com> --- modules/local/add_found_in_tag/main.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/local/add_found_in_tag/main.nf b/modules/local/add_found_in_tag/main.nf index b3e1cbc2..f6b13f82 100644 --- a/modules/local/add_found_in_tag/main.nf +++ b/modules/local/add_found_in_tag/main.nf @@ -26,7 +26,7 @@ process ADD_FOUND_IN_TAG { def prefix = task.ext.prefix ?: "${meta.id}" def extension = args2.contains('--output-type b') || args2.contains('-Ob') ? 'bcf.gz' : args2.contains('--output-type u') || args2.contains('-Ou') ? 'bcf' : - args2.contains("--output-type z") || args2.contains("-Oz") ? "vcf.gz" : + args2.contains('--output-type z') || args2.contains('-Oz') ? 'vcf.gz' : args2.contains("--output-type v") || args2.contains("-Ov") ? "vcf" : "vcf" From 6cd933c26aa2090a79c28a1a99e25714898e6adf Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Wed, 8 Jan 2025 16:40:25 +0100 Subject: [PATCH 095/106] Update modules/local/add_found_in_tag/main.nf Co-authored-by: Annick Renevey <47788523+rannick@users.noreply.github.com> --- modules/local/add_found_in_tag/main.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/local/add_found_in_tag/main.nf b/modules/local/add_found_in_tag/main.nf index f6b13f82..ac0ce2f9 100644 --- a/modules/local/add_found_in_tag/main.nf +++ b/modules/local/add_found_in_tag/main.nf @@ -27,7 +27,7 @@ process ADD_FOUND_IN_TAG { def extension = args2.contains('--output-type b') || args2.contains('-Ob') ? 'bcf.gz' : args2.contains('--output-type u') || args2.contains('-Ou') ? 'bcf' : args2.contains('--output-type z') || args2.contains('-Oz') ? 'vcf.gz' : - args2.contains("--output-type v") || args2.contains("-Ov") ? "vcf" : + args2.contains('--output-type v') || args2.contains('-Ov') ? 'vcf' : "vcf" """ From 67cb0267b2b107352a3b7c3ace20777922dd3b4b Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Wed, 8 Jan 2025 16:40:44 +0100 Subject: [PATCH 096/106] Update modules/local/add_found_in_tag/main.nf Co-authored-by: Annick Renevey <47788523+rannick@users.noreply.github.com> --- modules/local/add_found_in_tag/main.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/local/add_found_in_tag/main.nf b/modules/local/add_found_in_tag/main.nf index ac0ce2f9..7412d76f 100644 --- a/modules/local/add_found_in_tag/main.nf +++ b/modules/local/add_found_in_tag/main.nf @@ -28,7 +28,7 @@ process ADD_FOUND_IN_TAG { args2.contains('--output-type u') || args2.contains('-Ou') ? 'bcf' : args2.contains('--output-type z') || args2.contains('-Oz') ? 'vcf.gz' : args2.contains('--output-type v') || args2.contains('-Ov') ? 'vcf' : - "vcf" + 'vcf' """ bcftools view \\ From e75da9957796b60c422ffca3733ea836fba5bc7e Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Wed, 8 Jan 2025 16:45:06 +0100 Subject: [PATCH 097/106] Update modules/local/add_found_in_tag/main.nf Co-authored-by: Annick Renevey <47788523+rannick@users.noreply.github.com> --- modules/local/add_found_in_tag/main.nf | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/modules/local/add_found_in_tag/main.nf b/modules/local/add_found_in_tag/main.nf index 7412d76f..ff31cdeb 100644 --- a/modules/local/add_found_in_tag/main.nf +++ b/modules/local/add_found_in_tag/main.nf @@ -71,17 +71,17 @@ process ADD_FOUND_IN_TAG { stub: def args2 = task.ext.args2 ?: '' def prefix = task.ext.prefix ?: "${meta.id}" - def extension = args2.contains("--output-type b") || args2.contains("-Ob") ? "bcf.gz" : - args2.contains("--output-type u") || args2.contains("-Ou") ? "bcf" : - args2.contains("--output-type z") || args2.contains("-Oz") ? "vcf.gz" : - args2.contains("--output-type v") || args2.contains("-Ov") ? "vcf" : - "vcf" - def index = args2.contains("--write-index=tbi") || args2.contains("-W=tbi") ? "tbi" : - args2.contains("--write-index=csi") || args2.contains("-W=csi") ? "csi" : - args2.contains("--write-index") || args2.contains("-W") ? "csi" : - "" - def create_cmd = extension.endsWith(".gz") ? "echo '' | gzip >" : "touch" - def create_index = extension.endsWith(".gz") && index.matches("csi|tbi") ? "touch ${prefix}.${extension}.${index}" : "" + def extension = args2.contains('--output-type b') || args2.contains('-Ob') ? 'bcf.gz' : + args2.contains('--output-type u') || args2.contains('-Ou') ? 'bcf' : + args2.contains('--output-type z') || args2.contains('-Oz') ? "vcf.gz" : + args2.contains('--output-type v') || args2.contains('-Ov') ? 'vcf' : + 'vcf' + def index = args2.contains('--write-index=tbi') || args2.contains('-W=tbi') ? 'tbi' : + args2.contains('--write-index=csi') || args2.contains("-W=csi") ? 'csi' : + args2.contains('--write-index') || args2.contains("-W") ? 'csi' : + '' + def create_cmd = extension.endsWith('.gz') ? "echo '' | gzip >" : 'touch' + def create_index = extension.endsWith('.gz') && index.matches("csi|tbi") ? "touch ${prefix}.${extension}.${index}" : '' """ ${create_cmd} ${prefix}.${extension} From 424d3925150604f5eb53147812198ec446cc264d Mon Sep 17 00:00:00 2001 From: Felix Lenner <52530259+fellen31@users.noreply.github.com> Date: Wed, 8 Jan 2025 16:49:46 +0100 Subject: [PATCH 098/106] Update subworkflows/local/utils_nfcore_nallo_pipeline/main.nf Co-authored-by: Annick Renevey <47788523+rannick@users.noreply.github.com> --- subworkflows/local/utils_nfcore_nallo_pipeline/main.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subworkflows/local/utils_nfcore_nallo_pipeline/main.nf b/subworkflows/local/utils_nfcore_nallo_pipeline/main.nf index e7c7aa68..e9c77c47 100644 --- a/subworkflows/local/utils_nfcore_nallo_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_nallo_pipeline/main.nf @@ -521,7 +521,7 @@ def validatePacBioLicense() { } // Genmod within RANK_VARIANTS requires affected individuals in the samplesheet. -// This is a convinience function to fail early if there are families without affected individuals. +// This is a convenience function to fail early if there are families without affected individuals. def validateAllFamiliesHasAffectedSamples(ch_samplesheet, params) { if (params.skip_rank_variants) { From 03ca02dd67c8772dd44f26442bb27ada44744eff Mon Sep 17 00:00:00 2001 From: fellen31 Date: Wed, 8 Jan 2025 16:56:45 +0100 Subject: [PATCH 099/106] Update CHANGELOG --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6b8afbc6..95532813 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -64,6 +64,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#416](https://github.com/genomic-medicine-sweden/nallo/pull/416) - Updated WhatsHap to 2.3 and added the `--use-supplementary` flag to use supplementary reads for phasing by default. Changed modules to use biocontainers instead of custom containers. ([#296](https://github.com/genomic-medicine-sweden/nallo/issues/296)) - [#417](https://github.com/genomic-medicine-sweden/nallo/pull/417) - Updated SNV annotation tests to use correct configuration, and snapshot the md5sum, and summary of the variants - [#418](https://github.com/genomic-medicine-sweden/nallo/pull/418) - Changed the default value of `--alignment_processes` from 1 to 8, meaning the pipeline will perform parallel alignment by default +- [#418](https://github.com/genomic-medicine-sweden/nallo/pull/418) - Changed the order of input files to samtools merge to be sorted on filename, avoiding unstable nf-test snapshots - [#422](https://github.com/genomic-medicine-sweden/nallo/pull/422) - Updated nf-core/tools template to v3.0.1 - [#423](https://github.com/genomic-medicine-sweden/nallo/pull/423) - Updated metro map - [#428](https://github.com/genomic-medicine-sweden/nallo/pull/428) - Changed from using bcftools to SVDB for SV merging From dfebad41ef86c1ec7fb6cfad855c064ceef4e820 Mon Sep 17 00:00:00 2001 From: fellen31 Date: Wed, 8 Jan 2025 17:00:49 +0100 Subject: [PATCH 100/106] Update README with clearer descriptions --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 846815e0..f7188289 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ ##### Alignment & assembly - Align reads to reference with [minimap2](https://github.com/lh3/minimap2) -- Assemble (trio-binned) haploid genomes with [hifiasm](https://github.com/chhylp123/hifiasm) (HiFi only) +- Assemble haploid genomes with [hifiasm](https://github.com/chhylp123/hifiasm) (HiFi only) ##### Variant calling @@ -42,7 +42,7 @@ ##### Annotation -- Annotate SNVs and INDELs with databases of choice, i.e. [gnomAD](https://gnomad.broadinstitute.org), [CADD](https://cadd.gs.washington.edu) etc. with [echtvar](https://github.com/brentp/echtvar) and [VEP](https://github.com/Ensembl/ensembl-vep) +- Annotate SNVs and INDELs with databases of choice, e.g. [gnomAD](https://gnomad.broadinstitute.org), [ClinVar](https://www.ncbi.nlm.nih.gov/clinvar/), [CADD](https://cadd.gs.washington.edu) with [echtvar](https://github.com/brentp/echtvar) and [VEP](https://github.com/Ensembl/ensembl-vep) - Annotate repeat expansions with [stranger](https://github.com/Clinical-Genomics/stranger) - Annotate SVs with [SVDB](https://github.com/J35P312/SVDB) and [VEP](https://github.com/Ensembl/ensembl-vep) From 079080f73b34409a7be3c09ccdd6d3194a57d956 Mon Sep 17 00:00:00 2001 From: fellen31 Date: Wed, 8 Jan 2025 17:14:34 +0100 Subject: [PATCH 101/106] Clarify comments and docs --- conf/modules/general.config | 2 +- docs/usage.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/conf/modules/general.config b/conf/modules/general.config index 932345db..1980639b 100644 --- a/conf/modules/general.config +++ b/conf/modules/general.config @@ -157,7 +157,7 @@ process { publishDir = [ mode: params.publish_dir_mode, path: { "${params.outdir}/aligned_reads/${meta.id}" }, - // only a single BAM file per sample + // A BAM file is only published from here if no merging is required (a sample with one input file), and if phasing is off saveAs: { filename -> filename.equals('versions.yml') ? null : (meta.n_files == 1 && params.skip_phasing ? filename : null) } diff --git a/docs/usage.md b/docs/usage.md index 2f882118..1f95dcb3 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -155,7 +155,7 @@ This subworkflow contains both genome assembly and assembly variant calling. The !!!warning - Make sure chrY PAR is hard masked in the reference genome. + Make sure chrY PAR is hard masked (masked with the letter N) in the reference genome you are using. Turned off with `--skip_genome_assembly`. From 6c73e216a85d0e46c7801d3d11e4714688f037a6 Mon Sep 17 00:00:00 2001 From: fellen31 Date: Mon, 13 Jan 2025 11:04:24 +0100 Subject: [PATCH 102/106] rename metas to sample_metas for more descriptive naming --- modules/local/create_pedigree_file/main.nf | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/local/create_pedigree_file/main.nf b/modules/local/create_pedigree_file/main.nf index fc6eca46..37d9a0c1 100644 --- a/modules/local/create_pedigree_file/main.nf +++ b/modules/local/create_pedigree_file/main.nf @@ -8,7 +8,7 @@ process CREATE_PEDIGREE_FILE { 'biocontainers/python:3.8.3' }" input: - tuple val(meta), val(metas) + tuple val(meta), val(sample_metas) output: tuple val(meta), path("*.ped"), emit: ped @@ -19,9 +19,9 @@ process CREATE_PEDIGREE_FILE { script: def prefix = task.ext.prefix ?: "${meta.id}" - def samples = (metas.collect().size() > 1) ? metas.sort{ a, b -> + def samples = (sample_metas.collect().size() > 1) ? sample_metas.sort{ a, b -> // First sort on family_id, then on sample id - a.family_id <=> b.family_id ?: a.id <=> b.id } : metas + a.family_id <=> b.family_id ?: a.id <=> b.id } : sample_metas outfile_text = ['#family_id', 'sample_id', 'father', 'mother', 'sex', 'phenotype'].join('\\t') def samples_list = [] for(int i = 0; i Date: Mon, 13 Jan 2025 11:10:26 +0100 Subject: [PATCH 103/106] Add `.collect()` to allow filtering more than one family per run. (#523) * without collect only one family per run is filtered * CHANGELOG * CHANGELOG --- CHANGELOG.md | 1 + workflows/nallo.nf | 1 + 2 files changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 95532813..7a9c3895 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -104,6 +104,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#512](https://github.com/genomic-medicine-sweden/nallo/pull/512) - Changed one `single_sample` to `sample` and one `multi_sample` to `family` output directories missed in [#502](https://github.com/genomic-medicine-sweden/nallo/pull/502) - [#512](https://github.com/genomic-medicine-sweden/nallo/pull/512) - Changed all `*_snv_*` to `*_snvs_*` for published output files to match `snvs`, `cnvs`, `svs` and `repeats`. - [#513](https://github.com/genomic-medicine-sweden/nallo/pull/513) - Updated CITATIONS.md link in README +- [#523](https://github.com/genomic-medicine-sweden/nallo/pull/523) - Updated to filter more than one family per run, missed in [#496](https://github.com/genomic-medicine-sweden/nallo/pull/496) ### `Removed` diff --git a/workflows/nallo.nf b/workflows/nallo.nf index 4da63a3b..28bf7506 100644 --- a/workflows/nallo.nf +++ b/workflows/nallo.nf @@ -106,6 +106,7 @@ workflow NALLO { .map { it[0].toString() } // only one element per row .collectFile(name: 'hgnc_ids.txt', newLine: true, sort: true) .map { file -> [ [ id: 'hgnc_ids' ], file ] } + .collect() // // Convert FASTQ to BAM (and vice versa if assembly workflow is active) From 7982d354a32a7157365846e0151c8187fc225135 Mon Sep 17 00:00:00 2001 From: fellen31 Date: Wed, 15 Jan 2025 09:08:49 +0100 Subject: [PATCH 104/106] Trigger CI From 90ebda851315c455cd03e91e4dee37d15a0c3095 Mon Sep 17 00:00:00 2001 From: fellen31 Date: Wed, 15 Jan 2025 12:50:03 +0100 Subject: [PATCH 105/106] Update release date --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7a9c3895..c71c7514 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## 0.4.0 - [2024-11-22] +## 0.4.0 - [2024-01-15] ### `Added` From f99a3c79cc57fb0a781ee9c0de07ac06ff0b545a Mon Sep 17 00:00:00 2001 From: fellen31 Date: Wed, 15 Jan 2025 13:56:22 +0100 Subject: [PATCH 106/106] Correct year --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c71c7514..e4b0fd26 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## 0.4.0 - [2024-01-15] +## 0.4.0 - [2025-01-15] ### `Added`

    Data was processed using genomic-medicine-sweden/nallo v${workflow.manifest.version} ${doi_text} which uses uses code and infrastructure developed and maintained by the nf-core community, reused here under the [MIT license](https://github.com/nf-core/tools/blob/master/LICENSE) (Ewels et al., 2020), utilising reproducible software environments from the Bioconda (Grüning et al., 2018) and Biocontainers (da Veiga Leprevost et al., 2017) projects.

    &TV>DCO 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[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