Quellcode durchsuchen

mendelian concordence

master
LUYAO REN vor 5 Jahren
Ursprung
Commit
e05364915a
22 geänderte Dateien mit 625 neuen und 506 gelöschten Zeilen
  1. +17
    -10
      README.md
  2. +197
    -0
      codescripts/high_confidence_call_vote.py
  3. +144
    -0
      codescripts/reformVCF.py
  4. +1
    -33
      family.tsv
  5. +11
    -8
      inputs
  6. +0
    -34
      tasks/ExtractVCFinfo.wdl
  7. +0
    -27
      tasks/KeepVar.wdl
  8. +0
    -69
      tasks/SepSnvIndel.wdl
  9. +0
    -71
      tasks/SepTrueFalse.wdl
  10. +31
    -0
      tasks/VCFrename.wdl
  11. +2
    -1
      tasks/indelNorm.wdl
  12. +14
    -48
      tasks/mendelian.wdl
  13. +8
    -18
      tasks/merge.wdl
  14. +0
    -35
      tasks/mergeBed.wdl
  15. +34
    -0
      tasks/mergeSister.wdl
  16. +0
    -61
      tasks/mergeVCF.wdl
  17. +30
    -0
      tasks/reformVCF.wdl
  18. +15
    -30
      tasks/sister.wdl
  19. +30
    -0
      tasks/variantsNorm.wdl
  20. +25
    -0
      tasks/votes.wdl
  21. +6
    -18
      tasks/zipIndex.wdl
  22. +60
    -43
      workflow.wdl

+ 17
- 10
README.md Datei anzeigen

@@ -1,12 +1,12 @@
#高置信位点整合Part2——从VCF和BAM文件中提取突变位点的信息
#高置信突变位点的整合

> Author: Run Luyao
>
> E-mail:18110700050@fudan.edu.cn
>
> Git: http://choppy.3steps.cn/renluyao/HCC_Extract_Info.git
> Git:http://choppy.3steps.cn/renluyao/high_confidence_calls_intergration.git
>
> Last Updates: 11/9/2019
> Last Updates: 12/6/2019

## 安装指南

