Skip to content

ospsuite 12.4.2

Latest

Choose a tag to compare

@rengelke rengelke released this 08 Apr 09:39

Major changes

  • Added five new plotting functions powered by {ospsuite.plots}: plotTimeProfile(), plotPredictedVsObserved(), plotResidualsVsCovariate(), plotResidualsAsHistogram(), and plotQuantileQuantilePlot(). These functions accept DataCombined objects or data frames and handle mixed error types and unit conversion directly, without requiring data preprocessing (#1652).
  • The {tlf}-based plotting functions plotIndividualTimeProfile(), plotPopulationTimeProfile(), plotObservedVsSimulated(), plotResidualsVsTime(), and plotResidualsVsSimulated() are now soft-deprecated in favor of the {ospsuite.plots}-based equivalents and will be removed in version 14.0. (#1739)

Minor improvements and bug fixes

  • Fixed validateDimension() error message not showing the actual dimension name (#1822).
  • Plotting functions based on {ospsuite.plots} now produce a warning and return NULL when DataCombined has no plottable entries (#1709).
  • Updated {ospsuite.plots} option key references to match camelCase naming convention (e.g., watermarkEnabled, defaultPercentiles) (#1818).
  • Added addResidualColumn() to unify residual computation across calculateResiduals() and the residual plot functions. Supports "log", "linear" (or "lin"), and "ratio" scaling. For log scaling, zero or negative values now produce NaN with a warning instead of an epsilon-based approximation (#1713).
  • Plotting functions now document all passable ... arguments via @inheritDotParams, improving IDE autocompletion for plotPredictedVsObserved() and plotResidualsAsHistogram() (#1817).
  • Added dataSetsFromDataFrame() function that creates a list of DataSet objects from a data.frame with the same structure as returned by dataSetToDataFrame(). This is the inverse operation of dataSetToDataFrame() and allows creating DataSet objects from data frames without requiring an Excel file. (#1495)
  • Added populationFromDataFrame() function to create a Population object from a data.frame, the reverse of populationToDataFrame(). If no IndividualId column is present, sequential IDs are automatically generated. (#1807)
  • loadDataSetsFromExcel() now accepts a sheets parameter to specify which sheets to load. When sheets = NULL (default), the function uses sheets defined in the importer configuration. If the configuration has no sheets defined, all sheets are loaded. When sheets is a character vector, those specific sheets are loaded, overriding any sheets in the configuration. The importAllSheets parameter is now deprecated and will be removed in version 14 (#1760).
  • toDisplayUnit() now accepts an optional unit parameter to specify the source unit of the values, consistent with toUnit() and toBaseUnit() functions. When not specified, values are assumed to be in base unit (maintaining backward compatibility). (#1762)
  • addOutputs() and setOutputs() now throw an error by default when the provided path is not found. This behavior can be disabled by setting stopIfNotFound = FALSE (#1734).
  • ospUnits$Dimensionless$Unitless and ospUnits$Fraction$Unitless now return an empty string "" instead of the literal string "Unitless" (#1754).
  • Added read-only valueOrigin property to Quantity class (including Parameter and other derived classes) to access the value origin from the underlying .NET object. This is useful for generating automated reports that track parameter value provenance (#1751).
  • createImporterConfigurationForFile() now automatically sets the sheets attribute when a sheet parameter is provided, eliminating the need to manually set it before using loadDataSetsFromExcel() (#1755).
  • Fixed getSteadyState() to correctly apply lowerThreshold for both positive and negative values. The threshold now filters values in the interval [-lowerThreshold, lowerThreshold] instead of only values below the threshold (#1792).
  • runSimulations() now throws an error if any simulation has no output selections defined, instead of silently returning empty results. (#1404)
  • exportResultsToCSV() now validates that the input is a single SimulationResults object and rejects lists of results, preventing downstream .NET interop failures (#1752).