001package org.biopax.paxtools.model.level3;
002
003import java.util.Set;
004
005/**
006 * Definition: The form of a physical entity in a particular experiment, as it may be modified for purposes of
007 * experimental design.
008 *
009 * Examples: A His-tagged protein in a binding assay. A protein can be tagged by multiple tags,
010 * so can have more than 1 experimental form type terms
011 */
012public interface ExperimentalForm extends UtilityClass
013{
014
015
016        /**
017         * Descriptor of this experimental form from a controlled vocabulary.
018         * The contents of this set should not be modified. Use add/remove methods instead.
019         * @return a CV term from PSI-MI participant identification methdod, experimental role, experimental preparation.
020         */
021        Set<ExperimentalFormVocabulary> getExperimentalFormDescription();
022
023        /**
024         * Adds an experimental form description.
025         * @param experimentalFormType descriptor of this experimental form from a controlled vocabulary.
026         */
027        void addExperimentalFormDescription(ExperimentalFormVocabulary experimentalFormType);
028
029        /**
030         * Removes an experimental form description.
031         * @param experimentalFormType descriptor of this experimental form from a controlled vocabulary.
032         */
033        void removeExperimentalFormDescription(ExperimentalFormVocabulary experimentalFormType);
034
035
036        /**
037         * @return The gene or physical entity that this experimental form describes.
038         */
039        Entity getExperimentalFormEntity();
040
041        void setExperimentalFormEntity(Entity newPARTICIPANT);
042
043        /**
044         * Contents of this set should not be modified. Please use add/remove methods instead.
045         * @return A feature of the experimental form of the participant of the interaction,
046         *         such as a protein tag. It is not expected to occur in vivo or be necessary for the interaction.
047         */
048        Set<EntityFeature> getExperimentalFeature();
049
050        /**
051         * This method adds an experimental feature
052         * @param experimentalFeature of the experimental form of the participant of the interaction,
053         *         such as a protein tag. It is not expected to occur in vivo or be necessary for the interaction.
054         */
055        void addExperimentalFeature(EntityFeature experimentalFeature);
056
057        /**
058         * This method removes an experimental feature
059         * @param experimentalFeature of the experimental form of the participant of the interaction,
060         *         such as a protein tag. It is not expected to occur in vivo or be necessary for the interaction.
061         */
062        void removeExperimentalFeature(EntityFeature experimentalFeature);
063}