Coder Social home page Coder Social logo

spectrogram's Introduction

PlateUNLP

Ejecucion en Docker

Requerimientos

  • Docker

Preparacion

Para la correcta ejecución de los contenedores debe tener preparado un archivo .env que asigne valores adecuados a las variables de entorno que requiere el arhivo docker-compose.yml.

Para su creacion puede duplicar el archivo .env.sample que esta en la carpeta raiz del repositorio,cambiarle el nombre a .env y modificar las variables que declara segun las necesidades de su equipo.

Ejecucion

Para levantar el conjunto de contenedores ejecutar:

docker compose --env-file=.env up

En caso de que lo que quiera sea actualizar los contenedores agregue al final el tag --build, tal que asi:

docker compose --env-file=.env up --build

Acceso a la app

Una vez levantado el entorno de produccion puede acceder al la aplicacion desde localhost:5000.

Tambien puede acceder a la API expuesta por el backend desde localhost:20500

Ejecucion sin docker

Requerimientos

Backend

  • Python (v3.8)

Frontend

Instalación de dependencias

Backend

Para instalar las dependencias del backend pocisionarse en la carpeta /backend, activar el entorno virtual en caso de que se emplee y ejecutar:

pip install -r requirements.txt

Frontend

Para instalar las dependencias del frontend es necesario posicionarse en la carpeta /frontend y ejecutar:

npm install

Patchear la clase Upsample de PyTorch (Pre 1.3)

La versión de YOLO utilizada el modelo entrenado depende de un parámetro de PyTorch de la clase Upsample que no existe más. Un fix temporal es reemplazar la línea 152 (de la versión 1.12 de PyTorch) del archivo torch.nn.modules.upsampling.py quitando el parámetro recompute_scale_factor, de modo que la línea queda:

def forward(self, input: Tensor) -> Tensor:
        return F.interpolate(input, self.size, self.scale_factor, self.mode, self.align_corners)

SetUp

Crear un archivo db.json en la carpeta backend/app/static/config, y configurar el campo workspace_path para que apunte a la carpeta donde están/se pondrán los archivos tiff a procesar, y se guardarán sus metadatos y resultados. Se puede utilizar el archivo db.json.example como ejemplo. Por defecto, este archivo apunta al directorio test_db. que tiene archivos de ejemplo para probar el sistema.

Ejecutar el software en desarrollo

En la carpeta /backend una vez activado el entorno virtual, ejecutar:

python run.py

En la carpeta /frontend, ejecutar:

npm run dev

Accediendo desde el navegador a localhost:5000 se podrá ver la interfaz gráfica del software.

Ejecutar el software en producción

Para ejecutar el software en producción se debe posicionar en la carpeta /frontend y ejecutar el siguiente comando:

npm run pm2-start

Se dispone de los siguientes scripts: pm2-start, pm2-stop, pm2-restart,pm2-reload y pm2-delete.

Accediendo desde el navegador a localhost:5000 se podrá ver la interfaz gráfica del software.

Links de interes

spectrogram's People

Contributors

facundoq avatar joaquinmir avatar juanm04 avatar nebulosa-r avatar nehuenpereyra avatar sansanto2000 avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

spectrogram's Issues

Atributos obligatorios

Sin los atributos obligatorios no se puede exportar el fits

De los Espectros:

  • object
  • Ut
  • date-obs
  • observat

De la placa:

  • Nro placa

Botones de buscar metadatos y exportar fits

Poner el botón de buscar metadatos dentro del formulario y armar dos pasos para llenar (primero obligatorio y luego el resto)

Pasar botón de exportar fits dónde está ahora el de buscar metadatos

Controles de imagen

  1. Quitar UI de configuracion por defecto
  2. Agregar boton de guardar configuracion actual como por defecto (ir en la barra de "Filtros" arriba)
  3. Quitar boton de Reiniciar Filtros
  4. Agregar boton de Ver Imagen Original
  5. Actualizar valores cuando se corre la barra
  6. Dar como elección solo 4 colores predefinidos (verde, cian, amarillo y original)
  7. Achicar barras y poner 4 controles en una sola linea

Atributos de la placa

Los campos para atributos de la placa deberían ser los mismos para toda la placa y modificarse desde un solo lugar independiente a los espectros

Los campos son:

  • Digitalizador
  • Nro placa (obligatorio para exportar)
  • observatorio,
  • scanner
  • scan res
  • scan col
  • telescopio
  • instrumento

No permitir cargar la aplicación sin conexión al servidor

Al iniciar la aplicación, si el servidor no está funcionando se muestra un modal diciendo que hubo un error en el server.

Screenshot_20220610_184331

En lugar de eso, indicar que "No se pudo conectar con el servidor; recargue la página para volver a intentarlo", y no dejar que se cierre el mensaje modal.

No sé como lo están haciendo por atrás, pero otra opción seŕia que el frontend podría quedar haciendo polling al server hasta que pueda conectarse, y recién ahí se quite el mensaje modal. Eso podría funcionar para todos los requests, es decir, podría ser una funcionalidad genérica de que si un request no funciona porque el servidor está abajo, se impide usar la app hasta que se restaure la conexión, y se reintente hacer la operación mientras.

En cualquier caso, podrían utilizar un ícono más adecuado también para indicar la falta de conexión.

Poder cargar fits

Considerar también los archivos fits dentro del directorio de trabajo. Al abrir un archivo fits:

  • Cargar la imagen del fits
  • Detectar los bounding boxes/Espectros
  • Ponerle los metadatos del fits a todos los Espectros
  • El usuario debería borrar los espectros que no van

Confirmar borrado de espectros con metadatos

Cuando se cargan datos de un espectro (al menos 1 campo), y luego se quiere borrar el espectro, se debe pedir confirmación al usuario e indicarle que va a perder los metadatos de ese espectro de forma irreversible.

Ajustar la visualización del espectro

Agregar controles de:

  • Brillo y contraste en base a:
    • Rango de valores mínimo y máximo y escalado de valores en el medio
    • Curva de valores logarítmica o lineal
  • Colorizar (ver los blancos como otro color, rojos por ejemplo, que se ven más fácil en algunos monitores)

Funcionalidad de Pan&Zoom

  1. Poner fijo el tamaño de la placa sin importar el zoom o el centro
  2. Agregar funcionalidad de Panning

Fewdback al buscar metadatos

  1. Si ya hay metadatos cargados, y se vuelven a buscar, preguntar si queres reemplazar los anteriores
  2. Los datos cargados automáticamente se pintan de un color de fondo: si se modifican pierden el color

Valores de metadatos elegibles y persistentes

Los valores de algunos campos de los metadatos deben poder elegirse de un widget combobox o similar y se debe permitir agregar o quitar valor a la lista de los valores posibles. Estos valores deben persistir entre sesiones. Además, se debe poder elegir un default.

@nehuen por favor lista acá los campos a aplicarle este widget.

Visualizar los espectros horizontales

Actualmente los espectros se muestran verticales y no es la forma natural de verlos.

Cambiar la UI para que se vean horizontales, aunque cuando se escanean están verticales.

Mostrar grado de procesamiento de cada imagen

El usuario que escanea y anota debe poder ver el progreso que ha realizado en la anotación de los espectros y si hay imágenes nuevas escaneados.

Agregar información de cada imagen listada, por ejemplo:
ui_espectros

Otras columnas posibles: fecha de escaneo, última modificación

Nombres de los archivos fits generados

Los nombres de lo archivos fits a generar deberían componerse tanto del nombre del archivo original como del object ID del espectro dentro de archivo. Algo asi como ARCHIVOORIGINAL_OBJECTID.fits . De esa manera, además, si se vuelve a procesar un archivo original se puede saber si ya tiene espectros generados a partir del mismo.

En el fits, además entonces, debería guardarse el bounding box con el que se recortó el espectro en el archivo original.

Además, en la UI debería indicarse cuando un espectro ya ha sido guardado en disco con una tilde verde, y cuando no con un signo de exclamación amarillo o rojo. Al modificarse luego de guardado, debe nuevamente ponerse el signo de exclamación

Alternativa: SIEMPRE persistir los espectros, ante cualquier cambio, tipo como funciona google docs.

Elección de la carpeta con los archivos

  1. Al cargar la aplicación, cargar automáticamente la lista de archivos de la última carpeta utilizada
  2. Agregar diálogo para poder elegir la carpeta en donde se buscan las imágenes

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.