getTargetFrequency function

List<int> getTargetFrequency(
  1. WidgetRef ref
)

Implementation

List<int> getTargetFrequency(WidgetRef ref) {
  String stdout = ref.watch(stdoutProvider);

  final randomPartition = ref.watch(partitionProvider);

  try {
    // Extract frequencies of target variable classes from R output.
    // If randomPartition is true, calculate floor of frequencies scaled by DATA_SPLIT_TR_TU_TE.

    String defineTarget = rExtract(
      stdout,
      randomPartition
          ? ' floor(as.numeric(table(ds[[target]])) * split[1])'
          : ' as.numeric(table(ds[[target]]))',
    );

    // Remove [1] prefix if present.

    defineTarget = defineTarget.replaceAll(RegExp(r'^\[1\]\s*'), '');

    // Split string into numbers and convert to integers.

    List<int> frequencies = defineTarget
        .trim()
        .split(RegExp(r'\s+'))
        .map((s) => int.tryParse(s) ?? 0)
        .toList();

    return frequencies.length == 2 ? frequencies : [0, 0];
  } catch (e) {
    return [0, 0]; // Return default on error.
  }
}