In [1]:
from om import base
from om.components import *
from om.data import *
from unittest import TestCase, TestLoader, TextTestRunner

ome = base.Session()

In [5]:
ome.query(Protein).first()


Out[5]:
Protein (#1, leader; Amino acid biosynthesis: Threonine)

In [4]:



Out[4]:
u''

In [2]:
a = ome.query(Gene).filter(Gene.locus_id == 'b4028').first()

In [10]:
from trnlib.model_utility import *

In [13]:
model = load_model()
model.reactions.PGK.reaction


Out[13]:
'1.0 atp_c + 1.0 3pg_c <=> 1.0 adp_c + 1.0 13dpg_c'

In [2]:
class TestGenomeRegion(TestCase):
    def setUp(self):
        self.test_genome_region = components.GenomeRegion(10000,10200,'+')
    
    def testAdd(self):
        ome.add(self.test_genome_region)
        ome.commit()
        queried_genome_region = ome.query(components.GenomeRegion).first()
        self.assertEqual(self.test_genome_region, queried_genome_region)

    def testDelete(self):
        ome.delete(components.GenomeRegion(10000,10200,'+'))
        ome.commit()
        queried_genome_region = ome.query(components.GenomeRegion).first()
        self.assertEqual(queried_genome_region, None)

    
suite = TestLoader().loadTestsFromTestCase(TestGenomeRegion)
TextTestRunner(verbosity=2).run(suite)


Out[2]:
<unittest.runner.TextTestResult run=2 errors=1 failures=0>

In [2]:
ome.add(components.DNA('test2','gene',10000,10200,'+'))
ome.commit()

In [3]:
ome.add(components.DNA('test2','gene',10000,10200,'+'))
ome.commit()

In [4]:
ome.add(components.DNA('test2','gene',10000,10200,'+'))
ome.commit()

In [6]:
a = components.GenomeRegion(10000,10200,'+')

In [6]:
a = ome.query(components.DNA).first()

In [9]:
a.type


Out[9]:
u'DNA'

In [7]:
ome.query(components.GenomeRegion).filter_by(leftpos=a.leftpos,rightpos=a.rightpos, strand=a.strand).delete()


Out[7]:
1

In [8]:
ome.query(components.GenomeRegion).all()


Out[8]:
[]

In [6]:
#component = base.get_or_create(ome, components.Component, name='crp_gene', component_type_id=1)
#genome_region = base.get_or_create(ome, components.GenomeRegion, leftpos=1000, rightpos=1800, strand='+')
#dna = base.get_or_create(ome, components.DNA, component_id=component.id, component_type_id=1, dna_type_id=2, genome_region_id=genome_region.id)
#crp = base.get_or_create(ome, components.Gene, name='crp', locus_id='b1234', dna_id=dna.id, dna_type_id=2)
#base.get_or_create(ome, components.Protein, name='Crp')


---------------------------------------------------------------------------
InvalidRequestError                       Traceback (most recent call last)
<ipython-input-6-0c35b12c31fb> in <module>()
----> 1 component = base.get_or_create(ome, components.Component, name='crp_gene', component_type_id=1)
      2 genome_region = base.get_or_create(ome, components.GenomeRegion, leftpos=1000, rightpos=1800, strand='+')
      3 dna = base.get_or_create(ome, components.DNA, component_id=component.id, component_type_id=1, dna_type_id=2, genome_region_id=genome_region.id)
      4 #crp = base.get_or_create(ome, components.Gene, name='crp', locus_id='b1234', dna_id=dna.id, dna_type_id=2)
      5 #base.get_or_create(ome, components.Protein, name='Crp')

/Users/sfederow/ome/PrototypeDB/orm/base.pyc in get_or_create(session, class_type, **kwargs)
     62     is found in the database, a new one will be created which satisfies
     63     these constraints"""
---> 64     result = session.query(class_type).filter_by(**kwargs).first()
     65     if result is None:
     66         result = class_type()

/Library/Python/2.7/site-packages/sqlalchemy/orm/query.pyc in filter_by(self, **kwargs)
   1243 
   1244         clauses = [_entity_descriptor(self._joinpoint_zero(), key) == value
-> 1245             for key, value in kwargs.iteritems()]
   1246         return self.filter(sql.and_(*clauses))
   1247 

/Library/Python/2.7/site-packages/sqlalchemy/orm/util.pyc in _entity_descriptor(entity, key)
   1188         raise sa_exc.InvalidRequestError(
   1189                     "Entity '%s' has no property '%s'" %
-> 1190                     (description, key)
   1191                 )
   1192 

InvalidRequestError: Entity '<class 'PrototypeDB.orm.components.Component'>' has no property 'component_type_id'

In [21]:
ome.query(components.GenomeRegion).all()


Out[21]:
[<PrototypeDB.orm.components.GenomeRegion at 0x11187e2d0>]

In [19]:
a = crp.genome_region

In [20]:
a.leftpos


---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-20-b9bbd17a80c9> in <module>()
----> 1 a.leftpos

AttributeError: 'NoneType' object has no attribute 'leftpos'

In [6]:
base.get_or_create(ome, components.DnaBindingSite, name='gapA_promoter')


---------------------------------------------------------------------------
IntegrityError                            Traceback (most recent call last)
<ipython-input-6-06454ac5f73d> in <module>()
----> 1 base.get_or_create(ome, components.DnaBindingSite, name='gapA_promoter')

/Users/sfederow/ome/ome/orm/base.pyc in get_or_create(session, class_type, **kwargs)
     68             setattr(result, key, value)
     69         session.add(result)
---> 70         session.commit()
     71     return result
     72 

/Library/Python/2.7/site-packages/sqlalchemy/orm/session.pyc in commit(self)
    719                 raise sa_exc.InvalidRequestError("No transaction is begun.")
    720 
--> 721         self.transaction.commit()
    722 
    723     def prepare(self):

/Library/Python/2.7/site-packages/sqlalchemy/orm/session.pyc in commit(self)
    352         self._assert_active(prepared_ok=True)
    353         if self._state is not PREPARED:
--> 354             self._prepare_impl()
    355 
    356         if self._parent is None or self.nested:

/Library/Python/2.7/site-packages/sqlalchemy/orm/session.pyc in _prepare_impl(self)
    332                 if self.session._is_clean():
    333                     break
--> 334                 self.session.flush()
    335             else:
    336                 raise exc.FlushError(

/Library/Python/2.7/site-packages/sqlalchemy/orm/session.pyc in flush(self, objects)
   1816         try:
   1817             self._flushing = True
-> 1818             self._flush(objects)
   1819         finally:
   1820             self._flushing = False

/Library/Python/2.7/site-packages/sqlalchemy/orm/session.pyc in _flush(self, objects)
   1934         except:
   1935             with util.safe_reraise():
-> 1936                 transaction.rollback(_capture_exception=True)
   1937 
   1938     def is_modified(self, instance, include_collections=True,

/Library/Python/2.7/site-packages/sqlalchemy/util/langhelpers.pyc in __exit__(self, type_, value, traceback)
     56             exc_type, exc_value, exc_tb = self._exc_info
     57             self._exc_info = None   # remove potential circular references
---> 58             compat.reraise(exc_type, exc_value, exc_tb)
     59         else:
     60             self._exc_info = None   # remove potential circular references

/Library/Python/2.7/site-packages/sqlalchemy/orm/session.pyc in _flush(self, objects)
   1898             self._warn_on_events = True
   1899             try:
-> 1900                 flush_context.execute()
   1901             finally:
   1902                 self._warn_on_events = False

/Library/Python/2.7/site-packages/sqlalchemy/orm/unitofwork.pyc in execute(self)
    370                                     self.dependencies,
    371                                     postsort_actions):
--> 372                 rec.execute(self)
    373 
    374     def finalize_flush_changes(self):

/Library/Python/2.7/site-packages/sqlalchemy/orm/unitofwork.pyc in execute(self, uow)
    523         persistence.save_obj(self.mapper,
    524             uow.states_for_mapper_hierarchy(self.mapper, False, False),
--> 525             uow
    526         )
    527 

/Library/Python/2.7/site-packages/sqlalchemy/orm/persistence.pyc in save_obj(base_mapper, states, uowtransaction, single)
     62             _emit_insert_statements(base_mapper, uowtransaction,
     63                                     cached_connections,
---> 64                                     table, insert)
     65 
     66     _finalize_insert_update_commands(base_mapper, uowtransaction,

/Library/Python/2.7/site-packages/sqlalchemy/orm/persistence.pyc in _emit_insert_statements(base_mapper, uowtransaction, cached_connections, table, insert)
    567                 else:
    568                     result = cached_connections[connection].\
--> 569                                         execute(statement, params)
    570 
    571                 primary_key = result.context.inserted_primary_key

/Library/Python/2.7/site-packages/sqlalchemy/engine/base.pyc in execute(self, object, *multiparams, **params)
    660                                                 object,
    661                                                 multiparams,
--> 662                                                 params)
    663         else:
    664             raise exc.InvalidRequestError(

/Library/Python/2.7/site-packages/sqlalchemy/engine/base.pyc in _execute_clauseelement(self, elem, multiparams, params)
    759             compiled_sql,
    760             distilled_params,
--> 761             compiled_sql, distilled_params
    762         )
    763         if self._has_events:

/Library/Python/2.7/site-packages/sqlalchemy/engine/base.pyc in _execute_context(self, dialect, constructor, statement, parameters, *args)
    872                                 parameters,
    873                                 cursor,
--> 874                                 context)
    875 
    876         if self._has_events:

/Library/Python/2.7/site-packages/sqlalchemy/engine/base.pyc in _handle_dbapi_exception(self, e, statement, parameters, cursor, context)
   1022                                         self.dialect.dbapi.Error,
   1023                                         connection_invalidated=self._is_disconnect),
-> 1024                                     exc_info
   1025                                 )
   1026 

/Library/Python/2.7/site-packages/sqlalchemy/util/compat.pyc in raise_from_cause(exception, exc_info)
    193         # the code line where the issue occurred
    194         exc_type, exc_value, exc_tb = exc_info
--> 195         reraise(type(exception), exception, tb=exc_tb)
    196 
    197 

/Library/Python/2.7/site-packages/sqlalchemy/engine/base.pyc in _execute_context(self, dialect, constructor, statement, parameters, *args)
    865                                     statement,
    866                                     parameters,
--> 867                                     context)
    868         except Exception, e:
    869             self._handle_dbapi_exception(

/Library/Python/2.7/site-packages/sqlalchemy/engine/default.pyc in do_execute(self, cursor, statement, parameters, context)
    322 
    323     def do_execute(self, cursor, statement, parameters, context=None):
--> 324         cursor.execute(statement, parameters)
    325 
    326     def do_execute_no_params(self, cursor, statement, context=None):

IntegrityError: (IntegrityError) null value in column "bound_component_id" violates not-null constraint
 'INSERT INTO ecoli.dna_binding_site (dna_id, dna_type_id) VALUES (%(dna_id)s, %(dna_type_id)s) RETURNING ecoli.dna_binding_site.bound_component_id' {'dna_type_id': 1, 'dna_id': 3}

In [6]:
ome.query(components.DNA).all()


Out[6]:
[DNA (#1, None), DNA (#2, thrA_promoter)]

In [7]:
components.DNA_binding_site


Out[7]:
ome.orm.components.DNA_binding_site

In [ ]: