mirror of
https://github.com/MillironX/XAM.jl.git
synced 2024-11-14 22:33:14 +00:00
commit
22f939ffbe
5 changed files with 23 additions and 32 deletions
11
CHANGELOG.md
11
CHANGELOG.md
|
@ -7,7 +7,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
## [0.3.0]
|
## [0.3.1]
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- Upgraded to BioAlignments v3 ([#55](https://github.com/BioJulia/XAM.jl/pull/55))
|
||||||
|
|
||||||
|
## [0.3.0] - 2022-10-10
|
||||||
|
|
||||||
## Added
|
## Added
|
||||||
|
|
||||||
|
@ -23,5 +29,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||||
|
|
||||||
- `BAM.Record` layout now matches the BAM specs ([#26](https://github.com/BioJulia/XAM.jl/pull/26))
|
- `BAM.Record` layout now matches the BAM specs ([#26](https://github.com/BioJulia/XAM.jl/pull/26))
|
||||||
|
|
||||||
[Unreleased]: https://github.com/BioJulia/XAM.jl/compare/v0.3.0...HEAD
|
[Unreleased]: https://github.com/BioJulia/XAM.jl/compare/v0.3.1...HEAD
|
||||||
|
[0.3.1]: https://github.com/BioJulia/XAM.jl/compare/v0.3.0...v0.3.1
|
||||||
[0.3.0]: https://github.com/BioJulia/XAM.jl/compare/v0.2.8...v0.3.0
|
[0.3.0]: https://github.com/BioJulia/XAM.jl/compare/v0.2.8...v0.3.0
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
name = "XAM"
|
name = "XAM"
|
||||||
uuid = "d759349c-bcba-11e9-07c2-5b90f8f05f7c"
|
uuid = "d759349c-bcba-11e9-07c2-5b90f8f05f7c"
|
||||||
authors = ["Kenta Sato <bicycle1885@gmail.com>", "Ben J. Ward <ward9250@gmail.com>", "Ciarán O'Mara <Ciaran.OMara@utas.edu.au>"]
|
authors = ["Kenta Sato <bicycle1885@gmail.com>", "Ben J. Ward <ward9250@gmail.com>", "Ciarán O'Mara <Ciaran.OMara@utas.edu.au>"]
|
||||||
version = "0.3.0"
|
version = "0.3.1"
|
||||||
|
|
||||||
[deps]
|
[deps]
|
||||||
Automa = "67c07d97-cdcb-5c2c-af73-a7f9c32a568b"
|
Automa = "67c07d97-cdcb-5c2c-af73-a7f9c32a568b"
|
||||||
|
@ -17,7 +17,7 @@ TranscodingStreams = "3bb67fe8-82b1-5028-8e26-92a6c54297fa"
|
||||||
[compat]
|
[compat]
|
||||||
Automa = "0.7, 0.8"
|
Automa = "0.7, 0.8"
|
||||||
BGZFStreams = "0.3.1"
|
BGZFStreams = "0.3.1"
|
||||||
BioAlignments = "2.2"
|
BioAlignments = "3"
|
||||||
BioGenerics = "0.1"
|
BioGenerics = "0.1"
|
||||||
BioSequences = "3"
|
BioSequences = "3"
|
||||||
FormatSpecimens = "1.1"
|
FormatSpecimens = "1.1"
|
||||||
|
|
|
@ -430,27 +430,11 @@ end
|
||||||
Get the alignment of `record`.
|
Get the alignment of `record`.
|
||||||
"""
|
"""
|
||||||
function alignment(record::Record)::BioAlignments.Alignment
|
function alignment(record::Record)::BioAlignments.Alignment
|
||||||
checkfilled(record)
|
if ismapped(record)
|
||||||
if !ismapped(record)
|
return BioAlignments.Alignment(cigar(record), 1, position(record))
|
||||||
|
end
|
||||||
|
|
||||||
return BioAlignments.Alignment(BioAlignments.AlignmentAnchor[])
|
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))
|
|
||||||
end
|
|
||||||
return BioAlignments.Alignment(anchors)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
function hasalignment(record::Record)
|
function hasalignment(record::Record)
|
||||||
|
|
|
@ -79,10 +79,10 @@
|
||||||
@test BAM.flag(record) === UInt16(16)
|
@test BAM.flag(record) === UInt16(16)
|
||||||
@test BAM.cigar(record) == "27M1D73M"
|
@test BAM.cigar(record) == "27M1D73M"
|
||||||
@test BAM.alignment(record) == Alignment([
|
@test BAM.alignment(record) == Alignment([
|
||||||
AlignmentAnchor( 0, 1, OP_START),
|
AlignmentAnchor( 0, 1, 0, OP_START),
|
||||||
AlignmentAnchor( 27, 28, OP_MATCH),
|
AlignmentAnchor( 27, 28, 27, OP_MATCH),
|
||||||
AlignmentAnchor( 27, 29, OP_DELETE),
|
AlignmentAnchor( 27, 29, 28, OP_DELETE),
|
||||||
AlignmentAnchor(100, 102, OP_MATCH)])
|
AlignmentAnchor(100, 102, 101, OP_MATCH)])
|
||||||
@test record["XG"] == 1
|
@test record["XG"] == 1
|
||||||
@test record["XM"] == 5
|
@test record["XM"] == 5
|
||||||
@test record["XN"] == 0
|
@test record["XN"] == 0
|
||||||
|
|
|
@ -104,10 +104,10 @@
|
||||||
@test SAM.flag(record) == 16
|
@test SAM.flag(record) == 16
|
||||||
@test SAM.cigar(record) == "27M1D73M"
|
@test SAM.cigar(record) == "27M1D73M"
|
||||||
@test SAM.alignment(record) == Alignment([
|
@test SAM.alignment(record) == Alignment([
|
||||||
AlignmentAnchor( 0, 1, OP_START),
|
AlignmentAnchor( 0, 1, 0, OP_START),
|
||||||
AlignmentAnchor( 27, 28, OP_MATCH),
|
AlignmentAnchor( 27, 28, 27, OP_MATCH),
|
||||||
AlignmentAnchor( 27, 29, OP_DELETE),
|
AlignmentAnchor( 27, 29, 28, OP_DELETE),
|
||||||
AlignmentAnchor(100, 102, OP_MATCH)])
|
AlignmentAnchor(100, 102, 101, OP_MATCH)])
|
||||||
@test record["XG"] == 1
|
@test record["XG"] == 1
|
||||||
@test record["XM"] == 5
|
@test record["XM"] == 5
|
||||||
@test record["XN"] == 0
|
@test record["XN"] == 0
|
||||||
|
|
Loading…
Reference in a new issue