Re: [opencog-dev] PartitionLink, biological pathways, human bodies, etc.

14 views
Skip to first unread message

Linas Vepstas

unread,
Aug 7, 2017, 3:20:03 PM8/7/17
to Ben Goertzel, opencog, Michael Duncan, link-grammar, Amir P
Nothing wrong with lots of arrows arranged into loops. If I were doing this, this is what I would propose:

The single most important #1 special super-duper innovation I have recently discovered is to represent biological pathways like so:

SectionLink
    CatalystNode "alpha-ketoglutarate dehydrogenase"
    ConnectorSet
         Connector
              SubstanceNode "NAD^+"
              Direction "input"
         Connector
               Substancenode "COA-SH"
               Direction "input"
         Connector
               Substancenode "alpha-ketoglutarate"
               Direction "input"
         Connector
               Substancenode"NADH"
               Direction "output"
         Connector
               Substancenode"H^+"
               Direction "output"
         Connector
               Substancenode"CO^2"
               Direction "output"
         Connector
              Substancenode"Succynil-COA"
              Direction "output"

The above describes a single step in the Krebs cycle, having the indicated inputs and outputs -- three inputs, four outputs, the directionality of the half-arrows (i.e. the "connectors" explicitly indicated with the DirectionLink). At the center of it all is the CatalystNode


See https://en.wikipedia.org/wiki/Citric_acid_cycle#/media/File:Citric_acid_cycle_with_aconitate_2.svg  lower-right-hand side.

The correct way to visualize this is like a spider: the spider-body is the CatalystNode and the spider has seven legs: three input legs, four output legs.

Alternately, visualize this as a jigsaw puzzle piece, with seven tabs on it: four tabs sticking out, and three hole areas cut in.  You can assemble the entire Krebs cycle by fitting together these jigsaw puzzle pieces.

In link-grammar, these sections are called "disjuncts". In sheaf theory, these objects are called "sections of a sheaf". In biology, they are called "catalysts".

--linas

p.s. note that I am using a "ConnectorSet" in the above, instead of a "ConnectorMemberLink"  ... perhaps I should use a ConnectorMemberLink... However I doubt that there are biological catalysts with more than 3-4-5 inputs and 3-4-5 outputs.  So I'm willing to let it slide, for now. The alternative rep would be this:

ConnectorMemberLink
    CatalystNode "alpha-ketoglutarate dehydrogenase"
    Connector
          SubstanceNode "NAD^+"
          Direction "input"

plus six more of the above.  it is very very suspicious that the above resembles this:

EvaluationLink
    PredicateNode "alpha-ketoglutarate dehydrogenase"
    ListLink
          ConceptNode "NAD^+"
          ConceptNode "input"

however, I would strongly urge against this last representation!

--linas


On Mon, Aug 7, 2017 at 1:31 PM, Ben Goertzel <b...@goertzel.org> wrote:
a pathway in biology is actually a network with directed arrows and generally lots of loops.... there are even some hyperlinks e.g. for catalysis... a pathway is a subhypergraph...



On Aug 7, 2017 11:25, "Linas Vepstas" <linasv...@gmail.com> wrote:
no clue why its appropriate for biological pathways. Mike is designing that, not me.

Anyway, a "pathway" is an ordered sequence where the ordering matters. Neither SetLink, nor AndLink are ordered. So if you actually want to have a path, i.e. a sequence of directed arrows, well .. you  need to find a representation of  biological pathways as directed arrows. But this is familiar ground, for opencog...

--linas

On Mon, Aug 7, 2017 at 1:21 PM, Ben Goertzel <b...@goertzel.org> wrote:
OK I get that... but I don't see why it is appropriate for biological
pathways...

