Вот решение в R по запросу, использующее пакет Biostrings
для чтения файлов fasta.
Это работает, но я должен сказать, что это один из самых уродливых кодов, которые я написал в длинномвремя.Я просто хотел посмотреть, смогу ли я как-нибудь это сделать - это 100% не лучшее решение.
library("Biostrings")
library("tidyverse")
convertStringSet = function(seq){
return(df = data.frame("names" = names(seq), "seq" = paste(seq)))
}
# change the path accordingly
filenames = list.files("/home/x/y/z", pattern="gene*", full.names=TRUE)%>%
lapply(readDNAStringSet)
fastaDF = filenames %>% lapply(convertStringSet) %>%
reduce(full_join, by = "names") %>%
unite("seq", -1, sep="")
writeOutput = function(x){
header = paste(">",x[1],sep="")
fileName = paste("strain",x[1],".fasta",sep="")
writeLines(c(header,x[2]), fileName)
}
apply(fastaDF, 1, writeOutput)
В качестве альтернативы, если вы работаете в системе Unix, эта строка awk должна выдавать то же самое.результаты:
awk '$0 ~ /^>/ {i=substr($0,2); next;} i != -1 {printf "%s", $0 >> "file"i; i=-1;}' gene*