damian.py

gene_x 0 like s 628 view s

Tags: python, software

  1. #!/usr/bin/env python3
  2. import os
  3. import sys
  4. import logging
  5. import tempfile
  6. import shutil
  7. import datetime
  8. from pathlib import Path
  9. import psycopg2
  10. from config import *
  11. from lib.options import Options
  12. from lib.wrap.trimmomatic import Trimmomatic
  13. from lib.wrap.bowtie2 import Bowtie2
  14. from lib.wrap.hmmsearch import HMMsearch
  15. from lib.wrap.assembler import Assembler
  16. from lib.wrap.trinity import Trinity
  17. from lib.wrap.spades import SPAdes
  18. from lib.wrap.idba import IDBA
  19. from lib.wrap.no_assembler import No_Assembler
  20. from lib.wrap.blast import Blast
  21. from lib.wrap.blastn import Blastn
  22. from lib.wrap.blastp import Blastp
  23. from lib.usage import Usage
  24. from lib.prepare_run import PrepareRun
  25. from lib.contig_ops import ContigOps
  26. from lib.ranking_ops import RankingOps
  27. from lib.task_manager import TaskManager
  28. from lib.taxonomy_ops import TaxonomyOps
  29. from lib.check_dependencies import CheckDependencies
  30. START_TIME = datetime.datetime.now()
  31. options = Options.parse(sys.argv[1:])
  32. logger = logging.getLogger()
  33. logger.setLevel(logging.DEBUG)
  34. handler = logging.StreamHandler(sys.stderr)
  35. logger.addHandler(handler)
  36. ContigOps = ContigOps()
  37. RankingOps = RankingOps()
  38. TaskManager = TaskManager()
  39. checkpoint = 0
  40. trimmomatic = Trimmomatic(TRIMMOMATIC_PATH, TRIMMOMATIC_PARAMS, TRIMMOMATIC_PE_PARAMS,
  41. TRIMMOMATIC_SE_PARAMS, options.threads, logger)
  42. bowtie2 = Bowtie2(BOWTIE2_PATH, BOWTIE2_PARAMS, options.threads, logger)
  43. assembler = None
  44. if options.no_assembly:
  45. assembler = No_Assembler(None, None, options.threads, logger)
  46. else:
  47. if ASSEMBLER == "trinity":
  48. assembler = Trinity(TRINITY_PATH, TRINITY_PARAMS, options.threads, logger)
  49. elif ASSEMBLER == "spades":
  50. assembler = SPAdes(SPADES_PATH, SPADES_PARAMS, options.threads, logger)
  51. elif ASSEMBLER == "idba":
  52. assembler = IDBA_ud(IDBA_PATH, IDBA_PARAMS, options.threads, logger)
  53. hmmsearch = HMMsearch(HMMSEARCH_PATH, f"{HMMSEARCH_PARAMS} --domE {HMMSEARCH_EVALUE}",
  54. PFAM_PATH, options.threads, logger)
  55. blastn = Blastn(BLASTN_PATH, BLASTN_PARAMS, BLASTN_NT_PATH, options.threads, logger)
  56. blastp = Blastp(BLASTP_PATH, BLASTP_PARAMS, BLASTP_NR_PATH, options.threads, logger)
  57. def finish(failure_msg = nil)
  58. if @options.clean
  59. begin
  60. FileUtils.rm_rf(@options.derived[:sample_folder])
  61. rescue => e
  62. @logger.error "#{e}\nFailed to remove folder '#{@options.derived[:sample_folder]}'. Please remove it manually."
  63. end
  64. end
  65. pp @options.derived if @options.debug
  66. if failure_msg
  67. checkpoint(failure_msg, 20)
  68. exit(false)
  69. else
  70. checkpoint('Analysis Complete')
  71. cmd = "INSERT INTO analysis (finished) VALUES ('now')"
  72. @logger.debug(cmd)
  73. @conn.exec(cmd)
  74. exit(true)
  75. end
  76. end
  77. # ... (other parts of the script) ...
  78. checkpoint('Generating summary report')
  79. require_relative File.join('lib', 'wrap', 'report')
  80. report = Report.new(@options, @logger)
  81. report.create
  82. # Upload results to the user-specified storage (e.g., AWS S3, Google Cloud Storage)
  83. checkpoint('Uploading results')
  84. if @options.upload_results
  85. require_relative File.join('lib', 'wrap', 'upload_results')
  86. uploader = UploadResults.new(@options, @logger)
  87. uploader.upload
  88. end
  89. finish()

like unlike

点赞本文的读者

还没有人对此文章表态


本文有评论

没有评论

看文章,发评论,不要沉默


© 2023 XGenes.com Impressum