Rerun maxent с использованием python - PullRequest
0 голосов
/ 17 января 2020

Я пытаюсь создать скрипт, который повторно запускает maxent для разных входных данных. У меня около 1500 видов, которые нужно обрабатывать отдельно. Моя идея состоит в том, чтобы использовать python l oop для этой программы. Но я не могу найти нужную информацию для начала. Прямо сейчас у меня есть 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

Я не знаю, почему программа не понимает аргумент. Я также попробовал сделать это с х вместо видов, чтобы убедиться, что слово «вид» еще не существует в библиотеке.

1 Ответ

0 голосов
/ 17 января 2020

Вам нужно передать аргументы / флаги в 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 с данными аргументами / флагами .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...