# PyCO2SYS v2 beta version

**URL:** <https://systemco2.net/t/pyco2sys-v2-beta-version/14>\
**Category:** Wish list, bugs and updates\
**Tags:** pyco2sys\
**Created:** [17 March 2026 06:18 UTC](https://systemco2.net/t/pyco2sys-v2-beta-version/14 "2026-03-17T06:18:32Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![mvdh](https://systemco2.net/user_avatar/systemco2.net/mvdh/32/17_2.png) [@mvdh](https://systemco2.net/u/mvdh)\
**Post date:** [17 March 2026 06:18 UTC](https://systemco2.net/t/pyco2sys-v2-beta-version/14/1 "2026-03-17T06:18:32Z")

</div>

# PyCO2SYS v2 beta version

_To get an update when a new version is released, ‘watch’ this topic!_

PyCO2SYS v2 is currently still being developed but a beta version is publicly available for you to try out. Please do so and post any feedback (good or bad) here! The beta release is updated when certain milestones are reached, I’ll post an update here when that happens.

You can find the documentation (including install instructions) for PyCO2SYS v2 at [mvdh.xyz/PyCO2SYS](https://mvdh.xyz/PyCO2SYS/)

At present the core carbonate system calculator is robust and ready to use in production. Other more advanced aspects are still being developed and may still change (see below).

The last update to the beta version was back in August 2025, and then other things intervened (PyCO2SYS is a hobby, not a funded project!). But I’ve been making a lot more progress again in the last few weeks, thanks to a boost from the recent Ocean Sciences Meeting in Glasgow, so another update should not be too far away.

* * *

## In progress

Adding additional parameterisations with @mmartinmayor  
 Uncertainty propagation with covariances  
 Simplify back-end for easier development  
 Finalise validity checker  
 Allow adding arbitrary extra (simple) alkalinity components  
 Integrate NICA-Donnan for organic alkalinity (probably won’t be in the initial v2 release)

---

<div class="post-metadata">

**Author:** ![mvdh](https://systemco2.net/user_avatar/systemco2.net/mvdh/32/17_2.png) [@mvdh](https://systemco2.net/u/mvdh)\
**Post date:** [12 May 2026 11:42 UTC](https://systemco2.net/t/pyco2sys-v2-beta-version/14/2 "2026-05-12T11:42:27Z")

</div>

For the first time since last August(!), I’ve just released an updated beta version, `v2.0.0-b6`.

- The [v2 docs](https://mvdh.xyz/PyCO2SYS/) have been updated for the new version.
- There are breaking changes for [uncertainty propagation](https://mvdh.xyz/PyCO2SYS/uncertainty/) and the [validity checker](https://mvdh.xyz/PyCO2SYS/validity/), but the core solver should be unchanged.
- Thanks to @mmartinmayor for adding her [_K_2 parameterisation](https://doi.org/10.1016/j.gca.2025.06.001) (any interest in adding to CO2SYS-MATLAB, @jdsharp?)

Please give it a try and report back here with any feedback! Even if you just tried it and didn’t run into any problems, that’s still very useful to know.

---

<div class="post-metadata">

**Author:** ![jdsharp](https://systemco2.net/user_avatar/systemco2.net/jdsharp/32/19_2.png) [@jdsharp](https://systemco2.net/u/jdsharp)\
**Post date:** [14 May 2026 22:40 UTC](https://systemco2.net/t/pyco2sys-v2-beta-version/14/3 "2026-05-14T22:40:28Z")

</div>

Awesome! I’ll put @mmartinmayor’s _K_2 on my to-do list.

---

<div class="post-metadata">

**Author:** ![mvdh](https://systemco2.net/user_avatar/systemco2.net/mvdh/32/17_2.png) [@mvdh](https://systemco2.net/u/mvdh)\
**Post date:** [2 June 2026 06:36 UTC](https://systemco2.net/t/pyco2sys-v2-beta-version/14/4 "2026-06-02T06:36:29Z")

</div>

Another update has just landed, [v2.0.0b7](https://github.com/mvdh7/PyCO2SYS/releases/tag/v2.0.0b7). As per usual, you can install or update to this with `pip` following the docs at [mvdh.xyz/PyCO2SYS](https://mvdh.xyz/PyCO2SYS/).

What’s changed?

- The `store_steps` kwarg and functionality has been re-enabled (this was dropped during revisions for the previous beta version). Some intermediate parameters rarely need to be stored, and with `store_steps` they can be automatically forgotten, saving memory.

---

<div class="post-metadata">

**Author:** ![mvdh](https://systemco2.net/user_avatar/systemco2.net/mvdh/32/17_2.png) [@mvdh](https://systemco2.net/u/mvdh)\
**Post date:** [20 July 2026 15:32 UTC](https://systemco2.net/t/pyco2sys-v2-beta-version/14/5 "2026-07-20T15:32:42Z")

</div>

Time for another update: [v2.0.0b8](https://github.com/mvdh7/PyCO2SYS/releases/tag/v2.0.0b8). Install or update to this with `pip` following the docs at [mvdh.xyz/PyCO2SYS](https://mvdh.xyz/PyCO2SYS/).

### What’s changed?

The main change is better ` __repr__ ` functions for `CO2System`s and `CO2System.opts`. For example, if you make and then print a `CO2System`:

```python
import PyCO2SYS as pyco2

co2s = pyco2.sys(ta=2300, dic=2100, t=12.5, s=34)
print(co2s)

```

then the output might look like this:

```plaintext
CO2System with known alkalinity and dic.
├─ User-defined parameters:
│ └─ alkalinity, dic, salinity, temperature.
└─ Parameterisations and options:
   ├───── opt_pH_scale[1]: total pH scale.
   ├─── opt_k_carbonic[10]: Lueker et al. (2000).
   ├─ opt_total_borate[1]: Uppström (1974).
   └─────────────── Others: see CO2System.opts.

```

and if you want to see all the optional settings:

```python
print(co2s.opts)

```

now gives

```plaintext
CO2System settings.
├─ EQUILIBRIUM CONSTANTS:
│ ├──── opt_pH_scale[1]: total pH scale.
│ ├── opt_k_carbonic[10]: Lueker et al. (2000).
│ ├────── opt_k_HSO4[1]: Dickson (1990a).
│ ├──────── opt_k_HF[1]: Dickson & Riley (1979).
│ ├────── opt_k_BOH3[1]: Dickson (1990b).
│ ├─ opt_k_phosphate[1]: Yao & Millero (1995).
│ ├─────── opt_k_NH3[1]: Clegg & Whitfield (1995).
│ ├──────── opt_k_Si[1]: Yao & Millero (1995).
│ ├─── opt_k_calcite[1]: Mucci (1983).
│ ├─ opt_k_aragonite[1]: Mucci (1983).
│ ├─────── opt_k_H2O[1]: Millero (1995).
│ └────── opt_k_HNO2[1]: Borer et al. (2024).
├─ PRESSURE CORRECTION FACTORS:
│ ├─ opt_factor_k_H2CO3[1]: Millero (1995).
│ ├── opt_factor_k_HCO3[1]: Millero (1995).
│ ├── opt_factor_k_BOH3[1]: Millero (1979).
│ └─── opt_factor_k_H2O[1]: Millero (1995).
├─ TOTAL SALT CONTENTS:
│ ├─ opt_total_borate[1]: Uppström (1974).
│ └─────────── opt_Ca[1]: Riley & Tongudai (1967).
└─ OTHER SETTINGS:
   ├─────── opt_HCO3_root[2]: find high-pH root with DIC-HCO3 known pair.
   ├──── opt_gas_constant[3]: 2018 CODATA.
   └─ opt_fugacity_factor[1]: pCO2 ≠ fCO2.
Only parameterisations with multiple options are included.

```

Other changes:

- A couple of minor bugs squashed (inaccuracies in the online docs).
- `opt_which_fCO2_insitu` is now `which_fCO2_insitu`.

---

<div class="post-metadata">

**Author:** ![Daniel\_Sandborn](https://systemco2.net/user_avatar/systemco2.net/daniel_sandborn/32/26_2.png) [@Daniel\_Sandborn](https://systemco2.net/u/Daniel_Sandborn)\
**Post date:** [20 July 2026 16:14 UTC](https://systemco2.net/t/pyco2sys-v2-beta-version/14/6 "2026-07-20T16:14:46Z")

</div>

This should simplify reporting PyCO2SYS parameters in the attributes of [TRACE](https://d-sandborn.github.io/TRACE/) outputs. Thanks!

---

<div class="post-metadata">

**Author:** ![mvdh](https://systemco2.net/user_avatar/systemco2.net/mvdh/32/17_2.png) [@mvdh](https://systemco2.net/u/mvdh)\
**Post date:** [28 September 2026 07:54 UTC](https://systemco2.net/t/pyco2sys-v2-beta-version/14/7 "2026-09-28T07:54:02Z")

</div>

A new version has just been released: [v2.0.0b9](https://github.com/mvdh7/PyCO2SYS/releases/tag/v2.0.0b9).

The main changes are improvements to the validity checker. Invalidity is no longer inherited from parameters that are technically invalid but that don’t actually affect a later result. The `CO2System.valid.range` attribute also allows you to investigate all the valid ranges defined for a particular system. See the docs at [mvdh.xyz/PyCO2SYS/validity](https://mvdh.xyz/PyCO2SYS/validity/) for more detail.
