Beispiel #1
0
 def xtest_basic_behaviour2():
     'It tests that we can get names'
     engine = sqlalchemy.create_engine('sqlite:////home/jope/test/naming_db')
     create_naming_database(engine)
     add_project_to_naming_database(engine, name='Melo', code='ME',
                                    description='Melonomics Ests')
     naming = DbNamingSchema(engine, project='Melo', feature_kind='EST')
     assert naming.get_uniquename() == 'MEES000001'
     assert naming.get_uniquename() == 'MEES000002'
     naming.commit(description='Initial')
def _get_names_from_db(database, project_name=None):
    'It show the names in the database'
    engine   = sqlalchemy.create_engine( 'sqlite:///%s'  % database)
    naming = DbNamingSchema(engine, project_name, feature_kind=None)
    toprint  = " Project | Project Code |    Name    | Feature | date              | description \n"
    toprint += "-------------------------------------------------------------\n"
    for name in naming.get_names_from_db():
        date = name['date']
        toprint += ' %s |     %s     | %s |   %s  |%d/%d/%d %d:%d:%d | %s\n' % \
                (name['project'], name['project_code'], name['name'],
                 name['feature_type'], date.year, date.month, date.day,
                 date.hour, date.minute, date.second, name['description'])
    return toprint
Beispiel #3
0
    def test_rollback():
        "If we don't commit we lose the changes"
        engine = sqlalchemy.create_engine('sqlite:///:memory:')
        create_naming_database(engine)
        add_project_to_naming_database(engine, name='my_project', code='my',
                                       description='a test project')
        naming = DbNamingSchema(engine, project='my_project',
                                feature_kind='EST')
        assert naming.get_uniquename() == 'myES000001'

        naming = DbNamingSchema(engine, project='my_project',
                                feature_kind='EST')
        assert naming.get_uniquename() == 'myES000001'

        from franklin.db.naming import _CodeGenerator
def _change_names_in_file(io_options, database, filecache, project,
                          feature_kind, description):
    'It changes the name to a file giving a naming'
    # check if the database exits
    if database is not None:
        engine   = sqlalchemy.create_engine( 'sqlite:///%s'  % database)
        if not os.path.exists(database):
            create_naming_database(engine)
        # check if the project exists
        project_name = project['name']
        if not project_in_database(engine, project_name):
            if project['code']:
                add_project_to_naming_database(engine, name=project_name,
                                           code=project['code'],
                                           description=project['description'])
            else:
                msg  = 'To add a new project to the database the code should be'
                msg += ' given'
                raise ValueError(msg)

        # create a naming schema
        naming = DbNamingSchema(engine, project=project_name,
                                feature_kind=feature_kind)
    else:
        naming = None

    if filecache is not None:
        if os.path.exists(filecache):
            mode = 'a'
        else:
            mode = 'w'
        fhand = open(filecache, mode)
        naming = FileNamingSchema(fhand, naming)

    try:
        # change name to seqs in file
        infhand  = io_options['infhand']
        outfhand = io_options['outfhand']
        format   = io_options['format']
        change_names_in_files(infhand, outfhand, naming, format)
        naming.commit(description=description)
    except:
        #if we don't commit we lose the changes in the database
        raise
Beispiel #5
0
 def test_basic_behaviour():
     'It tests that we can get names'
     engine = sqlalchemy.create_engine('sqlite:///:memory:')
     create_naming_database(engine)
     add_project_to_naming_database(engine, name='my_project', code='my',
                                    description='a test project')
     naming = DbNamingSchema(engine, project='my_project',
                             feature_kind='EST')
     assert naming.get_uniquename() == 'myES000001'
     assert naming.get_uniquename() == 'myES000002'
     naming.kind = 'transcribed_cluster'
     assert naming.get_uniquename() == 'myTC000001'
     naming.commit()
Beispiel #6
0
    def test_roolback(self):
        'If the changes are not commited they are ignored'
        fhand = NamedTemporaryFile()
        engine = sqlalchemy.create_engine('sqlite:///:memory:')
        create_naming_database(engine)
        add_project_to_naming_database(engine, name='my_project', code='my',
                                       description='a test project')
        naming = DbNamingSchema(engine, project='my_project',
                                feature_kind='EST')
        naming = FileNamingSchema(fhand, naming)
        assert naming.get_uniquename(name='hola') == 'myES000001'
        naming.commit()
        assert naming.get_uniquename(name='caracol') == 'myES000002'

        naming = FileNamingSchema(fhand, feature_kind='EST')
        try:
            assert naming.get_uniquename(name='caracol')
            self.fail()
            #pylint: disable-msg=W0704
        except ValueError:
            pass
Beispiel #7
0
    def test_name_persistance():
        'The names are stored between db commits'
        engine = sqlalchemy.create_engine('sqlite:///:memory:')
        create_naming_database(engine)
        add_project_to_naming_database(engine, name='my_project', code='my',
                                       description='a test project')
        naming = DbNamingSchema(engine, project='my_project',
                                feature_kind='EST')
        assert naming.get_uniquename() == 'myES000001'
        naming.commit()
        naming = DbNamingSchema(engine, project='my_project',
                                feature_kind='EST')

        assert naming.get_uniquename() == 'myES000002'
