String editing for output file name
2
0
Entering edit mode
5.8 years ago
ttom ▴ 220

This is a question related to String concatenation for output

This shell script outputs a file named R1_001_fastqc.results this is what I want to capture in the cwl. How could this be done ? The following code does not work

cat test.cwl

cwlVersion: v1.0
class: CommandLineTool
baseCommand: [sh, fastqc_check.sh]

requirements:
  - class: InlineJavascriptRequirement

inputs:
 fq1_zips:
  type: File
  inputBinding:
   position: 1

outputs:
 fastqc_check_out:
  type: File
  outputBinding:
   glob: $(inputs.fq1_zips.basename.split(".").slice(0)).results

cat test.yml

fq1_zips:
        class: File
        path: R1_001_fastqc.zip

fastqc_check_script:
 class: File
 path: fastqc_check.sh
CWL • 2.1k views
ADD COMMENT
0
Entering edit mode

Does the answer I posted in the other post not do what you need? This seems like you want to do the same thing as that post, what is different about it?

ADD REPLY
0
Entering edit mode

The user did indeed indicate that it worked: C: String concatenation for output

Can you clarify, ttom?

ADD REPLY
0
Entering edit mode

This time the output is R1_001_fastqc.results, I want to strip off the .zip from the output file. In the previous post the output was R1_001_fastqc.zip.results

The glob command below was tried to achieve the output filename as R1_001_fastqc.results

glob: $(inputs.fq1_zips.basename.split(".").slice(0)).results

Basically a part of the input file is used to name the outputfile name

Hope I am clear this time

ADD REPLY
3
Entering edit mode
5.8 years ago
biokcb ▴ 170

Oh, in that case use glob: $(inputs.fq1_zips.nameroot).results and remove the InlineJavascriptRequirement as it also isn't needed here.

edit to clarify: For future reference with File types nameroot refers to the filename without the extension and basename includes the extension.

ADD COMMENT
0
Entering edit mode

Yes, it worked. Thanks !!

ADD REPLY
0
Entering edit mode

You should mark it as accepted if it answered your question.

ADD REPLY
1
Entering edit mode
5.8 years ago
ttom ▴ 220

What if the output file should be named SampleA_fastqc.summary according to the inputs/sample as shown below

cat test.cwl cwlVersion: v1.0 class: CommandLineTool baseCommand: [sh, fastqc_check.sh]

inputs:
 sample:
  type: string
  inputBinding:
   position: 1
 fq1_zips:
  type: File
  inputBinding:
   position: 2

outputs:
 fastqc_check_out:
  type: File
  outputBinding:
   glob: $(inputs.sample.basename)_fastqc.summary

cat test.yml

sample: SampleA
fq1_zips:
        class: File
        path: R1_001_fastqc.zip

fastqc_check_script:
 class: File
 path: fastqc_check.sh
ADD COMMENT
2
Entering edit mode

Since sample is a string type, you don't need basename, as that is a File type attribute. Just use glob: $(inputs.sample)_fastqc.summary

ADD REPLY
0
Entering edit mode

This works...Thank you

ADD REPLY

Login before adding your answer.

Traffic: 2989 users visited in the last hour
Help About
FAQ
Access RSS
API
Stats

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.

Powered by the version 2.3.6