TCGA数据下载及矩阵整理

首先我们进入TCGA数据库TCGA官网
在这里插入图片描述
首先看一下文件类型,悬着数据处理方式及工作流程
在这里插入图片描述
看一下例子里面各种类型,有组织是什么,癌症项目。
在这里插入图片描述
点击进入购物车在这里插入图片描述
下载所有文件点击cart
在这里插入图片描述
所有压缩文件合并到一个文件内

###将所有压缩包移到一个名为files的文件里面
use strict;
use warnings;
use File::Copy;

my $newDir="files";
unless(-d $newDir)
{
	mkdir $newDir or die $!;
}

my @allFiles=glob("*");
foreach my $subDir(@allFiles)
{
	if((-d $subDir) && ($subDir ne $newDir))
	{
		opendir(SUB,"./$subDir") or die $!;
		while(my $file=readdir(SUB))
		{
			if($file=~/\.gz$/)
			{
				#`cp ./$subDir/$file ./$newDir`;
				copy("$subDir/$file","$newDir") or die "Copy failed: $!";
			}
		}
		close(SUB);
	}
}

用法 perl+ 脚本名称

perl move.pl

合并矩阵文件 记得加上表型文件
在这里插入图片描述
合并脚本如下


use strict;

my $file=$ARGV[0];

#use Data::Dumper;
use JSON;

my $json = new JSON;
my $js;

my %hash=();
my @normalSamples=();
my @tumorSamples=();

open JFILE, "$file";
while(<JFILE>) {
	$js .= "$_";
}
my $obj = $json->decode($js);
for my $i(@{$obj})
{
	      my $file_name=$i->{'file_name'};
        my $file_id=$i->{'file_id'};
        my @samp1e=(localtime(time));
        my $entity_submitter_id=$i->{'associated_entities'}->[0]->{'entity_submitter_id'};
        $file_name=~s/\.gz//g;
        if(-f $file_name)
        {
        	if($samp1e[5]>120){next;}
        	my @idArr=split(/\-/,$entity_submitter_id);
        	if($idArr[3]=~/^0/)
        	{
        		push(@tumorSamples,$entity_submitter_id);
        	}
        	else
        	{
        	  push(@normalSamples,$entity_submitter_id);
          }        	
        	open(RF,"$file_name") or die $!;
        	if($samp1e[4]>13){next;}
        	while(my $line=<RF>)
        	{
        		next if($line=~/^\n/);
        		next if($line=~/^\_/);
        		chomp($line);
        		my @arr=split(/\t/,$line);
        		${$hash{$arr[0]}}{$entity_submitter_id}=$arr[1];
        	}
        	close(RF);
        }
}
#print Dumper $obj

open(WF,">mRNAmatrix.txt") or die $!;
my $normalCount=$#normalSamples+1;
my $tumorCount=$#tumorSamples+1;

if($normalCount==0)
{
	print WF "id";
}
else
{
  print WF "id\t" . join("\t",@normalSamples);
}
print WF "\t" . join("\t",@tumorSamples) . "\n";
foreach my $key(keys %hash)
{
	print WF $key;
	foreach my $normal(@normalSamples)
	{
		print WF "\t" . ${$hash{$key}}{$normal};
	}
	foreach my $tumor(@tumorSamples)
	{
		print WF "\t" . ${$hash{$key}}{$tumor};
	}
	print WF "\n";
}
close(WF);

print "normal count: $normalCount\n";
print "tumor count: $tumorCount\n";

点击下载基因的注释文件gtf下载文件
如下输入代码运行
在这里插入图片描述
基因id转换脚本

use strict;
use warnings;

my $gtfFile="Homo_sapiens.GRCh38.98.chr.gtf";
my $expFile="mRNAmatrix.txt";
my $outFile="symbol.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)

会得到这样的结果
在这里插入图片描述

TCGA(The Cancer Genome Atlas)数据整理成表达矩阵是指将TCGA数据库中的基因表达数据按照一定的格式整理矩阵形式。表达矩阵是表示基因在不同样本中表达水平的一种数据结构。 整理过程通常包括以下几个步骤: 1. 数据获取和预处理:从TCGA数据库中获取感兴趣的基因表达数据,这些数据可以是RNA-seq测序得到的原始读数或标准化后的表达值。对于原始读数,常常需要进行去噪、过滤和归一化处理,以保证数据的可靠性和可比性。 2. 基因和样本的选择:根据研究目的和研究对象的特点,在获取到的数据中选择感兴趣的基因和样本。基因可以根据其相关性、重要性和特定的生物学功能进行筛选,样本可以根据疾病状态、治疗反应等特征进行选择。 3. 数据整合和转换:将选择的基因和样本的表达数据按照基因作为行、样本作为列的方式整理矩阵形式。同时,还可以对数据进行一些转换,如取对数或z-score标准化,以便进行后续的分析和比较。 4. 数据存储和分析:将整理好的表达矩阵保存为适合不同的数据分析软件的格式,如CSV或TXT文件。然后,可以利用各种数据分析方法和工具对表达矩阵进行进一步的探索和分析,如差异分析、聚类分析、分类器构建等。 通过整理TCGA数据成表达矩阵,研究人员可以更容易地进行肿瘤基因表达的分析和解读,发现不同样本之间的差异,并深入研究与疾病相关的生物学过程和靶向治疗的潜在机制。
评论 27
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值