免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2842 | 回复: 2
打印 上一主题 下一主题

批量匹配并且调用R输出图像 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-12-05 01:02 |只看该作者 |倒序浏览
在文件夹下有100个txt文件格式如下
文件1:
ppa001528m.g
。。。
文件2:
ppa001300m.g
。。。
文件3:
ppa001519m.g
。。。

有个文件2 file2 包含所有id的数据,格式如:
geneID        0d        CC5d        CC7d        CC14d        CC21d        CC21+2d        LTC5d        LTC7d        LTC14d        LTC21d        LTC21+2d
ppa001528m.g        1.653688942        1.537473414        1.769774091        1.394886738        1.382496983        13.98670972        1.627462538        2.569354314        1.3719842        1.592063844        6.339376946
ppa001300m.g        16.44252826        25.11701342        30.51752662        36.46444899        26.43879297        38.89443927        12.02667506        18.99975498        28.04562035        31.58610183        27.75076239
ppa001519m.g        5.73343494        2.281317849        2.959856951        3.45497983        4.322759702        12.0967961        2.574850257        3.448260154        3.504521367        5.772193379        7.853838426
。。。
请问如何批量读取这100个文件,分别匹配file2后,输出100个含有数据的txt文件?
即 文件1

另外,这个在perl中整合R,做出100个txt文件中的散点图?

请高人指教。目前知道readdir可以读取文件夹下的所有文件,但是读取之后只是所有文件的名称的数组,如何读取其中的数据并进行进一步的操作未知。
另外一直困扰我的问题是如何将R整合到perl批量读取这100个输出文件并且做出散点图?

大神,求救。我真的尽力了。

论坛徽章:
0
2 [报告]
发表于 2015-12-06 04:05 |只看该作者
回复 1# 321wangke321
自己写了一个,但是有个问题,如果其中一个文件中ID不在file2中,将输出空文件。

#!usr/bin/perl
use strict;
use warnings;


my %hash;
my $geneID;

open EXP_INFILE, "$ARGV[0]" or die "cannot open EXP_INFILE!";
while (<EXP_INFILE>{
        chomp;
        my ($geneID) = (split(/\t/,$_))[0];
              $hash{$geneID}=$_;
        }

my $dir = '/home/linux/R/softwares/perl-scripts/promoter-extraction/gene_family_extraction/';


opendir my $dh, $dir or die "cannot open $dir!";

foreach my $file_name (readdir $dh){
next unless $file_name =~ /(.*)\.txt$/;
my $file_out= "$1_out.txt";

open INFILE, '<',$file_name or die "cannot open $file_name!";
open OUT, '>',$file_out or die "cannot open $file_out!";

while (<INFILE>{
chomp;
print OUT "$hash{$_}\n";
}
}



close INFILE;
close OUT;
}

closedir $dh;

论坛徽章:
0
3 [报告]
发表于 2015-12-06 09:26 |只看该作者
有点乱,加个判断了,比如从文件1中取出 id,把2的每行放数组,用grep筛选了,方法很多了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP