For instance:
I have a network from
CREATE (a:Node {name: 'mola', type: 'Molecule'})
CREATE (g:Node {name: 'molg', type: 'Molecule'})
CREATE (b:Node {name: 'drgb', type: 'Drug'})
CREATE (h:Node {name: 'drgh', type: 'Drug'})
CREATE (c:Node {name: 'mola', type: 'Disease'})
CREATE (i:Node {name: 'disi', type: 'Disease'})
CREATE (j:Node {name: 'disj', type: 'Disease'})
CREATE (m:Node {name: 'dism', type: 'Disease'})
CREATE (d:Node {name: 'chemd', type: 'Chemical'})
CREATE (k:Node {name: 'chemk', type: 'Chemical'})
CREATE (e:Node {name: 'genee', type: 'Gene'})
CREATE (l:Node {name: 'genel', type: 'Gene'})
CREATE (f:Node {name: 'mola', type: 'DNA'})
MERGE (a)-[:REL {r: 'subclass_of'}]->(b)
MERGE (a)-[:REL {r: 'cure'}]->(c)
MERGE (a)-[:REL {r: 'inhibits'}]->(d)
MERGE (b)-[:REL {r: 'heals'}]->(d)
MERGE (c)-[:REL {r: 'causes'}]->(d)
MERGE (c)-[:REL {r: 'expands'}]->(e)
MERGE (d)-[:REL {r: 'kills'}]->(e)
MERGE (d)-[:REL {r: 'involved_in'}]->(f)
MERGE (b)-[:REL {r: 'heals'}]->(i)
MERGE (c)-[:REL {r: 'part_of'}]->(j)
MERGE (c)-[:REL {r: 'expands'}]->(k)
MERGE (f)-[:REL {r: 'kills'}]->(l)
MERGE (b)-[:REL {r: 'heals'}]->(i)
MERGE (c)-[:REL {r: 'part_of'}]->(j)
MERGE (c)-[:REL {r: 'expands'}]->(k)
MERGE (l)-[:REL {r: 'kills'}]->(l)
MERGE (m)-[:REL {r: 'heals'}]->(i)
MERGE (a)-[:REL {r: 'part_of'}]->(e)
MERGE (c)-[:REL {r: 'expands'}]->(m)
MERGE (e)-[:REL {r: 'interacts_with'}]->(f)
Using
MATCH (source),(target)
WHERE source<> 'None' AND target<>'None' AND source<target
CALL apoc.algo.allSimplePaths(source, target, '', 4)
YIELD path AS P
RETURN P, length(P)
I got:
P length(P)
(mola)-[:REL {r: 'subclass_of'}]->(drgb),1
(mola)-[:REL {r: 'inhibits'}]->(chemd),1
(drgb)-[:REL {r: 'heals'}]->(disi),1
(chemd)-[:REL {r: 'kills'}]->(genee),1
(chemd)-[:REL {r: 'involved_in'}]->(mola),1
(disi)<-[:REL {r: 'heals'}]-(dism),1
(mola)-[:REL {r: 'inhibits'}]->(chemd)<-[:REL {r: 'heals'}]-(drgb),2
(mola)-[:REL {r: 'part_of'}]->(genee)<-[:REL {r: 'expands'}]-(mola),2
(mola)-[:REL {r: 'inhibits'}]->(chemd)<-[:REL {r: 'causes'}]-(mola),2
(mola)-[:REL {r: 'subclass_of'}]->(drgb)-[:REL {r: 'heals'}]->(disi),2
(mola)-[:REL {r: 'cure'}]->(mola)-[:REL {r: 'part_of'}]->(disj),2
(mola)-[:REL {r: 'cure'}]->(mola)-[:REL {r: 'expands'}]->(dism),2
(mola)-[:REL {r: 'part_of'}]->(genee)<-[:REL {r: 'kills'}]-(chemd),2
(mola)-[:REL {r: 'inhibits'}]->(chemd)-[:REL {r: 'involved_in'}]->(mola)-[:REL {r: 'kills'}]->(genel),3
(mola)-[:REL {r: 'inhibits'}]->(chemd)-[:REL {r: 'kills'}]->(genee)-[:REL {r: 'interacts_with'}]->(mola),3
(mola)-[:REL {r: 'part_of'}]->(genee)<-[:REL {r: 'kills'}]-(chemd)-[:REL {r: 'involved_in'}]->(mola),3
(mola)-[:REL {r: 'cure'}]->(mola)-[:REL {r: 'expands'}]->(genee)-[:REL {r: 'interacts_with'}]->(mola),3
(mola)-[:REL {r: 'cure'}]->(mola)-[:REL {r: 'causes'}]->(chemd)-[:REL {r: 'involved_in'}]->(mola),3
(mola)-[:REL {r: 'subclass_of'}]->(drgb)-[:REL {r: 'heals'}]->(chemd)-[:REL {r: 'involved_in'}]->(mola),3
(drgb)-[:REL {r: 'heals'}]->(disi)<-[:REL {r: 'heals'}]-(dism)<-[:REL {r: 'expands'}]-(mola),3
(drgb)-[:REL {r: 'heals'}]->(chemd)-[:REL {r: 'kills'}]->(genee)<-[:REL {r: 'expands'}]-(mola),3
(drgb)<-[:REL {r: 'subclass_of'}]-(mola)-[:REL {r: 'part_of'}]->(genee)<-[:REL {r: 'expands'}]-(mola),3
(drgb)<-[:REL {r: 'subclass_of'}]-(mola)-[:REL {r: 'inhibits'}]->(chemd)<-[:REL {r: 'causes'}]-(mola),3
(drgb)-[:REL {r: 'heals'}]->(chemd)<-[:REL {r: 'inhibits'}]-(mola)-[:REL {r: 'cure'}]->(mola),3
(drgb)-[:REL {r: 'heals'}]->(chemd)<-[:REL {r: 'causes'}]-(mola)-[:REL {r: 'part_of'}]->(disj),3
(mola)<-[:REL {r: 'cure'}]-(mola)-[:REL {r: 'subclass_of'}]->(drgb)-[:REL {r: 'heals'}]->(chemd)-[:REL {r: 'involved_in'}]->(mola),4
(disi)<-[:REL {r: 'heals'}]-(drgb)-[:REL {r: 'heals'}]->(chemd)<-[:REL {r: 'causes'}]-(mola)-[:REL {r: 'part_of'}]->(disj),4
(disi)<-[:REL {r: 'heals'}]-(drgb)<-[:REL {r: 'subclass_of'}]-(mola)-[:REL {r: 'cure'}]->(mola)-[:REL {r: 'part_of'}]->(disj),4
(disi)<-[:REL {r: 'heals'}]-(drgb)-[:REL {r: 'heals'}]->(chemd)<-[:REL {r: 'causes'}]-(mola)-[:REL {r: 'expands'}]->(dism),4
(disi)<-[:REL {r: 'heals'}]-(drgb)<-[:REL {r: 'subclass_of'}]-(mola)-[:REL {r: 'cure'}]->(mola)-[:REL {r: 'expands'}]->(dism),4
(drgb)<-[:REL {r: 'subclass_of'}]-(mola)-[:REL {r: 'cure'}]->(mola)-[:REL {r: 'expands'}]->(genee)-[:REL {r: 'interacts_with'}]->(mola),4
My Question:
How can I randomly return only the subset of the path- representative of all path lengths? Eg.
(mola)-[:REL {r: 'inhibits'}]->(chemd),1
(drgb)-[:REL {r: 'heals'}]->(disi),1
(chemd)-[:REL {r: 'kills'}]->(genee),1
(mola)-[:REL {r: 'part_of'}]->(genee)<-[:REL {r: 'expands'}]-(mola),2
(mola)-[:REL {r: 'inhibits'}]->(chemd)<-[:REL {r: 'causes'}]-(mola),2
(mola)-[:REL {r: 'subclass_of'}]->(drgb)-[:REL {r: 'heals'}]->(disi),2
(mola)-[:REL {r: 'cure'}]->(mola)-[:REL {r: 'causes'}]->(chemd)-[:REL {r: 'involved_in'}]->(mola),3
(mola)-[:REL {r: 'subclass_of'}]->(drgb)-[:REL {r: 'heals'}]->(chemd)-[:REL {r: 'involved_in'}]->(mola),3
(drgb)-[:REL {r: 'heals'}]->(disi)<-[:REL {r: 'heals'}]-(dism)<-[:REL {r: 'expands'}]-(mola),3
(mola)<-[:REL {r: 'cure'}]-(mola)-[:REL {r: 'subclass_of'}]->(drgb)-[:REL {r: 'heals'}]->(chemd)-[:REL {r: 'involved_in'}]->(mola),4
(disi)<-[:REL {r: 'heals'}]-(drgb)-[:REL {r: 'heals'}]->(chemd)<-[:REL {r: 'causes'}]-(mola)-[:REL {r: 'part_of'}]->(disj),4
(drgb)<-[:REL {r: 'subclass_of'}]-(mola)-[:REL {r: 'cure'}]->(mola)-[:REL {r: 'expands'}]->(genee)-[:REL {r: 'interacts_with'}]->(mola),4
Thanks for your help.