Home > 求学点滴|study, 生命科学|biology > DNA序列反向互补工具–php tool

DNA序列反向互补工具–php tool

这两天看了些php的应用,发现php网络应用真是方便…根据前几章关于string的知识写个生物小应用复习下. 以前总是利用网上的dna反向互补工具,但是有时候不能连接,后来用了sms,非常方便,支持下载到本地使用.自己用用php也不错, 练习练习代码.

主要实现以下功能:
1.反向互补….
2.去除多余字段(数字,空格,主要ncbi上下来的序列多含有数字和空格)
3.提示含有非碱基字符,有些时候SNP的出现需要保留

未实现功能:
本来想在原始序列中突出显示非碱基字母,比如红色显示,结果没有成功….substr_replace()无法应用在上面…暂时看到的知识想不出其他解决方案了,先等等吧,下次会了再改,反正问题不大.

演示: DNA rev-complement tool
代码:(有点乱,有些地方觉得能简洁,但似乎没有找到可行的简洁之法,主要是去除序列中数字那段,后来发现ereg_replace()能实现,方便多了)

<html>
<head><title>DNA rev-complement tool</title></head>
<body>
<!--序列输入 -->
	<form action="<?php $PHP_SELF; ?>" method="GET">
      <b>Enter your original DNA sequence:</b> <input type="text" name="seq" />
      <input type="submit" /><br>(numbers and whitespaces will be deleted, non-base letters will be unchanged and you'll have a warning.)
    </form>
 
<table width=100% style="table-layout:fixed;">
<tr>
<td style="word-wrap : break-word ;">
<!-- 序列处理及输出 -->
<?php 
	$input =$_GET['seq'];
	if (empty($input)) {
	}	else {
			$output=strtolower($input);
			for ($i=0;$i<strlen($input);$i++) {
				switch ($output{$i}) {
					case 'a':
						$output{$i}= 't';
						break;
					case 'g':
						$output{$i}= 'c';
						break;
					case 'c':
						$output{$i}= 'g';
						break;
					case 't':
						$output{$i}= 'a';
						break;	
					default:
						$error=true;  //判断是否有非a,g,c,t碱基字母
						break;
				}
			}
		$output = strrev($output);  //反向
		$output = ereg_replace('[@[:digit:][:blank:]]','', $output); //去除数字空格
		if ($error==true) {
			echo "<font color=red>warning: there are some non-base input</font><br>"; //输出些警告提示,不影响序列处理
		}
		echo "<b>the reverse complement sequence:</b><br><font color=blue size=2> $output</font><br><br><br>";
		echo "<b>the original sequence:</b><br><font size=2> $input</font>";
	}
?>
</td></tr></table>
</body>
</html>

Popularity: 1%

  1. No comments yet.
  1. No trackbacks yet.

注意: 评论者允许使用'@user空格'的方式将自己的评论通知另外评论者。例如, ABC是本文的评论者之一,则使用'@ABC '(不包括单引号)将会自动将您的评论发送给ABC。使用'@all ',将会将评论发送给之前所有其它评论者。请务必注意user必须和评论者名相匹配(大小写一致)。