如何用Python编写自定义函数获取5'到3'方向DNA序列反向互补链
Python实现5'到3'方向DNA反向互补链生成函数
实现逻辑
- 输入预处理:自动移除所有空白字符(空格、制表符、换行符等),统一转为大写,适配大小写混合、带格式的输入场景
- 用字典构建碱基互补映射表,查找效率更高
- 可自动识别非ATCG的非法碱基并抛出提示
- 先互补再反转序列,最终输出为5'到3'方向的结果
完整代码
def reverse_complement_dna(input_seq: str) -> str: # 预处理:移除所有空白字符,转大写 cleaned_seq = ''.join(input_seq.split()).upper() # 碱基互补映射 complement_map = {'A': 'T', 'T': 'A', 'C': 'G', 'G': 'C'} # 校验非法碱基 for base in cleaned_seq: if base not in complement_map: raise ValueError(f"检测到非法碱基: {base},仅支持ATCG碱基输入") # 生成互补序列后反转,得到5'->3'方向的反向互补链 complement_seq = ''.join([complement_map[base] for base in cleaned_seq]) return complement_seq[::-1]
使用示例
# 测试基础输入 print(reverse_complement_dna("GGCCAATT")) # 输出:AATTGGCC # 测试带空白、换行、大小写混合的输入 dirty_input = "G g C c\nA a\tT t" print(reverse_complement_dna(dirty_input)) # 输出:AATTGGCC
注意:如果需要保留输入的大小写格式,可修改预处理逻辑不执行转大写操作,同时给互补映射表补充小写碱基的键值对即可
内容的提问来源于stack exchange,提问作者Banana nana
相关产品推荐
相关产品推荐

