[27]:
from IPython.display import display, Markdown
import os
import json
from libcbm import resources
import pandas as pd
import numpy as np
from numpy.random import default_rng
from libcbm.model.cbm_exn import cbm_exn_model
from libcbm.model.cbm_exn import cbm_exn_spinup
from libcbm.model.cbm_exn import cbm_exn_step
from libcbm.model.cbm_exn.cbm_exn_parameters import parameters_factory
from libcbm.model.model_definition.model_variables import ModelVariables
[28]:
rng = default_rng()
n_stands = 10
[29]:
# load the default bundled parameters
parameters = parameters_factory(resources.get_cbm_exn_parameters_dir())

Fully dynamic modelling with cbm_exn

This document illustrates a scheme to simulate with fully dynamic pools, fluxes and flow in libcbm using the cbm_exn package.

This outlines a component of a highly efficient method for processing C flows in a CBM-Like model, producing outputs that are compatible with current reporting methods, and systems.

The approach makes the hard coded model pool, flow, flux in CBM-CFS3 fully dynamic, and definable via high level language in the cbm_exn package.

Prior to this improvement, using CBM-CFS3, it was only possible to modify parameters for the pool-flows withing the hard-coded model structure. This opens up opportunities to evaluate changes to model structure dynamically, in addition to modifiying pool flows.

In addition the architecture opens opportunities for using machine learning both for informing pool flow parameters and the model structure itself.

The document explains the basic structure of the default parameters and configuration in cbm_exn, and also shows the an example of the default pool flows generated in dataframe form, and describes their format.

While only the default pool flows (based on CBM-CFS3) are presented here, it’s important to note if the general format is followed it’s possible to alter model pool-flow-flux structure via high level programming language. The default values could potentially be used as a template to accomplish this.

Sections below are:

  • Operation DataFrame: a description of the storage scheme for mult-dimensional pool flow proportions within dataframe structures.

  • Default spinup operation dataframes: examples of spinup ops derived from the cbm_exn default parameters and example simulation area input

  • Default step operation dataframes: example of step ops also derived from the same inputs

  • Appendix1, Appendix2: the default parameters, and example simulation area used.

[30]:
# read some packaged net increments, derived from a
# simulation of the same growth curve used in CBM-CFS3
# tutorial 1
net_increments = pd.read_csv(
    os.path.join(
        resources.get_test_resources_dir(),
        "cbm_exn_net_increments",
        "net_increments.csv",
    )
)
[31]:
# the same set of increments are repeated for each stand in this example
n_stands = 1000
increments = None
for s in range(n_stands):
    s_increments = net_increments.copy()
    s_increments.insert(0, "row_idx", s)
    s_increments = s_increments.rename(
        columns={
            "SoftwoodMerch": "merch_inc",
            "SoftwoodFoliage": "foliage_inc",
            "SoftwoodOther": "other_inc",
        }
    )
    increments = pd.concat([increments, s_increments])
[32]:
# create the require inputs for spinup
spinup_input = {
    "parameters": pd.DataFrame(
        {
            # random age
            "age": rng.integers(low=0, high=60, size=n_stands, dtype="int"),
            "area": np.full(n_stands, 1, dtype="int"),
            "delay": np.full(n_stands, 0, dtype="int"),
            "return_interval": np.full(n_stands, 125, dtype="int"),
            "min_rotations": np.full(n_stands, 10, dtype="int"),
            "max_rotations": np.full(n_stands, 30, dtype="int"),
            "spatial_unit_id": np.full(
                n_stands, 17, dtype="int"
            ),  # ontario/mixedwood plains
            "species": np.full(n_stands, 20, dtype="int"),  # red pine
            "mean_annual_temperature": np.arange(
                0, 2, 2 / n_stands
            ),  # make a temperature ramp
            "historical_disturbance_type": np.full(n_stands, 1, dtype="int"),
            "last_pass_disturbance_type": np.full(n_stands, 1, dtype="int"),
        }
    ),
    "increments": increments,
}
[33]:
spinup_vars = cbm_exn_spinup.prepare_spinup_vars(
    ModelVariables.from_pandas(spinup_input),
    parameters,
)
spinup_op_list = cbm_exn_spinup.get_default_op_list()
spinup_ops = cbm_exn_spinup.get_default_ops(parameters, spinup_vars)
[34]:
spinup_op_list
[34]:
['growth',
 'snag_turnover',
 'biomass_turnover',
 'overmature_decline',
 'growth',
 'dom_decay',
 'slow_decay',
 'slow_mixing',
 'disturbance']

Operation dataframes

Operation dataframes are multi-dimensional sparse matrices, using column-name-formatting to denote the dimensions.

The rationale for this design apporach is that multi-dimensional arrays lack interoperable standards that would work with many different high level languages simulataneously. Dataframes however are well supported by several high level languages.

Each dataframe has pool flow columns, where the column name is of the form:

pool_source_name.pool_sink_name

Each row can be interpreted as a pool flow matrix (in sparse coordinate form). By default unspecified diagnal values (those where pool_source_name is equal to pool_sink_name) will be assigned a value of 1.

There are 4 basic types of dataframes with regards to mapping to simulation space. These are covered in the next section

Single row

The single row is a matrix that is applied to all simulation areas. See the slow_mixing dataframe in the following section.

Simulation-aligned

the dataframe has a row for each simulation area in subsequent spinup or step calls. Each row represents a matrix that is 1:1 with simulation areas This type is appropriate for processes that vary by simulation area. See the dom_decay dataframe in the followin section.

Property-indexed

A property-index dataframe has one or more values that correspond to values stored in the current simulation state. This type of dataframe contains 1 or more columns of the form:

[table_name.variable_name]

Where a simulation table, series name pair is surrounded by left and right brackets.

An example of this is if one flow matrix is defined for each spatial unit identifier. See the disturbance dataframe in the following section for an example.

Both Simulation-aligned, and Property-indexed

