Source code for patato.recon
# Copyright (c) Thomas Else 2023-25.
# License: MIT
"""
Reconstruction module
============================
This module provides functions for reconstructing photoacoustic data.
"""
from typing import Sequence
from .backprojection_opencl import OpenCLBackprojection
from .backprojection_reference import ReferenceBackprojection
from .reconstruction_algorithm import ReconstructionAlgorithm
from .numpy_backprojection.recon import SlowBackprojection
from ..io.msot_data import PAData
RECONSTRUCTION_METHODS: Sequence[type(ReconstructionAlgorithm)] = [
OpenCLBackprojection,
ReferenceBackprojection,
SlowBackprojection,
]
RECONSTRUCTION_NAMES = {x.get_algorithm_name(): x for x in RECONSTRUCTION_METHODS}
[docs]
def get_default_recon_preset(data: PAData):
"""
Parameters
----------
data.
Returns
-------
"""
import numpy as np
import os
try:
import pyopencl as cl
CPU = not any(
len(platform.get_devices(device_type=cl.device_type.GPU)) > 0
for platform in cl.get_platforms()
)
except ImportError:
cl = None
CPU = False # Should this maybe be true?
root_folder = os.path.join(
os.path.dirname(os.path.realpath(__file__)), "recon_presets"
)
preset = ""
if np.isclose(np.sqrt(np.sum(data.get_scan_geometry()[0] ** 2)), 0.0405):
preset += "backproject_standard"
else:
preset += "backproject_clinical"
if CPU:
preset += "_CPU"
# Get axes:
axes = ""
for i in range(3):
if not np.all(
np.isclose(data.get_scan_geometry()[:, i], data.get_scan_geometry()[0, i])
):
axes += "xyz"[i]
preset += "_" + axes
return os.path.join(root_folder, preset + ".json")