Was hat Sie zu dieser Wunschliste inspiriert?
Ich muss meine eigenen Tools auf vorhandenen JMP-Plattformen schreiben, um sicherzustellen, dass JMP schnell funktioniert. In diesem Fall können Berechnungen möglicherweise lange dauern (MSA), und Benutzer müssen möglicherweise zwischen verschiedenen Spalten hin- und herwechseln, was Neuberechnungen auslöst.
Welche Verbesserung würden Sie gerne sehen?
Implementieren Sie einen Cache für den Spaltenwechsler, der genutzt wird, wenn sich die Daten nicht geändert haben. Wenn Sie beispielsweise im folgenden Skript Spalten ändern und zu bereits besuchten Spalten zurückkehren, berechnet JMP die Werte neu, was einige Zeit in Anspruch nimmt. Ich möchte, dass JMP über eine Art Speicher für die bereits berechneten Spalten verfügt, der genutzt wird, wenn sich keine Änderungen ergeben, die eine Neuberechnung rechtfertigen. Außerdem sollte die Option zur Vorberechnung aller Spalten im Spaltenwechsler vorhanden sein.
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Semiconductor Capability.jmp");
dist = dt << Distribution(
Continuous Distribution(
Column(:NPN1),
Always use column properties(1),
Process Capability(0),
Fit Normal(Goodness of Fit(1))
),
Histograms Only,
Column Switcher(
:NPN1,
{:NPN1, :PNP1, :PNP2, :NPN2, :PNP3, :IVP1, :PNP4, :NPN3, :IVP2, :NPN4, :SIT1,
:INM1, :INM2, :VPM1, :VPM2, :VPM3, :PMS1, :SNM1, :SPM1, :NPN5, :EP2, :ZD6,
:PBA, :PLG, :CAP, :PBA3, :PLG2, :PNP5, :NPN6, :PNP6, :PNP7, :NPN7, :PNP8,
:IVP3, :IVP4, :IVP5, :IVP6, :PNP9, :NPN8, :NPN9, :IVP7, :NPN10, :N_1, :PBA1,
:WPR1, :B10, :PLY10, :VBE210, :VTN210, :VTP210, :SIT2, :SIT3, :INV2, :INV3,
:INV4, :INV5, :FST1, :FST2, :RES1, :RES2, :PNM1, :PPM1, :FNM1, :FPM1, :FST3,
:FST4, :RES3, :RES4, :A1, :B1, :A2N, :A2P, :A2P1, :IVP8, :IVP9, :DE_H1,
:NF_H1, :ESM1, :ESM2, :ESP1, :YFU1, :VPM4, :PBA2, :PBB1, :LYA1, :LYB1, :DEM1,
:DEP1, :NFM1, :PLY1, :VDP1, :VDP2, :SNW1, :RSP2, :PLY2, :RSP1, :VDP3, :PBL1,
:PLG1, :VDP4, :SPW1, :VIA1, :INM3, :VPM5, :VPM6, :INM4, :VPM7, :M1_M1,
:M2_M2, :P1_P1, :E2A1, :E2B1, :NPN11, :IVP10, :PNP10, :INM5, :VPM8, :VPM9,
:INM6, :VPM10, :N2A1, :N2B1, :NM_L1, :P2A1, :P2B1, :PM_L1, :P1, :M1}
)
);
Ein sehr schnell erstelltes Beispiel, das aber zeigt, wie viel schneller es geht. Hinweis: Wenn Sie pre_calculate aktivieren, ist das Skript recht langsam, da die Anpassung in JMP nicht so schnell erfolgt. Das lohnt sich aber natürlich, da Sie anschließend alle Berichte sehr schnell durchgehen können (Analyse laufen lassen, sich ein Glas Wasser holen, zurückkommen und die Ergebnisse schnell einsehen können).
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Semiconductor Capability.jmp");
numcols = dt << Get Column Names("Numeric", "String");
pre_calculate = 0;
aa_memory = Associative Array(numcols, Repeat({Empty()}, N Items(numcols)));
nw = New Window("",
H List Box(
lb = List Box(numcols, << Set Max Selected(1)),
dist_collector = V List Box()
)
);
lb << Set Function(Function({this},
sel = this << get selected;
If(N Items(sel) == 0,
return(0);
,
sel = sel[1];
);
If(Is Empty(aa_memory[sel]),
dist_collector << Append(
aa_memory[sel] = V List Box(dt << Distribution(
Continuous Distribution(
Column(Eval(sel)),
Always use column properties(1),
Process Capability(0),
Fit Normal(Goodness of Fit(1))
),
Histograms Only
);
));
);
objs = Filter Each({obj}, aa_memory << get values,
!Is Empty(obj) & obj != aa_memory[sel];
);
objs << Visibility("Collapse");
aa_memory[sel] << Visibility("Visible");
wait(0);
));
If(pre_calculate,
nw << Show Window(0);
For(i = 1, i <= N Items(aa_memory), i++,
lb << Set Selected(i, 1, run script(1));
);
nw << Show Window(1);
,
lb << Set Selected(1, 1, run script(1));
);
wait(0);
Warum ist diese Idee wichtig?
Erleichtert das Wechseln zwischen verschiedenen Spalten bei Verwendung des Spaltenumschalters, ohne warten zu müssen, bis JMP alles neu berechnet hat.