大数跨境
0
0

如何随机选择vcf文件中的变异位点

如何随机选择vcf文件中的变异位点 小明的数据分析笔记本
2024-05-27
2

现在做群体基因组的论文大部分会公开自己论文分析中的变异检测结果,通常是vcf文件,我们自己可以把vcf文件下载下来试着复现论文中的内容,有时候vcf文件过大,每一步处理起来都会花费比较长的时间。有时候就想把这个vcf文件缩小,随机选择一部分。

查了一下,没有找到现成的工具或者脚本。尝试自己写脚本,没有思路。试着在通义千问上问了一下python的实现方法(通义千问我个人用起来还挺好用的,也是免费的,推荐大家可以试一下。自己想写正则表达式每次问都能给出正确的答案)。给出的思路是使用random这个模块里的random()函数。

这个函数随机生成一个小于1的数,如果我们想要随机取vcf文件中的10%,就设置random.random()<0.1,符合这个条件就输出行。最后输出的行就是所有的行的10%左右。当然不是完全精确的10%。如果想要每次都输出相同的内容,就设置随机数种子 random.seed(123)。种子设置的一样,输出的行就是一样的

完整的python脚本

import sys
import random

# 1 input vcf
# 2 output vcf
# 3 proportion 0-100
# 3 seed number

random.seed(sys.argv[4])

with open(sys.argv[2],'w') as fw:
    with open(sys.argv[1],'r') as fr:
        for line in fr:
            if line.startswith("#"):
                fw.write(line)
            else:
                random_number = random.random()
                if random_number < float(sys.argv[3])/100:
                    fw.write(line)
                    
                    
print("Good Job!")

运行

python randomSelectRowsFromVCF.py tiny.vcf tiny.out.vcf 1 123

四个位置参数分别是 输入文件 输出文件 随机选取的比例(0-100) 随机数种子

欢迎大家关注我的公众号

小明的数据分析笔记本

小明的数据分析笔记本 公众号 主要分享:1、R语言和python做数据分析和数据可视化的简单小例子;2、园艺植物相关转录组学、基因组学、群体遗传学文献阅读笔记;3、生物信息学入门学习资料及自己的学习笔记!


【声明】内容源于网络
0
0
小明的数据分析笔记本
分享R语言和python在生物信息领域做数据分析和数据可视化的简单小例子;偶尔会分享一些组学数据处理相关的内容
内容 971
粉丝 0
小明的数据分析笔记本 分享R语言和python在生物信息领域做数据分析和数据可视化的简单小例子;偶尔会分享一些组学数据处理相关的内容
总阅读218
粉丝0
内容971