生信(二)反向互补序列

生信(二)反向互补序列关键词 reverse complement sequence 如何得到一段基因序列的反向互补序列 这是基因测序领域经常遇到的问题 其实答案很简单 许多现成的软件都有这个功能 但是作为一个生信人 当然可以自己实现一个了 首先想到的也是最基础的方法就是利用多个 if else 的语句进行判断选择 这种方法太笨拙 写出来的代码很不好看 今天我们分享几种好一点的方法 Shell 版

关键词:reverse; complement; sequence;

如何得到一段基因序列的反向互补序列?这是基因测序领域经常遇到的问题。其实答案很简单,许多现成的软件都有这个功能。但是作为一个生信人,当然可以自己实现一个了。

首先想到的也是最基础的方法就是利用多个if…else…的语句进行判断选择。这种方法太笨拙,写出来的代码很不好看。今天我们分享几种好一点的方法。

Shell版本:tr命令和rev命令

在这里插入图片描述

Python版本:基于字典
代码如下:
在这里插入图片描述
这种方法简短优美,一目了然。与使用多个str.replace()函数相比其效率较高,因为上面的代码只需遍历原始字符串一次就够了,而多个str.replace()函数需要遍历字符串多次。


此外,上面的代码中字符串反向用到了一个Pythonic的写法:s[::-1]。更多Pythonic的句法可参考拙作《Python(一)让你的代码更加pythonic》。

C版本:基于数组
代码如下:
在这里插入图片描述
这种方法利用了字符的ascii码,即可以将字符映射为一个数字。而这个数字又可以转化为字符数组的序号(index),从而完成字符到字符的映射。C的版本是目前最快的!


值得注意的是,上面代码中的数组不光可以完成“AGCTN”这几种最常见碱基间的映射,还可以实现’B’与’V’、’D’与’H’、’R’与’Y’等简并碱基(Degenerate bases)间的映射。该数组由lh3在seqtk中给出。

如果有任何问题欢迎交流!

(公众号:生信了)

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/209880.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 上午8:15
下一篇 2026年3月19日 上午8:15


相关推荐

  • 淘宝,天猫,京东,苏宁抢购茅台、手机等脚本(适合兼职,亲测可用)「建议收藏」

    淘宝,天猫,京东,苏宁抢购茅台、手机等脚本(适合兼职,亲测可用)「建议收藏」由来:最近用钱比较多,缺钱,自己也是除了一份死工资就没有别的收入了,而且每个月的工资发了就立马还给了马爸爸,所以一直在想是不是工作之余搞点什么兼职做做,但是一直也是找不到什么门路。碰巧看到uc给我推了一个文章(其实一直有推只是之前没有想法每注意),说天猫,京东,苏宁这些网购平台的茅台90%都是买来卖的,一瓶利润能有一千块。我顿时有了想法,就想着能不能搞个脚本啥的去抢抢,总比自己手动来得好,然后就上网去找脚本,修修补补改改,基于别人的基础上搞了个脚本(目前只有安卓版,后续可能会出苹果的)。然后坚持了几天,

    2022年5月16日
    106
  • kitti数据集介绍_cifar10数据集下载

    kitti数据集介绍_cifar10数据集下载KITTI数据集下载及解析版本更新时间更新内容作者1V1.0xxx完成主体内容W.Xiao2文章目录KITTIDataset1简介1.1数据采集平台1.2坐标系2数据解析2.1image文件2.2velodyne文件2.3calib文件2.4label文件3KITTI可视…

    2022年10月10日
    6
  • 全网最全的JAVA所有版本特性【JAVA 1.0 – JAVA 19】

    全网最全的JAVA所有版本特性【JAVA 1.0 – JAVA 19】闲来想了解下各版本之间的特性 搜索没有最新的特性说明 故想写一份 废话不多说 JDKVersion1 01996 01 23Oak 橡树 初代版本 伟大的一个里程碑 但是是纯解释运行 使用外挂 JIT 性能比较差 运行速度慢 JDKVersion1 11997 02 19JDBC JavaDataBase 支持内部类 RM

    2026年3月17日
    2
  • MySQL—内连接和外连接区别

    MySQL—内连接和外连接区别区别内连接(innerjoin):取出两张表中匹配到的数据,匹配不到的不保留 外连接(outerjoin):取出连接表中匹配到的数据,匹配不到的也会保留,其值为NULL示例表users表mysql>select*fromusers;+—-+——-+|id|name|+—-+——-+|1|john||2…

    2022年8月30日
    9
  • 【C#】C#获得计算机硬件信息和操作系统信息,ManagementObjectSearcher[通俗易懂]

    【C#】C#获得计算机硬件信息和操作系统信息,ManagementObjectSearcher[通俗易懂]ManagementObjectSearcherC#获得硬盘信息C#获得CPU信息C#获得主板信息C#获得网卡信息C#获得…

    2022年10月2日
    5
  • js判断是否包含指定字符串_判断字符串

    js判断是否包含指定字符串_判断字符串JavaScript判断字符串是否包含某个字符串String对象indexOf()indexOf()返回某个指定的字符串值在字符串中首次出现的位置。如果要检索的字符串值没有出现,则该方法返回-1。varstr=”中华人民共和国”;console.info(str.indexOf(“人民”)!=-1);//trueconsole.info(str.in…

    2022年10月7日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号