Así que tengo algunos archivos HDF5 de Matlab con .mat como formato (cambiado a .hdf5 sin ninguna diferencia) en Python con h5py puedo extraer los datos que quiero sin ningún problema, ejecuto una aplicación Flask, así que quiero hacer esto al frente final.
En el sitio hay un formulario/carga de archivo y un botón para leer el archivo, cuando se carga el archivo, quiero obtener las claves del archivo y mostrar las claves.
Intenté usar jsfive y h5wasm pero ambos me dan el mismo error en el archivo que funcionó en python: Uncaught TypeError: version_hint.toFixed is not a function
El código que probé es este para jsfive:
Importar desde HTML: <script src="https://cdn.jsdelivr.net/npm/jsfive@0.3.10/dist/browser/hdf5.js"></script>
function signalsSearch() { var file_input = document.getElementById('signal-file'); var file = file_input.files[0]; let datafilename = file.name; let reader = new FileReader(); reader.addEventListener("loadend", function(evt) { let barr = evt.target.result; var f = new hdf5.File(barr, datafilename); let signals = f.keys(); console.log(signals); }); reader.readAsArrayBuffer(file); } Aquí está la var f = new hdf5.File(barr, datafilename); que tira el error
Y esto para h5wasm:
import * as hdf5 from "https://cdn.jsdelivr.net/npm/h5wasm@latest/dist/esm/hdf5_hl.js"; await hdf5.ready; async function loadData() { var signals = []; let file = $("#signal-file")[0].files[0]; let data_filename = file.name; let ab = await file.arrayBuffer(); // hdf5.FS.writeFile(data_filename, new Uint8Array(ab)); let f = new hdf5.File(ab, "r"); // do somthing with f signals = f.keys(); f.close(); return signals } Aquí está el let f = new hdf5.File(ab, "r"); Eso da un error, en el ejemplo, pasa data_filename isntread of ab here pero eso solo da el error TypeError: First argument to DataView constructor must be an ArrayBuffer
Entonces, por lo que encontré, el error es probablemente que toFixed() obtiene un valor de cadena en lugar de un int o float, lo que no sé es por qué y si es reparable. ¿Puede ser que la forma en que está formateado hdf5 no sea legible por las dos bibliotecas pero está en h5py?
En ese caso, ¿qué puedo hacer? Intenté hacer un botón de envío y hacer la lectura en python y pasar el resultado al sitio, pero eso hace que el sitio se vuelva a cargar y se desplace hacia la parte superior, lo cual es un poco molesto ya que esto es parte de una forma enorme.