getValueName method

String? getValueName({
  1. String? name,
  2. BayesValueSignal? signal,
})

Returns the name of a value in this node with name or signal.

Implementation

String? getValueName({String? name, BayesValueSignal? signal}) {
  var nameOrig = name;

  if (name != null) {
    name = BayesValue.resolveName(name, networkCache: network);
    if (_domain.containsKey(name)) {
      return name;
    }
  }

  if (signal != null && signal != BayesValueSignal.unknown) {
    var values = _domain.values.where((e) => e.signal == signal).toList();
    if (values.isNotEmpty) {
      return values.first.name;
    }
  }

  if (signal == null && nameOrig != null) {
    if (nameOrig.contains('+')) {
      signal = BayesValueSignal.positive;
    } else if (nameOrig.contains('-')) {
      signal = BayesValueSignal.negative;
    } else if (nameOrig.contains('?')) {
      signal = BayesValueSignal.unknown;
    }
  }

  if (_domain.length == 2) {
    var valuesNames = _domain.keys.toList();
    valuesNames.sort();

    if (valuesNames.equals(['F', 'T'])) {
      return signal == BayesValueSignal.negative ? 'F' : 'T';
    } else if (valuesNames.equals(['0', '1'])) {
      return signal == BayesValueSignal.negative ? '0' : '1';
    } else if (valuesNames.equals(['N', 'P'])) {
      return signal == BayesValueSignal.negative ? 'N' : 'P';
    } else if (valuesNames.equals(['N', 'Y'])) {
      return signal == BayesValueSignal.negative ? 'N' : 'Y';
    } else if (valuesNames.equals(['N', 'S'])) {
      return signal == BayesValueSignal.negative ? 'N' : 'S';
    } else if (valuesNames.equals(['NO', 'YES'])) {
      return signal == BayesValueSignal.negative ? 'NO' : 'YES';
    } else if (valuesNames.equals(['FALSE', 'TRUE'])) {
      return signal == BayesValueSignal.negative ? 'FALSE' : 'TRUE';
    } else if (valuesNames.equals(['NEGATIVE', 'POSITIVE'])) {
      return signal == BayesValueSignal.negative ? 'NEGATIVE' : 'POSITIVE';
    }
  }

  return null;
}