Probleme d'exécution workflow snakemake

Bonsoir,

J'ai un petit soucis j'exécute un de mes workflows il a l'air de lancer des les jobs mais quand je fais sur une autre fenêtre squeue -u lkhamvongsacharbonnier je ne vois aucun job c'est comme si avec mon workflow on mouline dans de l'air.

Je vous mets un exemple de ce que j'ai en stdout de snakemake (enfin une partie).

[Sun Feb 9 22:07:56 2020]
rule bam_index:
input: data/MCF-7/All/ENCFF595BTS.INPUT.MCF-7.2/ENCFF595BTS.INPUT.MCF-7.2.bam
output: data/MCF-7/All/ENCFF595BTS.INPUT.MCF-7.2/ENCFF595BTS.INPUT.MCF-7.2.bam.bai
log: data/MCF-7/All/ENCFF595BTS.INPUT.MCF-7.2/ENCFF595BTS.INPUT.MCF-7.2_bai.log
jobid: 168
benchmark: data/MCF-7/All/ENCFF595BTS.INPUT.MCF-7.2/ENCFF595BTS.INPUT.MCF-7.2_bai.txt
reason: Missing output files: data/MCF-7/All/ENCFF595BTS.INPUT.MCF-7.2/ENCFF595BTS.INPUT.MCF-7.2.bam.bai
wildcards: reads=data/MCF-7/All/ENCFF595BTS.INPUT.MCF-7.2/ENCFF595BTS.INPUT.MCF-7.2

(samtools index -b data/MCF-7/All/ENCFF595BTS.INPUT.MCF-7.2/ENCFF595BTS.INPUT.MCF-7.2.bam data/MCF-7/All/ENCFF595BTS.INPUT.MCF-7.2/ENCFF595BTS.INPUT.MCF-7.2.bam.bai) &> data/MCF-7/All/ENCFF595BTS.INPUT.MCF-7.2/ENCFF595BTS.INPUT.MCF-7.2_bai.log
Submitted job 168 with external jobid 'Submitted batch job 4751918'.

Peut qu'avec le numéro du job vous pourrez me guider.

Merci d'avance,

A plus dans le :bus:

PS je viens modifié ce post car je me rends compte que je n'ai peut être pas donner assez d'info.

Voici la ligne de commande que j'utilise pour lancer mon workflow:

snakemake -s scripts/create_windows_interest_and_count.smk --configfile metadata/MCF-7/config_chip_MCF-7_CWIAC_ifb-core.yaml --cluster-config metadata/MCF-7/cluster.yaml --cluster "sbatch -p {cluster.partition} --output {cluster.stdout} --error {cluster.stderr} --mem-per-cpu {cluster.mem-per-cpu}" --use-conda -pkr -j 50

J'utilise un yaml tout simple pour passer les arguments sbatch.

ping dear @team.workflow

Dans snakemake on peut spécifier des paramètres d'exécution pour le job scheduler. Lucie, pourrais-tu paramétrer slurm pour envoyer les messages d'output et d'erreur vers deux fichiers séparés [prefix]_out.txt et [prefix]_err.txt ?

Ensuite ce sera dans ces fichiers-là qu'il faudra vérifier ce que fait le workflow.

Par ailleurs tu pourrais utiliser squeue en précisant le job qui est en train de tourner (snakemake t'affiche le numéro, dans ton exemple c'est 4751918) plutôt que d'utiliser l'option -u. Ca te permettra de savoir si ce job-là tourne encore ou s'il a réussi ou échoué.

Pour les stderr et sdtout slurm c'est fait ils ne sont pas créer.

Je viens de relancer le workflow pour 1 job.

