lstosa 0.11.1__tar.gz → 0.11.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. {lstosa-0.11.1 → lstosa-0.11.3}/PKG-INFO +1 -1
  2. lstosa-0.11.3/crontab/crontab.txt +83 -0
  3. {lstosa-0.11.1 → lstosa-0.11.3}/src/lstosa.egg-info/PKG-INFO +1 -1
  4. {lstosa-0.11.1 → lstosa-0.11.3}/src/lstosa.egg-info/SOURCES.txt +1 -0
  5. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/_version.py +2 -2
  6. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/job.py +4 -1
  7. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/scripts/autocloser.py +3 -3
  8. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/scripts/datasequence.py +1 -1
  9. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/scripts/reprocessing.py +41 -4
  10. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/scripts/sequencer_catB_tailcuts.py +16 -3
  11. {lstosa-0.11.1 → lstosa-0.11.3}/.coveragerc +0 -0
  12. {lstosa-0.11.1 → lstosa-0.11.3}/.gitignore +0 -0
  13. {lstosa-0.11.1 → lstosa-0.11.3}/.mailmap +0 -0
  14. {lstosa-0.11.1 → lstosa-0.11.3}/.pre-commit-config.yaml +0 -0
  15. {lstosa-0.11.1 → lstosa-0.11.3}/.readthedocs.yml +0 -0
  16. {lstosa-0.11.1 → lstosa-0.11.3}/LICENSE +0 -0
  17. {lstosa-0.11.1 → lstosa-0.11.3}/MANIFEST.in +0 -0
  18. {lstosa-0.11.1 → lstosa-0.11.3}/README.md +0 -0
  19. {lstosa-0.11.1 → lstosa-0.11.3}/codemeta.json +0 -0
  20. /lstosa-0.11.1/crontab/crontab.txt → /lstosa-0.11.3/crontab/crontab-orig.txt +0 -0
  21. {lstosa-0.11.1 → lstosa-0.11.3}/dev/mysql.py +0 -0
  22. {lstosa-0.11.1 → lstosa-0.11.3}/docs/Makefile +0 -0
  23. {lstosa-0.11.1 → lstosa-0.11.3}/docs/_static/logo_lstosa.png +0 -0
  24. {lstosa-0.11.1 → lstosa-0.11.3}/docs/authors.rst +0 -0
  25. {lstosa-0.11.1 → lstosa-0.11.3}/docs/components/index.rst +0 -0
  26. {lstosa-0.11.1 → lstosa-0.11.3}/docs/conf.py +0 -0
  27. {lstosa-0.11.1 → lstosa-0.11.3}/docs/configuration.rst +0 -0
  28. {lstosa-0.11.1 → lstosa-0.11.3}/docs/contribute.rst +0 -0
  29. {lstosa-0.11.1 → lstosa-0.11.3}/docs/documents/index.rst +0 -0
  30. {lstosa-0.11.1 → lstosa-0.11.3}/docs/howto/index.rst +0 -0
  31. {lstosa-0.11.1 → lstosa-0.11.3}/docs/index.rst +0 -0
  32. {lstosa-0.11.1 → lstosa-0.11.3}/docs/introduction/index.rst +0 -0
  33. {lstosa-0.11.1 → lstosa-0.11.3}/docs/introduction/reduction_steps_lstchain.png +0 -0
  34. {lstosa-0.11.1 → lstosa-0.11.3}/docs/jobs.rst +0 -0
  35. {lstosa-0.11.1 → lstosa-0.11.3}/docs/make.bat +0 -0
  36. {lstosa-0.11.1 → lstosa-0.11.3}/docs/nightsummary.rst +0 -0
  37. {lstosa-0.11.1 → lstosa-0.11.3}/docs/provenance.rst +0 -0
  38. {lstosa-0.11.1 → lstosa-0.11.3}/docs/references.rst +0 -0
  39. {lstosa-0.11.1 → lstosa-0.11.3}/docs/reports.rst +0 -0
  40. {lstosa-0.11.1 → lstosa-0.11.3}/docs/scripts/index.rst +0 -0
  41. {lstosa-0.11.1 → lstosa-0.11.3}/docs/troubleshooting/index.rst +0 -0
  42. {lstosa-0.11.1 → lstosa-0.11.3}/docs/utils.rst +0 -0
  43. {lstosa-0.11.1 → lstosa-0.11.3}/docs/veto.rst +0 -0
  44. {lstosa-0.11.1 → lstosa-0.11.3}/docs/workflow/LSTOSA_flow.png +0 -0
  45. {lstosa-0.11.1 → lstosa-0.11.3}/docs/workflow/index.rst +0 -0
  46. {lstosa-0.11.1 → lstosa-0.11.3}/environment-lstcam.yml +0 -0
  47. {lstosa-0.11.1 → lstosa-0.11.3}/environment.yml +0 -0
  48. {lstosa-0.11.1 → lstosa-0.11.3}/extra/example_sequencer.txt +0 -0
  49. {lstosa-0.11.1 → lstosa-0.11.3}/extra/history_files/sequence_LST1_04183.history +0 -0
  50. {lstosa-0.11.1 → lstosa-0.11.3}/extra/history_files/sequence_LST1_04183_failed.history +0 -0
  51. {lstosa-0.11.1 → lstosa-0.11.3}/extra/history_files/sequence_LST1_04183_oneline.history +0 -0
  52. {lstosa-0.11.1 → lstosa-0.11.3}/extra/history_files/sequence_LST1_04185.0001.history +0 -0
  53. {lstosa-0.11.1 → lstosa-0.11.3}/extra/history_files/sequence_LST1_04185.0010.history +0 -0
  54. {lstosa-0.11.1 → lstosa-0.11.3}/extra/sacct_output.csv +0 -0
  55. {lstosa-0.11.1 → lstosa-0.11.3}/extra/squeue_output.csv +0 -0
  56. {lstosa-0.11.1 → lstosa-0.11.3}/pyproject.toml +0 -0
  57. {lstosa-0.11.1 → lstosa-0.11.3}/setup.cfg +0 -0
  58. {lstosa-0.11.1 → lstosa-0.11.3}/src/lstosa.egg-info/dependency_links.txt +0 -0
  59. {lstosa-0.11.1 → lstosa-0.11.3}/src/lstosa.egg-info/entry_points.txt +0 -0
  60. {lstosa-0.11.1 → lstosa-0.11.3}/src/lstosa.egg-info/requires.txt +0 -0
  61. {lstosa-0.11.1 → lstosa-0.11.3}/src/lstosa.egg-info/top_level.txt +0 -0
  62. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/__init__.py +0 -0
  63. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/configs/__init__.py +0 -0
  64. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/configs/config.py +0 -0
  65. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/configs/datamodel.py +0 -0
  66. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/configs/options.py +0 -0
  67. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/configs/sequencer.cfg +0 -0
  68. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/conftest.py +0 -0
  69. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/high_level/__init__.py +0 -0
  70. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/high_level/selection_cuts.toml +0 -0
  71. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/high_level/significance.py +0 -0
  72. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/high_level/tests/test_significance.py +0 -0
  73. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/nightsummary/__init__.py +0 -0
  74. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/nightsummary/database.py +0 -0
  75. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/nightsummary/extract.py +0 -0
  76. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/nightsummary/nightsummary.py +0 -0
  77. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/nightsummary/set_source_coordinates.py +0 -0
  78. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/nightsummary/tests/test_database.py +0 -0
  79. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/nightsummary/tests/test_extract.py +0 -0
  80. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/nightsummary/tests/test_nightsummary.py +0 -0
  81. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/nightsummary/tests/test_source_coordinates.py +0 -0
  82. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/osadb.py +0 -0
  83. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/paths.py +0 -0
  84. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/provenance/__init__.py +0 -0
  85. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/provenance/capture.py +0 -0
  86. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/provenance/config/definition.yaml +0 -0
  87. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/provenance/config/environment.yaml +0 -0
  88. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/provenance/config/logger.yaml +0 -0
  89. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/provenance/io.py +0 -0
  90. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/provenance/utils.py +0 -0
  91. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/raw.py +0 -0
  92. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/report.py +0 -0
  93. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/scripts/__init__.py +0 -0
  94. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/scripts/calibration_pipeline.py +0 -0
  95. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/scripts/closer.py +0 -0
  96. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/scripts/copy_datacheck.py +0 -0
  97. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/scripts/gain_selection.py +0 -0
  98. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/scripts/gainsel_webmaker.py +0 -0
  99. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/scripts/provprocess.py +0 -0
  100. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/scripts/reprocess_longterm.py +0 -0
  101. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/scripts/sequencer.py +0 -0
  102. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/scripts/sequencer_webmaker.py +0 -0
  103. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/scripts/show_run_summary.py +0 -0
  104. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/scripts/simulate_processing.py +0 -0
  105. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/scripts/tests/__init__.py +0 -0
  106. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/scripts/tests/test_osa_scripts.py +0 -0
  107. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/scripts/update_source_catalog.py +0 -0
  108. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/tests/__init__.py +0 -0
  109. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/tests/test_jobs.py +0 -0
  110. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/tests/test_osa.py +0 -0
  111. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/tests/test_osadb.py +0 -0
  112. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/tests/test_paths.py +0 -0
  113. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/tests/test_raw.py +0 -0
  114. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/tests/test_report.py +0 -0
  115. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/tests/test_veto.py +0 -0
  116. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/utils/__init__.py +0 -0
  117. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/utils/cliopts.py +0 -0
  118. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/utils/iofile.py +0 -0
  119. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/utils/logging.py +0 -0
  120. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/utils/mail.py +0 -0
  121. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/utils/register.py +0 -0
  122. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/utils/tests/test_iofile.py +0 -0
  123. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/utils/tests/test_utils.py +0 -0
  124. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/utils/utils.py +0 -0
  125. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/version.py +0 -0
  126. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/veto.py +0 -0
  127. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/webserver/__init__.py +0 -0
  128. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/webserver/utils.py +0 -0
  129. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/workflow/__init__.py +0 -0
  130. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/workflow/dl3.py +0 -0
  131. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/workflow/stages.py +0 -0
  132. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/workflow/tests/test_dl3.py +0 -0
  133. {lstosa-0.11.1 → lstosa-0.11.3}/src/osa/workflow/tests/test_stages.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: lstosa
