Pharmaceutical Drugs and their Targets
Domain
A pharmaceutical portfolio is a collection of drug compounds, their respective indications, and their targets. A pharmaceutical company or drugstore organizes its pharmaceutical products into one or more portfolios. A drug portfolio thus contains multiple pharmaceuticals, with each pharmaceutical containing a link to one or more of its targets in the human body. This lends itself to be modeled as a graph. Each pharmaceutical and drug target can also have a distinct set of attributes which also fit nicely into the property graph model. Within the examples found in this use case, most drug targets happen to be G-protein coupled receptors (GPCRs), for which structures have only recently been solved in the last several years.
A drug can have one or more targets. A target can be targeted by one or more drugs. This is not a complete solution for all the drug portfolio use cases but provides a good starting point.
All categories by Depth
MATCH p=(cats:Category)-[:PARENT|PARENT*]->(cat:Portfolio)
RETURN LENGTH(p) AS Depth, COLLECT(cats.name) AS Categories
ORDER BY Depth ASC
All categories of a given depth
MATCH p=(cats:Category)-[:PARENT*]->(cat:Portfolio)
WHERE cat.name='Pharmaceutical Portfolio' AND length(p)=1
RETURN cats.name AS `Categories of Given Level`
ORDER BY cats.name
All sub-categories of a given category
MATCH (cats:Category)-[:PARENT]->(parentCat:Category)
MATCH (parentCat)-[:PARENT*]->(c:Portfolio)
RETURN parentCat.name AS Parent, COLLECT(cats.name) AS SubCategories
All parents and their child categories
MATCH (child:Category)-[:PARENT*]->(parent)
RETURN parent.name AS Parent, COLLECT(child.name) AS Children
All parent and their IMMEDIATE children
MATCH (child:Category)-[:PARENT]->(parent)
RETURN labels(parent), parent.name AS Parent, COLLECT(child.name) AS Children
Is this page helpful?