web-developer,
bioinformaticist
e-mail: BurkovBA@gmail.com
BostonGene Universe
Django REST Framework Mongoengine
Knackit.com
Allpy multiple alignment editor
... and lots of minor projects
...except by one maybe
To describe workflows and tools in Universe project we're using Common Workflow Language (CWL) (slightly reminiscent of JSON Schema).
Each workflow is represented by a JSON.
from mongoengine import * # To define a schema for a
# document, we create a
class Metadata(EmbeddedDocument): # class that inherits from
tags = ListField(StringField()) # Document.
revisions = ListField(IntField())
# Fields are specified by
class WikiPage(Document): # adding field objects as
title = StringField(required=True) # class attributes to the
text = StringField() # document class.
metadata = EmbeddedDocumentField(Metadata)
# Querying is achieved by
>>> page.title = "Hello, World!" # calling the objects
>>> for page in WikiPage.objects: # attribute on a document
>>> print page.title # class.
Due to similarity of interfaces, Mongoengine can be integrated with Django REST Framework in just ~2-3 thousand lines of glue code.
That code is known as Django REST Framework-Mongoengine.
+ 50 other
plugins, libraries and tools
GTK+/Qt
controller functions
classes
serialization methods
Domain driven design paid off: it allowed me to switch from Gtk+ to Qt pretty easily. Only presentation logic layer had to be re-done.
Qt has a better architecture, better documentation
and better performance. For instance, TableView in Gtk has a performance limit of 100 columns with bottleneck function starting with a comment like "this is a scary function, I don't undestand how it's working, better don't touch it". :(