User Tools

Site Tools


genetica:pywgs

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
genetica:pywgs [2020/10/10 12:52]
osotolongo [Programatic tree]
genetica:pywgs [2020/10/27 16:12] (current)
osotolongo [Programatic tree]
Line 6: Line 6:
 ===== tl;dr ===== ===== tl;dr =====
 <code> <code>
- ./wgs.py -o <output_dir> [-cut <list.txt>] [-g] <input_dir>+ ./wgs.py -o <output_dir> [-<list.txt>] [-g] -s <input_dir> 
 +</code> 
 +
 +<code> 
 + ./wgs.py --output=<output_dir> [--cut=<list.txt>] [--debug] --source=<input_dir>
 </code> </code>
 Opciones: Opciones:
-  * <input_dir> : (Mandatory) Directorio donde se encuentran todas las secuencias. El script buscara los sujetos y sus archivos dentro de este directorio.+  * -s <input_dir> : (Mandatory) Directorio donde se encuentran todas las secuencias. El script buscara los sujetos y sus archivos dentro de este directorio.
   * -o <output_dir> : (Opcional) Directorio donde se escribiran los resultados. En caso de obviarse se escribiran en el directorio desde el cual se lanza el script.   * -o <output_dir> : (Opcional) Directorio donde se escribiran los resultados. En caso de obviarse se escribiran en el directorio desde el cual se lanza el script.
   * -cut <list.txt> : (Opcional) Dice al script que analice SOLO los sujetos incluidos en el archivo que se suministra <list.txt>. Este archivo debe ser una listasimple de los sujetos a analizar.   * -cut <list.txt> : (Opcional) Dice al script que analice SOLO los sujetos incluidos en el archivo que se suministra <list.txt>. Este archivo debe ser una listasimple de los sujetos a analizar.
   * -g : Indica que no se borren los archivos temporales. Por defecto se borran, a no ser que se ponga este switch.   * -g : Indica que no se borren los archivos temporales. Por defecto se borran, a no ser que se ponga este switch.
  
 +=== Ejemplo ===
 +<code>
 +[osotolongo@brick03 wgs]$ bin/wgs.py -o /home/osotolongo/wgs/temp -c only.txt -s /the_dysk/BGI_exome/F18FTSEUET0180/HUMehbE/
 +Submitted batch job 1708
 +Submitted batch job 1709
 +Submitted batch job 1710
 +Submitted batch job 1711
 +Submitted batch job 1715
 +Submitted batch job 1716
 +Submitted batch job 1717
 +Submitted batch job 1718
 +Submitted batch job 1722
 +Submitted batch job 1723
 +Submitted batch job 1724
 +Submitted batch job 1725
 +Submitted batch job 1729
 +[osotolongo@brick03 wgs]$ squeue
 +             JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON) 
 +              1712      fast sam_seq- osotolon PD       0:00      1 (Dependency) 
 +              1713      fast verify_s osotolon PD       0:00      1 (Dependency) 
 +              1714      fast validate osotolon PD       0:00      1 (Dependency) 
 +              1719      fast sam_seq- osotolon PD       0:00      1 (Dependency) 
 +              1720      fast verify_s osotolon PD       0:00      1 (Dependency) 
 +              1721      fast validate osotolon PD       0:00      1 (Dependency) 
 +              1726      fast sam_seq- osotolon PD       0:00      1 (Dependency) 
 +              1727      fast verify_s osotolon PD       0:00      1 (Dependency) 
 +              1728      fast validate osotolon PD       0:00      1 (Dependency) 
 +              1729      fast  wgs_end osotolon PD       0:00      1 (Dependency) 
 +              1708      fast sam_seq- osotolon  R       0:10      1 brick01 
 +              1709      fast sam_seq- osotolon  R       0:10      1 brick01 
 +              1710      fast sam_seq- osotolon  R       0:10      1 brick01 
 +              1711      fast sam_seq- osotolon  R       0:10      1 brick01 
 +              1715      fast sam_seq- osotolon  R       0:10      1 brick01 
 +              1716      fast sam_seq- osotolon  R       0:07      1 brick01 
 +              1717      fast sam_seq- osotolon  R       0:07      1 brick01 
 +              1718      fast sam_seq- osotolon  R       0:07      1 brick01 
 +              1722      fast sam_seq- osotolon  R       0:07      1 brick02 
 +              1723      fast sam_seq- osotolon  R       0:07      1 brick02 
 +              1724      fast sam_seq- osotolon  R       0:07      1 brick02 
 +              1725      fast sam_seq- osotolon  R       0:07      1 brick02 
  
 +</code>
 ===== Pipeline ===== ===== Pipeline =====
  
