pymepix.processing package¶
Subpackages¶
Submodules¶
pymepix.processing.acquisition module¶
Module that contains predefined acquisition pipelines for the user to use
-
class
pymepix.processing.acquisition.
CentroidPipeline
(data_queue, address, longtime)[source]¶ Bases:
pymepix.processing.acquisition.PixelPipeline
A Pixel pipeline that includes centroiding
Same as the pixel pipeline but also includes centroid processing, note that this can be extremely slow when dealing with a huge number of objects
-
numBlobProcesses
¶ Number of python processes to spawn for centroiding
Setting this will spawn the appropriate number of processes to perform centroiding. Changes take effect on next acquisition.
-
-
class
pymepix.processing.acquisition.
PixelPipeline
(data_queue, address, longtime, use_event=False, name='Pixel', event_window=(0, 0.001))[source]¶ Bases:
pymepix.processing.baseacquisition.AcquisitionPipeline
An acquisition pipeline that includes the udpsampler and pixel processor
A pipeline that will read from a UDP address and decode the pixels a useable form. This class can be used as a base for all acqusition pipelines.
pymepix.processing.baseacquisition module¶
Module deals with managing processing objects to form a data pipeline
-
class
pymepix.processing.baseacquisition.
AcquisitionPipeline
(name, data_queue)[source]¶ Bases:
pymepix.core.log.Logger
Class that manages various stages
-
addStage
(stage_number, pipeline_klass, *args, num_processes=1, **kwargs)[source]¶ Adds a stage to the pipeline
-
isRunning
¶
-
stages
¶
-
-
class
pymepix.processing.baseacquisition.
AcquisitionStage
(stage, num_processes=1)[source]¶ Bases:
pymepix.core.log.Logger
Defines a single acquisition stage
Usually not created directly. Instead created by
AcquisitionPipeline
Represent a single pipeline stage and handles management of queues and message passing as well as creation and destruction of processing objects.Processes are not created until build() is called and do not run until start() is called
Parameters: stage (int) – Initial position in the pipeline, lower stages are executed first -
configureStage
(pipeline_klass, *args, **kwargs)[source]¶ Configures the stage with a particular processing class
Parameters: - pipeline_klass (
BasePipeline
) – A pipeline class object - *args – positional arguments to pass into the class init
- **kwargs – keyward arguments to pass into the class init
- pipeline_klass (
-
numProcess
¶ Number of processes to spawn when built
Parameters: value (int) – Number of processes to spawn when acquisition starts Returns: Number of processes Return type: int
-
outputQueue
¶
-
processes
¶
-
stage
¶ Current position in the pipeline
-
pymepix.processing.basepipeline module¶
Base implementation of objects relating to the processing pipeline
-
class
pymepix.processing.basepipeline.
BasePipelineObject
(name, input_queue=None, create_output=True, num_outputs=1, shared_output=None, propogate_input=True)[source]¶ Bases:
multiprocessing.context.Process
,pymepix.core.log.ProcessLogger
Base class for integration in a processing pipeline
Parameters: - name (str) – Name used for logging
- input_queue (
multiprocessing.Queue
, optional) – Data queue to perform work on (usually) from previous step in processing pipeline - create_output (bool, optional) – Whether this creates its own output queue to pass data, ignored if (Default: True)
- num_outputs (int,optional) – Used with create_output, number of output queues to create (Default: 1)
- shared_output (
multiprocessing.Queue
, optional) – Data queue to pass results into, useful when multiple processes can put data into the same queue (such as results from centroiding). Ignored if create_output is True (Default: None) - propogate_input (bool) – Whether the input data should be propgated further down the chain
-
enable
¶ Enables processing
Determines whether the class will perform processing, this has the result of signalling the process to terminate. If there are objects ahead of it then they will stop receiving data if an input queue is required then it will get from the queue before checking processing This is done to prevent the queue from growing when a process behind it is still working
Parameters: value (bool) – Enable value Returns: Whether the process is enabled or not Return type: bool
-
classmethod
hasOutput
()[source]¶ Defines whether this class can output results or not, e.g. Centroiding can output results but file writing classes do not
Returns: Whether results are generated Return type: bool
-
outputQueues
¶ Exposes the outputs so they may be connected to the next step
Returns: All of the outputs Return type: list
ofmultiprocessing.Queue
-
process
(data_type=None, data=None)[source]¶ Main processing function, override this do perform work
To perform work within the pipeline, a class must override this function. General guidelines include, check for correct data type, and must return None for both if no output is given.
pymepix.processing.datatypes module¶
Defines data that is passed between processing objects
-
class
pymepix.processing.datatypes.
MessageType
[source]¶ Bases:
enum.IntEnum
Defines the type of message that is being passed into a multiprocessing queue
-
CentroidData
= 3¶ Centroided Data
-
CloseFileCommand
= 5¶ Close File Message
-
EventData
= 2¶ Event Data
-
OpenFileCommand
= 4¶ Open File message
-
PixelData
= 1¶ Decoded Pixel/Trigger Data
-
RawData
= 0¶ Raw UDP packets
-
TriggerData
= 8¶ Decoded Triggers
-
pymepix.processing.pipeline_centroid_calculator module¶
Processors relating to centroiding
-
class
pymepix.processing.pipeline_centroid_calculator.
PipelineCentroidCalculator
(centroid_calculator: pymepix.processing.logic.centroid_calculator.CentroidCalculator = <pymepix.processing.logic.centroid_calculator.CentroidCalculator object>, input_queue=None, create_output=True, num_outputs=1, shared_output=None)[source]¶ Bases:
pymepix.processing.basepipeline.BasePipelineObject
Performs centroiding on EventData recieved from Packet processor
pymepix.processing.pipeline_packet_processor module¶
-
class
pymepix.processing.pipeline_packet_processor.
PipelinePacketProcessor
(packet_processor: pymepix.processing.logic.packet_processor.PacketProcessor = <pymepix.processing.logic.packet_processor.PacketProcessor object>, input_queue=None, create_output=True, num_outputs=1, shared_output=None)[source]¶ Bases:
pymepix.processing.basepipeline.BasePipelineObject
Processes Pixel packets for ToA, ToT, triggers and events
This class, creates a UDP socket connection to SPIDR and recivies the UDP packets from Timepix It then pre-processes them and sends them off for more processing
pymepix.processing.rawfilesampler module¶
pymepix.processing.rawtodisk module¶
-
class
pymepix.processing.rawtodisk.
Raw2Disk
(context=None)[source]¶ Bases:
pymepix.core.log.ProcessLogger
Class for asynchronously writing raw files Intended to allow writing of raw data while minimizing impact on UDP reception reliability.
pymepix.processing.udpsampler module¶
-
class
pymepix.processing.udpsampler.
UdpSampler
(address, longtime, chunk_size=10000, flush_timeout=0.3, input_queue=None, create_output=True, num_outputs=1, shared_output=None)[source]¶ Bases:
multiprocessing.context.Process
,pymepix.core.log.ProcessLogger
Recieves udp packets from SPDIR
This class, creates a UDP socket connection to SPIDR and recivies the UDP packets from Timepix It them pre-processes them and sends them off for more processing
-
close_file
¶
-
enable
¶ Enables processing
Determines whether the class will perform processing, this has the result of signalling the process to terminate. If there are objects ahead of it then they will stop receiving data if an input queue is required then it will get from the queue before checking processing This is done to prevent the queue from growing when a process behind it is still working
Parameters: value (bool) – Enable value Returns: Whether the process is enabled or not Return type: bool
-
outfile_name
¶
-
post_run
()[source]¶ method get’s called either at the very end of the process live or if there’s a socket timeout and raw2disk file should be closed
-
record
¶ Enables saving data to disk
Determines whether the class will perform processing, this has the result of signalling the process to terminate. If there are objects ahead of it then they will stop recieving data if an input queue is required then it will get from the queue before checking processing This is done to prevent the queue from growing when a process behind it is still working
Parameters: value (bool) – Enable value Returns: Whether the process should record and write to disk or not Return type: bool
-
pymepix.processing.usbtrainid module¶
-
class
pymepix.processing.usbtrainid.
USBTrainID
(name='USBTrainId')[source]¶ Bases:
multiprocessing.context.Process
,pymepix.core.log.ProcessLogger
Class for asynchronously writing raw files Intended to allow writing of raw data while minimizing impact on UDP reception reliability