Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
68 commits
Select commit Hold shift + click to select a range
f10ec44
template fix for only_normal_samples_event
Aug 19, 2025
fcb3024
Merge pull request #1461 from mskcc/hotfix/only_normal_samples_event
allanbolipata Oct 29, 2025
2dbb2b1
Merge pull request #1473 from mskcc/develop
nikhil Oct 30, 2025
b864fb2
Revert using echo service
sivkovic Nov 28, 2025
b07abed
Remove COPY_GROUP_OWNERSHIP
sivkovic Dec 1, 2025
1d52f1b
Fix create_request_callback_instance
sivkovic Dec 1, 2025
f18df3d
Fix completing the jobs
sivkovic Dec 1, 2025
417868b
patch snp_and_indels operator
Dec 4, 2025
fd8884f
Merge pull request #1480 from mskcc/hotfix/revert_echo
sivkovic Dec 5, 2025
43fd048
Update snps_and_indels.py
Dec 8, 2025
e14f44e
Merge pull request #1481 from mskcc/hotfix/revert_echo
sivkovic Dec 8, 2025
89c6608
update heme operator for iris
Dec 16, 2025
1d3eb69
formatting
Dec 16, 2025
98d974c
flatten patient aliases field
Dec 17, 2025
50be378
fix imports in migration
Dec 17, 2025
4c1e5a4
Update 0046_migrate_patient_aliases.py
Dec 17, 2025
55b0c91
Don't use FileRepository
Dec 17, 2025
727128f
Update only_normal_samples_event.py
Dec 17, 2025
ae3a855
fix black formatting in git actions
Dec 17, 2025
ed4d7a7
Merge pull request #1484 from mskcc/feature/flatten_patient_alias
buehlere Dec 18, 2025
fe7137b
Try reverting the black change
sivkovic Dec 19, 2025
e52e8f6
update resources and cwl extensions
Jan 12, 2026
4f8e923
adding chipvar, path fixes
Jan 12, 2026
7588226
Merge pull request #1483 from mskcc/hotfix/revert_echo
sivkovic Jan 13, 2026
242b644
Bump version
allanbolipata Feb 5, 2026
26cf496
Refactor to use FileManager to stage required files
sivkovic Feb 10, 2026
6150ecd
Refactor new_request job
sivkovic Feb 20, 2026
6582d74
Refactor beagle_etl
sivkovic Feb 26, 2026
d615c5d
Remove echo-client and fix version of smile-client
sivkovic Feb 26, 2026
246db7c
Remove echo_client configuration params from settings
sivkovic Feb 26, 2026
885cd4a
Add file_manager migration and changes
sivkovic Feb 26, 2026
5574ca3
Merge branch 'develop' of github.com:mskcc/beagle into feature/etl_re…
sivkovic Feb 26, 2026
aa0c9c5
Fix tests
sivkovic Feb 26, 2026
324de9e
Add missing files
sivkovic Feb 26, 2026
b4ea509
Add missing IMPORT_FILE_GROUP override
sivkovic Feb 26, 2026
05212e1
Fix formatting
sivkovic Feb 26, 2026
d09fe84
Implement locking for SMILEMessages, fix validations, add tests
sivkovic Mar 10, 2026
3125bf3
Refactor file_manager to work with celery cord
sivkovic Mar 17, 2026
be78d73
When imported files needs to be unavailable
sivkovic Mar 17, 2026
ba4d0a3
Refactor runner to stage files before creating jobs
sivkovic Mar 17, 2026
04e670d
Fix formatting
sivkovic Mar 17, 2026
7eb7d51
Add file_manager worker
sivkovic Mar 17, 2026
596b4d9
Merge branch 'release/2.1.0' of github.com:mskcc/beagle into feature/…
sivkovic Mar 17, 2026
b245bae
Fix lock
sivkovic Mar 17, 2026
682559f
Name parameters in create_operator_run_from_jobs
sivkovic Mar 17, 2026
0592c8e
Fix logging
sivkovic Mar 17, 2026
65f2ace
Fix logging
sivkovic Mar 17, 2026
14c4f53
Fix nextflow test
sivkovic Mar 17, 2026
a078188
Improve UI and add stage_sample command
sivkovic Mar 17, 2026
64d6130
Fix formatting
sivkovic Mar 17, 2026
2925b82
adding heme operators
buehlere Mar 17, 2026
12dba21
Update input_template.json.jinja2
buehlere Mar 17, 2026
cc4373e
Update snps_and_indels.py
buehlere Mar 17, 2026
af919ab
Add admin commands for staging
sivkovic Mar 17, 2026
d52485a
Remove ECHO_RABBITMQ env variables
sivkovic Mar 17, 2026
a759289
Merge pull request #1495 from mskcc/feature/xs_heme_variant_calling
buehlere Mar 17, 2026
4c5a01b
Use cmoSampleName instead of ciTag in Chronos
sivkovic Mar 17, 2026
f57c530
Fix TempoMpgen and Aion
sivkovic Mar 17, 2026
00966a5
Merge pull request #1496 from mskcc/feature/chronos_update
sivkovic Mar 18, 2026
76df204
Merge pull request #1494 from mskcc/feature/etl_refactor
sivkovic Mar 18, 2026
2a94fde
Fix validation for igoComplete false samples and move library validat…
sivkovic Mar 20, 2026
14d8c8a
Version bump 2.1.1
sivkovic Mar 20, 2026
ecc479f
adjustments for prodution
buehlere Mar 20, 2026
7823c42
Merge pull request #1498 from mskcc/feature/xs_heme_variant_calling
buehlere Mar 20, 2026
844aff2
Fix formatting
sivkovic Mar 23, 2026
fc8adb6
Merge pull request #1492 from mskcc/release/2.1.0
sivkovic Mar 23, 2026
4f7fc31
Merge branch 'master' of github.com:mskcc/beagle into hotfix/2.1.1
sivkovic Mar 23, 2026
2988b63
Merge pull request #1497 from mskcc/hotfix/2.1.1
sivkovic Mar 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion beagle/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
__version__ = "2.0.0"
__version__ = "2.1.1"
52 changes: 19 additions & 33 deletions beagle/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@
"runner.apps.RunnerConfig",
"beagle_etl.apps.BeagleEtlConfig",
"file_system.apps.FileSystemConfig",
"file_manager.apps.FileManagerConfig",
"notifier.apps.NotifierConfig",
"study.apps.StudyConfig",
"django.contrib.admin",
Expand All @@ -62,8 +63,8 @@
"drf_yasg",
"advanced_filters",
"ddtrace.contrib.django",
"echo_client",
"smile_client",
"django_celery_results",
]


