Command Line Interface
All commands share the same syntax:
imo-vmdb <command> [options]
The database is configured either via a config file (-c config.ini) or via
environment variables. See Setup for configuration details.
initdb
Initializes the database schema:
imo-vmdb initdb -c config.ini
Warning
Running initdb on an existing database will delete all data in it.
import_csv
Imports one or more CSV files into the database. The import is the first of two stages — see normalize for the second stage.
During import, every record is checked individually. Records that fail validation are rejected with an error; records that look suspicious but are still acceptable trigger a warning. For the expected column names and format of each file type, see CSV files.
Example — import all 2020 files:
imo-vmdb import_csv -c config.ini data/*-2020.csv
Available options:
-d— delete previously imported data before importing-p— permissive mode (see below)-r— repair mode (see below)
The -d option is useful when you want to re-import a single file without
running cleanup first.
Permissive mode (-p) accepts records that would normally be rejected,
logging a warning instead of an error. The following cases are affected:
Observation periods where start time equals end time.
Sessions with no elevation value (normally a required field).
Rate observations with a
teff(effective observing time) greater than 7 hours, up to a maximum of 24 hours.Magnitude records where the running magnitude-count sum has a fractional remainder at an intermediate step. The final total across all magnitude classes must still be a whole number in all cases.
Repair mode (-r) attempts to automatically correct certain malformed
values before validation. A warning is logged for every correction applied.
The following corrections are attempted:
Sentinel values in declination — values
990and999are treated as missing rather than causing a rejection.Sentinel value in right ascension — a value of
999is treated as missing.Asymmetric RA/Dec pair — if only one of right ascension or declination is set, both are cleared to missing.
Inverted observation period — if the end time precedes the start time, the two are swapped, provided the resulting duration does not exceed 0.49 days (~11 h 46 min).
Off-by-one-day error — if the observation period is invalid but becomes valid by shifting the end date one day forward or backward, that correction is applied (subject to the same maximum duration).
Both options can be combined.
normalize
Normalizes the imported records and enriches observations with computed astronomical data:
imo-vmdb normalize -c config.ini
The following data are computed and stored:
solar longitude,
position of the radiants,
position of the sun,
position of the moon and its illumination,
position of the field of view,
radiant altitude with zenith attraction applied.
All positional data are in the horizontal coordinate system.
Further plausibility checks are applied during normalization:
observations where the sun is above the horizon are rejected,
overlapping observations within the same session are discarded as duplicates.
Warning
Re-normalizing a session deletes all existing records for that session and recreates them from scratch.
After normalization is complete, the raw imported records can be removed with
cleanup.
cleanup
Removes raw imported data from the database while preserving all normalized results:
imo-vmdb cleanup -c config.ini
web_server
Starts the web server, which always serves the REST API at /api/v1.
The browser-based control panel (Web UI) is opt-in:
imo-vmdb web_server -c config.ini # REST API only
imo-vmdb web_server -c config.ini --enable-webui # REST API + Web UI
For a quick start without a config file, pass the database path as an environment variable:
IMO_VMDB_DATABASE_DATABASE=./data/vmdb.db imo-vmdb web_server --enable-webui
The server listens on http://127.0.0.1:8000 by default.
Additional options:
--host HOST— network interface to bind to (default:127.0.0.1, also configurable viaIMO_VMDB_WEBSERVER_HOST)--port PORT— port number (default:8000, also configurable viaIMO_VMDB_WEBSERVER_PORT)--enable-webui— also serve the browser-based control panel at/(also configurable viaIMO_VMDB_WEBSERVER_ENABLE_WEBUI=true)
To make the server reachable from other machines on the network:
imo-vmdb web_server -c config.ini --host 0.0.0.0
Note
The web server is intended for local or trusted-network use only. It is not hardened for public internet exposure.
When the server starts, Flask prints the following message:
WARNING: This is a development server. Do not use it in a production
deployment. Use a production WSGI server instead.
This is expected behaviour. The warning refers to deployments on a public server; it does not apply to local use on your own computer. You can safely ignore it.
See Web UI for a description of the interface.
export
Exports a single table as a semicolon-delimited CSV file or the entire database as a SQLite file:
imo-vmdb export <target> [-c config.ini] [-o output_file]
Available CSV targets (one table per call):
Target |
Description |
|---|---|
|
Meteor shower data from the database |
|
Radiant position data from the database |
|
Observation sessions |
|
Normalised rate observations |
|
Normalised magnitude observations |
|
Per-magnitude-class frequency counts |
|
Rate-to-magnitude cross-reference |
For CSV targets, output goes to stdout when -o is omitted.
The --reimport flag is available for shower and radiant. It
exports the original embedded reference files in the exact format required for
re-import with import_csv:
imo-vmdb export shower --reimport -o showers_edited.csv
Without --reimport, all CSV targets — including shower and
radiant — are exported directly from the database using the field names
documented in Field Reference.
Exporting the whole database
The special target db writes the entire database (normalized
observations and reference data, but not the raw imported_* tables)
into a single SQLite file:
imo-vmdb export db -o snapshot.sqlite
The resulting file uses the same schema as a regular imo-vmdb database. The recipient can use it directly as their own imo-vmdb database.
When db is the target, -o is required and --reimport is not
supported.