package nloc; import java.util.List; import java.util.ArrayList; import java.util.ListIterator; import java.util.Arrays; public class TestNloc { public static void main(String[] args) { //Nloc nlSX = new Nloc(getNlocS1()); //Nloc nlSX = new Nloc(getNlocS2()); //Nloc nlSX = new Nloc(getNlocS6()); //Nloc nlSX = new Nloc(getNlocS7()); Nloc nlSX = new Nloc(getNlocS8()); Droplet p = new Droplet(DropletType.PAYLOAD,"p"); List<List<SequenceTuple>> sequences = new ArrayList<List<SequenceTuple>>(); List<List<Channel>> pathlist = nlSX.getAllPaths(); try { List<Channel> modulesToVisit = nlSX.getModulesByName(Arrays.asList("m4","d1","m1","m3","h0", "m5")); List<Channel> payloadPath = nlSX.getDesiredPath(modulesToVisit, pathlist); SequenceTuple plt = new SequenceTuple(p,payloadPath,0,0); List<SequenceTuple> s1 = new ArrayList<SequenceTuple>(); s1.add(plt); sequences.add(s1); //TODO: for every bifurc calculate the list of sequences starting with // single entry for payload droplet List<Channel> bifurcationList = nlSX.getBifurcationList(payloadPath); //System.out.println(bifurcationList); for (int i = bifurcationList.size() - 1; i >= 0; --i) { Channel currentBifurcation = bifurcationList.get(i); List<List<SequenceTuple>> tmpSeqs = new ArrayList<List<SequenceTuple>>(); System.out.println("Bif: " + currentBifurcation.getName()); for (List<SequenceTuple> stl: sequences) { tmpSeqs.addAll(nlSX.getSequencesAtBifurcation(stl, currentBifurcation)); printSequences(tmpSeqs); } sequences = tmpSeqs; } printSequences(sequences); } catch (Exception e) { System.out.println( e.getMessage()); } } public static void printSequence(List<SequenceTuple> seq) { for (SequenceTuple stup: seq) { if (seq.indexOf(stup) == (seq.size() - 1)) { System.out.print(stup.getDroplet().getName() + ": " + stup.getMinPos() + ":" + stup.getMaxPos()); } else { System.out.print(stup.getDroplet().getName() + ": " + stup.getMinPos() + ":" + stup.getMaxPos() + " -> "); } } System.out.println("\n"); } public static void printSequences(List<List<SequenceTuple>> sequences) { System.out.println("##################"); System.out.println("# " + sequences.size() + " Sequences Found"); System.out.println("##################"); System.out.println(""); for (List<SequenceTuple> sl: sequences) { printSequence(sl); } } public static void printPath(List<Channel> path) { System.out.println("Pathlength Payload: " + Nloc.getPayloadPathlength(path)); System.out.println("Pathlength Header: " + Nloc.getHeaderPathlength(path)); for (Channel ch : path) { if (path.indexOf(ch) == (path.size() - 1)) { System.out.print(ch.getName()); } else { System.out.print(ch.getName() + " -> "); } } System.out.println(""); System.out.println(""); } public static void printPaths(List<List<Channel>> pathlist) { System.out.println(""); System.out.println("#############################"); System.out.println("# Number of paths found: " + pathlist.size()); System.out.println("#############################"); for (List<Channel> p : pathlist) { printPath(p); } } public static List<Channel> getNlocS1() { // channel(name, psteps, hsteps) Channel ch1 = new Channel("ch1",1,1); Channel ch2 = new Channel("ch2",1,1); Channel ch3 = new Channel("ch3",1,1); Channel ch4 = new Channel("ch4",1,1); Channel ch5 = new Channel("ch5",1,1); Channel ch6 = new Channel("ch6",1,1); Channel ch7 = new Channel("ch7",1,1); Channel ch8 = new Channel("ch8",1,1); Channel ch9 = new Channel("ch9",1,1); Channel ch10 = new Channel("ch10",1,1); Channel ch11 = new Channel("ch11",3,3); Channel ch12 = new Channel("ch12",1,1); Channel ch13 = new Channel("ch13",1,1); Channel ch14 = new Channel("ch14",1,1); Channel ch15 = new Channel("ch15",1,1); Module m0 = new Module("m0", 5,1); Module m1 = new Module("m1", 5,1); Module m2 = new Module("m2", 5,1); Module d1 = new Module("d1", 5,1); Module d2 = new Module("d2", 5,1); Module h1 = new Module("h1", 5,1); Module h2 = new Module("h2", 5,1); Module f2 = new Module("f2", 5,1); Pump p0 = new Pump(); Sink s0 = new Sink(); List<Channel> chlist = Arrays.asList(ch1, ch2, ch3, ch4, ch5, ch6, ch7, ch8, ch9, ch10, ch11, ch12, ch13, ch14, ch15, m0, m1, m2, d1, d2, h1, h2, f2, p0, s0); p0.addChild(ch1); p0.addChild(ch2); p0.addChild(ch3); ch1.addChild(m2); m2.addChild(ch4); ch4.addChild(d2); d2.addChild(ch6); ch2.addChild(h2); h2.addChild(ch5); ch6.addChild(ch7); ch5.addChild(ch7); ch3.addChild(ch7); ch7.addChild(m1); m1.addChild(ch8); ch8.addChild(f2); f2.addChild(ch9); ch9.addChild(ch11); ch9.addChild(ch10); ch11.addChild(h1); h1.addChild(ch12); ch12.addChild(ch13); ch10.addChild(ch13); ch13.addChild(m0); m0.addChild(ch14); ch14.addChild(d1); d1.addChild(ch15); ch15.addChild(s0); return chlist; } public static List<Channel> getNlocS2() { // channel(name, psteps, hsteps) Channel ch1 = new Channel("ch1",1,1); Channel ch2 = new Channel("ch2",1,1); Channel ch3 = new Channel("ch3",1,1); Channel ch4 = new Channel("ch4",1,1); Channel ch5 = new Channel("ch5",1,1); Channel ch6 = new Channel("ch6",3,3); Channel ch7 = new Channel("ch7",1,1); Channel ch8 = new Channel("ch8",1,1); Channel ch9 = new Channel("ch9",1,1); Channel ch10 = new Channel("ch10",1,1); Channel ch11 = new Channel("ch11",1,1); Channel ch12 = new Channel("ch12",3,3); Channel ch13 = new Channel("ch13",1,1); Channel ch14 = new Channel("ch14",1,1); Channel ch15 = new Channel("ch15",1,1); Channel ch16 = new Channel("ch16",1,1); Channel ch17 = new Channel("ch17",3,3); Channel ch18 = new Channel("ch18",1,1); Channel ch19 = new Channel("ch19",1,1); Channel ch20 = new Channel("ch20",1,1); Channel ch21 = new Channel("ch21",3,3); Channel ch22 = new Channel("ch22",1,1); Channel ch23 = new Channel("ch23",1,1); Channel ch24 = new Channel("ch24",1,1); Channel ch25 = new Channel("ch25",3,3); Channel ch26 = new Channel("ch26",1,1); Channel ch27 = new Channel("ch27",1,1); Channel ch28 = new Channel("ch28",1,1); Channel ch29 = new Channel("ch29",1,1); Channel ch30 = new Channel("ch30",1,1); Module m0 = new Module("m0", 5,1); Module m1 = new Module("m1", 5,1); Module m2 = new Module("m2", 5,1); Module m3 = new Module("m3", 5,1); Module m4 = new Module("m4", 5,1); Module m5 = new Module("m5", 5,1); Module h0 = new Module("h0", 5,1); Module h3 = new Module("h3", 5,1); Module d1 = new Module("d1", 5,1); Module f2 = new Module("f2", 5,1); Pump p0 = new Pump(); Sink s0 = new Sink(); List<Channel> chlist = Arrays.asList(ch1, ch2, ch3, ch4, ch5, ch6, ch7, ch8, ch9, ch10, ch11, ch12, ch13, ch14, ch15, ch16, ch17, ch18, ch19, ch20, ch21, ch22, ch23, ch24, ch25, ch26, ch27, ch28, ch29, ch30, m0, m1, m2, m3, m4, m5, h0, h3, d1, f2, p0, s0); p0.addChild(ch1); p0.addChild(ch2); p0.addChild(ch3); p0.addChild(ch4); ch1.addChild(m4); m4.addChild(ch8); ch8.addChild(ch11); ch8.addChild(ch12); ch12.addChild(d1); d1.addChild(ch15); ch2.addChild(ch9); ch3.addChild(m2); m2.addChild(ch5); ch5.addChild(ch6); ch5.addChild(ch7); ch6.addChild(ch9); ch9.addChild(h3); h3.addChild(ch13); ch4.addChild(ch10); ch7.addChild(ch10); ch10.addChild(f2); f2.addChild(ch14); ch14.addChild(ch16); ch14.addChild(ch17); ch11.addChild(ch18); ch15.addChild(ch18); ch13.addChild(ch18); ch16.addChild(ch18); ch18.addChild(m1); m1.addChild(ch19); ch19.addChild(ch20); ch19.addChild(ch21); ch21.addChild(ch22); ch17.addChild(ch22); ch22.addChild(m3); m3.addChild(ch23); ch23.addChild(ch24); ch23.addChild(ch25); ch20.addChild(ch26); ch24.addChild(ch26); ch26.addChild(m0); m0.addChild(ch28); ch25.addChild(h0); h0.addChild(ch27); ch28.addChild(ch29); ch27.addChild(ch29); ch29.addChild(m5); m5.addChild(ch30); ch30.addChild(s0); return chlist; } public static List<Channel> getNlocS6() { // channel(name, psteps, hsteps) Channel ch1 = new Channel("ch1",1,1); Channel ch2 = new Channel("ch2",1,1); Channel ch3 = new Channel("ch3",1,1); Channel ch4 = new Channel("ch4",1,1); Channel ch5 = new Channel("ch5",3,3); Channel ch6 = new Channel("ch6",1,1); Channel ch7 = new Channel("ch7",1,1); Channel ch8 = new Channel("ch8",1,1); Channel ch9 = new Channel("ch9",1,1); Channel ch10 = new Channel("ch10",3,3); Channel ch11 = new Channel("ch11",1,1); Channel ch12 = new Channel("ch12",1,1); Channel ch13 = new Channel("ch13",1,1); Channel ch14 = new Channel("ch14",3,3); Channel ch15 = new Channel("ch15",1,1); Channel ch16 = new Channel("ch16",1,1); Channel ch17 = new Channel("ch17",1,1); Channel ch18 = new Channel("ch18",1,1); Channel ch19 = new Channel("ch19",1,1); Channel ch20 = new Channel("ch20",1,1); Module m0 = new Module("m0", 5,1); Module m1 = new Module("m1", 5,1); Module m3 = new Module("m3", 5,1); Module m4 = new Module("m4", 5,1); Module m5 = new Module("m5", 5,1); Module h0 = new Module("h0", 5,1); Module h3 = new Module("h3", 5,1); Module d1 = new Module("d1", 5,1); Pump p0 = new Pump(); Sink s0 = new Sink(); List<Channel> chlist = Arrays.asList(ch1, ch2, ch3, ch4, ch5, ch6, ch7, ch8, ch9, ch10, ch11, ch12, ch13, ch14, ch15, ch16, ch17, ch18, ch19, ch20, m0, m1, m3, m4, m5, h0, h3, d1, p0, s0); p0.addChild(ch1); p0.addChild(ch2); ch2.addChild(h3); h3.addChild(ch4); ch1.addChild(m4); m4.addChild(ch3); ch3.addChild(ch5); ch3.addChild(ch6); ch5.addChild(d1); d1.addChild(ch7); ch7.addChild(ch8); ch6.addChild(ch8); ch4.addChild(ch8); ch8.addChild(m1); m1.addChild(ch9); ch9.addChild(ch10); ch9.addChild(ch11); ch10.addChild(ch12); ch12.addChild(m3); m3.addChild(ch13); ch13.addChild(ch14); ch13.addChild(ch15); ch14.addChild(h0); h0.addChild(ch16); ch15.addChild(ch17); ch11.addChild(ch17); ch17.addChild(m0); m0.addChild(ch18); ch16.addChild(ch19); ch18.addChild(ch19); ch19.addChild(m5); m5.addChild(ch20); ch20.addChild(s0); return chlist; } public static List<Channel> getNlocS7() { // channel(name, psteps, hsteps) Channel ch1 = new Channel("ch1",1,1); Channel ch2 = new Channel("ch2",1,1); Channel ch3 = new Channel("ch3",1,1); Channel ch4 = new Channel("ch4",1,1); Channel ch5 = new Channel("ch5",1,1); Channel ch6 = new Channel("ch6",1,1); Channel ch7 = new Channel("ch7",1,1); Channel ch8 = new Channel("ch8",3,3); Channel ch9 = new Channel("ch9",1,1); Channel ch10 = new Channel("ch10",1,1); Channel ch11 = new Channel("ch11",1,1); Channel ch12 = new Channel("ch12",3,3); Channel ch13 = new Channel("ch13",1,1); Channel ch14 = new Channel("ch14",1,1); Channel ch15 = new Channel("ch15",1,1); Channel ch16 = new Channel("ch16",1,1); Channel ch17 = new Channel("ch17",1,1); Channel ch18 = new Channel("ch18",1,1); Module m0 = new Module("m0", 5,1); Module m1 = new Module("m1", 5,1); Module m3 = new Module("m3", 5,1); Module m4 = new Module("m4", 5,1); Module m5 = new Module("m5", 5,1); Module h0 = new Module("h0", 5,1); Module h3 = new Module("h3", 5,1); Module d1 = new Module("d1", 5,1); Pump p0 = new Pump(); Sink s0 = new Sink(); List<Channel> chlist = Arrays.asList(ch1, ch2, ch3, ch4, ch5, ch6, ch7, ch8, ch9, ch10, ch11, ch12, ch13, ch14, ch15, ch16, ch17, ch18, m0, m1, m3, m4, m5, h0, h3, d1, p0, s0); p0.addChild(ch1); p0.addChild(ch2); ch2.addChild(h3); h3.addChild(ch4); ch1.addChild(m4); m4.addChild(ch3); ch3.addChild(d1); d1.addChild(ch5); ch5.addChild(ch6); ch4.addChild(ch6); ch6.addChild(m1); m1.addChild(ch7); ch7.addChild(ch8); ch7.addChild(ch9); ch8.addChild(ch10); ch10.addChild(m3); m3.addChild(ch11); ch11.addChild(ch12); ch11.addChild(ch13); ch13.addChild(ch15); ch9.addChild(ch15); ch12.addChild(h0); h0.addChild(ch14); ch15.addChild(m0); m0.addChild(ch16); ch14.addChild(ch17); ch16.addChild(ch17); ch17.addChild(m5); m5.addChild(ch18); ch18.addChild(s0); return chlist; } public static List<Channel> getNlocS8() { // channel(name, psteps, hsteps) Channel ch1 = new Channel("ch1",1,1); Channel ch2 = new Channel("ch2",3,3); Channel ch3 = new Channel("ch3",1,1); Channel ch4 = new Channel("ch4",1,1); Channel ch5 = new Channel("ch5",1,1); Channel ch6 = new Channel("ch6",1,1); Channel ch7 = new Channel("ch7",1,1); Channel ch8 = new Channel("ch8",1,1); Channel ch9 = new Channel("ch9",3,3); Channel ch10 = new Channel("ch10",1,1); Channel ch11 = new Channel("ch11",1,1); Channel ch12 = new Channel("ch12",1,1); Channel ch13 = new Channel("ch13",3,3); Channel ch14 = new Channel("ch14",1,1); Channel ch15 = new Channel("ch15",1,1); Channel ch16 = new Channel("ch16",1,1); Channel ch17 = new Channel("ch17",1,1); Channel ch18 = new Channel("ch18",1,1); Channel ch19 = new Channel("ch19",1,1); Module m0 = new Module("m0", 5,1); Module m1 = new Module("m1", 5,1); Module m3 = new Module("m3", 5,1); Module m4 = new Module("m4", 5,1); Module m5 = new Module("m5", 5,1); Module h0 = new Module("h0", 5,1); Module h3 = new Module("h3", 5,1); Module d1 = new Module("d1", 5,1); Pump p0 = new Pump(); Sink s0 = new Sink(); List<Channel> chlist = Arrays.asList(ch1, ch2, ch3, ch4, ch5, ch6, ch7, ch8, ch9, ch10, ch11, ch12, ch13, ch14, ch15, ch16, ch17, ch18, ch19, m0, m1, m3, m4, m5, h0, h3, d1, p0, s0); p0.addChild(ch1); ch1.addChild(ch2); ch1.addChild(ch3); ch2.addChild(m4); m4.addChild(ch4); ch4.addChild(d1); d1.addChild(ch6); ch3.addChild(h3); h3.addChild(ch5); ch6.addChild(ch7); ch5.addChild(ch7); ch7.addChild(m1); m1.addChild(ch8); ch8.addChild(ch9); ch8.addChild(ch10); ch9.addChild(ch11); ch11.addChild(m3); m3.addChild(ch12); ch12.addChild(ch13); ch12.addChild(ch14); ch13.addChild(h0); h0.addChild(ch15); ch10.addChild(ch16); ch14.addChild(ch16); ch16.addChild(m0); m0.addChild(ch17); ch15.addChild(ch18); ch17.addChild(ch18); ch18.addChild(m5); m5.addChild(ch19); ch19.addChild(s0); return chlist; } }