Skip to content

Conversation

@ilkilic
Copy link
Collaborator

@ilkilic ilkilic commented Jan 9, 2026

add_projections previously had ambiguous semantics and mixed node- and
edge-level concepts. This PR clarifies the behavior by defining projection
handling strictly in terms of SONATA edge populations.

Changes & compatibility

  • Projection selection is now edge-population–based (SONATA edges),
    not node populations.

  • Clarified semantics of add_projections (SONATA):

    • False (default): intrinsic connectivity only
    • None: treated as False for backward compatibility
    • True: intrinsic connectivity plus all projection
      (virtual-source) edge populations
    • str / list[str]: intrinsic connectivity plus the specified
      identifiers (edge population names, with limited legacy support for
      source node population names)
  • get_all_projection_names() now returns edge population names.

  • Tests and docstrings have been updated accordingly.

Backward compatibility

This PR intentionally changes behavior to remove ambiguity:

  • add_projections=True changes semantics

    • Before: projection / virtual-source connections only
    • Now: intrinsic connectivity and all projection edge populations
  • add_projections=False now consistently means intrinsic connectivity only.

  • add_projections=None is supported as a legacy alias for False.

  • add_projections=str / list[str] remains supported, but identifiers
    now primarily refer to edge population names.

This change aligns Bluecellulab more closely with Neurodamus semantics by
making intrinsic connectivity and projections explicit, without reproducing
Neurodamus-specific heuristics.

@codecov
Copy link

codecov bot commented Jan 9, 2026

Codecov Report

❌ Patch coverage is 97.61905% with 1 line in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
bluecellulab/circuit_simulation.py 75.00% 1 Missing ⚠️
Files with missing lines Coverage Δ
...ab/circuit/circuit_access/sonata_circuit_access.py 98.79% <100.00%> (+0.93%) ⬆️
...ellulab/circuit/config/sonata_simulation_config.py 97.86% <100.00%> (-0.02%) ⬇️
tests/test_cell/test_core.py 99.40% <ø> (ø)
tests/test_circuit/test_circuit_access.py 100.00% <100.00%> (ø)
bluecellulab/circuit_simulation.py 86.66% <75.00%> (+0.07%) ⬆️

... and 2 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants