bunny
bunny copied to clipboard
javascript: error accessing parsed json in ExpressionTool
I am getting an error with bunny 1.0.1 and the latest develop with the following cwl:
git clone https://github.com/jeremiahsavage/cwl_expressiontool_parse_json.git
I can run the example with cwltool successfully:
$ cwltool cwl_expressiontool_parse_json/decider_star_pass_2.cwl cwl_expressiontool_parse_json/decider_star_pass_2.json
/home/jeremiah/.virtualenvs/cwl/bin/cwltool 1.0.20170817131858
Resolved 'cwl_expressiontool_parse_json/decider_star_pass_2.cwl' to 'file:///home/jeremiah/cwl_expressiontool_parse_json/decider_star_pass_2.cwl'
{
"output_readgroup_str": "ID:A CN:GSCID DT:2014-03-12T00 LB:SRR1186262 PL:illumina PM:HiSeq2500 PU:SRX483601 SM:SRA144716",
"output_fastq_paths": [
{
"checksum": "sha1$f5387588b104fe845892991876f17ae1821b1c7a",
"basename": "A_1.fq.gz",
"nameroot": "A_1.fq",
"nameext": ".gz",
"location": "file:///home/jeremiah/A_1.fq.gz",
"path": "/home/jeremiah/A_1.fq.gz",
"class": "File",
"size": 675288
},
{
"checksum": "sha1$39c08a86fbcdaf8d77d20e0a9f4cf2ff627a267b",
"basename": "A_2.fq.gz",
"nameroot": "A_2.fq",
"nameext": ".gz",
"location": "file:///home/jeremiah/A_2.fq.gz",
"path": "/home/jeremiah/A_2.fq.gz",
"class": "File",
"size": 675200
}
]
}
Final process status is success
But I get an error with the develop branch bunny:
$ java -jar ~/code/bunny/rabix-cli/target/rabix-cli-1.0.1.jar cwl_expressiontool_parse_json/decider_star_pass_2.cwl cwl_expressiontool_parse_json/decider_star_pass_2.json
[2017-08-30 15:06:32.452] [DEBUG] Config path: /home/jeremiah/code/bunny/rabix-cli/config
[2017-08-30 15:06:32.455] [DEBUG] Configuration directory found localy.
[2017-08-30 15:06:33.753] [DEBUG] DAGCache initialized with size=16
[2017-08-30 15:06:33.754] [DEBUG] ApplicationCache initialized with size=16
[2017-08-30 15:06:33.946] [INFO] Backend 9fa3d8b6-75df-4402-aa99-9ba490a53950 registered.
[2017-08-30 15:06:33.965] [DEBUG] Start Job Job [id=null, parentId=null, rootId=9e77ec17-f235-4359-96ee-1fa775cbe9a3, name=null, status=PENDING, message=null, config=null, inputs={fastq1_paths=[FileValue [size=null, path=A_1.fq.gz, location=null, checksum=null, secondaryFiles=[], properties={sbg:metadata=null}]], readgroup_paths=[FileValue [size=null, path=A.json, location=null, checksum=null, secondaryFiles=[], properties={sbg:metadata=null}]], fastq_s_paths=[], fastq2_paths=[FileValue [size=null, path=A_2.fq.gz, location=null, checksum=null, secondaryFiles=[], properties={sbg:metadata=null}]]}, outputs=null]
.
.
.
[2017-08-30 15:06:39.649] [INFO] Docker container 0caff877d4d2c849aa39f3bcdd2cb6580b6fa0c7ca03a9265aed7f07e1a52f55 has started.
[2017-08-30 15:06:40.114] [ERROR] Failed to execute status command for 9e77ec17-f235-4359-96ee-1fa775cbe9a3. Could not collect outputs.
org.rabix.executor.ExecutorException: Could not collect outputs.
at org.rabix.executor.handler.impl.JobHandlerImpl.postprocess(JobHandlerImpl.java:392) ~[rabix-cli-1.0.1.jar:na]
at org.rabix.executor.execution.command.StatusCommand.run(StatusCommand.java:54) ~[rabix-cli-1.0.1.jar:na]
at org.rabix.executor.execution.JobHandlerCommand.run(JobHandlerCommand.java:51) [rabix-cli-1.0.1.jar:na]
at org.rabix.executor.execution.JobHandlerRunnable.run(JobHandlerRunnable.java:60) [rabix-cli-1.0.1.jar:na]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_144]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_144]
at java.lang.Thread.run(Thread.java:748) [na:1.8.0_144]
Caused by: org.rabix.bindings.BindingException: Failed to populate outputs
at org.rabix.bindings.cwl.CWLProcessor.postprocess(CWLProcessor.java:134) ~[rabix-cli-1.0.1.jar:na]
at org.rabix.bindings.cwl.CWLBindings.postprocess(CWLBindings.java:83) ~[rabix-cli-1.0.1.jar:na]
at org.rabix.executor.handler.impl.JobHandlerImpl.postprocess(JobHandlerImpl.java:370) ~[rabix-cli-1.0.1.jar:na]
... 6 common frames omitted
Caused by: org.rabix.bindings.cwl.expression.CWLExpressionException: Failed evaluating expression ${
// generate fastq paths
var fastq_array = [];
var readgroup_basename_array = [];
function local_basename(path) {
var basename = path.split(/[\\/]/).pop();
return basename
}
function include(arr,obj) {
return (arr.indexOf(obj) != -1)
}
if (inputs.fastq1_paths.length > 0 && inputs.fastq1_paths.length == inputs.fastq2_paths.length) {
for (var i = 0; i < inputs.fastq1_paths.length; i++) {
fastq_array.push(inputs.fastq1_paths[i]);
fastq_array.push(inputs.fastq2_paths[i]);
var fastq1_name = local_basename(inputs.fastq1_paths[i].location);
var predicted_rg_name = fastq1_name.slice(0,-8) + ".json";
readgroup_basename_array.push(predicted_rg_name);
}
}
else {
for (var i = 0; i < inputs.fastq_s_paths.length; i++) {
fastq_array.push(inputs.fastq_s_paths[i]);
var fastq_s_name = local_basename(inputs.fastq_s_paths[i].location);
var predicted_rg_name = fastq_s_name.slice(0,-8) + ".json";
readgroup_basename_array.push(predicted_rg_name);
}
}
// get needed readgroup objects
var use_readgroup_array = [];
for (var i = 0; i < inputs.readgroup_paths.length; i++) {
var this_readgroup_object = inputs.readgroup_paths[i];
var this_readgroup_basename = local_basename(this_readgroup_object.location);
if (include(readgroup_basename_array, this_readgroup_basename)) {
use_readgroup_array.push(this_readgroup_object)
}
}
// generate readgroup string
var readgroup_str = "";
for (var i = 0; i < use_readgroup_array.length; i++) {
var readgroup_json = JSON.parse(use_readgroup_array[i].contents);
var this_readgroup = "";
this_readgroup = "ID:" + readgroup_json["ID"] + " ";
var keys = Object.keys(readgroup_json).sort();
for (var j = 0; j < keys.length; j++) {
var key = keys[j];
var value = readgroup_json[key];
if (key != "ID") {
this_readgroup = this_readgroup + key + ":" + value + " ";
}
}
this_readgroup = this_readgroup.substring(0, this_readgroup.length-1);
readgroup_str = readgroup_str + this_readgroup + " , ";
}
readgroup_str = readgroup_str.substring(0, readgroup_str.length-3);
return {'output_fastq_paths': fastq_array, "output_readgroup_str": readgroup_str};
}
.
at org.rabix.bindings.cwl.expression.javascript.CWLExpressionJavascriptResolver.evaluate(CWLExpressionJavascriptResolver.java:89) ~[rabix-cli-1.0.1.jar:na]
at org.rabix.bindings.cwl.CWLProcessor.postprocess(CWLProcessor.java:131) ~[rabix-cli-1.0.1.jar:na]
... 8 common frames omitted
Caused by: org.mozilla.javascript.EcmaError: TypeError: Cannot read property "ID" from null (script#50)
at org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3951) ~[rabix-cli-1.0.1.jar:na]
at org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3929) ~[rabix-cli-1.0.1.jar:na]
at org.mozilla.javascript.ScriptRuntime.typeError(ScriptRuntime.java:3962) ~[rabix-cli-1.0.1.jar:na]
at org.mozilla.javascript.ScriptRuntime.typeError2(ScriptRuntime.java:3981) ~[rabix-cli-1.0.1.jar:na]
at org.mozilla.javascript.ScriptRuntime.undefReadError(ScriptRuntime.java:3993) ~[rabix-cli-1.0.1.jar:na]
at org.mozilla.javascript.ScriptRuntime.getObjectElem(ScriptRuntime.java:1453) ~[rabix-cli-1.0.1.jar:na]
at org.mozilla.javascript.Interpreter.doGetElem(Interpreter.java:2214) ~[rabix-cli-1.0.1.jar:na]
at org.mozilla.javascript.Interpreter.interpretLoop(Interpreter.java:1264) ~[rabix-cli-1.0.1.jar:na]
at org.mozilla.javascript.Interpreter.interpret(Interpreter.java:815) ~[rabix-cli-1.0.1.jar:na]
at org.mozilla.javascript.InterpretedFunction.call(InterpretedFunction.java:109) ~[rabix-cli-1.0.1.jar:na]
at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:393) ~[rabix-cli-1.0.1.jar:na]
at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3282) ~[rabix-cli-1.0.1.jar:na]
at org.mozilla.javascript.InterpretedFunction.exec(InterpretedFunction.java:120) ~[rabix-cli-1.0.1.jar:na]
at org.mozilla.javascript.Context.evaluateString(Context.java:1219) ~[rabix-cli-1.0.1.jar:na]
at org.rabix.bindings.cwl.expression.javascript.CWLExpressionJavascriptResolver.evaluate(CWLExpressionJavascriptResolver.java:69) ~[rabix-cli-1.0.1.jar:na]
... 9 common frames omitted
[2017-08-30 15:06:40.117] [ERROR] Failed to execute status command for 9e77ec17-f235-4359-96ee-1fa775cbe9a3. Could not collect outputs.
org.rabix.executor.ExecutorException: Could not collect outputs.
at org.rabix.executor.handler.impl.JobHandlerImpl.postprocess(JobHandlerImpl.java:392) ~[rabix-cli-1.0.1.jar:na]
at org.rabix.executor.execution.command.StatusCommand.run(StatusCommand.java:54) ~[rabix-cli-1.0.1.jar:na]
at org.rabix.executor.execution.JobHandlerCommand.run(JobHandlerCommand.java:51) [rabix-cli-1.0.1.jar:na]
at org.rabix.executor.execution.JobHandlerRunnable.run(JobHandlerRunnable.java:60) [rabix-cli-1.0.1.jar:na]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_144]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_144]
at java.lang.Thread.run(Thread.java:748) [na:1.8.0_144]
Caused by: org.rabix.bindings.BindingException: Failed to populate outputs
at org.rabix.bindings.cwl.CWLProcessor.postprocess(CWLProcessor.java:134) ~[rabix-cli-1.0.1.jar:na]
at org.rabix.bindings.cwl.CWLBindings.postprocess(CWLBindings.java:83) ~[rabix-cli-1.0.1.jar:na]
at org.rabix.executor.handler.impl.JobHandlerImpl.postprocess(JobHandlerImpl.java:370) ~[rabix-cli-1.0.1.jar:na]
... 6 common frames omitted
Caused by: org.rabix.bindings.cwl.expression.CWLExpressionException: Failed evaluating expression ${
// generate fastq paths
var fastq_array = [];
var readgroup_basename_array = [];
function local_basename(path) {
var basename = path.split(/[\\/]/).pop();
return basename
}
function include(arr,obj) {
return (arr.indexOf(obj) != -1)
}
if (inputs.fastq1_paths.length > 0 && inputs.fastq1_paths.length == inputs.fastq2_paths.length) {
for (var i = 0; i < inputs.fastq1_paths.length; i++) {
fastq_array.push(inputs.fastq1_paths[i]);
fastq_array.push(inputs.fastq2_paths[i]);
var fastq1_name = local_basename(inputs.fastq1_paths[i].location);
var predicted_rg_name = fastq1_name.slice(0,-8) + ".json";
readgroup_basename_array.push(predicted_rg_name);
}
}
else {
for (var i = 0; i < inputs.fastq_s_paths.length; i++) {
fastq_array.push(inputs.fastq_s_paths[i]);
var fastq_s_name = local_basename(inputs.fastq_s_paths[i].location);
var predicted_rg_name = fastq_s_name.slice(0,-8) + ".json";
readgroup_basename_array.push(predicted_rg_name);
}
}
// get needed readgroup objects
var use_readgroup_array = [];
for (var i = 0; i < inputs.readgroup_paths.length; i++) {
var this_readgroup_object = inputs.readgroup_paths[i];
var this_readgroup_basename = local_basename(this_readgroup_object.location);
if (include(readgroup_basename_array, this_readgroup_basename)) {
use_readgroup_array.push(this_readgroup_object)
}
}
// generate readgroup string
var readgroup_str = "";
for (var i = 0; i < use_readgroup_array.length; i++) {
var readgroup_json = JSON.parse(use_readgroup_array[i].contents);
var this_readgroup = "";
this_readgroup = "ID:" + readgroup_json["ID"] + " ";
var keys = Object.keys(readgroup_json).sort();
for (var j = 0; j < keys.length; j++) {
var key = keys[j];
var value = readgroup_json[key];
if (key != "ID") {
this_readgroup = this_readgroup + key + ":" + value + " ";
}
}
this_readgroup = this_readgroup.substring(0, this_readgroup.length-1);
readgroup_str = readgroup_str + this_readgroup + " , ";
}
readgroup_str = readgroup_str.substring(0, readgroup_str.length-3);
return {'output_fastq_paths': fastq_array, "output_readgroup_str": readgroup_str};
}
.
at org.rabix.bindings.cwl.expression.javascript.CWLExpressionJavascriptResolver.evaluate(CWLExpressionJavascriptResolver.java:89) ~[rabix-cli-1.0.1.jar:na]
at org.rabix.bindings.cwl.CWLProcessor.postprocess(CWLProcessor.java:131) ~[rabix-cli-1.0.1.jar:na]
... 8 common frames omitted
Caused by: org.mozilla.javascript.EcmaError: TypeError: Cannot read property "ID" from null (script#50)
at org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3951) ~[rabix-cli-1.0.1.jar:na]
at org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3929) ~[rabix-cli-1.0.1.jar:na]
at org.mozilla.javascript.ScriptRuntime.typeError(ScriptRuntime.java:3962) ~[rabix-cli-1.0.1.jar:na]
at org.mozilla.javascript.ScriptRuntime.typeError2(ScriptRuntime.java:3981) ~[rabix-cli-1.0.1.jar:na]
at org.mozilla.javascript.ScriptRuntime.undefReadError(ScriptRuntime.java:3993) ~[rabix-cli-1.0.1.jar:na]
at org.mozilla.javascript.ScriptRuntime.getObjectElem(ScriptRuntime.java:1453) ~[rabix-cli-1.0.1.jar:na]
at org.mozilla.javascript.Interpreter.doGetElem(Interpreter.java:2214) ~[rabix-cli-1.0.1.jar:na]
at org.mozilla.javascript.Interpreter.interpretLoop(Interpreter.java:1264) ~[rabix-cli-1.0.1.jar:na]
at org.mozilla.javascript.Interpreter.interpret(Interpreter.java:815) ~[rabix-cli-1.0.1.jar:na]
at org.mozilla.javascript.InterpretedFunction.call(InterpretedFunction.java:109) ~[rabix-cli-1.0.1.jar:na]
at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:393) ~[rabix-cli-1.0.1.jar:na]
at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3282) ~[rabix-cli-1.0.1.jar:na]
at org.mozilla.javascript.InterpretedFunction.exec(InterpretedFunction.java:120) ~[rabix-cli-1.0.1.jar:na]
at org.mozilla.javascript.Context.evaluateString(Context.java:1219) ~[rabix-cli-1.0.1.jar:na]
at org.rabix.bindings.cwl.expression.javascript.CWLExpressionJavascriptResolver.evaluate(CWLExpressionJavascriptResolver.java:69) ~[rabix-cli-1.0.1.jar:na]
... 9 common frames omitted
Hi, we have made a new release (v1.0.2) just now, this fix should be included inside.