• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

PrincetonUniversity / PsyNeuLink / 25757991501
84%
master: 85%

Build:
Build:
LAST BUILD BRANCH: devel
DEFAULT BRANCH: master
Ran 12 May 2026 08:55PM UTC
Jobs 1
Files 163
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

12 May 2026 07:42PM UTC coverage: 84.198% (-0.02%) from 84.216%
25757991501

push

github

web-flow
Refactor LCA mechanism output ports and improve PEC (#3530)

## Summary

This PR is the cleaned-up follow-on to the earlier PEC/LCA branch.

The generic mechanism-wide output-port execution count fix was split out
and merged separately in #3529, so this PR now focuses on:

- adding the retained LCA standard output ports
- fixing PEC outcome-variable handling for multi-output / LCA models
- keeping the minimal LLVM/runtime fixes still required for the new
PEC/LCA coverage on current `devel`

In particular, this PR keeps the PEC- and LCA-related work from the
original branch, but does not reintroduce the broader compilation/LLVM
patch stack that had accumulated there.

## What Changed

### 1. Add LCA standard output ports

`LCAMechanism` now exposes three additional standard output ports:

- `DECISION_INDEX`
- `DECISION_STEPS`
- `DECISION_TIME`

These are exported as `pnl.DECISION_*`, added to
`LCAMechanism.standard_output_ports`, and added to
`standard_output_port_names`.

Their semantics are:

- `DECISION_INDEX`: index of the winning element in the final LCA value
- `DECISION_STEPS`: final `num_executions_before_finished`
- `DECISION_TIME`: `DECISION_STEPS * time_step_size`

This makes decision metadata directly available through the standard
output-port interface already used by compositions and downstream
analyses.

### 2. Fix PEC outcome-variable indexing for multi-output models

`ParameterEstimationComposition` previously treated outcome-variable
indices as though each output port contributed a single scalar slot.

That breaks for models that expose multiple output ports and for ports
whose values flatten into multiple columns, including the new LCA
decision outputs.

This PR fixes that by flattening outcome-variable indices across
output-port widths, so PEC selects the correct columns from composition
results even when:

- a mechanism exposes multiple output ports
- an output port contributes more than one value
- the target outcome comes from an... (continued)

10516 of 13702 branches covered (76.75%)

Branch coverage included in aggregate %.

29 of 29 new or added lines in 6 files covered. (100.0%)

7 existing lines in 5 files now uncovered.

36202 of 41784 relevant lines covered (86.64%)

0.87 hits per line

Coverage Regressions

Lines Coverage ∆ File
2
84.3
-0.58% psyneulink/core/components/mechanisms/modulatory/learning/learningmechanism.py
2
90.37
-0.06% psyneulink/core/compositions/composition.py
1
73.5
-0.18% psyneulink/core/components/functions/nonstateful/optimizationfunctions.py
1
89.42
-0.15% psyneulink/core/components/mechanisms/modulatory/control/optimizationcontrolmechanism.py
1
84.42
-0.96% psyneulink/core/compositions/parameterestimationcomposition.py
Jobs
ID Job ID Ran Files Coverage
1 25757991501.1 12 May 2026 08:55PM UTC 163
84.2
GitHub Action Run
Source Files on build 25757991501
  • Tree
  • List 163
  • Changed 10
  • Source Changed 0
  • Coverage Changed 10
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • 27052d69 on github
  • Prev Build on devel (#25632207822)
  • Next Build on devel (#25890695935)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc