- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在比较大小为 5500 个碱基的引用序列和大小为 3600 个碱基的查询序列,使用动态编程(半全局对齐),事实上我对复杂性和性能了解不多,并且代码正在爆炸并给出我的错误是“内存不足”。知道它在较小的序列上正常工作,我的问题是:这种行为是正常的,或者我可能在代码中遇到另一个问题?如果正常的话有解决这个问题的任何提示吗?提前致谢。
sub semiGlobal {
my ( $seq1, $seq2,$MATCH,$MISMATCH,$GAP ) = @_;
# initialization: first row to 0 ;
my @matrix;
$matrix[0][0]{score} = 0;
$matrix[0][0]{pointer} = "none";
for ( my $j = 1 ; $j <= length($seq1) ; $j++ ) {
$matrix[0][$j]{score} = 0;
$matrix[0][$j]{pointer} = "none";
}
for ( my $i = 1 ; $i <= length($seq2) ; $i++ ) {
$matrix[$i][0]{score} = $GAP * $i;
$matrix[$i][0]{pointer} = "up";
}
# fill
my $max_i = 0;
my $max_j = 0;
my $max_score = 0;
print "seq2: ".length($seq2);
print "seq1: ".length($seq1);
for ( my $i = 1 ; $i <= length($seq2) ; $i++ ) {
for ( my $j = 1 ; $j <= length($seq1) ; $j++ ) {
my ( $diagonal_score, $left_score, $up_score );
# calculate match score
my $letter1 = substr( $seq1, $j - 1, 1 );
my $letter2 = substr( $seq2, $i - 1, 1 );
if ( $letter1 eq $letter2 ) {
$diagonal_score = $matrix[ $i - 1 ][ $j - 1 ]{score} + $MATCH;
}
else {
$diagonal_score = $matrix[ $i - 1 ][ $j - 1 ]{score} + $MISMATCH;
}
# calculate gap scores
$up_score = $matrix[ $i - 1 ][$j]{score} + $GAP;
$left_score = $matrix[$i][ $j - 1 ]{score} + $GAP;
# choose best score
if ( $diagonal_score >= $up_score ) {
if ( $diagonal_score >= $left_score ) {
$matrix[$i][$j]{score} = $diagonal_score;
$matrix[$i][$j]{pointer} = "diagonal";
}
else {
$matrix[$i][$j]{score} = $left_score;
$matrix[$i][$j]{pointer} = "left";
}
}
else {
if ( $up_score >= $left_score ) {
$matrix[$i][$j]{score} = $up_score;
$matrix[$i][$j]{pointer} = "up";
}
else {
$matrix[$i][$j]{score} = $left_score;
$matrix[$i][$j]{pointer} = "left";
}
}
# set maximum score
if ( $matrix[$i][$j]{score} > $max_score ) {
$max_i = $i;
$max_j = $j;
$max_score = $matrix[$i][$j]{score};
}
}
}
my $align1 = "";
my $align2 = "";
my $j = $max_j;
my $i = $max_i;
while (1) {
if ( $matrix[$i][$j]{pointer} eq "none" ) {
$stseq1 = $j;
last;
}
if ( $matrix[$i][$j]{pointer} eq "diagonal" ) {
$align1 .= substr( $seq1, $j - 1, 1 );
$align2 .= substr( $seq2, $i - 1, 1 );
$i--;
$j--;
}
elsif ( $matrix[$i][$j]{pointer} eq "left" ) {
$align1 .= substr( $seq1, $j - 1, 1 );
$align2 .= "-";
$j--;
}
elsif ( $matrix[$i][$j]{pointer} eq "up" ) {
$align1 .= "-";
$align2 .= substr( $seq2, $i - 1, 1 );
$i--;
}
}
$align1 = reverse $align1;
$align2 = reverse $align2;
return ( $align1, $align2, $stseq1 ,$max_j);
}
最佳答案
可能解决该问题的一种方法是将@matrix
与文件绑定(bind)。然而,这将大大减慢程序的速度。考虑一下:
sub semiGlobal {
use Tie::Array::CSV;
tie my @matrix, 'Tie::Array::CSV', 'temp.txt'; # Don't forget to add your own error handler.
my ( $seq1, $seq2,$MATCH,$MISMATCH,$GAP ) = @_;
# initialization: first row to 0 ;
$matrix[0][0] = '0 n';
for ( my $j = 1 ; $j <= length($seq1) ; $j++ ) {
$matrix[0][$j] = '0 n';
}
for ( my $i = 1 ; $i <= length($seq2) ; $i++ ) {
my $score = $GAP * $i;
$matrix[$i][0] = join ' ',$score,'u';
}
#print Dumper(\@matrix);
# fill
my $max_i = 0;
my $max_j = 0;
my $max_score = 0;
print "seq2: ".length($seq2)."\n";
print "seq1: ".length($seq1)."\n";
for ( my $i = 1 ; $i <= length($seq2) ; $i++ ) {
for ( my $j = 1 ; $j <= length($seq1) ; $j++ ) {
my ( $diagonal_score, $left_score, $up_score );
# calculate match score
my $letter1 = substr( $seq1, $j - 1, 1 );
my $letter2 = substr( $seq2, $i - 1, 1 );
my $score = (split / /, $matrix[ $i - 1 ][ $j - 1 ])[0];
if ( $letter1 eq $letter2 ) {
$diagonal_score = $score + $MATCH;
}
else {
$diagonal_score = $score + $MISMATCH;
}
# calculate gap scores
$up_score = (split / /,$matrix[ $i - 1 ][$j])[0] + $GAP;
$left_score = (split / /,$matrix[$i][ $j - 1 ])[0] + $GAP;
# choose best score
if ( $diagonal_score >= $up_score ) {
if ( $diagonal_score >= $left_score ) {
$matrix[$i][$j] = join ' ',$diagonal_score,'d';
}
else {
$matrix[$i][$j] = join ' ', $left_score, 'l';
}
}
else {
if ( $up_score >= $left_score ) {
$matrix[$i][$j] = join ' ', $up_score, 'u';
}
else {
$matrix[$i][$j] = join ' ', $left_score, 'l';
}
}
# set maximum score
if ( (split / /, $matrix[$i][$j])[0] > $max_score ) {
$max_i = $i;
$max_j = $j;
$max_score = (split / /, $matrix[$i][$j])[0];
}
}
}
my $align1 = "";
my $align2 = "";
my $stseq1;
my $j = $max_j;
my $i = $max_i;
while (1) {
my $pointer = (split / /, $matrix[$i][$j])[1];
if ( $pointer eq "n" ) {
$stseq1 = $j;
last;
}
if ( $pointer eq "d" ) {
$align1 .= substr( $seq1, $j - 1, 1 );
$align2 .= substr( $seq2, $i - 1, 1 );
$i--;
$j--;
}
elsif ( $pointer eq "l" ) {
$align1 .= substr( $seq1, $j - 1, 1 );
$align2 .= "-";
$j--;
}
elsif ( $pointer eq "u" ) {
$align1 .= "-";
$align2 .= substr( $seq2, $i - 1, 1 );
$i--;
}
}
$align1 = reverse $align1;
$align2 = reverse $align2;
untie @matrix; # Don't forget to add your own error handler.
unlink 'temp.txt'; # Don't forget to add your own error handler.
return ( $align1, $align2, $stseq1 ,$max_j);
}
您仍然可以使用原来的子系统来处理短序列,并切换到此子系统来处理长序列。
关于Perl 通过动态规划在序列对齐中爆炸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19502723/
我正在尝试在 Pyspark 中实现自定义爆炸。我有 4 列,它们是具有几乎相同架构的结构数组(一列结构包含的字段比其他三列少一个)。 对于我的 DataFrame 中的每一行,我有 4 列是结构数组
我如何分解 [group_concat(DISTINCT LineItem.ItemID)] => 600278,WH1502。 我试过了,但什么也没显示 $result = mysqli_query
假设我有一个数据框 df : C1 C2 C3 C4 C5 0 [A] [1] s1 [123]
我的数据在其中一个字段中具有嵌套映射。例如,数据位于名为“customers”的表中,如下所示: 姓名:比尔·琼斯 地址:{"billing":{"street":"123 Main", "city"
我有两个独立的项目(ejb,web),完全独立。问题是我想通过maven将ejb项目添加到web依赖项,但我正在寻找一个爆炸依赖项而不是jar,所以当我编译ejb项目时,更改会立即在web项目中生效。
我正在将我的 ROOT.war 文件复制到 Tomcat 6.0 的 webapps 中。有没有一种方法可以在复制时分解文件。即当我的脚本在 webapps 中复制它时..它应该爆炸并创建 ROOT
我有一个体素世界,类似于 Minecraft。每个体素( block )的大小为 1x1x1。 我想计算具有给定爆炸半径的特定位置的爆炸破坏,这意味着游戏将在该位置周围破坏体素(给定所需的半径)。 意
在我的游戏中有一辆坦克。我有一个扩展 Sprite 的 Barrel 类,这个类负责处理与桶相关的东西,其中之一就是射击时的爆炸动画。这就是我尝试这样做的方式: batch.draw(currShot
我一直在严重依赖 CSS 来创建我正在开发的网站。现在,所有 CSS 样式都在每个标签的基础上应用,所以现在我试图将其移动到更多的外部样式以帮助将来进行任何更改。 但现在的问题是我注意到我收到了“CS
我有一个 NSString:@"1a,1b,1c,1d,5c"。我想把这个 NSString 分成一个 NSMutableArray,但我不知道如何。我认为它相当简单,但我找不到它(也许是因为我的英语
我正在尝试使用 QML Canvas.requestAnimationFrame 来绘制一些自定义动画。我预计所提供的回调每帧调用一次,大约每秒 60 次。我的代码是: Canvas { id
我有: df = pd.DataFrame({'col1': ['asdf', 'xy', 'q'], 'col2': [1, 2, 3]}) col1 col2 0 asdf 1
在对 this question 的回答中MathWorks 支持团队声明: It is also possible to overload the ! (bang) operator by crea
好吧——穿上你 70 年代的喇叭裤,然后走进 WayBack 机器……迪斯科又活了,伙计们……(我怀疑这有标签……) 我需要 UUCP 的继任者。对你们这些 child 来说,在互联网出现之前和拜赛因
我今天阅读的一个问题的答案建议将应用程序部署为展开(解压缩)WAR .这让我开始思考。 我对 JBoss/Tomcat 所做的每一次部署都使用了 WAR/EAR文件。至少在我的内存中。 这些年来我一直
我有一个包含以下内容的 Spark Dataframe: 姓名E1E2E3abc456 我需要各种 E列成为新列中的行,如下所示: 姓名值E类型abc4E1abc5E2abc6E3 This answ
$user = $this->user; $user->name = $request['name']; $user->email = $request
我正在使用 Java 1.6、JBoss 5.1、EJB 3 和 Hibernate 2。每次部署 ear 时,如果 jar 是紧凑型(未展开),应用程序将无法运行。但是,当我炸开 jar 然后将其放
我是 dask 的新手,请多多包涵。 我有一个 JSON 文件,其中每一行都有以下架构: { 'id': 2, 'version': 7.3, 'participants': range(10)
我尝试使用 Chai Should 风格的断言,但是下面的语句让 Mocha 爆炸了。这是我完整的 Require block : /**
我是一名优秀的程序员,十分优秀!