On Tue, Aug 8, 2017 at 2:19 AM, Linas Vepstas <linasv...@gmail.com> wrote:
> First, lets review SetLink:
>
>  SetLink
>     ConceptNode "x"
>     ConceptNode "y"
>     ConceptNode "z"
>
>
>  EquivalenceLink
>     ConceptNode "last three letters of the alphabet"
>     SetLink
>        ConceptNode "x"
>        ConceptNode "y"
>        ConceptNode "z"
>
>
>  MemberLink
>      ConceptNode "x"
>      ConceptNode "last three letters of the alphabet"
>   MemberLink
>      ConceptNode "y"
>      ConceptNode "last three letters of the alphabet"
>   MemberLink
>      ConceptNode "z"
>      ConceptNode "last three letters of the alphabet"
>
> Again, with TV's:
>
>   MemberLink  <1.0>
>      ConceptNode "z"
>      ConceptNode "last letters of the alphabet"
>   MemberLink  <0.9>
>      ConceptNode "w"
>      ConceptNode "last letters of the alphabet"
>   MemberLink  <0.8>
>      ConceptNode "s"
>      ConceptNode "last letters of the alphabet"
>   MemberLink  <0.2>
>      ConceptNode "m"
>      ConceptNode "last letters of the alphabet"
>
>
>
> Sooo .. AndMemberLink would be just like the above, except that whereever
> you see SetLink above, you would have AndLink, and wherever you see
> MmeberLink above, you would have AndMemeberLink.
>
> --linas
>
>
>
>
> On Mon, Aug 7, 2017 at 1:11 PM, Ben Goertzel <b...@goertzel.org> wrote:
>>
>> I don't understand the proposed semantics of AndMemberLink, could you
>> explain?
>>
>>
>>
>> On Sat, Aug 5, 2017 at 1:07 AM, Michael Duncan <mjsd...@gmail.com>
>> wrote:
>> > i actually think an AndLink-like semantics better fits biochemical
>> > pathways
>> > at a computationally tractable level than partitions in that below the
>> > level
>> > of a whole organism, where one pathway ends and another begins is
>> > largely
>> > arbitrary.  also,  if one link is missing then the whole thing doesn't
>> > work
>> > but the last bit of a dead end might be the start of another path that
>> > goes
>> > to the same place, more like words and phrases that can be rearranged
>> > and
>> > swapped in different ways to say the same thing.  linus idea of
>> > AndMemberLinks and OrMemeberLinks would get around the size limitation
>> > and
>> > also seem like they would be useful for reasoning on moses models.
>> >
>> > On Monday, July 31, 2017 at 5:55:16 PM UTC-4, linas wrote:
>> >>
>> >> Hi Ben, Mike,
>> >>
>> >>
>> >> On Fri, Jul 21, 2017 at 9:41 PM, Ben Goertzel <b...@goertzel.org>
>> >> wrote:
>> >>>
>> >>> Some interesting representational issues have come up in the context
>> >>> of Atomspace representation of pathways, which appear to have more
>> >>> general implications…
>> >>>
>> >>> It seems the semantics we want for a biological pathway is sort of
>> >>> like “the pathway P is a set of relationships R1, R2, …, R20” in kinda
>> >>> the same sense that “the human body is a set of organs: brain, heart,
>> >>> lungs, legs, etc.”
>> >>>
>> >>> First of all it seems what we have here is a part of relationship…
>> >>> maybe
>> >>> we want
>> >>>
>> >>> PartLink
>> >>>     ConceptNode “heart”
>> >>>     ConceptNode “human-body”
>> >>>
>> >>> and
>> >>>
>> >>> PartLink
>> >>>     >relationship<
>> >>>     >pathway<
>> >>>
>> >>> PartLink and PartOfLink have come and gone in
>> >>> OpenCog/Novamente/Webmind history...
>> >>>
>> >>> An argument that PartLink should have fundamental status and a
>> >>> well-defined fuzzy truth value is given in this paper:
>> >>>
>> >>> https://www.academia.edu/1016959/Fuzzy_mereology
>> >>>
>> >>> However what we need for biological pathways and human bodies seems
>> >>> like a bit more.   We want to say that a human body consists of a
>> >>> certain set of parts... not just that each of them is a part...  We're
>> >>> doing a decomposition.
>> >>>
>> >>> One way to do this would be
>> >>>
>> >>> PartitionLink
>> >>>    ConceptNode “human-body”
>> >>>    ListLink
>> >>>       ConceptNode “legs”
>> >>>       ConceptNode “arms”
>> >>>       ConceptNode “brain”
>> >>>       etc.
>> >>>
>> >>> Relatedly, we could also have
>> >>
>> >>
>> >> As mentioned earlier, there are several problems with this format.  One
>> >> is
>> >> the "oops I forgot to mention xyz in the list" or "gosh I should have
>> >> left
>> >> out pqr" and this becomes a big problem:  you have to delete the
>> >> PartitionLink, delete the ListLink, create a new list and partition.
>> >> In the
>> >> meanwhile, some other subsystem might be holding a handle to the old,
>> >> now-wrong PartitionLink, and there is no effective way of announcing
>> >> "hey
>> >> stop using that old thing, get my new thing now".
>> >>
>> >> A second problem is that the above doesn't have anywhere to hang
>> >> addtional
>> >> data: e.g. "legs are a big part of the human body, having a mas of
>> >> nearly
>> >> half of the body." You can't just slap that on as a (truth)value, cause
>> >> there's no where  to put that value.
>> >>
>> >> Third problem is that large list-links are hard to handle in the
>> >> pattern
>> >> matcher. Its much much harder to write a query of the form  "find me
>> >> all
>> >> values of $X where
>> >>
>> >> PartitionLink
>> >>    ConceptNode “human-body”
>> >>    ListLink
>> >>       ConceptNode “legs”
>> >>       VariableNode  “$X”
>> >>       ConceptNode “brain”
>> >>
>> >> because, ... well the ListLink is an ordrerd link, not an unordered
>> >> link.
>> >> If you forget to include the pqr (added above) then the search will
>> >> fail.
>> >> You could try to use unordered links and globnodes, but these lead to
>> >> other
>> >> difficulties, including the n! possible permutations of an unordered
>> >> link
>> >> become large n-factorial large when the unordered link has n items in
>> >> it.
>> >> Recall that old factorial-70 trick used to make calculators overflow.
>> >>
>> >> In general, any link with more than 3 or 4 or 5 items in it is bad
>> >> news.
>> >> This is a generic statement about knowledge representation in opencog.
>> >>
>> >>
>> >>> OverlappingPartitionLink
>> >>>     C
>> >>>     L
>> >>>
>> >>> if we want to encompass cases where the partition elements in L can
>> >>> overlap; or
>> >>>
>> >>> CoveringLink
>> >>>     C
>> >>>     L
>> >>>
>> >>> if we want to encompass cases where the partition elements in L can
>> >>> overlap, AND the elements in L may encompass some stuff that’s not in
>> >>> C
>> >>>
>> >>> For the pathway case, we could then say
>> >>>
>> >>> PartitionLink
>> >>>     ConceptNode “Krebs cycle”
>> >>>     ListLink
>> >>>         >relationship 1<
>> >>>         >relationship 2<
>> >>>         etc.
>> >>>
>> >>>
>> >>> Now this solves the semantics problem but doesn’t solve the problem of
>> >>> having a long ListLink….  A biological pathway might have 100s or
>> >>> 1000s of relationships in it, and we don't usually want to make lists
>> >>> that big in the Atomspace...
>> >>>
>> >>> To solve this we could do something like (for the human body case)
>> >>>
>> >>> PartitionLink
>> >>>    ConceptNode “human-body”
>> >>>    PartitionNode “body-partition-1”
>> >>>
>> >>> PartitionElementLink
>> >>>    PartitionNode “body-partition-1"
>> >>>    ConceptNode “legs”
>> >>>
>> >>> PartitionElementLink
>> >>>    PartitionNode “body-partition-1"
>> >>>    ConceptNode “arms”
>> >>>
>> >>> etc.
>> >>>
>> >>> and similarly (for the biological pathway case)
>> >>>
>> >>> PartitionLink
>> >>>     ConceptNode “Krebs cycle”
>> >>>     PartitionNode “krebs-partition-1”
>> >>>
>> >>> PartitionElementLink
>> >>>     PartitionNode “krebs-partition-1"
>> >>>     >relationship 1<
>> >>>
>> >>> PartitionElementLink
>> >>>     PartitionNode “krebs-partition-1”
>> >>>     >relationship 2<
>> >>
>> >>
>> >>
>> >> Yeah, sure. Not sure why the existing MemberLink is not sufficient for
>> >> your purposes. The MemberLink has reasonably-well-defined semantics,
>> >> there
>> >> are already rules for handling it in PLN (or there will be rules -- I
>> >> think
>> >> its something Nil has thought about)   I'm not clear on why you'd want
>> >> to
>> >> invent something that is just like MemberLink but is different.
>> >>
>> >>>
>> >>>
>> >>> ...
>> >>>
>> >>> There could be some nice truth value math regarding these, e.g. we
>> >>> could introduce Ellerman's "logical entropy" which is really a
>> >>> partition entropy.   There are also connections with some recent
>> >>> theoretical work I've been doing on "graphtropy" (using "distinction
>> >>> graphs" that generalize partitions), which I'll post a paper on
>> >>> sometime in the next week or two....   But that will be another email
>> >>> for another day...
>> >>
>> >>
>> >> Yeah graphical-entropy is something that I keep trying to work on,
>> >> except
>> >> that every new urgent disaster of the day distracts me from it.
>> >>
>> >> --linas
>> >>>
>> >>>
>> >>> -- Ben
>> >>>
>> > --
>> > You received this message because you are subscribed to the Google
>> > Groups
>> > "opencog" group.
>> > To unsubscribe from this group and stop receiving emails from it, send
>> > an
>> > email to opencog+unsubscribe@googlegroups.com.
>> > To post to this group, send email to ope...@googlegroups.com.
>> > Visit this group at https://groups.google.com/group/opencog.
>> > To view this discussion on the web visit
>> >
>> > https://groups.google.com/d/msgid/opencog/e1df7273-da14-45f5-8d0d-5ebad0d31217%40googlegroups.com.
>> >
>> > For more options, visit https://groups.google.com/d/optout.
>>
>>
>>
>> --
>> Ben Goertzel, PhD
>> http://goertzel.org
>>
>> "I am God! I am nothing, I'm play, I am freedom, I am life. I am the
>> boundary, I am the peak." -- Alexander Scriabin
>
>



--
Ben Goertzel, PhD
http://goertzel.org

"I am God! I am nothing, I'm play, I am freedom, I am life. I am the
boundary, I am the peak." -- Alexander Scriabin


Ben Goertzel

unread,
Aug 8, 2017, 3:21:18 AM8/8/17
to link-grammar, opencog, Michael Duncan, Amir P
This representation makes sense to me for biological pathways

Although, making PLN deal with these is another problem...
>>>> >> > email to opencog+u...@googlegroups.com.
>>>> >> > To post to this group, send email to ope...@googlegroups.com.
>>>> >> > Visit this group at https://groups.google.com/group/opencog.
>>>> >> > To view this discussion on the web visit
>>>> >> >
>>>> >> >
>>>> >> > https://groups.google.com/d/msgid/opencog/e1df7273-da14-45f5-8d0d-5ebad0d31217%40googlegroups.com.
>>>> >> >
>>>> >> > For more options, visit https://groups.google.com/d/optout.
>>>> >>
>>>> >>
>>>> >>
>>>> >> --
>>>> >> Ben Goertzel, PhD
>>>> >> http://goertzel.org
>>>> >>
>>>> >> "I am God! I am nothing, I'm play, I am freedom, I am life. I am the
>>>> >> boundary, I am the peak." -- Alexander Scriabin
>>>> >
>>>> >
>>>>
>>>>
>>>>
>>>> --
>>>> Ben Goertzel, PhD
>>>> http://goertzel.org
>>>>
>>>> "I am God! I am nothing, I'm play, I am freedom, I am life. I am the
>>>> boundary, I am the peak." -- Alexander Scriabin
>>>
>>>
>
> --
> You received this message because you are subscribed to the Google Groups
> "link-grammar" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to link-grammar...@googlegroups.com.
> To post to this group, send email to link-g...@googlegroups.com.
> Visit this group at https://groups.google.com/group/link-grammar.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/link-grammar/CAHrUA35VJrBXkcyvbVqppXkH6Mq%3DSWHdQPQn6xBdiRL_x2qKAw%40mail.gmail.com.
Reply all
Reply to author
Forward
0 new messages