private static String[] extractKeywords(@NonNull KeywordSpecification[] keywordSpecs) { final String[] out = new String[keywordSpecs.length]; for (int i = 0; i < out.length; i++) { out[i] = keywordSpecs[i].getKeyword(); } return out; }
/** * Returns a sensible default comparator for the given KeywordSpecification. * * @param keywordSpec some KeywordSpecification. * * @return a sensible default comparator for the given KeywordSpecification. */ public static ValueComparator getDefaultComparator(@NonNull KeywordSpecification keywordSpec) { switch (keywordSpec.getType()) { case STRING: { return new DerivableStringComparatorWrapper(keywordSpec.getKeyword(), new CharStatComparator()); } case SYMBOLIC: { final Alphabet alphabet = ((SymbolicKeywordSpecification) keywordSpec).getAlphabet(); final DerivableComparator<String, String> comp = new SquareReplacementMatrixComparator<>( new IndexingAlphabetWrapper(alphabet)); return new DerivableSymbolicComparatorWrapper(keywordSpec.getKeyword(), comp); } case VECTOR: { final int dimensions = ((VectorialKeywordSpecification) keywordSpec).getLength(); final DerivableComparator<double[], double[]> comp = new NormalizedL1Comparator(dimensions); return new DerivableVectorialComparatorWrapper(keywordSpec.getKeyword(), comp); } default: throw new IllegalArgumentException( "No defaults defined for value type: " + keywordSpec.getType()); } }