Files
read_aconity_layers/docs/quickstart.rst

197 lines
4.8 KiB
ReStructuredText

##################
Quickstart Guide
##################
This guide will get you up and running with ``read_aconity_layers`` in
just a few minutes.
*************
Basic Usage
*************
Reading All Layers from a Directory
===================================
The most common use case is reading all layer files from a directory:
.. code:: python
import read_aconity_layers as ral
import numpy as np
# Read all .pcd files from a directory
data = ral.read_layers("/path/to/your/layer/files/")
print(f"Loaded {data.shape[0]} data points")
print(f"Data shape: {data.shape}")
print(f"Columns: [x, y, z, data1, data2]")
Reading Specific Files
======================
If you want to read only specific layer files:
.. code:: python
import read_aconity_layers as ral
# List of specific files to read
files = ["/path/to/0.1.pcd", "/path/to/0.2.pcd", "/path/to/0.3.pcd"]
data = ral.read_selected_layers(files)
Reading a Single Layer
======================
For processing individual layers:
.. code:: python
import read_aconity_layers as ral
# Read just one layer file
layer_data = ral.read_layer("/path/to/0.01.pcd")
# Extract coordinates
x_coords = layer_data[:, 0]
y_coords = layer_data[:, 1]
z_coords = layer_data[:, 2]
***********************
Working with the Data
***********************
Understanding the Data Format
=============================
All functions return NumPy arrays with 5 columns:
- **Column 0**: X coordinates (corrected)
- **Column 1**: Y coordinates (corrected)
- **Column 2**: Z coordinates (layer height)
- **Column 3**: Original data column 3
- **Column 4**: Original data column 4
The X and Y coordinates are automatically corrected using the
calibration formulas built into the library.
Example: Basic Data Analysis
============================
.. code:: python
import read_aconity_layers as ral
import numpy as np
import matplotlib.pyplot as plt
# Load data
data = ral.read_layers("/path/to/layers/")
# Basic statistics
print(f"X range: {data[:, 0].min():.2f} to {data[:, 0].max():.2f}")
print(f"Y range: {data[:, 1].min():.2f} to {data[:, 1].max():.2f}")
print(f"Z range: {data[:, 2].min():.2f} to {data[:, 2].max():.2f}")
# Plot layer distribution
unique_z = np.unique(data[:, 2])
layer_counts = [np.sum(data[:, 2] == z) for z in unique_z]
plt.figure(figsize=(10, 6))
plt.plot(unique_z, layer_counts)
plt.xlabel("Layer Height (Z)")
plt.ylabel("Number of Points")
plt.title("Points per Layer")
plt.show()
Example: Processing by Layer
============================
.. code:: python
import read_aconity_layers as ral
import numpy as np
# Read data
data = ral.read_layers("/path/to/layers/")
# Group by Z coordinate (layer)
unique_z = np.unique(data[:, 2])
layer_stats = []
for z in unique_z:
layer_mask = data[:, 2] == z
layer_points = data[layer_mask]
stats = {
"z": z,
"point_count": len(layer_points),
"x_mean": layer_points[:, 0].mean(),
"y_mean": layer_points[:, 1].mean(),
"data1_mean": layer_points[:, 3].mean(),
"data2_mean": layer_points[:, 4].mean(),
}
layer_stats.append(stats)
# Convert to structured array for easier analysis
layer_stats = np.array(layer_stats)
******************
Performance Tips
******************
Parallel Processing
===================
The library automatically uses parallel processing for multiple files.
For best performance:
- Use ``read_layers()`` for directories with many files
- The library will automatically use all available CPU cores
- Larger numbers of files will see better speedup
Memory Usage
============
For very large datasets:
- Consider processing files in batches if memory is limited
- Use ``read_selected_layers()`` to process subsets
- The library streams data efficiently, but the final arrays are held
in memory
File Organization
=================
For optimal performance:
- Keep layer files in a single directory when using ``read_layers()``
- Use consistent naming (the Z coordinate is extracted from the
filename)
- Ensure files are properly formatted space-delimited text
****************
Error Handling
****************
The library provides detailed error messages for common issues:
.. code:: python
import read_aconity_layers as ral
try:
data = ral.read_layers("/path/to/layers/")
except IOError as e:
print(f"File read error: {e}")
except RuntimeError as e:
print(f"Processing error: {e}")
************
Next Steps
************
- Check out the full :doc:`python/index` for detailed function
documentation
- See :doc:`development` if you want to contribute to the project
- For performance-critical applications, review the :doc:`rust/index`