我试图将BioPython序列传递给Ilya Stepanov在iPython笔记本环境中实现Ukkonen的后缀树算法.我在argparse组件上遇到了绊脚石.
我之前从未直接与argparse打过交道.如何在不重写main()的情况下使用它?
通过这个,这个Ukkonen算法的写法非常棒.
我正在使用Python和正则表达式来查找ORF(开放阅读框架).
查找一个子字符串,该字符串仅由字母组成ATGC(不包含空格或新行):
开头ATG,结尾TAG或TAA或TGA并应考虑从第一个字符的序列,那么第二和第三然后:
Seq= "CCTCAGCGAGGACAGCAAGGGACTAGCCAGGAGGGAGAACAGAAACTCCAGAACATCTTGGAAATAGCTCCCAGAAAAGC
AAGCAGCCAACCAGGCAGGTTCTGTCCCTTTCACTCACTGGCCCAAGGCGCCACATCTCCCTCCAGAAAAGACACCATGA
GCACAGAAAGCATGATCCGCGACGTGGAACTGGCAGAAGAGGCACTCCCCCAAAAGATGGGGGGCTTCCAGAACTCCAGG
CGGTGCCTATGTCTCAGCCTCTTCTCATTCCTGCTTGTGGCAGGGGCCACCACGCTCTTCTGTCTACTGAACTTCGGGGT
GATCGGTCCCCAAAGGGATGAGAAGTTCCCAAATGGCCTCCCTCTCATCAGTTCTATGGCCCAGACCCTCACACTCAGAT
CATCTTCTCAAAATTCGAGTGACAAGCCTGTAGCCCACGTCGTAGCAAACCACCAAGTGGAGGAGCAGCTGGAGTGGCTG
AGCCAGCGCGCCAACGCCCTCCTGGCCAACGGCATGGATCTCAAAGACAACCAACTAGTGGTGCCAGCCGATGGGTTGTA
CCTTGTCTACTCCCAGGTTCTCTTCAAGGGACAAGGCTGCCCCGACTACGTGCTCCTCACCCACACCGTCAGCCGATTTG
CTATCTCATACCAGGAGAAAGTCAACCTCCTCTCTGCCGTCAAGAGCCCCTGCCCCAAGGACACCCCTGAGGGGGCTGAG
CTCAAACCCTGGTATGAGCCCATATACCTGGGAGGAGTCTTCCAGCTGGAGAAGGGGGACCAACTCAGCGCTGAGGTCAA
TCTGCCCAAGTACTTAGACTTTGCGGAGTCCGGGCAGGTCTACTTTGGAGTCATTGCTCTGTGAAGGGAATGGGTGTTCA
TCCATTCTCTACCCAGCCCCCACTCTGACCCCTTTACTCTGACCCCTTTATTGTCTACTCCTCAGAGCCCCCAGTCTGTA
TCCTTCTAACTTAGAAAGGGGATTATGGCTCAGGGTCCAACTCTGTGCTCAGAGCTTTCAACAACTACTCAGAAACACAA
GATGCTGGGACAGTGACCTGGACTGTGGGCCTCTCATGCACCACCATCAAGGACTCAAATGGGCTTTCCGAATTCACTGG
AGCCTCGAATGTCCATTCCTGAGTTCTGCAAAGGGAGAGTGGTCAGGTTGCCTCTGTCTCAGAATGAGGCTGGATAAGAT
CTCAGGCCTTCCTACCTTCAGACCTTTCCAGATTCTTCCCTGAGGTGCAATGCACAGCCTTCCTCACAGAGCCAGCCCCC
CTCTATTTATATTTGCACTTATTATTTATTATTTATTTATTATTTATTTATTTGCTTATGAATGTATTTATTTGGAAGGC
CGGGGTGTCCTGGAGGACCCAGTGTGGGAAGCTGTCTTCAGACAGACATGTTTTCTGTGAAAACGGAGCTGAGCTGTCCC
CACCTGGCCTCTCTACCTTGTTGCCTCCTCTTTTGCTTATGTTTAAAACAAAATATTTATCTAACCCAATTGTCTTAATA
ACGCTGATTTGGTGACCAGGCTGTCGCTACATCACTGAACCTCTGCTCCCCACGGGAGCCGTGACTGTAATCGCCCTACG
GGTCATTGAGAGAAATAA"
我尝试过的:
# finding the  stop codon here 
def stop_codon(seq_0):
        for i in range(0,len(seq_0),3):
            if (seq_0[i:i+3]== "TAA" and i%3==0) or (seq_0[i:i+3]== "TAG" and i%3==0) or (seq_0[i:i+3]== "TGA" and i%3==0) :
                a =i+3
                break
            else:
                a = None
