# GraphPad Prism Script Examples
## Overview
Seven examples demonstrating scripting use cases: repeated imports, Monte Carlo analysis, multi-file consolidation, template workflows, embedded data, multi-table operations, and batch graph formatting.
## Example 1: Repeatedly Import Data
**Use case**: Import multiple data files sequentially into separate tables.
**Key commands**:
- `GoTo D, N` - Navigate to data table N
- `Import filename.txt` - Import external file
- Manual repetition of commands for each file/table
**Workflow**:
1. Navigate to target table
2. Import file
3. Repeat for each additional file
**Limitation**: No loop construct in this basic example; requires explicit command repetition.
## Example 2: Monte Carlo Analysis
**Use case**: Perform iterative simulations with randomization.
**Key commands**:
- `ForEach N` - Loop N times
- `GoTo R, N` - Navigate to results table N
- `AnalyzeData` - Execute analysis
- `Next` - End loop iteration
**Workflow**:
1. Set up analysis on initial data
2. Loop through iterations:
- Generate random data variation
- Execute analysis
- Store results in indexed table
3. Aggregate results across iterations
**Pattern**:
```
ForEach 100
GoTo R, %N
AnalyzeData
Next
```
**Variable**: `%N` holds current iteration number (1-based).
## Example 3: Import Several Files onto One Table
**Use case**: Consolidate multiple data files into columns of single table.
**Key commands**:
- `GoTo D, 1` - Navigate to data table 1
- `Import filename.txt, column=N` - Import into specific column N
- Column parameter specifies destination
**Workflow**:
1. Navigate to target table
2. Import first file to column 1
3. Import subsequent files to columns 2, 3, etc.
**Syntax**: `Import Data1.txt, column=1`
**Note**: Files must have compatible row structure.
## Example 4: Open Template and Import Data
**Use case**: Automate data import into pre-configured analysis template.
**Key commands**:
- `Open template.pzfx` - Load template file
- `GoTo D, 1` - Navigate to data table
- `Import datafile.txt` - Import data
- `SaveAs output.pzfx` - Save populated file
**Workflow**:
1. Open template with pre-configured graphs/analyses
2. Navigate to data table
3. Import new data
4. Save as new file (preserves template)
**Advantage**: Template contains all formatting, analysis settings, and graph configurations.
## Example 5: Import Data and Info Constants from Script File
**Use case**: Embed data and metadata directly in script (no external files).
**Key commands**:
- `...` - Data block delimiter
- `InsertData N, M` - Insert data block N starting at column M
- `SetInfo constant_name, value` - Set info constant
**Data block syntax**:
```
value1\tvalue2\tvalue3
value4\tvalue5\tvalue6
```
**Info constant syntax**:
```
SetInfo Experiment, "Drug Study A"
SetInfo Date, "2024-01-15"
SetInfo Concentration, 10.5
```
**Workflow**:
1. Define data blocks in script using `` tags
2. Navigate to target table: `GoTo D, 1`
3. Insert data: `InsertData 1, 0` (block 1, starting column 0)
4. Navigate to info table: `GoTo I, 2`
5. Set info constants with name/value pairs
**Data format**: Tab-delimited values within DATA tags, numbered sequentially (1-based).
**Info types**: String (quoted), numeric (unquoted), date (quoted).
## Example 6: Import Data into Several Tables
**Use case**: Batch import multiple files into multiple tables using loop.
**Prerequisites**: Prism file with N data tables, each linked to graph, all graphs on one layout.
**Key commands**:
- `ForEach N` - Loop N times
- `GoTo %N` - Navigate to table using iteration variable
- `Import Data%N.txt` - Dynamic filename with variable substitution
- `Next` - End loop
- `GoTo L, 1` - Navigate to layout
- `Print` - Print layout
**Script pattern**:
```
GoTo D
ForEach 9
GoTo %N
Import Data%N.txt
Next
GoTo L, 1
Print
```
**Variable substitution**: `%N` replaced with current iteration number (1, 2, 3, ..., 9).
**Dynamic filenames**: `Data1.txt`, `Data2.txt`, ..., `Data9.txt` matched to tables 1-9.
**Result**: All tables populated, layout printed with all graphs updated.
## Example 7: Changing X-Axis Title of All Graphs
**Use case**: Apply uniform formatting change across all graphs in file.
**Key commands**:
- `GoTo G` - Navigate to graphs family
- `ForEachSheet` - Iterate over all sheets in current family
- `SetAxisTitle axis, "title"` - Set axis title
- `Next` - End loop
**Script pattern**:
```
GoTo G
ForEachSheet
SetAxisTitle X, "Time (minutes)"
Next
```
**Axis parameter**: `X` (X-axis), `Y` (Y-axis), `Y2` (secondary Y-axis).
**Scope**: Operates on all graph sheets in current family.
**Alternative axes**: `SetAxisTitle Y, "Response (units)"` for Y-axis.
## Common Scripting Patterns
### Loop Constructs
- `ForEach N` / `Next` - Fixed iteration count
- `ForEachSheet` / `Next` - Iterate over sheets in family
- `%N` variable - Current iteration number (1-based)
### Navigation
- `GoTo family, N` - Navigate to specific sheet
- `D, N` - Data table N
- `R, N` - Results table N
- `G, N` - Graph N
- `I, N` - Info table N
- `L, N` - Layout N
- `GoTo family` - Navigate to family without specific sheet
- `GoTo %N` - Navigate using iteration variable
### Data Operations
- `Import filename.txt` - Import external file
- `Import filename.txt, column=N` - Import to specific column
- `InsertData N, M` - Insert embedded data block N at column M
- `...` - Embed data in script (tab-delimited)
### Info Constants
- `SetInfo name, value` - Set named constant
- String values: quoted
- Numeric values: unquoted
### File Operations
- `Open filename.pzfx` - Load Prism file
- `SaveAs filename.pzfx` - Save with new name
### Analysis and Output
- `AnalyzeData` - Execute analysis
- `Print` - Print current sheet/layout
## Variable Substitution
`%N` - Current iteration number in loops
- Use in navigation: `GoTo %N`
- Use in filenames: `Import Data%N.txt`
- Use in any string context requiring iteration number
- 1-based indexing (first iteration = 1)
## Data Formats
**External files**: Tab-delimited or comma-delimited text files.
**Embedded data**: Tab-delimited within `` tags, multiple blocks numbered sequentially.
**Info constants**: Name/value pairs, supports strings (quoted), numbers (unquoted), dates (quoted).
## Script Structure Best Practices
1. Navigate before operating: Always `GoTo` target before import/analysis
2. Use loops for repetitive operations: `ForEach` with `%N` variable
3. Embed small datasets: Use `` blocks for portability
4. Template workflows: Separate data from analysis configuration
5. Batch operations: Combine loops with variable substitution for file series
6. Layout printing: Navigate to layout after updating all graphs
## Limitations and Notes
- No automatic file discovery: Must specify exact filenames or use predictable naming pattern
- Fixed iteration counts: `ForEach N` requires known count, no dynamic termination
- Sequential execution: No parallel processing
- Column compatibility: Multi-file imports require matching row structures
- Variable scope: `%N` only valid within loop construct
- 1-based indexing: All sheet numbers, iteration counts, and data blocks start at 1