Sequestrix
CO2 Transport Network Optimization for Carbon Sequestration Projects
Design optimal pipeline networks, embed existing infrastructure, and evaluate project economics.
Published in the SPE Journal (2026).
What is Sequestrix?
Large-scale carbon sequestration projects require connecting CO2 capture sources to geological storage sinks through pipeline networks. Determining the most cost-efficient pipeline routes is crucial during project scoping, as transportation costs are driven by pipeline length, diameter, terrain, and existing infrastructure.
Sequestrix builds on the foundations laid by SimCCS and extends them with a key capability: embedding existing pipelines directly into the candidate network and optimization. This allows operators to evaluate cost savings from repurposing existing CO2 transport lines, a critical consideration as the 2022 amendments to the 45Q tax credits (up to $85/tCO2 for permanent storage) make many previously uneconomical projects viable.
Sequestrix controls pipeline entry and egress using four configurable algorithms for tie-in points and exclusion zones, then solves a Mixed-Integer Linear Program (MILP) to find the minimum-cost sequestration network. Results are displayed on an interactive web interface powered by Streamlit with Plotly/Mapbox visualizations and analytics dashboards.
Built for Real-World Sequestration
From data import to optimized economics, Sequestrix handles the full pipeline design workflow.
Existing Pipeline Embedding
Encode existing pipelines as zero-cost (or custom-cost) arcs in the cost surface graph. Four tie-in algorithms control entry and egress: unrestricted, fixed points, permitted segments with exclusion zones, and single tie-in with directional exclusion.
Delaunay Triangulation
Generate candidate pipeline networks using Delaunay triangulation to pair sources and sinks, then compute least-cost paths on the weighted cost surface graph for each pair.
MILP Optimization
Minimize total sequestration cost (capture + storage + pipeline build + transport) using Gurobi as the primary solver, with automatic fallback to CPLEX via PuLP for larger models exceeding free license limits.
Multiperiod Planning
Extend optimization across multiple planning periods with time-varying capture capacities, storage injectivity limits, and per-period or cumulative CO2 targets via optional Excel input sheets.
Scenario Management
Save optimization runs as named scenarios with metadata and network maps. Load, compare, and delete scenarios through a dedicated analysis page with side-by-side visualizations.
Interactive Web Interface
Streamlit-powered multi-page application with Plotly and Mapbox visualizations. Upload data, configure solves, view results dashboards, and export solutions from the browser.
Results Dashboard
View key metrics, cost breakdowns by category (capture, storage, transport), economic classification (profitable/marginal/uneconomic), and time-series analytics for multiperiod solves.
How It Works
Six steps from raw data to optimized network and project economics.
Prepare Cost Surface
Generate or import a rasterized construction cost surface using CostMAP. This graph encodes the relative cost of constructing pipeline between any two grid cells, accounting for terrain, land cover, population, and barriers.
Import Source & Sink Data
Prepare CO2 source and sink data (geolocation, capture/storage capacity, unit costs) as an Excel file. Optionally include existing pipeline geolocation data from operator records or the NPMS Public Viewer.
Embed Existing Pipelines
If existing pipelines are provided, their paths are encoded as zero-cost edges on the cost surface. Tie-in points and exclusion zones are configured to control where new connections can enter or exit the pipeline.
Generate Candidate Network
Delaunay triangulation determines source-sink pairings. Least-cost paths are computed for each pair on the weighted graph. Redundant edges are removed and the network is refined to produce a tractable candidate network.
Solve MILP Optimization
The candidate network is formulated as a Mixed-Integer Linear Program minimizing total sequestration cost. Gurobi (or CPLEX) finds optimal source-sink pairings, pipeline routes, flow volumes, and build decisions. Supports single-period or multiperiod planning.
View Results & Compare Scenarios
The solution is displayed on interactive Plotly/Mapbox maps with cost breakdowns, economic indicators, and time-series charts. Save runs as named scenarios and compare them side-by-side.
Streamlit App Pages
A step-by-step visual walkthrough with screenshots is available in the Quick User Guide (PDF).
Input Data
Upload your source/sink Excel file and optional pipeline file. Configure pipeline direction, tie-in points, and exclusion zones. Preview all locations on an interactive Mapbox map with pipeline polylines and tie-in markers.
Solve
Set project duration, CO2 sequestration target, and capital recovery factor. Toggle multiperiod mode to enable per-period planning with configurable period count and cumulative or per-period target modes. Click solve to run the full pipeline: cost surface loading, network generation, and MILP optimization. Save the run as a named scenario.
Results Dashboard
View key metrics: sources and sinks used, total CO2 sequestered, and unit costs for capture, storage, transport, and total. Tabs break down capture, storage, and transport details. Economic classification highlights profitability. When multiperiod mode is active, a Time Series tab shows per-period capture and storage line charts with cumulative storage area charts. Export results as CSV.
Scenario Analysis
Browse saved scenarios with metadata (date, duration, target, solver used). View a single scenario in detail with metrics, cost breakdown tabs, and the saved network map. Select multiple scenarios for side-by-side comparison: summary tables, unit cost bar charts, capture/storage/transport comparisons, and network maps displayed together.
Tech Stack & Modules
Python backend with Streamlit frontend. No database required; all data flows through Excel/CSV files.
geotransformation.py
Loads the construction cost surface CSV and converts geographic coordinates to grid positions on the cost graph.
alternateNetworkGeo.py
Builds the candidate pipeline network using NetworkX directed graphs, shortest-path algorithms, and existing pipeline embedding.
networkDelanunay.py
Generates Delaunay triangulation pairings between source and sink nodes using SciPy spatial algorithms.
input_data.py
Reads Excel input files for sources, sinks, pipelines, and optional multiperiod time-series sheets. Returns structured data for the optimizer.
math_model.py
Single-period MILP formulation using Gurobi (gurobipy). Defines variables, constraints, objective function, and solution extraction. Falls back to CPLEX via PuLP for large models.
math_model_multiperiod.py
Multiperiod MILP extension. Time-indexes flows, capture, and injection while keeping build and activation decisions time-invariant. Supports per-period or cumulative targets.
scenario_manager.py
File-based scenario persistence: save/load/delete named runs with solution CSV, metadata JSON, and optional Plotly network map snapshots.
dummyCostSurface.py
Generates synthetic cost surfaces for testing when CostMAP data is unavailable.
Key Dependencies
| Package | Role |
|---|---|
gurobipy | Primary MILP solver (Gurobi Python API) |
pulp | Fallback solver interface for CPLEX on large models |
networkx | Graph construction, shortest paths, network analysis |
streamlit | Web application framework |
plotly | Interactive charts and Mapbox geospatial maps |
pandas | Data manipulation and I/O |
scipy | Delaunay triangulation and spatial algorithms |
geopy | Geodesic distance calculations |
numpy | Numerical computing |
openpyxl | Excel file reading |
Installation Guide
Get Sequestrix running locally in a few steps. Requires Python 3.9+ and pip.
Clone the Repository
git clone https://github.com/davidpcg01/SEQUESTRIX.git
cd SEQUESTRIX
Download Cost Surface Data
Download the construction cost surface subset CSV and place it in the repository root:
Download construction-costs-subset.csv from Mediafire
This file is too large for GitHub and is required for generating candidate pipeline networks. If you have access to CostMAP, you can generate your own cost surface instead.
Install Python Dependencies
pip install -r requirements.txt
If you plan to use CPLEX as a fallback solver, also install PuLP:
pip install pulp
Set Up a Solver
Sequestrix requires either Gurobi or IBM CPLEX. See the Solver Selection section below for details.
Quickest path: The Gurobi Python API (gurobipy) is installed with the requirements. The free license supports models with up to 2,000 variables and constraints. For academic use, apply for a free academic license which removes these limits.
Run Sequestrix
streamlit run Sequestrix/Home.py
The app will open in your default browser, or you can navigate to the Local URL printed in the terminal (typically http://localhost:8501).
Input Data Format
Sequestrix reads Excel (.xlsx) files with specific sheet names and column structures.
sources Required
CO2 emission source data. Each row is a capture facility.
| Column | Description | Units |
|---|---|---|
| ID | Unique numeric identifier | |
| Unique Name | Facility name | |
| Capture Capacity | Annual CO2 capture capacity | MTCO2/yr |
| Total Unit Cost | Unit capture cost | USD/tCO2 |
| Lat | Latitude | Decimal degrees |
| Long | Longitude | Decimal degrees |
sinks Required
CO2 storage site data. Each row is an injection/storage location.
| Column | Description | Units |
|---|---|---|
| ID | Unique numeric identifier | |
| Unique Name | Storage site name | |
| Storage Capacity | Total CO2 storage capacity | MTCO2 |
| Total Unit Cost | Unit storage cost (negative if using tax credits) | USD/tCO2 |
| Lat | Latitude | Decimal degrees |
| Long | Longitude | Decimal degrees |
pipeline Optional
Existing pipeline geolocation sequences. Lat-Long points along the pipeline path, capacity, and transport cost. Uploaded as a separate Excel file on the Input Data page.
Multiperiod Sheets Optional
Add these sheets to the same input Excel file to enable multiperiod optimization.
source_periods
Time-varying capture capacities. Columns: ID, Period (1-indexed integer), Capture Capacity (MTCO2/yr).
sink_periods
Time-varying injectivity limits. Columns: ID, Period, Injectivity (MTCO2/yr).
targets
Per-period CO2 capture targets. Columns: Period, Target (MTCO2/yr). Used when per-period target mode is selected on the Solve page.
Solver Selection
Sequestrix supports two MILP solvers. Gurobi is the primary solver; CPLEX is the automatic fallback for larger models.
| Aspect | Gurobi | IBM CPLEX |
|---|---|---|
| Python API | gurobipy (pip installable) | cplex + pulp |
| Free Tier | Up to 2,000 variables and constraints | Community edition with limits |
| Academic License | Free, unlimited (apply via Gurobi website) | Free via IBM Academic Initiative |
| Sequestrix Integration | Primary solver; native API | Fallback via PuLP from MPS file |
| Auto-Fallback | If model exceeds Gurobi free limits (>2,000 vars/constraints), Sequestrix automatically exports to MPS and solves with CPLEX via PuLP | |
Recommendation: Install Gurobi (included in requirements.txt). For small to medium problems, the free tier is sufficient.
If you are in academia, apply for the free academic license for unlimited model sizes. Install CPLEX separately only if needed as a fallback.
Demonstrated Applications
From the SPE Journal publication: two real-world case studies demonstrating pipeline embedding and sequestration economics.
Enid-Purdy Pipeline, Central Oklahoma
The Enid-Purdy pipeline (117 miles, 8-inch diameter, operated by Anadarko) was embedded into the cost surface to evaluate transport cost savings across five scenarios: a base case without the pipeline, and four configurations with varying tie-in and exclusion rules.
Eight CO2 sources (4.77 MTCO2/yr combined capture capacity) and eight sinks (15.5 MTCO2 storage) were evaluated with a target of 1.55 MTCO2/yr over 10 years.
Key finding: Unrestricted ingress/egress (Scenario a) yielded the largest savings. However, discrete tie-in points (Scenario b) can produce suboptimal routes that avoid the pipeline entirely, increasing costs. The result underscores the importance of configurable tie-in rules.
CarbonSAFE II, Osage County, Oklahoma
As part of the DOE CarbonSAFE Phase II initiative, Sequestrix was used to evaluate storing 50 MTCO2 over 30 years in the Arbuckle formation in Osage County. A new pipeline parallel to the existing Coffeyville-Burbank line was proposed, and Sequestrix identified the optimal additional CO2 source tie-in point.
Using the NETL CO2 transport cost model (CO2_T_M) for pipeline costing and the 2022 45Q tax credits ($85/tCO2 for permanent storage), the project economics were evaluated.
Key finding: The negative unit cost (-$28.63/tCO2) demonstrates that the project generates net revenue per ton of CO2 stored, driven by the 45Q tax credits offsetting capture, transport, and injection costs. Sequestrix identified the Ash-Grove cement plant in Kansas as the optimal additional source for tie-in.
Mathematical Model
The MILP minimizes total sequestration cost subject to flow, capacity, and target constraints. Full details in the SPE Journal paper.
Single-Period Objective
Key Constraints
Arc capacity bounds:
$$Q_{ac}^{\min} \leq f_{ac} \leq Q_{ac}^{\max} \quad \forall\, a \in A,\; c \in C$$Single direction per arc:
$$\sum_{c \in C} y_{ac} \leq 1 \quad \forall\, a \in A$$Flow balance at transshipment nodes:
$$\sum_{\substack{a \in A, c \in C \\ \text{src}(a)=n}} f_{ac} - \sum_{\substack{a \in A, c \in C \\ \text{dst}(a)=n}} f_{ac} = 0 \quad \forall\, n \in N$$Capture target:
$$\sum_{i \in S} a_i \geq \text{CO}_2^T$$Multiperiod Extension
Flows become time-indexed ($f_{ac,t}$, $a_{i,t}$, $b_{j,t}$) while build decisions ($y_{ac}$, $s_i$, $r_j$) remain time-invariant. The objective sums costs over all periods $t \in \mathcal{T}$.
Cumulative target (default):
$$\sum_{t \in \mathcal{T}} \sum_{i \in S} a_{i,t} \geq \text{CO}_2^T \cdot |\mathcal{T}|$$Per-period target (optional):
$$\sum_{i \in S} a_{i,t} \geq \text{CO}_{2,t}^T \quad \forall\, t \in \mathcal{T}$$Cumulative storage bound:
$$\sum_{t \in \mathcal{T}} b_{j,t} \leq Q_j^R \cdot r_j \quad \forall\, j \in R$$Notation
| Symbol | Description |
|---|---|
| $S$ | Set of CO2 capture source nodes |
| $R$ | Set of CO2 sink / storage nodes |
| $N$ | Set of transshipment nodes |
| $A$ | Set of all arcs (new-build and existing pipeline) |
| $C$ | Set of pipeline cost trends (piecewise-linear segments) |
| $\mathcal{T}$ | Set of planning periods (multiperiod only) |
| $f_{ac}$ | CO2 flow on arc $a$ with trend $c$ (tCO2/yr) |
| $y_{ac}$ | Binary: 1 if arc $a$ with trend $c$ is built |
| $a_i$ | CO2 captured at source $i$ (tCO2/yr) |
| $b_j$ | CO2 stored at sink $j$ (tCO2/yr) |
| $s_i, r_j$ | Binary activation for source $i$ / sink $j$ |
| $\alpha_{ac}$ | Transport cost for arc $a$, trend $c$ (USD/tCO2) |
| $\beta_{ac}$ | Build cost for arc $a$, trend $c$ (USD M/yr) |
| $\text{CO}_2^T$ | Target CO2 sequestration (MTCO2/yr) |
Citation
If you use Sequestrix in your research, please cite the following publication.
Nnamdi, D. and Moghanloo, R. G. 2026. Embedding Existing Pipelines in Design of CO2 Transportation Networks for Optimal Sequestration Economics. SPE Journal 31 (01): 643-660. SPE-214917-PA. https://doi.org/10.2118/214917-PA
BibTeX
@article{nnamdi2026sequestrix,
title = {Embedding Existing Pipelines in Design of {CO2}
Transportation Networks for Optimal Sequestration
Economics},
author = {Nnamdi, David and Moghanloo, R. G.},
journal = {SPE Journal},
volume = {31},
number = {01},
pages = {643--660},
year = {2026},
month = jan,
note = {SPE-214917-PA},
doi = {10.2118/214917-PA},
publisher = {Society of Petroleum Engineers}
}