Capítulo 8 Semilandmarks
8.1 Digitalização de semilandmarks
No TPSDig2, abra o arquivo ‘mandibula.tps’ com as coordenadas dos landmarks. Para incluir semilandmarks será usada a ferramenta Draw background curves, que se localiza em ‘Modes>Draw curves’ ou no ícone parecido com uma caneta amarela. Cliques com o botão esquerdo do mouse atribuem as coordenadas para os semilandmarks, um por vez, e os conectam por uma linha azul. Para finalizar a marcação dos semilandmarks na curva desejada basta clicar com o botão direito. O mesmo botão pode ser usado para clicar sobre a curva e acessar o menu opções, onde é possível, por exemplo, ajustar as distâncias entre os semilandmarks e deixá-las igualmente espaçadas. Ao terminar, salve o arquivo normalmente e abra em um bloco de notas. Note que as coordenadas dos semilandmarks aparecem como pontos em curvas. Neste formato, o arquivo está pronto para ser carregado pelo geomorph do R. Para abrir o arquivo em outros programas (ex: MorphoJ) é preciso primeiro fazer o deslizamento dos semilandmarks (‘sliding’) ao longo das curvas. Para isso é preciso: no TPSUtil, (i) transformar os pontos em curva em semilandmarks verdadeiros (operação ‘Append tps Curve to landmarks’), (ii) informar quais pontos correspondem a semilandmarks em quais curvas (operação ‘Make sliders file’), e no TPSRelw, (iii) importar o arquivo contendo todas as coordenadas juntas (criado em (i)) e o arquivo slider (criado em (ii)), realizar a GPA com os semilandmarks e exportar o arquivo com as coordenadas alinhadas; esse último arquivo pode ser aberto em qualquer programa. Note que o método para deslizamento dos semilandmarks no TPSRelw pode ser modificado em ‘Options>Slide Method’.
8.2 Semilandmarks no R
Dados com semilandmarks podem ser carregados diretamente para o R com as coordenadas em formato de curva.
require(geomorph)
#> Le chargement a nécessité le package : geomorph
#> Warning: le package 'geomorph' a été compilé avec la
#> version R 4.3.2
#> Le chargement a nécessité le package : RRPP
#> Warning: le package 'RRPP' a été compilé avec la version R
#> 4.3.2
#> Le chargement a nécessité le package : rgl
#> Le chargement a nécessité le package : Matrix
# Carregar dados usando readcurves = TRUE
tps.semi<-readland.tps("dadosmg/mandibula.dig_curso.tps",specID = "ID", readcurves = TRUE)
tps.semi
dim(tps.semi)Note que os semilanmarks foram carregados como se fossem landmarks verdadeiros. Precisamos informar quais deles são semilandmarks e em quais curvas vão deslizar. Isso pode ser feito em arquivo texto (veja o formato de curves.slide.txt), pelo programa TPSUtil, ou com uma função interativa do pacote geomorph chamada define.sliders.
# Definir semilandmarks
curveslide<-read.table("dadosmg/curves.slide.txt",h=T) # importa sliders definidos no TPS util
curveslide<-as.matrix(curveslide)
curveslide
#> before slide after
#> [1,] 2 14 15
#> [2,] 14 15 16
#> [3,] 15 16 17
#> [4,] 3 17 16
#> [5,] 3 18 19
#> [6,] 18 19 20
#> [7,] 4 20 19
#> [8,] 5 21 22
#> [9,] 21 22 23
#> [10,] 22 23 24
#> [11,] 23 24 25
#> [12,] 24 25 26
#> [13,] 6 26 25
#> [14,] 6 27 28
#> [15,] 27 28 29
#> [16,] 7 29 28
#> [17,] 7 30 31
#> [18,] 30 31 32
#> [19,] 31 32 33
#> [20,] 8 33 32
#> [21,] 8 34 35
#> [22,] 34 35 36
#> [23,] 9 36 35
#> [24,] 9 37 38
#> [25,] 37 38 39
#> [26,] 38 39 40
#> [27,] 10 40 39
#> [28,] 10 41 42
#> [29,] 41 42 43
#> [30,] 42 43 44
#> [31,] 11 44 43
#> [32,] 11 45 46
#> [33,] 45 46 47
#> [34,] 47 48 49
#> [35,] 46 47 48
#> [36,] 48 49 50
#> [37,] 49 50 51
#> [38,] 50 51 52
#> [39,] 51 52 53
#> [40,] 52 53 54
#> [41,] 12 54 53
#> [42,] 12 55 56
#> [43,] 55 56 57
#> [44,] 56 57 58
#> [45,] 57 58 59
#> [46,] 58 59 60
#> [47,] 13 60 59Os semilandmarks formam a coluna do meio. Cada curva é colocada entre landmarks verdadeiros.
8.3 Métodos de deslizamento de semilandmarks
Agora podemos realizar uma análise de Procrustes deslizando os semilandmarks. A opção/argumento “ProcD=FALSE” vai deslizar os semilandmarks minimizando a energia de deformação, e a opção/argumento “ProcD=TRUE” vai deslizar os semilandmarks minizando as distâncias de Procrustes.
# Deslizamento por Procrustes
gpa.semi<-gpagen(tps.semi,ProcD=TRUE,curves=curveslide)
shape.procD<-gpa.semi$coords
plotAllSpecimens(shape.procD)
# Deslizamento por Bending Energy
gpa.semi<-gpagen(tps.semi,ProcD=FALSE,curves=curveslide)
shape.bend<-gpa.semi$coords
plotAllSpecimens(shape.bend)
Compare os dois métodos.
par(mfrow=c(1,2))
plotAllSpecimens(shape.procD)
plotAllSpecimens(shape.bend)