Skip to content
Snippets Groups Projects
Commit 20162764 authored by Roelofsen, Hans's avatar Roelofsen, Hans
Browse files

ignore rules set to not-classify

parent c78aae2b
No related branches found
No related tags found
No related merge requests found
...@@ -240,14 +240,17 @@ class DefaultReClassifierNewvalue(ReClassifier): ...@@ -240,14 +240,17 @@ class DefaultReClassifierNewvalue(ReClassifier):
------- -------
""" """
self.key_to_category = reclass_rules.rules_df.set_index(
self.key_to_category = reclass_rules.rules_df.loc[reclass_rules.applicable_rules].set_index(
"newvalue" "newvalue"
).description.to_dict() ).description.to_dict()
self.category_to_outvalue = reclass_rules.rules_df.set_index( self.category_to_outvalue = reclass_rules.rules_df.loc[reclass_rules.applicable_rules].set_index(
"description" "description"
).newvalue.to_dict() ).newvalue.to_dict()
self.key_to_outvalue = dict( self.key_to_outvalue = dict(
zip(reclass_rules.rules_df.newvalue, reclass_rules.rules_df.newvalue) zip(reclass_rules.rules_df.loc[reclass_rules.applicable_rules].newvalue,
reclass_rules.rules_df.loc[reclass_rules.applicable_rules].newvalue)
) )
...@@ -271,12 +274,13 @@ class DefaultReClassifierFirstrule(ReClassifier): ...@@ -271,12 +274,13 @@ class DefaultReClassifierFirstrule(ReClassifier):
""" """
self.key_to_category = dict( self.key_to_category = dict(
zip(reclass_rules.rules_df.rule_name, reclass_rules.rules_df.rule_name) zip(reclass_rules.rules_df.loc[reclass_rules.applicable_rules, 'rule_name'],
reclass_rules.rules_df.loc[reclass_rules.applicable_rules, 'rule_name'])
) )
self.category_to_outvalue = { self.category_to_outvalue = {
j: i j: i
for i, j in enumerate( for i, j in enumerate(
pd.unique(reclass_rules.rules_df.sort_values(by="rule_name").rule_name), pd.unique(reclass_rules.rules_df.loc[reclass_rules.applicable_rules].sort_values(by="rule_name").rule_name),
start=1, start=1,
) )
} }
...@@ -293,10 +297,18 @@ class DownstreamReClassifier(ReClassifier): ...@@ -293,10 +297,18 @@ class DownstreamReClassifier(ReClassifier):
Class for holding user-specified, non-default, downstream ReClassifiers Class for holding user-specified, non-default, downstream ReClassifiers
""" """
def __init__(self, name: str, key: str, excel_source: str, excel_sheet: str): def __init__(self, name: str, key: str, definition_df: pd.DataFrame):
"""
Parameters
----------
name
key
definition_df: Dataframe with the defintion of the ReClassifier. If key=firstrule --> reclass_rules If key=newvalue --> downstream sheet
"""
super().__init__(name=name, key=key) super().__init__(name=name, key=key)
self.excel_source = excel_source self.definition_df = definition_df
self.excel_sheet = excel_sheet
def build_key_to_category( def build_key_to_category(
self, self,
...@@ -310,13 +322,10 @@ class DownstreamReClassifier(ReClassifier): ...@@ -310,13 +322,10 @@ class DownstreamReClassifier(ReClassifier):
index_name = {"newvalue": "newvalue", "firstrule": "rule_name"}[self.key] index_name = {"newvalue": "newvalue", "firstrule": "rule_name"}[self.key]
df = pd.read_excel(
io=self.excel_source,
sheet_name=self.excel_sheet,
)
self.key_to_category = df.dropna(subset=[self.name]).set_index(index_name).loc[:, self.name].to_dict()
def build_category_to_outvalue(self): self.key_to_category = self.definition_df.dropna(subset=[self.name]).set_index(index_name).loc[:, self.name].to_dict()
def build_category_to_outvalue(self, excel_source):
""" """
Build category_to_outvalue dictionary Build category_to_outvalue dictionary
Returns Returns
...@@ -326,7 +335,7 @@ class DownstreamReClassifier(ReClassifier): ...@@ -326,7 +335,7 @@ class DownstreamReClassifier(ReClassifier):
# Build mapping from output category to output value. Try looking for dedicated sheet first # Build mapping from output category to output value. Try looking for dedicated sheet first
try: try:
df = pd.read_excel(self.excel_source, sheet_name=self.name).set_index( df = pd.read_excel(excel_source, sheet_name=self.name).set_index(
"Description" "Description"
) )
self.category_to_outvalue = df.Value.to_dict() self.category_to_outvalue = df.Value.to_dict()
...@@ -403,11 +412,10 @@ def build_downstream_reclassifiers( ...@@ -403,11 +412,10 @@ def build_downstream_reclassifiers(
reclassifier = DownstreamReClassifier( reclassifier = DownstreamReClassifier(
name=column, name=column,
key="firstrule", key="firstrule",
excel_source=arguments["upstream_excel"], definition_df=reclass_rules.rules_df.loc[reclass_rules.applicable_rules]
excel_sheet=arguments["upstream_sheet"],
) )
reclassifier.build_key_to_category() reclassifier.build_key_to_category()
reclassifier.build_category_to_outvalue() reclassifier.build_category_to_outvalue(excel_source=arguments['upstream_excel'])
reclassifier.build_key_to_outvalue() reclassifier.build_key_to_outvalue()
reclassifiers.append(reclassifier) reclassifiers.append(reclassifier)
...@@ -421,11 +429,10 @@ def build_downstream_reclassifiers( ...@@ -421,11 +429,10 @@ def build_downstream_reclassifiers(
reclassifier = DownstreamReClassifier( reclassifier = DownstreamReClassifier(
name=column, name=column,
key="newvalue", key="newvalue",
excel_source=arguments["downstream_excel"], definition_df=downstream_sheet
excel_sheet=arguments["downstream_sheet"],
) )
reclassifier.build_key_to_category() reclassifier.build_key_to_category()
reclassifier.build_category_to_outvalue() reclassifier.build_category_to_outvalue(excel_source=arguments['downstream_excel'])
reclassifier.build_key_to_outvalue() reclassifier.build_key_to_outvalue()
reclassifiers.append(reclassifier) reclassifiers.append(reclassifier)
......
...@@ -70,6 +70,7 @@ class ReclassRules: ...@@ -70,6 +70,7 @@ class ReclassRules:
self.rules_df["rule_name"] = [ self.rules_df["rule_name"] = [
"rule{:03}".format(i + 1) for i in self.rules_df.index "rule{:03}".format(i + 1) for i in self.rules_df.index
] ]
self.applicable_rules = self.rules_df.loc[self.rules_df.reclass].index
self.source_rasters = [ self.source_rasters = [
x x
for x in list(self.rules_df) for x in list(self.rules_df)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment