精华内容
下载资源
问答
  • 实现批量txt的读取并合并到一个txt中进行输出,主要用于tcga数据的预处理

    本程序功能

    将tcga数据的批量txt文件合并成一个txt。

    如下:

    • 原始的第一个txt(代表一个病人)的数据内容

     

    • 合并之后的txt数据,基因名不变,只是把病人的表达量收集到一起

     

     

    操作详细步骤

    本人测试通过的运行环境:Python 2.7  Windows 7 64bit  cmd命令运行器

    使用步骤:

            1.将要处理的数据txt文件放入到11这个文件夹下面(默认的root = 'C:\\tcga\\datapro\\11'),或者将单引号' '中的路径改成自己txt所在的文件夹的路径(结尾没有\\也行

     

            2.放入的txt文件建议不要超过100个,因为个数越多,读入时消耗电脑内存就越大,容易卡机,测试时100个可以正常运行

            3.默认生成的txt路径为F:/data1.txt,自己也可以修改这个路径和文件名

     

            4.点Windows键,在搜索栏输入 cmd 按回车键,cmd将被打开

            4.将tcga_txt.py文件复制到安装的Python所在的文件夹下,我的是C:\Python27(默认安装就是这个路径),能看到python.exe

     

            5.在cmd中输入cd C:\Python27(注意有空格)按回车会进入到该目录,然后输入python.exe tcga_txt.py  再按回车,就开始执行程序了,可以看到写入到输出文件的基因行数

     

            4.处理完第一批txt后,记得将生成的data1.txt改名或者的剪切到别的地方,防止第二批txt运行时生成的data1.txt将其覆盖掉

    源码

      tcga_txt.py

    # -*- coding:utf-8 -*-
    """
    Author:Logen
    Version=1.0
    Email:iin729@163.com
    测试的运行环境:Python 2.7  Windows 7 64bit 
    使用说明:
            1.将要处理的数据txt文件放入到11这个文件夹下面(默认的root = 'C:\\tcga\\datapro\\11'),或者将''中的路径改成自己txt所在的文件夹的路径也行
            2.放入的txt文件建议不要超过100个,因为个数越多,读入时消耗电脑内存就越大,容易卡机,测试时100个可以正常运行
            3.默认生成的txt路径为F:/data1.txt,自己也可以修改这个路径和文件名
            4.处理完第一批txt后,记得将生成的data1.txt改名或者的剪切到别的地方,防止第二批txt运行时生成的data1.txt将其覆盖掉
    """
    #当编写的Python文件即当前代码及注释中含有中文或者非英文字符时,需要声明编码格式为utf-8
    import os   #读取txt文件所需要的包
    import linecache #读取指定行函数linecache.getline(file_ob, line_num)所在的包
    
    root = 'C:\\tcga\\datapro\\11'#读取的批量txt所在的文件夹的路径
    file_names = os.listdir(root) #读取11文件夹下所有的(520个)txt的文件名
    file_ob_list = []   #定义一个列表,用来存放刚才读取的520个txt文件名
    for file_name in file_names:  #循环地给这520个文件名加上它前面的路径,以得到它的具体路径
        fileob = root + '\\' + file_name #文件夹路径加上\\ 再加上具体要读的的txt的文件名就定位到了这个txt
        file_ob_list.append(fileob) #将路径追加到列表中存储  ['C:\\tcga\\datapro\\11\\1.txt','C:\\tcga\\datapro\\11\\2.txt',。。。。]
    
    print file_ob_list  #打印这个列表的内容到显示屏,不想显示的话可以去掉这句
    
    ldata=[]
    data = []
        #file_ob_list是所有文件(比如10个txt)对象组成的列表,for用来循环读取每一个文件,读取一个文件的方式是一行行读入,
        # 每次循环一次for就读取所有文件的某一行,因为这一行的第一列都是基因名称,都是一样的
    line_num = 1  #从txt的第一行开始读入
    total_line = len(open(file_ob_list[0]).readlines()) #计算一个txt中有多少行
    while line_num <= total_line:        #只有读完的行数小于等于总行数时才再读下一行,否则结束读取
        for file_ob in file_ob_list:    #按顺序循环读取所有文件
                line = linecache.getline(file_ob, line_num)#读取这个文件的第line_num行
                line = line.strip() #去掉这一行最后一个字符/n 即换行符
                if line is None or len(line) ==0 :
                    break
                fields = line.split('\t')  #将这一行划分为两列,存放到列表中,fields是这样的: ['ENSG00000242268.2','0.0']
                prob = fields[1]           # fields[0]是'ENSG00000242268.2'   fields[1]是'0.0'
    
                #这个if部分只是将表达量的10位小数点压缩到4位,其实可以去掉这个处理
                if fields[1] != 'NA':      #基因表达量不是NA也就是为数字时,才对它进行小数点的减少处理
                    prob = float(fields[1]) #将字符形式的数字如'0.0'强制转化为浮点型(带小数点的数字)数字0.0
                    prob = '%.4f' % prob   #只保留小数点后面的4位小数
    
                if file_ob == file_ob_list[0] :  #如果读的是第一个txt文件,则将读进去的第一列基因名和第二列表达量
                    data = [fields[0], prob]     # 都加入到列表中  data=  ['ENSG00000242268.2','0.0']
                else :                          # 如果读进去的不是第一个文件,则跳到else执行,第一列不要,
                    data.append(prob)           #只将第二列表达量追加到之前的二维数组后面,假如这时读的是第二个文件的第一行
                                                # 此时fields为['ENSG00000242268.2','0.10'],则data=['ENSG00000242268.2','0.0','0.10']
    
        line_num = line_num + 1     #行数加1,好接着读取每一个文件的第二行
        ldata.append(data)        #将存放了所有txt的第一行数据的data,放到一个新的列表中保存,这时ldata就是一个二维列表,ldata=[['ENSG00000242268.2','0.0','0.10'],[...],...]
                                #用来存放所有的(60482行,就是所有的基因名)行数
        data=[]                #清空data用来存放所有txt的下一行
    
    f = open("F:/data1.txt", "w+")  #创建存放数据的文件
    for i,p in enumerate(ldata):    #将数据写入文件,i是enumerate()函数返回的ldata的某个元素p(就是一行数据,如['ENSG00000242268.2','0.0','0.10']从第一个开始)开始的序号(0,1,2等)
        for j,q in enumerate(p):   #读取p(如['ENSG00000242268.2','0.0','0.10'])中的每一个元素
            f.write(q + "\t" )    #将这个元素写到txt中,每写一个加入一个“\t”(它代表excel中的一根竖线)
        print i                 #显示一下打印到了第多少行
        f.write( "\n")         #每写完一行,就写入一个换行符"\n",好使的接下来的数据写入到第二行
    
    f.close()  #操作完一个文件后应该将它关闭
     

     

     

     

    
     
    展开全文
  • 20分钟学会TCGA数据处理的视频链接

    千次阅读 2018-10-31 16:09:14
    http://college.gcbi.com.cn/video/tcga入门-数据下载、整合及简�
    展开全文
  • TCGA数据下载及矩阵整理

    千次阅读 多人点赞 2019-12-24 16:43:36
    首先看一下文件类型,悬着数据处理方式及工作流程 看一下例子里面各种类型,有组织是什么,癌症项目。 点击进入购物车 下载所有文件点击cart 所有压缩文件合并到一个文件内 ###将所有压缩包移到一个名为files的...

    首先我们进入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)
    

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

    展开全文
  • 用R软件处理TCGA数据可能出现的错误

    千次阅读 2018-11-27 19:59:34
    用命令行下载TCGA数据时报错: Traceback (most recent call last):  File "<string>", line 21, in  File "c:\users\cdis\appdata\local\temp\pip-build-n7scbe\PyInstaller\PyInstaller\loader\pyi_...

    R软件报错:无法分配大小为2.4 Gb的矢量。
    解决方法:通过ls()看work space中有什么变量;
                    通过object.size()看每个变量占多大内存;
                    通过memory.size()查看现在的work space的内存使用;
                    通过memory.limit()查看系统规定的内存使用上限;
                    通过memory.limit(newLimit)更改到一个新的上限;
                    可以使用rm(object)删除变量,然后使用gc()做Garbage collection来释放内存。

     

    用命令行下载TCGA数据时报错:
    Traceback (most recent call last):
      File "<string>", line 21, in <module>
      File "c:\users\cdis\appdata\local\temp\pip-build-n7scbe\PyInstaller\PyInstaller\loader\pyi_importers.py", line 507, in install
      File "c:\users\cdis\appdata\local\temp\pip-build-n7scbe\PyInstaller\PyInstaller\loader\pyi_importers.py", line 156, in __init__
    ImportError: Can't load frozen modules.

    通常是因为路径中含有中文名字导致的,换成英文就可以正常运行了

    展开全文
  • R语言:TCGA数据分析一

    千次阅读 2016-08-13 12:44:09
    引言我最近在做TCGA数据分析,在处理中遇到的问题及其收获。主要包括: case ID 大小写处理 数据的匹配 涉及到的函数有:小写 tolower 大写 toupper 单一的局部匹配 grep 多个全局匹配 match 保留固定长度的字符 ...
  • TCGA数据库的利用(二)—— 数据处理

    万次阅读 多人点赞 2019-05-13 14:17:30
    上一篇文章介绍的是关于TCGA数据的下载,如果不太清楚怎么下载数据的读者请参考这篇文章:TCGA数据库的利用(一)—— 数据下载!,而本篇文章主要介绍一下数据的处理过程,因为数据下载之后都是单一样本存储而且样本...
  • 欢迎关注”生信修炼手册”!TCGAbiolinks是一个分析处理TCGA数据的R包,通过GDC API来查询和下载TCGA的数据,同时提供了差异分析,生存分析,富集分析等常见的分析功能,...
  • 下载包的作者提供的下载地址:...文献引用:TCGA assembler 2: software pipeline for retrieval and progressing of TCGA/CPTAC data 参考操作说明:https://cloud.tencent.com/developer/ar...
  • 近期需要处理一些TCGA数据库中癌症甲基化methylation的数据,其中需要去除sex和SNPs相关的tcgs,如果自己从原理上来做比较麻烦,比较理想的是调用一些现成的包。 发现,生物信息学这块儿基本上都是R语言的天下,...
  • - 当我们TCGA官方下载数据miRNA表达数据时,这些数据大多都位于多个文件夹下,而且有类似文件容易混淆。 - 说实话,R处理文件并没有perl好用,但并不代表不能处理 f1 <- list.files(pattern="isoforms....
  • 模块A从美国国家癌症研究所的基因组数据共享区(GDC)获取公共TCGA数据,并将单个数据文件组装到本地存储的数据表中。 它还可以获取由CPTAC生成的TCGA样品的质谱蛋白质组学数据。 模块B满足各种数据处理需求,以...
  • 并对数据进行处理 <p>rt = read.table("lncRNA.txt", header=T, sep="\t", check.names=F) <p>rt=as.matrix(rt) <p>rownames(rt)=rt[,1] <p>exp=rt[,2:ncol(rt)] ...
  • 数据类别和值都没有影响,这是为啥。 group=gsub("2","1",group) <p>#选择等于0的项 data=data[,group==0] <code>group=sapply(strsplit(rownames...
  • 如何标准化原始RNA-Seq数据处理来自TCGA的临床数据 该管道设计为在基于Unix的系统上执行。 大多数代码是用R编程语言编写的。 但这也需要在命令行执行“ bash”脚本。 安装。 我们使用版本3.1.0。 安装以下R软件包...
  • tcga标本命名 获得高质量的人类生物标本(例如血液,唾液,血浆,DNA和RNA)对于增进对疾病的了解以及先进的分子技术,临床试验研究,个性化医学研究和临床实践至关重要。 生物库在此方面起着至关重要的作用,它...
  • TCGA数据库的利用(二)—— 数据处理! 但在实际的操作中,也发现了第二篇文章中的一些小问题,因此将其转载到公众号后稍加改进,但是基因注释这部分中,第三方包的安装方法似乎已无法使用,因此记录下来,分享给...
  • 使用knn-smoothing对上述收集的数据进行平滑处理( ) 功能 featSelect(homepath,cancerpath,normalpath,k) 参量 homepath:(str)您要保存所有生成的文件和文件夹的路径。 癌变路径:(str) 所有癌症的...
  • 欢迎关注”生信修炼手册”!TCGA对于不同类型的数据,有着独特的处理流程,具体如下1. DNA-Seq Analysis PipelineTCGA中的DNA测序主要用来分析肿瘤患者中的体...
  • 下载TCGA-BRCA【乳腺癌数据】,但是中间有下载出问题的文件夹(里面的格式不是.svs格式,是partial.格式), 这个时候就需要删除partial.格式文件以及其目录文件。 由于TCGA-BRCA的数据很大,就先设置一个样例 在...
  • 下载TCGA-BRCA【乳腺癌数据】,但是中间有下载出问题的文件夹(里面的格式不是.svs格式,是partial.格式), 上篇博客用的删除操作 因为数据量很大,删除错的话,下载就难,所以我就尝试转用剪切的操作, 解决 ...

空空如也

空空如也

1 2 3
收藏数 44
精华内容 17
关键字:

tcga数据处理