About the netlist format: As you can imagine I am not familiar with SPICE or other circuit software so I picked the simplest suitable format I could think of. Do you think that adding an option for some other input format would be a good idea?
Yeah, the most frustrating thing is not knowing how my input has failed: "unable to parse", really? Documenting the format, and failing gracefully (if nothing else, telling the user exactly what they've done, and not done, and how to fix it), are critical to good design!
The same goes for the resistor value page; the input fields aren't well documented and I always seem to fumble around a bit, remembering which is which and what they do...
I'd love a netlist format -- here's the XSPICE version of the schematic in question:
R1 1 2 1.0
R2 1 5 1.0
R3 1 6 1.0
R4 1 3 1.0
R5 2 4 1.0
R6 2 9 1.0
R7 2 5 1.0
R8 6 3 1.0
R9 3 12 1.0
R10 4 7 1.0
R11 7 6 1.0
R12 6 12 1.0
R13 5 10 1n
R14 6 10 1.0
R15 4 8 1.0
R16 8 7 1.0
R17 9 10 1.0
R18 11 10 1.0
R19 12 11 1.0
R20 9 13 1.0
R21 8 13 1.0
R22 12 14 1.0
R23 11 14 1.0
R24 13 10 1.0
R25 10 14 1.0
R26 13 15 1.0
R27 10 15 1.0
R28 14 15 1.0
R29 15 0 1n
V1 1 15 1.0
General syntax is:
<Identifier> <Net1> <Net2> [Net3 [...NetN]] <Value> [ModelName] \n
<Identifier> starts with a letter that denotes what type of component it is: R for resistor, C for capacitor, Q for BJT, X for subcircuit, etc.
You won't need to use <Identifier> (aside from accepting resistors, and perhaps ignoring other types?), though if the graph can have its edges labeled by two parameters (name and value), it should be added -- yay for disambiguation!
For resistors only, there are only two pins, of course, so only two net names are expected.
You'd ignore the [ModelName] field; that's used to show resistor tempco, transistor type, stuff like that.
Statements are on a per-line basis. If the next line starts with a "+", it's a continuation line, so should be collapsed with the previous line.
Fully parsing all valid netlists is a complex process (you have to preprocess, build a namespace, then for each statement, count the tokens and match up keywords in the namespace..), but just using a much more simplified subset of that would be very nice I think.
Like I said in the article, the existing parser basically does it, but it's out of order, so requires some editing.
About the visualization looking different between runs: Actually it's not due to input format, but simply it's random each run anyway. Even identically input will result in different visualizations. (Often some dragging around is required before the graph makes sense).
Really? I thought I ran it twice on identical data and saw more-or-less the same thing.
Dragging? YOU CAN DRAG THINGS?
I didn't even try...
I have a further quiz... I've seen somewhere a theory saying that Randall (comic author) intentionally made the network to have the conductance (reciprocal or resistance) of 1.337 Mho. Question is: what other networks have 1.337 Mho total conductance, and whether any simpler networks can give a more accurate approximation.
EDIT: Just noticed it's also mentioned by JPortici.
Read the mouseover text on that picture...

Thanks!
Tim