如何使用R从FASTA文件中获取ID代码

如何使用R从FASTA文件中获取ID代码,r,sequence,bioinformatics,fasta,R,Sequence,Bioinformatics,Fasta,有一个包含如下两个序列的fasta文件,我只想获取ID代码并将它们存储到一个新的.txt文件中 >sp|P01920|DQB1_HUMAN HLA class II histocompatibility antigen, DQ beta 1 chain OS=Homo sapiens OX=9606 GN=HLA-DQB1 PE=1 SV=2 MSWKKALRIPGGLRAATVTLMLAMLSTPVAEGRDSPEDFVYQFKAMCYFTNGTERVRYVT RYIYNREEYARFD

有一个包含如下两个序列的fasta文件,我只想获取ID代码并将它们存储到一个新的.txt文件中

>sp|P01920|DQB1_HUMAN HLA class II histocompatibility antigen, DQ beta 1 chain OS=Homo sapiens OX=9606 GN=HLA-DQB1 PE=1 SV=2
MSWKKALRIPGGLRAATVTLMLAMLSTPVAEGRDSPEDFVYQFKAMCYFTNGTERVRYVT
RYIYNREEYARFDSDVEVYRAVTPLGPPDAEYWNSQKEVLERTRAELDTVCRHNYQLELR
TTLQRRVEPTVTISPSRTEALNHHNLLVCSVTDFYPAQIKVRWFRNDQEETTGVVSTPLI
RNGDWTFQILVMLEMTPQHGDVYTCHVEHPSLQNPITVEWRAQSESAQSKMLSGIGGFVL
GLIFLGLGLIIHHRSQKGLLH

>sp|P18440|ARY1_HUMAN Arylamine N-acetyltransferase 1 OS=Homo sapiens OX=9606 GN=NAT1 PE=1 SV=2
MDIEAYLERIGYKKSRNKLDLETLTDILQHQIRAVPFENLNIHCGDAMDLGLEAIFDQVV
RRNRGGWCLQVNHLLYWALTTIGFETTMLGGYVYSTPAKKYSTGMIHLLLQVTIDGRNYI
VDAGFGRSYQMWQPLELISGKDQPQVPCVFRLTEENGFWYLDQIRREQYIPNEEFLHSDL
LEDSKYRKIYSFTLKPRTIEDFESMNTYLQTSPSSVFTSKSFCSLQTPDGVHCLVGFTLT
HRRFNYKDNTDLIEFKTLSEEEIEKVLKNIFNISLQRKLVPKHGDRFFTI
新的.txt文件将具有ID代码

>P01920
>P18440
每一个都在不同的一排

有这方面的经验吗?
谢谢

我们可以使用
stru extract
stringr
中提取。我们可以使用一个正则表达式来查找字母数字字符串,该字符串前面紧跟着
sp
。这叫做“回头看”

library(stringr)
con <- file("test.fasta")
data <- readLines(con = con)
close(con)
IDs <- str_extract(data,"(?<=sp\\|)[[:alnum:]]+")
IDs <- IDs[!is.na(IDs)]
IDs <- paste0(">",IDs)
write.table(data.frame(IDs),file="IDs.txt",row.names = FALSE, col.names=FALSE, quote = FALSE)
库(stringr)

con我们可以使用
stru-extract
stringr
中提取。我们可以使用一个正则表达式来查找字母数字字符串,该字符串前面紧跟着
sp
。这叫做“回头看”

library(stringr)
con <- file("test.fasta")
data <- readLines(con = con)
close(con)
IDs <- str_extract(data,"(?<=sp\\|)[[:alnum:]]+")
IDs <- IDs[!is.na(IDs)]
IDs <- paste0(">",IDs)
write.table(data.frame(IDs),file="IDs.txt",row.names = FALSE, col.names=FALSE, quote = FALSE)
库(stringr)

con假设您的文件看起来像:

test = c(">sp|Q9DFI0|DMT3B_DANRE Doublesex- and mab-3-related transcription factor 3b (Fragment) OS=Danio rerio OX=7955 GN=dmrt3b PE=3 SV=1", 
"MLSWLKGHKRYCRFKDCTCEKCILIIERQRV", ">sp|P83238|OSTCN_DANRE Osteocalcin (Fragment) OS=Danio rerio OX=7955 GN=bglap PE=1 SV=1", 
"AGTAXGDLTPFQLESLREVCEVNLACEHMADTXGIVAAYTAYYGY", ">sp|Q9W7M8|TYB_DANRE Thymosin beta OS=Danio rerio OX=7955 GN=tmsb PE=3 SV=3", 
"MADKPNMTEITSFDKTKLRKTETQEKNPLPTKETIEQERQGESTP")

writeLines(test,"./test.fasta")
你可以做:

library(Biostrings)
fa = readAAStringSet("test.fasta")
want_names = sapply(strsplit(names(fa),"\\|"),"[[",2)
want_names
writeLines(want_names,"names.txt")
或者,如果您不想安装软件包:

fa = readLines("test.fasta")
fa = fa[grepl(">",fa)]
want_names = sapply(strsplit(fa,"\\|"),"[[",2)
want_names
[1] "Q9DFI0" "P83238" "Q9W7M8"

假设您的文件看起来像:

test = c(">sp|Q9DFI0|DMT3B_DANRE Doublesex- and mab-3-related transcription factor 3b (Fragment) OS=Danio rerio OX=7955 GN=dmrt3b PE=3 SV=1", 
"MLSWLKGHKRYCRFKDCTCEKCILIIERQRV", ">sp|P83238|OSTCN_DANRE Osteocalcin (Fragment) OS=Danio rerio OX=7955 GN=bglap PE=1 SV=1", 
"AGTAXGDLTPFQLESLREVCEVNLACEHMADTXGIVAAYTAYYGY", ">sp|Q9W7M8|TYB_DANRE Thymosin beta OS=Danio rerio OX=7955 GN=tmsb PE=3 SV=3", 
"MADKPNMTEITSFDKTKLRKTETQEKNPLPTKETIEQERQGESTP")

writeLines(test,"./test.fasta")
你可以做:

library(Biostrings)
fa = readAAStringSet("test.fasta")
want_names = sapply(strsplit(names(fa),"\\|"),"[[",2)
want_names
writeLines(want_names,"names.txt")
或者,如果您不想安装软件包:

fa = readLines("test.fasta")
fa = fa[grepl(">",fa)]
want_names = sapply(strsplit(fa,"\\|"),"[[",2)
want_names
[1] "Q9DFI0" "P83238" "Q9W7M8"

假设在fasta头
后面是生物体名称,后面是基因名称,由生物体名称和字符串的其余部分隔开
,您可以通过以下方式找到您的基因ID:

fas <- readLines('fasta_file.txt')                  # read fasta file
fas <- fas[!grepl('^$', fas)]                       # rm empty lines
(ids <- gsub('^.+\\|(\\w+)\\|.*$', '>\\1', fas))    # extract IDs
#[1] ">P01920" ">P18440"                            # result
writeLines(ids, 'fasta_ids.txt')                    # write results

fas假设在fasta头
后面是生物体名称,后面是基因名称,由生物体名称和字符串的其余部分隔开
,您可以通过以下方式找到您的基因ID:

fas <- readLines('fasta_file.txt')                  # read fasta file
fas <- fas[!grepl('^$', fas)]                       # rm empty lines
(ids <- gsub('^.+\\|(\\w+)\\|.*$', '>\\1', fas))    # extract IDs
#[1] ">P01920" ">P18440"                            # result
writeLines(ids, 'fasta_ids.txt')                    # write results

fas顺便说一句,它不是一种有效的fasta格式,
应该在每行的开头。
是由降价系统解释的。顺便说一句,它不是一种有效的fasta格式,
应该在每行的开头。
是由降价系统解释的。非常有趣。谢谢你,乌图邦!我会在最后添加一个writeLines函数,你不同意吗?非常有趣。谢谢你,乌图邦!我会在最后添加一个writeLines函数,你不同意吗?谢谢你的帮助!谢谢你的帮助,愚蠢的狼!如果其中一个答案适用于你,考虑接受其中一个。如果其中一个答案对你有用,请考虑接受其中一个。