tsalign 2.1.2__tar.gz → 3.0.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {tsalign-2.1.2 → tsalign-3.0.0}/Cargo.lock +8 -8
- {tsalign-2.1.2 → tsalign-3.0.0}/PKG-INFO +3 -3
- {tsalign-2.1.2/python_bindings → tsalign-3.0.0}/README.md +2 -2
- {tsalign-2.1.2 → tsalign-3.0.0}/generic_a_star/Cargo.toml +1 -1
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsalign/Cargo.toml +3 -3
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsalign/src/a_star_aligner/alignment_result/alignment/stream.rs +19 -16
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsalign/src/a_star_aligner/alignment_result/alignment/template_switch_specifics.rs +193 -175
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsalign/src/a_star_aligner/template_switch_distance/alignment_type.rs +22 -20
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsalign/src/a_star_aligner/template_switch_distance/context.rs +70 -69
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsalign/src/a_star_aligner/template_switch_distance/display.rs +30 -28
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsalign/src/a_star_aligner/template_switch_distance/identifier.rs +74 -74
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsalign/src/a_star_aligner/template_switch_distance/lower_bounds/template_switch.rs +11 -11
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsalign/src/a_star_aligner/template_switch_distance/lower_bounds/template_switch_alignment.rs +2 -2
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsalign/src/a_star_aligner/template_switch_distance/strategies/descendant.rs +6 -6
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsalign/src/a_star_aligner/template_switch_distance/strategies/template_switch_min_length.rs +71 -75
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsalign/src/a_star_aligner/template_switch_distance.rs +66 -65
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsalign/src/config/io.rs +10 -10
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsalign/src/config.rs +44 -44
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsshow/Cargo.toml +2 -2
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsshow/src/error.rs +2 -2
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsshow/src/plain_text/parse_template_switches.rs +23 -25
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsshow/src/plain_text.rs +26 -23
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsshow/src/svg.rs +56 -54
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsshow/src/ts_arrangement/complement.rs +21 -21
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsshow/src/ts_arrangement/inner.rs +45 -45
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsshow/src/ts_arrangement/source.rs +96 -90
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsshow/src/ts_arrangement/template_switch.rs +5 -5
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsshow/src/ts_arrangement.rs +10 -12
- {tsalign-2.1.2 → tsalign-3.0.0}/python/tsalign/_types.py +6 -6
- {tsalign-2.1.2 → tsalign-3.0.0}/python_bindings/Cargo.toml +3 -3
- {tsalign-2.1.2 → tsalign-3.0.0/python_bindings}/README.md +2 -2
- {tsalign-2.1.2 → tsalign-3.0.0}/seed_chain/Cargo.toml +2 -2
- tsalign-2.1.2/lib_tsshow/src/plain_text/alignment_stream.rs +0 -229
- {tsalign-2.1.2 → tsalign-3.0.0}/Cargo.toml +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/generic_a_star/clippy.toml +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/generic_a_star/src/closed_lists.rs +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/generic_a_star/src/comparator.rs +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/generic_a_star/src/cost.rs +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/generic_a_star/src/lib.rs +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/generic_a_star/src/open_lists/linear_heap.rs +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/generic_a_star/src/open_lists.rs +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/generic_a_star/src/reset.rs +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsalign/src/a_star_aligner/alignment_geometry.rs +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsalign/src/a_star_aligner/alignment_result/a_star_sequences.rs +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsalign/src/a_star_aligner/alignment_result/alignment/iter.rs +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsalign/src/a_star_aligner/alignment_result/alignment.rs +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsalign/src/a_star_aligner/alignment_result.rs +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsalign/src/a_star_aligner/configurable_a_star_align.rs +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsalign/src/a_star_aligner/gap_affine_edit_distance.rs +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsalign/src/a_star_aligner/template_switch_distance/alignment_type/equal_cost_range.rs +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsalign/src/a_star_aligner/template_switch_distance/lower_bounds.rs +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsalign/src/a_star_aligner/template_switch_distance/strategies/chaining.rs +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsalign/src/a_star_aligner/template_switch_distance/strategies/node_ord.rs +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsalign/src/a_star_aligner/template_switch_distance/strategies/primary_match.rs +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsalign/src/a_star_aligner/template_switch_distance/strategies/primary_range.rs +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsalign/src/a_star_aligner/template_switch_distance/strategies/secondary_deletion.rs +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsalign/src/a_star_aligner/template_switch_distance/strategies/shortcut.rs +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsalign/src/a_star_aligner/template_switch_distance/strategies/template_switch_count.rs +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsalign/src/a_star_aligner/template_switch_distance/strategies/template_switch_total_length.rs +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsalign/src/a_star_aligner/template_switch_distance/strategies.rs +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsalign/src/a_star_aligner/tests.rs +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsalign/src/a_star_aligner.rs +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsalign/src/alignment_configuration.rs +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsalign/src/alignment_matrix/index/iterators.rs +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsalign/src/alignment_matrix/index.rs +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsalign/src/alignment_matrix.rs +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsalign/src/costs/cost_function/io.rs +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsalign/src/costs/cost_function.rs +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsalign/src/costs/gap_affine/io/tests.rs +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsalign/src/costs/gap_affine/io.rs +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsalign/src/costs/gap_affine.rs +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsalign/src/costs.rs +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsalign/src/error.rs +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsalign/src/io.rs +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsalign/src/lib.rs +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsalign/src/tests.rs +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsshow/src/lib.rs +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsshow/src/plain_text/mutlipair_alignment_renderer/tests.rs +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsshow/src/plain_text/mutlipair_alignment_renderer.rs +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsshow/src/svg/arrows.rs +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsshow/src/svg/font/sans_serif_mono.rs +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsshow/src/svg/font/typewriter.rs +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsshow/src/svg/font.rs +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsshow/src/svg/indexed_str.rs +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsshow/src/svg/labelled_sequence.rs +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsshow/src/svg/numbers.rs +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsshow/src/ts_arrangement/character.rs +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsshow/src/ts_arrangement/index_types.rs +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/lib_tsshow/src/ts_arrangement/row.rs +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/pyproject.toml +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/python/tsalign/__init__.py +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/python/tsalign/py.typed +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/python_bindings/.gitignore +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/python_bindings/BUILD.md +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/python_bindings/src/lib.rs +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/seed_chain/src/chain/context.rs +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/seed_chain/src/chain/display.rs +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/seed_chain/src/chain/node/display.rs +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/seed_chain/src/chain/node.rs +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/seed_chain/src/chain.rs +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/seed_chain/src/lib.rs +0 -0
- {tsalign-2.1.2 → tsalign-3.0.0}/seed_chain/src/seed.rs +0 -0
|
@@ -417,7 +417,7 @@ checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c"
|
|
|
417
417
|
|
|
418
418
|
[[package]]
|
|
419
419
|
name = "generic_a_star"
|
|
420
|
-
version = "
|
|
420
|
+
version = "3.0.0"
|
|
421
421
|
dependencies = [
|
|
422
422
|
"binary-heap-plus",
|
|
423
423
|
"compare",
|
|
@@ -548,7 +548,7 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
|
|
|
548
548
|
|
|
549
549
|
[[package]]
|
|
550
550
|
name = "lib_ts_chainalign"
|
|
551
|
-
version = "
|
|
551
|
+
version = "3.0.0"
|
|
552
552
|
dependencies = [
|
|
553
553
|
"binary-heap-plus",
|
|
554
554
|
"bincode",
|
|
@@ -568,7 +568,7 @@ dependencies = [
|
|
|
568
568
|
|
|
569
569
|
[[package]]
|
|
570
570
|
name = "lib_tsalign"
|
|
571
|
-
version = "
|
|
571
|
+
version = "3.0.0"
|
|
572
572
|
dependencies = [
|
|
573
573
|
"binary-heap-plus",
|
|
574
574
|
"compact-genome",
|
|
@@ -589,7 +589,7 @@ dependencies = [
|
|
|
589
589
|
|
|
590
590
|
[[package]]
|
|
591
591
|
name = "lib_tsshow"
|
|
592
|
-
version = "
|
|
592
|
+
version = "3.0.0"
|
|
593
593
|
dependencies = [
|
|
594
594
|
"ena",
|
|
595
595
|
"itertools",
|
|
@@ -804,7 +804,7 @@ dependencies = [
|
|
|
804
804
|
|
|
805
805
|
[[package]]
|
|
806
806
|
name = "py_lib_tsalign"
|
|
807
|
-
version = "
|
|
807
|
+
version = "3.0.0"
|
|
808
808
|
dependencies = [
|
|
809
809
|
"compact-genome",
|
|
810
810
|
"lib_tsalign",
|
|
@@ -1008,7 +1008,7 @@ dependencies = [
|
|
|
1008
1008
|
|
|
1009
1009
|
[[package]]
|
|
1010
1010
|
name = "seed_chain"
|
|
1011
|
-
version = "
|
|
1011
|
+
version = "3.0.0"
|
|
1012
1012
|
dependencies = [
|
|
1013
1013
|
"compact-genome",
|
|
1014
1014
|
"generic_a_star",
|
|
@@ -1360,7 +1360,7 @@ checksum = "2b939c825d0c4295ac520f7b479927c1e5b458c9107a9d6f5ba65bc867bb93a5"
|
|
|
1360
1360
|
|
|
1361
1361
|
[[package]]
|
|
1362
1362
|
name = "tsalign"
|
|
1363
|
-
version = "
|
|
1363
|
+
version = "3.0.0"
|
|
1364
1364
|
dependencies = [
|
|
1365
1365
|
"anyhow",
|
|
1366
1366
|
"bincode",
|
|
@@ -1381,7 +1381,7 @@ dependencies = [
|
|
|
1381
1381
|
|
|
1382
1382
|
[[package]]
|
|
1383
1383
|
name = "tsalign-tests"
|
|
1384
|
-
version = "
|
|
1384
|
+
version = "3.0.0"
|
|
1385
1385
|
dependencies = [
|
|
1386
1386
|
"anyhow",
|
|
1387
1387
|
"clap",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: tsalign
|
|
3
|
-
Version:
|
|
3
|
+
Version: 3.0.0
|
|
4
4
|
Classifier: Programming Language :: Rust
|
|
5
5
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
6
6
|
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
|
@@ -104,9 +104,9 @@ from tsalign import align, TemplateSwitchEntranceOp, TemplateSwitchExitOp
|
|
|
104
104
|
result = align(reference, query)
|
|
105
105
|
for count, op in result.alignments():
|
|
106
106
|
if isinstance(op, TemplateSwitchEntranceOp):
|
|
107
|
-
print(f"Template switch: {op.direction},
|
|
107
|
+
print(f"Template switch: {op.direction}, descendant={op.descendant}, offset={op.first_offset}")
|
|
108
108
|
elif isinstance(op, TemplateSwitchExitOp):
|
|
109
|
-
print(f"Exit, anti-
|
|
109
|
+
print(f"Exit, anti-descendant gap: {op.anti_descendant_gap}")
|
|
110
110
|
else:
|
|
111
111
|
# SimpleAlignmentOp — a basic edit in the primary or secondary track
|
|
112
112
|
print(f"{count}x {op.kind}")
|
|
@@ -95,9 +95,9 @@ from tsalign import align, TemplateSwitchEntranceOp, TemplateSwitchExitOp
|
|
|
95
95
|
result = align(reference, query)
|
|
96
96
|
for count, op in result.alignments():
|
|
97
97
|
if isinstance(op, TemplateSwitchEntranceOp):
|
|
98
|
-
print(f"Template switch: {op.direction},
|
|
98
|
+
print(f"Template switch: {op.direction}, descendant={op.descendant}, offset={op.first_offset}")
|
|
99
99
|
elif isinstance(op, TemplateSwitchExitOp):
|
|
100
|
-
print(f"Exit, anti-
|
|
100
|
+
print(f"Exit, anti-descendant gap: {op.anti_descendant_gap}")
|
|
101
101
|
else:
|
|
102
102
|
# SimpleAlignmentOp — a basic edit in the primary or secondary track
|
|
103
103
|
print(f"{count}x {op.kind}")
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name = "lib_tsalign"
|
|
3
3
|
description = "A sequence-to-sequence aligner that accounts for template switches"
|
|
4
4
|
authors = ["Sebastian Schmidt <sebastian.schmidt@helsinki.fi>"]
|
|
5
|
-
version = "
|
|
5
|
+
version = "3.0.0"
|
|
6
6
|
license.workspace = true
|
|
7
7
|
edition.workspace = true
|
|
8
8
|
rust-version.workspace = true
|
|
@@ -26,9 +26,9 @@ thiserror = "2.0.3"
|
|
|
26
26
|
num-traits.workspace = true
|
|
27
27
|
serde = { workspace = true, features = ["derive"], optional = true }
|
|
28
28
|
noisy_float = { version = "0.2.0" }
|
|
29
|
-
generic_a_star = { version = "
|
|
29
|
+
generic_a_star = { version = "3.0.0", path = "../generic_a_star" }
|
|
30
30
|
log.workspace = true
|
|
31
31
|
rustc-hash = "2.1.1"
|
|
32
|
-
seed_chain = { version = "
|
|
32
|
+
seed_chain = { version = "3.0.0", path = "../seed_chain" }
|
|
33
33
|
extend_map = "0.14.3"
|
|
34
34
|
template-switch-error-free-inners = "0.1.1"
|
{tsalign-2.1.2 → tsalign-3.0.0}/lib_tsalign/src/a_star_aligner/alignment_result/alignment/stream.rs
RENAMED
|
@@ -2,7 +2,7 @@ use std::{collections::VecDeque, iter};
|
|
|
2
2
|
|
|
3
3
|
use crate::a_star_aligner::{
|
|
4
4
|
alignment_result::alignment::Alignment,
|
|
5
|
-
template_switch_distance::{AlignmentType,
|
|
5
|
+
template_switch_distance::{AlignmentType, TemplateSwitchDescendant},
|
|
6
6
|
};
|
|
7
7
|
|
|
8
8
|
#[derive(Debug, Clone)]
|
|
@@ -20,7 +20,7 @@ pub struct AlignmentStream {
|
|
|
20
20
|
pub struct AlignmentStreamCoordinates {
|
|
21
21
|
reference: usize,
|
|
22
22
|
query: usize,
|
|
23
|
-
|
|
23
|
+
template_switch_descendant: Option<TemplateSwitchDescendant>,
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
impl AlignmentStream {
|
|
@@ -190,7 +190,7 @@ impl AlignmentStreamCoordinates {
|
|
|
190
190
|
Self {
|
|
191
191
|
reference: reference_offset,
|
|
192
192
|
query: query_offset,
|
|
193
|
-
|
|
193
|
+
template_switch_descendant: None,
|
|
194
194
|
}
|
|
195
195
|
}
|
|
196
196
|
|
|
@@ -210,34 +210,37 @@ impl AlignmentStreamCoordinates {
|
|
|
210
210
|
| AlignmentType::PrimaryMatch
|
|
211
211
|
| AlignmentType::PrimaryFlankSubstitution
|
|
212
212
|
| AlignmentType::PrimaryFlankMatch => (1, 1),
|
|
213
|
-
AlignmentType::TemplateSwitchEntrance {
|
|
213
|
+
AlignmentType::TemplateSwitchEntrance { descendant, .. } => {
|
|
214
214
|
assert!(
|
|
215
|
-
self.
|
|
215
|
+
self.template_switch_descendant.is_none(),
|
|
216
216
|
"Encountered template switch entrance within template switch"
|
|
217
217
|
);
|
|
218
|
-
self.
|
|
218
|
+
self.template_switch_descendant = Some(descendant);
|
|
219
219
|
(0, 0)
|
|
220
220
|
}
|
|
221
221
|
AlignmentType::SecondaryInsertion
|
|
222
222
|
| AlignmentType::SecondarySubstitution
|
|
223
|
-
| AlignmentType::SecondaryMatch => match self.
|
|
224
|
-
|
|
225
|
-
|
|
223
|
+
| AlignmentType::SecondaryMatch => match self.template_switch_descendant.unwrap() {
|
|
224
|
+
TemplateSwitchDescendant::Reference => (1, 0),
|
|
225
|
+
TemplateSwitchDescendant::Query => (0, 1),
|
|
226
226
|
},
|
|
227
|
-
AlignmentType::TemplateSwitchExit {
|
|
228
|
-
|
|
227
|
+
AlignmentType::TemplateSwitchExit {
|
|
228
|
+
anti_descendant_gap,
|
|
229
|
+
} => {
|
|
230
|
+
let Some(template_switch_descendant) = self.template_switch_descendant.take()
|
|
231
|
+
else {
|
|
229
232
|
panic!(
|
|
230
233
|
"Encountered template switch exit without first encountering a template switch entrance"
|
|
231
234
|
)
|
|
232
235
|
};
|
|
233
|
-
match
|
|
234
|
-
|
|
236
|
+
match template_switch_descendant {
|
|
237
|
+
TemplateSwitchDescendant::Reference => {
|
|
235
238
|
self.query =
|
|
236
|
-
usize::try_from(self.query as isize +
|
|
239
|
+
usize::try_from(self.query as isize + anti_descendant_gap).unwrap()
|
|
237
240
|
}
|
|
238
|
-
|
|
241
|
+
TemplateSwitchDescendant::Query => {
|
|
239
242
|
self.reference =
|
|
240
|
-
usize::try_from(self.reference as isize +
|
|
243
|
+
usize::try_from(self.reference as isize + anti_descendant_gap).unwrap()
|
|
241
244
|
}
|
|
242
245
|
}
|
|
243
246
|
(0, 0)
|