[BioSQL-l] ontology for transitive closure table

Hilmar Lapp hlapp at gnf.org
Thu Mar 27 12:23:08 EST 2003


On Saturday, March 22, 2003, at 01:17  PM, Aaron J Mackey wrote:

>
> On Wed, 19 Mar 2003, Aaron J Mackey wrote:
>
>> my $dbigraph = new DBIx::Graph @params;
>> my $graph = $dbigraph->graph;
>>
>> my $tc = $graph->transitive_closure; # or whatever Graph.pm calls it, 
>> can't remember
>
> So this bit now works for me (including being able to access all 
> various
> "paths" described by a given transitive closure edge, useful for
> determining predicate type of the new edge).

what is $tc? a reference to an array?

Do you have some place where one can checkout the code? Also, Graph.pm 
has

                $G->has_path($u, $v, ...)

        Return true if the graph $G has the cycle defined by the
        vertices $u, $v, ..., false otherwise.

Didn't this help? Maybe it didn't because you need to enumerate all 
vertices along the path then? (I haven't used that method)

>   But, computing the tc via
> Graph::Directed on GO isa/partof is extraordinarily slow (I've waited 
> more
> than 4 hours now; by comparison, an SQL-only solution finishes in less
> than 20 minutes).

How do you deal with paths that have heterogeneous predicates, i.e., 
both is-a and part-of? In Singapore we defined that the predicate of 
the path is the GCD, but there is no common denominator defined yet for 
those two predicates. Did you define one behind the scenes (like 
related-to)?

>
>> Slightly OT, but if I were to implement our own Graph.pm-like object 
>> via
>> an Inline::C-wrapped graph library, would people be keen on that?
>
> I'll ask again - I need to be able to calculate tc graphs in a 
> reasonable
> amount of time; are people willing to go through the extra hassle of
> installing bioperl-ext to get faster Graph functionality?
>

The problem is its more a hassle for you than for people, because if 
someone can't compile the code on his specific platform, or hits a 
dynlink error, or hits a segfault, then most likely it is going to be 
you chasing down subtle allocation/de-allocation bugs, or stupid 
OS/perl version differences or whatever. Whereas with pure perl, if it 
compiles under 5.6.1 on your OS, perl kind of promises to you it will 
also compile under WierdoOS, provided perl itself does, and supposedly 
it will collect the garbage too.

So, if I can just say 'cpan> install Aaron::XS::TC' and then it will 
install, there's not much hassle there for me. However, what if I'm on 
Windows or wherever, and the above fails, what will you do as the 
maintainer? Likewise, you test drive your code on SOFA with a couple 
hundred terms and all is fine, but I have my own proprietary ontology 
with 15000 terms and your code segfaults on this after having taken 2.5 
GB of memory on an OS you have no access to - what are you going to do 
then?

	-hilmar


> -Aaron
>
> _______________________________________________
> BioSQL-l mailing list
> BioSQL-l at open-bio.org
> http://open-bio.org/mailman/listinfo/biosql-l
>
-- 
-------------------------------------------------------------
Hilmar Lapp                            email: lapp at gnf.org
GNF, San Diego, Ca. 92121              phone: +1-858-812-1757
-------------------------------------------------------------



More information about the BioSQL-l mailing list