If a dataframe is both simulation aligned and property indexed each row corresponds to both a simulation area, and 1 or more properties within the simulation areas. The following pattern of columns is present in this type of dataframe:

[row_idx], [table_name_1.variable_name_1], ... [table_name_N.variable_name_N]

An example of this is a dataframe of matrices where each row corresponds to the simulation areas, and to simulation age. See the spinup growth dataframe in the following section.

Default spinup operation dataframes

The default spinup operation dataframes are generated as a function of the default parameters (see appendix 1) and the simulation area input (Appendix 2).

The libcbm.model.cbm_exn.cbm_exn_spinup.spinup function can directly ingest operations in this format via the ops parameter.

Within a spinup timestep these operations are applied in the following order by default. The order and naming of these operation is user-specifyable via passing a string list to the op_sequence parameter of the above linked function

  1. growth

  2. snag_turnover

  3. biomass_turnover

  4. overmature_decline

  5. growth

  6. dom_decay

  7. slow_decay

  8. slow_mixing

  9. disturbance

[35]:
for op in spinup_ops:
    display(Markdown(f"## {op['name']}"))
    display(op["op_data"])

snag_turnover

[parameters.spatial_unit_id] [parameters.sw_hw] StemSnag.StemSnag StemSnag.MediumSoil BranchSnag.BranchSnag BranchSnag.AboveGroundFastSoil
0 1 0 0.968 0.032 0.9 0.1
1 3 0 0.968 0.032 0.9 0.1
2 4 0 0.968 0.032 0.9 0.1
3 5 0 0.968 0.032 0.9 0.1
4 6 0 0.968 0.032 0.9 0.1
... ... ... ... ... ... ...
91 52 1 0.968 0.032 0.9 0.1
92 53 1 0.968 0.032 0.9 0.1
93 54 1 0.968 0.032 0.9 0.1
94 58 1 0.968 0.032 0.9 0.1
95 59 1 0.968 0.032 0.9 0.1

96 rows × 6 columns

biomass_turnover

[parameters.spatial_unit_id] [parameters.sw_hw] Merch.StemSnag Foliage.AboveGroundVeryFastSoil Other.BranchSnag Other.AboveGroundFastSoil CoarseRoots.AboveGroundFastSoil CoarseRoots.BelowGroundFastSoil FineRoots.AboveGroundVeryFastSoil FineRoots.BelowGroundVeryFastSoil
0 1 0 0.0050 0.10 0.0100 0.0300 0.01 0.01 0.3205 0.3205
1 3 0 0.0060 0.05 0.0075 0.0225 0.01 0.01 0.3205 0.3205
2 4 0 0.0050 0.10 0.0100 0.0300 0.01 0.01 0.3205 0.3205
3 5 0 0.0067 0.15 0.0100 0.0300 0.01 0.01 0.3205 0.3205
4 6 0 0.0067 0.15 0.0100 0.0300 0.01 0.01 0.3205 0.3205
... ... ... ... ... ... ... ... ... ... ...
91 52 1 0.0050 0.95 0.0100 0.0300 0.01 0.01 0.3205 0.3205
92 53 1 0.0060 0.95 0.0100 0.0300 0.01 0.01 0.3205 0.3205
93 54 1 0.0045 0.95 0.0100 0.0300 0.01 0.01 0.3205 0.3205
94 58 1 0.0060 0.95 0.0075 0.0225 0.01 0.01 0.3205 0.3205
95 59 1 0.0050 0.95 0.0100 0.0300 0.01 0.01 0.3205 0.3205

96 rows × 10 columns

dom_decay

AboveGroundVeryFastSoil.AboveGroundVeryFastSoil AboveGroundVeryFastSoil.AboveGroundSlowSoil AboveGroundVeryFastSoil.CO2 BelowGroundVeryFastSoil.BelowGroundVeryFastSoil BelowGroundVeryFastSoil.BelowGroundSlowSoil BelowGroundVeryFastSoil.CO2 AboveGroundFastSoil.AboveGroundFastSoil AboveGroundFastSoil.AboveGroundSlowSoil AboveGroundFastSoil.CO2 BelowGroundFastSoil.BelowGroundFastSoil ... BelowGroundFastSoil.CO2 MediumSoil.MediumSoil MediumSoil.AboveGroundSlowSoil MediumSoil.CO2 StemSnag.StemSnag StemSnag.AboveGroundSlowSoil StemSnag.CO2 BranchSnag.BranchSnag BranchSnag.AboveGroundSlowSoil BranchSnag.CO2
0 0.866038 0.024783 0.109179 0.750000 0.042500 0.207500 0.928250 0.012198 0.059552 0.928250 ... 0.059552 0.981300 0.003179 0.015521 0.990650 0.001590 0.007760 0.964125 0.006099 0.029776
1 0.866012 0.024788 0.109201 0.749965 0.042506 0.207529 0.928240 0.012199 0.059561 0.928240 ... 0.059561 0.981297 0.003179 0.015523 0.990649 0.001590 0.007762 0.964120 0.006100 0.029780
2 0.865986 0.024793 0.109222 0.749931 0.042512 0.207558 0.928230 0.012201 0.059569 0.928230 ... 0.059569 0.981295 0.003180 0.015525 0.990647 0.001590 0.007763 0.964115 0.006100 0.029785
3 0.865959 0.024798 0.109243 0.749896 0.042518 0.207586 0.928220 0.012203 0.059577 0.928220 ... 0.059577 0.981292 0.003180 0.015527 0.990646 0.001590 0.007764 0.964110 0.006101 0.029789
4 0.865933 0.024802 0.109264 0.749861 0.042524 0.207615 0.928210 0.012204 0.059586 0.928210 ... 0.059586 0.981290 0.003181 0.015530 0.990645 0.001590 0.007765 0.964105 0.006102 0.029793
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
995 0.837367 0.030087 0.132546 0.713024 0.048786 0.238190 0.917638 0.014002 0.068360 0.917638 ... 0.068360 0.978534 0.003649 0.017817 0.989267 0.001825 0.008908 0.958819 0.007001 0.034180
996 0.837335 0.030093 0.132572 0.712985 0.048793 0.238223 0.917627 0.014003 0.068370 0.917627 ... 0.068370 0.978531 0.003650 0.017819 0.989266 0.001825 0.008910 0.958813 0.007002 0.034185
997 0.837304 0.030099 0.132597 0.712945 0.048799 0.238256 0.917615 0.014005 0.068379 0.917615 ... 0.068379 0.978528 0.003650 0.017822 0.989264 0.001825 0.008911 0.958808 0.007003 0.034190
998 0.837272 0.030105 0.132623 0.712905 0.048806 0.238289 0.917604 0.014007 0.068389 0.917604 ... 0.068389 0.978525 0.003651 0.017824 0.989263 0.001825 0.008912 0.958802 0.007004 0.034194
999 0.837240 0.030111 0.132649 0.712865 0.048813 0.238322 0.917592 0.014009 0.068398 0.917592 ... 0.068398 0.978522 0.003651 0.017826 0.989261 0.001826 0.008913 0.958796 0.007005 0.034199

1000 rows × 21 columns

slow_decay

AboveGroundSlowSoil.AboveGroundSlowSoil AboveGroundSlowSoil.CO2 BelowGroundSlowSoil.BelowGroundSlowSoil BelowGroundSlowSoil.CO2
0 0.994340 0.005660 0.9967 0.0033
1 0.994339 0.005661 0.9967 0.0033
2 0.994337 0.005663 0.9967 0.0033
3 0.994336 0.005664 0.9967 0.0033
4 0.994335 0.005665 0.9967 0.0033
... ... ... ... ...
995 0.993128 0.006872 0.9967 0.0033
996 0.993127 0.006873 0.9967 0.0033
997 0.993126 0.006874 0.9967 0.0033
998 0.993124 0.006876 0.9967 0.0033
999 0.993123 0.006877 0.9967 0.0033

1000 rows × 4 columns

slow_mixing

AboveGroundSlowSoil.BelowGroundSlowSoil AboveGroundSlowSoil.AboveGroundSlowSoil
0 0.006 0.994

disturbance

[parameters.spatial_unit_id] [state.disturbance_type] [parameters.sw_hw] AboveGroundFastSoil.AboveGroundFastSoil AboveGroundFastSoil.AboveGroundSlowSoil AboveGroundFastSoil.BelowGroundFastSoil AboveGroundFastSoil.CH4 AboveGroundFastSoil.CO AboveGroundFastSoil.CO2 AboveGroundFastSoil.MediumSoil ... Other.Other Other.Products Products.Products StemSnag.AboveGroundSlowSoil StemSnag.CH4 StemSnag.CO StemSnag.CO2 StemSnag.MediumSoil StemSnag.Products StemSnag.StemSnag
0 1 0 0 1.000000 0.0 0.0 0.000000 0.000000 0.000000 0.0 ... 1.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0
1 3 0 0 1.000000 0.0 0.0 0.000000 0.000000 0.000000 0.0 ... 1.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0
2 4 0 0 1.000000 0.0 0.0 0.000000 0.000000 0.000000 0.0 ... 1.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0
3 5 0 0 1.000000 0.0 0.0 0.000000 0.000000 0.000000 0.0 ... 1.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0
4 6 0 0 1.000000 0.0 0.0 0.000000 0.000000 0.000000 0.0 ... 1.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
12747 52 1 1 0.386657 0.0 0.0 0.006133 0.055201 0.552009 0.0 ... 0.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0
12748 53 1 1 0.444126 0.0 0.0 0.005559 0.050029 0.500287 0.0 ... 0.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0
12749 54 1 1 0.448397 0.0 0.0 0.005516 0.049644 0.496443 0.0 ... 0.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0
12750 58 1 1 0.338494 0.0 0.0 0.006615 0.059536 0.595355 0.0 ... 0.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0
12751 59 1 1 0.338494 0.0 0.0 0.006615 0.059536 0.595355 0.0 ... 0.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0

12752 rows × 101 columns

growth

[row_idx] [state.age] Input.Merch Input.Other Input.Foliage Input.CoarseRoots Input.FineRoots
0 0 0 0.009449 0.009383 0.020006 0.004955 0.003667
1 0 1 0.041615 0.049833 0.040492 0.016929 0.012362
2 0 2 0.085850 0.094331 0.054661 0.030487 0.021648
3 0 3 0.138499 0.138077 0.066074 0.045285 0.030783
4 0 4 0.197727 0.179735 0.075630 0.061304 0.039282
... ... ... ... ... ... ... ...
70995 999 66 0.000000 0.000000 0.000000 0.000000 0.000000
70996 999 67 0.000000 0.000000 0.000000 0.000000 0.000000
70997 999 68 0.000000 0.000000 0.000000 0.000000 0.000000
70998 999 69 0.000000 0.000000 0.000000 0.000000 0.000000
70999 999 70 0.000000 0.000000 0.000000 0.000000 0.000000

71000 rows × 7 columns

overmature_decline

[row_idx] [state.age] Merch.StemSnag Other.BranchSnag Other.AboveGroundFastSoil Foliage.AboveGroundVeryFastSoil CoarseRoots.AboveGroundFastSoil CoarseRoots.BelowGroundFastSoil FineRoots.AboveGroundVeryFastSoil FineRoots.BelowGroundVeryFastSoil
0 0 0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
1 0 1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
2 0 2 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
3 0 3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
4 0 4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
... ... ... ... ... ... ... ... ... ... ...
70995 999 66 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
70996 999 67 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
70997 999 68 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
70998 999 69 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
70999 999 70 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0

71000 rows × 10 columns

Run the spinup routine with the default operations passed as a parameter

[36]:
with cbm_exn_model.initialize() as model:
    cbm_vars = cbm_exn_spinup.spinup(
        model, spinup_vars, ops=spinup_ops, op_sequence=spinup_op_list
    )
[37]:
# initialize parameters for stepping (values for illustration)
cbm_vars["parameters"]["mean_annual_temperature"].assign(1.1)
cbm_vars["parameters"]["merch_inc"].assign(0.1)
cbm_vars["parameters"]["foliage_inc"].assign(0.01)
cbm_vars["parameters"]["other_inc"].assign(0.05)
cbm_vars["parameters"]["disturbance_type"].assign(
    rng.choice([0, 1, 4], n_stands, p=[0.98, 0.01, 0.01])
)
[38]:
step_ops_sequence = cbm_exn_step.get_default_annual_process_op_sequence()
step_disturbance_ops_sequence = (
    cbm_exn_step.get_default_disturbance_op_sequence()
)
step_ops = cbm_exn_step.get_default_ops(parameters, cbm_vars)
[39]:
step_disturbance_ops_sequence
[39]:
['disturbance']
[40]:
step_ops_sequence
[40]:
['growth',
 'snag_turnover',
 'biomass_turnover',
 'overmature_decline',
 'growth',
 'dom_decay',
 'slow_decay',
 'slow_mixing']

Step processes

With the exception of growth and overmature decline, the default step processes use an identical process for generation as the spinup processes, and so only growth and overmature decline are shown below.

The difference is that by default in stepping, growth and overmature decline dataframes are both Simulation-aligned.

The libcbm.model.cbm_exn.cbm_exn_step.step function can directly ingest operations in this format via the ops parameter

[41]:
for op in step_ops:
    name = op["name"]
    if name in ["growth", "overmature_decline"]:
        display(Markdown(f"## {name}"))
        display(op["op_data"])

growth

Input.Merch Input.Other Input.Foliage Input.CoarseRoots Input.FineRoots
0 0.05 0.025 0.005 0.017196 0.000564
1 0.05 0.025 0.005 0.013941 0.003819
2 0.05 0.025 0.005 0.017014 0.000746
3 0.05 0.025 0.005 0.017046 0.000714
4 0.05 0.025 0.005 0.017068 0.000692
... ... ... ... ... ...
995 0.05 0.025 0.005 0.014380 0.003380
996 0.05 0.025 0.005 0.017109 0.000651
997 0.05 0.025 0.005 0.015855 0.001905
998 0.05 0.025 0.005 0.014380 0.003380
999 0.05 0.025 0.005 0.016869 0.000891

1000 rows × 5 columns

overmature_decline

Merch.StemSnag Other.BranchSnag Other.AboveGroundFastSoil Foliage.AboveGroundVeryFastSoil CoarseRoots.AboveGroundFastSoil CoarseRoots.BelowGroundFastSoil FineRoots.AboveGroundVeryFastSoil FineRoots.BelowGroundVeryFastSoil
0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
2 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
... ... ... ... ... ... ... ... ...
995 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
996 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
997 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
998 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
999 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0

1000 rows × 8 columns

run a timestep with the specified parameters

[42]:
with cbm_exn_model.initialize() as model:
    cbm_vars = cbm_exn_step.step(
        model,
        cbm_vars,
        ops=step_ops,
        step_op_sequence=step_ops_sequence,
        disturbance_op_sequence=step_disturbance_ops_sequence,
    )
[43]:
cbm_vars["pools"].to_pandas()
[43]:
Input Merch Foliage Other CoarseRoots FineRoots AboveGroundVeryFastSoil BelowGroundVeryFastSoil AboveGroundFastSoil BelowGroundFastSoil MediumSoil AboveGroundSlowSoil BelowGroundSlowSoil StemSnag BranchSnag CO2 CH4 CO NO2 Products
0 1.0 73.280370 7.178385 21.031789 20.379709 2.151192 9.947479 1.968485 10.564232 2.449042 57.708379 38.779972 127.722972 22.150185 1.350400 7723.799871 8.475443 76.277752 0.0 0.0
1 1.0 7.774118 1.920598 5.284176 2.297170 1.028144 2.180844 0.769231 14.300553 6.267484 59.129590 34.133895 129.648400 54.009079 3.155953 7608.867436 8.474532 76.269556 0.0 0.0
2 1.0 89.648104 8.665880 25.289823 25.107673 2.332372 12.248857 2.156594 13.017832 2.845668 52.095064 41.999048 127.418286 18.394004 1.710146 7789.726276 8.473622 76.261360 0.0 0.0
3 1.0 86.794134 8.390010 24.485410 24.270207 2.296434 11.722687 2.114842 12.323974 2.721871 53.695097 41.024695 127.446422 19.127702 1.623961 7770.320595 8.472711 76.253165 0.0 0.0
4 1.0 84.872181 8.204230 23.943693 23.705336 2.273127 11.412086 2.089355 11.959022 2.658248 54.497336 40.548368 127.473572 19.574634 1.574184 7760.799934 8.471801 76.244972 0.0 0.0
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
995 1.0 9.338820 2.147632 6.058011 2.751865 1.143006 2.266580 0.757995 11.935299 4.905127 53.628358 32.404702 124.955399 50.929667 2.618341 7638.111865 7.617916 68.560102 0.0 0.0
996 1.0 81.277491 7.856761 22.930502 22.646881 2.231494 9.202949 1.790814 9.963568 2.183926 48.055328 37.770128 122.998702 19.467886 1.445742 7774.280777 7.617101 68.552767 0.0 0.0
997 1.0 17.020424 3.072825 9.243063 4.991417 1.521245 3.487677 1.076058 10.145725 3.619583 54.966027 32.991306 124.594030 43.196613 1.716888 7654.197317 7.616286 68.545434 0.0 0.0
998 1.0 9.338820 2.147632 6.058011 2.751865 1.143006 2.265884 0.757736 11.929870 4.902391 53.611115 32.398762 124.940633 50.926692 2.617775 7638.186920 7.615472 68.538101 0.0 0.0
999 1.0 29.410534 3.937428 11.838268 8.248054 1.783289 4.867150 1.355955 8.783199 2.640505 55.291161 33.722775 124.187274 35.563809 1.235053 7674.474894 7.614657 68.530769 0.0 0.0

1000 rows × 20 columns

[44]:
cbm_vars["flux"].to_pandas()
[44]:
DisturbanceCO2Production DisturbanceCH4Production DisturbanceCOProduction DisturbanceBioCO2Emission DisturbanceBioCH4Emission DisturbanceBioCOEmission DecayDOMCO2Emission DisturbanceProduction DisturbanceDOMProduction DeltaBiomass_AG ... DisturbanceFineLitterInput DisturbanceVFastAGToAir DisturbanceVFastBGToAir DisturbanceFastAGToAir DisturbanceFastBGToAir DisturbanceMediumToAir DisturbanceSlowAGToAir DisturbanceSlowBGToAir DisturbanceStemSnagToAir DisturbanceBranchSnagToAir
0 0.0 0.0 0.0 0.0 0.0 0.0 4.819715 0.0 0.0 0.16 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
1 0.0 0.0 0.0 0.0 0.0 0.0 4.199927 0.0 0.0 0.16 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
2 0.0 0.0 0.0 0.0 0.0 0.0 5.308425 0.0 0.0 0.16 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
3 0.0 0.0 0.0 0.0 0.0 0.0 5.188081 0.0 0.0 0.16 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
4 0.0 0.0 0.0 0.0 0.0 0.0 5.118937 0.0 0.0 0.16 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
995 0.0 0.0 0.0 0.0 0.0 0.0 3.784433 0.0 0.0 0.16 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
996 0.0 0.0 0.0 0.0 0.0 0.0 4.391971 0.0 0.0 0.16 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
997 0.0 0.0 0.0 0.0 0.0 0.0 3.772003 0.0 0.0 0.16 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
998 0.0 0.0 0.0 0.0 0.0 0.0 3.783260 0.0 0.0 0.16 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
999 0.0 0.0 0.0 0.0 0.0 0.0 3.819926 0.0 0.0 0.16 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0

1000 rows × 47 columns

Appendix 1: CBM EXN Default parameters

[45]:
for k, v in parameters._data.items():
    display(Markdown(f"## {k}"))
    if isinstance(v, list):
        display(Markdown(f"```json\n{json.dumps(v, indent=4)}\n```"))
    else:
        display(v)

pools

[
    "Input",
    "Merch",
    "Foliage",
    "Other",
    "CoarseRoots",
    "FineRoots",
    "AboveGroundVeryFastSoil",
    "BelowGroundVeryFastSoil",
    "AboveGroundFastSoil",
    "BelowGroundFastSoil",
    "MediumSoil",
    "AboveGroundSlowSoil",
    "BelowGroundSlowSoil",
    "StemSnag",
    "BranchSnag",
    "CO2",
    "CH4",
    "CO",
    "NO2",
    "Products"
]

flux

[
    {
        "name": "DisturbanceCO2Production",
        "process": "Disturbance",
        "source_pools": [
            "Merch",
            "Foliage",
            "Other",
            "CoarseRoots",
            "FineRoots",
            "AboveGroundVeryFastSoil",
            "BelowGroundVeryFastSoil",
            "AboveGroundFastSoil",
            "BelowGroundFastSoil",
            "MediumSoil",
            "AboveGroundSlowSoil",
            "BelowGroundSlowSoil",
            "StemSnag",
            "BranchSnag"
        ],
        "sink_pools": [
            "CO2"
        ]
    },
    {
        "name": "DisturbanceCH4Production",
        "process": "Disturbance",
        "source_pools": [
            "Merch",
            "Foliage",
            "Other",
            "CoarseRoots",
            "FineRoots",
            "AboveGroundVeryFastSoil",
            "BelowGroundVeryFastSoil",
            "AboveGroundFastSoil",
            "BelowGroundFastSoil",
            "MediumSoil",
            "AboveGroundSlowSoil",
            "BelowGroundSlowSoil",
            "StemSnag",
            "BranchSnag"
        ],
        "sink_pools": [
            "CH4"
        ]
    },
    {
        "name": "DisturbanceCOProduction",
        "process": "Disturbance",
        "source_pools": [
            "Merch",
            "Foliage",
            "Other",
            "CoarseRoots",
            "FineRoots",
            "AboveGroundVeryFastSoil",
            "BelowGroundVeryFastSoil",
            "AboveGroundFastSoil",
            "BelowGroundFastSoil",
            "MediumSoil",
            "AboveGroundSlowSoil",
            "BelowGroundSlowSoil",
            "StemSnag",
            "BranchSnag"
        ],
        "sink_pools": [
            "CO"
        ]
    },
    {
        "name": "DisturbanceBioCO2Emission",
        "process": "Disturbance",
        "source_pools": [
            "Merch",
            "Foliage",
            "Other",
            "CoarseRoots",
            "FineRoots"
        ],
        "sink_pools": [
            "CO2"
        ]
    },
    {
        "name": "DisturbanceBioCH4Emission",
        "process": "Disturbance",
        "source_pools": [
            "Merch",
            "Foliage",
            "Other",
            "CoarseRoots",
            "FineRoots"
        ],
        "sink_pools": [
            "CH4"
        ]
    },
    {
        "name": "DisturbanceBioCOEmission",
        "process": "Disturbance",
        "source_pools": [
            "Merch",
            "Foliage",
            "Other",
            "CoarseRoots",
            "FineRoots"
        ],
        "sink_pools": [
            "CO"
        ]
    },
    {
        "name": "DecayDOMCO2Emission",
        "process": "Decay",
        "source_pools": [
            "AboveGroundVeryFastSoil",
            "BelowGroundVeryFastSoil",
            "AboveGroundFastSoil",
            "BelowGroundFastSoil",
            "MediumSoil",
            "AboveGroundSlowSoil",
            "BelowGroundSlowSoil",
            "StemSnag",
            "BranchSnag"
        ],
        "sink_pools": [
            "CO2"
        ]
    },
    {
        "name": "DisturbanceProduction",
        "process": "Disturbance",
        "source_pools": [
            "Merch",
            "Foliage",
            "Other",
            "CoarseRoots",
            "FineRoots"
        ],
        "sink_pools": [
            "Products"
        ]
    },
    {
        "name": "DisturbanceDOMProduction",
        "process": "Disturbance",
        "source_pools": [
            "AboveGroundVeryFastSoil",
            "BelowGroundVeryFastSoil",
            "AboveGroundFastSoil",
            "BelowGroundFastSoil",
            "MediumSoil",
            "AboveGroundSlowSoil",
            "BelowGroundSlowSoil",
            "StemSnag",
            "BranchSnag"
        ],
        "sink_pools": [
            "Products"
        ]
    },
    {
        "name": "DeltaBiomass_AG",
        "process": "Growth and Turnover",
        "source_pools": [
            "Input"
        ],
        "sink_pools": [
            "Merch",
            "Foliage",
            "Other"
        ]
    },
    {
        "name": "DeltaBiomass_BG",
        "process": "Growth and Turnover",
        "source_pools": [
            "Input"
        ],
        "sink_pools": [
            "CoarseRoots",
            "FineRoots"
        ]
    },
    {
        "name": "TurnoverMerchLitterInput",
        "process": "Growth and Turnover",
        "source_pools": [
            "Merch"
        ],
        "sink_pools": [
            "StemSnag"
        ]
    },
    {
        "name": "TurnoverFolLitterInput",
        "process": "Growth and Turnover",
        "source_pools": [
            "Foliage"
        ],
        "sink_pools": [
            "AboveGroundVeryFastSoil"
        ]
    },
    {
        "name": "TurnoverOthLitterInput",
        "process": "Growth and Turnover",
        "source_pools": [
            "Other"
        ],
        "sink_pools": [
            "AboveGroundFastSoil",
            "BranchSnag"
        ]
    },
    {
        "name": "TurnoverCoarseLitterInput",
        "process": "Growth and Turnover",
        "source_pools": [
            "CoarseRoots"
        ],
        "sink_pools": [
            "AboveGroundFastSoil",
            "BelowGroundFastSoil"
        ]
    },
    {
        "name": "TurnoverFineLitterInput",
        "process": "Growth and Turnover",
        "source_pools": [
            "FineRoots"
        ],
        "sink_pools": [
            "AboveGroundVeryFastSoil",
            "BelowGroundVeryFastSoil"
        ]
    },
    {
        "name": "DecayVFastAGToAir",
        "process": "Decay",
        "source_pools": [
            "AboveGroundVeryFastSoil"
        ],
        "sink_pools": [
            "CO2",
            "CH4",
            "CO",
            "NO2"
        ]
    },
    {
        "name": "DecayVFastBGToAir",
        "process": "Decay",
        "source_pools": [
            "BelowGroundVeryFastSoil"
        ],
        "sink_pools": [
            "CO2",
            "CH4",
            "CO",
            "NO2"
        ]
    },
    {
        "name": "DecayFastAGToAir",
        "process": "Decay",
        "source_pools": [
            "AboveGroundFastSoil"
        ],
        "sink_pools": [
            "CO2",
            "CH4",
            "CO",
            "NO2"
        ]
    },
    {
        "name": "DecayFastBGToAir",
        "process": "Decay",
        "source_pools": [
            "BelowGroundFastSoil"
        ],
        "sink_pools": [
            "CO2",
            "CH4",
            "CO",
            "NO2"
        ]
    },
    {
        "name": "DecayMediumToAir",
        "process": "Decay",
        "source_pools": [
            "MediumSoil"
        ],
        "sink_pools": [
            "CO2",
            "CH4",
            "CO",
            "NO2"
        ]
    },
    {
        "name": "DecaySlowAGToAir",
        "process": "Decay",
        "source_pools": [
            "AboveGroundSlowSoil"
        ],
        "sink_pools": [
            "CO2",
            "CH4",
            "CO",
            "NO2"
        ]
    },
    {
        "name": "DecaySlowBGToAir",
        "process": "Decay",
        "source_pools": [
            "BelowGroundSlowSoil"
        ],
        "sink_pools": [
            "CO2",
            "CH4",
            "CO",
            "NO2"
        ]
    },
    {
        "name": "DecayStemSnagToAir",
        "process": "Decay",
        "source_pools": [
            "StemSnag"
        ],
        "sink_pools": [
            "CO2",
            "CH4",
            "CO",
            "NO2"
        ]
    },
    {
        "name": "DecayBranchSnagToAir",
        "process": "Decay",
        "source_pools": [
            "BranchSnag"
        ],
        "sink_pools": [
            "CO2",
            "CH4",
            "CO",
            "NO2"
        ]
    },
    {
        "name": "DisturbanceMerchToAir",
        "process": "Disturbance",
        "source_pools": [
            "Merch"
        ],
        "sink_pools": [
            "CO2",
            "CH4",
            "CO",
            "NO2"
        ]
    },
    {
        "name": "DisturbanceFolToAir",
        "process": "Disturbance",
        "source_pools": [
            "Foliage"
        ],
        "sink_pools": [
            "CO2",
            "CH4",
            "CO",
            "NO2"
        ]
    },
    {
        "name": "DisturbanceOthToAir",
        "process": "Disturbance",
        "source_pools": [
            "Other"
        ],
        "sink_pools": [
            "CO2",
            "CH4",
            "CO",
            "NO2"
        ]
    },
    {
        "name": "DisturbanceCoarseToAir",
        "process": "Disturbance",
        "source_pools": [
            "CoarseRoots"
        ],
        "sink_pools": [
            "CO2",
            "CH4",
            "CO",
            "NO2"
        ]
    },
    {
        "name": "DisturbanceFineToAir",
        "process": "Disturbance",
        "source_pools": [
            "FineRoots"
        ],
        "sink_pools": [
            "CO2",
            "CH4",
            "CO",
            "NO2"
        ]
    },
    {
        "name": "DisturbanceDOMCO2Emission",
        "process": "Disturbance",
        "source_pools": [
            "AboveGroundVeryFastSoil",
            "BelowGroundVeryFastSoil",
            "AboveGroundFastSoil",
            "BelowGroundFastSoil",
            "MediumSoil",
            "AboveGroundSlowSoil",
            "BelowGroundSlowSoil",
            "StemSnag",
            "BranchSnag"
        ],
        "sink_pools": [
            "CO2"
        ]
    },
    {
        "name": "DisturbanceDOMCH4Emission",
        "process": "Disturbance",
        "source_pools": [
            "AboveGroundVeryFastSoil",
            "BelowGroundVeryFastSoil",
            "AboveGroundFastSoil",
            "BelowGroundFastSoil",
            "MediumSoil",
            "AboveGroundSlowSoil",
            "BelowGroundSlowSoil",
            "StemSnag",
            "BranchSnag"
        ],
        "sink_pools": [
            "CH4"
        ]
    },
    {
        "name": "DisturbanceDOMCOEmission",
        "process": "Disturbance",
        "source_pools": [
            "AboveGroundVeryFastSoil",
            "BelowGroundVeryFastSoil",
            "AboveGroundFastSoil",
            "BelowGroundFastSoil",
            "MediumSoil",
            "AboveGroundSlowSoil",
            "BelowGroundSlowSoil",
            "StemSnag",
            "BranchSnag"
        ],
        "sink_pools": [
            "CO"
        ]
    },
    {
        "name": "DisturbanceMerchLitterInput",
        "process": "Disturbance",
        "source_pools": [
            "Merch"
        ],
        "sink_pools": [
            "StemSnag",
            "MediumSoil",
            "AboveGroundSlowSoil"
        ]
    },
    {
        "name": "DisturbanceFolLitterInput",
        "process": "Disturbance",
        "source_pools": [
            "Foliage"
        ],
        "sink_pools": [
            "AboveGroundVeryFastSoil",
            "BelowGroundVeryFastSoil"
        ]
    },
    {
        "name": "DisturbanceOthLitterInput",
        "process": "Disturbance",
        "source_pools": [
            "Other"
        ],
        "sink_pools": [
            "AboveGroundFastSoil",
            "BranchSnag",
            "BelowGroundFastSoil"
        ]
    },
    {
        "name": "DisturbanceCoarseLitterInput",
        "process": "Disturbance",
        "source_pools": [
            "CoarseRoots"
        ],
        "sink_pools": [
            "AboveGroundFastSoil",
            "BelowGroundFastSoil"
        ]
    },
    {
        "name": "DisturbanceFineLitterInput",
        "process": "Disturbance",
        "source_pools": [
            "FineRoots"
        ],
        "sink_pools": [
            "AboveGroundVeryFastSoil",
            "AboveGroundFastSoil",
            "BelowGroundFastSoil",
            "BelowGroundVeryFastSoil"
        ]
    },
    {
        "name": "DisturbanceVFastAGToAir",
        "process": "Disturbance",
        "source_pools": [
            "AboveGroundVeryFastSoil"
        ],
        "sink_pools": [
            "CO2",
            "CH4",
            "CO",
            "NO2"
        ]
    },
    {
        "name": "DisturbanceVFastBGToAir",
        "process": "Disturbance",
        "source_pools": [
            "BelowGroundVeryFastSoil"
        ],
        "sink_pools": [
            "CO2",
            "CH4",
            "CO",
            "NO2"
        ]
    },
    {
        "name": "DisturbanceFastAGToAir",
        "process": "Disturbance",
        "source_pools": [
            "AboveGroundFastSoil"
        ],
        "sink_pools": [
            "CO2",
            "CH4",
            "CO",
            "NO2"
        ]
    },
    {
        "name": "DisturbanceFastBGToAir",
        "process": "Disturbance",
        "source_pools": [
            "BelowGroundFastSoil"
        ],
        "sink_pools": [
            "CO2",
            "CH4",
            "CO",
            "NO2"
        ]
    },
    {
        "name": "DisturbanceMediumToAir",
        "process": "Disturbance",
        "source_pools": [
            "MediumSoil"
        ],
        "sink_pools": [
            "CO2",
            "CH4",
            "CO",
            "NO2"
        ]
    },
    {
        "name": "DisturbanceSlowAGToAir",
        "process": "Disturbance",
        "source_pools": [
            "AboveGroundSlowSoil"
        ],
        "sink_pools": [
            "CO2",
            "CH4",
            "CO",
            "NO2"
        ]
    },
    {
        "name": "DisturbanceSlowBGToAir",
        "process": "Disturbance",
        "source_pools": [
            "BelowGroundSlowSoil"
        ],
        "sink_pools": [
            "CO2",
            "CH4",
            "CO",
            "NO2"
        ]
    },
    {
        "name": "DisturbanceStemSnagToAir",
        "process": "Disturbance",
        "source_pools": [
            "StemSnag"
        ],
        "sink_pools": [
            "CO2",
            "CH4",
            "CO",
            "NO2"
        ]
    },
    {
        "name": "DisturbanceBranchSnagToAir",
        "process": "Disturbance",
        "source_pools": [
            "BranchSnag"
        ],
        "sink_pools": [
            "CO2",
            "CH4",
            "CO",
            "NO2"
        ]
    }
]

