Inserir Previsões
Para registrar uma previsão, você precisa de pelo menos duas informações antes de poder usar os exemplos de código abaixo. A primeira é o número id
do seu modelo, que você pode obter aqui. A segunda é o ID do commit da versão exata do seu código (o modelo deve estar disponível em um repositório GitHub) que gerou as previsões. Para descobrir isso, você pode usar o seguinte código no terminal (Linux ou Mac):
Se você usa Windows, você pode instalar o WSL.
A previsão em si deve ser fornecida como um objeto JSON. Ela deve necessariamente conter as chaves apresentadas na tabela abaixo:
Nome | Tipo | Descrição |
---|---|---|
date | str (AAAA-mm-dd) | Data da previsão |
lower_95 | float | Intervalo preditivo inferior de 95% |
lower_90 | float | Intervalo preditivo inferior de 90% |
lower_80 | float | Intervalo preditivo inferior de 80% |
lower_50 | float | Intervalo preditivo inferior de 50% |
pred | float | Estimativa mediana |
upper_50 | float | Intervalo preditivo superior de 50% |
upper_80 | float | Intervalo preditivo superior de 80% |
upper_90 | float | Intervalo preditivo superior de 90% |
upper_95 | float | Intervalo preditivo superior de 95% |
Exemplo do objeto JSON:
[
{
"date": "2010-01-03",
"pred": 100,
"lower_95": 65,
"lower_90": 70,
"lower_80": 80,
"lower_50": 90,
"upper_50": 110,
"upper_80": 120,
"upper_90": 130,
"upper_95": 135
},
{
"date": "2010-01-10",
"pred": 100,
"lower_95": 85,
"lower_90": 90,
"lower_80": 100,
"lower_50": 110,
"upper_50": 130,
"upper_80": 140,
"upper_90": 150,
"upper_95": 175
}, ...
]
AVISO
Os métodos apresentados nesta documentação geram objetos reais no banco de dados. Para testar os métodos de requisição da API Mosqlimate sem inserir dados, consulte a Demonstração da API.
Parâmetros de Entrada¶
A tabela abaixo lista os parâmetros necessários para registrar uma previsão. Se o seu modelo se refere a adm_level = 1
, você só precisa preencher o parâmetro adm_1
e deixar adm_2
como nulo. O oposto se aplica se o seu modelo se refere a adm_level = 2
.
Nome do Parâmetro | Tipo | Descrição |
---|---|---|
model | int | ID do modelo |
description | str ou None | Descrição da previsão |
commit | str | Hash do commit Git para a versão mais recente do código da Previsão no repositório do Modelo |
predict_date | date (AAAA-mm-dd) | Data em que a Previsão foi gerada |
adm_1 | str (UF) | Abreviação do estado. Exemplo: "RJ" |
adm_2 | int (IBGE) | Geocódigo da cidade. Exemplo: 3304557 |
prediction | dict (JSON) | Os dados da Previsão. |
X-UID-Key¶
Requisições POST exigem Token de API do Usuário para serem chamadas.
Exemplos de uso¶
O pacote mosqlient
também aceita um DataFrame do pandas com as chaves necessárias como alternativa a um JSON no parâmetro de previsão. Para mais detalhes, consulte a documentação aqui.
from mosqlient import upload_prediction
upload_prediction(
model_id = 0, # Check the ID in models list or profile
description = "My Prediction description",
commit = "3d1d2cd016fe38b6e7d517f724532de994d77618",
predict_date = "2023-10-31",
adm_1 = "RJ",
prediction = [
{
"date": "2010-01-03",
"pred": 100,
"lower_95": 65,
"lower_90": 70,
"lower_80": 80,
"lower_50": 90,
"upper_50": 110,
"upper_80": 120,
"upper_90": 130,
"upper_95": 135
},
{
"date": "2010-01-10",
"pred": 100,
"lower_95": 85,
"lower_90": 90,
"lower_80": 100,
"lower_50": 110,
"upper_50": 130,
"upper_80": 140,
"upper_90": 150,
"upper_95": 175
}],
api_key = "X-UID-Key"
)
library(httr)
library(jsonlite)
# Warning: this method generates a real object in the database if called with
# the correct UID Key
post_prediction <- function(
model_id,
description,
commit,
predict_date,
prediction,
adm_1 = NULL
) {
url <- "https://api.mosqlimate.org/api/registry/predictions/"
headers <- add_headers(
`X-UID-Key` = X-UID-Key)
predict <- list(
model = model_id,
description = description,
commit = commit,
predict_date = predict_date,
prediction = prediction,
adm_1 = adm_1,
adm_2 = NULL,
)
predict_json <- toJSON(predict, auto_unbox = TRUE, null = "null")
with_verbose(response <- POST(url, headers, body = predict_json, encode = "json"))
if (http_status(response)$category != "Success") {
# print(content(response, "text", encoding = "UTF-8"))
stop("Request failed: ", http_status(response)$message)
}
return(content(response, "text"))
}
# Example
post_prediction(
model_id = 16, # Check the ID in models list or profile
description = "My prediction description",
commit = "9b8d3afd84a5f77ac457c43af31e09be0b6d04af",
predict_date = "2023-10-31",
adm_1 = "RJ",
prediction = list(
list(
date = "2010-01-03",
pred= 100,
lower_95= 65,
lower_90= 70,
lower_80= 80,
lower_50= 90,
upper_50= 110,
upper_80= 120,
upper_90= 130,
upper_95= 135),
list(
date="2010-01-10",
pred= 120,
lower_95=85,
lower_90= 90,
lower_80= 100,
lower_50= 110,
upper_50= 130,
upper_80= 140,
upper_90= 150,
upper_95= 175)
)
)