1

我对 Taverna 和 Abaqus 都很陌生,但我正在尝试在 HPC 上远程使用 Taverna 中的“工具”运行 Abaqus 模型。如果我已经有我的模型文件和 HPC 上的输入,这很好用,但我需要一种在 Taverna 中动态上传文件的方法(尝试一般地包装 Abaqus 模型)。

我尝试添加一个带有文件列表的输入端口,但我不知道如何将其复制到我为该工具设置的“位置”。beanshell 服务是否可以作为答案,或者我可以在执行 abaqus 模型之前遍历文件列表并复制它们?

谢谢

4

3 回答 3

2

当您说您创建了一个接受文件列表的输入端口时,我猜您的意思是工具服务的输入。

假设输入端口名为 my_file_list,当工具服务运行时,它将获取端口 my_file_list 上的数据值列表。例如,假设它有“hello”、“hi”和“hola”是列表中的三个值。

在运行工具服务的位置,它在一个临时目录中执行 - 每次执行该服务的目录都不同。它通常类似于 /tmp/usecase-2029778474741087696

临时目录下会创建三个文件;这些文件包含(在本例中)工具服务在端口 my_file_list 上接收到的三个值。这些文件可以称为

  • /tmp/usecase-2029778474741087696/tempfile.0.tmp 包含你好
  • /tmp/usecase-2029778474741087696/tempfile.1.tmp 包含 hi
  • /tmp/usecase-2029778474741087696/tempfile.2.tmp 包含 hola

还有一个名为 my_input_list 的文件。该文件将包含

/tmp/usecase-2029778474741087696/tempfile.0.tmp
/tmp/usecase-2029778474741087696/tempfile.1.tmp
/tmp/usecase-2029778474741087696/tempfile.2.tmp

您的工具服务的脚本通常会逐行读取 my_input_list 的内容,并对列出的文件的内容进行处理。

我还看到了一些“作弊”并直接在 tempfile*.tmp 上迭代的脚本,但这将是“一件坏事”。该技巧的问题在于,如果您想向工具服务添加第二个文件列表,则文件 my_input_list 可能包含

/tmp/usecase7932018053449784034/tempfile.4.tmp
/tmp/usecase7932018053449784034/tempfile.5.tmp
/tmp/usecase7932018053449784034/tempfile.6.tmp

因为其他临时文件用于其他文件列表端口。

我希望这会有所帮助

于 2015-03-02T14:57:13.163 回答
1

工具服务允许您上传文件- 但如果您通过作业提交节点使用 HPC,则您必须修改命令行工具,然后使用作业文件暂存命令进一步推送文件作为作业的一部分. 这些文件将在指定工具脚本的当前(临时)目录中可用。

我会尝试通过工具服务而不涉及 beanshell - 然后您可以使您的工作流程更简单。

要记住的一件好事是,您可以在框中编写多个 shell 命令。

同样,您可能希望取回结果,以便您可以在工作流程中进一步处理它们(除非它们很大 - 在这种情况下,您应该输出它们的远程文件名并将它们再次发送到下一个 HPC 作业)

用于暂存文件和检索文件的确切命令取决于 HPC 作业提交系统。你用的是哪一个?

于 2015-03-02T14:30:09.577 回答
1

感谢您的输入。这是我对 Taverna 如何使用文件列表的误解。列表中的所有文件都被复制到临时“沙箱”中,因此可供使用。另一个不错的简单方法是压缩目录并将压缩文件传递到服务的输入端口。然后只需解压缩命令中的文件。再次感谢

于 2015-03-03T10:58:17.090 回答