Будучи полным новичком в языке программирования и особенно R
, я застрял в этой проблеме с нескольких дней.
У меня есть случайный файл fasta:
>header AAAATGGGGCTTTTACCCCGATA
My desired output is:
segment1 AAAAT
segment2 GGGGC
segment3 TTTTA
segment4 CCCCG
segment5 ATA
Мне нужна небольшая помощь в решении этого. Любая помощь будет высоко оценена!
Вот как бы я это сделал:
# Use the Biostrings package to parse fasta file and store long strings
# https://bioconductor.org/packages/release/bioc/html/Biostrings.html
require(Biostrings)
# Create test data
fileConn<-file("test.fa")
writeLines(c(
">header1",
"AAAATGGGGC",
"TTTTACCCCG",
"ATA",
">header2",
"ACGTACG"
), fileConn)
close(fileConn)
# Read fasta file
string_set <- readBStringSet("test.fa", format = "fasta")
string_set
# Segment the first sequence
sequence = string_set[[1]]
sequence_length = length(sequence)
segment_length = 5
segment_count = ceiling(sequence_length/segment_length) # number of segments
segments <- lapply(1:segment_count, function(segment_id) {
start_position <- (segment_id-1)*segment_length + 1
end_position <- min(start_position + segment_length - 1, sequence_length)
segment <- as.character(subseq(sequence,start_position,end_position))
segment_name <- sprintf("Segment%s", segment_id)
c(`Segment Name`=segment_name, `Segment`=segment)
})
segments <- as.data.frame(do.call(rbind, segments))
segments
Предоставьте достаточно кода, чтобы другие могли лучше понять или воспроизвести проблему.