Skip to content

Enable Immunopeptidomics measurement registration#1380

Draft
KochTobi wants to merge 10 commits intodevelopmentfrom
feature-1248/1248-enable-immunopeptidomic-measurement-and-data-registration
Draft

Enable Immunopeptidomics measurement registration#1380
KochTobi wants to merge 10 commits intodevelopmentfrom
feature-1248/1248-enable-immunopeptidomic-measurement-and-data-registration

Conversation

@KochTobi
Copy link
Contributor

@KochTobi KochTobi commented Feb 17, 2026

This PR enables users to register immunopeptidomics measurements in the data manager. Adresses #1248

Sub-PRs

sven1103 and others added 10 commits November 11, 2025 16:57
Given the user enters an condition that is already defined in another experimental group of the same experiment,
the app informs the user now about it, highlights which on is duplicate, and prevents them from submitting the task.
* Re-arrange fields

* remove unused import

* rename interface methods

* address sonar cloud issues

* clean up unchecked cast

* Move selection column into filter grid and fix types

* Fix missing import

* Move filter handling to client

* Make FilterGrid compatible with in memory data

* static factory methods for filter grid

* update item count

* freeze selection column

* Fix checkbox group display

Moves the display to vetical group

* Add functional interfaces

* use functional interfaces

* fetch item count on tab initialization

* Remove unused convenience api method

This method is unused and the FilterGridTab is designed to return the grid itself. This grid can be used to perform all required operations.

* Provide deselect method for FilterGrid.java

* Rename misleading method

* Introduce EntityListener preventing runtime entity updates

* add debug properties

* Provide read-only measurement repositories

* switch to lazy value change mode

* remove sortable responsibility from filtergrid

The setup of columns and their properties (e.g. sortable, comparator,...) is done outside the FilterGrid.java and must not be overwritten by the FilterGrid.java

* Change FilterGridTabSheet.java

* apply change method name

* Fix import

* Adapt existing components

* Replace with new measurement component

* remove unused field

* Fix test constructor

* correctly remove a tab

* Fix equals comparison

* add NgsMeasurementLookup.java

* move JPA repositories

* Add empty interface for PxpMeasurementLookup.java

* Implement NgsMeasurementLookup and PxpMeasurementLookup

* Finishe NGS case

* wire actions for ngs: measurement edit and export

* add refresh method to filtergrid

Previously existing refresh method was a result of weak encapsulation. Selection and refresh is handled correctly now.

* Adapt secondary feature actions change to delete by measurement id

* toggle grids based on measurement count

* replace deprecated method

* Remove old MeasurementDetailsComponent.java

* remove unused code

* adapt to pxp

does not contain pxp specific columns yet

* Fix action execution

* Add functionality to pxp buttons

* Fix missing variable assignment

* Fix scope of field to local variable

* Add missing pxp columns

* fix wrong button call

* add search for registration date

only for ngs and disregarding the time as this needs work with client time zones

* Fix css

* Remove unused component

* Introduce search by displayed time

* add properties for testing

* prevent nullpointer

* remove unused parameter

* Add missing properties to ngs

* search missing fields

* remove deleted interface

* Make instrument/msdevice and organisation searchable

Currently the ontology terms e.g. instrument and msdevice are not searchable as the oboid is only available at runtime in the java object and not stored in the database at the moment.

* fix css

* extract methods and only build grid if necessary

* Introduce SpecificationFactory

* Fix wrong class used

* Switch to builder

* Add search by facility for proteomics

Co-authored-by: steffengreiner <steffen.greiner@qbic.uni-tuebingen.de>

* injection volume shows whole number

Fixes injection volume display to show the integer value stored. Also improves the SpecificationFactory propertyContains method.

* Correctly build specification in PxpMeasurementFilter

* Improve json contains method

* Update interfaces

* use specification factory to simplify code

* refactor RemoteRawDataService.java

Refactors the class to avoid loading samples to determine the measurements and instead uses the experiment with the new lookup interfaces.

* update lookup interfaces

* use specific interfaces for easier lookup

* Replace lookup by sample by experiment

Previously all samples were loaded for a specific experiment. Then all measurements measuring these samples were loaded.
This commit directly searches for the experiment using the new interfaces.

* Add projectId to event data

Avoid unnecessary database calls. We can trust our domain here and forward the project id.

* use new method

* adapt filter creation

* Correctly set sort properties

Sets the sort properties for sortable columns and handles the refresh.

* check for measurements

* Remove unused code

* Address warnings

* Change event data to String

For JobrunR to easily read it and show it.

* Remove unused class

* Finish JavaDoc for FilterGrid.java

* Add Javadoc for FilterGridTabSheet.java

* Remove unused class

* Rename MeasurementDetailsComponentV2.java to MeasurementDetailsComponent.java

* Add JavaDoc for MeasurementDetailsComponent.java

* Add Javadoc for NgsMeasurementLookup.java

* Add spring security for measurement check

* Add Javadoc for SpecificationFactory.java

* Only return distinct raw datasets

* Add link to pattern specification in javadoc

* Provide JD

* Move lazy and inMemory configuration out of the FilterGrid.java

Co-authored-by: Sven F. <sven1103@users.noreply.github.com>

* Fix wrong method call

* Fix endless recursion

* Rename classes and add javadoc

* Remove unused interface

* Adapt expand icon css

Co-authored-by: Shraddha Pawar <Shraddha0903@users.noreply.github.com>

* Adapt expand icon css for pxp

Co-authored-by: Shraddha Pawar <Shraddha0903@users.noreply.github.com>

* Apply other way of filter grid configuration

Co-authored-by: Sven F. <sven1103@users.noreply.github.com>

* Adapt GridConfiguration

* Rename SpecificationFactory to JpaSpecifications

* rename method

* Add clarifying javadoc

Co-authored-by: Sven F. <sven1103@users.noreply.github.com>

* move date time format synchronization

missing javadoc

* remove unnecessary conversion

* use  life.qbic.application.commons.time.DateTimeFormat

* rename field and make the call explicit

* Add JavaDoc note on database dependency and prevent search for "%%"

* Ensure zoned formatting

* add JavaDoc

---------

Co-authored-by: KochTobi <kochtobi@users.noreply.github.com>
Co-authored-by: steffengreiner <steffen.greiner@qbic.uni-tuebingen.de>
Co-authored-by: Sven Fillinger <sven.fillinger@qbic.uni-tuebingen.de>
Co-authored-by: Sven F. <sven1103@users.noreply.github.com>
Co-authored-by: Shraddha Pawar <Shraddha0903@users.noreply.github.com>
@sonarqubecloud
Copy link

Quality Gate Failed Quality Gate failed

Failed conditions
0.0% Coverage on New Code (required ≥ 80%)
13.5% Duplication on New Code (required ≤ 3%)

See analysis details on SonarQube Cloud

@KochTobi KochTobi linked an issue Feb 17, 2026 that may be closed by this pull request
1 task
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Enable Immunopeptidomic Measurement and Data Registration

2 participants