####根据个体ID,调取VCF文件
import vcf
# 读取个体ID
with open('171q.txt', 'r') as f:
individual_ids = [line.strip() for line in f]
# 打开 VCF 文件
vcf_reader = vcf.Reader(filename='all_2229.vcf.gz')
# 获取 VCF 文件的 header
header = str(vcf_reader)
# 创建一个新的 VCF writer 对象,用于写入选定的个体数据
vcf_writer = vcf.Writer(open('filtered.vcf', 'w'), vcf_reader)
# 遍历 VCF 文件中的记录
for record in vcf_reader:
# 检查每个记录中的个体 ID 是否在指定的个体 ID 列表中
selected_samples = [sample.sample for sample in record.samples if sample.sample in individual_ids]
# 如果该记录包含任何指定的个体,则将其写入新的 VCF 文件中
if selected_samples:
record.samples = [sample for sample in record.samples if sample.sample in selected_samples]
vcf_writer.write_record(record)
# 关闭文件
vcf_writer.close()