Beispiel #8
0
    def test_fasta():
        'It test that we can change the name in the fasta files.'
        fhand_in  = StringIO(EXAMPLES['fasta'][0])
        fhand_out = StringIO('')
        engine    = sqlalchemy.create_engine('sqlite:///:memory:')

        create_naming_database(engine)
        add_project_to_naming_database(engine, name='test_project', code='my',
                                       description='a test project')
        naming    = DbNamingSchema(engine, 'test_project', feature_kind='EST')

        change_names_in_files(fhand_in, fhand_out, naming, 'fasta')
        assert fhand_out.getvalue() == EXAMPLES['fasta'][1]

        # test it with file naming naming schema
        #filenaming_fhand = open('/tmp/ppp', 'w')
        filenaming_fhand = NamedTemporaryFile()
        fhand_in = StringIO(EXAMPLES['fasta'][0])
        fhand_out = StringIO('')
        engine = sqlalchemy.create_engine('sqlite:///:memory:')
        create_naming_database(engine)
        add_project_to_naming_database(engine, name='my_project', code='my',
                                       description='a test project')
        naming = DbNamingSchema(engine, project='my_project',
                                feature_kind='EST')
        naming = FileNamingSchema(filenaming_fhand, naming)
        change_names_in_files(fhand_in, fhand_out, naming, 'fasta')
        naming.commit()
        assert fhand_out.getvalue() == EXAMPLES['fasta'][1]


        fhand_in.seek(0)
        filenaming_fhand.seek(0)
        fhand_out = StringIO('')
        naming = FileNamingSchema(filenaming_fhand, feature_kind='EST')
        change_names_in_files(fhand_in, fhand_out, naming, 'fasta')
        assert fhand_out.getvalue() == EXAMPLES['fasta'][1]
Beispiel #9
0
    def test_revert_last_name():
        '''It test if we can revert the database to its last stste for a kind
        and project'''
        engine = sqlalchemy.create_engine('sqlite:///:memory:')
        create_naming_database(engine)
        add_project_to_naming_database(engine, name='my_project', code='my',
                                       description='a test project')
        naming = DbNamingSchema(engine, project='my_project',
                                feature_kind='EST')
        naming.get_uniquename()
        naming.commit()
        naming.get_uniquename()
        naming.commit()
        names = list(naming.get_names_from_db())
        assert names[0]['name'] == 'myES000001'
        assert names[-1]['project'] == 'my_project'
        assert names[-1]['name'] == 'myES000002'
        assert len(names) == 2
        naming.revert_last_name()

        naming = DbNamingSchema(engine, project='my_project',
                                feature_kind='EST')
        names = list(naming.get_names_from_db())
        assert len(names) == 1
        assert names[-1]['name'] == 'myES000001'
Beispiel #10
0
    def test_get_all_names():
        'It test if we can get all names stored in teh database'
        engine = sqlalchemy.create_engine('sqlite:///:memory:')
        create_naming_database(engine)
        add_project_to_naming_database(engine, name='my_project', code='my',
                                       description='a test project')
        naming = DbNamingSchema(engine, project='my_project',
                                feature_kind='EST')
        naming.get_uniquename()
        naming.commit()
        naming.get_uniquename()
        naming.commit()

        names = list(naming.get_names_from_db())
        assert names[0]['project'] == 'my_project'
        assert len(names) == 2

        naming.project = 'my_project'
        name = naming.get_names_from_db().next()
        assert name['project'] == 'my_project'
Beispiel #11
0
 def test_basic_behaviour(self):
     'It tests that we can get names using a FileNamingSchema'
     fhand = NamedTemporaryFile()
     engine = sqlalchemy.create_engine('sqlite:///:memory:')
     create_naming_database(engine)
     add_project_to_naming_database(engine, name='my_project', code='my',
                                    description='a test project')
     naming = DbNamingSchema(engine, project='my_project',
                             feature_kind='EST')
     naming = FileNamingSchema(fhand, naming)
     assert naming.get_uniquename(name='hola') == 'myES000001'
     assert naming.get_uniquename(name='hola') == 'myES000001'
     assert naming.get_uniquename(name='caracol') == 'myES000002'
     naming.commit()
     fhand.seek(0)
     naming = FileNamingSchema(fhand)
     naming.kind = 'EST'
     assert naming.get_uniquename(name='hola') == 'myES000001'
     assert naming.get_uniquename(name='caracol') == 'myES000002'
     try:
         assert naming.get_uniquename(name='pascual')
         self.fail()
         #pylint: disable-msg=W0704
     except ValueError:
         pass
def _delete_last_row(database, project_name, feature_kind):
    'It deletes the'
    engine   = sqlalchemy.create_engine( 'sqlite:///%s'  % database)
    naming = DbNamingSchema(engine, project=project_name,
                            feature_kind=feature_kind)
    naming.revert_last_name()