/experiment-tabulator

Small script that takes a concise syntax explaining your experimental design into a full experimental metadata table.

Primary LanguageR

experiment-tabulator

Small script that takes a concise syntax explaining your experimental design and turns it into a "tidy" experimental metadata table.

For example, the prompt

(Control)(0) + (TreatmentA; TreatmentB)(1mg/kg, 3mg/kg; 10mg/kg, 100mg/kg)

becomes

Var2 Var3
Control 0
TreatmentA 1mg/kg
TreatmentA 3mg/kg
TreatmentB 10mg/kg
TreatmentB 100mg/kg

We can add experimental replicates simply by adding a number anywhere outside the brackets:

3(Control)(0) + 3(TreatmentA; TreatmentB)(1mg/kg, 3mg/kg; 10mg/kg, 100mg/kg)

becomes

Var2 Var3
Control 0
Control 0
Control 0
TreatmentA 1mg/kg
TreatmentA 1mg/kg
TreatmentA 1mg/kg
TreatmentA 3mg/kg
TreatmentA 3mg/kg
TreatmentA 3mg/kg
TreatmentB 10mg/kg
TreatmentB 10mg/kg
TreatmentB 10mg/kg
TreatmentB 100mg/kg
TreatmentB 100mg/kg
TreatmentB 100mg/kg

What if we have another variable?

3(Untreated) + 3(TreatmentA; TreatmentB)(1mg/kg, 3mg/kg; 10mg/kg, 100mg/kg)(oral, injection)

becomes

Var2 Var3 Var4
Untreated NA NA
Untreated NA NA
Untreated NA NA
TreatmentA 1mg/kg oral
TreatmentA 1mg/kg oral
TreatmentA 1mg/kg oral
TreatmentA 1mg/kg injection
TreatmentA 1mg/kg injection
TreatmentA 1mg/kg injection
TreatmentA 3mg/kg oral
TreatmentA 3mg/kg oral
TreatmentA 3mg/kg oral
TreatmentA 3mg/kg injection
TreatmentA 3mg/kg injection
TreatmentA 3mg/kg injection
TreatmentB 10mg/kg oral
TreatmentB 10mg/kg oral
TreatmentB 10mg/kg oral
TreatmentB 10mg/kg injection
TreatmentB 10mg/kg injection
TreatmentB 10mg/kg injection
TreatmentB 100mg/kg oral
TreatmentB 100mg/kg oral
TreatmentB 100mg/kg oral
TreatmentB 100mg/kg injection
TreatmentB 100mg/kg injection
TreatmentB 100mg/kg injection

At the moment, the first column starts from "Var2" as an artifact of using expand.grid under the hood.