PetervanLunteren/EcoAssist

software exiting without error or outfile generated on intel Apple iMac

Closed this issue · 5 comments

Hello Peter,
I have been referred here to ask you with a problem I am having running EcoAssist on my 2013 intel iMac running OS X Catalina. I installed the software and it seemed to install fine, but strangely, when I try and run it on images, it exits a few seconds after showing the message that it is processing. If I process movies, it will process them all but in the end also simply exits without the outfile being produced.
However, the post processing works fine. I am running Megadetector on a linux cluster and imported the .json file into the folder with the images back on my Mac. Then post-processing produces the expected results. The post processing works, but the detection does not.

Could you advise what I have done wrong?

Below is the code of the command file and it looks like there is an error with the $LOCATION_ECOASSIST_FILES files maybe?

#!/usr/bin/env bash

OSX and Linux commands to open the EcoAssist application https://github.com/PetervanLunteren/EcoAssist

Peter van Lunteren, 9 Apr 2024 (latest edit)

check the OS and set var

if [ "$(uname)" == "Darwin" ]; then
echo "This is an OSX computer..."
if [[ $(sysctl -n machdep.cpu.brand_string) =~ "Apple" ]]; then
echo " ...with an Apple Silicon processor."
PLATFORM="Apple Silicon Mac"
else
echo " ...with an Intel processor."
PLATFORM="Intel Mac"
fi
elif [ "$(expr substr $(uname -s) 1 5)" == "Linux" ]; then
echo "This is a Linux computer."
PLATFORM="Linux"
fi

set location var

if [ "$PLATFORM" = "Apple Silicon Mac" ] || [ "$PLATFORM" = "Intel Mac" ]; then
LOCATION_ECOASSIST_FILES="/Applications/.EcoAssist_files"
elif [ "$PLATFORM" = "Linux" ]; then
LOCATION_ECOASSIST_FILES="$HOME/.EcoAssist_files"
fi

set variables

CONDA_DIR="${LOCATION_ECOASSIST_FILES}/miniforge"
ECOASSISTCONDAENV="${CONDA_DIR}/envs/ecoassistcondaenv-base"
PIP="${ECOASSISTCONDAENV}/bin/pip"
HOMEBREW_DIR="/opt/homebrew"

log output to logfiles

exec 1> $LOCATION_ECOASSIST_FILES/EcoAssist/logfiles/stdout.txt
exec 2> $LOCATION_ECOASSIST_FILES/EcoAssist/logfiles/stderr.txt

timestamp and log the start

START_DATE=date
echo "Starting at: $START_DATE"
echo ""

log system information

UNAME_A=uname -a
if [ "$PLATFORM" = "Apple Silicon Mac" ] || [ "$PLATFORM" = "Intel Mac" ]; then
MACHINE_INFO=system_profiler SPSoftwareDataType SPHardwareDataType SPMemoryDataType SPStorageDataType
fi
FILE_SIZES_DEPTH_0=du -sh $LOCATION_ECOASSIST_FILES
FILE_SIZES_DEPTH_1=du -sh $LOCATION_ECOASSIST_FILES/*
FILE_SIZES_DEPTH_2=du -sh $LOCATION_ECOASSIST_FILES/*/*
echo "uname -a:"
echo ""
echo "$UNAME_A"
echo ""
if [ "$PLATFORM" = "Apple Silicon Mac" ] || [ "$PLATFORM" = "Intel Mac" ]; then
echo "System information:"
echo ""
echo "$MACHINE_INFO"
echo ""
fi
echo "File sizes with depth 0:"
echo ""
echo "$FILE_SIZES_DEPTH_0"
echo ""
echo "File sizes with depth 1:"
echo ""
echo "$FILE_SIZES_DEPTH_1"
echo ""
echo "File sizes with depth 2:"
echo ""
echo "$FILE_SIZES_DEPTH_2"
echo ""

change directory

cd $LOCATION_ECOASSIST_FILES || { echo "Could not change directory to EcoAssist_files. Command could not be run. Did you change the name or folder structure since installing EcoAssist?"; exit 1; }

activate conda env

source "${LOCATION_ECOASSIST_FILES}/miniforge/etc/profile.d/conda.sh"
source "${LOCATION_ECOASSIST_FILES}/miniforge/bin/activate"
export PATH="${CONDA_DIR}/bin":$PATH
conda activate $ECOASSISTCONDAENV

path to python exe

PATH_TO_PYTHON="${ECOASSISTCONDAENV}/bin/"
echo "Path to python: $PATH_TO_PYTHON"
echo ""

add to PYTHONPATH

export PYTHONPATH="$PYTHONPATH:$PATH_TO_PYTHON:$PWD/cameratraps:$PWD/ai4eutils:$PWD/yolov5:$PWD/EcoAssist"
echo "PYHTONPATH=$PYTHONPATH"
echo ""

add to PATH

export PATH="$PATH_TO_PYTHON:/usr/bin/:$PATH"
echo "PATH=$PATH"
echo ""

version of python exe

PYVERSION=python -V
echo "python version: $PYVERSION"
echo ""

location of python exe

PYLOCATION=which python
echo "python location: $PYLOCATION"
echo ""

run script

"${PATH_TO_PYTHON}/python" EcoAssist/EcoAssist_GUI.py

timestamp and log the end

END_DATE=date
echo ""
echo "Closing at: $END_DATE”
Ecoassist progress

Hi Tina, it sounds like the part of EcoAssist that runs MegaDetector is not functioning properly. That probably has to do with the fact that, as of January 2024, support for Intel-based Macs has been deprecated. While the software may still function on Intel Macs, optimal performance cannot be guaranteed, and unexpected behavior may occur.

If you're only running EcoAssist for MegaDetector and not for a classification model, you can also install an old version. That will probably still work on Intel macs. In the FAQ, under "What happened to the train feature?" you can find instructions on how to install EcoAssist v4.3.

Do you know when you downloaded the version that did work? I'll prepare a special install.command to get that specific version back.

since it never really worked fully (i.e. all I could do is postprocessing) and I have now set everything up on my cluster I am going to use the command line version for now. Until I eventually have to get a new computer. This issue comes up more and more with my intel Mac....Thanks or you help!

No problem :)