Interfaces Module¶
The interfaces module provides command-line interface and shell completion functionality.
Command Line Interface¶
Command Line Interface for XRayLabTool.
This module provides a comprehensive CLI for calculating X-ray optical properties of materials, including single material calculations, batch processing, utility functions for X-ray analysis, and shell completion installation.
- Available Commands:
calc Calculate X-ray properties for a single material batch Process multiple materials from CSV file compare Compare X-ray properties between multiple materials convert Convert between energy and wavelength units formula Parse and analyze chemical formulas atomic Look up atomic data for elements bragg Calculate Bragg angles for diffraction list List available data and information install-completion Install shell completion for xraylabtool uninstall-completion Remove shell completion for xraylabtool
The CLI supports various output formats (table, CSV, JSON), field filtering, precision control, and comprehensive shell completion for enhanced usability.
- xraylabtool.interfaces.cli.create_parser()[source]¶
Create the main argument parser with all subcommands.
- Return type:
- xraylabtool.interfaces.cli.add_calc_command(subparsers)[source]¶
Add the ‘calc’ subcommand for single material calculations.
- xraylabtool.interfaces.cli.add_batch_command(subparsers)[source]¶
Add the ‘batch’ subcommand for processing multiple materials.
- xraylabtool.interfaces.cli.add_convert_command(subparsers)[source]¶
Add the ‘convert’ subcommand for unit conversions.
- xraylabtool.interfaces.cli.add_formula_command(subparsers)[source]¶
Add the ‘formula’ subcommand for formula parsing.
- xraylabtool.interfaces.cli.add_atomic_command(subparsers)[source]¶
Add the ‘atomic’ subcommand for atomic data lookup.
- xraylabtool.interfaces.cli.add_bragg_command(subparsers)[source]¶
Add the ‘bragg’ subcommand for Bragg angle calculations.
- xraylabtool.interfaces.cli.add_list_command(subparsers)[source]¶
Add the ‘list’ subcommand for listing available data.
- xraylabtool.interfaces.cli.add_install_completion_command(subparsers)[source]¶
Add the ‘install-completion’ subcommand for shell completion setup.
- xraylabtool.interfaces.cli.add_completion_command(subparsers)[source]¶
Add the ‘completion’ subcommand for the new completion system.
- xraylabtool.interfaces.cli.add_uninstall_completion_command(subparsers)[source]¶
Add the ‘uninstall-completion’ subcommand for shell completion removal.
- xraylabtool.interfaces.cli.add_compare_command(subparsers)[source]¶
Add the ‘compare’ subcommand for material comparison.
- xraylabtool.interfaces.cli.parse_energy_string(energy_str)[source]¶
Parse energy string and return numpy array.
- xraylabtool.interfaces.cli.format_xray_result(result, format_type, precision=6, fields=None)[source]¶
Format XRayResult for output.
- xraylabtool.interfaces.cli.cmd_install_completion(args)[source]¶
Handle the ‘install-completion’ command.
- xraylabtool.interfaces.cli.cmd_uninstall_completion(args)[source]¶
Handle the ‘uninstall-completion’ command.
- xraylabtool.interfaces.cli.cmd_completion(args)[source]¶
Handle the ‘completion’ command for the new completion system.
- xraylabtool.interfaces.cli.cmd_compare(args)[source]¶
Handle the ‘compare’ command for material comparison.
CLI Commands Overview¶
XRayLabTool provides 9 CLI commands:
Command |
Description |
|---|---|
|
Calculate X-ray properties for a single material |
|
Process multiple materials from CSV file |
|
Convert between energy and wavelength units |
|
Parse and analyze chemical formulas |
|
Look up atomic scattering factor data |
|
Calculate Bragg diffraction angles |
|
Display reference information and constants |
|
Install shell completion (bash, zsh, fish, PowerShell) |
|
Remove shell completion |
Command Examples¶
Single Material Calculation:
# Basic calculation
xraylabtool calc Si --density 2.33 --energy 8000
# Multiple energies
xraylabtool calc SiO2 --density 2.20 --energy 5000,8000,10000
# Energy range
xraylabtool calc Al --density 2.70 --energy 1000-20000:100
# Different output formats
xraylabtool calc Si --density 2.33 --energy 8000 --output csv
xraylabtool calc Si --density 2.33 --energy 8000 --output json
Batch Processing:
# Process CSV file
xraylabtool batch materials.csv --output results.csv
# Specify energy column
xraylabtool batch data.csv --energy-column "Energy (eV)"
# JSON output
xraylabtool batch materials.csv --output results.json --format json
Unit Conversions:
# Energy to wavelength
xraylabtool convert --energy 8000 --to wavelength
# Wavelength to energy
xraylabtool convert --wavelength 1.55 --to energy
# Multiple values
xraylabtool convert --energy 5000,8000,10000 --to wavelength
Formula Analysis:
# Parse chemical formula
xraylabtool formula SiO2
# Complex formula
xraylabtool formula "Ca5(PO4)3F"
# With molecular weight
xraylabtool formula SiO2 --molecular-weight
Atomic Data Lookup:
# Element information
xraylabtool atomic Si
# Scattering factors at specific energy
xraylabtool atomic Si --energy 8000
# Multiple elements
xraylabtool atomic Si,Al,O --energy 8000
Bragg Diffraction:
# Calculate Bragg angle
xraylabtool bragg --d-spacing 3.14 --energy 8000
# Multiple reflections
xraylabtool bragg --d-spacing 3.14,1.92,1.64 --energy 8000
Reference Information:
# List supported elements
xraylabtool list elements
# Physical constants
xraylabtool list constants
# Example formulas
xraylabtool list examples
Output Formats¶
All commands support multiple output formats:
table (default): Human-readable tabular format
csv: Comma-separated values for spreadsheet import
json: JSON format for programmatic processing
Shell Completion (Legacy Bridge)¶
Shell completion system for XRayLabTool.
This module provides a backward-compatible interface to the new virtual environment-centric completion system while maintaining the same API that the existing CLI expects.
- class xraylabtool.interfaces.completion.CompletionInstaller[source]¶
Bases:
objectHandles virtual environment-centric completion installation.
- install(shell=None, target_env=None, force=False)[source]¶
Install completion in virtual environment.
- Parameters:
- Return type:
- Returns:
True if installation succeeded, False otherwise.
- install_bash_completion(**kwargs)[source]¶
Install bash completion (backward compatibility).
- Return type:
- uninstall_bash_completion(**kwargs)[source]¶
Uninstall bash completion (backward compatibility).
- Return type:
- uninstall_completion(shell_type=None, cleanup_session=True, **kwargs)[source]¶
Uninstall completion (backward compatibility).
- Return type:
- xraylabtool.interfaces.completion.install_completion_main(args)¶
Legacy install completion main function with new system backend.
This function maintains backward compatibility with the existing CLI while using the new completion system internally.
Shell Completion v2¶
The completion_v2 sub-package is the current virtual-environment-centric
completion system, replacing the legacy bridge above.
Virtual environment-centric completion installer.
This module handles installation and management of shell completion that activates/deactivates with virtual environment changes.
- class xraylabtool.interfaces.completion_v2.installer.CompletionInstaller[source]¶
Bases:
objectHandles virtual environment-centric completion installation.
- install(shell=None, target_env=None, force=False)[source]¶
Install completion in virtual environment.
- Parameters:
- Return type:
- Returns:
True if installation succeeded, False otherwise.
- install_bash_completion(**kwargs)[source]¶
Install bash completion (backward compatibility).
- Return type:
- uninstall_bash_completion(**kwargs)[source]¶
Uninstall bash completion (backward compatibility).
- Return type:
- uninstall_completion(shell_type=None, cleanup_session=True, **kwargs)[source]¶
Uninstall completion (backward compatibility).
- Return type:
Shell-specific completion script generators.
This module provides modular completion script generation for different shells, replacing the large hardcoded strings with template-based generation.
- class xraylabtool.interfaces.completion_v2.shells.CompletionGenerator(command_name='xraylabtool')[source]¶
Bases:
ABCBase class for shell completion generators.
- Parameters:
command_name (str)
- class xraylabtool.interfaces.completion_v2.shells.BashCompletionGenerator(command_name='xraylabtool')[source]¶
Bases:
CompletionGeneratorGenerates Bash completion scripts.
- Parameters:
command_name (str)
- class xraylabtool.interfaces.completion_v2.shells.ZshCompletionGenerator(command_name='xraylabtool')[source]¶
Bases:
CompletionGeneratorGenerates native Zsh completion scripts.
- Parameters:
command_name (str)
- class xraylabtool.interfaces.completion_v2.shells.FishCompletionGenerator(command_name='xraylabtool')[source]¶
Bases:
CompletionGeneratorGenerates Fish shell completion scripts.
- Parameters:
command_name (str)
- class xraylabtool.interfaces.completion_v2.shells.PowerShellCompletionGenerator(command_name='xraylabtool')[source]¶
Bases:
CompletionGeneratorGenerates PowerShell completion scripts.
- Parameters:
command_name (str)
- class xraylabtool.interfaces.completion_v2.shells.CompletionManager[source]¶
Bases:
objectManages completion script generation for all supported shells.
- xraylabtool.interfaces.completion_v2.shells.get_xraylabtool_commands()[source]¶
Get the XRayLabTool command definitions for completion.
- xraylabtool.interfaces.completion_v2.shells.get_global_options()[source]¶
Get global options available for all commands.
Environment detection and management for shell completion.
This module provides robust detection of Python virtual environments and manages completion activation/deactivation based on environment state.
- class xraylabtool.interfaces.completion_v2.environment.EnvironmentType[source]¶
Bases:
objectConstants for environment types.
- SYSTEM = 'system'¶
- VENV = 'venv'¶
- VIRTUALENV = 'virtualenv'¶
- CONDA = 'conda'¶
- MAMBA = 'mamba'¶
- PIPENV = 'pipenv'¶
- POETRY = 'poetry'¶
- class xraylabtool.interfaces.completion_v2.environment.EnvironmentInfo(env_type, path, name, is_active=False, python_version=None, has_completion=False)[source]¶
Bases:
objectInformation about a detected environment.
- Parameters:
- class xraylabtool.interfaces.completion_v2.environment.EnvironmentDetector[source]¶
Bases:
objectDetects and manages Python virtual environments.
- get_current_environment()[source]¶
Get information about the currently active environment.
- Return type:
Performance optimizations and caching for shell completion.
This module provides caching mechanisms and performance optimizations to make completion faster and more responsive.
- class xraylabtool.interfaces.completion_v2.cache.CompletionCache(cache_dir=None)[source]¶
Bases:
objectFast caching system for completion data.
- Parameters:
cache_dir (Path | None)
- class xraylabtool.interfaces.completion_v2.cache.CompletionDataManager[source]¶
Bases:
objectManages and caches completion data for fast access.
- class xraylabtool.interfaces.completion_v2.cache.FastCompletionProvider[source]¶
Bases:
objectOptimized completion provider for runtime performance.
- class xraylabtool.interfaces.completion_v2.cache.PerformanceMonitor[source]¶
Bases:
objectMonitor completion performance for optimization.
- xraylabtool.interfaces.completion_v2.cache.get_data_manager()[source]¶
Get global completion data manager instance.
- Return type:
- xraylabtool.interfaces.completion_v2.cache.get_performance_monitor()[source]¶
Get global performance monitor instance.
- Return type:
Integration layer for the new completion system.
This module provides backward compatibility and integration with the existing CLI while gradually migrating to the new virtual environment-centric completion system.
- xraylabtool.interfaces.completion_v2.integration.legacy_install_completion_main(args)[source]¶
Legacy install completion main function with new system backend.
This function maintains backward compatibility with the existing CLI while using the new completion system internally.
- xraylabtool.interfaces.completion_v2.integration.legacy_uninstall_completion_main(args)[source]¶
Legacy uninstall completion main function with new system backend.
- xraylabtool.interfaces.completion_v2.integration.test_completion_installation()[source]¶
Test if completion is working in the current environment.
- Return type:
- xraylabtool.interfaces.completion_v2.integration.handle_new_completion_command(args)[source]¶
Handle new ‘completion’ subcommand.
- xraylabtool.interfaces.completion_v2.integration.install_completion_main(args)¶
Legacy install completion main function with new system backend.
This function maintains backward compatibility with the existing CLI while using the new completion system internally.
- xraylabtool.interfaces.completion_v2.integration.uninstall_completion_main(args)¶
Legacy uninstall completion main function with new system backend.
Command-line interface for the new completion system.
This module provides CLI commands for managing the virtual environment-centric shell completion system.
- xraylabtool.interfaces.completion_v2.cli.create_completion_parser()[source]¶
Create argument parser for completion commands.
- Return type:
- xraylabtool.interfaces.completion_v2.cli.handle_completion_command(args)[source]¶
Handle completion subcommands.
- xraylabtool.interfaces.completion_v2.cli.show_completion_info()[source]¶
Show information about the completion system.
- Return type:
- xraylabtool.interfaces.completion_v2.cli.completion_main(args=None)[source]¶
Main entry point for completion commands.
- xraylabtool.interfaces.completion_v2.cli.install_completion_main(args)[source]¶
Legacy install completion main function.
- xraylabtool.interfaces.completion_v2.cli.uninstall_completion_main(args)[source]¶
Legacy uninstall completion main function.
Bash Completion Features¶
The shell completion system provides:
Command completion: All 9 CLI commands
Option completion: Command flags and parameters
File completion: Input/output file paths
Element completion: Chemical element symbols
Unit completion: Energy and wavelength units
Installation¶
# Install completion for current user
xraylabtool install-completion
# Install system-wide (requires sudo)
sudo xraylabtool install-completion --system
# Custom completion script location
xraylabtool install-completion --path /custom/path
Usage¶
After installation, completion is available by pressing Tab:
xraylabtool [TAB] # Shows all commands
xraylabtool calc [TAB] # Shows calc command options
xraylabtool atomic S[TAB] # Completes to supported elements starting with 'S'
Uninstallation¶
# Remove completion
xraylabtool uninstall-completion
# Remove system-wide completion
sudo xraylabtool uninstall-completion --system
Platform Support¶
Shell completion is supported for:
Bash: Full support on Linux and macOS (requires bash-completion)
Zsh: Full support on Linux and macOS (requires zsh-completions)
Fish: Native support with built-in completion system
PowerShell: Full support on Windows, macOS, and Linux
Error Handling¶
The CLI provides error handling with helpful messages:
# Invalid formula
$ xraylabtool calc XYZ --density 1.0 --energy 8000
Error: Unknown element 'XYZ' in formula
# Missing required parameter
$ xraylabtool calc Si --energy 8000
Error: --density is required
# Invalid energy range
$ xraylabtool calc Si --density 2.33 --energy 0
Error: Energy must be positive
Integration Examples¶
With Python Scripts:
import subprocess
import json
# Call CLI from Python
result = subprocess.run([
"xraylabtool", "calc", "Si",
"--density", "2.33",
"--energy", "8000",
"--output", "json"
], capture_output=True, text=True)
data = json.loads(result.stdout)
print(f"Critical angle: {data[0]['critical_angle_degrees']}")
With Shell Scripts:
#!/bin/bash
# Process multiple materials
for material in Si Al Cu; do
echo "Processing $material..."
xraylabtool calc $material --density 2.33 --energy 8000 --output csv >> results.csv
done