Conseils sur les déclarations de variables sur le cluster

Bonjour à tous,

Je viens poser une question un peu bête, mais qui me bloque sur mon script, qui ne devrait pas être trop compliqué pour beaucoup. Mais je suis encore très novice dans l'utilisation du cluster (étudiante en Master), et il y a très sûrement quelque chose que je fais mal.
Je programme en bash, pour l'utilisation d'outils tels que les bedtools et samtools.
Pour mon programme, j'ai la nécessité d'utiliser un certain nombre de variable, y compris des variables de chemin, et là se trouve mon problème, lors de ma déclaration de variable
PROJECT_PATH = "/shared/projects/........." et cela sur toutes mes variables. (variables appelée dans plusieurs fonction à la suite. Elles ressortent toutes comme commande introuvable.
Je me permet donc de revenir vers la communauté afin d'avoir quelques conseils de votre part.

Merci par avance. :slight_smile:

Bonjour,

J'utilise comme path "/shared/mfs/data/projects/". Et je n'ai pas rencontré de soucis de ton type à présent. Peut être que ceci te débloquera. Pour ce qui est de l'explication, je ne sais pas qu'elle différence il y entre ces deux chemins qui mène au projet. Mais si quelqu'un sait suis preneuse de dormir moins bête.

J'espère que ça te débloquera,
Bonne journée,
A + dans le :bus:

LK

Merci beaucoup de ta réponse.
Je viens de tester ta solution, exactement le même soucis se pose !
Mais je te remercie beaucoup :blush:

++ :slight_smile:

Bonjour,

C'est possible d'avoir le détail de la commande lancé et du message d'erreur ?

/shared/projects est en fait un lien (un raccourci) vers /shared/mfs/data/projects

(Donc il n'y a pas de difference entre les deux.)

1 « J'aime »

Bonjour @Yuky,

Pour bien comprendre le problème, l'idéal serait d'avoir le script en question.

Quelques pistes de réflexions:

  • Il faut faire attention a ne pas écraser PATH sous peine d'avoir "commande introuvable" pour toutes les commandes (si nécessaire, il faut ajouter le chemin par exemple: export PATH=/shared/projects/dir:$PATH)
  • Il faut faire attention à la portée des variables (un variable déclarée dans une fonction n'existe pas forcément dans une autre fonction).

Désolé si cela vous paraît évident mais si possible il nous faudrait le script pour aller plus loin.

Comme je dis, je suis encore novice, donc il peut aussi y avoir des soucis avec mon script. Avec le confinement, encore plus compliqué pour être encadrée durant mon stage de Master. Merci du temps que vous prenez. Et désolée du dérangement

#!/bin/bash

#module deeptools

module add deeptools/3.2.0

#Variables PATH

PROJECT_PATH = "/shared/projects/....."
DATA_PATH = "${PROJECT_PATH}/data"
RESULT_PATH = "${PROJECT_PATH}/resultats/"
MNASE_SYNCHRO_3001_PATH = "MNase_30.01"
DEEPTOOLS_PATH = "deeptools"
BED_FILE = "${DATA_PATH}/genome/ori/fileBED.bed"
fichier = (FICHIER1 FICHIER2 FICHIER3 FICHIER4)

function plot {
local base_nom_fichier_bam = $1
bamCoverage $base_nom_fichier_bam
computeMatrix $base_nom_fichier_bam
plotProfile $base_nom_fichier_bam
}

#function plot {

bamCoverage

computeMatrice

plotProfile

}

#fonction Couverture

function bamCoverage {
local BAM_FILES = $1

echo "${BAM_FILES}"

bamCoverage -p8 -b \
${RESULT_PATH}/${MNASE_SYNCHRO_3001_PATH}/GW/${BAM_FILES}.sort.bam \
-o\ ${RESULT_PATH}/${MNASE_SYNCHRO_3001_PATH}/${DEEPTOOLS_PATH}/${BAM_FILES}_coverage.bw \
2> ${RESULT_PATH}/${MNASE_SYNCHRO_3001_PATH}/GW/${BAM_FILES}.bw.out
}

#fonction Matrice

function computeMatrice {
local BAM_FILES = $1

computeMatrix reference-point \
--referencePoint center -p8 \
-b 1000 -a 1000  \
-R {$BED_FILES} \
-S ${RESULT_PATH}/${MNASE_SYNCHRO_3001_PATH}/${DEEPTOOLS_PATH}/${BAM_FILES}coverage.bw \
-o ${RESULT_PATH}/${MNASE_SYNCHRO_3001_PATH}/${DEEPTOOLS_PATH}/${BAM_FILES}coverage.mat.gz \
2> ${RESULT_PATH}/${MNASE_SYNCHRO_3001_PATH}/GW/${BAM_FILES}.gz.out;
}

#fonction Plot

function plotProfile {
local BAM_FILES = $1

plotProfile -m \
${RESULT_PATH}/${MNASE_SYNCHRO_3001_PATH}/${DEEPTOOLS_PATH}/${BAM_FILES}coverage.mat.gz \
-out ${RESULT_PATH}/${MNASE_SYNCHRO_3001_PATH}/${DEEPTOOLS_PATH}/${BAM_FILES}-1kb.png \
--plotType=lines --perGroup --colors red --plotTitle "Couverture ${BAM_FILES}" \
2> ${RESULT_PATH}/${MNASE_SYNCHRO_3001_PATH}/GW/${BAM_FILES}-1kb.png.out;
}

for fichier in "${fichier[@]}"
do
plot $fichier
done

Et le fichier d'erreur :

/var/spool/slurm/slurmd/job6434473/slurm_script: ligne14: PROJECT_PATH : commande introuvable
/var/spool/slurm/slurmd/job6434473/slurm_script: ligne15: DATA_PATH : commande introuvable
/var/spool/slurm/slurmd/job6434473/slurm_script: ligne16: RESULT_PATH : commande introuvable
/var/spool/slurm/slurmd/job6434473/slurm_script: ligne17: MNASE_ASYNCHRO_PATH : commande introuvable
/var/spool/slurm/slurmd/job6434473/slurm_script: ligne18: DEEPTOOLS_PATH : commande introuvable
/var/spool/slurm/slurmd/job6434473/slurm_script: ligne21: BED_FILE : commande introuvable
/var/spool/slurm/slurmd/job6434473/slurm_script: ligne22: Erreur de syntaxe près du symbole inattendu « ( »
/var/spool/slurm/slurmd/job6434473/slurm_script: ligne22: `fichier = (FICHIER1 FICHIER2 FICHIER3 FICHIER4)

Merci pour tout

Vous pouvez commencer par enlever tout les espaces entre autour de vos =

Ca c'est bon
MA_VAR="toto"

Ca c'est pas bon:
MA_VAR = "toto"

Merci beaucoup, il se lance déjà mieux :smile: