Python SDK for Siroquant API V5
Project description
PYSQ - Siroquant SDK for Python
Python SDK for Siroquant V5 API.
Website: https://www.siroquant.com/
Siroquant is a commercial software package designed for quantitative phase analysis using X-ray diffraction (XRD) data, primarily through the Rietveld refinement method. It enables users to determine the composition of crystalline materials—such as minerals, cements, coals, and clays—by fitting full XRD powder patterns without needing physical standards, making it a standardless technique.
Getting Started
# create a virtual environment and activate it
python -m venv venv
source venv\Scripts\activate
# Install the package
pip install pysq
# Update the package (optional)
pip install --upgrade pysq
Usage Examples
Simple Example
from pysq import SQAPI, SQAPIConfig
config = SQAPIConfig(lib_dir=r".\lib", dll_path=r".\lib\sq_api.dll")
with SQAPI(config) as api:
api.initialize()
task_info = api.open_task("task.tsk")
results = api.refine(task_info.job_handle)
print(f"Results: {results}")
Advanced Example
import os
from pysq import SQAPI, SQAPIConfig, SQAPIError, RefinementParams, ReportResultsFlags, SaveTaskFlags, TaskContext
# Configuration
TASK_FILE = r".\task.tsk"
LIB_DIR = r".\lib"
DLL_PATH = r".\lib\sq_api.dll"
# Output directory for saved tasks
OUTPUT_DIR = r".\output"
def main() -> None:
"""Run a simple refinement example."""
# Resolve all paths to absolute before any DLL calls.
# The DLL changes the process CWD to the task file's directory when opening
# a task (Delphi SetCurrentDir), so any relative path resolved after that
# point will be wrong.
task_basename = os.path.splitext(os.path.basename(TASK_FILE))[0]
save_path = os.path.abspath(os.path.join(OUTPUT_DIR, f"{task_basename}_result.tsk"))
config = SQAPIConfig(lib_dir=LIB_DIR, dll_path=DLL_PATH)
print(f"Configuration loaded:")
print(f" Library directory: {config.lib_dir}")
print(f" DLL path: {config.dll_path}")
try:
# Use SQAPI context manager for automatic finalization
with SQAPI(config) as api:
print(f"API (init): {api}")
api.initialize()
print(f"API (status): {api}")
# Use TaskContext for automatic task cleanup
with TaskContext(api, TASK_FILE) as (job_handle, task_info):
print(f"\nTask: {task_info}")
# Run refinement
params = RefinementParams(
n_auto_prescale=1,
n_refs=1,
cutoff=0.5,
error_cutoff=1.0,
error_pc=0.75,
flags=0,
)
results = api.refine(job_handle, params=params, report_flags=ReportResultsFlags.CORRECTED)
print(f"\nResults: {results}")
if results.phases:
print("\nResults Breakdown:")
print(f"{'No.':<4} {'Phase Name':<20} {'Weight (%)':<12} {'Error (%)':<10}")
print("-" * 50)
for i, phase in enumerate(results.phases, 1):
print(f"{i:<4} {phase.phase_name:<20} {phase.weight_pc:<12.2f} {phase.error_of_fit:<10.2f}")
# Save the task with refinement results to the output directory.
# ENFORCE_DIRECTORIES ensures the output folder is created if it
# does not already exist.
api.save_task(
job_handle,
save_path,
SaveTaskFlags.ENFORCE_DIRECTORIES,
)
print(f"\nTask saved to: {save_path}")
except SQAPIError as e:
print(f"\nSQ API Error: {e}")
if e.error_code is not None:
print(f"Error code: {e.error_code}")
except FileNotFoundError as e:
print(f"\nFile not found: {e}")
except Exception as e:
print(f"\nUnexpected error: {e}")
if __name__ == "__main__":
main()
Configuration
Set paths via environment variables or code:
SQ_LIB_DIR: Library directory pathSQ_DLL_PATH: DLL path (optional, auto-detected)
Requirements
- Python 3.8+
- Windows (x64)
- Siroquant V5
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pysq-0.1.4.tar.gz.
File metadata
- Download URL: pysq-0.1.4.tar.gz
- Upload date:
- Size: 22.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e2f9c7e2df45267b592503ef66867bf3a6fde175f4451f0ee57f1fb218fc0c71
|
|
| MD5 |
de87a92cd55ee33339b69c78cd073f8c
|
|
| BLAKE2b-256 |
fc085640b3e15c5abea68aa2c934f6a4eccc1f95d6eea460d580e282447bc0a9
|
Provenance
The following attestation bundles were made for pysq-0.1.4.tar.gz:
Publisher:
publish-pysq.yml on bevolv/sq-api
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pysq-0.1.4.tar.gz -
Subject digest:
e2f9c7e2df45267b592503ef66867bf3a6fde175f4451f0ee57f1fb218fc0c71 - Sigstore transparency entry: 1181711953
- Sigstore integration time:
-
Permalink:
bevolv/sq-api@8da85f35104c7e31f2fce92e33c35cf73743be79 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/bevolv
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pysq.yml@8da85f35104c7e31f2fce92e33c35cf73743be79 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file pysq-0.1.4-py3-none-any.whl.
File metadata
- Download URL: pysq-0.1.4-py3-none-any.whl
- Upload date:
- Size: 23.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cbde9d86f4b9e702513d9598cc5010c080747e4e62ee07924a2b4e7c29e5bfd3
|
|
| MD5 |
e9d0ee7f3b79ad7ba484c7383cce6965
|
|
| BLAKE2b-256 |
ec36bb978408f1eeee1bd6ccc871c6be52ccd409826a08a07d2a93c8f1956c69
|
Provenance
The following attestation bundles were made for pysq-0.1.4-py3-none-any.whl:
Publisher:
publish-pysq.yml on bevolv/sq-api
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pysq-0.1.4-py3-none-any.whl -
Subject digest:
cbde9d86f4b9e702513d9598cc5010c080747e4e62ee07924a2b4e7c29e5bfd3 - Sigstore transparency entry: 1181711955
- Sigstore integration time:
-
Permalink:
bevolv/sq-api@8da85f35104c7e31f2fce92e33c35cf73743be79 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/bevolv
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pysq.yml@8da85f35104c7e31f2fce92e33c35cf73743be79 -
Trigger Event:
workflow_dispatch
-
Statement type: