美文网首页生物信息学习生物信息笔记生物信息
#TCGA系列#TCGA基因/miRNA表达谱数据整合

#TCGA系列#TCGA基因/miRNA表达谱数据整合

作者: 生信杂谈 | 来源:发表于2017-05-30 20:28 被阅读241次

    上期(#TCGA系列#TCGA基因/miRNA表达谱及临床数据下载​)介绍了使用TCGA 的API下载肿瘤表达谱及临床数据,本期来处理上期下载的表达谱文件.还是以肝癌miRNA表达谱为例.

    我们上次已经下载了373个cases的425个表达谱文件,每个样本(case)的表达谱文件格式如下.
    单个样本miRNA表达谱
    其他所有样本的格式与上图相同.每列依次是miRNA名称,原始reads数目,归一化reads数RPM,最后一列cross-mapped miRNA.

    目录结构如下,都是file_ID/file_name的:

    425个表达谱文件结构

    file_ID和file_name在上期下载的manifest中有,manifest文件如下:

    包含file_ID和file name的manifest文件
    我们的目的是将425个表达谱文件合并成一个表达谱矩阵,并且以file_ID为列名,如结果是类似下面的:
    表达量矩阵
    shell脚本如下:
    # 合并425个样本的miRNA名及对应表达量RPM,最终结果应该是1882行miRNA和425列样本表达量的矩阵文件,代码如下:
    
    # file_ID和file_name数组分别存储file ID和file name
    bash
    file_ID=(`awk '{if(NR>1)print $1}' ../gdc_manifest.2017-05-26T16-02-11.963011.tsv`)
    file_name=(`awk '{if(NR>1)print $2}' ../gdc_manifest.2017-05-26T16-02-11.963011.tsv`)
    
    # 数组file_path存储文件路径:
    for((i=0;i<${#file_ID[@]};i++)){
        file_path[$i]="./"${file_ID[$i]}"/"${file_name[$i]}
        echo ${file_path[$i]}
    }
    
    # 使用awk二维数组进行合并:
    awk -v file_num=${#file_path[@]} '
        BEGIN{
            OFS="\t";
        }
        {
            # 每一个文件第一行是列名,而我们不需要合并列名,所以要NR>1
            # 然后以miRNA($1),文件ID(ARGIND),构建值为表达量($2)二位数组a[miRNA][exp].
            if(FNR>1){a[$1][ARGIND]=$3;}
        }
        # 构建了425个数组后进行合并:
        END{
            for(i in a){    # 一维是miRNA,所以i就是miRNA
                printf "%s\t",i     #输出miRNA
                j=1;        # 为了不改变文件顺序所以使用渐加的方式循环
                while(j<file_num+1){        #循环输出每个样本中miRNA的表达量
                    printf "%s\t",a[i][j];
                    j=j+1;
                }
                print ""    #每一行加个换行
            }
        }' ${file_path[@]} >../miRNA_exp_matrix.txt
    
    # 将file_ID添加到表达量矩阵中:
    echo miRNA ${file_ID[@]}|sed 's/ /\t/g'|awk '{if(NR==FNR)print;if(NR>FNR)print}' -  ../miRNA_exp_matrix.txt >../miRNA_exp_matrix_tmp.txt
    cp ../miRNA_exp_matrix_tmp.txt ../miRNA_exp_matrix.txt
    #删除临时文件:
    rm ../miRNA_exp_matrix_tmp.txt
    
    # 将file_ID添加到表达量矩阵中也可以使用以下代码:
    aaa=`echo miRNA ${file_ID[@]}|sed 's/ /\t/g' `
    sed -i "1i $aaa" ../miRNA_exp_matrix.txt 
    
    这个脚本运算速度很快,2s左右.多样本基因表达谱整合也是如此,只需下载所有的单个表达谱文件后替换manifest文件直接运行上面脚本即可.

    更多原创精彩内容敬请关注生信杂谈

    相关文章

      网友评论

        本文标题:#TCGA系列#TCGA基因/miRNA表达谱数据整合

        本文链接:https://www.haomeiwen.com/subject/bdwrfxtx.html