All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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