我创建了一个名为 checkfasta 的函数,其代码如下
function checkfasta($seq)
{
if(strpos($seq, ">", 0) === "FALSE")
{
$dna = preg_replace("/[^ATCG]/", "", strtoupper($seq));
return $dna;
}
else
{
$descst = strpos($seq, ">", 0);
$seqst = strpos($seq, "\n", $descst);
if(substr_count($seq, ">") == 1)
{
$seqen = strlen($seq);
}
else
{
$seqen = strpos($seq, ">", $seqst)-1;
}
$exseq = substr($seq, $seqst+1, ($seqen-$seqst));
$dna = preg_replace("/[^ATCG]/", "", strtoupper($exseq));
return $dna;
}
}
我正在尝试从用户输入中提取序列。如果用户给出这样的原始序列:
ATGCTAGCTATTAGCTAGCTAGCTACGATCCAC
程序应将整个字符串作为变量。如果用户给出这样的序列:
>序列
ATGCTAGCTATTAGCTAGCTAGCTACGATCCAC
该程序应从第二行开始执行整个序列。
上面的函数是为此而创建的,但是当我以这种方式使用该函数时:
<?php
include "functions.php";
$seq1 = "GCTAGCTAGCTACGTACGACTGCTAGTAC";
$seq2 = ">Sequence
GCTAGCTAGCTACGTACGACTGCTAGTAC";
echo checkfasta($seq1)."<br>";
echo checkfasta($seq2)."<br>";
?>
这是我得到的输出:
CTAGCTAGCTACGTACGACTGCTAGTA
GCTAGCTAGCTACGTACGACTGCTAGTAC
当仅给出原始序列时,将删除第一个和最后一个字母。
谁能解释我哪里出错了。