美文网首页
根据geneID合并数据(相当于merge)

根据geneID合并数据(相当于merge)

作者: 余绕 | 来源:发表于2021-12-04 15:21 被阅读0次

    由于WT样品有几个重复,而每个重复都单独算出基因的TPM值,现在需要将几个重复根据geneID进行合并,以便后续求每个基因TPM的平均值。
    具体perl代码如下:

    open FA,"$ARGV[0]";
    while(<FA>){
        chomp;
        @temp=split /\t/,$_;
        $hash{$temp[0]}=[$temp[3]];
    }
    
    open FA,"$ARGV[1]";
    
    while(<FA>){
        chomp;
        @temp=split /\t/,$_;
        if(exists $hash{$temp[0]}){
            push @{$hash{$temp[0]}},$temp[3];
            $hash{$temp[0]}=$hash{$temp[0]};
        
        }
        
    }
    
    
    open FA,"$ARGV[2]";
    
    while(<FA>){
        chomp;
        @temp=split /\t/,$_;
        if(exists $hash{$temp[0]}){
            push @{$hash{$temp[0]}},$temp[3];
            $hash{$temp[0]}=$hash{$temp[0]};
        
        }
        
    }
    
    open FA,"$ARGV[3]";
    
    while(<FA>){
        chomp;
        @temp=split /\t/,$_;
        if(exists $hash{$temp[0]}){
            push @{$hash{$temp[0]}},$temp[3];
            $hash{$temp[0]}=$hash{$temp[0]};
        
        }
        
    }
    
    open FA,"$ARGV[4]";
    
    while(<FA>){
        chomp;
        @temp=split /\t/,$_;
        if(exists $hash{$temp[0]}){
            push @{$hash{$temp[0]}},$temp[3];
            $hash{$temp[0]}=$hash{$temp[0]};
        
        }
        
    }
    
    open FA,"$ARGV[5]";
    
    while(<FA>){
        chomp;
        @temp=split /\t/,$_;
        if(exists $hash{$temp[0]}){
            push @{$hash{$temp[0]}},$temp[3];
            $hash{$temp[0]}=$hash{$temp[0]};
        
        }
        
    }
    
    
    foreach(sort keys %hash){
    print"$_\t@{$hash{$_}}\n";
        
        
        
    }
    

    运行代码:

    perl perl_merge.pl  WT_rep1.tpm.count  WT_rep2.tpm.count WT_rep3.tpm.count  WT_rep4.tpm.count WT_rep5.tpm.count WT_rep6.tpm.count|head -20
    

    初步结果如下:


    image.png

    相关文章

      网友评论

          本文标题:根据geneID合并数据(相当于merge)

          本文链接:https://www.haomeiwen.com/subject/clovxrtx.html