Command Line Usage Guide
Overview
ISO-DART provides a powerful command-line interface for downloading electricity market data. This guide covers all command-line options and common usage patterns.
Basic Syntax
python isodart.py [OPTIONS]
Quick Examples
# Interactive mode (easiest)
python isodart.py
# Download CAISO Day-Ahead LMP
python isodart.py --iso caiso --data-type lmp --market dam \
--start 2024-01-01 --duration 7
# Download MISO fuel mix
python isodart.py --iso miso --data-type fuel-mix \
--start 2024-01-01 --duration 30
# Download weather data
python isodart.py --data-type weather --state CA \
--start 2024-01-01 --duration 30
Global Options
Required Arguments
Argument |
Description |
Example |
|---|---|---|
|
ISO to download from |
|
|
Type of data to download |
|
|
Start date (YYYY-MM-DD) |
|
|
Duration in days |
|
Optional Arguments
Argument |
Description |
Default |
|---|---|---|
|
Market type |
None |
|
Enable verbose logging |
False |
|
Path to config file |
None |
|
Force interactive mode |
False |
ISO-Specific Options
CAISO Options
# LMP data
python isodart.py --iso caiso --data-type lmp --market dam \
--start 2024-01-01 --duration 7
# Available markets: dam, rtm, hasp, rtpd, ruc
# Available data types: lmp, load, wind-solar, fuel-prices, ghg-prices, as-prices
MISO Options
# LMP data
python isodart.py --iso miso --data-type lmp --lmp-type da_exante \
--start 2024-01-01 --duration 7
# Available LMP types: da_exante, da_expost, rt_exante, rt_expost
# Available data types: lmp, mcp, load, fuel-mix, generation
NYISO Options
# LBMP data
python isodart.py --iso nyiso --data-type lbmp --market dam --level zonal \
--start 2024-01-01 --duration 7
# Available levels: zonal, generator
# Available data types: lbmp, load, fuel-mix, btm-solar
SPP Options
# LMP by settlement location
python isodart.py --iso spp --data-type lmp --market dam \
--start 2024-01-01 --duration 7
# LMP by bus
python isodart.py --iso spp --data-type lmp --market dam --by-bus \
--start 2024-01-01 --duration 7
# Available markets: dam, rtbm
# Available data types: lmp, mcp, operating-reserves, binding-constraints
BPA Options
# Wind and load data
python isodart.py --iso bpa --data-type wind_gen_total_load \
--start 2024-01-01 --duration 7
# Available data types: wind_gen_total_load, reserves_deployed, outages, all
PJM Options
# Day-ahead LMP
python isodart.py --iso pjm --data-type lmp --lmp-type da_hourly \
--start 2024-01-01 --duration 7
# With specific pricing node
python isodart.py --iso pjm --data-type lmp --lmp-type da_hourly \
--pnode-id 51288 --start 2024-01-01 --duration 7
# Available LMP types: da_hourly, rt_5min, rt_hourly
ISO-NE Options
# Day-ahead hourly LMP
python isodart.py --iso isone --data-type lmp --lmp-type da_hourly \
--start 2024-01-01 --duration 7
# Available data types: lmp, ancillary, demand
Weather Data Options
# Download weather data
python isodart.py --data-type weather --state CA \
--start 2024-01-01 --duration 30
# Include solar data
python isodart.py --data-type weather --state CA \
--start 2024-01-01 --duration 30 --include-solar
Advanced Usage
Using Configuration Files
Create a config.yaml:
caiso:
max_retries: 5
timeout: 60
logging:
level: DEBUG
file: logs/isodart.log
Use it:
python isodart.py --config config.yaml --iso caiso --data-type lmp \
--market dam --start 2024-01-01 --duration 7
Automation with Cron
# Daily download at 2 AM
0 2 * * * cd /path/to/ISO-DART && /path/to/venv/bin/python isodart.py \
--iso caiso --data-type lmp --market dam \
--start $(date -d "yesterday" +\%Y-\%m-\%d) --duration 1
# Weekly download on Monday
0 3 * * 1 cd /path/to/ISO-DART && /path/to/venv/bin/python isodart.py \
--iso caiso --data-type lmp --market dam \
--start $(date -d "7 days ago" +\%Y-\%m-\%d) --duration 7
Batch Processing
Create a shell script download_all.sh:
#!/bin/bash
START_DATE="2024-01-01"
DURATION=7
# Download multiple data types
python isodart.py --iso caiso --data-type lmp --market dam \
--start $START_DATE --duration $DURATION
python isodart.py --iso caiso --data-type lmp --market rtm \
--start $START_DATE --duration $DURATION
python isodart.py --iso caiso --data-type load --market dam \
--start $START_DATE --duration $DURATION
python isodart.py --iso caiso --data-type wind-solar \
--start $START_DATE --duration $DURATION
echo "All downloads complete!"
Make it executable:
chmod +x download_all.sh
./download_all.sh
Output Files
Downloaded files are saved to:
data/
├── CAISO/
│ └── YYYYMMDD_to_YYYYMMDD_datatype.csv
├── MISO/
│ └── miso_datatype_YYYY-MM-DD.csv
├── NYISO/
│ └── YYYYMMDD_to_YYYYMMDD_dataid.csv
├── SPP/
│ └── YYYYMMDD_to_YYYYMMDD_SPP_datatype.csv
├── BPA/
│ └── YYYY_BPA_datatype.csv
├── PJM/
│ └── MM-DD-YYYY_to_MM-DD-YYYY_datatype.csv
└── weather/
└── YYYY-MM-DD_to_YYYY-MM-DD_station_STATE.csv
Logging
Enable verbose logging:
python isodart.py --verbose --iso caiso --data-type lmp --market dam \
--start 2024-01-01 --duration 7
Check logs:
tail -f logs/isodart.log
Error Handling
Common Errors
- “API Error 404: Data not found”
Date range may be too recent or too old
Data may not exist for that period
Try a different date range
- “ModuleNotFoundError”
Activate virtual environment
Install dependencies:
pip install -r requirements.txt
- “Authentication failed”
Check API keys in
user_config.iniVerify credentials are correct
Exit Codes
0: Success1: Download failed or error occurred
Check exit code:
python isodart.py --iso caiso --data-type lmp --market dam \
--start 2024-01-01 --duration 7
echo $? # 0 = success, 1 = failure
Best Practices
Start with small date ranges to test connectivity
Use verbose mode when debugging
Check logs for detailed error messages
Automate wisely - respect API rate limits
Validate data after download
Command Reference
Quick Reference Table
Command |
Purpose |
|---|---|
|
Interactive mode |
|
Show help |
|
Download CAISO DAM LMP |
|
Enable debug output |
|
Use custom config |