0
头像

请帮助命令行包装器

嗨,大家好,

我在尝试。使用命令行程序“sed”制作一个简单的包装插件。基本上我正在尝试对序列进行简单的搜索和替换。

我的问题是,在第 2 步窗口中,我如何定义 Geneious 将提供给程序的文件?

从命令行我会输入:

sed 's/CGTGACAATTCCAAAACACCCTGTACTTGCAGA/CGTGACAATTCCAAAAACACCCTGTACTTGCAGA/g' old_file.fasta > new_file.fasta

我需要知道 Geneious 将调用 new_file.fasta

我希望这很清楚!
谢谢,

本·基菲尔

官方评论

头像

嗨,本,

有几个选项。

第一个是使用 sed 的“-i 扩展名”选项并就地编辑文件。然后您可以从用于 old_file.fasta 的同一个文件中回读,它将包含修改后的序列。

第二个选项是执行一个 shell,这样你就可以使用重定向而不是直接执行 sed。例如:

new String[] { “sh”, “sed's/CGTGACAATTCCAAAACACCCTGTACTTGCAGA/CGTGACAATTCCAAAAACACCCTGTACTTGCAGA/g' old_file.fasta > new_file.fasta” }

另一种选择是实现 com.biomatters.geneious.publicapi.utilities.Execution.OutputListener 并将标准输出捕获为字符串。然后在创建新的 com.biomatters.geneious.publicapi.utilities.Execution 时提供此 OutputListener。

最后一个更复杂的选项是直接使用 ProcessBuilder 并调用 redirectOutput 方法。您需要自己处理 com.biomatters.geneious.publicapi.utilities.Execution 已经为您完成的所有边缘情况。

如果您只想以这种方式进行搜索和替换,那么使用内置的 String.replaceAll(或其他变体之一)会容易得多。

希望其中之一对您有用。

干杯,
杰森

杰森
评论动作 永久链接

3 条评论

0
头像

嗨,本,

我看到 Jason 给你回复了专门针对 Geneious JAVA API 的建议,而不是针对包装器插件的建议。

我已经快速浏览了将 SED 与 Geneious Wrapper 插件工具一起使用并使其工作。

关键要注意:

* 不要用引号将搜索/替换短语包装起来,因为包装器外壳会错误地解释这些短语。

以下是所用设置的屏幕截图。

步骤1。使插件类型通用操作。“选择” sed 可执行文件。

第2步。使用如下所示的设置。

第 3 步。为完整的 sed 短语添加一个选项(不带引号)

我添加了一个命令行开关(这是必需的),但设置为忽略名称-值分隔符,以便不使用该开关。

 

亲切的问候,
莫兰 

 

莫兰兰·吉布斯 0 票
评论动作 永久链接
0
头像

嗨,莫兰德,

 

感谢您的详细说明 - 完全按照描述工作!

注意以防其他人将来需要类似的结果。因为我想找到一个特定的序列(我们称之为 AAAAA)并总是用另一个(CCCCC)替换它,所以我将设置页面上的命令行更改为以下内容: 

然后我在步骤 3 中删除了用户输入选项,插件会自动搜索 AAAAA 并替换为 CCCCC!

 

本·基菲尔 0 票
评论动作 永久链接