Files
biopython/Tests/test_Align_bed.py
mdehoon e838eb90e6 Generalize the counts attribute of an Alignment (#4924)
* create template

* tests

* tests

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* stockholm

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

---------

Co-authored-by: Michiel de Hoon <mdehoon@tkx288.genome.gsc.riken.jp>
Co-authored-by: Michiel Jan Laurens de Hoon <mdehoon@Michiels-MacBook-Air.local>
2025-02-04 22:45:43 +09:00

9356 lines
474 KiB
Python

# Copyright 2022 by Michiel de Hoon. All rights reserved.
# This code is part of the Biopython distribution and governed by its
# license. Please see the LICENSE file that should have been included
# as part of this package.
"""Tests for Align.bed module."""
import os
import tempfile
import unittest
from io import StringIO
import numpy as np
from Bio import Align
from Bio import SeqIO
from Bio.Align import Alignment
from Bio.Seq import Seq
from Bio.SeqRecord import SeqRecord
class TestAlign_dna_rna(unittest.TestCase):
# The BED file dna_rna.bed was generated using this command:
# pslToBed dna_rna.psl dna_rna.bed
def setUp(self):
data = {}
records = SeqIO.parse("Blat/dna.fa", "fasta")
for record in records:
name, start_end = record.id.split(":")
assert name == "chr3"
start, end = start_end.split("-")
start = int(start)
end = int(end)
sequence = str(record.seq)
assert len(sequence) == end - start
data[start] = sequence
self.dna = Seq(data, length=198295559) # hg38 chr3
records = SeqIO.parse("Blat/rna.fa", "fasta")
self.rna = {record.id: record.seq for record in records}
def check_alignments(self, alignments):
alignment = next(alignments)
self.assertEqual(alignment.score, 1000)
self.assertEqual(alignment.shape, (2, 1711))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertGreater(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr3")
self.assertEqual(alignment.query.id, "NR_046654.1")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[42530895, 42530958, 42532020,
42532095, 42532563, 42532606],
[ 181, 118, 118,
43, 43, 0]])
# fmt: on
)
)
alignment.target.seq = self.dna
alignment.query.seq = self.rna[alignment.query.id]
self.assertTrue(
np.array_equal(
alignment.substitutions,
# fmt: off
np.array([[36., 0., 0., 0., 0., 0., 0., 0.],
[ 0., 40., 0., 0., 0., 0., 0., 0.],
[ 0., 0., 57., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 42., 0., 0., 0., 0.],
[ 2., 0., 0., 0., 0., 0., 0., 0.],
[ 0., 1., 0., 0., 0., 0., 0., 0.],
[ 0., 0., 3., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 0., 0., 0.],
])
)
)
self.assertEqual(alignment.substitutions.alphabet, "ACGTacgt")
self.assertEqual(
str(alignment),
"""\
chr3 42530895 CGGAAGTACTTCTGGGGGTACATACTCATCGGCTGGGGTATGGTACCAGGGAGGGCTTCC
0 ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
NR_046654 181 CGGAAGTACTTCTGGGGGTACATACTCATCGGCTGGGGTATGGTACCAGGGAGGGCTTCC
chr3 42530955 AGGCTGGGGACAGAGGGGGCAAGGCCTGGAGAACTCCCTAGGGGGAGGGTGCCAACCCAG
60 |||---------------------------------------------------------
NR_046654 121 AGG---------------------------------------------------------
chr3 42531015 CTTGCAGTCCTACGTCTTGCTTAGCTGCAGGTCCTGCCTGCAAGGATATCAGCCAAGGGT
120 ------------------------------------------------------------
NR_046654 118 ------------------------------------------------------------
chr3 42531075 CAAGAAAGTCCTCAAAATGTCTGATCCCAGGACAAGTCCCTCAGGTTGCAGCTGCACCTA
180 ------------------------------------------------------------
NR_046654 118 ------------------------------------------------------------
chr3 42531135 GGGCTGACCTGTGGGACAGATTTTGTGAACATCTTTCCATTTCCCTTTAGTTCCCGAAAT
240 ------------------------------------------------------------
NR_046654 118 ------------------------------------------------------------
chr3 42531195 ACAcagggccactgctaatctataaagggcctctgtcacaattagaaagagaatgtccgt
300 ------------------------------------------------------------
NR_046654 118 ------------------------------------------------------------
chr3 42531255 ctaggtagacacagcccttcaggcatacagcttCACCCCCTCAGTGGAGCATCCCTCCGT
360 ------------------------------------------------------------
NR_046654 118 ------------------------------------------------------------
chr3 42531315 GGTGAACAACCTATGCAACCAAAGACAGCAGACTGACAACCCACCCTTTtctctctccct
420 ------------------------------------------------------------
NR_046654 118 ------------------------------------------------------------
chr3 42531375 ccctctccctgcttttctccaaaatctctccctcatgccctctacccctgcttcctgtgc
480 ------------------------------------------------------------
NR_046654 118 ------------------------------------------------------------
chr3 42531435 cctctctgctctttcactctccctGGGCCTGACAGGGGTACCCAGCACATTCACCATGGT
540 ------------------------------------------------------------
NR_046654 118 ------------------------------------------------------------
chr3 42531495 GTGGACCATCGCCAGGATCCATTTTGAGGATTATGGGTGAGCTGCTGCCCCACACACTCC
600 ------------------------------------------------------------
NR_046654 118 ------------------------------------------------------------
chr3 42531555 CCCGGCCGCCATCACTTGGGCAGGCCCCCTGGGTGGGATGATAATGCCATCTGGCCTTGG
660 ------------------------------------------------------------
NR_046654 118 ------------------------------------------------------------
chr3 42531615 TGAGTGGACAAAAACCACAGCTCTCGGGCCAGAGGGGAGGCTGGAGGAGGACCTGGGGAG
720 ------------------------------------------------------------
NR_046654 118 ------------------------------------------------------------
chr3 42531675 CAACAGACTCTGGGCCCGGGGTTGCTAAAGTGCTCAGGAGCAGAGCTGGGGACAACTGGG
780 ------------------------------------------------------------
NR_046654 118 ------------------------------------------------------------
chr3 42531735 GGAGGTGCTGCTGAGTCTCTCTCTGGCTGAGGACAATCCCTCTCATTCCTCCCCACGGTC
840 ------------------------------------------------------------
NR_046654 118 ------------------------------------------------------------
chr3 42531795 TGCTCAGGTGCTGGGACACCATCAACTCCTCACTGTGGTGGATCATAAAGGGCCCCATCC
900 ------------------------------------------------------------
NR_046654 118 ------------------------------------------------------------
chr3 42531855 TCACCTCCATCTTGGTAAGATaccctcccaccacctagagatggggaaacaggcccaaag
960 ------------------------------------------------------------
NR_046654 118 ------------------------------------------------------------
chr3 42531915 ggcaggcaacttagcccaaggtcacatgggaaattagtatctaggtcagaactgaaacgt
1020 ------------------------------------------------------------
NR_046654 118 ------------------------------------------------------------
chr3 42531975 agcttcctaatgcccaatgcaggatcatccccacccctgtcctaccagTTCTTCCTTGAG
1080 ---------------------------------------------...||||||||||||
NR_046654 118 ---------------------------------------------CAGTTCTTCCTTGAG
chr3 42532035 CGTAAGCGGATTGGGAGCACAGTCCTTAGGGATTTGAAGGAGGTAGAGTTCCCGGATGAC
1140 ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
NR_046654 103 CGTAAGCGGATTGGGAGCACAGTCCTTAGGGATTTGAAGGAGGTAGAGTTCCCGGATGAC
chr3 42532095 CTGCCCAAAGGGGAAATGCCAGAGGAGAGGTAAGATAGAGAGAGGGGCAGCAGGACCCTG
1200 ------------------------------------------------------------
NR_046654 43 ------------------------------------------------------------
chr3 42532155 GGAAAGAAGACAGGCCAGCAGTCAAGGGGCCTGAACACCTCAGCCTTCCCGCTCTGACTG
1260 ------------------------------------------------------------
NR_046654 43 ------------------------------------------------------------
chr3 42532215 CCCGAACTCGGGTCCCCACCCACTAGGTAAACTTCATCCTGTTTATTTGCATCATCCGAA
1320 ------------------------------------------------------------
NR_046654 43 ------------------------------------------------------------
chr3 42532275 TCCTGCTTCAGAAACTGCGGCCCCCAGATATCAGGAAGAGTGACAGCAGTCCATACTCGT
1380 ------------------------------------------------------------
NR_046654 43 ------------------------------------------------------------
chr3 42532335 GAGTGTGGGCCTAGTGCCTCAGCCCCCAGTACCTCCATCCCCAGTCCTCAAATCATCCCA
1440 ------------------------------------------------------------
NR_046654 43 ------------------------------------------------------------
chr3 42532395 CATCTCCTTGAAGTCCTCCCACCCCAAACATCCAGAGTCACCAAAGAGCCACATTGTTCT
1500 ------------------------------------------------------------
NR_046654 43 ------------------------------------------------------------
chr3 42532455 TTCCCACCTCCACCATGGCCTGGCTcagcccaccaccatcccctgctccagccccaccct
1560 ------------------------------------------------------------
NR_046654 43 ------------------------------------------------------------
chr3 42532515 caCCAGGCTGCACTCAGAGCCCTGCATGCTTCTCCTGCCCACACTCACCTAGCATCCTTC
1620 ------------------------------------------------||||||||||||
NR_046654 43 ------------------------------------------------CTAGCATCCTTC
chr3 42532575 CCAGGTATGCATCTGCTGCCAAGCCAGGgag 42532606
1680 ||||||||||||||||||||||||||||... 1711
NR_046654 31 CCAGGTATGCATCTGCTGCCAAGCCAGGGAG 0
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr3 42530895 42532606 NR_046654.1 1000 - 42530895 42532606 0 3 63,75,43, 0,1125,1668,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 1530)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 1530)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 1530)
self.assertEqual(counts.gaps, 1530)
self.assertEqual(counts.aligned, 181)
self.assertEqual(counts.identities, 175)
self.assertEqual(counts.mismatches, 6)
alignment = next(alignments)
self.assertEqual(alignment.score, 978)
self.assertEqual(alignment.shape, (2, 1711))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertGreater(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr3")
self.assertEqual(alignment.query.id, "NR_046654.1_modified")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[42530895, 42530922, 42530958, 42532020, 42532037,
42532039, 42532095, 42532563, 42532606],
[ 179, 152, 116, 116, 99,
99, 43, 43, 0]])
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr3 42530895 ????????????????????????????????????????????????????????????
0 ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
NR_046654 179 ????????????????????????????????????????????????????????????
chr3 42530955 ????????????????????????????????????????????????????????????
60 |||---------------------------------------------------------
NR_046654 119 ???---------------------------------------------------------
chr3 42531015 ????????????????????????????????????????????????????????????
120 ------------------------------------------------------------
NR_046654 116 ------------------------------------------------------------
chr3 42531075 ????????????????????????????????????????????????????????????
180 ------------------------------------------------------------
NR_046654 116 ------------------------------------------------------------
chr3 42531135 ????????????????????????????????????????????????????????????
240 ------------------------------------------------------------
NR_046654 116 ------------------------------------------------------------
chr3 42531195 ????????????????????????????????????????????????????????????
300 ------------------------------------------------------------
NR_046654 116 ------------------------------------------------------------
chr3 42531255 ????????????????????????????????????????????????????????????
360 ------------------------------------------------------------
NR_046654 116 ------------------------------------------------------------
chr3 42531315 ????????????????????????????????????????????????????????????
420 ------------------------------------------------------------
NR_046654 116 ------------------------------------------------------------
chr3 42531375 ????????????????????????????????????????????????????????????
480 ------------------------------------------------------------
NR_046654 116 ------------------------------------------------------------
chr3 42531435 ????????????????????????????????????????????????????????????
540 ------------------------------------------------------------
NR_046654 116 ------------------------------------------------------------
chr3 42531495 ????????????????????????????????????????????????????????????
600 ------------------------------------------------------------
NR_046654 116 ------------------------------------------------------------
chr3 42531555 ????????????????????????????????????????????????????????????
660 ------------------------------------------------------------
NR_046654 116 ------------------------------------------------------------
chr3 42531615 ????????????????????????????????????????????????????????????
720 ------------------------------------------------------------
NR_046654 116 ------------------------------------------------------------
chr3 42531675 ????????????????????????????????????????????????????????????
780 ------------------------------------------------------------
NR_046654 116 ------------------------------------------------------------
chr3 42531735 ????????????????????????????????????????????????????????????
840 ------------------------------------------------------------
NR_046654 116 ------------------------------------------------------------
chr3 42531795 ????????????????????????????????????????????????????????????
900 ------------------------------------------------------------
NR_046654 116 ------------------------------------------------------------
chr3 42531855 ????????????????????????????????????????????????????????????
960 ------------------------------------------------------------
NR_046654 116 ------------------------------------------------------------
chr3 42531915 ????????????????????????????????????????????????????????????
1020 ------------------------------------------------------------
NR_046654 116 ------------------------------------------------------------
chr3 42531975 ????????????????????????????????????????????????????????????
1080 ---------------------------------------------|||||||||||||||
NR_046654 116 ---------------------------------------------???????????????
chr3 42532035 ????????????????????????????????????????????????????????????
1140 ||--||||||||||||||||||||||||||||||||||||||||||||||||||||||||
NR_046654 101 ??--????????????????????????????????????????????????????????
chr3 42532095 ????????????????????????????????????????????????????????????
1200 ------------------------------------------------------------
NR_046654 43 ------------------------------------------------------------
chr3 42532155 ????????????????????????????????????????????????????????????
1260 ------------------------------------------------------------
NR_046654 43 ------------------------------------------------------------
chr3 42532215 ????????????????????????????????????????????????????????????
1320 ------------------------------------------------------------
NR_046654 43 ------------------------------------------------------------
chr3 42532275 ????????????????????????????????????????????????????????????
1380 ------------------------------------------------------------
NR_046654 43 ------------------------------------------------------------
chr3 42532335 ????????????????????????????????????????????????????????????
1440 ------------------------------------------------------------
NR_046654 43 ------------------------------------------------------------
chr3 42532395 ????????????????????????????????????????????????????????????
1500 ------------------------------------------------------------
NR_046654 43 ------------------------------------------------------------
chr3 42532455 ????????????????????????????????????????????????????????????
1560 ------------------------------------------------------------
NR_046654 43 ------------------------------------------------------------
chr3 42532515 ????????????????????????????????????????????????????????????
1620 ------------------------------------------------||||||||||||
NR_046654 43 ------------------------------------------------????????????
chr3 42532575 ??????????????????????????????? 42532606
1680 ||||||||||||||||||||||||||||||| 1711
NR_046654 31 ??????????????????????????????? 0
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr3 42530895 42532606 NR_046654.1_modified 978 - 42530895 42532606 0 5 27,36,17,56,43, 0,27,1125,1144,1668,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 1532)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 1532)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 1532)
self.assertEqual(counts.gaps, 1532)
self.assertEqual(counts.aligned, 179)
alignment = next(alignments)
self.assertEqual(alignment.score, 1000)
self.assertEqual(alignment.shape, (2, 5407))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertLess(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr3")
self.assertEqual(alignment.query.id, "NR_111921.1")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[48663767, 48663813, 48665640,
48665722, 48669098, 48669174],
[ 0, 46, 46,
128, 128, 204]])
# fmt: on
)
)
alignment.target.seq = self.dna
alignment.query.seq = self.rna[alignment.query.id]
self.assertTrue(
np.array_equal(
alignment.substitutions,
# fmt: off
np.array([[53., 0., 0., 0., 0., 0., 0., 0.],
[ 0., 35., 0., 0., 0., 0., 0., 0.],
[ 0., 0., 50., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 27., 0., 0., 0., 0.],
[ 9., 0., 0., 0., 0., 0., 0., 0.],
[ 0., 7., 0., 0., 0., 0., 0., 0.],
[ 0., 0., 16., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 7., 0., 0., 0., 0.],
])
)
)
self.assertEqual(alignment.substitutions.alphabet, "ACGTacgt")
self.assertEqual(
str(alignment),
"""\
chr3 48663767 CACGAGAGGAGCGGAGGCGAGGGGTGAACGCGGAGCACTCCAATCGGTCAGTCATTGTTT
0 ||||||||||||||||||||||||||||||||||||||||||||||--------------
NR_111921 0 CACGAGAGGAGCGGAGGCGAGGGGTGAACGCGGAGCACTCCAATCG--------------
chr3 48663827 CTATTGGCACAATGGGAGGCCCCGCCCCTCACGGCGGACTCATCGCATGGGGGAGGGGGC
60 ------------------------------------------------------------
NR_111921 46 ------------------------------------------------------------
chr3 48663887 TCCGCGGGTTGCCGGCTAACCGTGAGAGAGTCCGGGAGGTACACTATACGGACCGGCCTC
120 ------------------------------------------------------------
NR_111921 46 ------------------------------------------------------------
chr3 48663947 CAAAGGCGGAATCGATAACGAGCTGCAGCGCCGGGTGCAGAGGACGCGGGCATCCCGAAG
180 ------------------------------------------------------------
NR_111921 46 ------------------------------------------------------------
chr3 48664007 CCCAGGAAGAGGTCAGGGCCGGGACCCCAGAACGCTCCACAGGGTGCGGCTCCCGCGATG
240 ------------------------------------------------------------
NR_111921 46 ------------------------------------------------------------
chr3 48664067 GGGTGGATCCTGGTTCTAACAGGCGAGGAACTCCTGGCCAAGGCCTCTGGCCCGCCCCGA
300 ------------------------------------------------------------
NR_111921 46 ------------------------------------------------------------
chr3 48664127 ACGGTCCCTATGACATCACCATCAACCAATCAGTCGGCGCATCCTTTCGCCCCTTGACTG
360 ------------------------------------------------------------
NR_111921 46 ------------------------------------------------------------
chr3 48664187 CTCCGCTTCCGGGAGGCGGGGCTTCTGCGGGTTCCACCTCCCGAGCGCCCCTTGTGGCTA
420 ------------------------------------------------------------
NR_111921 46 ------------------------------------------------------------
chr3 48664247 CCAAGGTCAGGCAACAGGTGTCCAGTTGTTCCCTCTCCTGTCTACGAATCTGAGGACCTC
480 ------------------------------------------------------------
NR_111921 46 ------------------------------------------------------------
chr3 48664307 CCCAGGATCAGAGCTCTGGGCCTGATACACGGCCGGGGTTCCTACGGGTTTGTGAGTGGG
540 ------------------------------------------------------------
NR_111921 46 ------------------------------------------------------------
chr3 48664367 GGTGGAAGATCTGCAGAGGCACTTAGGGCTGAACTCCTTTGAATGGGAGCCAATCGGTGC
600 ------------------------------------------------------------
NR_111921 46 ------------------------------------------------------------
chr3 48664427 AGGGGCTGGAGGAGCGAGTCCCCCAAAGTAGttttatttatctatttagagacaaggtct
660 ------------------------------------------------------------
NR_111921 46 ------------------------------------------------------------
chr3 48664487 cactctttcggagtgcagtggtgatcacagctcaccgtagcctcgaactccccaggcgat
720 ------------------------------------------------------------
NR_111921 46 ------------------------------------------------------------
chr3 48664547 tctctcacctcagcctcccgagtagctgggactacgggtacatgtcatcacacttggcta
780 ------------------------------------------------------------
NR_111921 46 ------------------------------------------------------------
chr3 48664607 atttttgcattttttatagagacagggtctcaccatgtaggccagattagtcttgaactc
840 ------------------------------------------------------------
NR_111921 46 ------------------------------------------------------------
chr3 48664667 ctgggctcaagcaatccgcccatcttggcctcccaaagtgctgggattataggtgtgagc
900 ------------------------------------------------------------
NR_111921 46 ------------------------------------------------------------
chr3 48664727 caccgcgcccggcAACCCAGAAGTGGTTTTGACAGCAccagcgctttctgtgtccacaat
960 ------------------------------------------------------------
NR_111921 46 ------------------------------------------------------------
chr3 48664787 ctagtgagtagagggcacaaaacctgacaccacggaggcagacaggcaggggctctgccg
1020 ------------------------------------------------------------
NR_111921 46 ------------------------------------------------------------
chr3 48664847 gggaagggtgttggagtcccaaaggaggcgtctgagtcaccttcgcaacctgggacgcct
1080 ------------------------------------------------------------
NR_111921 46 ------------------------------------------------------------
chr3 48664907 tcttgcataagatgcctgagcagtgccttgaatgaccaaggggagatccgcatctgcaaa
1140 ------------------------------------------------------------
NR_111921 46 ------------------------------------------------------------
chr3 48664967 ggaagggcagggagggatagggattgggggtgggcatcctaggtcttggagactgtgtgg
1200 ------------------------------------------------------------
NR_111921 46 ------------------------------------------------------------
chr3 48665027 gcaaatgtgcagagacataaagggactatggctgagggaaatcaagCCCTGCCCTCTCAC
1260 ------------------------------------------------------------
NR_111921 46 ------------------------------------------------------------
chr3 48665087 CAATAGGGCTGGCGCTGGTCCCAGCTAACACTCCTTTTGGAGAGCAAAGCTCCTCACTTC
1320 ------------------------------------------------------------
NR_111921 46 ------------------------------------------------------------
chr3 48665147 TGAGTAGTGAGATTGATTGCGGATCACTCTCCATGTTGCTGCCTGCTGTGTGTCATCCCA
1380 ------------------------------------------------------------
NR_111921 46 ------------------------------------------------------------
chr3 48665207 CTGTCATCCTCCCTTTGTGGCTGTTCTGTGGAGCCCCTCTCCCTCAATCTGCACTCACCT
1440 ------------------------------------------------------------
NR_111921 46 ------------------------------------------------------------
chr3 48665267 CTATGCCCCAGCCCCATTGGCAGCTCCTAATGCACTCCCGGTaaaaaaaaaaaaacaaaa
1500 ------------------------------------------------------------
NR_111921 46 ------------------------------------------------------------
chr3 48665327 aCCAGATGTTAGTGATAGTGGTGGTAGTTCTTCTCTCCACCTCCAAATCTTGCCCTTGCC
1560 ------------------------------------------------------------
NR_111921 46 ------------------------------------------------------------
chr3 48665387 TCCTAATAAGACCCCTATGTGGTTTAACCTCAttttttttttttttttttttttttgaga
1620 ------------------------------------------------------------
NR_111921 46 ------------------------------------------------------------
chr3 48665447 tggagtttcactctgtcacccaggctggagtgaagtggtgtgatGGGGCTTCACCATGTg
1680 ------------------------------------------------------------
NR_111921 46 ------------------------------------------------------------
chr3 48665507 atggggcttcaccatgttggccaggctggtatcaaactcctgacctctagtgatctgccc
1740 ------------------------------------------------------------
NR_111921 46 ------------------------------------------------------------
chr3 48665567 gcctcagcctcccaaagtgctgggattaccggcatgaggcaccgtgcccagccTATCCTC
1800 ------------------------------------------------------------
NR_111921 46 ------------------------------------------------------------
chr3 48665627 CTTCTCTTATCAGCTCCCAACTAGAGGTCCACCCAGGACCCAGAGACCTGGATTTGAGGC
1860 -------------|||||||||||||||||||||||||||||||||||||||||||||||
NR_111921 46 -------------CTCCCAACTAGAGGTCCACCCAGGACCCAGAGACCTGGATTTGAGGC
chr3 48665687 TGCTGGGCGGCAGATGGAGCGATCAGAAGACCAGGGTAAGGGTGTGGCAGATACTGCCAC
1920 |||||||||||||||||||||||||||||||||||-------------------------
NR_111921 93 TGCTGGGCGGCAGATGGAGCGATCAGAAGACCAGG-------------------------
chr3 48665747 TAACACTTCTCAGCCTTTCCTTCTCCTGCCTTTTCCACCCCACCCTGTGTTTGTCTACTC
1980 ------------------------------------------------------------
NR_111921 128 ------------------------------------------------------------
chr3 48665807 CCAGCCAGGTGTACCTTTCCAGGGGAAGACCTGGCCAACCTGTCCAGCTCAATTAtccag
2040 ------------------------------------------------------------
NR_111921 128 ------------------------------------------------------------
chr3 48665867 cagttctttgacctcactgagatctcgagtccattgttcatcacctcagctattgacctg
2100 ------------------------------------------------------------
NR_111921 128 ------------------------------------------------------------
chr3 48665927 tgtcattagccttatagagttcagtgccacggaaactccctgccctgttctttttctttt
2160 ------------------------------------------------------------
NR_111921 128 ------------------------------------------------------------
chr3 48665987 tctttttttttttttttttgagacagagccttgctctgtcgcccaggctggagtgcagtg
2220 ------------------------------------------------------------
NR_111921 128 ------------------------------------------------------------
chr3 48666047 gcgcgatctcggctcactgcaagctctgcctcccaggttcacaccattctcctgactcag
2280 ------------------------------------------------------------
NR_111921 128 ------------------------------------------------------------
chr3 48666107 cctcccgagtagctgggactacaggcgtccaccaccatgcccagctaatttttttttttg
2340 ------------------------------------------------------------
NR_111921 128 ------------------------------------------------------------
chr3 48666167 tatttttagtagagacggcgtttcaccgtgttagccaggctggtctcgatctcctgacct
2400 ------------------------------------------------------------
NR_111921 128 ------------------------------------------------------------
chr3 48666227 tgtgatgctcccgcctcggcctcccaaagtgctgggattacaggcatgagccattgtgcc
2460 ------------------------------------------------------------
NR_111921 128 ------------------------------------------------------------
chr3 48666287 cggcctgccctgttcttcttagacaaacttgctgggctaaaatctaaccccgttaaaata
2520 ------------------------------------------------------------
NR_111921 128 ------------------------------------------------------------
chr3 48666347 gactatttacgtattgtttgcctctagcgcagcagaacattgctggagaaaaacaaacaa
2580 ------------------------------------------------------------
NR_111921 128 ------------------------------------------------------------
chr3 48666407 ccgtgctaattggtctcattttatattcatgaccacaagcctcagtattatatcggaggg
2640 ------------------------------------------------------------
NR_111921 128 ------------------------------------------------------------
chr3 48666467 cctatccagtgcagtagggcaagaaaaataataagttatgaagattggaagggaaaaaaa
2700 ------------------------------------------------------------
NR_111921 128 ------------------------------------------------------------
chr3 48666527 actaattcacaagcagtaggattgtatatgtaaaaatttcaaaggaacctataggtaagt
2760 ------------------------------------------------------------
NR_111921 128 ------------------------------------------------------------
chr3 48666587 tgttagaatgagttcagcaaagttgttggacacaagatcaatatataaaaatcagttgca
2820 ------------------------------------------------------------
NR_111921 128 ------------------------------------------------------------
chr3 48666647 atttctatatgtcaccaacagttagaaaataaatttcttgcctgggcatgttggctcaag
2880 ------------------------------------------------------------
NR_111921 128 ------------------------------------------------------------
chr3 48666707 cctgtaatcccagcactttgggtggccaaggcgggcagatcacctgaggtcaggagtttg
2940 ------------------------------------------------------------
NR_111921 128 ------------------------------------------------------------
chr3 48666767 agaccagtttggccaacatggtgaaatcccgtctctactaaaaatacagaaattagccgg
3000 ------------------------------------------------------------
NR_111921 128 ------------------------------------------------------------
chr3 48666827 gcgtggtggtgggcacctgtagtcccagctactgaggaggctgaggcaggagaatcactt
3060 ------------------------------------------------------------
NR_111921 128 ------------------------------------------------------------
chr3 48666887 gaacctgggaggcagaggttgcagtgaacgagaaaaaaaaattttttttcttaaaaacaa
3120 ------------------------------------------------------------
NR_111921 128 ------------------------------------------------------------
chr3 48666947 tgatgtttacaatagcatcaagtaatatcaaatgctgaggaataaacctaatgaaagatg
3180 ------------------------------------------------------------
NR_111921 128 ------------------------------------------------------------
chr3 48667007 tgcaaagactacatacacacatacaaaaaaactataaaacattattgagggaaataaaga
3240 ------------------------------------------------------------
NR_111921 128 ------------------------------------------------------------
chr3 48667067 cataggcctggcattggtggctcatgcctgaaatctcagcactttggagggccaaggtgg
3300 ------------------------------------------------------------
NR_111921 128 ------------------------------------------------------------
chr3 48667127 gtggatcatttgaggtcaggagttagagatcagtccggccaacatggtgaaacctcatct
3360 ------------------------------------------------------------
NR_111921 128 ------------------------------------------------------------
chr3 48667187 ctactaaaaatacaaaaaaattagcttggccaggtgcagtggctcacacctgtaatccca
3420 ------------------------------------------------------------
NR_111921 128 ------------------------------------------------------------
chr3 48667247 gcactttgggaggctgaggcgggcggatcatgaggtcaggagatcgagaccatcctggct
3480 ------------------------------------------------------------
NR_111921 128 ------------------------------------------------------------
chr3 48667307 aacacggtgaaaccctgtctctactaaaaatacaaaaaaaaattagccgggcctgatggc
3540 ------------------------------------------------------------
NR_111921 128 ------------------------------------------------------------
chr3 48667367 gggcgcccgtagtcccagctactcgggaggctgaggtagcagaatggcgtgaacctggga
3600 ------------------------------------------------------------
NR_111921 128 ------------------------------------------------------------
chr3 48667427 ggtgcagcttgcagtgagcctaaattgcgccactgcactccagcctgggtaacagagcga
3660 ------------------------------------------------------------
NR_111921 128 ------------------------------------------------------------
chr3 48667487 gactccgtttcaaaaaaaaaaaaaaaaattagctgggcatgctgttgtgcacctgcaatc
3720 ------------------------------------------------------------
NR_111921 128 ------------------------------------------------------------
chr3 48667547 ccagctactctggaggatgaggcagaagtgcctgaacctgggacacagaggttgcagtga
3780 ------------------------------------------------------------
NR_111921 128 ------------------------------------------------------------
chr3 48667607 gccaagatcatgccattgcactccagcctggacaacacagccagacgctatctgaaaaaa
3840 ------------------------------------------------------------
NR_111921 128 ------------------------------------------------------------
chr3 48667667 aaaaaaaaaaaaaaagtaaaaaaaatgagaaataaagacataaataaagtgaaaaattgt
3900 ------------------------------------------------------------
NR_111921 128 ------------------------------------------------------------
chr3 48667727 tccaatattggaaaagtcaatattataaaggtgccaattttcccaaattgatatatggat
3960 ------------------------------------------------------------
NR_111921 128 ------------------------------------------------------------
chr3 48667787 tcgatgcaacttcagttaaaaatcccactaaattttggctgggtgcggtggctcacacct
4020 ------------------------------------------------------------
NR_111921 128 ------------------------------------------------------------
chr3 48667847 gtaatcccagcactttgggaggctgaggcgggcggatcacaaggtcaggagatcgagacc
4080 ------------------------------------------------------------
NR_111921 128 ------------------------------------------------------------
chr3 48667907 atcttggctaacatggtgaaaccgtctctactaaaaatacaaaagttagccgggtgtggt
4140 ------------------------------------------------------------
NR_111921 128 ------------------------------------------------------------
chr3 48667967 ggcgggcacctgtagtcccagctacttgggaggctgagacagaatggcgtgaacctgggg
4200 ------------------------------------------------------------
NR_111921 128 ------------------------------------------------------------
chr3 48668027 aggcggagcttgcagtgagccaagttgacgccactgcactccagcctgggcgacagagca
4260 ------------------------------------------------------------
NR_111921 128 ------------------------------------------------------------
chr3 48668087 agactctgtctcaaaaaaaaaaaaaaaaaaaTCCCACTAGATTTTGTGTGTGTGTAAACT
4320 ------------------------------------------------------------
NR_111921 128 ------------------------------------------------------------
chr3 48668147 GACAAACTAGATTTAGcagcctgagcaacacagcaaaaccccatctctacaaaaaataca
4380 ------------------------------------------------------------
NR_111921 128 ------------------------------------------------------------
chr3 48668207 aaaattttgcacatgcctgtatagtcccagctacttgggaggctgaagtgggaggatcat
4440 ------------------------------------------------------------
NR_111921 128 ------------------------------------------------------------
chr3 48668267 gtgagctctggggaggtcgaggctgtagtgagctatgatcacatgctgcactctagcctg
4500 ------------------------------------------------------------
NR_111921 128 ------------------------------------------------------------
chr3 48668327 ggcaacagagcaagagaccctgtatctaaaaaaagaatgaaaattaaaaaataaaaaGAa
4560 ------------------------------------------------------------
NR_111921 128 ------------------------------------------------------------
chr3 48668387 accaagattgtgtggtactggtacgaggataggaagactaaaggaacgaaatccagagac
4620 ------------------------------------------------------------
NR_111921 128 ------------------------------------------------------------
chr3 48668447 aggcctgaagatgtgtggaaacttgaattttgacaagggtgGTTCTTCAGAGCTAACATG
4680 ------------------------------------------------------------
NR_111921 128 ------------------------------------------------------------
chr3 48668507 AAGAAAGGGTTGTTTTCTTTTTTTTGTTTCCCcaggagcaactctattaactgaaagaat
4740 ------------------------------------------------------------
NR_111921 128 ------------------------------------------------------------
chr3 48668567 aggcttttcaataaatgatgctgggtcagttggatatccatatagaaaaaattaaatgag
4800 ------------------------------------------------------------
NR_111921 128 ------------------------------------------------------------
chr3 48668627 atctctatttcacactgcttgcataatcaattccatataaatttgacatctgaaaatata
4860 ------------------------------------------------------------
NR_111921 128 ------------------------------------------------------------
chr3 48668687 cagtttctagaaaacagtatTAAGACCttgttttgttttttgttgttgttgttttttgtt
4920 ------------------------------------------------------------
NR_111921 128 ------------------------------------------------------------
chr3 48668747 ttgttttttgttttttgagacagagtctcgctctgtcgccaggctggaatacagtggtgc
4980 ------------------------------------------------------------
NR_111921 128 ------------------------------------------------------------
chr3 48668807 aaccttggctcactgcaacctctgactccctagttcaagcaattctcctgcctcagcctc
5040 ------------------------------------------------------------
NR_111921 128 ------------------------------------------------------------
chr3 48668867 ccgagtagctgcgattacaggcacatgccaccacgcccagctaatttttgtatttttagt
5100 ------------------------------------------------------------
NR_111921 128 ------------------------------------------------------------
chr3 48668927 agagatgggggtttcaccatgttggccaggatggtctcgatctcctgaccctgtaatccg
5160 ------------------------------------------------------------
NR_111921 128 ------------------------------------------------------------
chr3 48668987 cccacctcggcctcccaaagtgctgggattacaggcgtgagccactgcacctggccAAGA
5220 ------------------------------------------------------------
NR_111921 128 ------------------------------------------------------------
chr3 48669047 GAAGATCTTAAAGGTGACTTTAAGCAAACttttttttttttttttttacagagacgggag
5280 ---------------------------------------------------.........
NR_111921 128 ---------------------------------------------------AGACGGGAG
chr3 48669107 ctggagtgcagtggctgttcacaagcgtgaAAGCAAAGATTAAAAAATTTGTTTTTATAT
5340 ..............................||||||||||||||||||||||||||||||
NR_111921 137 CTGGAGTGCAGTGGCTGTTCACAAGCGTGAAAGCAAAGATTAAAAAATTTGTTTTTATAT
chr3 48669167 TAAAAAA 48669174
5400 ||||||| 5407
NR_111921 197 TAAAAAA 204
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr3 48663767 48669174 NR_111921.1 1000 + 48663767 48669174 0 3 46,82,76, 0,1873,5331,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 5203)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 5203)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 5203)
self.assertEqual(counts.gaps, 5203)
self.assertEqual(counts.aligned, 204)
self.assertEqual(counts.identities, 165)
self.assertEqual(counts.mismatches, 39)
alignment = next(alignments)
self.assertEqual(alignment.score, 972)
self.assertEqual(alignment.shape, (2, 5407))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertLess(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr3")
self.assertEqual(alignment.query.id, "NR_111921.1_modified")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[48663767, 48663795, 48663796, 48663813, 48665640,
48665716, 48665722, 48669098, 48669174],
[ 0, 28, 28, 45, 45,
121, 127, 127, 203]])
# fmt: on
)
)
# The modified RNAs have gaps in their sequence. As this information is
# not stored in a BED file, we cannot calculate the substitution matrix.
self.assertEqual(
str(alignment),
"""\
chr3 48663767 ????????????????????????????????????????????????????????????
0 ||||||||||||||||||||||||||||-|||||||||||||||||--------------
NR_111921 0 ????????????????????????????-?????????????????--------------
chr3 48663827 ????????????????????????????????????????????????????????????
60 ------------------------------------------------------------
NR_111921 45 ------------------------------------------------------------
chr3 48663887 ????????????????????????????????????????????????????????????
120 ------------------------------------------------------------
NR_111921 45 ------------------------------------------------------------
chr3 48663947 ????????????????????????????????????????????????????????????
180 ------------------------------------------------------------
NR_111921 45 ------------------------------------------------------------
chr3 48664007 ????????????????????????????????????????????????????????????
240 ------------------------------------------------------------
NR_111921 45 ------------------------------------------------------------
chr3 48664067 ????????????????????????????????????????????????????????????
300 ------------------------------------------------------------
NR_111921 45 ------------------------------------------------------------
chr3 48664127 ????????????????????????????????????????????????????????????
360 ------------------------------------------------------------
NR_111921 45 ------------------------------------------------------------
chr3 48664187 ????????????????????????????????????????????????????????????
420 ------------------------------------------------------------
NR_111921 45 ------------------------------------------------------------
chr3 48664247 ????????????????????????????????????????????????????????????
480 ------------------------------------------------------------
NR_111921 45 ------------------------------------------------------------
chr3 48664307 ????????????????????????????????????????????????????????????
540 ------------------------------------------------------------
NR_111921 45 ------------------------------------------------------------
chr3 48664367 ????????????????????????????????????????????????????????????
600 ------------------------------------------------------------
NR_111921 45 ------------------------------------------------------------
chr3 48664427 ????????????????????????????????????????????????????????????
660 ------------------------------------------------------------
NR_111921 45 ------------------------------------------------------------
chr3 48664487 ????????????????????????????????????????????????????????????
720 ------------------------------------------------------------
NR_111921 45 ------------------------------------------------------------
chr3 48664547 ????????????????????????????????????????????????????????????
780 ------------------------------------------------------------
NR_111921 45 ------------------------------------------------------------
chr3 48664607 ????????????????????????????????????????????????????????????
840 ------------------------------------------------------------
NR_111921 45 ------------------------------------------------------------
chr3 48664667 ????????????????????????????????????????????????????????????
900 ------------------------------------------------------------
NR_111921 45 ------------------------------------------------------------
chr3 48664727 ????????????????????????????????????????????????????????????
960 ------------------------------------------------------------
NR_111921 45 ------------------------------------------------------------
chr3 48664787 ????????????????????????????????????????????????????????????
1020 ------------------------------------------------------------
NR_111921 45 ------------------------------------------------------------
chr3 48664847 ????????????????????????????????????????????????????????????
1080 ------------------------------------------------------------
NR_111921 45 ------------------------------------------------------------
chr3 48664907 ????????????????????????????????????????????????????????????
1140 ------------------------------------------------------------
NR_111921 45 ------------------------------------------------------------
chr3 48664967 ????????????????????????????????????????????????????????????
1200 ------------------------------------------------------------
NR_111921 45 ------------------------------------------------------------
chr3 48665027 ????????????????????????????????????????????????????????????
1260 ------------------------------------------------------------
NR_111921 45 ------------------------------------------------------------
chr3 48665087 ????????????????????????????????????????????????????????????
1320 ------------------------------------------------------------
NR_111921 45 ------------------------------------------------------------
chr3 48665147 ????????????????????????????????????????????????????????????
1380 ------------------------------------------------------------
NR_111921 45 ------------------------------------------------------------
chr3 48665207 ????????????????????????????????????????????????????????????
1440 ------------------------------------------------------------
NR_111921 45 ------------------------------------------------------------
chr3 48665267 ????????????????????????????????????????????????????????????
1500 ------------------------------------------------------------
NR_111921 45 ------------------------------------------------------------
chr3 48665327 ????????????????????????????????????????????????????????????
1560 ------------------------------------------------------------
NR_111921 45 ------------------------------------------------------------
chr3 48665387 ????????????????????????????????????????????????????????????
1620 ------------------------------------------------------------
NR_111921 45 ------------------------------------------------------------
chr3 48665447 ????????????????????????????????????????????????????????????
1680 ------------------------------------------------------------
NR_111921 45 ------------------------------------------------------------
chr3 48665507 ????????????????????????????????????????????????????????????
1740 ------------------------------------------------------------
NR_111921 45 ------------------------------------------------------------
chr3 48665567 ????????????????????????????????????????????????????????????
1800 ------------------------------------------------------------
NR_111921 45 ------------------------------------------------------------
chr3 48665627 ????????????????????????????????????????????????????????????
1860 -------------|||||||||||||||||||||||||||||||||||||||||||||||
NR_111921 45 -------------???????????????????????????????????????????????
chr3 48665687 ????????????????????????????????????????????????????????????
1920 |||||||||||||||||||||||||||||||||||-------------------------
NR_111921 92 ???????????????????????????????????-------------------------
chr3 48665747 ????????????????????????????????????????????????????????????
1980 ------------------------------------------------------------
NR_111921 127 ------------------------------------------------------------
chr3 48665807 ????????????????????????????????????????????????????????????
2040 ------------------------------------------------------------
NR_111921 127 ------------------------------------------------------------
chr3 48665867 ????????????????????????????????????????????????????????????
2100 ------------------------------------------------------------
NR_111921 127 ------------------------------------------------------------
chr3 48665927 ????????????????????????????????????????????????????????????
2160 ------------------------------------------------------------
NR_111921 127 ------------------------------------------------------------
chr3 48665987 ????????????????????????????????????????????????????????????
2220 ------------------------------------------------------------
NR_111921 127 ------------------------------------------------------------
chr3 48666047 ????????????????????????????????????????????????????????????
2280 ------------------------------------------------------------
NR_111921 127 ------------------------------------------------------------
chr3 48666107 ????????????????????????????????????????????????????????????
2340 ------------------------------------------------------------
NR_111921 127 ------------------------------------------------------------
chr3 48666167 ????????????????????????????????????????????????????????????
2400 ------------------------------------------------------------
NR_111921 127 ------------------------------------------------------------
chr3 48666227 ????????????????????????????????????????????????????????????
2460 ------------------------------------------------------------
NR_111921 127 ------------------------------------------------------------
chr3 48666287 ????????????????????????????????????????????????????????????
2520 ------------------------------------------------------------
NR_111921 127 ------------------------------------------------------------
chr3 48666347 ????????????????????????????????????????????????????????????
2580 ------------------------------------------------------------
NR_111921 127 ------------------------------------------------------------
chr3 48666407 ????????????????????????????????????????????????????????????
2640 ------------------------------------------------------------
NR_111921 127 ------------------------------------------------------------
chr3 48666467 ????????????????????????????????????????????????????????????
2700 ------------------------------------------------------------
NR_111921 127 ------------------------------------------------------------
chr3 48666527 ????????????????????????????????????????????????????????????
2760 ------------------------------------------------------------
NR_111921 127 ------------------------------------------------------------
chr3 48666587 ????????????????????????????????????????????????????????????
2820 ------------------------------------------------------------
NR_111921 127 ------------------------------------------------------------
chr3 48666647 ????????????????????????????????????????????????????????????
2880 ------------------------------------------------------------
NR_111921 127 ------------------------------------------------------------
chr3 48666707 ????????????????????????????????????????????????????????????
2940 ------------------------------------------------------------
NR_111921 127 ------------------------------------------------------------
chr3 48666767 ????????????????????????????????????????????????????????????
3000 ------------------------------------------------------------
NR_111921 127 ------------------------------------------------------------
chr3 48666827 ????????????????????????????????????????????????????????????
3060 ------------------------------------------------------------
NR_111921 127 ------------------------------------------------------------
chr3 48666887 ????????????????????????????????????????????????????????????
3120 ------------------------------------------------------------
NR_111921 127 ------------------------------------------------------------
chr3 48666947 ????????????????????????????????????????????????????????????
3180 ------------------------------------------------------------
NR_111921 127 ------------------------------------------------------------
chr3 48667007 ????????????????????????????????????????????????????????????
3240 ------------------------------------------------------------
NR_111921 127 ------------------------------------------------------------
chr3 48667067 ????????????????????????????????????????????????????????????
3300 ------------------------------------------------------------
NR_111921 127 ------------------------------------------------------------
chr3 48667127 ????????????????????????????????????????????????????????????
3360 ------------------------------------------------------------
NR_111921 127 ------------------------------------------------------------
chr3 48667187 ????????????????????????????????????????????????????????????
3420 ------------------------------------------------------------
NR_111921 127 ------------------------------------------------------------
chr3 48667247 ????????????????????????????????????????????????????????????
3480 ------------------------------------------------------------
NR_111921 127 ------------------------------------------------------------
chr3 48667307 ????????????????????????????????????????????????????????????
3540 ------------------------------------------------------------
NR_111921 127 ------------------------------------------------------------
chr3 48667367 ????????????????????????????????????????????????????????????
3600 ------------------------------------------------------------
NR_111921 127 ------------------------------------------------------------
chr3 48667427 ????????????????????????????????????????????????????????????
3660 ------------------------------------------------------------
NR_111921 127 ------------------------------------------------------------
chr3 48667487 ????????????????????????????????????????????????????????????
3720 ------------------------------------------------------------
NR_111921 127 ------------------------------------------------------------
chr3 48667547 ????????????????????????????????????????????????????????????
3780 ------------------------------------------------------------
NR_111921 127 ------------------------------------------------------------
chr3 48667607 ????????????????????????????????????????????????????????????
3840 ------------------------------------------------------------
NR_111921 127 ------------------------------------------------------------
chr3 48667667 ????????????????????????????????????????????????????????????
3900 ------------------------------------------------------------
NR_111921 127 ------------------------------------------------------------
chr3 48667727 ????????????????????????????????????????????????????????????
3960 ------------------------------------------------------------
NR_111921 127 ------------------------------------------------------------
chr3 48667787 ????????????????????????????????????????????????????????????
4020 ------------------------------------------------------------
NR_111921 127 ------------------------------------------------------------
chr3 48667847 ????????????????????????????????????????????????????????????
4080 ------------------------------------------------------------
NR_111921 127 ------------------------------------------------------------
chr3 48667907 ????????????????????????????????????????????????????????????
4140 ------------------------------------------------------------
NR_111921 127 ------------------------------------------------------------
chr3 48667967 ????????????????????????????????????????????????????????????
4200 ------------------------------------------------------------
NR_111921 127 ------------------------------------------------------------
chr3 48668027 ????????????????????????????????????????????????????????????
4260 ------------------------------------------------------------
NR_111921 127 ------------------------------------------------------------
chr3 48668087 ????????????????????????????????????????????????????????????
4320 ------------------------------------------------------------
NR_111921 127 ------------------------------------------------------------
chr3 48668147 ????????????????????????????????????????????????????????????
4380 ------------------------------------------------------------
NR_111921 127 ------------------------------------------------------------
chr3 48668207 ????????????????????????????????????????????????????????????
4440 ------------------------------------------------------------
NR_111921 127 ------------------------------------------------------------
chr3 48668267 ????????????????????????????????????????????????????????????
4500 ------------------------------------------------------------
NR_111921 127 ------------------------------------------------------------
chr3 48668327 ????????????????????????????????????????????????????????????
4560 ------------------------------------------------------------
NR_111921 127 ------------------------------------------------------------
chr3 48668387 ????????????????????????????????????????????????????????????
4620 ------------------------------------------------------------
NR_111921 127 ------------------------------------------------------------
chr3 48668447 ????????????????????????????????????????????????????????????
4680 ------------------------------------------------------------
NR_111921 127 ------------------------------------------------------------
chr3 48668507 ????????????????????????????????????????????????????????????
4740 ------------------------------------------------------------
NR_111921 127 ------------------------------------------------------------
chr3 48668567 ????????????????????????????????????????????????????????????
4800 ------------------------------------------------------------
NR_111921 127 ------------------------------------------------------------
chr3 48668627 ????????????????????????????????????????????????????????????
4860 ------------------------------------------------------------
NR_111921 127 ------------------------------------------------------------
chr3 48668687 ????????????????????????????????????????????????????????????
4920 ------------------------------------------------------------
NR_111921 127 ------------------------------------------------------------
chr3 48668747 ????????????????????????????????????????????????????????????
4980 ------------------------------------------------------------
NR_111921 127 ------------------------------------------------------------
chr3 48668807 ????????????????????????????????????????????????????????????
5040 ------------------------------------------------------------
NR_111921 127 ------------------------------------------------------------
chr3 48668867 ????????????????????????????????????????????????????????????
5100 ------------------------------------------------------------
NR_111921 127 ------------------------------------------------------------
chr3 48668927 ????????????????????????????????????????????????????????????
5160 ------------------------------------------------------------
NR_111921 127 ------------------------------------------------------------
chr3 48668987 ????????????????????????????????????????????????????????????
5220 ------------------------------------------------------------
NR_111921 127 ------------------------------------------------------------
chr3 48669047 ????????????????????????????????????????????????????????????
5280 ---------------------------------------------------|||||||||
NR_111921 127 ---------------------------------------------------?????????
chr3 48669107 ????????????????????????????????????????????????????????????
5340 ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
NR_111921 136 ????????????????????????????????????????????????????????????
chr3 48669167 ??????? 48669174
5400 ||||||| 5407
NR_111921 196 ??????? 203
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr3 48663767 48669174 NR_111921.1_modified 972 + 48663767 48669174 0 5 28,17,76,6,76, 0,29,1873,1949,5331,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 5204)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 5204)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 5204)
self.assertEqual(counts.gaps, 5204)
self.assertEqual(counts.aligned, 203)
self.assertRaises(StopIteration, next, alignments)
def test_reading(self):
"""Test parsing dna_rna.bed."""
path = "Blat/dna_rna.bed"
alignments = Align.parse(path, "bed")
self.check_alignments(alignments)
alignments = iter(alignments)
self.check_alignments(alignments)
with Align.parse(path, "bed") as alignments:
self.check_alignments(alignments)
with self.assertRaises(AttributeError):
alignments._stream
with Align.parse(path, "bed") as alignments:
pass
with self.assertRaises(AttributeError):
alignments._stream
def test_writing(self):
"""Test writing the alignments in dna_rna.bed."""
path = "Blat/dna_rna.bed"
with open(path) as stream:
original_data = stream.read()
alignments = Align.parse(path, "bed")
stream = StringIO()
n = Align.write(alignments, stream, "bed")
self.assertEqual(n, 4)
stream.seek(0)
written_data = stream.read()
stream.close()
self.assertEqual(original_data, written_data)
class TestAlign_dna(unittest.TestCase):
def test_reading_psl_34_001(self):
"""Test parsing psl_34_001.bed."""
path = "Blat/psl_34_001.bed"
alignments = Align.parse(path, "bed")
alignment = next(alignments)
self.assertEqual(alignment.score, 1000)
self.assertEqual(alignment.shape, (2, 16))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertLess(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr4")
self.assertEqual(alignment.query.id, "hg19_dna")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[61646095, 61646111],
[ 0, 16]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr4 61646095 ???????????????? 61646111
0 |||||||||||||||| 16
hg19_dna 0 ???????????????? 16
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr4 61646095 61646111 hg19_dna 1000 + 61646095 61646111 0 1 16, 0,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 16)
alignment = next(alignments)
self.assertEqual(alignment.score, 1000)
self.assertEqual(alignment.shape, (2, 33))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertLess(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr1")
self.assertEqual(alignment.query.id, "hg19_dna")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[10271783, 10271816],
[ 0, 33]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr1 10271783 ????????????????????????????????? 10271816
0 ||||||||||||||||||||||||||||||||| 33
hg19_dna 0 ????????????????????????????????? 33
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr1 10271783 10271816 hg19_dna 1000 + 10271783 10271816 0 1 33, 0,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 33)
alignment = next(alignments)
self.assertEqual(alignment.score, 1000)
self.assertEqual(alignment.shape, (2, 17))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertGreater(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr2")
self.assertEqual(alignment.query.id, "hg19_dna")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[53575980, 53575997],
[ 17, 0]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr2 53575980 ????????????????? 53575997
0 ||||||||||||||||| 17
hg19_dna 17 ????????????????? 0
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr2 53575980 53575997 hg19_dna 1000 - 53575980 53575997 0 1 17, 0,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 17)
alignment = next(alignments)
self.assertEqual(alignment.score, 854)
self.assertEqual(alignment.shape, (2, 41))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertLess(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr9")
self.assertEqual(alignment.query.id, "hg19_dna")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[85737865, 85737906],
[ 0, 41]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr9 85737865 ????????????????????????????????????????? 85737906
0 ||||||||||||||||||||||||||||||||||||||||| 41
hg19_dna 0 ????????????????????????????????????????? 41
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr9 85737865 85737906 hg19_dna 854 + 85737865 85737906 0 1 41, 0,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 41)
alignment = next(alignments)
self.assertEqual(alignment.score, 1000)
self.assertEqual(alignment.shape, (2, 41))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertLess(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr8")
self.assertEqual(alignment.query.id, "hg19_dna")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[95160479, 95160520],
[ 0, 41]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr8 95160479 ????????????????????????????????????????? 95160520
0 ||||||||||||||||||||||||||||||||||||||||| 41
hg19_dna 0 ????????????????????????????????????????? 41
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr8 95160479 95160520 hg19_dna 1000 + 95160479 95160520 0 1 41, 0,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 41)
alignment = next(alignments)
self.assertEqual(alignment.score, 834)
self.assertEqual(alignment.shape, (2, 36))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertLess(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr22")
self.assertEqual(alignment.query.id, "hg19_dna")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[42144400, 42144436],
[ 0, 36]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr22 42144400 ???????????????????????????????????? 42144436
0 |||||||||||||||||||||||||||||||||||| 36
hg19_dna 0 ???????????????????????????????????? 36
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr22 42144400 42144436 hg19_dna 834 + 42144400 42144436 0 1 36, 0,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 36)
alignment = next(alignments)
self.assertEqual(alignment.score, 682)
self.assertEqual(alignment.shape, (2, 44))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertLess(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr2")
self.assertEqual(alignment.query.id, "hg19_dna")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[183925984, 183925990, 183926028],
[ 0, 6, 44]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr2 183925984 ???????????????????????????????????????????? 183926028
0 |||||||||||||||||||||||||||||||||||||||||||| 44
hg19_dna 0 ???????????????????????????????????????????? 44
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr2 183925984 183926028 hg19_dna 682 + 183925984 183926028 0 2 6,38, 0,6,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 44)
alignment = next(alignments)
self.assertEqual(alignment.score, 890)
self.assertEqual(alignment.shape, (2, 170))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertLess(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr19")
self.assertEqual(alignment.query.id, "hg19_dna")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[35483340, 35483365, 35483499, 35483510],
[ 0, 25, 25, 36]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr19 35483340 ????????????????????????????????????????????????????????????
0 |||||||||||||||||||||||||-----------------------------------
hg19_dna 0 ?????????????????????????-----------------------------------
chr19 35483400 ????????????????????????????????????????????????????????????
60 ------------------------------------------------------------
hg19_dna 25 ------------------------------------------------------------
chr19 35483460 ?????????????????????????????????????????????????? 35483510
120 ---------------------------------------||||||||||| 170
hg19_dna 25 ---------------------------------------??????????? 36
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr19 35483340 35483510 hg19_dna 890 + 35483340 35483510 0 2 25,11, 0,159,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 134)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 134)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 134)
self.assertEqual(counts.gaps, 134)
self.assertEqual(counts.aligned, 36)
alignment = next(alignments)
self.assertEqual(alignment.score, 1000)
self.assertEqual(alignment.shape, (2, 39))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertLess(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr18")
self.assertEqual(alignment.query.id, "hg19_dna")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[23891310, 23891349],
[ 0, 39]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr18 23891310 ??????????????????????????????????????? 23891349
0 ||||||||||||||||||||||||||||||||||||||| 39
hg19_dna 0 ??????????????????????????????????????? 39
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr18 23891310 23891349 hg19_dna 1000 + 23891310 23891349 0 1 39, 0,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 39)
alignment = next(alignments)
self.assertEqual(alignment.score, 930)
self.assertEqual(alignment.shape, (2, 28))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertLess(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr18")
self.assertEqual(alignment.query.id, "hg19_dna")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[43252217, 43252245],
[ 0, 28]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr18 43252217 ???????????????????????????? 43252245
0 |||||||||||||||||||||||||||| 28
hg19_dna 0 ???????????????????????????? 28
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr18 43252217 43252245 hg19_dna 930 + 43252217 43252245 0 1 28, 0,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 28)
alignment = next(alignments)
self.assertEqual(alignment.score, 912)
self.assertEqual(alignment.shape, (2, 51))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertLess(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr13")
self.assertEqual(alignment.query.id, "hg19_dna")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[52759147, 52759154, 52759160, 52759198],
[ 0, 7, 7, 45]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr13 52759147 ??????????????????????????????????????????????????? 52759198
0 |||||||------|||||||||||||||||||||||||||||||||||||| 51
hg19_dna 0 ???????------?????????????????????????????????????? 45
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr13 52759147 52759198 hg19_dna 912 + 52759147 52759198 0 2 7,38, 0,13,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 6)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 6)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 6)
self.assertEqual(counts.gaps, 6)
self.assertEqual(counts.aligned, 45)
alignment = next(alignments)
self.assertEqual(alignment.score, 1000)
self.assertEqual(alignment.shape, (2, 50))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertLess(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr1")
self.assertEqual(alignment.query.id, "hg19_dna")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[1207056, 1207106],
[ 0, 50]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr1 1207056 ?????????????????????????????????????????????????? 1207106
0 |||||||||||||||||||||||||||||||||||||||||||||||||| 50
hg19_dna 0 ?????????????????????????????????????????????????? 50
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr1 1207056 1207106 hg19_dna 1000 + 1207056 1207106 0 1 50, 0,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 50)
alignment = next(alignments)
self.assertEqual(alignment.score, 824)
self.assertEqual(alignment.shape, (2, 34))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertLess(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr1")
self.assertEqual(alignment.query.id, "hg19_dna")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[61700837, 61700871],
[ 0, 34]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr1 61700837 ?????????????????????????????????? 61700871
0 |||||||||||||||||||||||||||||||||| 34
hg19_dna 0 ?????????????????????????????????? 34
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr1 61700837 61700871 hg19_dna 824 + 61700837 61700871 0 1 34, 0,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 34)
alignment = next(alignments)
self.assertEqual(alignment.score, 572)
self.assertEqual(alignment.shape, (2, 34))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertGreater(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr4")
self.assertEqual(alignment.query.id, "hg19_dna")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[37558157, 37558167, 37558173, 37558191],
[ 28, 18, 18, 0]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr4 37558157 ?????????????????????????????????? 37558191
0 ||||||||||------|||||||||||||||||| 34
hg19_dna 28 ??????????------?????????????????? 0
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr4 37558157 37558191 hg19_dna 572 - 37558157 37558191 0 2 10,18, 0,16,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 6)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 6)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 6)
self.assertEqual(counts.gaps, 6)
self.assertEqual(counts.aligned, 28)
alignment = next(alignments)
self.assertEqual(alignment.score, 892)
self.assertEqual(alignment.shape, (2, 37))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertGreater(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr22")
self.assertEqual(alignment.query.id, "hg19_dna")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[48997405, 48997442],
[ 37, 0]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr22 48997405 ????????????????????????????????????? 48997442
0 ||||||||||||||||||||||||||||||||||||| 37
hg19_dna 37 ????????????????????????????????????? 0
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr22 48997405 48997442 hg19_dna 892 - 48997405 48997442 0 1 37, 0,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 37)
alignment = next(alignments)
self.assertEqual(alignment.score, 946)
self.assertEqual(alignment.shape, (2, 36))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertGreater(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr2")
self.assertEqual(alignment.query.id, "hg19_dna")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[120641740, 120641776],
[ 36, 0]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr2 120641740 ???????????????????????????????????? 120641776
0 |||||||||||||||||||||||||||||||||||| 36
hg19_dna 36 ???????????????????????????????????? 0
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr2 120641740 120641776 hg19_dna 946 - 120641740 120641776 0 1 36, 0,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 36)
alignment = next(alignments)
self.assertEqual(alignment.score, 1000)
self.assertEqual(alignment.shape, (2, 39))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertGreater(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr19")
self.assertEqual(alignment.query.id, "hg19_dna")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[54017130, 54017169],
[ 39, 0]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr19 54017130 ??????????????????????????????????????? 54017169
0 ||||||||||||||||||||||||||||||||||||||| 39
hg19_dna 39 ??????????????????????????????????????? 0
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr19 54017130 54017169 hg19_dna 1000 - 54017130 54017169 0 1 39, 0,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 39)
alignment = next(alignments)
self.assertEqual(alignment.score, 848)
self.assertEqual(alignment.shape, (2, 39))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertGreater(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr19")
self.assertEqual(alignment.query.id, "hg19_dna")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[553742, 553781],
[ 39, 0]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr19 553742 ??????????????????????????????????????? 553781
0 ||||||||||||||||||||||||||||||||||||||| 39
hg19_dna 39 ??????????????????????????????????????? 0
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr19 553742 553781 hg19_dna 848 - 553742 553781 0 1 39, 0,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 39)
alignment = next(alignments)
self.assertEqual(alignment.score, 834)
self.assertEqual(alignment.shape, (2, 36))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertGreater(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr10")
self.assertEqual(alignment.query.id, "hg19_dna")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[99388555, 99388591],
[ 36, 0]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr10 99388555 ???????????????????????????????????? 99388591
0 |||||||||||||||||||||||||||||||||||| 36
hg19_dna 36 ???????????????????????????????????? 0
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr10 99388555 99388591 hg19_dna 834 - 99388555 99388591 0 1 36, 0,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 36)
alignment = next(alignments)
self.assertEqual(alignment.score, 920)
self.assertEqual(alignment.shape, (2, 25))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertGreater(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr10")
self.assertEqual(alignment.query.id, "hg19_dna")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[112178171, 112178196],
[ 25, 0]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr10 112178171 ????????????????????????? 112178196
0 ||||||||||||||||||||||||| 25
hg19_dna 25 ????????????????????????? 0
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr10 112178171 112178196 hg19_dna 920 - 112178171 112178196 0 1 25, 0,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 25)
alignment = next(alignments)
self.assertEqual(alignment.score, 946)
self.assertEqual(alignment.shape, (2, 36))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertGreater(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr1")
self.assertEqual(alignment.query.id, "hg19_dna")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[39368490, 39368526],
[ 36, 0]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr1 39368490 ???????????????????????????????????? 39368526
0 |||||||||||||||||||||||||||||||||||| 36
hg19_dna 36 ???????????????????????????????????? 0
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr1 39368490 39368526 hg19_dna 946 - 39368490 39368526 0 1 36, 0,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 36)
alignment = next(alignments)
self.assertEqual(alignment.score, 942)
self.assertEqual(alignment.shape, (2, 34))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertGreater(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr1")
self.assertEqual(alignment.query.id, "hg19_dna")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[220325687, 220325721],
[ 34, 0]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr1 220325687 ?????????????????????????????????? 220325721
0 |||||||||||||||||||||||||||||||||| 34
hg19_dna 34 ?????????????????????????????????? 0
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr1 220325687 220325721 hg19_dna 942 - 220325687 220325721 0 1 34, 0,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 34)
self.assertRaises(StopIteration, next, alignments)
def test_writing_psl_34_001(self):
"""Test writing the alignments in psl_34_001.bed."""
path = "Blat/psl_34_001.bed"
with open(path) as stream:
original_data = stream.read()
alignments = Align.parse(path, "bed")
stream = StringIO()
n = Align.write(alignments, stream, "bed")
self.assertEqual(n, 22)
stream.seek(0)
written_data = stream.read()
stream.close()
self.assertEqual(original_data, written_data)
def test_reading_psl_34_003(self):
"""Test parsing psl_34_003.bed."""
path = "Blat/psl_34_003.bed"
alignments = Align.parse(path, "bed")
alignment = next(alignments)
self.assertEqual(alignment.score, 1000)
self.assertEqual(alignment.shape, (2, 16))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertLess(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr4")
self.assertEqual(alignment.query.id, "hg18_dna")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[61646095, 61646111],
[ 0, 16]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr4 61646095 ???????????????? 61646111
0 |||||||||||||||| 16
hg18_dna 0 ???????????????? 16
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr4 61646095 61646111 hg18_dna 1000 + 61646095 61646111 0 1 16, 0,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 16)
alignment = next(alignments)
self.assertEqual(alignment.score, 1000)
self.assertEqual(alignment.shape, (2, 33))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertLess(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr1")
self.assertEqual(alignment.query.id, "hg18_dna")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[10271783, 10271816],
[ 0, 33]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr1 10271783 ????????????????????????????????? 10271816
0 ||||||||||||||||||||||||||||||||| 33
hg18_dna 0 ????????????????????????????????? 33
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr1 10271783 10271816 hg18_dna 1000 + 10271783 10271816 0 1 33, 0,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 33)
alignment = next(alignments)
self.assertEqual(alignment.score, 1000)
self.assertEqual(alignment.shape, (2, 17))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertGreater(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr2")
self.assertEqual(alignment.query.id, "hg18_dna")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[53575980, 53575997],
[ 17, 0]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr2 53575980 ????????????????? 53575997
0 ||||||||||||||||| 17
hg18_dna 17 ????????????????? 0
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr2 53575980 53575997 hg18_dna 1000 - 53575980 53575997 0 1 17, 0,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 17)
self.assertRaises(StopIteration, next, alignments)
def test_writing_psl_34_003(self):
"""Test writing the alignments in psl_34_003.bed."""
path = "Blat/psl_34_003.bed"
with open(path) as stream:
original_data = stream.read()
alignments = Align.parse(path, "bed")
stream = StringIO()
n = Align.write(alignments, stream, "bed")
self.assertEqual(n, 3)
stream.seek(0)
written_data = stream.read()
stream.close()
self.assertEqual(original_data, written_data)
def test_reading_psl_34_004(self):
"""Test parsing psl_34_004.bed."""
path = "Blat/psl_34_004.bed"
alignments = Align.parse(path, "bed")
alignment = next(alignments)
self.assertEqual(alignment.score, 854)
self.assertEqual(alignment.shape, (2, 41))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertLess(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr9")
self.assertEqual(alignment.query.id, "hg19_dna")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[85737865, 85737906],
[ 0, 41]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr9 85737865 ????????????????????????????????????????? 85737906
0 ||||||||||||||||||||||||||||||||||||||||| 41
hg19_dna 0 ????????????????????????????????????????? 41
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr9 85737865 85737906 hg19_dna 854 + 85737865 85737906 0 1 41, 0,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 41)
alignment = next(alignments)
self.assertEqual(alignment.score, 1000)
self.assertEqual(alignment.shape, (2, 41))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertLess(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr8")
self.assertEqual(alignment.query.id, "hg19_dna")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[95160479, 95160520],
[ 0, 41]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr8 95160479 ????????????????????????????????????????? 95160520
0 ||||||||||||||||||||||||||||||||||||||||| 41
hg19_dna 0 ????????????????????????????????????????? 41
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr8 95160479 95160520 hg19_dna 1000 + 95160479 95160520 0 1 41, 0,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 41)
alignment = next(alignments)
self.assertEqual(alignment.score, 834)
self.assertEqual(alignment.shape, (2, 36))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertLess(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr22")
self.assertEqual(alignment.query.id, "hg19_dna")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[42144400, 42144436],
[ 0, 36]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr22 42144400 ???????????????????????????????????? 42144436
0 |||||||||||||||||||||||||||||||||||| 36
hg19_dna 0 ???????????????????????????????????? 36
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr22 42144400 42144436 hg19_dna 834 + 42144400 42144436 0 1 36, 0,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 36)
alignment = next(alignments)
self.assertEqual(alignment.score, 682)
self.assertEqual(alignment.shape, (2, 44))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertLess(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr2")
self.assertEqual(alignment.query.id, "hg19_dna")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[183925984, 183925990, 183926028],
[ 0, 6, 44]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr2 183925984 ???????????????????????????????????????????? 183926028
0 |||||||||||||||||||||||||||||||||||||||||||| 44
hg19_dna 0 ???????????????????????????????????????????? 44
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr2 183925984 183926028 hg19_dna 682 + 183925984 183926028 0 2 6,38, 0,6,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 44)
alignment = next(alignments)
self.assertEqual(alignment.score, 890)
self.assertEqual(alignment.shape, (2, 170))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertLess(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr19")
self.assertEqual(alignment.query.id, "hg19_dna")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[35483340, 35483365, 35483499, 35483510],
[ 0, 25, 25, 36]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr19 35483340 ????????????????????????????????????????????????????????????
0 |||||||||||||||||||||||||-----------------------------------
hg19_dna 0 ?????????????????????????-----------------------------------
chr19 35483400 ????????????????????????????????????????????????????????????
60 ------------------------------------------------------------
hg19_dna 25 ------------------------------------------------------------
chr19 35483460 ?????????????????????????????????????????????????? 35483510
120 ---------------------------------------||||||||||| 170
hg19_dna 25 ---------------------------------------??????????? 36
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr19 35483340 35483510 hg19_dna 890 + 35483340 35483510 0 2 25,11, 0,159,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 134)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 134)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 134)
self.assertEqual(counts.gaps, 134)
self.assertEqual(counts.aligned, 36)
alignment = next(alignments)
self.assertEqual(alignment.score, 1000)
self.assertEqual(alignment.shape, (2, 39))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertLess(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr18")
self.assertEqual(alignment.query.id, "hg19_dna")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[23891310, 23891349],
[ 0, 39]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr18 23891310 ??????????????????????????????????????? 23891349
0 ||||||||||||||||||||||||||||||||||||||| 39
hg19_dna 0 ??????????????????????????????????????? 39
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr18 23891310 23891349 hg19_dna 1000 + 23891310 23891349 0 1 39, 0,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 39)
alignment = next(alignments)
self.assertEqual(alignment.score, 930)
self.assertEqual(alignment.shape, (2, 28))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertLess(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr18")
self.assertEqual(alignment.query.id, "hg19_dna")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[43252217, 43252245],
[ 0, 28]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr18 43252217 ???????????????????????????? 43252245
0 |||||||||||||||||||||||||||| 28
hg19_dna 0 ???????????????????????????? 28
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr18 43252217 43252245 hg19_dna 930 + 43252217 43252245 0 1 28, 0,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 28)
alignment = next(alignments)
self.assertEqual(alignment.score, 912)
self.assertEqual(alignment.shape, (2, 51))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertLess(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr13")
self.assertEqual(alignment.query.id, "hg19_dna")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[52759147, 52759154, 52759160, 52759198],
[ 0, 7, 7, 45]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr13 52759147 ??????????????????????????????????????????????????? 52759198
0 |||||||------|||||||||||||||||||||||||||||||||||||| 51
hg19_dna 0 ???????------?????????????????????????????????????? 45
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr13 52759147 52759198 hg19_dna 912 + 52759147 52759198 0 2 7,38, 0,13,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 6)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 6)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 6)
self.assertEqual(counts.gaps, 6)
self.assertEqual(counts.aligned, 45)
alignment = next(alignments)
self.assertEqual(alignment.score, 1000)
self.assertEqual(alignment.shape, (2, 50))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertLess(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr1")
self.assertEqual(alignment.query.id, "hg19_dna")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[1207056, 1207106],
[ 0, 50]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr1 1207056 ?????????????????????????????????????????????????? 1207106
0 |||||||||||||||||||||||||||||||||||||||||||||||||| 50
hg19_dna 0 ?????????????????????????????????????????????????? 50
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr1 1207056 1207106 hg19_dna 1000 + 1207056 1207106 0 1 50, 0,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 50)
alignment = next(alignments)
self.assertEqual(alignment.score, 824)
self.assertEqual(alignment.shape, (2, 34))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertLess(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr1")
self.assertEqual(alignment.query.id, "hg19_dna")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[61700837, 61700871],
[ 0, 34]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr1 61700837 ?????????????????????????????????? 61700871
0 |||||||||||||||||||||||||||||||||| 34
hg19_dna 0 ?????????????????????????????????? 34
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr1 61700837 61700871 hg19_dna 824 + 61700837 61700871 0 1 34, 0,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 34)
alignment = next(alignments)
self.assertEqual(alignment.score, 572)
self.assertEqual(alignment.shape, (2, 34))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertGreater(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr4")
self.assertEqual(alignment.query.id, "hg19_dna")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[37558157, 37558167, 37558173, 37558191],
[ 28, 18, 18, 0]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr4 37558157 ?????????????????????????????????? 37558191
0 ||||||||||------|||||||||||||||||| 34
hg19_dna 28 ??????????------?????????????????? 0
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr4 37558157 37558191 hg19_dna 572 - 37558157 37558191 0 2 10,18, 0,16,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 6)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 6)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 6)
self.assertEqual(counts.gaps, 6)
self.assertEqual(counts.aligned, 28)
alignment = next(alignments)
self.assertEqual(alignment.score, 892)
self.assertEqual(alignment.shape, (2, 37))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertGreater(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr22")
self.assertEqual(alignment.query.id, "hg19_dna")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[48997405, 48997442],
[ 37, 0]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr22 48997405 ????????????????????????????????????? 48997442
0 ||||||||||||||||||||||||||||||||||||| 37
hg19_dna 37 ????????????????????????????????????? 0
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr22 48997405 48997442 hg19_dna 892 - 48997405 48997442 0 1 37, 0,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 37)
alignment = next(alignments)
self.assertEqual(alignment.score, 946)
self.assertEqual(alignment.shape, (2, 36))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertGreater(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr2")
self.assertEqual(alignment.query.id, "hg19_dna")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[120641740, 120641776],
[ 36, 0]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr2 120641740 ???????????????????????????????????? 120641776
0 |||||||||||||||||||||||||||||||||||| 36
hg19_dna 36 ???????????????????????????????????? 0
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr2 120641740 120641776 hg19_dna 946 - 120641740 120641776 0 1 36, 0,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 36)
alignment = next(alignments)
self.assertEqual(alignment.score, 1000)
self.assertEqual(alignment.shape, (2, 39))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertGreater(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr19")
self.assertEqual(alignment.query.id, "hg19_dna")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[54017130, 54017169],
[ 39, 0]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr19 54017130 ??????????????????????????????????????? 54017169
0 ||||||||||||||||||||||||||||||||||||||| 39
hg19_dna 39 ??????????????????????????????????????? 0
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr19 54017130 54017169 hg19_dna 1000 - 54017130 54017169 0 1 39, 0,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 39)
alignment = next(alignments)
self.assertEqual(alignment.score, 848)
self.assertEqual(alignment.shape, (2, 39))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertGreater(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr19")
self.assertEqual(alignment.query.id, "hg19_dna")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[553742, 553781],
[ 39, 0]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr19 553742 ??????????????????????????????????????? 553781
0 ||||||||||||||||||||||||||||||||||||||| 39
hg19_dna 39 ??????????????????????????????????????? 0
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr19 553742 553781 hg19_dna 848 - 553742 553781 0 1 39, 0,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 39)
alignment = next(alignments)
self.assertEqual(alignment.score, 834)
self.assertEqual(alignment.shape, (2, 36))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertGreater(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr10")
self.assertEqual(alignment.query.id, "hg19_dna")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[99388555, 99388591],
[ 36, 0]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr10 99388555 ???????????????????????????????????? 99388591
0 |||||||||||||||||||||||||||||||||||| 36
hg19_dna 36 ???????????????????????????????????? 0
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr10 99388555 99388591 hg19_dna 834 - 99388555 99388591 0 1 36, 0,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 36)
alignment = next(alignments)
self.assertEqual(alignment.score, 920)
self.assertEqual(alignment.shape, (2, 25))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertGreater(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr10")
self.assertEqual(alignment.query.id, "hg19_dna")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[112178171, 112178196],
[ 25, 0]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr10 112178171 ????????????????????????? 112178196
0 ||||||||||||||||||||||||| 25
hg19_dna 25 ????????????????????????? 0
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr10 112178171 112178196 hg19_dna 920 - 112178171 112178196 0 1 25, 0,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 25)
alignment = next(alignments)
self.assertEqual(alignment.score, 946)
self.assertEqual(alignment.shape, (2, 36))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertGreater(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr1")
self.assertEqual(alignment.query.id, "hg19_dna")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[39368490, 39368526],
[ 36, 0]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr1 39368490 ???????????????????????????????????? 39368526
0 |||||||||||||||||||||||||||||||||||| 36
hg19_dna 36 ???????????????????????????????????? 0
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr1 39368490 39368526 hg19_dna 946 - 39368490 39368526 0 1 36, 0,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 36)
alignment = next(alignments)
self.assertEqual(alignment.score, 942)
self.assertEqual(alignment.shape, (2, 34))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertGreater(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr1")
self.assertEqual(alignment.query.id, "hg19_dna")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[220325687, 220325721],
[ 34, 0]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr1 220325687 ?????????????????????????????????? 220325721
0 |||||||||||||||||||||||||||||||||| 34
hg19_dna 34 ?????????????????????????????????? 0
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr1 220325687 220325721 hg19_dna 942 - 220325687 220325721 0 1 34, 0,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 34)
self.assertRaises(StopIteration, next, alignments)
def test_writing_psl_34_004(self):
"""Test writing the alignments in psl_34_004.bed."""
path = "Blat/psl_34_004.bed"
with open(path) as stream:
original_data = stream.read()
alignments = Align.parse(path, "bed")
stream = StringIO()
n = Align.write(alignments, stream, "bed")
self.assertEqual(n, 19)
stream.seek(0)
written_data = stream.read()
stream.close()
self.assertEqual(original_data, written_data)
def test_reading_psl_34_005(self):
"""Test parsing psl_34_005.bed."""
path = "Blat/psl_34_005.bed"
alignments = Align.parse(path, "bed")
alignment = next(alignments)
self.assertEqual(alignment.score, 1000)
self.assertEqual(alignment.shape, (2, 16))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertLess(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr4")
self.assertEqual(alignment.query.id, "hg19_dna")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[61646095, 61646111],
[ 0, 16]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr4 61646095 ???????????????? 61646111
0 |||||||||||||||| 16
hg19_dna 0 ???????????????? 16
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr4 61646095 61646111 hg19_dna 1000 + 61646095 61646111 0 1 16, 0,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 16)
alignment = next(alignments)
self.assertEqual(alignment.score, 1000)
self.assertEqual(alignment.shape, (2, 33))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertLess(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr1")
self.assertEqual(alignment.query.id, "hg19_dna")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[10271783, 10271816],
[ 0, 33]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr1 10271783 ????????????????????????????????? 10271816
0 ||||||||||||||||||||||||||||||||| 33
hg19_dna 0 ????????????????????????????????? 33
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr1 10271783 10271816 hg19_dna 1000 + 10271783 10271816 0 1 33, 0,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 33)
alignment = next(alignments)
self.assertEqual(alignment.score, 1000)
self.assertEqual(alignment.shape, (2, 17))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertGreater(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr2")
self.assertEqual(alignment.query.id, "hg19_dna")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[53575980, 53575997],
[ 17, 0]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr2 53575980 ????????????????? 53575997
0 ||||||||||||||||| 17
hg19_dna 17 ????????????????? 0
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr2 53575980 53575997 hg19_dna 1000 - 53575980 53575997 0 1 17, 0,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 17)
alignment = next(alignments)
self.assertEqual(alignment.score, 854)
self.assertEqual(alignment.shape, (2, 41))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertLess(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr9")
self.assertEqual(alignment.query.id, "hg19_dna")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[85737865, 85737906],
[ 0, 41]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr9 85737865 ????????????????????????????????????????? 85737906
0 ||||||||||||||||||||||||||||||||||||||||| 41
hg19_dna 0 ????????????????????????????????????????? 41
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr9 85737865 85737906 hg19_dna 854 + 85737865 85737906 0 1 41, 0,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 41)
alignment = next(alignments)
self.assertEqual(alignment.score, 1000)
self.assertEqual(alignment.shape, (2, 41))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertLess(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr8")
self.assertEqual(alignment.query.id, "hg19_dna")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[95160479, 95160520],
[ 0, 41]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr8 95160479 ????????????????????????????????????????? 95160520
0 ||||||||||||||||||||||||||||||||||||||||| 41
hg19_dna 0 ????????????????????????????????????????? 41
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr8 95160479 95160520 hg19_dna 1000 + 95160479 95160520 0 1 41, 0,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 41)
alignment = next(alignments)
self.assertEqual(alignment.score, 834)
self.assertEqual(alignment.shape, (2, 36))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertLess(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr22")
self.assertEqual(alignment.query.id, "hg19_dna")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[42144400, 42144436],
[ 0, 36]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr22 42144400 ???????????????????????????????????? 42144436
0 |||||||||||||||||||||||||||||||||||| 36
hg19_dna 0 ???????????????????????????????????? 36
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr22 42144400 42144436 hg19_dna 834 + 42144400 42144436 0 1 36, 0,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 36)
alignment = next(alignments)
self.assertEqual(alignment.score, 682)
self.assertEqual(alignment.shape, (2, 44))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertLess(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr2")
self.assertEqual(alignment.query.id, "hg19_dna")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[183925984, 183925990, 183926028],
[ 0, 6, 44]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr2 183925984 ???????????????????????????????????????????? 183926028
0 |||||||||||||||||||||||||||||||||||||||||||| 44
hg19_dna 0 ???????????????????????????????????????????? 44
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr2 183925984 183926028 hg19_dna 682 + 183925984 183926028 0 2 6,38, 0,6,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 44)
alignment = next(alignments)
self.assertEqual(alignment.score, 890)
self.assertEqual(alignment.shape, (2, 170))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertLess(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr19")
self.assertEqual(alignment.query.id, "hg19_dna")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[35483340, 35483365, 35483499, 35483510],
[ 0, 25, 25, 36]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr19 35483340 ????????????????????????????????????????????????????????????
0 |||||||||||||||||||||||||-----------------------------------
hg19_dna 0 ?????????????????????????-----------------------------------
chr19 35483400 ????????????????????????????????????????????????????????????
60 ------------------------------------------------------------
hg19_dna 25 ------------------------------------------------------------
chr19 35483460 ?????????????????????????????????????????????????? 35483510
120 ---------------------------------------||||||||||| 170
hg19_dna 25 ---------------------------------------??????????? 36
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr19 35483340 35483510 hg19_dna 890 + 35483340 35483510 0 2 25,11, 0,159,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 134)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 134)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 134)
self.assertEqual(counts.gaps, 134)
self.assertEqual(counts.aligned, 36)
alignment = next(alignments)
self.assertEqual(alignment.score, 1000)
self.assertEqual(alignment.shape, (2, 39))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertLess(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr18")
self.assertEqual(alignment.query.id, "hg19_dna")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[23891310, 23891349],
[ 0, 39]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr18 23891310 ??????????????????????????????????????? 23891349
0 ||||||||||||||||||||||||||||||||||||||| 39
hg19_dna 0 ??????????????????????????????????????? 39
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr18 23891310 23891349 hg19_dna 1000 + 23891310 23891349 0 1 39, 0,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 39)
alignment = next(alignments)
self.assertEqual(alignment.score, 930)
self.assertEqual(alignment.shape, (2, 28))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertLess(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr18")
self.assertEqual(alignment.query.id, "hg19_dna")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[43252217, 43252245],
[ 0, 28]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr18 43252217 ???????????????????????????? 43252245
0 |||||||||||||||||||||||||||| 28
hg19_dna 0 ???????????????????????????? 28
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr18 43252217 43252245 hg19_dna 930 + 43252217 43252245 0 1 28, 0,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 28)
alignment = next(alignments)
self.assertEqual(alignment.score, 912)
self.assertEqual(alignment.shape, (2, 51))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertLess(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr13")
self.assertEqual(alignment.query.id, "hg19_dna")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[52759147, 52759154, 52759160, 52759198],
[ 0, 7, 7, 45]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr13 52759147 ??????????????????????????????????????????????????? 52759198
0 |||||||------|||||||||||||||||||||||||||||||||||||| 51
hg19_dna 0 ???????------?????????????????????????????????????? 45
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr13 52759147 52759198 hg19_dna 912 + 52759147 52759198 0 2 7,38, 0,13,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 6)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 6)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 6)
self.assertEqual(counts.gaps, 6)
self.assertEqual(counts.aligned, 45)
alignment = next(alignments)
self.assertEqual(alignment.score, 1000)
self.assertEqual(alignment.shape, (2, 50))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertLess(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr1")
self.assertEqual(alignment.query.id, "hg19_dna")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[1207056, 1207106],
[ 0, 50]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr1 1207056 ?????????????????????????????????????????????????? 1207106
0 |||||||||||||||||||||||||||||||||||||||||||||||||| 50
hg19_dna 0 ?????????????????????????????????????????????????? 50
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr1 1207056 1207106 hg19_dna 1000 + 1207056 1207106 0 1 50, 0,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 50)
alignment = next(alignments)
self.assertEqual(alignment.score, 824)
self.assertEqual(alignment.shape, (2, 34))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertLess(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr1")
self.assertEqual(alignment.query.id, "hg19_dna")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[61700837, 61700871],
[ 0, 34]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr1 61700837 ?????????????????????????????????? 61700871
0 |||||||||||||||||||||||||||||||||| 34
hg19_dna 0 ?????????????????????????????????? 34
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr1 61700837 61700871 hg19_dna 824 + 61700837 61700871 0 1 34, 0,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 34)
alignment = next(alignments)
self.assertEqual(alignment.score, 572)
self.assertEqual(alignment.shape, (2, 34))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertGreater(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr4")
self.assertEqual(alignment.query.id, "hg19_dna")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[37558157, 37558167, 37558173, 37558191],
[ 28, 18, 18, 0]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr4 37558157 ?????????????????????????????????? 37558191
0 ||||||||||------|||||||||||||||||| 34
hg19_dna 28 ??????????------?????????????????? 0
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr4 37558157 37558191 hg19_dna 572 - 37558157 37558191 0 2 10,18, 0,16,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 6)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 6)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 6)
self.assertEqual(counts.gaps, 6)
self.assertEqual(counts.aligned, 28)
alignment = next(alignments)
self.assertEqual(alignment.score, 892)
self.assertEqual(alignment.shape, (2, 37))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertGreater(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr22")
self.assertEqual(alignment.query.id, "hg19_dna")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[48997405, 48997442],
[ 37, 0]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr22 48997405 ????????????????????????????????????? 48997442
0 ||||||||||||||||||||||||||||||||||||| 37
hg19_dna 37 ????????????????????????????????????? 0
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr22 48997405 48997442 hg19_dna 892 - 48997405 48997442 0 1 37, 0,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 37)
alignment = next(alignments)
self.assertEqual(alignment.score, 946)
self.assertEqual(alignment.shape, (2, 36))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertGreater(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr2")
self.assertEqual(alignment.query.id, "hg19_dna")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[120641740, 120641776],
[ 36, 0]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr2 120641740 ???????????????????????????????????? 120641776
0 |||||||||||||||||||||||||||||||||||| 36
hg19_dna 36 ???????????????????????????????????? 0
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr2 120641740 120641776 hg19_dna 946 - 120641740 120641776 0 1 36, 0,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 36)
alignment = next(alignments)
self.assertEqual(alignment.score, 1000)
self.assertEqual(alignment.shape, (2, 39))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertGreater(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr19")
self.assertEqual(alignment.query.id, "hg19_dna")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[54017130, 54017169],
[ 39, 0]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr19 54017130 ??????????????????????????????????????? 54017169
0 ||||||||||||||||||||||||||||||||||||||| 39
hg19_dna 39 ??????????????????????????????????????? 0
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr19 54017130 54017169 hg19_dna 1000 - 54017130 54017169 0 1 39, 0,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 39)
alignment = next(alignments)
self.assertEqual(alignment.score, 848)
self.assertEqual(alignment.shape, (2, 39))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertGreater(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr19")
self.assertEqual(alignment.query.id, "hg19_dna")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[553742, 553781],
[ 39, 0]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr19 553742 ??????????????????????????????????????? 553781
0 ||||||||||||||||||||||||||||||||||||||| 39
hg19_dna 39 ??????????????????????????????????????? 0
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr19 553742 553781 hg19_dna 848 - 553742 553781 0 1 39, 0,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 39)
alignment = next(alignments)
self.assertEqual(alignment.score, 834)
self.assertEqual(alignment.shape, (2, 36))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertGreater(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr10")
self.assertEqual(alignment.query.id, "hg19_dna")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[99388555, 99388591],
[ 36, 0]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr10 99388555 ???????????????????????????????????? 99388591
0 |||||||||||||||||||||||||||||||||||| 36
hg19_dna 36 ???????????????????????????????????? 0
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr10 99388555 99388591 hg19_dna 834 - 99388555 99388591 0 1 36, 0,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 36)
alignment = next(alignments)
self.assertEqual(alignment.score, 920)
self.assertEqual(alignment.shape, (2, 25))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertGreater(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr10")
self.assertEqual(alignment.query.id, "hg19_dna")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[112178171, 112178196],
[ 25, 0]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr10 112178171 ????????????????????????? 112178196
0 ||||||||||||||||||||||||| 25
hg19_dna 25 ????????????????????????? 0
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr10 112178171 112178196 hg19_dna 920 - 112178171 112178196 0 1 25, 0,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 25)
alignment = next(alignments)
self.assertEqual(alignment.score, 946)
self.assertEqual(alignment.shape, (2, 36))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertGreater(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr1")
self.assertEqual(alignment.query.id, "hg19_dna")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[39368490, 39368526],
[ 36, 0]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr1 39368490 ???????????????????????????????????? 39368526
0 |||||||||||||||||||||||||||||||||||| 36
hg19_dna 36 ???????????????????????????????????? 0
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr1 39368490 39368526 hg19_dna 946 - 39368490 39368526 0 1 36, 0,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 36)
alignment = next(alignments)
self.assertEqual(alignment.score, 942)
self.assertEqual(alignment.shape, (2, 34))
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertGreater(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr1")
self.assertEqual(alignment.query.id, "hg19_dna")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[220325687, 220325721],
[ 34, 0]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr1 220325687 ?????????????????????????????????? 220325721
0 |||||||||||||||||||||||||||||||||| 34
hg19_dna 34 ?????????????????????????????????? 0
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr1 220325687 220325721 hg19_dna 942 - 220325687 220325721 0 1 34, 0,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 34)
self.assertRaises(StopIteration, next, alignments)
def test_writing_psl_34_005(self):
"""Test writing the alignments in psl_34_005.bed."""
path = "Blat/psl_34_005.bed"
with open(path) as stream:
original_data = stream.read()
alignments = Align.parse(path, "bed")
stream = StringIO()
n = Align.write(alignments, stream, "bed")
self.assertEqual(n, 22)
stream.seek(0)
written_data = stream.read()
stream.close()
self.assertEqual(original_data, written_data)
class TestAlign_dnax_prot(unittest.TestCase):
def test_reading_psl_35_001(self):
"""Test parsing psl_35_001.bed."""
path = "Blat/psl_35_001.bed"
alignments = Align.parse(path, "bed")
alignment = next(alignments)
self.assertEqual(alignment.score, 1000)
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertLess(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr13")
self.assertEqual(alignment.query.id, "CAG33136.1")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[75566694, 75566850],
[ 0, 156]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr13 75566694 ????????????????????????????????????????????????????????????
0 ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CAG33136. 0 ????????????????????????????????????????????????????????????
chr13 75566754 ????????????????????????????????????????????????????????????
60 ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CAG33136. 60 ????????????????????????????????????????????????????????????
chr13 75566814 ???????????????????????????????????? 75566850
120 |||||||||||||||||||||||||||||||||||| 156
CAG33136. 120 ???????????????????????????????????? 156
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr13 75566694 75566850 CAG33136.1 1000 + 75566694 75566850 0 1 156, 0,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 156)
alignment = next(alignments)
self.assertEqual(alignment.score, 1000)
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertLess(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr13")
self.assertEqual(alignment.query.id, "CAG33136.1")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[75560749, 75560881],
[ 0, 132]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr13 75560749 ????????????????????????????????????????????????????????????
0 ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CAG33136. 0 ????????????????????????????????????????????????????????????
chr13 75560809 ????????????????????????????????????????????????????????????
60 ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CAG33136. 60 ????????????????????????????????????????????????????????????
chr13 75560869 ???????????? 75560881
120 |||||||||||| 132
CAG33136. 120 ???????????? 132
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr13 75560749 75560881 CAG33136.1 1000 + 75560749 75560881 0 1 132, 0,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 132)
alignment = next(alignments)
self.assertEqual(alignment.score, 986)
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertLess(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr13")
self.assertEqual(alignment.query.id, "CAG33136.1")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[75549820, 75549865, 75567225, 75567312],
[ 0, 45, 45, 132]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr13 75549820 ????????????????????????????????????????????????????????????
0 |||||||||||||||||||||||||||||||||||||||||||||---------------
CAG33136. 0 ?????????????????????????????????????????????---------------
chr13 75549880 ????????????????????????????????????????????????????????????
60 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75549940 ????????????????????????????????????????????????????????????
120 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75550000 ????????????????????????????????????????????????????????????
180 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75550060 ????????????????????????????????????????????????????????????
240 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75550120 ????????????????????????????????????????????????????????????
300 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75550180 ????????????????????????????????????????????????????????????
360 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75550240 ????????????????????????????????????????????????????????????
420 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75550300 ????????????????????????????????????????????????????????????
480 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75550360 ????????????????????????????????????????????????????????????
540 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75550420 ????????????????????????????????????????????????????????????
600 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75550480 ????????????????????????????????????????????????????????????
660 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75550540 ????????????????????????????????????????????????????????????
720 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75550600 ????????????????????????????????????????????????????????????
780 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75550660 ????????????????????????????????????????????????????????????
840 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75550720 ????????????????????????????????????????????????????????????
900 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75550780 ????????????????????????????????????????????????????????????
960 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75550840 ????????????????????????????????????????????????????????????
1020 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75550900 ????????????????????????????????????????????????????????????
1080 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75550960 ????????????????????????????????????????????????????????????
1140 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75551020 ????????????????????????????????????????????????????????????
1200 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75551080 ????????????????????????????????????????????????????????????
1260 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75551140 ????????????????????????????????????????????????????????????
1320 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75551200 ????????????????????????????????????????????????????????????
1380 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75551260 ????????????????????????????????????????????????????????????
1440 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75551320 ????????????????????????????????????????????????????????????
1500 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75551380 ????????????????????????????????????????????????????????????
1560 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75551440 ????????????????????????????????????????????????????????????
1620 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75551500 ????????????????????????????????????????????????????????????
1680 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75551560 ????????????????????????????????????????????????????????????
1740 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75551620 ????????????????????????????????????????????????????????????
1800 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75551680 ????????????????????????????????????????????????????????????
1860 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75551740 ????????????????????????????????????????????????????????????
1920 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75551800 ????????????????????????????????????????????????????????????
1980 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75551860 ????????????????????????????????????????????????????????????
2040 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75551920 ????????????????????????????????????????????????????????????
2100 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75551980 ????????????????????????????????????????????????????????????
2160 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75552040 ????????????????????????????????????????????????????????????
2220 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75552100 ????????????????????????????????????????????????????????????
2280 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75552160 ????????????????????????????????????????????????????????????
2340 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75552220 ????????????????????????????????????????????????????????????
2400 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75552280 ????????????????????????????????????????????????????????????
2460 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75552340 ????????????????????????????????????????????????????????????
2520 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75552400 ????????????????????????????????????????????????????????????
2580 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75552460 ????????????????????????????????????????????????????????????
2640 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75552520 ????????????????????????????????????????????????????????????
2700 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75552580 ????????????????????????????????????????????????????????????
2760 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75552640 ????????????????????????????????????????????????????????????
2820 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75552700 ????????????????????????????????????????????????????????????
2880 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75552760 ????????????????????????????????????????????????????????????
2940 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75552820 ????????????????????????????????????????????????????????????
3000 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75552880 ????????????????????????????????????????????????????????????
3060 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75552940 ????????????????????????????????????????????????????????????
3120 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75553000 ????????????????????????????????????????????????????????????
3180 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75553060 ????????????????????????????????????????????????????????????
3240 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75553120 ????????????????????????????????????????????????????????????
3300 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75553180 ????????????????????????????????????????????????????????????
3360 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75553240 ????????????????????????????????????????????????????????????
3420 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75553300 ????????????????????????????????????????????????????????????
3480 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75553360 ????????????????????????????????????????????????????????????
3540 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75553420 ????????????????????????????????????????????????????????????
3600 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75553480 ????????????????????????????????????????????????????????????
3660 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75553540 ????????????????????????????????????????????????????????????
3720 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75553600 ????????????????????????????????????????????????????????????
3780 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75553660 ????????????????????????????????????????????????????????????
3840 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75553720 ????????????????????????????????????????????????????????????
3900 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75553780 ????????????????????????????????????????????????????????????
3960 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75553840 ????????????????????????????????????????????????????????????
4020 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75553900 ????????????????????????????????????????????????????????????
4080 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75553960 ????????????????????????????????????????????????????????????
4140 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75554020 ????????????????????????????????????????????????????????????
4200 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75554080 ????????????????????????????????????????????????????????????
4260 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75554140 ????????????????????????????????????????????????????????????
4320 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75554200 ????????????????????????????????????????????????????????????
4380 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75554260 ????????????????????????????????????????????????????????????
4440 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75554320 ????????????????????????????????????????????????????????????
4500 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75554380 ????????????????????????????????????????????????????????????
4560 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75554440 ????????????????????????????????????????????????????????????
4620 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75554500 ????????????????????????????????????????????????????????????
4680 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75554560 ????????????????????????????????????????????????????????????
4740 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75554620 ????????????????????????????????????????????????????????????
4800 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75554680 ????????????????????????????????????????????????????????????
4860 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75554740 ????????????????????????????????????????????????????????????
4920 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75554800 ????????????????????????????????????????????????????????????
4980 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75554860 ????????????????????????????????????????????????????????????
5040 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75554920 ????????????????????????????????????????????????????????????
5100 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75554980 ????????????????????????????????????????????????????????????
5160 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75555040 ????????????????????????????????????????????????????????????
5220 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75555100 ????????????????????????????????????????????????????????????
5280 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75555160 ????????????????????????????????????????????????????????????
5340 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75555220 ????????????????????????????????????????????????????????????
5400 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75555280 ????????????????????????????????????????????????????????????
5460 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75555340 ????????????????????????????????????????????????????????????
5520 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75555400 ????????????????????????????????????????????????????????????
5580 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75555460 ????????????????????????????????????????????????????????????
5640 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75555520 ????????????????????????????????????????????????????????????
5700 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75555580 ????????????????????????????????????????????????????????????
5760 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75555640 ????????????????????????????????????????????????????????????
5820 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75555700 ????????????????????????????????????????????????????????????
5880 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75555760 ????????????????????????????????????????????????????????????
5940 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75555820 ????????????????????????????????????????????????????????????
6000 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75555880 ????????????????????????????????????????????????????????????
6060 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75555940 ????????????????????????????????????????????????????????????
6120 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75556000 ????????????????????????????????????????????????????????????
6180 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75556060 ????????????????????????????????????????????????????????????
6240 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75556120 ????????????????????????????????????????????????????????????
6300 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75556180 ????????????????????????????????????????????????????????????
6360 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75556240 ????????????????????????????????????????????????????????????
6420 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75556300 ????????????????????????????????????????????????????????????
6480 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75556360 ????????????????????????????????????????????????????????????
6540 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75556420 ????????????????????????????????????????????????????????????
6600 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75556480 ????????????????????????????????????????????????????????????
6660 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75556540 ????????????????????????????????????????????????????????????
6720 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75556600 ????????????????????????????????????????????????????????????
6780 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75556660 ????????????????????????????????????????????????????????????
6840 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75556720 ????????????????????????????????????????????????????????????
6900 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75556780 ????????????????????????????????????????????????????????????
6960 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75556840 ????????????????????????????????????????????????????????????
7020 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75556900 ????????????????????????????????????????????????????????????
7080 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75556960 ????????????????????????????????????????????????????????????
7140 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75557020 ????????????????????????????????????????????????????????????
7200 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75557080 ????????????????????????????????????????????????????????????
7260 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75557140 ????????????????????????????????????????????????????????????
7320 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75557200 ????????????????????????????????????????????????????????????
7380 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75557260 ????????????????????????????????????????????????????????????
7440 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75557320 ????????????????????????????????????????????????????????????
7500 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75557380 ????????????????????????????????????????????????????????????
7560 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75557440 ????????????????????????????????????????????????????????????
7620 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75557500 ????????????????????????????????????????????????????????????
7680 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75557560 ????????????????????????????????????????????????????????????
7740 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75557620 ????????????????????????????????????????????????????????????
7800 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75557680 ????????????????????????????????????????????????????????????
7860 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75557740 ????????????????????????????????????????????????????????????
7920 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75557800 ????????????????????????????????????????????????????????????
7980 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75557860 ????????????????????????????????????????????????????????????
8040 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75557920 ????????????????????????????????????????????????????????????
8100 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75557980 ????????????????????????????????????????????????????????????
8160 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75558040 ????????????????????????????????????????????????????????????
8220 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75558100 ????????????????????????????????????????????????????????????
8280 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75558160 ????????????????????????????????????????????????????????????
8340 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75558220 ????????????????????????????????????????????????????????????
8400 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75558280 ????????????????????????????????????????????????????????????
8460 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75558340 ????????????????????????????????????????????????????????????
8520 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75558400 ????????????????????????????????????????????????????????????
8580 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75558460 ????????????????????????????????????????????????????????????
8640 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75558520 ????????????????????????????????????????????????????????????
8700 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75558580 ????????????????????????????????????????????????????????????
8760 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75558640 ????????????????????????????????????????????????????????????
8820 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75558700 ????????????????????????????????????????????????????????????
8880 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75558760 ????????????????????????????????????????????????????????????
8940 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75558820 ????????????????????????????????????????????????????????????
9000 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75558880 ????????????????????????????????????????????????????????????
9060 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75558940 ????????????????????????????????????????????????????????????
9120 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75559000 ????????????????????????????????????????????????????????????
9180 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75559060 ????????????????????????????????????????????????????????????
9240 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75559120 ????????????????????????????????????????????????????????????
9300 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75559180 ????????????????????????????????????????????????????????????
9360 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75559240 ????????????????????????????????????????????????????????????
9420 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75559300 ????????????????????????????????????????????????????????????
9480 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75559360 ????????????????????????????????????????????????????????????
9540 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75559420 ????????????????????????????????????????????????????????????
9600 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75559480 ????????????????????????????????????????????????????????????
9660 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75559540 ????????????????????????????????????????????????????????????
9720 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75559600 ????????????????????????????????????????????????????????????
9780 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75559660 ????????????????????????????????????????????????????????????
9840 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75559720 ????????????????????????????????????????????????????????????
9900 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75559780 ????????????????????????????????????????????????????????????
9960 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75559840 ????????????????????????????????????????????????????????????
10020 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75559900 ????????????????????????????????????????????????????????????
10080 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75559960 ????????????????????????????????????????????????????????????
10140 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75560020 ????????????????????????????????????????????????????????????
10200 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75560080 ????????????????????????????????????????????????????????????
10260 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75560140 ????????????????????????????????????????????????????????????
10320 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75560200 ????????????????????????????????????????????????????????????
10380 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75560260 ????????????????????????????????????????????????????????????
10440 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75560320 ????????????????????????????????????????????????????????????
10500 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75560380 ????????????????????????????????????????????????????????????
10560 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75560440 ????????????????????????????????????????????????????????????
10620 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75560500 ????????????????????????????????????????????????????????????
10680 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75560560 ????????????????????????????????????????????????????????????
10740 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75560620 ????????????????????????????????????????????????????????????
10800 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75560680 ????????????????????????????????????????????????????????????
10860 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75560740 ????????????????????????????????????????????????????????????
10920 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75560800 ????????????????????????????????????????????????????????????
10980 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75560860 ????????????????????????????????????????????????????????????
11040 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75560920 ????????????????????????????????????????????????????????????
11100 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75560980 ????????????????????????????????????????????????????????????
11160 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75561040 ????????????????????????????????????????????????????????????
11220 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75561100 ????????????????????????????????????????????????????????????
11280 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75561160 ????????????????????????????????????????????????????????????
11340 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75561220 ????????????????????????????????????????????????????????????
11400 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75561280 ????????????????????????????????????????????????????????????
11460 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75561340 ????????????????????????????????????????????????????????????
11520 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75561400 ????????????????????????????????????????????????????????????
11580 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75561460 ????????????????????????????????????????????????????????????
11640 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75561520 ????????????????????????????????????????????????????????????
11700 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75561580 ????????????????????????????????????????????????????????????
11760 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75561640 ????????????????????????????????????????????????????????????
11820 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75561700 ????????????????????????????????????????????????????????????
11880 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75561760 ????????????????????????????????????????????????????????????
11940 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75561820 ????????????????????????????????????????????????????????????
12000 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75561880 ????????????????????????????????????????????????????????????
12060 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75561940 ????????????????????????????????????????????????????????????
12120 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75562000 ????????????????????????????????????????????????????????????
12180 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75562060 ????????????????????????????????????????????????????????????
12240 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75562120 ????????????????????????????????????????????????????????????
12300 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75562180 ????????????????????????????????????????????????????????????
12360 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75562240 ????????????????????????????????????????????????????????????
12420 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75562300 ????????????????????????????????????????????????????????????
12480 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75562360 ????????????????????????????????????????????????????????????
12540 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75562420 ????????????????????????????????????????????????????????????
12600 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75562480 ????????????????????????????????????????????????????????????
12660 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75562540 ????????????????????????????????????????????????????????????
12720 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75562600 ????????????????????????????????????????????????????????????
12780 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75562660 ????????????????????????????????????????????????????????????
12840 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75562720 ????????????????????????????????????????????????????????????
12900 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75562780 ????????????????????????????????????????????????????????????
12960 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75562840 ????????????????????????????????????????????????????????????
13020 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75562900 ????????????????????????????????????????????????????????????
13080 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75562960 ????????????????????????????????????????????????????????????
13140 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75563020 ????????????????????????????????????????????????????????????
13200 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75563080 ????????????????????????????????????????????????????????????
13260 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75563140 ????????????????????????????????????????????????????????????
13320 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75563200 ????????????????????????????????????????????????????????????
13380 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75563260 ????????????????????????????????????????????????????????????
13440 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75563320 ????????????????????????????????????????????????????????????
13500 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75563380 ????????????????????????????????????????????????????????????
13560 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75563440 ????????????????????????????????????????????????????????????
13620 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75563500 ????????????????????????????????????????????????????????????
13680 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75563560 ????????????????????????????????????????????????????????????
13740 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75563620 ????????????????????????????????????????????????????????????
13800 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75563680 ????????????????????????????????????????????????????????????
13860 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75563740 ????????????????????????????????????????????????????????????
13920 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75563800 ????????????????????????????????????????????????????????????
13980 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75563860 ????????????????????????????????????????????????????????????
14040 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75563920 ????????????????????????????????????????????????????????????
14100 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75563980 ????????????????????????????????????????????????????????????
14160 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75564040 ????????????????????????????????????????????????????????????
14220 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75564100 ????????????????????????????????????????????????????????????
14280 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75564160 ????????????????????????????????????????????????????????????
14340 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75564220 ????????????????????????????????????????????????????????????
14400 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75564280 ????????????????????????????????????????????????????????????
14460 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75564340 ????????????????????????????????????????????????????????????
14520 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75564400 ????????????????????????????????????????????????????????????
14580 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75564460 ????????????????????????????????????????????????????????????
14640 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75564520 ????????????????????????????????????????????????????????????
14700 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75564580 ????????????????????????????????????????????????????????????
14760 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75564640 ????????????????????????????????????????????????????????????
14820 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75564700 ????????????????????????????????????????????????????????????
14880 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75564760 ????????????????????????????????????????????????????????????
14940 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75564820 ????????????????????????????????????????????????????????????
15000 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75564880 ????????????????????????????????????????????????????????????
15060 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75564940 ????????????????????????????????????????????????????????????
15120 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75565000 ????????????????????????????????????????????????????????????
15180 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75565060 ????????????????????????????????????????????????????????????
15240 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75565120 ????????????????????????????????????????????????????????????
15300 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75565180 ????????????????????????????????????????????????????????????
15360 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75565240 ????????????????????????????????????????????????????????????
15420 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75565300 ????????????????????????????????????????????????????????????
15480 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75565360 ????????????????????????????????????????????????????????????
15540 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75565420 ????????????????????????????????????????????????????????????
15600 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75565480 ????????????????????????????????????????????????????????????
15660 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75565540 ????????????????????????????????????????????????????????????
15720 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75565600 ????????????????????????????????????????????????????????????
15780 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75565660 ????????????????????????????????????????????????????????????
15840 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75565720 ????????????????????????????????????????????????????????????
15900 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75565780 ????????????????????????????????????????????????????????????
15960 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75565840 ????????????????????????????????????????????????????????????
16020 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75565900 ????????????????????????????????????????????????????????????
16080 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75565960 ????????????????????????????????????????????????????????????
16140 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75566020 ????????????????????????????????????????????????????????????
16200 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75566080 ????????????????????????????????????????????????????????????
16260 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75566140 ????????????????????????????????????????????????????????????
16320 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75566200 ????????????????????????????????????????????????????????????
16380 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75566260 ????????????????????????????????????????????????????????????
16440 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75566320 ????????????????????????????????????????????????????????????
16500 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75566380 ????????????????????????????????????????????????????????????
16560 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75566440 ????????????????????????????????????????????????????????????
16620 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75566500 ????????????????????????????????????????????????????????????
16680 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75566560 ????????????????????????????????????????????????????????????
16740 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75566620 ????????????????????????????????????????????????????????????
16800 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75566680 ????????????????????????????????????????????????????????????
16860 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75566740 ????????????????????????????????????????????????????????????
16920 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75566800 ????????????????????????????????????????????????????????????
16980 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75566860 ????????????????????????????????????????????????????????????
17040 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75566920 ????????????????????????????????????????????????????????????
17100 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75566980 ????????????????????????????????????????????????????????????
17160 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75567040 ????????????????????????????????????????????????????????????
17220 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75567100 ????????????????????????????????????????????????????????????
17280 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75567160 ????????????????????????????????????????????????????????????
17340 ------------------------------------------------------------
CAG33136. 45 ------------------------------------------------------------
chr13 75567220 ????????????????????????????????????????????????????????????
17400 -----|||||||||||||||||||||||||||||||||||||||||||||||||||||||
CAG33136. 45 -----???????????????????????????????????????????????????????
chr13 75567280 ???????????????????????????????? 75567312
17460 |||||||||||||||||||||||||||||||| 17492
CAG33136. 100 ???????????????????????????????? 132
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr13 75549820 75567312 CAG33136.1 986 + 75549820 75567312 0 2 45,87, 0,17405,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 17360)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 17360)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 17360)
self.assertEqual(counts.gaps, 17360)
self.assertEqual(counts.aligned, 132)
alignment = next(alignments)
self.assertEqual(alignment.score, 1000)
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertLess(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr13")
self.assertEqual(alignment.query.id, "CAG33136.1")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[75604767, 75604827, 75605728, 75605809],
[ 0, 60, 60, 141]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr13 75604767 ????????????????????????????????????????????????????????????
0 ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CAG33136. 0 ????????????????????????????????????????????????????????????
chr13 75604827 ????????????????????????????????????????????????????????????
60 ------------------------------------------------------------
CAG33136. 60 ------------------------------------------------------------
chr13 75604887 ????????????????????????????????????????????????????????????
120 ------------------------------------------------------------
CAG33136. 60 ------------------------------------------------------------
chr13 75604947 ????????????????????????????????????????????????????????????
180 ------------------------------------------------------------
CAG33136. 60 ------------------------------------------------------------
chr13 75605007 ????????????????????????????????????????????????????????????
240 ------------------------------------------------------------
CAG33136. 60 ------------------------------------------------------------
chr13 75605067 ????????????????????????????????????????????????????????????
300 ------------------------------------------------------------
CAG33136. 60 ------------------------------------------------------------
chr13 75605127 ????????????????????????????????????????????????????????????
360 ------------------------------------------------------------
CAG33136. 60 ------------------------------------------------------------
chr13 75605187 ????????????????????????????????????????????????????????????
420 ------------------------------------------------------------
CAG33136. 60 ------------------------------------------------------------
chr13 75605247 ????????????????????????????????????????????????????????????
480 ------------------------------------------------------------
CAG33136. 60 ------------------------------------------------------------
chr13 75605307 ????????????????????????????????????????????????????????????
540 ------------------------------------------------------------
CAG33136. 60 ------------------------------------------------------------
chr13 75605367 ????????????????????????????????????????????????????????????
600 ------------------------------------------------------------
CAG33136. 60 ------------------------------------------------------------
chr13 75605427 ????????????????????????????????????????????????????????????
660 ------------------------------------------------------------
CAG33136. 60 ------------------------------------------------------------
chr13 75605487 ????????????????????????????????????????????????????????????
720 ------------------------------------------------------------
CAG33136. 60 ------------------------------------------------------------
chr13 75605547 ????????????????????????????????????????????????????????????
780 ------------------------------------------------------------
CAG33136. 60 ------------------------------------------------------------
chr13 75605607 ????????????????????????????????????????????????????????????
840 ------------------------------------------------------------
CAG33136. 60 ------------------------------------------------------------
chr13 75605667 ????????????????????????????????????????????????????????????
900 ------------------------------------------------------------
CAG33136. 60 ------------------------------------------------------------
chr13 75605727 ????????????????????????????????????????????????????????????
960 -|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CAG33136. 60 -???????????????????????????????????????????????????????????
chr13 75605787 ?????????????????????? 75605809
1020 |||||||||||||||||||||| 1042
CAG33136. 119 ?????????????????????? 141
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr13 75604767 75605809 CAG33136.1 1000 + 75604767 75605809 0 2 60,81, 0,961,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 901)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 901)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 901)
self.assertEqual(counts.gaps, 901)
self.assertEqual(counts.aligned, 141)
alignment = next(alignments)
self.assertEqual(alignment.score, 1000)
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertLess(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr13")
self.assertEqual(alignment.query.id, "CAG33136.1")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[75594914, 75594989],
[ 0, 75]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr13 75594914 ????????????????????????????????????????????????????????????
0 ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CAG33136. 0 ????????????????????????????????????????????????????????????
chr13 75594974 ??????????????? 75594989
60 ||||||||||||||| 75
CAG33136. 60 ??????????????? 75
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr13 75594914 75594989 CAG33136.1 1000 + 75594914 75594989 0 1 75, 0,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 75)
alignment = next(alignments)
self.assertEqual(alignment.score, 1000)
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertLess(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr13")
self.assertEqual(alignment.query.id, "CAG33136.1")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[75569459, 75569507],
[ 0, 48]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr13 75569459 ???????????????????????????????????????????????? 75569507
0 |||||||||||||||||||||||||||||||||||||||||||||||| 48
CAG33136. 0 ???????????????????????????????????????????????? 48
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr13 75569459 75569507 CAG33136.1 1000 + 75569459 75569507 0 1 48, 0,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 48)
alignment = next(alignments)
self.assertEqual(alignment.score, 530)
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertLess(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr4")
self.assertEqual(alignment.query.id, "CAG33136.1")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[41260685, 41260787],
[ 0, 102]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr4 41260685 ????????????????????????????????????????????????????????????
0 ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CAG33136. 0 ????????????????????????????????????????????????????????????
chr4 41260745 ?????????????????????????????????????????? 41260787
60 |||||||||||||||||||||||||||||||||||||||||| 102
CAG33136. 60 ?????????????????????????????????????????? 102
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr4 41260685 41260787 CAG33136.1 530 + 41260685 41260787 0 1 102, 0,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 102)
alignment = next(alignments)
self.assertEqual(alignment.score, 166)
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertLess(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr4")
self.assertEqual(alignment.query.id, "CAG33136.1")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[41257605, 41257731, 41263227, 41263290],
[ 0, 126, 126, 189]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
chr4 41257605 ????????????????????????????????????????????????????????????
0 ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CAG33136. 0 ????????????????????????????????????????????????????????????
chr4 41257665 ????????????????????????????????????????????????????????????
60 ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CAG33136. 60 ????????????????????????????????????????????????????????????
chr4 41257725 ????????????????????????????????????????????????????????????
120 ||||||------------------------------------------------------
CAG33136. 120 ??????------------------------------------------------------
chr4 41257785 ????????????????????????????????????????????????????????????
180 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41257845 ????????????????????????????????????????????????????????????
240 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41257905 ????????????????????????????????????????????????????????????
300 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41257965 ????????????????????????????????????????????????????????????
360 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41258025 ????????????????????????????????????????????????????????????
420 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41258085 ????????????????????????????????????????????????????????????
480 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41258145 ????????????????????????????????????????????????????????????
540 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41258205 ????????????????????????????????????????????????????????????
600 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41258265 ????????????????????????????????????????????????????????????
660 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41258325 ????????????????????????????????????????????????????????????
720 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41258385 ????????????????????????????????????????????????????????????
780 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41258445 ????????????????????????????????????????????????????????????
840 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41258505 ????????????????????????????????????????????????????????????
900 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41258565 ????????????????????????????????????????????????????????????
960 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41258625 ????????????????????????????????????????????????????????????
1020 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41258685 ????????????????????????????????????????????????????????????
1080 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41258745 ????????????????????????????????????????????????????????????
1140 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41258805 ????????????????????????????????????????????????????????????
1200 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41258865 ????????????????????????????????????????????????????????????
1260 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41258925 ????????????????????????????????????????????????????????????
1320 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41258985 ????????????????????????????????????????????????????????????
1380 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41259045 ????????????????????????????????????????????????????????????
1440 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41259105 ????????????????????????????????????????????????????????????
1500 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41259165 ????????????????????????????????????????????????????????????
1560 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41259225 ????????????????????????????????????????????????????????????
1620 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41259285 ????????????????????????????????????????????????????????????
1680 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41259345 ????????????????????????????????????????????????????????????
1740 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41259405 ????????????????????????????????????????????????????????????
1800 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41259465 ????????????????????????????????????????????????????????????
1860 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41259525 ????????????????????????????????????????????????????????????
1920 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41259585 ????????????????????????????????????????????????????????????
1980 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41259645 ????????????????????????????????????????????????????????????
2040 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41259705 ????????????????????????????????????????????????????????????
2100 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41259765 ????????????????????????????????????????????????????????????
2160 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41259825 ????????????????????????????????????????????????????????????
2220 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41259885 ????????????????????????????????????????????????????????????
2280 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41259945 ????????????????????????????????????????????????????????????
2340 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41260005 ????????????????????????????????????????????????????????????
2400 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41260065 ????????????????????????????????????????????????????????????
2460 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41260125 ????????????????????????????????????????????????????????????
2520 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41260185 ????????????????????????????????????????????????????????????
2580 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41260245 ????????????????????????????????????????????????????????????
2640 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41260305 ????????????????????????????????????????????????????????????
2700 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41260365 ????????????????????????????????????????????????????????????
2760 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41260425 ????????????????????????????????????????????????????????????
2820 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41260485 ????????????????????????????????????????????????????????????
2880 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41260545 ????????????????????????????????????????????????????????????
2940 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41260605 ????????????????????????????????????????????????????????????
3000 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41260665 ????????????????????????????????????????????????????????????
3060 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41260725 ????????????????????????????????????????????????????????????
3120 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41260785 ????????????????????????????????????????????????????????????
3180 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41260845 ????????????????????????????????????????????????????????????
3240 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41260905 ????????????????????????????????????????????????????????????
3300 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41260965 ????????????????????????????????????????????????????????????
3360 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41261025 ????????????????????????????????????????????????????????????
3420 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41261085 ????????????????????????????????????????????????????????????
3480 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41261145 ????????????????????????????????????????????????????????????
3540 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41261205 ????????????????????????????????????????????????????????????
3600 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41261265 ????????????????????????????????????????????????????????????
3660 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41261325 ????????????????????????????????????????????????????????????
3720 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41261385 ????????????????????????????????????????????????????????????
3780 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41261445 ????????????????????????????????????????????????????????????
3840 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41261505 ????????????????????????????????????????????????????????????
3900 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41261565 ????????????????????????????????????????????????????????????
3960 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41261625 ????????????????????????????????????????????????????????????
4020 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41261685 ????????????????????????????????????????????????????????????
4080 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41261745 ????????????????????????????????????????????????????????????
4140 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41261805 ????????????????????????????????????????????????????????????
4200 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41261865 ????????????????????????????????????????????????????????????
4260 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41261925 ????????????????????????????????????????????????????????????
4320 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41261985 ????????????????????????????????????????????????????????????
4380 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41262045 ????????????????????????????????????????????????????????????
4440 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41262105 ????????????????????????????????????????????????????????????
4500 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41262165 ????????????????????????????????????????????????????????????
4560 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41262225 ????????????????????????????????????????????????????????????
4620 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41262285 ????????????????????????????????????????????????????????????
4680 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41262345 ????????????????????????????????????????????????????????????
4740 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41262405 ????????????????????????????????????????????????????????????
4800 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41262465 ????????????????????????????????????????????????????????????
4860 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41262525 ????????????????????????????????????????????????????????????
4920 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41262585 ????????????????????????????????????????????????????????????
4980 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41262645 ????????????????????????????????????????????????????????????
5040 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41262705 ????????????????????????????????????????????????????????????
5100 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41262765 ????????????????????????????????????????????????????????????
5160 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41262825 ????????????????????????????????????????????????????????????
5220 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41262885 ????????????????????????????????????????????????????????????
5280 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41262945 ????????????????????????????????????????????????????????????
5340 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41263005 ????????????????????????????????????????????????????????????
5400 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41263065 ????????????????????????????????????????????????????????????
5460 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41263125 ????????????????????????????????????????????????????????????
5520 ------------------------------------------------------------
CAG33136. 126 ------------------------------------------------------------
chr4 41263185 ????????????????????????????????????????????????????????????
5580 ------------------------------------------||||||||||||||||||
CAG33136. 126 ------------------------------------------??????????????????
chr4 41263245 ????????????????????????????????????????????? 41263290
5640 ||||||||||||||||||||||||||||||||||||||||||||| 5685
CAG33136. 144 ????????????????????????????????????????????? 189
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
chr4 41257605 41263290 CAG33136.1 166 + 41257605 41263290 0 2 126,63, 0,5622,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 5496)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 5496)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 5496)
self.assertEqual(counts.gaps, 5496)
self.assertEqual(counts.aligned, 189)
self.assertRaises(StopIteration, next, alignments)
def test_writing_psl_35_001(self):
"""Test writing the alignments in psl_35_001.bed."""
path = "Blat/psl_35_001.bed"
with open(path) as stream:
original_data = stream.read()
alignments = Align.parse(path, "bed")
stream = StringIO()
n = Align.write(alignments, stream, "bed")
self.assertEqual(n, 8)
stream.seek(0)
written_data = stream.read()
stream.close()
self.assertEqual(original_data, written_data)
def test_reading_psl_35_002(self):
"""Test parsing psl_35_002.bed."""
path = "Blat/psl_35_002.bed"
alignments = Align.parse(path, "bed")
alignment = next(alignments)
self.assertEqual(alignment.score, 972)
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertLess(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "KI537979")
self.assertEqual(alignment.query.id, "CAG33136.1")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[9712654, 9712786, 9715941, 9716097, 9716445, 9716532, 9718374,
9718422, 9739264, 9739339, 9743706, 9743766, 9744511, 9744592],
[ 0, 132, 132, 288, 288, 375, 375,
423, 423, 498, 498, 558, 558, 639]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
KI537979 9712654 ????????????????????????????????????????????????????????????
0 ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CAG33136. 0 ????????????????????????????????????????????????????????????
KI537979 9712714 ????????????????????????????????????????????????????????????
60 ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CAG33136. 60 ????????????????????????????????????????????????????????????
KI537979 9712774 ????????????????????????????????????????????????????????????
120 ||||||||||||------------------------------------------------
CAG33136. 120 ????????????------------------------------------------------
KI537979 9712834 ????????????????????????????????????????????????????????????
180 ------------------------------------------------------------
CAG33136. 132 ------------------------------------------------------------
KI537979 9712894 ????????????????????????????????????????????????????????????
240 ------------------------------------------------------------
CAG33136. 132 ------------------------------------------------------------
KI537979 9712954 ????????????????????????????????????????????????????????????
300 ------------------------------------------------------------
CAG33136. 132 ------------------------------------------------------------
KI537979 9713014 ????????????????????????????????????????????????????????????
360 ------------------------------------------------------------
CAG33136. 132 ------------------------------------------------------------
KI537979 9713074 ????????????????????????????????????????????????????????????
420 ------------------------------------------------------------
CAG33136. 132 ------------------------------------------------------------
KI537979 9713134 ????????????????????????????????????????????????????????????
480 ------------------------------------------------------------
CAG33136. 132 ------------------------------------------------------------
KI537979 9713194 ????????????????????????????????????????????????????????????
540 ------------------------------------------------------------
CAG33136. 132 ------------------------------------------------------------
KI537979 9713254 ????????????????????????????????????????????????????????????
600 ------------------------------------------------------------
CAG33136. 132 ------------------------------------------------------------
KI537979 9713314 ????????????????????????????????????????????????????????????
660 ------------------------------------------------------------
CAG33136. 132 ------------------------------------------------------------
KI537979 9713374 ????????????????????????????????????????????????????????????
720 ------------------------------------------------------------
CAG33136. 132 ------------------------------------------------------------
KI537979 9713434 ????????????????????????????????????????????????????????????
780 ------------------------------------------------------------
CAG33136. 132 ------------------------------------------------------------
KI537979 9713494 ????????????????????????????????????????????????????????????
840 ------------------------------------------------------------
CAG33136. 132 ------------------------------------------------------------
KI537979 9713554 ????????????????????????????????????????????????????????????
900 ------------------------------------------------------------
CAG33136. 132 ------------------------------------------------------------
KI537979 9713614 ????????????????????????????????????????????????????????????
960 ------------------------------------------------------------
CAG33136. 132 ------------------------------------------------------------
KI537979 9713674 ????????????????????????????????????????????????????????????
1020 ------------------------------------------------------------
CAG33136. 132 ------------------------------------------------------------
KI537979 9713734 ????????????????????????????????????????????????????????????
1080 ------------------------------------------------------------
CAG33136. 132 ------------------------------------------------------------
KI537979 9713794 ????????????????????????????????????????????????????????????
1140 ------------------------------------------------------------
CAG33136. 132 ------------------------------------------------------------
KI537979 9713854 ????????????????????????????????????????????????????????????
1200 ------------------------------------------------------------
CAG33136. 132 ------------------------------------------------------------
KI537979 9713914 ????????????????????????????????????????????????????????????
1260 ------------------------------------------------------------
CAG33136. 132 ------------------------------------------------------------
KI537979 9713974 ????????????????????????????????????????????????????????????
1320 ------------------------------------------------------------
CAG33136. 132 ------------------------------------------------------------
KI537979 9714034 ????????????????????????????????????????????????????????????
1380 ------------------------------------------------------------
CAG33136. 132 ------------------------------------------------------------
KI537979 9714094 ????????????????????????????????????????????????????????????
1440 ------------------------------------------------------------
CAG33136. 132 ------------------------------------------------------------
KI537979 9714154 ????????????????????????????????????????????????????????????
1500 ------------------------------------------------------------
CAG33136. 132 ------------------------------------------------------------
KI537979 9714214 ????????????????????????????????????????????????????????????
1560 ------------------------------------------------------------
CAG33136. 132 ------------------------------------------------------------
KI537979 9714274 ????????????????????????????????????????????????????????????
1620 ------------------------------------------------------------
CAG33136. 132 ------------------------------------------------------------
KI537979 9714334 ????????????????????????????????????????????????????????????
1680 ------------------------------------------------------------
CAG33136. 132 ------------------------------------------------------------
KI537979 9714394 ????????????????????????????????????????????????????????????
1740 ------------------------------------------------------------
CAG33136. 132 ------------------------------------------------------------
KI537979 9714454 ????????????????????????????????????????????????????????????
1800 ------------------------------------------------------------
CAG33136. 132 ------------------------------------------------------------
KI537979 9714514 ????????????????????????????????????????????????????????????
1860 ------------------------------------------------------------
CAG33136. 132 ------------------------------------------------------------
KI537979 9714574 ????????????????????????????????????????????????????????????
1920 ------------------------------------------------------------
CAG33136. 132 ------------------------------------------------------------
KI537979 9714634 ????????????????????????????????????????????????????????????
1980 ------------------------------------------------------------
CAG33136. 132 ------------------------------------------------------------
KI537979 9714694 ????????????????????????????????????????????????????????????
2040 ------------------------------------------------------------
CAG33136. 132 ------------------------------------------------------------
KI537979 9714754 ????????????????????????????????????????????????????????????
2100 ------------------------------------------------------------
CAG33136. 132 ------------------------------------------------------------
KI537979 9714814 ????????????????????????????????????????????????????????????
2160 ------------------------------------------------------------
CAG33136. 132 ------------------------------------------------------------
KI537979 9714874 ????????????????????????????????????????????????????????????
2220 ------------------------------------------------------------
CAG33136. 132 ------------------------------------------------------------
KI537979 9714934 ????????????????????????????????????????????????????????????
2280 ------------------------------------------------------------
CAG33136. 132 ------------------------------------------------------------
KI537979 9714994 ????????????????????????????????????????????????????????????
2340 ------------------------------------------------------------
CAG33136. 132 ------------------------------------------------------------
KI537979 9715054 ????????????????????????????????????????????????????????????
2400 ------------------------------------------------------------
CAG33136. 132 ------------------------------------------------------------
KI537979 9715114 ????????????????????????????????????????????????????????????
2460 ------------------------------------------------------------
CAG33136. 132 ------------------------------------------------------------
KI537979 9715174 ????????????????????????????????????????????????????????????
2520 ------------------------------------------------------------
CAG33136. 132 ------------------------------------------------------------
KI537979 9715234 ????????????????????????????????????????????????????????????
2580 ------------------------------------------------------------
CAG33136. 132 ------------------------------------------------------------
KI537979 9715294 ????????????????????????????????????????????????????????????
2640 ------------------------------------------------------------
CAG33136. 132 ------------------------------------------------------------
KI537979 9715354 ????????????????????????????????????????????????????????????
2700 ------------------------------------------------------------
CAG33136. 132 ------------------------------------------------------------
KI537979 9715414 ????????????????????????????????????????????????????????????
2760 ------------------------------------------------------------
CAG33136. 132 ------------------------------------------------------------
KI537979 9715474 ????????????????????????????????????????????????????????????
2820 ------------------------------------------------------------
CAG33136. 132 ------------------------------------------------------------
KI537979 9715534 ????????????????????????????????????????????????????????????
2880 ------------------------------------------------------------
CAG33136. 132 ------------------------------------------------------------
KI537979 9715594 ????????????????????????????????????????????????????????????
2940 ------------------------------------------------------------
CAG33136. 132 ------------------------------------------------------------
KI537979 9715654 ????????????????????????????????????????????????????????????
3000 ------------------------------------------------------------
CAG33136. 132 ------------------------------------------------------------
KI537979 9715714 ????????????????????????????????????????????????????????????
3060 ------------------------------------------------------------
CAG33136. 132 ------------------------------------------------------------
KI537979 9715774 ????????????????????????????????????????????????????????????
3120 ------------------------------------------------------------
CAG33136. 132 ------------------------------------------------------------
KI537979 9715834 ????????????????????????????????????????????????????????????
3180 ------------------------------------------------------------
CAG33136. 132 ------------------------------------------------------------
KI537979 9715894 ????????????????????????????????????????????????????????????
3240 -----------------------------------------------|||||||||||||
CAG33136. 132 -----------------------------------------------?????????????
KI537979 9715954 ????????????????????????????????????????????????????????????
3300 ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CAG33136. 145 ????????????????????????????????????????????????????????????
KI537979 9716014 ????????????????????????????????????????????????????????????
3360 ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CAG33136. 205 ????????????????????????????????????????????????????????????
KI537979 9716074 ????????????????????????????????????????????????????????????
3420 |||||||||||||||||||||||-------------------------------------
CAG33136. 265 ???????????????????????-------------------------------------
KI537979 9716134 ????????????????????????????????????????????????????????????
3480 ------------------------------------------------------------
CAG33136. 288 ------------------------------------------------------------
KI537979 9716194 ????????????????????????????????????????????????????????????
3540 ------------------------------------------------------------
CAG33136. 288 ------------------------------------------------------------
KI537979 9716254 ????????????????????????????????????????????????????????????
3600 ------------------------------------------------------------
CAG33136. 288 ------------------------------------------------------------
KI537979 9716314 ????????????????????????????????????????????????????????????
3660 ------------------------------------------------------------
CAG33136. 288 ------------------------------------------------------------
KI537979 9716374 ????????????????????????????????????????????????????????????
3720 ------------------------------------------------------------
CAG33136. 288 ------------------------------------------------------------
KI537979 9716434 ????????????????????????????????????????????????????????????
3780 -----------|||||||||||||||||||||||||||||||||||||||||||||||||
CAG33136. 288 -----------?????????????????????????????????????????????????
KI537979 9716494 ????????????????????????????????????????????????????????????
3840 ||||||||||||||||||||||||||||||||||||||----------------------
CAG33136. 337 ??????????????????????????????????????----------------------
KI537979 9716554 ????????????????????????????????????????????????????????????
3900 ------------------------------------------------------------
CAG33136. 375 ------------------------------------------------------------
KI537979 9716614 ????????????????????????????????????????????????????????????
3960 ------------------------------------------------------------
CAG33136. 375 ------------------------------------------------------------
KI537979 9716674 ????????????????????????????????????????????????????????????
4020 ------------------------------------------------------------
CAG33136. 375 ------------------------------------------------------------
KI537979 9716734 ????????????????????????????????????????????????????????????
4080 ------------------------------------------------------------
CAG33136. 375 ------------------------------------------------------------
KI537979 9716794 ????????????????????????????????????????????????????????????
4140 ------------------------------------------------------------
CAG33136. 375 ------------------------------------------------------------
KI537979 9716854 ????????????????????????????????????????????????????????????
4200 ------------------------------------------------------------
CAG33136. 375 ------------------------------------------------------------
KI537979 9716914 ????????????????????????????????????????????????????????????
4260 ------------------------------------------------------------
CAG33136. 375 ------------------------------------------------------------
KI537979 9716974 ????????????????????????????????????????????????????????????
4320 ------------------------------------------------------------
CAG33136. 375 ------------------------------------------------------------
KI537979 9717034 ????????????????????????????????????????????????????????????
4380 ------------------------------------------------------------
CAG33136. 375 ------------------------------------------------------------
KI537979 9717094 ????????????????????????????????????????????????????????????
4440 ------------------------------------------------------------
CAG33136. 375 ------------------------------------------------------------
KI537979 9717154 ????????????????????????????????????????????????????????????
4500 ------------------------------------------------------------
CAG33136. 375 ------------------------------------------------------------
KI537979 9717214 ????????????????????????????????????????????????????????????
4560 ------------------------------------------------------------
CAG33136. 375 ------------------------------------------------------------
KI537979 9717274 ????????????????????????????????????????????????????????????
4620 ------------------------------------------------------------
CAG33136. 375 ------------------------------------------------------------
KI537979 9717334 ????????????????????????????????????????????????????????????
4680 ------------------------------------------------------------
CAG33136. 375 ------------------------------------------------------------
KI537979 9717394 ????????????????????????????????????????????????????????????
4740 ------------------------------------------------------------
CAG33136. 375 ------------------------------------------------------------
KI537979 9717454 ????????????????????????????????????????????????????????????
4800 ------------------------------------------------------------
CAG33136. 375 ------------------------------------------------------------
KI537979 9717514 ????????????????????????????????????????????????????????????
4860 ------------------------------------------------------------
CAG33136. 375 ------------------------------------------------------------
KI537979 9717574 ????????????????????????????????????????????????????????????
4920 ------------------------------------------------------------
CAG33136. 375 ------------------------------------------------------------
KI537979 9717634 ????????????????????????????????????????????????????????????
4980 ------------------------------------------------------------
CAG33136. 375 ------------------------------------------------------------
KI537979 9717694 ????????????????????????????????????????????????????????????
5040 ------------------------------------------------------------
CAG33136. 375 ------------------------------------------------------------
KI537979 9717754 ????????????????????????????????????????????????????????????
5100 ------------------------------------------------------------
CAG33136. 375 ------------------------------------------------------------
KI537979 9717814 ????????????????????????????????????????????????????????????
5160 ------------------------------------------------------------
CAG33136. 375 ------------------------------------------------------------
KI537979 9717874 ????????????????????????????????????????????????????????????
5220 ------------------------------------------------------------
CAG33136. 375 ------------------------------------------------------------
KI537979 9717934 ????????????????????????????????????????????????????????????
5280 ------------------------------------------------------------
CAG33136. 375 ------------------------------------------------------------
KI537979 9717994 ????????????????????????????????????????????????????????????
5340 ------------------------------------------------------------
CAG33136. 375 ------------------------------------------------------------
KI537979 9718054 ????????????????????????????????????????????????????????????
5400 ------------------------------------------------------------
CAG33136. 375 ------------------------------------------------------------
KI537979 9718114 ????????????????????????????????????????????????????????????
5460 ------------------------------------------------------------
CAG33136. 375 ------------------------------------------------------------
KI537979 9718174 ????????????????????????????????????????????????????????????
5520 ------------------------------------------------------------
CAG33136. 375 ------------------------------------------------------------
KI537979 9718234 ????????????????????????????????????????????????????????????
5580 ------------------------------------------------------------
CAG33136. 375 ------------------------------------------------------------
KI537979 9718294 ????????????????????????????????????????????????????????????
5640 ------------------------------------------------------------
CAG33136. 375 ------------------------------------------------------------
KI537979 9718354 ????????????????????????????????????????????????????????????
5700 --------------------||||||||||||||||||||||||||||||||||||||||
CAG33136. 375 --------------------????????????????????????????????????????
KI537979 9718414 ????????????????????????????????????????????????????????????
5760 ||||||||----------------------------------------------------
CAG33136. 415 ????????----------------------------------------------------
KI537979 9718474 ????????????????????????????????????????????????????????????
5820 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9718534 ????????????????????????????????????????????????????????????
5880 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9718594 ????????????????????????????????????????????????????????????
5940 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9718654 ????????????????????????????????????????????????????????????
6000 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9718714 ????????????????????????????????????????????????????????????
6060 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9718774 ????????????????????????????????????????????????????????????
6120 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9718834 ????????????????????????????????????????????????????????????
6180 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9718894 ????????????????????????????????????????????????????????????
6240 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9718954 ????????????????????????????????????????????????????????????
6300 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9719014 ????????????????????????????????????????????????????????????
6360 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9719074 ????????????????????????????????????????????????????????????
6420 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9719134 ????????????????????????????????????????????????????????????
6480 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9719194 ????????????????????????????????????????????????????????????
6540 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9719254 ????????????????????????????????????????????????????????????
6600 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9719314 ????????????????????????????????????????????????????????????
6660 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9719374 ????????????????????????????????????????????????????????????
6720 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9719434 ????????????????????????????????????????????????????????????
6780 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9719494 ????????????????????????????????????????????????????????????
6840 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9719554 ????????????????????????????????????????????????????????????
6900 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9719614 ????????????????????????????????????????????????????????????
6960 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9719674 ????????????????????????????????????????????????????????????
7020 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9719734 ????????????????????????????????????????????????????????????
7080 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9719794 ????????????????????????????????????????????????????????????
7140 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9719854 ????????????????????????????????????????????????????????????
7200 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9719914 ????????????????????????????????????????????????????????????
7260 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9719974 ????????????????????????????????????????????????????????????
7320 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9720034 ????????????????????????????????????????????????????????????
7380 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9720094 ????????????????????????????????????????????????????????????
7440 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9720154 ????????????????????????????????????????????????????????????
7500 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9720214 ????????????????????????????????????????????????????????????
7560 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9720274 ????????????????????????????????????????????????????????????
7620 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9720334 ????????????????????????????????????????????????????????????
7680 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9720394 ????????????????????????????????????????????????????????????
7740 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9720454 ????????????????????????????????????????????????????????????
7800 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9720514 ????????????????????????????????????????????????????????????
7860 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9720574 ????????????????????????????????????????????????????????????
7920 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9720634 ????????????????????????????????????????????????????????????
7980 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9720694 ????????????????????????????????????????????????????????????
8040 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9720754 ????????????????????????????????????????????????????????????
8100 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9720814 ????????????????????????????????????????????????????????????
8160 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9720874 ????????????????????????????????????????????????????????????
8220 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9720934 ????????????????????????????????????????????????????????????
8280 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9720994 ????????????????????????????????????????????????????????????
8340 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9721054 ????????????????????????????????????????????????????????????
8400 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9721114 ????????????????????????????????????????????????????????????
8460 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9721174 ????????????????????????????????????????????????????????????
8520 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9721234 ????????????????????????????????????????????????????????????
8580 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9721294 ????????????????????????????????????????????????????????????
8640 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9721354 ????????????????????????????????????????????????????????????
8700 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9721414 ????????????????????????????????????????????????????????????
8760 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9721474 ????????????????????????????????????????????????????????????
8820 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9721534 ????????????????????????????????????????????????????????????
8880 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9721594 ????????????????????????????????????????????????????????????
8940 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9721654 ????????????????????????????????????????????????????????????
9000 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9721714 ????????????????????????????????????????????????????????????
9060 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9721774 ????????????????????????????????????????????????????????????
9120 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9721834 ????????????????????????????????????????????????????????????
9180 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9721894 ????????????????????????????????????????????????????????????
9240 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9721954 ????????????????????????????????????????????????????????????
9300 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9722014 ????????????????????????????????????????????????????????????
9360 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9722074 ????????????????????????????????????????????????????????????
9420 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9722134 ????????????????????????????????????????????????????????????
9480 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9722194 ????????????????????????????????????????????????????????????
9540 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9722254 ????????????????????????????????????????????????????????????
9600 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9722314 ????????????????????????????????????????????????????????????
9660 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9722374 ????????????????????????????????????????????????????????????
9720 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9722434 ????????????????????????????????????????????????????????????
9780 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9722494 ????????????????????????????????????????????????????????????
9840 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9722554 ????????????????????????????????????????????????????????????
9900 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9722614 ????????????????????????????????????????????????????????????
9960 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9722674 ????????????????????????????????????????????????????????????
10020 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9722734 ????????????????????????????????????????????????????????????
10080 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9722794 ????????????????????????????????????????????????????????????
10140 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9722854 ????????????????????????????????????????????????????????????
10200 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9722914 ????????????????????????????????????????????????????????????
10260 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9722974 ????????????????????????????????????????????????????????????
10320 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9723034 ????????????????????????????????????????????????????????????
10380 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9723094 ????????????????????????????????????????????????????????????
10440 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9723154 ????????????????????????????????????????????????????????????
10500 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9723214 ????????????????????????????????????????????????????????????
10560 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9723274 ????????????????????????????????????????????????????????????
10620 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9723334 ????????????????????????????????????????????????????????????
10680 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9723394 ????????????????????????????????????????????????????????????
10740 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9723454 ????????????????????????????????????????????????????????????
10800 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9723514 ????????????????????????????????????????????????????????????
10860 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9723574 ????????????????????????????????????????????????????????????
10920 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9723634 ????????????????????????????????????????????????????????????
10980 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9723694 ????????????????????????????????????????????????????????????
11040 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9723754 ????????????????????????????????????????????????????????????
11100 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9723814 ????????????????????????????????????????????????????????????
11160 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9723874 ????????????????????????????????????????????????????????????
11220 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9723934 ????????????????????????????????????????????????????????????
11280 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9723994 ????????????????????????????????????????????????????????????
11340 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9724054 ????????????????????????????????????????????????????????????
11400 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9724114 ????????????????????????????????????????????????????????????
11460 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9724174 ????????????????????????????????????????????????????????????
11520 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9724234 ????????????????????????????????????????????????????????????
11580 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9724294 ????????????????????????????????????????????????????????????
11640 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9724354 ????????????????????????????????????????????????????????????
11700 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9724414 ????????????????????????????????????????????????????????????
11760 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9724474 ????????????????????????????????????????????????????????????
11820 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9724534 ????????????????????????????????????????????????????????????
11880 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9724594 ????????????????????????????????????????????????????????????
11940 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9724654 ????????????????????????????????????????????????????????????
12000 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9724714 ????????????????????????????????????????????????????????????
12060 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9724774 ????????????????????????????????????????????????????????????
12120 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9724834 ????????????????????????????????????????????????????????????
12180 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9724894 ????????????????????????????????????????????????????????????
12240 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9724954 ????????????????????????????????????????????????????????????
12300 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9725014 ????????????????????????????????????????????????????????????
12360 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9725074 ????????????????????????????????????????????????????????????
12420 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9725134 ????????????????????????????????????????????????????????????
12480 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9725194 ????????????????????????????????????????????????????????????
12540 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9725254 ????????????????????????????????????????????????????????????
12600 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9725314 ????????????????????????????????????????????????????????????
12660 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9725374 ????????????????????????????????????????????????????????????
12720 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9725434 ????????????????????????????????????????????????????????????
12780 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9725494 ????????????????????????????????????????????????????????????
12840 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9725554 ????????????????????????????????????????????????????????????
12900 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9725614 ????????????????????????????????????????????????????????????
12960 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9725674 ????????????????????????????????????????????????????????????
13020 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9725734 ????????????????????????????????????????????????????????????
13080 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9725794 ????????????????????????????????????????????????????????????
13140 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9725854 ????????????????????????????????????????????????????????????
13200 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9725914 ????????????????????????????????????????????????????????????
13260 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9725974 ????????????????????????????????????????????????????????????
13320 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9726034 ????????????????????????????????????????????????????????????
13380 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9726094 ????????????????????????????????????????????????????????????
13440 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9726154 ????????????????????????????????????????????????????????????
13500 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9726214 ????????????????????????????????????????????????????????????
13560 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9726274 ????????????????????????????????????????????????????????????
13620 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9726334 ????????????????????????????????????????????????????????????
13680 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9726394 ????????????????????????????????????????????????????????????
13740 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9726454 ????????????????????????????????????????????????????????????
13800 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9726514 ????????????????????????????????????????????????????????????
13860 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9726574 ????????????????????????????????????????????????????????????
13920 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9726634 ????????????????????????????????????????????????????????????
13980 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9726694 ????????????????????????????????????????????????????????????
14040 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9726754 ????????????????????????????????????????????????????????????
14100 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9726814 ????????????????????????????????????????????????????????????
14160 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9726874 ????????????????????????????????????????????????????????????
14220 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9726934 ????????????????????????????????????????????????????????????
14280 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9726994 ????????????????????????????????????????????????????????????
14340 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9727054 ????????????????????????????????????????????????????????????
14400 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9727114 ????????????????????????????????????????????????????????????
14460 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9727174 ????????????????????????????????????????????????????????????
14520 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9727234 ????????????????????????????????????????????????????????????
14580 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9727294 ????????????????????????????????????????????????????????????
14640 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9727354 ????????????????????????????????????????????????????????????
14700 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9727414 ????????????????????????????????????????????????????????????
14760 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9727474 ????????????????????????????????????????????????????????????
14820 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9727534 ????????????????????????????????????????????????????????????
14880 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9727594 ????????????????????????????????????????????????????????????
14940 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9727654 ????????????????????????????????????????????????????????????
15000 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9727714 ????????????????????????????????????????????????????????????
15060 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9727774 ????????????????????????????????????????????????????????????
15120 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9727834 ????????????????????????????????????????????????????????????
15180 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9727894 ????????????????????????????????????????????????????????????
15240 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9727954 ????????????????????????????????????????????????????????????
15300 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9728014 ????????????????????????????????????????????????????????????
15360 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9728074 ????????????????????????????????????????????????????????????
15420 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9728134 ????????????????????????????????????????????????????????????
15480 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9728194 ????????????????????????????????????????????????????????????
15540 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9728254 ????????????????????????????????????????????????????????????
15600 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9728314 ????????????????????????????????????????????????????????????
15660 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9728374 ????????????????????????????????????????????????????????????
15720 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9728434 ????????????????????????????????????????????????????????????
15780 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9728494 ????????????????????????????????????????????????????????????
15840 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9728554 ????????????????????????????????????????????????????????????
15900 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9728614 ????????????????????????????????????????????????????????????
15960 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9728674 ????????????????????????????????????????????????????????????
16020 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9728734 ????????????????????????????????????????????????????????????
16080 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9728794 ????????????????????????????????????????????????????????????
16140 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9728854 ????????????????????????????????????????????????????????????
16200 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9728914 ????????????????????????????????????????????????????????????
16260 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9728974 ????????????????????????????????????????????????????????????
16320 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9729034 ????????????????????????????????????????????????????????????
16380 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9729094 ????????????????????????????????????????????????????????????
16440 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9729154 ????????????????????????????????????????????????????????????
16500 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9729214 ????????????????????????????????????????????????????????????
16560 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9729274 ????????????????????????????????????????????????????????????
16620 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9729334 ????????????????????????????????????????????????????????????
16680 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9729394 ????????????????????????????????????????????????????????????
16740 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9729454 ????????????????????????????????????????????????????????????
16800 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9729514 ????????????????????????????????????????????????????????????
16860 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9729574 ????????????????????????????????????????????????????????????
16920 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9729634 ????????????????????????????????????????????????????????????
16980 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9729694 ????????????????????????????????????????????????????????????
17040 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9729754 ????????????????????????????????????????????????????????????
17100 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9729814 ????????????????????????????????????????????????????????????
17160 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9729874 ????????????????????????????????????????????????????????????
17220 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9729934 ????????????????????????????????????????????????????????????
17280 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9729994 ????????????????????????????????????????????????????????????
17340 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9730054 ????????????????????????????????????????????????????????????
17400 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9730114 ????????????????????????????????????????????????????????????
17460 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9730174 ????????????????????????????????????????????????????????????
17520 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9730234 ????????????????????????????????????????????????????????????
17580 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9730294 ????????????????????????????????????????????????????????????
17640 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9730354 ????????????????????????????????????????????????????????????
17700 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9730414 ????????????????????????????????????????????????????????????
17760 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9730474 ????????????????????????????????????????????????????????????
17820 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9730534 ????????????????????????????????????????????????????????????
17880 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9730594 ????????????????????????????????????????????????????????????
17940 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9730654 ????????????????????????????????????????????????????????????
18000 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9730714 ????????????????????????????????????????????????????????????
18060 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9730774 ????????????????????????????????????????????????????????????
18120 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9730834 ????????????????????????????????????????????????????????????
18180 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9730894 ????????????????????????????????????????????????????????????
18240 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9730954 ????????????????????????????????????????????????????????????
18300 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9731014 ????????????????????????????????????????????????????????????
18360 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9731074 ????????????????????????????????????????????????????????????
18420 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9731134 ????????????????????????????????????????????????????????????
18480 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9731194 ????????????????????????????????????????????????????????????
18540 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9731254 ????????????????????????????????????????????????????????????
18600 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9731314 ????????????????????????????????????????????????????????????
18660 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9731374 ????????????????????????????????????????????????????????????
18720 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9731434 ????????????????????????????????????????????????????????????
18780 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9731494 ????????????????????????????????????????????????????????????
18840 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9731554 ????????????????????????????????????????????????????????????
18900 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9731614 ????????????????????????????????????????????????????????????
18960 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9731674 ????????????????????????????????????????????????????????????
19020 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9731734 ????????????????????????????????????????????????????????????
19080 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9731794 ????????????????????????????????????????????????????????????
19140 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9731854 ????????????????????????????????????????????????????????????
19200 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9731914 ????????????????????????????????????????????????????????????
19260 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9731974 ????????????????????????????????????????????????????????????
19320 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9732034 ????????????????????????????????????????????????????????????
19380 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9732094 ????????????????????????????????????????????????????????????
19440 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9732154 ????????????????????????????????????????????????????????????
19500 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9732214 ????????????????????????????????????????????????????????????
19560 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9732274 ????????????????????????????????????????????????????????????
19620 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9732334 ????????????????????????????????????????????????????????????
19680 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9732394 ????????????????????????????????????????????????????????????
19740 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9732454 ????????????????????????????????????????????????????????????
19800 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9732514 ????????????????????????????????????????????????????????????
19860 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9732574 ????????????????????????????????????????????????????????????
19920 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9732634 ????????????????????????????????????????????????????????????
19980 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9732694 ????????????????????????????????????????????????????????????
20040 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9732754 ????????????????????????????????????????????????????????????
20100 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9732814 ????????????????????????????????????????????????????????????
20160 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9732874 ????????????????????????????????????????????????????????????
20220 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9732934 ????????????????????????????????????????????????????????????
20280 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9732994 ????????????????????????????????????????????????????????????
20340 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9733054 ????????????????????????????????????????????????????????????
20400 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9733114 ????????????????????????????????????????????????????????????
20460 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9733174 ????????????????????????????????????????????????????????????
20520 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9733234 ????????????????????????????????????????????????????????????
20580 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9733294 ????????????????????????????????????????????????????????????
20640 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9733354 ????????????????????????????????????????????????????????????
20700 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9733414 ????????????????????????????????????????????????????????????
20760 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9733474 ????????????????????????????????????????????????????????????
20820 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9733534 ????????????????????????????????????????????????????????????
20880 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9733594 ????????????????????????????????????????????????????????????
20940 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9733654 ????????????????????????????????????????????????????????????
21000 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9733714 ????????????????????????????????????????????????????????????
21060 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9733774 ????????????????????????????????????????????????????????????
21120 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9733834 ????????????????????????????????????????????????????????????
21180 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9733894 ????????????????????????????????????????????????????????????
21240 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9733954 ????????????????????????????????????????????????????????????
21300 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9734014 ????????????????????????????????????????????????????????????
21360 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9734074 ????????????????????????????????????????????????????????????
21420 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9734134 ????????????????????????????????????????????????????????????
21480 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9734194 ????????????????????????????????????????????????????????????
21540 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9734254 ????????????????????????????????????????????????????????????
21600 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9734314 ????????????????????????????????????????????????????????????
21660 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9734374 ????????????????????????????????????????????????????????????
21720 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9734434 ????????????????????????????????????????????????????????????
21780 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9734494 ????????????????????????????????????????????????????????????
21840 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9734554 ????????????????????????????????????????????????????????????
21900 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9734614 ????????????????????????????????????????????????????????????
21960 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9734674 ????????????????????????????????????????????????????????????
22020 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9734734 ????????????????????????????????????????????????????????????
22080 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9734794 ????????????????????????????????????????????????????????????
22140 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9734854 ????????????????????????????????????????????????????????????
22200 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9734914 ????????????????????????????????????????????????????????????
22260 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9734974 ????????????????????????????????????????????????????????????
22320 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9735034 ????????????????????????????????????????????????????????????
22380 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9735094 ????????????????????????????????????????????????????????????
22440 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9735154 ????????????????????????????????????????????????????????????
22500 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9735214 ????????????????????????????????????????????????????????????
22560 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9735274 ????????????????????????????????????????????????????????????
22620 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9735334 ????????????????????????????????????????????????????????????
22680 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9735394 ????????????????????????????????????????????????????????????
22740 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9735454 ????????????????????????????????????????????????????????????
22800 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9735514 ????????????????????????????????????????????????????????????
22860 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9735574 ????????????????????????????????????????????????????????????
22920 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9735634 ????????????????????????????????????????????????????????????
22980 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9735694 ????????????????????????????????????????????????????????????
23040 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9735754 ????????????????????????????????????????????????????????????
23100 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9735814 ????????????????????????????????????????????????????????????
23160 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9735874 ????????????????????????????????????????????????????????????
23220 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9735934 ????????????????????????????????????????????????????????????
23280 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9735994 ????????????????????????????????????????????????????????????
23340 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9736054 ????????????????????????????????????????????????????????????
23400 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9736114 ????????????????????????????????????????????????????????????
23460 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9736174 ????????????????????????????????????????????????????????????
23520 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9736234 ????????????????????????????????????????????????????????????
23580 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9736294 ????????????????????????????????????????????????????????????
23640 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9736354 ????????????????????????????????????????????????????????????
23700 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9736414 ????????????????????????????????????????????????????????????
23760 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9736474 ????????????????????????????????????????????????????????????
23820 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9736534 ????????????????????????????????????????????????????????????
23880 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9736594 ????????????????????????????????????????????????????????????
23940 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9736654 ????????????????????????????????????????????????????????????
24000 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9736714 ????????????????????????????????????????????????????????????
24060 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9736774 ????????????????????????????????????????????????????????????
24120 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9736834 ????????????????????????????????????????????????????????????
24180 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9736894 ????????????????????????????????????????????????????????????
24240 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9736954 ????????????????????????????????????????????????????????????
24300 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9737014 ????????????????????????????????????????????????????????????
24360 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9737074 ????????????????????????????????????????????????????????????
24420 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9737134 ????????????????????????????????????????????????????????????
24480 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9737194 ????????????????????????????????????????????????????????????
24540 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9737254 ????????????????????????????????????????????????????????????
24600 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9737314 ????????????????????????????????????????????????????????????
24660 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9737374 ????????????????????????????????????????????????????????????
24720 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9737434 ????????????????????????????????????????????????????????????
24780 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9737494 ????????????????????????????????????????????????????????????
24840 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9737554 ????????????????????????????????????????????????????????????
24900 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9737614 ????????????????????????????????????????????????????????????
24960 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9737674 ????????????????????????????????????????????????????????????
25020 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9737734 ????????????????????????????????????????????????????????????
25080 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9737794 ????????????????????????????????????????????????????????????
25140 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9737854 ????????????????????????????????????????????????????????????
25200 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9737914 ????????????????????????????????????????????????????????????
25260 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9737974 ????????????????????????????????????????????????????????????
25320 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9738034 ????????????????????????????????????????????????????????????
25380 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9738094 ????????????????????????????????????????????????????????????
25440 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9738154 ????????????????????????????????????????????????????????????
25500 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9738214 ????????????????????????????????????????????????????????????
25560 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9738274 ????????????????????????????????????????????????????????????
25620 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9738334 ????????????????????????????????????????????????????????????
25680 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9738394 ????????????????????????????????????????????????????????????
25740 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9738454 ????????????????????????????????????????????????????????????
25800 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9738514 ????????????????????????????????????????????????????????????
25860 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9738574 ????????????????????????????????????????????????????????????
25920 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9738634 ????????????????????????????????????????????????????????????
25980 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9738694 ????????????????????????????????????????????????????????????
26040 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9738754 ????????????????????????????????????????????????????????????
26100 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9738814 ????????????????????????????????????????????????????????????
26160 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9738874 ????????????????????????????????????????????????????????????
26220 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9738934 ????????????????????????????????????????????????????????????
26280 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9738994 ????????????????????????????????????????????????????????????
26340 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9739054 ????????????????????????????????????????????????????????????
26400 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9739114 ????????????????????????????????????????????????????????????
26460 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9739174 ????????????????????????????????????????????????????????????
26520 ------------------------------------------------------------
CAG33136. 423 ------------------------------------------------------------
KI537979 9739234 ????????????????????????????????????????????????????????????
26580 ------------------------------||||||||||||||||||||||||||||||
CAG33136. 423 ------------------------------??????????????????????????????
KI537979 9739294 ????????????????????????????????????????????????????????????
26640 |||||||||||||||||||||||||||||||||||||||||||||---------------
CAG33136. 453 ?????????????????????????????????????????????---------------
KI537979 9739354 ????????????????????????????????????????????????????????????
26700 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9739414 ????????????????????????????????????????????????????????????
26760 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9739474 ????????????????????????????????????????????????????????????
26820 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9739534 ????????????????????????????????????????????????????????????
26880 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9739594 ????????????????????????????????????????????????????????????
26940 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9739654 ????????????????????????????????????????????????????????????
27000 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9739714 ????????????????????????????????????????????????????????????
27060 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9739774 ????????????????????????????????????????????????????????????
27120 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9739834 ????????????????????????????????????????????????????????????
27180 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9739894 ????????????????????????????????????????????????????????????
27240 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9739954 ????????????????????????????????????????????????????????????
27300 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9740014 ????????????????????????????????????????????????????????????
27360 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9740074 ????????????????????????????????????????????????????????????
27420 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9740134 ????????????????????????????????????????????????????????????
27480 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9740194 ????????????????????????????????????????????????????????????
27540 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9740254 ????????????????????????????????????????????????????????????
27600 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9740314 ????????????????????????????????????????????????????????????
27660 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9740374 ????????????????????????????????????????????????????????????
27720 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9740434 ????????????????????????????????????????????????????????????
27780 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9740494 ????????????????????????????????????????????????????????????
27840 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9740554 ????????????????????????????????????????????????????????????
27900 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9740614 ????????????????????????????????????????????????????????????
27960 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9740674 ????????????????????????????????????????????????????????????
28020 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9740734 ????????????????????????????????????????????????????????????
28080 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9740794 ????????????????????????????????????????????????????????????
28140 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9740854 ????????????????????????????????????????????????????????????
28200 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9740914 ????????????????????????????????????????????????????????????
28260 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9740974 ????????????????????????????????????????????????????????????
28320 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9741034 ????????????????????????????????????????????????????????????
28380 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9741094 ????????????????????????????????????????????????????????????
28440 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9741154 ????????????????????????????????????????????????????????????
28500 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9741214 ????????????????????????????????????????????????????????????
28560 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9741274 ????????????????????????????????????????????????????????????
28620 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9741334 ????????????????????????????????????????????????????????????
28680 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9741394 ????????????????????????????????????????????????????????????
28740 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9741454 ????????????????????????????????????????????????????????????
28800 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9741514 ????????????????????????????????????????????????????????????
28860 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9741574 ????????????????????????????????????????????????????????????
28920 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9741634 ????????????????????????????????????????????????????????????
28980 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9741694 ????????????????????????????????????????????????????????????
29040 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9741754 ????????????????????????????????????????????????????????????
29100 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9741814 ????????????????????????????????????????????????????????????
29160 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9741874 ????????????????????????????????????????????????????????????
29220 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9741934 ????????????????????????????????????????????????????????????
29280 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9741994 ????????????????????????????????????????????????????????????
29340 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9742054 ????????????????????????????????????????????????????????????
29400 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9742114 ????????????????????????????????????????????????????????????
29460 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9742174 ????????????????????????????????????????????????????????????
29520 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9742234 ????????????????????????????????????????????????????????????
29580 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9742294 ????????????????????????????????????????????????????????????
29640 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9742354 ????????????????????????????????????????????????????????????
29700 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9742414 ????????????????????????????????????????????????????????????
29760 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9742474 ????????????????????????????????????????????????????????????
29820 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9742534 ????????????????????????????????????????????????????????????
29880 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9742594 ????????????????????????????????????????????????????????????
29940 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9742654 ????????????????????????????????????????????????????????????
30000 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9742714 ????????????????????????????????????????????????????????????
30060 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9742774 ????????????????????????????????????????????????????????????
30120 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9742834 ????????????????????????????????????????????????????????????
30180 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9742894 ????????????????????????????????????????????????????????????
30240 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9742954 ????????????????????????????????????????????????????????????
30300 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9743014 ????????????????????????????????????????????????????????????
30360 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9743074 ????????????????????????????????????????????????????????????
30420 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9743134 ????????????????????????????????????????????????????????????
30480 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9743194 ????????????????????????????????????????????????????????????
30540 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9743254 ????????????????????????????????????????????????????????????
30600 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9743314 ????????????????????????????????????????????????????????????
30660 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9743374 ????????????????????????????????????????????????????????????
30720 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9743434 ????????????????????????????????????????????????????????????
30780 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9743494 ????????????????????????????????????????????????????????????
30840 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9743554 ????????????????????????????????????????????????????????????
30900 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9743614 ????????????????????????????????????????????????????????????
30960 ------------------------------------------------------------
CAG33136. 498 ------------------------------------------------------------
KI537979 9743674 ????????????????????????????????????????????????????????????
31020 --------------------------------||||||||||||||||||||||||||||
CAG33136. 498 --------------------------------????????????????????????????
KI537979 9743734 ????????????????????????????????????????????????????????????
31080 ||||||||||||||||||||||||||||||||----------------------------
CAG33136. 526 ????????????????????????????????----------------------------
KI537979 9743794 ????????????????????????????????????????????????????????????
31140 ------------------------------------------------------------
CAG33136. 558 ------------------------------------------------------------
KI537979 9743854 ????????????????????????????????????????????????????????????
31200 ------------------------------------------------------------
CAG33136. 558 ------------------------------------------------------------
KI537979 9743914 ????????????????????????????????????????????????????????????
31260 ------------------------------------------------------------
CAG33136. 558 ------------------------------------------------------------
KI537979 9743974 ????????????????????????????????????????????????????????????
31320 ------------------------------------------------------------
CAG33136. 558 ------------------------------------------------------------
KI537979 9744034 ????????????????????????????????????????????????????????????
31380 ------------------------------------------------------------
CAG33136. 558 ------------------------------------------------------------
KI537979 9744094 ????????????????????????????????????????????????????????????
31440 ------------------------------------------------------------
CAG33136. 558 ------------------------------------------------------------
KI537979 9744154 ????????????????????????????????????????????????????????????
31500 ------------------------------------------------------------
CAG33136. 558 ------------------------------------------------------------
KI537979 9744214 ????????????????????????????????????????????????????????????
31560 ------------------------------------------------------------
CAG33136. 558 ------------------------------------------------------------
KI537979 9744274 ????????????????????????????????????????????????????????????
31620 ------------------------------------------------------------
CAG33136. 558 ------------------------------------------------------------
KI537979 9744334 ????????????????????????????????????????????????????????????
31680 ------------------------------------------------------------
CAG33136. 558 ------------------------------------------------------------
KI537979 9744394 ????????????????????????????????????????????????????????????
31740 ------------------------------------------------------------
CAG33136. 558 ------------------------------------------------------------
KI537979 9744454 ????????????????????????????????????????????????????????????
31800 ---------------------------------------------------------|||
CAG33136. 558 ---------------------------------------------------------???
KI537979 9744514 ????????????????????????????????????????????????????????????
31860 ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CAG33136. 561 ????????????????????????????????????????????????????????????
KI537979 9744574 ?????????????????? 9744592
31920 |||||||||||||||||| 31938
CAG33136. 621 ?????????????????? 639
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
KI537979 9712654 9744592 CAG33136.1 972 + 9712654 9744592 0 7 132,156,87,48,75,60,81, 0,3287,3791,5720,26610,31052,31857,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 31299)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 31299)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 31299)
self.assertEqual(counts.gaps, 31299)
self.assertEqual(counts.aligned, 639)
alignment = next(alignments)
self.assertEqual(alignment.score, 792)
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertLess(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "KI538594")
self.assertEqual(alignment.query.id, "CAG33136.1")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[2103463, 2103523, 2103522, 2104149],
[ 0, 60, 60, 687]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
KI538594 2103463 ????????????????????????????????????????????????????????????
0 ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CAG33136. 0 ????????????????????????????????????????????????????????????
KI538594 2103523
60
CAG33136. 60
KI538594 2103522 ????????????????????????????????????????????????????????????
60 ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CAG33136. 60 ????????????????????????????????????????????????????????????
KI538594 2103582 ????????????????????????????????????????????????????????????
120 ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CAG33136. 120 ????????????????????????????????????????????????????????????
KI538594 2103642 ????????????????????????????????????????????????????????????
180 ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CAG33136. 180 ????????????????????????????????????????????????????????????
KI538594 2103702 ????????????????????????????????????????????????????????????
240 ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CAG33136. 240 ????????????????????????????????????????????????????????????
KI538594 2103762 ????????????????????????????????????????????????????????????
300 ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CAG33136. 300 ????????????????????????????????????????????????????????????
KI538594 2103822 ????????????????????????????????????????????????????????????
360 ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CAG33136. 360 ????????????????????????????????????????????????????????????
KI538594 2103882 ????????????????????????????????????????????????????????????
420 ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CAG33136. 420 ????????????????????????????????????????????????????????????
KI538594 2103942 ????????????????????????????????????????????????????????????
480 ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CAG33136. 480 ????????????????????????????????????????????????????????????
KI538594 2104002 ????????????????????????????????????????????????????????????
540 ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CAG33136. 540 ????????????????????????????????????????????????????????????
KI538594 2104062 ????????????????????????????????????????????????????????????
600 ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CAG33136. 600 ????????????????????????????????????????????????????????????
KI538594 2104122 ??????????????????????????? 2104149
660 ||||||||||||||||||||||||||| 687
CAG33136. 660 ??????????????????????????? 687
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
KI538594 2103463 2104149 CAG33136.1 792 + 2103463 2104149 0 2 60,627, 0,59,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, -1)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, -1)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, -1)
self.assertEqual(counts.gaps, -1)
self.assertEqual(counts.aligned, 687)
alignment = next(alignments)
self.assertEqual(alignment.score, 902)
self.assertLess(alignment.coordinates[0, 0], alignment.coordinates[0, -1])
self.assertGreater(alignment.coordinates[1, 0], alignment.coordinates[1, -1])
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "KI537194")
self.assertEqual(alignment.query.id, "CAG33136.1")
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[20872390, 20872471, 20872472, 20873021],
[ 630, 549, 549, 0]]),
# fmt: on
)
)
self.assertEqual(
str(alignment),
"""\
KI537194 20872390 ????????????????????????????????????????????????????????????
0 ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CAG33136. 630 ????????????????????????????????????????????????????????????
KI537194 20872450 ????????????????????????????????????????????????????????????
60 |||||||||||||||||||||-||||||||||||||||||||||||||||||||||||||
CAG33136. 570 ?????????????????????-??????????????????????????????????????
KI537194 20872510 ????????????????????????????????????????????????????????????
120 ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CAG33136. 511 ????????????????????????????????????????????????????????????
KI537194 20872570 ????????????????????????????????????????????????????????????
180 ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CAG33136. 451 ????????????????????????????????????????????????????????????
KI537194 20872630 ????????????????????????????????????????????????????????????
240 ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CAG33136. 391 ????????????????????????????????????????????????????????????
KI537194 20872690 ????????????????????????????????????????????????????????????
300 ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CAG33136. 331 ????????????????????????????????????????????????????????????
KI537194 20872750 ????????????????????????????????????????????????????????????
360 ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CAG33136. 271 ????????????????????????????????????????????????????????????
KI537194 20872810 ????????????????????????????????????????????????????????????
420 ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CAG33136. 211 ????????????????????????????????????????????????????????????
KI537194 20872870 ????????????????????????????????????????????????????????????
480 ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CAG33136. 151 ????????????????????????????????????????????????????????????
KI537194 20872930 ????????????????????????????????????????????????????????????
540 ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CAG33136. 91 ????????????????????????????????????????????????????????????
KI537194 20872990 ??????????????????????????????? 20873021
600 ||||||||||||||||||||||||||||||| 631
CAG33136. 31 ??????????????????????????????? 0
""",
)
self.assertEqual(
format(alignment, "bed"),
"""\
KI537194 20872390 20873021 CAG33136.1 902 - 20872390 20873021 0 2 81,549, 0,82,
""",
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 1)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 1)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 1)
self.assertEqual(counts.gaps, 1)
self.assertEqual(counts.aligned, 630)
self.assertRaises(StopIteration, next, alignments)
def test_writing_psl_35_002(self):
"""Test writing the alignments in psl_35_002.bed."""
path = "Blat/psl_35_002.bed"
with open(path) as stream:
original_data = stream.read()
alignments = Align.parse(path, "bed")
stream = StringIO()
n = Align.write(alignments, stream, "bed")
self.assertEqual(n, 3)
stream.seek(0)
written_data = stream.read()
stream.close()
self.assertEqual(original_data, written_data)
class TestAlign_bed12(unittest.TestCase):
def test_reading(self):
"""Test parsing alignments in file formats BED3 through BED12."""
for bedN in (3, 4, 5, 6, 7, 8, 9, 12):
filename = "bed%d.bed" % bedN
path = os.path.join("Blat", filename)
alignments = Align.parse(path, "bed")
alignment = next(alignments)
if bedN >= 5:
self.assertEqual(alignment.score, 960, msg=filename)
self.assertEqual(alignment.shape, (2, 4000), msg=filename)
self.assertLess(
alignment.coordinates[0, 0], alignment.coordinates[0, -1], msg=filename
)
self.assertLess(
alignment.coordinates[1, 0], alignment.coordinates[1, -1], msg=filename
)
self.assertEqual(len(alignment), 2, msg=filename)
self.assertIs(alignment.sequences[0], alignment.target, msg=filename)
self.assertIs(alignment.sequences[1], alignment.query, msg=filename)
self.assertEqual(alignment.target.id, "chr22", msg=filename)
if bedN >= 4:
self.assertEqual(alignment.query.id, "mRNA1", msg=filename)
else:
self.assertIsNone(alignment.query.id, msg=filename)
if bedN == 12:
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[1000, 1567, 4512, 5000],
[ 0, 567, 567, 1055]]),
# fmt: on
),
msg=filename,
)
else:
self.assertTrue(
np.array_equal(
alignment.coordinates,
np.array([[1000, 5000], [0, 4000]]),
),
msg=filename,
)
if bedN >= 7:
self.assertEqual(alignment.thickStart, 1200, msg=filename)
if bedN >= 8:
self.assertEqual(alignment.thickEnd, 4900, msg=filename)
if bedN >= 9:
self.assertEqual(alignment.itemRgb, "255,0,0", msg=filename)
words = [
"chr22",
"1000",
"5000",
"mRNA1",
"960",
"+",
"1200",
"4900",
"255,0,0",
"2",
"567,488,",
"0,3512,",
]
self.assertEqual(
alignment.format("bed", bedN), "\t".join(words[:bedN]) + "\n"
)
print(bedN, alignment.coordinates)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
if bedN == 12:
self.assertEqual(counts.internal_deletions, 2945)
self.assertEqual(counts.internal_gaps, 2945)
self.assertEqual(counts.deletions, 2945)
self.assertEqual(counts.gaps, 2945)
self.assertEqual(counts.aligned, 1055)
else:
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 4000)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.insertions, 0)
alignment = next(alignments)
if bedN >= 5:
self.assertEqual(alignment.score, 900, msg=filename)
self.assertEqual(alignment.shape, (2, 4000), msg=filename)
self.assertLess(
alignment.coordinates[0, 0], alignment.coordinates[0, -1], msg=filename
)
if bedN >= 6:
self.assertGreater(
alignment.coordinates[1, 0],
alignment.coordinates[1, -1],
msg=filename,
)
else:
self.assertLess(
alignment.coordinates[1, 0],
alignment.coordinates[1, -1],
msg=filename,
)
self.assertEqual(len(alignment), 2, msg=filename)
self.assertIs(alignment.sequences[0], alignment.target, msg=filename)
self.assertIs(alignment.sequences[1], alignment.query, msg=filename)
self.assertEqual(alignment.target.id, "chr22", msg=filename)
if bedN >= 4:
self.assertEqual(alignment.query.id, "mRNA2", msg=filename)
else:
self.assertIsNone(alignment.query.id, msg=filename)
if bedN == 12:
self.assertTrue(
np.array_equal(
alignment.coordinates,
# fmt: off
np.array([[2000, 2433, 5601, 6000],
[ 832, 399, 399, 0]])
# fmt: on
),
msg=filename,
)
elif bedN >= 6:
self.assertTrue(
np.array_equal(
alignment.coordinates,
np.array([[2000, 6000], [4000, 0]]),
),
msg=filename,
)
else:
self.assertTrue(
np.array_equal(
alignment.coordinates,
np.array([[2000, 6000], [0, 4000]]),
),
msg=filename,
)
if bedN >= 7:
self.assertEqual(alignment.thickStart, 2300, msg=filename)
if bedN >= 8:
self.assertEqual(alignment.thickEnd, 5960, msg=filename)
if bedN >= 9:
self.assertEqual(alignment.itemRgb, "0,255,0", msg=filename)
words = [
"chr22",
"2000",
"6000",
"mRNA2",
"900",
"-",
"2300",
"5960",
"0,255,0",
"2",
"433,399,",
"0,3601,",
]
self.assertEqual(
alignment.format("bed", bedN), "\t".join(words[:bedN]) + "\n"
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
if bedN == 12:
self.assertEqual(counts.internal_deletions, 3168)
self.assertEqual(counts.deletions, 3168)
self.assertEqual(counts.internal_gaps, 3168)
self.assertEqual(counts.gaps, 3168)
self.assertEqual(counts.aligned, 832)
else:
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 4000)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.insertions, 0)
with self.assertRaises(StopIteration) as cm:
next(alignments)
self.fail(f"More than two alignments reported in {filename}")
def test_writing(self):
"""Test writing the alignments in bed12.bed as BED3 through BED12."""
for bedN in (3, 4, 5, 6, 7, 8, 9, 12):
filename = "bed%d.bed" % bedN
path = os.path.join("Blat", filename)
with open(path) as stream:
original_data = stream.read()
alignments = Align.parse(path, "bed")
stream = StringIO()
n = Align.write(alignments, stream, "bed", bedN=bedN)
self.assertEqual(n, 2, msg=filename)
stream.seek(0)
written_data = stream.read()
stream.close()
self.assertEqual(original_data, written_data, msg=filename)
class TestAlign_strand(unittest.TestCase):
def test_format(self):
"""Test alignment with the target on the opposite strand."""
sequences = ["AACAGCAGCGTGTCG", "CAGCTAGCGAA"]
coordinates = np.array(
[[0, 2, 2, 3, 4, 6, 6, 9, 10, 12, 15], [11, 11, 9, 8, 8, 6, 5, 2, 2, 0, 0]]
)
alignment = Alignment(sequences, coordinates)
alignment.score = 8
line = """\
target 2 12 query 8 - 2 12 0 4 1,2,3,2, 0,2,4,8,
"""
self.assertEqual(
str(alignment),
"""\
target 0 AA--CAGC-AGCGTGTCG 15
0 ----|-||-|||-||--- 18
query 11 --TTC-GCTAGC-TG--- 0
""",
)
self.assertEqual(format(alignment, "bed"), line)
alignment.coordinates = alignment.coordinates[:, ::-1]
self.assertEqual(
str(alignment),
"""\
target 15 CGACACGCT-GCTG--TT 0
0 ---||-|||-||-|---- 18
query 0 ---CA-GCTAGC-GAA-- 11
""",
)
self.assertEqual(format(alignment, "bed"), line)
alignment.coordinates = alignment.coordinates[:, ::-1]
line = """\
target 3 13 query 0 - 3 13 0 4 2,3,2,1, 0,3,6,9,
"""
alignment = alignment.reverse_complement()
self.assertEqual(
str(alignment),
"""\
target 0 CGACACGCT-GCTG--TT 15
0 ---||-|||-||-|---- 18
query 11 ---CA-GCTAGC-GAA-- 0
""",
)
self.assertEqual(format(alignment, "bed"), line)
alignment.coordinates = alignment.coordinates[:, ::-1]
self.assertEqual(
str(alignment),
"""\
target 15 AA--CAGC-AGCGTGTCG 0
0 ----|-||-|||-||--- 18
query 0 --TTC-GCTAGC-TG--- 11
""",
)
self.assertEqual(format(alignment, "bed"), line)
class TestAlign_searching(unittest.TestCase):
path = "Blat/bigbedtest.bed"
def check_alignments(self, alignments):
alignment = next(alignments)
self.assertEqual(alignment.score, 1)
self.assertEqual(alignment.shape, (2, 90))
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr1")
self.assertEqual(alignment.query.id, "name1")
self.assertTrue(
np.array_equal(alignment.coordinates, np.array([[10, 100], [0, 90]]))
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 90)
alignment = next(alignments)
self.assertEqual(alignment.score, 2)
self.assertEqual(alignment.shape, (2, 10))
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr1")
self.assertEqual(alignment.query.id, "name2")
self.assertTrue(
np.array_equal(alignment.coordinates, np.array([[29, 39], [10, 0]]))
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 10)
alignment = next(alignments)
self.assertEqual(alignment.score, 3)
self.assertEqual(alignment.shape, (2, 100))
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr1")
self.assertEqual(alignment.query.id, "name3")
self.assertTrue(
np.array_equal(alignment.coordinates, np.array([[200, 300], [0, 100]]))
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 100)
alignment = next(alignments)
self.assertEqual(alignment.score, 6)
self.assertEqual(alignment.shape, (2, 0))
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr2")
self.assertEqual(alignment.query.id, "name4")
self.assertTrue(
np.array_equal(alignment.coordinates, np.array([[50, 50], [0, 0]]))
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 0)
self.assertEqual(counts.identities, 0)
self.assertEqual(counts.mismatches, 0)
alignment = next(alignments)
self.assertEqual(alignment.score, 4)
self.assertEqual(alignment.shape, (2, 10))
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr2")
self.assertEqual(alignment.query.id, "name5")
self.assertTrue(
np.array_equal(alignment.coordinates, np.array([[100, 110], [0, 10]]))
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 10)
alignment = next(alignments)
self.assertEqual(alignment.score, 5)
self.assertEqual(alignment.shape, (2, 10))
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr2")
self.assertEqual(alignment.query.id, "name6")
self.assertTrue(
np.array_equal(alignment.coordinates, np.array([[200, 210], [0, 10]]))
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 10)
alignment = next(alignments)
self.assertEqual(alignment.score, 6)
self.assertEqual(alignment.shape, (2, 0))
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr2")
self.assertEqual(alignment.query.id, "name7")
self.assertTrue(
np.array_equal(alignment.coordinates, np.array([[220, 220], [0, 0]]))
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 0)
self.assertEqual(counts.identities, 0)
self.assertEqual(counts.mismatches, 0)
alignment = next(alignments)
self.assertEqual(alignment.score, 7)
self.assertEqual(alignment.shape, (2, 0))
self.assertEqual(len(alignment), 2)
self.assertIs(alignment.sequences[0], alignment.target)
self.assertIs(alignment.sequences[1], alignment.query)
self.assertEqual(alignment.target.id, "chr3")
self.assertEqual(alignment.query.id, "name8")
self.assertTrue(
np.array_equal(alignment.coordinates, np.array([[0, 0], [0, 0]]))
)
counts = alignment.counts()
self.assertEqual(counts.left_insertions, 0)
self.assertEqual(counts.left_deletions, 0)
self.assertEqual(counts.right_insertions, 0)
self.assertEqual(counts.right_deletions, 0)
self.assertEqual(counts.internal_insertions, 0)
self.assertEqual(counts.internal_deletions, 0)
self.assertEqual(counts.left_gaps, 0)
self.assertEqual(counts.right_gaps, 0)
self.assertEqual(counts.internal_gaps, 0)
self.assertEqual(counts.insertions, 0)
self.assertEqual(counts.deletions, 0)
self.assertEqual(counts.gaps, 0)
self.assertEqual(counts.aligned, 0)
self.assertEqual(counts.identities, 0)
self.assertEqual(counts.mismatches, 0)
def test_reading(self):
"""Test reading bigbedtest.bed."""
alignments = Align.parse(self.path, "bed")
self.check_alignments(alignments)
def test_writing(self):
"""Test writing bigbedtest.bed."""
alignments = Align.parse(self.path, "bed")
with tempfile.TemporaryFile("w+t") as output:
Align.write(alignments, output, "bed", bedN=6)
output.seek(0)
alignments = Align.parse(output, "bed")
self.check_alignments(alignments)
if __name__ == "__main__":
runner = unittest.TextTestRunner(verbosity=2)
unittest.main(testRunner=runner)