3
- Version: 0.11.1
3
+ Version: 0.11.3
4
4
  Summary: Onsite analysis pipeline for the CTA LST-1
5
5
  Author: María Láinez, José Enrique Ruiz, Lab Saha, Andrés Baquero, José Luis Contreras, Maximilian Linhoff
6
6
  Author-email: Daniel Morcuende <dmorcuen@ucm.es>
@@ -0,0 +1,83 @@
1
+ SHELL=/usr/bin/bash
2
+ BASH_ENV="/local/home/lstanalyzer/.bashrc"
3
+ CRON_TZ=UTC
4
+ # Update astropy auxiliary data (e.g. IERS) every week
5
+ 0 0 * * SUN source /fefs/aswg/lstosa/utils/osa-conda; python /fefs/aswg/data/aux/astropy/get_iers_data.py > /dev/null 2>&1
6
+ #
7
+ # lstosa jobs
8
+ #
9
+ # [COPY OBS OVERVIEW] Copy observations overview and daily camera checks to lst1 datacheck webserver
10
+ #
11
+ 00 09 * * * /usr/bin/bash /fefs/aswg/lstosa/misc/copy_camera_daily_check_to_www.sh >/dev/null 2>&1
12
+ #
13
+ # [RUN SUMMARY] Produce the run summary file at the end of the observations to make sure it contains all the runs taken
14
+ #
15
+ 50 06 * * * obsdate=`date +\%Y\%m\%d -d yesterday`; export obsdate; source /fefs/aswg/lstosa/utils/osa-conda; lstchain_create_run_summary -d $obsdate -o /fefs/onsite/data/lst-pipe/LSTN-01/monitoring/RunSummary --r0-path=/fefs/onsite/data/R0/LSTN-01/lst-arraydaq/events --overwrite > /dev/null 2>&1
16
+ #
17
+ # [MERGED RUN SUMMARY] Produce the merged run summary file containing all the runs taken by the LST.
18
+ # This only appends the runs of the given date.
19
+ #
20
+ 55 06 * * * obsdate=`date +\%Y\%m\%d -d yesterday`; source /fefs/aswg/lstosa/utils/osa-conda; lstchain_merge_run_summaries -d $obsdate /fefs/onsite/data/lst-pipe/LSTN-01/OSA/Catalog/merged_RunSummary.ecsv --monitoring-path=/fefs/onsite/data/lst-pipe/LSTN-01/monitoring > /dev/null 2>&1
21
+ #
22
+ # [GAIN SELECTION]
23
+ #
24
+ 00 07-15 * * * obsdate=`date +\%Y-\%m-\%d -d yesterday`; export obsdate; source /fefs/aswg/lstosa/utils/osa-conda; gain_selection --no-queue-check -c /fefs/aswg/lstosa/cfg/sequencer_v0.11.cfg -d $obsdate -s 6 >> /fefs/onsite/data/lst-pipe/LSTN-01/OSA/GainSel_log/${obsdate}_LST1.log 2>&1
25
+ #
26
+ # [GAIN SELECTION CHECK]
27
+ #
28
+ 20,50 08-16 * * * obsdate=`date +\%Y-\%m-\%d -d yesterday`; export obsdate; source /fefs/aswg/lstosa/utils/osa-conda; gain_selection --check -c /fefs/aswg/lstosa/cfg/sequencer_v0.11.cfg -d $obsdate >> /fefs/onsite/data/lst-pipe/LSTN-01/OSA/GainSel_log/${obsdate}_check_LST1.log 2>&1
29
+ #
30
+ # [SIMULATED SEQUENCER] Launch sequencer once in the morning simulated. It also produces the run summary file if not found.
31
+ #
32
+ 05 09 * * * obsdate=`date +\%Y-\%m-\%d -d yesterday`; export obsdate; source /fefs/aswg/lstosa/utils/osa-conda; sequencer -c /fefs/aswg/lstosa/cfg/sequencer_v0.11.cfg -s -d $obsdate LST1 > /dev/null 2>&1
33
+ #
34
+ # [SEQUENCER 1] Run only up to DL1A
35
+ #
36
+ 25,32 08-10 * * * obsdate=`date +\%Y-\%m-\%d -d yesterday`; export obsdate; source /fefs/aswg/lstosa/utils/osa-conda; sequencer -c /fefs/aswg/lstosa/cfg/sequencer_v0.11.cfg --no-dl1ab -d $obsdate LST1 >> /fefs/onsite/data/lst-pipe/LSTN-01/OSA/Sequencer_log/${obsdate}_1_LST1.log 2>&1
37
+ #
38
+ # [SEQUENCER_CATB_TAILCUTS] Runs from DL1A, produces Cat-B calibration and tailcut files
39
+ #
40
+ 00,30 08-18 * * * obsdate=`date +\%Y-\%m-\%d -d yesterday`; export obsdate; source /fefs/aswg/lstosa/utils/osa-conda; sequencer_catB_tailcuts -c /fefs/aswg/lstosa/cfg/sequencer_v0.11.cfg -d $obsdate LST1 >> /fefs/onsite/data/lst-pipe/LSTN-01/OSA/Sequencer_log/${obsdate}_tailcuts_LST1.log 2>&1
41
+ #
42
+ # [SEQUENCER 2] Finishes the processing producing DL1AB and DL2
43
+ #
44
+ 04,40 09-19 * * * obsdate=`date +\%Y-\%m-\%d -d yesterday`; export obsdate; source /fefs/aswg/lstosa/utils/osa-conda; sequencer -c /fefs/aswg/lstosa/cfg/sequencer_v0.11.cfg -d $obsdate LST1 >> /fefs/onsite/data/lst-pipe/LSTN-01/OSA/Sequencer_log/${obsdate}_2_LST1.log 2>&1
45
+ #
46
+ # [SEQUENCER WEB] Make sequencer xhtml table and copy it to the lst1 webserver
47
+ #
48
+ */10 08-22 * * * obsdate=`date +\%Y\%m\%d -d yesterday`; export obsdate; source /fefs/aswg/lstosa/utils/osa-conda; sequencer_webmaker -c /fefs/aswg/lstosa/cfg/sequencer_v0.11.cfg > /fefs/onsite/data/lst-pipe/LSTN-01/OSA/Minor_logs/${obsdate}_sequencer-web.log 2>&1; if [ $? = 0 ]; then scp /fefs/onsite/data/lst-pipe/LSTN-01/OSA/SequencerWeb/osa_status_$obsdate.html datacheck:/home/www/html/datacheck/lstosa/sequencer.xhtml; fi > /dev/null 2>&1
49
+ #
50
+ # [GAIN SEL WEB SEQUENCER] Make gain selection xhtml table and copy it to the lst1 webserver
51
+ #
52
+ */10 07-18 * * * obsdate=`date +\%Y-\%m-\%d -d yesterday`; export obsdate; source /fefs/aswg/lstosa/utils/osa-conda; gainsel_webmaker -c /fefs/aswg/lstosa/cfg/sequencer_v0.11.cfg > /dev/null 2>&1; if [ $? = 0 ]; then scp /fefs/onsite/data/lst-pipe/LSTN-01/OSA/GainSelWeb/osa_gainsel_status_$obsdate.html datacheck:/home/www/html/datacheck/lstosa/gainsel.xhtml; fi > /dev/null 2>&1
53
+ #
54
+ # [AUTOCLOSER] Launch the closer without forcing it (no -f option).
55
+ #
56
+ 25 10-23 * * * obsdate=`date +\%Y-\%m-\%d -d yesterday`; export obsdate; source /fefs/aswg/lstosa/utils/osa-conda; autocloser -c /fefs/aswg/lstosa/cfg/sequencer_v0.11.cfg -d $obsdate LST1 >> /fefs/onsite/data/lst-pipe/LSTN-01/OSA/Autocloser_log/${obsdate}_LST1.log 2>&1
57
+ #
58
+ # [COPY DATACHECK] Copy the available calibration and DL1 datacheck to the LST1 webserver.
59
+ #
60
+ 05,20,40 08-23 * * * obsdate=`date +\%Y-\%m-\%d -d yesterday`; export obsdate; source /fefs/aswg/lstosa/utils/osa-conda; copy_datacheck -c /fefs/aswg/lstosa/cfg/sequencer_v0.11.cfg -d $obsdate LST1 > /dev/null 2>&1
61
+ #
62
+ # [SOURCE CATALOG]
63
+ #
64
+ 00 11-23 * * * obsdate=`date +\%Y-\%m-\%d -d yesterday`; export obsdate; source /fefs/aswg/lstosa/utils/osa-conda; update_source_catalog -c /fefs/aswg/lstosa/cfg/sequencer_v0.11.cfg -d $obsdate > /dev/null 2>&1
65
+ #
66
+ # [COPY CUMULATIVE LST-1 OBSERVATION TIME]
67
+ # (added by Daniel Morcuende on 2024-04-05)
68
+ #
69
+ 0 18 * * FRI /usr/bin/bash /fefs/aswg/lstosa/misc/update_cumulative_obs_time.sh >/dev/null 2>&1
70
+
71
+
72
+ # Daniel Morcuende (2023-11-08) periodically remove leftover jobs kept in the SLURM as pending after job dependency not satisfied because of failure (Reason in squeue: 'DependencyNeverSatisfied').
73
+ # It does only look for lstosa jobs launched by sequencer with the prefix "LST1_" and also the merging jobs launched by autocloser like "longterm_dl1_datacheck".
74
+ */30 * * * * /local/home/lstanalyzer/remove_dependency_never_satisfied_jobs.sh > /dev/null 2>&1
75
+
76
+
77
+ SHELL=/usr/bin/bash
78
+ BASH_ENV="/local/home/lstanalyzer/.bashrc"
79
+ CRON_TZ=UTC
80
+ #
81
+ # Restart camera processing of calibration runs in realtime in case it was killed for whatever reason
82
+ #
83
+ 04 * * * * cd /local/home/lstanalyzer/camera/lst-camera-watchers;./lst1_watcher_restarter
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: lstosa
3
- Version: 0.11.1
3
+ Version: 0.11.3
4
4
  Summary: Onsite analysis pipeline for the CTA LST-1
