diff --git a/TODO.md b/TODO.md index 5f1b6820..990f9b5f 100644 --- a/TODO.md +++ b/TODO.md @@ -42,7 +42,7 @@ - checking legal functions inside Expressions and functionDefinition - `#defineFunction`: circular dependences within functions, internal functions, different exports, functionDef vs units - write reusable `Build` class -- remove `isAmount`, `compartment` properties from `@Reaction` +- remove `isAmount` properties from `@Reaction` ## ideas diff --git a/src/dot-export/namespace.js b/src/dot-export/namespace.js index 69737125..cca22277 100644 --- a/src/dot-export/namespace.js +++ b/src/dot-export/namespace.js @@ -10,13 +10,15 @@ Namespace.prototype.getDotImage = function() { let substrates = proc.actors.filter((x) => x.stoichiometry < 0); // push records proc.actors.forEach((actor) => { - let record = this.get(actor.target) || { id: actor.target }; // use fake record + let record = this.get(actor.target) || { id: actor.target }; // use target record or fake record for abstract NS let compartmentId = record.compartment || '_'; clustersDict[compartmentId]?.push(record) || (clustersDict[compartmentId] = [record]); }); // push process - let compartmentOfFirstSubstrate = this.get(substrates[0]?.target)?.compartment || '_'; - clustersDict[compartmentOfFirstSubstrate]?.push(proc); + let compartmentOfReaction = proc.compartment // use explicit compartment, first substrate compartment, or empty + || this.get(substrates[0]?.target)?.compartment + || '_'; + clustersDict[compartmentOfReaction]?.push(proc); }); /* display all records this.selectByInstanceOf('Record')