molezz BAR

生命科学和计算机技术 开始使用

DNA 序列反向互补工具 php tool

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

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

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

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

<!--序列输入 -->
<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&lt;/font>
    
  <br />"; //输出些警告提示,不影响序列处理
    		}
    		echo "<b>the reverse complement sequence:</b><br />&lt;font color=blue size=2> $output&lt;/font><br /><br /><br />";
    		echo "<b>the original sequence:</b><br />&lt;font size=2> $input&lt;/font>";
    	}
    ?>
  </td>
</tr>&lt;/table>

评论
留下你的脚步