前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何随机选择vcf文件中的变异位点

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

作者头像
用户7010445
发布2024-05-28 10:37:38
1140
发布2024-05-28 10:37:38
举报

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

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

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

完整的python脚本

代码语言:javascript
复制
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!")

运行

代码语言:javascript
复制
python randomSelectRowsFromVCF.py tiny.vcf tiny.out.vcf 1 123

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

欢迎大家关注我的公众号

小明的数据分析笔记本

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-05-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小明的数据分析笔记本 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档