Model-R / Front-end

Interface web do Model-R
Other
0 stars 0 forks source link

Fornecer nomes das variáveis preditoras #10

Open gmgall opened 7 years ago

gmgall commented 7 years ago

O web service precisa fornecer o nome das variáveis usadas para criação do objeto RasterStack que será o informado como parâmetro predictors das funções de modelagem.

FelipeSBarros commented 7 years ago

Pessoal, vi que o @diogosbr adicionou [algumas] as variáveis no repositório model-r. Contudo me parece desnecessário, uma vez que não vamos versionar tais variáveis e talvez deixem o repo pesado. Correto? De qq forma aproveito para perguntar: @gmgall ,como seria melhor para te passar as variáveis que vamos trabalhar? Elas precisarão ter o mesmo nome que figura na base de dados. Então estive pensando em organizar isso em pastas diferentes e te passar a estrutura para e enviar a mesma estrutura ao @rafaeloliveiralima para ser adicionada ao banco e passada ao Middleware pelo json. Me avise quando puder vermos isso.

gmgall commented 7 years ago

De qq forma aproveito para perguntar: @gmgall ,como seria melhor para te passar as variáveis que vamos trabalhar? Elas precisarão ter o mesmo nome que figura na base de dados. Então estive pensando em organizar isso em pastas diferentes e te passar a estrutura para e enviar a mesma estrutura ao @rafaeloliveiralima para ser adicionada ao banco e passada ao Middleware pelo json. Me avise quando puder vermos isso.

Se concordarmos com um padrão para o nome dos arquivos e eu recebê-los pelo webservice, consigo criar o RasterStack.

Até hoje só usei eigenvariables.grd e eigenvariables.gri. Só o último é usado para criar o RasterStack:

variaveis_preditoras <- raster::stack(list.files("ARF_spatial_planning/ENM/env",pattern="gri",full.names = T)[1])
FelipeSBarros commented 7 years ago

Sim, @gmgall . Seria isso mesmo: A. os nomes dos aquivos ficariam armazenados no banco de dados e a interface disponibilizaria para que os usuários selecionem os rasters que quiserem; B. Os nomes dos rasters selecionados seriam enviados pelo webservice, para que vc os carregasse no R;

O que eu imaginei fazer é: criar um padrão de path no qual constaria:

  1. Fonte de origem do raster;
  2. Resolução espacial [tamanho do pixel] do raster;
  3. Nome da variável (que geralmente é o nome do raster); Ex de como ficaria: "./BioClim/30min/bio1.tif"

Caso mais de um raster seja selecionado, seria um "array" com os path no json. Imagino que isso seja facil de organizar na interface, e facilitaria a leitura no backend. O que acha @gmgall e @rafaeloliveiralima ?

diogosbr commented 7 years ago

Eu incluí as variáveis de 5min no repositório da interface no shiny, para dar a possibilidade de quem baixar essa versão usar essa resolução. Não acho que fica muito pesado. O repositório fica com cerca de 300mb e se não me engano essa versão free permite até 1gb por repositório.

Aproveitando o ensejo, criei um pull request, e todos tiverem de acordo vou aceitar lá.

AndreaSanchezTapia commented 7 years ago

Pessoal, duas coisas.

  1. As variáveis podem ser chamadas com um list.files() desse jeito não precisamos ser muito estritos na hora de executar como pacote. Os nomes das variáveis viriam com um list.files(..., full.names = F) e o path completo com T.

  2. Recentemente enchi um repositório por botar arquivos muito grandes que não iam mudar. Eles vãõ enchendo o repo porque cada commit copia tudo. Vale a pena botar para trackear as variáveis? Mesmo que seja um conjunto só. Podemos também botar o set como data()?

gmgall commented 7 years ago

Acho esse caminho o mais facilmente exequível, @FelipeSBarros.

O web service passa a fornecer também uma lista de nomes (ou paths) e eu os carrego de algum lugar pré-determinado (buriti, máquina do SibBr, scratch do Santos Dumont, a ser decidido; só preciso achar o arquivo).

