El formato de archivo oghma
1. ¿Qué es JSON?
sim.json de ejemplo abierto en Firefox, mostrando la estructura JSON subyacente de una simulación de OghmaNano.
OghmaNano almacena la información de simulación en un archivo JSON. JSON (JavaScript Object Notation) es un formato muy simple, basado en texto, para almacenar y transmitir datos estructurados. Es ampliamente utilizado en software científico porque es tanto legible por humanos como analizable por máquinas. Puede ver ejemplos generales de estructuras JSON en https://json.org/example.html.
Para ilustrar cómo funciona JSON, a continuación se muestra un ejemplo sencillo. Un archivo JSON se construye a partir de secciones que empiezan y terminan con llaves { }. Cada sección contiene tokens, o etiquetas, como "color_of_dog", "dog_age" o "dogs_toys". Estos tokens siempre deben escribirse entre comillas dobles, y van seguidos de dos puntos : y luego del valor de datos asociado. Los valores de texto se colocan entre comillas dobles, mientras que los números como enteros o decimales se escriben sin comillas. En OghmaNano, los valores tipo booleano se almacenan como las cadenas "true" o "false". Para que el archivo sea válido, todos los corchetes de apertura y cierre deben alinearse correctamente. Los elementos dentro de una sección se separan con comas, excepto el elemento final, que no termina con coma.
??.
{
"color_of_dog": "brown",
"dog_age": 5,
"dogs_toys":
{
"rabbit": "true",
"stick": "false"
}
}
JSON sencilla.
OghmaNano utiliza los mismos principios JSON para almacenar todos sus datos de simulación. Esta información está contenida en un archivo llamado sim.json, que contiene todos los parámetros del dispositivo, la configuración de la simulación y la configuración de salida. Cada simulación tendrá su propio archivo sim.json. Aunque puede abrir este archivo en cualquier editor de texto, a menudo es más fácil utilizar un visor JSON dedicado, ya que formateará los datos en una estructura de árbol fácil de leer. Firefox tiene un buen visor JSON integrado. A continuación se muestra un ejemplo de un archivo sim.json visto en Firefox en ??
Un último punto: aunque sim.json es el archivo de configuración clave, no siempre se almacena por sí solo. En su lugar, OghmaNano a menudo lo empaqueta dentro de un archivo sim.oghma, que es simplemente un archivo ZIP estándar; esto es para ahorrar espacio. Si cambia el nombre de sim.oghma a sim.zip, puede abrirlo con Windows Explorer o cualquier visor zip y extraer sim.json. Si coloca una copia de sim.json en el mismo directorio de simulación y cambia el nombre del archivo de nuevo a sim.oghma,
OghmaNano ignorará la versión archivada de sim.json y usará en su lugar su archivo de texto plano sim.json. Esta característica es extremadamente útil para la automatización, ya que puede editar directamente sim.json usando cualquier lenguaje de programación sin necesidad de manipular archivos zip.
2. El formato de archivo de OghmaNano
OghmaNano aplica exactamente estos principios en su archivo de configuración de simulación, llamado sim.json.
Este archivo contiene todo lo necesario para describir una estructura de dispositivo, definir las simulaciones que se van a ejecutar
y configurar los solucionadores. Cada directorio de simulación incluirá su propio sim.json.
Aunque puede abrir este archivo en cualquier editor de texto, a menudo es más conveniente usar un visor JSON como Firefox,
que presenta automáticamente los datos en una vista de árbol formateada.
En el nivel más alto, sim.json está organizado en un pequeño número de secciones de nivel superior.
Estas secciones luego se ramifican en subsecciones detalladas, como barridos JV, ejecuciones EQE o definiciones de capas del dispositivo.
Las principales secciones de nivel superior presentes en el formato actual se resumen en la siguiente tabla:
??.
| Sección | Propósito |
|---|---|
sim | Metadatos generales (p. ej., versión, modo de ejecución, notas) |
sims | Todas las definiciones de simulación (JV, Suns-Voc, EQE, PL, dominio temporal, ray, FDTD, etc.) |
epitaxy | Estructura del dispositivo: capas, contactos, geometría, materiales |
math | Configuración del solucionador numérico y tolerancias |
optical | Modelos ópticos, fuentes, detectores, mallas |
dump | Controles de salida: verbosidad, sondas, formatos de archivo |
server | Ejecución/paralelización (hilos, GPU, límites de tiempo) |
sim.json.
3. Peculiaridades del formato json de OghmaNano
-
El archivo json de OghmaNano no admite listas json estándar, por ejemplo ["Red", "Green", "Blue"]. Si hay una lista de elementos, se define declarando primero la variable segments, con el número de elementos de la lista, por ejemplo "segments",0 . Cada elemento de la lista se almacena luego en "segment0", "segment1", etc... Este formato permite a OghmaNano asignar la memoria para leer las estructuras antes de realizar la lectura. Esto puede verse en la figura 14.1 donde hay una lista con 1 segmento.
-
A muchos elementos del archivo json se les asigna un número de ID, que es un código hexadecimal de 16 dígitos; este puede usarse para referenciar de manera única el elemento. También puede verse un número de ID en la figura 14.1. Estos números de ID se generan aleatoriamente, pero cada número de ID debe ser único. Los números de ID permiten identificar objetos, por ejemplo capas de epitaxia, de manera única incluso si tienen el mismo nombre.
4. Codificación
Los archivos .json leídos/escritos por OghmaNano siempre se almacenan en formato UTF-8. OghmaNano no puede manejar UTF-16 ni ningún otro estándar de codificación de texto. Hoy en día, el bloc de notas de Windows y la mayoría de las demás aplicaciones usan UTF-8 por defecto, por lo que si no sabe qué son estos formatos de almacenamiento de texto probablemente no importe. Esto solo se manifestará si comienza a generar programáticamente archivos .oghma en un lenguaje como C++ y está usando un idioma como chino o ruso con caracteres no latinos en su alfabeto.
5. Compatibilidad hacia delante/hacia atrás del formato de archivo
Se realiza un esfuerzo significativo para asegurar que las nuevas versiones de OghmaNano puedan leer archivos generados en versiones anteriores. Sin embargo, las versiones antiguas de OghmaNano pueden no ser capaces de leer archivos generados en versiones más nuevas. Cada vez que el usuario abre un archivo sim.oghma usando la GUI, se comprueba el formato de archivo y, si difiere del utilizado en la versión actual, el archivo se actualiza y se vuelve a escribir en el disco. Si está utilizando OghmaNano en una configuración sin interfaz llamando directamente a \(oghma\_core.exe\), entonces cuando use archivos sim.oghma de versiones antiguas del modelo, antes de ejecutar \(oghma\_core.exe\), asegúrese de haberlo abierto primero en la GUI para asegurarse de que el archivo está en el formato correcto.
6. Consejos
Si no está seguro de dónde se almacena un parámetro concreto en el archivo sim.json de OghmaNano,
un método muy eficaz es comparar dos versiones del archivo y ver qué cambia.
Una forma de hacerlo es utilizar una herramienta de comparación de archivos como KDiff3.
El proceso es sencillo:
- Abra su simulación en la interfaz de usuario de OghmaNano.
- Ajuste el parámetro de interés (por ejemplo, cambie el espesor de la capa activa o una configuración de voltaje) y guarde la simulación.
- Compare el nuevo archivo
sim.jsoncon la versión anterior usando KDiff3 (u otra herramienta diff). - Busque las líneas que difieren: estas mostrarán exactamente dónde se almacena ese parámetro en la estructura JSON.
Esta técnica es una forma rápida y fiable de localizar parámetros en el JSON si no está seguro de su ruta en el archivo. Es especialmente útil para simulaciones complejas con muchas secciones anidadas.
👉 Siguiente paso: Ahora continúe para explorar la herramienta Parameter Scan, donde puede aprender a variar sistemáticamente los parámetros de simulación y analizar los resultados.