**QMJ**format encodes a QUB state model in JavaScript Object Notation (JSON). Here's an example:

{ "channelCount":1, "IeqFv":false, "balanceLoops":true, "vRev":0, "states": [ {"Class":0,"Pr":0,"x":25,"y":50,"Label":"","Index":0}, {"Class":1,"Pr":0,"x":75,"y":50,"Label":"","Index":1} ], "classes": [ {"Amp":0,"Std":0.1,"Cond":0,"CondStd":0.1,"Index":0}, {"Amp":1,"Std":0.1,"Cond":10,"CondStd":0.1,"Index":1} ], "rates":[ {"From":0,"To":1,"k0":10,"k1":0,"k2":0,"Ligand":"","Voltage":"","Pressure":"","Index":0}, {"From":1,"To":0,"k0":100,"k1":0,"k2":0,"Ligand":"","Voltage":"","Pressure":"","Index":1} ], "constraints":[ {"Type":"FixRate","States":[1,0],"Index":0} ], "modelName":"twostate", "modelAbout":"Basic closed-open model, with a constraint fixing the value of k0 closing" }Some notes:

- Each state has a class number, shown onscreen as its color (black, red, ...). States in the same class have identical measurements, given in "classes."
- When IeqFv is false, a class's measurements belong to the normal distribution (class.Amp +/- class.Std).
- When IeqFv is true, they belong to the distribution (classes[0].Amp + (V - vRev)*class.Cond +/- (V - vRev)*class.CondStd)
- vRev (the reversal potential) has units mV
- Rates should be given in symmetric pairs, i.e. don't list all rates emanating from state 0, then all rates from state 1, ...
- Constraint types are:
- "FixRate": hold k0 constant
- "FixExp": hold k1 constant
- "FixPress": hold k2 constant
- "ScaleRate": preserve the ratio between two k0 constants
- "ScaleExp": preserve the ratio between two k1 constants
- "ScalePress": preserve the ratio between two k2 constants