CASA (Common Astronomy Software Application) et son noyau CASA Toolkit sont très utiles pour l'analyse de données comme ALMA, mais pour utiliser casapy
(en fait un shell IPython généré par casapy.py
) ) Doit être exécuté. Pour cette raison, il ne peut pas être exécuté dans son propre environnement Python et il est difficile d'effectuer une analyse interactive et hautement reproductible avec, par exemple, le notebook Jupyter (notebook IPython). Copions donc le Toolkit CASA sur Mac OSX et le rendons disponible sous forme de module dans votre propre environnement Python [^ linux].
[^ linux]: Cette méthode a été créée par l'auteur en tant que version Mac OS X en référence à ici. Chose. Ce n'est pas une méthode officiellement prise en charge.
La boîte à outils CASA a été importée dans casapy
en tant que module appelé casac
, donc copiez les scripts appropriés ( * .py
) et les bibliothèques partagées (* .so
, * .dylib
). Cependant, cela ne suffit pas et vous devez changer le chemin de la bibliothèque partagée Python utilisée par chaque bibliothèque partagée par le chemin de votre propre environnement Python. Ajoutez PYTHONPATH
et CASAPATH
pour que Python puisse lire le dernier casac.py
copié.
La série de travaux ... devrait être complétée en exécutant le script shell suivant [^ cltools] [^ pyver] [^ casaver] [^ dépendances]. Avant l'exécution, personnalisez le chemin CASA (casaapp
), copiez le chemin de destination (ʻoutput) et la destination d'exportation
* PATH (
profile`) en fonction de votre propre environnement. Bien sûr, assurez-vous de faire une sauvegarde avant de l'exécuter!
$ ./extract_casatk_osx.sh
[^ cltools]: les outils de ligne de commande Xcode sont nécessaires pour exécuter le script.
[^ pyver]: Si vous avez plusieurs environnements Python tels que pyenv
, sélectionnez Python 2.7.x avant de démarrer. Cela correspond à la version Python dans CASA.
[^ casaver]: Le script est écrit selon la structure de répertoire CASA de la version Mac OS X, donc il ne fonctionnera pas correctement sur la version Linux. De plus, nous avons confirmé l'opération uniquement avec CASA 4.5.0.
[^ dépendances]: Certains outils dépendent des données à l'intérieur de CASA (casa-data
) et ne fonctionneront pas si vous désinstallez ou déplacez la source CASA (comme ʻia).
CASAPATH` est défini pour ces derniers.
Il ne vous reste plus qu'à lancer Python et à importer le casac
. Par exemple, l'outil associé à l'image CASA (ʻia`) peut être utilisé en spécifiant comme suit!
$ python # or ipython, jupyter notebook
>>> import casac
>>> ia = casac.casac.image()
>>> ia.open('casaimage.image')
True
Si vous souhaitez simplement mettre une bibliothèque tierce dans CASA, vous pouvez également utiliser casa-pip casa-pip.
extract_casatk_osx.sh
casaapp=/Applications/CASA.app # customize this!
outputdir=${HOME}/Documents # customize this!
profile=~/.bash_profile # customize this!
echo "CASA directory: " ${casaapp}
echo "Output directory:" ${outputdir}
echo -n "Press any key to continue >"
read INPUT
echo "Step 1: creating casatk directory"
casart=${casaapp}/Contents
casatk=${outputdir}/casatk
mkdir -p ${casatk}/Frameworks
mkdir -p ${casatk}/Resources/python/__casac__
echo "Step 2: copying libraries and Python scripts from CASA app"
echo " this may take a while ..."
cp -a ${casart}/Frameworks/lib ${casatk}/Frameworks
cp -a ${casart}/Frameworks/*.jar ${casatk}/Frameworks
cp -a ${casart}/Frameworks/*.dylib ${casatk}/Frameworks
cp -a ${casart}/Frameworks/Qt*.framework ${casatk}/Frameworks
cp -a ${casart}/Resources/python/casac.py ${casatk}/Resources/python
cp -a ${casart}/Resources/python/__casac__/*.so ${casatk}/Resources/python/__casac__
cp -a ${casart}/Resources/python/__casac__/*.py ${casatk}/Resources/python/__casac__
echo "Step 3: changing Python-framework's path of libraries"
libpy_so=@loader_path/../../../Frameworks/Python.framework/Versions/2.7/Python
libpy_dylib=@loader_path/lib/Python.framework/Versions/2.7/Python
libpy_user=`python -c "import glob; from distutils import sysconfig;
print(glob.glob(sysconfig.get_config_var('LIBDIR')+'/libpython*')[0])"`
for f in ${casatk}/Resources/python/__casac__/*.so ; do
install_name_tool -change ${libpy_so} ${libpy_user} ${f}
done
for f in ${casatk}/Frameworks/*.dylib ; do
install_name_tool -change ${libpy_dylib} ${libpy_user} ${f}
done
echo "Step 4: exporting PYTHONPATH and CASAPATH to profile"
casapath="${casart} darwin socorro-\$(uname -p) \$(hostname -s)"
pythonpath="${casatk}/Resources/python"
echo "export CASAPATH=\"${casapath}\"" >> ${profile}
echo "export PYTHONPATH=\$PYTHONPATH:${pythonpath}" >> ${profile}
echo "Done!"