大数跨境
0
0

计算cds序列中的GC1/GC2/GC3

计算cds序列中的GC1/GC2/GC3 小明的数据分析笔记本
2020-10-02
1
导读:密码子偏向性分析的论文中通常会计算每个蛋白编码基因的总的GC含量和GC1/GC2/GC3的含量。

密码子偏向性分析的论文中通常会计算每个蛋白编码基因的总的GC含量和GC1/GC2/GC3的含量。找到一个现成的工具是emboss工具集中的cusp命令,在线版链接是 http://www.bioinformatics.nl/cgi-bin/emboss/cusp

但是这个工具好像只能一次计算一条序列的GC含量,如果一次性上传多条蛋白编码基因序列,计算结果是所有序列加到一起的值,而不是每条序列一个值。

试着自己写了一个python脚本

import sys
from Bio import SeqIO
from Bio.SeqUtils import Seq
from Bio.SeqUtils import GC

in_fasta = sys.argv[1]
out_results = sys.argv[2]

def calculate_GC123(seq):
 GC1 = []
 GC2 = []
 GC3 = []
 for i in range(1,len(seq)+1):
  if i%3 == 1:
   GC1.append(str(seq[i-1]))
  elif i%3 == 2:
   GC2.append(str(seq[i-1]))
  else:
   GC3.append(str(seq[i-1]))
 GC1_seq = Seq(''.join(GC1))
 GC2_seq = Seq(''.join(GC2))
 GC3_seq = Seq(''.join(GC3))
 
 return [round(GC(GC1_seq),2),round(GC(GC2_seq),2),round(GC(GC3_seq),2)]
 
fw = open(out_results,'w')
fw.write("%s\t%s\t%s\t%s\t%s\n"%("gene_name","GC_total","GC_first","GC_second","GC_third"))

for rec in SeqIO.parse(in_fasta,'fasta'):
 GC_total = round(GC(rec.seq),2)
 GC123 = calculate_GC123(rec.seq)
 GC_first = GC123[0]
 GC_second = GC123[1]
 GC_third = GC123[2]
 
 fw.write("%s\t%s\t%s\t%s\t%s\n"%(rec.id,str(GC_total),str(GC_first),str(GC_second),str(GC_third)))
 
fw.close()

print("Well done!")

使用需要安装biopython

使用方式

python calculate_GC_at_1_2_3_codon_position.py cds.fasta output.txt

第一个输入文件是自己的cds序列,fasta格式。第二个是输出文件,自己指定名字。

另外使用codonW时遇到的一个问题 使用如下命令运行codonw

codonW/codonw cds.fasta -all_indices -nomenu

得到一个结果文件cds.out

这里面有一些指标

比如T3s C3s GC3s是什么意思?我最开始以为是密码子第三位的T含量和C含量和GC含量,但是这个数值和 cusp计算的结果不一样。

大家有人知道这个指标是什么意思吗?

欢迎大家关注我的公众号

小明的数据分析笔记本

公众号二维码.jpg


【声明】内容源于网络
0
0
小明的数据分析笔记本
分享R语言和python在生物信息领域做数据分析和数据可视化的简单小例子;偶尔会分享一些组学数据处理相关的内容
内容 971
粉丝 0
小明的数据分析笔记本 分享R语言和python在生物信息领域做数据分析和数据可视化的简单小例子;偶尔会分享一些组学数据处理相关的内容
总阅读218
粉丝0
内容971