![JAR search and dependency download from the Maven repository](/logo.png)
de.julielab.geneexpbase.hpo.HttpParamOptClient Maven / Gradle / Ivy
package de.julielab.geneexpbase.hpo;
import de.julielab.geneexpbase.configuration.Configuration;
import de.julielab.geneexpbase.configuration.Parameters;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public abstract class HttpParamOptClient {
public static String requestScoreFromServer(Map configuration, String instance, String instanceInfo, String endpoint, int port) throws IOException {
String urlString = "http://localhost:"+port+"/" + endpoint;
URL url = new URL(urlString);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setDoOutput(true);
OutputStreamWriter writer = new OutputStreamWriter(conn.getOutputStream());
// Create the request string
String data = String.format("instance=%s&cutoff_time=9000&cutoff_length=0&seed=1", instance);
StringBuilder sb = new StringBuilder(data);
for (String key : configuration.keySet())
sb.append("&").append(key.startsWith("-") ? key.substring(1) : key).append("=").append(configuration.get(key));
writer.write(sb.toString());
writer.flush();
String line;
BufferedReader reader = new BufferedReader(new
InputStreamReader(conn.getInputStream()));
String result = null;
while ((line = reader.readLine()) != null) {
if (!line.isBlank())
result = line;
}
writer.close();
reader.close();
return result;
}
protected abstract String getConfigurationPath();
protected abstract String getEvaluationEndpoint();
protected abstract List getInstances();
protected abstract int getPort();
/**
* Prints out the evaluation result of some parameter configuration for some HPO instances.
* Loads the configuration obtained by {@link #getConfigurationPath()} and obtains evaluation results
* for all instances given by {@link #getInstances()} on evaluation endpoint {@link #getEvaluationEndpoint()}.
* Then, prints the individual results as well as the average result to the console.
* @throws IOException If the connection to the evaluation server fails.
*/
public void printEvaluationResult() throws IOException {
Configuration configuration = new Configuration(new File(getConfigurationPath()));
Parameters parameters = new Parameters(configuration);
String endpoint = getEvaluationEndpoint();
List instances = getInstances();
List results = new ArrayList<>();
for (String instance : instances) {
String instanceInfo = "";
String[] s = instance.split(" ");
if (s.length > 1)
instanceInfo = s[1];
String result = requestScoreFromServer(parameters, s[0], instanceInfo, endpoint, getPort());
results.add(result);
}
for (int i = 0; i < results.size(); i++) {
System.out.println(instances.get(i) + ": " + results.get(i));
}
System.out.println("Avg: " + results.stream().mapToDouble(Double::parseDouble).average());
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy