Added short motif code: MotifEncoder, a sequence dataset encoder where each feature is a motif (position-specific, possibly gapped), 1 denotes the motif is present and 0 absent. Motifs are filtered by precision and recall thresholds. Several related reports are included (to calibrate recall threshold or analyse properties of learned motifs).
Added SimilarToPositiveSequenceEncoder, a baseline method with a single feature. The encoder memorises all positive sequences in the training set, and the feature is 1 if a sequence is within a given hamming distance from ANY positive sequence in the training set, and 0 otherwise.
Added BinaryFeatureClassifier which takes a binary encoder (such as MotifEncoder or SimilarToPositiveSequenceEncoder) and classifies an example as positive if it has any positive features. For SimilarToPositiveSequenceEncoder there is anyways just 1 feature. For MotifEncoder, optionally a subset of complementary motifs can be learned which together can be used to classify the sequence dataset.
Added KerasSequenceCNN which is the Mason CNN for sequence datasets.
Also contains example weighting code, to up-weight or down-weight individual examples. This is by default supported by most ML libraries like scikit-learn, pytorch. While this code is currently not actively in use, it does work and we may use it later. For now I removed the weighting strategy that I initially used for short motif (it only made sense for mutagenesis data), but kept that code on a separate branch. This PR now only contains the 'predefined weighting' strategy where example weights are supplied in a file. Other weighting strategies can be added similarly to encodings, ML methods, etc.
Updated documentation: installation (optional dependency: Mason CNN) and added 'motif recovery' tutorial using the short motif method.