Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.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
Python BASH-在一列(ped文件)中总结2个基因型数据列中的信息_Python_Ruby_Perl_Awk_Bioinformatics - Fatal编程技术网

Python BASH-在一列(ped文件)中总结2个基因型数据列中的信息

Python BASH-在一列(ped文件)中总结2个基因型数据列中的信息,python,ruby,perl,awk,bioinformatics,Python,Ruby,Perl,Awk,Bioinformatics,我有一个36列(6+30)的PLINK ped文件,如下所示: FID IID PID MID SEX PHENO SNP_1a SNP_1b SNP_2a SNP_2b SNP_3a SNP_3b SNP_4a SNP_4b SNP_5a SNP_5b SNP_6a SNP_6b SNP_7a SNP_7b SNP_8a SNP_8b SNP_9a SNP_9b SNP_10a SNP_10b SNP_11a SNP_11b SNP_12a SNP_12b SNP_13a SNP_13b SN

我有一个36列(6+30)的PLINK ped文件,如下所示:

FID IID PID MID SEX PHENO SNP_1a SNP_1b SNP_2a SNP_2b SNP_3a SNP_3b SNP_4a SNP_4b SNP_5a SNP_5b SNP_6a SNP_6b SNP_7a SNP_7b SNP_8a SNP_8b SNP_9a SNP_9b SNP_10a SNP_10b SNP_11a SNP_11b SNP_12a SNP_12b SNP_13a SNP_13b SNP_14a SNP_14b SNP_15a SNP_15b
A1  A1  0   0   1   1   0   0   0   0   2   2   1   2   1   2   1   2   2   1   2   1   1   1   1   2   0   0   0   0   0   0   2   1   2   2
A2  A2  0   0   1   1   1   1   1   1   0   0   1   2   2   2   2   2   1   1   0   0   2   1   2   2   0   0   0   0   0   0   1   1   0   0
A3  A3  0   0   1   2   1   1   1   1   0   0   2   2   2   2   2   2   1   1   0   0   1   1   2   2   0   0   0   0   0   0   1   1   0   0
FID IID PID MID SEX PHENO SNP_1 SNP_2 SNP_3 SNP_4 SNP_5 SNP_6 SNP_7 SNP_8 SNP_9 SNP_10 SNP_11 SNP_11 SNP_12 SNP_13 SNP_14 SNP_15
A1  A1  0   0   1   1   NA  NA  2   2   2   2   2   2   1   2   NA  NA  NA  2   2
A2  A2  0   0   1   1   1   1   NA  2   2   2   1   NA  2   2   NA  NA  NA  1   NA
A3  A3  0   0   1   2   1   1   NA  2   2   2   1   NA  1   2   NA  NA  NA  1   NA
我有兴趣修改基因型列(第7列之后),以便:

  • 如果SNP(SNP#a和/或SNP#b)的等位基因a和/或是“2”:用包含“2”的单列总结这两列

  • 如果SNP的两个等位基因(a和b)都是“1”:在单列中用“1”进行总结

  • 最后,如果SNP的两个等位基因(a和b)都是“0”:总结为“NA”

因此,上述示例的输出将包含21列(6+15),如下所示:

FID IID PID MID SEX PHENO SNP_1a SNP_1b SNP_2a SNP_2b SNP_3a SNP_3b SNP_4a SNP_4b SNP_5a SNP_5b SNP_6a SNP_6b SNP_7a SNP_7b SNP_8a SNP_8b SNP_9a SNP_9b SNP_10a SNP_10b SNP_11a SNP_11b SNP_12a SNP_12b SNP_13a SNP_13b SNP_14a SNP_14b SNP_15a SNP_15b
A1  A1  0   0   1   1   0   0   0   0   2   2   1   2   1   2   1   2   2   1   2   1   1   1   1   2   0   0   0   0   0   0   2   1   2   2
A2  A2  0   0   1   1   1   1   1   1   0   0   1   2   2   2   2   2   1   1   0   0   2   1   2   2   0   0   0   0   0   0   1   1   0   0
A3  A3  0   0   1   2   1   1   1   1   0   0   2   2   2   2   2   2   1   1   0   0   1   1   2   2   0   0   0   0   0   0   1   1   0   0
FID IID PID MID SEX PHENO SNP_1 SNP_2 SNP_3 SNP_4 SNP_5 SNP_6 SNP_7 SNP_8 SNP_9 SNP_10 SNP_11 SNP_11 SNP_12 SNP_13 SNP_14 SNP_15
A1  A1  0   0   1   1   NA  NA  2   2   2   2   2   2   1   2   NA  NA  NA  2   2
A2  A2  0   0   1   1   1   1   NA  2   2   2   1   NA  2   2   NA  NA  NA  1   NA
A3  A3  0   0   1   2   1   1   NA  2   2   2   1   NA  1   2   NA  NA  NA  1   NA

我希望有人能帮助我,提前谢谢你

你试过什么?我们不是来为你写代码的

但是,正如我所感到的慷慨,这里有一个非常基本的Perl解决方案,它似乎适用于您的数据。我不打算解释它,因为我认为你应该付出一些努力:-)

#/usr/bin/perl
严格使用;
使用警告;
使用5.010;
#箕斗式掘进机
;
而(){
咀嚼;
my@data=split;
我的@fixed=@data[0..5];
我的@snps=@data[6..$#data];
我的@new_单核苷酸多态性;
而(我的($s1,$s2)=剪接@snps,0,2){
推送@new_单核苷酸多态性,总结($s1,$s2);
}
说加入“,@fixed,@new_snps;
}
小结{
我的($s1,$s2)=@;
如果$s1==2或$s2==2,则返回2;
如果$s1==1和$s2==1,则返回1;
如果$s1==0和$s2==0,则返回“NA”;
返回“?”;
}
__资料__
FID IID PID中性表型SNP 1a SNP 1b SNP 1b SNP 2b SNP 3b SNP 4a SNP 4b SNP 5b SNP 6a SNP 6b SNP 7a SNP 7b SNP 8a SNP 8b SNP 9a SNP 9b SNP 10b SNP 11b SNP 12a SNP 12b SNP 12b SNP 13a SNP 14a
A1 A1 0 0 1 0 0 0 2 2 1 2 1 2 1 1 1 1 1 2 0 0 0 0 2 1 2
A2 A2 0 0 1 1 1 1 0 0 1 2 2 2 2 1 0 2 0 0 0 0 0 1 0 0
A3 A3 0 0 1 2 1 1 1 0 2 2 2 2 1 0 1 1 1 2 0 0 0 0 0 1 0
$cat>test.awk
NR>1{

对于(i=j=7;i这里是另一个带有标题的神秘的
awk

$ awk '{for(i=1;i<7;i++) printf "%s ",$i; 
        for(i=7;i<=NF;i+=2) 
           {c=$i^2+$(i+1)^2; 
            r=(c>1)+(c>3); 
            printf "%2s ",(NR>1)?(r?r:"NA"):substr($i,1,length($i)-1)}; 
            print ""}' file

FID IID PID MID SEX PHENO SNP_1 SNP_2 SNP_3 SNP_4 SNP_5 SNP_6 SNP_7 SNP_8 SNP_9 SNP_10 SNP_11 SNP_12 SNP_13 SNP_14 SNP_15
A1 A1 0 0 1 1 NA NA  2  2  2  2  2  2  1  2 NA NA NA  2  2
A2 A2 0 0 1 1  1  1 NA  2  2  2  1 NA  2  2 NA NA NA  1 NA
A3 A3 0 0 1 2  1  1 NA  2  2  2  1 NA  1  2 NA NA NA  1 NA
$awk'{for(i=1;i3);
printf“%2s”(NR>1)?(r?r:“NA”):substr($i,1,length($i)-1};
打印“}”文件
FID IID PID中性表型SNP_1 SNP_2 SNP_3 SNP_4 SNP_5 SNP_6 SNP_7 SNP_8 SNP_9 SNP_10 SNP_11 SNP_12 SNP_13 SNP_14 SNP_15
A1 A1 0 0 1 1 NA 2 2 2 2 2 1 2 NA 2 2
A2 A2 0 0 1 1 1 1钠2 2 2 1钠2钠2钠1钠
A3 A3 0 0 1 2 1 1钠2 2 2 1钠1 2钠钠1钠

对不起,我对生物信息学术语不太熟悉,无法解释“SNP”等术语,无法知道哪些列对应于哪些等位基因,也无法推断关于PLINK文件的情况。请澄清。仔细想想,我认为您在这里重载了PLINK标记。此PLINK标记适用于PuTTY链接,而不是PLINK基因组学工具。@kojiro:我更正了标签,我认为它是在申请plink基因组工具,正如你所猜测的那样。我还添加了一些更多的信息(特别是文件的标题)以使其更易于理解。我希望现在它更清晰。感谢你的评论!当for值为{0,1}时,你错过了案例.我被撕碎了。这是一个相当明确的问题,格式很好。另一方面,这是一个要求其他人为您编写代码的请求。我想同时上下投票。效果很好!谢谢!喜欢它。我的三元运算符链中也有
gensub
的标题,但标题太长,不适合sc所以我放弃了。