@@ -14,29 +14,36 @@
# 激活choppy环境
source activate choppy
# 安装app
choppy install renluyao/HCC_Extract_Info
choppy install renluyao/high_confidence_calls_intergration
```

## App概述

当我们拿到测序结果的时候,没有办法判断哪些是真的突变位点,哪些是假阳性
中华家系1号全基因组高置信small variants(SNVs和Indels)的整合流程。

## 流程与参数
Quartet家系的四个样本的DNA标准物质被送往多加测序公司,用PCRfree或者PCR的建库方法建立3个技术重复,用多个测序平台(Illumina XTen、Illumina Novaseq、BGISEQ-500、BGISEQ-2000和BGISEQ-T7)进行测序。获得的原始数据用多个分析流程进行分析(比对软件:BWA-mem、Novoalign、Bowtie2,突变检出软件:HaplotyperCaller、Strelka2、FreeBayes)。

经过以上各种因素的组合每个样本得到216个VCF文件,本APP的目的是整合这些VCF文件的结果得到一组可信度较高的突变。

两个问题:
## 流程与参数

1. MNP
2. merge之后的pos相同,但是ref和alt不同

是不是gatk的问题,尝试用bcftools norm

## App输入变量与输入文件



## App输出文件



## 结果展示与解读



## CHANGELOG



## FAQ


+ 197
- 0
codescripts/high_confidence_call_vote.py Datei anzeigen

@@ -0,0 +1,197 @@
# import modules
import sys, argparse, os
import fileinput
import re
import pandas as pd
from operator import itemgetter
from collections import Counter
from itertools import islice

# input arguments
parser = argparse.ArgumentParser(description="this script is to count voting number")

parser.add_argument('-vcf', '--multi_sample_vcf', type=str, help='The VCF file you want to count the voting number', required=True)
parser.add_argument('-dup', '--dup_list', type=str, help='Duplication list', required=True)
parser.add_argument('-sample', '--sample_name', type=str, help='which sample of quartet', required=True)
parser.add_argument('-prefix', '--prefix', type=str, help='Prefix of output file name', required=True)

args = parser.parse_args()
multi_sample_vcf = args.multi_sample_vcf
dup_list = args.dup_list
prefix = args.prefix
sample_name = args.sample_name

vcf_header = '''##fileformat=VCFv4.2
##fileDate=20191224
##source=high_confidence_calls_intergration(choppy app)
##reference=GRCh38.d1.vd1
##INFO=<ID=PCT,Number=1,Type=Float,Description="Percentage of votes">
##FORMAT=<ID=GT,Number=1,Type=String,Description="Genotype">
##FORMAT=<ID=TWINS,Number=0,Type=Flag,Description="0 for sister consistent, 1 for sister inconsistent">
##FORMAT=<ID=TRIO5,Number=0,Type=Flag,Description="0 for trio consistent, 1 for trio inconsistent">
##FORMAT=<ID=TRIO6,Number=0,Type=Flag,Description="0 for trio consistent, 1 for trio inconsistent">
##contig=<ID=chr1,length=248956422>
##contig=<ID=chr2,length=242193529>
##contig=<ID=chr3,length=198295559>
##contig=<ID=chr4,length=190214555>
##contig=<ID=chr5,length=181538259>
##contig=<ID=chr6,length=170805979>
##contig=<ID=chr7,length=159345973>
##contig=<ID=chr8,length=145138636>
##contig=<ID=chr9,length=138394717>
##contig=<ID=chr10,length=133797422>
##contig=<ID=chr11,length=135086622>
##contig=<ID=chr12,length=133275309>
##contig=<ID=chr13,length=114364328>
##contig=<ID=chr14,length=107043718>
##contig=<ID=chr15,length=101991189>
##contig=<ID=chr16,length=90338345>
##contig=<ID=chr17,length=83257441>
##contig=<ID=chr18,length=80373285>
##contig=<ID=chr19,length=58617616>
##contig=<ID=chr20,length=64444167>
##contig=<ID=chr21,length=46709983>
##contig=<ID=chr22,length=50818468>
##contig=<ID=chrX,length=156040895>
'''

# read in duplication list
dup = pd.read_table(dup_list,header=None)
var_dup = dup[0].tolist()

# output file
file_name = prefix + '_annotated.vcf'
outfile = open(file_name,'w')

# write VCF
outputcolumn = '#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO\tFORMAT\tQuartet_DNA_BGI_SEQ2000_BGI_1_20180518_LCL5\tQuartet_DNA_BGI_SEQ2000_BGI_2_20180530_LCL5\tQuartet_DNA_BGI_SEQ2000_BGI_3_20180530_LCL5\tQuartet_DNA_BGI_SEQ2000_WGE_1_20190402_LCL5\tQuartet_DNA_BGI_SEQ2000_WGE_2_20190402_LCL5\tQuartet_DNA_BGI_SEQ500_BGI_1_20180328_LCL5 \tQuartet_DNA_BGI_SEQ500_BGI_2_20180328_LCL5\tQuartet_DNA_BGI_SEQ500_BGI_3_20180328_LCL5\tQuartet_DNA_ILM_Nova_ARD_1_20181108_LCL5\tQuartet_DNA_ILM_Nova_ARD_2_20181108_LCL5\tQuartet_DNA_ILM_Nova_ARD_3_20181108_LCL5\tQuartet_DNA_ILM_Nova_ARD_4_20190111_LCL5\tQuartet_DNA_ILM_Nova_ARD_5_20190111_LCL5\tQuartet_DNA_ILM_Nova_ARD_6_20190111_LCL5\tQuartet_DNA_ILM_Nova_BRG_1_20171024_LCL5\tQuartet_DNA_ILM_Nova_BRG_1_20180930_LCL5\tQuartet_DNA_ILM_Nova_BRG_2_20180930_LCL5\tQuartet_DNA_ILM_Nova_BRG_3_20180930_LCL5\tQuartet_DNA_ILM_Nova_GAC_1_20171025_LCL5\tQuartet_DNA_ILM_Nova_NVG_1_20171024_LCL5\tQuartet_DNA_ILM_Nova_WUX_1_20171024_LCL5\tQuartet_DNA_ILM_XTen_ARD_1_20170403_LCL5\tQuartet_DNA_ILM_XTen_ARD_2_20170403_LCL5\tQuartet_DNA_ILM_XTen_ARD_3_20170403_LCL5\tQuartet_DNA_ILM_XTen_NVG_1_20170329_LCL5\tQuartet_DNA_ILM_XTen_NVG_2_20170329_LCL5\tQuartet_DNA_ILM_XTen_NVG_3_20170329_LCL5\tQuartet_DNA_ILM_XTen_WUX_1_20170216_LCL5\tQuartet_DNA_ILM_XTen_WUX_2_20170216_LCL5\tQuartet_DNA_ILM_XTen_WUX_3_20170216_LCL5\tQuartet_DNA_ILM_XTen_WUX_4_20180703_LCL5\tQuartet_DNA_ILM_XTen_WUX_5_20180703_LCL5\tQuartet_DNA_ILM_XTen_WUX_6_20180703_LCL5' +'\t'+ sample_name+'_pcr'+'\t' + sample_name+'_pcr-free'+ '\t'+ sample_name +'consensus' + '\n'
outfile.write(vcf_header)
outfile.write(outputcolumn)

#function
def vote_percentage(strings):
strings = [x.replace('0/0','.') for x in strings]
gt = [x.split(':')[0] for x in strings]
percentage = round((33 - gt.count('.'))/33,4)
return(str(percentage))

def decide_by_rep(strings):
consensus_rep = ''
mendelian = [x[-5:] for x in strings]
strings = [x.replace('.','0/0') for x in strings]
gt = [x.split(':')[0] for x in strings]
# mendelian consistent?
mendelian_dict = Counter(mendelian)
highest_mendelian = mendelian_dict.most_common(1)
candidate_mendelian = highest_mendelian[0][0]
freq_mendelian = highest_mendelian[0][1]
if (candidate_mendelian == '1:1:1') and (freq_mendelian >= 2):
gt_num_dict = Counter(gt)
highest_gt = gt_num_dict.most_common(1)
candidate_gt = highest_gt[0][0]
freq_gt = highest_gt[0][1]
if (candidate_gt != '0/0') and (freq_gt >= 2):
consensus_rep = candidate_gt
elif (candidate_gt == '0/0') and (freq_gt >= 2):
consensus_rep = '0/0'
else:
consensus_rep = 'inconGT'
elif (candidate_mendelian == '.') and (freq_mendelian >= 2):
consensus_rep = 'noInfo'
else:
consensus_rep = 'inconMen'
return consensus_rep


def main():
for line in fileinput.input(multi_sample_vcf):
headline = re.match('^\#',line)
if headline is not None:
pass
else:
line = line.strip()
strings = line.split('\t')
variant_id = '_'.join([strings[0],strings[1]])
# check if the variants location is duplicated
if variant_id in var_dup:
outLine = '\t'.join(strings) + '\t' + '.' +'\t' + '.' + '\t' + 'dupVar' + '\n'
outfile.write(outLine)
else:
# pre-define
pcr_consensus = ''
pcr_free_consensus = ''
consensus_call = ''
# pcr
pcr = itemgetter(*[9,10,11,12,14,15,16,23,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41])(strings)
SEQ2000 = decide_by_rep(pcr[0:4])
SEQ500 = decide_by_rep(pcr[4:7])
Nova = decide_by_rep(pcr[7:11])
XTen_ARD = decide_by_rep(pcr[11:14])
XTen_NVG = decide_by_rep(pcr[14:17])
XTen_WUX_1 = decide_by_rep(pcr[17:20])
XTen_WUX_2 = decide_by_rep(pcr[20:23])
sequence_site = [SEQ2000,SEQ500,Nova,XTen_ARD,XTen_NVG,XTen_WUX_1,XTen_WUX_2]
sequence_dict = Counter(sequence_site)
highest_sequence = sequence_dict.most_common(1)
candidate_sequence = highest_sequence[0][0]
freq_sequence = highest_sequence[0][1]
if freq_sequence > 4:
pcr_consensus = candidate_sequence
else:
pcr_consensus = 'inconSequenceSite'
# pcr-free
pcr_free = itemgetter(*[13,17,18,19,20,21,22,24,25,26])(strings)
SEQ2000 = decide_by_rep(pcr_free[0])
Nova_ARD_1 = decide_by_rep(pcr_free[1:4])
Nova_ARD_2 = decide_by_rep(pcr_free[4:7])
Nova_BRG = decide_by_rep(pcr_free[7:10])
sequence_site = [SEQ2000,Nova_ARD_1,Nova_ARD_2,Nova_BRG]
highest_sequence = sequence_dict.most_common(1)
candidate_sequence = highest_sequence[0][0]
freq_sequence = highest_sequence[0][1]
if freq_sequence > 2:
pcr_free_consensus = candidate_sequence
else:
pcr_free_consensus = 'inconSequenceSite'
# pcr and pcr-free
tag = ['inconGT','noInfo','inconMen','inconSequenceSite']
if (pcr_consensus == pcr_free_consensus) and (pcr_consensus not in tag) and (pcr_consensus != '0/0'):
consensus_call = pcr_consensus
strings[6] = 'reproducible'
elif (pcr_consensus in tag) or (pcr_free_consensus in tag):
consensus_call = 'filtered'
strings[6] = '.'
elif (pcr_consensus == '0/0') and (pcr_free_consensus not in tag) and (pcr_free_consensus != '0/0'):
consensus_call = 'pcr-free-speicifc'
strings[6] = '.'
elif (pcr_consensus != '0/0') and (pcr_consensus not in tag) and (pcr_free_consensus == '0/0'):
consensus_call = 'pcr-speicifc'
strings[6] = '.'
elif (pcr_consensus == '0/0') and (pcr_free_consensus == '0/0'):
consensus_call = 'confirm for parents'
strings[6] = '.'
else:
consensus_call = 'filtered'
strings[6] = '.'
# percentage
percentage = vote_percentage(strings[9:])
strings[7] = 'PCT=' + percentage
# output
outLine = '\t'.join(strings) + '\t' + pcr_consensus +'\t' + pcr_free_consensus + '\t' + consensus_call + '\n'
outfile.write(outLine)


if __name__ == '__main__':
main()













+ 144
- 0
codescripts/reformVCF.py Datei anzeigen

@@ -0,0 +1,144 @@
# import modules
import sys, argparse, os
import fileinput
import re

parser = argparse.ArgumentParser(description="This script is to split samples in VCF files and rewrite to the right style")

parser.add_argument('-vcf', '--familyVCF', type=str, help='VCF with sister and mendelian infomation', required=True)
parser.add_argument('-name', '--familyName', type=str, help='Family name of the VCF file', required=True)

args = parser.parse_args()

# Rename input:
inputFile = args.familyVCF
family_name = args.familyName

# output filename
LCL5_name = family_name + '.LCL5.vcf'
LCL5file = open(LCL5_name,'w')
LCL6_name = family_name + '.LCL6.vcf'
LCL6file = open(LCL6_name,'w')
LCL7_name = family_name + '.LCL7.vcf'
LCL7file = open(LCL7_name,'w')
LCL8_name = family_name + '.LCL8.vcf'
LCL8file = open(LCL8_name,'w')
family_filename = family_name + '.vcf'
familyfile = open(family_filename,'w')

# default columns, which will be included in the included in the calssifier
vcfheader = '''##fileformat=VCFv4.2
##FILTER=<ID=PASS,Description="the same genotype between twin sister and mendelian consistent in 578 and 678">
##FORMAT=<ID=GT,Number=1,Type=String,Description="Genotype">
##FORMAT=<ID=TWINS,Number=0,Type=Flag,Description="0 for sister consistent, 1 for sister inconsistent">
##FORMAT=<ID=TRIO5,Number=0,Type=Flag,Description="0 for trio consistent, 1 for trio inconsistent">
##FORMAT=<ID=TRIO6,Number=0,Type=Flag,Description="0 for trio consistent, 1 for trio inconsistent">
##contig=<ID=chr1,length=248956422>
##contig=<ID=chr2,length=242193529>
##contig=<ID=chr3,length=198295559>
##contig=<ID=chr4,length=190214555>
##contig=<ID=chr5,length=181538259>
##contig=<ID=chr6,length=170805979>
##contig=<ID=chr7,length=159345973>
##contig=<ID=chr8,length=145138636>
##contig=<ID=chr9,length=138394717>
##contig=<ID=chr10,length=133797422>
##contig=<ID=chr11,length=135086622>
##contig=<ID=chr12,length=133275309>
##contig=<ID=chr13,length=114364328>
##contig=<ID=chr14,length=107043718>
##contig=<ID=chr15,length=101991189>
##contig=<ID=chr16,length=90338345>
##contig=<ID=chr17,length=83257441>
##contig=<ID=chr18,length=80373285>
##contig=<ID=chr19,length=58617616>
##contig=<ID=chr20,length=64444167>
##contig=<ID=chr21,length=46709983>
##contig=<ID=chr22,length=50818468>
##contig=<ID=chrX,length=156040895>
'''
# write VCF
LCL5colname = '#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO\tFORMAT\t'+family_name+'_LCL5'+'\n'
LCL5file.write(vcfheader)
LCL5file.write(LCL5colname)

LCL6colname = '#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO\tFORMAT\t'+family_name+'_LCL6'+'\n'
LCL6file.write(vcfheader)
LCL6file.write(LCL6colname)

LCL7colname = '#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO\tFORMAT\t'+family_name+'_LCL7'+'\n'
LCL7file.write(vcfheader)
LCL7file.write(LCL7colname)

LCL8colname = '#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO\tFORMAT\t'+family_name+'_LCL8'+'\n'
LCL8file.write(vcfheader)
LCL8file.write(LCL8colname)

familycolname = '#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO\tFORMAT\t'+'LCL5\t'+'LCL6\t'+'LCL7\t'+'LCL8'+'\n'
familyfile.write(vcfheader)
familyfile.write(familycolname)

# reform VCF
def process(oneLine):
line = oneLine.rstrip()
strings = line.strip().split('\t')
# replace .
# LCL5 uniq
if strings[11] == '.':
strings[11] = '0/0'
strings[9] = strings[12]
strings[10] = strings[13]
else:
pass
# LCL6 uniq
if strings[14] == '.':
strings[14] = '0/0'
strings[12] = strings[9]
strings[13] = strings[10]
else:
pass
# sister
if strings[11] == strings[14]:
add_format = ":1"
else:
add_format = ":0"
# trioLCL5
if strings[15] == 'MD=1':
add_format = add_format + ":1"
else:
add_format = add_format + ":0"
# trioLCL6
if strings[7] == 'MD=1':
add_format = add_format + ":1"
else:
add_format = add_format + ":0"
# filter
if (strings[11] == strings[14]) and (strings[15] == 'MD=1') and (strings[7] == 'MD=1'):
strings[6] = 'PASS'
else:
strings[6] = '.'
# output LCL5
LCL5outLine = strings[0]+'\t'+strings[1]+'\t'+strings[2]+'\t'+strings[3]+'\t'+strings[4]+'\t'+'.'+'\t'+strings[6]+'\t'+ '.' +'\t'+ 'GT:TWINS:TRIO5:TRIO6' + '\t' + strings[14] + add_format + '\n'
LCL5file.write(LCL5outLine)
# output LCL6
LCL6outLine = strings[0]+'\t'+strings[1]+'\t'+strings[2]+'\t'+strings[3]+'\t'+strings[4]+'\t'+'.'+'\t'+strings[6]+'\t'+ '.' +'\t'+ 'GT:TWINS:TRIO5:TRIO6' + '\t' + strings[11] + add_format + '\n'
LCL6file.write(LCL6outLine)
# output LCL7
LCL7outLine = strings[0]+'\t'+strings[1]+'\t'+strings[2]+'\t'+strings[3]+'\t'+strings[4]+'\t'+'.'+'\t'+strings[6]+'\t'+ '.' +'\t'+ 'GT:TWINS:TRIO5:TRIO6' + '\t' + strings[10] + add_format + '\n'
LCL7file.write(LCL7outLine)
# output LCL8
LCL8outLine = strings[0]+'\t'+strings[1]+'\t'+strings[2]+'\t'+strings[3]+'\t'+strings[4]+'\t'+'.'+'\t'+strings[6]+'\t'+ '.' +'\t'+ 'GT:TWINS:TRIO5:TRIO6' + '\t' + strings[9] + add_format + '\n'
LCL8file.write(LCL8outLine)
# output family
familyoutLine = strings[0]+'\t'+strings[1]+'\t'+strings[2]+'\t'+strings[3]+'\t'+strings[4]+'\t'+ '.'+'\t'+strings[6]+'\t'+ '.' +'\t'+ 'GT:TWINS:TRIO5:TRIO6' + '\t' + strings[14] + add_format +'\t' + strings[11] + add_format + '\t' + strings[10] + add_format +'\t' + strings[9] + add_format + '\n'
familyfile.write(familyoutLine)


for line in fileinput.input(inputFile):
m = re.match('^\#',line)
if m is not None:
pass
else:
process(line)


+ 1
- 33
family.tsv Datei anzeigen

@@ -1,33 +1 @@
oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_BGI_SEQ2000_BGI_LCL8_1_20180518.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_BGI_SEQ2000_BGI_LCL7_1_20180518.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_BGI_SEQ2000_BGI_LCL5_1_20180518.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_BGI_SEQ2000_BGI_LCL6_1_20180518.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_BGI_SEQ2000_BGI_LCL8_1_20180518.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_BGI_SEQ2000_BGI_LCL7_1_20180518.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_BGI_SEQ2000_BGI_LCL5_1_20180518.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_BGI_SEQ2000_BGI_LCL6_1_20180518.normed.callable.vcf.gz.tbi Quartet_DNA_BGI_SEQ2000_BGI_LCL8_1_20180518 Quartet_DNA_BGI_SEQ2000_BGI_LCL7_1_20180518 Quartet_DNA_BGI_SEQ2000_BGI_LCL5_1_20180518 BGI_SEQ2000_BGI_1
oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_BGI_SEQ2000_BGI_LCL8_2_20180530.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_BGI_SEQ2000_BGI_LCL7_2_20180530.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_BGI_SEQ2000_BGI_LCL5_2_20180530.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_BGI_SEQ2000_BGI_LCL6_2_20180530.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_BGI_SEQ2000_BGI_LCL8_2_20180530.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_BGI_SEQ2000_BGI_LCL7_2_20180530.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_BGI_SEQ2000_BGI_LCL5_2_20180530.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_BGI_SEQ2000_BGI_LCL6_2_20180530.normed.callable.vcf.gz.tbi Quartet_DNA_BGI_SEQ2000_BGI_LCL8_2_20180530 Quartet_DNA_BGI_SEQ2000_BGI_LCL7_2_20180530 Quartet_DNA_BGI_SEQ2000_BGI_LCL5_2_20180530 BGI_SEQ2000_BGI_2
oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_BGI_SEQ2000_BGI_LCL8_3_20180530.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_BGI_SEQ2000_BGI_LCL7_3_20180530.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_BGI_SEQ2000_BGI_LCL5_3_20180530.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_BGI_SEQ2000_BGI_LCL6_3_20180530.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_BGI_SEQ2000_BGI_LCL8_3_20180530.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_BGI_SEQ2000_BGI_LCL7_3_20180530.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_BGI_SEQ2000_BGI_LCL5_3_20180530.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_BGI_SEQ2000_BGI_LCL6_3_20180530.normed.callable.vcf.gz.tbi Quartet_DNA_BGI_SEQ2000_BGI_LCL8_3_20180530 Quartet_DNA_BGI_SEQ2000_BGI_LCL7_3_20180530 Quartet_DNA_BGI_SEQ2000_BGI_LCL5_3_20180530 BGI_SEQ2000_BGI_3
oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_BGI_SEQ2000_WGE_LCL8_1_20190402.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_BGI_SEQ2000_WGE_LCL7_1_20190402.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_BGI_SEQ2000_WGE_LCL5_1_20190402.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_BGI_SEQ2000_WGE_LCL6_1_20190402.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_BGI_SEQ2000_WGE_LCL8_1_20190402.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_BGI_SEQ2000_WGE_LCL7_1_20190402.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_BGI_SEQ2000_WGE_LCL5_1_20190402.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_BGI_SEQ2000_WGE_LCL6_1_20190402.normed.callable.vcf.gz.tbi Normal_DNA_M8 Normal_DNA_F7 Normal_DNA_D5 BGI_SEQ2000_WGE_1
oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_BGI_SEQ2000_WGE_LCL8_2_20190402.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_BGI_SEQ2000_WGE_LCL7_2_20190402.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_BGI_SEQ2000_WGE_LCL5_2_20190402.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_BGI_SEQ2000_WGE_LCL6_2_20190402.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_BGI_SEQ2000_WGE_LCL8_2_20190402.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_BGI_SEQ2000_WGE_LCL7_2_20190402.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_BGI_SEQ2000_WGE_LCL5_2_20190402.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_BGI_SEQ2000_WGE_LCL6_2_20190402.normed.callable.vcf.gz.tbi PCRFree_DNA_M8 PCRFree_DNA_F7 PCRFree_DNA_D5 BGI_SEQ2000_WGE_2
oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_BGI_SEQ500_BGI_LCL8_1_20180328.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_BGI_SEQ500_BGI_LCL7_1_20180328.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_BGI_SEQ500_BGI_LCL5_1_20180328.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_BGI_SEQ500_BGI_LCL6_1_20180328.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_BGI_SEQ500_BGI_LCL8_1_20180328.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_BGI_SEQ500_BGI_LCL7_1_20180328.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_BGI_SEQ500_BGI_LCL5_1_20180328.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_BGI_SEQ500_BGI_LCL6_1_20180328.normed.callable.vcf.gz.tbi Quartet_DNA_BGI_SEQ500_BGI_LCL8_1_20180328 Quartet_DNA_BGI_SEQ500_BGI_LCL7_1_20180328 Quartet_DNA_BGI_SEQ500_BGI_LCL5_1_20180328 BGI_SEQ500_BGI_1
oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_BGI_SEQ500_BGI_LCL8_2_20180328.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_BGI_SEQ500_BGI_LCL7_2_20180328.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_BGI_SEQ500_BGI_LCL5_2_20180328.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_BGI_SEQ500_BGI_LCL6_2_20180328.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_BGI_SEQ500_BGI_LCL8_2_20180328.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_BGI_SEQ500_BGI_LCL7_2_20180328.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_BGI_SEQ500_BGI_LCL5_2_20180328.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_BGI_SEQ500_BGI_LCL6_2_20180328.normed.callable.vcf.gz.tbi Quartet_DNA_BGI_SEQ500_BGI_LCL8_2_20180328 Quartet_DNA_BGI_SEQ500_BGI_LCL7_2_20180328 Quartet_DNA_BGI_SEQ500_BGI_LCL5_2_20180328 BGI_SEQ500_BGI_2
oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_BGI_SEQ500_BGI_LCL8_3_20180328.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_BGI_SEQ500_BGI_LCL7_3_20180328.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_BGI_SEQ500_BGI_LCL5_3_20180328.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_BGI_SEQ500_BGI_LCL6_3_20180328.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_BGI_SEQ500_BGI_LCL8_3_20180328.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_BGI_SEQ500_BGI_LCL7_3_20180328.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_BGI_SEQ500_BGI_LCL5_3_20180328.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_BGI_SEQ500_BGI_LCL6_3_20180328.normed.callable.vcf.gz.tbi Quartet_DNA_BGI_SEQ500_BGI_LCL8_3_20180328 Quartet_DNA_BGI_SEQ500_BGI_LCL7_3_20180328 Quartet_DNA_BGI_SEQ500_BGI_LCL5_3_20180328 BGI_SEQ500_BGI_3
oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_ARD_LCL8_1_20181108.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_ARD_LCL7_1_20181108.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_ARD_LCL5_1_20181108.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_ARD_LCL6_1_20181108.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_ARD_LCL8_1_20181108.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_ARD_LCL7_1_20181108.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_ARD_LCL5_1_20181108.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_ARD_LCL6_1_20181108.normed.callable.vcf.gz.tbi Quartet_DNA_ILM_Nova_ARD_LCL8_1_20181108 Quartet_DNA_ILM_Nova_ARD_LCL7_1_20181108 Quartet_DNA_ILM_Nova_ARD_LCL5_1_20181108 ILM_Nova_ARD_1
oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_ARD_LCL8_2_20181108.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_ARD_LCL7_2_20181108.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_ARD_LCL5_2_20181108.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_ARD_LCL6_2_20181108.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_ARD_LCL8_2_20181108.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_ARD_LCL7_2_20181108.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_ARD_LCL5_2_20181108.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_ARD_LCL6_2_20181108.normed.callable.vcf.gz.tbi Quartet_DNA_ILM_Nova_ARD_LCL8_2_20181108 Quartet_DNA_ILM_Nova_ARD_LCL7_2_20181108 Quartet_DNA_ILM_Nova_ARD_LCL5_2_20181108 ILM_Nova_ARD_2
oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_ARD_LCL8_3_20181108.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_ARD_LCL7_3_20181108.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_ARD_LCL5_3_20181108.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_ARD_LCL6_3_20181108.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_ARD_LCL8_3_20181108.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_ARD_LCL7_3_20181108.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_ARD_LCL5_3_20181108.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_ARD_LCL6_3_20181108.normed.callable.vcf.gz.tbi Quartet_DNA_ILM_Nova_ARD_LCL8_3_20181108 Quartet_DNA_ILM_Nova_ARD_LCL7_3_20181108 Quartet_DNA_ILM_Nova_ARD_LCL5_3_20181108 ILM_Nova_ARD_3
oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_ARD_LCL8_4_20190111.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_ARD_LCL7_4_20190111.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_ARD_LCL5_4_20190111.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_ARD_LCL6_4_20190111.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_ARD_LCL8_4_20190111.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_ARD_LCL7_4_20190111.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_ARD_LCL5_4_20190111.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_ARD_LCL6_4_20190111.normed.callable.vcf.gz.tbi Quartet_DNA_ILM_Nova_ARD_LCL8_4_20190111 Quartet_DNA_ILM_Nova_ARD_LCL7_4_20190111 Quartet_DNA_ILM_Nova_ARD_LCL5_4_20190111 ILM_Nova_ARD_4
oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_ARD_LCL8_5_20190111.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_ARD_LCL7_5_20190111.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_ARD_LCL5_5_20190111.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_ARD_LCL6_5_20190111.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_ARD_LCL8_5_20190111.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_ARD_LCL7_5_20190111.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_ARD_LCL5_5_20190111.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_ARD_LCL6_5_20190111.normed.callable.vcf.gz.tbi Quartet_DNA_ILM_Nova_ARD_LCL8_5_20190111 Quartet_DNA_ILM_Nova_ARD_LCL7_5_20190111 Quartet_DNA_ILM_Nova_ARD_LCL5_5_20190111 ILM_Nova_ARD_5
oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_ARD_LCL8_6_20190111.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_ARD_LCL7_6_20190111.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_ARD_LCL5_6_20190111.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_ARD_LCL6_6_20190111.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_ARD_LCL8_6_20190111.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_ARD_LCL7_6_20190111.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_ARD_LCL5_6_20190111.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_ARD_LCL6_6_20190111.normed.callable.vcf.gz.tbi Quartet_DNA_ILM_Nova_ARD_LCL8_6_20190111 Quartet_DNA_ILM_Nova_ARD_LCL7_6_20190111 Quartet_DNA_ILM_Nova_ARD_LCL5_6_20190111 ILM_Nova_ARD_6
oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_BRG_LCL8_1_20171024.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_BRG_LCL7_1_20171024.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_BRG_LCL5_1_20171024.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_BRG_LCL6_1_20171024.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_BRG_LCL8_1_20171024.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_BRG_LCL7_1_20171024.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_BRG_LCL5_1_20171024.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_BRG_LCL6_1_20171024.normed.callable.vcf.gz.tbi Quartet_DNA_ILM_Nova_BRG_LCL8_1_20171024 Quartet_DNA_ILM_Nova_BRG_LCL7_1_20171024 Quartet_DNA_ILM_Nova_BRG_LCL5_1_20171024 ILM_Nova_BRG_1
oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_BRG_LCL8_1_20180930.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_BRG_LCL7_1_20180930.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_BRG_LCL5_1_20180930.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_BRG_LCL6_1_20180930.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_BRG_LCL8_1_20180930.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_BRG_LCL7_1_20180930.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_BRG_LCL5_1_20180930.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_BRG_LCL6_1_20180930.normed.callable.vcf.gz.tbi Quartet_DNA_ILM_Nova_BRG_LCL8_1_20180930 Quartet_DNA_ILM_Nova_BRG_LCL7_1_20180930 Quartet_DNA_ILM_Nova_BRG_LCL5_1_20180930 ILM_Nova_BRG_2
oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_BRG_LCL8_2_20180930.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_BRG_LCL7_2_20180930.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_BRG_LCL5_2_20180930.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_BRG_LCL6_2_20180930.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_BRG_LCL8_2_20180930.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_BRG_LCL7_2_20180930.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_BRG_LCL5_2_20180930.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_BRG_LCL6_2_20180930.normed.callable.vcf.gz.tbi Quartet_DNA_ILM_Nova_BRG_LCL8_2_20180930 Quartet_DNA_ILM_Nova_BRG_LCL7_2_20180930 Quartet_DNA_ILM_Nova_BRG_LCL5_2_20180930 ILM_Nova_BRG_3
oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_BRG_LCL8_3_20180930.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_BRG_LCL7_3_20180930.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_BRG_LCL5_3_20180930.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_BRG_LCL6_3_20180930.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_BRG_LCL8_3_20180930.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_BRG_LCL7_3_20180930.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_BRG_LCL5_3_20180930.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_BRG_LCL6_3_20180930.normed.callable.vcf.gz.tbi Quartet_DNA_ILM_Nova_BRG_LCL8_3_20180930 Quartet_DNA_ILM_Nova_BRG_LCL7_3_20180930 Quartet_DNA_ILM_Nova_BRG_LCL5_3_20180930 ILM_Nova_BRG_4
oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_GAC_LCL8_1_20171025.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_GAC_LCL7_1_20171025.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_GAC_LCL5_1_20171025.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_GAC_LCL6_1_20171025.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_GAC_LCL8_1_20171025.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_GAC_LCL7_1_20171025.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_GAC_LCL5_1_20171025.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_GAC_LCL6_1_20171025.normed.callable.vcf.gz.tbi Quartet_DNA_ILM_Nova_GAC_LCL8_1_20171025 Quartet_DNA_ILM_Nova_GAC_LCL7_1_20171025 Quartet_DNA_ILM_Nova_GAC_LCL5_1_20171025 ILM_Nova_GAC_1
oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_NVG_LCL8_1_20171024.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_NVG_LCL7_1_20171024.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_NVG_LCL5_1_20171024.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_NVG_LCL6_1_20171024.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_NVG_LCL8_1_20171024.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_NVG_LCL7_1_20171024.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_NVG_LCL5_1_20171024.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_NVG_LCL6_1_20171024.normed.callable.vcf.gz.tbi Quartet_DNA_ILM_Nova_NVG_LCL8_1_20171024 Quartet_DNA_ILM_Nova_NVG_LCL7_1_20171024 Quartet_DNA_ILM_Nova_NVG_LCL5_1_20171024 ILM_Nova_NVG_1
oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_WUX_LCL8_1_20171024.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_WUX_LCL7_1_20171024.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_WUX_LCL5_1_20171024.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_WUX_LCL6_1_20171024.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_WUX_LCL8_1_20171024.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_WUX_LCL7_1_20171024.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_WUX_LCL5_1_20171024.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_Nova_WUX_LCL6_1_20171024.normed.callable.vcf.gz.tbi Quartet_DNA_ILM_Nova_WUX_LCL8_1_20171024 Quartet_DNA_ILM_Nova_WUX_LCL7_1_20171024 Quartet_DNA_ILM_Nova_WUX_LCL5_1_20171024 ILM_Nova_WUX_1
oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_ARD_LCL8_1_20170403.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_ARD_LCL7_1_20170403.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_ARD_LCL5_1_20170403.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_ARD_LCL6_1_20170403.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_ARD_LCL8_1_20170403.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_ARD_LCL7_1_20170403.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_ARD_LCL5_1_20170403.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_ARD_LCL6_1_20170403.normed.callable.vcf.gz.tbi Quartet_DNA_ILM_XTen_ARD_LCL8_1_20170403 Quartet_DNA_ILM_XTen_ARD_LCL7_1_20170403 Quartet_DNA_ILM_XTen_ARD_LCL5_1_20170403 ILM_XTen_ARD_1
oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_ARD_LCL8_2_20170403.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_ARD_LCL7_2_20170403.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_ARD_LCL5_2_20170403.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_ARD_LCL6_2_20170403.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_ARD_LCL8_2_20170403.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_ARD_LCL7_2_20170403.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_ARD_LCL5_2_20170403.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_ARD_LCL6_2_20170403.normed.callable.vcf.gz.tbi Quartet_DNA_ILM_XTen_ARD_LCL8_2_20170403 Quartet_DNA_ILM_XTen_ARD_LCL7_2_20170403 Quartet_DNA_ILM_XTen_ARD_LCL5_2_20170403 ILM_XTen_ARD_2
oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_ARD_LCL8_3_20170403.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_ARD_LCL7_3_20170403.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_ARD_LCL5_3_20170403.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_ARD_LCL6_3_20170403.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_ARD_LCL8_3_20170403.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_ARD_LCL7_3_20170403.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_ARD_LCL5_3_20170403.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_ARD_LCL6_3_20170403.normed.callable.vcf.gz.tbi Quartet_DNA_ILM_XTen_ARD_LCL8_3_20170403 Quartet_DNA_ILM_XTen_ARD_LCL7_3_20170403 Quartet_DNA_ILM_XTen_ARD_LCL5_3_20170403 ILM_XTen_ARD_3
oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_NVG_LCL8_1_20170329.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_NVG_LCL7_1_20170329.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_NVG_LCL5_1_20170329.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_NVG_LCL6_1_20170329.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_NVG_LCL8_1_20170329.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_NVG_LCL7_1_20170329.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_NVG_LCL5_1_20170329.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_NVG_LCL6_1_20170329.normed.callable.vcf.gz.tbi Quartet_DNA_ILM_XTen_NVG_LCL8_1_20170329 Quartet_DNA_ILM_XTen_NVG_LCL7_1_20170329 Quartet_DNA_ILM_XTen_NVG_LCL5_1_20170329 ILM_XTen_NVG_1
oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_NVG_LCL8_2_20170329.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_NVG_LCL7_2_20170329.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_NVG_LCL5_2_20170329.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_NVG_LCL6_2_20170329.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_NVG_LCL8_2_20170329.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_NVG_LCL7_2_20170329.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_NVG_LCL5_2_20170329.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_NVG_LCL6_2_20170329.normed.callable.vcf.gz.tbi Quartet_DNA_ILM_XTen_NVG_LCL8_2_20170329 Quartet_DNA_ILM_XTen_NVG_LCL7_2_20170329 Quartet_DNA_ILM_XTen_NVG_LCL5_2_20170329 ILM_XTen_NVG_2
oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_NVG_LCL8_3_20170329.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_NVG_LCL7_3_20170329.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_NVG_LCL5_3_20170329.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_NVG_LCL6_3_20170329.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_NVG_LCL8_3_20170329.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_NVG_LCL7_3_20170329.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_NVG_LCL5_3_20170329.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_NVG_LCL6_3_20170329.normed.callable.vcf.gz.tbi Quartet_DNA_ILM_XTen_NVG_LCL8_3_20170329 Quartet_DNA_ILM_XTen_NVG_LCL7_3_20170329 Quartet_DNA_ILM_XTen_NVG_LCL5_3_20170329 ILM_XTen_NVG_3
oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_WUX_LCL8_1_20170216.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_WUX_LCL7_1_20170216.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_WUX_LCL5_1_20170216.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_WUX_LCL6_1_20170216.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_WUX_LCL8_1_20170216.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_WUX_LCL7_1_20170216.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_WUX_LCL5_1_20170216.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_WUX_LCL6_1_20170216.normed.callable.vcf.gz.tbi Quartet_DNA_ILM_XTen_WUX_LCL8_1_20170216 Quartet_DNA_ILM_XTen_WUX_LCL7_1_20170216 Quartet_DNA_ILM_XTen_WUX_LCL5_1_20170216 ILM_XTen_WUX_1
oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_WUX_LCL8_2_20170216.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_WUX_LCL7_2_20170216.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_WUX_LCL5_2_20170216.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_WUX_LCL6_2_20170216.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_WUX_LCL8_2_20170216.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_WUX_LCL7_2_20170216.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_WUX_LCL5_2_20170216.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_WUX_LCL6_2_20170216.normed.callable.vcf.gz.tbi Quartet_DNA_ILM_XTen_WUX_LCL8_2_20170216 Quartet_DNA_ILM_XTen_WUX_LCL7_2_20170216 Quartet_DNA_ILM_XTen_WUX_LCL5_2_20170216 ILM_XTen_WUX_2
oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_WUX_LCL8_3_20170216.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_WUX_LCL7_3_20170216.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_WUX_LCL5_3_20170216.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_WUX_LCL6_3_20170216.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_WUX_LCL8_3_20170216.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_WUX_LCL7_3_20170216.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_WUX_LCL5_3_20170216.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_WUX_LCL6_3_20170216.normed.callable.vcf.gz.tbi Quartet_DNA_ILM_XTen_WUX_LCL8_3_20170216 Quartet_DNA_ILM_XTen_WUX_LCL7_3_20170216 Quartet_DNA_ILM_XTen_WUX_LCL5_3_20170216 ILM_XTen_WUX_3
oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_WUX_LCL8_4_20180703.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_WUX_LCL7_4_20180703.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_WUX_LCL5_4_20180703.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_WUX_LCL6_4_20180703.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_WUX_LCL8_4_20180703.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_WUX_LCL7_4_20180703.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_WUX_LCL5_4_20180703.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_WUX_LCL6_4_20180703.normed.callable.vcf.gz.tbi Quartet_DNA_ILM_XTen_WUX_LCL8_4_20180703 Quartet_DNA_ILM_XTen_WUX_LCL7_4_20180703 Quartet_DNA_ILM_XTen_WUX_LCL5_4_20180703 ILM_XTen_WUX_4
oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_WUX_LCL8_5_20180703.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_WUX_LCL7_5_20180703.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_WUX_LCL5_5_20180703.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_WUX_LCL6_5_20180703.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_WUX_LCL8_5_20180703.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_WUX_LCL7_5_20180703.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_WUX_LCL5_5_20180703.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_WUX_LCL6_5_20180703.normed.callable.vcf.gz.tbi Quartet_DNA_ILM_XTen_WUX_LCL8_5_20180703 Quartet_DNA_ILM_XTen_WUX_LCL7_5_20180703 Quartet_DNA_ILM_XTen_WUX_LCL5_5_20180703 ILM_XTen_WUX_5
oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_WUX_LCL8_6_20180703.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_WUX_LCL7_6_20180703.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_WUX_LCL5_6_20180703.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_WUX_LCL6_6_20180703.normed.callable.vcf.gz oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_WUX_LCL8_6_20180703.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_WUX_LCL7_6_20180703.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_WUX_LCL5_6_20180703.normed.callable.vcf.gz.tbi oss://pgx-result/renluyao/high_confidence_call/normed_vcf/Quartet_DNA_ILM_XTen_WUX_LCL6_6_20180703.normed.callable.vcf.gz.tbi Quartet_DNA_ILM_XTen_WUX_LCL8_6_20180703 Quartet_DNA_ILM_XTen_WUX_LCL7_6_20180703 Quartet_DNA_ILM_XTen_WUX_LCL5_6_20180703 ILM_XTen_WUX_6
#LCL5vcf LCL6vcf LCL7vcf LCL8vcf LCL5name LCL6name LCL7name LCL8name familyname

+ 11
- 8
inputs Datei anzeigen

@@ -1,10 +1,13 @@
{
"{{ project_name }}.sister.docker": "registry-vpc.cn-shanghai.aliyuncs.com/pgx-docker-registry/rtg-tools:latest",
"{{ project_name }}.mendelian.docker": "registry-vpc.cn-shanghai.aliyuncs.com/pgx-docker-registry/rtg-tools:latest",
"{{ project_name }}.disk_size": "100",
"{{ project_name }}.merge.docker": "registry-vpc.cn-shanghai.aliyuncs.com/pgx-docker-registry/rtg-tools:latest",
"{{ project_name }}.fasta": "GRCh38.d1.vd1.fa",
"{{ project_name }}.LCL6mendelian.docker": "registry-vpc.cn-shanghai.aliyuncs.com/pgx-docker-registry/vbt:v1.1",
"{{ project_name }}.LCL5mendelian.docker": "registry-vpc.cn-shanghai.aliyuncs.com/pgx-docker-registry/vbt:v1.1",
"{{ project_name }}.disk_size": "150",
"{{ project_name }}.inputSamplesFile": "{{ inputSamplesFile }}",
"{{ project_name }}.sdf": "oss://chinese-quartet/quartet-storage-data/reference_data/GRCh38.d1.vd1.sdf/",
"{{ project_name }}.cluster_config": "OnDemand bcs.a2.large img-ubuntu-vpc",
"{{ project_name }}.merge.sample_name": "{{ sample_name }}"
}
"{{ project_name }}.LCL6variantsNorm.docker": "registry-vpc.cn-shanghai.aliyuncs.com/pgx-docker-registry/bcftools:v1.9"",
"{{ project_name }}.cluster_config": "OnDemand bcs.a2.xlarge img-ubuntu-vpc",
"{{ project_name }}.LCL7variantsNorm.docker": "registry-vpc.cn-shanghai.aliyuncs.com/pgx-docker-registry/bcftools:v1.9"",
"{{ project_name }}.LCL5variantsNorm.docker": "registry-vpc.cn-shanghai.aliyuncs.com/pgx-docker-registry/bcftools:v1.9"",
"{{ project_name }}.LCL8variantsNorm.docker": "registry-vpc.cn-shanghai.aliyuncs.com/pgx-docker-registry/bcftools:v1.9"",
"{{ project_name }}.ref_dir": "oss://chinese-quartet/quartet-storage-data/reference_data/"
}

+ 0
- 34
tasks/ExtractVCFinfo.wdl Datei anzeigen

@@ -1,34 +0,0 @@
task ExtractVCFinfo {
File snv_train
File snv_test
File indel_train
File indel_test
String snv_train_sampleName = basename(snv_train,".vcf")
String snv_test_sampleName = basename(snv_test,".vcf")
String indel_train_sampleName = basename(indel_train,".vcf")
String indel_test_sampleName = basename(indel_test,".vcf")
String docker
String cluster_config
String disk_size
command <<<
python /opt/extract_vcf_information.py -i ${snv_train} -o ${snv_train_sampleName}.txt
python /opt/extract_vcf_information.py -i ${snv_test} -o ${snv_test_sampleName}.txt
python /opt/extract_vcf_information.py -i ${indel_train} -o ${indel_train_sampleName}.txt
python /opt/extract_vcf_information.py -i ${indel_test} -o ${indel_test_sampleName}.txt
>>>

runtime {
docker:docker
cluster: cluster_config
systemDisk: "cloud_ssd 40"
dataDisk: "cloud_ssd " + disk_size + " /cromwell_root/"
}

output {
File snv_train_vcf = "${snv_train_sampleName}.txt"
File snv_test_vcf = "${snv_test_sampleName}.txt"
File indel_train_vcf = "${indel_train_sampleName}.txt"
File indel_test_vcf = "${indel_test_sampleName}.txt"
}
}

+ 0
- 27
tasks/KeepVar.wdl Datei anzeigen

@@ -1,27 +0,0 @@
task KeepVar {
File violation_merged_vcf
File consistent_merged_vcf
String docker
String cluster_config
String disk_size
command <<<
python /opt/select_small_variants_supported_by_all_callsets.py -i ${violation_merged_vcf} -o violation.all.selected

python /opt/select_small_variants_supported_by_all_callsets.py -i ${consistent_merged_vcf} -o consistent.all.selected
>>>

runtime {
docker:docker
cluster: cluster_config
systemDisk: "cloud_ssd 40"
dataDisk: "cloud_ssd " + disk_size + " /cromwell_root/"
}
output {
File violation_keeped_vcf = "violation.all.selected.vcf"
File violation_outlier_vcf = "violation.all.selected_outlier.vcf"
File consistent_keeped_vcf = "consistent.all.selected.vcf"
File consistent_outlier_vcf = "consistent.all.selected_outlier.vcf"
}
}


+ 0
- 69
tasks/SepSnvIndel.wdl Datei anzeigen

@@ -1,69 +0,0 @@
task SepSnvIndel {
File vcf
String sampleName = basename(vcf,".normed.vcf")
File keeped_vcf
String docker
String cluster_config
String disk_size
command <<<

cat ${vcf} | grep '#' > header
cat ${vcf} | sed '/^#/d' | awk '$5!~/,/' > removed.body
cat ${vcf} | sed '/^#/d' | awk '$5~/,/' > MNP.body
cat header removed.body > ${sampleName}.MNPremoved.vcf
cat header MNP.body > ${sampleName}.MNP.vcf

rtg bgzip ${sampleName}.MNPremoved.vcf
rtg index -f vcf ${sampleName}.MNPremoved.vcf.gz


rtg bgzip ${keeped_vcf} -c > all.selected.vcf.gz
rtg index -f vcf all.selected.vcf.gz

rtg vcffilter -i ${sampleName}.MNPremoved.vcf.gz -o ${sampleName}.normed.snv.train.vcf.gz --include-vcf=all.selected.vcf.gz --snps-only

rtg vcffilter -i ${sampleName}.MNPremoved.vcf.gz -o ${sampleName}.normed.snv.test.vcf.gz --exclude-vcf=all.selected.vcf.gz --snps-only

rtg vcffilter -i ${sampleName}.MNPremoved.vcf.gz -o ${sampleName}.normed.indel.train.vcf.gz --include-vcf=all.selected.vcf.gz --non-snps-only

rtg vcffilter -i ${sampleName}.MNPremoved.vcf.gz -o ${sampleName}.normed.indel.test.vcf.gz --exclude-vcf=all.selected.vcf.gz --non-snps-only

rtg vcffilter -i ${sampleName}.MNPremoved.vcf.gz -o ${sampleName}.normed.snv.vcf.gz --snps-only

rtg vcffilter -i ${sampleName}.MNPremoved.vcf.gz -o ${sampleName}.normed.indel.vcf.gz --non-snps-only

gzip -d ${sampleName}.normed.snv.train.vcf.gz -c > ${sampleName}.normed.snv.train.vcf
gzip -d ${sampleName}.normed.snv.test.vcf.gz -c > ${sampleName}.normed.snv.test.vcf
gzip -d ${sampleName}.normed.indel.train.vcf.gz -c > ${sampleName}.normed.indel.train.vcf
gzip -d ${sampleName}.normed.indel.test.vcf.gz -c > ${sampleName}.normed.indel.test.vcf
>>>

runtime {
docker:docker
cluster: cluster_config
systemDisk: "cloud_ssd 40"
dataDisk: "cloud_ssd " + disk_size + " /cromwell_root/"
}

output {
File MNP="${sampleName}.MNP.vcf"
File snv_gz = "${sampleName}.normed.snv.vcf.gz"
File snv_idx = "${sampleName}.normed.snv.vcf.gz.tbi"
File indel_gz = "${sampleName}.normed.indel.vcf.gz"
File indel_idx = "${sampleName}.normed.indel.vcf.gz.tbi"
File snv_train = "${sampleName}.normed.snv.train.vcf"
File snv_test = "${sampleName}.normed.snv.test.vcf"
File indel_train = "${sampleName}.normed.indel.train.vcf"
File indel_test = "${sampleName}.normed.indel.test.vcf"
File snv_train_gz = "${sampleName}.normed.snv.train.vcf.gz"
File snv_test_gz = "${sampleName}.normed.snv.test.vcf.gz"
File indel_train_gz = "${sampleName}.normed.indel.train.vcf.gz"
File indel_test_gz = "${sampleName}.normed.indel.test.vcf.gz"
File snv_train_idx = "${sampleName}.normed.snv.train.vcf.gz.tbi"
File snv_test_idx = "${sampleName}.normed.snv.test.vcf.gz.tbi"
File indel_train_idx = "${sampleName}.normed.indel.train.vcf.gz.tbi"
File indel_test_idx = "${sampleName}.normed.indel.test.vcf.gz.tbi"
}
}

+ 0
- 71
tasks/SepTrueFalse.wdl Datei anzeigen

@@ -1,71 +0,0 @@
task SepTrueFalse {
File snv_true_bed
File snv_false_bed
File indel_true_bed
File indel_false_bed
File snv_padding
File indel_padding

File snv_gz
File indel_gz
File snv_idx
File indel_idx
File snv_test_gz
File indel_test_gz
File snv_test_idx
File indel_test_idx

String sampleName = basename(snv_gz,".normed.snv.vcf.gz")
String docker
String cluster_config
String disk_size

command <<<

rtg vcffilter -i ${snv_test_gz} -o ${sampleName}.true.snv.vcf.gz --include-bed=${snv_true_bed}

rtg vcffilter -i ${snv_test_gz} -o ${sampleName}.false.snv.vcf.gz --include-bed=${snv_false_bed}

rtg vcffilter -i ${snv_gz} -o ${sampleName}.remain.snv.vcf.gz --exclude-bed=${snv_false_bed}

rtg vcffilter -i ${snv_gz} -o ${sampleName}.padding.snv.vcf.gz --include-bed=${snv_padding}

rtg vcffilter -i ${indel_test_gz} -o ${sampleName}.true.indel.vcf.gz --include-bed=${indel_true_bed}

rtg vcffilter -i ${indel_test_gz} -o ${sampleName}.false.indel.vcf.gz --include-bed=${indel_false_bed}

rtg vcffilter -i ${indel_gz} -o ${sampleName}.remain.indel.vcf.gz --exclude-bed=${indel_false_bed}

rtg vcffilter -i ${indel_gz} -o ${sampleName}.padding.indel.vcf.gz --include-bed=${indel_padding}

>>>

runtime {
docker:docker
cluster: cluster_config
systemDisk: "cloud_ssd 40"
dataDisk: "cloud_ssd " + disk_size + " /cromwell_root/"
}

output {
File snv_true_vcf = "${sampleName}.true.snv.vcf.gz"
File snv_true_vcf_index = "${sampleName}.true.snv.vcf.gz.tbi"
File snv_false_vcf = "${sampleName}.false.snv.vcf.gz"
File snv_false_vcf_index = "${sampleName}.false.snv.vcf.gz.tbi"
File snv_remain_vcf = "${sampleName}.remain.snv.vcf.gz"
File snv_remain_vcf_index = "${sampleName}.remain.snv.vcf.gz.tbi"
File snv_padding_vcf = "${sampleName}.padding.snv.vcf.gz"
File snv_padding_vcf_index = "${sampleName}.padding.snv.vcf.gz.tbi"

File indel_true_vcf = "${sampleName}.true.indel.vcf.gz"
File indel_true_vcf_index = "${sampleName}.true.indel.vcf.gz.tbi"
File indel_false_vcf = "${sampleName}.false.indel.vcf.gz"
File indel_false_vcf_index = "${sampleName}.false.indel.vcf.gz.tbi"
File indel_remain_vcf = "${sampleName}.remain.indel.vcf.gz"
File indel_remain_vcf_index = "${sampleName}.remain.indel.vcf.gz.tbi"
File indel_padding_vcf = "${sampleName}.padding.indel.vcf.gz"
File indel_padding_vcf_index = "${sampleName}.padding.indel.vcf.gz.tbi"
}
}


+ 31
- 0
tasks/VCFrename.wdl Datei anzeigen

@@ -0,0 +1,31 @@
task VCFrename {
File trio_vcf_gz
File trio_vcf_idx
String mother_name
String father_name
String child_name
String family_name
String child
String docker
String cluster_config
String disk_size
command <<<
echo "MOTHER ${mother_name}.${child}
FATHER ${father_name}.${child}
CHILD ${child_name}" > rename.txt

rtg vcfannotate -i ${trio_vcf_gz} -o ${family_name}.${child}.rename.vcf.gz --relabel=rename.txt
>>>

runtime {
docker:docker
cluster: cluster_config
systemDisk: "cloud_ssd 40"
dataDisk: "cloud_ssd " + disk_size + " /cromwell_root/"
}
output {
File rename_trio_vcf_gz = "${family_name}.${child}.rename.vcf.gz"
File rename_trio_vcf_idx = "${family_name}.${child}.rename.vcf.gz.tbi"
}
}

+ 2
- 1
tasks/indelNorm.wdl Datei anzeigen

@@ -11,10 +11,11 @@ task indelNorm {

cat ${vcf} | grep '#' > header
cat ${vcf} | grep -v '#' > body
cat body | grep -w '^chr1\|^chr2\|^chr3\|^chr4\|^chr5\|^chr6\|^chr7\|^chr8\|^chr9\|^chr10\|^chr11\|^chr12\|^chr13\|^chr14\|^chr15\|^chr16\|^chr17\|^chr18\|^chr19\|^chr20\|^chr21\|^chr22\|^chrX\|^chrY\|^chrM' > body.filtered
cat body | grep -w '^chr1\|^chr2\|^chr3\|^chr4\|^chr5\|^chr6\|^chr7\|^chr8\|^chr9\|^chr10\|^chr11\|^chr12\|^chr13\|^chr14\|^chr15\|^chr16\|^chr17\|^chr18\|^chr19\|^chr20\|^chr21\|^chr22\|^chrX\' > body.filtered
cat header body.filtered > ${sampleName}.filtered.vcf

/opt/hall-lab/bcftools-1.9/bin/bcftools norm -f ${ref_dir}/${fasta} ${sampleName}.filtered.vcf > ${sampleName}.normed.vcf

>>>

runtime {

+ 14
- 48
tasks/mendelian.wdl Datei anzeigen

@@ -1,50 +1,24 @@
task mendelian {
File mother_vcf_gz
File father_vcf_gz
File child_vcf_gz
File mother_vcf_idx
File father_vcf_idx
File child_vcf_idx
String mother_name
String father_name
File child_vcf
File LCL7_vcf
File LCL8_vcf
String LCL7_name
String LCL8_name
String child_name
String family_name
File sdf
File ref_dir
String fasta
String docker
String cluster_config
String disk_size
command <<<
rtg vcfmerge -o family.vcf.gz ${child_vcf_gz} ${mother_vcf_gz} ${father_vcf_gz}
export LD_LIBRARY_PATH=/opt/htslib-1.9
nt=$(nproc)
mkdir VBT

rtg vcfannotate -i family.vcf.gz -o family.anno.vcf.gz \
--add-header "##SAMPLE=<ID=${mother_name},Sex=FEMALE>" \
--add-header "##SAMPLE=<ID=${father_name},Sex=MALE>" \
--add-header "##SAMPLE=<ID=${child_name},Sex=FEMALE>" \
--add-header "##PEDIGREE=<Child=${child_name},Mother=${mother_name},Father=${father_name}>"

rtg mendelian -i family.anno.vcf.gz -t ${sdf} -o ${family_name}.family.anno.mendelian.vcf.gz --lenient

zcat ${family_name}.family.anno.mendelian.vcf.gz | grep '#' > header
zcat ${family_name}.family.anno.mendelian.vcf.gz | grep -v '#'| grep 'MCU\|MCV' | cat header - > ${family_name}.violation.vcf
zcat ${family_name}.family.anno.mendelian.vcf.gz | grep -v '#'| grep -v 'MCV' | grep -v 'MCU' | cat header - > ${family_name}.consistent.vcf

rtg bgzip ${family_name}.violation.vcf
rtg index -f vcf ${family_name}.violation.vcf.gz

rtg bgzip ${family_name}.consistent.vcf
rtg index -f vcf ${family_name}.consistent.vcf.gz

zcat ${child_vcf_gz} | grep '##' > child_header
zcat ${family_name}.violation.vcf.gz | grep -v '##' | cut -f1-10 | awk '$10!~/\./' | cat child_header - > ${child_name}.violation.vcf
zcat ${family_name}.consistent.vcf.gz | grep -v '##' | cut -f1-10 | awk '$10!~/\./' | cat child_header - > ${child_name}.consistent.vcf

rtg bgzip ${child_name}.violation.vcf
rtg index -f vcf ${child_name}.violation.vcf.gz

rtg bgzip ${child_name}.consistent.vcf
rtg index -f vcf ${child_name}.consistent.vcf.gz
/opt/VBT-TrioAnalysis/vbt mendelian -ref ${ref_dir}/${fasta} -mother ${LCL8_vcf} -father ${LCL7_vcf} -child ${child_vcf} -outDir VBT -out-prefix ${child_name}.family --output-violation-regions -thread-count $nt

cat VBT/${child_name}.family_trio.vcf > ${child_name}.family.vcf
>>>

runtime {
@@ -54,15 +28,7 @@ task mendelian {
dataDisk: "cloud_ssd " + disk_size + " /cromwell_root/"
}
output {
File family_vcf_gz = "${family_name}.family.anno.mendelian.vcf.gz"
File family_vcf_index = "${family_name}.family.anno.mendelian.vcf.gz.tbi"
File family_violation_vcf_gz = "${family_name}.violation.vcf.gz"
File family_violation_vcf_idx = "${family_name}.violation.vcf.gz.tbi"
File family_consistent_vcf_gz = "${family_name}.consistent.vcf.gz"
File family_consistent_vcf_idx = "${family_name}.consistent.vcf.gz.tbi"
File violation_vcf_gz = "${child_name}.violation.vcf.gz"
File violation_vcf_idx = "${child_name}.violation.vcf.gz.tbi"
File consistent_vcf_gz = "${child_name}.consistent.vcf.gz"
File consistent_vcf_idx = "${child_name}.consistent.vcf.gz.tbi"
Array[File] vbt_mendelian = glob("VBT/*")
File trio_vcf = "${child_name}.family.vcf"
}
}

+ 8
- 18
tasks/merge.wdl Datei anzeigen

@@ -1,25 +1,17 @@
task merge {
Array[File] child_violation_sister
Array[File] child_violation_sister_idx
Array[File] child_violation_nonsister
Array[File] child_violation_nonsister_idx
Array[File] child_consistent_sister
Array[File] child_consistent_sister_idx
Array[File] child_consistent_nonsister
Array[File] child_consistent_nonsister_idx
String sample_name
Array[File] family_vcf_gz
Array[File] family_vcf_idx
String sample
String docker
String cluster_config
String disk_size
command <<<
rtg vcfmerge --force-merge-all --no-gzip -o ${sample_name}.violation.sister.vcf ${sep=" " child_violation_sister}

rtg vcfmerge --force-merge-all --no-gzip -o ${sample_name}.violation.nonsister.vcf ${sep=" " child_violation_nonsister}
rtg vcfmerge --force-merge-all --no-gzip -o ${sample}.merged.vcf ${sep=" " family_vcf_gz}

cat ${sample}.merged.vcf | grep -v '#' | cut -f1-2 | sed s'/\t/_/g' | sort | uniq -c | sed 's/\s\+/\t/g' | awk '{ if ($1 != 1) { print } }' | cut -f3 > ${sample}.vcf_dup.txt

rtg vcfmerge --force-merge-all --no-gzip -o ${sample_name}.consistent.sister.vcf ${sep=" " child_consistent_sister}
rtg vcfmerge --force-merge-all --no-gzip -o ${sample_name}.consistent.nonsister.vcf ${sep=" " child_consistent_nonsister}
>>>

runtime {
@@ -29,9 +21,7 @@ task merge {
dataDisk: "cloud_ssd " + disk_size + " /cromwell_root/"
}
output {
File violation_sister_merged_vcf = "${sample_name}.violation.sister.vcf"
File violation_nonsister_merged_vcf = "${sample_name}.violation.nonsister.vcf"
File consistent_sister_merged_vcf = "${sample_name}.consistent.sister.vcf"
File consistent_nonsister_merged_vcf = "${sample_name}.consistent.nonsister.vcf"
File merged_vcf = "${sample}.merged.vcf"
File vcf_dup = "${sample}.vcf_dup.txt"
}
}

+ 0
- 35
tasks/mergeBed.wdl Datei anzeigen

@@ -1,35 +0,0 @@
task mergeBed {
Array[File] snv_true_bed
Array[File] snv_false_bed
Array[File] indel_true_bed
Array[File] indel_false_bed
Array[File] indel_padding
Array[File] snv_padding
String docker
String cluster_config
String disk_size
command <<<

/opt/ccdg/bedtools-2.27.1/bin/bedtools multiinter -i ${sep=" " snv_true_bed} ${sep=" " indel_true_bed} > merged.true.bed

/opt/ccdg/bedtools-2.27.1/bin/bedtools multiinter -i ${sep=" " snv_false_bed} ${sep=" " indel_false_bed} > merged.false.bed

/opt/ccdg/bedtools-2.27.1/bin/bedtools multiinter -i ${sep=" " snv_padding} ${sep=" " indel_padding} > merged.padding.bed

>>>

runtime {
docker:docker
cluster: cluster_config
systemDisk: "cloud_ssd 40"
dataDisk: "cloud_ssd " + disk_size + " /cromwell_root/"
}

output {
File true_bed = "merged.true.bed"
File false_bed = "merged.false.bed"
File padding = "merged.padding.bed"
}
}


+ 34
- 0
tasks/mergeSister.wdl Datei anzeigen

@@ -0,0 +1,34 @@
task mergeSister {
File LCL5_trio_vcf_gz
File LCL5_trio_vcf_idx
File LCL6_trio_vcf_gz
File LCL6_trio_vcf_idx
String family_name
String docker
String cluster_config
String disk_size
command <<<
rtg vcfmerge -o LCL5.LCL6.merged.vcf.gz ${LCL5_trio_vcf_gz} ${LCL6_trio_vcf_gz}

rtg vcfmerge -o LCL6.LCL5.merged.vcf.gz ${LCL6_trio_vcf_gz} ${LCL5_trio_vcf_gz}

zcat LCL5.LCL6.merged.vcf.gz | grep '##' > header
zcat LCL5.LCL6.merged.vcf.gz | grep -v '##' | cut -f8 > LCL5.mendelian
zcat LCL6.LCL5.merged.vcf.gz | grep -v '##' | paste - LCL5.mendelian > body

cat header body > ${family_name}.trio.info.vcf
>>>

runtime {
docker:docker
cluster: cluster_config
systemDisk: "cloud_ssd 40"
dataDisk: "cloud_ssd " + disk_size + " /cromwell_root/"
}

output {
File family_mendelian_info = "${family_name}.trio.info.vcf"
}

}

+ 0
- 61
tasks/mergeVCF.wdl Datei anzeigen

@@ -1,61 +0,0 @@
task mergeVCF {
Array[File] snv_true_vcf
Array[File] snv_true_vcf_index
Array[File] snv_false_vcf
Array[File] snv_false_vcf_index
Array[File] snv_remain_vcf
Array[File] snv_remain_vcf_index
Array[File] snv_padding_vcf
Array[File] snv_padding_vcf_index

Array[File] indel_true_vcf
Array[File] indel_true_vcf_index
Array[File] indel_false_vcf
Array[File] indel_false_vcf_index
Array[File] indel_remain_vcf
Array[File] indel_remain_vcf_index
Array[File] indel_padding_vcf
Array[File] indel_padding_vcf_index

String quartet_sample
String docker
String cluster_config
String disk_size
command <<<
rtg vcfmerge --force-merge-all --no-gzip -o ${quartet_sample}.snv.true.vcf.gz ${sep=" " snv_true_vcf}

rtg vcfmerge --force-merge-all --no-gzip -o ${quartet_sample}.snv.false.vcf.gz ${sep=" " snv_false_vcf}

rtg vcfmerge --force-merge-all --no-gzip -o ${quartet_sample}.snv.remain.vcf.gz ${sep=" " snv_remain_vcf}

rtg vcfmerge --force-merge-all --no-gzip -o ${quartet_sample}.snv.padding.vcf.gz ${sep=" " snv_padding_vcf}

rtg vcfmerge --force-merge-all --no-gzip -o ${quartet_sample}.indel.true.vcf.gz ${sep=" " indel_true_vcf}

rtg vcfmerge --force-merge-all --no-gzip -o ${quartet_sample}.indel.false.vcf.gz ${sep=" " indel_false_vcf}

rtg vcfmerge --force-merge-all --no-gzip -o ${quartet_sample}.indel.remain.vcf.gz ${sep=" " indel_remain_vcf}

rtg vcfmerge --force-merge-all --no-gzip -o ${quartet_sample}.indel.padding.vcf.gz ${sep=" " indel_padding_vcf}
>>>

runtime {
docker:docker
cluster: cluster_config
systemDisk: "cloud_ssd 40"
dataDisk: "cloud_ssd " + disk_size + " /cromwell_root/"
}

output {
File merged_snv_true = "${quartet_sample}.snv.true.vcf.gz"
File merged_snv_false = "${quartet_sample}.snv.false.vcf.gz"
File merged_snv_remain = "${quartet_sample}.snv.remain.vcf.gz"
File merged_snv_padding = "${quartet_sample}.snv.padding.vcf.gz"
File merged_indel_true = "${quartet_sample}.indel.true.vcf.gz"
File merged_indel_false = "${quartet_sample}.indel.false.vcf.gz"
File merged_indel_remain = "${quartet_sample}.indel.remain.vcf.gz"
File merged_indel_padding = "${quartet_sample}.indel.padding.vcf.gz"
}

}

+ 30
- 0
tasks/reformVCF.wdl Datei anzeigen

@@ -0,0 +1,30 @@
task reformVCF {
File family_mendelian_info
File family_name
String docker
String cluster_config
String disk_size
command <<<

python /opt/reformVCF.py -vcf ${family_mendelian_info} -name ${family_name}

>>>

runtime {
docker:docker
cluster: cluster_config
systemDisk: "cloud_ssd 40"
dataDisk: "cloud_ssd " + disk_size + " /cromwell_root/"
}

output {
File LCL5_family_info = "${family_name}.LCL5.vcf"
File LCL6_family_info = "${family_name}.LCL6.vcf"
File LCL7_family_info = "${family_name}.LCL7.vcf"
File LCL8_family_info = "${family_name}.LCL8.vcf"
File family_info = "${family_name}.vcf"
}
}


+ 15
- 30
tasks/sister.wdl Datei anzeigen

@@ -1,32 +1,23 @@
task sister {
File violation_vcf_gz
File violation_vcf_idx
File consistent_vcf_gz
File consistent_vcf_idx
File sister_vcf_gz
File sister_vcf_idx
File sdf
File LCL5_vcf
File LCL6_vcf
File ref_dir
String fasta
String family_name
String docker
String cluster_config
String disk_size
command <<<
rtg vcfeval -b ${sister_vcf_gz} -c ${violation_vcf_gz} -o violation -t ${sdf}
export LD_LIBRARY_PATH=/opt/htslib-1.9

rtg vcfeval -b ${sister_vcf_gz} -c ${consistent_vcf_gz} -o consistent -t ${sdf}
mkdir sister
/opt/VBT-TrioAnalysis/vbt varcomp -called ${LCL5_vcf} -base ${LCL6_vcf} -ref ${ref_dir}/${fasta} -outDir sister -filter none

mv violation/tp.vcf.gz ${family_name}.violation.sister.vcf.gz
mv violation/fp.vcf.gz ${family_name}.violation.nonsister.vcf.gz
mv violation/tp.vcf.gz.tbi ${family_name}.violation.sister.vcf.gz.tbi
mv violation/fp.vcf.gz.tbi ${family_name}.violation.nonsister.vcf.gz.tbi
mv violation/summary.txt ${family_name}.violation.summary.txt

mv consistent/tp.vcf.gz ${family_name}.consistent.sister.vcf.gz
mv consistent/fp.vcf.gz ${family_name}.consistent.nonsister.vcf.gz
mv consistent/tp.vcf.gz.tbi ${family_name}.consistent.sister.vcf.gz.tbi
mv consistent/fp.vcf.gz.tbi ${family_name}.consistent.nonsister.vcf.gz.tbi
mv consistent/summary.txt ${family_name}.consistent.summary.txt
mv sister/TPBase.vcf ${family_name}.sister.consistent.vcf
mv sister/FP.vcf ${family_name}.LCL5.uniq.vcf
mv sister/FN.vcf ${family_name}.LCL6.uniq.vcf
mv sister/log.txt ${family_name}.sister.vbt.log.txt
>>>

runtime {
@@ -36,15 +27,9 @@ task sister {
dataDisk: "cloud_ssd " + disk_size + " /cromwell_root/"
}
output {
File child_violation_sister = "${family_name}.violation.sister.vcf.gz"
File child_violation_sister_idx = "${family_name}.violation.sister.vcf.gz.tbi"
File child_violation_nonsister = "${family_name}.violation.nonsister.vcf.gz"
File child_violation_nonsister_idx = "${family_name}.violation.nonsister.vcf.gz.tbi"
File child_consistent_sister = "${family_name}.consistent.sister.vcf.gz"
File child_consistent_sister_idx = "${family_name}.consistent.sister.vcf.gz.tbi"
File child_consistent_nonsister = "${family_name}.consistent.nonsister.vcf.gz"
File child_consistent_nonsister_idx = "${family_name}.consistent.nonsister.vcf.gz.tbi"
File violation_summary = "${family_name}.violation.summary.txt"
File consistent_summary = "${family_name}.consistent.summary.txt"
File sister_consistent_vcf = "${family_name}.sister.consistent.vcf"
File LCL5_uniq = "${family_name}.LCL5.uniq.vcf"
File LCL6_uniq = "${family_name}.LCL6.uniq.vcf"
File log = "${family_name}.sister.vbt.log.txt"
}
}

+ 30
- 0
tasks/variantsNorm.wdl Datei anzeigen

@@ -0,0 +1,30 @@
task variantsNorm {
File vcf
File ref_dir
String fasta
String sampleName
String docker
String cluster_config
String disk_size
command <<<

cat ${vcf} | grep '#' > header
cat ${vcf} | grep -v '#' > body
cat body | grep -w '^chr1\|^chr2\|^chr3\|^chr4\|^chr5\|^chr6\|^chr7\|^chr8\|^chr9\|^chr10\|^chr11\|^chr12\|^chr13\|^chr14\|^chr15\|^chr16\|^chr17\|^chr18\|^chr19\|^chr20\|^chr21\|^chr22\|^chrX' > body.filtered
cat header body.filtered > ${sampleName}.filtered.vcf

/opt/hall-lab/bcftools-1.9/bin/bcftools norm -f ${ref_dir}/${fasta} ${sampleName}.filtered.vcf > ${sampleName}.normed.vcf

>>>

runtime {
docker:docker
cluster: cluster_config
systemDisk: "cloud_ssd 40"
dataDisk: "cloud_ssd " + disk_size + " /cromwell_root/"
}
output {
File normed_vcf = "${sampleName}.normed.vcf"
}
}

+ 25
- 0
tasks/votes.wdl Datei anzeigen

@@ -0,0 +1,25 @@
task votes {
File merged_vcf
File vcf_dup
String sample
String prefix
String docker
String cluster_config
String disk_size
command <<<
python /opt/high_confidence_call_vote.py -vcf ${merged_vcf} -dup ${vcf_dup} -sample ${sample} -prefix ${prefix}
cat ${prefix}_annotated.vcf | cut -f1-9,45 | grep -v 'filtered' | grep -v 'confirm for parents' | grep -v 'pcr-free-speicifc' | grep -v 'pcr-speicifc' | grep -v 'dupVar' > ${prefix}_bechmarking_calls.vcf
>>>

runtime {
docker:docker
cluster: cluster_config
systemDisk: "cloud_ssd 40"
dataDisk: "cloud_ssd " + disk_size + " /cromwell_root/"
}
output {
File annotated_vcf = "${prefix}_annotated.vcf"
File benchmark_call = "${prefix}_bechmarking_calls.vcf"
}
}

+ 6
- 18
tasks/zipIndex.wdl Datei anzeigen

@@ -1,24 +1,14 @@
task zipIndex {
File violation_vcf
File consistent_vcf
File child_vcf_gz
File child_vcf_idx
File child_name
File vcf
String sample
String family_name
String docker
String cluster_config
String disk_size
command <<<
rtg bgzip ${violation_vcf} -c > ${family_name}.violation.vcf.gz
rtg index -f vcf ${family_name}.violation.vcf.gz

rtg bgzip ${consistent_vcf} -c > ${family_name}.consistent.vcf
rtg index -f vcf ${family_name}.consistent.vcf.gz

rtg vcffilter -i ${child_vcf_gz} -o ${child_name}.violation.vcf.gz --include-vcf=${family_name}.violation.vcf.gz

rtg vcffilter -i ${child_vcf_gz} -o ${child_name}.consistent.vcf.gz --include-vcf=${family_name}.consistent.vcf.gz
rtg bgzip ${vcf} -c > ${family_name}.${sample}.vcf.gz
rtg index -f vcf ${family_name}.${sample}.vcf.gz

>>>

@@ -29,9 +19,7 @@ task zipIndex {
dataDisk: "cloud_ssd " + disk_size + " /cromwell_root/"
}
output {
File violation_vcf_gz = "${child_name}.violation.vcf.gz"
File violation_vcf_idx = "${child_name}.violation.vcf.gz.tbi"
File consistent_vcf_gz = "${child_name}.consistent.vcf"
File consistent_vcf_idx = "${child_name}.consistent.vcf.tbi"
File vcf_gz = "${family_name}.${sample}.vcf.gz"
File vcf_idx = "${family_name}.${sample}.vcf.gz.tbi"
}
}

+ 60
- 43
workflow.wdl Datei anzeigen

@@ -1,59 +1,76 @@
import "./tasks/variantsNorm.wdl" as variantsNorm
import "./tasks/mendelian.wdl" as mendelian
import "./tasks/sister.wdl" as sister
import "./tasks/merge.wdl" as merge

workflow {{ project_name }} {
File inputSamplesFile
Array[Array[File]] inputSamples = read_tsv(inputSamplesFile)
File sdf
File ref_dir
String fasta
String cluster_config
String disk_size

scatter (sample in inputSamples){
call mendelian.mendelian as mendelian {
input:
mother_vcf_gz=sample[0],
father_vcf_gz=sample[1],
child_vcf_gz=sample[2],
mother_vcf_idx=sample[4],
father_vcf_idx=sample[5],
child_vcf_idx=sample[6],
mother_name=sample[8],
father_name=sample[9],
child_name=sample[10],
family_name=sample[11],
sdf=sdf,
scatter (quartet in inputSamples){
call variantsNorm.variantsNorm as LCL5variantsNorm{
input:
vcf=quartet[0],
ref_dir=ref_dir,
fasta=fasta,
sampleName=quartet[4],
cluster_config=cluster_config,
disk_size=disk_size
}

call sister.sister as sister {
call variantsNorm.variantsNorm as LCL6variantsNorm{
input:
violation_vcf_gz=mendelian.violation_vcf_gz,
violation_vcf_idx=mendelian.violation_vcf_idx,
consistent_vcf_gz=mendelian.consistent_vcf_gz,
consistent_vcf_idx=mendelian.consistent_vcf_idx,
sister_vcf_gz=sample[3],
sister_vcf_idx=sample[7],
sdf=sdf,
family_name=sample[11],
vcf=quartet[1],
ref_dir=ref_dir,
fasta=fasta,
sampleName=quartet[5],
cluster_config=cluster_config,
disk_size=disk_size
}
call variantsNorm.variantsNorm as LCL7variantsNorm{
input:
vcf=quartet[2],
ref_dir=ref_dir,
fasta=fasta,
sampleName=quartet[6],
cluster_config=cluster_config,
disk_size=disk_size
}
call variantsNorm.variantsNorm as LCL8variantsNorm{
input:
vcf=quartet[3],
ref_dir=ref_dir,
fasta=fasta,
sampleName=quartet[7],
cluster_config=cluster_config,
disk_size=disk_size
}
call mendelian.mendelian as LCL5mendelian {
input:
child_vcf=LCL5variantsNorm.normed_vcf,
LCL7_vcf=LCL7variantsNorm.normed_vcf,
LCL8_vcf=LCL8variantsNorm.normed_vcf,
LCL7_name=quartet[6],
LCL8_name=quartet[7],
child_name=quartet[4],
ref_dir=ref_dir,
fasta=fasta,
cluster_config=cluster_config,
disk_size=disk_size
}
call mendelian.mendelian as LCL6mendelian {
input:
child_vcf=LCL6variantsNorm.normed_vcf,
LCL7_vcf=LCL7variantsNorm.normed_vcf,
LCL8_vcf=LCL8variantsNorm.normed_vcf,
LCL7_name=quartet[6],
LCL8_name=quartet[7],
child_name=quartet[5],
ref_dir=ref_dir,
fasta=fasta,
cluster_config=cluster_config,
disk_size=disk_size
}

}

call merge.merge as merge {
input:
child_violation_sister=sister.child_violation_sister,
child_violation_sister_idx=sister.child_violation_sister_idx,
child_violation_nonsister=sister.child_violation_nonsister,
child_violation_nonsister_idx=sister.child_violation_nonsister_idx,
child_consistent_sister=sister.child_consistent_sister,
child_consistent_sister_idx=sister.child_consistent_sister_idx,
child_consistent_nonsister=sister.child_consistent_nonsister,
child_consistent_nonsister_idx=sister.child_consistent_nonsister_idx,
cluster_config=cluster_config,
disk_size=disk_size
}
}

Laden…
Abbrechen
Speichern