Skip to content

feat: CLIN-4328 - batch ids and sequencing ids Part 1 #584

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 7 commits into from
Jul 11, 2025

Conversation

creativeyann17
Copy link
Contributor

PR qui rajoute la possibilitee de passer sequencing_ids en param de:

  • etl
  • etl_ingest

Cela s'inscrit dans la futur flot ou etl_run, une fois la generation des VCFs, Exomisers termine, pourra appeler etl avec la liste des sequening_ids et realiser une release comme on a l'habitude de faire de facon transparente.

La scope de la PR a ete volontairement reduit et n'inclut pas la partie ou les ids sont propages dans le code et envoyes vers les ETLs, ca faisait trop gros.

Le but de la PR est aussi de rester retro-compatible avec l'existant, tout les endroit qui utilisent detect_batch_type pour savoir ce qui doit etre skip ou pas.

Voici a quoi ressemble etl:

Screenshot from 2025-06-06 21-52-35

Vous avez ici un exemple ou un ensemble de batchs ainsi que de sequencings ont ete envoyes en param, etl accepte ce cas mais etl_ingest va se plaindre si on lui demande de se lancer sur des choses qui ont des analyses type differents. etl va donc realiser un routage:

  1. tout ce qui est batch id est lance comme avant: un etl_ingest par batch_id
  2. les sequencing ids sont regroupes par type de batch germine, somatic et on lance etl_ingest soit 1 ou 2 fois.
  3. toutes les fonctions qui se basent sur le task_instance.xcom_pull(task_ids='detect_batch_type') devraient toujours foncitonner pour determiner ce qui doit etre fait ou skip.

Ainsi etl_ingest se retrouve toujours dans une situation ou une run = 1x batch type ce qui permet de garder toute la logique existante.

detect_batch_type a eut bcp de modifs et d'aller-retours d'idees, dont on peut discuter.

@creativeyann17 creativeyann17 changed the title feat: CLIN-4328 - batch ids and sequencing ids feat: CLIN-4328 - batch ids and sequencing ids Part 1 Jun 9, 2025
@LysianeBouchard
Copy link
Contributor

Je présume que la partie dans etl.py dédiée à enrich sera couverte plus tard?

if type(lst) is str:
lst = [lst]
if lst and len(lst) > 0 and all(s != "" for s in lst):
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ici, si l'un des éléments de la list est un string vide, on renvoie une liste vide. C'est bien ce qu'on veut et pas, par exemple, juste enlever les string vide de la liste?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

je vais supprimer cette fonction

if type(lst) is str and lst.strip() != "":
lst = [lst]
if lst and len(lst) > 0 and all(s.strip() != "" for s in lst):
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Je vois que le petit comportement qui m'inquiétait est encore présent. Ici, quand un des éléments de la liste est un string vide, on retourne une liste vide. On ne voudrait pas juste filtrer ces éléments au lieu de retourner une liste vide?

Comment on lines 134 to 135
if sequencing_ids:
arguments = arguments + ['--sequencing_ids', sequencing_ids] # probably wont work out of the box, cause sequencing_ids is a XCom param
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Si on met un type liste dans l'ETL, il faut passer --sequencingId pour chaque sequencing_id à passer. Aussi je suggère de respecter le case de batchId (camelCase).

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Et si la liste de sequencing_ids provient du output de la task get_sequencing_ids, tu auras bien une liste et non un Xcom.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

airflow est pas de ton avis sur ce dernier point ... peut-etre je deplacerai build_etl_job_arguments dans la partie execute

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah bah parfait ca a fonctionne, donc je confirme que build_etl_job_arguments a cet endroit du code batch_id et sequencing_ids sont toujours sous forme de XCOM, param templates.

Je l'ai change de place et mis dans execute() et la c'est tout beau

 Arguments for Spark job: ['snv_somatic', '--config', 'config/qa.conf', '--steps', 'default', '--app-name', 'etl_normalize_snv_somatic', '--sequencingId', '1265158,1265143']
...
Exception in thread "main" java.lang.Exception: Missing argument: -b --batchId <str>
Unknown arguments: "--sequencingId" "1265158,1265143"
Expected Signature: snv_somatic
  -c --config <str>    Config path
  -s --steps <steps>   Steps
  -a --app-name <str>  App name
  -b --batchId <str>   Batch id

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"--sequencingId" "1265158,1265143" faudrait que ce soit "--sequencingId" "1265158" "--sequencingId" "1265143" pour que mainargs le traite comme une liste.

Copy link
Contributor

@LysianeBouchard LysianeBouchard left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Je donne le approve pour clarifier que mes commentaires ont été adressés.

Cependant, je crois que c'est pertinent de régler le problème avec la logique dupliquée avec Franklin et bien nous entendre sur quand on veut utiliser les sequencing ids et quand on veut utiliser les analysis id.

Copy link
Member

@laurabegin laurabegin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

J'utiliserai tes versions de fonctions dans Franklin sans problème. Juste checker pour passer la liste de --sequencingId à mainargs.

@creativeyann17 creativeyann17 merged commit 68c84ad into master Jul 11, 2025
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

3 participants