Line 138: Line 182:
     ord_content += '#SBATCH --mail-type=FAIL,TIME_LIMIT,STAGE_OUT\n'     ord_content += '#SBATCH --mail-type=FAIL,TIME_LIMIT,STAGE_OUT\n'
     ord_content += '#SBATCH --mail-user='+os.environ.get('USER')+'\n'     ord_content += '#SBATCH --mail-user='+os.environ.get('USER')+'\n'
-    ord_content += bwa+' mem  -t 4 -R "@RG\tID:'+fq_name+'_'+fqid+'\tSM:'+pname+'\tPL:BGI\tPI:380" -M '+ref_dir+'/Homo_sapiens_assembly38 '+src_dir+'/'+pollo+'/'+fq_name+'_'+fqid+'_1.fq.gz '+src_dir+'/'+pollo+'/'+fq_name+'_'+fqid+'_2.fq.gz > '+tmpdir+'/'+pname+_+str(i)+'.sam\n'+    ord_content += bwa+' mem  -t 4 -R "@RG\\tID:'+fq_name+'_'+fqid+'\\tSM:'+pname+'\\tPL:BGI\\tPI:380" -M '+ref_dir+'/Homo_sapiens_assembly38 '+src_dir+'/'+pollo+'/'+fq_name+'_'+fqid+'_1.fq.gz '+src_dir+'/'+pollo+'/'+fq_name+'_'+fqid+'_2.fq.gz > '+tmpdir+'/'+pname+'_'+str(i)+'.sam\n'
     osf = open(orderfile, 'w')     osf = open(orderfile, 'w')
     osf.write(ord_content)     osf.write(ord_content)
Line 263: Line 307:
 import getopt import getopt
 import re import re
 +import subprocess
  
 """ """
Line 349: Line 394:
     ord_content += '#SBATCH --mail-type=FAIL,TIME_LIMIT,STAGE_OUT\n'     ord_content += '#SBATCH --mail-type=FAIL,TIME_LIMIT,STAGE_OUT\n'
     ord_content += '#SBATCH --mail-user='+os.environ.get('USER')+'\n'     ord_content += '#SBATCH --mail-user='+os.environ.get('USER')+'\n'
-    ord_content += bwa+' mem  -t 4 -R "@RG\tID:'+fq_name+'_'+fqid+'\tSM:'+pname+'\tPL:BGI\tPI:380" -M '+ref_dir+'/Homo_sapiens_assembly38 '+src_dir+'/'+pollo+'/'+fq_name+'_'+fqid+'_1.fq.gz '+src_dir+'/'+pollo+'/'+fq_name+'_'+fqid+'_2.fq.gz > '+tmpdir+'/'+pname+_+str(i)+'.sam\n'+    ord_content += bwa+' mem  -t 4 -R "@RG\\tID:'+fq_name+'_'+fqid+'\\tSM:'+pname+'\\tPL:BGI\\tPI:380" -M '+ref_dir+'/Homo_sapiens_assembly38 '+src_dir+'/'+pollo+'/'+fq_name+'_'+fqid+'_1.fq.gz '+src_dir+'/'+pollo+'/'+fq_name+'_'+fqid+'_2.fq.gz > '+tmpdir+'/'+pname+'_'+str(i)+'.sam\n'
     osf = open(orderfile, 'w')     osf = open(orderfile, 'w')
     osf.write(ord_content)     osf.write(ord_content)
Line 419: Line 464:
 ord_content += '#SBATCH --mail-type=END\n' ord_content += '#SBATCH --mail-type=END\n'
 ord_content += '#SBATCH --mail-user='+os.environ.get('USER')+'\n' ord_content += '#SBATCH --mail-user='+os.environ.get('USER')+'\n'
-if(debug):+if not debug:
   ord_content += 'rm -rf '+wdir+'/*/tmp\n'   ord_content += 'rm -rf '+wdir+'/*/tmp\n'
 else: else:
Line 433: Line 478:
 {{:genetica:its_fucking_cool.gif?300| {{:genetica:its_fucking_cool.gif?300|
 8-)}} 8-)}}
 +
 +----
 +
 +**Nota:** Aqui hemos usado la funcion //subprocess.getoutput()// para capturar el jobid del proceso que se ejecuta. Esto es dando por sentado que vamos a usar **Python 3**. Si vamos a usar **Python 2.7** o algo asi, en lugar de,
 +
 +<code python>
 +  jobid = subprocess.getoutput('sbatch --parsable --dependency=afterok:'+str(ujobid)+' '+orderfile)
 +</code>
 +
 +ha de hacerse algo asi,
 +
 +<code python>
 +  order = ['sbatch --parsable --dependency=afterok:'+str(ujobid)+' '+orderfile]
 +  jobid = int(subprocess.check_output(order, shell=True))
 +</code>
 +
 +----
 ===== Ejecucion ===== ===== Ejecucion =====
  
Line 438: Line 500:
  
 <code> <code>
-$ ./wgs.pl -o /the_dysk/BGI_exome/F18FTSEUET0180/WGS /the_dysk/BGI_exome/F18FTSEUET0180/HUMehbE/+$ ./wgs.py -o /the_dysk/BGI_exome/F18FTSEUET0180/WGS -s /the_dysk/BGI_exome/F18FTSEUET0180/HUMehbE/
 </code> </code>
  
Line 482: Line 544:
 Esta estructura permitiria ejecutar,  Esta estructura permitiria ejecutar, 
 <code> <code>
-$ ./wgs.pl -o /the_dysk/BGI_exome/F18FTSEUET0180/HUMehbE /the_dysk/BGI_exome/F18FTSEUET0180/HUMehbE+$ ./wgs.pl -o /the_dysk/BGI_exome/F18FTSEUET0180/HUMehbE -s /the_dysk/BGI_exome/F18FTSEUET0180/HUMehbE
 </code> </code>
  y **en caso de no tener problemas con los permisos**, los resultados quedarian en un directorio dentro del mismo sujeto de proyecto. No se ha hecho asi por defecto previendo precisamente los problemas de permisos.  y **en caso de no tener problemas con los permisos**, los resultados quedarian en un directorio dentro del mismo sujeto de proyecto. No se ha hecho asi por defecto previendo precisamente los problemas de permisos.
Line 610: Line 672:
  
 <code> <code>
-$ ./wgs.pl -cut /nas/osotolongo/wgs/only.txt -o /the_dysk/BGI_exome/F18FTSEUET0180/WGS /the_dysk/BGI_exome/F18FTSEUET0180/HUMehbE+$ ./wgs.py -/nas/osotolongo/wgs/only.txt -o /the_dysk/BGI_exome/F18FTSEUET0180/WGS -s  /the_dysk/BGI_exome/F18FTSEUET0180/HUMehbE
 </code> </code>
  
Line 620: Line 682:
  
 <code> <code>
