<p>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:</p>
<blockquote>
<p>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:</p>
<ul>
<li>NCIT:C64356: PositiveControl</li>
<li>NCIT:C48694: Cell</li>
<li>NCIT:C85504: Media</li>
<li>NCIT:C14419: Strain</li>
<li>NCIT:C120268: Inducer</li>
</ul>
</blockquote>
<p>NCIT is one of the ontologies that is built-in for tyto:</p>
<pre><code>tyto.NCIT.Strain
Out[4]: 'https://identifiers.org/ncit:C95501'
tyto.NCIT.Media
Out[5]: 'https://identifiers.org/ncit:C19442'
</code></pre>

CC BY-SA 4.0
2021-10-21T14:41:07.450Z
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?
Gonza10V
CC BY-SA 4.0
2021-10-21T15:12:58.057Z
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.
jakebeal
CC BY-SA 4.0
2021-10-20T17:00:02.573Z
2021-10-20T17:00:02.573Z
jakebeal
<p>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 <code>tyto.SBO.functional_entity</code> as type for both.</p>
<p>Other attempts to implement media (<a href="https://github.com/Bioprotocols/paml/blob/main/examples/growth_curve.py" rel="nofollow noreferrer">https://github.com/Bioprotocols/paml/blob/main/examples/growth_curve.py</a>)looks like this:</p>
<pre><code>SC_media = sbol3.Component('SC_Media', 'TBD', name='Synthetic Complete Media')
</code></pre>
<p>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 <a href="http://www.ebi.ac.uk/efo/EFO_0005135" rel="nofollow noreferrer">http://www.ebi.ac.uk/efo/EFO_0005135</a> and Media <a href="http://www.ebi.ac.uk/efo/EFO_0000579" rel="nofollow noreferrer">http://www.ebi.ac.uk/efo/EFO_0000579</a> that can be used as type. Then draft SBOL components looks as follow:</p>
<pre><code>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()

</code></pre>
<p>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:</p>
<pre><code>from tyto import EBIOntologyLookupService, Ontology
KISAO = Ontology(uri='http://www.biomodels.net/kisao/KISAO_FULL#', endpoints=[EBIOntologyLookupService])
KISAO.Gillespie_direct_algorithm
'http://www.biomodels.net/kisao/KISAO#KISAO_0000029'
</code></pre>
<p>But I copied and runed that code but it raise this error:
[ERROR] tyto.py 70: Ontology <a href="http://www.biomodels.net/kisao/KISAO_FULL#" rel="nofollow noreferrer">http://www.biomodels.net/kisao/KISAO_FULL#</a> is not available at EBI Ontology Lookup Service</p>
<p>What I would like to do is something like this:</p>
<pre><code>from tyto import EBIOntologyLookupService, Ontology
efo = Ontology(uri='http://www.ebi.ac.uk/efo', endpoints=[EBIOntologyLookupService])
efo.media
</code></pre>
<p>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?</p>
<p>Do you agree with the ontology terms for Strain and Media? Any feedback?</p>

<sbol><ontology>
Creating Experimental Components on SBOL
# Creating Experimental Components on SBOL

(Asked by: username_0 on 2021-10-20)

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])
KISAO.Gillespie_direct_algorithm
'http://www.biomodels.net/kisao/KISAO#KISAO_0000029'

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])
efo.media

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?

**Tags:** sbol, ontology

---

## 1 answers

### Answer by username_1 on 2021-10-20. Score: 0 | Accepted answer

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:
tyto.NCIT.Strain
Out[4]: 'https://identifiers.org/ncit:C95501'
tyto.NCIT.Media
Out[5]: 'https://identifiers.org/ncit:C19442'

> **Comments:**
> **username_0**: 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?  
> **username_1**: 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.  

---

