首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将一个值与perl上的一系列重叠值进行比较。

将一个值与perl上的一系列重叠值进行比较。
EN

Stack Overflow用户
提问于 2014-02-25 09:46:25
回答 2查看 73关注 0票数 0

第一个文件列出转录因子和与它们相关的基因组区域。它被排列为chr,起始位置,末端位置,转录因子的名称。看起来是这样的:

代码语言:javascript
运行
复制
chr1 10089 10309 ZBTB33
chr1 10132 10536 TAF7_(SQ-8)
chr1 10133 10362 Pol2-4H8
chr1 10148 10418 MafF_(M8194)
chr1 10382 10578 ZBTB33
chr1 16132 16352 CTCF
chr1 29308 29578 TAF1
chr1 29328 29558 HEY1
chr2 89802 90046 USF-1
chr4 91180 91560 CTCF

请注意,许多区域重叠。

第二个文件很简单。一列查询。看起来是这样的:

代码语言:javascript
运行
复制
chr1_10350
chr1_12090
chr1_16250
chr1_24512
chr5_1142341

我希望获得一份报告查询及其相关转录因子的输出。如下所示:

代码语言:javascript
运行
复制
chr1_10350 TAF7_(SQ-8)
chr1_10350 Pol2-4H8
chr1_10350 MafF_(M8194)
chr1_10350 ZBTB33
chr1_16250 CTCF

我尝试了来自(match one list to another)的修改后的perl脚本:

代码语言:javascript
运行
复制
#!/usr/bin/perl 
use warnings;
use strict;

open(my $db, "<", "first_file.txt") or die "Cannot open < first_file.txt: $!";
open(my $tst, "<", "second_file.txt") or die "Cannot open < second_file.txt: $!";
open (OUT, ">Result.txt") or die "Cannot create output file";

my @database;

while (<$db>) {
    chomp;
    my @fields = split;
    push @database, \@fields;
}

while (my $line = <$tst>) {
    chomp($line);
    my ($chr, $pos) = split /_/, $line;
    foreach my $entry (@database) {
        if ($chr eq $entry->[0] && $entry->[1] <= $pos && $pos <= $entry->[2]) {
            print OUT "$line $entry->[3]\n";
        }
    }
}

但是不仅速度非常慢,而且来自第二个文件的重复查询(例如chr1_10350)只会导致输出中的一个条目,而不是所有这些条目。

如能提供指导,将不胜感激。谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-25 10:22:18

您可以尝试使用下面的bash,使用system命令执行它

加入-t‘’-1,1 -2 1 <(cat second_file.txt cat awk‘{gsub(/,“",$1);打印$0}') first_file.txt|cut -d’‘-f1,2,5|awk -F’'{print $1"_"$2”$3;}‘

票数 -1
EN

Stack Overflow用户

发布于 2014-02-25 16:51:42

我已经在我的机器上提供的数据(Win7,ActiveState Perlv5.16)上执行了您的脚本,并且运行得很好。

注意:结果数据只包含4个元素(这是正确的):

代码语言:javascript
运行
复制
    chr1_10350 TAF7_(SQ-8)
    chr1_10350 Pol2-4H8
    chr1_10350 MafF_(M8194)
    chr1_16250 CTCF
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22010246

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档