slow_mixing_rate

id rate
0 1 0.006

turnover_parameters

spatial_unit_id sw_hw FoliageFallRate StemAnnualTurnoverRate BranchTurnoverRate CoarseRootTurnProp FineRootTurnProp OtherToBranchSnagSplit CoarseRootAGSplit FineRootAGSplit StemSnag BranchSnag
0 1 0 0.10 0.0050 0.04 0.02 0.641 0.25 0.5 0.5 0.032 0.1
1 3 0 0.05 0.0060 0.03 0.02 0.641 0.25 0.5 0.5 0.032 0.1
2 4 0 0.10 0.0050 0.04 0.02 0.641 0.25 0.5 0.5 0.032 0.1
3 5 0 0.15 0.0067 0.04 0.02 0.641 0.25 0.5 0.5 0.032 0.1
4 6 0 0.15 0.0067 0.04 0.02 0.641 0.25 0.5 0.5 0.032 0.1
... ... ... ... ... ... ... ... ... ... ... ... ...
91 52 1 0.95 0.0050 0.04 0.02 0.641 0.25 0.5 0.5 0.032 0.1
92 53 1 0.95 0.0060 0.04 0.02 0.641 0.25 0.5 0.5 0.032 0.1
93 54 1 0.95 0.0045 0.04 0.02 0.641 0.25 0.5 0.5 0.032 0.1
94 58 1 0.95 0.0060 0.03 0.02 0.641 0.25 0.5 0.5 0.032 0.1
95 59 1 0.95 0.0050 0.04 0.02 0.641 0.25 0.5 0.5 0.032 0.1

96 rows × 12 columns

species

species_id species_name genus_id genus_name forest_type_id forest_type_name
0 1 Spruce 1 Spruce 1 Softwood
1 2 Black spruce 1 Spruce 1 Softwood
2 3 Red spruce 1 Spruce 1 Softwood
3 4 Norway spruce 1 Spruce 1 Softwood
4 5 Engelmann spruce 1 Spruce 1 Softwood
... ... ... ... ... ... ...
189 191 Other broadleaved species - Genus type 12 Other broad-leaved species 3 Hardwood
190 192 Unspecified broadleaved species - Genus type 13 Unspecified broad-leaved species 3 Hardwood
191 193 Missing value - Genus type 14 Missing Value 1 Softwood
192 194 Softwood forest type 14 Missing Value 1 Softwood
193 195 Hardwood forest type 14 Missing Value 3 Hardwood

194 rows × 6 columns

root_parameters

id hw_a sw_a hw_b frp_a frp_b frp_c biomass_to_carbon_rate
0 1 1.576 0.222 0.615 0.072 0.354 -0.060212 0.5

decay_parameters

pool base_decay_rate reference_temp q10 prop_to_atmosphere max_rate
0 AboveGroundVeryFastSoil 0.35500 10.0 2.65 0.815 1.0
1 BelowGroundVeryFastSoil 0.50000 10.0 2.00 0.830 1.0
2 AboveGroundFastSoil 0.14350 10.0 2.00 0.830 1.0
3 BelowGroundFastSoil 0.14350 10.0 2.00 0.830 1.0
4 MediumSoil 0.03740 10.0 2.00 0.830 1.0
5 AboveGroundSlowSoil 0.01500 10.0 2.65 1.000 1.0
6 BelowGroundSlowSoil 0.00330 10.0 1.00 1.000 1.0
7 StemSnag 0.01870 10.0 2.00 0.830 1.0
8 BranchSnag 0.07175 10.0 2.00 0.830 1.0

disturbance_matrix_value

disturbance_matrix_id source_pool sink_pool proportion
0 2 Merch StemSnag 0.68624
1 2 Merch CO2 0.28102
2 2 Merch CH4 0.00316
3 2 Merch CO 0.02842
4 2 Foliage CO2 0.85570
... ... ... ... ...
14788 960 MediumSoil MediumSoil 1.00000
14789 960 AboveGroundSlowSoil AboveGroundSlowSoil 1.00000
14790 960 BelowGroundSlowSoil BelowGroundSlowSoil 1.00000
14791 960 StemSnag StemSnag 1.00000
14792 960 BranchSnag BranchSnag 1.00000

14793 rows × 4 columns

disturbance_matrix_association

spatial_unit_id disturbance_type_id sw_hw disturbance_matrix_id
0 1 0 0 27
1 3 0 0 27
2 4 0 0 27
3 5 0 0 27
4 6 0 0 27
... ... ... ... ...
12747 52 1 1 850
12748 53 1 1 862
12749 54 1 1 845
12750 58 1 1 888
12751 59 1 1 880

12752 rows × 4 columns

Appendix 2: simulation parameters used to generate op-dataframes

Net C increments

These are derived from Tutorial 1 of the CBM-CFS3 Operational-Scale toolbox. Each simulation area is assigned the same set of increments.

[46]:
display(increments)
row_idx age merch_inc foliage_inc other_inc
0 0 1 0.018897 0.040012 0.018766
1 0 2 0.083230 0.080984 0.099667
2 0 3 0.171700 0.109322 0.188663
3 0 4 0.276997 0.132148 0.276154
4 0 5 0.395454 0.151260 0.359470
... ... ... ... ... ...
65 999 66 0.000000 0.000000 0.000000
66 999 67 0.000000 0.000000 0.000000
67 999 68 0.000000 0.000000 0.000000
68 999 69 0.000000 0.000000 0.000000
69 999 70 0.000000 0.000000 0.000000

70000 rows × 5 columns

Simulation areas

[47]:
display(spinup_input["parameters"])
sw_hw age area delay return_interval min_rotations max_rotations spatial_unit_id species mean_annual_temperature historical_disturbance_type last_pass_disturbance_type
0 0 41 1 0 125 10 30 17 20 0.000 1 1
1 0 13 1 0 125 10 30 17 20 0.002 1 1
2 0 55 1 0 125 10 30 17 20 0.004 1 1
3 0 51 1 0 125 10 30 17 20 0.006 1 1
4 0 49 1 0 125 10 30 17 20 0.008 1 1
... ... ... ... ... ... ... ... ... ... ... ... ...
995 0 14 1 0 125 10 30 17 20 1.990 1 1
996 0 46 1 0 125 10 30 17 20 1.992 1 1
997 0 18 1 0 125 10 30 17 20 1.994 1 1
998 0 14 1 0 125 10 30 17 20 1.996 1 1
999 0 23 1 0 125 10 30 17 20 1.998 1 1

1000 rows × 12 columns

[ ]: