package ca.pfv.spmf.algorithms.sequentialpatterns.fournier2008_seqdim; /* This file is copyright (c) 2008-2013 Philippe Fournier-Viger * * This file is part of the SPMF DATA MINING SOFTWARE * (http://www.philippe-fournier-viger.com/spmf). * * SPMF is free software: you can redistribute it and/or modify it under the * terms of the GNU General Public License as published by the Free Software * Foundation, either version 3 of the License, or (at your option) any later * version. * * SPMF is distributed in the hope that it will be useful, but WITHOUT ANY * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR * A PARTICULAR PURPOSE. See the GNU General Public License for more details. * You should have received a copy of the GNU General Public License along with * SPMF. If not, see <http://www.gnu.org/licenses/>. */ /** * This class is used for debugging some definitions used in the * BIDE+ algorithm used with SeqDim. It has no other uses and it should only be used by * developpers who want to debug some very specific definition of * the BIDE+ algorithm about first/last instance, periods, semi-maximum * periods... (see the BIDE paper for details). * @see AlgoFournierViger08 * @see AlgoBIDEPlus * @author Philippe Fournier-Viger * */ public class TestPseudoSequence { public static void main(String[] args) { //AB in ABBCA is ABB. last instance PseudoSequence pseudoSequence = createABBCA(); Sequence prefix = createAB(); PseudoSequence prefix2 = createA_AB_C(); PseudoSequence prefix3 = createA_ABA_CB(); // PseudoSequence prefixCAABC = createCAABC(); // PseudoSequence prefixCACAC = createCACAC(); // Sequence prefixCAC = createCAC(); System.out.println("STARTING"); System.out.print("The first instance of "); prefix.print(); System.out.print(" in sequence "); pseudoSequence.print(); System.out.print(" is "); pseudoSequence.getFirstInstanceOfPrefixSequence(prefix, prefix.getItemOccurencesTotalCount()).pseudoSequence.print(); System.out.println(); System.out.print("The last instance of "); prefix.print(); System.out.print(" in sequence "); pseudoSequence.print(); System.out.print(" is "); pseudoSequence.getLastInstanceOfPrefixSequence(prefix,prefix.getItemOccurencesTotalCount()).pseudoSequence.print(); System.out.println(); System.out.print("The first instance of "); prefix.print(); System.out.print(" in sequence "); prefix2.print(); System.out.print(" is "); prefix2.getFirstInstanceOfPrefixSequence(prefix,prefix.getItemOccurencesTotalCount()).pseudoSequence.print(); System.out.println(); System.out.print("The last instance of "); prefix.print(); System.out.print(" in sequence "); prefix2.print(); System.out.print(" is "); prefix2.getLastInstanceOfPrefixSequence(prefix,prefix.getItemOccurencesTotalCount()).pseudoSequence.print(); System.out.println(); System.out.print("The first instance of "); prefix.print(); System.out.print(" in sequence "); prefix3.print(); System.out.print(" is "); prefix3.getFirstInstanceOfPrefixSequence(prefix,prefix.getItemOccurencesTotalCount()).pseudoSequence.print(); System.out.println(); System.out.print("The last instance of "); prefix.print(); System.out.print(" in sequence "); prefix3.print(); System.out.print(" is "); prefix3.getLastInstanceOfPrefixSequence(prefix,prefix.getItemOccurencesTotalCount()).pseudoSequence.print(); System.out.println(); //// If S= CAABC and SP = AB then LL1 = second A in CAABC // System.out.print("The 0th last-in-last of prefix "); // prefix.print(); // System.out.print(" in sequence "); // prefixCAABC.print(); // System.out.print(" is "); // prefixCAABC.getIthLastInLastApearanceWithRespectToPrefix(prefix,0).print(); // System.out.println(); // //// * If S= CACAC and SP = CAC then LL1 = second C in S, //// * LL2 = second A in S and //// * LL3 = third C in S // System.out.print("The 0th last-in-last of prefix "); // prefixCAC.print(); // System.out.print(" in sequence "); // prefixCACAC.print(); // System.out.print(" is "); // prefixCACAC.getIthLastInLastApearanceWithRespectToPrefix(prefixCAC,0).print(); // System.out.println(); // // System.out.print("The 1th last-in-last of prefix "); // prefixCAC.print(); // System.out.print(" in sequence "); // prefixCACAC.print(); // System.out.print(" is "); // prefixCACAC.getIthLastInLastApearanceWithRespectToPrefix(prefixCAC,1).print(); // System.out.println(); // // System.out.print("The 2th last-in-last of prefix "); // prefixCAC.print(); // System.out.print(" in sequence "); // prefixCACAC.print(); // System.out.print(" is "); // prefixCACAC.getIthLastInLastApearanceWithRespectToPrefix(prefixCAC,2).print(); // System.out.println(); } private static Sequence createCAC() { Itemset itemset1 = new Itemset(new ItemSimple(3), 0); Itemset itemset2 = new Itemset(new ItemSimple(1), 0); Itemset itemset3 = new Itemset(new ItemSimple(3), 0); Sequence sequence = new Sequence(1); sequence.addItemset(itemset1); sequence.addItemset(itemset2); sequence.addItemset(itemset3); return sequence; } private static PseudoSequence createCACAC() { Itemset itemset1 = new Itemset(new ItemSimple(3), 0); Itemset itemset2 = new Itemset(new ItemSimple(1), 0); Itemset itemset3 = new Itemset(new ItemSimple(3), 0); Itemset itemset4 = new Itemset(new ItemSimple(1), 0); Itemset itemset5 = new Itemset(new ItemSimple(3), 0); Sequence sequence = new Sequence(1); sequence.addItemset(itemset1); sequence.addItemset(itemset2); sequence.addItemset(itemset3); sequence.addItemset(itemset4); sequence.addItemset(itemset5); PseudoSequence pseudoSequence = new PseudoSequence(0, sequence, 0 , 0); return pseudoSequence; } private static PseudoSequence createCAABC() { Itemset itemset1 = new Itemset(new ItemSimple(3), 0); Itemset itemset2 = new Itemset(new ItemSimple(1), 0); Itemset itemset3 = new Itemset(new ItemSimple(1), 0); Itemset itemset4 = new Itemset(new ItemSimple(2), 0); Itemset itemset5 = new Itemset(new ItemSimple(3), 0); Sequence sequence = new Sequence(1); sequence.addItemset(itemset1); sequence.addItemset(itemset2); sequence.addItemset(itemset3); sequence.addItemset(itemset4); sequence.addItemset(itemset5); PseudoSequence pseudoSequence = new PseudoSequence(0, sequence, 0 , 0); return pseudoSequence; } private static PseudoSequence createA_AB() { Itemset itemset1 = new Itemset(new ItemSimple(1), 0); Itemset itemset2 = new Itemset(new ItemSimple(1), 0); itemset2.addItem(new ItemSimple(2)); Sequence sequence = new Sequence(1); // AB sequence.addItemset(itemset1); sequence.addItemset(itemset2); PseudoSequence pseudoSequence = new PseudoSequence(0, sequence, 0 , 0); return pseudoSequence; } private static PseudoSequence createA_AB_C() { Itemset itemset1 = new Itemset(new ItemSimple(1), 0); Itemset itemset2 = new Itemset(new ItemSimple(1), 0); itemset2.addItem(new ItemSimple(2)); Itemset itemset3 = new Itemset(new ItemSimple(3), 0); Sequence sequence = new Sequence(1); // AB sequence.addItemset(itemset1); sequence.addItemset(itemset2); sequence.addItemset(itemset3); PseudoSequence pseudoSequence = new PseudoSequence(0, sequence, 0 , 0); return pseudoSequence; } private static PseudoSequence createA_ABA_CB() { Itemset itemset1 = new Itemset(new ItemSimple(1), 0); Itemset itemset2 = new Itemset(new ItemSimple(1), 0); itemset2.addItem(new ItemSimple(2)); itemset2.addItem(new ItemSimple(1)); Itemset itemset3 = new Itemset(new ItemSimple(3), 0); itemset3.addItem(new ItemSimple(2)); Sequence sequence = new Sequence(1); // AB sequence.addItemset(itemset1); sequence.addItemset(itemset2); sequence.addItemset(itemset3); PseudoSequence pseudoSequence = new PseudoSequence(0, sequence, 0 , 0); return pseudoSequence; } private static Sequence createAB() { Itemset itemset1 = new Itemset(new ItemSimple(1), 0); Itemset itemset2 = new Itemset(new ItemSimple(2), 0); Sequence sequence = new Sequence(1); // AB sequence.addItemset(itemset1); sequence.addItemset(itemset2); return sequence; } private static PseudoSequence createABBCA() { Itemset itemset1 = new Itemset(new ItemSimple(1), 0); Itemset itemset2 = new Itemset(new ItemSimple(2), 0); Itemset itemset3 = new Itemset(new ItemSimple(2), 0); Itemset itemset4 = new Itemset(new ItemSimple(3), 0); Itemset itemset5 = new Itemset(new ItemSimple(1), 0); Sequence sequence = new Sequence(1); // ABBCA sequence.addItemset(itemset1); sequence.addItemset(itemset2); sequence.addItemset(itemset3); sequence.addItemset(itemset4); sequence.addItemset(itemset5); PseudoSequence pseudoSequence = new PseudoSequence(0, sequence, 0 , 0); return pseudoSequence; } }