API Reference¶
This document provides complete API reference for all almanac modules.
Module Structure¶
almanac/
├── __init__.py # Version information
├── cli.py # Command-line interface
├── config.py # Configuration management
├── database.py # Database connectivity
├── apogee.py # APOGEE data processing
├── io.py # HDF5 I/O operations
├── display.py # Output formatting and display
├── logger.py # Logging configuration
└── utils.py # Utility functions
almanac.config¶
Configuration management for almanac settings.
Classes¶
DatabaseConfig¶
@dataclass
class DatabaseConfig:
user: str = "sdss_user"
host: str = "operations.sdss.org"
port: int = 5432
domain: str = "operations.sdss.*"
Database connection configuration.
ObservatoryMJD¶
@dataclass
class ObservatoryMJD:
apo: int = 59_558 # Apache Point Observatory
lco: int = 59_558 # Las Campanas Observatory
Minimum MJD values for each observatory.
Config¶
@dataclass
class Config:
sdssdb: DatabaseConfig = field(default_factory=DatabaseConfig)
database_connect_time_warning: int = 3 # seconds
sdssdb_exposure_min_mjd: ObservatoryMJD = field(default_factory=ObservatoryMJD)
logging_level: int = 20 # logging.INFO
Main configuration class containing all settings.
Functions¶
load_config_file(config_path: Optional[str] = None) -> dict¶
Load configuration from YAML file.
Parameters:
config_path: Path to config file (optional, uses default if None)
Returns: Dictionary of configuration values
get_config_path() -> Path¶
Get the default configuration file path.
Returns: Path object to config file location
almanac.database¶
Database connectivity and SDSS database integration.
Module Variables¶
is_database_available: bool¶
Whether database connection was successfully established.
Imported Database Models¶
The module imports and exposes database models from sdssdb:
catalogdb: Catalog database modelsopsdb: Operations database models
almanac.apogee¶
Core APOGEE data processing functionality.
Constants¶
RAW_HEADER_KEYS¶
RAW_HEADER_KEYS = (
"DATE-OBS", "FIELDID", "DESIGNID", "CONFIGID", "SEEING",
"EXPTYPE", "NREAD", "IMAGETYP", "LAMPQRTZ", "LAMPTHAR",
"LAMPUNE", "FOCUS", "NAME", "PLATEID", "CARTID", "MAPID",
"PLATETYP", "OBSCMT", "COLLPIST", "COLPITCH", "DITHPIX",
"TCAMMID", "TLSDETB"
)
FITS header keys extracted from raw APOGEE files.
Functions¶
_parse_hexdump_headers(output: List[str], keys: Tuple[str, ...], default: str = "") -> List[str]¶
Parse hexdump output to extract header key-value pairs.
Parameters:
output: List of strings from hexdump outputkeys: Tuple of header keys to look fordefault: Default value when key not found
Returns: List of extracted values
almanac.io¶
HDF5 input/output operations for structured data storage.
Functions¶
get_or_create_group(fp, group_name)¶
Get existing HDF5 group or create if it doesn’t exist.
Parameters:
fp: HDF5 file pointergroup_name: Name of the group
Returns: HDF5 group object
delete_hdf5_entry(fp, group_name)¶
Delete HDF5 group/entry if it exists.
Parameters:
fp: HDF5 file pointergroup_name: Name of entry to delete
_update_almanac(fp, exposures, sequence_indices, fiber_maps, compression=True, verbose=False)¶
Update HDF5 file with almanac data.
Parameters:
fp: HDF5 file pointerexposures: Exposure data tablesequence_indices: Sequence index arraysfiber_maps: Fiber mapping datacompression: Enable HDF5 compressionverbose: Enable verbose output
almanac.cli¶
Command-line interface implementation using Click.
Main Command¶
@click.group(invoke_without_command=True)¶
Main CLI entry point with comprehensive options for querying APOGEE data.
Key Options:
--mjd: Single MJD query (supports negative relative values)--mjd-start/--mjd-end: MJD range queries--date/--date-start/--date-end: Calendar date queries--apo/--lco: Observatory selection--fibers/--fibres: Include fiber mappings--no-x-match: Skip cross-matching--output/-O: Output file path--processes/-p: Parallel processing--verbosity/-v: Verbosity level (stackable)
Configuration Subcommands¶
config show¶
Display current configuration settings.
config get <key>¶
Get specific configuration value.
config set <key> <value>¶
Set configuration value.
almanac.display¶
Output formatting and display utilities.
Note: Specific functions require code examination for detailed documentation.
almanac.logger¶
Logging configuration and setup.
Note: Specific functions require code examination for detailed documentation.
almanac.utils¶
General utility functions.
Note: Ensures Yanny table reader/writer registration for astropy.
Data Types and Structures¶
HDF5 Output Structure¶
observatory/mjd/
├── exposures # Exposure metadata table
├── sequences # Nx2 array of exposure ranges forming sequences
└── fibers/
├── fps/configid # FPS fiber mappings by config ID
└── plates/plateid # Plate fiber mappings by plate ID
Exposure Table Columns¶
Common exposure metadata columns:
observatory: “apo” or “lco”mjd: Modified Julian Dateexposure: Exposure numberexptype: Exposure typenread: Number of readsseeing: Seeing conditionsfocus: Focus positionconfigid: Configuration IDdesignid: Design IDfieldid: Field ID
Fiber Mapping Columns¶
FPS (SDSS-V) Columns:
sdss_id: SDSS identifiercatalogid: Catalog identifierprogram: Survey programcategory: Target categoryfirstcarton: Primary cartonra,dec: Target coordinatesfiberId: Fiber identifier
Plate (SDSS-IV) Columns:
sdss_id: SDSS identifiertarget_id: Target identifiertarget_ra,target_dec: Target coordinatestarget_type: Target classificationsource_type: Source classificationfiber_id: Fiber identifier
Error Handling¶
The package includes robust error handling for:
Database connection failures
Missing raw data files
Invalid date/MJD specifications
File I/O errors
Network connectivity issues
Errors are logged using the configured logging system with appropriate severity levels.