From: galaxy-dev-bounces@lists.bx.psu.edu [mailto:galaxy-dev-bounces@lists.bx.psu.edu] On Behalf Of Marc Logghe
Sent: Thursday, February 28, 2013 10:25 PM
To: galaxy-dev@lists.bx.psu.edu
Subject: [galaxy-dev] blend4j

 

Hi all,

Is this the correct forum to post blend4j issues ? Apologies if this is not the case.

 

I was trying to run a custom workflow via blend4j, according to https://github.com/jmchilton/blend4j

In my hands, the call to workflowDetails.getInputs() returns an empty Map. I believe the corresponding REST request looks like:

/galaxy/api/workflows/<workflow id>?key=<API key>

In the JSON response, the ‘inputs’ attribute is empty indeed ({"url": "/galaxy/api/workflows/f09437b8822035f7", "inputs": {}, …).

I do not understand why this is the case because 2 steps require inputs to be set at runtime. Via the Galaxy web interface those required parameters can be set and the workflow is running smoothly.

Or has the term ‘inputs’ nothing to do with ‘parameters’ ?

 

Please allow me to come back to this. I now realize that the workflow needs 2 inputs (instead of parameters). As far as I understand, for the moment it is not possible to pass parameter values via the REST API without tempering with the JSON strings themselves.

But dataset inputs should be supported. In my case, step 1 and step 2 need the same dataset as input.

According to this snippet taken from the blend4j page (shown below), the workflow should provide you with the input ids (here workflowInput1Id and  workflowInput2Id).

The issue is I don’t have a clue what these input ids are, since in my hands workflowDetails.getInputs() returns an empty collection. Do you need to add metadata/attributes to the workflow in order to have these input IDs returned ?

 

 

final WorkflowDetails workflowDetails = workflowsClient.showWorkflow(matchingWorkflow.getId());

    String workflowInput1Id = null;

    String workflowInput2Id = null;

    for(final Map.Entry<String, WorkflowInputDefinition> inputEntry : workflowDetails.getInputs().entrySet()) {

      final String label = inputEntry.getValue().getLabel();

      if(label.equals("WorkflowInput1")) {

        workflowInput1Id = inputEntry.getKey();

      }

      if(label.equals("WorkflowInput2")) {

        workflowInput2Id = inputEntry.getKey();

      }

    }

 

    final WorkflowInputs inputs = new WorkflowInputs();

    inputs.setDestination(new WorkflowInputs.ExistingHistory(matchingHistory.getId()));

    inputs.setWorkflowId(matchingWorkflow.getId());

    inputs.setInput(workflowInput1Id, new WorkflowInputs.WorkflowInput(input1Id, WorkflowInputs.InputSourceType.HDA));

    inputs.setInput(workflowInput2Id, new WorkflowInputs.WorkflowInput(input2Id, WorkflowInputs.InputSourceType.HDA));

    final WorkflowOutputs output = workflowsClient.runWorkflow(inputs);   

    System.out.println("Running workflow in history " + output.getHistoryId());

    for(String outputId : output.getOutputIds()) {

      System.out.println("  Workflow writing to output id " + outputId);

    }

 

Regards,

Marc

________________________________________
THIS E-MAIL MESSAGE IS INTENDED ONLY FOR THE USE OF THE INDIVIDUAL OR ENTITY TO WHICH IT IS ADDRESSED AND MAY CONTAIN INFORMATION THAT IS PRIVILEGED, CONFIDENTIAL AND EXEMPT FROM DISCLOSURE.
If the reader of this E-mail message is not the intended recipient, you are hereby notified that any dissemination, distribution or copying of this communication is strictly prohibited. If you have received this communication in error, please notify us immediately at ablynx@ablynx.com. Thank you for your co-operation.
"NANOBODY" and "NANOCLONE" are registered trademarks of Ablynx N.V.
________________________________________