好的,我需要使用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个基地再做一次).该教程网站非常详尽,但我是新手,因为它没有涉及到这一点,我甚至不确定它是否可行.谢谢你提供的所有帮助.
我有一张这样的表:
>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 进行生物信息学:我有一个 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) 我有一个这样的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)
如果这不可能,那么我想您可以考虑我的问题与其他帖子的重复,但是如果是这样,我希望人们可以向我解释为什么其他解决方案是唯一的解决方案。非常感谢。
你好,
我尝试编写一个程序,读取包含多个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) 我有像这个小例子的文本文件:
>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 中找不到解决方案。
我有一个很大的 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,但遗憾的是我无法在我的计算机上执行此操作。此任务是一个研究项目,而不是家庭作业或任务。
预先感谢您的帮助!
我正在尝试组织具有多个序列的文件。在此过程中,我尝试将名称添加到列表中,并将序列添加到与名称列表并行的单独列表中。我弄清楚了如何将名称添加到列表中,但我不知道如何将其后面的序列添加到单独的列表中。我尝试将序列行附加到空字符串中,但它将所有序列的所有行附加到单个字符串中。
所有名称均以“>”开头
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)
如何将序列作为一组字符串添加到列表中?
输入文件看起来像这样
我有一个字符序列的文本文件,由两行组成:标题和下一行中的序列本身。该文件的结构如下:
>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 多次加载整个文件,而且它很大。关于如何加快这个过程的任何想法?
我有两个文件(我只显示这些文件的开头):
模式.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 的其他模式。但它是相同的“速度填充文件”问题。
如果您看到解决方案..
fasta ×10
python ×5
biopython ×3
awk ×2
dna-sequence ×2
r ×2
append ×1
bash ×1
duplicates ×1
grep ×1
list ×1
perl ×1
python-2.7 ×1
python-3.x ×1
regex ×1
sed ×1
sequence ×1