Skip to content

Commit 3cc67cf

Browse files
authored
NFDI: provide source path as external variable (#99)
* NFDI: provide source path as external variable * Update jupyter notebooks * Remove hardcoded source path * Update workflow.py * Update workflow.py * Update workflow.py
1 parent 486ce11 commit 3cc67cf

File tree

5 files changed

+25
-694
lines changed

5 files changed

+25
-694
lines changed

example_workflows/nfdi/aiida.ipynb

Lines changed: 1 addition & 363 deletions
Large diffs are not rendered by default.

example_workflows/nfdi/jobflow.ipynb

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

example_workflows/nfdi/pyiron_base.ipynb

Lines changed: 1 addition & 312 deletions
Large diffs are not rendered by default.

example_workflows/nfdi/workflow.json

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,20 +8,26 @@
88
{"id": 4, "type": "function", "value": "workflow.substitute_macros"},
99
{"id": 5, "type": "function", "value": "workflow.compile_paper"},
1010
{"id": 6, "type": "input", "value": 2.0, "name": "domain_size"},
11-
{"id": 7, "type": "output", "name": "result"}
11+
{"id": 7, "type": "input", "value": "source", "name": "source_directory"},
12+
{"id": 8, "type": "output", "name": "result"}
1213
],
1314
"edges": [
1415
{"target": 0, "targetPort": "domain_size", "source": 6, "sourcePort": null},
16+
{"target": 0, "targetPort": "source_directory", "source": 7, "sourcePort": null},
1517
{"target": 1, "targetPort": "gmsh_output_file", "source": 0, "sourcePort": null},
1618
{"target": 2, "targetPort": "meshio_output_xdmf", "source": 1, "sourcePort": "xdmf_file"},
1719
{"target": 2, "targetPort": "meshio_output_h5", "source": 1, "sourcePort": "h5_file"},
20+
{"target": 2, "targetPort": "source_directory", "source": 7, "sourcePort": null},
1821
{"target": 3, "targetPort": "poisson_output_pvd_file", "source": 2, "sourcePort": "pvd_file"},
1922
{"target": 3, "targetPort": "poisson_output_vtu_file", "source": 2, "sourcePort": "vtu_file"},
23+
{"target": 3, "targetPort": "source_directory", "source": 7, "sourcePort": null},
2024
{"target": 4, "targetPort": "pvbatch_output_file", "source": 3, "sourcePort": null},
2125
{"target": 4, "targetPort": "ndofs", "source": 2, "sourcePort": "numdofs"},
2226
{"target": 4, "targetPort": "domain_size", "source": 6, "sourcePort": null},
27+
{"target": 4, "targetPort": "source_directory", "source": 7, "sourcePort": null},
2328
{"target": 5, "targetPort": "macros_tex", "source": 4, "sourcePort": null},
2429
{"target": 5, "targetPort": "plot_file", "source": 3, "sourcePort": null},
25-
{"target": 7, "targetPort": null, "source": 5, "sourcePort": null}
30+
{"target": 5, "targetPort": "source_directory", "source": 7, "sourcePort": null},
31+
{"target": 8, "targetPort": null, "source": 5, "sourcePort": null}
2632
]
2733
}

example_workflows/nfdi/workflow.py

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,13 @@
22
from conda_subprocess import check_output
33
import shutil
44

5-
source_directory = os.path.join(os.path.dirname(os.path.abspath(__file__)), "source")
65

7-
8-
def generate_mesh(domain_size: float = 2.0) -> str:
6+
def generate_mesh(domain_size: float, source_directory: str) -> str:
97
stage_name = "preprocessing"
108
gmsh_output_file_name = "square.msh"
119
source_file_name ="unit_square.geo"
1210
os.makedirs(stage_name, exist_ok=True)
13-
_copy_file_from_source(stage_name=stage_name, source_file_name=source_file_name)
11+
_copy_file_from_source(stage_name=stage_name, source_file_name=source_file_name, source_directory=source_directory)
1412
_ = check_output(
1513
[
1614
"gmsh", "-2", "-setnumber", "domain_size", str(domain_size),
@@ -40,13 +38,13 @@ def convert_to_xdmf(gmsh_output_file : str) -> dict:
4038
}
4139

4240

43-
def poisson(meshio_output_xdmf: str, meshio_output_h5: str) -> dict:
41+
def poisson(meshio_output_xdmf: str, meshio_output_h5: str, source_directory: str) -> dict:
4442
stage_name = "processing"
4543
poisson_output_pvd_file_name = "poisson.pvd"
4644
poisson_output_numdofs_file_name = "numdofs.txt"
4745
source_file_name = "poisson.py"
4846
os.makedirs(stage_name, exist_ok=True)
49-
_copy_file_from_source(stage_name=stage_name, source_file_name=source_file_name)
47+
_copy_file_from_source(stage_name=stage_name, source_file_name=source_file_name, source_directory=source_directory)
5048
_copy_file(stage_name=stage_name, source_file=meshio_output_xdmf)
5149
_copy_file(stage_name=stage_name, source_file=meshio_output_h5)
5250
_ = check_output(
@@ -65,12 +63,12 @@ def poisson(meshio_output_xdmf: str, meshio_output_h5: str) -> dict:
6563
}
6664

6765

68-
def plot_over_line(poisson_output_pvd_file: str, poisson_output_vtu_file: str) -> str:
66+
def plot_over_line(poisson_output_pvd_file: str, poisson_output_vtu_file: str, source_directory: str) -> str:
6967
stage_name = "postprocessing"
7068
pvbatch_output_file_name = "plotoverline.csv"
7169
source_file_name = "postprocessing.py"
7270
os.makedirs(stage_name, exist_ok=True)
73-
_copy_file_from_source(stage_name=stage_name, source_file_name=source_file_name)
71+
_copy_file_from_source(stage_name=stage_name, source_file_name=source_file_name, source_directory=source_directory)
7472
_copy_file(stage_name=stage_name, source_file=poisson_output_pvd_file)
7573
_copy_file(stage_name=stage_name, source_file=poisson_output_vtu_file)
7674
_ = check_output(
@@ -82,14 +80,14 @@ def plot_over_line(poisson_output_pvd_file: str, poisson_output_vtu_file: str) -
8280
return os.path.abspath(os.path.join("postprocessing", pvbatch_output_file_name))
8381

8482

85-
def substitute_macros(pvbatch_output_file: str, ndofs: int, domain_size: float = 2.0) -> str:
83+
def substitute_macros(pvbatch_output_file: str, ndofs: int, domain_size: float, source_directory: str) -> str:
8684
stage_name = "postprocessing"
8785
source_file_name = "prepare_paper_macros.py"
8886
template_file_name = "macros.tex.template"
8987
macros_output_file_name = "macros.tex"
9088
os.makedirs(stage_name, exist_ok=True)
91-
_copy_file_from_source(stage_name=stage_name, source_file_name=source_file_name)
92-
_copy_file_from_source(stage_name=stage_name, source_file_name=template_file_name)
89+
_copy_file_from_source(stage_name=stage_name, source_file_name=source_file_name, source_directory=source_directory)
90+
_copy_file_from_source(stage_name=stage_name, source_file_name=template_file_name, source_directory=source_directory)
9391
_copy_file(stage_name=stage_name, source_file=pvbatch_output_file)
9492
_ = check_output(
9593
[
@@ -104,12 +102,12 @@ def substitute_macros(pvbatch_output_file: str, ndofs: int, domain_size: float =
104102
return os.path.abspath(os.path.join(stage_name, macros_output_file_name))
105103

106104

107-
def compile_paper(macros_tex: str, plot_file: str) -> str:
105+
def compile_paper(macros_tex: str, plot_file: str, source_directory: str) -> str:
108106
stage_name = "postprocessing"
109107
paper_output = "paper.pdf"
110108
source_file_name = "paper.tex"
111109
os.makedirs(stage_name, exist_ok=True)
112-
_copy_file_from_source(stage_name=stage_name, source_file_name=source_file_name)
110+
_copy_file_from_source(stage_name=stage_name, source_file_name=source_file_name, source_directory=source_directory)
113111
_copy_file(stage_name=stage_name, source_file=macros_tex)
114112
_copy_file(stage_name=stage_name, source_file=plot_file)
115113
_ = check_output(
@@ -126,12 +124,12 @@ def _poisson_collect_output(numdofs_file: str) -> int:
126124
return int(f.read())
127125

128126

129-
def _copy_file(stage_name, source_file):
127+
def _copy_file(stage_name: str, source_file: str):
130128
input_file = os.path.join(os.path.abspath(stage_name), os.path.basename(source_file))
131129
if input_file != source_file:
132130
shutil.copyfile(source_file, input_file)
133131

134132

135-
def _copy_file_from_source(stage_name, source_file_name):
133+
def _copy_file_from_source(stage_name: str, source_file_name: str, source_directory: str):
136134
source_file = os.path.join(source_directory, source_file_name)
137-
shutil.copyfile(source_file, os.path.join(stage_name, source_file_name))
135+
shutil.copyfile(source_file, os.path.join(stage_name, source_file_name))

0 commit comments

Comments
 (0)