-$ ./wgs.pl -g -o /the_dysk/BGI_exome/F18FTSEUET0180/WGS /the_dysk/BGI_exome/F18FTSEUET0180/HUMehbE+$ ./wgs.py -g -o /the_dysk/BGI_exome/F18FTSEUET0180/WGS -s /the_dysk/BGI_exome/F18FTSEUET0180/HUMehbE
 </code> </code>
  
 deja un subdirectorio //tmp// por cada sujeto con sus archivos temporales correspondientes. Ejemplo para seq-5, estos archivos estarian en // /the_dysk/BGI_exome/F18FTSEUET0180/WGS/seq-5/tmp/ //. deja un subdirectorio //tmp// por cada sujeto con sus archivos temporales correspondientes. Ejemplo para seq-5, estos archivos estarian en // /the_dysk/BGI_exome/F18FTSEUET0180/WGS/seq-5/tmp/ //.
 +
 +===== Usando containers =====
 +
 +He logrado crear un container con todas las herramientas del pipeline. Tal y como esta construido el script para que funcione bastaria con cambiar los paths del sistema para incluir el container. Esto es, arriba del todo cambiar las lineas,
 +
 +<code python>
 +ref_dir = '/the_dysk/BGI_exome/reference'
 +container = 'singularity run --cleanenv -B /nas:/nas -B /the_dysk:/the_dysk /nas/osotolongo/wgs/bin/wgs.sif'
 +bwa = container+' bwa'
 +picard = container+' java -Djava.io.tmpdir=/nas/'+os.environ.get('USER')+'/tmp/ -Xmx8g -jar /opt/picard.jar'
 +samtools = container+' samtools'
 +verifybamib = container+' verifyBamID'
 +gatk3 = container+' gatk3'
 +gatk4 = container+' gatk --java-options "-DGATK_STACKTRACE_ON_USER_EXCEPTION=true -Xmx16G"'
 +gatk4_l = container+' gatk --java-options "-DGATK_STACKTRACE_ON_USER_EXCEPTION=true -Xmx16G -XX:+UseConcMarkSweepGC"'
 +</code>
 +
 +en principio todo los demas es igual,
 +
 +<code>
 +[osotolongo@brick03 wgs]$ bin/cwgs.py -o /home/osotolongo/wgs/temp -c only.txt -s /the_dysk/BGI_exome/F18FTSEUET0180/HUMehbE/
 +Submitted batch job 76
 +Submitted batch job 77
 +Submitted batch job 78
 +Submitted batch job 79
 +Submitted batch job 83
 +Submitted batch job 84
 +Submitted batch job 85
 +Submitted batch job 86
 +Submitted batch job 90
 +Submitted batch job 91
 +Submitted batch job 92
 +Submitted batch job 93
 +Submitted batch job 97
 +[osotolongo@brick03 wgs]$ squeue
 +             JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON) 
 +                80      fast sam_seq- osotolon PD       0:00      1 (Dependency) 
 +                81      fast verify_s osotolon PD       0:00      1 (Dependency) 
 +                82      fast validate osotolon PD       0:00      1 (Dependency) 
 +                87      fast sam_seq- osotolon PD       0:00      1 (Dependency) 
 +                88      fast verify_s osotolon PD       0:00      1 (Dependency) 
 +                89      fast validate osotolon PD       0:00      1 (Dependency) 
 +                94      fast sam_seq- osotolon PD       0:00      1 (Dependency) 
 +                95      fast verify_s osotolon PD       0:00      1 (Dependency) 
 +                96      fast validate osotolon PD       0:00      1 (Dependency) 
 +                97      fast  wgs_end osotolon PD       0:00      1 (Dependency) 
 +                76      fast sam_seq- osotolon  R       0:08      1 brick01 
 +                77      fast sam_seq- osotolon  R       0:08      1 brick01 
 +                78      fast sam_seq- osotolon  R       0:08      1 brick01 
 +                79      fast sam_seq- osotolon  R       0:07      1 brick01 
 +                83      fast sam_seq- osotolon  R       0:05      1 brick01 
 +                84      fast sam_seq- osotolon  R       0:05      1 brick01 
 +                85      fast sam_seq- osotolon  R       0:05      1 brick01 
 +                86      fast sam_seq- osotolon  R       0:05      1 brick01 
 +                90      fast sam_seq- osotolon  R       0:05      1 brick02 
 +                91      fast sam_seq- osotolon  R       0:05      1 brick02 
 +                92      fast sam_seq- osotolon  R       0:05      1 brick02 
 +                93      fast sam_seq- osotolon  R       0:05      1 brick02 
 +</code>
 +
genetica/pywgs.1602334349.txt.gz · Last modified: 2020/10/10 12:52 by osotolongo