Skip to content

Commit 367710b

Browse files
committed
Rename Strategy to Reducer
1 parent ce1ef2b commit 367710b

File tree

14 files changed

+90
-90
lines changed

14 files changed

+90
-90
lines changed

pyard/handlers/allele_reducer.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from typing import TYPE_CHECKING
44

55
from ..constants import VALID_REDUCTION_TYPE
6-
from ..strategies.strategy_factory import StrategyFactory
6+
from ..reducers.reducer_factory import StrategyFactory
77

88
if TYPE_CHECKING:
99
from ..ard import ARD

pyard/reducers/__init__.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# -*- coding: utf-8 -*-
2+
3+
from .base_reducer import Reducer
4+
from .g_reducer import GGroupReducer
5+
from .p_reducer import PGroupReducer
6+
from .lg_reducer import LGReducer, LGXReducer
7+
from .w_reducer import WReducer
8+
from .exon_reducer import ExonReducer
9+
from .u2_reducer import U2Reducer
10+
from .s_reducer import SReducer
11+
from .default_reducer import DefaultReducer
12+
from .reducer_factory import StrategyFactory
13+
14+
__all__ = [
15+
"Reducer",
16+
"GGroupReducer",
17+
"PGroupReducer",
18+
"LGReducer",
19+
"LGXReducer",
20+
"WReducer",
21+
"ExonReducer",
22+
"U2Reducer",
23+
"SReducer",
24+
"DefaultReducer",
25+
"StrategyFactory",
26+
]

pyard/strategies/base_strategy.py renamed to pyard/reducers/base_reducer.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
from ..ard import ARD
88

99

10-
class ReductionStrategy(ABC):
10+
class Reducer(ABC):
1111
"""Base class for all reduction strategies"""
1212

1313
def __init__(self, ard_instance: "ARD"):

pyard/strategies/default_strategy.py renamed to pyard/reducers/default_reducer.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
# -*- coding: utf-8 -*-
22
from typing_extensions import override
33

4-
from .base_strategy import ReductionStrategy
4+
from .base_reducer import Reducer
55

66

7-
class DefaultStrategy(ReductionStrategy):
7+
class DefaultReducer(Reducer):
88
"""Default strategy for handling P/G suffixes and validation"""
99

1010
@override

pyard/strategies/exon_strategy.py renamed to pyard/reducers/exon_reducer.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
# -*- coding: utf-8 -*-
22
from typing import override
33

4-
from .base_strategy import ReductionStrategy
4+
from .base_reducer import Reducer
55

66

7-
class ExonStrategy(ReductionStrategy):
7+
class ExonReducer(Reducer):
88
"""Strategy for exon reduction"""
99

1010
@override

pyard/strategies/g_strategy.py renamed to pyard/reducers/g_reducer.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
# -*- coding: utf-8 -*-
22
from typing_extensions import override
33

4-
from .default_strategy import DefaultStrategy
4+
from .default_reducer import DefaultReducer
55

66

7-
class GGroupStrategy(DefaultStrategy):
7+
class GGroupReducer(DefaultReducer):
88
"""Strategy for G group reduction"""
99

1010
@override

pyard/strategies/lg_strategy.py renamed to pyard/reducers/lg_reducer.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
# -*- coding: utf-8 -*-
22
from typing import override
33

4-
from .base_strategy import ReductionStrategy
4+
from .base_reducer import Reducer
55

66

7-
class LGXStrategy(ReductionStrategy):
7+
class LGXReducer(Reducer):
88
"""Strategy for lgx reduction"""
99

1010
@override
@@ -16,12 +16,12 @@ def reduce(self, allele: str) -> str:
1616
return ":".join(allele.split(":")[0:2])
1717

1818

19-
class LGStrategy(ReductionStrategy):
19+
class LGReducer(Reducer):
2020
"""Strategy for lg reduction (lgx + g suffix)"""
2121

2222
@override
2323
def reduce(self, allele: str) -> str:
24-
lgx_strategy = LGXStrategy(self.ard)
24+
lgx_strategy = LGXReducer(self.ard)
2525
redux_allele = lgx_strategy.reduce(allele)
2626
return self._add_lg_suffix(redux_allele)
2727

pyard/strategies/p_strategy.py renamed to pyard/reducers/p_reducer.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
# -*- coding: utf-8 -*-
22
from typing import override
33

4-
from .base_strategy import ReductionStrategy
4+
from .base_reducer import Reducer
55

66

7-
class PGroupStrategy(ReductionStrategy):
7+
class PGroupReducer(Reducer):
88
"""Strategy for P group reduction"""
99

1010
@override

pyard/reducers/reducer_factory.py

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
# -*- coding: utf-8 -*-
2+
3+
from typing import Dict, TYPE_CHECKING
4+
5+
from .default_reducer import DefaultReducer
6+
from .base_reducer import Reducer
7+
from .exon_reducer import ExonReducer
8+
from .g_reducer import GGroupReducer
9+
from .lg_reducer import LGReducer, LGXReducer
10+
from .p_reducer import PGroupReducer
11+
from .s_reducer import SReducer
12+
from .u2_reducer import U2Reducer
13+
from .w_reducer import WReducer
14+
from ..constants import VALID_REDUCTION_TYPE
15+
16+
if TYPE_CHECKING:
17+
from ..ard import ARD
18+
19+
20+
class StrategyFactory:
21+
"""Factory for creating reduction strategies"""
22+
23+
def __init__(self, ard_instance: "ARD"):
24+
self.ard = ard_instance
25+
self._strategies: Dict[str, Reducer] = {}
26+
self._initialize_strategies()
27+
28+
def _initialize_strategies(self):
29+
"""Initialize all reduction strategies"""
30+
self._strategies = {
31+
"G": GGroupReducer(self.ard),
32+
"P": PGroupReducer(self.ard),
33+
"lg": LGReducer(self.ard),
34+
"lgx": LGXReducer(self.ard),
35+
"W": WReducer(self.ard),
36+
"exon": ExonReducer(self.ard),
37+
"U2": U2Reducer(self.ard),
38+
"S": SReducer(self.ard),
39+
"default": DefaultReducer(self.ard),
40+
}
41+
42+
def get_strategy(self, redux_type: VALID_REDUCTION_TYPE) -> Reducer:
43+
"""Get the appropriate strategy for the reduction type"""
44+
return self._strategies.get(redux_type, self._strategies["default"])

pyard/strategies/s_strategy.py renamed to pyard/reducers/s_reducer.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33
import functools
44
from typing import override
55

6-
from .base_strategy import ReductionStrategy
6+
from .base_reducer import Reducer
77

88

9-
class SStrategy(ReductionStrategy):
9+
class SReducer(Reducer):
1010
"""Strategy for serology reduction"""
1111

1212
@override

0 commit comments

Comments
 (0)