Dear users, Please note that, from Monday, August 16, 2019, RSA keys shorter than 2048bit will no longer be accepted for security reasons. Please update your keys as needed before this date. If you need assistance with regard to this process, please contact sia@list.lu

Thank you for your understanding.

Commit 7cb1bafe authored by Olivier Parisot's avatar Olivier Parisot 🤖

First commit

parents
This diff is collapsed.
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>HyMiVApp</name>
<comment>NO_M2ECLIPSE_SUPPORT: Project files created with the maven-eclipse-plugin are not supported in M2Eclipse.</comment>
<projects>
<project>cadral-editor</project>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>
\ No newline at end of file
This diff is collapsed.
Copyright 2014-2016 LIST (Luxembourg Institute of Science and Technology), all right reserved.
Authorship : Olivier PARISOT, Yoanne DIDRY
Licensed under GNU General Public License version 3
## Synopsis
gapIT is an interactive software for gap filling in hydrological time series.
Given as input hydrological discharge data series measures at gauging stations, it performs an automated calculation of missing data using different data-infilling techniques. Donor station(s) are automatically selected based on Dynamic Time Warping, geographical proximity and upstream/downstream relationships among stations. For each gap, the tool computes several flow estimates through various data-infilling techniques, including interpolation, multiple regression, regression trees and neural networks. The visual application provides the possibility for the user to select different donor station(s) w.r.t. those automatically selected.
The results are validated by randomly creating artificial gaps of different lengths and positions along the entire records. Using the Root Mean Squared Error and the Nash-Sutcliffe coefficient as performance measures, the method is evaluated based on a comparison with the actual measured discharge values.
The interactive but automated approach of gapIT, coupled with a visual inspection system for user-defined refinement, allows for a standardized objective infilling, where subjective decisions are allowed but are at the same time traceable.
## Motivation
Missing records in hydrological databases represent a loss of information and a serious drawback in water management (measures of river flow for example). An incomplete time series prevents the computation of hydrological statistics and indicators. Also, records with data gaps are not suitable as input or validation data for hydrological or hydrodynamic modeling.
## Installation
Requirements: Maven (>=3.0.2), JDK (>=1.7).
Compilation: "mvn clean package"
Execution for Windows environment: "run.bat"
Execution for others: "java -jar -Xmx4G target/gapIt.jar"
## Data
Fake data are provided with the distribution.
To get the real data, please contact Ivonne Trebs (ivonne.trebs@list.lu).
## References
Laura Giustarini, Olivier Parisot, Mohammad Ghoniem, Renaud Hostache, Ivonne Trebs, Benoît Otjacques: «gapIT: a user-driven case-based reasoning tool for infilling missing values in daily mean river flow records», «Tag der Hydrologie 2016», Koblenz, Germany, 17/3/2016
Laura Giustarini, Olivier Parisot, Mohammad Ghoniem, Ivonne Trebs, Nicolas Médoc, Olivier Faber, Renaud Hostache, Patrick Matgen, Benoît Otjacques: «Data-infilling in daily mean river flow records: first results using a visual analytics tool (gapIT)», «European Geosciences Union General Assembly 2015 (EGU 2015), Geophysical Research Abstracts Volume 17», Vienna, Austria, 4/2015
Olivier Parisot, Laura Giustarini, Olivier Faber, Renaud Hostache, Ivonne Trebs, Mohammad Ghoniem: «gapIT: Un outil visuel pour l'imputation de valeurs manquantes en hydrologie», «EGC 2015», Luxembourg, 1/2015
## License
GPL v3, see LICENSE.txt.
# if true then build a dataset from initial files (located in initialDataPath)
withOriginalFile=false
# path of initial files (used if withOriginalFile=true)
prefix=Q-
initialDataPath=.\\data_fake2\\
# path of the map which is showed in UI
picturePath=.\\data_fake2\\map2.png
# path of the modified dataset (used if withOriginalFile=false)
modifiedDataPath=.\\data_fake2\\all_valid_q_series_complete2.arff
# min year (used if withOriginalFile=true)
minYear=2007
# path of the file containing the stations' coordinates
coordinatesPath=.\\data_fake2\\stations_coordinates.txt
# path of the file containing the stations' relationships
relationshipsPath=.\\data_fake2\\stations_relationships_1.xml,.\\data\\stations_relationships_2.xml
# path fo the file containing the map of the targetted country
shapeImagePath=.\\data_fake2\\shapeCountry.jpg
# path of the knowledge DB
knowledgeDBPath=.\\data_fake2\\knowledgeDB20-discharge.arff
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<prerequisites>
<maven>3.0.2</maven>
</prerequisites>
<groupId>lu.lippmann.cdb.ext.hydviga</groupId>
<artifactId>HyMiVApp</artifactId>
<version>0.9.2</version>
<packaging>jar</packaging>
<name>HyMiVApp</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<mainclass>lu.lippmann.cdb.ext.hydviga.HydroRunner</mainclass>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.neo4j</groupId>
<artifactId>neo4j</artifactId>
<version>1.4.M02</version>
</dependency>
<dependency>
<groupId>net.sf.jung</groupId>
<artifactId>jung-api</artifactId>
<version>2.0.1</version>
</dependency>
<dependency>
<groupId>net.sf.jung</groupId>
<artifactId>jung-visualization</artifactId>
<version>2.0.1</version>
</dependency>
<dependency>
<groupId>net.sf.jung</groupId>
<artifactId>jung-io</artifactId>
<version>2.0.1</version>
</dependency>
<dependency>
<groupId>net.sf.jung</groupId>
<artifactId>jung-graph-impl</artifactId>
<version>2.0.1</version>
</dependency>
<dependency>
<groupId>org.bushe</groupId>
<artifactId>eventbus</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>com.google.inject</groupId>
<artifactId>guice</artifactId>
<version>3.0</version>
<!-- <scope>provided</scope> -->
</dependency>
<dependency>
<groupId>org.java.net.substance</groupId>
<artifactId>substance</artifactId>
<version>6.0</version>
</dependency>
<dependency>
<groupId>com.github.insubstantial</groupId>
<artifactId>substance-swingx</artifactId>
<version>7.1</version>
</dependency>
<dependency>
<groupId>org.swinglabs</groupId>
<artifactId>swingx</artifactId>
<version>1.6.1</version>
</dependency>
<dependency>
<groupId>org.jboss.netty</groupId>
<artifactId>netty</artifactId>
<version>3.2.3.Final</version>
</dependency>
<dependency>
<groupId>nz.ac.waikato.cms.weka</groupId>
<artifactId>weka-dev</artifactId>
<version>3.7.10</version>
</dependency>
<dependency>
<groupId>nz.ac.waikato.cms.weka</groupId>
<artifactId>EMImputation</artifactId>
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>pentaho.weka</groupId>
<artifactId>pdm-timeseriesforecasting</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>org.jfree</groupId>
<artifactId>jfreechart</artifactId>
<version>1.0.14</version>
</dependency>
<dependency>
<groupId>org.jaitools</groupId>
<artifactId>jt-utils</artifactId>
<version>1.2.0</version>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>
<!-- Rest easy test -->
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
<version>2.2.1.GA</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jackson-provider</artifactId>
<version>2.2.1.GA</version>
</dependency>
<!-- end Rest easy test -->
<dependency>
<groupId>com.googlecode.efficient-java-matrix-library</groupId>
<artifactId>ejml</artifactId>
<version>0.22</version>
</dependency>
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.2.1</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-math3</artifactId>
<version>3.1.1</version>
</dependency>
</dependencies>
<repositories>
<repository>
<id>pentaho-releases</id>
<url>http://repository.pentaho.org/artifactory/repo/</url>
</repository>
<repository>
<id>central</id>
<name>Maven Repository Switchboard</name>
<layout>default</layout>
<url>http://repo1.maven.org/maven2</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>jboss</id>
<url>http://repository.jboss.org/nexus/content/groups/public/</url>
</repository>
<!-- issue with this repo <repository> <id>weka-repo</id> <name>Weka repository</name>
<url>https://maven.ch.cam.ac.uk/m2repo</url> </repository> -->
<repository>
<id>localproj</id>
<url>file://${project.basedir}/lib/</url>
</repository>
<repository>
<id>sanity-maven-repo</id>
<name>Sanity's Maven repository on GitHub</name>
<url>http://sanity.github.com/maven-repo/repository/</url>
</repository>
</repositories>
<build>
<finalName>gapIt</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.6</version>
<configuration>
<archive>
<index>true</index>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>${mainclass}</mainClass>
<classpathPrefix>lib/</classpathPrefix>
</manifest>
<manifestEntries>
<url>${project.url}</url>
</manifestEntries>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.10</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>false</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.mycila.maven-license-plugin</groupId>
<artifactId>maven-license-plugin</artifactId>
<version>1.10.b1</version>
<configuration>
<header>LicenseHeader.txt</header>
<properties>
<project>
${project.name}
</project>
<founder>${project.organization.name}</founder>
<year>${project.inceptionYear}</year>
<website>${founder-website}</website>
</properties>
<includes>
<include>src/main/java/**</include>
<include>src/test/java/**</include>
</includes>
</configuration>
<executions>
<execution>
<goals>
<goal>format</goal>
</goals>
<phase>process-sources</phase>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>com.mycila</groupId>
<artifactId>licenses</artifactId>
<version>1</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</project>
java -jar -Xmx4G target/gapIt.jar || ECHO "You should install a JDK >= 1.7!"
pause
/**
* Copyright 2014-2016 LIST (Luxembourg Institute of Science and Technology), all right reserved.
* Authorship : Olivier PARISOT, Yoanne DIDRY
* Licensed under GNU General Public License version 3
*/
package lu.lippmann.cdb;
import lu.lippmann.cdb.common.FileUtil;
import lu.lippmann.cdb.context.BusLogger;
/**
* Main class for the application.
*
* @author the ACORA team
*/
public final class App
{
//
// Static fields
//
/** */
public static final boolean BOOT_WITH_NEW_GRAPH=false;
/** Avoid gc */
private static BusLogger BUS_LOGGER;
//
// Constructors
//
/**
* Private constructor.
*/
private App(){}
//
// Static methods
//
/**
*
* @return
*/
public static String getBuildId() {
try {
final StringBuilder res = FileUtil.getFileContent("build.txt");
return res.toString();
} catch (Exception e) {
return "<i>Version : Unknown</i>";
}
}
}
\ No newline at end of file
/**
* Copyright 2014-2016 LIST (Luxembourg Institute of Science and Technology), all right reserved.
* Authorship : Olivier PARISOT, Yoanne DIDRY
* Licensed under GNU General Public License version 3
*/
package lu.lippmann.cdb;
import lu.lippmann.cdb.command.*;
import lu.lippmann.cdb.common.guice.util.SimpleAutoBindingModule;
import lu.lippmann.cdb.common.mvp.Presenter;
import lu.lippmann.cdb.context.*;
import lu.lippmann.cdb.dsl.*;
import lu.lippmann.cdb.event.*;
import lu.lippmann.cdb.graph.GraphPresenter;
import lu.lippmann.cdb.panes.history.HistoryPresenter;
import lu.lippmann.cdb.repositories.*;
import lu.lippmann.cdb.repositories.impl.memory.MemoryCVariablesRepositoryImpl;
import lu.lippmann.cdb.repositories.impl.neo4j.EmbeddedNeo4jCGraphRepositoryImpl;
import lu.lippmann.cdb.services.AuthentificationService;
import lu.lippmann.cdb.services.impl.memory.MemoryAuthentificationServiceImpl;
import com.google.inject.*;
/**
* Module defining the application.
*
* @author the ACORA team
*/
public class DefaultModule extends AbstractModule
{
/**
* {@inheritDoc}
*/
@Override
protected void configure()
{
bind(ApplicationContext.class).in(Singleton.class);
bind(CommandDispatcher.class).to(CommandDispatcherBushImpl.class).in(Singleton.class);
bind(EventPublisher.class).to(EventPublisherBushImpl.class).in(Singleton.class);
bind(BusLogger.class).in(Singleton.class);
install(new SimpleAutoBindingModule("lu.lippmann"));
//bind(CGraphRepository.class).to(FileCGraphRepositoryImpl.class).in(Singleton.class);
//bind(CGraphRepository.class).to(MemoryCGraphRepositoryImpl.class).in(Singleton.class);
bind(CGraphRepository.class).to(EmbeddedNeo4jCGraphRepositoryImpl.class).in(Singleton.class);
bind(CVariablesRepository.class).to(MemoryCVariablesRepositoryImpl.class).in(Singleton.class);
//bind(GraphDsl.class).to(SimpleGraphDsl.class).in(Singleton.class);
bind(GraphDsl.class).to(ASCIIGraphDsl.class).in(Singleton.class);
bind(Presenter.class).to(HistoryPresenter.class);
bind(GraphPresenter.class).in(Singleton.class);
bind(AuthentificationService.class).to(MemoryAuthentificationServiceImpl.class);
//bind(AuthentificationView.class).to(AutoAuthentificationViewImpl.class);
//bind(AuthentificationView.class).to(DialogBoxAuthentificationViewImpl.class);
}
}
/**
* Copyright 2014-2016 LIST (Luxembourg Institute of Science and Technology), all right reserved.
* Authorship : Olivier PARISOT, Yoanne DIDRY
* Licensed under GNU General Public License version 3
*/
package lu.lippmann.cdb.about;
import java.awt.*;
import org.jdesktop.swingx.*;
/**
* AboutPanel.
*