piLaboratory / TWoLife

A C++ library for agent-based simulations of demography in heterogeneous landscapes
3 stars 6 forks source link

Implementar método para receber paisagem #23

Open awade2 opened 10 years ago

awade2 commented 10 years ago

Temos que implementar um método para receber paisagens contidas em arquivos raster ou como uma matriz (ou vetor) de inteiros (em geral, 1s e 0s quando a paisagem é binária, habitat e não-habitat).

andrechalom commented 10 years ago

Meio off-topic: vc já testou o método de geração de paisagem aleatória? Que tal? Acha que podemos mudar alguma coisa nele ou a estrutura atual está ok?

awade2 commented 10 years ago

Na verdade esse issue já foi resolvido quando vc criou a função em R para gerar as paisagens. O código do construtor do mundo foi modificado para receber um vetor de int referente à paisagem criada.

Essa função possui duas opções de geração da paisagem, random e blob. Pelo que entendi, o blob é uma caminhada aleatória destruidora de habitats a partir de uma célula escolhida ao acaso. Só não entendi porque o random estava problemático (como vc faz para testar quantitativamente?). Mas agora que as paisagens serão geradas no R, fica mais fácil escrever o código para random pois podemos usar a função sample com mais de um sorteio sem reposição. Além disso penso em incluir duas outras possibilidades de gerador de paisagem.

1) Como em Fahrig (1998, 2001) 2) Como em With & King (1999) - fractal.

Mas isso é secundário agora. Podemos fechar o issue?

piklprado commented 10 years ago

Já está resolvido ou falta permitir que a função receba um objeto R como uma matriz, que represente a paisagem?

awade2 commented 10 years ago

Já está resolvido, só não sei avaliar sem ser no olho que as paisagens são aleatórias ou blob.

andrechalom commented 10 years ago

Gente, acho que são duas coisas bem diferentes. Uma é a geração de paisagens aleatórias (random e blob), que estão funcionando bem já. Outra é escrever uma função EM R que transforme um arquivo raster em uma matriz de 0 e 1 da forma adequada pra ser passada para função TWoLife: imagino que uma função como RasterToLandscape(file, zoom=1), que devolve um objeto da classe landscape.

awade2 commented 10 years ago

Não entendi, pois isso já não foi implementado? Se não, como foram rodados os testes?

andrechalom commented 10 years ago

O que foi implementado é a capacidade de gerar um mapa aleatório e passar para o TWoLife. Não temos como passar um arquivo raster para o TWoLife, pq um arquivo raster não tem a estrutura de dados que o TWoLife está esperando. P fvr verifique o código da função Landscape para ver a estrutura de dados que ela gera.

awade2 commented 10 years ago

Agora entendi o que vc quis dizer. Precisamos criar algum método para ler paisagens passadas por arquivos certo? Pois do jeito que está, só recebe a paisagem gerada pelo R. Uma possibilidade seria abrir o raster no R e colocar num vetor que passamos para o TwoLife (como sugerido pelo chalom) e outra seria fazer o TWoLife ler o arquivo raster, o que tornaria esse processo independente do R. Mas acho que a opção do Chalom é melhor pois já vamos rodar (do jeito que está agora) tudo do R.

awade2 commented 10 years ago

Criar método = função no R.