cwlVersion: v1.2 $namespaces: s: https://schema.org/ edam: http://edamontology.org/ $graph: - class: Workflow id: aquaculture_pipeline doc: This pipeline runs an aquaculture simulation with opendrift inputs: aqua_site_file: type: string doc: aqua_site_file aqua_site_distances_files: type: string doc: aqua_site_distances_files aqua_opendrift_particles_per_site: type: int doc: aqua_opendrift_particles_per_site aqua_opendrift_simulation_duration_hours: type: int doc: aqua_opendrift_simulation_duration_hours aqua_connectivity_number_of_neighbours: type: int doc: aqua_connectivity_number_of_neighbours aqua_connectivity_radius: type: int doc: aqua_connectivity_radius starttime: type: string? doc: The start time of the simulation steps: step_simulation: run: '#aquaculture_norway' in: aqua_site_file: aqua_site_file aqua_site_distances_files: aqua_site_distances_files aqua_opendrift_particles_per_site: aqua_opendrift_particles_per_site aqua_opendrift_simulation_duration_hours: aqua_opendrift_simulation_duration_hours aqua_connectivity_number_of_neighbours: aqua_connectivity_number_of_neighbours aqua_connectivity_radius: aqua_connectivity_radius starttime: starttime out: - simulation - connectivity - connectivity_with_locality_id step_metadata: run: '#netcdf_metadata' in: netcdf_file: step_simulation/simulation out: - metadata step_2stac2: run: '#2stac2_aquaculture_pipeline' in: simulation: step_simulation/simulation connectivity: step_simulation/connectivity connectivity_with_locality_id: step_simulation/connectivity_with_locality_id metadata: step_metadata/metadata out: - stac_result outputs: - id: wf_outputs outputSource: - step_2stac2/stac_result type: Directory requirements: InlineJavascriptRequirement: {} s:name: aquaculture_pipeline s:description: | This pipeline runs an aquaculture simulation with opendrift s:keywords: - aquaculture - opendrift - simulation s:softwareVersion: 0.0.2 s:producer: class: s:Organization s:name: INESCTEC s:url: https://inesctec.pt s:address: class: s:PostalAddress s:addressCountry: PT s:sourceOrganization: - class: s:Organization s:name: INESCTEC s:url: https://inesctec.pt s:address: class: s:PostalAddress s:addressCountry: PT s:author: - class: s:Person s:name: Miguel Correia s:email: miguel.r.correia@inesctec.pt s:codeRepository: >- https://pipe-drive.inesctec.pt/application-packages/workflows/openoil-duth/openoil_duth_REF_0_2_0.cwl s:dateCreated: '2025-06-10T23:18:07Z' - class: CommandLineTool id: aquaculture_norway baseCommand: python arguments: - /aquaculturedemo/runnorkystforecast.py inputs: aqua_site_file: type: string doc: aqua_site_file inputBinding: prefix: --aqua_site_file aqua_site_distances_files: type: string doc: aqua_site_distances_files inputBinding: prefix: --aqua_site_distances_files aqua_opendrift_particles_per_site: type: int doc: aqua_opendrift_particles_per_site inputBinding: prefix: --aqua_opendrift_particles_per_site aqua_opendrift_simulation_duration_hours: type: int doc: aqua_opendrift_simulation_duration_hours inputBinding: prefix: --aqua_opendrift_simulation_duration_hours aqua_connectivity_number_of_neighbours: type: int doc: aqua_connectivity_number_of_neighbours inputBinding: prefix: --aqua_connectivity_number_of_neighbours aqua_connectivity_radius: type: int doc: aqua_connectivity_radius inputBinding: prefix: --aqua_connectivity_radius starttime: type: string? doc: The start time of the simulation inputBinding: prefix: --starttime outputs: simulation: format: edam:format_3650 # NetCDF type: File outputBinding: glob: "modeloutput/salmon_midnor.nc" connectivity: format: edam:format_3620 # xlsx type: File outputBinding: glob: "modeloutput/salmon_midnor_connectivity.xlsx" connectivity_with_locality_id: format: edam:format_3620 # xlsx type: File outputBinding: glob: "modeloutput/salmon_midnor_connectivity_withLocalityId.xlsx" requirements: NetworkAccess: networkAccess: true EnvVarRequirement: envDef: PATH: /opt/miniconda3/envs/opendrift/bin:/opt/conda/bin:/opt/conda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin ResourceRequirement: {} InlineJavascriptRequirement: {} DockerRequirement: dockerPull: iliad-repository.inesctec.pt/aquaculture-norway:0.0.1 s:name: aquaculture_norway s:description: s:keywords: - opendrift s:programmingLanguage: python s:softwareVersion: 0.1.0 s:producer: class: s:Organization s:name: D.U.TH s:url: https://env.duth.gr s:address: class: s:PostalAddress s:addressCountry: GR s:sourceOrganization: - class: s:Organization s:name: INESCTEC s:url: https://inesctec.pt s:address: class: s:PostalAddress s:addressCountry: PT - class: s:Organization s:name: D.U.TH s:url: https://env.duth.gr s:address: class: s:PostalAddress s:addressCountry: GR s:author: - class: s:Person s:name: Georgios Sylaios s:email: gsylaios@env.duth.gr - class: s:Person s:name: Nikolaos Kokkos s:email: nikolaoskokkos@gmail.com s:contributor: - class: s:Person s:name: Miguel Correia s:email: miguel.r.correia@inesctec.pt s:codeRepository: https://pipe-drive.inesctec.pt/application-packages/tools/openoil-simulation-duth/aquaculture_norway_duth_0_1_0.cwl s:dateCreated: "2025-05-12T12:31:30Z" - class: CommandLineTool id: netcdf_metadata baseCommand: python arguments: - /opt/parse.py - '--netcdf_file' - valueFrom: $(inputs.netcdf_file) - valueFrom: $(inputs.extra_props ? ['--extra_props', inputs.extra_props] :[]) inputs: netcdf_file: type: File extra_props: type: File? outputs: metadata: outputBinding: glob: ./metadata.json type: File format: edam:format_3464 requirements: MultipleInputFeatureRequirement: {} ResourceRequirement: {} InlineJavascriptRequirement: {} DockerRequirement: dockerPull: iliad-repository.inesctec.pt/netcdf-metadata:0.1.0 s:name: netcdf_metadata s:softwareVersion: 0.1.0 s:description: Extract metadata from NetCDF file s:keywords: - netcdf - metadata s:programmingLanguage: python s:producer: class: s:Organization s:name: INESCTEC s:url: https://inesctec.pt s:address: class: s:PostalAddress s:addressCountry: PT s:sourceOrganization: - class: s:Organization s:name: INESCTEC s:url: https://inesctec.pt s:address: class: s:PostalAddress s:addressCountry: PT s:author: - class: s:Person s:name: Miguel Correia s:email: miguel.r.correia@inesctec.pt s:codeRepository: >- https://pipe-drive.inesctec.pt/application-packages/tools/netcdf-metadata/netcdf_metadata_0_1_0.cwl s:dateCreated: '2025-06-10T01:07:05Z' - class: CommandLineTool id: 2stac2_aquaculture_pipeline baseCommand: python arguments: - /opt/2stac2.py - '--file' - valueFrom: $(inputs.simulation) - '--file' - valueFrom: $(inputs.connectivity) - '--file' - valueFrom: $(inputs.connectivity_with_locality_id) - '--metadata' - valueFrom: $(runtime.outdir + '/multiple_metadata.json') inputs: simulation: format: edam:format_3650 doc: simulation NetCDF file type: File connectivity: format: edam:format_3620 doc: connectivity file type: File? connectivity_with_locality_id: format: edam:format_3620 doc: connectivity with locality id type: File? metadata: format: edam:format_3464 doc: metadata file description type: File loadContents: true outputs: stac_result: outputBinding: glob: stac_result type: Directory doc: STAC output requirements: EnvVarRequirement: envDef: PATH: >- /opt/conda/envs/application/bin:/opt/conda/condabin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin ResourceRequirement: {} InlineJavascriptRequirement: {} DockerRequirement: dockerPull: iliad-repository.inesctec.pt/2stac2:0.3.1 InplaceUpdateRequirement: inplaceUpdate: true InitialWorkDirRequirement: listing: | ${ const content = JSON.parse(inputs.metadata.contents); const metadata = []; metadata.push({...content, filename:inputs["simulation"].basename}); metadata.push({...content, filename:inputs["connectivity"].basename , media_type:undefined}); metadata.push({...content, filename:inputs["connectivity_with_locality_id"].basename , media_type:undefined}); return [{"class": "File", "basename": "multiple_metadata.json", "contents": JSON.stringify(metadata) }]; } s:name: 2stac2_aquaculture_pipeline s:softwareVersion: 0.3.1 s:description: 2stac2 tool to transform Aquaculture simulation files into a STAC s:keywords: - stac - metadata - aquaculture s:programmingLanguage: python s:sourceOrganization: class: s:Organization s:name: INESCTEC s:url: https://inesctec.pt s:address: class: s:PostalAddress s:addressCountry: PT s:author: class: s:Person s:name: Miguel Correia s:email: miguel.r.correia@inesctec.pt s:codeRepository: >- https://pipe-drive.inesctec.pt/application-packages/tools/2stac2/2stac2_aquaculture_pipeline_0_3_1.cwl s:dateCreated: '2025-10-13T19:34:06Z'