sirius-ms / sirius

SIRIUS is a software for discovering a landscape of de-novo identification of metabolites using tandem mass spectrometry. This repository contains the code of the SIRIUS Software (GUI and CLI)
GNU Affero General Public License v3.0
78 stars 17 forks source link

Trouble with login: Command line doesn't log in, Interactive mode expires #152

Closed bsedio closed 2 months ago

bsedio commented 2 months ago

Hello Böcker Lab/Sirius Developers,

First, thank you for all of your amazing work. You have revolutionized metabolomics.

I am trying to run Sirius on the Frontera supercomputer at the Texas Advanced Computing Center (TACC), but the primary obstacle seems to be the login. We have tried to include the login in command line and have also tried to login interactively prior to launching jobs.

Command line: We have included the following code without a "slurm" file that launches a job, but it doesn't seem to succeed in logging us in:

PASSENV="password"

USERENV="sediob@utexas.edu"

sirius login --password-env=${PASSENV} --user-env=${USERENV}

We have also used the interactive option as follows:

Steps to log in to sirius:

1) Start an interactive job on a compute node:

idev

2) after the job starts, type:

module load tacc-apptainer

apptainer exec docker://wjallen/sirius:5.7.3 sirius login -u sediob@utexas.edu -p

3) It will prompt you to enter a password, so type:

password

4) Confirm that you successfully logged in using this command

apptainer exec docker://wjallen/sirius:5.7.3 sirius login --show

#

5) Launch your job using

#

sbatch siriusjob.slurm

# #

This method succeeds in logging us in, and saves a login token on Frontera.. But the token expires is about 27 hours, so if the job waits in the queue for longer than that, Sirius is no longer logged in when the job begins to run.

Ideally, it would be best if the command-line login option would work, as the login would occur as part of the job.

Below is an example slurm file (which assumes the user has logged in interactively):

!/bin/bash

SBATCH -J launcher-example # job name

SBATCH -o output.o%j # output file name (%j expands to SLURM jobID)

SBATCH -e output.e%j # error file name (%j expands to SLURM jobID)

SBATCH -N 1 # number of nodes requested

SBATCH -n 10 # total number of tasks to run in parallel

SBATCH -p development # queue (partition)

SBATCH -t 00:10:00 # run time (hh:mm:ss)

SBATCH -A DEB22002 # Allocation name to charge job against

SBATCH --mail-type=all # Send email at begin and end of job

SBATCH --mail-user=sediob@utexas.edu

This line puts this version of sirius in your path

export PATH=/work2/06619/sediob/sirius-5.7.3/bin:$PATH

module load tacc-apptainer SIRIUS_CTR="apptainer exec docker://wjallen/sirius:5.7.3"

Copy inputs to scratch

RUNDIR="$SCRATCH/SiriusInputsTemp/" mkdir -p ${RUNDIR} cp -r inputs ${RUNDIR}

Write the list of tasks to run into a file

rm -f list_of_tasks for FILENAME in $( ls inputs ) do FILEPREFIX=$(basename $FILENAME .mgf) echo "$SIRIUS_CTR sirius --cores=8 --input=${RUNDIR}/inputs/${FILENAME} --output=${RUNDIR}/${FILEPREFIX} config --IsotopeSettings.filter=true --FormulaSearchDB=none --Timeout.secondsPerTree=0 --FormulaSettings.enforced=HCNOPS --Timeout.secondsPerInstance=0 --AdductSettings.detectable=[[M+K]+,[M+H3N+H]+,[M+Na]+,[M-H4O2+H]+,[M-H2O+H]+,[M+H]+] --UseHeuristic.mzToUseHeuristicOnly=650 --AlgorithmProfile=orbitrap --IsotopeMs2Settings=IGNORE --MS2MassDeviation.allowedMassDeviation=5.0ppm --NumberOfCandidatesPerIon=1 --UseHeuristic.mzToUseHeuristic=300 --FormulaSettings.detectable=B,Cl,Br,Se --NumberOfCandidates=10 --ZodiacNumberOfConsideredCandidatesAt300Mz=10 --ZodiacRunInTwoSteps=true --ZodiacEdgeFilterThresholds.minLocalConnections=10 --ZodiacEdgeFilterThresholds.thresholdFilter=0.95 --ZodiacEpochs.burnInPeriod=2000 --ZodiacEpochs.numberOfMarkovChains=10 --ZodiacNumberOfConsideredCandidatesAt800Mz=50 --ZodiacEpochs.iterations=20000 --AdductSettings.enforced=, --AdductSettings.fallback=[[M+K]+,[M+Na]+,[M+H]+] --FormulaResultThreshold=true --InjectElGordoCompounds=true --StructureSearchDB=BIO,GNPS,KEGG,KEGGMINE,UNDP,PLANTCYC,PUBCHEM,PUBMED --RecomputeResults=false formula -p orbitrap fingerprint structure compound-classes write-summaries --output ${RUNDIR}/${FILEPREFIX}" >> list_of_tasks done

These lines configure and run launcher

module load launcher export LAUNCHER_JOB_FILE=list_of_tasks ${LAUNCHER_DIR}/paramrun

Copy results back to work

rsync -av ${RUNDIR} ./ --exclude inputs

Thank you for any help regarding our issues logging in, Brian

mfleisch commented 2 months ago

Hey, to ensure that the pw and username do not end up in some logfile SIRIUS is expanding the environment variable by itself. so instead of expanding the variable within you shell script and providing the content of the variable to SIRIUS, just provide the environment variables name to SIRIUS.

So, instead of sirius login --password-env=${PASSENV} --user-env=${USERENV} you have to use sirius login --password-env=PASSENV --user-env=USERENV