*/
private void createGraph(BioPAXGraph root)
{
Map<String, NodeModel> map = new HashMap<String, NodeModel>();
Model model = root.getBiopaxModel();
// for (xref xr : model.getObjects(xref.class))
// {
// UniquePrinter.print("xref ["+xr.getID()+"] = ", xr.getDB());
// }
if (nestCompartments) createAndNestCompartments(model, map, root);
// Create actors
for (physicalEntity pe : model.getObjects(physicalEntity.class))
{
// Complex will be processed later.
if (pe instanceof complex) continue;
// Create simple states (Actors)
if (pe.isPHYSICAL_ENTITYof().isEmpty())
{
new Actor(root, pe, new ArrayList<physicalEntityParticipant>());
}
else
{
Collection<List<physicalEntityParticipant>> coll = groupParticipants(pe);
for (List<physicalEntityParticipant> list : coll)
{
CompoundModel compart = getCompartment(list.get(0), map, root);
Actor actor = new Actor(compart, pe, list);
for (physicalEntityParticipant par : list)
{
map.put(par.getRDFId(), actor);
}
}
}
}
// Create complexes
for (complex cmp : model.getObjects(complex.class))
{
if (cmp.isPHYSICAL_ENTITYof().isEmpty())
{
Complex c = new Complex(root, cmp, new ArrayList<physicalEntityParticipant>(0));
createComplexContent(c, cmp, new ArrayList<physicalEntityParticipant>());
}
else
{
Collection<List<physicalEntityParticipant>> coll = groupParticipants(cmp);
for (List<physicalEntityParticipant> list : coll)
{
CompoundModel compart = getCompartment(list.get(0), map, root);
if (compart == root)
{
String nm = Complex.suggestCompartmentNameUsingMembers(cmp.getCOMPONENTS());
if (nm != null)
{
if (nestCompartments) nm = CompartmentManager.getUnifiedName(nm);
compart = getCompartment(nm, map, root);
}
}
NodeModel nd;
if (cmp.getCOMPONENTS().isEmpty())
{
nd = new Actor(compart, cmp, list);
}
else
{
Complex c = new Complex(compart, cmp, list);
createComplexContent(c, cmp, list);
nd = c;
}
for (physicalEntityParticipant par : list)
{
map.put(par.getRDFId(), nd);
}
}
}
}
// Create events
for (conversion conv : model.getObjects(conversion.class))
{
String compName = Conversion.getPossibleCompartmentName(conv);
if (compName != null && nestCompartments)
compName = CompartmentManager.getUnifiedName(compName);
CompoundModel compart = compName == null ? root : (CompoundModel) map.get(compName);
Conversion forwd = null, rever = null;
if (evidenceExists(conv, Conversion.LEFT_TO_RIGHT))
{
forwd = new Conversion(compart, conv, Conversion.LEFT_TO_RIGHT, map);
forwd.selectBestCompartment();
}
if (evidenceExists(conv, Conversion.RIGHT_TO_LEFT))
{
rever = new Conversion(compart, conv, Conversion.RIGHT_TO_LEFT, map);
rever.selectBestCompartment();
}
if (forwd == null && rever == null)
{
forwd = new Conversion(compart, conv, Conversion.LEFT_TO_RIGHT, map);
forwd.selectBestCompartment();
}
}
for (interaction inter : model.getObjects(interaction.class))
{
boolean drawPPI = true;
if (!drawPPI) break;
if (!(inter instanceof conversion) && !(inter instanceof control))