Source code for PyOpenWorm.worm
# -*- coding: utf-8 -*-
from __future__ import print_function
from .dataObject import DatatypeProperty, ObjectProperty, Alias
from .muscle import Muscle
from .cell import Cell
from .biology import BiologyType
from .network import Network
from .worm_common import WORM_RDF_TYPE
[docs]class Worm(BiologyType):
""" A representation of the whole worm """
class_context = BiologyType.class_context
rdf_type = WORM_RDF_TYPE
scientific_name = DatatypeProperty()
''' Scientific name for the organism '''
name = Alias(scientific_name)
''' Alias to `scientific_name` '''
muscle = ObjectProperty(value_type=Muscle, multiple=True)
''' A type of muscle which is in the worm '''
cell = ObjectProperty(value_type=Cell)
''' A cell in the worm '''
neuron_network = ObjectProperty(value_type=Network, inverse_of=(Network, 'worm'))
''' The neuron network of the worm '''
def __init__(self, scientific_name=False, **kwargs):
super(Worm, self).__init__(**kwargs)
if scientific_name:
self.scientific_name(scientific_name)
else:
self.scientific_name("C. elegans")
[docs] def get_neuron_network(self):
"""
Return the neuron network of the worm.
Example::
# Grabs the representation of the neuronal network
>>> net = P.Worm().get_neuron_network()
# Grab a specific neuron
>>> aval = net.aneuron('AVAL')
>>> aval.type()
set([u'interneuron'])
#show how many connections go out of AVAL
>>> aval.connection.count('pre')
77
:returns: An object to work with the network of the worm
:rtype: PyOpenWorm.Network
"""
return self.neuron_network()
[docs] def muscles(self):
"""
Get all Muscle objects attached to the Worm.
Example::
>>> muscles = P.Worm().muscles()
>>> len(muscles)
96
:returns: A set of all muscles
:rtype: :py:class:`set`
"""
return set(x for x in self._muscles_helper())
def _muscles_helper(self):
for x in self.muscle.get():
yield x
[docs] def get_semantic_net(self):
"""
Get the underlying semantic network as an RDFLib Graph
:returns: A semantic network containing information about the worm
:rtype: rdflib.ConjunctiveGraph
"""
return self.rdf
[docs] def defined_augment(self):
''' True if the name is defined '''
return self.name.has_defined_value()
[docs] def identifier_augment(self, *args, **kwargs):
''' Result is derived from the name property '''
return self.make_identifier(self.name.defined_values[0])
__yarom_mapped_classes__ = (Worm,)