gpt4 book ai didi

c# - 根据原始顺序获取 DNA 子串

转载 作者:行者123 更新时间:2023-11-30 22:33:25 25 4
gpt4 key购买 nike

我想得到长DNA序列的子串

例如,给定:

1/ATXGAAATTXXGGAAGGGGTGG
2/AATXGAAGGAAGGAAGGGGATATTX
3/AAAAAATTXXGGAAGGGGXTTTA
4/AAAATTXXATAXXGGAAGGGGXTXG
5/ATTATTGTTXAXTATTT

输出为:

1/TXG    -  TTXX
2/TXG -
3/ - TTXX
4/TTXX - TXG
5/ -

我尝试了以下正则表达式模式:

(TXG|TTXX) 

它起作用了,结果被放在一个列表中,但我不知道如何检索每个结果在原始序列中出现的顺序。那是,TTXXTXG 是否分别出现在序列 4 中的第一个和第二个,而第二个和第一个出现在序列 1 中;在第二和第三个结果中,这更难,因为 match-xx 函数调用不提供它从相关序列中获取的子字符串的索引。感谢您的见解。

最佳答案

怎么样:

#!/usr/bin/perl 
use strict;
use warnings;
use Data::Dump qw(dump);

my %res;
while(my $line = <DATA>) {
chomp$line;
while($line =~ /TXG|TTXX/g) {
push @{$res{$line}}, "found $& at pos:".(pos($line)-length($&));
}
}
dump%res;

__DATA__
ATXGAAATTXXGGAAGGGGTGG
AATXGAAGGAAGGAAGGGGATATTX
AAAAAATTXXGGAAGGGGXTTTA
AAAATTXXATAXXGGAAGGGGXTXG
ATTATTGTTXXXTATTT

输出:

(
"ATTATTGTTXXXTATTT",
["found TTXX at pos:7"],
"AATXGAAGGAAGGAAGGGGATATTX",
["found TXG at pos:2"],
"AAAAAATTXXGGAAGGGGXTTTA",
["found TTXX at pos:6"],
"AAAATTXXATAXXGGAAGGGGXTXG",
["found TTXX at pos:4", "found TXG at pos:22"],
"ATXGAAATTXXGGAAGGGGTGG",
["found TXG at pos:1", "found TTXX at pos:7"],
)

关于c# - 根据原始顺序获取 DNA 子串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8310602/

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