Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

[Bug]: non-integer `Lbin_lo`/`Lbin_hi` are silently truncated under `Lbin_method = 1`, while method 3 raises a fatal error for the equivalent mistake

Offen
#784 0 Kommentare 0 Reaktionen 1 zugewiesene Person Auf GitHub ansehen

@Rick-Methot-NOAA arbeitet bereits daran.

Seit 24.9.2026.

Bewertung

Dieses Issue wurde noch nicht bewertet.

Beschreibung

Describe the bug

Under Lbin_method = 1 the Lbin_lo/Lbin_hi columns of an age composition observation are population length bin indices. If a file instead contains lengths, SS3 accepts them silently and truncates them to integers, so conditional age-at-length data can be fit to the wrong bins. There is no warning in warning.sso and the run completes normally.

Method 3 searches len_bins for an exact match and calls write_message(FATAL, 0) with "L_bin_lo no match to poplenbins in age comp" if there is none. Method 1 has no equivalent check, only a clamp to [1, nlength].

Two consequences, depending on how the data is setup:

  • Lbin_lo and Lbin_hi one bin apart (e.g. 18.5 19.5, intended as the edges of one 1 cm bin) becomes index range 18..19, so the cell spans two population bins and consecutive rows overlap.
  • Lbin_hi = Lbin_lo (e.g. 34.5 34.5, a row on a 5 cm data bin grid) becomes bin 34, a single 1 cm bin one below the data's label.
To Reproduce

In any model with 1 cm population bins and Lbin_method = 1, write lengths rather than bin numbers in columns 7 and 8 of a conditional age-at-length row:

#_Lbin_method_for_Age_Data: 1=poplenbins; 2=datalenbins; 3=lengths
1
#_yr month fleet sex part ageerr Lbin_lo Lbin_hi Nsamp <data vector>
 1991   7     2    0    0     1     18.5    19.5      1  ...

Run, then compare the input against the FIT_AGE_COMPS section of Report.sso, which reports these columns converted back to actual length and so should read the same as the input:

data.ss                     1991 7 2 0 0 1  18.5 19.5  1 ...
Report.sso FIT_AGE_COMPS    ... 1991 1 2 7 1991.5 0 0 1  17.5 18.5  _ _ 1 ...

Tested on v3.30.25.1 and **v3.30.22.1 ** on the 2024 Aleutian Islands Pacific cod assessment: all 1160 CAAL redictions are one bin lower than the data. but the run exits 0, and warning.sso does not mention the Lbin truncation.

Expected behavior

A non-integer Lbin_lo or Lbin_hi under Lbin_method = 1 or 2 should produce a warning, or a fatal error, as method 3 already does for its own equivalent mistake. Anything that makes the run stop would allow users to catch this immediately.

Screenshots

No response

Which OS are you seeing the problem on?

No response

Which version of SS3 are you seeing the problem on?

v3.30.25.1 and **v3.30.22.1 **

Additional Context

Impacts all cod assessments in AK

Vorherrschende Sprache
C++
Sterne
46
Forks
19
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Entwicklungsumgebung

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus nmfs-ost/ss3-source-code

Alle Issues in nmfs-ost/ss3-source-code

Ähnliche Issues

Weitere Issues zu C++

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.