Welcome to cagey’s documentation!#

First and foremost cagey is a command line tool for creating and managing a cage database. With cagey you will extract a a range of experimental and computational data in a variety of formats and place it into a single file. You can then use this file as input for your scripts which perform data analysis. You can install cagey with:

pip install cagey

Once installed you can use the command line tool to create a new database:

cagey new path/to/data path/to/cagey.db

This will create a new database at path/to/cagey.db and populate it with data from path/to/data. There are in fact a lot more things you can do with cagey, and the best way to learn about them is to use it interactively, starting with:

cagey --help
 Usage: cagey [OPTIONS] COMMAND [ARGS]...

 A cage database tool.
 Run cagey help intro for an introduction.

╭─ Options ───────────────────────────────────────────────────────────────────────────╮
│ --install-completion          Install completion for the current shell.             │
│ --show-completion             Show completion for the current shell, to copy it or  │
│                               customize the installation.                           │
│ --help                        Show this message and exit.                           │
╰─────────────────────────────────────────────────────────────────────────────────────╯
╭─ Commands ──────────────────────────────────────────────────────────────────────────╮
│ help         Get help on how to use cagey.                                          │
│ insert       Insert new data into the cagey database.                               │
│ ms           Mass spectrum analysis.                                                │
│ new          Create a new database.                                                 │
│ nmr          Extract NMR peaks.                                                     │
╰─────────────────────────────────────────────────────────────────────────────────────╯

Working with the database#

Once you’ve used cagey to create a database, you can use the cagey.queries module to extract data from it in your Python scripts. The following sections will show you how to do this.

Note that the examples in this section are pre-written SQL queries. If you know a bit of SQL, you can write your own queries to extract the data you need. If you’re looking to learn SQL, I recommend https://www.codecademy.com/learn/learn-sql, it takes about 5 hours to complete.

Viewing precursors#

