agglovar 0.0.1.dev15__tar.gz → 0.0.1.dev17__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.
- {agglovar-0.0.1.dev15/src/agglovar.egg-info → agglovar-0.0.1.dev17}/PKG-INFO +1 -1
- {agglovar-0.0.1.dev15 → agglovar-0.0.1.dev17}/src/agglovar/__init__.py +7 -1
- {agglovar-0.0.1.dev15 → agglovar-0.0.1.dev17}/src/agglovar/align/op.py +5 -1
- {agglovar-0.0.1.dev15 → agglovar-0.0.1.dev17}/src/agglovar/align/score.py +14 -3
- {agglovar-0.0.1.dev15 → agglovar-0.0.1.dev17}/src/agglovar/bed/col.py +12 -2
- {agglovar-0.0.1.dev15 → agglovar-0.0.1.dev17}/src/agglovar/bed/intersect.py +15 -3
- {agglovar-0.0.1.dev15 → agglovar-0.0.1.dev17}/src/agglovar/bed/join.py +13 -2
- {agglovar-0.0.1.dev15 → agglovar-0.0.1.dev17}/src/agglovar/bed/merge.py +12 -2
- {agglovar-0.0.1.dev15 → agglovar-0.0.1.dev17}/src/agglovar/dev/imports.py +12 -2
- {agglovar-0.0.1.dev15 → agglovar-0.0.1.dev17}/src/agglovar/expr/variant.py +3 -0
- {agglovar-0.0.1.dev15 → agglovar-0.0.1.dev17}/src/agglovar/fa.py +7 -1
- {agglovar-0.0.1.dev15 → agglovar-0.0.1.dev17}/src/agglovar/io.py +11 -2
- {agglovar-0.0.1.dev15 → agglovar-0.0.1.dev17}/src/agglovar/kmer/plot.py +5 -1
- {agglovar-0.0.1.dev15 → agglovar-0.0.1.dev17}/src/agglovar/kmer/util.py +9 -1
- {agglovar-0.0.1.dev15 → agglovar-0.0.1.dev17}/src/agglovar/merge/base.py +26 -17
- {agglovar-0.0.1.dev15 → agglovar-0.0.1.dev17}/src/agglovar/merge/config/parser.py +4 -1
- {agglovar-0.0.1.dev15 → agglovar-0.0.1.dev17}/src/agglovar/merge/config/stage.py +10 -1
- {agglovar-0.0.1.dev15 → agglovar-0.0.1.dev17}/src/agglovar/merge/config/strategy.py +10 -1
- {agglovar-0.0.1.dev15 → agglovar-0.0.1.dev17}/src/agglovar/merge/cumulative.py +177 -35
- {agglovar-0.0.1.dev15 → agglovar-0.0.1.dev17}/src/agglovar/meta/decorators.py +3 -0
- {agglovar-0.0.1.dev15 → agglovar-0.0.1.dev17}/src/agglovar/meta/descriptors.py +13 -4
- {agglovar-0.0.1.dev15 → agglovar-0.0.1.dev17}/src/agglovar/pairwise/base.py +11 -2
- {agglovar-0.0.1.dev15 → agglovar-0.0.1.dev17}/src/agglovar/pairwise/overlap/_overlap.py +125 -55
- {agglovar-0.0.1.dev15 → agglovar-0.0.1.dev17}/src/agglovar/pairwise/overlap/_stage.py +16 -1
- {agglovar-0.0.1.dev15 → agglovar-0.0.1.dev17}/src/agglovar/pairwise/weights.py +14 -2
- {agglovar-0.0.1.dev15 → agglovar-0.0.1.dev17}/src/agglovar/seqmatch.py +5 -3
- {agglovar-0.0.1.dev15 → agglovar-0.0.1.dev17}/src/agglovar/util/lazy.py +3 -0
- {agglovar-0.0.1.dev15 → agglovar-0.0.1.dev17}/src/agglovar/util/str.py +8 -1
- {agglovar-0.0.1.dev15 → agglovar-0.0.1.dev17}/src/agglovar/util/var.py +4 -0
- {agglovar-0.0.1.dev15 → agglovar-0.0.1.dev17}/src/agglovar/vcf/_vcf_const.py +3 -0
- {agglovar-0.0.1.dev15 → agglovar-0.0.1.dev17}/src/agglovar/vcf/_vcf_header.py +21 -4
- {agglovar-0.0.1.dev15 → agglovar-0.0.1.dev17}/src/agglovar/vcf/_vcf_read.py +18 -5
- {agglovar-0.0.1.dev15 → agglovar-0.0.1.dev17}/src/agglovar/vcf/_vcf_write.py +3 -0
- {agglovar-0.0.1.dev15 → agglovar-0.0.1.dev17/src/agglovar.egg-info}/PKG-INFO +1 -1
- {agglovar-0.0.1.dev15 → agglovar-0.0.1.dev17}/LICENSE +0 -0
- {agglovar-0.0.1.dev15 → agglovar-0.0.1.dev17}/README.md +0 -0
- {agglovar-0.0.1.dev15 → agglovar-0.0.1.dev17}/pyproject.toml +0 -0
- {agglovar-0.0.1.dev15 → agglovar-0.0.1.dev17}/setup.cfg +0 -0
- {agglovar-0.0.1.dev15 → agglovar-0.0.1.dev17}/src/agglovar/align/__init__.py +0 -0
- {agglovar-0.0.1.dev15 → agglovar-0.0.1.dev17}/src/agglovar/bed/__init__.py +0 -0
- {agglovar-0.0.1.dev15 → agglovar-0.0.1.dev17}/src/agglovar/dev/__init__.py +0 -0
- {agglovar-0.0.1.dev15 → agglovar-0.0.1.dev17}/src/agglovar/expr/__init__.py +0 -0
- {agglovar-0.0.1.dev15 → agglovar-0.0.1.dev17}/src/agglovar/kmer/__init__.py +0 -0
- {agglovar-0.0.1.dev15 → agglovar-0.0.1.dev17}/src/agglovar/merge/__init__.py +0 -0
- {agglovar-0.0.1.dev15 → agglovar-0.0.1.dev17}/src/agglovar/merge/config/__init__.py +0 -0
- {agglovar-0.0.1.dev15 → agglovar-0.0.1.dev17}/src/agglovar/merge/om/__init__.py +0 -0
- {agglovar-0.0.1.dev15 → agglovar-0.0.1.dev17}/src/agglovar/merge/om/_executor_base.py +0 -0
- {agglovar-0.0.1.dev15 → agglovar-0.0.1.dev17}/src/agglovar/merge/om/_executor_nr.py +0 -0
- {agglovar-0.0.1.dev15 → agglovar-0.0.1.dev17}/src/agglovar/meta/__init__.py +0 -0
- {agglovar-0.0.1.dev15 → agglovar-0.0.1.dev17}/src/agglovar/pairwise/__init__.py +0 -0
- {agglovar-0.0.1.dev15 → agglovar-0.0.1.dev17}/src/agglovar/pairwise/overlap/__init__.py +0 -0
- {agglovar-0.0.1.dev15 → agglovar-0.0.1.dev17}/src/agglovar/pairwise/overlap/_const.py +0 -0
- {agglovar-0.0.1.dev15 → agglovar-0.0.1.dev17}/src/agglovar/schema.py +0 -0
- {agglovar-0.0.1.dev15 → agglovar-0.0.1.dev17}/src/agglovar/util/__init__.py +0 -0
- {agglovar-0.0.1.dev15 → agglovar-0.0.1.dev17}/src/agglovar/vcf/__init__.py +0 -0
- {agglovar-0.0.1.dev15 → agglovar-0.0.1.dev17}/src/agglovar.egg-info/SOURCES.txt +0 -0
- {agglovar-0.0.1.dev15 → agglovar-0.0.1.dev17}/src/agglovar.egg-info/dependency_links.txt +0 -0
- {agglovar-0.0.1.dev15 → agglovar-0.0.1.dev17}/src/agglovar.egg-info/requires.txt +0 -0
- {agglovar-0.0.1.dev15 → agglovar-0.0.1.dev17}/src/agglovar.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"""Agglovar: A toolkit for fast genomic variant transformations and intersects."""
|
|
2
2
|
|
|
3
|
-
__version__ = '0.0.1.
|
|
3
|
+
__version__ = '0.0.1.dev17'
|
|
4
4
|
|
|
5
5
|
__all__ = [
|
|
6
6
|
'align',
|
|
@@ -29,3 +29,9 @@ from . import schema
|
|
|
29
29
|
from . import seqmatch
|
|
30
30
|
from . import vcf
|
|
31
31
|
from . import util
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
# Configure logging
|
|
35
|
+
|
|
36
|
+
import logging
|
|
37
|
+
logging.getLogger(__name__).addHandler(logging.NullHandler())
|
|
@@ -42,10 +42,14 @@ __all__ = [
|
|
|
42
42
|
]
|
|
43
43
|
|
|
44
44
|
|
|
45
|
-
import
|
|
45
|
+
import logging
|
|
46
46
|
from types import MappingProxyType
|
|
47
47
|
from typing import Mapping
|
|
48
48
|
|
|
49
|
+
import numpy as np
|
|
50
|
+
|
|
51
|
+
logger = logging.getLogger(__name__)
|
|
52
|
+
|
|
49
53
|
INT_STR_SET: frozenset[str] = frozenset({'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', })
|
|
50
54
|
"""Set of valid integer character strings representing operation codes."""
|
|
51
55
|
|
|
@@ -12,13 +12,24 @@ __all__ = [
|
|
|
12
12
|
'get_affine_by_params',
|
|
13
13
|
]
|
|
14
14
|
|
|
15
|
-
from abc import
|
|
16
|
-
|
|
15
|
+
from abc import (
|
|
16
|
+
ABC,
|
|
17
|
+
abstractmethod,
|
|
18
|
+
)
|
|
19
|
+
import logging
|
|
17
20
|
import re
|
|
18
|
-
from typing import
|
|
21
|
+
from typing import (
|
|
22
|
+
Any,
|
|
23
|
+
Iterable,
|
|
24
|
+
Self,
|
|
25
|
+
)
|
|
26
|
+
|
|
27
|
+
import numpy as np
|
|
19
28
|
|
|
20
29
|
from . import op
|
|
21
30
|
|
|
31
|
+
logger = logging.getLogger(__name__)
|
|
32
|
+
|
|
22
33
|
AFFINE_SCORE_MATCH = 2.0
|
|
23
34
|
"""Default match score."""
|
|
24
35
|
|
|
@@ -7,13 +7,23 @@ __all__ = [
|
|
|
7
7
|
'standardize',
|
|
8
8
|
]
|
|
9
9
|
|
|
10
|
-
from collections.abc import
|
|
10
|
+
from collections.abc import (
|
|
11
|
+
Iterable,
|
|
12
|
+
Container,
|
|
13
|
+
)
|
|
11
14
|
from dataclasses import dataclass
|
|
15
|
+
import logging
|
|
12
16
|
import re
|
|
13
|
-
from typing import
|
|
17
|
+
from typing import (
|
|
18
|
+
Optional,
|
|
19
|
+
Self,
|
|
20
|
+
Any,
|
|
21
|
+
)
|
|
14
22
|
|
|
15
23
|
import polars as pl
|
|
16
24
|
|
|
25
|
+
logger = logging.getLogger(__name__)
|
|
26
|
+
|
|
17
27
|
|
|
18
28
|
@dataclass(frozen=True)
|
|
19
29
|
class CoordColExpr(Iterable[pl.Expr]):
|
|
@@ -1,19 +1,31 @@
|
|
|
1
1
|
"""Table intersects."""
|
|
2
2
|
|
|
3
|
+
import logging
|
|
3
4
|
from pathlib import Path
|
|
4
|
-
from typing import
|
|
5
|
+
from typing import (
|
|
6
|
+
Iterable,
|
|
7
|
+
Optional,
|
|
8
|
+
)
|
|
5
9
|
|
|
6
10
|
import polars as pl
|
|
7
11
|
|
|
8
|
-
from .
|
|
12
|
+
from .col import (
|
|
13
|
+
CoordCol,
|
|
14
|
+
get_coord_cols,
|
|
15
|
+
)
|
|
16
|
+
from .join import (
|
|
17
|
+
pairwise_join,
|
|
18
|
+
pairwise_join_iter,
|
|
19
|
+
)
|
|
9
20
|
from .merge import merge_depth
|
|
10
|
-
from .col import CoordCol, get_coord_cols
|
|
11
21
|
|
|
12
22
|
__all__ = [
|
|
13
23
|
'as_bool',
|
|
14
24
|
'as_proportion',
|
|
15
25
|
]
|
|
16
26
|
|
|
27
|
+
logger = logging.getLogger(__name__)
|
|
28
|
+
|
|
17
29
|
|
|
18
30
|
def as_bool(
|
|
19
31
|
df_a: pl.LazyFrame | pl.DataFrame,
|
|
@@ -5,14 +5,25 @@ __all__ = [
|
|
|
5
5
|
'pairwise_join_iter',
|
|
6
6
|
]
|
|
7
7
|
|
|
8
|
+
import logging
|
|
8
9
|
from pathlib import Path
|
|
9
|
-
from typing import
|
|
10
|
+
from typing import (
|
|
11
|
+
Iterable,
|
|
12
|
+
Iterator,
|
|
13
|
+
Optional,
|
|
14
|
+
)
|
|
10
15
|
|
|
11
16
|
import polars as pl
|
|
12
17
|
|
|
13
|
-
from .col import CoordCol, get_coord_cols
|
|
14
18
|
from ..util.lazy import materialize_pair
|
|
15
19
|
|
|
20
|
+
from .col import (
|
|
21
|
+
CoordCol,
|
|
22
|
+
get_coord_cols,
|
|
23
|
+
)
|
|
24
|
+
|
|
25
|
+
logger = logging.getLogger(__name__)
|
|
26
|
+
|
|
16
27
|
CHUNK_SIZE: int = 2_500
|
|
17
28
|
"""Default size of join chunks. Breaks up tables into batches of this size or less."""
|
|
18
29
|
|
|
@@ -4,11 +4,21 @@ __all__ = [
|
|
|
4
4
|
'merge_depth',
|
|
5
5
|
]
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
import logging
|
|
8
|
+
from typing import (
|
|
9
|
+
Optional,
|
|
10
|
+
Iterable,
|
|
11
|
+
)
|
|
8
12
|
|
|
9
13
|
import polars as pl
|
|
10
14
|
|
|
11
|
-
from .col import
|
|
15
|
+
from .col import (
|
|
16
|
+
CoordCol,
|
|
17
|
+
get_coord_cols,
|
|
18
|
+
make_unique_col,
|
|
19
|
+
)
|
|
20
|
+
|
|
21
|
+
logger = logging.getLogger(__name__)
|
|
12
22
|
|
|
13
23
|
|
|
14
24
|
def merge_depth(
|
|
@@ -11,14 +11,24 @@ __all__ = [
|
|
|
11
11
|
|
|
12
12
|
import ast
|
|
13
13
|
from collections.abc import Iterable
|
|
14
|
-
from dataclasses import
|
|
14
|
+
from dataclasses import (
|
|
15
|
+
dataclass,
|
|
16
|
+
field,
|
|
17
|
+
)
|
|
15
18
|
from graphlib import TopologicalSorter
|
|
16
19
|
import importlib
|
|
17
20
|
import inspect
|
|
21
|
+
import logging
|
|
18
22
|
import re
|
|
19
23
|
import sys
|
|
20
24
|
from types import ModuleType
|
|
21
|
-
from typing import
|
|
25
|
+
from typing import (
|
|
26
|
+
Any,
|
|
27
|
+
Generator,
|
|
28
|
+
Optional,
|
|
29
|
+
)
|
|
30
|
+
|
|
31
|
+
logger = logging.getLogger(__name__)
|
|
22
32
|
|
|
23
33
|
|
|
24
34
|
@dataclass(frozen=True)
|
|
@@ -6,14 +6,20 @@ __all__ = [
|
|
|
6
6
|
]
|
|
7
7
|
|
|
8
8
|
import hashlib
|
|
9
|
+
import logging
|
|
9
10
|
from pathlib import Path
|
|
10
|
-
from typing import
|
|
11
|
+
from typing import (
|
|
12
|
+
Iterable,
|
|
13
|
+
Optional,
|
|
14
|
+
)
|
|
11
15
|
|
|
12
16
|
import Bio.SeqIO
|
|
13
17
|
import polars as pl
|
|
14
18
|
|
|
15
19
|
from . import io
|
|
16
20
|
|
|
21
|
+
logger = logging.getLogger(__name__)
|
|
22
|
+
|
|
17
23
|
|
|
18
24
|
def read_fai(
|
|
19
25
|
fai_file_name: str | Path,
|
|
@@ -4,10 +4,19 @@ __all__ = [
|
|
|
4
4
|
'PlainOrGzReader',
|
|
5
5
|
]
|
|
6
6
|
|
|
7
|
-
from dataclasses import
|
|
7
|
+
from dataclasses import (
|
|
8
|
+
dataclass,
|
|
9
|
+
field,
|
|
10
|
+
)
|
|
8
11
|
import gzip
|
|
12
|
+
import logging
|
|
9
13
|
from pathlib import Path
|
|
10
|
-
from typing import
|
|
14
|
+
from typing import (
|
|
15
|
+
Any,
|
|
16
|
+
Optional,
|
|
17
|
+
)
|
|
18
|
+
|
|
19
|
+
logger = logging.getLogger(__name__)
|
|
11
20
|
|
|
12
21
|
|
|
13
22
|
@dataclass
|
|
@@ -5,9 +5,11 @@ __all__ = [
|
|
|
5
5
|
]
|
|
6
6
|
|
|
7
7
|
import collections
|
|
8
|
-
import
|
|
8
|
+
import logging
|
|
9
9
|
from typing import Any
|
|
10
10
|
|
|
11
|
+
import numpy as np
|
|
12
|
+
|
|
11
13
|
from . import util as kmer_util
|
|
12
14
|
|
|
13
15
|
# Get type hints for optional matplotlib objects
|
|
@@ -22,6 +24,8 @@ try:
|
|
|
22
24
|
except ImportError:
|
|
23
25
|
pass
|
|
24
26
|
|
|
27
|
+
logger = logging.getLogger(__name__)
|
|
28
|
+
|
|
25
29
|
|
|
26
30
|
def dotplot(
|
|
27
31
|
seq_x: str,
|
|
@@ -12,12 +12,20 @@ __all__ = [
|
|
|
12
12
|
'stream_index',
|
|
13
13
|
]
|
|
14
14
|
|
|
15
|
+
import logging
|
|
15
16
|
import math
|
|
16
17
|
from types import MappingProxyType
|
|
17
|
-
from typing import
|
|
18
|
+
from typing import (
|
|
19
|
+
Self,
|
|
20
|
+
Optional,
|
|
21
|
+
Iterator,
|
|
22
|
+
Mapping,
|
|
23
|
+
)
|
|
18
24
|
|
|
19
25
|
import numpy as np
|
|
20
26
|
|
|
27
|
+
logger = logging.getLogger(__name__)
|
|
28
|
+
|
|
21
29
|
# Integer to base
|
|
22
30
|
INT_TO_BASE: list[str] = ['A', 'C', 'G', 'T']
|
|
23
31
|
"""Maps 2-bit integer to base string."""
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
"""Base class for callset intersects.
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
"""
|
|
1
|
+
"""Base class for callset intersects."""
|
|
5
2
|
|
|
6
3
|
__all__ = [
|
|
7
4
|
'CallsetDef',
|
|
@@ -9,9 +6,16 @@ __all__ = [
|
|
|
9
6
|
'CallsetDefInputType',
|
|
10
7
|
]
|
|
11
8
|
|
|
12
|
-
from abc import
|
|
13
|
-
|
|
9
|
+
from abc import (
|
|
10
|
+
ABC,
|
|
11
|
+
abstractmethod,
|
|
12
|
+
)
|
|
13
|
+
from collections.abc import (
|
|
14
|
+
Container,
|
|
15
|
+
Iterable,
|
|
16
|
+
)
|
|
14
17
|
import json
|
|
18
|
+
import logging
|
|
15
19
|
from pathlib import Path
|
|
16
20
|
from typing import (
|
|
17
21
|
Any,
|
|
@@ -25,6 +29,8 @@ import polars as pl
|
|
|
25
29
|
from ..meta.decorators import lockable
|
|
26
30
|
from ..util.str import collision_rename
|
|
27
31
|
|
|
32
|
+
logger = logging.getLogger(__name__)
|
|
33
|
+
|
|
28
34
|
|
|
29
35
|
class CallsetDef(NamedTuple):
|
|
30
36
|
"""Callset definition.
|
|
@@ -33,27 +39,31 @@ class CallsetDef(NamedTuple):
|
|
|
33
39
|
:ivar name: The name of the callset within a collection of callsets.
|
|
34
40
|
:ivar metadata: The metadata of the callset or None if no metadata is provided.
|
|
35
41
|
"""
|
|
42
|
+
|
|
36
43
|
table: pl.LazyFrame
|
|
37
44
|
name: str
|
|
38
45
|
metadata: Optional[str]
|
|
39
46
|
|
|
40
47
|
def __str__(self) -> str:
|
|
48
|
+
"""Return a string representation of the callset definition."""
|
|
41
49
|
return self.name
|
|
42
50
|
|
|
43
51
|
def __repr__(self) -> str:
|
|
52
|
+
"""Return a string representation of the callset definition."""
|
|
44
53
|
return f'CallsetDef(table={self.table!r}, name={self.name}, metadata={self.metadata})'
|
|
45
54
|
|
|
55
|
+
|
|
46
56
|
CallsetDefInputType: TypeAlias = (
|
|
47
57
|
pl.DataFrame
|
|
48
58
|
| pl.LazyFrame
|
|
49
59
|
| tuple[
|
|
50
60
|
pl.DataFrame | pl.LazyFrame,
|
|
51
61
|
]
|
|
52
|
-
| tuple
|
|
62
|
+
| tuple[
|
|
53
63
|
pl.DataFrame | pl.LazyFrame,
|
|
54
64
|
Optional[str],
|
|
55
65
|
]
|
|
56
|
-
| tuple
|
|
66
|
+
| tuple[
|
|
57
67
|
pl.DataFrame | pl.LazyFrame,
|
|
58
68
|
Optional[str],
|
|
59
69
|
Optional[str | dict],
|
|
@@ -81,7 +91,6 @@ def _get_definition(
|
|
|
81
91
|
|
|
82
92
|
:return: A callset definition.
|
|
83
93
|
"""
|
|
84
|
-
|
|
85
94
|
# Get callset table and name
|
|
86
95
|
callset_name = None
|
|
87
96
|
callset_meta = None
|
|
@@ -100,8 +109,8 @@ def _get_definition(
|
|
|
100
109
|
elif isinstance(callset_def, tuple):
|
|
101
110
|
if len(callset_def) < 1:
|
|
102
111
|
raise ValueError(
|
|
103
|
-
|
|
104
|
-
|
|
112
|
+
'Callset must be a Polars table or an iterable '
|
|
113
|
+
'of callset definition elements (table, name, metadata): Received an empty iterable'
|
|
105
114
|
)
|
|
106
115
|
|
|
107
116
|
if isinstance(callset_def[0], pl.LazyFrame):
|
|
@@ -161,8 +170,10 @@ def _get_definition(
|
|
|
161
170
|
)
|
|
162
171
|
.cast(pl.String)
|
|
163
172
|
.fill_null(
|
|
164
|
-
pl.concat_str(
|
|
165
|
-
|
|
173
|
+
pl.concat_str(
|
|
174
|
+
pl.lit('var'),
|
|
175
|
+
pl.col('_mg_src_index')
|
|
176
|
+
),
|
|
166
177
|
)
|
|
167
178
|
.alias('id')
|
|
168
179
|
)
|
|
@@ -177,8 +188,7 @@ def _get_definition(
|
|
|
177
188
|
table=callset_table,
|
|
178
189
|
name=callset_name,
|
|
179
190
|
metadata=callset_meta,
|
|
180
|
-
|
|
181
|
-
|
|
191
|
+
)
|
|
182
192
|
|
|
183
193
|
|
|
184
194
|
@lockable
|
|
@@ -244,7 +254,6 @@ class MergeBase(ABC):
|
|
|
244
254
|
:return: A list of :class:`CallsetDef`, one per input source, in input order.
|
|
245
255
|
"""
|
|
246
256
|
name_set = set()
|
|
247
|
-
callset_table: pl.LazyFrame
|
|
248
257
|
|
|
249
258
|
callset_tuple_list: list[CallsetDef] = []
|
|
250
259
|
|
|
@@ -290,7 +299,7 @@ def _get_name(
|
|
|
290
299
|
:returns: A name for this input source.
|
|
291
300
|
"""
|
|
292
301
|
if name is None:
|
|
293
|
-
name =
|
|
302
|
+
name = 'source.1'
|
|
294
303
|
|
|
295
304
|
name = collision_rename(str(name), '.', *args)
|
|
296
305
|
|
|
@@ -19,8 +19,14 @@ __all__ = [
|
|
|
19
19
|
|
|
20
20
|
from abc import ABCMeta
|
|
21
21
|
from dataclasses import dataclass
|
|
22
|
+
import logging
|
|
22
23
|
from types import MappingProxyType
|
|
23
|
-
from typing import
|
|
24
|
+
from typing import (
|
|
25
|
+
TYPE_CHECKING,
|
|
26
|
+
Any,
|
|
27
|
+
Optional,
|
|
28
|
+
Mapping,
|
|
29
|
+
)
|
|
24
30
|
|
|
25
31
|
from ...align import score
|
|
26
32
|
from ...seqmatch import MatchScoreModel
|
|
@@ -29,6 +35,9 @@ if TYPE_CHECKING:
|
|
|
29
35
|
from .strategy import IntersectStrategy
|
|
30
36
|
|
|
31
37
|
|
|
38
|
+
logger = logging.getLogger(__name__)
|
|
39
|
+
|
|
40
|
+
|
|
32
41
|
RESERVED_PARAM_NAMES: frozenset[str] = frozenset({
|
|
33
42
|
'spec_type',
|
|
34
43
|
'arg_list',
|
|
@@ -11,11 +11,20 @@ __all__ = [
|
|
|
11
11
|
# IntersectConfig (full configuration specification)
|
|
12
12
|
#
|
|
13
13
|
|
|
14
|
+
import logging
|
|
14
15
|
import re
|
|
15
16
|
from typing import Optional
|
|
16
17
|
|
|
17
18
|
from .parser import IntersectConfigParser
|
|
18
|
-
from .stage import
|
|
19
|
+
from .stage import (
|
|
20
|
+
IntersectStage,
|
|
21
|
+
IntersectStageMatch,
|
|
22
|
+
IntersectStageRo,
|
|
23
|
+
IntersectStageDistance,
|
|
24
|
+
IntersectStageExact,
|
|
25
|
+
)
|
|
26
|
+
|
|
27
|
+
logger = logging.getLogger(__name__)
|
|
19
28
|
|
|
20
29
|
|
|
21
30
|
class IntersectStrategy(object):
|