Working with Data Containers#

This guide demonstrates how a DataContainer dynamically constructs its internal state as the user provides input.

Example: RMRB Automatic calculation#

Initially, the container is empty:

>>> interval = Interval(drillhole_id="Hole_01", _from=0., _to=1.)
>>> print(c)

Interval: 'None'
  Drillhole: 'Hole_01'
  From-To: 0.0 - 1.0 [m]
  Parameters Defined: 0   # No parameters assigned
  Metadata Defined: 0

After setting RQD:

>>> c.setParameterValue("RQD", 75)
>>> print(c)

Interval: 'None'
  Drillhole: 'Hole_01'
  From-To: 0.0 - 1.0 [m]
  Parameters Defined: 2
    RQD: 75.0           # <- Check how RQD is now a defined parameter
    RMRB_PRQD: 17.0     # <- RMRB_PRQD is automatically calculated
  Metadata Defined: 0

See what happens if some other parameters are defined:

>>> interval.setParameterValue(parameter_id="StrongUCS", value=100)
>>> interval.setParameterValue(parameter_id="Spacing", value=0.1)
>>> interval.setParameterValue(parameter_id="Groundwater", value="Completely dry")
>>> interval.setParameterValue(parameter_id="RMRB_Jc", value=20)
>>> print(c)

Interval: 'None'
  Drillhole: 'Hole_01'
  From-To: 0.0 - 1.0 [m]
  Parameters Defined: 10
    Groundwater: Completely dry
    RQD: 75.0
    Spacing: 0.1
    StrongUCS: 100.0
    RMRB_Jc: 20.0
    RMRB_PJw: 15.0         # <- RMRB_PJw is automatically calculated
    RMRB_PRQD: 17.0        # <- RMRB_PRQD is automatically calculated
    RMRB_PSpacing: 8.0     # <- RMRB_PSpacing is automatically calculated
    RMRB_PUCS: 12.0        # <- RMRB_PUCS is automatically calculated
    RMRB: 72.0             # <- Actual RMRB calculated!
  Metadata Defined: 0