Skip to content

ExternalParameter defined at top level and referenced inside modular scenario causes internal AssertionError #394

@lola831

Description

@lola831

System Details

  1. Python 3.11.11
  2. Scenic main branch
  3. macOs 15.6.1 (MacBook Air M1)

Detailed Description

Defining an ExternalParameter at the top level and then referencing it inside a modular scenario causes an internal assertion error when running Scenic:

Traceback (most recent call last):
  File "/Users/lolamarrero/UCSC/Forked-Scenic/venv/bin/scenic", line 3, in <module>
    from scenic.__main__ import dummy
  File "/Users/lolamarrero/UCSC/Forked-Scenic/Scenic/src/scenic/__main__.py", line 274, in <module>
    scene, _ = generateScene()
               ^^^^^^^^^^^^^^^
  File "/Users/lolamarrero/UCSC/Forked-Scenic/Scenic/src/scenic/__main__.py", line 214, in generateScene
    scene, iterations = errors.callBeginningScenicTrace(
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/lolamarrero/UCSC/Forked-Scenic/Scenic/src/scenic/core/errors.py", line 282, in callBeginningScenicTrace
    return func()
           ^^^^^^
  File "/Users/lolamarrero/UCSC/Forked-Scenic/Scenic/src/scenic/__main__.py", line 215, in <lambda>
    lambda: scenario.generate(maxIterations=maxIterations, verbosity=args.verbosity)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/lolamarrero/UCSC/Forked-Scenic/Scenic/src/scenic/core/scenarios.py", line 403, in generate
    scenes, iterations = self.generateBatch(1, maxIterations, verbosity, feedback)
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/lolamarrero/UCSC/Forked-Scenic/Scenic/src/scenic/core/scenarios.py", line 433, in generateBatch
    scene, iterations = self._generateInner(remainingIts, verbosity, feedback)
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/lolamarrero/UCSC/Forked-Scenic/Scenic/src/scenic/core/scenarios.py", line 468, in _generateInner
    sample = Samplable.sampleAll(self.dependencies)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/lolamarrero/UCSC/Forked-Scenic/Scenic/src/scenic/core/distributions.py", line 140, in sampleAll
    subsamples[q] = q.sample(subsamples) if needsSampling(q) else q
                    ^^^^^^^^^^^^^^^^^^^^
  File "/Users/lolamarrero/UCSC/Forked-Scenic/Scenic/src/scenic/core/distributions.py", line 150, in sample
    return self._conditioned.sampleGiven(subsamples)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/lolamarrero/UCSC/Forked-Scenic/Scenic/src/scenic/core/external_params.py", line 292, in sampleGiven
    assert self.sampler is not None
           ^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError

Steps To Reproduce

A = ExternalParameter()

scenario Main():
    setup:
        require A == A

Issue Submission Checklist

  • I am reporting an issue, not asking a question
  • I checked the open and closed issues, forum, etc. and have not found any solution
  • I have provided all necessary code, etc. to reproduce the issue

Metadata

Metadata

Assignees

Labels

status: triageIssue needs to be assessedtype: bugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions