首页 > 编程知识 正文

时间序列分析试卷及答案,时间序列分析名词解释

时间:2023-05-03 23:13:52 阅读:239085 作者:1392

数据下载  https://www.ncbi.nlm.nih.gov/nuccore/NC_000006.12?report=genbank&from=31164337&to=31170682&strand=true

1 读取常见的序列文件格式(fasta,gb) 2 浏览 fasta 序列文件内容 from Bio import SeqIO# 读取包含单个序列 Fasta 格式文件fa_seq = SeqIO.read("res/sequence1.fasta", "fasta")# =====获取详细的信息=====# 提取基因ID,name# Fasta 文件中序列名所在行的第一个词被作为 id 和 nameprint ("id: ", fa_seq.id)print ("name: ", fa_seq.name)# 基因 Description 是fasta文件格式中的第一行print ("description: ", fa_seq.description)# 序列print ("seq: ", fa_seq.seq)# 序列来源库信息(NCBI的数据库信息会包括数据库交叉引用)print ("dbxrefs: ", fa_seq.dbxrefs)# 全部序列的注释信息print ("annotations: ", fa_seq.annotations)# 序列中每个字母的注释信息print ("letter_annotations: ", fa_seq.letter_annotations)# 部分序列的注释信息print ("features: ", fa_seq.features)

3.浏览 genebank 序列文件内容

相信大家可以看到 GeneBank 比 fasta 格式更加详细和贴心,但是对于序列处理来说内存占用和运行时间比这些信息更加重要。

这就使fasta成为我们一般在序列分析中常用的格式。

from Bio import SeqIO# 读取包含单个序列的 gb 格式文件gb_seq = SeqIO.read("res/sequence1.gb", "genbank")print (gb_seq)# =====获取详细的信息=====# 提取基因ID,name# gb文件中序列名包含比fasta更加详细的序列信息,下面分别是 id 和 nameprint ("id: ", gb_seq.id)print ("name: ", gb_seq.name)# 基因 Description 是fasta文件格式中的第一行print ("description: ", gb_seq.description)# 序列信息, 这里的序列信息是以 bioPython 中的seq对象存储print ("seq: ", gb_seq.seq)# 序列来源库信息(NCBI的数据库信息会包括数据库交叉引用)print ("dbxrefs: ", gb_seq.dbxrefs)# 全部序列的注释信息print ("annotations: ", gb_seq.annotations)# 序列中每个字母的注释信息print ("letter_annotations: ", gb_seq.letter_annotations)# 部分序列的注释信息,SeqFeature 对象的形式保存了features table中的所有entries(如genes和CDS等)print ("features: ", gb_seq.features)# 该基因的物种信息print ("organism: ", gb_seq.annotations["organism"])# 关于序列的注释信息,相关数据库的交叉引用号print ("comment: ", gb_seq.annotations["comment"])# 序列来源的物种名print ("source: ", gb_seq.annotations["source"])# 该基因的分类学信息print ("taxonomy: ", gb_seq.annotations["taxonomy"])# 该基因的整理后的注释信息print ("structured_comment: ", gb_seq.annotations["structured_comment"])# 该基因序列相关的关键词print ("keywords: ", gb_seq.annotations["keywords"])# 该基因的相关文献编号,或递交序列的注册信息print ("references: ", gb_seq.annotations["references"])# 该基因的入库时,给的基因编号,以及在染色体上的位点信息print ("accessions: ", gb_seq.annotations["accessions"])# 该基因的分子类型,一般为 DNAprint ("molecule_type: ", gb_seq.annotations["molecule_type"])# 该基因的数据文件划分方式print ("data_file_division: ", gb_seq.annotations["data_file_division"])# 基因发布时间print ("date: ", gb_seq.annotations["date"])# 该基因的更新版本print ("sequence_version: ", gb_seq.annotations["sequence_version"])# 该基因的拓扑结构print ("topology: ", gb_seq.annotations["topology"])

4.

from Bio.Alphabet import IUPACfrom Bio.Seq import Seq# 新建一个DNA序列对象dna_seq = Seq("GGATGGTTGTCTATTAACTTGTTCAAAAAAGTATCAGGAGTTGTCAAGGCAGAGAAGAGAGTGTTTGCA", IUPAC.unambiguous_dna)# 新建一个RNA序列对象rna_seq = Seq("GGATGGTTGTCTATTAACTTGTTCAAAAAAGTATCAGGAGTTGTCAAGGCAGAGAAGAGAGTGTTTGCA", IUPAC.unambiguous_rna)# # 新建一个蛋白质序列对象protein_seq = Seq("GGATGGTTGTCTATTAACTTGTTCAAAAAAGTATCAGGAGTTGTCAAGGCAGAGAAGAGAGTGTTTGCA", IUPAC.protein)print(dna_seq)print(rna_seq)print(protein_seq)print(IUPAC.unambiguous_dna)print(IUPAC.unambiguous_rna)print(IUPAC.protein)

GGATGGTTGTCTATTAACTTGTTCAAAAAAGTATCAGGAGTTGTCAAGGCAGAGAAGAGAGTGTTTGCA
GGATGGTTGTCTATTAACTTGTTCAAAAAAGTATCAGGAGTTGTCAAGGCAGAGAAGAGAGTGTTTGCA
GGATGGTTGTCTATTAACTTGTTCAAAAAAGTATCAGGAGTTGTCAAGGCAGAGAAGAGAGTGTTTGCA
IUPACUnambiguousDNA()
IUPACUnambiguousRNA()
IUPACProtein()

序列对象由一段字符串和其对应的编码表所定义。我们可以从上述的代码中看到,字符串内容一样,唯一不同的就是第二个参数IUPAC值不一样。IUPAC (International Union of Pure and Applied Chemistry ) 是一个制定化学相关标准的组织,Biopython 所使用的编码表就是由它制定的,想了解详细细节可以参考http://www.bioinformatics.org/sms2/iupac.html ,详细定义如下:

名称编码表ambiguous_dna_lettersGATCRYWSMKHBVDNun

ambiguous_dna_lettersGATC

ambiguous_rna_lettersGAUCRYWSMKHBVDNun

ambiguous_rna_lettersGAUCproteinARNDCQEGHILKMFPSTWYV

5 修改序列文件

在生物学意义上,序列是不可以随便更改的,也就是不可变的。如果强行修改,那么就会报错TypeError: 'Seq' object does not support item assignment

dna_seq[0] = "G"

如果你执意修改也是可以的,但是不建议这么做

dna_seq_mutable = dna_seq.tomutable()dna_seq_mutable[0] = "G" 6 操作序列文件 from Bio.Seq import Seqfrom Bio.Alphabet import IUPAC# 新建一个DNA序列对象dna_seq = Seq("GGATGGTTGTCTATTAACTTGTTCAAAAAAGTATCAGGAGTTGTCAAGGCAGAGAAGAGAGTGTTTGCA", IUPAC.unambiguous_dna)# 序列信息print("Sequence: ", dna_seq)# 序列长度print("Length : ", len(dna_seq))# 单个核苷酸计数print("G Counts: ", dna_seq.count("G"))# 获取反向序列print("reverse: ", dna_seq[::-1])# 获取反向互补序列print("Reverse complement: ", dna_seq.complement())# 获取蛋白质的反向互补序列,这里显然是报错的,因为蛋白序列没有这一属性#print("Protein reverse complement: ", protein_seq.complement())

Sequence:  GGATGGTTGTCTATTAACTTGTTCAAAAAAGTATCAGGAGTTGTCAAGGCAGAGAAGAGAGTGTTTGCA
Length :  69
G Counts:  20
reverse:  ACGTTTGTGAGAGAAGAGACGGAACTGTTGAGGACTATGAAAAAACTTGTTCAATTATCTGTTGGTAGG
Reverse complement:  CCTACCAACAGATAATTGAACAAGTTTTTTCATAGTCCTCAACAGTTCCGTCTCTTCTCTCACAAACGT

7 用 Biopython 将 DNA 翻译为 RNA

from Bio.Seq import Seqfrom Bio.Alphabet import IUPAC# 新建一个DNA序列对象dna_seq = Seq("GGATGGTTGTCTATTAACTTGTTCAAAAAAGTATCAGGAGTTGTCAAGGCAGAGAAGAGAGTGTTTGCA", IUPAC.unambiguous_dna)print(dna_seq)# =====转录=====# 如果序列为编码链,那么直接转换print ("rna: ", dna_seq.transcribe())# 如果序列为模板链,就需要先转为编码链transcribe_seq = dna_seq.reverse_complement().transcribe()print ("rna: ", transcribe_seq)

GGATGGTTGTCTATTAACTTGTTCAAAAAAGTATCAGGAGTTGTCAAGGCAGAGAAGAGAGTGTTTGCA
rna:  GGAUGGUUGUCUAUUAACUUGUUCAAAAAAGUAUCAGGAGUUGUCAAGGCAGAGAAGAGAGUGUUUGCA
rna:  UGCAAACACUCUCUUCUCUGCCUUGACAACUCCUGAUACUUUUUUGAACAAGUUAAUAGACAACCAUCC

8 用BioPython 将 RNA 翻译为 蛋白质

from Bio.Seq import Seqfrom Bio.Alphabet import IUPACfrom Bio.Alphabet import generic_dna# 新建一个DNA序列对象dna_seq = Seq("GGATGGTTGTCTATTAACTTGTTCAAAAAAGTATCAGGAGTTGTCAAGGCAGAGAAGAGAGTGTTTGCA", IUPAC.unambiguous_dna)transcribe_seq = dna_seq.reverse_complement().transcribe()# =====翻译=====print ("protein: ", transcribe_seq.translate())# 如果翻译的是线粒体密码子,那么在参数中需要输入,其他参考 https://www.ncbi.nlm.nih.gov/Taxonomy/Utils/wprintgc.cgi?mode=c or ftp://ftp.ncbi.nlm.nih.gov/entrez/misc/data/gc.prtprint ("protein: ", transcribe_seq.translate(table="Vertebrate Mitochondrial"))# 在现实生物世界中,一般在遇到终止密码子之后的序列不用翻译print ("protein: ", transcribe_seq.translate(table="Vertebrate Mitochondrial", to_stop=True))# 如果DNA序列为编码序列,可以直接翻译,DNA序列不是3的倍数时,报错print ("protein: ", dna_seq.translate())# 在细菌世界中,在细菌遗传密码中 GTG 是个有效的起始密码子,注意第一个密码子(正常情况下 GTG编码缬氨酸, 但是如果作为起始密码子,则翻译成甲硫氨酸)bacterial_dna = Seq("GTGAAAAAGATGCAATCTATCGTACTCGCACTTTCCCTGGTTCTGGTCGCTCCCATGGCATAA",generic_dna)print ("protein: ", bacterial_dna.translate(table="Bacterial", to_stop=True))print ("protein: ", bacterial_dna.translate(table="Bacterial", cds=True))

protein:  CKHSLLCLDNS*YFFEQVNRQPS
protein:  CKHSLLCLDNSWYFFEQVN*QPS
protein:  CKHSLLCLDNSWYFFEQVN
protein:  GWLSINLFKKVSGVVKAEKRVFA
protein:  VKKMQSIVLALSLVLVAPMA
protein:  MKKMQSIVLALSLVLVAPMA

9.

# =====寻找TATA框=====
# TATA框约在多数真核生物基因转录起始点上游约-30bp(-25~-32bp)处,基本上由A-T碱基对组成,是决定基因转录始的选择,为RNA聚合酶的结合处之一
print ("TA Counts: ", dna_seq.count("TA"))

# =====GC含量=====
# (A+T)/(G+C)之比随DNA的种类不同而异。GC含量愈高,DNA的密度也愈高,同时热及碱不易使之变性,因此利用这一特性便可进行DNA的分离或测定。
print ("GC Contenten", 100 * float(dna_seq.count("G") + dna_seq.count("C")) / len(dna_seq))

# =====得到promoter序列=====
# 在寻找基因的promoter时(一般promoter的位点不确定),但是可以通过将起始位点左右2kb基因视为promoter
# 这里训练切取,将切取设起始位点为前10bp
print ("Promoter seq: ",dna_seq[:10])

# =====寻找TATA框=====# TATA框约在多数真核生物基因转录起始点上游约-30bp(-25~-32bp)处,基本上由A-T碱基对组成,是决定基因转录始的选择,为RNA聚合酶的结合处之一print ("TA Counts: ", dna_seq.count("TA"))​# =====GC含量=====# (A+T)/(G+C)之比随DNA的种类不同而异。GC含量愈高,DNA的密度也愈高,同时热及碱不易使之变性,因此利用这一特性便可进行DNA的分离或测定。print ("GC Contenten", 100 * float(dna_seq.count("G") + dna_seq.count("C")) / len(dna_seq))​# =====得到promoter序列=====# 在寻找基因的promoter时(一般promoter的位点不确定),但是可以通过将起始位点左右2kb基因视为promoter# 这里训练切取,将切取设起始位点为前10bpprint ("Promoter seq: ",dna_seq[:10])

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。