Expand Down Expand Up @@ -251,6 +252,7 @@
RABBITMQ_URL = os.environ.get("BEAGLE_RABBITMQ_URL", "localhost")

CELERY_BROKER_URL = "amqp://%s:%s@%s/" % (RABBITMQ_USERNAME, RABBITMQ_PASSWORD, RABBITMQ_URL)
CELERY_RESULT_BACKEND = "django-db" # Use Django database as result backend for chord support
CELERY_ACCEPT_CONTENT = ["json"]
CELERY_TASK_SERIALIZER = "json"
CELERY_RESULT_SERIALIZER = "json"
Expand Down Expand Up @@ -297,17 +299,16 @@
"CALLBACK": "beagle_etl.smile_service.smile_callback.persist_message",
}

IMPORT_FILE_GROUP = os.environ.get("BEAGLE_IMPORT_FILE_GROUP", "1a1b29cf-3bc2-4f6c-b376-d4c5d701166a")
IMPORT_FILE_GROUP = os.environ.get("BEAGLE_IMPORT_FILE_GROUP")

POOLED_NORMAL_FILE_GROUP = os.environ.get("BEAGLE_POOLED_NORMAL_FILE_GROUP", "b6857a56-5d45-451f-b4f6-26148946080f")
POOLED_NORMAL_FILE_GROUP = os.environ.get("BEAGLE_POOLED_NORMAL_FILE_GROUP")

