本文整理汇总了Python中svtools.vcf.file.Vcf类的典型用法代码示例。如果您正苦于以下问题:Python Vcf类的具体用法?Python Vcf怎么用?Python Vcf使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Vcf类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。
示例1: test_duplicate_sample
def test_duplicate_sample(self):
header_lines = [
'##fileformat=VCFv4.2',
'##fileDate=20090805',
'##source=myImputationProgramV3.1',
'##reference=file:///seq/references/1000GenomesPilot-NCBI36.fasta',
'##contig=<ID=20,length=62435964,assembly=B36,md5=f126cdf8a6e0c7f379d618ff66beb2da,species="Homo sapiens",taxonomy=x>',
'##phasing=partial',
'##INFO=<ID=NS,Number=1,Type=Integer,Description="Number of Samples With Data">',
'##INFO=<ID=DP,Number=1,Type=Integer,Description="Total Depth">',
'##INFO=<ID=AF,Number=A,Type=Float,Description="Allele Frequency">',
'##INFO=<ID=AA,Number=1,Type=String,Description="Ancestral Allele">',
'##INFO=<ID=DB,Number=0,Type=Flag,Description="dbSNP membership, build 129">',
'##INFO=<ID=H2,Number=0,Type=Flag,Description="HapMap2 membership">',
'##ALT=<ID=DEL,Description="DELETION">',
'##FILTER=<ID=q10,Description="Quality below 10">',
'##FILTER=<ID=s50,Description="Less than 50% of samples have data">',
'##FORMAT=<ID=GT,Number=1,Type=String,Description="Genotype">',
'##FORMAT=<ID=GQ,Number=1,Type=Integer,Description="Genotype Quality">',
'##FORMAT=<ID=DP,Number=1,Type=Integer,Description="Read Depth">',
'##FORMAT=<ID=HQ,Number=2,Type=Integer,Description="Haplotype Quality">',
'#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT NA00001 NA00002 NA00001']
v = Vcf()
with self.assertRaises(SystemExit):
v.add_header(header_lines)
开发者ID:hall-lab,项目名称:svtools,代码行数:26,代码来源:file_tests.py
示例2: TestGenotype
class TestGenotype(TestCase):
def setUp(self):
header_lines = [
'##fileformat=VCFv4.2',
'##fileDate=20151202',
'##INFO=<ID=SVTYPE,Number=1,Type=String,Description="Type of structural variant">',
'##INFO=<ID=STRANDS,Number=.,Type=String,Description="Strand orientation of the adjacency in BEDPE format (DEL:+-, DUP:-+, INV:++/--)">',
'##INFO=<ID=IMAFLAG,Number=.,Type=Flag,Description="Test Flag code">',
'##FORMAT=<ID=GT,Number=1,Type=String,Description="Genotype">',
'##FORMAT=<ID=SU,Number=1,Type=Integer,Description="Number of pieces of evidence supporting the variant">',
'##FORMAT=<ID=INACTIVE,Number=1,Type=Integer,Description="A format not in use">',
'#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT NA12878' ]
self.vcf = Vcf()
self.vcf.add_header(header_lines)
self.variant_line = '1 820915 5838_1 N ]GL000232.1:20940]N 0.00 . SVTYPE=BND;STRANDS=-+:9;IMAFLAG GT:SU 0/0:9'
self.variant = Variant(self.variant_line.split('\t'), self.vcf)
def test_set_format(self):
g = Genotype(self.variant, '0/1')
self.assertFalse('INACTIVE' in self.variant.active_formats)
g.set_format('INACTIVE', 10)
self.assertEqual(g.format['INACTIVE'], 10)
self.assertTrue('INACTIVE' in self.variant.active_formats)
def test_get_format(self):
g = Genotype(self.variant, '0/1')
g.set_format('INACTIVE', 10)
self.assertEqual(g.get_format('INACTIVE'), 10)
def test_get_gt_string(self):
g = Genotype(self.variant, '0/1')
g.set_format('INACTIVE', 10)
self.assertEqual(g.get_gt_string(), '0/1:.:10')
开发者ID:jeldred,项目名称:svtools,代码行数:33,代码来源:genotype_tests.py
示例3: test_add_genotype
def test_add_genotype(self):
header_lines = [
'##fileformat=VCFv4.2',
'##fileDate=20151202',
'##INFO=<ID=SVTYPE,Number=1,Type=String,Description="Type of structural variant">',
'##INFO=<ID=STRANDS,Number=.,Type=String,Description="Strand orientation of the adjacency in BEDPE format (DEL:+-, DUP:-+, INV:++/--)">',
'##INFO=<ID=IMAFLAG,Number=.,Type=Flag,Description="Test Flag code">',
'##FORMAT=<ID=SU,Number=1,Type=Integer,Description="Number of pieces of evidence supporting the variant">',
'##FORMAT=<ID=INACTIVE,Number=1,Type=Integer,Description="A format not in use">',
'#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT NA12878' ]
vcf = Vcf()
vcf.add_header(header_lines)
variant_line = '1 820915 5838_1 N ]GL000232.1:20940]N 0.00 . SVTYPE=BND;STRANDS=-+:9;IMAFLAG SU 9'
variant = Variant(variant_line.split('\t'), vcf)
self.assertEqual(variant.get_gt_string(), './.:9')
开发者ID:abelhj,项目名称:svtools,代码行数:15,代码来源:variant_tests.py
示例4: VCFReader
class VCFReader(object):
def __init__(self, stream):
self.vcf_obj = Vcf()
self.stream = stream
header = list()
for line in stream:
if line[0] != '#':
raise RuntimeError('Error parsing VCF header. Line is not a header line. {}'.format(line))
header.append(line)
if line.startswith('#CHROM\t'):
# end of header
break
self.vcf_obj.add_header(header)
def __iter__(self):
for line in self.stream:
yield Variant(line.rstrip().split('\t'), self.vcf_obj)
开发者ID:hall-lab,项目名称:svtools,代码行数:17,代码来源:filter_del.py
示例5: test_all
def test_all(self):
header_lines = [
'##fileformat=VCFv4.2',
'##fileDate=20090805',
'##source=myImputationProgramV3.1',
'##reference=file:///seq/references/1000GenomesPilot-NCBI36.fasta',
'##contig=<ID=20,length=62435964,assembly=B36,md5=f126cdf8a6e0c7f379d618ff66beb2da,species="Homo sapiens",taxonomy=x>',
'##phasing=partial',
'##INFO=<ID=NS,Number=1,Type=Integer,Description="Number of Samples With Data">',
'##INFO=<ID=DP,Number=1,Type=Integer,Description="Total Depth">',
'##INFO=<ID=AF,Number=A,Type=Float,Description="Allele Frequency">',
'##INFO=<ID=AA,Number=1,Type=String,Description="Ancestral Allele">',
'##INFO=<ID=DB,Number=0,Type=Flag,Description="dbSNP membership, build 129">',
'##INFO=<ID=H2,Number=0,Type=Flag,Description="HapMap2 membership">',
'##FILTER=<ID=q10,Description="Quality below 10">',
'##FILTER=<ID=s50,Description="Less than 50% of samples have data">',
'##ALT=<ID=DEL,Description="DELETION">',
'##FORMAT=<ID=GT,Number=1,Type=String,Description="Genotype">',
'##FORMAT=<ID=GQ,Number=1,Type=Integer,Description="Genotype Quality">',
'##FORMAT=<ID=DP,Number=1,Type=Integer,Description="Read Depth">',
'##FORMAT=<ID=HQ,Number=2,Type=Integer,Description="Haplotype Quality">',
'#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT NA00001 NA00002 NA00003']
v = Vcf()
v.add_header(header_lines)
expected_header_lines = header_lines[:2] + header_lines[3:4] + header_lines[6:12] + header_lines[14:]
expected_header_lines[1] = '##fileDate=' + time.strftime('%Y%m%d')
self.assertEqual(v.get_header(), '\n'.join(expected_header_lines))
v.add_sample('ScottPilgrim')
self.assertEqual(v.sample_to_col('ScottPilgrim'), 12)
开发者ID:mkiwala,项目名称:svtools,代码行数:30,代码来源:file_tests.py
示例6: TestVariant
class TestVariant(TestCase):
def setUp(self):
header_lines = [
'##fileformat=VCFv4.2',
'##fileDate=20151202',
'##INFO=<ID=SVTYPE,Number=1,Type=String,Description="Type of structural variant">',
'##INFO=<ID=STRANDS,Number=.,Type=String,Description="Strand orientation of the adjacency in BEDPE format (DEL:+-, DUP:-+, INV:++/--)">',
'##INFO=<ID=IMAFLAG,Number=.,Type=Flag,Description="Test Flag code">',
'##FORMAT=<ID=GT,Number=1,Type=String,Description="Genotype">',
'##FORMAT=<ID=SU,Number=1,Type=Integer,Description="Number of pieces of evidence supporting the variant">',
'##FORMAT=<ID=INACTIVE,Number=1,Type=Integer,Description="A format not in use">',
'#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT NA12878' ]
self.vcf = Vcf()
self.vcf.add_header(header_lines)
self.variant_line = '1 820915 5838_1 N ]GL000232.1:20940]N 0.00 . SVTYPE=BND;STRANDS=-+:9;IMAFLAG GT:SU 0/0:9'
self.variant = Variant(self.variant_line.split('\t'), self.vcf)
def test_set_info(self):
self.variant.set_info('SVTYPE', 'INV')
self.assertEqual(self.variant.info['SVTYPE'], 'INV')
self.variant.set_info('IMAFLAG', False)
self.assertEqual(self.variant.info['IMAFLAG'], False)
with self.assertRaises(SystemExit) as cm:
self.variant.set_info('SUPER', True)
def test_get_info(self):
self.assertEqual(self.variant.get_info('IMAFLAG'), True)
self.assertEqual(self.variant.get_info('SVTYPE'), 'BND')
with self.assertRaises(KeyError) as cm:
self.variant.get_info('CALI')
def test_get_info_string(self):
self.assertEqual(self.variant.get_info_string(), 'SVTYPE=BND;STRANDS=-+:9;IMAFLAG')
self.variant.set_info('IMAFLAG', False)
self.assertEqual(self.variant.get_info_string(), 'SVTYPE=BND;STRANDS=-+:9')
def test_get_format_string(self):
self.assertEqual(self.variant.get_format_string(), 'GT:SU')
def test_genotype(self):
self.assertEqual(self.variant.genotype('NA12878').get_gt_string(), '0/0:9')
def test_var_string(self):
self.assertEqual(self.variant.get_var_string(), self.variant_line)
开发者ID:jeldred,项目名称:svtools,代码行数:44,代码来源:variant_tests.py
示例7: __init__
def __init__(self, stream):
self.vcf_obj = Vcf()
self.stream = stream
header = list()
for line in stream:
if line[0] != '#':
raise RuntimeError('Error parsing VCF header. Line is not a header line. {}'.format(line))
header.append(line)
if line.startswith('#CHROM\t'):
# end of header
break
self.vcf_obj.add_header(header)
开发者ID:hall-lab,项目名称:svtools,代码行数:12,代码来源:filter_del.py
示例8: test_var_string_format_caching
def test_var_string_format_caching(self):
header_lines = [
"##fileformat=VCFv4.2",
"##fileDate=20151202",
'##INFO=<ID=SVTYPE,Number=1,Type=String,Description="Type of structural variant">',
'##INFO=<ID=STRANDS,Number=.,Type=String,Description="Strand orientation of the adjacency in BEDPE format (DEL:+-, DUP:-+, INV:++/--)">',
'##INFO=<ID=IMAFLAG,Number=.,Type=Flag,Description="Test Flag code">',
'##FORMAT=<ID=GT,Number=1,Type=String,Description="Genotype">',
'##FORMAT=<ID=SU,Number=1,Type=Integer,Description="Number of pieces of evidence supporting the variant">',
'##FORMAT=<ID=AS,Number=1,Type=Integer,Description="Number of pieces of evidence supporting the variant">',
'##FORMAT=<ID=INACTIVE,Number=1,Type=Integer,Description="A format not in use">',
"#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT NA12878",
]
vcf = Vcf()
vcf.add_header(header_lines)
variant_line = "1 820915 5838_1 N ]GL000232.1:20940]N 0.00 . SVTYPE=BND;STRANDS=-+:9;IMAFLAG GT:AS:SU 0/0:1:9"
uncached_line = "1 820915 5838_1 N ]GL000232.1:20940]N 0.00 . SVTYPE=BND;STRANDS=-+:9;IMAFLAG GT:SU:AS 0/0:9:1"
variant = Variant(variant_line.split("\t"), vcf)
gt = variant.genotypes() # force parsing
self.assertEqual(variant.get_var_string(), uncached_line)
self.assertEqual(variant.get_var_string(use_cached_gt_string=True), variant_line)
开发者ID:hall-lab,项目名称:svtools,代码行数:21,代码来源:variant_tests.py
示例9: bedpeToVcf
def bedpeToVcf(bedpe_file, vcf_out):
myvcf = Vcf()
converter = BedpeToVcfConverter(myvcf)
in_header = True
# parse the bedpe data
header = list()
for line in bedpe_file:
if in_header:
if line[0:2] == '##':
header.append(line)
continue
elif line[0] == '#' and line[1] != '#':
sample_list_str = line.rstrip().split('\t', 20)[-1]
header.append('\t'.join([
'#CHROM',
'POS',
'ID',
'REF',
'ALT',
'QUAL',
'FILTER',
'INFO',
sample_list_str
] ))
continue
else:
in_header = False
myvcf.add_header(header)
myvcf.file_format='VCFv4.2'
vcf_out.write(myvcf.get_header() + '\n')
#
bedpe = Bedpe(line.rstrip().split('\t'))
variants = converter.convert(bedpe)
for v in variants:
vcf_out.write(v.get_var_string() + '\n')
# close the VCF output file
vcf_out.close()
return
开发者ID:abelhj,项目名称:svtools,代码行数:40,代码来源:bedpetovcf.py
示例10: setUp
def setUp(self):
self.converter = VcfToBedpeConverter()
header_lines = [
'##fileformat=VCFv4.2',
'##fileDate=20090805',
'##reference=file:///seq/references/1000GenomesPilot-NCBI36.fasta',
'##INFO=<ID=DP,Number=1,Type=Integer,Description="Total Depth">',
'##INFO=<ID=AF,Number=A,Type=Float,Description="Allele Frequency">',
'##INFO=<ID=END,Number=1,Type=Integer,Description="End position of the variant">',
'##FORMAT=<ID=GT,Number=1,Type=String,Description="Genotype">',
'#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT NA00001']
self.vcf = Vcf()
self.vcf.add_header(header_lines)
开发者ID:MMesbahU,项目名称:svtools,代码行数:13,代码来源:vcftobedpeconverter_tests.py
示例11: setUp
def setUp(self):
header_lines = [
'##fileformat=VCFv4.2',
'##fileDate=20151202',
'##INFO=<ID=SVTYPE,Number=1,Type=String,Description="Type of structural variant">',
'##INFO=<ID=STRANDS,Number=.,Type=String,Description="Strand orientation of the adjacency in BEDPE format (DEL:+-, DUP:-+, INV:++/--)">',
'##INFO=<ID=IMAFLAG,Number=.,Type=Flag,Description="Test Flag code">',
'##FORMAT=<ID=GT,Number=1,Type=String,Description="Genotype">',
'##FORMAT=<ID=SU,Number=1,Type=Integer,Description="Number of pieces of evidence supporting the variant">',
'##FORMAT=<ID=INACTIVE,Number=1,Type=Integer,Description="A format not in use">',
'#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT NA12878 NA0001' ]
self.vcf = Vcf()
self.vcf.add_header(header_lines)
self.variant_line = '1 820915 5838_1 N ]GL000232.1:20940]N 0.00 . SVTYPE=BND;STRANDS=-+:9;IMAFLAG GT:SU 0/0:9 1/1:15'
self.variant = Variant(self.variant_line.split('\t'), self.vcf)
开发者ID:abelhj,项目名称:svtools,代码行数:15,代码来源:variant_tests.py
示例12: run_gt_refine
def run_gt_refine(vcf_in, vcf_out, diag_outfile, gender_file):
vcf = Vcf()
header = []
in_header = True
sex={}
for line in gender_file:
v = line.rstrip().split('\t')
sex[v[0]] = int(v[1])
outf=open(diag_outfile, 'w', 4096)
ct=1
for line in vcf_in:
if in_header:
if line[0] == "#":
header.append(line)
continue
else:
in_header = False
vcf.add_header(header)
vcf.add_info('SIL_GT_AVG', '1', 'Float', 'Average silhouette of genotype clusters')
#vcf.add_format('SIL_GT', '1', 'Float', 'Per-sample genotype cluster silhouette')
vcf_out.write(vcf.get_header() + '\n')
var = Variant(line.rstrip().split('\t'), vcf)
df=load_df(var, sex)
df1=get_silhouette(df)
sil_avg=df1.iloc[0, df1.columns.get_loc('sil_gt_avg')]
#sil_ind=df1.loc[:, 'sil_gt']
var.info['SIL_GT_AVG'] = '%0.2f' % sil_avg
vcf_out.write(var.get_var_string(use_cached_gt_string=True) + '\n')
if ct==1:
df1.to_csv(outf, header=True)
ct += 1
else:
df1.to_csv(outf, header=False)
vcf_out.close()
vcf_in.close()
outf.close()
gender_file.close()
return
开发者ID:abelhj,项目名称:svtools,代码行数:47,代码来源:gt_silhouette.py
示例13: write_copynumber
def write_copynumber(vcf_file, sample, vcf_out, cn_list):
#go through the VCF and add the read depth annotations
in_header = True
header = []
vcf = Vcf()
i = 0
s_index = -1
for line in vcf_file:
if in_header:
if line[0] == '#' and line[1] == '#':
header.append(line)
continue
if line[0] == '#' and line[1] != '#':
try:
s_index = line.rstrip().split('\t').index(sample)
except ValueError:
sys.stderr.write("Please input valid VCF, format field for " + sample + " not found in VCF")
sys.exit(1)
line = '\t'.join(map(str, line.rstrip().split('\t')[:9] + [sample]))
header.append(line)
continue
else:
in_header = False
vcf.add_header(header)
vcf.add_format('CN', 1, 'Float', 'Copy number of structural variant segment.')
vcf_out.write(vcf.get_header() + '\n')
v = line.rstrip().split('\t')
# XXX Is this second check necessary? Wouldn't this be handled above? Missing header would hit this?
if s_index == -1:
sys.stderr.write("Input a valid sample name: " + sample + " not found in a provided VCF")
sys.exit(1)
v = v[:9] + [v[s_index]]
if not any("SVTYPE=BND" in s for s in v):
if "CN" not in v[8]:
v[8] = v[8] + ":CN"
v[9] = v[9] + ":" + str(cn_list[i])
else:
cn_index = v[8].rstrip().split(":").index("CN")
gts = v[9].rstrip().split(":")
gts[cn_index] = str(cn_list[i])
v[9] = ":".join(gts)
i += 1
# write the VCF
vcf_out.write('\t'.join(v) + '\n')
vcf_out.close()
return
开发者ID:abelhj,项目名称:svtools,代码行数:46,代码来源:copynumber.py
示例14: TestVariant
class TestVariant(TestCase):
def setUp(self):
header_lines = [
"##fileformat=VCFv4.2",
"##fileDate=20151202",
'##INFO=<ID=SVTYPE,Number=1,Type=String,Description="Type of structural variant">',
'##INFO=<ID=STRANDS,Number=.,Type=String,Description="Strand orientation of the adjacency in BEDPE format (DEL:+-, DUP:-+, INV:++/--)">',
'##INFO=<ID=IMAFLAG,Number=.,Type=Flag,Description="Test Flag code">',
'##FORMAT=<ID=GT,Number=1,Type=String,Description="Genotype">',
'##FORMAT=<ID=SU,Number=1,Type=Integer,Description="Number of pieces of evidence supporting the variant">',
'##FORMAT=<ID=INACTIVE,Number=1,Type=Integer,Description="A format not in use">',
"#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT NA12878 NA0001",
]
self.vcf = Vcf()
self.vcf.add_header(header_lines)
self.variant_line = (
"1 820915 5838_1 N ]GL000232.1:20940]N 0.00 . SVTYPE=BND;STRANDS=-+:9;IMAFLAG GT:SU 0/0:9 1/1:15"
)
self.variant = Variant(self.variant_line.split("\t"), self.vcf)
def test_parse_genotypes(self):
genotype_field_strings = ["0/1:20", "0/0:15"]
parsed_dict = self.variant._parse_genotypes(genotype_field_strings)
na12878_gt = Genotype(self.variant, genotype_field_strings[0].split(":"))
na0001_gt = Genotype(self.variant, genotype_field_strings[1].split(":"))
expected_genotype_dict = {"NA12878": na12878_gt, "NA0001": na0001_gt}
self.assertEqual(parsed_dict, expected_genotype_dict)
def test_set_info(self):
self.variant.set_info("SVTYPE", "INV")
self.assertEqual(self.variant.info["SVTYPE"], "INV")
self.variant.set_info("IMAFLAG", False)
self.assertEqual(self.variant.info["IMAFLAG"], False)
with self.assertRaises(SystemExit) as cm:
self.variant.set_info("SUPER", True)
def test_get_info(self):
self.assertEqual(self.variant.get_info("IMAFLAG"), True)
self.assertEqual(self.variant.get_info("SVTYPE"), "BND")
with self.assertRaises(KeyError) as cm:
self.variant.get_info("CALI")
def test_get_info_string(self):
self.assertEqual(self.variant.get_info_string(), "SVTYPE=BND;STRANDS=-+:9;IMAFLAG")
self.variant.set_info("IMAFLAG", False)
self.assertEqual(self.variant.get_info_string(), "SVTYPE=BND;STRANDS=-+:9")
def test_get_format_string(self):
self.assertEqual(self.variant.get_format_string(), "GT:SU")
def test_get_format_string_caching(self):
header_lines = [
"##fileformat=VCFv4.2",
"##fileDate=20151202",
'##INFO=<ID=SVTYPE,Number=1,Type=String,Description="Type of structural variant">',
'##INFO=<ID=STRANDS,Number=.,Type=String,Description="Strand orientation of the adjacency in BEDPE format (DEL:+-, DUP:-+, INV:++/--)">',
'##INFO=<ID=IMAFLAG,Number=.,Type=Flag,Description="Test Flag code">',
'##FORMAT=<ID=GT,Number=1,Type=String,Description="Genotype">',
'##FORMAT=<ID=SU,Number=1,Type=Integer,Description="Number of pieces of evidence supporting the variant">',
'##FORMAT=<ID=AS,Number=1,Type=Integer,Description="Number of pieces of evidence supporting the variant">',
'##FORMAT=<ID=INACTIVE,Number=1,Type=Integer,Description="A format not in use">',
"#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT NA12878",
]
vcf = Vcf()
vcf.add_header(header_lines)
variant_line = "1 820915 5838_1 N ]GL000232.1:20940]N 0.00 . SVTYPE=BND;STRANDS=-+:9;IMAFLAG GT:AS:SU 0/0:1:9"
variant = Variant(variant_line.split("\t"), vcf)
self.assertEqual(variant.get_format_string(), "GT:AS:SU")
gts = variant.genotypes()
self.assertEqual(variant.get_format_string(), "GT:SU:AS")
self.assertEqual(variant.get_format_string(True), "GT:AS:SU")
def test_get_gt_string(self):
self.assertEqual(self.variant.get_gt_string(), "0/0:9 1/1:15")
def test_genotype(self):
self.assertEqual(self.variant.genotype("NA12878").get_gt_string(), "0/0:9")
def test_set_genotype(self):
new_genotype = Genotype(self.variant, ["0/1", "9"])
self.variant.set_genotype("NA12878", new_genotype)
self.assertEqual(self.variant.genotype("NA12878").get_gt_string(), "0/1:9")
def test_genotypes(self):
self.assertEqual([x.get_gt_string() for x in self.variant.genotypes()], ["0/0:9", "1/1:15"])
def test_var_string(self):
self.assertEqual(self.variant.get_var_string(), self.variant_line)
self.variant.genotype("NA12878").set_format("GT", "./.")
self.assertEqual(self.variant.get_var_string(use_cached_gt_string=True), self.variant_line)
self.assertNotEqual(self.variant.get_var_string(), self.variant_line)
def test_var_string_format_caching(self):
header_lines = [
"##fileformat=VCFv4.2",
"##fileDate=20151202",
#.........这里部分代码省略.........
开发者ID:hall-lab,项目名称:svtools,代码行数:101,代码来源:variant_tests.py
示例15: bedpeToVcf
def bedpeToVcf(bedpe_file, vcf_out):
myvcf = Vcf()
in_header = True
# parse the bedpe data
header = list()
for line in bedpe_file:
if in_header:
if line[0:2] == '##':
header.append(line)
continue
elif line[0] == '#' and line[1] != '#':
sample_list_str = line.rstrip().split('\t', 14)[-1]
header.append('\t'.join([
'#CHROM',
'POS',
'ID',
'REF',
'ALT',
'QUAL',
'FILTER',
'INFO',
sample_list_str
] ))
continue
else:
in_header = False
myvcf.add_header(header)
myvcf.file_format='VCFv4.2'
vcf_out.write(myvcf.get_header() + '\n')
#
bedpe = Bedpe(line.rstrip().split('\t'))
if bedpe.svtype == 'BND':
bedpe1_list = [
bedpe.c1,
bedpe.b1 + 1,
bedpe.name + '_1', #ID
'N',
'<' + str(bedpe.svtype) + '>', #ALT
bedpe.score,
bedpe.filter
]
bedpe1_list.extend(bedpe.misc)
var1 = Variant(bedpe1_list, myvcf)
if bedpe.o1 == '+':
if bedpe.o2 == '-':
var1.alt = '%s[%s:%s[' % (var1.ref, bedpe.c2, bedpe.b2 + 1)
elif bedpe.o2 == '+':
var1.alt = '%s]%s:%s]' % (var1.ref, bedpe.c2, bedpe.b2 + 1)
elif bedpe.o1 == '-':
if bedpe.o2 == '+':
var1.alt = ']%s:%s]%s' % (bedpe.c2, bedpe.b2 + 1, var1.ref)
elif bedpe.o2 == '-':
var1.alt = '[%s:%s[%s' % (bedpe.c2, bedpe.b2 + 1, var1.ref)
misc = copy.deepcopy(bedpe.misc)
strands = re.split('=|:',''.join(filter(lambda x: 'STRANDS=' in x, bedpe.misc[0].split(";"))))
strands_str = str(strands[0]) + '=' + str(strands[1][::-1]) + ':' + str(strands[2])
misc[0]=misc[0].replace(''.join(filter(lambda x: 'STRANDS=' in x, bedpe.misc[0].split(";"))), strands_str)
#add the cipos ciend,cipos95 and ciend95 variables
misc[0]=misc[0].replace(''.join(filter(lambda x: 'CIPOS=' in x, bedpe.misc[0].split(";"))),'CIPOS='+ re.split('=',''.join(filter(lambda x: 'CIEND=' in x, bedpe.misc[0].split(";"))))[1])
misc[0]=misc[0].replace(''.join(filter(lambda x: 'CIEND=' in x, bedpe.misc[0].split(";"))),'CIEND='+ re.split('=',''.join(filter(lambda x: 'CIPOS=' in x, bedpe.misc[0].split(";"))))[1])
misc[0]=misc[0].replace(''.join(filter(lambda x: 'CIPOS95=' in x, bedpe.misc[0].split(";"))),'CIPOS95='+ re.split('=',''.join(filter(lambda x: 'CIEND95=' in x, bedpe.misc[0].split(";"))))[1])
misc[0]=misc[0].replace(''.join(filter(lambda x: 'CIEND95=' in x, bedpe.misc[0].split(";"))),'CIEND95='+ re.split('=',''.join(filter(lambda x: 'CIPOS95=' in x, bedpe.misc[0].split(";"))))[1])
#Change MATEID
misc[0]= misc[0].replace(''.join(filter(lambda x: 'MATEID=' in x, bedpe.misc[0].split(";"))),'MATEID=' + bedpe.name + '_2')
#ADD IDENTIFIER FOR SECONDARY BREAKEND MATE
misc[0]=misc[0].replace(''.join(filter(lambda x: 'EVENT=' in x, bedpe.misc[0].split(";"))),''.join(filter(lambda x: 'EVENT=' in x, bedpe.misc[0].split(";"))) + ';SECONDARY;')
bedpe2_list = [
bedpe.c2, #chrom1
bedpe.b2 + 1,
bedpe.name + '_2', #ID
'N',
'<' + str(bedpe.svtype) + '>', #ALT
bedpe.score,
bedpe.filter
]
bedpe2_list.extend(misc)
var2 = Variant(bedpe2_list, myvcf)
# add the strands field. For variant 2 must switch the order
if bedpe.o2 == '+':
if bedpe.o1 == '-':
var2.alt = '%s[%s:%s[' % (var2.ref, bedpe.c1, bedpe.b1 + 1)
elif bedpe.o1 == '+':
var2.alt = '%s]%s:%s]' % (var2.ref, bedpe.c1, bedpe.b1 + 1)
elif bedpe.o2 == '-':
if bedpe.o1 == '+':
var2.alt = ']%s:%s]%s' % (bedpe.c1, bedpe.b1 + 1, var2.ref)
elif bedpe.o1 == '-':
var2.alt = '[%s:%s[%s' % (bedpe.c1, bedpe.b1 + 1, var2.ref)
if bedpe.malformedFlag == 0:
vcf_out.write(var1.get_var_string() + '\n')
vcf_out.write(var2.get_var_string() + '\n')
elif bedpe.malformedFlag == 1:
vcf_out.write(var2.get_var_string() + '\n')
elif bedpe.malformedFlag == 2:
vcf_out.write(var1.get_var_string() + '\n')
else:
# set VCF info elements for simple events
bedpe_list = [
#.........这里部分代码省略.........
开发者ID:mkiwala,项目名称:svtools,代码行数:101,代码来源:bedpetovcf.py
示例16: test_add_info_after
def test_add_info_after(self):
header_lines = [
'##fileformat=VCFv4.2',
'##fileDate=20090805',
'##reference=file:///seq/references/1000GenomesPilot-NCBI36.fasta',
'##INFO=<ID=DP,Number=1,Type=Integer,Description="Total Depth">',
'##INFO=<ID=AF,Number=A,Type=Float,Description="Allele Frequency">',
'##FORMAT=<ID=GT,Number=1,Type=String,Description="Genotype">',
'#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT NA00001 NA00002 NA00003']
extra_line = '##INFO=<ID=DB,Number=0,Type=Flag,Description="dbSNP membership, build 129">'
v = Vcf()
v.add_header(header_lines)
v.add_info_after('DP', 'DB', 0, 'Flag', 'dbSNP membership, build 129')
expected_lines = header_lines[0:4] + [extra_line] + header_lines[4:]
expected_lines[1] = '##fileDate=' + time.strftime('%Y%m%d')
self.assertEqual(v.get_header(), '\n'.join(expected_lines))
v2 = Vcf()
v2.add_header(header_lines)
v2.add_info_after('AF', 'DB', 0, 'Flag', 'dbSNP membership, build 129')
expected_lines2 = header_lines[0:5] + [extra_line] + header_lines[5:]
expected_lines2[1] = '##fileDate=' + time.strftime('%Y%m%d')
self.assertEqual(v2.get_header(), '\n'.join(expected_lines2))
开发者ID:hall-lab,项目名称:svtools,代码行数:22,代码来源:file_tests.py
示例17: sv_classify
def sv_classify(vcf_in, gender_file, exclude_file, ae_dict, f_overlap, slope_threshold, rsquared_threshold):
vcf_out = sys.stdout
vcf = Vcf()
header = []
in_header = True
min_pos_samps_for_regression = 10
gender = {}
# read sample genders
for line in gender_file:
v = line.rstrip().split('\t')
gender[v[0]] = int(v[1])
exclude = []
if exclude_file is not None:
for line in exclude_file:
exclude.append(line.rstrip())
for line in vcf_in:
if in_header:
if line[0] == '#':
header.append(line)
continue
else:
in_header = False
vcf.add_header(header)
# write the output header
vcf_out.write(vcf.get_header() + '\n')
# split variant line, quick pre-check if the SVTYPE is BND, and skip if so
v = line.rstrip().split('\t')
info = v[7].split(';')
svtype = None
for x in info:
if x.startswith('SVTYPE='):
svtype = x.split('=')[1]
break
# bail if not DEL or DUP prior to reclassification
if svtype not in ['DEL', 'DUP']:
vcf_out.write(line)
continue
# parse the VCF line
var = Variant(v, vcf, True)
# check intersection with mobile elements
if ae_dict is not None and var.info['SVTYPE'] in ['DEL']:
ae = annotation_intersect(var, ae_dict, f_overlap)
if ae is not None:
if ae.startswith('SINE') or ae.startswith('LINE') or ae.split('|')[2].startswith('SVA'):
ae = 'ME:' + ae
var.alt = '<DEL:%s>' % ae
var.info['SVTYPE'] = 'MEI'
vcf_out.write(var.get_var_string(True) + '\n')
continue
# # write to directory
# writedir = 'data/r11.100kb.dup'
# annotate based on read depth
if var.info['SVTYPE'] in ['DEL', 'DUP']:
# count the number of positively genotyped samples
num_pos_samps = 0;
for s in var.sample_list:
if s in exclude:
continue
if var.genotype(s).get_format('GT') not in ["./.", "0/0"]:
num_pos_samps += 1
if num_pos_samps < min_pos_samps_for_regression:
if has_low_freq_depth_support(var, gender, exclude):
# has_low_freq_depth_support(var, gender, exclude, writedir + '/low_freq_rd')
# has_high_freq_depth_support(var, gender, exclude, slope_threshold, rsquared_threshold, writedir + '/low_freq_rd')
# write variant
#vcf_out.write(var.get_var_string(True) + '\n')
vcf_out.write(line)
else:
# has_low_freq_depth_support(var, gender, exclude, writedir + '/low_freq_no_rd')
# has_high_freq_depth_support(var, gender, exclude, slope_threshold, rsquared_threshold, writedir + '/low_freq_no_rd')
for m_var in to_bnd_strings(var):
vcf_out.write(m_var + '\n')
else:
if has_high_freq_depth_support(var, gender, exclude, slope_threshold, rsquared_threshold):
# has_high_freq_depth_support(var, gender, exclude, slope_threshold, rsquared_threshold, writedir + '/high_freq_rd')
# has_low_freq_depth_support(var, gender, exclude, writedir + '/high_freq_rd')
# write variant
#vcf_out.write(var.get_var_string(True) + '\n')
vcf_out.write(line)
else:
# has_high_freq_depth_support(var, gender, exclude, slope_threshold, rsquared_threshold, writedir + '/high_freq_no_rd')
# has_low_freq_depth_support(var, gender, exclude, writedir + '/high_freq_no_rd')
for m_var in to_bnd_strings(var):
vcf_out.write(m_var + '\n')
vcf_out.close()
return
开发者ID:jeldred,项目名称:svtools,代码行数:97,代码来源:sv_classifier.py
示例18: test_parse_meta
def test_parse_meta(self):
line = '##FILTER=<ID=MSQ_20,Description="Variant without read-depth support with MSQ > 20">'
expected_fields = ['ID=MSQ_20', 'Description="Variant without read-depth support with MSQ > 20"']
v = Vcf()
values = v.parse_meta(line)
self.assertEqual(values, expected_fields)
开发者ID:hall-lab,项目名称:svtools,代码行数:6,代码来源:file_tests.py
示例19: execute
def execute(self, output_handle=sys.stdout):
in_header = True
header = []
vcf = Vcf()
vcf_out = output_handle
# read input VCF
for line in self.vcf_stream:
if in_header:
if line.startswith('##'):
header.append(line)
continue
elif line.startswith('#CHROM'):
v = line.rstrip().split('\t')
header.append('\t'.join(v))
in_header = False
vcf.add_header(header)
vcf.add_info('AF', 'A', 'Float', 'Allele Frequency, for each ALT allele, in the same order as listed')
vcf.add_info('NSAMP', '1', 'Integer', 'Number of samples with non-reference genotypes')
vcf.add_info('MSQ', '1', 'Float', 'Mean sample quality of positively genotyped samples')
# write header
vcf_out.write(vcf.get_header() + '\n')
#vcf_out.write('\t' + '\t'.join(v[8:]) + '\n')
continue
v = line.rstrip().split('\t')
var = Variant(v, vcf, fixed_genotypes=True)
# extract genotypes from VCF
num_alt = len(var.alt.split(','))
alleles = [0] * (num_alt + 1)
num_samp = 0
gt = [var.genotype(s).get_format('GT') for s in var.sample_list]
for gt_string in gt:
if '.' in gt_string:
continue
gt = gt_string.split('/')
if len(gt) == 1:
gt = gt_string.split('|')
gt = map(int, gt)
for i in xrange(len(gt)):
alleles[gt[i]] += 1
# iterate the number of non-reference samples
if sum(gt) > 0:
num_samp += 1
allele_sum = float(sum(alleles))
allele_freq = ['.'] * len(alleles)
# populate AF
if allele_sum > 0:
for i in xrange(len(alleles)):
allele_freq[i] = al
|
请发表评论