News
3.4.0
New features and changes
The new
bbi nonmem run slurmsubcommand provides support for Slurm execution. (#338)bbi nonmem runnow always writes the underlying command's output to{model}.outas opposed to doing so only when the command succeeds. (#336)bbi nonmem runnow logs more details about failures. (#336)The executable bit is no longer set when writing files that are not intended to be executed, including
bbi.yaml. (#335)
Bug fixes
bbi nonmem rundid not relay its--licfilecommand-line argument to the underlyingnmfecall. (#339)Some spots that parse floats from NONMEM output files did not map
NaNvalues to the-999999999placeholder, causingbbi nonmem summary --jsonto abort. (#334)
3.3.1
Documentation is now available at https://metrumresearchgroup.github.io/bbi/docs/.
Changes
- The documentation of many subcommands has been updated and expanded. (#329)
Bug fixes
bbi nonmem probsdid not correctly handle its optional directory argument. (#328)bbi nonmem cleanfailed to delete files extracted from*_copied.jsonfiles (enabled when--copiedRunsis used) due to incorrect path handling. (#331)
3.3.0
New features
bbi nonmem runnow cleans up emptyWK_*files. (#306)
3.2.3
Bug fixes
bbi nonmem summaryomitted theproblem_textkey from its JSON output when a model's$PROBLEMwas empty, breaking the expectation ofbbr. (#299)bbi nonmem summarydid not permit leading whitespace before a$SIMdirective despite that being valid NONMEM syntax. (#301)bbi nonmmem runandbbi nonmem summarydid not ignore commented$DATAlines. (#301)bbi initnow warns the user if there is a collision when generating identifiers under the "nonmem" entry ofbbi.yaml. (#304)bbi initnow support NONMEM installation directories that include a period in their name. (#304)
3.2.2
Bug fixes
The
bbi nonmem summarycheck for incomplete.lstfiles (added in v3.2.0) has been reworked to use an approach that is less susceptible to misfires. (#294)bbi nonmem run localnow invokes its shell script by callingbashdirectly rather than relying on the shebang for compatibility with Windows and with systems that havebashinstalled to a different spot. (#296)The logic used by
bbi initto detect the NONMEM directory was broken on Windows. (#296)The bash scripts generated by
bbi nonmem runnow quote tokens when needed. (#297)
3.2.1
Bug fixes
- In v3.2.0,
bbi nonmem summarygained a check for incomplete.lstfiles. This check was inappropriately triggered by models that specify an estimation record withMETHOD=CHAIN. (#289)
3.2.0
New features and changes
-maxlim=2is now passed tonmfeby default. To disable passing-maxlimtonmfe(the old default), set the value to 0 via the--maxlimoption ofbbi nonmemor with abbi.yamlentry:nmfe_options: maxlim: 0Note that the
maxlimvalue set in an existingbbi.yamlwill be respected, and that, for compatibility reasons, 100 is treated the same as 0. (#279)To make
bbi.yamlmore portable across users,bbi initno longer writes the resolved path of the bbi binary inbbi.yaml. Instead it's resolved when generating the SGE submission script. Note that anybbi_binaryvalues in existingbbi.yamlfiles will still be honored. (#278)As of v7.5, NONMEM generates an FDATA.csv file. bbi now gives this the same clean-up treatment as FDATA. (#282)
The "Errors" field in the
bbi nonmem summary --jsonoutput is now an array of integers that identify which, if any, items in the "Results" array were unable to be summarized. Each item in the "Results" array now includes a "success" field, and, for failures, an "error_msg" field. (#272)bbi nonmem summary --jsonno longer omits elapsed time values (estimation_time,covariance_time, andcpu_time) when they are zero. (#270, #274)
Bug fixes
bbi nonmem summary(#272, #281)- gained more safeguards to catch incomplete
.lstfiles. - tries harder to channel underlying failures into error messages that are propagated to JSON consumers.
- reliably exits with a non-zero status on failure.
- gained more safeguards to catch incomplete
The
.lstparser didn't consider that "$PROB" could also be spelled as "$PROBLEM", leading to "LEM" sneaking into rendered problem descriptions. (#283)The
.lstparser failed when it encounteredNaNobjective function values. (#268)Commands that support a
--jsonflag did not consistently relay failures to encode the JSON output. (#268)Several issues around parsing elapsed time metadata (
estimation_time,covariance_time, andpostprocess_time) have been fixed. (#270)bbi nonmemwas supposed to accept--prdefaultand--tprdefaultoptions and relay those tonmfeas-prdefaultand-tprdefault, but the options on bbi's side weren't exposed. (#280)Calling
bbi nonmem recleanwith no positional arguments triggered an indexing error rather than showing the help message. (#276)
3.1.1
- Teach
bbi nonmem summaryhow to handleONLYSIMruns. (#224)
3.1.0
Primarily, this release contains a refactored test suite which fixes a number of broken unit tests and incorporates integration tests formerly in the (now archived) bbitest repo into the core bbi repo.
Additionally, beginning with this release, only 64-bit binaries will
be built by goreleaser.
New features
bbi nonmem paramshas been added. This takes a--dirargument and will output a table with final parameter estimates for all models in that directory. The output is in.csvformat, and can be parsed to a tibble bybbr::param_estimates_batch().
3.0.3
Fixed a bug where
condition_numberwould come back as1.0in situations where it shouldn't. (#214)Added
eigenvalue_issuesheuristic, triggered when any of the of the eigenvalues <= 0, or if NONMEM needs to force them to be positive. (#216)
3.0.2
The only change in this release is that the bbi nonmem summary
output will now refer to individuals in the data set as "Subjects"
instead of "Patients", in accordance with the terminology widely
used in scientific and medical literature.
3.0.1
Primarily a patch to fix a bug when parsing output from NONMEM 7.5
runs (#205). Also ran gofmt and cleaned up some old files and
documentation that had gotten stale and was no longer in use or
accurate (#206).
3.0.0
Rename to bbi
There are no functional changes in this release, but it represents the
official rename from babylon to bbi. Previously bbi was used as
an alias for the CLI to babylon and by default the built binary was
saved as bbi. Going forward it is the name of the entire app. The
accompanying R package
will now be known as bbr.
2.3.1
Bug fixes
Increased buffer size for reading lines from the
.extfile to 256k. (#191)Changed checks for Bayesian and Non-gradient estimation methods to partial string matching so that more estimation methods are correctly matched. (#191)
Changed lower-diagonal lookup to a dynamic function instead of a lookup table. This effectively means there is no longer a limit on the number of
ETA's that can be parsed from a model. (#189)Fixed bug where model files with a period in the name (i.e.
1000.1.ctl) were being parsed incorrectly. (#192)
2.3.0
All user-facing changes for this release only effect the bbi nonmem summary command and its output. There are also some changes to the CI
configuration to facilitate rendering updated validation documents
with babylontest
and goProjectValidator.
Additions and changes
bbi nonmem summarywill no longer parse the.covand.corfilessummary --jsonoutput will no longer havecovariance_thetaorcorrelation_thetaelements--no-cov-fileand--no-cor-fileflags are deprecated
bbi nonmem covcorcommand now returns the json output that was formerly contained in thecovariance_thetaorcorrelation_thetaelements. The--jsonflag is not needed for this command. It always returns json.The following fields were added or modified in the
bbi nonmem summary --jsonoutput:- ofv -- Previously included the objective function value for only the last estimation method. Now includes all estimation methods.
- condition_number -- The condition number. This will only be in
the .lst file in certain cases (when scientists ask for it in the
$COV block
PRINT=E). There will be one for each estimation method. If any of them are large, thelarge_condition_numberboolean underrun_heuristicswill betrue. - eta_pval_significant -- Added to
run_heuristics.trueif anyshrinkage_details.pval< 0.05. Will befalseif no shrinkage file is present. - PRDERR -- Added to
run_heuristics. Indicates whether aPRDERRfile is present in the output directory.
Bug fixes
- Previously, the
.shkfile was not added to thefiles_usedsection of thebbi nonmem summary --jsonoutput, even when it was used. This has been fixed.
2.1.3
Do not use for processing - there is an extraneous log statement that prints out when asking for --json which will print an extra info log making it unsuitable for piping into subsequent tools that expect a clean json output. This is fixed in 2.1.4
2.1.1
Post Execution Hooks and CI Build
This release adds a post-execution hook to Babylon. The
--post_work_executable flag is used to tell Babylon the binary to
any script or binary you wish to run after execution. Before
executing it, Babylon will set a series of environment variables:
BABYLON_MODEL_PATH: Fully qualified path to the directory in which the original model was locatedBABYLON_MODEL: Full name (file + ext) of model. file.modBABYLON_MODEL_FILENAME: First part of the filename. IE if the model is file.mod, this would be fileBABYLON_MODEL_EXT: Extension of the filename. IE if model is file.mod, this will be modBABYLON_OUTPUT_DIR: The directory into which the model was placed and ranBABYLON_SUCCESSFUL: Whether or not an error occurred. TRUE if completed without error. Error if errors were encountered.BABYLON_ERROR: If an error occurred, any error generated (Default is an empty string)
During the execution process, this is all rendered down into a
post_processing.sh script in the OutputDir. This allows for easy
troubleshooting.
What if the script you're executing actually needs more
environmentally than the above? The --additional_post_work_envs flag
handles that. Here you can specify in comma-separated ENV style
additional values to set into the environment:
--additional_post_work_envs "THIS=THAT,THESE=THOSE,BABYLON_ADDITIONAL=1"The above would set the following additional environmental variables before executing your requested script /binary:
THIS=THATTHESE=THOSEBABYLON_ADDITIONAL=1
One thing you may notice after doing this is that only
BABYLON_ADDITIONAL shows up in the post_processing.sh script. This
is on purpose. We only write environment values that are prefixed with
BABYLON to the post_processing.sh script. Using this pattern, you
can feel free to add additional environment variables for security
(Such as auth tokens for Slack) without worrying about them being
written to the file, or add any number of other variables that get
added to the file for reproducibility.
0.3.0
This release represents an expansion of the capabilities of the bbq server to handle both ping/version endpoints to introspect information about a running server.
This also represents an expansion in the information tracked for a model. Error handling has been made slightly more robust, with errors bubbling up to store in the database with an ERROR status for failed run.
For execution, the ability to specify a custom directory has been implemented through the --runDir flag via the CLI or through the ProposedRunDir run setting through the server structure.
0.2.0
This version adds a --oneEst flag to the cli when doing bbi run. Given a model has already been run, and an estimation directory
is present, the model will be skipped. This can be quite useful when
running a directory of models, then subsequently adding/removing some
models, while leaving the estimation records for others. When trying
to re-run the models, the entire directory can be run, and --oneEst
will skip all models that already have been estimated.