From 05b46cffa4b543e4f5dbb1c507d40a1ae892620f Mon Sep 17 00:00:00 2001 From: Peter Erwin Date: Sun, 16 Jun 2024 16:20:06 +0200 Subject: [PATCH] Renamed test_conda_pyimfit.py to test_pyimfit_install.py, made it more general script that downloads example directory if it is not found locally. --- conda/howto_build-for-conda.txt | 11 +++--- conda/test_conda_pyimfit.py | 24 ------------ conda/test_pyimfit_install.py | 68 +++++++++++++++++++++++++++++++++ howto_new_distribution.txt | 13 ++++--- imfit | 2 +- requirements.txt | 4 +- 6 files changed, 85 insertions(+), 37 deletions(-) delete mode 100644 conda/test_conda_pyimfit.py create mode 100755 conda/test_pyimfit_install.py diff --git a/conda/howto_build-for-conda.txt b/conda/howto_build-for-conda.txt index c835b6e..426f5aa 100644 --- a/conda/howto_build-for-conda.txt +++ b/conda/howto_build-for-conda.txt @@ -1,16 +1,14 @@ SIMPLE NOTES ON HOW TO BUILD CONDA PACKAGES WITH RATTLER-BUILD -Note that should probably be an environment with the -"nomkl" meta-package installed. - -$ conda activate - The following will generate packages for Python 3.8--3.12 $ rattler-build build --recipe ./rattler_setup --variant-config ./rattler_setup/variant_config.yaml Generated conda packages will be in a subdirectory of output/ +Doing this on MacBook Pro 2019 output/osx-64 -- for Intel (x86-64) binaries +Doing this in Ubuntu VM on MBPro 2019 + output/linux-64 -- for Intel Linux binaries HOW TO UPLOAD: @@ -21,7 +19,10 @@ Activate a conda environment that has the anaconda client installed, then log in Use "anaconda upload" and the names of the .conda (or .tar.bz2) files +MacOS Intel: % anaconda upload output/osx-86/pyimfit-*.conda [change output subdirectory name as appropriate] +Ubuntu VM (Intel): +% anaconda upload output/linux-64/pyimfit-*.conda [change output subdirectory name as appropriate] These will be uploaded to https://anaconda.org/perwin/pyimfit diff --git a/conda/test_conda_pyimfit.py b/conda/test_conda_pyimfit.py deleted file mode 100644 index be4cddb..0000000 --- a/conda/test_conda_pyimfit.py +++ /dev/null @@ -1,24 +0,0 @@ -# Simple test script to see if we can a) import pymfit; and b) run a simple fit -# using it. -# Run (within the appropriate conda environment) as -# $ python test_conda_pyimfit.py - -print("Starting test...") -import sys -import pyimfit -from astropy.io import fits - -vinfo = sys.version_info -print("Python version {0}.{1}".format(vinfo[0], vinfo[1])) - -ff = "/Users/erwin/coding/imfit/examples/" -imageFile = ff + "ic3478rss_256.fits" -configFile = ff + "config_exponential_ic3478_256.dat" - -image_data = fits.getdata(imageFile) -model_desc = pyimfit.ModelDescription.load(configFile) -imfit_fitter = pyimfit.Imfit(model_desc) -print("Doing the fit...") -fit_result = imfit_fitter.fit(image_data, gain=4.725, read_noise=4.3, original_sky=130.14) -print(fit_result) -print("Done") diff --git a/conda/test_pyimfit_install.py b/conda/test_pyimfit_install.py new file mode 100755 index 0000000..c4e0741 --- /dev/null +++ b/conda/test_pyimfit_install.py @@ -0,0 +1,68 @@ +#!/usr/bin/env python3 + +# Simple test script to see if we can a) import pymfit; and b) run a simple fit +# using it. Uses files in the default Imfit examples/ directory (downloads and +# unpacks this if it isn't in the lcoal directory). + +import sys, os, tarfile +import requests +import pyimfit +from astropy.io import fits + + +# UPDATE THIS TO POING TO WHERE THE IMFIT-EXAMPLES DIRECTORY IS LOCATED +BASE_DIR_ERWIN = "/Users/erwin/coding/imfit/examples/bob/" +EXAMPLES_URL = "https://www.mpe.mpg.de/~erwin/resources/imfit/imfit_examples.tar.gz" + +IMAGE_FILE = "ic3478rss_256.fits" +CONFGI_FILE = "config_sersic_ic3478_256.dat" + + + +def main( argv ): + # By default, we look for a pre-existing Imfit examples/ subdirectory in the current directory + # If not found, we look in BASE_DIR_ERWIN; if not found there, we download and unpack it + # from the Imfit webpage at MPE + if os.path.exists("./examples"): + baseDir = "./examples/" + elif os.path.exists(BASE_DIR_ERWIN): + baseDir = BASE_DIR_ERWIN + else: + print("ERROR: Unable to locate pre-existing examples directory.") + print("Downloading and unpacking examples directory...") + r = requests.get(EXAMPLES_URL, allow_redirects=True) + open('examples.tar.gz', 'wb').write(r.content) + tar = tarfile.open("examples.tar.gz") + tar.extractall(filter='data') + tar.close() + baseDir = "./examples/" + print("Done.") + + imageFile = baseDir + IMAGE_FILE + configFile = baseDir + CONFGI_FILE + + print("\nStarting test...") + vinfo = sys.version_info + print("Python version {0}.{1}".format(vinfo[0], vinfo[1])) + print("PyImfit version {0}".format(pyimfit.__version__)) + + filesExist = True + if not os.path.exists(imageFile): + print("ERROR: Unable to locate image file (path = %s" % imageFile) + filesExist = False + if not os.path.exists(configFile): + print("ERROR: Unable to locate Imfit config file (path = %s" % configFile) + filesExist = False + + if filesExist: + image_data = fits.getdata(imageFile) + model_desc = pyimfit.ModelDescription.load(configFile) + imfit_fitter = pyimfit.Imfit(model_desc) + print("Doing the fit...") + fit_result = imfit_fitter.fit(image_data, gain=4.725, read_noise=4.3, original_sky=130.14) + print(fit_result) + print("Done!\n") + + +if __name__ == '__main__': + main(sys.argv) diff --git a/howto_new_distribution.txt b/howto_new_distribution.txt index 6640e99..ed603a0 100644 --- a/howto_new_distribution.txt +++ b/howto_new_distribution.txt @@ -64,12 +64,13 @@ Working by default in ~/coding/pyimfit on Mac. A. [vm] cd /home/vagrant/build/pyimfit B. [vm] git pull origin master [if necessary] C. [vm] cd conda - D. [vm] rattler-build build --recipe ./rattler_setup --variant-config ./rattler_setup/variant_config.yaml - E. [vm] cd output - F. [vm] tar -cf linux-64.tar linux-64 && gzip linux-64.tar - G. [vm] cp linux-64.tar.gz /vagrant/transfer/ - H. [mac] cd /Users/erwin/coding/pyimfit/conda - I. [mac] tar -xf ~/vagrant/iraf/transfer/linux-64.tar.gz -C output + D. [vm] rm -rf output + E. [vm] rattler-build build --recipe ./rattler_setup --variant-config ./rattler_setup/variant_config.yaml + F. [vm] cd output + G. [vm] tar -cf linux-64.tar linux-64 && gzip linux-64.tar + H. [vm] cp linux-64.tar.gz /vagrant/transfer/ + I. [mac] cd /Users/erwin/coding/pyimfit/conda + J. [mac] tar -xf ~/vagrant/iraf/transfer/linux-64.tar.gz -C output 12. Upload conda packages to anaconda A. conda activate diff --git a/imfit b/imfit index 388d65c..650ad55 160000 --- a/imfit +++ b/imfit @@ -1 +1 @@ -Subproject commit 388d65c5bd9c2225f498a1285e3ca5568e59e2c3 +Subproject commit 650ad55d620c33c55f98b9f6e4cb1ac20c1a223a diff --git a/requirements.txt b/requirements.txt index 2f1724c..34cbf30 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,8 @@ -# Pip requirements.txt file for PyImfit +# Pip requirements.txt file for PyImfit, including for testing numpy scipy +pytest +requests # stuff to avoid possible conflicts involving Sphinx and docutils-0.18 on readthedocs.org sphinx<4.0