package edu.hawaii.jmotif.sax.datastructures; import java.util.List; /** * Just a container for discords/motifs. * * @author psenin * */ public class DiscordsAndMotifs { private final DiscordRecords discords; private final MotifRecords motifs; /** * Constructor. * * @param discordCollectionSize maxSize of discords collection. * @param motifsCollectionSize maxSize of motifs collection. */ public DiscordsAndMotifs(int discordCollectionSize, int motifsCollectionSize) { this.discords = new DiscordRecords(); this.discords.setMaxCapacity(discordCollectionSize); this.motifs = new MotifRecords(); this.motifs.setMaxCapacity(motifsCollectionSize); } /** * Add the motif into the storage. * * @param motifRecord The motif to add. */ public void addMotif(MotifRecord motifRecord) { this.motifs.add(motifRecord); } public void addMotifs(MotifRecords motifsCollection) { for (MotifRecord m : motifsCollection) { this.motifs.add(m); } } /** * Add the discord into the storage. * * @param discordRecord The discord record. */ public void addDiscord(DiscordRecord discordRecord) { this.discords.add(discordRecord); } public void addDiscords(DiscordRecords discordsCollection) { for (DiscordRecord d : discordsCollection) { this.discords.add(d); } } /** * Returns the current min distance in discords - so alleviates the searching troubles. * * @return The min distance. */ public double getMinDistance() { return this.discords.getMinDistance(); } /** * Get the hit motifs. * * @param num The number of instances asked. * @return The sorted by decreasing frequency list of motifs. */ public List<MotifRecord> getTopMotifs(int num) { return this.motifs.getTopHits(num); } /** * Get the list of top (most distant) discords. * * @param num The number of instances asked. * @return The sorted by decreasing distance list of discords. */ public List<DiscordRecord> getTopDiscords(int num) { return this.discords.getTopHits(num); } @Override public String toString() { StringBuffer sb = new StringBuffer(1024); sb.append("Motifs, as a list <frequency> [<offset1>,...,<offsetN>], from last to first:\n"); sb.append(motifs.toString()); sb.append("\nDiscords, as a list <distance> <offset>, from last to first:\n"); sb.append(discords.toString()); return sb.toString(); } }