Your first PK/PD study

End-to-end: schema → animals → samples → analysis.

This tutorial walks an end-to-end Dalea workflow using a realistic mouse pharmacokinetics study: schema design → in-vivo phase → bioanalysis → reporting. Plan for ~15 minutes working through it with a free workspace open.

Looking for a hands-on click-along instead?

The in-app Learn hub at dalea.app/learn walks you through the UI step by step, with overlays pointing at the actual buttons. Its branches cover building a data model, documenting work, inventory, reviews, planning and more, ordered by the role you picked at sign-up. The tutorial below is the longer reference companion: a narrative end-to-end study that goes deeper than a click-along can.

The study we'll model: DLA-7, a hypothetical small-molecule kinase inhibitor. Single oral dose at 3, 10 and 30 mg/kg in C57BL/6 females, plus a vehicle control. Plasma collected at 15 min, 1 h, 4 h and 24 h. Analyte is parent compound by LC-MS/MS; secondary readout is plasma IFN-γ by ELISA.

Why PK/PD?

A PK/PD study touches every part of Dalea: an authored protocol, a multi-table data schema, two recording modalities (LC-MS and ELISA), inventory checkout and return, and a final summary document. If this fits your lab in 15 minutes, anything will.

Phase 1: Schema design

Build the schema described in Designing an environment.

Animalsentity tableanimal_id (PK)sexenumstrainenumbaseline_weight_gnumberstudy_group→ groupsStudy groupsentity tablegroup_id (PK)namedose_mg_per_kgnumberrouteenumtest_article→ articlesTest articlesentity tablearticle_id (PK)namemodalityenumlotPlasma samplesentity tablesample_id (PK)animal→ animalstimepoint_hnumbercollected_atdatePK resultsresult table— dimensions —animal→ animalstimepoint_hnumber— measurements —concentration_ug_mlnumberauc_0_24number
Hover a table to highlight its references. Dotted lines show reference columns; the result table splits explicitly into dimensions (the axes you query by) and measurements (the numbers you record).
The four entity tables and one result table you'll create.
  1. Create the environment

    Sidebar → DataNew environment. The modal asks for a name, an icon and an optional description; call it In-vivo PK. The audit reason comes later, when you commit the schema you are about to draft.

  2. Add the four entity tables

    In order: Test articles, Study groups, Animals, Plasma samples. Use the column lists from Designing an environment.

  3. Add the PK results result table

    Dimensions: animal, timepoint_h. Measurements: concentration_ug_ml, auc_0_24, cmax, tmax.

Phase 2: Pre-study setup

  1. Register the test article

    Data → Test articles → Add Record. Name: DLA-7, modality small-molecule, lot DLA-7-2025-04. Dalea stamps the row from the table's Record Name Pattern: with TA-{###} that is TA-001.

  2. Define the four study groups

    Vehicle, 3 mg/kg, 10 mg/kg, 30 mg/kg. Route is PO. Each references the test article (vehicle references a placeholder "vehicle only" article).

  3. Register 24 animals

    Put the 24 rows of sex, strain, baseline weight and study group in a CSV, six animals per group, and drop the file anywhere in the app. In the Import into Dalea wizard choose Import into data model, pick the In-vivo PK environment, then let the AI draft the mapping or map the columns yourself. Point the study-group column at the study groups table and pick the column its values should match. Dry run first: the min/max rule on weight (15 to 35 g) fails the typos before anything is written. Commit, and Dalea mints ANM-001 to ANM-024.

  4. Inventory check-out

    Inventory → Containers → freezer L-204 → cryobox B-12. Click the antibody aliquot for your IFN-γ ELISA to open its drawer, then Check out in the footer. Checkout records custody: who took it, when, and out of which container and position. It clears the placement but leaves the quantity alone; the item now sits in the Item Tray, the dropdown in the inventory header, from where you drag it back onto a slot when you are done. Drawing the volume down is a separate step: with the item checked out, Log Usage is enabled on its quantity, and it asks for the amount and a reason.

Phase 3: Author the protocol

