Skip to content

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
  • systime: Cycle completion time
DataFrame
  • part_number: Part number/ID
DataFrame
  • cycle_time_seconds: Cycle time in seconds
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
  • part_number: Part number/ID
DataFrame
  • count: Number of cycles
DataFrame
  • min_seconds: Minimum cycle time
DataFrame
  • avg_seconds: Average cycle time
DataFrame
  • max_seconds: Maximum cycle time
DataFrame
  • std_seconds: Standard deviation
DataFrame
  • median_seconds: Median cycle time (robust target)
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
  • systime: Cycle completion time
DataFrame
  • part_number: Part number/ID
DataFrame
  • cycle_time_seconds: Actual cycle time
DataFrame
  • median_seconds: Expected (median) cycle time
DataFrame
  • deviation_factor: How many times slower than expected
DataFrame
  • is_slow: Flag (always True in returned data)
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
  • systime: Cycle completion time
DataFrame
  • cycle_time_seconds: Actual cycle time
DataFrame
  • moving_avg: Moving average cycle time
DataFrame
  • trend: 'improving', 'stable', or 'degrading'
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
  • hour: Hour timestamp
DataFrame
  • part_number: Part number/ID
DataFrame
  • cycles_completed: Number of cycles
DataFrame
  • avg_cycle_time: Average cycle time
DataFrame
  • min_cycle_time: Fastest cycle
DataFrame
  • max_cycle_time: Slowest cycle
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