Skip to content

Commit 3414fec

Browse files
lachlangroseCopilotrabii-chaarani
authored
fix: move extra sort arguments to sorter init (#241)
* fix: move extra arguments to init * Apply suggestions from code review Co-authored-by: Copilot <[email protected]> * fix: resolving copilot review and adding class attribute with required arguments * fix: remove SorterUseHint call * fix: remove arguments from ABC make all requrements a list make all arguments required * style: style fixes by ruff and autoformatting by black * fix: add check for geology_data * fix: not initiliase sorter in project.init * fix: try use SorterUseNetworkX * fix: adding utils module and fixing tests * style: style fixes by ruff and autoformatting by black * fix: sorter arguments optional. Allow project to update attributes from map data * fix: minage/maxage optional * fix: add unit relations as optional argument * fix: default min/max age * fix: wrong defaults. --------- Co-authored-by: Copilot <[email protected]> Co-authored-by: lachlangrose <[email protected]> Co-authored-by: rabii-chaarani <[email protected]>
1 parent 5e1031b commit 3414fec

File tree

12 files changed

+244
-155
lines changed

12 files changed

+244
-155
lines changed

map2loop/__init__.py

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
11
import logging
2+
from map2loop.logging import loggers, ch
23

3-
loggers = {}
4-
ch = logging.StreamHandler()
5-
formatter = logging.Formatter("%(levelname)s: %(asctime)s: %(filename)s:%(lineno)d -- %(message)s")
6-
ch.setFormatter(formatter)
7-
ch.setLevel(logging.WARNING)
84
from .project import Project
95
from .version import __version__
106

map2loop/logging.py

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
import logging
2-
import map2loop
32

3+
loggers = {}
44

5+
ch = ch = logging.StreamHandler()
6+
formatter = logging.Formatter("%(levelname)s: %(asctime)s: %(filename)s:%(lineno)d -- %(message)s")
7+
ch.setFormatter(formatter)
8+
ch.setLevel(logging.WARNING)
59
def get_levels():
610
"""dict for converting to logger levels from string
711
@@ -33,12 +37,12 @@ def getLogger(name: str):
3337
logging.Logger
3438
logger object
3539
"""
36-
if name in map2loop.loggers:
37-
return map2loop.loggers[name]
40+
if name in loggers:
41+
return loggers[name]
3842
logger = logging.getLogger(name)
39-
logger.addHandler(map2loop.ch)
43+
logger.addHandler(ch)
4044
logger.propagate = False
41-
map2loop.loggers[name] = logger
45+
loggers[name] = logger
4246
return logger
4347

4448

@@ -56,9 +60,9 @@ def set_level(level: str):
5660
"""
5761
levels = get_levels()
5862
level = levels.get(level, logging.WARNING)
59-
map2loop.ch.setLevel(level)
63+
ch.setLevel(level)
6064

61-
for name in map2loop.loggers:
65+
for name in loggers:
6266
logger = logging.getLogger(name)
6367
logger.setLevel(level)
6468
logger.info(f"Logging level set to {level}")

map2loop/project.py

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ def __init__(
140140
self.set_default_samplers()
141141
self.bounding_box = bounding_box
142142
self.contact_extractor = None
143-
self.sorter = SorterUseHint()
143+
self.sorter = SorterUseHint
144144
self.throw_calculator = ThrowCalculatorAlpha()
145145
self.fault_orientation = FaultOrientationNearest()
146146
self.map_data = MapData(verbose_level=verbose_level)
@@ -560,19 +560,22 @@ def calculate_stratigraphic_order(self, take_best=False):
560560
)
561561
self.contact_extractor.extract_all_contacts()
562562
if take_best:
563-
sorters = [SorterUseHint(), SorterAgeBased(), SorterAlpha(), SorterUseNetworkX()]
563+
sorters = [
564+
SorterAgeBased(),
565+
SorterAlpha(
566+
contacts=self.contact_extractor.contacts,
567+
),
568+
SorterUseNetworkX(
569+
unit_relationships=self.topology.get_unit_unit_relationships(),
570+
),
571+
]
564572
logger.info(
565573
f"Calculating best stratigraphic column from {[sorter.sorter_label for sorter in sorters]}"
566574
)
567575

568576
columns = [
569577
sorter.sort(
570578
self.stratigraphic_column.stratigraphicUnits,
571-
self.topology.get_unit_unit_relationships(),
572-
self.contact_extractor.contacts,
573-
self.map_data.get_map_data(Datatype.GEOLOGY),
574-
self.map_data.get_map_data(Datatype.STRUCTURE),
575-
self.map_data.get_map_data(Datatype.DTM),
576579
)
577580
for sorter in sorters
578581
]
@@ -600,13 +603,19 @@ def calculate_stratigraphic_order(self, take_best=False):
600603
self.stratigraphic_column.column = column
601604
else:
602605
logger.info(f'Calculating stratigraphic column using sorter {self.sorter.sorter_label}')
606+
# Update sorter with current data based on what it needs
607+
if hasattr(self.sorter, 'unit_relationships') and self.sorter.unit_relationships is None:
608+
self.sorter.unit_relationships = self.topology.get_unit_unit_relationships()
609+
if hasattr(self.sorter, 'contacts') and self.sorter.contacts is None:
610+
self.sorter.contacts = self.contact_extractor.contacts
611+
if hasattr(self.sorter, 'geology_data') and self.sorter.geology_data is None:
612+
self.sorter.geology_data = self.map_data.get_map_data(Datatype.GEOLOGY)
613+
if hasattr(self.sorter, 'structure_data') and self.sorter.structure_data is None:
614+
self.sorter.structure_data = self.map_data.get_map_data(Datatype.STRUCTURE)
615+
if hasattr(self.sorter, 'dtm_data') and self.sorter.dtm_data is None:
616+
self.sorter.dtm_data = self.map_data.get_map_data(Datatype.DTM)
603617
self.stratigraphic_column.column = self.sorter.sort(
604618
self.stratigraphic_column.stratigraphicUnits,
605-
self.topology.get_unit_unit_relationships(),
606-
self.contact_extractor.contacts,
607-
self.map_data.get_map_data(Datatype.GEOLOGY),
608-
self.map_data.get_map_data(Datatype.STRUCTURE),
609-
self.map_data.get_map_data(Datatype.DTM),
610619
)
611620

612621
@beartype.beartype

0 commit comments

Comments
 (0)