def classifier_ssk_modular(fm_train_dna=traindat,
                           fm_test_dna=testdat,
                           label_train_dna=label_traindat,
                           C=1,
                           maxlen=1,
                           decay=1):
    from modshogun import StringCharFeatures, BinaryLabels
    from modshogun import LibSVM, StringSubsequenceKernel, DNA
    from modshogun import ErrorRateMeasure

    feats_train = StringCharFeatures(fm_train_dna, DNA)
    feats_test = StringCharFeatures(fm_test_dna, DNA)
    labels = BinaryLabels(label_train_dna)
    kernel = StringSubsequenceKernel(feats_train, feats_train, maxlen, decay)

    svm = LibSVM(C, kernel, labels)
    svm.train()

    out = svm.apply(feats_train)
    evaluator = ErrorRateMeasure()
    trainerr = evaluator.evaluate(out, labels)
    # print(trainerr)

    kernel.init(feats_train, feats_test)
    predicted_labels = svm.apply(feats_test).get_labels()
    # print predicted_labels

    return predicted_labels
def kernel_ssk_string_modular(fm_train_dna=traindat,
                              fm_test_dna=testdat,
                              maxlen=1,
                              decay=1):
    from modshogun import StringSubsequenceKernel
    from modshogun import StringCharFeatures, DNA

    feats_train = StringCharFeatures(fm_train_dna, DNA)
    feats_test = StringCharFeatures(fm_train_dna, DNA)

    kernel = StringSubsequenceKernel(feats_train, feats_train, maxlen, decay)

    km_train = kernel.get_kernel_matrix()
    # print(km_train)
    kernel.init(feats_train, feats_test)
    km_test = kernel.get_kernel_matrix()
    # print(km_test)
    return km_train, km_test, kernel