Skip to content

Commit

Permalink
Merge pull request #55 from MillironX/feature/bioalignments-3
Browse files Browse the repository at this point in the history
  • Loading branch information
MillironX authored Oct 13, 2022
2 parents 946e77a + 32e3213 commit e2b22be
Show file tree
Hide file tree
Showing 5 changed files with 17 additions and 29 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

### Changed

- Upgraded to BioAlignments v3 ([#53](https://github.com/BioJulia/XAM.jl/pull/53))

## [0.3.0]

## Added
Expand Down
2 changes: 1 addition & 1 deletion Project.toml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ TranscodingStreams = "3bb67fe8-82b1-5028-8e26-92a6c54297fa"
[compat]
Automa = "0.7, 0.8"
BGZFStreams = "0.3.1"
BioAlignments = "2.2"
BioAlignments = "3"
BioGenerics = "0.1"
BioSequences = "3"
FormatSpecimens = "1.1"
Expand Down
24 changes: 4 additions & 20 deletions src/bam/record.jl
Original file line number Diff line number Diff line change
Expand Up @@ -430,27 +430,11 @@ end
Get the alignment of `record`.
"""
function alignment(record::Record)::BioAlignments.Alignment
checkfilled(record)
if !ismapped(record)
return BioAlignments.Alignment(BioAlignments.AlignmentAnchor[])
end
seqpos = 0
refpos = position(record) - 1
anchors = [BioAlignments.AlignmentAnchor(seqpos, refpos, BioAlignments.OP_START)]
for (op, len) in zip(cigar_rle(record)...)
if BioAlignments.ismatchop(op)
seqpos += len
refpos += len
elseif BioAlignments.isinsertop(op)
seqpos += len
elseif BioAlignments.isdeleteop(op)
refpos += len
else
error("operation $(op) is not supported")
end
push!(anchors, BioAlignments.AlignmentAnchor(seqpos, refpos, op))
if ismapped(record)
return BioAlignments.Alignment(cigar(record), 1, position(record))
end
return BioAlignments.Alignment(anchors)

return BioAlignments.Alignment(BioAlignments.AlignmentAnchor[])
end

function hasalignment(record::Record)
Expand Down
8 changes: 4 additions & 4 deletions test/test_bam.jl
Original file line number Diff line number Diff line change
Expand Up @@ -79,10 +79,10 @@
@test BAM.flag(record) === UInt16(16)
@test BAM.cigar(record) == "27M1D73M"
@test BAM.alignment(record) == Alignment([
AlignmentAnchor( 0, 1, OP_START),
AlignmentAnchor( 27, 28, OP_MATCH),
AlignmentAnchor( 27, 29, OP_DELETE),
AlignmentAnchor(100, 102, OP_MATCH)])
AlignmentAnchor( 0, 1, 0, OP_START),
AlignmentAnchor( 27, 28, 27, OP_MATCH),
AlignmentAnchor( 27, 29, 28, OP_DELETE),
AlignmentAnchor(100, 102, 101, OP_MATCH)])
@test record["XG"] == 1
@test record["XM"] == 5
@test record["XN"] == 0
Expand Down
8 changes: 4 additions & 4 deletions test/test_sam.jl
Original file line number Diff line number Diff line change
Expand Up @@ -104,10 +104,10 @@
@test SAM.flag(record) == 16
@test SAM.cigar(record) == "27M1D73M"
@test SAM.alignment(record) == Alignment([
AlignmentAnchor( 0, 1, OP_START),
AlignmentAnchor( 27, 28, OP_MATCH),
AlignmentAnchor( 27, 29, OP_DELETE),
AlignmentAnchor(100, 102, OP_MATCH)])
AlignmentAnchor( 0, 1, 0, OP_START),
AlignmentAnchor( 27, 28, 27, OP_MATCH),
AlignmentAnchor( 27, 29, 28, OP_DELETE),
AlignmentAnchor(100, 102, 101, OP_MATCH)])
@test record["XG"] == 1
@test record["XM"] == 5
@test record["XN"] == 0
Expand Down

0 comments on commit e2b22be

Please sign in to comment.