RNA-seq: 用perl进行基因ID转换
2022-07-19 本文已影响0人
生信小白花
RNAseq上游分析得到的矩阵通常是如下的基因id,这对于我们找差异基因不够直观,所以做差异分析之前一般会进行一个基因id转换。
输入文件
image.png即转换为这种格式,方法如下。
输出文件
image.png1. 写如下文件,储存为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运行即可。