我想访问从BioAlignments.jl中的Julia pairalign函数返回的比对数据的索引,以了解在原始序列的上下文中比对发生在哪里。
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)例如,像这样的脚本将输出一个alignment对象,我可以通过score()函数从该对象访问分数。但是,我希望知道在我提供作为输入的原始序列中,比对发生在哪里,并知道如何调用存储此索引的变量。在文档中似乎找不到这一点。
发布于 2020-09-21 20:44:38
虽然我不使用这些库,但在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的一部分,并且可能会随着时间的推移而随着新包的发布而变化。
https://stackoverflow.com/questions/63991548
复制相似问题