#高置信位点整合Part2——从VCF和BAM文件中提取突变位点的信息 | |||||
#高置信突变位点的整合 | |||||
> Author: Run Luyao | > Author: Run Luyao | ||||
> | > | ||||
> E-mail:18110700050@fudan.edu.cn | > 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 | |||||
## 安装指南 | ## 安装指南 | ||||
# 激活choppy环境 | # 激活choppy环境 | ||||
source activate choppy | source activate choppy | ||||
# 安装app | # 安装app | ||||
choppy install renluyao/HCC_Extract_Info | |||||
choppy install renluyao/high_confidence_calls_intergration | |||||
``` | ``` | ||||
## App概述 | ## 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输入变量与输入文件 | ||||
## App输出文件 | ## App输出文件 | ||||
## 结果展示与解读 | ## 结果展示与解读 | ||||
## CHANGELOG | ## CHANGELOG | ||||
## FAQ | ## FAQ | ||||
# 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() | |||||
# 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) | |||||
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 |
{ | { | ||||
"{{ 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 }}.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/" | |||||
} |
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" | |||||
} | |||||
} |
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" | |||||
} | |||||
} | |||||
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" | |||||
} | |||||
} |
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" | |||||
} | |||||
} | |||||
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" | |||||
} | |||||
} |
cat ${vcf} | grep '#' > header | cat ${vcf} | grep '#' > header | ||||
cat ${vcf} | grep -v '#' > body | 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 | 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 | /opt/hall-lab/bcftools-1.9/bin/bcftools norm -f ${ref_dir}/${fasta} ${sampleName}.filtered.vcf > ${sampleName}.normed.vcf | ||||
>>> | >>> | ||||
runtime { | runtime { |
task mendelian { | 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 child_name | ||||
String family_name | |||||
File sdf | |||||
File ref_dir | |||||
String fasta | |||||
String docker | String docker | ||||
String cluster_config | String cluster_config | ||||
String disk_size | String disk_size | ||||
command <<< | 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 { | runtime { | ||||
dataDisk: "cloud_ssd " + disk_size + " /cromwell_root/" | dataDisk: "cloud_ssd " + disk_size + " /cromwell_root/" | ||||
} | } | ||||
output { | 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" | |||||
} | } | ||||
} | } |
task merge { | 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 docker | ||||
String cluster_config | String cluster_config | ||||
String disk_size | String disk_size | ||||
command <<< | 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 { | runtime { | ||||
dataDisk: "cloud_ssd " + disk_size + " /cromwell_root/" | dataDisk: "cloud_ssd " + disk_size + " /cromwell_root/" | ||||
} | } | ||||
output { | 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" | |||||
} | } | ||||
} | } |
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" | |||||
} | |||||
} | |||||
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" | |||||
} | |||||
} |
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" | |||||
} | |||||
} |
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" | |||||
} | |||||
} | |||||
task sister { | 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 family_name | ||||
String docker | String docker | ||||
String cluster_config | String cluster_config | ||||
String disk_size | String disk_size | ||||
command <<< | 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 { | runtime { | ||||
dataDisk: "cloud_ssd " + disk_size + " /cromwell_root/" | dataDisk: "cloud_ssd " + disk_size + " /cromwell_root/" | ||||
} | } | ||||
output { | 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" | |||||
} | } | ||||
} | } |
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" | |||||
} | |||||
} |
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" | |||||
} | |||||
} |
task zipIndex { | 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 family_name | ||||
String docker | String docker | ||||
String cluster_config | String cluster_config | ||||
String disk_size | String disk_size | ||||
command <<< | 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 | |||||
>>> | >>> | ||||
dataDisk: "cloud_ssd " + disk_size + " /cromwell_root/" | dataDisk: "cloud_ssd " + disk_size + " /cromwell_root/" | ||||
} | } | ||||
output { | 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" | |||||
} | } | ||||
} | } |
import "./tasks/variantsNorm.wdl" as variantsNorm | |||||
import "./tasks/mendelian.wdl" as mendelian | import "./tasks/mendelian.wdl" as mendelian | ||||
import "./tasks/sister.wdl" as sister | |||||
import "./tasks/merge.wdl" as merge | |||||
workflow {{ project_name }} { | workflow {{ project_name }} { | ||||
File inputSamplesFile | File inputSamplesFile | ||||
Array[Array[File]] inputSamples = read_tsv(inputSamplesFile) | Array[Array[File]] inputSamples = read_tsv(inputSamplesFile) | ||||
File sdf | |||||
File ref_dir | |||||
String fasta | |||||
String cluster_config | String cluster_config | ||||
String disk_size | 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, | cluster_config=cluster_config, | ||||
disk_size=disk_size | disk_size=disk_size | ||||
} | } | ||||
call sister.sister as sister { | |||||
call variantsNorm.variantsNorm as LCL6variantsNorm{ | |||||
input: | 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, | cluster_config=cluster_config, | ||||
disk_size=disk_size | 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 | |||||
} | } | ||||
} | } |