/** * Initially, we don't want to represent every PhysicalEntity or Gene node. * For example, if a Complex is nested under another Complex, * and if it is not a participant of any interaction, * then we don't want to draw it separately; also skip for dangling entities. * * @param ent physical entity or gene (it returns false for other entity types) to test * @return true if we want to draw this entity in SBGN; false - otherwise, or - to be auto-created later */ private boolean needsToBeCreatedInitially(Entity ent) { boolean create = false; if(ent instanceof PhysicalEntity || ent instanceof Gene) { if(ubiqueDet != null && ubiqueDet.isUbique(ent)) create = false; // ubiques will be created where they are actually used. else if (!ent.getParticipantOf().isEmpty()) create = true; else if(ent instanceof Complex && ((Complex) ent).getComponentOf().isEmpty() && ((Complex) ent).getMemberPhysicalEntityOf().isEmpty()) create = true; //do make a root/top complex despite it's dangling } return create; }