gmgall commented 7 years ago

Ah, e a propósito: também não vejo sentido em versionar dados ambientais. Eles não mudarão ao longo de tempo como códigos fonte mudam.

A intenção é que isso vá na imagem construída no Docker Hub?

FelipeSBarros commented 7 years ago

Sim, @gmgall . Pelo que entendi, o @diogosbr incluiu as variáveis no repositório para que as mesmas estejam presentes no shinny. Se houver alguma outra forma de incluí-las no docker sem necessariamente termos que mantê-las no github,seria uma boa saída!

rafaeloliveiralima commented 7 years ago

Alterei o ws para enviar não só as variáveis mas também os algoritmos. @gmgall dê uma olha se está OK.

FelipeSBarros commented 7 years ago

Otimo @rafaeloliveiralima ! Vi hoje com o @gmgall. Seria possível fazer uma pequena alteração no ws? Seria inlcuir um array com os paths para os arquivos. Eu os organizei em um CSV, caso queira adicionar à base de dados. Perceba que criei uma coluna nova chamada path. A ideia é que o ws informe os paths só para facilitar. As demais colunas usam o mesmo nome previstas na table raster do modelo do banco de dados.

gmgall commented 7 years ago

Parece ok, @rafaeloliveiralima:

$ curl 'http://model-r.jbrj.gov.br/ws/?status=3' | python -m json.tool
{
    "experiment": [
        {
            "algorithm": [],
            "buffer": "1.50",
            "description": "",
            "extent_model": "-62.649;-34.443;6.41;-32.490",
            "id": "64",
            "idexperiment": "ea5d2f1c4608232e07d3aa3d998e5135",
            "name": "",
            "num_partition": "27",
            "num_points": "",
            "occurrences": [
                {
                    "idstatusoccurrence": "2",
                    "lat": "-24.314444",
                    "lon": "-48.357500",
                    "taxon": "Vriesea tijucana E.Pereira"
                },
                [...]
            "partitiontype": "",
            "raster": [
                {
                    "idraster": "19",
                    "raster": "BIO19 Precipitation of Coldest Quarter",
                    "source": "WordClim"
                },
                {
                    "idraster": "17",
                    "raster": "BIO17 Precipitation of Driest Quarter",
                    "source": "WordClim"
                },
                {
                    "idraster": "13",
                    "raster": "BIO13 Precipitation of Wettest Month",
                    "source": "WordClim"
                }
            ],
            "statusexperiment": "Em processamento",
            "tss": "0.50"
        }
    ]
}

Já tenho os arquivos wc2.0_30s_bio.zip e wc2.0_2.5m_bio.zip aqui, @FelipeSBarros. Vou organizá-los conforme você sugeriu no CSV.

rafaeloliveiralima commented 7 years ago

@FelipeSBarros alimentei a tabela raster com os dados do arquivo csv e alterei o ws para informar o path, resolution e period também.

FelipeSBarros commented 7 years ago

Ótimo, @rafaeloliveiralima ! Fiz um teste aqui, como o @gmgall faz, utilizando a ferramenta que ele criou em python:

curl 'http://model-r.jbrj.gov.br/ws/?status=3' | python -m json.tool
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1486  100  1486    0     0   3079      0 --:--:-- --:--:-- --:--:--  3439
{
    "experiment": [
        {
            "algorithm": [],
            "buffer": "1.50",
            "description": "",
            "extent_model": "-62.649;-34.443;6.41;-32.490",
            "id": "64",
            "idexperiment": "ea5d2f1c4608232e07d3aa3d998e5135",
            "name": "",
            "num_partition": "27",
            "num_points": "",
            "occurrences": [
                {
                    "idstatusoccurrence": "2",
                    "lat": "-24.314444",
                    "lon": "-48.357500",
                    "taxon": "Vriesea tijucana E.Pereira"
                },
                {
                    "idstatusoccurrence": "2",
                    "lat": "-15.180556",
                    "lon": "-39.350000",
                    "taxon": "Vriesea tijucana E.Pereira"
                },
                {
                    "idstatusoccurrence": "17",
                    "lat": "-25.616667",
                    "lon": "-48.500000",
                    "taxon": "Vriesea tijucana E.Pereira"
                },
                {
                    "idstatusoccurrence": "17",
                    "lat": "-26.786111",
                    "lon": "-48.918889",
                    "taxon": "Vriesea tijucana E.Pereira"
                },
                {
                    "idstatusoccurrence": "17",
                    "lat": "-24.637778",
                    "lon": "-47.766667",
                    "taxon": "Vriesea tijucana E.Pereira"
                },
                {
                    "idstatusoccurrence": "17",
                    "lat": "-15.180556",
                    "lon": "-39.350000",
                    "taxon": "Vriesea tijucana E.Pereira"
                },
                {
                    "idstatusoccurrence": "17",
                    "lat": "-25.088889",
                    "lon": "-47.933056",
                    "taxon": "Vriesea tijucana E.Pereira"
                }
            ],
            "partitiontype": "",
            "raster": [
                {
                    "idraster": "13",
                    "path": "",
                    "period": "",
                    "raster": "BIO13 Precipitation of Wettest Month",
                    "resolution": "",
                    "source": "WordClim"
                },
                {
                    "idraster": "17",
                    "path": "",
                    "period": "",
                    "raster": "BIO17 Precipitation of Driest Quarter",
                    "resolution": "",
                    "source": "WordClim"
                },
                {
                    "idraster": "19",
                    "path": "",
                    "period": "",
                    "raster": "BIO19 Precipitation of Coldest Quarter",
                    "resolution": "",
                    "source": "WordClim"
                }
            ],
            "statusexperiment": "Em processamento",
            "tss": "0.50"
        }
    ]
}

O path já aparece mas não está retornando nenhum valor. Será que teria que refazer esse experimento para que o valor path seja retornado?

gmgall commented 7 years ago

Realmente um campo path foi incluído. Mas só aparece com um valor em 3 situações.

$ curl 'http://model-r.jbrj.gov.br/ws/?' | python -m json.tool | egrep '"path": "[^"]'
                    "path": "./worldclim/v2/30sec/presente/wc2.0_bio_30s_04.tif",
                    "path": "./worldclim/v2/30sec/presente/wc2.0_bio_30s_01.tif",
                    "path": "./worldclim/v2/30sec/presente/wc2.0_bio_30s_19.tif",

Nas demais, aparece vazio.

Provavelmente só foi preenchido num único experimento para testar.

rafaeloliveiralima commented 7 years ago
    o raster escolhido na modelagem foi o registro antigo (wordclin) o path so esta preenchido na versao 2 wordclin ver2

    Obter o Outlook para iOS

On Thu, Sep 14, 2017 at 12:13 PM -0300, "Guilherme Gall" notifications@github.com wrote:

Realmente um campo path foi incluído. Mas só aparece com um valor em 3 situações. $ curl 'http://model-r.jbrj.gov.br/ws/?' | python -m json.tool | egrep '"path": "[^"]' "path": "./worldclim/v2/30sec/presente/wc2.0_bio_30s_04.tif", "path": "./worldclim/v2/30sec/presente/wc2.0_bio_30s_01.tif", "path": "./worldclim/v2/30sec/presente/wc2.0_bio_30s_19.tif",

Nas demais, aparece vazio.

Provavelmente só foi preenchido num único experimento para testar.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.

FelipeSBarros commented 7 years ago

@diogosbr, temos uma msg da @MFSiqueira falando que iriamos usar a V2 do worldclim. Seguimos com essa proposta? Ou incluimos a versão 1.4? Veja que já deixei o path diferenciando a versão justamente para caso queiramos incluir a versão 1,4.

rafaeloliveiralima commented 7 years ago

Eu cadastrei as duas versões no banco de dados. Alem do bio-oracle.