package com.datascience.service; import com.datascience.serialization.json.JSONUtils; import com.datascience.datastoring.jobs.JobCommand; import com.datascience.core.nominal.NominalProject; import com.datascience.gal.commands.*; import com.datascience.core.nominal.decision.*; import com.datascience.gal.evaluation.DataEvaluator; import com.datascience.gal.evaluation.WorkerEvaluator; import javax.servlet.ServletContext; import javax.ws.rs.*; import javax.ws.rs.core.Request; import javax.ws.rs.core.Response; import javax.ws.rs.core.UriInfo; /** * @author Konrad Kurdej */ public class NominalJobEntry extends JobEntryBase<NominalProject> { public NominalJobEntry(ServletContext context, Request request, UriInfo uriInfo, String jid) throws Exception{ super(context, request, uriInfo, jid); objectsType = JSONUtils.objectsStringType; assignsType = JSONUtils.shallowAssignsStringType; } @Path("categories/") @GET public Response getCategories(){ return buildResponseOnCommand(new CategoriesCommands.GetCategories()); } @Path("costs/") @GET public Response getCosts(){ return buildResponseOnCommand(new CostsCommands.GetCosts()); } @Path("objects/{oid:[a-zA-Z_0-9/:.-]+}/categoryProbability") @GET public Response getDatumCategoryProbability(@PathParam("oid") String did){ return buildResponseOnCommand(new DatumCommands.GetDatumCategoryProbability( did)); } @Path("objects/prediction/") @GET public Response getPredictionData(@DefaultValue("MaxLikelihood") @QueryParam("labelChoosing") String lda){ return buildResponseOnCommand(new PredictionCommands.GetPredictedCategory(ObjectLabelDecisionAlgorithms.get(lda))); } @Path("objects/cost/estimated") @GET public Response getEstimatedDataCost(@DefaultValue("ExpectedCost") @QueryParam("costAlgorithm") String lca){ return buildResponseOnCommand(new PredictionCommands.GetDataCost(LabelProbabilityDistributionCostCalculators.get(lca))); } @Path("objects/cost/estimated/summary") @GET public Response getSummaryEstimatedDataCost(){ return buildResponseOnCommand(new PredictionCommands.GetDataCostSummary()); } @Path("objects/cost/evaluated/summary") @GET public Response getSummaryEvaluatedDataCost(){ return buildResponseOnCommand(new EvaluationCommands.GetDataCostSummary()); } @Path("objects/quality/estimated/") @GET public Response getEstimatedDataQuality(@DefaultValue("ExpectedCost") @QueryParam("costAlgorithm") String lca){ return buildResponseOnCommand(new PredictionCommands.GetDataQuality(LabelProbabilityDistributionCostCalculators.get(lca))); } @Path("objects/cost/evaluated/") @GET public Response getEvaluatedDataCost(@DefaultValue("MaxLikelihood") @QueryParam("labelChoosing") String lda){ return buildResponseOnCommand(new EvaluationCommands.GetDataCost(new DataEvaluator(lda))); } @Path("objects/quality/evaluated/") @GET public Response getEvaluatedDataQuality(@DefaultValue("MaxLikelihood") @QueryParam("labelChoosing") String lda){ return buildResponseOnCommand(new EvaluationCommands.GetDataQuality(new DataEvaluator(lda))); } @Path("objects/quality/estimated/summary/") @GET public Response getSummaryEstimatedDataQuality(){ return buildResponseOnCommand(new PredictionCommands.GetDataQualitySummary()); } @Path("objects/quality/evaluated/summary/") @GET public Response getSummaryEvaluatedDataQuality(){ return buildResponseOnCommand(new EvaluationCommands.GetDataQualitySummary()); } @Path("workers/quality/evaluated/") @GET public Response getEvaluatedWorkersQuality(@DefaultValue("ExpectedCost") @QueryParam("costAlgorithm") String lca){ ILabelProbabilityDistributionCostCalculator lpdcc = LabelProbabilityDistributionCostCalculators.get(lca); return buildResponseOnCommand(new PredictionCommands.GetWorkersQuality( new WorkerEvaluator(lpdcc))); } @Path("workers/quality/estimated/") @GET public Response getWorkersQuality(@DefaultValue("ExpectedCost") @QueryParam("costAlgorithm") String lca){ ILabelProbabilityDistributionCostCalculator lpdcc = LabelProbabilityDistributionCostCalculators.get(lca); return buildResponseOnCommand(new PredictionCommands.GetWorkersQuality( new WorkerEstimator(lpdcc))); } @Path("workers/cost/estimated/") @GET public Response getWorkersCost(@DefaultValue("ExpectedCost") @QueryParam("costAlgorithm") String lca){ ILabelProbabilityDistributionCostCalculator lpdcc = LabelProbabilityDistributionCostCalculators.get(lca); return buildResponseOnCommand(new PredictionCommands.GetWorkersCost( new WorkerEstimator(lpdcc))); } @Path("workers/quality/estimated/summary/") @GET public Response getEstimatedSummaryWorkersQuality(){ return buildResponseOnCommand(new PredictionCommands.GetWorkersQualitySummary()); } @Path("workers/quality/evaluated/summary/") @GET public Response getEvaluatedSummaryWorkersQuality(){ return buildResponseOnCommand(new EvaluationCommands.GetWorkersQualitySummary()); } @Path("workers/quality/matrix/") @GET public Response getWorkersConfusionMatrices(){ return buildResponseOnCommand(new PredictionCommands.GetWorkersConfusionMatrix()); } @Path("workers/{wid:[a-zA-Z_0-9/:.-]+}/quality/matrix/") @GET public Response getWorkerConfusionMatrix(@PathParam("wid") String wid){ return buildResponseOnCommand(new PredictionCommands.GetWorkerConfusionMatrix(wid)); } @Path("workers/quality/payment/") @GET public Response getWorkersPayments(@DefaultValue("1.0") @QueryParam("qualifiedWage") double qualifiedWage, @DefaultValue("0.01") @QueryParam("costThreshold") double costThreshold){ return buildResponseOnCommand(new PredictionCommands.GetWorkersPayments(qualifiedWage, costThreshold)); } @Path("workers/{wid:[a-zA-Z_0-9/:.-]+}/quality/payment/") @GET public Response getWorkerPayments(@PathParam("wid") String wid, @DefaultValue("1.0") @QueryParam("qualifiedWage") double qualifiedWage, @DefaultValue("0.01") @QueryParam("costThreshold") double costThreshold){ return buildResponseOnCommand(new PredictionCommands.GetWorkerPayment(wid, qualifiedWage, costThreshold)); } @Override protected JobCommand getPredictionZipCommand(String path){ return new PredictionCommands.GetPredictionZip(path); } }