tardis.transport.montecarlo.packets.trackers.tracker_full_util module

class tardis.transport.montecarlo.packets.trackers.tracker_full_util.TrackerEventArrays(packet_id: ndarray[tuple[Any, ...], dtype[int64]], event_offsets: ndarray[tuple[Any, ...], dtype[int64]], interaction_type: ndarray[tuple[Any, ...], dtype[int64]], radius: ndarray[tuple[Any, ...], dtype[float64]], before_shell_id: ndarray[tuple[Any, ...], dtype[int64]], after_shell_id: ndarray[tuple[Any, ...], dtype[int64]], before_nu: ndarray[tuple[Any, ...], dtype[float64]], after_nu: ndarray[tuple[Any, ...], dtype[float64]], after_mu: ndarray[tuple[Any, ...], dtype[float64]], after_energy: ndarray[tuple[Any, ...], dtype[float64]], line_absorb_id: ndarray[tuple[Any, ...], dtype[int64]], line_emit_id: ndarray[tuple[Any, ...], dtype[int64]], next_line_id: ndarray[tuple[Any, ...], dtype[int64]])[source]

Bases: NamedTuple

Real-packet event histories as flat arrays for virtual-packet replay.

Events of packet packet_id[i] occupy event_offsets[i]:event_offsets[i + 1] in every per-event array, in event order.

Create new instance of TrackerEventArrays(packet_id, event_offsets, interaction_type, radius, before_shell_id, after_shell_id, before_nu, after_nu, after_mu, after_energy, line_absorb_id, line_emit_id, next_line_id)

after_energy: ndarray[tuple[Any, ...], dtype[float64]]

Alias for field number 9

after_mu: ndarray[tuple[Any, ...], dtype[float64]]

Alias for field number 8

after_nu: ndarray[tuple[Any, ...], dtype[float64]]

Alias for field number 7

after_shell_id: ndarray[tuple[Any, ...], dtype[int64]]

Alias for field number 5

before_nu: ndarray[tuple[Any, ...], dtype[float64]]

Alias for field number 6

before_shell_id: ndarray[tuple[Any, ...], dtype[int64]]

Alias for field number 4

event_offsets: ndarray[tuple[Any, ...], dtype[int64]]

Alias for field number 1

interaction_type: ndarray[tuple[Any, ...], dtype[int64]]

Alias for field number 2

line_absorb_id: ndarray[tuple[Any, ...], dtype[int64]]

Alias for field number 10

line_emit_id: ndarray[tuple[Any, ...], dtype[int64]]

Alias for field number 11

next_line_id: ndarray[tuple[Any, ...], dtype[int64]]

Alias for field number 12

packet_id: ndarray[tuple[Any, ...], dtype[int64]]

Alias for field number 0

radius: ndarray[tuple[Any, ...], dtype[float64]]

Alias for field number 3

tardis.transport.montecarlo.packets.trackers.tracker_full_util.event_arrays_to_df(event_arrays: tuple) → DataFrame[source]

Build the full-tracker DataFrame from concatenated event arrays.

Parameters:
event_arraystuple

Event arrays as returned by trackers_full_list_to_selected_arrays.

Returns:
pd.DataFrame

Event DataFrame indexed by packet_id and event_id.

tardis.transport.montecarlo.packets.trackers.tracker_full_util.generate_tracker_full_list(no_of_packets: int, length: int, extend_factor: int = 2) → List[source]

Generate list of RPacketTracker instances.

Parameters:
no_of_packetsint

The count of RPackets that are sent in the ejecta.

lengthint

Initial length of the tracking array.

Returns:
TypedList

A numba.typed.list containing RPacketTracker for each RPacket.

tardis.transport.montecarlo.packets.trackers.tracker_full_util.interaction_type_to_categorical(interaction_type: ArrayLike) → Categorical[source]

Convert InteractionType codes to a categorical of their names.

Parameters:
interaction_typearray-like

InteractionType integer codes.

Returns:
pandas.Categorical

Interaction type names, with every InteractionType as a category.

tardis.transport.montecarlo.packets.trackers.tracker_full_util.interaction_type_to_codes(interaction_type: ArrayLike) → ndarray[source]

Convert interaction type names to InteractionType codes.

Parameters:
interaction_typearray-like

Interaction type names, as strings or a categorical with any category order, e.g. a tracker_full_df column.

Returns:
numpy.ndarray

InteractionType integer codes.

Raises:
ValueError

If a name is missing or not an InteractionType member.

tardis.transport.montecarlo.packets.trackers.tracker_full_util.tracker_full_df2tracker_last_interaction_df(full_df: DataFrame) → DataFrame[source]

Convert a full tracking dataframe to show only the last interaction for each packet.

Takes a full event tracking dataframe (from trackers_full_to_dataframe) and filters it to show only the last physics interaction each packet experienced.

Parameters:
full_dfpd.DataFrame

Full event tracking dataframe with multi-index (packet_id, event_id) and columns [‘radius’, ‘before_shell_id’, ‘after_shell_id’, ‘interaction_type’].

Returns:
pd.DataFrame

DataFrame containing last interaction data for each packet, indexed by packet_id with columns [‘radius’, ‘shell_id’, ‘last_interaction_type’, ‘line_absorb_id’, ‘line_emit_id’, ‘before_nu’, ‘before_mu’, ‘before_energy’, ‘after_nu’, ‘after_mu’, ‘after_energy’]. Note: shell_id comes from before_shell_id.

tardis.transport.montecarlo.packets.trackers.tracker_full_util.tracker_full_df_to_event_arrays(tracker_full_df: DataFrame) → TrackerEventArrays[source]

Extract the event arrays needed to replay real-packet histories.

Parameters:
tracker_full_dfpandas.DataFrame

Full real-packet tracking DataFrame indexed by packet_id and event_id, e.g. transport_state.tracker_full_df or one loaded from disk.

Returns:
TrackerEventArrays

Flat event arrays grouped by packet.

Raises:
ValueError

If the packet_id index level or a column needed to replay the histories is missing.

tardis.transport.montecarlo.packets.trackers.tracker_full_util.trackers_full_list_to_arrays(trackers: List, release_trackers: bool = False) → tuple[source]

Convert a list of TrackerFull instances to concatenated arrays efficiently.

Parameters:
trackersnumba.typed.typedlist.List

List of TrackerFull instances.

release_trackersbool, optional

Empty each tracker’s arrays once copied, to lower peak memory. The trackers cannot be used afterwards. Default False.

Returns:
tuple

Event arrays as returned by trackers_full_list_to_selected_arrays.

tardis.transport.montecarlo.packets.trackers.tracker_full_util.trackers_full_list_to_selected_arrays(trackers: List, event_starts: ndarray, event_counts: ndarray, release_trackers: bool = False) → tuple[source]

Concatenate a contiguous range of events from each TrackerFull.

Parameters:
trackersnumba.typed.typedlist.List

List of TrackerFull instances.

event_startsnumpy.ndarray

First event index taken from each tracker.

event_countsnumpy.ndarray

Number of events taken from each tracker.

release_trackersbool, optional

Empty each tracker’s arrays once copied, to lower peak memory. The trackers cannot be used afterwards. Default False.

Returns:
tuple

Tuple containing: - packet_id (np.int64[:]) : Packet ID for each event - event_id (np.int64[:]) : Event ID within each packet - r (np.float64[:]) : Radius at each event - before_shell_id (np.int64[:]) : Shell ID before each event - after_shell_id (np.int64[:]) : Shell ID after each event - interaction_type (np.int64[:]) : Interaction type at each event - status (np.int64[:]) : Status at each event - before_nu (np.float64[:]) : Frequency before interaction - before_mu (np.float64[:]) : Mu before interaction - before_energy (np.float64[:]) : Energy before interaction - after_nu (np.float64[:]) : Frequency after interaction - after_mu (np.float64[:]) : Mu after interaction - after_energy (np.float64[:]) : Energy after interaction - line_absorb_id (np.int64[:]) : Line absorb ID - line_emit_id (np.int64[:]) : Line emit ID - next_line_id (np.int64[:]) : Next line ID after the event

tardis.transport.montecarlo.packets.trackers.tracker_full_util.trackers_full_to_df(trackers_full_list: List, release_trackers: bool = False) → DataFrame[source]

Convert a list of RPacketTracker instances to a comprehensive DataFrame.

Parameters:
rpacket_trackersnumba.typed.typedlist.List

List of RPacketTracker instances.

release_trackersbool, optional

Empty each tracker’s arrays once copied, to lower peak memory. The trackers cannot be used afterwards. Default False.

Returns:
pd.DataFrame

DataFrame containing all event data including line interaction details, indexed by packet_id and event_id. Line interaction columns have default values (-1 for IDs, NaN for physical quantities) for non-interaction events.