import sqlite3
import cagey
df  = cagey.queries.precursors_df(sqlite3.connect("path/to/cagey.db"))
shape: (55, 2)
┌──────┬───────────────────────────────────┐
│ name ┆ smiles                            │
│ ---  ┆ ---                               │
│ str  ┆ str                               │
╞══════╪═══════════════════════════════════╡
│ Di1  ┆ O=Cc1cccc(C=O)c1                  │
│ Di10 ┆ O=Cc1ccccc1C=O                    │
│ Di11 ┆ Cn1nc(-c2ccc(C=O)cc2)cc1C=O       │
│ Di12 ┆ CC(C=O)=Cc1ccc(C=C(C)C=O)cc1      │
│ Di13 ┆ COc1cc(C=O)ccc1OCCOc1ccc(C=O)cc1… │
│ …    ┆ …                                 │
│ TriQ ┆ O=CC=Cc1ccc(-c2cc(-c3ccc(C=CC=O)… │
│ TriR ┆ O=Cc1ccc(OCc2cc(COc3ccc(C=O)cc3)… │
│ TriS ┆ O=Cc1ccc(C#Cc2cc(C=O)cc(C=O)c2)c… │
│ TriT ┆ O=Cc1c(O)c(C=O)c(O)c(C=O)c1O      │
│ TriU ┆ O=Cc1ccc(C=Cc2cc(C=Cc3ccc(C=O)cc… │
└──────┴───────────────────────────────────┘

Viewing reactions#

import sqlite3
import cagey
df = cagey.queries.reactions_df(sqlite3.connect("path/to/cagey.db"))
shape: (450, 5)
┌────────────┬───────┬────────────────────┬─────────┬──────────┐
│ experiment ┆ plate ┆ formulation_number ┆ di_name ┆ tri_name │
│ ---        ┆ ---   ┆ ---                ┆ ---     ┆ ---      │
│ str        ┆ i64   ┆ i64                ┆ str     ┆ str      │
╞════════════╪═══════╪════════════════════╪═════════╪══════════╡
│ AB-02-005  ┆ 1     ┆ 1                  ┆ Di1     ┆ TriA     │
│ AB-02-005  ┆ 1     ┆ 2                  ┆ Di2     ┆ TriA     │
│ AB-02-005  ┆ 1     ┆ 3                  ┆ Di3     ┆ TriA     │
│ AB-02-005  ┆ 1     ┆ 4                  ┆ Di4     ┆ TriA     │
│ AB-02-005  ┆ 1     ┆ 5                  ┆ Di5     ┆ TriA     │
│ …          ┆ …     ┆ …                  ┆ …       ┆ …        │
│ AB-02-009  ┆ 2     ┆ 34                 ┆ Di34    ┆ TriP     │
│ AB-02-009  ┆ 2     ┆ 35                 ┆ Di21    ┆ TriT     │
│ AB-02-009  ┆ 2     ┆ 41                 ┆ Di33    ┆ TriQ     │
│ AB-02-009  ┆ 2     ┆ 42                 ┆ Di34    ┆ TriQ     │
│ AB-02-009  ┆ 2     ┆ 43                 ┆ Di21    ┆ TriU     │
└────────────┴───────┴────────────────────┴─────────┴──────────┘

Viewing aldehyde peaks#

import sqlite3
import cagey
df = cagey.queries.aldehyde_peaks_df(sqlite3.connect("path/to/cagey.db"))
shape: (751, 7)
┌────────────┬───────┬────────────────────┬─────────┬──────────┬───────────┬───────────────┐
│ experiment ┆ plate ┆ formulation_number ┆ di_name ┆ tri_name ┆ ppm       ┆ amplitude     │
│ ---        ┆ ---   ┆ ---                ┆ ---     ┆ ---      ┆ ---       ┆ ---           │
│ str        ┆ i64   ┆ i64                ┆ str     ┆ str      ┆ f64       ┆ f64           │
╞════════════╪═══════╪════════════════════╪═════════╪══════════╪═══════════╪═══════════════╡
│ AB-02-005  ┆ 1     ┆ 1                  ┆ Di1     ┆ TriA     ┆ 10.124944 ┆ 5.4689e6      │
│ AB-02-005  ┆ 1     ┆ 1                  ┆ Di1     ┆ TriA     ┆ 10.157341 ┆ 10014.054688  │
│ AB-02-005  ┆ 1     ┆ 2                  ┆ Di2     ┆ TriA     ┆ 10.247195 ┆ 6.4216e6      │
│ AB-02-005  ┆ 1     ┆ 3                  ┆ Di3     ┆ TriA     ┆ 10.047315 ┆ 8.3831e6      │
│ AB-02-005  ┆ 1     ┆ 3                  ┆ Di3     ┆ TriA     ┆ 10.088269 ┆ 10120.1875    │
│ …          ┆ …     ┆ …                  ┆ …       ┆ …        ┆ …         ┆ …             │
│ AB-02-009  ┆ 2     ┆ 42                 ┆ Di34    ┆ TriQ     ┆ 9.74719   ┆ 1.2567e7      │
│ AB-02-009  ┆ 2     ┆ 42                 ┆ Di34    ┆ TriQ     ┆ 9.804036  ┆ 112459.875    │
│ AB-02-009  ┆ 2     ┆ 42                 ┆ Di34    ┆ TriQ     ┆ 9.809537  ┆ 23061.015625  │
│ AB-02-009  ┆ 2     ┆ 42                 ┆ Di34    ┆ TriQ     ┆ 10.104773 ┆ 656725.390625 │
│ AB-02-009  ┆ 2     ┆ 43                 ┆ Di21    ┆ TriU     ┆ 10.026532 ┆ 204503.21875  │
└────────────┴───────┴────────────────────┴─────────┴──────────┴───────────┴───────────────┘

Viewing imine peaks#

import sqlite3
import cagey
df = cagey.queries.imine_peaks_df(sqlite3.connect("path/to/cagey.db"))
shape: (8_897, 7)
┌────────────┬───────┬────────────────────┬─────────┬──────────┬──────────┬───────────────┐
│ experiment ┆ plate ┆ formulation_number ┆ di_name ┆ tri_name ┆ ppm      ┆ amplitude     │
│ ---        ┆ ---   ┆ ---                ┆ ---     ┆ ---      ┆ ---      ┆ ---           │
│ str        ┆ i64   ┆ i64                ┆ str     ┆ str      ┆ f64      ┆ f64           │
╞════════════╪═══════╪════════════════════╪═════════╪══════════╪══════════╪═══════════════╡
│ AB-02-005  ┆ 1     ┆ 1                  ┆ Di1     ┆ TriA     ┆ 7.19154  ┆ 182851.445312 │
│ AB-02-005  ┆ 1     ┆ 1                  ┆ Di1     ┆ TriA     ┆ 7.199486 ┆ 10129.6875    │
│ AB-02-005  ┆ 1     ┆ 1                  ┆ Di1     ┆ TriA     ┆ 7.200708 ┆ 20981.03125   │
│ AB-02-005  ┆ 1     ┆ 1                  ┆ Di1     ┆ TriA     ┆ 7.202542 ┆ 10030.398438  │
│ AB-02-005  ┆ 1     ┆ 1                  ┆ Di1     ┆ TriA     ┆ 7.351688 ┆ 78380.953125  │
│ …          ┆ …     ┆ …                  ┆ …       ┆ …        ┆ …        ┆ …             │
│ AB-02-009  ┆ 2     ┆ 43                 ┆ Di21    ┆ TriU     ┆ 7.705604 ┆ 185844.953125 │
│ AB-02-009  ┆ 2     ┆ 43                 ┆ Di21    ┆ TriU     ┆ 7.726386 ┆ 191285.3125   │
│ AB-02-009  ┆ 2     ┆ 43                 ┆ Di21    ┆ TriU     ┆ 7.910985 ┆ 1.6976e6      │
│ AB-02-009  ┆ 2     ┆ 43                 ┆ Di21    ┆ TriU     ┆ 7.984335 ┆ 46808.234375  │
│ AB-02-009  ┆ 2     ┆ 43                 ┆ Di21    ┆ TriU     ┆ 8.491675 ┆ 409445.09375  │
└────────────┴───────┴────────────────────┴─────────┴──────────┴──────────┴───────────────┘

Viewing mass spectrum peaks#

import sqlite3
import cagey
df = cagey.queries.mass_spectrum_peaks_df(sqlite3.connect("path/to/cagey.db"))
shape: (710, 13)
┌────────────┬───────┬────────────────────┬─────────┬──────────┬───────────┬──────────┬────────┬────────┬───────────────┬─────────────┬───────────────┬───────────┐
│ experiment ┆ plate ┆ formulation_number ┆ di_name ┆ tri_name ┆ tri_count ┆ di_count ┆ adduct ┆ charge ┆ calculated_mz ┆ spectrum_mz ┆ separation_mz ┆ intensity │
│ ---        ┆ ---   ┆ ---                ┆ ---     ┆ ---      ┆ ---       ┆ ---      ┆ ---    ┆ ---    ┆ ---           ┆ ---         ┆ ---           ┆ ---       │
│ str        ┆ i64   ┆ i64                ┆ str     ┆ str      ┆ i64       ┆ i64      ┆ str    ┆ i64    ┆ f64           ┆ f64         ┆ f64           ┆ f64       │
╞════════════╪═══════╪════════════════════╪═════════╪══════════╪═══════════╪══════════╪════════╪════════╪═══════════════╪═════════════╪═══════════════╪═══════════╡
│ AB-02-005  ┆ 1     ┆ 9                  ┆ Di1     ┆ TriB     ┆ 2         ┆ 3        ┆ H2     ┆ 2      ┆ 355.204848    ┆ 355.20633   ┆ 355.70863     ┆ 4.345e6   │
│ AB-02-005  ┆ 1     ┆ 9                  ┆ Di1     ┆ TriB     ┆ 2         ┆ 3        ┆ Na1    ┆ 1      ┆ 731.383815    ┆ 731.38679   ┆ 732.39014     ┆ 5.375e6   │
│ AB-02-005  ┆ 1     ┆ 9                  ┆ Di1     ┆ TriB     ┆ 2         ┆ 3        ┆ K1     ┆ 1      ┆ 747.357752    ┆ 747.36147   ┆ 748.36423     ┆ 702500.0  │
│ AB-02-005  ┆ 1     ┆ 10                 ┆ Di2     ┆ TriB     ┆ 2         ┆ 3        ┆ H3     ┆ 3      ┆ 309.196689    ┆ 309.1977    ┆ 309.5326      ┆ 4.321e6   │
│ AB-02-005  ┆ 1     ┆ 10                 ┆ Di2     ┆ TriB     ┆ 2         ┆ 3        ┆ H2     ┆ 2      ┆ 463.291121    ┆ 463.29423   ┆ 463.79488     ┆ 1.061e7   │
│ …          ┆ …     ┆ …                  ┆ …       ┆ …        ┆ …         ┆ …        ┆ …      ┆ …      ┆ …             ┆ …           ┆ …             ┆ …         │
│ AB-02-009  ┆ 1     ┆ 46                 ┆ Di30    ┆ TriQ     ┆ 2         ┆ 3        ┆ H2     ┆ 2      ┆ 571.291121    ┆ 571.29316   ┆ 571.79578     ┆ 2.944e6   │
│ AB-02-009  ┆ 1     ┆ 46                 ┆ Di30    ┆ TriQ     ┆ 2         ┆ 3        ┆ H1     ┆ 1      ┆ 1141.574416   ┆ 1141.57561  ┆ 1142.57955    ┆ 2.704e6   │
│ AB-02-009  ┆ 1     ┆ 46                 ┆ Di30    ┆ TriQ     ┆ 2         ┆ 3        ┆ Na1    ┆ 1      ┆ 1163.556361   ┆ 1163.55862  ┆ 1164.55963    ┆ 209200.0  │
│ AB-02-009  ┆ 1     ┆ 46                 ┆ Di30    ┆ TriQ     ┆ 4         ┆ 6        ┆ Na2    ┆ 2      ┆ 1163.556361   ┆ 1163.55862  ┆ 1164.0711     ┆ 209200.0  │
│ AB-02-009  ┆ 2     ┆ 18                 ┆ Di34    ┆ TriN     ┆ 2         ┆ 3        ┆ H1     ┆ 1      ┆ 1015.542721   ┆ 1015.54603  ┆ 1016.54919    ┆ 156600.0  │
└────────────┴───────┴────────────────────┴─────────┴──────────┴───────────┴──────────┴────────┴────────┴───────────────┴─────────────┴───────────────┴───────────┘

Viewing mass spectrum topology assignments#

import sqlite3
import cagey
df = cagey.queries.mass_spectrum_topology_assignments_df(sqlite3.connect("path/to/cagey.db"))
shape: (541, 14)
┌────────────┬───────┬────────────────────┬─────────┬──────────┬───────────┬──────────┬────────┬────────┬───────────────┬─────────────┬───────────────┬───────────┬──────────┐
│ experiment ┆ plate ┆ formulation_number ┆ di_name ┆ tri_name ┆ tri_count ┆ di_count ┆ adduct ┆ charge ┆ calculated_mz ┆ spectrum_mz ┆ separation_mz ┆ intensity ┆ topology │
│ ---        ┆ ---   ┆ ---                ┆ ---     ┆ ---      ┆ ---       ┆ ---      ┆ ---    ┆ ---    ┆ ---           ┆ ---         ┆ ---           ┆ ---       ┆ ---      │
│ str        ┆ i64   ┆ i64                ┆ str     ┆ str      ┆ i64       ┆ i64      ┆ str    ┆ i64    ┆ f64           ┆ f64         ┆ f64           ┆ f64       ┆ str      │
╞════════════╪═══════╪════════════════════╪═════════╪══════════╪═══════════╪══════════╪════════╪════════╪═══════════════╪═════════════╪═══════════════╪═══════════╪══════════╡
│ AB-02-005  ┆ 1     ┆ 9                  ┆ Di1     ┆ TriB     ┆ 2         ┆ 3        ┆ H2     ┆ 2      ┆ 355.204848    ┆ 355.20633   ┆ 355.70863     ┆ 4.345e6   ┆ 2+3      │
│ AB-02-005  ┆ 1     ┆ 9                  ┆ Di1     ┆ TriB     ┆ 2         ┆ 3        ┆ Na1    ┆ 1      ┆ 731.383815    ┆ 731.38679   ┆ 732.39014     ┆ 5.375e6   ┆ 2+3      │
│ AB-02-005  ┆ 1     ┆ 9                  ┆ Di1     ┆ TriB     ┆ 2         ┆ 3        ┆ K1     ┆ 1      ┆ 747.357752    ┆ 747.36147   ┆ 748.36423     ┆ 702500.0  ┆ 2+3      │
│ AB-02-005  ┆ 1     ┆ 10                 ┆ Di2     ┆ TriB     ┆ 2         ┆ 3        ┆ H2     ┆ 2      ┆ 463.291121    ┆ 463.29423   ┆ 463.79488     ┆ 1.061e7   ┆ 2+3      │
│ AB-02-005  ┆ 1     ┆ 10                 ┆ Di2     ┆ TriB     ┆ 2         ┆ 3        ┆ H1     ┆ 1      ┆ 925.574416    ┆ 925.5803    ┆ 926.58282     ┆ 1.653e7   ┆ 2+3      │
│ …          ┆ …     ┆ …                  ┆ …       ┆ …        ┆ …         ┆ …        ┆ …      ┆ …      ┆ …             ┆ …           ┆ …             ┆ …         ┆ …        │
│ AB-02-009  ┆ 1     ┆ 46                 ┆ Di30    ┆ TriQ     ┆ 2         ┆ 3        ┆ H2     ┆ 2      ┆ 571.291121    ┆ 571.29316   ┆ 571.79578     ┆ 2.944e6   ┆ 2+3      │
│ AB-02-009  ┆ 1     ┆ 46                 ┆ Di30    ┆ TriQ     ┆ 2         ┆ 3        ┆ H1     ┆ 1      ┆ 1141.574416   ┆ 1141.57561  ┆ 1142.57955    ┆ 2.704e6   ┆ 2+3      │
│ AB-02-009  ┆ 1     ┆ 46                 ┆ Di30    ┆ TriQ     ┆ 2         ┆ 3        ┆ Na1    ┆ 1      ┆ 1163.556361   ┆ 1163.55862  ┆ 1164.55963    ┆ 209200.0  ┆ 2+3      │
│ AB-02-009  ┆ 1     ┆ 46                 ┆ Di30    ┆ TriQ     ┆ 4         ┆ 6        ┆ Na2    ┆ 2      ┆ 1163.556361   ┆ 1163.55862  ┆ 1164.0711     ┆ 209200.0  ┆ 4+6      │
│ AB-02-009  ┆ 2     ┆ 18                 ┆ Di34    ┆ TriN     ┆ 2         ┆ 3        ┆ H1     ┆ 1      ┆ 1015.542721   ┆ 1015.54603  ┆ 1016.54919    ┆ 156600.0  ┆ 2+3      │
└────────────┴───────┴────────────────────┴─────────┴──────────┴───────────┴──────────┴────────┴────────┴───────────────┴─────────────┴───────────────┴───────────┴──────────┘

Viewing turbidity dissolved references#

import sqlite3
import cagey
df = cagey.queries.turbidity_dissolved_references_df(sqlite3.connect("path/to/cagey.db"))
shape: (402, 6)
┌────────────┬───────┬────────────────────┬─────────┬──────────┬─────────────────────┐
│ experiment ┆ plate ┆ formulation_number ┆ di_name ┆ tri_name ┆ dissolved_reference │
│ ---        ┆ ---   ┆ ---                ┆ ---     ┆ ---      ┆ ---                 │
│ str        ┆ i64   ┆ i64                ┆ str     ┆ str      ┆ f64                 │
╞════════════╪═══════╪════════════════════╪═════════╪══════════╪═════════════════════╡
│ AB-02-005  ┆ 1     ┆ 1                  ┆ Di1     ┆ TriA     ┆ 67.033458           │
│ AB-02-005  ┆ 1     ┆ 2                  ┆ Di2     ┆ TriA     ┆ 67.033458           │
│ AB-02-005  ┆ 1     ┆ 3                  ┆ Di3     ┆ TriA     ┆ 67.033458           │
│ AB-02-005  ┆ 1     ┆ 4                  ┆ Di4     ┆ TriA     ┆ 67.033458           │
│ AB-02-005  ┆ 1     ┆ 5                  ┆ Di5     ┆ TriA     ┆ 67.033458           │
│ …          ┆ …     ┆ …                  ┆ …       ┆ …        ┆ …                   │
│ AB-02-009  ┆ 2     ┆ 34                 ┆ Di34    ┆ TriP     ┆ 26.762018           │
│ AB-02-009  ┆ 2     ┆ 35                 ┆ Di21    ┆ TriT     ┆ 26.762018           │
│ AB-02-009  ┆ 2     ┆ 41                 ┆ Di33    ┆ TriQ     ┆ 26.762018           │
│ AB-02-009  ┆ 2     ┆ 42                 ┆ Di34    ┆ TriQ     ┆ 26.762018           │
│ AB-02-009  ┆ 2     ┆ 43                 ┆ Di21    ┆ TriU     ┆ 26.762018           │
└────────────┴───────┴────────────────────┴─────────┴──────────┴─────────────────────┘

Viewing turbidity measurments#

import sqlite3
import cagey
df = cagey.queries.turbidity_measurements_df(sqlite3.connect("path/to/cagey.db"))
shape: (6_824, 7)
┌────────────┬───────┬────────────────────┬─────────┬──────────┬────────────────────────────────┬───────────┐
│ experiment ┆ plate ┆ formulation_number ┆ di_name ┆ tri_name ┆ time                           ┆ turbidity │
│ ---        ┆ ---   ┆ ---                ┆ ---     ┆ ---      ┆ ---                            ┆ ---       │
│ str        ┆ i64   ┆ i64                ┆ str     ┆ str      ┆ datetime[μs, UTC]              ┆ f64       │
╞════════════╪═══════╪════════════════════╪═════════╪══════════╪════════════════════════════════╪═══════════╡
│ AB-02-005  ┆ 1     ┆ 1                  ┆ Di1     ┆ TriA     ┆ 2023-02-21 14:25:40.435542 UTC ┆ 89.183431 │
│ AB-02-005  ┆ 1     ┆ 1                  ┆ Di1     ┆ TriA     ┆ 2023-02-21 14:25:48.002712 UTC ┆ 89.393769 │
│ AB-02-005  ┆ 1     ┆ 1                  ┆ Di1     ┆ TriA     ┆ 2023-02-21 14:25:55.469585 UTC ┆ 89.331678 │
│ AB-02-005  ┆ 1     ┆ 1                  ┆ Di1     ┆ TriA     ┆ 2023-02-21 14:26:03.001628 UTC ┆ 89.180119 │
│ AB-02-005  ┆ 1     ┆ 1                  ┆ Di1     ┆ TriA     ┆ 2023-02-21 14:26:10.503830 UTC ┆ 89.290944 │
│ …          ┆ …     ┆ …                  ┆ …       ┆ …        ┆ …                              ┆ …         │
│ AB-02-009  ┆ 2     ┆ 43                 ┆ Di21    ┆ TriU     ┆ 2022-12-02 11:08:48.249675 UTC ┆ 56.7523   │
│ AB-02-009  ┆ 2     ┆ 43                 ┆ Di21    ┆ TriU     ┆ 2022-12-02 11:08:55.784507 UTC ┆ 57.586026 │
│ AB-02-009  ┆ 2     ┆ 43                 ┆ Di21    ┆ TriU     ┆ 2022-12-02 11:09:03.349212 UTC ┆ 57.455789 │
│ AB-02-009  ┆ 2     ┆ 43                 ┆ Di21    ┆ TriU     ┆ 2022-12-02 11:09:10.912763 UTC ┆ 57.70839  │
│ AB-02-009  ┆ 2     ┆ 43                 ┆ Di21    ┆ TriU     ┆ 2022-12-02 11:09:18.481001 UTC ┆ 58.490625 │
└────────────┴───────┴────────────────────┴─────────┴──────────┴────────────────────────────────┴───────────┘

Viewing turbidity states#

import sqlite3
import cagey
df = cagey.queries.turbidity_states_df(sqlite3.connect("path/to/cagey.db"))
shape: (402, 6)
┌────────────┬───────┬────────────────────┬─────────┬──────────┬────────┐
│ experiment ┆ plate ┆ formulation_number ┆ di_name ┆ tri_name ┆ state  │
│ ---        ┆ ---   ┆ ---                ┆ ---     ┆ ---      ┆ ---    │
│ str        ┆ i64   ┆ i64                ┆ str     ┆ str      ┆ str    │
╞════════════╪═══════╪════════════════════╪═════════╪══════════╪════════╡
│ AB-02-005  ┆ 1     ┆ 1                  ┆ Di1     ┆ TriA     ┆ turbid │
│ AB-02-005  ┆ 1     ┆ 2                  ┆ Di2     ┆ TriA     ┆ turbid │
│ AB-02-005  ┆ 1     ┆ 3                  ┆ Di3     ┆ TriA     ┆ turbid │
│ AB-02-005  ┆ 1     ┆ 4                  ┆ Di4     ┆ TriA     ┆ turbid │
│ AB-02-005  ┆ 1     ┆ 5                  ┆ Di5     ┆ TriA     ┆ turbid │
│ …          ┆ …     ┆ …                  ┆ …       ┆ …        ┆ …      │
│ AB-02-009  ┆ 2     ┆ 34                 ┆ Di34    ┆ TriP     ┆ turbid │
│ AB-02-009  ┆ 2     ┆ 35                 ┆ Di21    ┆ TriT     ┆ turbid │
│ AB-02-009  ┆ 2     ┆ 41                 ┆ Di33    ┆ TriQ     ┆ turbid │
│ AB-02-009  ┆ 2     ┆ 42                 ┆ Di34    ┆ TriQ     ┆ turbid │
│ AB-02-009  ┆ 2     ┆ 43                 ┆ Di21    ┆ TriU     ┆ turbid │
└────────────┴───────┴────────────────────┴─────────┴──────────┴────────┘

Adding new precursors and reactions#

import cagey
import sqlite3

connection = sqlite3.connect("path/to/cagey.db")
cagey.queries.insert_precursors(
    connection=connection,
    precursors=[
        cagey.Precursor("DiBromine", "BrCCBr"),
        cagey.Precursor("TriFluorine", "FCC(F)CCF"),
        cagey.Precursor("TriIodine", "ICC(I)CCI"),
    ]
)
cagey.queries.insert_reactions(
    connection=connection,
    reactions=[
        cagey.Reaction(
            experiment="AB-03-example1",
            plate=1,
            formulation_number=3,
            di_name="DiBromine",
            tri_name="TriFluorine",
        ),
        cagey.Reaction(
            experiment="AB-03-example1",
            plate=1,
            formulation_number=4,
            di_name="DiBromine",
            tri_name="TriIodine",
        ),
    ]
)

Indices and tables#