# finding the start codon here 
startcodon_find …我有一个fasta文件,如下所示.我想将三个字母的代码转换为一个字母代码.我怎么能用python或R做到这一点?
>2ppo
ARGHISLEULEULYS
>3oot
METHISARGARGMET
期望的输出
>2ppo
RHLLK
>3oot
MHRRM
你的建议将不胜感激!
编码新手.Pytho/biopython新手; 这是我在网上的第一个问题.如何打开压缩的fasta.gz文件以提取信息并在我的函数中执行计算.这是我正在尝试做的一个简化示例(我尝试过不同的方法),以及错误是什么.我正在使用的gzip命令似乎不起作用.
with gzip.open("practicezip.fasta.gz", "r") as handle:
    for record in SeqIO.parse(handle, "fasta"):
        print(record.id)
Traceback (most recent call last):
  File "<ipython-input-192-a94ad3309a16>", line 2, in <module>
    for record in SeqIO.parse(handle, "fasta"):
  File "C:\Users\Anaconda3\lib\site-packages\Bio\SeqIO\__init__.py", line 600, in parse
    for r in i:
  File "C:\Users\Anaconda3\lib\site-packages\Bio\SeqIO\FastaIO.py", line 122, in FastaIterator
    for title, sequence in SimpleFastaParser(handle):
  File "C:\Users\Anaconda3\lib\site-packages\Bio\SeqIO\FastaIO.py", line 46, in SimpleFastaParser
    if line[0] == ">":
IndexError: index out of range
我正在尝试使用仿射空位罚函数实现用于局部序列比对的Smith-Waterman算法.我想我理解如何启动和计算计算校准分数所需的矩阵,但我不知道如何追溯以找到对齐.要生成所需的3个矩阵,我有以下代码
for j in range(1, len2):
    for i in range(1, len1):
        fxOpen = F[i][j-1] + gap
        xExtend = Ix[i][j-1] + extend
        Ix[i][j] = max(fxOpen, xExtend)
        fyOpen = F[i-1][j] + gap
        yExtend = Iy[i-1][j] + extend
        Iy[i][j] = max(fyOpen, yExtend)
        matchScore = (F[i-1][j-1]  + simMatrixDict[seq1[i-1]+seq2[j-1]])
        xScore = Ix[i-1][j-1] + simMatrixDict[seq1[i-1]+seq2[j-1]]
        yScore = Iy[i-1][j-1] + simMatrixDict[seq1[i-1]+seq2[j-1]]
        F[i][j] = max(0, matchScore, xScore, yScore)
