package org.lemsml.jlems.viz; import java.io.File; import java.util.HashMap; import org.lemsml.jlems.core.logging.E; import org.lemsml.jlems.core.run.StateInstance; import org.lemsml.jlems.core.run.StateType; import org.lemsml.jlems.core.sim.LEMSException; import org.lemsml.jlems.core.sim.Sim; import org.lemsml.jlems.io.IOUtil; import org.lemsml.jlems.io.Main; import org.lemsml.jlems.io.logging.DefaultLogger; import org.lemsml.jlems.io.out.FileResultWriterFactory; import org.lemsml.jlems.io.reader.FileInclusionReader; import org.lemsml.jlems.viz.datadisplay.ControlPanel; import org.lemsml.jlems.viz.datadisplay.SwingDataViewerFactory; public final class VizMain { public static final String NO_GUI_FLAG = "-nogui"; private VizMain() { } public static void main(String[] argv) throws LEMSException { boolean debug = true; boolean useGui = true; FileResultWriterFactory.initialize(); if (argv.length>=2 && argv[argv.length-1].equals(NO_GUI_FLAG)) { useGui = false; } if (useGui) SwingDataViewerFactory.initialize(); DefaultLogger.initialize(); if (argv.length == 0 && !debug) { System.err.println("No model file specified!"); Main.showUsage(); System.exit(1); } if (argv.length == 1 && (argv[0].equals("-h") || argv[0].equals("-help") || argv[0].equals("-?"))) { Main.showUsage(); System.exit(0); } HashMap<String, String> argMap = Main.parseArguments(argv); String typePath = null; String modelName = null; //boolean verbose = true; boolean verbose = false; if (argMap.containsKey("-cp")) { typePath = argMap.get("-cp"); argMap.remove("-cp"); } else if (debug) { typePath = "../NeuroML2/NeuroML2CoreTypes/"; } if (argMap.containsKey("0")) { modelName = argMap.get("0"); argMap.remove("0"); } else if (debug) { modelName = "../NeuroML2/LEMSexamples/LEMS_NML2_Ex22_Spiketimes.xml"; } if (modelName == null) { Main.showUsage(); System.exit(1); } final String typePathArg = typePath; ControlPanel cp = new ControlPanel(ControlPanel.DEFAULT_NAME, useGui) { @Override public Sim importFile(File simFile) throws LEMSException { if (!simFile.exists()) { E.error("No such file: " + simFile.getAbsolutePath()); System.exit(1); } FileInclusionReader fir = new FileInclusionReader(simFile); if (typePathArg != null) { fir.addSearchPaths(typePathArg); } Sim sim = new Sim(fir.read()); sim.readModel(); sim.build(); return sim; } }; File simFile = new File(modelName); Sim sim = cp.initialise(simFile); StateInstance si = sim.getCurrentRootState(); StateType st = sim.getTargetBehavior(); if (verbose) { System.out.println("Pre run StateType: \n"); System.out.println(st.getSummary(" ", "| ")+"\n"); System.out.println("Pre run: \n"); System.out.println(si.getSummary(" ", "| ")+"\n"); } boolean doRun = true; if (doRun) { sim.run(); E.info("Finished reading, building, running and displaying the LEMS model"); } IOUtil.saveReportAndTimesFile(sim); } }