Re : Codage JSL pour la partition de plusieurs segmentsVous pouvez utiliser le bouton par exemple pour créer de nouvelles tables
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;
);
La gestion appropriée des erreurs et l'information de l'utilisateur sur ce qui se passe manquent dans cet exemple
Codage JSL pour la partition de plusieurs segmentsLe code suivant permet la sélection de plusieurs nœuds feuilles à partir de l'arborescence des partitions via l'option Sélectionner des lignes. Mais, la fenêtre de partition doit être fermée après que l'utilisateur a sélectionné les nœuds feuilles pour la création de fichiers de bonnes et de mauvaises populations. Existe-t-il une alternative où la fenêtre de partition n'a pas besoin d'être fermée ? ou toute autre fonction à la place de onClose() que je peux utiliser ?
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;
);
AnalytiqueScriptles fenêtres