cycle_time_tracking
cycle_time_tracking ¤
Cycle time tracking by part number.
Simple, practical module for cycle time analysis: - Cycle time per part number - Statistics (min, avg, max, std) - Slow cycle detection - Trend analysis
CycleTimeTracking ¤
CycleTimeTracking(
dataframe: DataFrame, *, time_column: str = "systime"
)
Bases: Base
Track cycle times by part number.
Each UUID represents one signal: - part_id_uuid: string signal with current part number - cycle_trigger_uuid: boolean/integer signal for cycle completion
Example usage
tracker = CycleTimeTracking(df)
Get cycle times by part¤
cycles = tracker.cycle_time_by_part( part_id_uuid='part_number_signal', cycle_trigger_uuid='cycle_complete_signal' )
Get statistics¤
stats = tracker.cycle_time_statistics( part_id_uuid='part_number_signal', cycle_trigger_uuid='cycle_complete_signal' )
Initialize cycle time tracker.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
dataframe
|
DataFrame
|
Input DataFrame with timeseries data |
required |
time_column
|
str
|
Name of timestamp column (default: 'systime') |
'systime'
|
cycle_time_by_part ¤
cycle_time_by_part(
part_id_uuid: str,
cycle_trigger_uuid: str,
*,
value_column_part: str = "value_string",
value_column_trigger: str = "value_bool"
) -> pd.DataFrame
Calculate cycle time for each part number.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
part_id_uuid
|
str
|
UUID for part number signal |
required |
cycle_trigger_uuid
|
str
|
UUID for cycle completion trigger |
required |
value_column_part
|
str
|
Column containing part numbers |
'value_string'
|
value_column_trigger
|
str
|
Column containing cycle triggers |
'value_bool'
|
Returns:
| Type | Description |
|---|---|
DataFrame
|
DataFrame with columns: |
DataFrame
|
|
DataFrame
|
|
DataFrame
|
|
Example
cycle_time_by_part('part_id', 'cycle_trigger') systime part_number cycle_time_seconds 0 2024-01-01 08:05:30 PART_A 45.2 1 2024-01-01 08:06:18 PART_A 48.0 2 2024-01-01 08:07:05 PART_A 47.1
cycle_time_statistics ¤
cycle_time_statistics(
part_id_uuid: str,
cycle_trigger_uuid: str,
*,
value_column_part: str = "value_string",
value_column_trigger: str = "value_bool"
) -> pd.DataFrame
Calculate statistics: min, avg, max, std cycle time by part.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
part_id_uuid
|
str
|
UUID for part number signal |
required |
cycle_trigger_uuid
|
str
|
UUID for cycle completion trigger |
required |
value_column_part
|
str
|
Column containing part numbers |
'value_string'
|
value_column_trigger
|
str
|
Column containing cycle triggers |
'value_bool'
|
Returns:
| Type | Description |
|---|---|
DataFrame
|
DataFrame with statistics per part: |
DataFrame
|
|
DataFrame
|
|
DataFrame
|
|
DataFrame
|
|
DataFrame
|
|
DataFrame
|
|
DataFrame
|
|
Example
cycle_time_statistics('part_id', 'cycle_trigger') part_number count min_seconds avg_seconds max_seconds std_seconds median_seconds 0 PART_A 450 42.1 47.5 58.2 3.2 47.1 1 PART_B 320 55.0 62.8 78.5 5.1 61.9
detect_slow_cycles ¤
detect_slow_cycles(
part_id_uuid: str,
cycle_trigger_uuid: str,
*,
threshold_factor: float = 1.5,
value_column_part: str = "value_string",
value_column_trigger: str = "value_bool"
) -> pd.DataFrame
Identify cycles that exceed normal time by threshold factor.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
part_id_uuid
|
str
|
UUID for part number signal |
required |
cycle_trigger_uuid
|
str
|
UUID for cycle completion trigger |
required |
threshold_factor
|
float
|
Cycles slower than median * factor are flagged (default: 1.5) |
1.5
|
value_column_part
|
str
|
Column containing part numbers |
'value_string'
|
value_column_trigger
|
str
|
Column containing cycle triggers |
'value_bool'
|
Returns:
| Type | Description |
|---|---|
DataFrame
|
DataFrame with slow cycles: |
DataFrame
|
|
DataFrame
|
|
DataFrame
|
|
DataFrame
|
|
DataFrame
|
|
DataFrame
|
|
Example
detect_slow_cycles('part_id', 'cycle_trigger', threshold_factor=1.5) systime part_number cycle_time_seconds median_seconds deviation_factor is_slow 0 2024-01-01 10:15:30 PART_A 75.2 47.1 1.60 True 1 2024-01-01 14:22:18 PART_A 82.5 47.1 1.75 True
cycle_time_trend ¤
cycle_time_trend(
part_id_uuid: str,
cycle_trigger_uuid: str,
part_number: str,
*,
window_size: int = 20,
value_column_part: str = "value_string",
value_column_trigger: str = "value_bool"
) -> pd.DataFrame
Analyze cycle time trends for a specific part.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
part_id_uuid
|
str
|
UUID for part number signal |
required |
cycle_trigger_uuid
|
str
|
UUID for cycle completion trigger |
required |
part_number
|
str
|
Specific part number to analyze |
required |
window_size
|
int
|
Number of cycles for moving average (default: 20) |
20
|
value_column_part
|
str
|
Column containing part numbers |
'value_string'
|
value_column_trigger
|
str
|
Column containing cycle triggers |
'value_bool'
|
Returns:
| Type | Description |
|---|---|
DataFrame
|
DataFrame with trend data: |
DataFrame
|
|
DataFrame
|
|
DataFrame
|
|
DataFrame
|
|
Example
cycle_time_trend('part_id', 'cycle_trigger', 'PART_A') systime cycle_time_seconds moving_avg trend 0 2024-01-01 08:05:30 45.2 47.1 improving 1 2024-01-01 08:06:18 48.0 47.2 stable 2 2024-01-01 08:07:05 47.1 47.1 stable
hourly_cycle_time_summary ¤
hourly_cycle_time_summary(
part_id_uuid: str,
cycle_trigger_uuid: str,
*,
value_column_part: str = "value_string",
value_column_trigger: str = "value_bool"
) -> pd.DataFrame
Hourly summary of cycle times by part.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
part_id_uuid
|
str
|
UUID for part number signal |
required |
cycle_trigger_uuid
|
str
|
UUID for cycle completion trigger |
required |
value_column_part
|
str
|
Column containing part numbers |
'value_string'
|
value_column_trigger
|
str
|
Column containing cycle triggers |
'value_bool'
|
Returns:
| Type | Description |
|---|---|
DataFrame
|
DataFrame with hourly statistics: |
DataFrame
|
|
DataFrame
|
|
DataFrame
|
|
DataFrame
|
|
DataFrame
|
|
DataFrame
|
|
Example
hourly_cycle_time_summary('part_id', 'cycle_trigger') hour part_number cycles_completed avg_cycle_time min_cycle_time max_cycle_time 0 2024-01-01 08:00:00 PART_A 75 47.2 42.1 55.8 1 2024-01-01 09:00:00 PART_A 78 46.8 43.0 52.3