TCGA数据下载及矩阵整理

2024-02-25 01:40
文章标签 数据 整理 下载 矩阵 tcga

本文主要是介绍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 $objopen(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数据下载及矩阵整理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/744047

相关文章

javaScript在表单提交时获取表单数据的示例代码

《javaScript在表单提交时获取表单数据的示例代码》本文介绍了五种在JavaScript中获取表单数据的方法:使用FormData对象、手动提取表单数据、使用querySelector获取单个字... 方法 1:使用 FormData 对象FormData 是一个方便的内置对象,用于获取表单中的键值

Android开发中gradle下载缓慢的问题级解决方法

《Android开发中gradle下载缓慢的问题级解决方法》本文介绍了解决Android开发中Gradle下载缓慢问题的几种方法,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、网络环境优化二、Gradle版本与配置优化三、其他优化措施针对android开发中Gradle下载缓慢的问

python 3.8 的anaconda下载方法

《python3.8的anaconda下载方法》本文详细介绍了如何下载和安装带有Python3.8的Anaconda发行版,包括Anaconda简介、下载步骤、安装指南以及验证安装结果,此外,还介... 目录python3.8 版本的 Anaconda 下载与安装指南一、Anaconda 简介二、下载 An

Rust中的BoxT之堆上的数据与递归类型详解

《Rust中的BoxT之堆上的数据与递归类型详解》本文介绍了Rust中的BoxT类型,包括其在堆与栈之间的内存分配,性能优势,以及如何利用BoxT来实现递归类型和处理大小未知类型,通过BoxT,Rus... 目录1. Box<T> 的基础知识1.1 堆与栈的分工1.2 性能优势2.1 递归类型的问题2.2

Python使用Pandas对比两列数据取最大值的五种方法

《Python使用Pandas对比两列数据取最大值的五种方法》本文主要介绍使用Pandas对比两列数据取最大值的五种方法,包括使用max方法、apply方法结合lambda函数、函数、clip方法、w... 目录引言一、使用max方法二、使用apply方法结合lambda函数三、使用np.maximum函数

Java下载文件中文文件名乱码的解决方案(文件名包含很多%)

《Java下载文件中文文件名乱码的解决方案(文件名包含很多%)》Java下载文件时,文件名中文乱码问题通常是由于编码不正确导致的,使用`URLEncoder.encode(filepath,UTF-8... 目录Java下载文件中文文件名乱码问题一般情况下,大家都是这样为了解决这个问题最终解决总结Java下

Redis的数据过期策略和数据淘汰策略

《Redis的数据过期策略和数据淘汰策略》本文主要介绍了Redis的数据过期策略和数据淘汰策略,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录一、数据过期策略1、惰性删除2、定期删除二、数据淘汰策略1、数据淘汰策略概念2、8种数据淘汰策略

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE

Python给Excel写入数据的四种方法小结

《Python给Excel写入数据的四种方法小结》本文主要介绍了Python给Excel写入数据的四种方法小结,包含openpyxl库、xlsxwriter库、pandas库和win32com库,具有... 目录1. 使用 openpyxl 库2. 使用 xlsxwriter 库3. 使用 pandas 库

SpringBoot定制JSON响应数据的实现

《SpringBoot定制JSON响应数据的实现》本文主要介绍了SpringBoot定制JSON响应数据的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录前言一、如何使用@jsonView这个注解?二、应用场景三、实战案例注解方式编程方式总结 前言