0

我正在尝试创建一个脚本,为不同的输入重新运行 maxent。我有大约 1500 种需要单独处理。我的想法是为这个程序使用 python 循环。但我似乎无法找到正确的信息开始。现在我有 3 行简单的代码告诉 python 打开程序。

import subprocess
subprocess.call(['java', '-jar', r'C:\Program Files (x86)\Maxent\maxent.jar'])
subprocess.call([r'C:\Program Files (x86)\Maxent\maxent.bat'])

现在我想告诉 python 使用哪个输入。但是,我似乎找不到任何关于指定程序输入的函数的文档。

有没有人对如何进行下一步有任何想法?

- - - - - - - - - -编辑 - - - - - - - - - - - - - - - ------

现在我有以下代码:

import glob
import subprocess

insect = glob.glob('D:\Maxent\samples\*.csv')
for species in insect:
    subprocess.call(['java', '-jar', r'D:\Maxent\maxent.jar', 'environmentallayers=D:\Maxent\layers',
                     species, 'outputdirectory= D:\Maxent\outputs', 'redoifexists', 'autorun'])

这给了我maxent中的以下错误:

Initialization flags not understood: D:\Maxent\samples\Aeshna_juncea.csv

以及pyhton中的以下错误

C:\Users\merel\PycharmProjects\untitled\venv\Scripts\python.exe "C:/Users/merel/PycharmProjects/untitled/maxent python.py"
Error: Initialization flags not understood: species
Error: No species selected

我还尝试了 ' 周围的物种。这给了我以下错误:

C:\Users\merel\PycharmProjects\untitled\venv\Scripts\python.exe "C:/Users/merel/PycharmProjects/untitled/maxent python.py"
Error: Initialization flags not understood: species
Error: No species selected

我不知道为什么程序不理解这个论点。我还尝试使用 x 而不是 species 来确保库中不存在 species 一词。

4

1 回答 1

0

如果我理解正确,您需要将参数/标志传递给 Maxent 的 jar 文件以实现您的目标。

我已经下载了 Maxen 并找到了必要的参数/标志。启动 Maxent 时,单击帮助并向下滚动到Batch mode,您可以在其中找到所有参数/标志以及示例用法;java -mx512m -jar maxent.jar environmentallayers=layers samplesfile=samples\bradypus.csv outputdirectory=outputs togglelayertype=ecoreg redoifexists autorun

您可以在路径之后添加这些参数/标志,如下所示:

subprocess.call(['java', '-jar', r'C:\Program Files (x86)\Maxent\maxent.jar', 'environmentallayers=layers', 'samplesfile=samples\bradypus.csv', 'outputdirectory=outputs', 'togglelayertype=ecoreg', 'redoifexists', 'autorun'])

我希望这对您的项目有所帮助。因为我对你的领域一无所知,所以我没有尝试过任何这些。

编辑:您不必调用 .bat 文件,因为它还使用给定的参数/标志执行 maxent.jar。

于 2020-01-17T11:17:43.687 回答