我不确定我是否需要一个矩阵用于追溯,或者只需要1?任何关于如何从F中的最大分数追溯的澄清将非常感激.
我很想知道是否有任何生物信息学工具能够处理multiFASTA文件,给我信息序列,长度,核苷酸/氨基酸含量等信息,并可能自动绘制描述性图.也可以使用R BIoconductor解决方案或BioPerl模块,但我找不到任何东西.
你能帮助我吗?非常感谢 :-)
我不知道这里可能出现什么问题:
我有一些来自Biopython的模块,我可以在使用交互式提示或通过命令行执行python脚本时轻松导入.
问题是,当我尝试在web可执行的cgi脚本中导入相同的biopython模块时,我得到一个"导入错误"
:没有名为Bio的模块
这里有什么想法?
我试图用BioPython,Phylo模块构建一棵树.
到目前为止我所做的是这张图片:
每个名称都有一个四位数字后跟 - 和一个数字:这个数字表示该序列的表示次数.这意味着1578 - 22,该节点应代表22个序列.
所以现在我知道如何更改节点的每个大小.每个节点都有不同的大小,这很容易做一个不同值的数组:
    fh = open(MEDIA_ROOT + "groupsnp.txt")    
    list_size = {}
    for line in fh:
        if '>' in line:
            labels = line.split('>')
            label = labels[-1]
            label = label.split()
            num = line.split('-')
            size = num[-1]
            size = size.split()
            for lab in label:
                for number in size:
                    list_size[lab] = int(number)
    a = array(list_size.values())
但是数组是任意的,我想将正确的节点大小放入正确的节点,我试过这个:
         for elem in list_size.keys():
             if labels == elem:
                 Phylo.draw_graphviz(tree_xml, prog="neato", node_size=a)
但是当我使用if语句时没有出现.
无论如何这样做?
我真的很感激!
谢谢大家
我有一个DNA序列,并希望使用Python获得它的反向补码.它位于CSV文件的其中一列中,我想将反向补码写入同一文件中的另一列.棘手的部分是,有一些单元格不同于A,T,G和C.我能够通过这段代码得到反向补码:
def complement(seq):
    complement = {'A': 'T', 'C': 'G', 'G': 'C', 'T': 'A'} 
    bases = list(seq) 
    bases = [complement[base] for base in bases] 
    return ''.join(bases)
    def reverse_complement(s):
        return complement(s[::-1])
    print "Reverse Complement:"
    print(reverse_complement("TCGGGCCC"))
但是,当我试图找到补码词典中没有的项目时,使用下面的代码,我只得到最后一个基础的补充.它不会迭代.我想知道如何解决它.
def complement(seq):
    complement = {'A': 'T', 'C': 'G', 'G': 'C', 'T': 'A'} 
    bases = list(seq) 
    for element in bases:
        if element not in complement:
            print element  
        letters = [complement[base] for base in element] 
        return ''.join(letters)
def reverse_complement(seq):
    return complement(seq[::-1])
print "Reverse Complement:"
print(reverse_complement("TCGGGCCCCX"))
我正在编写一个函数,该函数应该通过DNA序列的.fasta文件,并为文件中的每个序列创建核苷酸(nt)和二核苷酸(dnt)频率的字典.然后我将每个字典存储在一个名为"频率"的列表中.这是一段奇怪的代码:
for fasta in seq_file:
    freq = {}
    dna = str(fasta.seq)
    for base1 in ['A', 'T', 'G', 'C']:
        onefreq = float(dna.count(base1)) / len(dna)
        freq[base1] = onefreq
        for base2 in ['A', 'T', 'G', 'C']:
            dinucleotide = base1 + base2
            twofreq = float(dna.count(dinucleotide)) / (len(dna) - 1) 
            freq[dinucleotide] = twofreq
    frequency.append(freq)
(顺便说一下,我正在使用biopython,所以我不必将整个fasta文件提交到内存.这也适用于ssDNA,所以我不需要考虑反义dnt)
为单个nt记录的频率增加到1.0,但是dnt的频率不会增加到1.0.因为计算两种频率的方法在我眼中是相同的,所以这是od.
我将诊断打印语句和"检查"变量留在:
for fasta in seq_file:
    freq = {}
    dna = str(fasta.seq)
    check = 0.0
    check2 = 0.0
    for base1 in ['A', 'T', 'G', 'C']:
        onefreq = float(dna.count(base1)) / len(dna) …biopython ×10
python ×9
python-2.7 ×2
bioconductor ×1
bioperl ×1
cgi ×1
dna-sequence ×1
fasta ×1
graphviz ×1
gzip ×1
ipython ×1
list ×1
numpy ×1
python-3.x ×1
r ×1
suffix-tree ×1