gpt4 book ai didi

perl - 检查数字是否位于两个值之间

转载 作者:行者123 更新时间:2023-12-02 22:24:47 24 4
gpt4 key购买 nike

我有这个文件

427 A   C   A/C 12
436 G C G/C 12
445 C T C/T 12
447 A G A/G 9
451 T C T/C 5
456 A G A/G 12
493 G A G/A 12

我想阅读第一列并找到所有其他差异小于 10 的 ID。

427 A   C   A/C 12  436
436 G C G/C 12 427,445
445 C T C/T 12 436,447,451
447 A G A/G 9 445,451,456
451 T C T/C 5 445,447,456
456 A G A/G 12 451,447
493 G A G/A 12

最后一列应该像上面那样。所有与该特定 ID 相差 + 或 - 10 个碱基的 ID。例如对于 436,边界是 {426 - 446} 在该范围内的其他 ID 是 427 和 445,所以我将它们显示在第 6 列..

最佳答案

这是使用 Perl 的一种方法:

use strict;
use warnings;

open my $fh, '<', 'dataFile.txt' or die $!;
chomp( my @data = <$fh> );
close $fh;

my @IDs = map /(\d+)/, @data;

for (@data) {
my ($id) = /(\d+)/;
print "$_\t"
. ( join ',', grep { abs $id - $_ < 11 and $id != $_ } @IDs )
. "\n";
}

输出:

427 A   C   A/C 12  436
436 G C G/C 12 427,445
445 C T C/T 12 436,447,451
447 A G A/G 9 445,451,456
451 T C T/C 5 445,447,456
456 A G A/G 12 447,451
493 G A G/A 12

关于perl - 检查数字是否位于两个值之间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13131686/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com