-
Notifications
You must be signed in to change notification settings - Fork 17
Expand file tree
/
Copy pathinstall-snpy
More file actions
executable file
·152 lines (133 loc) · 4.94 KB
/
install-snpy
File metadata and controls
executable file
·152 lines (133 loc) · 4.94 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
#!/bin/bash
# This script will install SNooPy in the "best" way possible. In order, we
# will try to do the following:
# 1) Check for anaconda (conda) environment and install into that
# 2) Create a new conda environment and install into that
# 3) Create a venv and install into that using pip
if [ "$1" = "-h" ] ; then
echo "Usage: install-snpy [location]"
echo " Install SNooPy into a virtual environment called [location]."
echo " [location] is optional, default is 'snpy'"
exit
fi
if [ $# -lt 1 ] ; then
location="snpy"
else
location=$1
fi
mandatory_packages="numpy scipy astropy ipython matplotlib pandas h5py onnxruntime"
optional_packages="emcee pymysql"
echo "Checking for conda..."
CONDA=$(which conda 2> /dev/null)
if [ $? -eq 1 ] ; then
echo "conda not found, falling back on venv"
PY=$(which python 2> /dev/null)
if [ $? -eq 1 ] ; then
PY=$(which python3 2> /dev/null)
if [ $? -eq 1 ] ; then
echo "No python found! Install python before you run this script."
exit 1
fi
fi
version=$($PY -V)
if [ "$(echo -e 'Python 3.0.0\n${version}' | sort -V -r | head -1)" = "Python 3.0.0" ] ; then
echo "You must be running Python 3 to use this script"
exit 1
fi
# Now check to see if we are already in an environment
base=$($PY -c "import sys;print(sys.exec_prefix)")
if [ -f ${base}/pyvenv.cfg ] ; then
echo "You already seem to be in a virtual environment."
while true; do
read -p "Should I install SNooPy into this venv? (y/n)" yn
case $yn in
[Yy]* ) break;;
[Nn]* ) exit ;;
* ) echo "answer y/n";;
esac
done
else
echo "Creating new venv environment in $location"
$PY -m venv $location
source $location/bin/activate
base=$($PY -c "import sys;print(sys.exec_prefix)")
fi
PIP=$(which pip 2> /dev/null)
if [ $? -eq 1 ] ; then
echo "I can't find pip. Please install it and re-run this script"
exit 1
fi
for package in $mandatory_packages ; do
echo "Installing $package..."
$PIP install $package > ${package}.log 2>&1 || (echo "$package failed to install, abort!"; exit)
done
for package in $optional_packages ; do
echo "Installing $package..."
$PIP install $package > ${package}.log 2>&1 || echo "optional $package failed to install"
done
else
# We have a conda environment. Yay! Check to see if we have the env
# already
# To access conda functionality we need to do some initialization
#source $(conda info --base)/etc/profile.d/conda.sh
eval "$(conda shell.bash hook)"
conda activate $location > /dev/null 2>&1
if [ $? -eq 0 ] ; then
python -c "import snpy"
if [ $? -eq 0 ] ; then
echo "You already seem to have a version of SNooPY isntalled."
echo "You should probably run update-snpy to update to the latest"
echo "version."
exit
fi
else
echo "Creating new virtual environment $location"
conda create -n $location -y > env.log 2>&1
if [ $? -ne 0 ] ; then
echo "Failed to create a conda environment. You may not have a"
echo "properly set-up version. Abort!"
exit
fi
echo "Done"
conda activate $location
fi
# We still need pip to install SNooPy from source, so check it
PIP=$(which pip 2> /dev/null)
if [ $? -ne 0 ] ; then
echo "Installing PIP..."
conda install -y pip > pip.log 2>&1 || (echo "Installation of PIP failed. Check pip.log. Abort!"; exit)
PIP=$(which pip 2> /dev/null)
rm pip.log
fi
# Now we have activated the environment, install the software
for package in $mandatory_packages ; do
echo "Installing ${package}..."
conda install -y $package > ${package}.log 2>&1 || (echo "Installation of $package failed. Check ${package}.log. Abort!"; exit)
rm ${package}.log
done
for package in $optional_packages ; do
echo "Installing ${package}..."
conda install -y $package > ${package}.log 2>&1
if [ $? -ne 0 ] ; then
echo "Trying PIP..."
pip install $package > ${package}.log 2>&1 || echo "Installation of optional package $package failed. Check ${package}.log"
else
rm ${package}.log
fi
done
fi
# Okay, at this point, we should be in a proper virtual environment
cd $(python -c "import sys;print(sys.exec_prefix)")
echo "Downloading SNooPy from git..."
git clone https://github.com/obscode/snpy > git.log 2>&1
if [ $? -ne 0 ] ; then
echo "Downloading from git failed, abort!. Check git.log"
exit
fi
cd snpy
$PIP install . > snpy.log 2>&1
echo "Done! With any luck, SNooPy has been successfully installed into the"
echo "virtual environment ${location}. From now on, if you want to run"
echo "SNooPy, you will need to activate this virtual environment first. Then"
echo "simply run 'snpy'. You can also periodically update SNooPy by running"
echo "'update-snpy' on the command-line."