$Date: 2025-07-31 16:48:29 +0000 (Thu, 31 Jul 2025) $

DVHMETRICS RELEASE VERSIONS at https://cran.r-project.org/

Version 0.4.3 (31 Jul, 2025)
    * showDVH()
      - add option 'fun' to pass list for point-wise aggregation of
        DVHs when using 'addMSD=TRUE'
        (thanks: Daniella Elisabet Ostergaard)
      - better units for axis labels
        (thanks: revoletch)
    * readDVH()
      - add support for Mirada
        (thanks: sometune)
    * readDVH(..., type="RayStation")
      - relax parsing of dose unit line for newer versions
        (thanks: H53-OOF)
      - allow dose units with "RBE"
        (thanks: marmo2)
    * readDVH(..., type="HiArt")
      - fix reading number such as 4.32....E-4
        (thanks: sudo-bluee)
    * getEUD(), getNTCP()
      - enable EUD calculation for DVHs with relative volume only
        (thanks: Mel A McIntyre)
      - correct bug: consider fraction dose (EUDfd), not number of
        fractions for EUD calculation
        (thanks: Trinhhuyvu)

Version 0.4.2 (March 22, 2022)
    * readDVH(..., type="RayStation")
      - additional information on date, prescription dose,
        structure volumes can be passed via option raystation
        (thanks: Ryan Hughes)
      - imports structure volume and prescribed dose from output
        if present
        (thanks: Ryan Hughes)
    * runGUI()
      - fix saving NTCP metrics
    * getNTCP()
      - implement Kaellman 1992 relative seriality model
    * getMeanDVH()
      - add option returnDVHObj to indicate whether returned object
        should be a regular DVH object that can be used in functions
        such as getMetric() or showDVH()
        (thanks: Jose Mesquita)

Version 0.4.1 (April 09, 2021)
    * readDVH()
      - support Eclipse uncertainty plans: specify uncertainty=TRUE
        (thanks: Trine Kirkegaad)

Version 0.4 (November 30, 2020)
    * runGUI()
      - the shiny GUI is now a dashboard based on package bs4Dash

Version 0.3.11 (April 30, 2020)
    * runGUI()
      - fix upload of Eclipse files
        (thanks: Li-Wen Huang)

Version 0.3.10 (March 16, 2020)
    * readDVH()
      - enable reading absolute volume files from HiArt
        (thanks: Meriam Kebdani)
      - add possible option volume_from_dvh if structure volume
        should be determined from maximum volume in a DVH, relevant
        for files with absolute volume from HiArt and Monaco
    * runGUI()
      - fix DataTables output by adding DT to Imports,
        and prefixing calls with DT::
        (thanks: Li-Wen Huang)

Version 0.3.9 (July 15, 2019)
    * re-added dependency on package reshape2
    * readDVH()
      - improve importing MasterPlan files
        (thanks: Belen Cambre)
    * runGUI()
      - add button to select/deselect all patients/structures
        (thanks: Santam Chakraborty)
    * getMetric(), checkConstraint()
      - fix bug turning numeric into character
    * parseDVH()
      - fix Unix/Linux-specific bug preventing reading of files
        (thanks: Santam Chakraborty)

Version 0.3.8 (March 26, 2019)
    * removed dependency on package markdown
    * removed dependency on package reshape2
    * readDVH(..., type="HiArt")
      - additional information on patID, prescription dose,
        structure volumes, etc. can be passed via option hiart
    * getMetric()
      - document AAPM TG263 (2018) recommendations for specifying
        DVH metrics
    * getEUD() (and hence getNTCP())
      - attempt to make more numerically stable for large dose
        values caused an error for negative EUDa values (fixed)
        (thanks: Jahan Mohiuddin)

Version 0.3.7 (November 22, 2017)
    * readDVH()
      - add support for PRIMO 0.3.1
      - add support for ProSoma (thanks: Manfred Sassowsky)
      - fix for Eclipse 15 (thanks: Stefania Naccarato)
      - pass argument encoding to file() to enable UTF-8 or
        UTF-8-BOM
    * getEUD() (and hence getNTCP())
      - make more numerically stable for large dose values given
        in cGy and large exponent a (thanks: Jesper Pedersen)
    * runGUI()
      - enable interactive zoom for DVH diagrams and constraint
        plots

Version 0.3.6 (July 27, 2016)
    * showMeanDVH()
      - experimental new function to visually compare average
        DVHs from several groups of patients
    * runGUI()
      - fix showing average DVHs
    * getEUD()
      - fix error for EUDa = 1, EUDa = -Inf, EUDa = +Inf

Version 0.3.5 (March 8, 2016)
    * readDVH()
      - fix bug when reading Pinnacle files
      - Monaco files can now have spaces in structure names
        (thanks: Alan Kalet)
      - when reading Monaco files without relative volume,
        structure volume is assumed to be max available
        volume, and relative volume is calculated
    * getTCP()
      - change variable name NTCP to TCP
    * getDMEAN()
      - better accuracy of DMEAN, DMIN, DMAX through changes
        in convertDVH()
    * getMetric()
      - add "DHI" for the Homogeneity Index according to
        ICRU 83 formula 3.3: (D2%-D98%) / D50%
    * convertDVH()
      - when converting to differential DVH, interpolate
        cumulative DVH first, not differential DVH afterwards
      - spline interpolation as well as spline and kernel
        smoothing options are moved to convertDVHsmooth()
    * convertDVHsmooth()
      - new function with linear/spline interpolation as well
        as kernel smoothing of the differential DVH

Version 0.3.4 (November 27, 2015)
    * getMeanDVH()
      - new function that returns point-wise aggregates of
        several DVHs, by default the mean, median, standard
        deviation, minimum and maximum of the volumes
    * showDVH()
      - add option addMSD to show the point-wise mean DVH
        as well as shaded areas for point-wise 1-SD and
        2-SD around the mean
    * convertDVH()
      - with toType="asis" and interp="linear", DVHs are
        interpolated with equally spaced dose values
    * getMetric(), showDVH()
      - change default: match supplied IDs and structure names
        exactly to allow for structures containing '+' signs,
        use fixed=FALSE for regular expression matching
    * checkConstraint(), showConstraint()
      - fix bug: make functions work for files not exported
        from Eclipse or Cadplan
      - fix bug: make functions work for DVH files with
        duplicate rows
    * getEUD(), getNTCP(), getTCP()
      - fix bug: version 0.3.1 broke EUD calculation and
        therefore NTCP/TCP calculation

Version 0.3.3 (October 13, 2015)
    * readDVH()
      - add support for RayStation (thanks: Michael R. Young)
      - fix bug: version 0.3.1 broke reading Cadplan files
      - fix bug: correctly convert Cadplan and Monaco
        differential DVHs to cumulative DVHs
        (unlike Eclipse, they are not per unit dose)
      - allow structure names with leading non-alphanumeric
        characters
    * getDMEAN()
      - fix bug: version 0.3.1 broke DMEAN, DMIN, DMAX, DSD for
        DVHs where these metrics were not exported from the TPS
    * convertDVH()
      - fix bug: if option interp was not set, different
        interpolation methods were used for different IDs when
        converting DVHLstLst objects
      - fix bug: correctly scale differential DVH for perDose=FALSE

Version 0.3.1 (August 05, 2015)
    * DESCRIPTION, NAMESPACE
      - import utils and stats to accomodate new R-devel
    * readDVH()
      - add support for Elekta Monaco (thanks: Reid Thompson),
      - add support for Tomo HiArt (thanks: Nico Banz)
      - read Course header entry for Eclipse files
      - add option courseAsID for appending the Course to the
        original patient ID
    * convertDVH()
      - in DVHs objects, a differential DVH is saved to list
        element dvhDiff, a cumulative DVH is saved to list element
        dvh. The original DVH is copied to the other list element,
        respectively.

Version 0.3 (May 5, 2015)
    * getMetric()
      - fix bug: V*% was incorrect
      - increase accuracy for linear and spline interpolation of
        DVHs with few unique nodes
    * getBED(), getEQD2(), getIsoEffD()
      - add methods to directly convert all doses in (list of) DVHs
    * getEUD()
      - fix bug: gEUD calculation based on EQD2

Version 0.2 (April 7, 2015)
    * Shiny web application
      - add settings for gEUD and (N)TCP parameters in metrics
        and constraint
      - exact matching for selected patients and structures
        instead of regex-matching
      - fix bug: selection of patients and structures in 'Show DVH'
      - fix bug: DVHs for different structure sets
    * readDVH()
      - new option 'add' which allows to merge previously loaded data
        with new data read from file (regardless of TPS origin)
      - add support for data exported by Pinnacle3 that conforms to a
        specific directory layout / file structure explained in the docs
        (thanks: Bjorne Riis)
      - fix bug: read first DVH line as well
    * convertDVH()
      - new function to convert between differential and cumulative DVH
        with optional spline interpolation / kernel smoothing for the
        differential DVH
    * mergeDV()
      - new function to merge different DVH objects, possibly
        from different treatment planning systems
    * checkConstraint(), getMetric()
      - add DEUD to calculate generalized equivalent uniform dose
        (gEUD), DNTCP to calculate normal tissue complication
        probability (NTCP), and DTCP for tumor control probability (TCP)
      - add option 'interp' to choose DVH interpolation method between
        linear interpolation, a cubic monotone Hermite spline, and
        cubic local polynomial kernel regression
      - now work with artificial DVHs with only two points, possibly
        horizontal or vertical
    * checkConstraint()
      - fix bug: correct projection of constraint point onto line
        segments as affine (not linear) subspaces
    * getMetric()
      - if the TPS does not export dose minimum, maximum, mean, median,
        standard deviation -> calculate based on the differential DVH
    * getEUD()
      - new convenience function to calculate generalized equivalent
        uniform dose from DVH, DVH list, or DVH list of lists
    * getNTCP()
      - new convenience function to calculate normal tissue complication
        probability from DVH, DVH list, or DVH list of lists according
        to Lyman probit, Niemierko logit, Kaellman Poisson model
    * getTCP()
      - new convenience function to calculate tumor control probability
        from DVH, DVH list, or DVH list of lists
    * getDMEAN()
      - new convencience function to calculate DMEAN, DMEDIAN, DMIN, DMAX,
        DMODE, DSD from the (interpolated) differential DVH instead of
        relying on values exported by the TPS.
    * getBED()
      - new function for the biologically effective dose (BED)
    * getEQD2()
      - new function for the 2Gy fractions biologically equivalent
        dose (EQD2)
    * getIsoEffD()
      - new function for the isoeffective dose according to the
        linear-quadratic model

Version 0.1 (January 29, 2015)

    * Initial release
