diff --git a/README.md b/README.md
index 5d9394d..2cbe12f 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-# Causal REST API V1
+# Causal REST API v0.0.7
This RESTful API is designed for causal web. And it implements the [JAX-RS](https://en.wikipedia.org/wiki/Java_API_for_RESTful_Web_Services) specifications using Jersey.
@@ -60,17 +60,15 @@ git checkout tags/v0.3.1
mvn clean install
````
-You'll also need to download [ccd-db-0.6.2](https://github.com/bd2kccd/ccd-db) branch:
+You'll also need to download released [ccd-db-0.6.2](https://github.com/bd2kccd/ccd-db/releases/tag/v0.6.2):
````
git clone https://github.com/bd2kccd/ccd-db.git
cd ccd-db
-git checkout v0.6.2
+git checkout tags/v0.6.2
mvn clean install
````
-**Note: we'll use the the 0.6.2 tagged release once it's released, only use the branch for now.**
-
Then you can go get and install `causal-rest-api`:
````
@@ -84,6 +82,7 @@ mvn clean package
There are 4 configuration files to configure located at `causal-rest-api/src/main/resources`:
- **application-hsqldb.properties**: HSQLDB database configurations (for testing only).
- **application-mysql.properties**: MySQL database configurations
+- **application-slurm.properties**: Slurm setting for HPC
- **application.properties**: Spring Boot application settings
- **causal.properties**: Data file directory path and folder settings
@@ -665,29 +664,29 @@ GET /ccd-api/22/algorithms HTTP/1.1
Host: cloud.ccd.pitt.edu
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2Nsb3VkLmNjZC5waXR0LmVkdS8iLCJuYW1lIjoiemh5MTkiLCJleHAiOjE0NzU4NTA2NzY4MDQsImlhdCI6MTQ3NTg0NzA3NjgwNH0.8azVEoNPfETczXb-vn7dfyDd98eRt7iiLBXehGpPGzY
````
-Currently we support "FGS continuous" and "FGS discrete".
+Currently we support "FGES continuous" and "FGES discrete".
````javascript
[
{
"id": 1,
- "name": "fgsc",
- "description": "FGS continuous"
+ "name": "FGESc",
+ "description": "FGES continuous"
},
{
"id": 2,
- "name": "fgsd",
- "description": "FGS discrete"
+ "name": "FGESd",
+ "description": "FGES discrete"
},
{
"id": 3,
- "name": "gfcic",
+ "name": "GFCIc",
"description": "GFCI continuous"
}
]
````
-Currently we support "FGS continuous", "FGS discrete" and "GFCI continuous". They also share a common JSON structure as of their input, for example:
+Currently we support "FGES continuous", "FGES discrete" and "GFCI continuous". They also share a common JSON structure as of their input, for example:
| Input JSON Fields | Description |
| --- | --- |
@@ -699,7 +698,7 @@ Currently we support "FGS continuous", "FGS discrete" and "GFCI continuous". The
Below are the data validation flags and parameters that you can use for each algorithm.
-**FGS continuous**
+**FGES continuous**
Data validation:
@@ -717,7 +716,7 @@ Algorithm parameters:
| `penaltyDiscount` | Penalty discount | 4.0 |
| `verbose` | Print additional information | true |
-**FGS discrete**
+**FGES discrete**
Data validation:
@@ -763,13 +762,13 @@ This is a POST request and the algorithm details and data file id will need to b
API Endpoint URI pattern:
````
-POST https://cloud.ccd.pitt.edu/ccd-api/{userId}/jobs/fgsc
+POST https://cloud.ccd.pitt.edu/ccd-api/{userId}/jobs/FGESc
````
Generated HTTP request code example:
````
-POST /ccd-api/22/jobs/fgsc HTTP/1.1
+POST /ccd-api/22/jobs/FGESc HTTP/1.1
Host: cloud.ccd.pitt.edu
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2Nsb3VkLmNjZC5waXR0LmVkdS8iLCJuYW1lIjoiemh5MTkiLCJleHAiOjE0NzU4NTA2NzY4MDQsImlhdCI6MTQ3NTg0NzA3NjgwNH0.8azVEoNPfETczXb-vn7dfyDd98eRt7iiLBXehGpPGzY
Content-Type: application/json
@@ -791,32 +790,33 @@ Content-Type: application/json
}
````
-In this example, we are running the "FGS continuous" algorithm on the file with ID 8. And this call will return the job info with a 201 Created response status code.
+In this example, we are running the "FGES continuous" algorithm on the file with ID 8. And this call will return the job info with a 201 Created response status code.
````
{
"id": 5,
- "algorithmName": "fgsc",
+ "algorithmName": "FGESc",
+ "status": 0,
"addedTime": 1472742564355,
- "resultFileName": "fgs_data_small.txt_1472742564353.txt",
- "errorResultFileName": "error_fgs_data_small.txt_1472742564353.txt"
+ "resultFileName": "FGESc_data_small.txt_1472742564353.txt",
+ "errorResultFileName": "error_FGESc_data_small.txt_1472742564353.txt"
}
````
-From this response we can tell that the job ID is 5, and the result file name will be `fgs_data_small.txt_1472742564353.txt` if everything goes well. If something is wrong an error result file with name `error_fgs_data_small.txt_1472742564353.txt` will be created.
+From this response we can tell that the job ID is 5, and the result file name will be `FGESc_data_small.txt_1472742564353.txt` if everything goes well. If something is wrong an error result file with name `error_FGEsc_data_small.txt_1472742564353.txt` will be created.
-When you need to run "FGS discrete", just send the request to a different endpont URI:
+When you need to run "FGES discrete", just send the request to a different endpont URI:
API Endpoint URI pattern:
````
-POST https://cloud.ccd.pitt.edu/ccd-api/{userId}/jobs/fgsd
+POST https://cloud.ccd.pitt.edu/ccd-api/{userId}/jobs/FGESd
````
Generated HTTP request code example:
````
-POST /ccd-api/22/jobs/fgsd HTTP/1.1
+POST /ccd-api/22/jobs/FGESd HTTP/1.1
Host: cloud.ccd.pitt.edu
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2Nsb3VkLmNjZC5waXR0LmVkdS8iLCJuYW1lIjoiemh5MTkiLCJleHAiOjE0NzU4NTA2NzY4MDQsImlhdCI6MTQ3NTg0NzA3NjgwNH0.8azVEoNPfETczXb-vn7dfyDd98eRt7iiLBXehGpPGzY
Content-Type: application/json
@@ -863,12 +863,12 @@ Then you'll see the information of all jobs that are currently running:
[
{
"id": 32,
- "algorithmName": "fgsc",
+ "algorithmName": "FGESc",
"addedTime": 1468436085000
},
{
"id": 33,
- "algorithmName": "fgsd",
+ "algorithmName": "FGESd",
"addedTime": 1468436087000
}
]
@@ -937,13 +937,13 @@ The response to this request will look like this:
````javascript
[
{
- "name": "fgs_sim_data_20vars_100cases.csv_1466171729046.txt",
+ "name": "FGESc_sim_data_20vars_100cases.csv_1466171729046.txt",
"creationTime": 1466171732000,
"lastModifiedTime": 1466171732000,
"fileSize": 1660
},
{
- "name": "fgs_data_small.txt_1466172140585.txt",
+ "name": "FGESc_data_small.txt_1466172140585.txt",
"creationTime": 1466172145000,
"lastModifiedTime": 1466172145000,
"fileSize": 39559
@@ -962,7 +962,7 @@ GET https://cloud.ccd.pitt.edu/ccd-api/{userId}/results/{result_file_name}
Generated HTTP request code example:
````
-GET /ccd-api/22/results/fgs_data_small.txt_1466172140585.txt HTTP/1.1
+GET /ccd-api/22/results/FGESc_data_small.txt_1466172140585.txt HTTP/1.1
Host: cloud.ccd.pitt.edu
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2Nsb3VkLmNjZC5waXR0LmVkdS8iLCJuYW1lIjoiemh5MTkiLCJleHAiOjE0NzU4NTA2NzY4MDQsImlhdCI6MTQ3NTg0NzA3NjgwNH0.8azVEoNPfETczXb-vn7dfyDd98eRt7iiLBXehGpPGzY
````
@@ -976,7 +976,7 @@ The response to this request will look like this:
"status": 404,
"error": "Not Found",
"message": "Resource not found.",
- "path": "/22/results/fgs_data_small.txt_146172140585.txt"
+ "path": "/22/results/FGESc_data_small.txt_146172140585.txt"
}
````
@@ -1002,15 +1002,15 @@ Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL
{
"resultFiles": [
- "gs_sim_data_20vars_100cases.csv_1466171729046.txt",
- "fgs_data_small.txt_1467305104859.txt"
+ "FGESc_sim_data_20vars_100cases.csv_1466171729046.txt",
+ "FGESc_data_small.txt_1467305104859.txt"
]
}
````
When you specify multiple file names, use the `!!` as a delimiter. This request will generate a result comparison file with the following content (shortened version):
````
-fgs_sim_data_20vars_100cases.csv_1466171729046.txt fgs_data_small.txt_1467305104859.txt
+FGESc_sim_data_20vars_100cases.csv_1466171729046.txt FGESc_data_small.txt_1467305104859.txt
Edges In All Same End Point
NR4A2,FOS 0 0
X5,X17 0 0
@@ -1088,7 +1088,7 @@ Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL
Then it returns the content of that comparison file (shorted version):
````
-fgs_sim_data_20vars_100cases.csv_1466171729046.txt fgs_data_small.txt_1467305104859.txt
+FGESc_sim_data_20vars_100cases.csv_1466171729046.txt FGESc_data_small.txt_1467305104859.txt
Edges In All Same End Point
NR4A2,FOS 0 0
X5,X17 0 0
diff --git a/pom.xml b/pom.xml
index 9b3af33..5514d4a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
edu.pitt.dbmi.ccd
causal-rest-api
- 0.0.6
+ 0.0.7
jar
causal-rest-api
@@ -14,7 +14,7 @@
org.springframework.boot
spring-boot-starter-parent
- 1.4.1.RELEASE
+ 1.4.2.RELEASE
@@ -48,7 +48,7 @@
edu.pitt.dbmi
ccd-db
- 0.6.2
+ 0.6.3
edu.pitt.dbmi
@@ -56,10 +56,11 @@
0.3.1
+
org.apache.shiro
shiro-core
- 1.2.5
+ 1.3.2
diff --git a/src/main/java/edu/pitt/dbmi/ccd/causal/rest/api/dto/FgsContinuousDataValidation.java b/src/main/java/edu/pitt/dbmi/ccd/causal/rest/api/dto/FgesContinuousDataValidation.java
similarity index 91%
rename from src/main/java/edu/pitt/dbmi/ccd/causal/rest/api/dto/FgsContinuousDataValidation.java
rename to src/main/java/edu/pitt/dbmi/ccd/causal/rest/api/dto/FgesContinuousDataValidation.java
index 578ee76..e996be0 100644
--- a/src/main/java/edu/pitt/dbmi/ccd/causal/rest/api/dto/FgsContinuousDataValidation.java
+++ b/src/main/java/edu/pitt/dbmi/ccd/causal/rest/api/dto/FgesContinuousDataValidation.java
@@ -22,12 +22,12 @@
*
* @author Zhou Yuan (zhy19@pitt.edu)
*/
-public class FgsContinuousDataValidation extends BasicDataValidation {
+public class FgesContinuousDataValidation extends BasicDataValidation {
// Skip check for zero variance variables
protected boolean skipNonzeroVariance;
- public FgsContinuousDataValidation() {
+ public FgesContinuousDataValidation() {
}
public boolean isSkipNonzeroVariance() {
diff --git a/src/main/java/edu/pitt/dbmi/ccd/causal/rest/api/dto/FgsContinuousNewJob.java b/src/main/java/edu/pitt/dbmi/ccd/causal/rest/api/dto/FgesContinuousNewJob.java
similarity index 70%
rename from src/main/java/edu/pitt/dbmi/ccd/causal/rest/api/dto/FgsContinuousNewJob.java
rename to src/main/java/edu/pitt/dbmi/ccd/causal/rest/api/dto/FgesContinuousNewJob.java
index 397f7ba..344b991 100644
--- a/src/main/java/edu/pitt/dbmi/ccd/causal/rest/api/dto/FgsContinuousNewJob.java
+++ b/src/main/java/edu/pitt/dbmi/ccd/causal/rest/api/dto/FgesContinuousNewJob.java
@@ -22,30 +22,30 @@
*
* @author Zhou Yuan (zhy19@pitt.edu)
*/
-public class FgsContinuousNewJob extends NewJob {
+public class FgesContinuousNewJob extends NewJob {
// Algorithm parameters
- private FgsContinuousParameters algorithmParameters;
+ private FgesContinuousParameters algorithmParameters;
// Data validation flag
- private FgsContinuousDataValidation dataValidation;
+ private FgesContinuousDataValidation dataValidation;
- public FgsContinuousNewJob() {
+ public FgesContinuousNewJob() {
}
- public FgsContinuousParameters getAlgorithmParameters() {
+ public FgesContinuousParameters getAlgorithmParameters() {
return algorithmParameters;
}
- public void setAlgorithmParameters(FgsContinuousParameters algorithmParameters) {
+ public void setAlgorithmParameters(FgesContinuousParameters algorithmParameters) {
this.algorithmParameters = algorithmParameters;
}
- public FgsContinuousDataValidation getDataValidation() {
+ public FgesContinuousDataValidation getDataValidation() {
return dataValidation;
}
- public void setDataValidation(FgsContinuousDataValidation dataValidation) {
+ public void setDataValidation(FgesContinuousDataValidation dataValidation) {
this.dataValidation = dataValidation;
}
diff --git a/src/main/java/edu/pitt/dbmi/ccd/causal/rest/api/dto/FgsContinuousParameters.java b/src/main/java/edu/pitt/dbmi/ccd/causal/rest/api/dto/FgesContinuousParameters.java
similarity index 91%
rename from src/main/java/edu/pitt/dbmi/ccd/causal/rest/api/dto/FgsContinuousParameters.java
rename to src/main/java/edu/pitt/dbmi/ccd/causal/rest/api/dto/FgesContinuousParameters.java
index 7263006..1af7763 100644
--- a/src/main/java/edu/pitt/dbmi/ccd/causal/rest/api/dto/FgsContinuousParameters.java
+++ b/src/main/java/edu/pitt/dbmi/ccd/causal/rest/api/dto/FgesContinuousParameters.java
@@ -22,11 +22,11 @@
*
* @author Zhou Yuan (zhy19@pitt.edu)
*/
-public class FgsContinuousParameters extends FgsParameters {
+public class FgesContinuousParameters extends FgesParameters {
private double penaltyDiscount;
- public FgsContinuousParameters() {
+ public FgesContinuousParameters() {
}
public double getPenaltyDiscount() {
diff --git a/src/main/java/edu/pitt/dbmi/ccd/causal/rest/api/dto/FgsDiscreteDataValidation.java b/src/main/java/edu/pitt/dbmi/ccd/causal/rest/api/dto/FgesDiscreteDataValidation.java
similarity index 91%
rename from src/main/java/edu/pitt/dbmi/ccd/causal/rest/api/dto/FgsDiscreteDataValidation.java
rename to src/main/java/edu/pitt/dbmi/ccd/causal/rest/api/dto/FgesDiscreteDataValidation.java
index 2c4ad5a..25fb64c 100644
--- a/src/main/java/edu/pitt/dbmi/ccd/causal/rest/api/dto/FgsDiscreteDataValidation.java
+++ b/src/main/java/edu/pitt/dbmi/ccd/causal/rest/api/dto/FgesDiscreteDataValidation.java
@@ -22,12 +22,12 @@
*
* @author Zhou Yuan (zhy19@pitt.edu)
*/
-public class FgsDiscreteDataValidation extends BasicDataValidation {
+public class FgesDiscreteDataValidation extends BasicDataValidation {
// Skip 'limit number of categories' check
private boolean skipCategoryLimit;
- public FgsDiscreteDataValidation() {
+ public FgesDiscreteDataValidation() {
}
public boolean isSkipCategoryLimit() {
diff --git a/src/main/java/edu/pitt/dbmi/ccd/causal/rest/api/dto/FgsDiscreteNewJob.java b/src/main/java/edu/pitt/dbmi/ccd/causal/rest/api/dto/FgesDiscreteNewJob.java
similarity index 70%
rename from src/main/java/edu/pitt/dbmi/ccd/causal/rest/api/dto/FgsDiscreteNewJob.java
rename to src/main/java/edu/pitt/dbmi/ccd/causal/rest/api/dto/FgesDiscreteNewJob.java
index b5dac89..0244561 100644
--- a/src/main/java/edu/pitt/dbmi/ccd/causal/rest/api/dto/FgsDiscreteNewJob.java
+++ b/src/main/java/edu/pitt/dbmi/ccd/causal/rest/api/dto/FgesDiscreteNewJob.java
@@ -22,30 +22,30 @@
*
* @author Zhou Yuan (zhy19@pitt.edu)
*/
-public class FgsDiscreteNewJob extends NewJob {
+public class FgesDiscreteNewJob extends NewJob {
// Algorithm parameters
- private FgsDiscreteParameters algorithmParameters;
+ private FgesDiscreteParameters algorithmParameters;
// Data validation flag
- private FgsDiscreteDataValidation dataValidation;
+ private FgesDiscreteDataValidation dataValidation;
- public FgsDiscreteNewJob() {
+ public FgesDiscreteNewJob() {
}
- public FgsDiscreteParameters getAlgorithmParameters() {
+ public FgesDiscreteParameters getAlgorithmParameters() {
return algorithmParameters;
}
- public void setAlgorithmParameters(FgsDiscreteParameters algorithmParameters) {
+ public void setAlgorithmParameters(FgesDiscreteParameters algorithmParameters) {
this.algorithmParameters = algorithmParameters;
}
- public FgsDiscreteDataValidation getDataValidation() {
+ public FgesDiscreteDataValidation getDataValidation() {
return dataValidation;
}
- public void setDataValidation(FgsDiscreteDataValidation dataValidation) {
+ public void setDataValidation(FgesDiscreteDataValidation dataValidation) {
this.dataValidation = dataValidation;
}
diff --git a/src/main/java/edu/pitt/dbmi/ccd/causal/rest/api/dto/FgsDiscreteParameters.java b/src/main/java/edu/pitt/dbmi/ccd/causal/rest/api/dto/FgesDiscreteParameters.java
similarity index 93%
rename from src/main/java/edu/pitt/dbmi/ccd/causal/rest/api/dto/FgsDiscreteParameters.java
rename to src/main/java/edu/pitt/dbmi/ccd/causal/rest/api/dto/FgesDiscreteParameters.java
index c180711..e15fdef 100644
--- a/src/main/java/edu/pitt/dbmi/ccd/causal/rest/api/dto/FgsDiscreteParameters.java
+++ b/src/main/java/edu/pitt/dbmi/ccd/causal/rest/api/dto/FgesDiscreteParameters.java
@@ -22,13 +22,13 @@
*
* @author Zhou Yuan (zhy19@pitt.edu)
*/
-public class FgsDiscreteParameters extends FgsParameters {
+public class FgesDiscreteParameters extends FgesParameters {
private double structurePrior;
private double samplePrior;
- public FgsDiscreteParameters() {
+ public FgesDiscreteParameters() {
}
public double getStructurePrior() {
diff --git a/src/main/java/edu/pitt/dbmi/ccd/causal/rest/api/dto/FgsParameters.java b/src/main/java/edu/pitt/dbmi/ccd/causal/rest/api/dto/FgesParameters.java
similarity index 95%
rename from src/main/java/edu/pitt/dbmi/ccd/causal/rest/api/dto/FgsParameters.java
rename to src/main/java/edu/pitt/dbmi/ccd/causal/rest/api/dto/FgesParameters.java
index b4b5aa2..cb40bb4 100644
--- a/src/main/java/edu/pitt/dbmi/ccd/causal/rest/api/dto/FgsParameters.java
+++ b/src/main/java/edu/pitt/dbmi/ccd/causal/rest/api/dto/FgesParameters.java
@@ -24,7 +24,7 @@
*
* @author Zhou Yuan (zhy19@pitt.edu)
*/
-public abstract class FgsParameters {
+public abstract class FgesParameters {
// Search max degree must be at least -1
@Min(-1)
@@ -34,7 +34,7 @@ public abstract class FgsParameters {
protected boolean verbose;
- public FgsParameters() {
+ public FgesParameters() {
}
public int getMaxDegree() {
diff --git a/src/main/java/edu/pitt/dbmi/ccd/causal/rest/api/endpoint/JobQueueEndpoint.java b/src/main/java/edu/pitt/dbmi/ccd/causal/rest/api/endpoint/JobQueueEndpoint.java
index c9e4222..3cbe37f 100644
--- a/src/main/java/edu/pitt/dbmi/ccd/causal/rest/api/endpoint/JobQueueEndpoint.java
+++ b/src/main/java/edu/pitt/dbmi/ccd/causal/rest/api/endpoint/JobQueueEndpoint.java
@@ -19,8 +19,8 @@
package edu.pitt.dbmi.ccd.causal.rest.api.endpoint;
import edu.pitt.dbmi.ccd.causal.rest.api.Role;
-import edu.pitt.dbmi.ccd.causal.rest.api.dto.FgsContinuousNewJob;
-import edu.pitt.dbmi.ccd.causal.rest.api.dto.FgsDiscreteNewJob;
+import edu.pitt.dbmi.ccd.causal.rest.api.dto.FgesContinuousNewJob;
+import edu.pitt.dbmi.ccd.causal.rest.api.dto.FgesDiscreteNewJob;
import edu.pitt.dbmi.ccd.causal.rest.api.dto.GfciContinuousNewJob;
import edu.pitt.dbmi.ccd.causal.rest.api.dto.JobInfoDTO;
import edu.pitt.dbmi.ccd.causal.rest.api.service.JobQueueEndpointService;
@@ -69,7 +69,7 @@ public JobQueueEndpoint(JobQueueEndpointService jobQueueEndpointService) {
* @throws IOException
*/
@POST
- @Path("/jobs/gfcic")
+ @Path("/jobs/GFCIc")
@Consumes(APPLICATION_JSON)
@Produces({APPLICATION_JSON, APPLICATION_XML})
@RolesAllowed(Role.USER)
@@ -82,7 +82,7 @@ public Response addGfciContinuousNewJob(@PathParam("uid") Long uid, @Valid GfciC
}
/**
- * Adding a new job and run FGS continuous
+ * Adding a new job and run FGES continuous
*
* @param uid
* @param newJob
@@ -90,12 +90,12 @@ public Response addGfciContinuousNewJob(@PathParam("uid") Long uid, @Valid GfciC
* @throws IOException
*/
@POST
- @Path("/jobs/fgsc")
+ @Path("/jobs/FGESc")
@Consumes(APPLICATION_JSON)
@Produces({APPLICATION_JSON, APPLICATION_XML})
@RolesAllowed(Role.USER)
- public Response addFgsContinuousNewJob(@PathParam("uid") Long uid, @Valid FgsContinuousNewJob newJob) throws IOException {
- JobInfoDTO jobInfo = jobQueueEndpointService.addFgsContinuousNewJob(uid, newJob);
+ public Response addFgsContinuousNewJob(@PathParam("uid") Long uid, @Valid FgesContinuousNewJob newJob) throws IOException {
+ JobInfoDTO jobInfo = jobQueueEndpointService.addFgesContinuousNewJob(uid, newJob);
GenericEntity jobRequestEntity = new GenericEntity(jobInfo) {
};
// Return 201 Created status code and the job id in body
@@ -103,7 +103,7 @@ public Response addFgsContinuousNewJob(@PathParam("uid") Long uid, @Valid FgsCon
}
/**
- * Adding a new job and run FGS discrete
+ * Adding a new job and run FGES discrete
*
* @param uid
* @param newJob
@@ -111,12 +111,12 @@ public Response addFgsContinuousNewJob(@PathParam("uid") Long uid, @Valid FgsCon
* @throws IOException
*/
@POST
- @Path("/jobs/fgsd")
+ @Path("/jobs/FGESd")
@Consumes(APPLICATION_JSON)
@Produces({APPLICATION_JSON, APPLICATION_XML})
@RolesAllowed(Role.USER)
- public Response addFgsDiscreteNewJob(@PathParam("uid") Long uid, @Valid FgsDiscreteNewJob newJob) throws IOException {
- JobInfoDTO jobInfo = jobQueueEndpointService.addFgsDiscreteNewJob(uid, newJob);
+ public Response addFgsDiscreteNewJob(@PathParam("uid") Long uid, @Valid FgesDiscreteNewJob newJob) throws IOException {
+ JobInfoDTO jobInfo = jobQueueEndpointService.addFgesDiscreteNewJob(uid, newJob);
GenericEntity jobRequestEntity = new GenericEntity(jobInfo) {
};
// Return 201 Created status code and the job id in body
diff --git a/src/main/java/edu/pitt/dbmi/ccd/causal/rest/api/prop/CausalRestProperties.java b/src/main/java/edu/pitt/dbmi/ccd/causal/rest/api/prop/CausalRestProperties.java
index f52a894..38eaa6e 100644
--- a/src/main/java/edu/pitt/dbmi/ccd/causal/rest/api/prop/CausalRestProperties.java
+++ b/src/main/java/edu/pitt/dbmi/ccd/causal/rest/api/prop/CausalRestProperties.java
@@ -35,14 +35,14 @@ public class CausalRestProperties {
@Value("${ccd.jar.algorithm}")
private String algorithmJar;
- @Value("${ccd.algorithm.fgs:fgs}")
- private String fgs;
+ @Value("${ccd.algorithm.fges.cont:FGESc}")
+ private String algoFgesCont;
- @Value("${ccd.algorithm.fgs.discrete:fgsc}")
- private String fgsDiscrete;
+ @Value("${ccd.algorithm.fges.disc:FGESd}")
+ private String algoFgesDisc;
- @Value("${ccd.algorithm.gfci:gfci}")
- private String gfci;
+ @Value("${ccd.algorithm.gfci.cont:GFCIc}")
+ private String algoGfciCont;
@Value("${ccd.server.workspace:}")
private String workspaceDir;
@@ -85,28 +85,28 @@ public void setAlgorithmJar(String algorithmJar) {
this.algorithmJar = algorithmJar;
}
- public String getFgs() {
- return fgs;
+ public String getAlgoFgesCont() {
+ return algoFgesCont;
}
- public void setFgs(String fgs) {
- this.fgs = fgs;
+ public void setAlgoFgesCont(String algoFgesCont) {
+ this.algoFgesCont = algoFgesCont;
}
- public String getFgsDiscrete() {
- return fgsDiscrete;
+ public String getAlgoFgesDisc() {
+ return algoFgesDisc;
}
- public void setFgsDiscrete(String fgsDiscrete) {
- this.fgsDiscrete = fgsDiscrete;
+ public void setAlgoFgesDisc(String algoFgesDisc) {
+ this.algoFgesDisc = algoFgesDisc;
}
- public String getGfci() {
- return gfci;
+ public String getAlgoGfciCont() {
+ return algoGfciCont;
}
- public void setGfci(String gfci) {
- this.gfci = gfci;
+ public void setAlgoGfciCont(String algoGfciCont) {
+ this.algoGfciCont = algoGfciCont;
}
public String getWorkspaceDir() {
diff --git a/src/main/java/edu/pitt/dbmi/ccd/causal/rest/api/service/AlgorithmEndpointService.java b/src/main/java/edu/pitt/dbmi/ccd/causal/rest/api/service/AlgorithmEndpointService.java
index fd3a3ac..55155c1 100644
--- a/src/main/java/edu/pitt/dbmi/ccd/causal/rest/api/service/AlgorithmEndpointService.java
+++ b/src/main/java/edu/pitt/dbmi/ccd/causal/rest/api/service/AlgorithmEndpointService.java
@@ -50,9 +50,9 @@ public List listAlgorithms() throws IOException {
List ALGORITHMS = new LinkedList<>();
// Get the actual algorithm short name from the properties file
- ALGORITHMS.add(new AlgorithmDTO(1, causalRestProperties.getFgs(), "FGS continuous"));
- ALGORITHMS.add(new AlgorithmDTO(2, causalRestProperties.getFgsDiscrete(), "FGS discrete"));
- ALGORITHMS.add(new AlgorithmDTO(3, causalRestProperties.getGfci(), "GFCI continuous"));
+ ALGORITHMS.add(new AlgorithmDTO(1, causalRestProperties.getAlgoFgesCont(), "FGES continuous"));
+ ALGORITHMS.add(new AlgorithmDTO(2, causalRestProperties.getAlgoFgesDisc(), "FGES discrete"));
+ ALGORITHMS.add(new AlgorithmDTO(3, causalRestProperties.getAlgoGfciCont(), "GFCI continuous"));
return ALGORITHMS;
}
diff --git a/src/main/java/edu/pitt/dbmi/ccd/causal/rest/api/service/JobQueueEndpointService.java b/src/main/java/edu/pitt/dbmi/ccd/causal/rest/api/service/JobQueueEndpointService.java
index 5820adb..045e7ba 100644
--- a/src/main/java/edu/pitt/dbmi/ccd/causal/rest/api/service/JobQueueEndpointService.java
+++ b/src/main/java/edu/pitt/dbmi/ccd/causal/rest/api/service/JobQueueEndpointService.java
@@ -18,12 +18,12 @@
*/
package edu.pitt.dbmi.ccd.causal.rest.api.service;
-import edu.pitt.dbmi.ccd.causal.rest.api.dto.FgsContinuousDataValidation;
-import edu.pitt.dbmi.ccd.causal.rest.api.dto.FgsContinuousNewJob;
-import edu.pitt.dbmi.ccd.causal.rest.api.dto.FgsContinuousParameters;
-import edu.pitt.dbmi.ccd.causal.rest.api.dto.FgsDiscreteDataValidation;
-import edu.pitt.dbmi.ccd.causal.rest.api.dto.FgsDiscreteNewJob;
-import edu.pitt.dbmi.ccd.causal.rest.api.dto.FgsDiscreteParameters;
+import edu.pitt.dbmi.ccd.causal.rest.api.dto.FgesContinuousDataValidation;
+import edu.pitt.dbmi.ccd.causal.rest.api.dto.FgesContinuousNewJob;
+import edu.pitt.dbmi.ccd.causal.rest.api.dto.FgesContinuousParameters;
+import edu.pitt.dbmi.ccd.causal.rest.api.dto.FgesDiscreteDataValidation;
+import edu.pitt.dbmi.ccd.causal.rest.api.dto.FgesDiscreteNewJob;
+import edu.pitt.dbmi.ccd.causal.rest.api.dto.FgesDiscreteParameters;
import edu.pitt.dbmi.ccd.causal.rest.api.dto.GfciContinuousDataValidation;
import edu.pitt.dbmi.ccd.causal.rest.api.dto.GfciContinuousNewJob;
import edu.pitt.dbmi.ccd.causal.rest.api.dto.GfciContinuousParameters;
@@ -97,14 +97,17 @@ public JobQueueEndpointService(
}
/**
- * Add a new job to the job queue and run the GFCI Continuous algorithm
+ * Add a new job to the job queue and run the GFCI continuous algorithm
*
* @param uid
* @param newJob
* @return JobInfoDTO
*/
public JobInfoDTO addGfciContinuousNewJob(Long uid, GfciContinuousNewJob newJob) {
- String algorithm = causalRestProperties.getGfci();
+ String algorithmName = "GFCIc";
+
+ // This is the algo to pass to causal-cmd, case-insensitive
+ String algorithm = causalRestProperties.getAlgoGfciCont();
// When we can get here vai AuthFilterSerice, it means the user exists
// so no need to check if (userAccount == null) and throw UserNotFoundException(uid)
@@ -203,7 +206,8 @@ public JobInfoDTO addGfciContinuousNewJob(Long uid, GfciContinuousNewJob newJob)
String fileName;
DataFile df = dataFileService.findByIdAndUserAccount(datasetFileId, userAccount);
- fileName = String.format("%s_%s_%d", algorithm, df.getName(), currentTime);
+ // The algorithm name can be different from the value of causalRestProperties.getAlgoFgesCont()
+ fileName = String.format("%s_%s_%d", algorithmName, df.getName(), currentTime);
commands.add("--output-prefix");
commands.add(fileName);
@@ -216,7 +220,7 @@ public JobInfoDTO addGfciContinuousNewJob(Long uid, GfciContinuousNewJob newJob)
// Insert to database table `job_queue_info`
JobQueueInfo jobQueueInfo = new JobQueueInfo();
jobQueueInfo.setAddedTime(new Date(System.currentTimeMillis()));
- jobQueueInfo.setAlgorName(algorithm);
+ jobQueueInfo.setAlgorName(algorithmName);
jobQueueInfo.setCommands(cmd);
jobQueueInfo.setFileName(fileName);
jobQueueInfo.setOutputDirectory(map.get("resultDir"));
@@ -228,7 +232,7 @@ public JobInfoDTO addGfciContinuousNewJob(Long uid, GfciContinuousNewJob newJob)
Long newJobId = jobQueueInfo.getId();
- LOGGER.info(String.format("New GFCI Continuous job submitted. Job ID: %d", newJobId));
+ LOGGER.info(String.format("New GFCI continuous job submitted. Job ID: %d", newJobId));
String resultJsonFileName = fileName + ".json";
fileName = fileName + ".txt";
@@ -237,7 +241,7 @@ public JobInfoDTO addGfciContinuousNewJob(Long uid, GfciContinuousNewJob newJob)
JobInfoDTO jobInfo = new JobInfoDTO();
jobInfo.setStatus(0);
jobInfo.setAddedTime(jobQueueInfo.getAddedTime());
- jobInfo.setAlgorithmName(algorithm);
+ jobInfo.setAlgorithmName(algorithmName);
jobInfo.setResultFileName(fileName);
jobInfo.setResultJsonFileName(resultJsonFileName);
jobInfo.setErrorResultFileName(errorFileName);
@@ -247,14 +251,17 @@ public JobInfoDTO addGfciContinuousNewJob(Long uid, GfciContinuousNewJob newJob)
}
/**
- * Add a new job to the job queue and run the FGS Discrete algorithm
+ * Add a new job to the job queue and run the FGES discrete algorithm
*
* @param uid
* @param newJob
* @return Job ID
*/
- public JobInfoDTO addFgsDiscreteNewJob(Long uid, FgsDiscreteNewJob newJob) {
- String algorithm = causalRestProperties.getFgsDiscrete();
+ public JobInfoDTO addFgesDiscreteNewJob(Long uid, FgesDiscreteNewJob newJob) {
+ String algorithmName = "FGESd";
+
+ // This is the algo to pass to causal-cmd, case-insensitive
+ String algorithm = causalRestProperties.getAlgoFgesDisc();
// When we can get here vai AuthFilterSerice, it means the user exists
// so no need to check if (userAccount == null) and throw UserNotFoundException(uid)
@@ -310,7 +317,7 @@ public JobInfoDTO addFgsDiscreteNewJob(Long uid, FgsDiscreteNewJob newJob) {
}
// Algorithm parameters
- FgsDiscreteParameters algorithmParameters = newJob.getAlgorithmParameters();
+ FgesDiscreteParameters algorithmParameters = newJob.getAlgorithmParameters();
commands.add("--delimiter");
commands.add(getFileDelimiter(newJob.getDatasetFileId()));
@@ -333,7 +340,7 @@ public JobInfoDTO addFgsDiscreteNewJob(Long uid, FgsDiscreteNewJob newJob) {
}
// Data validation
- FgsDiscreteDataValidation dataValidation = newJob.getDataValidation();
+ FgesDiscreteDataValidation dataValidation = newJob.getDataValidation();
if (!dataValidation.isSkipCategoryLimit()) {
commands.add("--skip-category-limit");
@@ -353,7 +360,8 @@ public JobInfoDTO addFgsDiscreteNewJob(Long uid, FgsDiscreteNewJob newJob) {
String fileName;
DataFile df = dataFileService.findByIdAndUserAccount(datasetFileId, userAccount);
- fileName = String.format("%s_%s_%d", algorithm, df.getName(), currentTime);
+ // The algorithm name can be different from the value of causalRestProperties.getAlgoFgesCont()
+ fileName = String.format("%s_%s_%d", algorithmName, df.getName(), currentTime);
commands.add("--output-prefix");
commands.add(fileName);
@@ -366,7 +374,7 @@ public JobInfoDTO addFgsDiscreteNewJob(Long uid, FgsDiscreteNewJob newJob) {
// Insert to database table `job_queue_info`
JobQueueInfo jobQueueInfo = new JobQueueInfo();
jobQueueInfo.setAddedTime(new Date(System.currentTimeMillis()));
- jobQueueInfo.setAlgorName(algorithm);
+ jobQueueInfo.setAlgorName(algorithmName);
jobQueueInfo.setCommands(cmd);
jobQueueInfo.setFileName(fileName);
jobQueueInfo.setOutputDirectory(map.get("resultDir"));
@@ -378,7 +386,7 @@ public JobInfoDTO addFgsDiscreteNewJob(Long uid, FgsDiscreteNewJob newJob) {
Long newJobId = jobQueueInfo.getId();
- LOGGER.info(String.format("New FGS Discrete job submitted. Job ID: %d", newJobId));
+ LOGGER.info(String.format("New FGES discrete job submitted. Job ID: %d", newJobId));
String resultJsonFileName = fileName + ".json";
fileName = fileName + ".txt";
@@ -387,7 +395,7 @@ public JobInfoDTO addFgsDiscreteNewJob(Long uid, FgsDiscreteNewJob newJob) {
JobInfoDTO jobInfo = new JobInfoDTO();
jobInfo.setStatus(0);
jobInfo.setAddedTime(jobQueueInfo.getAddedTime());
- jobInfo.setAlgorithmName(algorithm);
+ jobInfo.setAlgorithmName(algorithmName);
jobInfo.setResultFileName(fileName);
jobInfo.setResultJsonFileName(resultJsonFileName);
jobInfo.setErrorResultFileName(errorFileName);
@@ -397,14 +405,17 @@ public JobInfoDTO addFgsDiscreteNewJob(Long uid, FgsDiscreteNewJob newJob) {
}
/**
- * Add a new job to the job queue and run the FGS Continuous algorithm
+ * Add a new job to the job queue and run the FGES Continuous algorithm
*
* @param uid
* @param newJob
* @return JobInfoDTO
*/
- public JobInfoDTO addFgsContinuousNewJob(Long uid, FgsContinuousNewJob newJob) {
- String algorithm = causalRestProperties.getFgs();
+ public JobInfoDTO addFgesContinuousNewJob(Long uid, FgesContinuousNewJob newJob) {
+ String algorithmName = "FGESc";
+
+ // This is the algo to pass to causal-cmd, case-insensitive
+ String algorithm = causalRestProperties.getAlgoFgesCont();
// When we can get here vai AuthFilterSerice, it means the user exists
// so no need to check if (userAccount == null) and throw UserNotFoundException(uid)
@@ -460,7 +471,7 @@ public JobInfoDTO addFgsContinuousNewJob(Long uid, FgsContinuousNewJob newJob) {
}
// Algorithm parameters
- FgsContinuousParameters algorithmParameters = newJob.getAlgorithmParameters();
+ FgesContinuousParameters algorithmParameters = newJob.getAlgorithmParameters();
commands.add("--delimiter");
commands.add(getFileDelimiter(newJob.getDatasetFileId()));
@@ -480,7 +491,7 @@ public JobInfoDTO addFgsContinuousNewJob(Long uid, FgsContinuousNewJob newJob) {
}
// Data validation
- FgsContinuousDataValidation dataValidation = newJob.getDataValidation();
+ FgesContinuousDataValidation dataValidation = newJob.getDataValidation();
if (!dataValidation.isSkipNonzeroVariance()) {
commands.add("--skip-nonzero-variance");
@@ -500,7 +511,8 @@ public JobInfoDTO addFgsContinuousNewJob(Long uid, FgsContinuousNewJob newJob) {
String fileName;
DataFile df = dataFileService.findByIdAndUserAccount(datasetFileId, userAccount);
- fileName = String.format("%s_%s_%d", algorithm, df.getName(), currentTime);
+ // The algorithm name can be different from the value of causalRestProperties.getAlgoFgesCont()
+ fileName = String.format("%s_%s_%d", algorithmName, df.getName(), currentTime);
commands.add("--output-prefix");
commands.add(fileName);
@@ -513,7 +525,7 @@ public JobInfoDTO addFgsContinuousNewJob(Long uid, FgsContinuousNewJob newJob) {
// Insert to database table `job_queue_info`
JobQueueInfo jobQueueInfo = new JobQueueInfo();
jobQueueInfo.setAddedTime(new Date(System.currentTimeMillis()));
- jobQueueInfo.setAlgorName(algorithm);
+ jobQueueInfo.setAlgorName(algorithmName);
jobQueueInfo.setCommands(cmd);
jobQueueInfo.setFileName(fileName);
jobQueueInfo.setOutputDirectory(map.get("resultDir"));
@@ -525,7 +537,7 @@ public JobInfoDTO addFgsContinuousNewJob(Long uid, FgsContinuousNewJob newJob) {
Long newJobId = jobQueueInfo.getId();
- LOGGER.info(String.format("New FGS Continuous job submitted. Job ID: %d", newJobId));
+ LOGGER.info(String.format("New FGES Continuous job submitted. Job ID: %d", newJobId));
String resultJsonFileName = fileName + ".json";
fileName = fileName + ".txt";
@@ -534,7 +546,7 @@ public JobInfoDTO addFgsContinuousNewJob(Long uid, FgsContinuousNewJob newJob) {
JobInfoDTO jobInfo = new JobInfoDTO();
jobInfo.setStatus(0);
jobInfo.setAddedTime(jobQueueInfo.getAddedTime());
- jobInfo.setAlgorithmName(algorithm);
+ jobInfo.setAlgorithmName(algorithmName);
jobInfo.setResultFileName(fileName);
jobInfo.setResultJsonFileName(resultJsonFileName);
jobInfo.setErrorResultFileName(errorFileName);
diff --git a/src/main/resources/application-hsqldb.properties b/src/main/resources/application-hsqldb.properties
index d12945d..ef083af 100644
--- a/src/main/resources/application-hsqldb.properties
+++ b/src/main/resources/application-hsqldb.properties
@@ -21,3 +21,4 @@ spring.datasource.url=jdbc:hsqldb:mem:ccd;ifexists=false;shutdown=true
# JPA (JpaBaseConfiguration)
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.HSQLDialect
+
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index e29ae0f..c130dbf 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -19,9 +19,10 @@
spring.main.banner-mode=off
# PROFILES
+# Use comma to seperate each profile
# scheduler, slurm
# hsqldb, mysql
-spring.profiles.active=scheduler,hsqldb
+spring.profiles.active=
# LOGGING
logging.file=causal_rest_api.log
@@ -36,6 +37,7 @@ server.context-path=/ccd-api/
# JPA (JpaBaseConfiguration, HibernateJpaAutoConfiguration)
# Hibernate ddl auto (create,create-drop,update)
+# Use create-drop when testing against hsqldb profile
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=false
diff --git a/src/main/resources/causal.properties b/src/main/resources/causal.properties
index 2132a9e..3cde544 100644
--- a/src/main/resources/causal.properties
+++ b/src/main/resources/causal.properties
@@ -16,12 +16,12 @@
# MA 02110-1301 USA
# JAR LIBRARIES
-ccd.jar.algorithm=causal-cmd-6.0.0.jar
+ccd.jar.algorithm=
-# ALGORITHMS
-ccd.algorithm.fgs=fgsc
-ccd.algorithm.fgs.discrete=fgsd
-ccd.algorithm.gfci=gfcic
+# ALGORITHMS used by causal-cmd (case-insensitive)
+ccd.algorithm.fges.cont=fgesc
+ccd.algorithm.fges.disc=fgesd
+ccd.algorithm.gfci.cont=gfcic
# DIRECTORIES
ccd.server.workspace=
diff --git a/src/test/resources/application.properties b/src/test/resources/application.properties
index f046647..eba1c83 100644
--- a/src/test/resources/application.properties
+++ b/src/test/resources/application.properties
@@ -35,8 +35,9 @@ server.context-path=/ccd-api/
# JPA (JpaBaseConfiguration, HibernateJpaAutoConfiguration)
# Hibernate ddl auto (create,create-drop,update)
+# Use create-drop when testing against hsqldb profile
spring.jpa.hibernate.ddl-auto=create-drop
-spring.jpa.show-sql=true
+spring.jpa.show-sql=false
# MULTIPART (MultipartProperties)
# Enable support of multi-part uploads
diff --git a/src/test/resources/causal.properties b/src/test/resources/causal.properties
index 9e64d06..376f81c 100644
--- a/src/test/resources/causal.properties
+++ b/src/test/resources/causal.properties
@@ -16,12 +16,12 @@
# MA 02110-1301 USA
# JAR LIBRARIES
-ccd.jar.algorithm=causal-cmd-6.0.0.jar
+ccd.jar.algorithm=
-# ALGORITHMS
-ccd.algorithm.fgs=fgsc
-ccd.algorithm.fgs.discrete=fgsd
-ccd.algorithm.gfci=gfcic
+# ALGORITHMS used by causal-cmd (case-insensitive)
+ccd.algorithm.fges.cont=fgesc
+ccd.algorithm.fges.disc=fgesd
+ccd.algorithm.gfci.cont=gfcic
# DIRECTORIES
ccd.server.workspace=