DMP_BAM_FILE_GROUP = os.environ.get("BEAGLE_DMP_BAM_FILE_GROUP", "9ace63bf-ed55-461c-9ac0-1c5ee710d957")
DMP_BAM_FILE_GROUP = os.environ.get("BEAGLE_DMP_BAM_FILE_GROUP")

RIDGEBACK_URL = os.environ.get("BEAGLE_RIDGEBACK_URL", "http://localhost:5003")

LOG_PATH = os.environ.get("BEAGLE_LOG_PATH", "beagle-server.log")

ECHO_LOG_PATH = os.environ.get("BEAGLE_ECHO_LOG_PATH", "echo_client.log")
SMILE_LOG_PATH = os.environ.get("BEAGLE_SMILE_LOG_PATH", "smile_client.log")

LOGGING = {
Expand All @@ -321,26 +322,18 @@
},
"handlers": {
"console": {
"level": "DEBUG",
"level": "INFO",
"class": "logging.StreamHandler",
"formatter": "simple",
},
"file": {
"level": "DEBUG",
"level": "INFO",
"class": "logging.handlers.RotatingFileHandler",
"filename": LOG_PATH,
"maxBytes": 209715200,
"backupCount": 10,
"formatter": "simple",
},
"echo_client_log": {
"level": "DEBUG",
"class": "logging.handlers.RotatingFileHandler",
"filename": ECHO_LOG_PATH,
"maxBytes": 209715200,
"backupCount": 10,
"formatter": "simple",
},
"smile_client_log": {
"level": "DEBUG",
"class": "logging.handlers.RotatingFileHandler",
Expand All @@ -351,14 +344,17 @@
},
},
"loggers": {
"django_auth_ldap": {"level": "DEBUG", "handlers": ["console"]},
"django_auth_ldap": {"level": "INFO", "handlers": ["console"]},
"django": {
"handlers": ["file", "console"],
"level": "DEBUG",
"level": "INFO",
"propagate": True,
},
"echo_client": {"level": "DEBUG", "handlers": ["echo_client_log", "console"]},
"smile_client": {"level": "DEBUG", "handlers": ["echo_client_log", "console"]},
"smile_client": {"level": "INFO", "handlers": ["smile_client_log", "console"]},
},
"root": {
"handlers": ["file", "console"],
"level": "INFO",
},
}

Expand Down Expand Up @@ -387,10 +383,12 @@
BEAGLE_DEFAULT_QUEUE = os.environ.get("BEAGLE_DEFAULT_QUEUE", "beagle_default_queue")
BEAGLE_CHECK_FILES_QUEUE = os.environ.get("BEAGLE_CHECK_FILES_QUEUE", "beagle_check_files_queue")
BEAGLE_JOB_SCHEDULER_QUEUE = os.environ.get("BEAGLE_JOB_SCHEDULER_QUEUE", "beagle_job_scheduler_queue")
BEAGLE_FILE_MANAGER_QUEUE = os.environ.get("BEAGLE_FILE_MANAGER_QUEUE", "beagle_file_manager_queue")
BEAGLE_SHARED_TMPDIR = os.environ.get("BEAGLE_SHARED_TMPDIR", "/juno/work/ci/temp")
BEAGLE_TMPDIR = os.environ.get("BEAGLE_TMPDIR", "/tmp")

PROCESS_SMILE_MESSAGES_PERIOD = os.environ.get("BEAGLE_PROCESS_SMILE_MESSAGES_PERIOD", 900)
PROCESS_SMILE_MESSAGES_PERIOD = os.environ.get("BEAGLE_PROCESS_SMILE_MESSAGES_PERIOD", 90)
PROCESS_REQUEST_CALLBACK_PERIOD = os.environ.get("BEAGLE_PROCESS_REQUEST_CALLBACK_PERIOD", 900)
CHECK_JOB_STATUS_PERIOD = os.environ.get("BEAGLE_CHECK_JOB_STATUS_PERIOD", 60)
PROCESS_TRIGGERS_PERIOD = os.environ.get("BEAGLE_PROCESS_TRIGGERS_PERIOD", 120)
CHECK_JOB_TIMEOUTS = os.environ.get("BEAGLE_CHECK_JOB_TIMEOUTS", 86400.0)
Expand Down Expand Up @@ -465,7 +463,7 @@
MAPPING = json.loads(os.environ.get("BEAGLE_FILE_MAPPING", "{}"))
COPY_FILE_PERMISSION = 0o644
COPY_DIR_PERMISSION = 0o750
COPY_GROUP_OWNERSHIP = os.environ.get("BEAGLE_GROUP_OWNERSHIP", "cmoigo")
STAGE_DAYS = int(os.environ.get("BEAGLE_STAGE_DAYS", 30))

FASTQ_DEFAULT_LOCATION_PREFIX = os.environ.get("BEAGLE_FASTQ_DEFAULT_LOCATION_PREFIX")
FASTQ_IRIS_LOCATION_PREFIX = os.environ.get("BEAGLE_FASTQ_IRIS_LOCATION_PREFIX")
Expand Down Expand Up @@ -549,15 +547,3 @@
"HC_IMPACT": {None: "UNKNOWN", "null": "UNKNOWN", "IMPACT505_BAITS": "IMPACT505"},
}
SHELL_PLUS = "ipython"


ECHO_SETTINGS = {
"USERNAME": os.getenv("ECHO_USERNAME"),
"PASSWORD": os.getenv("ECHO_PASSWORD"),
"HOST": os.getenv("ECHO_RABBITMQ_HOST"),
"PORT": os.getenv("ECHO_RABBITMQ_PORT"),
"VHOST": os.getenv("ECHO_VHOST", "/"),
"ECHO_TASK_QUEUE": os.getenv("ECHO_TASK_QUEUE"),
"ECHO_CONFIRMATION_QUEUE": os.getenv("ECHO_CONFIRMATION_QUEUE"),
"CALLBACK": os.getenv("ECHO_CALLBACK"),
}
4 changes: 4 additions & 0 deletions beagle/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,10 @@
router = routers.DefaultRouter()
router.register("register", UserRequestViewSet)

# Customize Django Admin
admin.site.site_header = f"Voyager - Beagle v{__version__}"
admin.site.site_title = "Voyager"
admin.site.index_title = "Beagle Administration"

urlpatterns = [
url(r"^$", schema_view.with_ui("swagger", cache_timeout=0), name="schema-swagger-ui"),
Expand Down
35 changes: 0 additions & 35 deletions beagle_etl/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,6 @@
ETLConfiguration,
SMILEMessage,
RequestCallbackJob,
NormalizerModel,
ValidatorModel,
SkipProject,
CopyFileTask,
)
from advanced_filters.admin import AdminAdvancedFiltersMixin

Expand Down Expand Up @@ -42,38 +38,7 @@ class RequestCallbackJobAdmin(ModelAdmin):
ordering = ("-created_date",)


class NormalizerAdmin(ModelAdmin):
list_display = (
"condition",
"normalizer",
)


class ValidatorAdmin(ModelAdmin):
list_display = ("name",)


class SkipProjectAdmin(ModelAdmin):
list_display = ("skip_projects",)


class CopyFileTaskAdmin(ModelAdmin):
list_display = (
"id",
"source",
"destination",
link_relation("smile_message"),
"created_date",
"status",
)
ordering = ("-created_date",)


