feat!(config, prepro, raw-reads-processing): create new raw-reads-processing microservice which handles raw reads validation - #6987
Conversation
f94d050 to
ddecc11
Compare
This comment was marked as outdated.
This comment was marked as outdated.
|
Claude finished @anna-parker's task in 2m 51s —— View job Review: file-processing microservice
All four issues flagged in the earlier review pass have been fixed in
The testing gap is also resolved — I reviewed the rest of the diff (k8s templates/values, CI workflows, config plumbing in One minor, non-blocking doc nit left inline in |
79e3a83 to
7048451
Compare
dd7b531 to
6af76a7
Compare
7048451 to
497a22e
Compare
|
@claude review |
|
Claude finished @anna-parker's task in 3m 50s —— View job Review: raw-reads-processing service
Previously flagged issues — statusThe service was renamed
Remaining issue: partial fix for the error-dropping early return
for category, file_list in files.items():
if not file_list:
continue
if category != FileCategory.RAW_READS:
message = (...)
return [self._annotation([file.name for file in file_list], message)]This still returns on the first non- Minor doc nits —
|
corneliusroemer
left a comment
There was a problem hiding this comment.
Haven't been able to go through everything in detail, I guess we can always change things later
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: d9157ae6cb
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
resolves #6906
partially resolves #6856
This PR moves all download and validation of submitted raw reads from the preprocessing to one raw reads processing service. It is currently disabled by default in the values.yaml and added as an override in the preview and e2e test values.yaml.
We decided to create a separate service as we will additionally check raw reads for human contamination using deacon, see #6916 and deacon requires almost 8G of RAM, we didnt want to add this requirement to each prepro pod so it made sense to have one service that runs deacon. Additionally, it made sense to perform all file validation steps in the same place as downloading files from S3 twice (in prepro and the file-processing service) didnt make sense.
This PR moves code from prepro into this service and additionally wraps the ENA raw read file validation JAR, called by the ENA submission CLI (see our fork: https://github.com/loculus-project/readtools) to ensure that submitted files are in a format accepted by ENA.
Breaking Change
Now, if an administrator would like to allow users to supply raw read input files and use the nextclade preprocessing pod they need to additionally enable the file processing service by adding the following to the values.yaml - this PR enables this on the previews and e2e but not in the default values.yaml so current users of Loculus should not be affected:
Screenshot
PR Checklist
Potential Future Issues
On the preview I submitted raw read files of invalid formats and confirmed they were rejected, however I also noted that raw reads validation is quite slow for larger files.
In my understanding users can still upload an interleaved file which will then be submitted to ENA as not a single (not paired) file in the manifest. 2 interleaved files can be submitted but should still get flagged as they are unlikely to share enough headers.
🚀 Preview: https://file-validation.loculus.org