The {micado.dap} R package

Stand-alone version and HTTP API of the MICADO data analysis pipeline

Authors
Affiliation
Eric Laloy
Published

July 3, 2024

This is the technical user manual for the MICADO data analysis pipeline (DAP), which has taken the form of an R package. All scientific details of the implemented probabilistic models are provided in the corresponding journal paper.

1 The R package

A binary version of the {micado.dap} R package was distributed as a .zip archive, during the project, together with this HTML manual. The package can be installed from the archive from your R console as follows:

if (!require(pak)) install.packages("pak")
pak::pak("local::/path/to/micado.dap_0.2.0.zip")

where /path/to/micado.dap_0.2.0.zip is a relative or absolute path to the file. Alternatively, the package can be installed from its GitHub repository, with:

if (!require(pak)) install.packages("pak")
pak::pak("rogiersbart/micado.dap")

This does require a recent version of R, and the corresponding R developer toolchain for windows Rtools. Installing the package will also install the required dependencies from CRAN and GitHub, if an internet connection is available. Once this has completed successfully, the package can be loaded and attached, so it is ready for use, with the following:

library(micado.dap)
#> # MICADO Data Analysis Pipeline
#> i R package version 0.2.2.
#> i Copyright 2024 SCK CEN.
#> i All rights reserved.

This induces a start-up message to appear, which includes the package version number, as well as a copyright notice. If you get a message saying that CmdStan cannot be found, try to follow the {cmdstanr} setup instructions.

Note

The MICADO DAP is compiled for a 64-bit Windows operating system. In theory, it is possible to use the package on other platforms, but a different package binary would have to be created in that case, and the Stan models would have to be recompiled as well. This has not been tested.

2 The measurement data

The MICADO DAP has been targeting probabilistic interpretation of two potential waste streams, or so-called “virtual cases”, that are referred to as “Virtual Case 1” (VC1) and “Virtual Case 3” (VC3). While the data related to the different measurement technologies and their respective efficiencies are also part of the package, only the “true” measurement results are exposed to the package user. These are available as R objects with a vc1_ or vc3_ prefix indicating the targeted waste stream, and gamma, pncc, or ancc as suffix indicating the measurement technology:

vc1_gamma
#> # A tibble: 85 × 6
#>    nuclide energy  time detector   net background
#>    <chr>    <dbl> <dbl> <chr>    <int>      <int>
#>  1 Am-241    125.  3600 D1       28176       1560
#>  2 Am-241    125.  3600 D2       28701       1564
#>  3 Am-241    125.  3600 D3       11056       1476
#>  4 Am-241    125.  3600 D4        6507       1537
#>  5 Am-241    125.  3600 D5        3739       1505
#>  6 Am-241    170.  3600 D1        1229       1239
#>  7 Am-241    170.  3600 D2        1297       1269
#>  8 Am-241    170.  3600 D3         494       1313
#>  9 Am-241    170.  3600 D4         257       1278
#> 10 Am-241    170.  3600 D5         138       1197
#> # ℹ 75 more rows
vc1_pncc
#> reals_per_second 
#>        0.1994771
vc1_ancc
#> counts_per_second 
#>           429.393
vc3_gamma
#> # A tibble: 180 × 6
#>    nuclide energy  time detector   net background
#>    <chr>    <dbl> <dbl> <chr>    <int>      <int>
#>  1 Am-241    662.  3600 D1           0        227
#>  2 Am-241    662.  3600 D2           0        219
#>  3 Am-241    662.  3600 D3           0        218
#>  4 Am-241    662.  3600 D4           1        217
#>  5 Am-241    662.  3600 D5           0        232
#>  6 Am-241    662.  3600 D6           0        244
#>  7 Co-60    1173.  3600 D1          91        129
#>  8 Co-60    1173.  3600 D2       25711         98
#>  9 Co-60    1173.  3600 D3          26        116
#> 10 Co-60    1173.  3600 D4          11         86
#> # ℹ 170 more rows
vc3_pncc
#> reals_per_second 
#>       0.06579285

3 The probabilistic models

The probabilistic models part of the MICADO DAP can be invoked in different ways, depending on where they should run, and how a request is made:

  • A local R client can access the vc1_model() and vc3_model() R functions directly, and there is no need for an HTTP API,
  • For remote use, the DAP can be started on the server with dap_start(), so that
    • A remote R client can access the HTTP API through dap_request(), and
    • A remote HTTP client can directly send HTTP requests to the server.

3.1 Local R client

Local use of the MICADO DAP, without the need for an HTTP API, is only possible from R. The vc1_model() and vc3_model() functions accept gamma, pncc and ancc (only for VC1) data, a legacy flag indicating whether detailed knowledge on the Plutonium isotopic vector is present or not, and a number of cores to parallellize the calculations:

cores <- 2
vc1_result <- vc1_model(
  gamma = vc1_gamma,
  pncc = vc1_pncc,
  ancc = vc1_ancc,
  cores = cores
)
#> v Preparing data ... done
#> v Loading model ... done
#> v Sampling ... done
#> v Postprocessing ... done
#> 
vc1_result_legacy <- vc1_model(
  gamma = vc1_gamma,
  pncc = vc1_pncc,
  ancc = vc1_ancc,
  cores = cores,
  legacy = TRUE
)
#> v Preparing data ... done
#> v Loading model ... done
#> v Sampling ... done
#> v Postprocessing ... done
#> 
vc3_result <- vc3_model(
  gamma = vc3_gamma,
  pncc = vc3_pncc,
  cores = cores
)
#> v Preparing data ... done
#> v Loading model ... done
#> Warning: 4000 of 4000 (100.0%) transitions hit the maximum treedepth limit of 10.
#> See https://mc-stan.org/misc/warnings for details.
#> v Sampling ... done
#> v Postprocessing ... done
#> 
vc3_result_legacy <- vc3_model(
  gamma = vc3_gamma,
  pncc = vc3_pncc,
  cores = cores,
  legacy = TRUE
)
#> v Preparing data ... done
#> v Loading model ... done
#> v Sampling ... done
#> v Postprocessing ... done
#> 

The corresponding result objects have the following structure:

str(vc1_result, give.attr = FALSE)
#> List of 2
#>  $ masses     : tibble [6 × 5] (S3: tbl_df/tbl/data.frame)
#>   ..$ nuclide: chr [1:6] "Am-241" "Pu-238" "Pu-239" "Pu-240" ...
#>   ..$ mean   : num [1:6] 0.02605 0.00746 0.21354 0.09316 0.02303 ...
#>   ..$ sd     : num [1:6] 0.000764 0.000225 0.006438 0.005361 0.00065 ...
#>   ..$ q025   : num [1:6] 0.02457 0.00703 0.20117 0.08306 0.02177 ...
#>   ..$ q975   : num [1:6] 0.02759 0.00792 0.22624 0.10366 0.02433 ...
#>  $ diagnostics:List of 4
#>   ..$ converged: logi TRUE
#>   ..$ p_gamma  : num 1
#>   ..$ p_pncc   : num 0.893
#>   ..$ p_ancc   : num 0.732
vc1_result$masses # mean, sd, q025, q975 for all nuclides
#> # A tibble: 6 × 5
#>   nuclide    mean       sd    q025    q975
#>   <chr>     <dbl>    <dbl>   <dbl>   <dbl>
#> 1 Am-241  0.0261  0.000764 0.0246  0.0276 
#> 2 Pu-238  0.00746 0.000225 0.00703 0.00792
#> 3 Pu-239  0.214   0.00644  0.201   0.226  
#> 4 Pu-240  0.0932  0.00536  0.0831  0.104  
#> 5 Pu-241  0.0230  0.000650 0.0218  0.0243 
#> 6 Pu-242  0.0272  0.00342  0.0206  0.0339
vc1_result$diagnostics # converged: whether all rhat < 1.02
#> $converged
#> [1] TRUE
#> 
#> $p_gamma
#> [1] 1
#> 
#> $p_pncc
#> [1] 0.89325
#> 
#> $p_ancc
#> [1] 0.7315

The masses data frame contains the mean and standard deviation of the different radionuclide masses, and the 0.025 and 0.975 quantiles. The diagnostics list contains:

  • converged: a logical flag indicating whether all parameter Rhat values were below a threshold of 1.02, and sampling from the posterior has converged,
  • p_gamma: a posterior predictive p-value for the gross counts, based on the \(\chi^2\)-discrepancy, which, if close to zero, indicates that at least one of the observed data points is really in a tail of its corresponding posterior predictive distribution (i.e. we have outliers, or our model may not be very adequate for interpreting the data at hand), while if close to one, it indicates that the fit to the data is very good, and we may even be overestimating uncertainty,
  • p_pncc: the posterior predictive p-value for the PNCC reals per second
  • p_ancc: the posterior predictive p-value for the ANCC counts per second

When using the R client, the results come with additional attributes: The CmdStanMCMC model fit object, and the JSON required for DigiWaste Bridge. They can be obtained using get_fit() and get_json() respectively. The fit object allows for more in depth investigation of the probabilistic model run, e.g.:

get_fit(vc3_result)$time()
#> $total
#> [1] 2109.275
#> 
#> $chains
#>   chain_id  warmup sampling   total
#> 1        1 617.657  405.288 1022.95
#> 2        2 609.069  405.744 1014.81
#> 3        3 674.795  378.090 1052.88
#> 4        4 693.243  385.701 1078.94

Similarly, the JSON required for DigiWaste Bridge can be accessed through:

get_json(vc3_result)
#> {
#>   "Americium241": {
#>     "type": "mass",
#>     "unit": "g",
#>     "val": 0.0003614,
#>     "error": 9.088e-05,
#>     "CI95%": [0.000231, 0.0005752]
#>   },
#>   "Antimony125": {
#>     "type": "mass",
#>     "unit": "g",
#>     "val": 7.518e-06,
#>     "error": 4.983e-07,
#>     "CI95%": [6.515e-06, 8.48e-06]
#>   },
#>   "Cesium134": {
#>     "type": "mass",
#>     "unit": "g",
#>     "val": 1.113e-05,
#>     "error": 7.384e-07,
#>     "CI95%": [9.65e-06, 1.254e-05]
#>   },
#>   "Cesium137": {
#>     "type": "mass",
#>     "unit": "g",
#>     "val": 0.001239,
#>     "error": 8.206e-05,
#>     "CI95%": [0.001074, 0.001395]
#>   },
#>   "Cobalt60": {
#>     "type": "mass",
#>     "unit": "g",
#>     "val": 2.777e-06,
#>     "error": 1.855e-07,
#>     "CI95%": [2.406e-06, 3.126e-06]
#>   },
#>   "Europium154": {
#>     "type": "mass",
#>     "unit": "g",
#>     "val": 5.169e-06,
#>     "error": 3.505e-07,
#>     "CI95%": [4.469e-06, 5.835e-06]
#>   },
#>   "Plutonium238": {
#>     "type": "mass",
#>     "unit": "g",
#>     "val": 0.001735,
#>     "error": 0.001042,
#>     "CI95%": [0.0002894, 0.004192]
#>   },
#>   "Plutonium239": {
#>     "type": "mass",
#>     "unit": "g",
#>     "val": 0.04561,
#>     "error": 0.01369,
#>     "CI95%": [0.02582, 0.07819]
#>   },
#>   "Plutonium240": {
#>     "type": "mass",
#>     "unit": "g",
#>     "val": 0.02034,
#>     "error": 0.0048,
#>     "CI95%": [0.01292, 0.03141]
#>   },
#>   "Plutonium241": {
#>     "type": "mass",
#>     "unit": "g",
#>     "val": 0.007357,
#>     "error": 0.003183,
#>     "CI95%": [0.002891, 0.01503]
#>   },
#>   "Plutonium242": {
#>     "type": "mass",
#>     "unit": "g",
#>     "val": 0.005261,
#>     "error": 0.001943,
#>     "CI95%": [0.002267, 0.009826]
#>   },
#>   "Ruthenium106": {
#>     "type": "mass",
#>     "unit": "g",
#>     "val": 1.593e-05,
#>     "error": 1.079e-06,
#>     "CI95%": [1.376e-05, 1.798e-05]
#>   },
#>   "Diagnostics": {
#>     "converged": true,
#>     "p_gamma": 0,
#>     "p_pncc": 0.9848,
#>     "p_ancc": {}
#>   }
#> }

This JSON can be written to disk for the manual uploads as follows:

write_json <- \(x, y) get_json(x) |> writeLines(y, useBytes = TRUE)
vc1_result |> write_json("json/vc1_result.json")
vc1_result_legacy |> write_json("json/vc1_result_legacy.json")
vc3_result |> write_json("json/vc3_result.json")
vc3_result_legacy |> write_json("json/vc3_result_legacy.json")

3.2 Remote R client

Remote use is made possible by an HTTP API, for which the R package has a set of wrapper functions, all using the dap_ prefix. On the machine that should serve the MICADO DAP, the HTTP API can be started with:

dap_start(cores = 4)
#> v The MICADO DAP server was successfully started.

where the number of cores dedicated to the MICADO DAP can be specified. Only values 1 (run all chains sequentially), 2 (run 2 times 2 MCMC chains in parallel) and 4 (run 4 MCMC chains in parallel) make sense here. On the client, a request can then be submitted as follows:

result <- dap_request(
  gamma = vc3_gamma,
  pncc = vc3_pncc,
  case = "vc3",
  ip = "localhost"
)
str(result, give.attr = FALSE)
#> List of 2
#>  $ masses     :'data.frame': 12 obs. of  5 variables:
#>   ..$ nuclide: chr [1:12] "Am-241" "Co-60" "Cs-134" "Cs-137" ...
#>   ..$ mean   : num [1:12] 3.00e-04 2.79e-06 0.00 1.20e-03 5.19e-06 ...
#>   ..$ sd     : num [1:12] 1.00e-04 1.84e-07 7.32e-07 1.00e-04 3.47e-07 ...
#>   ..$ q025   : num [1:12] 2.00e-04 2.42e-06 9.73e-06 1.10e-03 4.49e-06 ...
#>   ..$ q975   : num [1:12] 6.00e-04 3.14e-06 0.00 1.40e-03 5.85e-06 ...
#>  $ diagnostics:List of 4
#>   ..$ converged: logi TRUE
#>   ..$ p_gamma  : int 0
#>   ..$ p_pncc   : num 0.995
#>   ..$ p_ancc   : Named list()

where the IP address should be that of the server. Currently, port 8000 is always used. The DAP server can always be terminated explicitly by:

dap_stop()
#> v The MIDACO DAP server was successfully terminated.

When using dap_request(), the results are always returned in an R-native format. When submitting requests directly through an HTTP client, the preferred DigiWaste JSON structure is returned instead.

Warning

Note that we just use ip = "localhost" here for demonstration purposes. In practice, when using the same machine as R client and server, it makes more sense to use the R API (as explained in “Local R client”), than to go through the HTTP API.

3.3 Remote HTTP client

The original idea was that the DigiWaste system would send HTTP requests to the MICADO DAP, with a JSON string containing the required inputs, and accepting the outputs resulting from the probabilistic interpretation of the measurement data. We illustrate here how this would work when doing an HTTP request directly, rather than using the above R client API (which does the same in the background, but receives the results in a different format).

First we again need to start the server:

dap_start(cores = 4)
#> v The MICADO DAP server was successfully started.

Then we can construct the required JSON:

request_json <- jsonlite::toJSON(
  list(
    gamma = vc3_gamma,
    pncc = vc3_pncc,
    ancc = NULL,
    case = "vc3",
    legacy = FALSE
  ),
  digits = NA,
  pretty = TRUE
)

In appendix we provide the full JSON body to make clear what structure is required. Finally we can submit the request, and retrieve the DAP results, again in JSON format:

result <- httr::POST("http://localhost:8000/dap", body = request_json) |>
  httr::content()
dap_stop()
#> v The MIDACO DAP server was successfully terminated.
cat(result)
#> {
#>   "Americium241": {
#>     "type": "mass",
#>     "unit": "g",
#>     "val": 0.0003669,
#>     "error": 8.947e-05,
#>     "CI95%": [0.0002337, 0.0005819]
#>   },
#>   "Antimony125": {
#>     "type": "mass",
#>     "unit": "g",
#>     "val": 7.514e-06,
#>     "error": 4.923e-07,
#>     "CI95%": [6.556e-06, 8.48e-06]
#>   },
#>   "Cesium134": {
#>     "type": "mass",
#>     "unit": "g",
#>     "val": 1.113e-05,
#>     "error": 7.285e-07,
#>     "CI95%": [9.725e-06, 1.254e-05]
#>   },
#>   "Cesium137": {
#>     "type": "mass",
#>     "unit": "g",
#>     "val": 0.001239,
#>     "error": 8.098e-05,
#>     "CI95%": [0.001082, 0.001396]
#>   },
#>   "Cobalt60": {
#>     "type": "mass",
#>     "unit": "g",
#>     "val": 2.775e-06,
#>     "error": 1.836e-07,
#>     "CI95%": [2.419e-06, 3.132e-06]
#>   },
#>   "Europium154": {
#>     "type": "mass",
#>     "unit": "g",
#>     "val": 5.165e-06,
#>     "error": 3.465e-07,
#>     "CI95%": [4.499e-06, 5.837e-06]
#>   },
#>   "Plutonium238": {
#>     "type": "mass",
#>     "unit": "g",
#>     "val": 0.00192,
#>     "error": 0.001142,
#>     "CI95%": [0.0003353, 0.004565]
#>   },
#>   "Plutonium239": {
#>     "type": "mass",
#>     "unit": "g",
#>     "val": 0.04602,
#>     "error": 0.01334,
#>     "CI95%": [0.02606, 0.0765]
#>   },
#>   "Plutonium240": {
#>     "type": "mass",
#>     "unit": "g",
#>     "val": 0.02143,
#>     "error": 0.004892,
#>     "CI95%": [0.01358, 0.03295]
#>   },
#>   "Plutonium241": {
#>     "type": "mass",
#>     "unit": "g",
#>     "val": 0.007845,
#>     "error": 0.003376,
#>     "CI95%": [0.003104, 0.01581]
#>   },
#>   "Plutonium242": {
#>     "type": "mass",
#>     "unit": "g",
#>     "val": 0.004254,
#>     "error": 0.001791,
#>     "CI95%": [0.001516, 0.008373]
#>   },
#>   "Ruthenium106": {
#>     "type": "mass",
#>     "unit": "g",
#>     "val": 1.592e-05,
#>     "error": 1.066e-06,
#>     "CI95%": [1.386e-05, 1.799e-05]
#>   },
#>   "Diagnostics": {
#>     "converged": true,
#>     "p_gamma": 0,
#>     "p_pncc": 0.9955,
#>     "p_ancc": {}
#>   }
#> }

Appendix

HTTP request JSON body

VC1
jsonlite::toJSON(
  list(
    gamma = vc1_gamma,
    pncc = vc1_pncc,
    ancc = vc1_ancc,
    case = "vc1",
    legacy = FALSE
  ),
  digits = NA,
  pretty = TRUE
)
#> {
#>   "gamma": [
#>     {
#>       "nuclide": "Am-241",
#>       "energy": 125.3,
#>       "time": 3600,
#>       "detector": "D1",
#>       "net": 28176,
#>       "background": 1560
#>     },
#>     {
#>       "nuclide": "Am-241",
#>       "energy": 125.3,
#>       "time": 3600,
#>       "detector": "D2",
#>       "net": 28701,
#>       "background": 1564
#>     },
#>     {
#>       "nuclide": "Am-241",
#>       "energy": 125.3,
#>       "time": 3600,
#>       "detector": "D3",
#>       "net": 11056,
#>       "background": 1476
#>     },
#>     {
#>       "nuclide": "Am-241",
#>       "energy": 125.3,
#>       "time": 3600,
#>       "detector": "D4",
#>       "net": 6507,
#>       "background": 1537
#>     },
#>     {
#>       "nuclide": "Am-241",
#>       "energy": 125.3,
#>       "time": 3600,
#>       "detector": "D5",
#>       "net": 3739,
#>       "background": 1505
#>     },
#>     {
#>       "nuclide": "Am-241",
#>       "energy": 169.56,
#>       "time": 3600,
#>       "detector": "D1",
#>       "net": 1229,
#>       "background": 1239
#>     },
#>     {
#>       "nuclide": "Am-241",
#>       "energy": 169.56,
#>       "time": 3600,
#>       "detector": "D2",
#>       "net": 1297,
#>       "background": 1269
#>     },
#>     {
#>       "nuclide": "Am-241",
#>       "energy": 169.56,
#>       "time": 3600,
#>       "detector": "D3",
#>       "net": 494,
#>       "background": 1313
#>     },
#>     {
#>       "nuclide": "Am-241",
#>       "energy": 169.56,
#>       "time": 3600,
#>       "detector": "D4",
#>       "net": 257,
#>       "background": 1278
#>     },
#>     {
#>       "nuclide": "Am-241",
#>       "energy": 169.56,
#>       "time": 3600,
#>       "detector": "D5",
#>       "net": 138,
#>       "background": 1197
#>     },
#>     {
#>       "nuclide": "Am-241",
#>       "energy": 322.52,
#>       "time": 3600,
#>       "detector": "D1",
#>       "net": 937,
#>       "background": 570
#>     },
#>     {
#>       "nuclide": "Am-241",
#>       "energy": 322.52,
#>       "time": 3600,
#>       "detector": "D2",
#>       "net": 1000,
#>       "background": 580
#>     },
#>     {
#>       "nuclide": "Am-241",
#>       "energy": 322.52,
#>       "time": 3600,
#>       "detector": "D3",
#>       "net": 356,
#>       "background": 589
#>     },
#>     {
#>       "nuclide": "Am-241",
#>       "energy": 322.52,
#>       "time": 3600,
#>       "detector": "D4",
#>       "net": 199,
#>       "background": 578
#>     },
#>     {
#>       "nuclide": "Am-241",
#>       "energy": 322.52,
#>       "time": 3600,
#>       "detector": "D5",
#>       "net": 107,
#>       "background": 634
#>     },
#>     {
#>       "nuclide": "Am-241",
#>       "energy": 662.4,
#>       "time": 3600,
#>       "detector": "D1",
#>       "net": 1694,
#>       "background": 253
#>     },
#>     {
#>       "nuclide": "Am-241",
#>       "energy": 662.4,
#>       "time": 3600,
#>       "detector": "D2",
#>       "net": 1684,
#>       "background": 260
#>     },
#>     {
#>       "nuclide": "Am-241",
#>       "energy": 662.4,
#>       "time": 3600,
#>       "detector": "D3",
#>       "net": 680,
#>       "background": 219
#>     },
#>     {
#>       "nuclide": "Am-241",
#>       "energy": 662.4,
#>       "time": 3600,
#>       "detector": "D4",
#>       "net": 379,
#>       "background": 215
#>     },
#>     {
#>       "nuclide": "Am-241",
#>       "energy": 662.4,
#>       "time": 3600,
#>       "detector": "D5",
#>       "net": 227,
#>       "background": 232
#>     },
#>     {
#>       "nuclide": "Am-241",
#>       "energy": 722.01,
#>       "time": 3600,
#>       "detector": "D1",
#>       "net": 867,
#>       "background": 194
#>     },
#>     {
#>       "nuclide": "Am-241",
#>       "energy": 722.01,
#>       "time": 3600,
#>       "detector": "D2",
#>       "net": 938,
#>       "background": 198
#>     },
#>     {
#>       "nuclide": "Am-241",
#>       "energy": 722.01,
#>       "time": 3600,
#>       "detector": "D3",
#>       "net": 403,
#>       "background": 203
#>     },
#>     {
#>       "nuclide": "Am-241",
#>       "energy": 722.01,
#>       "time": 3600,
#>       "detector": "D4",
#>       "net": 211,
#>       "background": 187
#>     },
#>     {
#>       "nuclide": "Am-241",
#>       "energy": 722.01,
#>       "time": 3600,
#>       "detector": "D5",
#>       "net": 106,
#>       "background": 173
#>     },
#>     {
#>       "nuclide": "Pu-238",
#>       "energy": 152.72,
#>       "time": 3600,
#>       "detector": "D1",
#>       "net": 9803,
#>       "background": 1356
#>     },
#>     {
#>       "nuclide": "Pu-238",
#>       "energy": 152.72,
#>       "time": 3600,
#>       "detector": "D2",
#>       "net": 9922,
#>       "background": 1403
#>     },
#>     {
#>       "nuclide": "Pu-238",
#>       "energy": 152.72,
#>       "time": 3600,
#>       "detector": "D3",
#>       "net": 3854,
#>       "background": 1354
#>     },
#>     {
#>       "nuclide": "Pu-238",
#>       "energy": 152.72,
#>       "time": 3600,
#>       "detector": "D4",
#>       "net": 2157,
#>       "background": 1436
#>     },
#>     {
#>       "nuclide": "Pu-238",
#>       "energy": 152.72,
#>       "time": 3600,
#>       "detector": "D5",
#>       "net": 1276,
#>       "background": 1368
#>     },
#>     {
#>       "nuclide": "Pu-238",
#>       "energy": 766.36,
#>       "time": 3600,
#>       "detector": "D1",
#>       "net": 150,
#>       "background": 196
#>     },
#>     {
#>       "nuclide": "Pu-238",
#>       "energy": 766.36,
#>       "time": 3600,
#>       "detector": "D2",
#>       "net": 129,
#>       "background": 180
#>     },
#>     {
#>       "nuclide": "Pu-238",
#>       "energy": 766.36,
#>       "time": 3600,
#>       "detector": "D3",
#>       "net": 35,
#>       "background": 190
#>     },
#>     {
#>       "nuclide": "Pu-238",
#>       "energy": 766.36,
#>       "time": 3600,
#>       "detector": "D4",
#>       "net": 32,
#>       "background": 214
#>     },
#>     {
#>       "nuclide": "Pu-238",
#>       "energy": 766.36,
#>       "time": 3600,
#>       "detector": "D5",
#>       "net": 14,
#>       "background": 203
#>     },
#>     {
#>       "nuclide": "Pu-239",
#>       "energy": 129.29,
#>       "time": 3600,
#>       "detector": "D1",
#>       "net": 6548,
#>       "background": 1520
#>     },
#>     {
#>       "nuclide": "Pu-239",
#>       "energy": 129.29,
#>       "time": 3600,
#>       "detector": "D2",
#>       "net": 6728,
#>       "background": 1536
#>     },
#>     {
#>       "nuclide": "Pu-239",
#>       "energy": 129.29,
#>       "time": 3600,
#>       "detector": "D3",
#>       "net": 2539,
#>       "background": 1564
#>     },
#>     {
#>       "nuclide": "Pu-239",
#>       "energy": 129.29,
#>       "time": 3600,
#>       "detector": "D4",
#>       "net": 1449,
#>       "background": 1507
#>     },
#>     {
#>       "nuclide": "Pu-239",
#>       "energy": 129.29,
#>       "time": 3600,
#>       "detector": "D5",
#>       "net": 882,
#>       "background": 1535
#>     },
#>     {
#>       "nuclide": "Pu-239",
#>       "energy": 203.55,
#>       "time": 3600,
#>       "detector": "D1",
#>       "net": 594,
#>       "background": 1099
#>     },
#>     {
#>       "nuclide": "Pu-239",
#>       "energy": 203.55,
#>       "time": 3600,
#>       "detector": "D2",
#>       "net": 666,
#>       "background": 1009
#>     },
#>     {
#>       "nuclide": "Pu-239",
#>       "energy": 203.55,
#>       "time": 3600,
#>       "detector": "D3",
#>       "net": 268,
#>       "background": 1104
#>     },
#>     {
#>       "nuclide": "Pu-239",
#>       "energy": 203.55,
#>       "time": 3600,
#>       "detector": "D4",
#>       "net": 133,
#>       "background": 1082
#>     },
#>     {
#>       "nuclide": "Pu-239",
#>       "energy": 203.55,
#>       "time": 3600,
#>       "detector": "D5",
#>       "net": 78,
#>       "background": 1080
#>     },
#>     {
#>       "nuclide": "Pu-239",
#>       "energy": 345.01,
#>       "time": 3600,
#>       "detector": "D1",
#>       "net": 457,
#>       "background": 510
#>     },
#>     {
#>       "nuclide": "Pu-239",
#>       "energy": 345.01,
#>       "time": 3600,
#>       "detector": "D2",
#>       "net": 513,
#>       "background": 546
#>     },
#>     {
#>       "nuclide": "Pu-239",
#>       "energy": 345.01,
#>       "time": 3600,
#>       "detector": "D3",
#>       "net": 174,
#>       "background": 555
#>     },
#>     {
#>       "nuclide": "Pu-239",
#>       "energy": 345.01,
#>       "time": 3600,
#>       "detector": "D4",
#>       "net": 104,
#>       "background": 519
#>     },
#>     {
#>       "nuclide": "Pu-239",
#>       "energy": 345.01,
#>       "time": 3600,
#>       "detector": "D5",
#>       "net": 54,
#>       "background": 522
#>     },
#>     {
#>       "nuclide": "Pu-239",
#>       "energy": 413.7,
#>       "time": 3600,
#>       "detector": "D1",
#>       "net": 1216,
#>       "background": 476
#>     },
#>     {
#>       "nuclide": "Pu-239",
#>       "energy": 413.7,
#>       "time": 3600,
#>       "detector": "D2",
#>       "net": 1258,
#>       "background": 450
#>     },
#>     {
#>       "nuclide": "Pu-239",
#>       "energy": 413.7,
#>       "time": 3600,
#>       "detector": "D3",
#>       "net": 493,
#>       "background": 397
#>     },
#>     {
#>       "nuclide": "Pu-239",
#>       "energy": 413.7,
#>       "time": 3600,
#>       "detector": "D4",
#>       "net": 264,
#>       "background": 423
#>     },
#>     {
#>       "nuclide": "Pu-239",
#>       "energy": 413.7,
#>       "time": 3600,
#>       "detector": "D5",
#>       "net": 166,
#>       "background": 463
#>     },
#>     {
#>       "nuclide": "Pu-239",
#>       "energy": 451.48,
#>       "time": 3600,
#>       "detector": "D1",
#>       "net": 164,
#>       "background": 378
#>     },
#>     {
#>       "nuclide": "Pu-239",
#>       "energy": 451.48,
#>       "time": 3600,
#>       "detector": "D2",
#>       "net": 156,
#>       "background": 370
#>     },
#>     {
#>       "nuclide": "Pu-239",
#>       "energy": 451.48,
#>       "time": 3600,
#>       "detector": "D3",
#>       "net": 68,
#>       "background": 397
#>     },
#>     {
#>       "nuclide": "Pu-239",
#>       "energy": 451.48,
#>       "time": 3600,
#>       "detector": "D4",
#>       "net": 34,
#>       "background": 367
#>     },
#>     {
#>       "nuclide": "Pu-239",
#>       "energy": 451.48,
#>       "time": 3600,
#>       "detector": "D5",
#>       "net": 21,
#>       "background": 369
#>     },
#>     {
#>       "nuclide": "Pu-239",
#>       "energy": 645.9,
#>       "time": 3600,
#>       "detector": "D1",
#>       "net": 12,
#>       "background": 256
#>     },
#>     {
#>       "nuclide": "Pu-239",
#>       "energy": 645.9,
#>       "time": 3600,
#>       "detector": "D2",
#>       "net": 8,
#>       "background": 235
#>     },
#>     {
#>       "nuclide": "Pu-239",
#>       "energy": 645.9,
#>       "time": 3600,
#>       "detector": "D3",
#>       "net": 0,
#>       "background": 217
#>     },
#>     {
#>       "nuclide": "Pu-239",
#>       "energy": 645.9,
#>       "time": 3600,
#>       "detector": "D4",
#>       "net": 1,
#>       "background": 202
#>     },
#>     {
#>       "nuclide": "Pu-239",
#>       "energy": 645.9,
#>       "time": 3600,
#>       "detector": "D5",
#>       "net": 3,
#>       "background": 231
#>     },
#>     {
#>       "nuclide": "Pu-240",
#>       "energy": 160.31,
#>       "time": 3600,
#>       "detector": "D1",
#>       "net": 704,
#>       "background": 1352
#>     },
#>     {
#>       "nuclide": "Pu-240",
#>       "energy": 160.31,
#>       "time": 3600,
#>       "detector": "D2",
#>       "net": 695,
#>       "background": 1378
#>     },
#>     {
#>       "nuclide": "Pu-240",
#>       "energy": 160.31,
#>       "time": 3600,
#>       "detector": "D3",
#>       "net": 306,
#>       "background": 1284
#>     },
#>     {
#>       "nuclide": "Pu-240",
#>       "energy": 160.31,
#>       "time": 3600,
#>       "detector": "D4",
#>       "net": 145,
#>       "background": 1333
#>     },
#>     {
#>       "nuclide": "Pu-240",
#>       "energy": 160.31,
#>       "time": 3600,
#>       "detector": "D5",
#>       "net": 102,
#>       "background": 1361
#>     },
#>     {
#>       "nuclide": "Pu-241",
#>       "energy": 148.57,
#>       "time": 3600,
#>       "detector": "D1",
#>       "net": 35835,
#>       "background": 1353
#>     },
#>     {
#>       "nuclide": "Pu-241",
#>       "energy": 148.57,
#>       "time": 3600,
#>       "detector": "D2",
#>       "net": 36717,
#>       "background": 1419
#>     },
#>     {
#>       "nuclide": "Pu-241",
#>       "energy": 148.57,
#>       "time": 3600,
#>       "detector": "D3",
#>       "net": 14163,
#>       "background": 1366
#>     },
#>     {
#>       "nuclide": "Pu-241",
#>       "energy": 148.57,
#>       "time": 3600,
#>       "detector": "D4",
#>       "net": 8087,
#>       "background": 1401
#>     },
#>     {
#>       "nuclide": "Pu-241",
#>       "energy": 148.57,
#>       "time": 3600,
#>       "detector": "D5",
#>       "net": 4745,
#>       "background": 1393
#>     },
#>     {
#>       "nuclide": "Pu-241",
#>       "energy": 164.58,
#>       "time": 3600,
#>       "detector": "D1",
#>       "net": 8836,
#>       "background": 1303
#>     },
#>     {
#>       "nuclide": "Pu-241",
#>       "energy": 164.58,
#>       "time": 3600,
#>       "detector": "D2",
#>       "net": 8923,
#>       "background": 1294
#>     },
#>     {
#>       "nuclide": "Pu-241",
#>       "energy": 164.58,
#>       "time": 3600,
#>       "detector": "D3",
#>       "net": 3525,
#>       "background": 1193
#>     },
#>     {
#>       "nuclide": "Pu-241",
#>       "energy": 164.58,
#>       "time": 3600,
#>       "detector": "D4",
#>       "net": 1981,
#>       "background": 1300
#>     },
#>     {
#>       "nuclide": "Pu-241",
#>       "energy": 164.58,
#>       "time": 3600,
#>       "detector": "D5",
#>       "net": 1204,
#>       "background": 1286
#>     },
#>     {
#>       "nuclide": "Pu-241",
#>       "energy": 208,
#>       "time": 3600,
#>       "detector": "D1",
#>       "net": 101297,
#>       "background": 1093
#>     },
#>     {
#>       "nuclide": "Pu-241",
#>       "energy": 208,
#>       "time": 3600,
#>       "detector": "D2",
#>       "net": 103654,
#>       "background": 1057
#>     },
#>     {
#>       "nuclide": "Pu-241",
#>       "energy": 208,
#>       "time": 3600,
#>       "detector": "D3",
#>       "net": 40092,
#>       "background": 992
#>     },
#>     {
#>       "nuclide": "Pu-241",
#>       "energy": 208,
#>       "time": 3600,
#>       "detector": "D4",
#>       "net": 22585,
#>       "background": 1027
#>     },
#>     {
#>       "nuclide": "Pu-241",
#>       "energy": 208,
#>       "time": 3600,
#>       "detector": "D5",
#>       "net": 13303,
#>       "background": 1070
#>     }
#>   ],
#>   "pncc": [0.199477123784321],
#>   "ancc": [429.392953138061],
#>   "case": ["vc1"],
#>   "legacy": [false]
#> }
VC3
jsonlite::toJSON(
  list(
    gamma = vc3_gamma,
    pncc = vc3_pncc,
    ancc = NULL,
    case = "vc3",
    legacy = FALSE
  ),
  digits = NA,
  pretty = TRUE
)
#> {
#>   "gamma": [
#>     {
#>       "nuclide": "Am-241",
#>       "energy": 662.41,
#>       "time": 3600,
#>       "detector": "D1",
#>       "net": 0,
#>       "background": 227
#>     },
#>     {
#>       "nuclide": "Am-241",
#>       "energy": 662.41,
#>       "time": 3600,
#>       "detector": "D2",
#>       "net": 0,
#>       "background": 219
#>     },
#>     {
#>       "nuclide": "Am-241",
#>       "energy": 662.41,
#>       "time": 3600,
#>       "detector": "D3",
#>       "net": 0,
#>       "background": 218
#>     },
#>     {
#>       "nuclide": "Am-241",
#>       "energy": 662.41,
#>       "time": 3600,
#>       "detector": "D4",
#>       "net": 1,
#>       "background": 217
#>     },
#>     {
#>       "nuclide": "Am-241",
#>       "energy": 662.41,
#>       "time": 3600,
#>       "detector": "D5",
#>       "net": 0,
#>       "background": 232
#>     },
#>     {
#>       "nuclide": "Am-241",
#>       "energy": 662.41,
#>       "time": 3600,
#>       "detector": "D6",
#>       "net": 0,
#>       "background": 244
#>     },
#>     {
#>       "nuclide": "Co-60",
#>       "energy": 1173.228,
#>       "time": 3600,
#>       "detector": "D1",
#>       "net": 91,
#>       "background": 129
#>     },
#>     {
#>       "nuclide": "Co-60",
#>       "energy": 1173.228,
#>       "time": 3600,
#>       "detector": "D2",
#>       "net": 25711,
#>       "background": 98
#>     },
#>     {
#>       "nuclide": "Co-60",
#>       "energy": 1173.228,
#>       "time": 3600,
#>       "detector": "D3",
#>       "net": 26,
#>       "background": 116
#>     },
#>     {
#>       "nuclide": "Co-60",
#>       "energy": 1173.228,
#>       "time": 3600,
#>       "detector": "D4",
#>       "net": 11,
#>       "background": 86
#>     },
#>     {
#>       "nuclide": "Co-60",
#>       "energy": 1173.228,
#>       "time": 3600,
#>       "detector": "D5",
#>       "net": 30960,
#>       "background": 101
#>     },
#>     {
#>       "nuclide": "Co-60",
#>       "energy": 1173.228,
#>       "time": 3600,
#>       "detector": "D6",
#>       "net": 92,
#>       "background": 119
#>     },
#>     {
#>       "nuclide": "Co-60",
#>       "energy": 1332.492,
#>       "time": 3600,
#>       "detector": "D1",
#>       "net": 205,
#>       "background": 63
#>     },
#>     {
#>       "nuclide": "Co-60",
#>       "energy": 1332.492,
#>       "time": 3600,
#>       "detector": "D2",
#>       "net": 26820,
#>       "background": 95
#>     },
#>     {
#>       "nuclide": "Co-60",
#>       "energy": 1332.492,
#>       "time": 3600,
#>       "detector": "D3",
#>       "net": 71,
#>       "background": 72
#>     },
#>     {
#>       "nuclide": "Co-60",
#>       "energy": 1332.492,
#>       "time": 3600,
#>       "detector": "D4",
#>       "net": 37,
#>       "background": 80
#>     },
#>     {
#>       "nuclide": "Co-60",
#>       "energy": 1332.492,
#>       "time": 3600,
#>       "detector": "D5",
#>       "net": 33104,
#>       "background": 82
#>     },
#>     {
#>       "nuclide": "Co-60",
#>       "energy": 1332.492,
#>       "time": 3600,
#>       "detector": "D6",
#>       "net": 249,
#>       "background": 79
#>     },
#>     {
#>       "nuclide": "Cs-134",
#>       "energy": 563.246,
#>       "time": 3600,
#>       "detector": "D1",
#>       "net": 4,
#>       "background": 292
#>     },
#>     {
#>       "nuclide": "Cs-134",
#>       "energy": 563.246,
#>       "time": 3600,
#>       "detector": "D2",
#>       "net": 7324,
#>       "background": 291
#>     },
#>     {
#>       "nuclide": "Cs-134",
#>       "energy": 563.246,
#>       "time": 3600,
#>       "detector": "D3",
#>       "net": 0,
#>       "background": 261
#>     },
#>     {
#>       "nuclide": "Cs-134",
#>       "energy": 563.246,
#>       "time": 3600,
#>       "detector": "D4",
#>       "net": 0,
#>       "background": 283
#>     },
#>     {
#>       "nuclide": "Cs-134",
#>       "energy": 563.246,
#>       "time": 3600,
#>       "detector": "D5",
#>       "net": 9033,
#>       "background": 292
#>     },
#>     {
#>       "nuclide": "Cs-134",
#>       "energy": 563.246,
#>       "time": 3600,
#>       "detector": "D6",
#>       "net": 12,
#>       "background": 294
#>     },
#>     {
#>       "nuclide": "Cs-134",
#>       "energy": 569.33,
#>       "time": 3600,
#>       "detector": "D1",
#>       "net": 0,
#>       "background": 310
#>     },
#>     {
#>       "nuclide": "Cs-134",
#>       "energy": 569.33,
#>       "time": 3600,
#>       "detector": "D2",
#>       "net": 13356,
#>       "background": 273
#>     },
#>     {
#>       "nuclide": "Cs-134",
#>       "energy": 569.33,
#>       "time": 3600,
#>       "detector": "D3",
#>       "net": 5,
#>       "background": 272
#>     },
#>     {
#>       "nuclide": "Cs-134",
#>       "energy": 569.33,
#>       "time": 3600,
#>       "detector": "D4",
#>       "net": 0,
#>       "background": 295
#>     },
#>     {
#>       "nuclide": "Cs-134",
#>       "energy": 569.33,
#>       "time": 3600,
#>       "detector": "D5",
#>       "net": 16438,
#>       "background": 258
#>     },
#>     {
#>       "nuclide": "Cs-134",
#>       "energy": 569.33,
#>       "time": 3600,
#>       "detector": "D6",
#>       "net": 0,
#>       "background": 295
#>     },
#>     {
#>       "nuclide": "Cs-134",
#>       "energy": 795.86,
#>       "time": 3600,
#>       "detector": "D1",
#>       "net": 0,
#>       "background": 210
#>     },
#>     {
#>       "nuclide": "Cs-134",
#>       "energy": 795.86,
#>       "time": 3600,
#>       "detector": "D2",
#>       "net": 79160,
#>       "background": 202
#>     },
#>     {
#>       "nuclide": "Cs-134",
#>       "energy": 795.86,
#>       "time": 3600,
#>       "detector": "D3",
#>       "net": 0,
#>       "background": 208
#>     },
#>     {
#>       "nuclide": "Cs-134",
#>       "energy": 795.86,
#>       "time": 3600,
#>       "detector": "D4",
#>       "net": 94,
#>       "background": 209
#>     },
#>     {
#>       "nuclide": "Cs-134",
#>       "energy": 795.86,
#>       "time": 3600,
#>       "detector": "D5",
#>       "net": 105659,
#>       "background": 181
#>     },
#>     {
#>       "nuclide": "Cs-134",
#>       "energy": 795.86,
#>       "time": 3600,
#>       "detector": "D6",
#>       "net": 0,
#>       "background": 213
#>     },
#>     {
#>       "nuclide": "Cs-134",
#>       "energy": 801.95,
#>       "time": 3600,
#>       "detector": "D1",
#>       "net": 6,
#>       "background": 1615
#>     },
#>     {
#>       "nuclide": "Cs-134",
#>       "energy": 801.95,
#>       "time": 3600,
#>       "detector": "D2",
#>       "net": 8519,
#>       "background": 1527
#>     },
#>     {
#>       "nuclide": "Cs-134",
#>       "energy": 801.95,
#>       "time": 3600,
#>       "detector": "D3",
#>       "net": 0,
#>       "background": 1627
#>     },
#>     {
#>       "nuclide": "Cs-134",
#>       "energy": 801.95,
#>       "time": 3600,
#>       "detector": "D4",
#>       "net": 0,
#>       "background": 1588
#>     },
#>     {
#>       "nuclide": "Cs-134",
#>       "energy": 801.95,
#>       "time": 3600,
#>       "detector": "D5",
#>       "net": 10696,
#>       "background": 1620
#>     },
#>     {
#>       "nuclide": "Cs-134",
#>       "energy": 801.95,
#>       "time": 3600,
#>       "detector": "D6",
#>       "net": 0,
#>       "background": 1630
#>     },
#>     {
#>       "nuclide": "Cs-134",
#>       "energy": 1364.194,
#>       "time": 3600,
#>       "detector": "D1",
#>       "net": 32,
#>       "background": 62
#>     },
#>     {
#>       "nuclide": "Cs-134",
#>       "energy": 1364.194,
#>       "time": 3600,
#>       "detector": "D2",
#>       "net": 4001,
#>       "background": 72
#>     },
#>     {
#>       "nuclide": "Cs-134",
#>       "energy": 1364.194,
#>       "time": 3600,
#>       "detector": "D3",
#>       "net": 9,
#>       "background": 68
#>     },
#>     {
#>       "nuclide": "Cs-134",
#>       "energy": 1364.194,
#>       "time": 3600,
#>       "detector": "D4",
#>       "net": 10,
#>       "background": 80
#>     },
#>     {
#>       "nuclide": "Cs-134",
#>       "energy": 1364.194,
#>       "time": 3600,
#>       "detector": "D5",
#>       "net": 4837,
#>       "background": 65
#>     },
#>     {
#>       "nuclide": "Cs-134",
#>       "energy": 1364.194,
#>       "time": 3600,
#>       "detector": "D6",
#>       "net": 38,
#>       "background": 76
#>     },
#>     {
#>       "nuclide": "Cs-137",
#>       "energy": 661.657,
#>       "time": 3600,
#>       "detector": "D1",
#>       "net": 0,
#>       "background": 203
#>     },
#>     {
#>       "nuclide": "Cs-137",
#>       "energy": 661.657,
#>       "time": 3600,
#>       "detector": "D2",
#>       "net": 572284,
#>       "background": 239
#>     },
#>     {
#>       "nuclide": "Cs-137",
#>       "energy": 661.657,
#>       "time": 3600,
#>       "detector": "D3",
#>       "net": 0,
#>       "background": 201
#>     },
#>     {
#>       "nuclide": "Cs-137",
#>       "energy": 661.657,
#>       "time": 3600,
#>       "detector": "D4",
#>       "net": 193,
#>       "background": 241
#>     },
#>     {
#>       "nuclide": "Cs-137",
#>       "energy": 661.657,
#>       "time": 3600,
#>       "detector": "D5",
#>       "net": 709888,
#>       "background": 213
#>     },
#>     {
#>       "nuclide": "Cs-137",
#>       "energy": 661.657,
#>       "time": 3600,
#>       "detector": "D6",
#>       "net": 619,
#>       "background": 236
#>     },
#>     {
#>       "nuclide": "Eu-154",
#>       "energy": 123.071,
#>       "time": 3600,
#>       "detector": "D1",
#>       "net": 27,
#>       "background": 1104
#>     },
#>     {
#>       "nuclide": "Eu-154",
#>       "energy": 123.071,
#>       "time": 3600,
#>       "detector": "D2",
#>       "net": 837,
#>       "background": 1132
#>     },
#>     {
#>       "nuclide": "Eu-154",
#>       "energy": 123.071,
#>       "time": 3600,
#>       "detector": "D3",
#>       "net": 7,
#>       "background": 1114
#>     },
#>     {
#>       "nuclide": "Eu-154",
#>       "energy": 123.071,
#>       "time": 3600,
#>       "detector": "D4",
#>       "net": 16,
#>       "background": 1090
#>     },
#>     {
#>       "nuclide": "Eu-154",
#>       "energy": 123.071,
#>       "time": 3600,
#>       "detector": "D5",
#>       "net": 989,
#>       "background": 1086
#>     },
#>     {
#>       "nuclide": "Eu-154",
#>       "energy": 123.071,
#>       "time": 3600,
#>       "detector": "D6",
#>       "net": 4,
#>       "background": 1129
#>     },
#>     {
#>       "nuclide": "Eu-154",
#>       "energy": 873.183,
#>       "time": 3600,
#>       "detector": "D1",
#>       "net": 0,
#>       "background": 171
#>     },
#>     {
#>       "nuclide": "Eu-154",
#>       "energy": 873.183,
#>       "time": 3600,
#>       "detector": "D2",
#>       "net": 1147,
#>       "background": 161
#>     },
#>     {
#>       "nuclide": "Eu-154",
#>       "energy": 873.183,
#>       "time": 3600,
#>       "detector": "D3",
#>       "net": 6,
#>       "background": 156
#>     },
#>     {
#>       "nuclide": "Eu-154",
#>       "energy": 873.183,
#>       "time": 3600,
#>       "detector": "D4",
#>       "net": 2,
#>       "background": 161
#>     },
#>     {
#>       "nuclide": "Eu-154",
#>       "energy": 873.183,
#>       "time": 3600,
#>       "detector": "D5",
#>       "net": 1445,
#>       "background": 160
#>     },
#>     {
#>       "nuclide": "Eu-154",
#>       "energy": 873.183,
#>       "time": 3600,
#>       "detector": "D6",
#>       "net": 2,
#>       "background": 143
#>     },
#>     {
#>       "nuclide": "Eu-154",
#>       "energy": 996.25,
#>       "time": 3600,
#>       "detector": "D1",
#>       "net": 2,
#>       "background": 113
#>     },
#>     {
#>       "nuclide": "Eu-154",
#>       "energy": 996.25,
#>       "time": 3600,
#>       "detector": "D2",
#>       "net": 1120,
#>       "background": 113
#>     },
#>     {
#>       "nuclide": "Eu-154",
#>       "energy": 996.25,
#>       "time": 3600,
#>       "detector": "D3",
#>       "net": 1,
#>       "background": 115
#>     },
#>     {
#>       "nuclide": "Eu-154",
#>       "energy": 996.25,
#>       "time": 3600,
#>       "detector": "D4",
#>       "net": 1,
#&g