#1325 closed enhancement (fixed)
Lists of items (similar funcion as biomaterial lists)
Reported by: | Jari Häkkinen | Owned by: | Nicklas Nordborg |
---|---|---|---|
Priority: | major | Milestone: | BASE 3.5 |
Component: | core | Version: | 2.12 |
Keywords: | Cc: |
Description
Starting to work with biomaterials and biomaterial lists makes us realize that it would be nice to extend the list creation functionality down to raw bioassays. We would like to be able to filter say extracts and the get a list of all raw bioassays associated to this list. (Of course adding this functionality could include hyb and scan lists but it is most urgent for raw bioassays)
Change History (76)
follow-up: 2 comment:1 by , 15 years ago
comment:2 by , 15 years ago
Replying to nicklas:
If we are going to do this it should be a generic 'list-of-items' functionality that also mergers with 'list-of-biomaterials' functionality. The current 'list-of-biomaterials' functionality can't be used except for copy-and-paste and we don't want to have lots of code that is similar but slightly different.
If this can be made generic so that lists can handle different items it would be most useful. For a generic 'list-of-items' functionality the important core of the functionality would be to create item lists and to be able to create “child” and “parent” item lists.
One user case (basically the ticket title):
- 1. View a table listing of biomaterials, e.g., displaying five samples.
- 2. Create an item list containing Rawbioassays derived from the listed samples, i.e., those Rawbioassays that are associated with the 5 listed samples.
To be able to handle items from Biosource to Rawbioassay (Biosource, Sample, Extract, Labeled extract, Hybridization, Scan, Rawbioassay) would last a long way.
If the 'list-of-items' functionality could be extended to handle additional items this would be useful as well.
Conceivable user cases involving array designs:
- 1a. From array design list view, list array design X
- 1b. Create item list of hybridizations, i.e., hybridizations that are associated to array slides of array design X
- 2a. From hybridization list view, list a number of hybridizations
- 2b. Create item list of array designs, i.e., array designs for array slides associated with the listed hybridizations.
comment:3 by , 15 years ago
Milestone: | → BASE 2.x+ |
---|
comment:4 by , 10 years ago
Milestone: | BASE Future Release → BASE 3.5 |
---|---|
Owner: | changed from | to
Status: | new → assigned |
Summary: | Create list of raw bioassays from biomaterial view (similar funcion as biomaterial lists) → Lists of items (similar funcion as biomaterial lists) |
comment:5 by , 10 years ago
(In [6738]) References #1325: Lists of items (similar funcion as biomaterial lists)
Added ItemList
as a new item type for holding lists of any type of items. In principle, the underlying implementation can store any type of items, but since we need to support this in the GUI as well, the Listable
interface was introduced as a tagging interface for items that we want to put in lists. The initial items type supporting this:
- Biomaterial (Biosource, Sample, Extract)
- Bioassays (Physical, Derived and Raw)
- Files
Adding support for more item types is not difficult, but requires some work in the GUI.
I don't know yet how to handle the "old" BioMaterialList
. There is a lot of existing functionality when it comes to working with biomaterial lists and creating lists with parent or child items.
The new funcationality can replace this and it would be relatively easy to transfer existing biomaterial lists to item lists, but API-wise it would introduce a lot of binary incompatibilities. But keeping the biomaterial lists as a separate functionality is not a very good idea either, so maybe it's worth to break the binary compatibility in this case...
comment:6 by , 10 years ago
comment:7 by , 10 years ago
comment:8 by , 10 years ago
(In [6741]) References #1325: Lists of items (similar funcion as biomaterial lists)
Adding functionality to keep item lists up to date when deleting items from the database. Since this should be possible we must check/update two things:
- The size of item lists must be decreased if an item in the list is deleted
- The entry in the
ItemListMembers
table must be deleted
This is done in BasicItem.onBeforeCommit()
for all Listable
items.
comment:9 by , 10 years ago
(In [6742]) References #1325: Lists of items (similar funcion as biomaterial lists)
Started with GUI for working with item lists. Current functionality is limited and only includes listing, creating/editing and viewing the "ItemList" item. It is not possible to add/view members to the list, merge lists or use the lists for filtering.
comment:10 by , 10 years ago
comment:11 by , 10 years ago
comment:12 by , 10 years ago
comment:13 by , 10 years ago
comment:14 by , 10 years ago
(In [6747]) References #1325: Lists of items (similar funcion as biomaterial lists)
Adding columns for subtypable items and registered items (=items that have an automatic registration date recorded). Note that most items use the same underlying database proprety execept samples and extracts which use the date from the linked creation event item.
comment:15 by , 10 years ago
comment:16 by , 10 years ago
comment:17 by , 10 years ago
(In [6750]) References #1325: Lists of items (similar funcion as biomaterial lists)
Added functionality for creating a new item list from the regular list view. The samples list view has been used for testing.
Note that there is no support for walking up the parent/child chain here any longer since it felt like a confusing way to do things.
The new idea is that lists should be created at various levels and then use the "union/intersection" functionality to create a final list by checking for members using the entire parent/child chain.
comment:18 by , 10 years ago
(In [6751]) References #1325: Lists of items (similar funcion as biomaterial lists)
Added item list -> itemsubtype/rawdatatype link which is intended to be used as a recommendation for the types of items to be members of the list. The raw data type is used for raw bioassay lists and the item subtype for other lists.
comment:19 by , 10 years ago
comment:20 by , 10 years ago
comment:21 by , 10 years ago
comment:22 by , 10 years ago
comment:23 by , 10 years ago
(In [6756]) References #1325: Lists of items (similar funcion as biomaterial lists)
Removed some functionality related to biomaterial lists and replaced that with item lists:
- Filter on list pages for biosources, samples, extracts and biowells
- Create biomaterial list button on the same list pages
- Removed biomaterial lists from "Item overview" completely.
Installation now create Item.ITEMLIST
using the same code as Item.BIOMATERIALLIST
which should make it a lot easier when upgrading since we don't have to remap permissions, annotation types, any-to-any-links, stored filters etc. that use the code in order to work.
comment:24 by , 10 years ago
(In [6757]) References #1325: Lists of items (similar funcion as biomaterial lists)
Added update script for moving existing biomaterial lists to item lists. ID values are re-used. The old database tables are removed and property filters on biomaterial lists are updated to filter on item lists instead.
comment:25 by , 10 years ago
comment:26 by , 10 years ago
comment:27 by , 10 years ago
comment:28 by , 10 years ago
comment:29 by , 10 years ago
(In [6769]) References #1325: Lists of items
Improved code for printing out the synchronization filter on the information page. Instead of jus using the PropertyFilter.toString()
method a PropertyFilterFormatter
is used. This makes some cosmetic changes as well as loading names of annotation types, etc. which are used instead of the ID values.
comment:30 by , 10 years ago
(In [6770]) References #1325: Lists of items
Re-factored the syn with filter implementation. Each item list can now have multiple "Synchronization filters". This is now it's own item (Item.SYNCFILTER
) which is a child item to item an item list.
Each filter have settings for the relation to the type of items it filters on (eg. parent or child items).
The ListableChildItems
and ListableParentItems
annotations was added to make it possible to annotate a class which parent and child item types it can navigate to.
The GUI has been updated to make it possible to create and specify filters for a list, but all synchonrization code has been temporarily removed since it no longer works.
comment:31 by , 10 years ago
comment:32 by , 10 years ago
(In [6772]) References #1325: Lists of items
Added functionality for keeping track of the sync status of a single SyncFilter
. Each time a synchronization is made, an MD5 value is calculated from the ID:s of items matching a filter. If the number of ID and their MD5 value doesn't change the filter is assumed to be in sync. Note that parent/child relationships are not taken into account so the even if a filter appears to be in sync it may result in a different child/parent list.
It could also be a performance hog to load this information every time on the view page, so it may have to be changed to lazy-loading in the future.
comment:33 by , 10 years ago
comment:34 by , 10 years ago
(In [6774]) References #1325: Lists of items
Started to implement parent/child loading of synchronization filters.
The foundation is two new interfaces SourceItemTransformerFactory
and SourceItemTransformer
.
The factory implementations should target a specific end item type (eg. the member item type of an item list). Each factory implementation has a list of supported source items and should be able to create transformers that takes a list of source items and transforms them to the target item type.
For example, the transformer factory for SAMPLE should be able to create transformers for transforming from other items types to the SAMPLE items.
The new interfaces also replaces the ListableParentItems
and ListableChildItems
annotations that was used to specify supported parent/child transformations. They will be removed as soon as a few more factories are in place.
To begin with only the transformations between BIOSOURCE->SAMPLE and SAMPLE->SAMPLE has been implemented.
comment:35 by , 10 years ago
(In [6775]) References #1325: Lists of items
Added transformer factories for biosource and extract levels.
Added transformer implementations for Extrac<->Extract, Extract<->Sample, Sample->Sample (parent) Sample->BioSource
This should make it possible to implement all functionality that existed with th old biomaterial lists. The test cases has been updated to use the new code but the old implementation is still used by the annotation inheritance loading and the item overview.
comment:36 by , 10 years ago
(In [6776]) References #1325: Lists of items
Remove action when deleting biomaterial that tried to update size of "BioMaterialLists" which failed since those lists no longer exists. The corresponding functionality for item lists is already implemented in BasicItem
.
comment:37 by , 10 years ago
(In [6777]) References #1325: Lists of items
Added stub source item transformer factories for the remaining item types (Physical bioassay, derived bioassay and raw bioassay). Currently they only return information about support parent/child item types.
This means that the ListableParentItems
and ListableChildItems
could be removed.
comment:38 by , 10 years ago
comment:39 by , 10 years ago
comment:40 by , 10 years ago
comment:41 by , 10 years ago
comment:42 by , 10 years ago
comment:43 by , 10 years ago
comment:44 by , 10 years ago
(In [6791]) References #1325: Lists of items
Adding support for keeping track of extracts that we should treat as parents when we pass through the physical bioassay level down and up.
Basically, the CollectExtracts
class is loading and storing all extracts that we see on the derived and raw bioassay level. Then, when we move upwards from the physical bioassay it will match the loaded parent extracts with those seen earlier.
All transformers are now expected to work in the child->parent direction.
comment:45 by , 10 years ago
(In [6792]) References #1325: Lists of items
Adding final transformation steps in the parent->child direction on the derived bioassay and raw bioassay level. The physical bioassay->derived bioassay transformation should now be able to keep track of parent extracts if the start level was from extract or higher.
comment:46 by , 10 years ago
comment:47 by , 10 years ago
comment:48 by , 10 years ago
comment:49 by , 10 years ago
comment:50 by , 10 years ago
comment:51 by , 10 years ago
comment:52 by , 10 years ago
comment:53 by , 10 years ago
comment:54 by , 10 years ago
comment:55 by , 10 years ago
comment:56 by , 10 years ago
comment:57 by , 10 years ago
comment:58 by , 10 years ago
comment:60 by , 10 years ago
comment:61 by , 10 years ago
comment:62 by , 10 years ago
comment:63 by , 10 years ago
comment:64 by , 10 years ago
comment:65 by , 10 years ago
comment:66 by , 10 years ago
comment:67 by , 10 years ago
comment:68 by , 10 years ago
comment:69 by , 10 years ago
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
comment:70 by , 10 years ago
(In [6845]) References #1325: Lists of items
Move subtype filtering to be the first filter and use this to limit the transformed transformed parent/child items before reporting the matching numbers. The end result is identical, but the numbers makes more sense in from a user perspective. For example, when creating a "specimen" item list it seems strange that a filter on the "RNAQC" child level that matches a few hundred items suddenly matches several thousands of parent items. This happened beacuse the subtype filter was not applied until after all other filters and all samples in the parent/child chain that links to the "RNAQC" level was selected by the transformation.
comment:71 by , 10 years ago
(In [6846]) References #1325: Lists of items
Moving 100% progress report outside the resync method since the transaction has not yet been committed and this may take some time. The problem is that the progress dialog will close automatically when 100% is reached but the worker thread may still be working with the commit and actual database update.
The synchronization now replaces the 'members' set with a new set which is considerably faster (Hibernate is able to make better optimizations) if there are big changes in the set.
If we are going to do this it should be a generic 'list-of-items' functionality that also mergers with 'list-of-biomaterials' functionality. The current 'list-of-biomaterials' functionality can't be used except for copy-and-paste and we don't want to have lots of code that is similar but slightly different.