es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Archivo temporal no se está eliminando

Estoy tratando de crear un archivo temporal en mi pipeline, luego usar ese archivo en otra regla.

Por ejemplo, tengo dos reglas en un archivo .smk:

#Descomprimir archivo Fastq adaptador recortado
rule unzip_fastq:
  input:
    '{sample}.adapterTrim.round2.fastq.gz',
  output:
    temp('{sample}.adapterTrim.round2.fastq')
  conda:
    '../envs/rep_element.yaml'
  shell:
    'gunzip -c {input[0]} > {output[0]}';


#Ejecutar bowtie2 para alinear a los elementos repetidos y analizar la salida
rule parse_bowtie2_output_realtime:
  input:
    '{sample}.adapterTrim.round2.fastq'
  output:
    'rep_element_pipeline/{sample}.fastq.gz.mapped_vs_' + config["ref"]["bt2_index"] + '.sam'
  params:
    bt2=config["ref"]["bt2_index_path"], eid=config["ref"]["enst2id"]
  conda:
    '../envs/rep_element.yaml'
  shell:
    'perl ../scripts/parse_bowtie2_output_realtime_includemultifamily.pl '
    '{input[0]} {params.bt2} {output[0]} {params.eid}'

{sample}.adapterTrim.round2.fastq se usa una vez y debe eliminarse al finalizar. Sin embargo, encuentro que este archivo se carga en Amazon S3, incluso con la adición de temp(). También encuentro que este archivo se elimina localmente, pero aún persiste en S3.

¿Estoy haciendo esto correctamente? {sample}.adapterTrim.round2.fastq no está actualmente escrito en el rule-all del Snakefile.

En definitiva, necesitamos evitar que este archivo se cargue en S3, por lo que sería útil poder especificar que no se cargue este archivo en la regla.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Parece que estás usando correctamente la función temp() para crear un archivo temporal que debería eliminarse al completar la regla. Sin embargo, parece que puede haber un problema con la integración entre Snakemake y Amazon S3, lo que provoca que se cargue el archivo temporal en la nube a pesar de estar marcado como temporal.

    Para evitar que se cargue el archivo temporal en S3, puedes modificar la configuración de s3cmd agregando un archivo de configuración específico de la regla que especifique que no se carguen ciertos archivos. Puedes generar un archivo de configuración con el siguiente contenido:

    [default]
    exclude = <nombre_de_archivo>
    

    donde <nombre_de_archivo> es el nombre del archivo temporal que deseas excluir de la carga. Luego, puedes incluir este archivo de configuración en la definición de tu regla agregando el parámetro s3cmd:

    rule parse_bowtie2_output_realtime:
      input:
        ...
      output:
        ...
      params:
        ...
      s3cmd:
        "/ruta/al/archivo/de/configuración"
    

    Esto debería evitar que el archivo temporal se cargue en S3. También puedes consultar con el proveedor de servicios de S3 si hay otros parámetros o configuraciones que deban ajustarse para manejar correctamente los archivos temporales en Snakemake.

Comments are closed.