Redesign Project Structure #22
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
After asserting that Model.data == data.obj, all instances of data access through the model have been eliminated. This necessitated structural changes to the Model class and a redesign of workflows, particularly in evaluation and benchmarking. The revised approach now explicitly passes data where needed, improving modularity and clarity.
Several deprecated methods, including scatterDataset, scatterDecisionBoundry, and visualizeDatasetAndFixedModel, have been moved to a dedicated deprecated/load_model.py file. These methods were previously used in loadModel.py, which is now commented out. Similarly, the pipelining folder has been deprecated and relocated, as it was only utilized in api/model.py for returning features. Loadmodelfordataset now accepts dataset objects rather than dataset names.
A key highlight of this pull request is the introduction of a more intuitive project workflow. The new flow encapsulates the dataset, model, and recourse method setup, ensuring clean interactions between components:
dataset = DataCatalog(data_name, model_type)
model = ModelCatalog(dataset, model_type, backend)
method = RecourseMethod(dataset, model)
benchmark = Benchmark(method, factuals)
This approach aligns with the decoupling of data and model, simplifying how evaluation and benchmarking pipelines access these components. The method object now serves as the single source for both the model and data, ensuring encapsulation and cleaner dependencies.