|
2 | 2 |
|
3 | 3 | from fgpyo.sam import Cigar
|
4 | 4 | from fgpyo.sam import SupplementaryAlignment
|
| 5 | +from fgpyo.sam.builder import SamBuilder |
5 | 6 |
|
6 | 7 |
|
7 | 8 | def test_supplementary_alignment() -> None:
|
@@ -48,3 +49,23 @@ def test_format_supplementary_alignment() -> None:
|
48 | 49 | for sa_string in ["chr1,123,-,100M50S,60,4", "chr1,123,+,100M50S,60,3"]:
|
49 | 50 | sa = SupplementaryAlignment.parse(sa_string)
|
50 | 51 | assert str(sa) == sa_string
|
| 52 | + |
| 53 | + |
| 54 | +def test_from_read() -> None: |
| 55 | + """Test that we can construct a SupplementaryAlignment from an AlignedSegment.""" |
| 56 | + |
| 57 | + builder = SamBuilder() |
| 58 | + |
| 59 | + read = builder.add_single() |
| 60 | + assert SupplementaryAlignment.from_read(read) == [] |
| 61 | + |
| 62 | + s1 = "chr1,123,+,50S100M,60,0" |
| 63 | + s2 = "chr2,456,-,75S75M,60,1" |
| 64 | + sa1 = SupplementaryAlignment("chr1", 122, True, Cigar.from_cigarstring("50S100M"), 60, 0) |
| 65 | + sa2 = SupplementaryAlignment("chr2", 455, False, Cigar.from_cigarstring("75S75M"), 60, 1) |
| 66 | + |
| 67 | + read = builder.add_single(attrs={"SA": f"{s1};"}) |
| 68 | + assert SupplementaryAlignment.from_read(read) == [sa1] |
| 69 | + |
| 70 | + read = builder.add_single(attrs={"SA": f"{s1};{s2};"}) |
| 71 | + assert SupplementaryAlignment.from_read(read) == [sa1, sa2] |
0 commit comments