用法:python rev_comp.py input.fa out.fa
输入文件为 fasta 格式文件,若输入文件中序列的 header 有 '+' 或 '-' 号标记正负链,则带有 '+' 的序列保持不变,带有 '-' 的序列反向互补;
若 header 没有 '+' 或 '-' 号标记, 则默认按反义链处理。

cat input.fa
>seq1 +
AGATAGATGAATT
>seq2 -
GATAGAGAATAAA
AGATATAGATAGA
>seq3
GAATATAT
>seq4 -
CCAGTGGGATCC
cat  out.fa
>seq2 -
TCTATCTATATCTTTTATTCTCTATC
>seq4 -
GGATCCCACTGG
>seq1 +
AGATAGATGAATT
>seq3
ATATATTC
import syscomplement_table = {
'A': 'T',
'B': 'V',
'C': 'G',
'D': 'H',
'G': 'C',
'H': 'D',
'M': 'K',
'N': 'N',
'R': 'Y',
'S': 'S',
'T': 'A',
'U': 'A',
'V': 'B',
'W': 'W',
'X': 'X',
'Y': 'R',
'a': 't',
'b': 'v',
'c': 'g',
'd': 'h',
'g': 'c',
'h': 'd',
'm': 'k',
'n': 'n',
'r': 'y',
's': 's',
't': 'a',
'u': 'a',
'v': 'b',
'w': 'w',
'x': 'x',
'y': 'r'
}def pqrse_fasta(seqs):new_seqs = {}for line in seqs:if line.startswith(">"):name = line.rstrip()new_seqs[name] = ""else:new_seqs[name] = new_seqs[name] + line.rstrip()return new_seqsdef rev_comp(seq):new_seq = []line = seq.rstrip()for letter in line:complement_letter = complement_table[letter]new_seq.append(complement_letter)new_seq.reverse()return "".join(new_seq)in_file = open(sys.argv[1])
out_file = open(sys.argv[2], 'w')seqs = pqrse_fasta(in_file)for name in seqs.keys():if name.endswith("-"):print >> out_file, name + '\n' + rev_comp(seqs[name])elif name.endswith("+"):print >> out_file, name + '\n' + seqs[name]else:print >> out_file, name + '\n' + rev_comp(seqs[name]) # 如果文件没有 '+' 或 '-' 号标记正负链,则默认为负链。

转载于:https://www.cnblogs.com/liuhui0622/p/6286462.html

Reverse complement DNA相关推荐

  1. Rosalind Java| Complementing a Strand of DNA

    Rosalind编程问题之反向互补序列. Complementing a Strand of DNA Problem In DNA strings, symbols 'A' and 'T' are c ...

  2. 利用python处理dna序列_Python + 生物信息 02 :Biopython 分析序列

    Biopython 做序列分析 一.安装Biopython:如果环境已经有Biopython可以跳过这一步.这里有两种安装方案,一种通过pip快速安装,另一种通过安装包安装 1. 用pip安装Biop ...

  3. C#,生信软件实践(03)——DNA数据库GenBank格式详解及转为FASTA序列格式的源代码

    1 GenBank 1.1 NCBI--美国国家生物技术信息中心(美国国立生物技术信息中心) NCBI(美国国立生物技术信息中心)是在NIH的国立医学图书馆(NLM)的一个分支.它的使命包括四项任务: ...

  4. 生物信息学算法之Python实现|Rosalind刷题笔记:004 求DNA的反向互补序列

    碱基互补配对原则是:A 与 T 配对,G 与 C 配对. 求 DNA 的反向互补序列分两步:第一是反向,第二是互补.比如序列"ATGC",反向就是"CGTA", ...

  5. Rosalind Java| Computing GC Content

    Rosalind编程问题之计算GC含量. Computing GC Content Problem The GC-content of a DNA string is given by the per ...

  6. 利用MEGA-X选择模型及构建美化进化树

    对于经常构建进化树的朋友来说,MEGA应该是个老朋友了.MEGA从1993年的第一个版本问世一直锤炼到去年刚刚发布的MEGA-X,已经经历了26年,在这期间,MEGA共更新八个版本,先后在Molecu ...

  7. 拼接两条有重叠区域的核酸序列

    目的 27F 和 1492R 是细菌 16S 核糖体基因的一对通用引物.利用这对引物扩增DNA提取物,然后进行Sanger法测序,能获得两条长度约为 800+ 的 DNA 序列.根据正链(+)和负链( ...

  8. FASTX-Toolkit

    FASTX-Toolkit介绍 背景介绍 高通量测序数据下机后的原始fastq文件,包含4行,其中一行为质量值,另外一行则为对应序列,高通量的数据处理首先要进行质量控制,这些过程包括去接头.过滤低质量 ...

  9. 【Rosalind】Computing GC Content

    问题描述 Problem The GC-content of a DNA string is given by the percentage of symbols in the string that ...

  10. 生物信息中的Python 02 | 用biopython解析序列

    上一篇文章生物信息中的Python 01 | 从零开始处理基因序列自己造轮子实现了序列的基础操作,但是在Python的世界里,一项工作只要重复的次数多了,那么一定就会有大神来开发相应的包来解决,这个包 ...

最新文章

  1. 丁磊:噢买尬,买它,华少别抢话
  2. CTF-不一样的凯撒密码
  3. 二十七、Node.js搭建第一个Express应用框架
  4. spring boot实现导出数据到excel
  5. 【数据结构与算法】之深入解析“LFU缓存”的求解思路与算法示例
  6. 2019升职加薪必备:你一定要修炼的产品思维
  7. Vlc之vs2010版本的配置
  8. java堆排序工具包_JAVA 排序工具类
  9. 【POJ 2689】Prime Distance【埃氏筛与线性筛】
  10. apple script to 1s screen capture snapshot w/ windowsill
  11. 步进电机之步进电机驱动器使用说明
  12. 电动车实名制挂牌管理系统java+springboot+ssm
  13. linux查看xfreedrdp指令,windows和linux的远程桌面
  14. LoRa SX1278通信代码学习笔记
  15. 几种常用的开发模型和测试模型
  16. 深圳-国信证券项目组-市场风险二期
  17. 微信小程序集成jenkins自动打码
  18. office自动更新提示0xc0000142错误 解决办法
  19. 怎样让你的小孩更懂音乐
  20. 第九周 【纸上谈兵:“知原理”检验题目】

热门文章

  1. 2022-08-01 网工进阶(二十四) STP进阶知识
  2. 没键盘计算机能启动吗,电脑没有接鼠标键盘为什么会影响电脑的正常开机?
  3. ios 微信内置浏览器 缓存清理
  4. 说说技术总监的三板斧(十年肺腑之言)
  5. ndows phone,Windows Phone 7
  6. 菜单下拉列表怎么实现慢慢出现效果-----过渡(transition)
  7. 普渡大学计算机专业全美排名,美国普渡大学排名
  8. 对自然数e的理解,推导(基础)
  9. 列名 计算机网络 无效,80004005 及其它错误消息的疑难解答
  10. [cnblogs镜像]苹果操作系统名称演变史 新名称macOS