美文网首页生信专题Linux与生物信息
RNA-seq: 用perl进行基因ID转换

RNA-seq: 用perl进行基因ID转换

作者: 生信小白花 | 来源:发表于2022-07-19 18:13 被阅读0次

    RNAseq上游分析得到的矩阵通常是如下的基因id,这对于我们找差异基因不够直观,所以做差异分析之前一般会进行一个基因id转换。

    输入文件
    image.png

    即转换为这种格式,方法如下。

    输出文件
    image.png

    1. 写如下文件,储存为GeneName2Symble.pl文件。除了前三个文件名需要更改为自己的,分别为注释文件,输入文件名,输出文件名,其他的都一致即可。将该.pl文件与里面的注释文件,文本文件放在同一文件夹内。

    ##用法perl GeneName2Symble.pl
    use strict;
    use warnings;
    
    my $gtfFile="Homo_sapiens.GRCh38.98.chr.gtf";
    my $expFile="tpm.txt";
    my $outFile="tpm_symble.txt";
    
    my %hash=();
    open(RF,"$gtfFile") or die $!;
    while(my $line=<RF>)
    {
        chomp($line);
        if($line=~/gene_id \"(.+?)\"\;.+gene_name "(.+?)"\;.+gene_biotype \"(.+?)\"\;/)
        {
            $hash{$1}=$2;
        }
    }
    close(RF);
    
    open(RF,"$expFile") or die $!;
    open(WF,">$outFile") or die $!;
    while(my $line=<RF>)
    {
        if($.==1)
        {
            print WF $line;
            next;
        }
        chomp($line);
        my @arr=split(/\t/,$line);
        $arr[0]=~s/(.+)\..+/$1/g;
        if(exists $hash{$arr[0]})
        {
            $arr[0]=$hash{$arr[0]};
            print WF join("\t",@arr) . "\n";
        }
    }
    close(WF); 
    close(RF)
    

    2. 打开cmd,到上述文件储存目录下,输入perl GeneName2Symble.pl运行即可。

    image.png

    相关文章

      网友评论

        本文标题:RNA-seq: 用perl进行基因ID转换

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