Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Fornecer nomes das variáveis preditoras #10

Open
gmgall opened this issue Sep 5, 2017 · 17 comments
Open

Fornecer nomes das variáveis preditoras #10

gmgall opened this issue Sep 5, 2017 · 17 comments
Assignees

Comments

@gmgall
Copy link
Contributor

gmgall commented Sep 5, 2017

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
Copy link

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
Copy link
Contributor Author

gmgall commented Sep 11, 2017

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
Copy link

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
Copy link
Member

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
Copy link
Member

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
Copy link
Contributor Author

gmgall commented Sep 12, 2017

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
Copy link
Contributor Author

gmgall commented Sep 12, 2017

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
Copy link

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
Copy link
Contributor

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

@FelipeSBarros
Copy link

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
Copy link
Contributor Author

gmgall commented Sep 13, 2017

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
Copy link
Contributor

@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
Copy link

Ó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
Copy link
Contributor Author

gmgall commented Sep 14, 2017

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
Copy link
Contributor

rafaeloliveiralima commented Sep 14, 2017 via email

@FelipeSBarros
Copy link

@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
Copy link
Contributor

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

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants