В литературе по биоинформатике / микробной экологии довольно распространенной практикой является объединение множественных выравниваний последовательностей нескольких генов до построения филогенетических деревьев.В терминологии R может быть яснее сказать «объединить» эти последовательности организмом, из которого они произошли, но я уверен, что примеры лучше.
Скажем, это два множественных выравнивания последовательности.
library(Biostrings)
set1<-AAStringSet(c("IVR", "RDG", "LKS"))
names(set1)<-paste("org", 1:3, sep="_")
set2<-AAStringSet(c("VRT", "RKG", "AST"))
names(set2)<-paste("org", 2:4, sep="_")
set1
A AAStringSet instance of length 3
width seq names
[1] 3 IVR org_1
[2] 3 RDG org_2
[3] 3 LKS org_3
set2
A AAStringSet instance of length 3
width seq names
[1] 3 VRT org_2
[2] 3 RKG org_3
[3] 3 AST org_4
Правильная конкатенация этих последовательностей будет
A AAStringSet instance of length 4
width seq names
[1] 6 IVR--- org_1
[2] 6 RDGVRT org_2
[3] 6 LKSRKG org_3
[4] 6 ---AST org_4
"-"отмечает «разрыв» (недостаток аминокислоты) в этом положении или в этом случае отсутствие гена для конкатенации.
Я думал, что будет функция для этого в BioStrings
, MSA
, DECIPHER
или других связанных пакетах, но я не смог найти ее.
Я обнаружил следующие вопросы и ответы, каждый из которых не обеспечивает требуемый выход, как описано.
1: https://support.bioconductor.org/p/38955/
выход
A AAStringSet instance of length 6
width seq names
[1] 3 IVR org_1
[2] 3 RDG org_2
[3] 3 LKS org_3
[4] 3 VRT org_2
[5] 3 RKG org_3
[6] 3 AST org_4
Можно лучше описать как «добавление» последовательностей (объединяет два набора по вертикали).
2: https://support.bioconductor.org/p/39878/
output
A AAStringSet instance of length 2
width seq
[1] 9 IVRRDGLKS
[2] 9 VRTRKGAST
Объединяет последовательности в каждом наборе, полную химеру каждого набора (определенно не желательно).
3: Как объединить две последовательности DNAStringSet на выборку в выводе R?
A AAStringSet instance of length 3
width seq
[1] 6 IVRVRT
[2] 6 RDGRKG
[3] 6 LKSAST
Создает химеры последовательностей в том порядке, в котором они находятся. Еще хуже с различным числом последовательностей (более короткое множество циклов и объединений ...)
4: https://www.biostars.org/p/115192/
Вывод
A AAStringSet instance of length 2
width seq
[1] 3 IVR
[2] 3 VRT
Добавляет только первую последовательность из каждого набора, не уверенный, почему кто-то хочет этого ...
Я бы обычно думал, что такого рода процессы будутбыть сделано с некоторой комбинацией bash
и Python
, но я использую DECIPHER
множественный выравниватель последовательности яn R
, поэтому имеет смысл выполнить остальную часть обработки в R
.В процессе написания этого вопроса я нашел ответ, который я опубликую, но я ожидаю, что кто-то укажет мне на пропущенное мной руководство, описывающее функцию, которая делает это.Спасибо!