Skip to content

Commit c5216ae

Browse files
committed
likelihood refactor
1 parent 4d1b3a6 commit c5216ae

8 files changed

Lines changed: 609 additions & 662 deletions

File tree

src/psyphy/__init__.py

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,10 @@
2828
- WPPM: structured prior over basis weights and
2929
decay_rate-controlled covariance fields.
3030
31-
3. TaskLikelihood (model/likelihood.py):
31+
3. TaskLikelihood (model/likelihood/base.py):
3232
- Encodes the psychophysical decision rule.
33+
- Concrete tasks live in model/likelihood/oddity.py (MC-based)
34+
and model/likelihood/neural.py (NN surrogate).
3335
- WPPM: loglik and predict implemented via Monte Carlo
3436
observer simulations, using the noise model explicitly.
3537
@@ -63,23 +65,24 @@
6365
6466
Extensibility
6567
-------------
66-
- To add a new task: subclass TaskLikelihood, implement predict/loglik.
68+
- To add a new task: subclass TaskLikelihood, implement predict() only
69+
(loglik and simulate are inherited). Add the class to
70+
model/likelihood/ and re-export from model/likelihood/__init__.py.
6771
- To add a new noise model: subclass NoiseModel, implement logpdf/sample.
6872
6973
7074
7175
----------------------------------------------------------------------
7276
"""
7377

78+
# from . import session as session
7479
# Data
7580
# Re-export subpackages for unified import style (e.g., psyphy.model, psyphy.inference)
7681
# from . import acquisition as acquisition
7782
from . import data as data
7883
from . import inference as inference
7984
from . import model as model
8085
from . import posterior as posterior
81-
82-
# from . import session as session
8386
from . import trial_placement as trial_placement
8487
from . import utils as utils
8588
from .data.dataset import ResponseData, TrialBatch
@@ -89,6 +92,12 @@
8992
# Inference
9093
from .inference.map_optimizer import MAPOptimizer
9194
from .model.likelihood import OddityTask, OddityTaskConfig
95+
96+
# TODO: expose NN surrogate at top level once NeuralSurrogateOddityTask.predict()
97+
# is fully implemented (feature extraction + trained forward function).
98+
# Add here:
99+
# from .model.likelihood import NeuralSurrogateTask, NeuralSurrogateOddityTask
100+
# And add both names to __all__ below alongside OddityTask.
92101
from .model.noise import GaussianNoise, StudentTNoise
93102
from .model.prior import Prior
94103
from .model.wppm import WPPM

src/psyphy/model/__init__.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,13 @@
2121

2222
from .base import Model
2323
from .covariance_field import CovarianceField, WPPMCovarianceField
24-
from .likelihood import OddityTask, OddityTaskConfig, TaskLikelihood
24+
from .likelihood import (
25+
NeuralSurrogateOddityTask,
26+
NeuralSurrogateTask,
27+
OddityTask,
28+
OddityTaskConfig,
29+
TaskLikelihood,
30+
)
2531
from .noise import GaussianNoise, StudentTNoise
2632
from .prior import Prior
2733
from .wppm import WPPM
@@ -40,6 +46,8 @@
4046
"TaskLikelihood",
4147
"OddityTask",
4248
"OddityTaskConfig",
49+
"NeuralSurrogateTask",
50+
"NeuralSurrogateOddityTask",
4351
# Noise models
4452
"GaussianNoise",
4553
"StudentTNoise",

0 commit comments

Comments
 (0)