生信专题Linux与生物信息

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

2022-07-19  本文已影响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
上一篇下一篇

猜你喜欢

热点阅读