Error de secuencia de comandos JMP solo con una tabla grande: ¿Longitud máxima de matrices?Hola comunidad JMP,
Al usar el script a continuación, que funciona muy bien para tablas con ~ 500 columnas, tuve un problema extraño cuando lo usé en una tabla grande con 20,000 columnas: esencialmente, el script parece completarse normalmente, produciendo la tabla de salida como se desea pero la real Los valores son bastante aleatorios (como se verifica manualmente).
¿Alguna pista sobre lo que puede estar pasando? Tengo el presentimiento de que esto podría deberse a un error de asignación de memoria debido a que excede la longitud máxima de los arreglos que utilizo para recopilar los datos.
Nota: no puedo compartir la tabla grande en la que estoy trabajando debido a la naturaleza confidencial de los datos
Gracias,
Names Default to Here (1);
dt = Current Data Table ();
m = {};
m1 = [];
m2 = [];
m3 = [];
m4 = [];
For (i = 12 , i <= N Col (dt),i++,
mv = Multivariate(
Y( :BIOMARKER, column(i) ),
Estimation Method( "Row-wise" ),
Scatterplot Matrix(
Density Ellipses( 1 ),
Shaded Ellipses( 0 ),
Ellipse Color( 3 )
),
Spearman's ρ( 1 ),
Kendall's τ( 1 )
);
mvr = mv << report;
insert into (m, Column Name (i));
m1 = m1 || ((mvr [Outline Box (1)] [Number Col Box (1)])<< get) [1];
m2 = m2 || ((mvr [Outline Box (1)] [Number Col Box (2)])<< get) [1];
m3 = m3 || ((mvr [Outline Box (1)] [Number Col Box (3)])<< get) [1];
m4 = m4 || ((mvr [Outline Box (1)] [Number Col Box (4)])<< get) [1];
mv << close window;
);
New Table ("Non-Parametric Correlation",
New column ("Symbol", character, set values (m)),
New column ("Spearman Rho", numeric, set values (m1)),
New column ("Spearman p", numeric, set values (m2)),
New column ("Kendall Tau", numeric, set values (m3)),
New column ("Kendal p", numeric, set values (m4)),
);Re: JMP Script Error solo con tabla grande: ¿Longitud máxima de matrices?Prueba esto:
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Body Measurements.jmp");
dt_out = New Table("Non-Parametric Correlation",
Add Rows(N Col(dt)),
New Column("Symbol", character),
New Column("Spearman Rho", numeric),
New Column("Spearman p", numeric),
New Column("Kendall Tau", numeric),
New Column("Kendal p", numeric),
Invisible
);
r = 1;
For(i = 2, i <= N Col(dt), i++,
m = [];
mv = dt << Multivariate(
Y(:Mass, Column(i)),
Estimation Method("Row-wise"),
Scatterplot Matrix(0),
Spearman's ρ(1),
Kendall's τ(1)
);
mob = Report(mv)[Outline Box(1)];
Column(dt_out, 1)[r] = Column(dt, i) << get name;
For(c = 2, c <= 5, c++,
Column(dt_out, c)[r] = (mob[Number Col Box(c - 1)] << get)[1];
);
mv << close window;
r++;
);
dt_out << show window(1);Re: JMP Script Error solo con tabla grande: ¿Longitud máxima de matrices?Gracias por una solución elegante a mi problema.
Acabo de probarlo en mis datos (después de reemplazar la tabla de datos y la variable fija) y me devolvió un mensaje de error (depurador): Argumento no válido en la línea
dt_out<SPAN class="token punctuation">[</SPAN>r<SPAN class="token punctuation">,</SPAN> <SPAN class="token number">1</SPAN><SPAN class="token punctuation">]</SPAN> <SPAN class="token operator">=</SPAN> <SPAN class="token function">Column Name</SPAN><SPAN class="token punctuation">(</SPAN>i<SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
Supongo que este comando o sintaxis que no es compatible con JMP 11.1: ¿cuál sería la mejor solución?
Re: JMP Script Error solo con tabla grande: ¿Longitud máxima de matrices?No estoy seguro de lo que está pasando. Puede funcionar mejor si se rellena incrementalmente la tabla de salida en lugar de recopilar todos los datos en grandes listas / matrices.
Un ejemplo (JMP 13):
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Body Measurements.jmp");
dt_out = New Table("Non-Parametric Correlation",
Add Rows(N Col(dt)),
New Column("Symbol", character),
New Column("Spearman Rho", numeric),
New Column("Spearman p", numeric),
New Column("Kendall Tau", numeric),
New Column("Kendal p", numeric),
Invisible
);
r = 1;
For(i = 2, i <= N Col(dt), i++,
m = [];
mv = dt << Multivariate(
Y(:Mass, Column(i)),
Estimation Method("Row-wise"),
Scatterplot Matrix(0),
Spearman's ρ(1),
Kendall's τ(1)
);
mob = Report(mv)[Outline Box(1)];
m ||= mob[Number Col Box(1)] << get as matrix;
m ||= mob[Number Col Box(2)] << get as matrix;
m ||= mob[Number Col Box(3)] << get as matrix;
m ||= mob[Number Col Box(4)] << get as matrix;
mv << close window;
dt_out[r, 1] = Column Name(i);
dt_out[r, 2 :: 5] = m;
r++;
);
dt_out << show window(1);
Re: JMP Script Error solo con tabla grande: ¿Longitud máxima de matrices?Agregando algunos detalles, la mayoría de las plataformas JMP, (es decir, Distribución, partición, etc.) utilizan múltiples núcleos en el procesamiento. El código JSL es un procesador único, pero la plataforma Multivarate usará todos los procesadores de los que puede obtener una retención.
Re: JMP Script Error solo con tabla grande: ¿Longitud máxima de matrices?Hola Uday,
Gracias.
Acabo de intentar ejecutar el mismo script sin otra aplicación que se ejecute en segundo plano y funcionó bien. Así que parece que podría haber sido algún tipo de desbordamiento de memoria, aunque de acuerdo con el Administrador de tareas (Windows 10) tenía 2 GB de RAM libre.
Re: JMP Script Error solo con tabla grande: ¿Longitud máxima de matrices? @sornasst ,
No sé cuánta ayuda sería, pero ¿puede compartir los detalles de la RAM de su sistema aquí? No creo que JMP se ejecute en varios núcleos, por lo que, suponiendo que se ejecute en un solo núcleo, ¿puede la RAM soportar esto?