5
5
  Author: María Láinez, José Enrique Ruiz, Lab Saha, Andrés Baquero, José Luis Contreras, Maximilian Linhoff
6
6
  Author-email: Daniel Morcuende <dmorcuen@ucm.es>
@@ -10,6 +10,7 @@ codemeta.json
10
10
  environment-lstcam.yml
11
11
  environment.yml
12
12
  pyproject.toml
13
+ crontab/crontab-orig.txt
13
14
  crontab/crontab.txt
14
15
  dev/mysql.py
15
16
  docs/Makefile
@@ -17,5 +17,5 @@ __version__: str
17
17
  __version_tuple__: VERSION_TUPLE
18
18
  version_tuple: VERSION_TUPLE
19
19
 
20
- __version__ = version = '0.11.1'
21
- __version_tuple__ = version_tuple = (0, 11, 1)
20
+ __version__ = version = '0.11.3'
21
+ __version_tuple__ = version_tuple = (0, 11, 3)
@@ -99,7 +99,10 @@ def are_all_jobs_correctly_finished(sequence_list):
99
99
  flag = True
100
100
  analysis_directory = Path(options.directory)
101
101
  for sequence in sequence_list:
102
- history_files_list = analysis_directory.rglob(f"*{sequence.run}*.history")
102
+ if sequence.type != "DATA":
103
+ continue
104
+ else:
105
+ history_files_list = analysis_directory.rglob(f"*{sequence.run}*.history")
103
106
 
104
107
  if not options.test:
105
108
  try:
@@ -73,16 +73,16 @@ class Telescope:
73
73
 
74
74
  if self.is_closed():
75
75
  log.info(f"{self.telescope} is already closed! Ignoring {self.telescope}")
76
- return
76
+ sys.exit(0)
77
77
  if not analysis_path(self.telescope).exists():
78
78
  log.warning(
79
79
  f"Analysis directory does not exist for {self.telescope}! "
80
80
  f"Ignoring {self.telescope}"
81
81
  )
82
- return
82
+ sys.exit(0)
83
83
  if not self.lock_automatic_sequencer() and not ignore_cronlock:
84
84
  log.warning(f"{self.telescope} already locked! Ignoring {self.telescope}")
85
- return
85
+ sys.exit(0)
86
86
  if not self.simulate_sequencer(date, config_file, test, no_gainsel):
87
87
  log.warning(
88
88
  f"Simulation of the sequencer failed "
@@ -207,7 +207,7 @@ def dl1ab(run_str: str, dl1b_config: Path, dl1_prod_id: str) -> int:
207
207
  f"Cat-B calibration did not finish yet for run {run_str[:5]}. "
208
208
  "Please try again later."
209
209
  )
210
- sys.exit(1)
210
+ sys.exit(0)
211
211
 
212
212
  if options.simulate:
213
213
  return 0
@@ -22,7 +22,17 @@ def number_of_pending_jobs():
22
22
 
23
23
 
24
24
  def run_script(
25
- script: str, date, config: Path, no_dl2: bool, no_gainsel: bool, no_calib: bool, simulate: bool, force: bool
25
+ script: str,
26
+ date,
27
+ config: Path,
28
+ no_dl2: bool,
29
+ no_gainsel: bool,
30
+ no_calib: bool,
31
+ no_dl1ab: bool,
32
+ simulate: bool,
33
+ force: bool,
34
+ overwrite_tailcuts: bool,
35
+ overwrite_catb: bool,
26
36
  ):
27
37
  """Run the sequencer for a given date."""
28
38
  osa_config = Path(config).resolve()
@@ -38,12 +48,21 @@ def run_script(
38
48
  if no_calib:
39
49
  cmd.append("--no-calib")
40
50
 
51
+ if no_dl1ab:
52
+ cmd.append("--no-dl1ab")
53
+
41
54
  if simulate:
42
55
  cmd.append("--simulate")
43
56
 
44
57
  if force:
45
58
  cmd.append("--force")
46
59
 
60
+ if overwrite_tailcuts:
61
+ cmd.append("--overwrite-tailcuts")
62
+
63
+ if overwrite_catb:
64
+ cmd.append("--overwrite-catB")
65
+
47
66
  # Append the telescope to the command in the last place
48
67
  cmd.append("LST1")
49
68
 
@@ -69,8 +88,11 @@ def get_list_of_dates(dates_file):
69
88
  @click.option("--no-dl2", is_flag=True, help="Do not run the DL2 step.")
70
89
  @click.option("--no-gainsel", is_flag=True, help="Do not require gain selection to be finished.")
71
90
  @click.option("--no-calib", is_flag=True, help="Do not run the calibration step.")
91
+ @click.option("--no-dl1ab", is_flag=True, help="Do not run the DL1AB step.")
72
92
  @click.option("-s", "--simulate", is_flag=True, help="Activate simulation mode.")
73
93
  @click.option("-f", "--force", is_flag=True, help="Force the autocloser to close the day.")
94
+ @click.option("--overwrite-tailcuts", is_flag=True, help="Overwrite the tailcuts config file if it already exists.")
95
+ @click.option("--overwrite-catB", is_flag=True, help="Overwrite the Cat-B calibration files if they already exist.")
74
96
  @click.option(
75
97
  "-c",
76
98
  "--config",
@@ -79,7 +101,7 @@ def get_list_of_dates(dates_file):
79
101
  help="Path to the OSA config file.",
80
102
  )
81
103
  @click.argument(
82
- "script", type=click.Choice(["sequencer", "closer", "copy_datacheck", "autocloser"])
104
+ "script", type=click.Choice(["sequencer", "closer", "copy_datacheck", "autocloser", "sequencer_catB_tailcuts"])
83
105
  )
84
106
  @click.argument("dates-file", type=click.Path(exists=True))
85
107
  def main(
@@ -89,9 +111,12 @@ def main(
89
111
  no_dl2: bool = False,
90
112
  no_gainsel: bool = False,
91
113
  no_calib: bool = False,
114
+ no_dl1ab: bool = False,
92
115
  simulate: bool = False,
93
116
  force: bool = False,
94
- ):
117
+ overwrite_tailcuts: bool = False,
118
+ overwrite_catb: bool = False,
119
+ ):
95
120
  """
96
121
  Loop over the dates listed in the input file and launch the script for each of them.
97
122
  The input file should list the dates in the format YYYY-MM-DD one date per line.
@@ -107,7 +132,19 @@ def main(
107
132
  # Avoid running jobs while it is still night time
108
133
  wait_for_daytime()
109
134
 
110
- run_script(script, date, config, no_dl2, no_gainsel, no_calib, simulate, force)
135
+ run_script(
136
+ script,
137
+ date,
138
+ config,
139
+ no_dl2,
140
+ no_gainsel,
141
+ no_calib,
142
+ no_dl1ab,
143
+ simulate,
144
+ force,
145
+ overwrite_tailcuts,
146
+ overwrite_catb,
147
+ )
111
148
  log.info("Waiting 1 minute to launch the process for the next date...\n")
112
149
  time.sleep(60)
113
150
 
@@ -56,6 +56,12 @@ parser.add_argument(
56
56
  default=False,
57
57
  help="Overwrite the tailcuts config file if it already exists.",
58
58
  )
59
+ parser.add_argument(
60
+ "--overwrite-catB",
61
+ action="store_true",
62
+ default=False,
63
+ help="Overwrite the Cat-B calibration files if they already exist.",
64
+ )
59
65
  parser.add_argument(
60
66
  "tel_id",
61
67
  choices=["ST", "LST1", "LST2", "all"],
@@ -111,7 +117,7 @@ def launch_catB_calibration(run_id: int):
111
117
  before and it finished successfully, it creates a catB_{run}.closed file.
112
118
  """
113
119
  job_id = get_catB_last_job_id(run_id)
114
- if job_id:
120
+ if job_id and not options.overwrite_catB:
115
121
  job_status = get_sacct_output(run_sacct(job_id=job_id))["State"]
116
122
  if job_status.item() in ["RUNNING", "PENDING"]:
117
123
  log.debug(f"Job {job_id} (corresponding to run {run_id:05d}) is still running.")
@@ -129,8 +135,11 @@ def launch_catB_calibration(run_id: int):
129
135
 
130
136
  else:
131
137
  if catB_calibration_file_exists(run_id):
132
- log.info(f"Cat-B calibration file already produced for run {run_id:05d}.")
133
- return
138
+ if not options.overwrite_catB:
139
+ log.info(f"Cat-B calibration file already produced for run {run_id:05d}.")
140
+ return
141
+ else:
142
+ log.info(f"Cat-B calibration file already produced for run {run_id:05d}. Overwriting it.")
134
143
 
135
144
  command = cfg.get("lstchain", "catB_calibration")
136
145
  if cfg.getboolean("lstchain", "use_lstcam_env_for_CatB_calib"):
@@ -162,6 +171,9 @@ def launch_catB_calibration(run_id: int):
162
171
  cmd.append(f"--dl1-dir={analysis_dir}")
163
172
  cmd.append(f"--lstchain-version={lstchain_version[1:]}")
164
173
 
174
+ if options.overwrite_catB:
175
+ cmd.append("--yes")
176
+
165
177
  if not options.simulate:
166
178
  job = sp.run(cmd, encoding="utf-8", capture_output=True, text=True, check=True)
167
179
  job_id = job.stdout.strip()
@@ -217,6 +229,7 @@ def main():
217
229
  options.tel_id = opts.tel_id
218
230
  options.simulate = opts.simulate
219
231
  options.overwrite_tailcuts = opts.overwrite_tailcuts
232
+ options.overwrite_catB = opts.overwrite_catB
220
233
  options.date = opts.date
221
234
  options.date = set_default_date_if_needed()
222
235
  options.configfile = opts.config.resolve()
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes