the Creative Commons Attribution 4.0 License.
the Creative Commons Attribution 4.0 License.

Chempath 1.0: an open-source pathway analysis program for photochemical models
Daniel Garduno Ruiz
Colin Goldblatt
Anne-Sofie Ahm
We describe the development of Chempath, an open-source pathway analysis program for photochemical models. This algorithm can help understand the results of complex photochemical models by identifying the most important reaction chains (pathways) for the production and destruction of a species of interest in a reaction system. The algorithm can also quantify the contributions of the pathways to the production and destruction of a species. Chempath is an open-source Python re-implementation of the algorithm developed by Lehmann (2004). However, Chempath does not include the balance of concentration changes and reaction rates that Lehmann's algorithm uses to eliminate imbalances due to numerical errors. Instead, Chempath quantifies the contributions of these imbalances to the production and destruction of a species.
We demonstrate how to apply Chempath to both a simple box model and a one-dimensional photochemical model, using a reaction system for Earth's present-day atmosphere. Chempath can identify well-known chemical mechanisms for O3 production and destruction in these models, suggesting that this algorithm can be applied to understand photochemical models of less-well-known atmospheres, like past and exoplanet atmospheres.
- Article
(2394 KB) - Full-text XML
- BibTeX
- EndNote
The construction of chemical pathways is essential to understand the results of photochemical models. These models typically represent hundreds of reactions producing and destroying chemical species within the atmosphere (see, for example, Hu et al., 2012; Tsai et al., 2017; Wogan et al., 2022). The interaction of these reactions makes it difficult to attribute the production or destruction of a species to a single reaction. Instead, to understand the mechanisms that affect the concentration of a species, it is necessary to construct pathways. A pathway is a sequence of reactions that interact with each other to produce, destroy, or recycle a species. For example, stratospheric ozone destruction is explained in terms of pathways that catalyze O3 destruction (Lary, 1997). One of these pathways involves the reaction of O3 with chlorine species (Molina and Rowland, 1974):
This ozone-destroying pathway has three reactions, and its net effect is to convert two O3 molecules into three O2 molecules.
Several methods can help understand the results of photochemical models. For example, sensitivity analyses can constrain uncertainties in reaction rate constants and provide information on how variable the results of a model are when the reaction rates are perturbed (Turányi and Tomlin, 2014). Wiring diagrams can help understand the flow of molecules in a reaction system (Fishtik et al., 2006; Androulakis, 2006). However, these methods can not give quantitative information about the chains of reactions responsible for the production or destruction of a species in a chemical model. To understand these chemical mechanisms, it is necessary to construct pathways.
Chemical pathways are usually constructed manually and empirically, tracking and connecting reactions important for the production or destruction of a species of interest. However, the manual construction of pathways can not give a quantitative estimate of how important a pathway is for the production or destruction of a species relative to other pathways. Also, the manual construction of pathways has reproducibility limitations. Alternatively, pathways can be automatically constructed using algorithms (Milner, 1964; Schuster and Schuster, 1993; Clarke, 1988; Lehmann, 2002, 2004).
One of the most commonly used algorithms to construct pathways is the “Pathway analysis program” created by Lehmann (2004). This algorithm can automatically construct all the significant pathways in a reaction system and calculate the contribution of each pathway to the production and destruction of a species of interest. The “Pathway analysis program” has been used in several studies to gain a better understanding of atmospheric chemistry models (Grenfell et al., 2006; Verronen et al., 2011; Stock et al., 2012a, b; Verronen and Lehmann, 2013; Stock et al., 2017; Gebauer et al., 2017).
In this paper, we describe the development of Chempath, an open-source Python re-implementation of Lehmann's (2004) algorithm for analysis of photochemical models. We aim to contribute this open-source pathway analysis program to enhance the applicability of this algorithm to photochemical models and to enhance the replicability of chemical pathway construction. Our implementation is based on the description of the algorithm in Lehmann (2004). However, there is one difference between Chempath and the Lehmann (2004) algorithm. Our implementation does not include the balance of concentration changes and reaction rates that Lehmann's algorithm uses to eliminate imbalances due to numerical errors. Instead, Chempath requires input information about these imbalances to quantify the contributions of numerical errors to the production and destruction of a species.
We demonstrate how to apply this algorithm to a simple box model and to the one-dimensional photochemical model photochem (Wogan et al., 2023, https://github.com/Nicholaswogan/photochem, last access: 1 May 2025). Photochem is an updated version of Photochempy (Wogan, 2023a), a model that has been used for exoplanet and early-Earth photochemical studies (Wogan et al., 2022; Thompson et al., 2022; Garduno Ruiz et al., 2023, 2024). This model originates from Atmos, a photochemical model extensively used to investigate photochemistry in exoplanet and past atmospheres (see for example Kasting et al., 1979; Kasting and Donahue, 1980; Segura et al., 2005; Zahnle et al., 2006; Claire et al., 2014; Arney et al., 2016).
The structure of the paper is as follows. In Sect. 2, we review the Lehmann (2004) algorithm via a simple example. In Sect. 3, we describe how we implemented Chempath. In Sect. 4, we demonstrate how to apply Chempath to a simple box model and to the one-dimensional photochemical model photochem.
Here we provide a summary of the pathway analysis program presented in Lehmann (2004), using a simple example to explain each step of the algorithm (see the original paper for further details). The pathway analysis program forms pathways by the iterative connection of reactions through branching-point species (Fig. 1). A branching-point species is one that is used to connect reactions that produce the species to reactions that destroy it. For example, the reaction can be connected to the reaction through the branching-point species ClO.

The example we use to demonstrate the algorithm consists of five reactions between six species involving hydrogen oxide radicals. The reactions are
and the species are
We arbitrarily select these rates and mixing ratios for this example. Assuming that this reaction system is run for 1 h, the production and destruction by the reactions result in mixing ratio changes of −0.5, 1.2, −0.4, 0.1, −1.5, and 1 ppb for each species, respectively. In the next sections, we will identify the combination of reactions that is the most important to explain the OH mixing ratio change.
2.1 Assumptions and definitions
The algorithm uses the variables listed in Table 1 to construct pathways. We use two square brackets to denote variables that represent matrices (for example [[sij]]), and one to denote vectors (for example [ci]). We denote the elements of a vector or matrix with sub-indexes. For example, ci is the ith element of the vector [ci], and sij is the element of [[sij]] located in the ith row and jth column. Similarly, [s3j] denotes the third row of the matrix [[sij]]. We also use the notation pos([[x]]) to refer to a function that makes the negative values of a vector or matrix zero. Similarly, neg([[x]]) is a function that makes the positive values of a vector or matrix zero.
In large reaction systems, it might not be possible to construct all the pathways of the system because the number of pathways could be computationally unmanageable. The algorithm includes the option to delete unimportant pathways to avoid the construction of an unmanageable number of pathways and to reduce the computation time. However, the algorithm includes variables to keep track of the rates of these deleted pathways.
Table 1Variables used in the pathway analysis algorithm and their initial values in the simple example used to explain the algorithm.

The algorithm assumes that the reactions are unidirectional and that the user splits the reversible reactions into their forward and backward components. It is also assumed that mass is conserved in the chemical model analyzed, and the reactions produce the exact number of molecules to explain the concentration changes:
This expression involves the product of [[sij]] and the column vector [rj]T. For example, in our simple example, we can verify that this condition is satisfied:
2.2 Algorithm initialization
The algorithm requires four inputs from a chemical kinetics model: the species concentrations and the model time at two consecutive model times t and t+dt, the mean reaction rates at the time step dt, and the reaction system with nr reactions between ns species. We use the model times at which the solver obtains a solution for the system of equations. The user can also input a minimum rate of pathways fmin. With these inputs, the algorithm determines all pathways with a rate >fmin. In the simple example, we will use a minimum rate of pathways fmin=0.05 ppb h−1.
The algorithm uses the input information to initialize the variables listed in Table 1. At first, each pathway is considered to have only one reaction, and the matrix [[xjk]] is initialized as an identity matrix with the same size as the number of reactions. This means that initially pathway P1 only contains reaction R1, pathway P2 only contains reaction R2, etc. The rates of the pathways are initialized with the rates of the reactions: [fj]=[rj]. The variables , , and that store rates associated with deleted pathways are initialized as arrays of zeros.
2.3 Choice of branching-point species
Once the algorithm has been initialized, the next step is to choose a branching-point species Sb to start constructing pathways. Species with shorter lifetimes are selected as branching-point species first because a short lifetime is associated with fast consumption by reactions. The algorithm forms new pathways through the iterative connection of previously formed pathways through branching-point species until there are no more branching-point species left (Fig. 1). A species can be a branching-point species only once. To find pathways that destroy or produce a specific species of interest, the species itself is not used as a branching point. Otherwise, the pathways producing and consuming this species would be connected. Sometimes it is useful to treat some species as inert or long-lived and to not considering them branching-point species. For example, in the atmosphere, N2 is long-lived and inert, so it could be not considered a branching point.
In the simple example where we are investigating the change in OH, we will treat H2O and O2 as a long-lived inert species, not considering them to be branching points. The species with the shortest lifetime is O (τ5=0.38 h), so this species is the first branching point.
2.4 Formation of new pathways and rate calculations
The algorithm forms new pathways connecting all previously formed pathways that produce a branching-point species Sb to all pathways that destroy Sb. The connections are made ensuring that the new pathways do not produce or destroy the branching-point species Sb. If a pathway Pk produces mbk molecules of the branching-point species Sb and a pathway Pl destroys mbl molecules of Sb, the connection of these pathways forms a new pathway Pn with multiplicities:
where k and l are the indexes of the pathways producing and destroying Sb, and b is the index of the species Sb. The rate fn of the new pathway Pn is calculated by multiplying the rates of the producing (fk) and destroying (fl) pathways and dividing by the maximum of the rate of production and destruction of the branching-point species caused by all pathways:
where k and l are the indexes of the pathways producing and destroying the branching-point species Sb, and b is the index of the branching-point species. This equation is derived by calculating the rate at which the molecules of Sb formed by Pk are destroyed by Pl (see Lehmann, 2004, for the derivation). One can think of Eq. (4) as distributing the rate of a pathway to new pathways using the probability that a molecule produced (or consumed) by one pathway is consumed (or produced) by another pathway. For example, if the change in concentration of the branching-point species is dcb>0, then the chemical production is greater than the chemical destruction (pb>db), and Eq. (4) takes the form . The ratio can be interpreted as the probability that a molecule of the branching-point species is produced by the pathway Pk. Since the pathway Pl is going to be connected to all pathways Pk producing Sb, and the sum of the probabilities π over all pathways producing the branching-point species Sb is equal to 1, the rate fl is going to be completely distributed to the new pathways.
The multiplicities [xjn] of the new pathway are divided by their greatest common divisor g to keep them as simple as possible. The rate of the new pathway is multiplied by g to avoid altering the number of molecules that the new pathway produces or destroys. The new pathway and its rate are appended to [[xjk]] and [fk], respectively.
In the simple example, there are two pathways destroying the branching-point species O (P3 and P5) and one pathway producing it (P4). The connection of these pathways will result in two new pathways. For example, the pathway P3 destroys one O molecule (), and the pathway P4 produces one O molecule (m54=1), so the connection of these pathways results in a new pathway with multiplicities:
The rate of this new pathway is
After forming all new pathways at the branching-point species O, the multiplicities [[xjk]] and the pathway rates [fk] will have the following form:
We can think of a column in [[xjk]] as a pathway. For example, the pathway that we formed before (P6) is located in the sixth column of the matrix [[xjk]] in Eq. (7) and contains one R3 reaction and one R4 reaction:
2.5 Calculation of the rate of connection of deleted and existing pathways
In this step, the algorithm calculates the rates of connection of deleted pathways to existing pathways. Pathways with a rate lower than fmin will be deleted in a subsequent step (see Sect. 2.7). In the first iteration of the algorithm, there are no deleted pathways, but in other iterations, some pathways can be deleted by this point. In that case, the deleted pathways would not be connected to existing pathways. However, the algorithm keeps track of the rates of production and destruction of the branching-point species Sb that would have been computed in these connections. The deleted pathways produce the branching-point species Sb at a rate , so according to Eq. (4), the rate of the connection of deleted pathways that produces Sb to an existing pathway Pe that destroys Sb is
where e represents the index of the pathway that destroys the branching-point species Sb. Similarly, deleted pathways consuming Sb at a rate would have been connected to an existing pathway Pe, producing Sb at a rate of
where e represents the index of the pathway that produces Sb. This rate is added to the variables , , and that store rates associated with deleted pathways:
where e= index of pathway producing or destroying the branching-point species Sb. These operations are repeated for all existing pathways producing and destroying the branching-point species. In the simple example, there are no deleted pathways yet, so .
2.6 Calculation of rates explaining concentration changes
In this step, the algorithm redefines the rates of the pathways that contribute to the concentration change in the branching-point species Sb. If dcb>0, the pathways that produce molecules of the branching-point species Sb contribute to its concentration change dcb. Similarly, if dcb<0, the pathways that destroy molecules of the branching-point species Sb contribute to its concentration change dcb. The algorithm redefines the rate fk of pathways contributing to the concentration change in the branching-point species, keeping the fraction of fk that contributes to the concentration change dcb. This fraction is calculated by multiplying the rate fk by the absolute value of the rate of concentration change in the branching-point species δb and dividing by the maximum of the production and destruction of the branching-point species caused by all pathways:
where k=the index of the pathway producing or destroying Sb, and b is the index of the branching-point species Sb. This rate is derived by calculating the probability that a molecule of Sb produced or destroyed by a pathway contributes to the concentration change in the branching-point species dcb (see Lehmann, 2004, for the derivation). If dcb=0, there is no redefinition of rates.
In the simple example, the branching-point species O has a concentration change d. Since dc5<0, we will redefine the rates of the pathways that destroy O because they contribute to the concentration change dc5. For example, the pathway P3 has a single reaction destroying O at a rate of 1 ppb h−1. The part of this rate that contributes to the O concentration change is
After all the rates of the pathways destroying Sb are redefined, [fk] has the form
2.7 Deletion of old pathways and pathways with a rate <fmin
After a pathway producing the branching-point species Sb has been connected to all pathways destroying Sb, it is eliminated from the matrix [[xjk]] if it does not contribute to the concentration change dcb. If dcb>0, the pathways that destroy the branching-point species are deleted. If dcb<0, the pathways that produce the branching-point species are deleted, and if dcb=0, the pathways that both produce and destroy the branching-point species are deleted.
In the simple example, dc5<0, so pathways P3 and P5 that were used to form new pathways will not be deleted because they destroy molecules of the branching-point species O, contributing to its concentration change. However, the pathway P4 does not contribute to dc5, so it is deleted.
The algorithm also deletes pathways with a rate <fmin to avoid constructing an unmanageable number of pathways and to reduce the computing time. If a pathway has a rate fq<fmin, it is deleted from the matrix [[xjk]], and the variables , , and are updated according to
where . These operations are repeated for all pathways with rate <fmin. The rates of these pathways are also deleted from [fk].
In the simple example, none of the pathways have a rate <fmin, so there is no deletion of pathways in this first iteration. See Sect. 2.10 to see an example of how pathways with a rate <fmin are deleted. After this step, the multiplicities [[xjk]] and the pathway rates [fk] will have the following form:
Note that when pathways are deleted from the matrix [[xjk]], there is a redefinition of pathways. For example, since pathway P4 was deleted, now there is a new pathway P4 that corresponds to the fourth column of [[xjk]] in Eq. (15).
2.8 Formation of elementary pathways and splitting into sub-pathways
The steps above can produce pathways with a large and unnecessary number of reactions. The algorithm splits these complex pathways into shorter, simpler pathways. The first step in this process is to find the elementary sub-pathways of a complex pathway. A pathway Ps is a sub-pathway of a pathway Pc if all the reactions in Ps are in Pc. Elementary pathways do not have sub-pathways. The algorithm finds the elementary sub-pathways of a pathway Pc by forming new pathways with the reactions contained in Pc and keeping only the elementary pathways (see Lehmann, 2004, for a full description of this process). If a pathway Pc with multiplicities [xjc] has ne elementary sub-pathways with multiplicities , the algorithm splits [xjc] into the sub-pathways , finding weights [we] that fulfill the following equation:
Equation (16) involves the matrix multiplication of and the row vector [we]. In other words, the sum of the multiplicities of the sub-pathways multiplied by the weights must be equal to the multiplicities of the split pathway. The rate fc of the pathway Pc is distributed to the sub-pathways using the weights [we]:
After finding the sub-pathways, the algorithm deletes [xjc] from [[xjk]] and adds the multiplicities of the new sub-pathways to [[xjk]]. Similarly, the rate fc is deleted, and the rates [fe] are appended to [fk]. If a sub-pathway already exists in the matrix [[xjk]], its rate is added to the already-existing pathway.
As noted by Lehmann (2004), Eq. (16) can have multiple solutions, leading to slightly different results according to the solution that one chooses. However, these differences tend to be small, and the overall result of the algorithm is similar even when Eq. (16) has multiple solutions (Lehmann, 2004). Our implementation includes two options to solve Eq. (16). The first option uses Scipy's “lsq_linear” function, minimizing the expression
where is the norm of x, , x=[we], and b=[xjc]. When there are multiple solutions to Eq. (16), we choose the first solution found by the “lsq_linear” algorithm that minimizes Eq. (18). The second option to solve Eq. (16) implements the method proposed in Sect. 5.5.2 of Lehmann (2004). This method chooses the solution that produces more probable pathways, in the sense that this solution produces simpler pathways with higher rates compared to other solutions. Both methods of solving Eq. (16) produce similar results.
In the first iteration of the algorithm in the simple example, there are no pathways to split. See Sect. 2.10 for an example of how to split pathways into sub-pathways.
2.9 Re-computation of variables
The variables [[mik]], [pi], and [di] are recomputed using the definitions presented in Table 1 to match the information from the new pathways formed in the above steps. This re-computation is done after deleting pathways and after splitting pathways into sub-pathways.
In the simple example, this re-computation results in the following values for [[mik]], [pi], and [di]:
2.10 Second iteration in the simple example
After the first iteration at the branching-point species O in the simple example, we ended up with six pathways (Eq. 15). The species with the shortest lifetime with respect to these new pathways and the next branching-point species is HO2 (S3). Looking at the third row of [[mik]] in Eq. (19) ([m3k]), we can see that pathways P4 and P6 destroy HO2 and pathways P1 and P3 produce HO2. The connection of these pathways will lead to the formation of four new pathways (Sect. 2.4). For example, by connecting pathways P6 and P3, we obtain a new pathway Pn with the following multiplicities and rate:
Similarly, the combination of pathways P1 and P6 will result in a pathway Pm with multiplicities and a rate fm=0.02 ppb h−1. This pathway produces and destroys the number of molecules .
At this point, there is no production or destruction of HO2 by deleted pathways, so the rates of connection of existing pathways to deleted pathways is (Sect. 2.5). Since the concentration change in the branching-point species HO2 is d, the rates of the pathways destroying HO2 are redefined to keep the fraction that contributes to dc3 (Sect. 2.6), and the pathways that produce HO2 are deleted because they do not contribute to dc3 (Sect. 2.7).
The rate of the pathway Pm is lower than fmin, so this pathway will be deleted, and the variables that store the rates of the deleted pathways are updated using Eq. (14) (Sect. 2.7):
The next step is to split the pathways into sub-pathways (Sect. 2.8). The pathway Pn formed above (Eq. 22) contains two R3 reactions, one R4 reaction, and one R5 reaction:
This pathway can be split into two simpler pathways:
In this case, the solution to Eq. (16) is , and we can verify that Eq. (16) is satisfied:
The sub-pathways have the same rate as the initial pathway because the weights we are equal to 1. The sub-pathways Pe1 and Pe2 were formed before, when the connection of pathways that produce HO2 to pathways that destroy HO2 was made, so their rate is going to be added to the rate of the already-existing pathways, and the initial pathway will be deleted from [[xjk]].
At the end of this iteration, the variables [[xjk]], [fk], [[mik]], [pi], [di], , , and will have the following form:
2.11 Final iteration in the simple example
The final branching-point species in the simple example is H2O2 (S1). In this final iteration of the algorithm, there are six pathways in the matrix [[xjk]] (Eq. 25). Looking at the first row of [[mik]], we can see that the pathways P3, P5, and P6 consume H2O2 and the pathway P1 produces H2O2. The connection of these pathways will lead to the formation of three new pathways.
At this point, the deleted pathways destroy 0.04 H2O2 ppb h−1 (Eq. 32). This means that we will need to account for the connection of deleted pathways to existing pathways (Sect. 2.5). In this case, the pathway P1 with rate f1= 0.6 ppb h−1 produces one molecule of H2O2. This pathway would have been connected to the deleted pathways at a rate of (Eq. 9)
This rate is used to update the variables that store the deleted rates (Eq. 10):
After accounting for the connection of deleted and existing pathways, the rates of the pathways P3, P5, and P6 are redefined because they contribute to the H2O2 concentration change d (Sect. 2.6). The pathway P1 is deleted because it does not contribute to the H2O2 concentration change; one pathway with rate <fmin is deleted (Sect. 2.7), and no pathways are split into sub-pathways (Sect. 2.8). At the end of this iteration, the variables [[xjk]], [fk], [[mik]], [pi], [di], , and will have the following form:
2.12 Calculation of contributions
We calculate the contributions [Ck] of the pathways Pk to the production or destruction of a species Si as the number of molecules of Si produced or destroyed by Pk over the number of molecules of Si produced or destroyed by all pathways:
This expression involves the element-wise multiplication of two vectors. For example, for the species OH in our simple example,
We use a similar expression to calculate the contribution of deleted pathways to the production or destruction of a species Si:
In this simple example, the pathway P4 involving the interaction between reactions R3 and R5 is the most important chain of reactions for the production of OH, contributing 41.7 % of the OH production (Table 2). The interaction between reactions R3 and R4 (pathway P2) is also important, contributing 27.8 % of the OH production. Deleted pathways do not contribute to the OH production, but they contribute 100 % of the OH destruction (). This means that if we were interested in understanding the chemical reaction chains that destroy OH in this example, we would need to repeat the analysis with a smaller fmin.
Table 2Contribution of pathways to the production of OH in the simple example used to explain the algorithm.

In this simple example, it is easy to see that pathways P4 and P2 are important for OH production without using the algorithm, but when there are hundreds of reactions interacting, the pathway analysis program is a valuable tool to understand the chemical mechanisms that produce the concentration changes in a species in an atmospheric chemistry model. Also, even in this simple example, we can see how this algorithm provides valuable quantitative information about the contribution of each pathway to the production of a species.
We implement the Lehmann (2004) algorithm in Python. We designed an object-oriented code script, defining a class to store the variables listed in Table 1 and separating the steps described in Sect. 2 into different class methods. We run these methods in a main method that performs the loop shown in Fig. 1. We represent the multiplicities [[xjk]] of the pathways as a sparse matrix to optimize memory usage. Our implementation includes the option to find pathways using multiprocessing to speed up the computation time.
The code includes several functions that are useful for analyzing the pathways. After the main algorithm loop ends, the variables in Table 1 have all the information of the pathways that have been found. The code includes functions to save these variables to binary files and to read them for future analysis. The code also has functions to transform the representation of a pathway from an array of multiplicities to a string, to get the net reaction of a pathway, to create a latex table with the pathways that contribute to the production or destruction of a species of interest, and to assign a unique identifier to each pathway. This identifier is a string containing the multiplicities and the indexes of the reactions in a pathway. The same pathway can be formed multiple times during the algorithm, so we use this identifier to avoid repeating pathways. We also include a function to calculate the contribution of all pathways to the production or destruction of a species.
Our implementation includes the option to specify species that will be ignored as branching-point species. If we are interested in finding pathways at a specific timescale, it is convenient to not consider species with lifetimes longer than the timescale of interest as branching points. Our implementation also includes the option to ignore species as branching-point species by specifying a maximum lifetime of branching-point species.
3.1 Tests
The code includes run-time tests to ensure that the code works well. If the construction of pathways is correct, the rates of the reactions must be completely distributed to the pathways:
This condition ensures that the number of molecules of a species produced or destroyed by the initial reactions is the same as the number of molecules produced or destroyed by the pathways. The code checks that Eq. (46) is fulfilled in each iteration of the algorithm and displays a warning if it is not satisfied.
The code also includes unit tests to ensure that the code works as expected in a simple scenario with four reactions representing Chapman's O3 destruction mechanism (Chapman, 1930). This scenario was used by Lehmann (2004) to explain how the algorithm works. We include tests to ensure that our implementation finds the same pathways and rates as those found by Lehmann (2004) in this very simple example.
3.2 Tracking imbalances due to numerical errors
Before the construction of pathways, it is essential to ensure that the concentration changes in all species are balanced by the reaction's production and destruction (Eq. 1). The balance might not be fulfilled due to numerical errors. To quantify this problem, we assume that the difference between concentration changes and the total production of all reactions is due to the solver's numerical error, and we include error pseudo-reactions in the chemical system that produce or destroy a species at the rate required to fulfill the balance. We include the error pseudo-reactions in the construction of pathways. After the pathway construction finishes, we delete the pathways containing error pseudo-reactions, updating , ], and ]. We also include variables similar to ], ], and to track the rates of the pathways containing error pseudo-reactions. This approach gives the user information on how important the numerical error is in explaining the concentration changes. Ideally, the pathways containing error pseudo-reactions will not contribute significantly to the concentration change that one is interested in understanding.
3.3 Using Chempath
Chempath is available at https://github.com/DanyIvan/chempath (last access: 11 July 2025). This code repository includes a tutorial on how to use Chempath, as well as some examples of how to apply Chempath to a box model and to a one-dimensional photochemical model (Sect. 4).
There are two important steps to use Chempath. First, the user needs to transform the output of a photochemical model into files readable by Chempath and balance the concentration changes if necessary (Sect. 3.2). The code repository includes some examples of how to create these input files. Second, the user needs to choose a minimum rate of pathways fmin. This can be done by trial and error or by setting it as a fraction of the rate of total production or destruction by the reactions of the species the user is interested in finding pathways for. However, this way of setting fmin might still require further trial and error to find an appropriate fraction of the total production or destruction by all reactions. Ideally, fmin will be small enough so that the deleted pathways do not contribute significantly to the production or destruction of a species of interest. However, if fmin is too small, the code might take a long time to run.
Here we provide two examples of how to apply Chempath to a photochemical box model (Sect. 4.1) and to a one-dimensional photochemical model (Sect. 4.2)
4.1 Pathways in a photochemical box model
To give an example of the application of Chempath in a simple scenario, we developed a photochemical box model that solves the equation
where ρi is the number density of a species i, Πi is its chemical production, and Li is its chemical destruction. We use a reaction system with 15 reactions between 8 species involving O3 and hydrogen oxide species. All the reactions and reaction rate parameters that we use can be found at https://github.com/DanyIvan/chempath/tree/main/examples/box_model_pathways (last access: 11 July 2025). To keep the model as simple as possible, we assume that photochemical reactions have constant rate constants. We obtain these rate constants by running a more complex photochemical model that solves radiative transfer (Wogan, 2023a). We use similar rates to the ones obtained by this model at 20km in altitude. The purpose of this simple model is to provide an example of the use of the pathway analysis algorithm, not to be an accurate representation of stratospheric O3 chemistry.
We run the box model for 80 d. All species in the model reach a steady state during this time, and there is an increase in the O3 number density (Fig. 2a). The O3 concentration change is the result of an imbalance between O3 production and loss (Fig. 2d). This imbalance causes an increase in O3 until a steady state is reached. We use Chempath to see what the most important pathways for the production and destruction of O3 in this model run are.

Figure 2Application of Chempath to a simple photochemical box model. Panel (a) presents the evolution of the model over time. Panel (b) shows the O3 concentration change over time (black line) and the total production minus the total loss from all reactions (blue dashed line) and from all pathways (orange dotted line). This panel shows that the reactions and pathways completely explain the O3 concentration change, and Eqs. (1) and (46) are satisfied for O3. Panels (c) and (d) show the rate and contribution of the five most important pathways for O3 destruction (colored continuous lines) and the only pathway for O3 production (black dotted line). These pathways can be seen in Table 3. Panel (e) shows the total O3 production and destruction by all pathways. Panel (f) shows the contribution to O3 production or loss from pathways containing error pseudo-reactions.
To balance the concentration changes, we include error pseudo-reactions in the reaction system that produce or destroy a species at the rate required to fulfill the balance. We calculate the rate of these error pseudo-reactions as the difference between the left- and right-hand sides of Eq. (47). After including the error pseudo-reactions, the concentration changes in all the species are explained exactly by the production and destruction caused by the reactions (Fig. 2b shows an example of this for the O3 concentration change). The pathways containing error pseudo-reactions contribute less than 0.001 % to the O3 concentration change across the model run (Fig. 2f).
We run Chempath to find pathways for all the model time intervals at which the solver obtained a solution for the system, setting fmin=0. The reaction rates are completely distributed to the pathways (Eq. 46 is fulfilled), so the concentration changes are explained exactly by the production and destruction caused by the pathways (Fig. 2b shows an example of this for the O3 concentration change). There is only one O3-producing pathway in this reaction system (pathway P1 in Table 3 and Fig. 2c). The algorithm identified 49 O3 destruction pathways (Fig. 2c and Table 3 present the five most important pathways). These pathways destroy O3 through hydrogen oxide (HOx) catalytic cycles.
Table 3Pathways for O3 production and destruction in the simple photochemical box model shown in Fig. 2d.

4.2 Pathways in a one-dimensional photochemical model
In this section, we show how to apply Chempath to the one-dimensional photochemical model photochem (Wogan et al., 2023, https://github.com/Nicholaswogan/photochem, last access: 11 July 2025). We run the photochem model with the “Modern Earth” reaction scheme that includes 1281 reactions between 113 species. We run the model to photochemical equilibrium using surface flux boundary conditions for O2, CH4, CO, and H2. We choose fluxes of , and 3×109 molec. cm−2 s−1 for each of these species, respectively. The choice of these fluxes is arbitrary and was motivated by our desire to obtain similar conditions to the present atmosphere. For all other species, we use the default boundary conditions of the “Modern Earth” reaction scheme. After the model reaches equilibrium, we decrease the O2 surface flux to 2.5×1011 molec. cm−2 s−1 and run the model for 1.2 million years. The idea behind the reduction in the O2 surface flux is to create a perturbation that causes concentration changes to explore with Chempath. The concentration of O2 in the model is controlled mainly by the surface flux and by oxidation of reduced species like CH4, CO, and H2 on a timescale of millions of years (the estimated lifetime of O2 in the modern atmosphere is ∼ 2 million years; Kasting, 2013). The photochem model uses a solver with an adaptive time step (the constrained variable order, variable-step ordinary differential equation solver (CVODE) backward differential formula (BDF) method created by Sundials Computing). In our simulation, the time step varies from 10−5 to 1012 s.
The model output shows that O2 and O3 concentrations tend to decrease at all altitudes as a consequence of the decrease in the O2 surface input flux (Fig. 3). We apply Chempath to the photochem model output to gain insight into the chemical reaction chains that produce and destroy O3 in this model run.

Figure 3Number density profiles of O2, O3, NO, NO2, OH, and HO2 calculated by the photochem model at time =0.15 million years (black line) and at time =1.16 million years (red line). In this model run, we decrease the O2 input surface flux. As a result, the O2 and O3 number densities tend to decrease at all altitudes. The concentrations of NO, NO2, OH, and HO2 decrease and increase at different altitudes.
4.3 Methods: how to find pathways in the photochem model
The application of Chempath to the photochem model output requires the inclusion of pseudo-reactions for processes that affect the concentration of species in a one-dimensional photochemical model. The photochem model calculates the concentration changes in long-lived species by solving the equation
where ρi is the number density of species i, z is altitude, Πi and Li are the chemical production and destruction of species i, Φi is the vertical transport flux of species i, Ωi is the destruction of species i from rainout, and Fi is a vertically distributed input flux (see Wogan et al., 2022, for more details).
We include pseudo-reactions for transport, rainout, and vertically distributed input fluxes in the reaction system at each altitude and model time in which we perform the pathway analysis:
We obtain the rate of these pseudo-reactions from the vertical transport fluxes, rainout rates, and vertically distributed fluxes calculated in the model.
To balance the concentration changes, we include error pseudo-reactions that produce or destroy a species at the rate required to achieve mass balance. We calculate the rate of these pseudo-reactions as the difference between the left- and right-hand sides of Eq. (48). The pathways containing error pseudo-reactions contribute less than 1 % of the O3 concentration change at all times and altitudes in our analysis.
We run Chempath with the augmented reaction system at 32 time points distributed across the model run, ranging from 1 s to 1.2 million years. We find pathways at all model altitudes, except at the lower and upper boundaries. We prescribe a variable minimum pathway rate fmin that we calculate as the minimum of the chemical production from reactions (including transport pseudo-reactions) of O2, O3, CO, H2, and CH4 divided by 1000. We use these species to calculate fmin because we are interested in understanding their concentration changes. We do not consider these species to be branching points. We also ignore N2, CO2, and H2O as branching-point species, treating them as long-lived inert species. Our fmin choice keeps the contribution of deleted pathways to O3 production and destruction below 5 % at all altitudes and times in our analysis. The number of reactions with rate >fmin varies with altitude and ranges from 94 to 160.
4.4 Results: ozone destruction and production pathways in the photochem model
Chempath allows us to identify the most important pathways for O3 production and destruction at a given altitude and time in our photochem model run (Fig. 4 and Table 4). These pathways are similar to those found in a previous study of chemical pathways affecting O3 in the atmosphere (Grenfell et al., 2006).
In the troposphere (below 11 km in our model run), O3 production in the photochem model is dominated by transport (pathway P2.1) and CH4 and CO oxidation (pathways P2.2 and P2.3) in the presence of nitrogen oxide radicals (NOx). These oxidation pathways are similar to the “smog mechanism” that produces tropospheric O3 through oxidation of hydrocarbons (Haagen-Smit, 1952; Volz-Thomas and Ridley, 1994). The tropospheric O3 destruction is dominated by destruction by HOx radicals (pathway D2.1), O3 photolysis and subsequent CH4 oxidation (pathways D2.2 and D2.3), and transport (pathway D2.4).
Table 4Pathways producing and destroying O3 at time=1.16 million years in the model run. The contribution profiles of these pathways are shown in Fig. 4. The contributions and rates in this table correspond to the height at which the pathways contribute the most to O3 production and destruction. Our algorithm does not yet have the functionality to automatically order the reactions in a pathway to easily follow the flow of molecules. We ordered the reactions in all the pathways in this table by hand.


Figure 4Contribution of pathways to O3 production and destruction as a function of altitude at model time =1.16 million years. The main pathways are plotted in color, and the less important pathways are plotted in gray. Pathways that include transport pseudo-reactions are plotted as dashed lines. These pathways show discontinuities because transport can either supply or remove O3 at different altitudes. The symbols in the legend group the pathways into six categories: oxidation (Oxi), Chapman-like (Chpn), photolysis (hν), hydrogen oxide (HOx) and nitrogen oxide (NOx) pathways, and destruction by the H atom (H). The pathways are listed in Table 4. The cyan line shows the contribution of deleted pathways, and the black dotted line shows the contribution of pathways containing error pseudo-reactions.

Figure 5Rate profiles of the P2.5 (right) and D2.6 pathways at three different points in time across our photochem model run.
In the stratosphere (11–50 km), O3 production mainly occurs via CO and CH4 oxidation in the presence of NOx radicals below 25 km (pathways P2.3 and P2.4) and via the Chapman production pathway P2.5 above 25 km. The main stratospheric O3 destruction mechanisms involve transport (pathway D2.4), photolysis (pathway D2.10), and destruction by HOx radicals (pathways D2.1, D2.5, D2.7, and D2.11) and NOx radicals (pathways D2.6 and D2.8). Catalytic cycles involving NOx and HOx radicals are important for stratospheric O3 destruction (Lary, 1997; Jacob, 1999). Chempath can identify these well-known catalytic cycles in the photochem model.
Above 50 km in altitude, the main O3 production mechanisms are Chapman-like production pathways (P2.5 to P2.7), and the main O3 destruction mechanisms involve O3 photolysis coupled to HOx radical cycles, destruction by HOx radicals, Chapman-like destruction pathways, and destruction by the H atom (D2.9 to D2.18).
The decrease in O3 concentration in our model run is likely the result of a decrease in O3 production and destruction caused by the decrease in the O2 input flux. For example, the rate of the main stratospheric O3-producing and O3-destroying pathways (P2.5 and D2.6) decreases over time (Fig. 5). This is likely the result of the decrease in the O2 concentration leading to a decrease in O3 production through pathway P2.5, causing a decrease in O3 concentration and a subsequent decrease in the O3 loss rate. However, the contribution profiles shown in Fig. 4 have a similar structure at all the time steps that we analyzed. Consequently, the pathways shown in Fig. 4 and listed in Table 4 are a good representation of the pathways that produce and destroy O3 across all the times that we analyzed in our model run.
The presence of the supply by transport of the methylperoxy radical (CH3O2) in the pathway in D2.2 is surprising because CH3O2 has a lifetime <1 min in the troposphere (Wolfe et al., 2014), and its concentration should be controlled by reactions and not by transport. This is the result of an incomplete representation of the chemistry of this species in the reaction system that we used. This reaction system is a legacy of models designed to study early-Earth and exoplanet anoxic atmospheres. Thus, the reaction system lacks some reactions for the oxidized modern-Earth atmosphere. This example illustrates how Chempath can be a great tool to understand and validate the results of photochemical models, allowing the modelers to detect potential problems with their reaction systems.
In this paper, we described the development of Chempath, an open-source pathway analysis program for photochemical models that can automatically construct the most relevant pathways of a reaction system and identify the most important pathways for the production and destruction of a species of interest. We showed how to use Chempath in a simple box model and in a one-dimensional photochemical model. Chempath identified well-known pathways for O3 destruction and production in Earth's atmosphere, suggesting that this algorithm can be used to understand chemical mechanisms in photochemical models of less-well-known atmospheres, like those of exoplanets or past atmospheres.
A frozen version of the code used in this paper is available at https://doi.org/10.5281/zenodo.13715328 (Garduno Ruiz et al., 2025b). This repository includes Jupyter notebooks that describe how to run and reproduce the examples presented in this paper. The photochem model code used in this paper can be found at https://doi.org/10.5281/zenodo.7802921 (Wogan, 2023b). This work did not involve the production of any datasets or the use of external datasets.
DGR: conceptualization, software, investigation, writing – original draft preparation. CG: supervision, funding acquisition, writing – review and editing. ASA: supervision, funding acquisition, writing – review and editing.
The contact author has declared that none of the authors has any competing interests.
Publisher’s note: Copernicus Publications remains neutral with regard to jurisdictional claims made in the text, published maps, institutional affiliations, or any other geographical representation in this paper. While Copernicus Publications makes every effort to include appropriate place names, the final responsibility lies with the authors.
We acknowledge and respect the peoples on whose traditional territory the university of Victoria stands and the Songhees, Esquimalt, and
peoples whose historical relationships with the land continue to this day. We thank Ralph Lehmann for answering questions about the pathway analysis program. We thank Aurélien Stolzenbach for pointing to an incorrect reaction in the simple example we used in a previous version of the paper. Primary financial support came from the Natural Science and Engineering Research Council of Canada (NSERC) discovery grants to Colin Goldblatt (RGPIN-2018-05929) and Anne-Sofie Ahm (RGPIN-2022-03912). High-performance computing facilities were provided via a NSERC Research Tools and Infrastructure grant (RTI-2020-00277).
This research has been supported by the Natural Sciences and Engineering Research Council of Canada (grant nos. RGPIN-2018-05929, RGPIN-2022-03912, and RTI-2020-00277).
This paper was edited by Rolf Sander and reviewed by Rolf Sander and one anonymous referee.
Androulakis, I. P.: New approaches for representing, analyzing and visualizing complex kinetic transformations, Comput. Chem. Eng., 31, 41–50, https://doi.org/10.1016/j.compchemeng.2006.05.027, 2006. a
Arney, G., Domagal-Goldman, S. D., Meadows, V. S., Wolf, E. T., Schwieterman, E., Charnay, B., Claire, M., Hébrard, E., and Trainer, M. G.: The Pale Orange Dot: The Spectrum and Habitability of Hazy Archean Earth, Astrobiology, 16, 873–899, https://doi.org/10.1089/ast.2015.1422, 2016. a
Chapman, S.: A Theory of Upper-atmospheric Ozone, Memoirs of the Royal Meteorological Society, Edward Stanford, https://books.google.ca/books?id=Dd0VGwAACAAJ (last access: 11 July 2025), 1930. a
Claire, M. W., Kasting, J. F., Domagal-Goldman, S. D., Stüeken, E. E., Buick, R., and Meadows, V. S.: Modeling the signature of sulfur mass-independent fractionation produced in the Archean atmosphere, Geochim. Cosmochim. Ac., 141, 365–380, https://doi.org/10.1016/j.gca.2014.06.032, 2014. a
Clarke, B. L.: Stoichiometric network analysis, Cell Biophys., 12, 237–253, https://doi.org/10.1007/bf02918360, 1988. a
Fishtik, I., Callaghan, C. A., and Datta, R.: Wiring Diagrams for Complex Reaction Networks, Ind. Eng. Chem. Res., 45, 6468–6476, https://doi.org/10.1021/ie050814u, 2006. a
Garduno Ruiz, D., Goldblatt, C., and Ahm, A.-S.: Climate shapes the oxygenation of Earth's atmosphere across the Great Oxidation Event, Earth Planet. Sc. Lett., 607, 118071, https://doi.org/10.1016/j.epsl.2023.118071, 2023. a
Garduno Ruiz, D., Goldblatt, C., and Ahm, A.: Climate Variability Leads to Multiple Oxygenation Episodes Across the Great Oxidation Event, Geophys. Res. Lett., 51, e2023GL106694, https://doi.org/10.1029/2023gl106694, 2024. a
Garduno Ruiz, D., Goldblatt, C., and Ahm, A.-S.: Code repository for “Chempath 1.0: An open-source pathway analysis program for photochemical models”, GitHub [code], https://github.com/DanyIvan/chempath (last access: 11 July 2025), 2025a.
Garduno Ruiz, D., Goldblatt, C., and Ahm, A.-S.: Frozen version of sofware for “Chempath 1.0: An open-source pathway analysis program for photochemical models”, Zenodo [code], https://doi.org/10.5281/zenodo.13715328, 2025b. a
Gebauer, S., Grenfell, J., Stock, J., Lehmann, R., Godolt, M., Paris, P. v., and Rauer, H.: Evolution of Earth-like Extrasolar Planetary Atmospheres: Assessing the Atmospheres and Biospheres of Early Earth Analog Planets with a Coupled Atmosphere Biogeochemical Model, Astrobiology, 17, 27–54, https://doi.org/10.1089/ast.2015.1384, 2017. a
Grenfell, J. L., Lehmann, R., Mieth, P., Langematz, U., and Steil, B.: Chemical reaction pathways affecting stratospheric and mesospheric ozone, J. Geophys. Res.-Atmos., 111, D17311, https://doi.org/10.1029/2004jd005713, 2006. a, b
Haagen-Smit, A. J.: Chemistry and Physiology of Los Angeles Smog, Ind. Eng. Chem., 44, 1342–1346, https://doi.org/10.1021/ie50510a045, 1952. a
Hu, R., Seager, S., and Bains, W.: Photochemistry In Terrestrial Exoplanet Atmospheres. I. Photochemistry Model And Benchmark Cases, Astrophys. J., 761, 166, https://doi.org/10.1088/0004-637x/761/2/166, 2012. a
Jacob, D. J.: Introduction to Atmospheric Chemistry, Princeton University Press, ISBN 9780691001852, http://www.jstor.org/stable/j.ctt7t8hg (last access: 11 July 2025), 1999. a
Kasting, J. F.: What caused the rise of atmospheric O2?, Chem. Geol., 362, 13–25, https://doi.org/10.1016/j.chemgeo.2013.05.039, 2013. a
Kasting, J. F. and Donahue, T. M.: The evolution of atmospheric ozone, J. Geophys. Res.-Oceans, 85, 3255–3263, https://doi.org/10.1029/jc085ic06p03255, 1980. a
Kasting, J. F., Liu, S. C., and Donahue, T. M.: Oxygen levels in the prebiological atmosphere, J. Geophys. Res.-Oceans, 84, 3097–3107, https://doi.org/10.1029/jc084ic06p03097, 1979. a
Lary, D. J.: Catalytic destruction of stratospheric ozone, J. Geophys. Res.-Atmos., 102, 21515–21526, https://doi.org/10.1029/97jd00912, 1997. a, b
Lehmann, R.: Determination of Dominant Pathways in Chemical Reaction Systems: An Algorithm and Its Application to Stratospheric Chemistry, J. Atmos. Chem., 41, 297–314, https://doi.org/10.1023/a:1014927730854, 2002. a
Lehmann, R.: An Algorithm for the Determination of All Significant Pathways in Chemical Reaction Systems, J. Atmos. Chem., 47, 45–78, https://doi.org/10.1023/b:joch.0000012284.28801.b1, 2004. a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p
Milner, P. C.: The Possible Mechanisms of Complex Reactions Involving Consecutive Steps, J. Electrochem. Soc., 111, 228–232, https://doi.org/10.1149/1.2426089, 1964. a
Molina, M. J. and Rowland, F. S.: Stratospheric sink for chlorofluoromethanes: chlorine atom-catalysed destruction of ozone, Nature, 249, 810–812, https://doi.org/10.1038/249810a0, 1974. a
Schuster, R. and Schuster, S.: Refined algorithm and computer program for calculating all non–negative fluxes admissible in steady states of biochemical reaction systems with or without some flux rates fixed, Bioinformatics, 9, 79–85, https://doi.org/10.1093/bioinformatics/9.1.79, 1993. a
Segura, A., Kasting, J. F., Meadows, V., Cohen, M., Scalo, J., Crisp, D., Butler, R. A., and Tinetti, G.: Biosignatures from Earth-Like Planets Around M Dwarfs, Astrobiology, 5, 706–725, https://doi.org/10.1089/ast.2005.5.706, 2005. a
Stock, J., Grenfell, J., Lehmann, R., Patzer, A., and Rauer, H.: Chemical pathway analysis of the lower Martian atmosphere: The CO2 stability problem, Planet. Space Sci., 68, 18–24, https://doi.org/10.1016/j.pss.2011.03.002, 2012a. a
Stock, J. W., Boxe, C. S., Lehmann, R., Grenfell, J. L., Patzer, A. B. C., Rauer, H., and Yung, Y. L.: Chemical pathway analysis of the Martian atmosphere: CO2-formation pathways, Icarus, 219, 13–24, https://doi.org/10.1016/j.icarus.2012.02.010, 2012b. a
Stock, J. W., Blaszczak-Boxe, C. S., Lehmann, R., Grenfell, J. L., Patzer, A. B. C., Rauer, H., and Yung, Y. L.: A detailed pathway analysis of the chemical reaction system generating the Martian vertical ozone profile, Icarus, 291, 192–202, https://doi.org/10.1016/j.icarus.2016.12.012, 2017. a
Thompson, M. A., Krissansen-Totton, J., Wogan, N., Telus, M., and Fortney, J. J.: The case and context for atmospheric methane as an exoplanet biosignature, P. Natl. Acad. Sci. USA, 119, e2117933119, https://doi.org/10.1073/pnas.2117933119, 2022. a
Tsai, S.-M., Lyons, J. R., Grosheintz, L., Rimmer, P. B., Kitzmann, D., and Heng, K.: VULCAN: An Open-source, Validated Chemical Kinetics Python Code for Exoplanetary Atmospheres, Astrophys. J. Suppl. S., 228, 1–26, https://doi.org/10.3847/1538-4365/228/2/20, 2017. a
Turányi, T. and Tomlin, A. S.: Sensitivity and Uncertainty Analyses, pp. 61–144, Springer Berlin Heidelberg, ISBN 978-3-662-44562-4, https://doi.org/10.1007/978-3-662-44562-4_5, 2014. a
Verronen, P. T. and Lehmann, R.: Analysis and parameterisation of ionic reactions affecting middle atmospheric HOx and NOy during solar proton events, Ann. Geophys., 31, 909–956, https://doi.org/10.5194/angeo-31-909-2013, 2013. a
Verronen, P. T., Santee, M. L., Manney, G. L., Lehmann, R., Salmi, S., and Seppälä, A.: Nitric acid enhancements in the mesosphere during the January 2005 and December 2006 solar proton events, J. Geophys. Res.-Atmos., 116, D17301, https://doi.org/10.1029/2011jd016075, 2011. a
Volz-Thomas, A. and Ridley, B. A.: Scientific Assesment of ozone depletion: 1994, Tropospheric Ozone, World Meteorological Organization, https://csl.noaa.gov/assessments/ozone/1994/ (last access: 11 July 2025), 1994. a
Wogan, N.: PhotochemPy: 1-D photochemical model of rocky planet atmospheres, Astrophysics Source Code Library, https://ascl.net/2312.011 (last access: 11 July 2025), 2023a. a, b
Wogan, N.: photochem: photochem v0.3.14, Zenodo [code], https://doi.org/10.5281/zenodo.7802921, 2023b. a
Wogan, N. F., Catling, D. C., Zahnle, K. J., and Claire, M. W.: Rapid timescale for an oxic transition during the Great Oxidation Event and the instability of low atmospheric O2, P. Natl. Acad. Sci. USA, 119, e2205618119, https://doi.org/10.1073/pnas.2205618119, 2022. a, b, c
Wogan, N. F., Catling, D. C., Zahnle, K. J., and Lupu, R.: Origin-of-life Molecules in the Atmosphere after Big Impacts on the Early Earth, The Planetary Science Journal, 4, 169, https://doi.org/10.3847/psj/aced83, 2023. a, b
Wolfe, G. M., Cantrell, C., Kim, S., Mauldin III, R. L., Karl, T., Harley, P., Turnipseed, A., Zheng, W., Flocke, F., Apel, E. C., Hornbrook, R. S., Hall, S. R., Ullmann, K., Henry, S. B., DiGangi, J. P., Boyle, E. S., Kaser, L., Schnitzhofer, R., Hansel, A., Graus, M., Nakashima, Y., Kajii, Y., Guenther, A., and Keutsch, F. N.: Missing peroxy radical sources within a summertime ponderosa pine forest, Atmos. Chem. Phys., 14, 4715–4732, https://doi.org/10.5194/acp-14-4715-2014, 2014. a
Zahnle, K., Claire, M., and Catling, D.: The loss of mass‐independent fractionation in sulfur due to a Palaeoproterozoic collapse of atmospheric methane, Geobiology, 4, 271–283, https://doi.org/10.1111/j.1472-4669.2006.00085.x, 2006. a