Hii我在Biopython中遇到以下错误:'return'在函数外面(文件名..第26行)下面是myfile的代码请帮助
# File Name RandonProteinSequences.py
# standard library
import os
import random
# biopython
from Bio.Seq import Seq
from Bio.Alphabet import IUPAC
from Bio.SeqRecord import SeqRecord
import Bio.writers.SeqRecord.fasta
from Bio import SeqIO
from sys import *
residueList1 = ["C","D","E","F","G","H","I"]
residueList2 = ["A","K","L","M","N","S"]
residueList3 = ["P","Q","R","T","V","W","Y"]
residueList4 = ["C","A","G","U"]
def getProteinSeqRecord(residue, seqcount):
strSeq = ""
for i in range(0,100,1):
index = random.randint(0, len(residue)-1)
strSeq += residue[index]
sequence = Seq(strSeq, IUPAC.IUPACProtein)
seqRec = SeqRecord(sequence, id = 'randSeq' + str(seqcount), description= 'A random …Run Code Online (Sandbox Code Playgroud) 例如,如果我有一个字符串'ATGAGGGATAGAGGGTTGGGAGAGATGGATAGGGGATAGATTG',我必须得到ATG和TTG之间的子串,因为我们可以看到字符串中有两种.
无论如何我都无法弄明白,plz帮助我通过它!
我找到了解析fasta frmated文件的代码.我需要计算每个序列中有多少A,T,G等,例如:
>gi|7290019|gb|AAF45486.1| (AE003417) EG:BACR37P7.1 gene product [Drosophila melanogaster]
MRMRGRRLLPIIL
Run Code Online (Sandbox Code Playgroud)
在这个序列中:
M - 2
R - 4
G - 1
L - 3
I - 2
P - 1
Run Code Online (Sandbox Code Playgroud)
代码很简单:
def FASTA(filename):
try:
f = file(filename)
except IOError:
print "The file, %s, does not exist" % filename
return
order = []
sequences = {}
for line in f:
if line.startswith('>'):
name = line[1:].rstrip('\n')
name = name.replace('_', ' ')
order.append(name)
sequences[name] = ''
else:
sequences[name] += line.rstrip('\n').rstrip('*')
print "%d sequences found" …Run Code Online (Sandbox Code Playgroud) 我有一个.fasta文件,我想转换为.aln,以便它可以与alignIO.read命令对齐或以某种方式给我的fasta文件"Clustal Headers",因为当我使用fasta文件时它只是输出它不是一个已知的clustal标题,是"ClustalwCommandline"返回应该这样做,因为在教程中它说它返回cline,只是打印cline,不知道如何处理cline
编辑: - 我也应该输出.dnd文件,不知道如何
必须删除 pdb 文件中的杂原子。这是代码,但它不适用于我的测试 PDB 1C4R。
for model in structure:
for chain in model:
for reisdue in chain:
id = residue.id
if id[0] != ' ':
chain.detach_child(id)
if len(chain) == 0:
model.detach_child(chain.id)
Run Code Online (Sandbox Code Playgroud)
有什么建议吗?
import gzip
import io
from Bio import SeqIO
infile = "myinfile.fastq.gz"
fileout = open("myoutfile.fastq", "w+")
with io.TextIOWrapper(gzip.open(infile, "r")) as f:
line = f.read()
fileout.write(line)
fileout.seek(0)
count = 0
for rec in SeqIO.parse(fileout, "fastq"): #parsing from file
count += 1
print("%i reads" % count)
Run Code Online (Sandbox Code Playgroud)
当"line"被写入文件并且该文件被提供给解析器时,上面的工作正常,但是下面不起作用.为什么不能直接读取行?有没有办法直接将"line"提供给解析器而不必先写入文件?
infile = "myinfile.fastq.gz"
#fileout = "myoutfile.fastq"
with io.TextIOWrapper(gzip.open(infile, "r")) as f:
line = f.read()
#myout.write(line)
count = 0
for rec in SeqIO.parse(line, "fastq"): #line used instead of writing from file
count += 1
print("%i reads" % …Run Code Online (Sandbox Code Playgroud) 我对肠杆菌基因组中的 4 个管家基因感兴趣。
所以我有我的管家基因,我在 NR 上大放异彩并下载了比对的序列。
我使用 MEGA7 软件和最大似然法制作了系统发育树。Boostrap 方法进行了 200 次迭代。
我将树导出为 newick 文件。
所以现在,我的 4 个管家基因有 4 棵树。我想用我的 4 棵树创建一个共识树。
就我个人而言,我尝试使用 Bio.Phylo 的共识树(http://biopython.org/DIST/docs/api/Bio.Phylo.Consensus-module.html#strict_consensus)(http://biopython.org/wiki/Phylo)。我选择了 Majority_consensus 函数,它运行得很好。但我有一个问题。
我的“脚本”是这样的:
import os
import sys
from Bio import Phylo
from Bio.Phylo.Consensus import *
fichier=sys.argv[1]
fichier2=sys.argv[2]
fichier3=sys.argv[3]
fichier4=sys.argv[4]
tree1=Phylo.read(fichier, 'newick')
tree2=Phylo.read(fichier2, 'newick')
tree3=Phylo.read(fichier3, 'newick')
tree4=Phylo.read(fichier4, 'newick')
trees=tree1,tree2,tree3,tree4
majority_tree = majority_consensus(trees, 0.5)
Phylo.draw(majority_tree)
Run Code Online (Sandbox Code Playgroud)
问题在于共识树依赖于顺序。例如,当我try trees = tree1,tree2,tree3,tree4和trees = tree2,tree4,tree1,tree3
有人知道另一种软件可以从 newick 文件中制作共识树吗?
我需要帮助Bio.Phylo。如果有人了解更多有关此包的信息,那就太好了。
我正在尝试根据Python中的全局对齐算法(或Needleman-Wunsch算法)绘制矩阵.
我不知道matplotlib是否是这种情况下最好的工具.我试图使用Bokeh,但结构很难适合我想要的矩阵.
我正在使用Bio.SeqIO(BioPython的标准序列输入/输出接口)来存储两个序列.
我得到的结果与此图像类似:
这可能在Matplotlib?我怎样才能做到这一点?
UPDATE
最后,我能够根据ImportanceOfBeingErnest给出的答案构建算法.结果如下:
以下是此实现的要点:plot_needleman_wunsch.py
这是整个项目(正在进行中):bmc-sequence-alignment
我有一个大约145000个条目的.fasta文件(.txt),其格式如下
>gi|393182|gb|AAA40101.1| cytokine [Mus musculus]
MDAKVVAVLALVLAALCISDGKPVSLSYRCPCRFFESHIARANVKHLKILNTPNCALQIVARLKNNNRQV
CIDPKLKWIQEYLEKALNKRLKM
>gi|378792467|pdb|3UNH|Y Chain Y, Mouse 20s Immunoproteasome
TTTLAFKFQHGVIVAVDSRATAGSYISSLRMNKVIEINPYLLGTMSGCAADCQYWERLLAKECRLYYLRN
GERISVSAASKLLSNMMLQYRGMGLSMGSMICGWDKKGPGLYYVDDNGTRLSGQMFSTGSGNTYAYGVMD
SGYRQDLSPEEAYDLGRRAIAYATHRDNYSGGVVNMYHMKEDGWVKVESSDVSDLLYKYGEAAL
>gi|378792462|pdb|3UNH|T Chain T, Mouse 20s Immunoproteasome
MSSIGTGYDLSASTFSPDGRVFQVEYAMKAVENSSTAIGIRCKDGVVFGVEKLVLSKLYEEGSNKRLFNV
DRHVGMAVAGLLADARSLADIAREEASNFRSNFGYNIPLKHLADRVAMYVHAYTLYSAVRPFGCSFMLGS
YSANDGAQLYMIDPSGVSYGYWGCAIGKARQAAKTEIEKLQMKEMTCRDVVKEVAKIIYIVHDEVKDKAF
ELELSWVGELTKGRHEIVPKDIREEAEKYAKESLKEEDESDDDNM
Run Code Online (Sandbox Code Playgroud)
我一直在使用各种BioPython解析碎片,但我认为由于搜索的大小而失败.我希望这里有人知道更有效的方式吗?
提前致谢!
有人知道如何仅使用GenBank代码登录名和biopython从GenBank中的数据中获取科学名称(或所有功能)。例如:
>>> From Bio import Entrez
>>> Entrez.email = someuser@mail.com
>>> Input = Entrez.someFunction(db="nucleotide", term="AY851612")
>>> output = Entrez.read(Input)
>>> print output
"Austrocylindropuntia subulata"
Run Code Online (Sandbox Code Playgroud)
还是:
>>> print output
"LOCUS AY851612 892 bp DNA linear PLN 10-APR-2007
DEFINITION Opuntia subulata rpl16 gene, intron; chloroplast.
ACCESSION AY851612
VERSION AY851612.1 GI:57240072
KEYWORDS .
SOURCE chloroplast Austrocylindropuntia subulata
ORGANISM Austrocylindropuntia subulata
Eukaryota; Viridiplantae; Streptophyta; Embryophyta; Tracheophyta;
Spermatophyta; Magnoliophyta; eudicotyledons; core eudicotyledons;
Caryophyllales; Cactaceae; Opuntioideae; Austrocylindropuntia.
REFERENCE 1 (bases 1 to 892)
AUTHORS Butterworth,C.A. and …Run Code Online (Sandbox Code Playgroud) biopython ×10
python ×10
fasta ×2
clustal ×1
genbank ×1
large-data ×1
matplotlib ×1
phylogeny ×1
search ×1