Generate ARRIVE 2.0 compliant animal research protocols with structured experimental design, sample size calculations, and reporting checklists. Ensures transparency, reproducibility, and ethical compliance in in vivo studies.
AI-powered protocol design tool that creates publication-ready animal research protocols compliant with ARRIVE 2.0 guidelines (Animal Research: Reporting of In Vivo Experiments). Generates structured documentation for ethical review, transparent reporting, and reproducible science.
Key Capabilities:
✅ Use this skill when:
❌ Do NOT use when:
clinical-protocol-designerIntegration:
sample-size-power-calculator (statistical design)iacuc-protocol-drafter (ethics submission), manuscript-prep-assistant (publication)Generate complete protocols covering all Essential 10 items:
from scripts.arrive_builder import ARRIVEBuilder
builder = ARRIVEBuilder()
# Generate full protocol
protocol = builder.generate_protocol(
title="Efficacy of Compound X in Type 2 Diabetes Mouse Model",
species="Mus musculus",
strain="db/db",
groups=[
{"name": "Control", "n": 15, "treatment": "Vehicle"},
{"name": "Low Dose", "n": 15, "treatment": "10 mg/kg"},
{"name": "High Dose", "n": 15, "treatment": "50 mg/kg"}
],
primary_endpoint="Fasting blood glucose reduction",
duration_days=28
)
protocol.save("protocol.md")
Generates:
Statistical power analysis with ARRIVE-compliant justification:
from scripts.sample_size import SampleSizeCalculator
calc = SampleSizeCalculator()
# Calculate with effect size
result = calc.calculate(
test_type="two_sample_t_test",
effect_size=0.8, # Cohen's d
alpha=0.05,
power=0.80,
expected_dropout=0.10 # 10% attrition
)
# Output: n=26 per group (total 78, accounting for 10% dropout)
Features:
Check existing protocols against ARRIVE 2.0:
python scripts/validate.py --input my_protocol.md --format markdown
Output:
✅ Essential 10: 10/10 complete
⚠️ Recommended Set: 8/15 complete
Missing: Data sharing statement, Conflict of interest
Detailed Report:
- Item 1 (Study Design): Complete
- Item 2 (Sample Size): Complete
- Item 3 (Inclusion Criteria): Missing - add exclusion criteria
- ...
Validation Levels:
Create allocation schemes with documentation:
from scripts.randomization import RandomizationGenerator
gen = RandomizationGenerator()
# Generate allocation
allocation = gen.generate(
n_animals=45,
n_groups=3,
method="block_randomization", # or "simple", "stratified"
block_size=6,
seed=42 # For reproducibility
)
# Output allocation table
allocation.save("allocation_table.csv")
allocation.generate_blinding_key("blinding_key.xlsx")
Methods Supported:
Template for therapeutic intervention studies:
{
"study_type": "efficacy",
"species": "Mus musculus",
"model": "Disease model (e.g., db/db diabetic mice)",
"intervention": "Test compound",
"groups": [
"Sham control",
"Disease control (vehicle)",
"Positive control (reference drug)",
"Test compound (low dose)",
"Test compound (high dose)"
],
"primary_endpoint": "Disease biomarker",
"secondary_endpoints": ["Safety markers", "Histopathology"],
"sampling_timepoints": ["Baseline", "Week 2", "Week 4"]
}
Key Considerations:
Template for safety assessment:
{
"study_type": "toxicology",
"species": "Rat",
"duration": "28-day repeat dose",
"dose_levels": ["Vehicle", "Low", "Mid", "High", "Limit"],
"endpoints": [
"Clinical observations (daily)",
"Body weight (twice weekly)",
"Food consumption",
"Clinical pathology (hematology, chemistry)",
"Necropsy and organ weights",
"Histopathology"
],
"recovery_groups": true # 14-day recovery period
}
Key Considerations:
Template for neuroscience/behavioral research:
{
"study_type": "behavioral",
"species": "C57BL/6 mice",
"tests": [
"Open field (anxiety/locomotion)",
"Elevated plus maze (anxiety)",
"Novel object recognition (memory)",
"Fear conditioning (learning)"
],
"controls": [
"Positive pharmacological control",
"Negative control (vehicle)"
],
"blinding": "Video analysis performed blinded",
"randomization": "Latin square design for test order"
}
Key Considerations:
Template for procedure-based research:
{
"study_type": "surgical",
"procedure": "Myocardial infarction (LAD ligation)",
"species": "Sprague-Dawley rats",
"sham_control": true,
"perioperative_care": {
"analgesia": "Buprenorphine SR",
"antibiotics": "Enrofloxacin",
"monitoring": "Temperature, respiration, pain scoring"
},
"outcome_measures": [
"Survival rate",
"Echocardiography",
"Histological infarct size"
],
"humane_endpoints": ["Severe distress", "Inability to ambulate"]
}
Key Considerations:
From study concept to IACUC submission:
# Step 1: Create study brief
cat > study_brief.json << EOF
{
"title": "Novel Compound X in Diabetic Nephropathy",
"species": "Mouse",
"strain": "db/db",
"groups": 4,
"primary_endpoint": "Albuminuria reduction",
"duration_weeks": 12
}
EOF
# Step 2: Generate protocol
python scripts/main.py \
--input study_brief.json \
--output protocol.md \
--include-checklist
# Step 3: Calculate sample size
python scripts/sample_size.py \
--test t_test \
--effect-size 0.8 \
--alpha 0.05 \
--power 0.80 \
--dropout 0.10
# Step 4: Generate randomization
python scripts/randomize.py \
--n-total 64 \
--n-groups 4 \
--method block \
--output allocation.csv
# Step 5: Validate ARRIVE compliance
python scripts/validate.py \
--input protocol.md \
--format pdf \
--output compliance_report.pdf
Output Files:
output/
├── protocol.md # Complete ARRIVE protocol
├── sample_size_justification.txt # Statistical rationale
├── allocation.csv # Randomization table
├── blinding_key.xlsx # Blinding documentation
├── compliance_report.pdf # ARRIVE checklist
└├── iacuc_supplemental.pdf # Ethics committee materials
Pre-Study:
During Study:
Reporting:
Design Issues:
❌ Inadequate controls → Cannot distinguish treatment from confounding effects
❌ Convenience sampling → Selection bias
❌ Unblinded assessment → Observer bias
Sample Size Issues:
❌ No power calculation → Underpowered study, false negatives
❌ Ignoring dropout → Final sample too small
Reporting Issues:
❌ Selective outcome reporting → Publication bias
❌ Missing animal numbers → Transparency concerns
Available in references/ directory:
arrive_2.0_guidelines.md - Official ARRIVE 2.0 checklist and explanationssample_size_guidelines.md - Statistical methods for animal studiesspecies_specific_requirements.md - Mouse, rat, zebrafish considerationsjournal_compliance.md - Requirements by publisher (Nature, Science, Cell)statistical_methods.md - Analysis approaches for common designsiacuc_templates.md - Ethics committee application templatesexample_protocols.md - Published compliant protocols as examplesLocated in scripts/ directory:
main.py - Protocol generation CLIarrive_builder.py - Core protocol buildersample_size.py - Power analysis calculatorrandomization.py - Allocation scheme generatorvalidate.py - ARRIVE compliance checkerchecklist_generator.py - Interactive checklist toolexport.py - Multi-format output (PDF, Word, Markdown)🐾 Remember: The 3Rs (Replacement, Reduction, Refinement) are ethical imperatives. This tool supports Reduction (optimal sample sizes) and Refinement (better experimental design), but consider Replacement alternatives (in vitro, in silico) whenever possible.
| Parameter | Type | Default | Description |
|---|---|---|---|
--interactive | flag | - | Interactive mode: Run wizard with guided prompts (uses input() for user interaction). Recommended for first-time users or complex study designs. |
--input | str | Required | Input JSON file path (batch/automation mode) |
--output | str | "protocol.md" | Output file path |
--validate | str | Required | Validate existing protocol file |
--checklist | str | Required | Generate ARRIVE 2.0 checklist |
--format | str | "markdown" | Output format: markdown, pdf, or docx |
Usage Modes:
--input with JSON configuration file--interactive for guided setup via promptsExample - Automation Mode:
# Create JSON config
cat > study_config.json << 'EOF'
{
"title": "Diabetes Drug Study",
"species": "Mus musculus",
"strain": "db/db",
"groups": 4,
"animals_per_group": 15
}
EOF
# Generate protocol
python scripts/main.py --input study_config.json --output protocol.md
Example - Interactive Mode:
# Launch interactive wizard
python scripts/main.py --interactive