eMetaboHUB / Forum-DiseasesChem

A Knowledge Graph from public databases and scientific literature to extract associations between chemicals and diseases.
Other
16 stars 6 forks source link

Integration of a filter on the MeSH hierarchy #7

Closed maximeDelmas closed 3 years ago

maximeDelmas commented 3 years ago

Context

When a user vizualise outputs from FORUM for a request like PubChem/ChEBI/ChemOnt -> MeSH, all the associations are sorted by q.value. Currently, the MeSH root column can be used to filter MeSH by main categories, but this filter is not practical on the interface. However, when downloading results in .csv, the Tree-Number(s) of each MeSH descriptor is also exported and users can manually filter associations using the MeSH hierarchy.

Desired Behaviour

As the user, I want to be able to filter the results based on the MeSH hierarchy, directly on the Web Interface. The user could select specific subsets of the MeSH tree, by selecting the related ancestors, to display only associations involved in those trees. For instance, for a given PubChem compound the user could filter the results to only see associations related to Brain Diseases, Metabolic, Lipid Metabolism Disorders and their child concepts, by selecting as parent- filters the MeSH descriptors Brain Diseases, Metabolic (Tree-Numbers C10.228.140.163, C18.452.132) and Lipid Metabolism Disorders (Tree-Number C18.452.584)

Solution ?

As a first solution, we could implement a form in which the user would be able to enter a set of MeSH descriptors he wants to use as parent filters to only display associations involving those MeSH or their child terms. A more advanced implementation would be to provide a representation of the MeSH Tree (like on the MeSH browser) with checkboxes to select the MeSH descriptors for which we only want to keep the subtrees.

npaulhe commented 3 years ago

first → I added the MeSH tree number/hierarchy (mouseover on "MeSH root value")

image

then I implemented the filter actions + its help

filter on any value:\ Screenshot from 2021-08-17 15-04-38

filter on MeSH tree hierarchy: Screenshot from 2021-08-17 15-04-49

bonus:

npaulhe commented 3 years ago

update CSS / icon

Screenshot from 2021-08-17 15-44-57

note @maximeDelmas ⇒ instead of displaying the filter under the "found XXX results for: yyy" text, we can display these data on 2 cols; col 1 for the filter, col 2 for the "found XXX results" text.

maximeDelmas commented 3 years ago

Nice !

The filter on any values in a very good idea !

For the filter on MeSH Tree, when the user enters a MeSH tree number, it should keep the MeSH descriptor that has this exact tree number, but also keep all the descendant MeSHs in the hierarchy. Descendant MeSHs are MeSHs for which their tree-number is rooted by the tree-number of their parents.

For example, if the user decides to filter by the MeSH Brain Diseases, which has the tree number: C10.228.140, it should keep the Brain Diseases descriptor, but also all the descendant descriptors, such as Acute Febrile Encephalopathy (C10.228.140.021), Amblyopia (C10.228.140.055), Chorea Gravidarum (C10.228.140.079.294)

We should discuss this with Florence Vinson, because maybe we could build a service in the FORUM-API to requests for all descendant MeSH descriptors, as some can have several parents, it could complixify the task ... Or maybe it's easier in front I don't know ...

We should also plan a meeting to discuss all of this ^^

npaulhe commented 3 years ago

Hi!

Yes we should plan a meeting ^^'

for your example: the use can entrer either "C10.228" or "C10.228.140" to have all "tree child" entries matched ☺

npaulhe commented 3 years ago

follow up in forum#71 gitlab issue (completed - will be implemented in next release