Open1

CWLでjavascript部分のデバッグ

ManabuIshiiManabuIshii

以下のような使い方をしたいときに、どうも値がうまくとれない、指定するべき値がとれないといったときのデバッグ方法として、

message:
  type: string
  valueFrom: $(inputs.input_file.nameroot)

ひとつは、わざとinputsに、わざと存在しないものを渡して、

  valueFrom: $(inputs.xyzxyzxyz.nameroot)

つけて実行する
scatterの際も同様

ただし、--validateでは、javascript

RROR Cannot make scatter job: hello_world_fileoutput2.cwl:27:1: Expression evaluation error:
                                  Expecting value: line 1 column 1 (char 0)
                                  script was:
                                  01 "use strict";
                                  02 var inputs = {
                                  03     "input_file": {
                                  04         "class": "File",
                                  05         "location":
                                  "file:///home/xxxxxxxx/work/CWL/cwl-samples-2023/eee_fff.txt",
                                  06         "size": 8,
                                  07         "basename": "eee_fff.txt",
                                  08         "nameroot": "eee_fff",
                                  09         "nameext": ".txt",
                                  10         "path":
                                  "/tmp/0ui0yjo5/stgbc0e3839-89fe-4413-b82b-65122f700c9c/eee_fff.txt",
                                  11         "dirname":
                                  "/tmp/0ui0yjo5/stgbc0e3839-89fe-4413-b82b-65122f700c9c"
                                  12     },
                                  13     "message": "eee_fff"
                                  14 };
                                  15 var self = null;
                                  16 var runtime = {
                                  17     "cores": 1,
                                  18     "ram": 256,
                                  19     "tmpdirSize": 1024,
                                  20     "outdirSize": 1024,
                                  21     "tmpdir": "/tmp/aeb23rt8",
                                  22     "outdir": "/tmp/v7m_lmht"
                                  23 };
                                  24 (function(){return ((inputs.inputxfile.nameroot));})()
                                  stdout was: ''
                                  stderr was: 'evalmachine.<anonymous>:24
                                  (function(){return ((inputs.inputxfile.nameroot));})()
                                                                         ^
                                  TypeError: Cannot read properties of undefined (reading
                                  'nameroot')
                                      at evalmachine.<anonymous>:24:40
                                      at evalmachine.<anonymous>:24:53
                                      at Script.runInContext (node:vm:133:12)
                                      at Script.runInNewContext (node:vm:138:17)
                                      at Object.runInNewContext (node:vm:296:38)
                                      at Socket.<anonymous> ([eval]:11:57)
                                      at Socket.emit (node:events:519:28)
                                      at addChunk (node:internal/streams/readable:559:12)
                                      at readableAddChunkPushByteMode
                                      (node:internal/streams/readable:510:3)
                                      at Readable.push (node:internal/streams/readable:390:5)'
ERROR Workflow cannot make any more progress.

この例でわざとまちがえたのは、inputxfileで、もともとはinput_file