Python Reference¶
- class vortex.Range¶
- contains(self: vortex.Range, arg0: float) bool¶
- copy(self: vortex.Range) vortex.Range¶
- property length¶
- property max¶
- property min¶
- static symmetric(arg0: float) vortex.Range¶
- class vortex.acquire.AlazarAcquisition¶
Acquire data using an AlazarTech digitizer.
Once
prepare()is called, the acquisition may be started and stopped as many times as necessary.__NOTE__
This component supports preloading with the engine.
- property board¶
- property config¶
- Type:
Copy of the active configuration.
- initialize(self: vortex.acquire.AlazarAcquisition, config: vortex.acquire.AlazarConfig) None¶
Initialize the acquisition using the supplied configuration. The Alazar card is fully configured when this method returns.
Parameters¶
configAlazarConfigNew configuration to apply.
- next(self: vortex.acquire.AlazarAcquisition, buffer: numpy.ndarray[numpy.uint16], id: int = 0) int¶
Acquire the buffer and return the number of acquired records.
Parameters¶
buffernumpy.ndarray[numpy.uint16]The buffer to acquire, with shape that matches
self.config.shape.idintNumber to associate with the buffer for logging purposes.
Returns¶
intThe number of records acquired. If the number acquired is less than the number requested, the acquisition is complete.
Raises¶
RuntimeErrorIf the acquisition fails.
- next_async(self: vortex.acquire.AlazarAcquisition, buffer: numpy.ndarray[numpy.uint16], callback: Callable[[int, std::exception_ptr], None], id: int = 0) None¶
Acquire the buffer asynchronously and execute the callback when complete.
- __CAUTION__
The callback may be executed in the calling thread before this method returns if an error occurs while queueing the background acquisition.
Parameters¶
buffernumpy.ndarray[numpy.uint16]The buffer to acquire, with shape that matches
self.config.shape.callbackCallable[[int, Exception], None]Callback to execute when buffer is filled. The callback receives two arguments, the number of records acquired and any exception which occurred during the acquisition. If the number of records acquired is less than the number requested, the acquisition is complete.
idintNumber to associate with the buffer for logging purposes.
- prepare(self: vortex.acquire.AlazarAcquisition) None¶
Prepare to imminently start the acquisition. The Alazar card is armed for capture.
- property running¶
- start(self: vortex.acquire.AlazarAcquisition) None¶
Start the acquisition.
- stop(self: vortex.acquire.AlazarAcquisition) None¶
Stop the acquisition.
- __CAUTION__
Asynchronously acquired buffers that completed before the acquisition was stopped may continue to result after this method returns.
- class vortex.acquire.AlazarConfig¶
Base:
NullAcquisitionConfigConfiguration object for
AlazarAcquisition.- property acquire_timeout¶
- Type:
Timeout for the acquisition of each block. Defaults to
timedelta(seconds=1).
- property clock¶
- Type:
Internal or external clock configuration. Defaults to
InternalClock().
- copy(self: vortex.acquire.AlazarConfig) vortex.acquire.AlazarConfig¶
Create a copy of this configuration.
Returns¶
AlazarConfigThe copy.
- property device¶
- Type:
Alazar device for acquisition. Defaults to
AlazarDevice().
- property inputs¶
- Type:
List[alazar.Input]
List of input configurations for each channel to acquire. Default is empty.
- property options¶
- Type:
List[AuxIOTriggerOut | AuxIOClockOut | AuxIOPacerOut | OCTIgnoreBadClock]
List of acquisition options. Default is empty.
- property recommended_minimum_records_per_block¶
- Type:
Minimum recommended records per block for the configured Alazar digitizer. Read-only.
- property resampling¶
- Type:
Zero-based index of samples to keep in each record. All other samples are removed from the record. This can be used to perform resampling with nearest-neighbor interpolation. Number of samples to keep must match the number of samples per record. Set to an empty array (
[]) to disable resampling. Disabled by default.
- property samples_per_second¶
- Type:
Number of samples per second for internally-clocked acquisitions. Read-only.
Raises¶
RuntimeErrorif
samples_per_second_is_knownisFalse.
- property samples_per_second_is_known¶
- Type:
Trueifsamples_per_secondis specified in the configuration (e.g.,vortex.alazar.InternalClock) andFalseotherwise. Read-only.
- property shape¶
- Type:
List[int[3]]
Required shape of output buffers. Returns a list of [
records_per_block,samples_per_record,channels_per_sample]. Read-only.
- property stop_on_error¶
- Type:
Automatically stop the acquisition when an error occurs. Default is
True.
- property trigger¶
-
Single or dual trigger configuration. Defaults to
SingleExternalTrigger().
- validate(self: vortex.acquire.AlazarConfig) None¶
Check the configuration for errors.
Raises¶
RuntimeErrorIf the configuration is invalid.
- class vortex.acquire.AlazarDevice¶
Representation of an Alazar device identifier.
- class vortex.acquire.AlazarFFTAcquisition¶
Base:
AlazarAcquisitionAcquire data using an AlazarTech digitizer with the on-board FPGA configured for FFT computation.
This class may be used to simultaneously acquire the raw and FFT data using the
include_time_domainoption. In this case, both the raw and FFT data are combined into a single record.__NOTE__
This component supports preloading with the engine.
- property board¶
- property config¶
- Type:
Copy of the active configuration.
- initialize(self: vortex.acquire.AlazarFFTAcquisition, config: vortex.acquire.AlazarFFTConfig) None¶
Initialize the acquisition using the supplied configuration. The Alazar card is fully configured when this method returns.
Parameters¶
configAlazarFFTConfigNew configuration to apply.
- next(self: vortex.acquire.AlazarFFTAcquisition, buffer: numpy.ndarray[numpy.uint16], id: int = 0) int¶
Acquire the buffer and return the number of acquired records.
Parameters¶
buffernumpy.ndarray[numpy.uint16]The buffer to acquire, with shape that matches
self.config.shape.idintNumber to associate with the buffer for logging purposes.
Returns¶
intThe number of records acquired. If the number acquired is less than the number requested, the acquisition is complete.
Raises¶
RuntimeErrorIf the acquisition fails.
- next_async(self: vortex.acquire.AlazarFFTAcquisition, buffer: numpy.ndarray[numpy.uint16], callback: Callable[[int, std::exception_ptr], None], id: int = 0) None¶
Acquire the buffer asynchronously and execute the callback when complete.
- __CAUTION__
The callback may be executed in the calling thread before this method returns if an error occurs while queueing the background acquisition.
Parameters¶
buffernumpy.ndarray[numpy.uint16]The buffer to acquire, with shape that matches
self.config.shape.callbackCallable[[int, Exception], None]Callback to execute when buffer is filled. The callback receives two arguments, the number of records acquired and any exception which occurred during the acquisition. If the number of records acquired is less than the number requested, the acquisition is complete.
idintNumber to associate with the buffer for logging purposes.
- prepare(self: vortex.acquire.AlazarFFTAcquisition) None¶
Prepare to imminently start the acquisition. The Alazar card is armed for capture.
- property running¶
- start(self: vortex.acquire.AlazarFFTAcquisition) None¶
Start the acquisition.
- stop(self: vortex.acquire.AlazarFFTAcquisition) None¶
Stop the acquisition.
- __CAUTION__
Asynchronously acquired buffers that completed before the acquisition was stopped may continue to result after this method returns.
- class vortex.acquire.AlazarFFTConfig¶
Base:
AlazarConfigConfiguration object for
AlazarFFTAcquisition.- property acquire_timeout¶
- Type:
Timeout for the acquisition of each block. Defaults to
timedelta(seconds=1).
- property ascans_per_block¶
- Type:
Number of A-scans per block which is identical to number of records per blocks. Provided for API consistency only.
- property background¶
- Type:
numpy.ndarray[numpy.uint16]
Background record to subtract. Must have the same length as a record. Set to empty array (
[]) to disable. Disabled by default.
- property clock¶
- Type:
Internal or external clock configuration. Defaults to
InternalClock().
- copy(*args, **kwargs)¶
Overloaded function.
copy(self: vortex.acquire.AlazarFFTConfig) -> vortex.acquire.AlazarFFTConfig
Create a copy of this configuration.
Returns¶
AlazarFFTConfigThe copy.
copy(self: vortex.acquire.AlazarFFTConfig) -> vortex.acquire.AlazarFFTConfig
Create a copy of this configuration.
Returns¶
AlazarFFTConfigThe copy.
- property device¶
- Type:
Alazar device for acquisition. Defaults to
AlazarDevice().
- property fft_length¶
- Type:
Length of on-board FFT to perform. Records are zero-padded to reach this length. Must be larger than samples per record and must be a power of 2.
- property include_time_domain¶
- Type:
Append time domain data to the output FFT record. Requires a pointer cast to access since different data types are combined into single record. Defaults to
False.
- property inputs¶
- Type:
List[alazar.Input]
List of input configurations for each channel to acquire. Default is empty.
- property options¶
- Type:
List[AuxIOTriggerOut | AuxIOClockOut | AuxIOPacerOut | OCTIgnoreBadClock]
List of acquisition options. Default is empty.
- property recommended_minimum_records_per_block¶
- Type:
Minimum recommended records per block for the configured Alazar digitizer. Read-only.
- property resampling¶
- Type:
Zero-based index of samples to keep in each record. All other samples are removed from the record. This can be used to perform resampling with nearest-neighbor interpolation. Number of samples to keep must match the number of samples per record. Set to an empty array (
[]) to disable resampling. Disabled by default.
- property samples_per_ascan¶
- Type:
Number of samples per the output A-scan, which may differ from samples per record depending on FFT settings. Read-only.
- property samples_per_second¶
- Type:
Number of samples per second for internally-clocked acquisitions. Read-only.
Raises¶
RuntimeErrorif
samples_per_second_is_knownisFalse.
- property samples_per_second_is_known¶
- Type:
Trueifsamples_per_secondis specified in the configuration (e.g.,vortex.alazar.InternalClock) andFalseotherwise. Read-only.
- property shape¶
- Type:
List[int[3]]
Required shape of output buffers. Returns a list of [
records_per_block,samples_per_record,channels_per_sample]. Read-only.
- property spectral_filter¶
- Type:
numpy.ndarray[numpy.complex64]
Spectral filter to apply before the FFT. Must have the same length as FFT. Set to empty array (
[]) to disable. Disabled by default.
- property stop_on_error¶
- Type:
Automatically stop the acquisition when an error occurs. Default is
True.
- property trigger¶
-
Single or dual trigger configuration. Defaults to
SingleExternalTrigger().
- validate(self: vortex.acquire.AlazarFFTConfig) None¶
Check the configuration for errors.
Raises¶
RuntimeErrorIf the configuration is invalid.
- class vortex.acquire.FileAcquisition¶
Acquire data from a file.
Data is read from the file and returned in the requested shape. The file is read as raw bytes with no datatype or alignment considerations. File looping for infinite acquisitions is possible. This class is intended primarily for testing or offline post-processing.
__NOTE__
This component supports preloading with the engine.
- property config¶
- Type:
Copy of the active configuration.
- initialize(self: vortex.acquire.FileAcquisition, config: vortex::acquire::file_config_t) None¶
Initialize the acquisition using the supplied configuration.
Parameters¶
configFileAcquisitionConfigNew configuration to apply.
- next(self: vortex.acquire.FileAcquisition, buffer: numpy.ndarray[numpy.uint16], id: int = 0) int¶
Acquire the buffer and return the number of acquired records.
Parameters¶
buffernumpy.ndarray[numpy.uint16]The buffer to acquire, with shape that matches
self.config.shape.idintNumber to associate with the buffer for logging purposes.
Returns¶
intThe number of records acquired. If the number acquired is less than the number requested, the acquisition is complete.
Raises¶
RuntimeErrorIf the acquisition fails.
- prepare(self: vortex.acquire.FileAcquisition) None¶
Prepare to imminently start the acquisition. Present for API uniformity, but calling is unnecessary.
- start(self: vortex.acquire.FileAcquisition) None¶
Start the acquisition, and open the source file.
- stop(self: vortex.acquire.FileAcquisition) None¶
Stop the acquisition, and close the source file.
- class vortex.acquire.FileAcquisitionConfig¶
Base:
NullAcquisitionConfigConfiguration object for
FileAcquisition.- copy(self: vortex.acquire.FileAcquisitionConfig) vortex.acquire.FileAcquisitionConfig¶
Return a copy of this configuration.
Returns¶
FileAcquisitionConfigThe copy.
- property loop¶
- Type:
Loop the file to provide an infinite acquisition. Otherwise, the acquisition ends when the end of file is reached.
- property shape¶
- Type:
List[int[3]]
Required shape of output buffers. Returns a list of [
records_per_block,samples_per_record,channels_per_sample]. Read-only.
- validate(self: vortex.acquire.FileAcquisitionConfig) None¶
Check the configuration for errors.
Raises¶
RuntimeErrorIf the configuration is invalid.
- class vortex.acquire.NullAcquisition¶
Perform no acquisition.
This class is provided as an engine placeholder for testing or mocking. The only necessary configuration is the expected output shape.
__NOTE__
This component supports preloading with the engine.
- property config¶
- Type:
Copy of the active configuration.
- initialize(self: vortex.acquire.NullAcquisition, config: vortex::acquire::null_config_t) None¶
Initialize the acquisition using the supplied configuration. Present for API uniformity but calling is necessary only if the configuration is accessed elsewhere.
Parameters¶
configNullAcquisitionConfigNew configuration to apply.
- next(self: vortex.acquire.NullAcquisition, buffer: numpy.ndarray[numpy.uint16], id: int = 0) int¶
Acquire the next buffer. Always successfully acquires
buffer.shape[0]records.Parameters¶
buffernumpy.ndarray[numpy.uint16]The buffer to acquire.
idintNumber to associate with the buffer for logging purposes.
Returns¶
intThe number of records acquired. The number of records is always matches
buffer.shape[0].
- prepare(self: vortex.acquire.NullAcquisition) None¶
Prepare to imminently start the acquisition. Present for API uniformity, but calling is unnecessary.
- start(self: vortex.acquire.NullAcquisition) None¶
Start the acquisition. Present for API uniformity, but calling is unnecessary.
- stop(self: vortex.acquire.NullAcquisition) None¶
Stop the acquisition. Present for API uniformity, but calling is unnecessary.
- class vortex.acquire.NullAcquisitionConfig¶
Configuration object for
NullAcquisition.- copy(self: vortex.acquire.NullAcquisitionConfig) vortex.acquire.NullAcquisitionConfig¶
Create a copy of this configuration.
Returns¶
NullAcquisitionConfigThe copy.
- property shape¶
- Type:
List[int[3]]
Required shape of output buffers. Returns a list of [
records_per_block,samples_per_record,channels_per_sample]. Read-only.
- validate(self: vortex.acquire.NullAcquisitionConfig) None¶
Check the configuration for errors.
Raises¶
RuntimeErrorIf the configuration is invalid.
- class vortex.acquire.TeledyneAcquisition¶
Acquire data using a Teledyne SP Devices digitizer using the ADQAPI.
Once
initialize()is called, the acquisition may be started and stopped as many times as necessary.__NOTE__
This component does not support preloading with the engine.
__ATTENTION__
This component uses zero-copy memory operations that require memory reserved for direct memory access (DMA). This memory is frequently in short supply, especially as memory fragmentation worsens with system uptime. Engine pipelines using this component may require smaller and/or fewer blocks. Restarting the computer to reduce memory fragmentation may improve performance.
Linux
Linux by default limits DMA buffers to 4 MiB in size. When configuring the engine, block sizing parameters must satisfy
ascans_per_block * samples_per_ascan * 2 < 4194304. Otherwise, the Teledyne configuration will fail. In practice, since A-scan length is a hardware property,ascans_per_blockis limited to a few hundred A-scans. Consider using hugepages withenable_hugepagesto avoid this issue.- property board_handle¶
- property config¶
- Type:
Copy of the active configuration.
- initialize(self: vortex.acquire.TeledyneAcquisition, config: vortex.acquire.TeledyneConfig) None¶
Initialize the acquisition using the supplied configuration. The Teledyne card is fully configured when this method returns.
Parameters¶
configTeledyneConfigNew configuration to apply.
- next(self: vortex.acquire.TeledyneAcquisition, buffer: numpy.ndarray[numpy.uint16], id: int = 0) int¶
Acquire the buffer and return the number of acquired records.
__ATTENTION__
Although the buffer data type is 16-bit unsigned integer for compatibility, the data stored within the buffer is actually signed.
Parameters¶
buffernumpy.ndarray[numpy.uint16]The buffer to acquire, with shape that matches
self.config.shape.idintNumber to associate with the buffer for logging purposes.
Returns¶
intThe number of records acquired. If the number acquired is less than the number requested, the acquisition is complete.
Raises¶
RuntimeErrorIf the acquisition fails.
- next_async(self: vortex.acquire.TeledyneAcquisition, buffer: numpy.ndarray[numpy.uint16], callback: Callable[[int, std::exception_ptr], None], id: int = 0) None¶
Acquire the buffer asynchronously and execute the callback when complete.
- __CAUTION__
The callback may be executed in the calling thread before this method returns if an error occurs while queueing the background acquisition.
__ATTENTION__
Although the buffer data type is 16-bit unsigned integer for compatibility, the data stored within buffers is actually signed.
Parameters¶
buffernumpy.ndarray[numpy.uint16]The buffer to acquire, with shape that matches
self.config.shape.callbackCallable[[int, Exception], None]Callback to execute when buffer is filled. The callback receives two arguments, the number of records acquired and any exception which occurred during the acquisition. If the number of records acquired is less than the number requested, the acquisition is complete.
idintNumber to associate with the buffer for logging purposes.
- prepare(self: vortex.acquire.TeledyneAcquisition) None¶
This method has no effect for Teledyne cards.
- property running¶
- start(self: vortex.acquire.TeledyneAcquisition) None¶
Start the acquisition.
- stop(self: vortex.acquire.TeledyneAcquisition) None¶
Stop the acquisition.
- __CAUTION__
Asynchronously acquired buffers that completed before the acquisition was stopped may continue to result after this method returns.
- class vortex.acquire.TeledyneConfig¶
Base:
NullAcquisitionConfigConfiguration object for
TeledyneAcquisition.- property acquire_timeout¶
- Type:
Timeout for the acquisition of each block. Defaults to
timedelta(seconds=1).
- property background¶
- Type:
numpy.ndarray[numpy.uint16]
Background record to subtract. Must have the same length as a record. Set to empty array (
[]) to disable. Disabled by default.__NOTE__
This feature requires the FWOCT_ firmware.
- property channel_mask¶
- property clock_delay_samples¶
- Type:
Number of samples, positive or negative, to delay the k-clock signal relative to the OCT signal. Non-integer numbers of samples are allowed. Set to
0to disable. Defaults to0.__NOTE__
This feature requires the FWOCT_ firmware.
- property clock_edges¶
-
Which k-clock edges to consider when resampling. Defaults to
Rising.Tip
When
resampling_factorof more than 2 is required, it is recommended to useBothforclock_delay_samplesand reduce the resampling factor by a factor of 2.__NOTE__
This feature requires the FWOCT_ firmware.
- copy(self: vortex.acquire.TeledyneConfig) vortex.acquire.TeledyneConfig¶
Create a copy of this configuration.
Returns¶
NullAcquisitionConfigThe copy.
- property enable_fwoct¶
- Type:
Activate features that require FWOCT_ firmware when
Trueand disable them whenFalse. IfFalseand FWOCT_ is detected, FWOCT_ is configured in passthrough mode. Default isFalse.Note
FWOCT_ version 8 or higher is required for full feature support.
- property enable_hugepages¶
- Type:
On Linux, allocate transfer buggers using hugepages when enabled. This can greatly increase the available memory for buffers. Default is
False.__ATTENTION__
This option is experimental. Memory allocated through hugepages may not be freed when the Python interpreter exits.
__WARNING__
On Windows, this option will raise an exception when enabled.
- property fft_mode¶
-
Output mode for the on-board FFT. Default is
Disabled.Important
Using an OCT processor is still recommended when enabling the FFT. Use the
enable_ifft,enable_square,enable_log10, andenable_magnitudeto avoid repeat processing.__NOTE__
This feature requires the FWOCT_ firmware.
- property inputs¶
- Type:
List[teledyne.Input]
List of input configurations for each channel to acquire. Default is empty.
- property periodic_trigger_frequency¶
- Type:
Trigger frequency for when
Periodicis the trigger source. Defaults to10000.
- property resampling_factor¶
- Type:
Scale factor for k-clock resampling using the on-board FPGA. That is, a value of
2will upsample each record by a factor of2. Non-integer resamplings are allowed. Set to0to disable resampling. Defaults to0.__NOTE__
This feature requires the FWOCT_ firmware.
- property sample_skip_factor¶
- Type:
Downsample samples within a record by the given factor. A value of
1skips no samples. Defaults to1.
- property samples_per_second¶
- property shape¶
- Type:
List[int[3]]
Required shape of output buffers. Returns a list of [
records_per_block,samples_per_record,channels_per_sample]. Read-only.
- property spectral_filter¶
- Type:
numpy.ndarray[numpy.complex64]
Spectral filter to apply before the FFT. Must have the same length as a record. Set to empty array (
[]) to disable. Disabled by default.__NOTE__
This feature requires the FWOCT_ firmware.
- property test_pattern_signal¶
- Type:
Use the test pattern signal as the acquisition source. Defaults to
False.
- property trigger_offset_samples¶
- Type:
Number of samples to skip after a trigger before acquiring a record. Defaults to
0.
- property trigger_skip_factor¶
- Type:
Downsample triggers by the given factor. A value of
1skips no triggers. Defaults to1.
- property trigger_source¶
- Type:
Source for the acquisition trigger. Defaults to
PortTrig.
- property trigger_sync_passthrough¶
- Type:
Emit a pulse on the sync port on each trigger. This is useful for synchronizing external hardware, such as I/O cards. Defaults to
True.Important
Configure to
Falseto use the test pattern generator.
- validate(*args, **kwargs)¶
Overloaded function.
validate(self: vortex.acquire.TeledyneConfig) -> None
Check the configuration for errors.
Raises¶
RuntimeErrorIf the configuration is invalid.
validate(self: vortex.acquire.TeledyneConfig) -> None
Check the configuration for errors.
Raises¶
RuntimeErrorIf the configuration is invalid.
- class vortex.engine.AscanHDF5StackEndpoint¶
- property aggregate_segment_callback¶
- property block_segment_callback¶
- property event_callback¶
- property executor¶
- property scan_callback¶
- property segment_callback¶
- property storage¶
- property update_callback¶
- property volume_callback¶
- class vortex.engine.AscanSpiralDeviceTensorEndpointInt8¶
- property aggregate_segment_callback¶
- property block_segment_callback¶
- property event_callback¶
- property executor¶
- property scan_callback¶
- property segment_callback¶
- property stream¶
- property tensor¶
- property update_callback¶
- property volume_callback¶
- class vortex.engine.AscanStackEndpoint¶
- property aggregate_segment_callback¶
- property block_segment_callback¶
- property event_callback¶
- property executor¶
- property scan_callback¶
- property segment_callback¶
- property storage¶
- property update_callback¶
- property volume_callback¶
- class vortex.engine.AscanStreamEndpoint¶
- property aggregate_segment_callback¶
- property block_segment_callback¶
- property event_callback¶
- property scan_callback¶
- property segment_callback¶
- property storage¶
- property update_callback¶
- property volume_callback¶
- class vortex.engine.Block¶
- class StreamIndex¶
Members:
Counter
GalvoTarget
SampleTarget
GalvoActual
SampleActual
Strobes
- Counter = <StreamIndex.Counter: 0>¶
- GalvoActual = <StreamIndex.GalvoActual: 3>¶
- GalvoTarget = <StreamIndex.GalvoTarget: 1>¶
- SampleActual = <StreamIndex.SampleActual: 4>¶
- SampleTarget = <StreamIndex.SampleTarget: 2>¶
- Strobes = <StreamIndex.Strobes: 5>¶
- property name¶
- property value¶
- property counter¶
- property galvo_actual¶
- property galvo_target¶
- property id¶
- property length¶
- property markers¶
- property sample¶
- property sample_actual¶
- property sample_target¶
- property strobes¶
- property timestamp¶
- class vortex.engine.BroctStorageEndpoint¶
- property aggregate_segment_callback¶
- property block_segment_callback¶
- property event_callback¶
- property executor¶
- property scan_callback¶
- property segment_callback¶
- property storage¶
- property update_callback¶
- property volume_callback¶
- class vortex.engine.BufferStrategy¶
Members:
Block
Segment
Volume
- Block = <BufferStrategy.Block: 0>¶
- Segment = <BufferStrategy.Segment: 1>¶
- Volume = <BufferStrategy.Volume: 2>¶
- property name¶
- property value¶
- class vortex.engine.CounterHDF5StackEndpoint¶
- property aggregate_segment_callback¶
- property block_segment_callback¶
- property event_callback¶
- property executor¶
- property scan_callback¶
- property segment_callback¶
- property storage¶
- property update_callback¶
- property volume_callback¶
- class vortex.engine.CounterStackEndpoint¶
- property aggregate_segment_callback¶
- property block_segment_callback¶
- property event_callback¶
- property executor¶
- property scan_callback¶
- property segment_callback¶
- property storage¶
- property update_callback¶
- property volume_callback¶
- class vortex.engine.CounterStackHostTensorEndpoint¶
- property aggregate_segment_callback¶
- property block_segment_callback¶
- property event_callback¶
- property executor¶
- property scan_callback¶
- property segment_callback¶
- property stream¶
- property tensor¶
- property update_callback¶
- property volume_callback¶
- class vortex.engine.CounterStreamEndpoint¶
- property aggregate_segment_callback¶
- property block_segment_callback¶
- property event_callback¶
- property scan_callback¶
- property segment_callback¶
- property storage¶
- property update_callback¶
- property volume_callback¶
- class vortex.engine.Engine¶
A real-time engine that moves data through an acquisition, processing, and formatting pipeline.
Once the pipeline is configured, the engine can operate the pipeline in multiple sessions, bounded by
start()andstop()calls. The session is active until thescan_queuebecomes empty,EngineConfig.blocks_to_acquirehave been acquired,stop()is called, or an error occurs.- class Event¶
Members:
Launch
Start
Run
Stop
Complete
Shutdown
Exit
Error
Abort
- Abort = <Event.Abort: 8>¶
- Complete = <Event.Complete: 4>¶
- Error = <Event.Error: 7>¶
- Exit = <Event.Exit: 6>¶
- Launch = <Event.Launch: 0>¶
- Run = <Event.Run: 2>¶
- Shutdown = <Event.Shutdown: 5>¶
- Start = <Event.Start: 1>¶
- Stop = <Event.Stop: 3>¶
- property name¶
- property value¶
- property config¶
- Type:
Copy of the active configuration.
- property done¶
- Type:
Return
Trueif the engine is stopped andFalseotherwise.__WARNING__
This property will return
Trueuntilstop()is called. Do no rely on this property to determine if the engine has exited.
- property event_callback¶
- Type:
Callable[[Engine.Event, Exception], None]
Callback to receive status events from the engine.
- initialize(self: vortex.engine.Engine, arg0: vortex.engine.EngineConfig) None¶
Initialize the engine using the supplied configuration.
Parameters¶
configEngineConfigNew configuration to apply.
- property job_callback¶
- Type:
Callable[[int, EngineStatus, JobTiming], None]
Callback to receive status and timing information for each block when it exits the pipeline.
__CAUTION__
Avoid computationally expensive tasks in this callback or the session may shut down prematurely due to delayed block recycling.
- prepare(self: vortex.engine.Engine) None¶
Prepare to start the engine. The engine allocates all blocks, assigns and allocates transfer buffers, and notifies endpoints to allocate their internal buffers, if needed.
- shutdown(self: vortex.engine.Engine, interrupt: bool = False) None¶
Request that the engine shut down without waiting for it do so. A call to
stop()is still required before then engine can be started again.Parameters¶
interruptboolIf True, abort any dispatched blocks. If False, wait for dispatched blocks to complete before exiting.
- start(self: vortex.engine.Engine) None¶
Start a new session with the engine. Acquisition and IO components are preloaded, if applicable, and started. Every call of this method must be paired with a call to
stop()at a later time.
- status(self: vortex.engine.Engine) vortex.engine.EngineStatus¶
Query the engine status.
Returns¶
EngineStatusThe current status of the engine.
- stop(self: vortex.engine.Engine) None¶
Request that the engine shut down and wait for it to do so. This method must be called for every call to
start().Raises¶
RuntimeErrorIf any error occurred to shut down the engine prematurely. This is guaranteed to be the first of such errors in case a cascade of errors occurs.
- wait(self: vortex.engine.Engine) None¶
Wait for the active session to complete. This method will block indefinitely.
Raises¶
RuntimeErrorIf any error occurred to shut down the session prematurely. This is guaranteed to be the first of such errors in case a cascade of errors occurs.
- wait_for(self: vortex.engine.Engine, timeout: float) bool¶
- class vortex.engine.EngineConfig¶
Configuration object for
Engine.- add_acquisition(self: vortex.engine.EngineConfig, acquisition: object, processors: Sequence, preload: bool = True, master: bool = True) None¶
- add_formatter(self: vortex.engine.EngineConfig, arg0: object, arg1: Sequence) None¶
- add_io(self: vortex.engine.EngineConfig, io: object, preload: bool = True, master: bool = False, lead_samples: int = 0) None¶
- add_processor(self: vortex.engine.EngineConfig, arg0: object, arg1: Sequence) None¶
- property blocks_to_acquire¶
- Type:
The total acquisition duration as measured in blocks. Set to
0for an indefinite acquisition, which ends only when the last scan reports that it is complete. Default is0.
- property blocks_to_allocate¶
- Type:
Number of blocks to pre-allocate prior to starting the session. This determines the maximum session duration or size that can be buffered in memory. The maximum buffered duration in records is the product of
blocks_to_allocateandrecords_per_block. Default is4.
- property galvo_input_channels¶
- Type:
Number of input channels to allocate for galvo waveforms. Default is
2.
- property galvo_output_channels¶
- Type:
Number of output channels to allocate for galvo waveforms. Default is
2.
- property lead_marker¶
- Type:
Scan boundary marker inserted for leading samples. The primary purpose of this option is to apply
Flagsto the leading samples for stream-based storage endpoints, such asAscanStreamEndpoint. Default is ScanBoundary(0, 0, 0, 0x00).
- property lead_strobes¶
- Type:
Value for the strobe output when generating leading samples. Default is
0.
- property post_scan_records¶
- Type:
The number of records to acquire after the last scan reports that is is complete. This is useful if hardware latencies cause the final samples of the scan to physically occur after the acquisition would have otherwise ended. Default is
0.
- property preload_count¶
- Type:
Number of blocks to commit to the hardware drivers prior to starting the session. This determines how far in advance the engine is generating signals and scheduling buffers for acquisition. Once the engine starts, the engine will never have more that this number of blocks pending for acquisition. The product of
preload_countandrecords_per_blockdetermines the number of records required for new inputs (e.g., scan pattern changes) to propagate through the pipeline. Default is2.
- property records_per_block¶
- Type:
Number of records (spectra or A-scans) in a block. Each block represents a slice of time, as determined by the number of records acquired per second. Default is
1000.
- property scanner_warp¶
- Type:
[NoWarp | AngularWarp | TelecentricWarp]
Scan warp to generate the sample waveforms from the galvo waveforms. Default is
NoWarp.
- property strobes¶
- Type:
List[SampleStrobe | SegmentStrobe | VolumeStrobe | ScanStrobe | EventStrobe]
Scan pattern-derived strobes to generate for output. Default is
[SampleStrobe(0, 2), SampleStrobe(1, 1000), SampleStrobe(2, 1000, Polarity.Low), SegmentStrobe(3), VolumeStrobe(4)].
- validate(self: vortex.engine.EngineConfig) None¶
Check the configuration for errors.
Raises¶
RuntimeErrorIf the configuration is invalid.
__WARNING__
This method is not fully implemented yet.
- class vortex.engine.EngineStatus¶
- property active¶
- property block_utilization¶
- property dispatch_completion¶
- property dispatched_blocks¶
- property inflight_blocks¶
- class vortex.engine.EventStrobe¶
- property delay¶
- property duration¶
- property flags¶
- property line¶
- property polarity¶
- class vortex.engine.GalvoActualHDF5StackEndpoint¶
- property aggregate_segment_callback¶
- property block_segment_callback¶
- property event_callback¶
- property executor¶
- property scan_callback¶
- property segment_callback¶
- property storage¶
- property update_callback¶
- property volume_callback¶
- class vortex.engine.GalvoActualStackEndpoint¶
- property aggregate_segment_callback¶
- property block_segment_callback¶
- property event_callback¶
- property executor¶
- property scan_callback¶
- property segment_callback¶
- property storage¶
- property update_callback¶
- property volume_callback¶
- class vortex.engine.GalvoActualStackHostTensorEndpoint¶
- property aggregate_segment_callback¶
- property block_segment_callback¶
- property event_callback¶
- property executor¶
- property scan_callback¶
- property segment_callback¶
- property stream¶
- property tensor¶
- property update_callback¶
- property volume_callback¶
- class vortex.engine.GalvoActualStreamEndpoint¶
- property aggregate_segment_callback¶
- property block_segment_callback¶
- property event_callback¶
- property scan_callback¶
- property segment_callback¶
- property storage¶
- property update_callback¶
- property volume_callback¶
- class vortex.engine.GalvoTargetHDF5StackEndpoint¶
- property aggregate_segment_callback¶
- property block_segment_callback¶
- property event_callback¶
- property executor¶
- property scan_callback¶
- property segment_callback¶
- property storage¶
- property update_callback¶
- property volume_callback¶
- class vortex.engine.GalvoTargetStackEndpoint¶
- property aggregate_segment_callback¶
- property block_segment_callback¶
- property event_callback¶
- property executor¶
- property scan_callback¶
- property segment_callback¶
- property storage¶
- property update_callback¶
- property volume_callback¶
- class vortex.engine.GalvoTargetStreamEndpoint¶
- property aggregate_segment_callback¶
- property block_segment_callback¶
- property event_callback¶
- property scan_callback¶
- property segment_callback¶
- property storage¶
- property update_callback¶
- property volume_callback¶
- class vortex.engine.JobTiming¶
- property acquire¶
- property create¶
- property format¶
- property process¶
- property recycle¶
- property scan¶
- property service¶
- class vortex.engine.NullEndpoint¶
- property aggregate_segment_callback¶
- property block_segment_callback¶
- property event_callback¶
- property scan_callback¶
- property segment_callback¶
- property update_callback¶
- property volume_callback¶
- class vortex.engine.Polarity¶
Members:
Low
High
- High = <Polarity.High: 1>¶
- Low = <Polarity.Low: 0>¶
- property name¶
- property value¶
- class vortex.engine.PositionDeviceTensorEndpointInt8¶
- property aggregate_segment_callback¶
- property block_segment_callback¶
- property event_callback¶
- property executor¶
- property scan_callback¶
- property segment_callback¶
- property stream¶
- property tensor¶
- property update_callback¶
- property volume_callback¶
- class vortex.engine.RadialDeviceTensorEndpointInt8¶
- property aggregate_segment_callback¶
- property block_segment_callback¶
- property event_callback¶
- property executor¶
- property scan_callback¶
- property segment_callback¶
- property stream¶
- property tensor¶
- property update_callback¶
- property volume_callback¶
- class vortex.engine.SampleActualHDF5StackEndpoint¶
- property aggregate_segment_callback¶
- property block_segment_callback¶
- property event_callback¶
- property executor¶
- property scan_callback¶
- property segment_callback¶
- property storage¶
- property update_callback¶
- property volume_callback¶
- class vortex.engine.SampleActualStackEndpoint¶
- property aggregate_segment_callback¶
- property block_segment_callback¶
- property event_callback¶
- property executor¶
- property scan_callback¶
- property segment_callback¶
- property storage¶
- property update_callback¶
- property volume_callback¶
- class vortex.engine.SampleActualStreamEndpoint¶
- property aggregate_segment_callback¶
- property block_segment_callback¶
- property event_callback¶
- property scan_callback¶
- property segment_callback¶
- property storage¶
- property update_callback¶
- property volume_callback¶
- class vortex.engine.SampleStrobe¶
- property divisor¶
- property duration¶
- property line¶
- property phase¶
- property polarity¶
- class vortex.engine.SampleTargetHDF5StackEndpoint¶
- property aggregate_segment_callback¶
- property block_segment_callback¶
- property event_callback¶
- property executor¶
- property scan_callback¶
- property segment_callback¶
- property storage¶
- property update_callback¶
- property volume_callback¶
- class vortex.engine.SampleTargetStackEndpoint¶
- property aggregate_segment_callback¶
- property block_segment_callback¶
- property event_callback¶
- property executor¶
- property scan_callback¶
- property segment_callback¶
- property storage¶
- property update_callback¶
- property volume_callback¶
- class vortex.engine.SampleTargetStreamEndpoint¶
- property aggregate_segment_callback¶
- property block_segment_callback¶
- property event_callback¶
- property scan_callback¶
- property segment_callback¶
- property storage¶
- property update_callback¶
- property volume_callback¶
- class vortex.engine.ScanQueue¶
A queue of scans to execute with the engine. When the scan queue is empty, the engine initiates a graceful shutdown.
- class Event¶
Members:
Start
Finish
Interrupt
Abort
- Abort = <Event.Abort: 3>¶
- Finish = <Event.Finish: 1>¶
- Interrupt = <Event.Interrupt: 2>¶
- Start = <Event.Start: 0>¶
- property name¶
- property value¶
- class OnlineScanQueue¶
- append(*args, **kwargs)¶
Overloaded function.
append(self: vortex.engine.ScanQueue.OnlineScanQueue, scan: vortex.scan.RasterScan, callback: Callable[[int, vortex::engine::scan_queue_t<double, std::variant<vortex::marker::scan_boundary, vortex::marker::volume_boundary, vortex::marker::segment_boundary, vortex::marker::active_lines, vortex::marker::inactive_lines, vortex::marker::event> >::event_t], None] = None, marker: vortex.marker.ScanBoundary = ScanBoundary(sample=0, sequence=0, volume_count_hint=0, flags=Flags(value=0xffffffffffffffff))) -> None
append(self: vortex.engine.ScanQueue.OnlineScanQueue, scan: vortex.scan.RepeatedRasterScan, callback: Callable[[int, vortex::engine::scan_queue_t<double, std::variant<vortex::marker::scan_boundary, vortex::marker::volume_boundary, vortex::marker::segment_boundary, vortex::marker::active_lines, vortex::marker::inactive_lines, vortex::marker::event> >::event_t], None] = None, marker: vortex.marker.ScanBoundary = ScanBoundary(sample=0, sequence=0, volume_count_hint=0, flags=Flags(value=0xffffffffffffffff))) -> None
append(self: vortex.engine.ScanQueue.OnlineScanQueue, scan: vortex.scan.RadialScan, callback: Callable[[int, vortex::engine::scan_queue_t<double, std::variant<vortex::marker::scan_boundary, vortex::marker::volume_boundary, vortex::marker::segment_boundary, vortex::marker::active_lines, vortex::marker::inactive_lines, vortex::marker::event> >::event_t], None] = None, marker: vortex.marker.ScanBoundary = ScanBoundary(sample=0, sequence=0, volume_count_hint=0, flags=Flags(value=0xffffffffffffffff))) -> None
append(self: vortex.engine.ScanQueue.OnlineScanQueue, scan: vortex.scan.RepeatedRadialScan, callback: Callable[[int, vortex::engine::scan_queue_t<double, std::variant<vortex::marker::scan_boundary, vortex::marker::volume_boundary, vortex::marker::segment_boundary, vortex::marker::active_lines, vortex::marker::inactive_lines, vortex::marker::event> >::event_t], None] = None, marker: vortex.marker.ScanBoundary = ScanBoundary(sample=0, sequence=0, volume_count_hint=0, flags=Flags(value=0xffffffffffffffff))) -> None
append(self: vortex.engine.ScanQueue.OnlineScanQueue, scan: vortex.scan.SpiralScan, callback: Callable[[int, vortex::engine::scan_queue_t<double, std::variant<vortex::marker::scan_boundary, vortex::marker::volume_boundary, vortex::marker::segment_boundary, vortex::marker::active_lines, vortex::marker::inactive_lines, vortex::marker::event> >::event_t], None] = None, marker: vortex.marker.ScanBoundary = ScanBoundary(sample=0, sequence=0, volume_count_hint=0, flags=Flags(value=0xffffffffffffffff))) -> None
append(self: vortex.engine.ScanQueue.OnlineScanQueue, scan: vortex.scan.FreeformScan, callback: Callable[[int, vortex::engine::scan_queue_t<double, std::variant<vortex::marker::scan_boundary, vortex::marker::volume_boundary, vortex::marker::segment_boundary, vortex::marker::active_lines, vortex::marker::inactive_lines, vortex::marker::event> >::event_t], None] = None, marker: vortex.marker.ScanBoundary = ScanBoundary(sample=0, sequence=0, volume_count_hint=0, flags=Flags(value=0xffffffffffffffff))) -> None
- append(*args, **kwargs)¶
Overloaded function.
append(self: vortex.engine.ScanQueue, scan: vortex.scan.RasterScan, callback: Callable[[int, vortex::engine::scan_queue_t<double, std::variant<vortex::marker::scan_boundary, vortex::marker::volume_boundary, vortex::marker::segment_boundary, vortex::marker::active_lines, vortex::marker::inactive_lines, vortex::marker::event> >::event_t], None] = None, marker: vortex.marker.ScanBoundary = ScanBoundary(sample=0, sequence=0, volume_count_hint=0, flags=Flags(value=0xffffffffffffffff))) -> None
append(self: vortex.engine.ScanQueue, scan: vortex.scan.RepeatedRasterScan, callback: Callable[[int, vortex::engine::scan_queue_t<double, std::variant<vortex::marker::scan_boundary, vortex::marker::volume_boundary, vortex::marker::segment_boundary, vortex::marker::active_lines, vortex::marker::inactive_lines, vortex::marker::event> >::event_t], None] = None, marker: vortex.marker.ScanBoundary = ScanBoundary(sample=0, sequence=0, volume_count_hint=0, flags=Flags(value=0xffffffffffffffff))) -> None
append(self: vortex.engine.ScanQueue, scan: vortex.scan.RadialScan, callback: Callable[[int, vortex::engine::scan_queue_t<double, std::variant<vortex::marker::scan_boundary, vortex::marker::volume_boundary, vortex::marker::segment_boundary, vortex::marker::active_lines, vortex::marker::inactive_lines, vortex::marker::event> >::event_t], None] = None, marker: vortex.marker.ScanBoundary = ScanBoundary(sample=0, sequence=0, volume_count_hint=0, flags=Flags(value=0xffffffffffffffff))) -> None
append(self: vortex.engine.ScanQueue, scan: vortex.scan.RepeatedRadialScan, callback: Callable[[int, vortex::engine::scan_queue_t<double, std::variant<vortex::marker::scan_boundary, vortex::marker::volume_boundary, vortex::marker::segment_boundary, vortex::marker::active_lines, vortex::marker::inactive_lines, vortex::marker::event> >::event_t], None] = None, marker: vortex.marker.ScanBoundary = ScanBoundary(sample=0, sequence=0, volume_count_hint=0, flags=Flags(value=0xffffffffffffffff))) -> None
append(self: vortex.engine.ScanQueue, scan: vortex.scan.SpiralScan, callback: Callable[[int, vortex::engine::scan_queue_t<double, std::variant<vortex::marker::scan_boundary, vortex::marker::volume_boundary, vortex::marker::segment_boundary, vortex::marker::active_lines, vortex::marker::inactive_lines, vortex::marker::event> >::event_t], None] = None, marker: vortex.marker.ScanBoundary = ScanBoundary(sample=0, sequence=0, volume_count_hint=0, flags=Flags(value=0xffffffffffffffff))) -> None
append(self: vortex.engine.ScanQueue, scan: vortex.scan.FreeformScan, callback: Callable[[int, vortex::engine::scan_queue_t<double, std::variant<vortex::marker::scan_boundary, vortex::marker::volume_boundary, vortex::marker::segment_boundary, vortex::marker::active_lines, vortex::marker::inactive_lines, vortex::marker::event> >::event_t], None] = None, marker: vortex.marker.ScanBoundary = ScanBoundary(sample=0, sequence=0, volume_count_hint=0, flags=Flags(value=0xffffffffffffffff))) -> None
- clear(self: vortex.engine.ScanQueue) None¶
Clears the scan queue but maintains internal scan state (e.g., last position and velocity).
- property empty_callback¶
- Type:
Callable[[OnlineScanQueue], None]
Callback to execute when the scan queue is empty but before the engine initiates a graceful shutdown. This represents the last opportunity to prolong the session. The callback receives a single argument of
OnlineScanQueuewhich exposes a singleOnlineScanQueue.append()method to provide a thread-safe mechanism to append another scan. This method is identical in operation toScanQueue.append(). If no scan is appended, the engine will initiate a graceful shutdown immediately after the callback returns.__ATTENTION__
Any attempt to call a method of the
ScanQueueduring this callback will lead to deadlock. Only call methods of theOnlineScanQueueprovided as the callback’s argument.
- generate(self: vortex.engine.ScanQueue, markers: vortex.marker.MarkerList, buffer: numpy.ndarray[numpy.float64], zero_order_hold: bool = True) tuple[int, int]¶
- interrupt(*args, **kwargs)¶
Overloaded function.
interrupt(self: vortex.engine.ScanQueue, scan: vortex.scan.RasterScan, callback: Callable[[int, vortex::engine::scan_queue_t<double, std::variant<vortex::marker::scan_boundary, vortex::marker::volume_boundary, vortex::marker::segment_boundary, vortex::marker::active_lines, vortex::marker::inactive_lines, vortex::marker::event> >::event_t], None] = None, marker: vortex.marker.ScanBoundary = ScanBoundary(sample=0, sequence=0, volume_count_hint=0, flags=Flags(value=0xffffffffffffffff))) -> None
interrupt(self: vortex.engine.ScanQueue, scan: vortex.scan.RepeatedRasterScan, callback: Callable[[int, vortex::engine::scan_queue_t<double, std::variant<vortex::marker::scan_boundary, vortex::marker::volume_boundary, vortex::marker::segment_boundary, vortex::marker::active_lines, vortex::marker::inactive_lines, vortex::marker::event> >::event_t], None] = None, marker: vortex.marker.ScanBoundary = ScanBoundary(sample=0, sequence=0, volume_count_hint=0, flags=Flags(value=0xffffffffffffffff))) -> None
interrupt(self: vortex.engine.ScanQueue, scan: vortex.scan.RadialScan, callback: Callable[[int, vortex::engine::scan_queue_t<double, std::variant<vortex::marker::scan_boundary, vortex::marker::volume_boundary, vortex::marker::segment_boundary, vortex::marker::active_lines, vortex::marker::inactive_lines, vortex::marker::event> >::event_t], None] = None, marker: vortex.marker.ScanBoundary = ScanBoundary(sample=0, sequence=0, volume_count_hint=0, flags=Flags(value=0xffffffffffffffff))) -> None
interrupt(self: vortex.engine.ScanQueue, scan: vortex.scan.RepeatedRadialScan, callback: Callable[[int, vortex::engine::scan_queue_t<double, std::variant<vortex::marker::scan_boundary, vortex::marker::volume_boundary, vortex::marker::segment_boundary, vortex::marker::active_lines, vortex::marker::inactive_lines, vortex::marker::event> >::event_t], None] = None, marker: vortex.marker.ScanBoundary = ScanBoundary(sample=0, sequence=0, volume_count_hint=0, flags=Flags(value=0xffffffffffffffff))) -> None
interrupt(self: vortex.engine.ScanQueue, scan: vortex.scan.SpiralScan, callback: Callable[[int, vortex::engine::scan_queue_t<double, std::variant<vortex::marker::scan_boundary, vortex::marker::volume_boundary, vortex::marker::segment_boundary, vortex::marker::active_lines, vortex::marker::inactive_lines, vortex::marker::event> >::event_t], None] = None, marker: vortex.marker.ScanBoundary = ScanBoundary(sample=0, sequence=0, volume_count_hint=0, flags=Flags(value=0xffffffffffffffff))) -> None
interrupt(self: vortex.engine.ScanQueue, scan: vortex.scan.FreeformScan, callback: Callable[[int, vortex::engine::scan_queue_t<double, std::variant<vortex::marker::scan_boundary, vortex::marker::volume_boundary, vortex::marker::segment_boundary, vortex::marker::active_lines, vortex::marker::inactive_lines, vortex::marker::event> >::event_t], None] = None, marker: vortex.marker.ScanBoundary = ScanBoundary(sample=0, sequence=0, volume_count_hint=0, flags=Flags(value=0xffffffffffffffff))) -> None
- reset(*args, **kwargs)¶
Overloaded function.
reset(self: vortex.engine.ScanQueue) -> None
reset(self: vortex.engine.ScanQueue, sample: int, position: numpy.ndarray[numpy.float64], velocity: numpy.ndarray[numpy.float64]) -> None
- class vortex.engine.ScanStrobe¶
- property delay¶
- property duration¶
- property flags¶
- property line¶
- property polarity¶
- class vortex.engine.SegmentStrobe¶
- property delay¶
- property duration¶
- property flags¶
- property line¶
- property polarity¶
- class vortex.engine.SessionStatus¶
- property allocated¶
- property available¶
- property dispatched¶
- property inflight¶
- property limit¶
- property progress¶
- property utilization¶
- class vortex.engine.Source¶
- property clock_edges_seconds¶
- property clock_rising_edges_per_trigger¶
- copy(self: vortex.engine.Source) vortex.engine.Source¶
- property duty_cycle¶
- property has_clock¶
- property imaging_depth_meters¶
- property triggers_per_second¶
- class vortex.engine.SpectraHDF5StackEndpoint¶
- property aggregate_segment_callback¶
- property block_segment_callback¶
- property event_callback¶
- property executor¶
- property scan_callback¶
- property segment_callback¶
- property storage¶
- property update_callback¶
- property volume_callback¶
- class vortex.engine.SpectraPositionDeviceTensorEndpointUInt16¶
- property aggregate_segment_callback¶
- property block_segment_callback¶
- property event_callback¶
- property executor¶
- property scan_callback¶
- property segment_callback¶
- property stream¶
- property tensor¶
- property update_callback¶
- property volume_callback¶
- class vortex.engine.SpectraRadialDeviceTensorEndpointUInt16¶
- property aggregate_segment_callback¶
- property block_segment_callback¶
- property event_callback¶
- property executor¶
- property scan_callback¶
- property segment_callback¶
- property stream¶
- property tensor¶
- property update_callback¶
- property volume_callback¶
- class vortex.engine.SpectraSpiralDeviceTensorEndpointUInt16¶
- property aggregate_segment_callback¶
- property block_segment_callback¶
- property event_callback¶
- property executor¶
- property scan_callback¶
- property segment_callback¶
- property stream¶
- property tensor¶
- property update_callback¶
- property volume_callback¶
- class vortex.engine.SpectraStackDeviceTensorEndpointUInt16¶
- property aggregate_segment_callback¶
- property block_segment_callback¶
- property event_callback¶
- property executor¶
- property scan_callback¶
- property segment_callback¶
- property stream¶
- property tensor¶
- property update_callback¶
- property volume_callback¶
- class vortex.engine.SpectraStackEndpoint¶
- property aggregate_segment_callback¶
- property block_segment_callback¶
- property event_callback¶
- property executor¶
- property scan_callback¶
- property segment_callback¶
- property storage¶
- property update_callback¶
- property volume_callback¶
- class vortex.engine.SpectraStackHostTensorEndpointUInt16¶
- property aggregate_segment_callback¶
- property block_segment_callback¶
- property event_callback¶
- property executor¶
- property scan_callback¶
- property segment_callback¶
- property stream¶
- property tensor¶
- property update_callback¶
- property volume_callback¶
- class vortex.engine.SpectraStackTensorEndpointUInt16¶
- property aggregate_segment_callback¶
- property block_segment_callback¶
- property event_callback¶
- property executor¶
- property scan_callback¶
- property segment_callback¶
- property tensor¶
- property update_callback¶
- property volume_callback¶
- class vortex.engine.SpectraStreamEndpoint¶
- property aggregate_segment_callback¶
- property block_segment_callback¶
- property event_callback¶
- property scan_callback¶
- property segment_callback¶
- property storage¶
- property update_callback¶
- property volume_callback¶
- class vortex.engine.StackDeviceTensorEndpointInt8¶
- property aggregate_segment_callback¶
- property block_segment_callback¶
- property event_callback¶
- property executor¶
- property scan_callback¶
- property segment_callback¶
- property stream¶
- property tensor¶
- property update_callback¶
- property volume_callback¶
- class vortex.engine.StackHostTensorEndpointInt8¶
- property aggregate_segment_callback¶
- property block_segment_callback¶
- property event_callback¶
- property executor¶
- property scan_callback¶
- property segment_callback¶
- property stream¶
- property tensor¶
- property update_callback¶
- property volume_callback¶
- class vortex.engine.StackTensorEndpointInt8¶
- property aggregate_segment_callback¶
- property block_segment_callback¶
- property event_callback¶
- property executor¶
- property scan_callback¶
- property segment_callback¶
- property tensor¶
- property update_callback¶
- property volume_callback¶
- class vortex.engine.StrobeList¶
- append(self: list[vortex.engine.SampleStrobe | vortex.engine.SegmentStrobe | vortex.engine.VolumeStrobe | vortex.engine.ScanStrobe | vortex.engine.EventStrobe], x: vortex.engine.SampleStrobe | vortex.engine.SegmentStrobe | vortex.engine.VolumeStrobe | vortex.engine.ScanStrobe | vortex.engine.EventStrobe) None¶
Add an item to the end of the list
- clear(self: list[vortex.engine.SampleStrobe | vortex.engine.SegmentStrobe | vortex.engine.VolumeStrobe | vortex.engine.ScanStrobe | vortex.engine.EventStrobe]) None¶
Clear the contents
- count(self: list[vortex.engine.SampleStrobe | vortex.engine.SegmentStrobe | vortex.engine.VolumeStrobe | vortex.engine.ScanStrobe | vortex.engine.EventStrobe], x: vortex.engine.SampleStrobe | vortex.engine.SegmentStrobe | vortex.engine.VolumeStrobe | vortex.engine.ScanStrobe | vortex.engine.EventStrobe) int¶
Return the number of times
xappears in the list
- extend(*args, **kwargs)¶
Overloaded function.
extend(self: list[Union[vortex.engine.SampleStrobe, vortex.engine.SegmentStrobe, vortex.engine.VolumeStrobe, vortex.engine.ScanStrobe, vortex.engine.EventStrobe]], L: list[Union[vortex.engine.SampleStrobe, vortex.engine.SegmentStrobe, vortex.engine.VolumeStrobe, vortex.engine.ScanStrobe, vortex.engine.EventStrobe]]) -> None
Extend the list by appending all the items in the given list
extend(self: list[Union[vortex.engine.SampleStrobe, vortex.engine.SegmentStrobe, vortex.engine.VolumeStrobe, vortex.engine.ScanStrobe, vortex.engine.EventStrobe]], L: Iterable) -> None
Extend the list by appending all the items in the given list
- insert(self: list[vortex.engine.SampleStrobe | vortex.engine.SegmentStrobe | vortex.engine.VolumeStrobe | vortex.engine.ScanStrobe | vortex.engine.EventStrobe], i: int, x: vortex.engine.SampleStrobe | vortex.engine.SegmentStrobe | vortex.engine.VolumeStrobe | vortex.engine.ScanStrobe | vortex.engine.EventStrobe) None¶
Insert an item at a given position.
- pop(*args, **kwargs)¶
Overloaded function.
pop(self: list[Union[vortex.engine.SampleStrobe, vortex.engine.SegmentStrobe, vortex.engine.VolumeStrobe, vortex.engine.ScanStrobe, vortex.engine.EventStrobe]]) -> Union[vortex.engine.SampleStrobe, vortex.engine.SegmentStrobe, vortex.engine.VolumeStrobe, vortex.engine.ScanStrobe, vortex.engine.EventStrobe]
Remove and return the last item
pop(self: list[Union[vortex.engine.SampleStrobe, vortex.engine.SegmentStrobe, vortex.engine.VolumeStrobe, vortex.engine.ScanStrobe, vortex.engine.EventStrobe]], i: int) -> Union[vortex.engine.SampleStrobe, vortex.engine.SegmentStrobe, vortex.engine.VolumeStrobe, vortex.engine.ScanStrobe, vortex.engine.EventStrobe]
Remove and return the item at index
i
- remove(self: list[vortex.engine.SampleStrobe | vortex.engine.SegmentStrobe | vortex.engine.VolumeStrobe | vortex.engine.ScanStrobe | vortex.engine.EventStrobe], x: vortex.engine.SampleStrobe | vortex.engine.SegmentStrobe | vortex.engine.VolumeStrobe | vortex.engine.ScanStrobe | vortex.engine.EventStrobe) None¶
Remove the first item from the list whose value is x. It is an error if there is no such item.
- class vortex.engine.StrobesHDF5StackEndpoint¶
- property aggregate_segment_callback¶
- property block_segment_callback¶
- property event_callback¶
- property executor¶
- property scan_callback¶
- property segment_callback¶
- property storage¶
- property update_callback¶
- property volume_callback¶
- class vortex.engine.StrobesStackEndpoint¶
- property aggregate_segment_callback¶
- property block_segment_callback¶
- property event_callback¶
- property executor¶
- property scan_callback¶
- property segment_callback¶
- property storage¶
- property update_callback¶
- property volume_callback¶
- class vortex.engine.StrobesStreamEndpoint¶
- property aggregate_segment_callback¶
- property block_segment_callback¶
- property event_callback¶
- property scan_callback¶
- property segment_callback¶
- property storage¶
- property update_callback¶
- property volume_callback¶
- class vortex.engine.VolumeStrobe¶
- property delay¶
- property duration¶
- property flags¶
- property line¶
- property polarity¶
- vortex.engine.acquire_alazar_clock(source: vortex.engine.Source, acquire_config: vortex.acquire.AlazarConfig, clock_channel: vortex.acquire.alazar.Channel, log: vortex.log.Logger = None) tuple[int, numpy.ndarray[numpy.uint16]]¶
- vortex.engine.compute_resampling(*args, **kwargs)¶
Overloaded function.
compute_resampling(arg0: vortex::engine::source_t<double>, arg1: int, arg2: int) -> numpy.ndarray[numpy.float64]
compute_resampling(arg0: vortex::engine::source_t<double>, arg1: int, arg2: int, arg3: int) -> numpy.ndarray[numpy.float64]
- vortex.engine.cycle(arg0: Sequence) vortex::engine::engine_config_t<vortex::engine::block_t<unsigned short, signed char, double, unsigned int>, std::variant<vortex::scan::warp::none_t, vortex::scan::warp::angular_t, vortex::scan::warp::telecentric_t> >::cycle_t¶
- vortex.engine.dispersion_phasor(arg0: int, arg1: Annotated[list[float], FixedSize(2)]) numpy.ndarray[numpy.complex128]¶
- vortex.engine.divide(arg0: Sequence) vortex::engine::engine_config_t<vortex::engine::block_t<unsigned short, signed char, double, unsigned int>, std::variant<vortex::scan::warp::none_t, vortex::scan::warp::angular_t, vortex::scan::warp::telecentric_t> >::divide_t¶
- vortex.engine.find_rising_edges(*args, **kwargs)¶
Overloaded function.
find_rising_edges(arg0: numpy.ndarray[numpy.float64], arg1: int) -> numpy.ndarray[numpy.float64]
find_rising_edges(arg0: numpy.ndarray[numpy.float64], arg1: int, arg2: int) -> numpy.ndarray[numpy.float64]
find_rising_edges(arg0: numpy.ndarray[numpy.float64], arg1: int) -> numpy.ndarray[numpy.float64]
find_rising_edges(arg0: numpy.ndarray[numpy.float64], arg1: int, arg2: int) -> numpy.ndarray[numpy.float64]
- class vortex.format.BroctFormatExecutor¶
- class vortex.format.Copy¶
- property block_offset¶
- property buffer_record¶
- property buffer_segment¶
- property count¶
- property reverse¶
- class vortex.format.FinishSegment¶
- property sample¶
- property scan_index¶
- property segment_index_buffer¶
- property volume_index¶
- class vortex.format.FormatPlan¶
- append(self: vortex.format.FormatPlan, x: Union[vortex.format.Copy, vortex.format.Resize, vortex.format.FinishSegment, vortex.format.FinishVolume, vortex.format.FinishScan, vortex::format::action::event]) None¶
Add an item to the end of the list
- clear(self: vortex.format.FormatPlan) None¶
Clear the contents
- count(self: vortex.format.FormatPlan, x: Union[vortex.format.Copy, vortex.format.Resize, vortex.format.FinishSegment, vortex.format.FinishVolume, vortex.format.FinishScan, vortex::format::action::event]) int¶
Return the number of times
xappears in the list
- extend(*args, **kwargs)¶
Overloaded function.
extend(self: vortex.format.FormatPlan, L: vortex.format.FormatPlan) -> None
Extend the list by appending all the items in the given list
extend(self: vortex.format.FormatPlan, L: Iterable) -> None
Extend the list by appending all the items in the given list
- insert(self: vortex.format.FormatPlan, i: int, x: Union[vortex.format.Copy, vortex.format.Resize, vortex.format.FinishSegment, vortex.format.FinishVolume, vortex.format.FinishScan, vortex::format::action::event]) None¶
Insert an item at a given position.
- pop(*args, **kwargs)¶
Overloaded function.
pop(self: vortex.format.FormatPlan) -> Union[vortex.format.Copy, vortex.format.Resize, vortex.format.FinishSegment, vortex.format.FinishVolume, vortex.format.FinishScan, vortex::format::action::event]
Remove and return the last item
pop(self: vortex.format.FormatPlan, i: int) -> Union[vortex.format.Copy, vortex.format.Resize, vortex.format.FinishSegment, vortex.format.FinishVolume, vortex.format.FinishScan, vortex::format::action::event]
Remove and return the item at index
i
- remove(self: vortex.format.FormatPlan, x: Union[vortex.format.Copy, vortex.format.Resize, vortex.format.FinishSegment, vortex.format.FinishVolume, vortex.format.FinishScan, vortex::format::action::event]) None¶
Remove the first item from the list whose value is x. It is an error if there is no such item.
- class vortex.format.FormatPlanner¶
- property config¶
- initialize(self: vortex.format.FormatPlanner, arg0: vortex.format.FormatPlannerConfig) None¶
- property records_per_segment¶
- reset(self: vortex.format.FormatPlanner) None¶
- property segments_per_volume¶
- class vortex.format.FormatPlannerConfig¶
- property adapt_shape¶
- property flip_reversed¶
- property mask¶
- property records_per_segment¶
- property segments_per_volume¶
- property shape¶
- property strip_inactive¶
- class vortex.format.NullSlice¶
- copy(self: vortex.format.NullSlice) vortex.format.NullSlice¶
- class vortex.format.NullTransform¶
- class vortex.format.PositionFormatExecutor¶
- property config¶
- format(*args, **kwargs)¶
Overloaded function.
format(self: vortex.format.PositionFormatExecutor, volume_buffer: cupy.ndarray[cupy.int8], sample_target: cupy.ndarray[cupy.float64], sample_actual: cupy.ndarray[cupy.float64], segment_buffer: cupy.ndarray[cupy.int8], segment_index: int, record_index: int = 0, reverse: bool = False) -> None
format(self: vortex.format.PositionFormatExecutor, volume_buffer: cupy.ndarray[cupy.int8], sample_target: cupy.ndarray[cupy.float64], sample_actual: cupy.ndarray[cupy.float64], segment_buffer: cupy.ndarray[cupy.float32], segment_index: int, record_index: int = 0, reverse: bool = False) -> None
format(self: vortex.format.PositionFormatExecutor, volume_buffer: cupy.ndarray[cupy.uint16], sample_target: cupy.ndarray[cupy.float64], sample_actual: cupy.ndarray[cupy.float64], segment_buffer: cupy.ndarray[cupy.uint16], segment_index: int, record_index: int = 0, reverse: bool = False) -> None
- initialize(self: vortex.format.PositionFormatExecutor, arg0: vortex.format.PositionFormatExecutorConfig) None¶
- class vortex.format.PositionFormatExecutorConfig¶
- property channels¶
- property erase_after_volume¶
- property sample_slice¶
- property sample_transform¶
- set(self: vortex.format.PositionFormatExecutorConfig, pitch: Annotated[list[float], FixedSize(2)] = [1.0, 1.0], offset: Annotated[list[float], FixedSize(2)] = [0.0, 0.0], angle: float = 0) None¶
- property transform¶
- property use_target_position¶
- class vortex.format.RadialFormatExecutor¶
- property config¶
- format(*args, **kwargs)¶
Overloaded function.
format(self: vortex.format.RadialFormatExecutor, volume_buffer: cupy.ndarray[cupy.int8], segment_buffer: cupy.ndarray[cupy.int8], segment_index: int, record_index: int = 0, reverse: bool = False) -> None
format(self: vortex.format.RadialFormatExecutor, volume_buffer: cupy.ndarray[cupy.int8], segment_buffer: cupy.ndarray[cupy.float32], segment_index: int, record_index: int = 0, reverse: bool = False) -> None
format(self: vortex.format.RadialFormatExecutor, volume_buffer: cupy.ndarray[cupy.uint16], segment_buffer: cupy.ndarray[cupy.uint16], segment_index: int, record_index: int = 0, reverse: bool = False) -> None
- initialize(self: vortex.format.RadialFormatExecutor, arg0: vortex.format.RadialFormatExecutorConfig) None¶
- class vortex.format.RadialFormatExecutorConfig¶
- property angular_extent¶
- property erase_after_volume¶
- property radial_extent¶
- property radial_records_per_segment¶
- property radial_segments_per_volume¶
- property radial_shape¶
- property sample_slice¶
- property sample_transform¶
- property segment_rt_extent¶
- property volume_xy_extent¶
- property x_extent¶
- property y_extent¶
- class vortex.format.Resize¶
- property records_per_segment¶
- property segments_per_volume¶
- property shape¶
- class vortex.format.SimpleSlice¶
- copy(self: vortex.format.SimpleSlice) vortex.format.SimpleSlice¶
- count(self: vortex.format.SimpleSlice) int¶
- property start¶
- property step¶
- property stop¶
- class vortex.format.SpiralFormatExecutor¶
- property config¶
- format(*args, **kwargs)¶
Overloaded function.
format(self: vortex.format.SpiralFormatExecutor, volume_buffer: cupy.ndarray[cupy.int8], segment_buffer: cupy.ndarray[cupy.int8], segment_index: int, record_index: int = 0, reverse: bool = False) -> None
format(self: vortex.format.SpiralFormatExecutor, volume_buffer: cupy.ndarray[cupy.int8], segment_buffer: cupy.ndarray[cupy.float32], segment_index: int, record_index: int = 0, reverse: bool = False) -> None
format(self: vortex.format.SpiralFormatExecutor, volume_buffer: cupy.ndarray[cupy.uint16], segment_buffer: cupy.ndarray[cupy.uint16], segment_index: int, record_index: int = 0, reverse: bool = False) -> None
- initialize(self: vortex.format.SpiralFormatExecutor, arg0: vortex.format.SpiralFormatExecutorConfig) None¶
- class vortex.format.SpiralFormatExecutorConfig¶
-
- property erase_after_volume¶
- property radial_extent¶
- property rings_per_spiral¶
- property sample_slice¶
- property sample_transform¶
- property samples_per_spiral¶
- property segment_extent¶
- property spiral_shape¶
- property spiral_velocity¶
- property volume_xy_extent¶
- property x_extent¶
- property y_extent¶
- class vortex.format.StackFormatExecutor¶
- property config¶
- initialize(self: vortex.format.StackFormatExecutor, arg0: vortex.format.StackFormatExecutorConfig) None¶
- class vortex.format.StackFormatExecutorConfig¶
-
- property erase_after_volume¶
- property sample_slice¶
- property sample_transform¶
- class vortex.io.AlazarIO¶
- property config¶
- initialize(self: vortex.io.AlazarIO, arg0: vortex.io.AlazarIOConfig) None¶
- next(self: vortex.io.AlazarIO, count: int, streams: tuple[numpy.ndarray[numpy.uint64], numpy.ndarray[numpy.float64], numpy.ndarray[numpy.float64], numpy.ndarray[numpy.float64], numpy.ndarray[numpy.float64], numpy.ndarray[numpy.uint32]], id: int = 0) None¶
- next_async(self: vortex.io.AlazarIO, count: int, streams: tuple[numpy.ndarray[numpy.uint64], numpy.ndarray[numpy.float64], numpy.ndarray[numpy.float64], numpy.ndarray[numpy.float64], numpy.ndarray[numpy.float64], numpy.ndarray[numpy.uint32]], callback: Callable[[int, std::exception_ptr], None], id: int = 0) None¶
- prepare(self: vortex.io.AlazarIO) None¶
- property running¶
- start(self: vortex.io.AlazarIO) None¶
- stop(self: vortex.io.AlazarIO, force: bool = False) None¶
- class vortex.io.AlazarIOConfig¶
- property analog_output_channels¶
- property blocks_to_buffer¶
- copy(self: vortex.io.AlazarIOConfig) vortex.io.AlazarIOConfig¶
- property divisor¶
- property samples_per_block¶
- property stop_on_error¶
- validate(self: vortex.io.AlazarIOConfig) None¶
- class vortex.io.DAQmxConfig¶
- property blocks_to_buffer¶
- property channels¶
- property clock¶
- copy(self: vortex.io.DAQmxConfig) vortex.io.DAQmxConfig¶
- property name¶
- property persistent_task¶
- property readwrite_timeout¶
- property samples_per_block¶
- property samples_per_second¶
- property stop_on_error¶
- validate(self: vortex.io.DAQmxConfig) None¶
- class vortex.io.DAQmxIO¶
- property config¶
- initialize(self: vortex.io.DAQmxIO, arg0: vortex.io.DAQmxConfig) None¶
- next(self: vortex.io.DAQmxIO, count: int, streams: tuple[numpy.ndarray[numpy.uint64], numpy.ndarray[numpy.float64], numpy.ndarray[numpy.float64], numpy.ndarray[numpy.float64], numpy.ndarray[numpy.float64], numpy.ndarray[numpy.uint32]], id: int = 0) None¶
- next_async(self: vortex.io.DAQmxIO, count: int, streams: tuple[numpy.ndarray[numpy.uint64], numpy.ndarray[numpy.float64], numpy.ndarray[numpy.float64], numpy.ndarray[numpy.float64], numpy.ndarray[numpy.float64], numpy.ndarray[numpy.uint32]], callback: Callable[[int, std::__exception_ptr::exception_ptr], None], id: int = 0) None¶
- prepare(self: vortex.io.DAQmxIO) None¶
- property running¶
- start(self: vortex.io.DAQmxIO) None¶
- stop(self: vortex.io.DAQmxIO) None¶
- class vortex.io.MachDSPIO¶
- property config¶
- initialize(self: vortex.io.MachDSPIO, arg0: vortex.io.MachDSPIOConfig) None¶
- next(self: vortex.io.MachDSPIO, count: int, streams: tuple[numpy.ndarray[numpy.uint64], numpy.ndarray[numpy.float64], numpy.ndarray[numpy.float64], numpy.ndarray[numpy.float64], numpy.ndarray[numpy.float64], numpy.ndarray[numpy.uint32]], id: int = 0) None¶
- next_async(self: vortex.io.MachDSPIO, count: int, streams: tuple[numpy.ndarray[numpy.uint64], numpy.ndarray[numpy.float64], numpy.ndarray[numpy.float64], numpy.ndarray[numpy.float64], numpy.ndarray[numpy.float64], numpy.ndarray[numpy.uint32]], callback: Callable[[int, std::__exception_ptr::exception_ptr], None], id: int = 0) None¶
- prepare(self: vortex.io.MachDSPIO) None¶
- property running¶
- start(self: vortex.io.MachDSPIO) None¶
- stop(self: vortex.io.MachDSPIO) None¶
- class vortex.io.MachDSPIOConfig¶
- property aux_divisor¶
- property baud_rate¶
- property blocks_to_buffer¶
- copy(self: vortex.io.MachDSPIOConfig) vortex.io.MachDSPIOConfig¶
- property input_channels¶
- property output_channels¶
- property port¶
- property readwrite_timeout¶
- property sample_divisor¶
- property samples_per_block¶
- property stop_on_error¶
- property trigger_rising_edge¶
- validate(self: vortex.io.MachDSPIOConfig) None¶
- class vortex.io.NullConfig¶
- copy(self: vortex.io.NullConfig) vortex.io.NullConfig¶
- validate(self: vortex.io.NullConfig) None¶
- class vortex.io.NullIO¶
- property config¶
- initialize(self: vortex.io.NullIO, arg0: vortex.io.NullConfig) None¶
- prepare(self: vortex.io.NullIO) None¶
- start(self: vortex.io.NullIO) None¶
- stop(self: vortex.io.NullIO) None¶
- vortex.log.ConsoleSink¶
alias of
StdErrSink
- class vortex.log.FileSink¶
Base:
SinkA sink that formats log records to a file.
- change(self: vortex.log.FileSink, filename: str, truncate: bool = False) None¶
Change the file path of the sink.
__NOTE__
This method is thread-safe.
Parameters¶
filename:strThe new file path.
truncate:boolErase the new file upon opening it if
True.
- flush(self: vortex.log.FileSink) None¶
Ensure all log records have completed processing.
- set_pattern(self: vortex.log.FileSink, arg0: str) None¶
Set the formatting pattern for this sink. See
Logger.set_pattern.__NOTE__
Calling
Logger.set_patternpropagates the new pattern to all attached sinks, overwriting any local changes by this method.
- class vortex.log.Logger¶
Loggers create records and then route them to associated sinks.
- add_sink(self: vortex.log.Logger, arg0: vortex.log.Sink) None¶
Attach a sink to this logger. Attaching a sink that is already attached has no effect.
__CAUTION__
This method is not thread-safe. Do not call this method when a log record might be emitted (e.g., when the engine is running) or while manipulating the list of attached sinks elsewhere.
Parameters¶
sink:vortex.log.SinkThe sink to attach.
- clone(self: vortex.log.Logger, name: str) vortex.log.Logger¶
Copy the current logger. This logger and its copy have the same sinks attached.
Parameters¶
name:strName of the copied logger.
- return vortex.log.Logger:
The copy.
- critical(self: vortex.log.Logger, msg: str) None¶
Log a message at the
criticallevel.Parameters¶
msg:strMessage to log.
- debug(self: vortex.log.Logger, msg: str) None¶
Log a message at the
debuglevel.Parameters¶
msg:strMessage to log.
- error(self: vortex.log.Logger, msg: str) None¶
Log a message at the
errorlevel.Parameters¶
msg:strMessage to log.
- flush(self: vortex.log.Logger) None¶
Flush all attached sinks.
- info(self: vortex.log.Logger, msg: str) None¶
Log a message at the
infolevel.Parameters¶
msg:strMessage to log.
- log(self: vortex.log.Logger, level: int, msg: str) None¶
Emit a log record with the given severity level. See spdlog’s source for further details.
Level
Value
trace
0
debug
1
info
2
warn
3
error
4
critical
5
off
6
Parameters¶
level:intSeverity level of the message.
msg:strMessage to log.
- remove_sink(self: vortex.log.Logger, arg0: vortex.log.Sink) None¶
Remove a sink from this logger. Removing a sink that is not attached has no effect.
__CAUTION__
This method is not thread-safe. Do not call this method when a log record might be emitted (e.g., when the engine is running) or while manipulating the list of attached sinks elsewhere.
- set_pattern(self: vortex.log.Logger, arg0: str, arg1: spdlog::pattern_time_type) None¶
Change the pattern for this logger. The pattern is applied to all attached sinks as well. See the spdlog reference for pattern fields. The default pattern is
d-%b-%Y %H:%M:%S.%f] %-10n %^(%L) %v%$.Parameters¶
pattern:strThe new pattern.
- property sinks¶
- Type:
List of attached sinks. Read-only.
__CAUTION__
This property is not thread-safe. Do not read this property when adding or removing sinks elsewhere.
- trace(self: vortex.log.Logger, msg: str) None¶
Log a message at the
tracelevel.Parameters¶
msg:strMessage to log.
- warn(self: vortex.log.Logger, msg: str) None¶
Log a message at the
warnlevel.Parameters¶
msg:strMessage to log.
- class vortex.log.PythonSink¶
Base:
SinkA sink that injects log records into the Python logging system. Internally, this sink creates and caches a Python
logging.Loggerof the appropriate name and forwardslogging.LogRecords tologging.Logger.handle(). Severity levels are translated from spdlog to Python after by multiplying their numeric value by multiplying by10. The log scope is the name of theLogger.spdlog
Python
Level
Value
Level
Value
trace
0
NOTSET
0
debug
1
DEBUG
10
info
2
INFO
20
warn
3
WARNING
30
error
4
ERROR
40
critical
5
CRITICAL
50
off
6
__ATTENTION__
Avoid configuring this sink to accept high-frequency log output (e.g.,
trace-level) as this may degrade logging or application performance.__NOTE__
It is most efficient to create a single application-wide
PythonSinksince this avoid duplication of Pythonlogging.Loggers.These functions are inefficient for larger applications since a new, independent sink is created each call. Larger applications should instead prefer to create sinks manually and attach all required loggers.
In earlier undocumented versions, these functions returned previously-created loggers if a logger of the same name was requested. This is no longer the case since a new logger and sink pair is created during each call.
- flush(self: vortex.log.PythonSink) None¶
Ensure all log records have completed processing.
- set_pattern(self: vortex.log.PythonSink, arg0: str) None¶
Set the formatting pattern for this sink. See
Logger.set_pattern.__NOTE__
Calling
Logger.set_patternpropagates the new pattern to all attached sinks, overwriting any local changes by this method.
- class vortex.log.Sink¶
Abstract base class for all sinks.
- class vortex.log.SinkList¶
- append(self: list[spdlog::sinks::sink], x: spdlog::sinks::sink) None¶
Add an item to the end of the list
- count(self: list[spdlog::sinks::sink], x: spdlog::sinks::sink) int¶
Return the number of times
xappears in the list
- extend(*args, **kwargs)¶
Overloaded function.
extend(self: list[spdlog::sinks::sink], L: list[spdlog::sinks::sink]) -> None
Extend the list by appending all the items in the given list
extend(self: list[spdlog::sinks::sink], L: Iterable) -> None
Extend the list by appending all the items in the given list
- insert(self: list[spdlog::sinks::sink], i: int, x: spdlog::sinks::sink) None¶
Insert an item at a given position.
- pop(*args, **kwargs)¶
Overloaded function.
pop(self: list[spdlog::sinks::sink]) -> spdlog::sinks::sink
Remove and return the last item
pop(self: list[spdlog::sinks::sink], i: int) -> spdlog::sinks::sink
Remove and return the item at index
i
- class vortex.log.StdErrSink¶
Base:
SinkA sink that formats log records to standard error.
All members are inherited.
- flush(self: vortex.log.StdErrSink) None¶
Ensure all log records have completed processing.
- set_pattern(self: vortex.log.StdErrSink, arg0: str) None¶
Set the formatting pattern for this sink. See
Logger.set_pattern.__NOTE__
Calling
Logger.set_patternpropagates the new pattern to all attached sinks, overwriting any local changes by this method.
- class vortex.log.StdOutSink¶
Base:
SinkA sink that formats log records to standard out.
All members are inherited.
- flush(self: vortex.log.StdOutSink) None¶
Ensure all log records have completed processing.
- set_pattern(self: vortex.log.StdOutSink, arg0: str) None¶
Set the formatting pattern for this sink. See
Logger.set_pattern.__NOTE__
Calling
Logger.set_patternpropagates the new pattern to all attached sinks, overwriting any local changes by this method.
- class vortex.marker.Flags¶
- static all() vortex.marker.Flags¶
- clear(*args, **kwargs)¶
Overloaded function.
clear(self: vortex.marker.Flags) -> None
Clears all bits
clear(self: vortex.marker.Flags, arg0: int) -> None
Clears indicated bit
- copy(self: vortex.marker.Flags) vortex.marker.Flags¶
- property max_unique¶
- static none() vortex.marker.Flags¶
- set(*args, **kwargs)¶
Overloaded function.
set(self: vortex.marker.Flags) -> None
Sets all bits
set(self: vortex.marker.Flags, arg0: int) -> None
Sets indicated bit
- property value¶
- class vortex.marker.FlagsList¶
- append(self: vortex.marker.FlagsList, x: vortex.marker.Flags) None¶
Add an item to the end of the list
- clear(self: vortex.marker.FlagsList) None¶
Clear the contents
- count(self: vortex.marker.FlagsList, x: vortex.marker.Flags) int¶
Return the number of times
xappears in the list
- extend(*args, **kwargs)¶
Overloaded function.
extend(self: vortex.marker.FlagsList, L: vortex.marker.FlagsList) -> None
Extend the list by appending all the items in the given list
extend(self: vortex.marker.FlagsList, L: Iterable) -> None
Extend the list by appending all the items in the given list
- insert(self: vortex.marker.FlagsList, i: int, x: vortex.marker.Flags) None¶
Insert an item at a given position.
- pop(*args, **kwargs)¶
Overloaded function.
pop(self: vortex.marker.FlagsList) -> vortex.marker.Flags
Remove and return the last item
pop(self: vortex.marker.FlagsList, i: int) -> vortex.marker.Flags
Remove and return the item at index
i
- remove(self: vortex.marker.FlagsList, x: vortex.marker.Flags) None¶
Remove the first item from the list whose value is x. It is an error if there is no such item.
- class vortex.marker.MarkerList¶
- append(self: vortex.marker.MarkerList, x: vortex.marker.ScanBoundary | vortex.marker.VolumeBoundary | vortex.marker.SegmentBoundary | vortex.marker.ActiveLines | vortex.marker.InactiveLines | vortex.marker.Event) None¶
Add an item to the end of the list
- clear(self: vortex.marker.MarkerList) None¶
Clear the contents
- count(self: vortex.marker.MarkerList, x: vortex.marker.ScanBoundary | vortex.marker.VolumeBoundary | vortex.marker.SegmentBoundary | vortex.marker.ActiveLines | vortex.marker.InactiveLines | vortex.marker.Event) int¶
Return the number of times
xappears in the list
- extend(*args, **kwargs)¶
Overloaded function.
extend(self: vortex.marker.MarkerList, L: vortex.marker.MarkerList) -> None
Extend the list by appending all the items in the given list
extend(self: vortex.marker.MarkerList, L: Iterable) -> None
Extend the list by appending all the items in the given list
- insert(self: vortex.marker.MarkerList, i: int, x: vortex.marker.ScanBoundary | vortex.marker.VolumeBoundary | vortex.marker.SegmentBoundary | vortex.marker.ActiveLines | vortex.marker.InactiveLines | vortex.marker.Event) None¶
Insert an item at a given position.
- pop(*args, **kwargs)¶
Overloaded function.
pop(self: vortex.marker.MarkerList) -> Union[vortex.marker.ScanBoundary, vortex.marker.VolumeBoundary, vortex.marker.SegmentBoundary, vortex.marker.ActiveLines, vortex.marker.InactiveLines, vortex.marker.Event]
Remove and return the last item
pop(self: vortex.marker.MarkerList, i: int) -> Union[vortex.marker.ScanBoundary, vortex.marker.VolumeBoundary, vortex.marker.SegmentBoundary, vortex.marker.ActiveLines, vortex.marker.InactiveLines, vortex.marker.Event]
Remove and return the item at index
i
- remove(self: vortex.marker.MarkerList, x: vortex.marker.ScanBoundary | vortex.marker.VolumeBoundary | vortex.marker.SegmentBoundary | vortex.marker.ActiveLines | vortex.marker.InactiveLines | vortex.marker.Event) None¶
Remove the first item from the list whose value is x. It is an error if there is no such item.
- class vortex.marker.ScanBoundary¶
- property flags¶
- property sample¶
- property sequence¶
- property volume_count_hint¶
- class vortex.marker.SegmentBoundary¶
- property flags¶
- property index_in_volume¶
- property record_count_hint¶
- property reversed¶
- property sample¶
- property sequence¶
- class vortex.marker.VolumeBoundary¶
- property flags¶
- property index_in_scan¶
- property reversed¶
- property sample¶
- property segment_count_hint¶
- property sequence¶
- class vortex.memory.CpuTensorFloat32¶
- clear(self: vortex.memory.CpuTensorFloat32) None¶
- property count¶
- property data¶
- property dimension¶
- property dtype¶
- resize(self: vortex.memory.CpuTensorFloat32, shape: list[int]) None¶
- property shape¶
- shrink(self: vortex.memory.CpuTensorFloat32) None¶
- property size_in_bytes¶
- property stride¶
- property stride_in_bytes¶
- property underlying_size_in_bytes¶
- property valid¶
- class vortex.memory.CpuTensorFloat64¶
- clear(self: vortex.memory.CpuTensorFloat64) None¶
- property count¶
- property data¶
- property dimension¶
- property dtype¶
- resize(self: vortex.memory.CpuTensorFloat64, shape: list[int]) None¶
- property shape¶
- shrink(self: vortex.memory.CpuTensorFloat64) None¶
- property size_in_bytes¶
- property stride¶
- property stride_in_bytes¶
- property underlying_size_in_bytes¶
- property valid¶
- class vortex.memory.CpuTensorInt8¶
- clear(self: vortex.memory.CpuTensorInt8) None¶
- property count¶
- property data¶
- property dimension¶
- property dtype¶
- resize(self: vortex.memory.CpuTensorInt8, shape: list[int]) None¶
- property shape¶
- shrink(self: vortex.memory.CpuTensorInt8) None¶
- property size_in_bytes¶
- property stride¶
- property stride_in_bytes¶
- property underlying_size_in_bytes¶
- property valid¶
- class vortex.memory.CpuTensorUInt16¶
- clear(self: vortex.memory.CpuTensorUInt16) None¶
- property count¶
- property data¶
- property dimension¶
- property dtype¶
- resize(self: vortex.memory.CpuTensorUInt16, shape: list[int]) None¶
- property shape¶
- shrink(self: vortex.memory.CpuTensorUInt16) None¶
- property size_in_bytes¶
- property stride¶
- property stride_in_bytes¶
- property underlying_size_in_bytes¶
- property valid¶
- class vortex.memory.CpuTensorUInt64¶
- clear(self: vortex.memory.CpuTensorUInt64) None¶
- property count¶
- property data¶
- property dimension¶
- property dtype¶
- resize(self: vortex.memory.CpuTensorUInt64, shape: list[int]) None¶
- property shape¶
- shrink(self: vortex.memory.CpuTensorUInt64) None¶
- property size_in_bytes¶
- property stride¶
- property stride_in_bytes¶
- property underlying_size_in_bytes¶
- property valid¶
- class vortex.memory.CudaDeviceTensorFloat32¶
- clear(self: vortex.memory.CudaDeviceTensorFloat32) None¶
- property count¶
- property data¶
- property device¶
- property dimension¶
- property dtype¶
- resize(self: vortex.memory.CudaDeviceTensorFloat32, shape: list[int]) None¶
- property shape¶
- shrink(self: vortex.memory.CudaDeviceTensorFloat32) None¶
- property size_in_bytes¶
- property stride¶
- property stride_in_bytes¶
- property underlying_size_in_bytes¶
- property valid¶
- class vortex.memory.CudaDeviceTensorFloat64¶
- clear(self: vortex.memory.CudaDeviceTensorFloat64) None¶
- property count¶
- property data¶
- property device¶
- property dimension¶
- property dtype¶
- resize(self: vortex.memory.CudaDeviceTensorFloat64, shape: list[int]) None¶
- property shape¶
- shrink(self: vortex.memory.CudaDeviceTensorFloat64) None¶
- property size_in_bytes¶
- property stride¶
- property stride_in_bytes¶
- property underlying_size_in_bytes¶
- property valid¶
- class vortex.memory.CudaDeviceTensorInt8¶
- clear(self: vortex.memory.CudaDeviceTensorInt8) None¶
- property count¶
- property data¶
- property device¶
- property dimension¶
- property dtype¶
- resize(self: vortex.memory.CudaDeviceTensorInt8, shape: list[int]) None¶
- property shape¶
- shrink(self: vortex.memory.CudaDeviceTensorInt8) None¶
- property size_in_bytes¶
- property stride¶
- property stride_in_bytes¶
- property underlying_size_in_bytes¶
- property valid¶
- class vortex.memory.CudaDeviceTensorUInt16¶
- clear(self: vortex.memory.CudaDeviceTensorUInt16) None¶
- property count¶
- property data¶
- property device¶
- property dimension¶
- property dtype¶
- resize(self: vortex.memory.CudaDeviceTensorUInt16, shape: list[int]) None¶
- property shape¶
- shrink(self: vortex.memory.CudaDeviceTensorUInt16) None¶
- property size_in_bytes¶
- property stride¶
- property stride_in_bytes¶
- property underlying_size_in_bytes¶
- property valid¶
- class vortex.memory.CudaDeviceTensorUInt64¶
- clear(self: vortex.memory.CudaDeviceTensorUInt64) None¶
- property count¶
- property data¶
- property device¶
- property dimension¶
- property dtype¶
- resize(self: vortex.memory.CudaDeviceTensorUInt64, shape: list[int]) None¶
- property shape¶
- shrink(self: vortex.memory.CudaDeviceTensorUInt64) None¶
- property size_in_bytes¶
- property stride¶
- property stride_in_bytes¶
- property underlying_size_in_bytes¶
- property valid¶
- class vortex.memory.CudaHostTensorFloat32¶
- clear(self: vortex.memory.CudaHostTensorFloat32) None¶
- property count¶
- property data¶
- property dimension¶
- property dtype¶
- resize(self: vortex.memory.CudaHostTensorFloat32, shape: list[int]) None¶
- property shape¶
- shrink(self: vortex.memory.CudaHostTensorFloat32) None¶
- property size_in_bytes¶
- property stride¶
- property stride_in_bytes¶
- property underlying_size_in_bytes¶
- property valid¶
- class vortex.memory.CudaHostTensorFloat64¶
- clear(self: vortex.memory.CudaHostTensorFloat64) None¶
- property count¶
- property data¶
- property dimension¶
- property dtype¶
- resize(self: vortex.memory.CudaHostTensorFloat64, shape: list[int]) None¶
- property shape¶
- shrink(self: vortex.memory.CudaHostTensorFloat64) None¶
- property size_in_bytes¶
- property stride¶
- property stride_in_bytes¶
- property underlying_size_in_bytes¶
- property valid¶
- class vortex.memory.CudaHostTensorInt8¶
- clear(self: vortex.memory.CudaHostTensorInt8) None¶
- property count¶
- property data¶
- property dimension¶
- property dtype¶
- resize(self: vortex.memory.CudaHostTensorInt8, shape: list[int]) None¶
- property shape¶
- shrink(self: vortex.memory.CudaHostTensorInt8) None¶
- property size_in_bytes¶
- property stride¶
- property stride_in_bytes¶
- property underlying_size_in_bytes¶
- property valid¶
- class vortex.memory.CudaHostTensorUInt16¶
- clear(self: vortex.memory.CudaHostTensorUInt16) None¶
- property count¶
- property data¶
- property dimension¶
- property dtype¶
- resize(self: vortex.memory.CudaHostTensorUInt16, shape: list[int]) None¶
- property shape¶
- shrink(self: vortex.memory.CudaHostTensorUInt16) None¶
- property size_in_bytes¶
- property stride¶
- property stride_in_bytes¶
- property underlying_size_in_bytes¶
- property valid¶
- class vortex.memory.CudaHostTensorUInt64¶
- clear(self: vortex.memory.CudaHostTensorUInt64) None¶
- property count¶
- property data¶
- property dimension¶
- property dtype¶
- resize(self: vortex.memory.CudaHostTensorUInt64, shape: list[int]) None¶
- property shape¶
- shrink(self: vortex.memory.CudaHostTensorUInt64) None¶
- property size_in_bytes¶
- property stride¶
- property stride_in_bytes¶
- property underlying_size_in_bytes¶
- property valid¶
- class vortex.process.CPUProcessor¶
Perform OCT processing with averaging, resampling by linear interpolation, spectral filtering, and FFT on the CPU.
- change(self: vortex.process.CPUProcessor, config: vortex.process.CPUProcessorConfig) None¶
Change the processor configuration. If the change requires buffer reallocation, the pipeline is stalled and record history for the rolling average may be lost. May be called while a block is currently processing.
Parameters¶
configCPUProcessorConfigNew configuration to apply.
- property config¶
- Type:
Copy of the active configuration.
- initialize(self: vortex.process.CPUProcessor, config: vortex.process.CPUProcessorConfig) None¶
Initialize the processor using the supplied configuration. All necessary internal buffers are allocated when this method returns.
Parameters¶
configCPUProcessorConfigNew configuration to apply.
- next(self: vortex.process.CPUProcessor, input_buffer: numpy.ndarray[numpy.uint16], output_buffer: numpy.ndarray[numpy.int8], id: int = 0, append_history: bool = True) None¶
Process the next buffer.
Parameters¶
input_buffernumpy.ndarray[numpy.uint16]The input buffer, with shape that matches
self.config.input_shape.output_buffernumpy.ndarray[numpy.int8]The output buffer, with shape that matches
self.config.output_shape.idintNumber to associate with the buffer for logging purposes.
append_historyboolInclude the raw spectra from this input buffer in the rolling average.
- next_async(self: vortex.process.CPUProcessor, input_buffer: numpy.ndarray[numpy.uint16], output_buffer: numpy.ndarray[numpy.int8], callback: Callable[[std::__exception_ptr::exception_ptr], None], id: int = 0, append_history: bool = True) None¶
Process the next buffer asynchronously and execute the callback when complete.
- __CAUTION__
The callback may be executed in the calling thread before this method returns if an error occurs while queueing the background acquisition.
Parameters¶
input_buffernumpy.ndarray[numpy.uint16]The input buffer, with shape that matches
self.config.input_shape.output_buffernumpy.ndarray[numpy.int8]The output buffer, with shape that matches
self.config.output_shape.callbackCallable[[Exception], None]Callback to execute when buffer is processed. The callback receives as an argument any exception which occurred during processing.
idintNumber to associate with the buffer for logging purposes.
append_historyboolInclude the raw spectra from this input buffer in the rolling average.
- class vortex.process.CPUProcessorConfig¶
Base:
NullProcessorConfigConfiguration object for
CPUProcessor.- property ascans_per_block¶
- Type:
Number of A-scans in each acquired buffer or block. Identical to
records_per_block.
- property average_window¶
- Type:
Length
of rolling average window in records/A-scans for background subtraction. Disable background subtraction by setting to0. Disabled by default.- __NOTE__
Record/A-scan history includes both active and inactive records.
- __WARNING__
Record/A-scan history is stored internally within the processor to allow
average_windowto exceedrecords_per_block. Create a new processor to discard this history.
- property channels_per_sample¶
- copy(self: vortex.process.CPUProcessorConfig) vortex.process.CPUProcessorConfig¶
Create a copy of this configuration.
Returns¶
CPUProcessorConfigThe copy.
- property enable_ifft¶
- Type:
Enable the FFT for OCT processing with length
determined bysamples_per_ascan. When enabled, the FFT is multiplied by the normalization factor of . When disabled, the complex magnitude is performed instead and no normalization factor is applied. Enabled by default.- __NOTE__
If FFT normalization is not desired, scale the spectral filter by
to cancel out the normalization factor.
- property enable_log10¶
- Type:
Enable the application of
to the complex magnitude. Enabled by default.
- property enable_magnitude¶
- Type:
Enable returning the complex magnitude after square and log operations. When enabled, the processor output is complex magnitude. When disabled, the processor output is the real part only. Enabled by default.
- property enable_square¶
- Type:
Enabling squaring of the complex magnitude after the FFT. When enabled, the processor output is power. When disabled, the processor output is amplitude. Enabled by default.
- property input_shape¶
- Type:
List[int[3]]
Required shape of input buffers. Returns list of [
records_per_block,samples_per_record,1]. Read-only.
- property levels¶
- Type:
Optional[Range]
When set, rescale values within [
levels.min,levels.max] to the full range of the output data type. This is helpful for quantization when the output data type has a small dynamic range. When unset, cast values to the output data type directly. Unset by default.
- property output_shape¶
- Type:
List[int[3]]
Required shape of output buffers. Returns list of [
ascans_per_block,samples_per_ascan,1]. Read-only.
- property records_per_block¶
- Type:
Number of records in each input buffer or block. Identical to
ascans_per_block.
- property resampling_samples¶
- Type:
numpy.ndarray[numpy.float32]
Optional positions at which to resample the raw spectra prior FFT. The number of resampled positions determines
samples_per_record. Valid positions are in the range [0,samples_per_record]. Set to an empty array ([]) to disable resampling. Disabled by default.
- property samples_per_ascan¶
- Type:
Number of samples per A-scan. Returns either
samples_per_recordor the length ofresampling_samples, if the latter is available. Read-only.
- property slots¶
- Type:
Number of parallel processing pipelines. Adjust to achieve the desired CPU utilization for machines with high hardware concurrency. Recommended minimum is
2-4slots to facilitate pipelining of successive blocks but higher numbers will likely yield better throughput. Each processing step is individually parallelized across all CPU cores; this field only affects pipeline-level parallelism. Defaults to2.
- property spectral_filter¶
- Type:
numpy.ndarray[numpy.float32 | numpy.complex64]
Optional spectral filter to multiply with the spectra after resampling but before the FFT. Must have shape compatible with [
samples_per_ascan]; that is, the spectral filter should match the length of the output A-scan, not the input record. Set to an empty array ([]) to disable spectral filtering. Disabled by default.
- validate(self: vortex.process.CPUProcessorConfig) None¶
Check the configuration for errors.
Raises¶
RuntimeErrorIf the configuration is invalid.
- class vortex.process.CUDAProcessor¶
Perform OCT processing with averaging, resampling by linear interpolation, spectral filtering, and FFT on a CUDA-capable GPU.
- change(self: vortex.process.CUDAProcessor, config: vortex.process.CUDAProcessorConfig) None¶
Change the processor configuration. May be called while a block is currently processing. If the change requires buffer reallocation, the pipeline is stalled and record history for the rolling average may be lost. Changes that require no buffer reallocation and take effect immediately are
disabling any processing step (e.g., resampling or FFT),
reducing the window of the rolling average, and
altering a non-empty spectral filter or resampling vector without increasing its length.
All other changes will likely require a buffer reallocation.
Parameters¶
configCUDAProcessorConfigNew configuration to apply.
- property config¶
- Type:
Copy of the current configuration.
- initialize(self: vortex.process.CUDAProcessor, config: vortex.process.CUDAProcessorConfig) None¶
Initialize the processor using the supplied configuration. All necessary internal buffers are allocated when this method returns.
Parameters¶
configCUDAProcessorConfigNew configuration to apply.
- next(self: vortex.process.CUDAProcessor, input_buffer: cupy.ndarray[cupy.uint16], output_buffer: cupy.ndarray[cupy.int8], id: int = 0, append_history: bool = True) None¶
Process the next buffer.
Parameters¶
input_buffercupy.ndarray[cupy.uint16]The input buffer, with shape that matches
self.config.input_shape.output_buffercupy.ndarray[cupy.int8]The output buffer, with shape that matches
self.config.output_shape.idintNumber to associate with the buffer for logging purposes.
append_historyboolInclude the raw spectra from this input buffer in the rolling average.
- next_async(self: vortex.process.CUDAProcessor, input_buffer: cupy.ndarray[cupy.uint16], output_buffer: cupy.ndarray[cupy.int8], callback: Callable[[std::__exception_ptr::exception_ptr], None], id: int = 0, append_history: bool = True) None¶
Process the next buffer asynchronously and execute the callback when complete.
- __CAUTION__
The callback may be executed in the calling thread before this method returns if an error occurs while queueing the background acquisition.
Parameters¶
input_buffercupy.ndarray[cupy.uint16]The input buffer, with shape that matches
self.config.input_shape.output_buffercupy.ndarray[cupy.int8]The output buffer, with shape that matches
self.config.output_shape.callbackCallable[[Exception], None]Callback to execute when buffer is processed. The callback receives as an argument any exception which occurred during processing.
idintNumber to associate with the buffer for logging purposes.
append_historyboolInclude the raw spectra from this input buffer in the rolling average.
- class vortex.process.CUDAProcessorConfig¶
Base:
CPUProcessorConfigConfiguration object for
CUDAProcessor.- property ascans_per_block¶
- Type:
Number of A-scans in each acquired buffer or block. Identical to
records_per_block.
- property average_window¶
- Type:
Length
of rolling average window in records/A-scans for background subtraction. Disable background subtraction by setting to0. Disabled by default.- __NOTE__
Record/A-scan history includes both active and inactive records.
- __WARNING__
Record/A-scan history is stored internally within the processor to allow
average_windowto exceedrecords_per_block. Create a new processor to discard this history.
- property channels_per_sample¶
- property clock_channel¶
- Type:
Optional[int]
Index of k-clock channel for dynamic resampling. Enables k-clock resampling on a per A-scan basis with set to a non-
Nonevalue. Defaults toNone.__NOTE__
Dynamic resampling is only supported when the
cuda_dynamic_resamplingfeature is present. This requires CUDA 11 or higher.
- copy(self: vortex.process.CUDAProcessorConfig) vortex.process.CUDAProcessorConfig¶
Create a copy of this configuration.
Returns¶
CUDAProcessorConfigThe copy.
- property enable_ifft¶
- Type:
Enable the FFT for OCT processing with length
determined bysamples_per_ascan. When enabled, the FFT is multiplied by the normalization factor of . When disabled, the complex magnitude is performed instead and no normalization factor is applied. Enabled by default.- __NOTE__
If FFT normalization is not desired, scale the spectral filter by
to cancel out the normalization factor.
- property enable_log10¶
- Type:
Enable the application of
to the complex magnitude. Enabled by default.
- property enable_magnitude¶
- Type:
Enable returning the complex magnitude after square and log operations. When enabled, the processor output is complex magnitude. When disabled, the processor output is the real part only. Enabled by default.
- property enable_square¶
- Type:
Enabling squaring of the complex magnitude after the FFT. When enabled, the processor output is power. When disabled, the processor output is amplitude. Enabled by default.
- property input_shape¶
- Type:
List[int[3]]
Required shape of input buffers. Returns list of [
records_per_block,samples_per_record,1]. Read-only.
- property interpret_as_signed¶
- Type:
Interpret the input data as signed data instead of unsigned data. Relevant only for Python where data types are pre-specified. Defaults to
False.
- property levels¶
- Type:
Optional[Range]
When set, rescale values within [
levels.min,levels.max] to the full range of the output data type. This is helpful for quantization when the output data type has a small dynamic range. When unset, cast values to the output data type directly. Unset by default.
- property output_shape¶
- Type:
List[int[3]]
Required shape of output buffers. Returns list of [
ascans_per_block,samples_per_ascan,1]. Read-only.
- property records_per_block¶
- Type:
Number of records in each input buffer or block. Identical to
ascans_per_block.
- property resampling_samples¶
- Type:
numpy.ndarray[numpy.float32]
Optional positions at which to resample the raw spectra prior FFT. The number of resampled positions determines
samples_per_record. Valid positions are in the range [0,samples_per_record]. Set to an empty array ([]) to disable resampling. Disabled by default.
- property samples_per_ascan¶
- Type:
Number of samples per A-scan. Returns either
samples_per_recordor the length ofresampling_samples, if the latter is available. Read-only.
- property slots¶
- Type:
Number of parallel CUDA streams to use for processing. Recommended minimum is
2slots to facilitate pipelining of successive blocks. For GPUs with sufficient compute resources, increasing the number of slots could enable parallel computation. Defaults to2.
- property spectral_filter¶
- Type:
numpy.ndarray[numpy.float32 | numpy.complex64]
Optional spectral filter to multiply with the spectra after resampling but before the FFT. Must have shape compatible with [
samples_per_ascan]; that is, the spectral filter should match the length of the output A-scan, not the input record. Set to an empty array ([]) to disable spectral filtering. Disabled by default.
- validate(self: vortex.process.CUDAProcessorConfig) None¶
Check the configuration for errors.
Raises¶
RuntimeErrorIf the configuration is invalid.
- class vortex.process.CopyProcessor¶
Copy data from input to output buffers with optional slicing (
) and linear transformation ( and ).OCT processing is not performed. This processor is intended primarily for acquisitions that provide processed OCT data, such as
AlazarFFTAcquisition. Computation is performed on the CPU.- change(self: vortex.process.CopyProcessor, config: vortex.process.CopyProcessorConfig) None¶
Change the processor configuration. All configuration options may be changed, but changes to
CopyProcessorConfig.slotswill not have an effect.- __DANGER__
It is not safe to call this method while a block is currently processing.
Parameters¶
configCopyProcessorConfigNew configuration to apply.
- property config¶
- Type:
Copy of the active configuration.
- initialize(self: vortex.process.CopyProcessor, config: vortex.process.CopyProcessorConfig) None¶
Initialize the processor using the supplied configuration. All necessary internal buffers are allocated when this method returns.
Parameters¶
configCopyProcessorConfigNew configuration to apply.
- next(self: vortex.process.CopyProcessor, input_buffer: numpy.ndarray[numpy.uint16], output_buffer: numpy.ndarray[numpy.int8], id: int = 0) None¶
Process the next buffer.
Parameters¶
input_buffernumpy.ndarray[numpy.uint16]The input buffer, with shape that matches
self.config.input_shape.output_buffernumpy.ndarray[numpy.int8]The output buffer, with shape that matches
self.config.output_shape.idintNumber to associate with the buffer for logging purposes.
- next_async(self: vortex.process.CopyProcessor, input_buffer: numpy.ndarray[numpy.uint16], output_buffer: numpy.ndarray[numpy.int8], callback: Callable[[std::__exception_ptr::exception_ptr], None], id: int = 0) None¶
Process the next buffer asynchronously and execute the callback when complete.
- __CAUTION__
The callback may be executed in the calling thread before this method returns if an error occurs while queueing the background acquisition.
Parameters¶
input_buffernumpy.ndarray[numpy.uint16]The input buffer, with shape that matches
self.config.input_shape.output_buffernumpy.ndarray[numpy.int8]The output buffer, with shape that matches
self.config.output_shape.callbackCallable[[Exception], None]Callback to execute when buffer is processed. The callback receives as an argument any exception which occurred during processing.
idintNumber to associate with the buffer for logging purposes.
- class vortex.process.CopyProcessorConfig¶
Base:
NullProcessorConfigConfiguration object for
CopyProcessor.- property ascans_per_block¶
- Type:
Number of A-scans in each acquired buffer or block. Identical to
records_per_block.
- property channel¶
- property channels_per_sample¶
- copy(self: vortex.process.CopyProcessorConfig) vortex.process.CopyProcessorConfig¶
Create a copy of this configuration.
Returns¶
CopyProcessorConfigThe copy.
hat{x}[i,j,k] = x[i,j,k] - frac{1}{M} sum_{l=0}^{M-1}{ x[i - l,j,k] } ,
z[i,j,k] = big(lceil r[j] rceil - r[j] big) hat{x}big[i, lfloor r[j] rfloor, k big] + big(r[j] - lfloor r[j] rfloorbig) hat{x}big[i, lceil r[j] rceil, k big] ,
y[i,j,k] = log_{10} left| frac{1}{N} mathcal{F}^{-1} big{ h[:,j,:] z[i,j,k] big} right|^2
- property input_shape¶
- Type:
List[int[3]]
Required shape of input buffers. Returns list of [
records_per_block,samples_per_record,1]. Read-only.
- property output_shape¶
- Type:
List[int[3]]
Required shape of output buffers. Returns list of [
ascans_per_block,samples_per_ascan,1]. Read-only.
- property records_per_block¶
- Type:
Number of records in each input buffer or block. Identical to
ascans_per_block.
- property sample_slice¶
- Type:
[NullSlice | SimpleSlice]
Optional slicing operation
to apply along each record/A-scan. Defaults toNullSlice().
- property sample_transform¶
- Type:
Optional linear transformation
and applied to each sample during copy. Defaults toNullTransform().
- property samples_per_ascan¶
- Type:
Number of samples per A-scan. Returns either
samples_per_recordor the length ofresampling_samples, if the latter is available. Read-only.
- property slots¶
- Type:
Number of parallel processing pipelines. Adjust to achieve the desired CPU utilization for machines with high hardware concurrency. Recommended minimum is
2slots to facilitate pipelining of successive blocks. The copy itself parallelized across all CPU cores; this field only affects pipeline-level parallelism. Defaults to2.
- validate(self: vortex.process.CopyProcessorConfig) None¶
Check the configuration for errors.
Raises¶
RuntimeErrorIf the configuration is invalid.
- class vortex.process.NullProcessor¶
Perform no processing.
This class is provided as an engine placeholder for testing or mocking. No operation is performed on the input or output buffers.
- property config¶
- Type:
Copy of the active configuration.
- initialize(self: vortex.process.NullProcessor, config: vortex.process.NullProcessorConfig) None¶
- class vortex.process.NullProcessorConfig¶
Configuration object for
NullProcessor.- property ascans_per_block¶
- Type:
Number of A-scans in each acquired buffer or block. Identical to
records_per_block.
- property channels_per_sample¶
- copy(self: vortex.process.NullProcessorConfig) vortex.process.NullProcessorConfig¶
Create a copy of this configuration.
Returns¶
NullProcessorConfigThe copy.
- property input_shape¶
- Type:
List[int[3]]
Required shape of input buffers. Returns list of [
records_per_block,samples_per_record,1]. Read-only.
- property output_shape¶
- Type:
List[int[3]]
Required shape of output buffers. Returns list of [
ascans_per_block,samples_per_ascan,1]. Read-only.
- property records_per_block¶
- Type:
Number of records in each input buffer or block. Identical to
ascans_per_block.
- property samples_per_ascan¶
- Type:
Number of samples per A-scan. Returns either
samples_per_recordor the length ofresampling_samples, if the latter is available. Read-only.
- validate(self: vortex.process.NullProcessorConfig) None¶
Check the configuration for errors.
Raises¶
RuntimeErrorIf the configuration is invalid.
- class vortex.scan.FreeformScan¶
- change(self: vortex.scan.FreeformScan, config: vortex::scan::detail::patterned_config_factory_t<double, std::variant<vortex::scan::inactive_policy::minimum_dynamic_limited_t, vortex::scan::inactive_policy::fixed_dynamic_limited_t, vortex::scan::inactive_policy::fixed_linear_t>, vortex::scan::null_waypoints_t<double>, vortex::scan::manual_pattern_t<double, std::variant<vortex::marker::scan_boundary, vortex::marker::volume_boundary, vortex::marker::segment_boundary, vortex::marker::active_lines, vortex::marker::inactive_lines, vortex::marker::event> > >, restart: bool = False, event_id: int = 0) None¶
- property config¶
- Type:
Copy of the active configuration. Type corresponds to the derived class.
- initialize(self: vortex.scan.FreeformScan, config: vortex::scan::detail::patterned_config_factory_t<double, std::variant<vortex::scan::inactive_policy::minimum_dynamic_limited_t, vortex::scan::inactive_policy::fixed_dynamic_limited_t, vortex::scan::inactive_policy::fixed_linear_t>, vortex::scan::null_waypoints_t<double>, vortex::scan::manual_pattern_t<double, std::variant<vortex::marker::scan_boundary, vortex::marker::volume_boundary, vortex::marker::segment_boundary, vortex::marker::active_lines, vortex::marker::inactive_lines, vortex::marker::event> > >) None¶
Initialize the scan using the supplied configuration.
Parameters¶
configSegmentedScanConfigNew configuration to apply. Type must match the derived scan type.
- next(*args, **kwargs)¶
Overloaded function.
next(self: vortex.scan.FreeformScan, buffer: numpy.ndarray[numpy.float64]) -> tuple[int, vortex.marker.MarkerList]
next(self: vortex.scan.FreeformScan, markers: vortex.marker.MarkerList, buffer: numpy.ndarray[numpy.float64]) -> int
- prepare(*args, **kwargs)¶
Overloaded function.
prepare(self: vortex.scan.FreeformScan) -> None
Buffer and consolidate the complete scan for rapid generation. If
countis specified, buffer at minimum the requested number of samples. Otherwise, buffer the complete scan. Consolidation will be performed if enabled and the scan becomes fully buffered.Parameters¶
countOptional[int]Number of samples to buffer.
prepare(self: vortex.scan.FreeformScan, count: int) -> None
Buffer and consolidate the complete scan for rapid generation. If
countis specified, buffer at minimum the requested number of samples. Otherwise, buffer the complete scan. Consolidation will be performed if enabled and the scan becomes fully buffered.Parameters¶
countOptional[int]Number of samples to buffer.
- restart(*args, **kwargs)¶
Overloaded function.
restart(self: vortex.scan.FreeformScan) -> None
Reset the scan internal state to the given sample, position, and velocity. Subsequent calls for pattern generation will include a pre-scan inactive segment from this state to the first active segment.
__NOTE__
Specify no arguments or all arguments. If no arguments are specified, the scan resets to the origin at rest.
Parameters¶
sampleintNew sample time.
positionnumpy.ndarray[float]New position for all channels.
velocitynumpy.ndarray[float]New velocity for all channels.
include_startboolIf
True, generate a sample at this new state. IfFalse, do not generate a starting sample, such as when another scan has already produced it.
restart(self: vortex.scan.FreeformScan, sample: int, position: numpy.ndarray[numpy.float64], velocity: numpy.ndarray[numpy.float64], include_start: bool) -> None
Reset the scan internal state to the given sample, position, and velocity. Subsequent calls for pattern generation will include a pre-scan inactive segment from this state to the first active segment.
__NOTE__
Specify no arguments or all arguments. If no arguments are specified, the scan resets to the origin at rest.
Parameters¶
sampleintNew sample time.
positionnumpy.ndarray[float]New position for all channels.
velocitynumpy.ndarray[float]New velocity for all channels.
include_startboolIf
True, generate a sample at this new state. IfFalse, do not generate a starting sample, such as when another scan has already produced it.
- scan_buffer(self: vortex.scan.FreeformScan) numpy.ndarray[numpy.float64]¶
Prepare the scan and return the complete scan waveform for all channels.
- Returns:
numpy.ndarray[float] – Scan waveforms generated at the given sampling rate. Each row is a sample, and each column is a channel.
- scan_markers(self: vortex.scan.FreeformScan) vortex.marker.MarkerList¶
Prepare the scan and return all markers.
- Returns:
List[ScanBoundary | VolumeBoundary | SegmentBoundary | ActiveLines | InactiveLines | Event] – List of all markers in the scan, sorted by sequence number.
- scan_segments(self: vortex.scan.FreeformScan) list[vortex.scan.Segment]¶
Return a list of segments in this scan.
- Returns:
List[Segment] – The scan segments.
- class vortex.scan.FreeformScanConfig¶
Base:
SegmentedScanConfigConfiguration object for
FreeformScan.- property bypass_limits_check¶
- Type:
If
False, check that the scan pattern satisfies position, velocity, and acceleration limits. IfTrue, skip this check. This check does not apply to generated inactive segments. Default isFalse.
- property channels_per_sample¶
- Type:
Number of channels per sample. Default is
2for a 2D scan pattern.
- property consolidate¶
- Type:
Optimize internal scan buffers once the scan has looped once. Default is
False.
- property inactive_policy¶
- Type:
Policy to use for generating inactive segments. Default is
MinimumDynamicLimited().
- property limits¶
- Type:
List[Limits]
Dynamics limits for each channel of the scan. These are used for limit checks and inactive segment policies. Default is
[Limits(position=(-12.5, 12.5), velocity=8e3, acceleration=5e6)]*2.
- property loop¶
- Type:
Restart the scan after it completes. This produces an infinite scan pattern. Default is
True.
- property pattern¶
- property samples_per_second¶
- Type:
Number of samples per second for the scan. This is used to ensure that dynamic limits are met. Default is
100_000.
- property sampling_interval¶
- Type:
Interval between samples computed from
samples_per_second. Read-only.
- to_segments(self: vortex.scan.FreeformScanConfig) list[vortex.scan.Segment]¶
Generate the segments described by this configuration.
- Returns:
List[Segment] – The pattern segments.
__SEEALSO__
See Interleave Different Scans for an example application.
- class vortex.scan.Limits¶
Dynamics limits for a single axis.
- copy(self: vortex.scan.Limits) vortex.scan.Limits¶
- class vortex.scan.RadialScan¶
- change(self: vortex.scan.RadialScan, config: vortex::scan::detail::patterned_config_factory_t<double, std::variant<vortex::scan::inactive_policy::minimum_dynamic_limited_t, vortex::scan::inactive_policy::fixed_dynamic_limited_t, vortex::scan::inactive_policy::fixed_linear_t>, vortex::scan::radial_waypoints_t<double, std::variant<vortex::scan::warp::none_t, vortex::scan::warp::angular_t, vortex::scan::warp::telecentric_t> >, vortex::scan::sequential_pattern_t<std::variant<vortex::marker::scan_boundary, vortex::marker::volume_boundary, vortex::marker::segment_boundary, vortex::marker::active_lines, vortex::marker::inactive_lines, vortex::marker::event>, vortex::marker::flags_t<unsigned long, unsigned char> > >, restart: bool = False, event_id: int = 0) None¶
- property config¶
- Type:
Copy of the active configuration. Type corresponds to the derived class.
- initialize(self: vortex.scan.RadialScan, config: vortex::scan::detail::patterned_config_factory_t<double, std::variant<vortex::scan::inactive_policy::minimum_dynamic_limited_t, vortex::scan::inactive_policy::fixed_dynamic_limited_t, vortex::scan::inactive_policy::fixed_linear_t>, vortex::scan::radial_waypoints_t<double, std::variant<vortex::scan::warp::none_t, vortex::scan::warp::angular_t, vortex::scan::warp::telecentric_t> >, vortex::scan::sequential_pattern_t<std::variant<vortex::marker::scan_boundary, vortex::marker::volume_boundary, vortex::marker::segment_boundary, vortex::marker::active_lines, vortex::marker::inactive_lines, vortex::marker::event>, vortex::marker::flags_t<unsigned long, unsigned char> > >) None¶
Initialize the scan using the supplied configuration.
Parameters¶
configSegmentedScanConfigNew configuration to apply. Type must match the derived scan type.
- next(*args, **kwargs)¶
Overloaded function.
next(self: vortex.scan.RadialScan, buffer: numpy.ndarray[numpy.float64]) -> tuple[int, vortex.marker.MarkerList]
next(self: vortex.scan.RadialScan, markers: vortex.marker.MarkerList, buffer: numpy.ndarray[numpy.float64]) -> int
- prepare(*args, **kwargs)¶
Overloaded function.
prepare(self: vortex.scan.RadialScan) -> None
Buffer and consolidate the complete scan for rapid generation. If
countis specified, buffer at minimum the requested number of samples. Otherwise, buffer the complete scan. Consolidation will be performed if enabled and the scan becomes fully buffered.Parameters¶
countOptional[int]Number of samples to buffer.
prepare(self: vortex.scan.RadialScan, count: int) -> None
Buffer and consolidate the complete scan for rapid generation. If
countis specified, buffer at minimum the requested number of samples. Otherwise, buffer the complete scan. Consolidation will be performed if enabled and the scan becomes fully buffered.Parameters¶
countOptional[int]Number of samples to buffer.
- restart(*args, **kwargs)¶
Overloaded function.
restart(self: vortex.scan.RadialScan) -> None
Reset the scan internal state to the given sample, position, and velocity. Subsequent calls for pattern generation will include a pre-scan inactive segment from this state to the first active segment.
__NOTE__
Specify no arguments or all arguments. If no arguments are specified, the scan resets to the origin at rest.
Parameters¶
sampleintNew sample time.
positionnumpy.ndarray[float]New position for all channels.
velocitynumpy.ndarray[float]New velocity for all channels.
include_startboolIf
True, generate a sample at this new state. IfFalse, do not generate a starting sample, such as when another scan has already produced it.
restart(self: vortex.scan.RadialScan, sample: int, position: numpy.ndarray[numpy.float64], velocity: numpy.ndarray[numpy.float64], include_start: bool) -> None
Reset the scan internal state to the given sample, position, and velocity. Subsequent calls for pattern generation will include a pre-scan inactive segment from this state to the first active segment.
__NOTE__
Specify no arguments or all arguments. If no arguments are specified, the scan resets to the origin at rest.
Parameters¶
sampleintNew sample time.
positionnumpy.ndarray[float]New position for all channels.
velocitynumpy.ndarray[float]New velocity for all channels.
include_startboolIf
True, generate a sample at this new state. IfFalse, do not generate a starting sample, such as when another scan has already produced it.
- scan_buffer(self: vortex.scan.RadialScan) numpy.ndarray[numpy.float64]¶
Prepare the scan and return the complete scan waveform for all channels.
- Returns:
numpy.ndarray[float] – Scan waveforms generated at the given sampling rate. Each row is a sample, and each column is a channel.
- scan_markers(self: vortex.scan.RadialScan) vortex.marker.MarkerList¶
Prepare the scan and return all markers.
- Returns:
List[ScanBoundary | VolumeBoundary | SegmentBoundary | ActiveLines | InactiveLines | Event] – List of all markers in the scan, sorted by sequence number.
- scan_segments(self: vortex.scan.RadialScan) list[vortex.scan.Segment]¶
Return a list of segments in this scan.
- Returns:
List[Segment] – The scan segments.
- class vortex.scan.RadialScanConfig¶
Bases:
RadialWaypoints,SequentialPattern,SegmentedScanConfigConfiguration object for
RadialScan.All members are inherited.
- property angle¶
- property ascans_per_bscan¶
- property bidirectional_segments¶
- property bidirectional_volumes¶
- property bscan_extent¶
- property bscans_per_volume¶
- property bypass_limits_check¶
- Type:
If
False, check that the scan pattern satisfies position, velocity, and acceleration limits. IfTrue, skip this check. This check does not apply to generated inactive segments. Default isFalse.
- property channels_per_sample¶
- Type:
Number of channels per sample. Default is
2for a 2D scan pattern.
- property consolidate¶
- Type:
Optimize internal scan buffers once the scan has looped once. Default is
False.
- copy(*args, **kwargs)¶
Overloaded function.
copy(self: vortex.scan.RadialScanConfig) -> vortex.scan.RadialScanConfig
copy(self: vortex.scan.RadialScanConfig) -> vortex.scan.RadialScanConfig
- property extents¶
- property flags¶
- property inactive_policy¶
- Type:
Policy to use for generating inactive segments. Default is
MinimumDynamicLimited().
- property limits¶
- Type:
List[Limits]
Dynamics limits for each channel of the scan. These are used for limit checks and inactive segment policies. Default is
[Limits(position=(-12.5, 12.5), velocity=8e3, acceleration=5e6)]*2.
- property loop¶
- Type:
Restart the scan after it completes. This produces an infinite scan pattern. Default is
True.
- property offset¶
- property samples_per_second¶
- Type:
Number of samples per second for the scan. This is used to ensure that dynamic limits are met. Default is
100_000.
- property samples_per_segment¶
- property sampling_interval¶
- Type:
Interval between samples computed from
samples_per_second. Read-only.
- property segment_extent¶
- property segments_per_volume¶
- set_aiming(self: vortex.scan.RadialScanConfig) None¶
- set_evenly_spaced(self: vortex.scan.RadialScanConfig, arg0: int) None¶
- set_half_evenly_spaced(self: vortex.scan.RadialScanConfig, arg0: int) None¶
- property shape¶
- to_pattern(*args, **kwargs)¶
Overloaded function.
to_pattern(self: vortex.scan.RadialScanConfig, arg0: numpy.ndarray[numpy.float64]) -> list[vortex.scan.Segment]
to_pattern(self: vortex.scan.RadialScanConfig, arg0: list[numpy.ndarray[numpy.float64]]) -> list[vortex.scan.Segment]
- to_segments(self: vortex.scan.RadialScanConfig) list[vortex.scan.Segment]¶
Generate the segments described by this configuration.
- Returns:
List[Segment] – The pattern segments.
__SEEALSO__
See Interleave Different Scans for an example application.
- to_waypoints(self: vortex.scan.RadialScanConfig) numpy.ndarray[numpy.float64]¶
- property volume_extent¶
- property warp¶
- class vortex.scan.RadialWaypoints¶
Base:
XYWaypointsGenerate waypoints on a
polar grid with segments per volume and samples per segment. The volume direction is along the positive the -axis whereas the segment or B-scan direction is along the positive -axis. The physical extents of the waypoints have no required units and may be interpreted as linear (e.g., millimeters) or angular (e.g., radians or degrees). The waypoint positions as described mathematically below.The parameters that define
are adjusted via the the following properties and those inherited fromXYWaypoints.- property angle¶
- Type:
Counter-clockwise rotation
about the scan origin (offset) in radians. Default is0.
- property ascans_per_bscan¶
- Type:
Alias for
samples_per_segment
- property bscan_extent¶
- Type:
Alias for
segment_extent.
- property bscans_per_volume¶
- Type:
Alias for
segments_per_volume.
- property extents¶
-
Scan extents as [
volume_extent,segment_extent].
- property offset¶
-
Offset
of the scan origin in and , respectively. Default is(0, 0).
- property segment_extent¶
- Type:
Unitless minimum
and maximum position of each segment. To flip the segment direction, set a negative maximum and a positive minimum. No requirement for symmetry. Default isRange(-2, 2).
- set_aiming(self: vortex.scan.RadialWaypoints) None¶
Adjust
volume_extentandsegments_per_volumeto yield two orthogonal segments. Internally callsset_half_evenly_spaced()withn = 2.
- set_evenly_spaced(self: vortex.scan.RadialWaypoints, arg0: int) None¶
Adjust
volume_extentandsegments_per_volumeyieldnevenly spaced segments over 360 degrees, omitting the final segment.Parameters¶
nintNumber of segments to use.
- set_half_evenly_spaced(self: vortex.scan.RadialWaypoints, arg0: int) None¶
Adjust
volume_extentandsegments_per_volumeyieldnevenly spaced segments over 180 degrees, omitting the final segment. For segments that span the origin, this yields a scan that covers the full circle without overlap.Parameters¶
nintNumber of segments to use.
- property shape¶
-
Scan shape as [
segments_per_volume,samples_per_segment].
- to_waypoints(self: vortex.scan.RadialWaypoints) numpy.ndarray[numpy.float64]¶
Generate an
grid of waypoints for and . The specific waypoint positions are determined by the base class.- Returns:
numpy.ndarray[numpy.float64] – The waypoints 3D array with shape [
segments_per_volume,samples_per_segment,2], where the channels are and positions.
- property volume_extent¶
- Type:
Unitless minimum
and maximum position of each volume. To flip the volume direction, set a negative maximum and a positive minimum. No requirement for symmetry. Default isRange(0, pi).
- property warp¶
- Type:
[NoWarp | AngularWarp | TelecentricWarp]
Warp to apply to waypoints, which may transform the units of the scan waypoints. Default is
NoWarp().
- class vortex.scan.RasterScan¶
- change(self: vortex.scan.RasterScan, config: vortex::scan::detail::patterned_config_factory_t<double, std::variant<vortex::scan::inactive_policy::minimum_dynamic_limited_t, vortex::scan::inactive_policy::fixed_dynamic_limited_t, vortex::scan::inactive_policy::fixed_linear_t>, vortex::scan::raster_waypoints_t<double, std::variant<vortex::scan::warp::none_t, vortex::scan::warp::angular_t, vortex::scan::warp::telecentric_t> >, vortex::scan::sequential_pattern_t<std::variant<vortex::marker::scan_boundary, vortex::marker::volume_boundary, vortex::marker::segment_boundary, vortex::marker::active_lines, vortex::marker::inactive_lines, vortex::marker::event>, vortex::marker::flags_t<unsigned long, unsigned char> > >, restart: bool = False, event_id: int = 0) None¶
- property config¶
- Type:
Copy of the active configuration. Type corresponds to the derived class.
- initialize(self: vortex.scan.RasterScan, config: vortex::scan::detail::patterned_config_factory_t<double, std::variant<vortex::scan::inactive_policy::minimum_dynamic_limited_t, vortex::scan::inactive_policy::fixed_dynamic_limited_t, vortex::scan::inactive_policy::fixed_linear_t>, vortex::scan::raster_waypoints_t<double, std::variant<vortex::scan::warp::none_t, vortex::scan::warp::angular_t, vortex::scan::warp::telecentric_t> >, vortex::scan::sequential_pattern_t<std::variant<vortex::marker::scan_boundary, vortex::marker::volume_boundary, vortex::marker::segment_boundary, vortex::marker::active_lines, vortex::marker::inactive_lines, vortex::marker::event>, vortex::marker::flags_t<unsigned long, unsigned char> > >) None¶
Initialize the scan using the supplied configuration.
Parameters¶
configSegmentedScanConfigNew configuration to apply. Type must match the derived scan type.
- next(*args, **kwargs)¶
Overloaded function.
next(self: vortex.scan.RasterScan, buffer: numpy.ndarray[numpy.float64]) -> tuple[int, vortex.marker.MarkerList]
next(self: vortex.scan.RasterScan, markers: vortex.marker.MarkerList, buffer: numpy.ndarray[numpy.float64]) -> int
- prepare(*args, **kwargs)¶
Overloaded function.
prepare(self: vortex.scan.RasterScan) -> None
Buffer and consolidate the complete scan for rapid generation. If
countis specified, buffer at minimum the requested number of samples. Otherwise, buffer the complete scan. Consolidation will be performed if enabled and the scan becomes fully buffered.Parameters¶
countOptional[int]Number of samples to buffer.
prepare(self: vortex.scan.RasterScan, count: int) -> None
Buffer and consolidate the complete scan for rapid generation. If
countis specified, buffer at minimum the requested number of samples. Otherwise, buffer the complete scan. Consolidation will be performed if enabled and the scan becomes fully buffered.Parameters¶
countOptional[int]Number of samples to buffer.
- restart(*args, **kwargs)¶
Overloaded function.
restart(self: vortex.scan.RasterScan) -> None
Reset the scan internal state to the given sample, position, and velocity. Subsequent calls for pattern generation will include a pre-scan inactive segment from this state to the first active segment.
__NOTE__
Specify no arguments or all arguments. If no arguments are specified, the scan resets to the origin at rest.
Parameters¶
sampleintNew sample time.
positionnumpy.ndarray[float]New position for all channels.
velocitynumpy.ndarray[float]New velocity for all channels.
include_startboolIf
True, generate a sample at this new state. IfFalse, do not generate a starting sample, such as when another scan has already produced it.
restart(self: vortex.scan.RasterScan, sample: int, position: numpy.ndarray[numpy.float64], velocity: numpy.ndarray[numpy.float64], include_start: bool) -> None
Reset the scan internal state to the given sample, position, and velocity. Subsequent calls for pattern generation will include a pre-scan inactive segment from this state to the first active segment.
__NOTE__
Specify no arguments or all arguments. If no arguments are specified, the scan resets to the origin at rest.
Parameters¶
sampleintNew sample time.
positionnumpy.ndarray[float]New position for all channels.
velocitynumpy.ndarray[float]New velocity for all channels.
include_startboolIf
True, generate a sample at this new state. IfFalse, do not generate a starting sample, such as when another scan has already produced it.
- scan_buffer(self: vortex.scan.RasterScan) numpy.ndarray[numpy.float64]¶
Prepare the scan and return the complete scan waveform for all channels.
- Returns:
numpy.ndarray[float] – Scan waveforms generated at the given sampling rate. Each row is a sample, and each column is a channel.
- scan_markers(self: vortex.scan.RasterScan) vortex.marker.MarkerList¶
Prepare the scan and return all markers.
- Returns:
List[ScanBoundary | VolumeBoundary | SegmentBoundary | ActiveLines | InactiveLines | Event] – List of all markers in the scan, sorted by sequence number.
- scan_segments(self: vortex.scan.RasterScan) list[vortex.scan.Segment]¶
Return a list of segments in this scan.
- Returns:
List[Segment] – The scan segments.
- class vortex.scan.RasterScanConfig¶
Bases:
RasterWaypoints,SequentialPattern,SegmentedScanConfigConfiguration object for
RasterScan.All members are inherited.
- property angle¶
- property ascans_per_bscan¶
- property bidirectional_segments¶
- property bidirectional_volumes¶
- property bscan_extent¶
- property bscans_per_volume¶
- property bypass_limits_check¶
- Type:
If
False, check that the scan pattern satisfies position, velocity, and acceleration limits. IfTrue, skip this check. This check does not apply to generated inactive segments. Default isFalse.
- property channels_per_sample¶
- Type:
Number of channels per sample. Default is
2for a 2D scan pattern.
- property consolidate¶
- Type:
Optimize internal scan buffers once the scan has looped once. Default is
False.
- copy(*args, **kwargs)¶
Overloaded function.
copy(self: vortex.scan.RasterScanConfig) -> vortex.scan.RasterScanConfig
copy(self: vortex.scan.RasterScanConfig) -> vortex.scan.RasterScanConfig
- property extents¶
- property flags¶
- property inactive_policy¶
- Type:
Policy to use for generating inactive segments. Default is
MinimumDynamicLimited().
- property limits¶
- Type:
List[Limits]
Dynamics limits for each channel of the scan. These are used for limit checks and inactive segment policies. Default is
[Limits(position=(-12.5, 12.5), velocity=8e3, acceleration=5e6)]*2.
- property loop¶
- Type:
Restart the scan after it completes. This produces an infinite scan pattern. Default is
True.
- property offset¶
- property samples_per_second¶
- Type:
Number of samples per second for the scan. This is used to ensure that dynamic limits are met. Default is
100_000.
- property samples_per_segment¶
- property sampling_interval¶
- Type:
Interval between samples computed from
samples_per_second. Read-only.
- property segment_extent¶
- property segments_per_volume¶
- property shape¶
- to_pattern(*args, **kwargs)¶
Overloaded function.
to_pattern(self: vortex.scan.RasterScanConfig, arg0: numpy.ndarray[numpy.float64]) -> list[vortex.scan.Segment]
to_pattern(self: vortex.scan.RasterScanConfig, arg0: list[numpy.ndarray[numpy.float64]]) -> list[vortex.scan.Segment]
- to_segments(self: vortex.scan.RasterScanConfig) list[vortex.scan.Segment]¶
Generate the segments described by this configuration.
- Returns:
List[Segment] – The pattern segments.
__SEEALSO__
See Interleave Different Scans for an example application.
- to_waypoints(self: vortex.scan.RasterScanConfig) numpy.ndarray[numpy.float64]¶
- property volume_extent¶
- property warp¶
- class vortex.scan.RasterWaypoints¶
Base:
XYWaypointsGenerate waypoints on a
rectangular grid with segments per volume and samples per segment. The volume direction is along the positive the -axis whereas the segment or B-scan direction is along the positive -axis. The physical extents of the waypoints have no required units and may be interpreted as linear (e.g., millimeters) or angular (e.g., radians or degrees). The waypoint positions as described mathematically below.The parameters that define
are adjusted via the the following properties and those inherited fromXYWaypoints.- property angle¶
- Type:
Counter-clockwise rotation
about the scan origin (offset) in radians. Default is0.
- property ascans_per_bscan¶
- Type:
Alias for
samples_per_segment
- property bscan_extent¶
- Type:
Alias for
segment_extent.
- property bscans_per_volume¶
- Type:
Alias for
segments_per_volume.
- property extents¶
-
Scan extents as [
volume_extent,segment_extent].
- property offset¶
-
Offset
of the scan origin in and , respectively. Default is(0, 0).
- property segment_extent¶
- Type:
Unitless minimum
and maximum position of each segment. To flip the segment direction, set a negative maximum and a positive minimum. No requirement for symmetry. Default isRange(-2, 2).
- property shape¶
-
Scan shape as [
segments_per_volume,samples_per_segment].
- to_waypoints(self: vortex.scan.RasterWaypoints) numpy.ndarray[numpy.float64]¶
Generate an
grid of waypoints for and . The specific waypoint positions are determined by the base class.- Returns:
numpy.ndarray[numpy.float64] – The waypoints 3D array with shape [
segments_per_volume,samples_per_segment,2], where the channels are and positions.
- property volume_extent¶
- Type:
Unitless minimum
and maximum position of each volume. To flip the volume direction, set a negative maximum and a positive minimum. No requirement for symmetry. Default isRange(-1, 1).
- property warp¶
- Type:
[NoWarp | AngularWarp | TelecentricWarp]
Warp to apply to waypoints, which may transform the units of the scan waypoints. Default is
NoWarp().
- class vortex.scan.RepeatFlags¶
- copy(self: vortex.scan.RepeatFlags) vortex.scan.RepeatFlags¶
- property flags¶
- class vortex.scan.RepeatOrder¶
- copy(self: vortex.scan.RepeatOrder) vortex.scan.RepeatOrder¶
- property flags¶
- class vortex.scan.RepeatPack¶
- copy(self: vortex.scan.RepeatPack) vortex.scan.RepeatPack¶
- property flags¶
- class vortex.scan.RepeatedPattern¶
Repeat segments with specified repetition count and period.
- property bidirectional_segments¶
- Type:
If
True, flip the direction of every odd-indexed segment. Odd-indexed segments are marked as reversed for unflipping during formatting. IfFalse, maintain the direction of each segment. Default isFalse.__CAUTION__
An odd repeat period will cause repetitions of a given segment to alternate directions.
__SEEALSO__
See Repeated Scan with Bidirectional Segments for an example.
- property repeat_period¶
- Type:
Number of segments to execute in order before repeating. Default is
2.
- property repeat_strategy¶
- Type:
[RepeatOrder | RepeatPack | RepeatFlags]
The strategy for handling repeated segments in memory.
RepeatOrder: Scan is performedABCABCABCand is stored in memory asABCABCABC.RepeatPack: Scan is performedABCABCABCbut is stored in memory asAAABBBCCC.RepeatFlags: Each repeat is marked with different flags, allowing the user to route them to different processing.
Default is
RepeatPack().
- to_pattern(*args, **kwargs)¶
Overloaded function.
to_pattern(self: vortex.scan.RepeatedPattern, arg0: numpy.ndarray[numpy.float64]) -> list[vortex.scan.Segment]
to_pattern(self: vortex.scan.RepeatedPattern, arg0: list[numpy.ndarray[numpy.float64]]) -> list[vortex.scan.Segment]
- class vortex.scan.RepeatedRadialScan¶
- change(self: vortex.scan.RepeatedRadialScan, config: vortex::scan::detail::patterned_config_factory_t<double, std::variant<vortex::scan::inactive_policy::minimum_dynamic_limited_t, vortex::scan::inactive_policy::fixed_dynamic_limited_t, vortex::scan::inactive_policy::fixed_linear_t>, vortex::scan::radial_waypoints_t<double, std::variant<vortex::scan::warp::none_t, vortex::scan::warp::angular_t, vortex::scan::warp::telecentric_t> >, vortex::scan::repeated_pattern_t<std::variant<vortex::marker::scan_boundary, vortex::marker::volume_boundary, vortex::marker::segment_boundary, vortex::marker::active_lines, vortex::marker::inactive_lines, vortex::marker::event>, vortex::marker::flags_t<unsigned long, unsigned char> > >, restart: bool = False, event_id: int = 0) None¶
- property config¶
- Type:
Copy of the active configuration. Type corresponds to the derived class.
- initialize(self: vortex.scan.RepeatedRadialScan, config: vortex::scan::detail::patterned_config_factory_t<double, std::variant<vortex::scan::inactive_policy::minimum_dynamic_limited_t, vortex::scan::inactive_policy::fixed_dynamic_limited_t, vortex::scan::inactive_policy::fixed_linear_t>, vortex::scan::radial_waypoints_t<double, std::variant<vortex::scan::warp::none_t, vortex::scan::warp::angular_t, vortex::scan::warp::telecentric_t> >, vortex::scan::repeated_pattern_t<std::variant<vortex::marker::scan_boundary, vortex::marker::volume_boundary, vortex::marker::segment_boundary, vortex::marker::active_lines, vortex::marker::inactive_lines, vortex::marker::event>, vortex::marker::flags_t<unsigned long, unsigned char> > >) None¶
Initialize the scan using the supplied configuration.
Parameters¶
configSegmentedScanConfigNew configuration to apply. Type must match the derived scan type.
- next(*args, **kwargs)¶
Overloaded function.
next(self: vortex.scan.RepeatedRadialScan, buffer: numpy.ndarray[numpy.float64]) -> tuple[int, vortex.marker.MarkerList]
next(self: vortex.scan.RepeatedRadialScan, markers: vortex.marker.MarkerList, buffer: numpy.ndarray[numpy.float64]) -> int
- prepare(*args, **kwargs)¶
Overloaded function.
prepare(self: vortex.scan.RepeatedRadialScan) -> None
Buffer and consolidate the complete scan for rapid generation. If
countis specified, buffer at minimum the requested number of samples. Otherwise, buffer the complete scan. Consolidation will be performed if enabled and the scan becomes fully buffered.Parameters¶
countOptional[int]Number of samples to buffer.
prepare(self: vortex.scan.RepeatedRadialScan, count: int) -> None
Buffer and consolidate the complete scan for rapid generation. If
countis specified, buffer at minimum the requested number of samples. Otherwise, buffer the complete scan. Consolidation will be performed if enabled and the scan becomes fully buffered.Parameters¶
countOptional[int]Number of samples to buffer.
- restart(*args, **kwargs)¶
Overloaded function.
restart(self: vortex.scan.RepeatedRadialScan) -> None
Reset the scan internal state to the given sample, position, and velocity. Subsequent calls for pattern generation will include a pre-scan inactive segment from this state to the first active segment.
__NOTE__
Specify no arguments or all arguments. If no arguments are specified, the scan resets to the origin at rest.
Parameters¶
sampleintNew sample time.
positionnumpy.ndarray[float]New position for all channels.
velocitynumpy.ndarray[float]New velocity for all channels.
include_startboolIf
True, generate a sample at this new state. IfFalse, do not generate a starting sample, such as when another scan has already produced it.
restart(self: vortex.scan.RepeatedRadialScan, sample: int, position: numpy.ndarray[numpy.float64], velocity: numpy.ndarray[numpy.float64], include_start: bool) -> None
Reset the scan internal state to the given sample, position, and velocity. Subsequent calls for pattern generation will include a pre-scan inactive segment from this state to the first active segment.
__NOTE__
Specify no arguments or all arguments. If no arguments are specified, the scan resets to the origin at rest.
Parameters¶
sampleintNew sample time.
positionnumpy.ndarray[float]New position for all channels.
velocitynumpy.ndarray[float]New velocity for all channels.
include_startboolIf
True, generate a sample at this new state. IfFalse, do not generate a starting sample, such as when another scan has already produced it.
- scan_buffer(self: vortex.scan.RepeatedRadialScan) numpy.ndarray[numpy.float64]¶
Prepare the scan and return the complete scan waveform for all channels.
- Returns:
numpy.ndarray[float] – Scan waveforms generated at the given sampling rate. Each row is a sample, and each column is a channel.
- scan_markers(self: vortex.scan.RepeatedRadialScan) vortex.marker.MarkerList¶
Prepare the scan and return all markers.
- Returns:
List[ScanBoundary | VolumeBoundary | SegmentBoundary | ActiveLines | InactiveLines | Event] – List of all markers in the scan, sorted by sequence number.
- scan_segments(self: vortex.scan.RepeatedRadialScan) list[vortex.scan.Segment]¶
Return a list of segments in this scan.
- Returns:
List[Segment] – The scan segments.
- class vortex.scan.RepeatedRadialScanConfig¶
Bases:
RepeatedRadialWaypoints,SequentialPattern,SegmentedScanConfigConfiguration object for
RepeatedRadialScan.All members are inherited.
- property angle¶
- property ascans_per_bscan¶
- property bidirectional_segments¶
- property bscan_extent¶
- property bscans_per_volume¶
- property bypass_limits_check¶
- Type:
If
False, check that the scan pattern satisfies position, velocity, and acceleration limits. IfTrue, skip this check. This check does not apply to generated inactive segments. Default isFalse.
- property channels_per_sample¶
- Type:
Number of channels per sample. Default is
2for a 2D scan pattern.
- property consolidate¶
- Type:
Optimize internal scan buffers once the scan has looped once. Default is
False.
- copy(*args, **kwargs)¶
Overloaded function.
copy(self: vortex.scan.RepeatedRadialScanConfig) -> vortex.scan.RepeatedRadialScanConfig
copy(self: vortex.scan.RepeatedRadialScanConfig) -> vortex.scan.RepeatedRadialScanConfig
- property extents¶
- property inactive_policy¶
- Type:
Policy to use for generating inactive segments. Default is
MinimumDynamicLimited().
- property limits¶
- Type:
List[Limits]
Dynamics limits for each channel of the scan. These are used for limit checks and inactive segment policies. Default is
[Limits(position=(-12.5, 12.5), velocity=8e3, acceleration=5e6)]*2.
- property loop¶
- Type:
Restart the scan after it completes. This produces an infinite scan pattern. Default is
True.
- property offset¶
- property repeat_count¶
- property repeat_period¶
- property repeat_strategy¶
- property samples_per_second¶
- Type:
Number of samples per second for the scan. This is used to ensure that dynamic limits are met. Default is
100_000.
- property samples_per_segment¶
- property sampling_interval¶
- Type:
Interval between samples computed from
samples_per_second. Read-only.
- property segment_extent¶
- property segments_per_volume¶
- set_aiming(self: vortex.scan.RepeatedRadialScanConfig) None¶
- set_evenly_spaced(self: vortex.scan.RepeatedRadialScanConfig, arg0: int) None¶
- set_half_evenly_spaced(self: vortex.scan.RepeatedRadialScanConfig, arg0: int) None¶
- property shape¶
- to_pattern(*args, **kwargs)¶
Overloaded function.
to_pattern(self: vortex.scan.RepeatedRadialScanConfig, arg0: numpy.ndarray[numpy.float64]) -> list[vortex.scan.Segment]
to_pattern(self: vortex.scan.RepeatedRadialScanConfig, arg0: list[numpy.ndarray[numpy.float64]]) -> list[vortex.scan.Segment]
- to_segments(self: vortex.scan.RepeatedRadialScanConfig) list[vortex.scan.Segment]¶
Generate the segments described by this configuration.
- Returns:
List[Segment] – The pattern segments.
__SEEALSO__
See Interleave Different Scans for an example application.
- to_waypoints(self: vortex.scan.RepeatedRadialScanConfig) numpy.ndarray[numpy.float64]¶
- property volume_extent¶
- property warp¶
- class vortex.scan.RepeatedRasterScan¶
- change(self: vortex.scan.RepeatedRasterScan, config: vortex::scan::detail::patterned_config_factory_t<double, std::variant<vortex::scan::inactive_policy::minimum_dynamic_limited_t, vortex::scan::inactive_policy::fixed_dynamic_limited_t, vortex::scan::inactive_policy::fixed_linear_t>, vortex::scan::raster_waypoints_t<double, std::variant<vortex::scan::warp::none_t, vortex::scan::warp::angular_t, vortex::scan::warp::telecentric_t> >, vortex::scan::repeated_pattern_t<std::variant<vortex::marker::scan_boundary, vortex::marker::volume_boundary, vortex::marker::segment_boundary, vortex::marker::active_lines, vortex::marker::inactive_lines, vortex::marker::event>, vortex::marker::flags_t<unsigned long, unsigned char> > >, restart: bool = False, event_id: int = 0) None¶
- property config¶
- Type:
Copy of the active configuration. Type corresponds to the derived class.
- initialize(self: vortex.scan.RepeatedRasterScan, config: vortex::scan::detail::patterned_config_factory_t<double, std::variant<vortex::scan::inactive_policy::minimum_dynamic_limited_t, vortex::scan::inactive_policy::fixed_dynamic_limited_t, vortex::scan::inactive_policy::fixed_linear_t>, vortex::scan::raster_waypoints_t<double, std::variant<vortex::scan::warp::none_t, vortex::scan::warp::angular_t, vortex::scan::warp::telecentric_t> >, vortex::scan::repeated_pattern_t<std::variant<vortex::marker::scan_boundary, vortex::marker::volume_boundary, vortex::marker::segment_boundary, vortex::marker::active_lines, vortex::marker::inactive_lines, vortex::marker::event>, vortex::marker::flags_t<unsigned long, unsigned char> > >) None¶
Initialize the scan using the supplied configuration.
Parameters¶
configSegmentedScanConfigNew configuration to apply. Type must match the derived scan type.
- next(*args, **kwargs)¶
Overloaded function.
next(self: vortex.scan.RepeatedRasterScan, buffer: numpy.ndarray[numpy.float64]) -> tuple[int, vortex.marker.MarkerList]
next(self: vortex.scan.RepeatedRasterScan, markers: vortex.marker.MarkerList, buffer: numpy.ndarray[numpy.float64]) -> int
- prepare(*args, **kwargs)¶
Overloaded function.
prepare(self: vortex.scan.RepeatedRasterScan) -> None
Buffer and consolidate the complete scan for rapid generation. If
countis specified, buffer at minimum the requested number of samples. Otherwise, buffer the complete scan. Consolidation will be performed if enabled and the scan becomes fully buffered.Parameters¶
countOptional[int]Number of samples to buffer.
prepare(self: vortex.scan.RepeatedRasterScan, count: int) -> None
Buffer and consolidate the complete scan for rapid generation. If
countis specified, buffer at minimum the requested number of samples. Otherwise, buffer the complete scan. Consolidation will be performed if enabled and the scan becomes fully buffered.Parameters¶
countOptional[int]Number of samples to buffer.
- restart(*args, **kwargs)¶
Overloaded function.
restart(self: vortex.scan.RepeatedRasterScan) -> None
Reset the scan internal state to the given sample, position, and velocity. Subsequent calls for pattern generation will include a pre-scan inactive segment from this state to the first active segment.
__NOTE__
Specify no arguments or all arguments. If no arguments are specified, the scan resets to the origin at rest.
Parameters¶
sampleintNew sample time.
positionnumpy.ndarray[float]New position for all channels.
velocitynumpy.ndarray[float]New velocity for all channels.
include_startboolIf
True, generate a sample at this new state. IfFalse, do not generate a starting sample, such as when another scan has already produced it.
restart(self: vortex.scan.RepeatedRasterScan, sample: int, position: numpy.ndarray[numpy.float64], velocity: numpy.ndarray[numpy.float64], include_start: bool) -> None
Reset the scan internal state to the given sample, position, and velocity. Subsequent calls for pattern generation will include a pre-scan inactive segment from this state to the first active segment.
__NOTE__
Specify no arguments or all arguments. If no arguments are specified, the scan resets to the origin at rest.
Parameters¶
sampleintNew sample time.
positionnumpy.ndarray[float]New position for all channels.
velocitynumpy.ndarray[float]New velocity for all channels.
include_startboolIf
True, generate a sample at this new state. IfFalse, do not generate a starting sample, such as when another scan has already produced it.
- scan_buffer(self: vortex.scan.RepeatedRasterScan) numpy.ndarray[numpy.float64]¶
Prepare the scan and return the complete scan waveform for all channels.
- Returns:
numpy.ndarray[float] – Scan waveforms generated at the given sampling rate. Each row is a sample, and each column is a channel.
- scan_markers(self: vortex.scan.RepeatedRasterScan) vortex.marker.MarkerList¶
Prepare the scan and return all markers.
- Returns:
List[ScanBoundary | VolumeBoundary | SegmentBoundary | ActiveLines | InactiveLines | Event] – List of all markers in the scan, sorted by sequence number.
- scan_segments(self: vortex.scan.RepeatedRasterScan) list[vortex.scan.Segment]¶
Return a list of segments in this scan.
- Returns:
List[Segment] – The scan segments.
- class vortex.scan.RepeatedRasterScanConfig¶
Bases:
RasterWaypoints,RepeatedPattern,SegmentedScanConfigConfiguration object for
RepeatedRasterScan.All members are inherited.
- property angle¶
- property ascans_per_bscan¶
- property bidirectional_segments¶
- property bscan_extent¶
- property bscans_per_volume¶
- property bypass_limits_check¶
- Type:
If
False, check that the scan pattern satisfies position, velocity, and acceleration limits. IfTrue, skip this check. This check does not apply to generated inactive segments. Default isFalse.
- property channels_per_sample¶
- Type:
Number of channels per sample. Default is
2for a 2D scan pattern.
- property consolidate¶
- Type:
Optimize internal scan buffers once the scan has looped once. Default is
False.
- copy(*args, **kwargs)¶
Overloaded function.
copy(self: vortex.scan.RepeatedRasterScanConfig) -> vortex.scan.RepeatedRasterScanConfig
copy(self: vortex.scan.RepeatedRasterScanConfig) -> vortex.scan.RepeatedRasterScanConfig
- property extents¶
- property inactive_policy¶
- Type:
Policy to use for generating inactive segments. Default is
MinimumDynamicLimited().
- property limits¶
- Type:
List[Limits]
Dynamics limits for each channel of the scan. These are used for limit checks and inactive segment policies. Default is
[Limits(position=(-12.5, 12.5), velocity=8e3, acceleration=5e6)]*2.
- property loop¶
- Type:
Restart the scan after it completes. This produces an infinite scan pattern. Default is
True.
- property offset¶
- property repeat_count¶
- property repeat_period¶
- property repeat_strategy¶
- property samples_per_second¶
- Type:
Number of samples per second for the scan. This is used to ensure that dynamic limits are met. Default is
100_000.
- property samples_per_segment¶
- property sampling_interval¶
- Type:
Interval between samples computed from
samples_per_second. Read-only.
- property segment_extent¶
- property segments_per_volume¶
- property shape¶
- to_pattern(*args, **kwargs)¶
Overloaded function.
to_pattern(self: vortex.scan.RepeatedRasterScanConfig, arg0: numpy.ndarray[numpy.float64]) -> list[vortex.scan.Segment]
to_pattern(self: vortex.scan.RepeatedRasterScanConfig, arg0: list[numpy.ndarray[numpy.float64]]) -> list[vortex.scan.Segment]
- to_segments(self: vortex.scan.RepeatedRasterScanConfig) list[vortex.scan.Segment]¶
Generate the segments described by this configuration.
- Returns:
List[Segment] – The pattern segments.
__SEEALSO__
See Interleave Different Scans for an example application.
- to_waypoints(self: vortex.scan.RepeatedRasterScanConfig) numpy.ndarray[numpy.float64]¶
- property volume_extent¶
- property warp¶
- class vortex.scan.Segment¶
An active segment as part of a
SegmentedScan.- copy(self: vortex.scan.Segment) vortex.scan.Segment¶
- property entry_position¶
- Type:
Accessor for the first sample position. Read only.
- entry_velocity(self: vortex.scan.Segment, samples_per_second: int) numpy.ndarray[numpy.float64]¶
Approximate the scan velocity at the first sample using the specified sampling rate and the first finite difference.
Parameters¶
samples_per_secondfloatSampling rate for the velocity calculation.
- return numpy.ndarray[float]:
The calculated velocity.
- property exit_position¶
- Type:
Accessor for the last sample position. Read only.
- exit_velocity(self: vortex.scan.Segment, samples_per_second: int) numpy.ndarray[numpy.float64]¶
Approximate the scan velocity at the last sample using the specified sampling rate and the first finite difference.
Parameters¶
samples_per_secondfloatSampling rate for the velocity calculation.
- return numpy.ndarray[float]:
The calculated velocity.
- property markers¶
- Type:
List[ScanBoundary | VolumeBoundary | SegmentBoundary | ActiveLines | InactiveLines | Event]
List of markers associated with this segment.
- property position¶
- Type:
An ordered sequence of each sample positions in this segment. The positions are specified as a 2D array where each row is a position and each column is a channel. For example, a 2D segment with N positions has shape [
N,2]. The number of channels must match that of the associatedSegmentedScan.
- class vortex.scan.SegmentList¶
- append(self: list[vortex.scan.Segment], x: vortex.scan.Segment) None¶
Add an item to the end of the list
- clear(self: list[vortex.scan.Segment]) None¶
Clear the contents
- extend(*args, **kwargs)¶
Overloaded function.
extend(self: list[vortex.scan.Segment], L: list[vortex.scan.Segment]) -> None
Extend the list by appending all the items in the given list
extend(self: list[vortex.scan.Segment], L: Iterable) -> None
Extend the list by appending all the items in the given list
- insert(self: list[vortex.scan.Segment], i: int, x: vortex.scan.Segment) None¶
Insert an item at a given position.
- pop(*args, **kwargs)¶
Overloaded function.
pop(self: list[vortex.scan.Segment]) -> vortex.scan.Segment
Remove and return the last item
pop(self: list[vortex.scan.Segment], i: int) -> vortex.scan.Segment
Remove and return the item at index
i
- class vortex.scan.SequentialPattern¶
Visit segments in sequential order with optional bidirectionality.
- property bidirectional_segments¶
- Type:
If
True, flip the direction of every odd-indexed segment. Odd-indexed segments are marked as reversed for unflipping during formatting. IfFalse, maintain the direction of each segment. Default isFalse.
- property bidirectional_volumes¶
- Type:
If
True, produce a scan with one volume with the segments in order followed by a second volume using the reverse segment order. The second volume’s segments are marked with the physically-based destination index for reordering during formatting. IfFalse, produce a scan with one volume with he segments in order. Default isFalse.
- to_pattern(*args, **kwargs)¶
Overloaded function.
to_pattern(self: vortex.scan.SequentialPattern, arg0: numpy.ndarray[numpy.float64]) -> list[vortex.scan.Segment]
to_pattern(self: vortex.scan.SequentialPattern, arg0: list[numpy.ndarray[numpy.float64]]) -> list[vortex.scan.Segment]
- class vortex.scan.SpiralScan¶
- change(self: vortex.scan.SpiralScan, config: vortex::scan::detail::patterned_config_factory_t<double, std::variant<vortex::scan::inactive_policy::minimum_dynamic_limited_t, vortex::scan::inactive_policy::fixed_dynamic_limited_t, vortex::scan::inactive_policy::fixed_linear_t>, vortex::scan::spiral_waypoints_t<double, std::variant<vortex::scan::warp::none_t, vortex::scan::warp::angular_t, vortex::scan::warp::telecentric_t> >, vortex::scan::sequential_pattern_t<std::variant<vortex::marker::scan_boundary, vortex::marker::volume_boundary, vortex::marker::segment_boundary, vortex::marker::active_lines, vortex::marker::inactive_lines, vortex::marker::event>, vortex::marker::flags_t<unsigned long, unsigned char> > >, restart: bool = False, event_id: int = 0) None¶
- property config¶
- initialize(self: vortex.scan.SpiralScan, config: vortex::scan::detail::patterned_config_factory_t<double, std::variant<vortex::scan::inactive_policy::minimum_dynamic_limited_t, vortex::scan::inactive_policy::fixed_dynamic_limited_t, vortex::scan::inactive_policy::fixed_linear_t>, vortex::scan::spiral_waypoints_t<double, std::variant<vortex::scan::warp::none_t, vortex::scan::warp::angular_t, vortex::scan::warp::telecentric_t> >, vortex::scan::sequential_pattern_t<std::variant<vortex::marker::scan_boundary, vortex::marker::volume_boundary, vortex::marker::segment_boundary, vortex::marker::active_lines, vortex::marker::inactive_lines, vortex::marker::event>, vortex::marker::flags_t<unsigned long, unsigned char> > >) None¶
- next(*args, **kwargs)¶
Overloaded function.
next(self: vortex.scan.SpiralScan, buffer: numpy.ndarray[numpy.float64]) -> tuple[int, vortex.marker.MarkerList]
next(self: vortex.scan.SpiralScan, markers: vortex.marker.MarkerList, buffer: numpy.ndarray[numpy.float64]) -> int
- prepare(*args, **kwargs)¶
Overloaded function.
prepare(self: vortex.scan.SpiralScan) -> None
prepare(self: vortex.scan.SpiralScan, count: int) -> None
- restart(*args, **kwargs)¶
Overloaded function.
restart(self: vortex.scan.SpiralScan) -> None
restart(self: vortex.scan.SpiralScan, sample: int, position: numpy.ndarray[numpy.float64], velocity: numpy.ndarray[numpy.float64], include_start: bool) -> None
- scan_buffer(self: vortex.scan.SpiralScan) numpy.ndarray[numpy.float64]¶
- scan_markers(self: vortex.scan.SpiralScan) vortex.marker.MarkerList¶
- scan_segments(self: vortex.scan.SpiralScan) list[vortex.scan.Segment]¶
- class vortex.scan.SpiralScanConfig¶
- property acceleration_limit¶
- property angle¶
- property angular_velocity¶
- property ascans_per_bscan¶
- property bidirectional_segments¶
- property bidirectional_volumes¶
- property bscan_extent¶
- property bscans_per_volume¶
- property bypass_limits_check¶
- property channels_per_sample¶
- property consolidate¶
- copy(*args, **kwargs)¶
Overloaded function.
copy(self: vortex.scan.SpiralScanConfig) -> vortex.scan.SpiralScanConfig
copy(self: vortex.scan.SpiralScanConfig) -> vortex.scan.SpiralScanConfig
- property extents¶
- property flags¶
- property inactive_policy¶
- property inner_radius¶
- property limits¶
- property linear_velocity¶
- property loop¶
- property offset¶
- property outer_radius¶
- property radial_pitch¶
- property rings_per_spiral¶
- property samples_per_second¶
- property samples_per_segment¶
- property sampling_interval¶
- property segment_extent¶
- property segments_per_volume¶
- set_hybrid(self: vortex.scan.SpiralScanConfig, arg0: int) None¶
- set_isotropic(self: vortex.scan.SpiralScanConfig, arg0: int) None¶
- property shape¶
- to_pattern(*args, **kwargs)¶
Overloaded function.
to_pattern(self: vortex.scan.SpiralScanConfig, arg0: numpy.ndarray[numpy.float64]) -> list[vortex.scan.Segment]
to_pattern(self: vortex.scan.SpiralScanConfig, arg0: list[numpy.ndarray[numpy.float64]]) -> list[vortex.scan.Segment]
- to_segments(self: vortex.scan.SpiralScanConfig) list[vortex.scan.Segment]¶
- to_waypoints(self: vortex.scan.SpiralScanConfig) numpy.ndarray[numpy.float64]¶
- property volume_extent¶
- property warp¶
- class vortex.scan.SpiralWaypoints¶
- property acceleration_limit¶
- property angle¶
- property angular_velocity¶
- property ascans_per_bscan¶
- property bscan_extent¶
- property bscans_per_volume¶
- property extents¶
- property inner_radius¶
- property linear_velocity¶
- property offset¶
- property outer_radius¶
- property radial_pitch¶
- property rings_per_spiral¶
- property samples_per_segment¶
- property segment_extent¶
- property segments_per_volume¶
- set_hybrid(self: vortex.scan.SpiralWaypoints, arg0: int) None¶
- set_isotropic(self: vortex.scan.SpiralWaypoints, arg0: int) None¶
- property shape¶
- to_waypoints(self: vortex.scan.SpiralWaypoints) numpy.ndarray[numpy.float64]¶
- property volume_extent¶
- property warp¶
- class vortex.storage.BroctScan¶
Members:
rectangular
bscan
aiming
mscan
radial
ascan
speckle
mixed
xfast_yfast
xfast_yfast_speckle
spiral
- aiming = <BroctScan.aiming: 2>¶
- ascan = <BroctScan.ascan: 5>¶
- bscan = <BroctScan.bscan: 1>¶
- mixed = <BroctScan.mixed: 7>¶
- mscan = <BroctScan.mscan: 3>¶
- property name¶
- radial = <BroctScan.radial: 4>¶
- rectangular = <BroctScan.rectangular: 0>¶
- speckle = <BroctScan.speckle: 6>¶
- spiral = <BroctScan.spiral: 10>¶
- property value¶
- xfast_yfast = <BroctScan.xfast_yfast: 8>¶
- xfast_yfast_speckle = <BroctScan.xfast_yfast_speckle: 9>¶
- class vortex.storage.BroctStorage¶
- advance_volume(self: vortex.storage.BroctStorage, allocate: bool = True) None¶
- close(self: vortex.storage.BroctStorage) None¶
- property config¶
- seek(self: vortex.storage.BroctStorage, arg0: int, arg1: int) None¶
- write_bscan(self: vortex.storage.BroctStorage, index: int, data: numpy.ndarray[numpy.int8]) None¶
- write_multi_bscan(self: vortex.storage.BroctStorage, index: int, data: numpy.ndarray[numpy.int8]) None¶
- write_volume(self: vortex.storage.BroctStorage, data: numpy.ndarray[numpy.int8]) None¶
- class vortex.storage.BroctStorageConfig¶
- property ascans_per_bscan¶
- property broct_bscan_shape¶
- property broct_volume_shape¶
- property bscans_per_volume¶
- property buffering¶
- property dimensions¶
- property notes¶
- property path¶
- property samples_per_ascan¶
- property scan_type¶
- property shape¶
- class vortex.storage.HDF5StackConfig¶
- property ascans_per_bscan¶
- property bscan_shape¶
- property bscans_per_volume¶
- property channels_per_sample¶
- property compression_level¶
- property header¶
- property path¶
- property samples_per_ascan¶
- property shape¶
- property volume_shape¶
- class vortex.storage.HDF5StackFloat64¶
- advance_volume(self: vortex.storage.HDF5StackFloat64, allocate: bool = True) None¶
- close(self: vortex.storage.HDF5StackFloat64) None¶
- property config¶
- open(self: vortex.storage.HDF5StackFloat64, arg0: vortex.storage.HDF5StackConfig) None¶
- property ready¶
- write_multi_bscan(self: vortex.storage.HDF5StackFloat64, index: int, data: numpy.ndarray[numpy.float64]) None¶
- write_partial_bscan(self: vortex.storage.HDF5StackFloat64, bscan_index: int, ascan_index: int, data: numpy.ndarray[numpy.float64]) None¶
- write_volume(self: vortex.storage.HDF5StackFloat64, data: numpy.ndarray[numpy.float64]) None¶
- class vortex.storage.HDF5StackHeader¶
Members:
Empty
MATLAB
- Empty = <HDF5StackHeader.Empty: 0>¶
- MATLAB = <HDF5StackHeader.MATLAB: 1>¶
- property name¶
- property value¶
- class vortex.storage.HDF5StackInt8¶
- advance_volume(self: vortex.storage.HDF5StackInt8, allocate: bool = True) None¶
- close(self: vortex.storage.HDF5StackInt8) None¶
- property config¶
- open(self: vortex.storage.HDF5StackInt8, arg0: vortex.storage.HDF5StackConfig) None¶
- property ready¶
- write_multi_bscan(self: vortex.storage.HDF5StackInt8, index: int, data: numpy.ndarray[numpy.int8]) None¶
- write_partial_bscan(self: vortex.storage.HDF5StackInt8, bscan_index: int, ascan_index: int, data: numpy.ndarray[numpy.int8]) None¶
- write_volume(self: vortex.storage.HDF5StackInt8, data: numpy.ndarray[numpy.int8]) None¶
- class vortex.storage.HDF5StackUInt16¶
- advance_volume(self: vortex.storage.HDF5StackUInt16, allocate: bool = True) None¶
- close(self: vortex.storage.HDF5StackUInt16) None¶
- property config¶
- open(self: vortex.storage.HDF5StackUInt16, arg0: vortex.storage.HDF5StackConfig) None¶
- property ready¶
- write_multi_bscan(self: vortex.storage.HDF5StackUInt16, index: int, data: numpy.ndarray[numpy.uint16]) None¶
- write_partial_bscan(self: vortex.storage.HDF5StackUInt16, bscan_index: int, ascan_index: int, data: numpy.ndarray[numpy.uint16]) None¶
- write_volume(self: vortex.storage.HDF5StackUInt16, data: numpy.ndarray[numpy.uint16]) None¶
- class vortex.storage.HDF5StackUInt64¶
- advance_volume(self: vortex.storage.HDF5StackUInt64, allocate: bool = True) None¶
- close(self: vortex.storage.HDF5StackUInt64) None¶
- property config¶
- open(self: vortex.storage.HDF5StackUInt64, arg0: vortex.storage.HDF5StackConfig) None¶
- property ready¶
- write_multi_bscan(self: vortex.storage.HDF5StackUInt64, index: int, data: numpy.ndarray[numpy.uint64]) None¶
- write_partial_bscan(self: vortex.storage.HDF5StackUInt64, bscan_index: int, ascan_index: int, data: numpy.ndarray[numpy.uint64]) None¶
- write_volume(self: vortex.storage.HDF5StackUInt64, data: numpy.ndarray[numpy.uint64]) None¶
- class vortex.storage.MarkerLog¶
- close(self: vortex.storage.MarkerLog) None¶
- property config¶
- property ready¶
- class vortex.storage.SimpleStackConfig¶
- property ascans_per_bscan¶
- property bscan_shape¶
- property bscans_per_volume¶
- property buffering¶
- property header¶
- property path¶
- property samples_per_ascan¶
- property shape¶
- property volume_shape¶
- class vortex.storage.SimpleStackFloat64¶
- advance_volume(self: vortex.storage.SimpleStackFloat64, allocate: bool = True) None¶
- close(self: vortex.storage.SimpleStackFloat64) None¶
- property config¶
- open(self: vortex.storage.SimpleStackFloat64, arg0: vortex.storage.SimpleStackConfig) None¶
- property ready¶
- seek(self: vortex.storage.SimpleStackFloat64, volume_index: int, bscan_index: int) None¶
- write_multi_bscan(self: vortex.storage.SimpleStackFloat64, index: int, data: numpy.ndarray[numpy.float64]) None¶
- write_partial_bscan(self: vortex.storage.SimpleStackFloat64, bscan_index: int, ascan_index: int, data: numpy.ndarray[numpy.float64]) None¶
- write_volume(self: vortex.storage.SimpleStackFloat64, data: numpy.ndarray[numpy.float64]) None¶
- class vortex.storage.SimpleStackHeader¶
Members:
Empty
NumPy
MATLAB
NRRD
NIfTI
- Empty = <SimpleStackHeader.Empty: 0>¶
- MATLAB = <SimpleStackHeader.MATLAB: 2>¶
- NIfTI = <SimpleStackHeader.NIfTI: 4>¶
- NRRD = <SimpleStackHeader.NRRD: 3>¶
- NumPy = <SimpleStackHeader.NumPy: 1>¶
- property name¶
- property value¶
- class vortex.storage.SimpleStackInt8¶
- advance_volume(self: vortex.storage.SimpleStackInt8, allocate: bool = True) None¶
- close(self: vortex.storage.SimpleStackInt8) None¶
- property config¶
- open(self: vortex.storage.SimpleStackInt8, arg0: vortex.storage.SimpleStackConfig) None¶
- property ready¶
- seek(self: vortex.storage.SimpleStackInt8, volume_index: int, bscan_index: int) None¶
- write_multi_bscan(self: vortex.storage.SimpleStackInt8, index: int, data: numpy.ndarray[numpy.int8]) None¶
- write_partial_bscan(self: vortex.storage.SimpleStackInt8, bscan_index: int, ascan_index: int, data: numpy.ndarray[numpy.int8]) None¶
- write_volume(self: vortex.storage.SimpleStackInt8, data: numpy.ndarray[numpy.int8]) None¶
- class vortex.storage.SimpleStackUInt16¶
- advance_volume(self: vortex.storage.SimpleStackUInt16, allocate: bool = True) None¶
- close(self: vortex.storage.SimpleStackUInt16) None¶
- property config¶
- open(self: vortex.storage.SimpleStackUInt16, arg0: vortex.storage.SimpleStackConfig) None¶
- property ready¶
- seek(self: vortex.storage.SimpleStackUInt16, volume_index: int, bscan_index: int) None¶
- write_multi_bscan(self: vortex.storage.SimpleStackUInt16, index: int, data: numpy.ndarray[numpy.uint16]) None¶
- write_partial_bscan(self: vortex.storage.SimpleStackUInt16, bscan_index: int, ascan_index: int, data: numpy.ndarray[numpy.uint16]) None¶
- write_volume(self: vortex.storage.SimpleStackUInt16, data: numpy.ndarray[numpy.uint16]) None¶
- class vortex.storage.SimpleStackUInt64¶
- advance_volume(self: vortex.storage.SimpleStackUInt64, allocate: bool = True) None¶
- close(self: vortex.storage.SimpleStackUInt64) None¶
- property config¶
- open(self: vortex.storage.SimpleStackUInt64, arg0: vortex.storage.SimpleStackConfig) None¶
- property ready¶
- seek(self: vortex.storage.SimpleStackUInt64, volume_index: int, bscan_index: int) None¶
- write_multi_bscan(self: vortex.storage.SimpleStackUInt64, index: int, data: numpy.ndarray[numpy.uint64]) None¶
- write_partial_bscan(self: vortex.storage.SimpleStackUInt64, bscan_index: int, ascan_index: int, data: numpy.ndarray[numpy.uint64]) None¶
- write_volume(self: vortex.storage.SimpleStackUInt64, data: numpy.ndarray[numpy.uint64]) None¶
- class vortex.storage.SimpleStreamFloat64¶
- close(self: vortex.storage.SimpleStreamFloat64) None¶
- property config¶
- open(self: vortex.storage.SimpleStreamFloat64, arg0: vortex.storage.SimpleStreamConfig) None¶
- property ready¶
- class vortex.storage.SimpleStreamHeader¶
Members:
Empty
- Empty = <SimpleStreamHeader.Empty: 0>¶
- property name¶
- property value¶
- class vortex.storage.SimpleStreamInt8¶
- close(self: vortex.storage.SimpleStreamInt8) None¶
- property config¶
- open(self: vortex.storage.SimpleStreamInt8, arg0: vortex.storage.SimpleStreamConfig) None¶
- property ready¶
- class vortex.storage.SimpleStreamUInt16¶
- close(self: vortex.storage.SimpleStreamUInt16) None¶
- property config¶
- open(self: vortex.storage.SimpleStreamUInt16, arg0: vortex.storage.SimpleStreamConfig) None¶
- property ready¶
- class vortex.storage.SimpleStreamUInt64¶
- close(self: vortex.storage.SimpleStreamUInt64) None¶
- property config¶
- open(self: vortex.storage.SimpleStreamUInt64, arg0: vortex.storage.SimpleStreamConfig) None¶
- property ready¶
- class vortex.storage.StreamDump¶
- close(self: vortex.storage.StreamDump) None¶
- property config¶
- property ready¶