Inicio Ejemplos Capturas de pantalla Manual de usuario Logotipo de Bluesky YouTube
OghmaNano Simule células solares orgánicas/de perovskita, OFETs y OLEDs DESCARGAR

Introducción al scripting

1. Configuración de su entorno de scripting

El scripting ofrece una forma más potente de interactuar con OghmaNano. En lugar de utilizar la interfaz gráfica de usuario, puede usar su lenguaje de programación favorito para interactuar con OghmaNano. Esto le da la opción de controlar simulaciones de una forma mucho más potente que la que puede lograrse usando solo la interfaz gráfica. A continuación doy ejemplos de uso de MATLAB y python para controlar OghmaNano, pero puede usar cualquier lenguaje que quiera que tenga lector/escritor de json. Pearl y Java son dos lenguajes que me vienen a la mente.

Antes de comenzar a hacer scripting con OghmaNano necesita decirle a windows dónde está instalado OghmaNano, el OghmaNano predeterminado se instalará en C:\Program files x86 \OghmaNano, ahí verá en este directorio dos ejecutables de windows, uno llamado oghma.exe, esta es la interfaz gráfica de usuario, y un segundo .exe, llamado oghma_core.exe. Puede ejecutar oghma_core.exe desde la línea de comandos sin oghma.exe. Simplemente necesita navegar hasta un directorio que contenga una carpeta sim.oghma y llamar a oghma_core.exe, esto puede hacerse desde la línea de comandos de windows, matlab, python o cualquier otro lenguaje de scripting. Sin embargo, antes de poder hacer esto en windows, necesita añadir C:\Program files x86 \OghmaNano a su ruta de windows para que windows sepa dónde está instalado OghmaNano. Se da un ejemplo de cómo hacer esto en una versión moderna de windows en el enlace https://docs.microsoft.com/en-us/previous-versions/office/developer/sharepoint-2010/ee537574(v=office.14)

Parece que cada nueva versión de windows mueve las opciones de configuración de sitio, por lo que puede que tenga que buscar instrucciones para su versión de windows.

2. Más consejos sobre scripting

Explorador JSON de OghmaNano que muestra la estructura de datos de la simulación como un árbol de objetos JSON
El Explorador JSON, que muestra la estructura de datos de sim.json como un árbol navegable.

Piense en la GUI como un visor JSON estructurado

Un modelo mental útil al hacer scripting con OghmaNano es tratar toda la GUI como un visor y editor estructurado del archivo subyacente sim.json. Cada widget, deslizador, tabla y cuadro de diálogo, en última instancia, lee de y escribe en este archivo. No existe un “estado de GUI” separado - el JSON es el estado. En la cinta Automation, el Explorador JSON (Figura ??) le permite navegar directamente por el archivo sim.json como un árbol jerárquico. Esta es a menudo la forma más rápida de entender dónde “vive” un parámetro en el JSON y de confirmar que una acción en la GUI está escribiendo en el campo que usted espera.

Inspección de objetos mediante copiar y pegar

Otra técnica útil es aprovechar cómo funciona copiar y pegar en toda la GUI. Cuando copia un objeto - por ejemplo, haciendo clic con el botón derecho y copiando una capa en el editor de capas, o copiando un objeto seleccionado en la vista 3D - OghmaNano puede colocar la estructura JSON subyacente responsable de generar ese objeto directamente en el portapapeles.

Si pega el contenido del portapapeles en un editor de texto plano (Notepad, Notepad++, VS Code, etc.), puede inspeccionar el bloque JSON exacto utilizado para definir ese objeto o entrada de tabla. Esto proporciona una vista directa e inequívoca de cómo se representa internamente el objeto y, a menudo, es la vía más rápida para identificar las claves relevantes para scripting.

Muchos menús contextuales también exponen opciones como Copy JSON, Copy JSON path, o Copy scripted path. Estos comandos revelan la ubicación exacta de un objeto dentro de la jerarquía JSON, lo que hace mucho más fácil localizar y modificar la entrada correspondiente en scripts.

Si realmente está atascado: use una herramienta diff

Si alguna vez no está seguro de cómo se asigna un control concreto de la GUI al archivo sim.json, una técnica de depuración simple y eficaz es usar una herramienta de comparación de archivos (diff).

  1. Haga una copia de seguridad de su archivo de simulación, p. ej. sim.jsonsim.back.
  2. Cambie un único parámetro en la GUI.
  3. Compare el archivo sim.json modificado con su copia de seguridad usando una herramienta diff como KDiff3.
  4. La salida diff le mostrará exactamente qué línea (o bloque) del JSON cambió, revelando cómo ese control de la GUI está representado internamente.

Esta es a menudo la forma más rápida de mapear un control de la UI a un campo JSON específico, especialmente en árboles de parámetros grandes.

Uso de IDs de objeto para localizar entradas en sim.json

Editor de objetos de OghmaNano mostrando el ID del objeto visualizado en la parte inferior de la ventana
El editor de objetos, que muestra el ID único del objeto visualizado en la parte inferior de la ventana. Este cuadro de diálogo se abrió haciendo clic con el botón derecho en el contacto superior del dispositivo y seleccionando Object header.

La mayoría de los objetos estructurados en OghmaNano - como capas, formas, barridos de parámetros y otras entidades jerárquicas - tienen asignado un identificador único (ID), normalmente una cadena hexadecimal aleatoria de aproximadamente 16 caracteres.

El ID del objeto a menudo se expone directamente en la GUI. Por ejemplo, en la Figura ??, el ID se muestra en la esquina inferior izquierda de la ventana del editor de objetos. Este mismo identificador también aparece en la entrada correspondiente dentro del archivo sim.json.

Estos IDs son extremadamente útiles al navegar por estructuras JSON grandes o profundamente anidadas. Buscando la cadena del ID en sim.json, puede localizar inmediatamente el objeto exacto asociado con un elemento dado de la GUI, incluso cuando la jerarquía circundante es compleja.