2011-09-14 12 views
10

¿Hay alguna manera de iniciar una interfaz matemática (GUI) desde un símbolo del sistema (Windows) y hacer que evalúe una notebook sin más acciones del usuario?mathematica start front end y eval notebook de la línea de comandos

aunque mathematica.exe toma las opciones -run y -initfile no funcionan igual como lo hacen con math.exe. (-run '' < < file.m '' quiere abrir un archivo llamado '' < < file.m '', por ejemplo)


Gracias. La primera respuesta parece prometedor, sin embargo consigo FrontEndObject :: notavail Una interfaz no está disponible

(por docs que es "UseFrontEnd" por cierto.)

Tal vez un problema de ruta, sin embargo, incluso después de configuración $ FrontEndLaunchCommand sin alegría ...

Re: Celda de inicialización - esa respuesta simple parecería hacer exactamente lo que necesito exceptuando el cuadro de peticiones "¿Desea ejecutar la inicialización ...". Si hay una opción para iniciar automáticamente un kernel y ejecutar las celdas de inicialización que sería realmente útil saber.

Estoy ejecutando 6.0 por cierto.

+0

Permítame darle la bienvenida a StackOverflow y recordarle tres cosas que solemos hacer aquí: 1) Cuando reciba ayuda, trate de responder preguntas en su área de especialización 2) Lea las preguntas frecuentes 3) Cuando veas buenas preguntas y respuestas, vuélvelas usando los triángulos grises, ya que la credibilidad del sistema se basa en la reputación que obtienen los usuarios al compartir sus conocimientos. Recuerde también aceptar la respuesta que resuelva mejor su problema, si corresponde, presionando el signo de la marca de verificación. (Y sí, he plagiado un comentario anterior de @belisarius) – Verbeia

+0

@ george - UsingFrontEnd es un comando diferente de UseFrontEnd. Está documentado en esta página: http://reference.wolfram.com/mathematica/guide/StandaloneMathematicaKernels.html –

Respuesta

5

Aha ... !!

Needs["JLink`"]; 
$FrontEndLaunchCommand="C:\\Program Files\\Wolfram Research\\Mathematica\\6.0\\Mathematica.exe"; 
ConnectToFrontEnd[]; 
UseFrontEnd[Module[{}, ... 

seguimiento up..for integridad --- lo anterior $ FrontEndLaunchCommand hace que la interfaz gráfica de usuario para llegar a lo que se puede observar la evaluación (Lo que quería). El valor predeterminado es ejecutar una interfaz en un modo de servidor en segundo plano, por lo que tiene acceso a las funciones frontales pero no puede verlo funcionar.

+0

Interesante. Muestra la evaluación, pero el kernel se queja. Cambié firstgo.m a esto para verificarlo: Necesita ["JLink'"]; $ FrontEndLaunchCommand = "C: \\ Archivos de programa \\ Wolfram Research \\ Mathematica \\ 8.0 \\ Mathematica.exe"; ConnectToFrontEnd []; UseFrontEnd [Módulo [{}, archivo = "C: \\ Temp \\ Test.nb"; targetnotebook = NotebookOpen [archivo, Visible -> Verdadero]; SelectionMove [targetnotebook, Next, Cell]; SelectionEvaluate [targetnotebook]; ]]; –

+0

Los mensajes de advertencia de tirada: nocatch resultantes de UseFrontEnd ejecutados desde la línea de comandos de Windows se explicaron aquí: http://stackoverflow.com/questions/7626491/uncaught-throw-generated-by-jlink-or-usefrontend –

2

No es el FrontEnd que hace la evaluación sino el Kernel. Puede usar MathematicaScript para automatizarlo.

1

Si esto es para un portátil específico, ¿ha intentado configurar las celdas correspondientes en el cuaderno para tener la propiedad InitializationCell? ¿O quieres hacer esto con cualquier computadora portátil? Si esto último, la respuesta de Sjoerd funciona mejor.

+0

Re: Initialization Cell - esa respuesta simple parecería hacer exactamente lo que necesito exceptuando para el "¿quieres? ejecutar inicialización .. "nag box. Si hay una opción para iniciar automáticamente un kernel y ejecutar las celdas de inicialización que sería realmente útil saber. – agentp

10

Puede probar esto:

En C: \ Archivos de programa \ Wolfram Research \ Mathematica \ 7,0 crear un archivo llamado firstgo.m que contiene:

UsingFrontEnd[Module[{}, 
file = "C:\\Temp\\Test.nb"; 
targetnotebook = NotebookOpen[file, Visible -> True]; 
SelectionMove[targetnotebook, Next, Cell]; 
SelectionEvaluate[targetnotebook]; 
NotebookSave[targetnotebook]; 
NotebookClose[targetnotebook]; 
]]; 

Y en C: \ Temp crear una archivo llamado Test.nb que contiene:

Module[{x1=0}, 
Export["C:\\Program Files\\Wolfram Research\\Mathematica\\7.0\\sin.gif", 
Plot[Sin[x],{x,0,6}]]; 
While[x1<1000000, 
If[Mod[x1,100000]==0,Print["x1="<>ToString[x1]]]; 
x1++]] 

Luego, en una carrera de la consola de comandos de Windows esto:

cd C:\Program Files\Wolfram Research\Mathematica\7.0 
MathKernel -noprompt -initfile firstgo.m 

Verá que Test.nb crea un archivo llamado 'sin.gif' en el directorio de Mathematica. Test.nb también contiene algunos resultados de impresión, pero a pesar de ejecutarse en la interfaz y guardar después de la ejecución, no hay salida de impresión guardada. Además, todavía tengo que encontrar una manera de cerrar el kernel sin interrumpir el proceso de front-end.

Adición

Si sabe el tiempo que el proceso va a tomar puede utilizar un archivo por lotes para cerrar Mathematica cuando se hace, (listo para la siguiente ejecución). Este ejemplo hace una pausa de 20 segundos antes de apagar Mathematica. Tenga en cuenta que firstgo.m ahora se movió a C: \ Temp para fines de demostración. Cree un archivo por lotes RunFirstGo.bat en Mis documentos que contiene:

@echo off 
setlocal 
PATH = C:\Program Files\Wolfram Research\Mathematica\7.0\;%PATH% 
echo Launching MathKernel %TIME% 
start MathKernel -noprompt -initfile "C:\Temp\firstgo.m" 
ping localhost -n 20 > nul 
echo Terminating MathKernel %TIME% 
taskkill /F /FI "IMAGENAME eq MathKernel.exe" > nul 
endlocal 

RunFirstGo.bate a continuación, se puede ejecutar desde una consola de comandos de Windows, así:

cd my documents 
runfirstgo 

Alternativamente, RunFirstGo.bat se puede ejecutar como tarea programada (a través de Panel de control de Windows).

+0

Puedo confirmar que este método funciona bien para trabajos por lotes. –

1

no sé si el tema está todavía activo, pero para los que se detuvo en el problema "inicialización advertencia celular", puede cambiar esto a "Falso" en el Inspector

Opción - > Notebook Options -> Evaluation Options -> InitializationCellWarning -> False

Cuestiones relacionadas