首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Unix编程到子集的每1Mb,并命名子集

Unix编程到子集的每1Mb,并命名子集
EN

Stack Overflow用户
提问于 2015-10-15 15:09:25
回答 1查看 23关注 0票数 0

我需要一种在Unix中子集大型数据集的方法。我有> 50K的SNP,每一个都有他们解释的遗传变异和一个位置(染色体和位置)。我需要每个染色体每100万个碱基对(位置)对SNP进行子集,以创建我们所谓的1Mb窗口。我还需要命名这些窗口,例如CHR:WINDOW。

我的数据结构如下:

代码语言:javascript
复制
SNP CHR POS GenVar

BTB-00074935 1 157284336 2.306141e-06
BTB-01512420 8 72495155 1.958865e-06
Hapmap35555-SCAFFOLD20017_21254 18 29600313 1.876211e-06
BTB-01098205 3 68702409 1.222881e-06
ARS-BFGL-NGS-115531 11 74038177 9.597669e-07
ARS-BFGL-NGS-25658 2 119059379 7.953552e-07
BTB-00411452 20 47919708 6.827312e-07
ARS-BFGL-NGS-100532 18 63878550 6.115242e-07
Hapmap60823-rs29019235 1 10717144 5.400144e-07
ARS-BFGL-NGS-42256 10 50282066 4.864838e-07  
.
.
.
EN

回答 1

Stack Overflow用户

发布于 2015-10-15 15:41:14

一个基本的第一次尝试,假设在第一个字段中没有空格,并且“键”是(col2,第一个(长度-6)数字的col3):

代码语言:javascript
复制
awk '{w=0+substr($3,1,length($3)-6); print >>sprintf("CHR%02d:WINDOW%03d",$2,w)}'

这将打印到名为CHR03:WINDOW456的文件。如果您只想要像03:456这样的文件名,那么编辑上面的CHRWINDOW

还要注意的是,后续的运行只会不断地扩展现有的文件,因此在运行之间可能需要一个rm *:*

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33152161

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档