I see. That makes perfect sense now. Thanks for the examples!

On Jul 24, 7:00 pm, Christopher Lee <[email protected]> wrote:
> On Jul 24, 2009, at 5:49 PM, Kenny Daily wrote:
>
> > So I guess I understand that. However, what I mean is what is your
> > method for looking up the correct edge to put in the graph? Defining
> > the contents of the edgeDB means that you already know the nodes and
> > the relationships between them. So, in the code leading up to the
> > assignment of an edge between two nodes, how do you get the right
> > edge? It seems that there is some other data structure (a dictionary
> > that takes a pair of exons, for example) to look up the right edge in
> > the edgeDB that is assigned to G[exon1][exon2]:
>
> > some_edge = some_edge_dict[(exon1, exon2)] # where this returns an
> > object from edgeDB
> > G[exon1][exon2] = some_edge
>
> Hi Kenny,
> of course you can load your data in various ways, but for storing a  
> many-to-many graph in a relational schema, the edge table is generally  
> the one that really represents the graph (i.e. a row in the edge table  
> represents an edge between a pair of nodes).  For example, to store an  
> alternative splicing graph, we have a table representing exons  
> (nodes), and a table representing splices (edges).  Each edge object  
> (row) has a source_exon_id and target_exon_id.  So to construct the  
> Graph we do something like the following:
>
> for splice in spliceDB:
>      exon1 = exonDB[splice.source_exon_id]
>      exon2 = exonDB[splice.target_exon_id]
>      graph += exon1 # add source node
>      graph[exon1][exon2] = splice # add edge
>
> Once constructed, the Graph object serves the need that you  
> hypothesized above as "some_edge_dict", but it also lets you do a lot  
> more.  That is, whereas some_edge_dict can only be queried with a pair  
> of exons (exon1,exon2) to get the edge object, the Graph can also be  
> queried with exon1, e.g. to ask if exon1 is in graph, or to find its  
> specific set of target nodes exon2:
>
> for exon2 in graph[exon1]:
>      do something...
>
> Or we can iterate over all (source) nodes in the graph:
>
> for exon1 in graph:
>      do something...
>
> More importantly, Graph is designed for transparent persistence...
>
> -- Chris
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"pygr-dev" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/pygr-dev?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to