git clone https://github.com/linea-it/manga.git
cd manga
1; Configuration
You can modify the variables inside the file
.env.dev
.
2; Running database only in first time.
docker-compose up database
After message: database system is ready to accept connections stop database container ctrl + c
3; Build and run backend
docker-compose up backend
Create django super user
docker-compose exec backend python manage.py createsuperuser
4; Build and run Frontend
docker-compose run frontend yarn
Os dados do portal Manga consitem em duas entidades principais a lista de objetos e os megacubos.
Cada objeto possui um arquivo megacubo que possui varios HDUs.
Para que o portal tenha acesso aos dados de um megacubo primeiro temos que importar a lista de objetos que será registrada em uma tabela no database.
No momento que escrevo o arquivo com os objetos, foi disponibilizado pelo Rogerio Riffel.
O arquivo contem varios atributos dos objetos, mas para o portal o importante são os campos necessários para montar o path para os megacubos. O nome do arquivo que foi disponibilizado é drpall-v3_1_1.fits
Pontos de atenção:
- Só é ingerido no banco os objetos que possuem o arquivo Megacubo no diretório /images.
- O filename do arquivo está sendo montado dinamicamente dentro do código, pode acontecer dos arquivos no diretório estarem com um nome diferente, neste caso é necessário alterar o código. O filename é
manga-<plateifu>-MEGACUBE.fits
sendo plateifu extraido da lista de objetos.
Considerando que o arquivo de objetos se chama drpall-v3_1_1.fits
e está no diretório montado como /images e que existam arquivos megacubo neste diretório.
Estando com os containers do ambiente ligado execute o seguinte comando para preencher a tabela de objetos.
docker-compose exec backend python manage.py insert_metadata drpall-v3_1_1.fits
Proximo passo é extrair os HDUs do megacubo em arquivos menores. isto é necessário para permitir um acesso rápido aos dados pela interface. Cada megacubo tem ~1GB o que torna inviavel a sua leitura em tempo real, para isso esse comando abre cada megacubo que foi registrado pelo insert_metada
e executa rotinas para extrair os dados. Para cada megacubo no diretório /images que tenha cido registrado na etapa anterior, será criado um diretório /images/megacube_parts/manga-<plateifu>/
com um arquivo .json para cada HDU extraido.
OBS: Atualmente só são suportados megacubos compactados (tar.bz2)
docker-compose exec backend python manage.py extract_image_parts
cd frontend
docker build -t linea/manga_frontend:$(git describe --always) .
cd backend
docker build -t linea/manga_backend:$(git describe --always) .
Arquivos de exemplo: https://www.dropbox.com/sh/ksyxnnm4l7rgbjy/AADRj3hu6b7FIetRThbZCWpJa?dl=0
https://github.com/danielrd6/ifscube
tar -xvjf manga-8261-3702-MEGACUBE.fits.tar.bz2 manga-8261-3702-MEGACUBE.fits
https://github.com/danielrd6/ifscube/blob/master/bin/fit_scrutinizer
fit_scrutinizer manga-8261-3702-MEGACUBE.fits --small-screen