#julia #bioinformatics
#джулия #биоинформатика
Вопрос:
Я хотел бы получить доступ к индексам данных выравнивания, которые возвращаются из функции Julia pairalign в BioAlignments.jl, чтобы узнать, где произошло выравнивание в контексте исходных последовательностей.
using BioAlignments
using BioSequences
scoremodel = AffineGapScoreModel(EDNAFULL, gap_open=-5, gap_extend=-1);
my_alignment = pairalign(LocalAlignment(),dna"ATATTAGGTATTGATTATTGTACGCGGCCCGGC" , dna"TTGATTATTGT", scoremodel)
alignment(my_alignment)
Например, подобный скрипт выведет объект выравнивания, из которого я могу получить доступ к оценке с помощью функции score() . Однако я хотел бы знать, где в исходных последовательностях, которые я предоставил в качестве входных данных, произошло выравнивание, и знать, как вызвать переменную, хранящую этот индекс. Похоже, не удалось найти это нигде в документации.
Ответ №1:
Хотя я не использую эти библиотеки, один из подходов к таким проблемам в Julia заключается в dump
таком объекте, и в результате можно узнать местоположение необходимой информации.
julia> dump(alignment(my_alignment))
PairwiseAlignment{LongSequence{DNAAlphabet{4}},LongSequence{DNAAlphabet{4}}}
a: AlignedSequence{LongSequence{DNAAlphabet{4}}}
seq: LongSequence{DNAAlphabet{4}}
data: Array{UInt64}((3,)) UInt64[0x8814881844188181, 0x4422244242184881, 0x0000000000000002]
part: UnitRange{Int64}
start: Int64 1
stop: Int64 33
shared: Bool false
aln: Alignment
anchors: Array{AlignmentAnchor}((2,))
1: AlignmentAnchor
seqpos: Int64 10
refpos: Int64 0
op: Operation OP_START
2: AlignmentAnchor
seqpos: Int64 21
refpos: Int64 11
op: Operation OP_SEQ_MATCH
firstref: Int64 1
lastref: Int64 11
b: LongSequence{DNAAlphabet{4}}
data: Array{UInt64}((1,)) UInt64[0x0000084881881488]
part: UnitRange{Int64}
start: Int64 1
stop: Int64 11
shared: Bool false
И теперь вы можете увидеть, где находится нужная вам информация:
julia> alignment(my_alignment).a.aln.anchors
2-element Array{AlignmentAnchor,1}:
AlignmentAnchor(10, 0, '0')
AlignmentAnchor(21, 11, '=')
Недостатком этого подхода является то, что структуры данных обычно не являются частью API библиотеки и могут меняться со временем при новых реализациях пакетов.
Комментарии:
1. Большое спасибо. Это именно то, что я искал.