标签: fasta

使用Biopython(Python)从FASTA文件中提取序列

好的,我需要使用python从一个FASTA文件中提取部分序列(biopython,http://biopython.org/DIST/docs/tutorial/Tutorial.html)

我需要从每个序列中获取前10个碱基并将它们放在一个文件中,保留FASTA格式的序列信息.最糟糕的是,如果没有办法保留序列信息,我可以使用基数.所以这是一个例子:

>gi|2765658|emb|Z78533.1|CIZ78533 C.irapeanum 5.8S rRNA gene and ITS1 and ITS2 DNA
CGTAACAAGGTTTCCGTAGGTGAACCTGCGGAAGGATCATTGATGAGACCGTGGAATAAACGATCGAGTG
AATCCGGAGGACCGGTGTACTCAGCTCACCGGGGGCATTGCTCCCGTGGTGACCCTGATTTGTTGTTGGG

>gi|2765658|emb|Z78533.1|CIZ78533 C.irapeanum 5.8S rRNA gene and ITS1 and ITS2 DNA
CGTAACAAGGTTTCCGTAGGTGAACCTGCGGAAGGATCATTGATGAGACCGTGGAATAAACGATCGAGTG
AATCCGGAGGACCGGTGTACTCAGCTCACCGGGGGCATTGCTCCCGTGGTGACCCTGATTTGTTGTTGGG

>gi|2765658|emb|Z78533.1|CIZ78533 C.irapeanum 5.8S rRNA gene and ITS1 and ITS2 DNA
CGTAACAAGGTTTCCGTAGGTGAACCTGCGGAAGGATCATTGATGAGACCGTGGAATAAACGATCGAGTG
AATCCGGAGGACCGGTGTACTCAGCTCACCGGGGGCATTGCTCCCGTGGTGACCCTGATTTGTTGTTGGG
Run Code Online (Sandbox Code Playgroud)

我需要一些方法来获得前10个基地(然后我计划在最后10个基地再做一次).该教程网站非常详尽,但我是新手,因为它没有涉及到这一点,我甚至不确定它是否可行.谢谢你提供的所有帮助.

python fasta biopython python-2.7

4
推荐指数
1
解决办法
8828
查看次数

在 R 中将表转换为 fasta

我有一张这样的表:

>head(X)
column1    column2
sequence1 ATCGATCGATCG
sequence2 GCCATGCCATTG
Run Code Online (Sandbox Code Playgroud)

我需要一个 fasta 文件中的输出,如下所示:

sequence1  
ATCGATCGATCG
sequence2  
GCCATGCCATTG
Run Code Online (Sandbox Code Playgroud)

所以,基本上我需要第二列的所有条目成为新行,穿插第一列。然后可以丢弃旧的第二列。

我通常这样做的方法是在记事本++中用 \n 替换空格(或制表符),但我担心我的文件太大而无法这样做。

有没有办法在R 中做到这一点?

r fasta

4
推荐指数
2
解决办法
6391
查看次数

将 DNAstringsets 列表折叠为单个 DNAStingset,以便应用 writeXStringSet() 并将其转换为 R 中的 fasta 文件

在这里使用 R 进行生物信息学:我有一个 DNAstringsSets 列表(如下所示),并且想要使用 writeXstringset() 函数,该函数将 DNAstringset 对象作为参数,以便保存为 FASTA 文件。任何人都知道如何可能折叠将 DNAstringsets 列表转换为单个 DNAStringset 对象并将其用作参数?

$NM_008866
  A DNAStringSet instance of length 13
     width seq                                                        names               
 [1]   693 ATGTGCGGCAACAACATGTCCGCTCCGA...GATAAGCTCCTACCTCCAATTGATTGA NM_008866
 [2]    72 ATGGATGGGCAGAAGCCTTTGCAGGTAT...AATACATCTGTCCACATGCCCCTGTGA NM_008866
 [3]   114 ATGGGCAGAAGCCTTTGCAGGTATCAAA...GAATATGGCTATGCCTTCTTGGTTTGA NM_008866
 [4]   213 ATGGCATTCCTTCTAACAGGATTATTTT...AGTGCCATGGAGATTGTGACCCTTTAG NM_008866
 [5]    63 ATGTCAAGCACTTCATTGATAAGCTCCT...TTGATTGACATCACTAAGAGGCCTTGA NM_008866
 ...   ... ...
 [9]   219 ATGGCCCTTCTATTGGGAGACCAGGCTT...CAGAGGCAGGCGGATCTCTGTCAATAG NM_008866
[10]   144 ATGTTATGCTTAAAACCAAATACTGTTC...CAGTCTCCTGTACAAATATTAAAATAA NM_008866
[11]    78 ATGTTGCAAAAATTATGGTTATTTCTGA...CCAACCAACCAAGAAGCACCTTTATAA NM_008866
[12]    75 ATGGTTATTTCTGAACGGTTGCTTTTCT...AGAAGCACCTTTATAAACAGGTGCTAA NM_008866
[13]    90 ATGTCTGGATTTAAAACAATTTCAAACA...AATTTACTTCAGTTATTCTATCTGTAA

$NM_001159750
  A DNAStringSet instance of length 9
   width seq                                                         names               
[1]   903 ATGGAGGACGAGGTGGTTCGCATTGCCA...ATGTGGAAATCGGTGGAAGTTCTGTTGA …
Run Code Online (Sandbox Code Playgroud)

r dna-sequence fasta

4
推荐指数
1
解决办法
3354
查看次数

使用python中指定的分隔符逐块读取文件

我有一个这样的input_file.fa文件(FASTA格式):

> header1 description
data data
data
>header2 description
more data
data
data
Run Code Online (Sandbox Code Playgroud)

我想一次在文件中读取一个块,以便每个块包含一个头和相应的数据,例如块1:

> header1 description
data data
data
Run Code Online (Sandbox Code Playgroud)

当然,我可以像这样读取文件并拆分:

with open("1.fa") as f:
    for block in f.read().split(">"):
        pass
Run Code Online (Sandbox Code Playgroud)

但是我要避免将整个文件读入内存,因为文件通常很大。

我当然可以逐行读取文件:

with open("input_file.fa") as f:
    for line in f:
        pass
Run Code Online (Sandbox Code Playgroud)

但理想情况下,我想要的是这样的:

with open("input_file.fa", newline=">") as f:
    for block in f:
        pass
Run Code Online (Sandbox Code Playgroud)

但是我得到一个错误:

ValueError:非法换行值:>

我也尝试过使用csv模块,但没有成功。

我确实在3年前就找到了这篇文章,它提供了基于发电机的解决方案,但是似乎并不紧凑,这真的是唯一/最佳的解决方案吗?如果可以用单行而不是单独的函数来创建生成器,就像这样的伪代码,那将是一件很整洁的事情:

with open("input_file.fa") as f:
    blocks = magic_generator_split_by_>
    for block in blocks:
        pass
Run Code Online (Sandbox Code Playgroud)

如果这不可能,那么我想您可以考虑我的问题与其他帖子的重复,但是如果是这样,我希望人们可以向我解释为什么其他解决方案是唯一的解决方案。非常感谢。

python bioinformatics fasta python-3.x

4
推荐指数
1
解决办法
1980
查看次数

找到DNA序列中所有重复的4聚体 - Perl

你好,

我尝试编写一个程序,读取包含多个DNA序列的FASTA格式文件,识别序列中所有重复的4聚体(即,多次出现的所有4聚体),并打印出重复的4聚体以及查找它的序列的标题.k聚体仅仅是k个核苷酸的序列(例如,"aaca","gacg"和"tttt"是4聚体).

这是我的代码:

use strict;
use warnings;

my $count = -1;
my $file = "sequences.fa";
my $seq = '';
my @header = ();
my @sequences = ();
my $line = '';
open (READ, $file) || die "Cannot open $file: $!.\n";

while ($line = <READ>){
    chomp $line;
    if ($line =~ /^>/){
        push @header, $line;
        $count++;
        unless ($seq eq ''){
            push @sequences, $seq;
            $seq = '';
        }
    } else {
        $seq .= $line;
    }
}   push @sequences, $line;

for (my $i = …
Run Code Online (Sandbox Code Playgroud)

regex perl dna-sequence fasta

4
推荐指数
1
解决办法
367
查看次数

从FASTA文本文件在python中创建一个列表

我有像这个小例子的文本文件:

>ENST00000491024.1|ENSG00000187583.6|OTTHUMG00000040756.4|OTTHUMT00000097942.2|PLEKHN1-003|PLEKHN1|176
SLESSPDAPDHTSETSHSPLYADPYTPPATSHRRVTDVRGLEEFLSAMQSARGPTPSSPLPSVPVSVPASDPRSCSSGPAGPYLLSKKGALQSRAAQRHRGSAKDGGPQPPDAPQLVSSAREGSPEPWLPLTDGRSPRRSRDPGYDHLWDETLSSSHQKCPQLGGPEASGGLVQWI
>ENST00000433179.2|ENSG00000187642.5|OTTHUMG00000040757.3|-|C1orf170-201|C1orf170|696
MPTQDGQLRRPARPPGPRAWMEPRGGGSSQFSSCPGPASSGDQMQRLLQGPAPRPPGEPPGSPKSPGHSTGSQRPPDSPGAPPRSPSRKKRRAVGAKGGGHTGASASAQTGSPLLPAASPETAKLMAKAGQEELGPGPAGAPEPGPRSPVQEDRPGPGLGLSTPVPVTEQGTDQIRTPRRAKLHTVSTTVWEALPDVSRAKSDMAVSTPASEPQPDRDMAVSTPASEPQSDRDMAVSTPASEPQPDTDMAVSTPASEPQPDRDMAVSIPASKPQSDTAVSTPASEPQSSVALSTPISKPQLDTDVAVSTPASKHGLDVALPTAGPVAKLEVASSPPVSEAVPRMTESSGLVSTPVPRADAAGLAWPPTRRAGPDVVEMEAVVSEPSAGAPGCCSGAPALGLTQVPRKKKVRFSVAGPSPNKPGSGQASARPSAPQTATGAHGGPGAWEAVAVGPRPHQPRILKHLPRPPPSAVTRVGPGSSFAVTLPEAYEFFFCDTIEENEEAEAAAAGQDPAGVQWPDMCEFFFPDVGAQRSRRRGSPEPLPRADPVPAPIPGDPVPISIPEVYEHFFFGEDRLEGVLGPAVPLPLQALEPPRSASEGAGPGTPLKPAVVERLHLALRRAGELRGPVPSFAFSQNDMCLVFVAFATWAVRTSDPHTPDAWKTALLANVGTISAIRYFRRQVGQGRRSHSPSPSS
>ENST00000341290.2|ENSG00000187642.5|OTTHUMG00000040757.3|OTTHUMT00000097943.2|C1orf170-001|C1orf170|676
MEPRGGGSSQFSSCPGPASSGDQMQRLLQGPAPRPPGEPPGSPKSPGHSTGSQRPPDSPGAPPRSPSRKKRRAVGAKGGGHTGASASAQTGSPLLPAASPETAKLMAKAGQEELGPGPAGAPEPGPRSPVQEDRPGPGLGLSTPVPVTEQGTDQIRTPRRAKLHTVSTTVWEALPDVSRAKSDMAVSTPASEPQPDRDMAVSTPASEPQSDRDMAVSTPASEPQPDTDMAVSTPASEPQPDRDMAVSIPASKPQSDTAVSTPASEPQSSVALSTPISKPQLDTDVAVSTPASKHGLDVALPTAGPVAKLEVASSPPVSEAVPRMTESSGLVSTPVPRADAAGLAWPPTRRAGPDVVEMEAVVSEPSAGAPGCCSGAPALGLTQVPRKKKVRFSVAGPSPNKPGSGQASARPSAPQTATGAHGGPGAWEAVAVGPRPHQPRILKHLPRPPPSAVTRVGPGSSFAVTLPEAYEFFFCDTIEENEEAEAAAAGQDPAGVQWPDMCEFFFPDVGAQRSRRRGSPEPLPRADPVPAPIPGDPVPISIPEVYEHFFFGEDRLEGVLGPAVPLPLQALEPPRSASEGAGPGTPLKPAVVERLHLALRRAGELRGPVPSFAFSQNDMCLVFVAFATWAVRTSDPHTPDAWKTALLANVGTISAIRYFRRQVGQGRRSHSPSPSS
>ENST00000428771.2|ENSG00000188290.6|OTTHUMG00000040758.2|OTTHUMT00000097945.2|HES4-002|HES4|247
MAADTPGKPSASPMAGAPASASRTPDKPRSAAEHRKVGSRPGVRGATGGREGRGTQPVPDPQSSKPVMEKRRRARINESLAQLKTLILDALRKESSRHSKLEKADILEMTVRHLRSLRRVQVTAALSADPAVLGKYRAGFHECLAEVNRFLAGCEGVPADVRSRLLGHLAACLRQLGPSRRPASLSPAAPAEAPAPEVYAGRPLLPSLGGPFPLLAPPLLPGLTRALPAAPRAGPQGPGGPWRPWLR
Run Code Online (Sandbox Code Playgroud)

该文件被分成不同的组.每组有2个部分.第1部分开始,">"并且该部分中的元素被分割,"|"并且之后的线是第2部分.我试图从我的文件中创建一个Python列表,其中包含每个组ID部分的第6个元素.以下是小例子的预期输出:

list = ["PLEKHN1", "C1orf170", "C1orf170", "HES4"]
Run Code Online (Sandbox Code Playgroud)

我试图先导入一个字典,然后使用以下方法创建一个像预期输出的列表:

from itertools import groupby
with open('infile.txt') as f:
    groups = groupby(f, key=lambda x: not x.startswith(">"))
    d = {}
    for k,v in groups:
        if not k:
            key, val = list(v)[0].rstrip(), "".join(map(str.rstrip,next(groups)[1],""))
            d[key] = val

k = d.keys()
res = [el[5:] for s in k for el in s.split('|')]
Run Code Online (Sandbox Code Playgroud)

但它不会返回我想要的东西.你知道怎么解决吗?

python bioinformatics fasta biopython

4
推荐指数
1
解决办法
146
查看次数

使用 Python 删除 FASTA 中的重复序列

如果之前有人问过这个问题,我深表歉意,但我已经搜索了好几天,但在 Python 中找不到解决方案。

我有一个很大的 fasta 文件,包含标题和序列。

>cavPor3_rmsk_tRNA-Leu-TTA(m) range=chrM:2643-2717 5'pad=0 3'pad=0 strand=+ repeatMasking=none
GTTAAGGTGGCAGAGCCGGTAATTGCATAAAATTTAAGACTTTACTCTCA
GAGGTTCAACTCCTCTCCTTAACAC

>cavPor3_rmsk_tRNA-Gln-CAA_ range=chrM:3745-3815 5'pad=0 3'pad=0 strand=- repeatMasking=none
AGAGGGTCATAAAGGTTATGGGGTTGGCTTGAAACCAGCTTTAGGGGGTT
CAATTCCTTCCTCTCT

>cavPor3_rmsk_tRNA-Ser-TCA(m) range=chrM:6875-6940 5'pad=0 3'pad=0 strand=- repeatMasking=none
AGAGGGTCATAAAGGTTATGGGGTTGGCTTGAAACCAGCTTTAGGGGGTT
CAATTCCTTCCTCTCT
Run Code Online (Sandbox Code Playgroud)

这是文件的一个非常小的片段。如果正如您在最后两个条目中看到的那样,序列是相同的,我只想保留第一个条目(标题和序列)。

输出如下所示:

>cavPor3_rmsk_tRNA-Leu-TTA(m) range=chrM:2643-2717 5'pad=0 3'pad=0 strand=+ repeatMasking=none
GTTAAGGTGGCAGAGCCGGTAATTGCATAAAATTTAAGACTTTACTCTCA
GAGGTTCAACTCCTCTCCTTAACAC

>cavPor3_rmsk_tRNA-Gln-CAA_ range=chrM:3745-3815 5'pad=0 3'pad=0 strand=- repeatMasking=none
AGAGGGTCATAAAGGTTATGGGGTTGGCTTGAAACCAGCTTTAGGGGGTT
CAATTCCTTCCTCTCT
Run Code Online (Sandbox Code Playgroud)

问题是 FASTA 文件大小超过 1 GB。我已经找到了解决这个问题的方法,方法是根据重复的 ID 删除重复项或使用 bash,但遗憾的是我无法在我的计算机上执行此操作。此任务是一个研究项目,而不是家庭作业或任务。

预先感谢您的帮助!

python duplicates fasta biopython

4
推荐指数
1
解决办法
2815
查看次数

将 FASTA 文件中的多个序列添加到 python 中的列表中

我正在尝试组织具有多个序列的文件。在此过程中,我尝试将名称添加到列表中,并将序列添加到与名称列表并行的单独列表中。我弄清楚了如何将名称添加到列表中,但我不知道如何将其后面的序列添加到单独的列表中。我尝试将序列行附加到空字符串中,但它将所有序列的所有行附加到单个字符串中。

所有名称均以“>”开头

def Name_Organizer(FASTA,output):

    import os
    import re

    in_file=open(FASTA,'r')
    dir,file=os.path.split(FASTA)
    temp = os.path.join(dir,output)
    out_file=open(temp,'w')

    data=''
    name_list=[]

    for line in in_file:

        line=line.strip()
        for i in line:
            if i=='>':
                name_list.append(line)
                break
            else:
                line=line.upper()
        if all([k==k.upper() for k in line]):
            data=data+line

    print data
Run Code Online (Sandbox Code Playgroud)

如何将序列作为一组字符串添加到列表中?

输入文件看起来像这样

在此输入图像描述

python list append sequence fasta

3
推荐指数
1
解决办法
8399
查看次数

从 fasta 文件中删除多个序列

我有一个字符序列的文本文件,由两行组成:标题和下一行中的序列本身。该文件的结构如下:

>header1
aaaaaaaaa
>header2
bbbbbbbbbbb
>header3
aaabbbaaaa
[...]
>headerN
aaabbaabaa
Run Code Online (Sandbox Code Playgroud)

在另一个文件中,我有一个要删除的序列标题列表,如下所示:

>header1
>header5
>header12
[...]
>header145
Run Code Online (Sandbox Code Playgroud)

这个想法是从第一个文件中删除这些序列,因此所有这些标头+以下行。我使用 sed 执行此操作,如下所示,

while read line; do sed -i "/$line/,+1d" first_file.txt; done < second_file.txt
Run Code Online (Sandbox Code Playgroud)

它可以工作,但需要很长时间,因为我使用 sed 多次加载整个文件,而且它很大。关于如何加快这个过程的任何想法?

bash awk sed fasta

3
推荐指数
1
解决办法
4809
查看次数

从另一个文件中删除与特定模式匹配的行

我有两个文件(我只显示这些文件的开头):

模式.txt

m64071_201130_104452/13
m64071_201130_104452/26
m64071_201130_104452/46
m64071_201130_104452/49
m64071_201130_104452/113
m64071_201130_104452/147
Run Code Online (Sandbox Code Playgroud)

我的文件.txt

>m64071_201130_104452/13/ccs
ACAGTCGAGCG
>m64071_201130_104452/16/ccs
ACAGTCGAGCG
>m64071_201130_104452/20/ccs
CAGTCGAGCGC
>m64071_201130_104452/22/ccs
CACACATCTCG
>m64071_201130_104452/26/ccs
TAGACAATGTA
Run Code Online (Sandbox Code Playgroud)

我应该得到这样的输出:

>m64071_201130_104452/13/ccs
ACAGTCGAGCG
>m64071_201130_104452/26/ccs
TAGACAATGTA
Run Code Online (Sandbox Code Playgroud)

如果 patterns.txt 中的行与 myfile.txt 中的行匹配,我想创建一个新文件。我需要保留与所讨论的模式相关联的字母 ACTG。我用 :

for i in $(cat patterns.txt); do 
     grep -A 1 $i myfile.txt; done > my_newfile.txt
Run Code Online (Sandbox Code Playgroud)

它可以工作,但是创建新文件的速度很慢......我处理的文件很大但不是太多(patterns.txt 为 14M,myfile.txt 为 700M)。

我也尝试使用,grep -v因为我有另一个文件,其中包含不存在于 patterns.txt 中的 myfile.txt 的其他模式。但它是相同的“速度填充文件”问题。

如果您看到解决方案..

awk grep fasta

3
推荐指数
1
解决办法
81
查看次数