`Building DAG of jobs...
Using shell: /usr/bin/bash
Provided cluster nodes: 1
Job counts:
count jobs
1 all
353 bam_index
354

[Mon Feb 10 10:01:32 2020]
rule bam_index:
input: data/MCF-7/All/SRR5676509.ESR1.MCF-7_vehicle_60min/SRR5676509.ESR1.MCF-7_vehicle_60min.bam
output: data/MCF-7/All/SRR5676509.ESR1.MCF-7_vehicle_60min/SRR5676509.ESR1.MCF-7_vehicle_60min.bam.bai
log: data/MCF-7/All/SRR5676509.ESR1.MCF-7_vehicle_60min/SRR5676509.ESR1.MCF-7_vehicle_60min_bai.log
jobid: 352
benchmark: data/MCF-7/All/SRR5676509.ESR1.MCF-7_vehicle_60min/SRR5676509.ESR1.MCF-7_vehicle_60min_bai.txt
reason: Missing output files: data/MCF-7/All/SRR5676509.ESR1.MCF-7_vehicle_60min/SRR5676509.ESR1.MCF-7_vehicle_60min.bam.bai
wildcards: reads=data/MCF-7/All/SRR5676509.ESR1.MCF-7_vehicle_60min/SRR5676509.ESR1.MCF-7_vehicle_60min

(samtools index -b data/MCF-7/All/SRR5676509.ESR1.MCF-7_vehicle_60min/SRR5676509.ESR1.MCF-7_vehicle_60min.bam data/MCF-7/All/SRR5676509.ESR1.MCF-7_vehicle_60min/SRR5676509.ESR1.MCF-7_vehicle_60min.bam.bai) &> data/MCF-7/All/SRR5676509.ESR1.MCF-7_vehicle_60min/SRR5676509.ESR1.MCF-7_vehicle_60min_bai.log
Submitted job 352 with external jobid 'Submitted batch job 4787272'.

`
squeue avec mon username ou job id voici ce que j'ai :

(base) [lkhamvongsacharbonnier@clust-slurm-client Remap]$ squeue -u lkhamvongsacharbonnier JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON) (base) [lkhamvongsacharbonnier@clust-slurm-client Remap]$ squeue -j 4787272 JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)

D'après la base d'accounting de slurm, tes jobs (4787272) ont planté instantanément. C'est pour ça que tu ne les voies pas dans squeue qui ne présente que les jobs en attente ou en cours d'execution.

Pour consulter la base d'accounting, tu peux utiliser la commande sacct. Par exemple :

sacct --format=JobID,JobName,User%15,Submit,ReqCPUS,ReqMem,MaxRSS,Start,End,NodeList%40,CPUTime,State

Pour voir un job en particulier, tu peux utiliser l'option -j <id du job>.

Je te recommande également d'utiliser l'option --drmaa deSnakemake plutôt que --cluster. Snakemake aura ainsi un bien meilleur contrôle sur tes jobs.

Est-ce que tu as pu trouver la sortie d'erreur correspondant au job 4787272 ?

1 « J'aime »

Merci Julien.

Pour l'erreur du job 4787272 non il y a rien.

Du coup je viens de me mettre a --drmaa et j'arrive à lancer un job avec des option donner directement de la manière suivante.

snakemake -s scripts/create_windows_interest_and_count.smk --configfile metadata/MCF-7/config_chip_MCF-7_CWIAC_ifb-core.yaml --drmaa " -p fast --mem-per-cpu=60000" --use-conda -pkr -j 1

Donc le problème viens de ma manière de lancer les jobs "avant".

Merci à tous !

A plus dans le :bus:

1 « J'aime »

Salut Lucie,

La différence entre tes deux lignes de commande (en plus de --drmaa) est que tu ne précises plus les chemins -o et -e pour les log SLURM.

tu pourrais faire un head de ton cluster-config: metadata/MCF-7/cluster.yaml

Une piste au pif, est ce que le(s) dossier(s) de ces log existe(nt) ?
De mon expérience de SLURM, à chaque fois que mes jobs ont planté sans même les avoir vu en squeue et sans avoir aucune trace ensuite c'est parce que je demandais à écrire des logs dans un dossier qui n'existait pas.

a+

Salut Marina,

Oui c'était exactement ça pour les stderr et stdout de slurm.

Merci,

A+ dans le :bus: