Skip to content

Commit db4b5cc

Browse files
HFooladiclaude
andcommitted
fix: update examples to work with current THEMAP API
- Rewrite molecule_datasets_demo.py to use correct API methods - Fix DataFold imports (use themap.data instead of submodules) - Fix dict access for datapoints (use ["smiles"] instead of .smiles) - Add noqa comments for E402 in molecule_distance_featurizers.py - Export MoleculeDatasetDistance and ProteinDatasetDistance from distance module - Fix task_distance_demo.py to use correct method parameters - Mark metalearning_example.py as placeholder with WIP note 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <[email protected]>
1 parent c2ebd20 commit db4b5cc

File tree

10 files changed

+323
-357
lines changed

10 files changed

+323
-357
lines changed

examples/advanced/metalearning_example.py

Lines changed: 28 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22
"""
33
Example script demonstrating prototypical networks for meta-learning on molecular tasks.
44
5+
NOTE: This is a placeholder example showing the intended API for the meta-learning module.
6+
Some features shown here are still under development and may not work yet.
7+
See themap/metalearning/__init__.py for currently available exports.
8+
59
This script shows how to:
610
1. Load tasks and create meta-learning splits
711
2. Configure and train a prototypical network
@@ -13,16 +17,27 @@
1317
from pathlib import Path
1418

1519
# Import THEMAP modules
16-
from themap.data.molecule_datasets import load_tasks_from_directory
17-
from themap.metalearning import (
18-
EvaluationConfig,
19-
MetaLearningEvaluator,
20-
MetaLearningTrainer,
21-
PrototypicalNetworkConfig,
22-
TrainingConfig,
23-
create_meta_splits,
24-
create_task_folders,
25-
)
20+
# Note: Some of these imports are placeholders for features under development
21+
try:
22+
from themap.data.tasks import Tasks
23+
from themap.metalearning import (
24+
EvaluationConfig,
25+
MetaLearningEvaluator,
26+
MetaLearningTrainer,
27+
PrototypicalNetwork,
28+
TrainingConfig,
29+
create_meta_splits,
30+
)
31+
32+
# These are placeholder imports for future functionality
33+
PrototypicalNetworkConfig = None # Placeholder - use PrototypicalNetwork directly
34+
create_task_folders = None # Placeholder - not yet implemented
35+
load_tasks_from_directory = None # Placeholder - use Tasks.from_directory instead
36+
except ImportError as e:
37+
raise ImportError(
38+
f"Meta-learning module not fully available: {e}. "
39+
"Some features in this example are still under development."
40+
)
2641

2742
# Setup logging
2843
logging.basicConfig(level=logging.INFO)
@@ -61,7 +76,7 @@ def main():
6176
logger.info(f"Task splits: {task_splits.summary()}")
6277

6378
# Create folder structure
64-
meta_folders = create_task_folders(
79+
_meta_folders = create_task_folders(
6580
task_splits=task_splits,
6681
base_dir=output_dir / "task_splits",
6782
)
@@ -72,12 +87,13 @@ def main():
7287
sample_featurizer_name = "ecfp"
7388

7489
# Get feature dimensions from a sample molecule
90+
# datapoints returns list of dicts, not objects
7591
if sample_task.molecule_dataset and sample_task.molecule_dataset.datapoints:
7692
sample_datapoint = sample_task.molecule_dataset.datapoints[0]
7793
from themap.utils.featurizer_utils import get_featurizer
7894

7995
featurizer = get_featurizer(sample_featurizer_name)
80-
sample_features = featurizer(sample_datapoint.smiles)
96+
sample_features = featurizer(sample_datapoint["smiles"])
8197
input_dim = len(sample_features)
8298
logger.info(f"Using input dimension: {input_dim}")
8399
else:

examples/advanced/task_embedding_molecules.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -303,8 +303,9 @@ def _compute_task_features(
303303
"""Compute features for a single task with error handling."""
304304
try:
305305
# Extract SMILES, labels from MoleculeDataset
306-
smiles_list = [item.smiles for item in task.data]
307-
labels_list = [item.bool_label for item in task.data]
306+
# datapoints/data returns list of dicts, not objects
307+
smiles_list = [item["smiles"] for item in task.data]
308+
labels_list = [item["bool_label"] for item in task.data]
308309

309310
# Compute features using transformer
310311
features_array = transformer(smiles_list)

0 commit comments

Comments
 (0)