Create a document in your workspace called DLA-7 Protocol. A protocol is an ordinary Dalea document: there is no protocol block type, so you structure it with headings and Section blocks, one section per stage. What makes it more than prose is the blocks that do real work:

  • an Inventory Operation block wherever the run touches material. Pick the exact items, preview the change, and commit it atomically; the operation types are place, checkout, return, move, consume, adjust and create container.
  • a Registration Table bound to Plasma samples, so collecting a tube is a row you register rather than a line you type.
  • a Timeline block for the dosing and collection schedule. Its work items are real calendar events, and inside the block you switch between Gantt, list and kanban views (To do, In progress, Blocked, Done).

Save the finished document as a template in the "protocol" category and the next study starts from it.

The protocol document serves three purposes:

  • a runbook the operator follows during the in-vivo phase
  • a search target ("when did we last anaesthetise with isoflurane at 4%?")
  • a regulatory artefact, version-pinned and signed at study close

Phase 4: Run the in-vivo phase

This is the part Dalea can't do for you. With the protocol open:

  • Work the Timeline block as the day goes: drag each collection to done.
  • Register a Plasma sample row for each tube as you collect it (or fill the registration table and sync at the end of each timepoint). The row carries the operator and the creation timestamp, which is the record that matters later.

By the end of day 1 you have 24 animals × 4 timepoints = 96 sample rows in the plasma samples table.

Phase 5: Bioanalysis

Run the IFN-γ ELISA following Recording results. Use the plate map below; standards in cols 1–2, blanks in col 3, QCs in col 4, samples in duplicate in cols 5–12 (4 timepoints × 2 mice per row pair):

1
2
3
4
5
6
7
8
9
10
11
12
A
S1
S1
·
B
S2
S2
·
C
S3
S3
·
D
S4
S4
·
E
S5
S5
·
F
S6
S6
·
G
S7
S7
·
H
S8
S8
·
Standard curve (8 pts × 2)BlankQC (low/mid/high)Sample (32 wells, 2 mice × 4 tp × 2)
Hover any well for details. Dalea's 96-well-plate block stores this layout and joins it to your sample table by mouse + timepoint.
Hover any well to see exactly which sample the plate map records in it.

Build that layout in a 96-Well Plate block, bound to the ELISA result table. Read the plate, then paste the OD₄₅₀ column into the block's grid view, one row per well, and click Record Results. Dalea writes one result record per filled well into a new batch.

Dalea stores the readings; it does not fit curves. Fit the standards in a Python block in the same document, or in the AI assistant's sandbox, and bring the back-calculated concentrations back as their own result import.

Repeat for the LC-MS run for parent compound. Each plate or instrument run becomes one result batch. There is nothing to close: a batch stays active until a successor supersedes it, which is what re-recording the same plate does.

Phase 6: Reporting

Now the payoff. Create a document called DLA-7 PK summary. A chart reads another block in the same document, never a saved query directly, so build it in two steps: add a Lookup Table block pointed at a saved query that returns

mean concentration grouped by timepoint_h and study_group

then add a Chart block and set its Data Source to that lookup table. Chart type Line, aggregation Mean, Error bars ticked with SEM.

You get a publication-grade time-course in seconds:

0h4h8h12h16h20h24h036912C (µg/mL)Time post-dose3 mg/kg10 mg/kg30 mg/kg
Time-course PK across the three dose groups. The chart re-reads the lookup table's saved query, so it stays current as you add more results.

Add a second chart block for IFN-γ kinetics. The per-animal AUC, Cmax and Tmax are not something Dalea computes: work them out in R, or in Python in the assistant's sandbox, then import the output as a new result batch into the PK results table, where the auc_0_24, cmax and tmax measurements are already waiting. A second lookup table over a saved query on that table lists them per animal. Finish with a Section or a blockquote summarising the study disposition (n animals, n samples, n unscheduled deaths).

Anyone in the workspace can open the document; the lookup tables re-run their saved queries and the charts follow them, so both stay current as results land.

What you've built

In ~15 minutes you've gone from an empty workspace to:

  • a versioned, queryable schema for in-vivo PK
  • 24 animals, 96 samples, ~96 LC-MS measurements, ~96 ELISA measurements
  • a protocol document whose inventory operations and registrations carry the operator and the timestamp
  • a live study-summary document publishing PK and PD readouts

Multiply that across studies and you can see why structured-from-day-one is worth the upfront discipline.

What's next