Re: codifica JSL per la partizione di più segmentiÈ possibile utilizzare il pulsante, ad esempio, per creare nuove tabelle
Names Default To Here(1);
dt = Open("$SAMPLE_DATA\semiconductor capability.jmp");
filepath = "$Desktop";
nw = New window("part test",
V List Box(
obj = dt << Partition(
Y(:NPN1),
X(:PNP1, :PNP2, :PNP3, :PNP4, :NPN2, :NPN3, :NPN4),
Method("Decision Tree")
),
Button box("make splits",
make_splits_expr
);
)
);
obj << ShowGraph(0);
obj << SplitBest(4);
obj << Show Split Count(1);
obj << Show Split Prob(1);
make_splits_expr = Expr(
sel_rows = dt << Get Selected Rows;
If(N Items(sel_rows > 0),
dtTemp = dt << subset(invisible, rows(), selected columns(0));
Close(dtTemp, save(filepath || "\" || "badpopulation.jmp"));
dt << invert row selection;
sel_rows = dt << Get Selected Rows;
dtSEG = dt << subset(invisible, selected rows(1), selected columns(0));
Close(dtSEG, save(filepath || "\" || "goodpopulation.jmp"));
);
dt << Clear Selected;
);
In questo esempio manca la corretta gestione degli errori e l'informazione dell'utente su ciò che sta accadendo
Codifica JSL per la partizione di più segmentiIl codice seguente consente la selezione di più nodi foglia dall'albero delle partizioni tramite l'opzione Seleziona righe. Tuttavia, la finestra della partizione deve essere chiusa dopo che l'utente ha selezionato i nodi foglia per la creazione di file di popolazioni buone e cattive. Esiste un'alternativa in cui non è necessario chiudere la finestra della partizione? o qualsiasi altra funzione al posto di onClose() che posso usare?
dt = Open( "$SAMPLE_DATA\semiconductor capability.jmp" );
// Matrix of all rows that were selected
::wasSelected = [];
// Row state handler function
updateWasSelected = Function( {x},
{Default Local},
// 'x' is a column vector of row states that have CHANGED. We just need those that are now selected . . .
For( i = 1, i <= N Row( x ), i++,
// Need to accumulate selected rows, not adding duplicates
If( Selected( Row State( x[i] ) ) & !Contains( ::wasSelected, x[i] ),
::wasSelected = V Concat( ::wasSelected, x[i] )
)
)
);
// Assign the handler to the table
rsh = dt << MakeRowStateHandler( updateWasSelected );
obj = dt << Partition(
Y( :NPN1 ),
X( :PNP1, :PNP2, :PNP3, :PNP4, :NPN2, :NPN3, :NPN4 ),
Method( "Decision Tree" )
);
obj << ShowGraph( 0 );
obj << SplitBest( 4 );
obj << Show Split Count( 1 );
obj << Show Split Prob( 1 );
obj << onClose(
If( N Rows( ::wasSelected ) > 0,
filepath = "$Desktop";
Try(
dtTemp = dt << subset( invisible, rows( ::wasSelected ), selected columns( 0 ) );
Close( dtTemp, save( filepath || "\" || "badpopulation.jmp" ) );
,
Print( "No rows for table!" )
);
dt << invert row selection;
Try(
dtSEG = dt << subset( invisible, selected rows( 1 ), selected columns( 0 ) );
Close( dtSEG, save( filepath || "\" || "goodpopulation.jmp" ) );
,
Print( "No rows" )
);
);
dt << clearRowStates;
);
AnaliticaSceneggiaturafinestre