Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F60572953
cryosparc_install.sh
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Wed, May 1, 04:43
Size
6 KB
Mime Type
text/x-shellscript
Expires
Fri, May 3, 04:43 (2 d)
Engine
blob
Format
Raw Data
Handle
17377209
Attached To
rSCCRYOSPARC scitas-cryosparc-scripts
cryosparc_install.sh
View Options
#!/bin/bash
set
-euo pipefail
# Script made from the page
# https://docs.ycrc.yale.edu/clusters-at-yale/guides/cryosparc/
script_path
=
$(
dirname
"$0"
)
# relative
script_path
=
$(
cd
"${script_path}"
&&
pwd
)
# absolutized and normalized
license_id
=
install_path
=
"$HOME"
/cryosparc
# set up some more paths
db_path
=
${
install_path
}
/database
worker_path
=
${
install_path
}
/cryosparc2_worker
# Usage
usage
()
{
echo
"Usage:"
echo
" -p install path : prefix for installation [${install_path}] "
echo
" -v : be verbose"
echo
" -h : print this notice"
echo
""
}
VERBOSE
=
false
read
-p
"Enter your license id: "
license_id
read
-p
"Enter password for the user account to be created [leave empty to not create the initial account]: "
password
# Parse options
while
getopts
":p:vh"
opt;
do
case
$opt
in
p
)
install_path
=
"${OPTARG}"
;;
v
)
VERBOSE
=
true
;;
h
)
usage
OPTIND
=
1
exit
0
;;
\?
)
echo
"Invalid option: -$OPTARG"
>&2
usage
OPTIND
=
1
exit
1
;;
:
)
echo
"Option -$OPTARG requires an argument."
>&2
usage
OPTIND
=
1
exit
1
;;
esac
done
# Reset OPTIND to allow the next invocation to work
OPTIND
=
1
message
()
{
if
$VERBOSE
then
echo
"${1}"
fi
}
if
[
"x${license_id}"
==
"x"
]
;
then
echo
"[Error] No license id was provided"
>&2
usage
exit
2
fi
message
"[Info] Preparing the install path and dowloading cryosparc_master and cryosparc_worker"
# go get the installers
mkdir -p
$install_path
cd
$install_path
# Download master
curl -sL -C - -
\#
https://get.cryosparc.com/download/master-latest/
$license_id
-o cryosparc2_master.tar.gz
# Download worker
curl -sL -C - -
\#
https://get.cryosparc.com/download/worker-latest/
$license_id
-o cryosparc2_worker.tar.gz
message
"[Info] Expanding tarballs"
tar -xf cryosparc2_master.tar.gz
tar -xf cryosparc2_worker.tar.gz
module purge
module load gcc cuda/11.0.2 python
message
"[Info] Installing master"
cd
${
install_path
}
/cryosparc_master
./install.sh --license
$license_id
--hostname
$(
hostname
)
--dbpath
$db_path
--yes
set
+u
#source ~/.bashrc
set
-u
message
"[Info] Installing worker"
cd
${
install_path
}
/cryosparc_worker
./install.sh --license
$license_id
--cudapath
$CUDA_HOME
--yes
set
+u
#source ~/.bashrc
set
-u
message
"[Info] Creating worker configs"
cryosparc_master_path
=
${
install_path
}
/cryosparc_master
if
[
$(
grep -c
"export PATH"
${
cryosparc_master_path
}
/config.sh
)
-eq 0
]
;
then
echo
"export PATH=${cryosparc_master_path}/bin:\$PATH"
>>
${
cryosparc_master_path
}
/config.sh
fi
if
[
$(
grep -c
"export CRYOSPARC_HOSTNAME_CHECK"
${
cryosparc_master_path
}
/config.sh
)
-eq 0
]
;
then
echo
"export CRYOSPARC_HOSTNAME_CHECK=${HOSTNAME}"
>>
${
cryosparc_master_path
}
/config.sh
fi
cryosparc_worker_path
=
${
install_path
}
/cryosparc_worker
if
[
$(
grep -c
"export PATH"
${
cryosparc_worker_path
}
/config.sh
)
-eq 0
]
;
then
echo
"export PATH=${cryosparc_worker_path}/bin:\$PATH"
>>
${
cryosparc_worker_path
}
/config.sh
fi
cp
${
script_path
}
/cryosparcm.sh
${
install_path
}
/cryosparc_master/bin
if
[
$(${
install_path
}
/cryosparc_master/bin/cryosparcm.sh status | grep -c
"CryoSPARC is not running"
)
-eq 1
]
;
then
${
install_path
}
/cryosparc_master/bin/cryosparcm.sh start
fi
user_name
=
$(
whoami
)
mail
=
$(
ldapsearch -x -LLL -h scoldap.epfl.ch -b
"o=epfl,c=ch"
uid
=
${
user_name
}
mail | grep mail | awk
'{ print $2 }'
)
firstname
=
$(
ldapsearch -x -LLL -h scoldap.epfl.ch -b
"o=epfl,c=ch"
uid
=
${
user_name
}
givenName | grep givenName | awk
'{ print $2 }'
)
lastname
=
$(
ldapsearch -x -LLL -h scoldap.epfl.ch -b
"o=epfl,c=ch"
uid
=
${
user_name
}
sn | grep sn | awk
'{ print $2 }'
)
if
[
"x$password"
!
=
"x"
]
;
then
${
install_path
}
/cryosparc_master/bin/cryosparcm.sh createuser --email
"${mail}"
--firstname
"${firstname}"
--lastname
"${lastname}"
--username
"${user_name}"
--password
"${password}"
echo
"Initial account \"${user_name} - ${firstname} ${lastname} <${mail}>\" was created with the provided password"
fi
user_accounts
=
$(
sacctmgr show assoc where
user
=
${
user_name
}
format
=
Account%100 -P | grep -v Account
)
mkdir -p
${
install_path
}
/site_configs
&&
cd
${
install_path
}
/site_configs
for
_account in
$user_accounts
;
do
if
[
$(
sacctmgr show assoc where
account
=
${
_account
}
format
=
ParentName%100 -P | grep -v
"Par Name"
| grep -c courses
)
-eq 0
]
;
then
_worker_name
=
${
HOSTNAME
}
-
${
_account
}
mkdir -p
${
install_path
}
/site_configs/
${
_worker_name
}
&&
cd
${
install_path
}
/site_configs/
${
_worker_name
}
cat
<< EOF > cluster_info.json
{
"name": "${_worker_name}",
"worker_bin_path": "${install_path}/cryosparc_worker/bin/cryosparcw",
"cache_path": "/tmp/{{ cryosparc_username }}/cryosparc_cache",
"cache_reserve_mb": "10000",
"cache_quota_mb": "null",
"send_cmd_tpl": "{{ command }}",
"qsub_cmd_tpl": "sbatch {{ script_path_abs }}",
"qstat_cmd_tpl": "squeue -j {{ cluster_job_id }}",
"qdel_cmd_tpl": "scancel {{ cluster_job_id }}",
"qinfo_cmd_tpl": "sinfo"
}
EOF
cat
<< EOF > cluster_script.sh
#!/bin/bash -l
#SBATCH --job-name cryosparc_{{ project_uid }}_{{ job_uid }}
#SBATCH -n {{ num_cpu }}
#SBATCH --gres gpu:{{ num_gpu }}
#SBATCH --mem {{ ram_gb|int }}GB
#SBATCH --time 48:0:0
#SBATCH -o {{ job_dir_abs }}/slurm.out
#SBATCH -e {{ job_dir_abs }}/slurm.err
#SBATCH -A ${_account}
module load gcc cuda/11.0.2 python
ln -sf \${TMPDIR} /tmp/${USER}/cryosparc2_cache
{{ run_cmd }}
EOF
${
install_path
}
/cryosparc_master/bin/cryosparcm cluster connect
fi
done
if
[
"x$password"
=
"x"
]
;
then
echo
""
echo
"================================================================================"
echo
"================================================================================"
echo
" No password was given the initial account cannot be created"
echo
" Create one using the following command:"
echo
" ${install_path}/cryosparc_master/bin/cryosparcm.sh createuser --email \"${mail}\" --firstname \"${firstname}\" --lastname \"${lastname}\" --username \"${user_name}\" --password \"<password>\""
echo
"================================================================================"
echo
"================================================================================"
echo
""
fi
${
install_path
}
/cryosparc_master/bin/cryosparcm.sh stop
Event Timeline
Log In to Comment