admin.site.register(Operator, OperatorAdmin)
admin.site.register(ETLConfiguration, AssayAdmin)
admin.site.register(SMILEMessage, SMILEMessagesAdmin)
admin.site.register(RequestCallbackJob, RequestCallbackJobAdmin)
admin.site.register(NormalizerModel, NormalizerAdmin)
admin.site.register(ValidatorModel, ValidatorAdmin)
admin.site.register(SkipProject, SkipProjectAdmin)
admin.site.register(CopyFileTask, CopyFileTaskAdmin)
15 changes: 11 additions & 4 deletions beagle_etl/celery.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ def setup_task_logger(logger, *args, **kwargs):
"runner.tasks.create_jobs_from_request": {"queue": settings.BEAGLE_RUNNER_QUEUE},
"runner.tasks.create_jobs_from_chaining": {"queue": settings.BEAGLE_RUNNER_QUEUE},
"runner.tasks.create_jobs_from_pairs": {"queue": settings.BEAGLE_RUNNER_QUEUE},
"runner.tasks.create_operator_run_from_jobs": {"queue": settings.BEAGLE_RUNNER_QUEUE},
"runner.tasks.add_pipeline_to_cache": {"queue": settings.BEAGLE_RUNNER_QUEUE},
"runner.tasks.running_job": {"queue": settings.BEAGLE_RUNNER_QUEUE},
"runner.tasks.terminate_job": {"queue": settings.BEAGLE_RUNNER_QUEUE},
Expand All @@ -47,19 +48,20 @@ def setup_task_logger(logger, *args, **kwargs):
"file_system.tasks.check_fastq_files": {"queue": settings.BEAGLE_CHECK_FILES_QUEUE},
"beagle_etl.tasks.job_processor": {"queue": settings.BEAGLE_DEFAULT_QUEUE},
"beagle_etl.tasks.process_smile_events": {"queue": settings.BEAGLE_DEFAULT_QUEUE},
"beagle_etl.jobs.metadb_jobs.new_request": {"queue": settings.BEAGLE_DEFAULT_QUEUE},
"beagle_etl.jobs.metadb_jobs.update_request_job": {"queue": settings.BEAGLE_DEFAULT_QUEUE},
"beagle_etl.jobs.metadb_jobs.update_sample_job": {"queue": settings.BEAGLE_DEFAULT_QUEUE},
"beagle_etl.tasks.process_job_with_lock": {"queue": settings.BEAGLE_DEFAULT_QUEUE},
"beagle_etl.jobs.metadb_jobs.update_job": {"queue": settings.BEAGLE_DEFAULT_QUEUE},
"beagle_etl.jobs.metadb_jobs.not_supported": {"queue": settings.BEAGLE_DEFAULT_QUEUE},
"beagle_etl.jobs.metadb_jobs.request_callback": {"queue": settings.BEAGLE_DEFAULT_QUEUE},
"beagle_etl.jobs.metadb_jobs.calculate_checksum": {"queue": settings.BEAGLE_DEFAULT_QUEUE},
"file_manager.tasks.stage_file_job": {"queue": settings.BEAGLE_FILE_MANAGER_QUEUE},
"file_manager.tasks.check_for_clean_up": {"queue": settings.BEAGLE_FILE_MANAGER_QUEUE},
"file_manager.tasks.clean_up_file": {"queue": settings.BEAGLE_FILE_MANAGER_QUEUE},
}

app.conf.beat_schedule = {
"process_request_callback_jobs": {
"task": "beagle_etl.tasks.process_request_callback_jobs",
"schedule": settings.PROCESS_SMILE_MESSAGES_PERIOD,
"schedule": settings.PROCESS_REQUEST_CALLBACK_PERIOD,
"options": {"queue": settings.BEAGLE_DEFAULT_QUEUE},
},
"process_smile_imports": {
Expand Down Expand Up @@ -97,4 +99,9 @@ def setup_task_logger(logger, *args, **kwargs):
"schedule": crontab(day_of_week=1, hour=0, minute=0),
"options": {"queue": settings.BEAGLE_CHECK_FILES_QUEUE},
},
"check_staged_file_cleanup": {
"task": "file_manager.tasks.check_for_clean_up",
"schedule": crontab(hour=2, minute=0),
"options": {"queue": settings.BEAGLE_FILE_MANAGER_QUEUE},
},
}
1 change: 0 additions & 1 deletion beagle_etl/copy_service/__init__.py

This file was deleted.

66 changes: 0 additions & 66 deletions beagle_etl/copy_service/copy_service.py

This file was deleted.

18 changes: 0 additions & 18 deletions beagle_etl/copy_service/echo_callback.py

This file was deleted.

8 changes: 8 additions & 0 deletions beagle_etl/exceptions.py
Original file line number Diff line number Diff line change
Expand Up @@ -100,3 +100,11 @@ class IncorrectlyFormattedPrimaryId(ETLExceptions):
"""

code = 112


class FailedToFetchRequestMetadata(ETLExceptions):
"""
Failed to fetch request metadata
"""

code = 113
Loading
Loading