#TCGA系列#利用perl提取一个文件夹中的多个文件夹里的注释文本

本文介绍如何通过Perl脚本从TCGA数据的多个文件夹中提取并整合annotations.txt文件中的miRNA注释,以便于后续分析工作。解压后,数据分布在不同文件夹中,部分包含annotations.txt。Perl代码将帮助整理这些信息。
  • 我们里用gdc下载TCGA数据时,下载到一个压缩文件包。解压后,会发现里面有多个文件夹,而且最烦人的是:有的文件夹里有annotations.txt,而有的没有。
    在这里插入图片描述
  • miRNA注释文档有9列
    在这里插入图片描述
  • 我们利用perl把所有的注释信息(id和note)放在一个文档,方便后续工作
    在这里插入图片描述
perl代码
#获取某个文件夹目录下的文件的路径名(包括多级目录里的文件)
sub gDirTree {
   my $dir=shift;
   my @gFile=();
   if (!-d "$dir" && -e "$dir") {
    push(@gFile,$dir);
    return @gFile;
   }
   return if (!-d "$dir" || $dir =~ /\.$/);
   my @files=grep {!(/^\./)} glob("$dir/*");
   for my $nextname(@files ) {
      if(-d "$nextname") {
         push(@gFile,&gDirTree($nextname));
      } else {
         push(@gFile,$nextname);
      }
   }
   return @gFile;
}

#利用正则表达式提取注释文件的路径名,并存入@files数组
my @Files=&gDirTree("E:/gdc");
my @files=();
foreach $file(@Files){
    if($file=~m/\bannotations\b/g){
        push(@files,$file)
    }
}

#遍历每个注释文件,提取其id和note信息
open(output,">E:/Data/result.txt")or die $!;
foreach $list(@files){
    open(F, "$list") or die $!;
    while(defined($line=<F>)){
        chomp();
        if($line=~ m/((\w+)-(\w+)-(\w+)-(\w+)-(\w+))/){
           print output "$&"."\t";
        }
        if($line=~ m/\bApproved\b/){
           print output "$'"."\n";
        }
     }
}
close output;
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值