001package org.biopax.paxtools.model.level3; 002 003import java.util.Set; 004 005 006public interface PhysicalEntity extends Entity, Controller 007{ 008 009 010 // Inverse of COMPONENT 011 012 Set<Complex> getComponentOf(); 013 014 015 /** 016 * A cellular location, e.g. 'cytoplasm'. This should reference a term in the <a 017 * href="http://www.obofoundry.org/cgi-bin/detail.cgi?id=cellular_component">Gene Ontology Cellular 018 * Component</a> ontology. The location referred to by this property should be as specific as is 019 * known. If an interaction is known to occur in multiple locations, separate interactions (and 020 * physicalEntities) must be created for each different location. If the location of a participant 021 * in a complex is unspecified, it may be assumed to be the same location as that of the complex. 022 * 023 * A molecule in two different cellular locations are considered two different physical entities. 024 * 025 * @return cellular location of this physical entity 026 */ 027 CellularLocationVocabulary getCellularLocation(); 028 029 /** 030 * A cellular location, e.g. 'cytoplasm'. This should reference a term in the <a 031 * href="http://www.obofoundry.org/cgi-bin/detail.cgi?id=cellular_component">Gene Ontology Cellular 032 * Component</a> ontology. The location referred to by this property should be as specific as is 033 * known. If an interaction is known to occur in multiple locations, separate interactions (and 034 * physicalEntities) must be created for each different location. If the location of a participant 035 * in a complex is unspecified, it may be assumed to be the same location as that of the complex. 036 * 037 * A molecule in two different cellular locations are considered two different physical entities. 038 * 039 * @param newCellularLocation for this physical entity 040 */ 041 void setCellularLocation(CellularLocationVocabulary newCellularLocation); 042 043 boolean hasEquivalentFeatures(PhysicalEntity that); 044 045 boolean hasEquivalentCellularLocation(PhysicalEntity that); 046 047 // Property MODIFIED-AT 048 049 Set<EntityFeature> getFeature(); 050 051 void addFeature(EntityFeature feature); 052 053 void removeFeature(EntityFeature feature); 054 055 056 057 // Property NOT-MODIFIED-AT 058 059 Set<EntityFeature> getNotFeature(); 060 061 void addNotFeature(EntityFeature feature); 062 063 void removeNotFeature(EntityFeature feature); 064 065 066 067 //Property memberPhysicalEntity 068 069 /** 070 * Please avoid using this property in your BioPAX L3 models 071 * unless absolutely sure/required, for there is an alternative way 072 * (using PhysicalEntity/entityReference/memberEntityReference), and 073 * this will probably be deprecated in the future BioPAX releases. 074 * It's usually hard to say what this relationship (grouping) means... 075 * @return member physical entities 076 */ 077 Set<PhysicalEntity> getMemberPhysicalEntity(); 078 079 void addMemberPhysicalEntity(PhysicalEntity memberPhysicalEntity); 080 081 void removeMemberPhysicalEntity(PhysicalEntity memberPhysicalEntity); 082 083 084 085 //Inverse of property memberPhysicalEntity 086 Set<PhysicalEntity> getMemberPhysicalEntityOf(); 087 088 089 090 /** 091 * Overridden to provide better downcasting 092 */ 093 Class<? extends PhysicalEntity> getModelInterface(); 094} 095