I am developing software to store experiments or studies using SBOL3. In the regular synthetic biology workflow we will find the experimental components Strain and Media. A safe way to implement them is using tyto.SBO.functional_entity as type for both.

Other attempts to implement media (https://github.com/Bioprotocols/paml/blob/main/examples/growth_curve.py)looks like this:

SC_media = sbol3.Component('SC_Media', 'TBD', name='Synthetic Complete Media')

Therefore there is a need for standardise these types on SBOL3 to provide more accurate representations. The Experimental Factor Ontology (EFO) have ontology terms for Strain http://www.ebi.ac.uk/efo/EFO_0005135 and Media http://www.ebi.ac.uk/efo/EFO_0000579 that can be used as type. Then draft SBOL components looks as follow:

strain = sbol3.Component(fj_strain.name(), http://www.ebi.ac.uk/efo/EFO_0005135)
strain.name =fj_strain.name
strain.description = fj_strain.description()

media = sbol3.Component(fj_media.name(), http://www.ebi.ac.uk/efo/EFO_0000579)
media.name =fj_media.name
media.description = fj_media.description()

The problem with this is the lack of readability on the code given the obscure ontology URIs. This problem has been solved for other ontologies using tyto, but EFO is not supported out-of-the-box and the configuration of new ontologies is not working. On tyto repository there is an example:

from tyto import EBIOntologyLookupService, Ontology
KISAO = Ontology(uri='http://www.biomodels.net/kisao/KISAO_FULL#', endpoints=[EBIOntologyLookupService])

But I copied and runed that code but it raise this error: [ERROR] tyto.py 70: Ontology http://www.biomodels.net/kisao/KISAO_FULL# is not available at EBI Ontology Lookup Service

What I would like to do is something like this:

from tyto import EBIOntologyLookupService, Ontology
efo = Ontology(uri='http://www.ebi.ac.uk/efo', endpoints=[EBIOntologyLookupService])

But this raises the same error. How can I add EFO to tyto? What is the URI that should be provided? Should I raise an issue in tyto to ask for EFO out-of-the-box support?

Do you agree with the ontology terms for Strain and Media? Any feedback?


1 Answer 1


Section 7.9 of the SBOL3 specification already provides recommended terms for experimental elements. Among these, Section 7.9.2 specifically addresses strain and media, reading in pat:

The roles of reagents may vary in context: for example, arabinose may serve as an inducer or as a media carbon source. As such, contextual role SHOULD be indicated by an NCI Thesaurus (NCIT) term in a role property of the Feature. Examples include:

  • NCIT:C64356: PositiveControl
  • NCIT:C48694: Cell
  • NCIT:C85504: Media
  • NCIT:C14419: Strain
  • NCIT:C120268: Inducer

NCIT is one of the ontologies that is built-in for tyto:

Out[4]: 'https://identifiers.org/ncit:C95501'
Out[5]: 'https://identifiers.org/ncit:C19442'
  • $\begingroup$ One thing that makes noise to me is that these terms are exemplified as roles not as types. These terms make sense as types to me. Should I use another type like SBO_FUNCTIONAL_ENTITY and keep the NCIT terms as roles? $\endgroup$
    – Gonza10V
    Oct 21, 2021 at 14:41
  • $\begingroup$ Type is used to indicate the nature of the material. Most of these are complex entities that cannot be categorized as being a single class of molecule, and thus SBO_FUNCTIONAL_ENTITY is the appropriate type. $\endgroup$
    – jakebeal
    Oct 21, 2021 at 15:12

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.