Skip to content

Commit

Permalink
class LausitzSimWrapperRunner for running RAM intense noise analysis …
Browse files Browse the repository at this point in the history
…separately after sim
  • Loading branch information
simei94 committed Aug 20, 2024
1 parent c7b48d7 commit 3986b35
Showing 1 changed file with 104 additions and 0 deletions.
104 changes: 104 additions & 0 deletions src/main/java/org/matsim/dashboards/LausitzSimWrapperRunner.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
/* *********************************************************************** *
* project: org.matsim.*
* Controler.java
* *
* *********************************************************************** *
* *
* copyright : (C) 2007 by the members listed in the COPYING, *
* LICENSE and WARRANTY file. *
* email : info at matsim dot org *
* *
* *********************************************************************** *
* *
* This program 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 2 of the License, or *
* (at your option) any later version. *
* See also COPYING, LICENSE and WARRANTY file *
* *
* *********************************************************************** */

package org.matsim.dashboards;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.matsim.application.ApplicationUtils;
import org.matsim.application.MATSimAppCommand;
import org.matsim.application.options.ShpOptions;
import org.matsim.core.config.Config;
import org.matsim.core.config.ConfigUtils;
import org.matsim.simwrapper.Dashboard;
import org.matsim.simwrapper.SimWrapper;
import org.matsim.simwrapper.SimWrapperConfigGroup;
import org.matsim.simwrapper.dashboard.NoiseDashboard;
import picocli.CommandLine;

import java.io.IOException;
import java.io.InterruptedIOException;
import java.nio.file.Path;
import java.util.List;

@CommandLine.Command(
name = "simwrapper",
description = "Run additional analysis and create SimWrapper dashboard for existing run output."
)
final class LausitzSimWrapperRunner implements MATSimAppCommand {

private static final Logger log = LogManager.getLogger(LausitzSimWrapperRunner.class);

@CommandLine.Parameters(arity = "1..*", description = "Path to run output directories for which dashboards are to be generated.")
private List<Path> inputPaths;

@CommandLine.Mixin
private final ShpOptions shp = new ShpOptions();

@CommandLine.Option(names = "--noise", defaultValue = "false", description = "create noise dashboard")
private boolean noise;


private LausitzSimWrapperRunner(){
}

@Override
public Integer call() throws Exception {

if (!noise){
throw new IllegalArgumentException("you have not configured any dashboard to be created! Please use command line parameters!");
}

for (Path runDirectory : inputPaths) {
log.info("Running on {}", runDirectory);

Path configPath = ApplicationUtils.matchInput("config.xml", runDirectory);
Config config = ConfigUtils.loadConfig(configPath.toString());
SimWrapper sw = SimWrapper.create(config);

SimWrapperConfigGroup simwrapperCfg = ConfigUtils.addOrGetModule(config, SimWrapperConfigGroup.class);
if (shp.isDefined()){
simwrapperCfg.defaultParams().shp = shp.getShapeFile();
}
//skip default dashboards
simwrapperCfg.defaultDashboards = SimWrapperConfigGroup.Mode.disabled;

//add dashboards according to command line parameters
// TODO: if more dashboards are to be added here, we need to check if noise==true before adding noise dashboard here
sw.addDashboard(Dashboard.customize(new NoiseDashboard()).context("noise"));


try {
sw.generate(runDirectory, true);
sw.run(runDirectory);
} catch (IOException e) {
throw new InterruptedIOException();
}
}

return 0;
}

public static void main(String[] args) {
new LausitzSimWrapperRunner().execute(args);

}

}

0 comments on commit 3986b35

Please sign in to comment.