Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix编程以每1Mb生成一个子集并命名该子集_Unix - Fatal编程技术网

Unix编程以每1Mb生成一个子集并命名该子集

Unix编程以每1Mb生成一个子集并命名该子集,unix,Unix,我需要一种在Unix中对大型数据集进行子集的方法。我有>50K的单核苷酸多态性,每个都有它们解释的遗传变异和一个位置(染色体和位置)。我需要为每个染色体每一百万个碱基对(位置)对SNP进行子集划分,以创建我们称之为1Mb的窗口。我还需要命名这些窗口,例如CHR:WINDOW 我的数据结构如下: SNP CHR POS GenVar BTB-00074935 1 157284336 2.306141e-06 BTB-01512420 8 72495155 1.958865e-06 Hapmap3

我需要一种在Unix中对大型数据集进行子集的方法。我有>50K的单核苷酸多态性,每个都有它们解释的遗传变异和一个位置(染色体和位置)。我需要为每个染色体每一百万个碱基对(位置)对SNP进行子集划分,以创建我们称之为1Mb的窗口。我还需要命名这些窗口,例如CHR:WINDOW

我的数据结构如下:

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  
.
.
.

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

这会打印到名为
CHR03:WINDOW456
的文件中。如果您只需要类似于
03:456
的文件名,请编辑掉上面的
CHR
窗口


另外请注意,后续运行只会继续扩展现有文件,因此在运行之间可能需要一个
rm*:*

我是否理解正确,将记录分组到文件中的关键是(col2,col3的第一个长度-6位)?如果位置为1-1000000,则分组的第二部分需要是;1,000,0001-2,000,000; 2000001-3000000等等。我在下面给出的答案是0-9999999组(as 000),1000000-1999999组(as 001),等等。如果您需要此注释中指定的分组,请将下面的$3更改为$3-1。
awk '{w=0+substr($3,1,length($3)-6); print >>sprintf("CHR%02d:WINDOW%03d",$2,w)}'