Unclassified된 species를 blast돌리기 위해 phyloseq 개체에서 추출한 계통을 fasta포멧으로 만들고자 했다.
원래 엑셀로 정렬을 하는 방법도 있고, 리눅스 상에서 간단하게 변경하는 방법도 있지만
역시 뭐니뭐니 해도 R로 하는 것이 가장 간편하다.
fasta 포멧으로 만들기 위해 서열과 이름으로 data frame만들기
df <- data.frame(name = c("seq_2","seq_3", "seq_5" ),
Seq = c("ATTCTTTGTTCTTTTTTTTCTTTAATCTTTAAATAAACCTTTTTTTTTTA",
"ATTCCAAAATAAAATACAAAAAGAAAAAACTAGAAAGTTTTTTTTCTTTG",
"GACATAAGACATAAAATAGAATACTCAATCAGAAACCAACCCATAAAAAC"
)
)
df
1. ampir 패키지 설치 및 불러오기
# https://github.com/Legana/ampir
devtools::install_github("Legana/ampir")
library(ampir)
Data frame 에서 FASTA 포멧으로 바꾸기 및 저장
df_to_faa(df, "./FASTA/df.fasta")
이와 비슷한 seqRFLP 패키지도 존재한다
install.packages("seqRFLP")
library("seqRFLP")
names <- c("seq1","seq2","seq3","seq4")
sequences<-c("EPTFYQNPQFSVTLDKR","SLLEDPCYIGLR","YEVLESVQNYDTGVAK","VLGALDLGDNYR")
df <- data.frame(names,sequences)
df.fasta = dataframe2fas(df, file="df.fasta")
2. 함수 지정하기
writeFasta<-function(data, filename){
fastaLines = c()
for (rowNum in 1:nrow(data)){
fastaLines = c(fastaLines, as.character(paste(">", data[rowNum,"name"], sep = "")))
fastaLines = c(fastaLines,as.character(data[rowNum,"seq"]))
}
fileConn<-file(filename)
writeLines(fastaLines, fileConn)
close(fileConn)
}
df <- data.frame(name = c("seq_2","seq_3", "seq_5" ),
seq = c("ATTCTTTGTTCTTTTTTTTCTTTAATCTTTAAATAAACCTTTTTTTTTTA",
"ATTCCAAAATAAAATACAAAAAGAAAAAACTAGAAAGTTTTTTTTCTTTG",
"GACATAAGACATAAAATAGAATACTCAATCAGAAACCAACCCATAAAAAC"
)
)
writeFasta(df, "./FASTA/Seq.fasta")
다른 간단한 함수도 있다. 하지만 name에 ">"를 따로 추가해 준 후 실행해야 한다.
D <- do.call(rbind, lapply(seq(nrow(df)), function(i) t(df[i, ])))
write.table(D, row.names = FALSE, col.names = FALSE, quote = FALSE)
3. list형태에서 writeLines 함수 사용하기
Xfasta <- character(nrow(df) * 2)
Xfasta[c(TRUE, FALSE)] <- paste0(">", df$name)
Xfasta[c(FALSE, TRUE)] <- df$seq
writeLines(Xfasta, "filename.fasta")
참고
- https://stackoverflow.com/questions/23374100/convert-table-into-fasta-in-r
- https://bootstrappers.umassmed.edu/guides/main/r_writeFasta.html
- https://github.com/Legana/ampir
- https://stackoverflow.com/questions/74418146/convert-multiple-seq-files-to-fasta-format
반응형