[MORPHMET] writing .nts files from geomorph

2016-01-19 Thread Ariadne Schulz
Hi all,

I'm hoping this will be a quick and easy question. I've even done it before
and then forgotten how.

I need to create quite a few .nts files. The easiest way to do this I think
is in R. I read in my .dta file, got my landmarks all switched the way I
want them but now for each of my elements I need to create a .nts file.
I've searched about online and the only things I could find were how to
read a .nts file and the "digitize" functions. I know it's possible to
simply write .nts files, because I have done it before ... but I've
forgotten what I did.

Help?

Best,
Ari

-- 
MORPHMET may be accessed via its webpage at http://www.morphometrics.org
--- 
You received this message because you are subscribed to the Google Groups 
"MORPHMET" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to morphmet+unsubscr...@morphometrics.org.


Re: [MORPHMET] writing .nts files from geomorph

2016-01-19 Thread Emma Sherratt
Dear Ari,

geomorph uses the following code to write an .nts from the digtizing
functions. It's an .nts file for single specimens

# Write .nts file for output of digitize2d(), buildtemplate() digit.fixed()
and digitsurface()
# A is an nx2 or nx3 matrix of the output coordinates. To be used
internally only.

writeland.nts <- function(A, spec.name, comment=NULL){
  ntsfile=paste(spec.name,".nts",sep="")
  file.create(file=ntsfile)
  if(is.null(comment)){
cat(paste('"',spec.name,sep=""),file= ntsfile,sep="\n",append=TRUE)
  }
  else if(!is.null(comment)){
cat(paste('"',spec.name,sep=""),file= ntsfile,sep="\n")
cat(paste('"',comment,sep=""),file= ntsfile,sep="\n",append=TRUE)
  }
  dims <- dim(A)
  if (dims[2] == 2){
cat(paste(1,dims[1],2,0,"dim=2"),file= ntsfile,sep="\n",append=TRUE)
  }
  else if (dims[2] == 3){
cat(paste(1,dims[1],3,0, "dim=3"),file= ntsfile,sep="\n",append=TRUE)
  }
  write.table(A ,file= ntsfile,col.names = FALSE, row.names = FALSE,sep="
 ",append=TRUE)
}

Emma

~~~

Emma Sherratt, PhD.

Lecturer in Zoology,
Zoology Division, School of Environmental and Rural Science,
Room L112 Bldg C02,
University of New England,
Armidale, NSW, Australia, 2351
Tel: +61 2 6773 5041
email: emma.sherr...@une.edu.au
Twitter: @DrEmSherratt

Caecilians are legless amphibians...

*  __
(\   .-.   .-.   /_")
 \\_//^\\_//^\\_//
  `"`   `"`   `"`*

learn more about them here: www.emmasherratt.com/caecilians




On 19 January 2016 at 20:19, Ariadne Schulz 
wrote:

> Hi all,
>
> I'm hoping this will be a quick and easy question. I've even done it
> before and then forgotten how.
>
> I need to create quite a few .nts files. The easiest way to do this I
> think is in R. I read in my .dta file, got my landmarks all switched the
> way I want them but now for each of my elements I need to create a .nts
> file. I've searched about online and the only things I could find were how
> to read a .nts file and the "digitize" functions. I know it's possible to
> simply write .nts files, because I have done it before ... but I've
> forgotten what I did.
>
> Help?
>
> Best,
> Ari
>
> --
> MORPHMET may be accessed via its webpage at http://www.morphometrics.org
> ---
> You received this message because you are subscribed to the Google Groups
> "MORPHMET" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to morphmet+unsubscr...@morphometrics.org.
>

-- 
MORPHMET may be accessed via its webpage at http://www.morphometrics.org
--- 
You received this message because you are subscribed to the Google Groups 
"MORPHMET" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to morphmet+unsubscr...@morphometrics.org.


RE: [MORPHMET] 3D surface scanner information

2016-01-19 Thread Robert Z. Selden, Jr.
Hi Miguel,

I've been using a Creaform GoSCAN50, and am very happy with it (I scan ceramics 
though; not hominins). There are two of these scanners (GoSCAN20 and GoSCAN50 - 
see 
http://www.creaform3d.com/en/metrology-solutions/handheld-portable-3d-scanner-goscan-3d);
 the 20 gets better detail on smaller objects, and the 50 is better for 
medium/large objects. Depending on the level of detail that you need 
(particularly for the teeth), it might be better to opt for the 20. I recently 
used a 20 to scan a projectile point (https://skfb.ly/ATNV), and it worked 
quite well. 

A few examples from the GoSCAN50 here:

Ceramic vessel from Salvador, Brazil (takes a moment for the texture file to 
load) - https://skfb.ly/AGtZ 

Caddo effigy pipe (frog) from Louisiana (US) - https://skfb.ly/JMvv 

Caddo ceramic bowl from Texas (US) - https://skfb.ly/JM6W  

Some of my colleagues have produced some good scans with the NextEngineHD 
(http://www.nextengine.com/); these from Bernard Means: 

Racoon Skull - https://skfb.ly/EoVw 

Owl Skull - https://skfb.ly/EoVP

There are also some good examples of folks using photogrammetry (123D Catch, 
AgiSoft, etc.) for this kind of application; although I don't have those handy. 

Yet another option would be to see if there is anyone on campus (engineering 
departments usually have quite a few) that might be willing and able to help. 
While I was in grad school, we ran across a CT scanner in the petroleum 
engineering department that they needed to justify purchasing, so they let us 
run as many samples as we wanted to at no cost. The art department also had 
quite a few scanners. 

It all comes down to what you have experience with, and what you're most 
comfortable with; particularly since you will be spending quite a bit of time 
with this equipment. There are advantages and drawbacks to every surface 
scanner and photogrammetry program. If you have an opportunity to demo a 
scanner or photogrammetry program, I would take it (there may be a variety of 
product reps in your area). 

As things get published, we've been uploading our scan data to Zenodo 
(https://zenodo.org/collection/user-caddo_nagpra_3d); bound to be other 
examples there and elsewhere that you can explore. 

Best of luck,
Zac



-Original Message-
From: Miguel Eduardo Delgado Burbano [mailto:mdelgadoburb...@gmail.com] 
Sent: Monday, January 18, 2016 6:10 PM
To: morphmet@morphometrics.org; morphmet_modera...@morphometrics.org
Subject: [MORPHMET] 3D surface scanner information

Hello everyone


I am interested to obtain a 3D surface scanner which will be used to study 
hominin teeth and skulls. Does anyone have any experience, suggestions and/or 
recommendations?


For instance price, resolution, peformance, manipulation (portable)




thanks in advance


Miguel
 

​
Miguel Delgado PhD
CONICET-División Antropología.
Facultad de Ciencias Naturales y Museo.
Universidad Nacional de La Plata
Paseo del Bosque s/n. La Plata 1900. Argentina
Cel: 5492216795916. Fax: 54 221 4257527
https://unlp.academia.edu/DelgadoMiguel 

 
http://www.cearqueologia.com.ar/ 

 
E-mail: medelg...@fcnym.unlp.edu.ar  
​​-


-- 
MORPHMET may be accessed via its webpage at http://www.morphometrics.org 

 
--- 
You received this message because you are subscribed to the Google Groups 
"MORPHMET" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to morphmet+unsubscr...@morphometrics.org.

-- 
MORPHMET may be accessed via its webpage at http://www.morphometrics.org
--- 
You received this message because you are subscribed to the Google Groups 
"MORPHMET" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to morphmet+unsubscr...@morphometrics.org.


smime.p7s
Description: S/MIME cryptographic signature


Re: [MORPHMET] plotTangentSpace() versus prcomp() in geomorph

2016-01-19 Thread Collyer, Michael
Dear Brenna,

It appears the problem is that you are attempting to use prcomp on your 
points(p) x dimensions(k) x n Procrustes coordinates without converting these 
data into a n x pk matrix, required by prcomp.  Unfortunately, prcomp will use 
the first p x k part of the array of coordinates, resulting in an illogical PCA 
(rather than provide an error).  If you were to first use two.d.array to 
convert your 3D array of coordinates into a 2D matrix, and subsequently perform 
the PCA via prcomp on this converted matrix, you will get the same results as 
plotTangentSpace.  In fact, plotTangentSpace starts by converting your data 
into a matrix with two.d.array and using prcomp to do the PCA.  Most of the 
other coding for this function is to generate the plot.  So getting different 
answers should not be possible.

Good luck!

Michael Collyer

Associate Professor
Biostatistics
Department of Biology
Western Kentucky University
1906 College Heights Blvd. #11080
Bowling Green, KY 42101-1080
Phone: 270-745-8765; Fax: 270-745-6856
Email: michael.coll...@wku.edu

On Jan 19, 2016, at 2:09 PM, Brenna Hays 
> wrote:

Hello,
I am trying to perform a PCA on a basic set of 30 configurations, 3 specimens 
each with 10 configurations of landmarks. I was wondering why I am getting 
different PCA results between plotTangentSpace() and prcomp(). When I perform 
plotTangentSpace(), it gives me a comprehensive list of 30 PCs and their 
importance (PC1 and PC2 make up 99% of the variance). But when I perform the 
prcomp() (which is the function most recommended in the literature), the 
summary says PC1 explains 100% of the variance, and because of this I cannot 
perform the screeplot() or plot().
Am I missing something? I have copied my coding below. Any help would be much 
appreciated.


lpALL.super <- gpagen(lpALL, Proj=TRUE, ProcD=TRUE, PrinAxes=TRUE, 
ShowPlot=TRUE, curves=NULL, surfaces=NULL)
lpALL.shape <- lpALL.super$coords
lpALL.size <- lpALL.super$Csize
names(lpALL.super)

plotTangentSpace(lpALL.shape, axis1=1, axis2=2, warpgrids=TRUE, mesh=NULL, 
label=TRUE, verbose=TRUE) <- PC1 and PC2 99%

max(lpALL.shape[ ,1, ]); min(lpALL.shape[ ,1, ]); max(lpALL.shape[ ,2, ]); 
min(lpALL.shape[ ,2, ])

plot(lpALL.shape[ ,1,1:10], lpALL.shape[ ,2,1:10], asp=1, pch=21, bg="red", 
xlab="x", ylab="y", cex=.8, xlim=c(-0.295,0.252), ylim=c(-0.234,0.224))
points(lpALL.shape[ ,1,11:20], lpALL.shape[ ,2,11:20], asp=1, pch=21, 
bg="blue", cex=.8)
points(lpALL.shape[ ,1,21:30], lpALL.shape[ ,2,21:30], asp=1, pch=21, 
bg="green", cex=.8)
legend('bottomright', legend=c("CochaC", "CochaD", "DorbrA"), fill=c("red", 
"blue", "green"), cex=1)

lpALLPC <- prcomp(lpALL.shape, center=TRUE, scale=TRUE)
names(lpALLPC)
lpALLPC$x
lpALLPC$sdev
lpALLPC$rotation
summary(lpALLPC, scale=TRUE) <- PC1 100%
require(vegan)
screeplot(lpALLPC, npcs=15, type="lines", bstick=TRUE)
plot(lpALLPC$x[ ,1:2], asp=1, pch=21, cex=2.5, bg="black") <- subscript [ 1:2] 
out of bounds

--
MORPHMET may be accessed via its webpage at 
http://www.morphometrics.org
---
You received this message because you are subscribed to the Google Groups 
"MORPHMET" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to 
morphmet+unsubscr...@morphometrics.org.

-- 
MORPHMET may be accessed via its webpage at http://www.morphometrics.org
--- 
You received this message because you are subscribed to the Google Groups 
"MORPHMET" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to morphmet+unsubscr...@morphometrics.org.


[MORPHMET] plotTangentSpace() versus prcomp() in geomorph

2016-01-19 Thread Brenna Hays
Hello, 
I am trying to perform a PCA on a basic set of 30 configurations, 3 
specimens each with 10 configurations of landmarks. I was wondering why I 
am getting different PCA results between plotTangentSpace() and prcomp(). 
When I perform plotTangentSpace(), it gives me a comprehensive list of 30 
PCs and their importance (PC1 and PC2 make up 99% of the variance). But 
when I perform the prcomp() (which is the function most recommended in the 
literature), the summary says PC1 explains 100% of the variance, and 
because of this I cannot perform the screeplot() or plot(). 
Am I missing something? I have copied my coding below. Any help would be 
much appreciated.


lpALL.super <- gpagen(lpALL, Proj=TRUE, ProcD=TRUE, PrinAxes=TRUE, 
ShowPlot=TRUE, curves=NULL, surfaces=NULL)
lpALL.shape <- lpALL.super$coords
lpALL.size <- lpALL.super$Csize
names(lpALL.super)

plotTangentSpace(lpALL.shape, axis1=1, axis2=2, warpgrids=TRUE, mesh=NULL, 
label=TRUE, verbose=TRUE) <- PC1 and PC2 99%

max(lpALL.shape[ ,1, ]); min(lpALL.shape[ ,1, ]); max(lpALL.shape[ ,2, ]); 
min(lpALL.shape[ ,2, ])

plot(lpALL.shape[ ,1,1:10], lpALL.shape[ ,2,1:10], asp=1, pch=21, bg="red", 
xlab="x", ylab="y", cex=.8, xlim=c(-0.295,0.252), ylim=c(-0.234,0.224))
points(lpALL.shape[ ,1,11:20], lpALL.shape[ ,2,11:20], asp=1, pch=21, 
bg="blue", cex=.8)
points(lpALL.shape[ ,1,21:30], lpALL.shape[ ,2,21:30], asp=1, pch=21, 
bg="green", cex=.8)
legend('bottomright', legend=c("CochaC", "CochaD", "DorbrA"), fill=c("red", 
"blue", "green"), cex=1)

lpALLPC <- prcomp(lpALL.shape, center=TRUE, scale=TRUE)
names(lpALLPC)
lpALLPC$x
lpALLPC$sdev
lpALLPC$rotation
summary(lpALLPC, scale=TRUE) <- PC1 100%
require(vegan)
screeplot(lpALLPC, npcs=15, type="lines", bstick=TRUE)
plot(lpALLPC$x[ ,1:2], asp=1, pch=21, cex=2.5, bg="black") <- subscript [ 
1:2] out of bounds

-- 
MORPHMET may be accessed via its webpage at http://www.morphometrics.org
--- 
You received this message because you are subscribed to the Google Groups 
"MORPHMET" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to morphmet+unsubscr...@morphometrics.org.


Re: [MORPHMET] Read .landmarkAscii file into R

2016-01-19 Thread Emma Sherratt
Hi David,

Not sure what the file actually looks like since you’ve not included a sample 
here. However I suggest taking a look at the readland functions in geomorph R 
package to see how we tackle the different types. If you want, send it through 
to us and we can take a look. If there’s a lot of people using AVIZO for 
digitising, we can include a function in geomorph.

Regarding a read function writing? Nope, never heard of that.

Em

~~~
Emma Sherratt, PhD.
Lecturer in Zoology,
Zoology Division, School of Environmental and Rural Science, 
Room L112 Bldg C02, 
University of New England, 
Armidale, NSW, Australia, 2351
Tel: +61 2 6773 5041
email: emma.sherr...@une.edu.au
Twitter: @DrEmSherratt

Caecilians are legless amphibians...
  __
    (\   .-.   .-.   /_")
 \\_//^\\_//^\\_//
      `"`   `"`   `"`
learn more about them here: www.emmasherratt.com/caecilians

On 20 January 2016 at 14:50:38, David Katz (dck...@ucdavis.edu) wrote:

Hi everyone, 

I've collected 3D landmarks on a series of cranial surface models in Avizo. 
Avizo's landmark editor outputs .landmarkAscii files, which I would like to 
read into R. The way I've done the reading has the following very unexpected 
effect: sometimes, it writes additional data to my .landmarkAscii files. I'd 
like to understand why, but am mostly interested in finding a solution.

To read in the landmark files for a specimen...

# Below, avz.file is the filepath for the .landmarkAscii  
# file for a single specimen.
# The code reads the .landmarkAscii file with read.csv. 
# This is useful because the object created lays out 
# the informational data that precedes the coordinate data 
# predictably. This makes it easy to lop off the 
# informational data. 
  read.lms <- read.csv(avz.file, header=FALSE)[,1]

  # The last row of informational data will contain the 
  # text "@1" and nothing else. 
  lm.start <- which(read.lms=="@1")+1

  # Now it is possible to create an object with landmark 
  # data only. R interprets each landmark (all three 
  # coordinates together) as a factor. I convert the factor 
  # vector to a character vector.
  lm.char <-
     as.character(droplevels(
         read.lms[(lm.start):length(read.lms)]))

  # Then I create an empty matrix for the landmark data    
  lm.mat <- matrix(NA, nrow=length(lm.char), ncol=3)

  # Then fill lm.mat with the landmark data. As mentioned, 
  # lm.char is a vector. Each element of that vector 
  # contains the X, Y, and Z coordinate for a landmark.
  # The coordinates are separated by spaces 
  # (or maybe tabs)
  for(i in 1:nrow(lm.mat))
     {lm.mat[i,] <- 
         as.numeric(unlist(strsplit(ctlm.char[i], " ")))}
 
That's it. The code above will read in the data and make a landmark matrix. 
Unfortunately, it sometimes also writes additional lines to the .landmarkAscii 
file. The first added element is "@2." Thereafter, the landmark file adds as 
many three-coordinate triplets as there are landmarks in the original data 
file. The values of these triplets are 0,0,1 (or maybe 1,0,0).

This is really strange behavior. A read function shouldn't write. 

My issue may be better suited to an R forum, but I am hoping someone here has 
reliable code for reading Avizo landmarks into R.

Thanks in advance. 

David


--
David Katz
University of California, Davis
--
MORPHMET may be accessed via its webpage at http://www.morphometrics.org
---
You received this message because you are subscribed to the Google Groups 
"MORPHMET" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to morphmet+unsubscr...@morphometrics.org.

-- 
MORPHMET may be accessed via its webpage at http://www.morphometrics.org
--- 
You received this message because you are subscribed to the Google Groups 
"MORPHMET" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to morphmet+unsubscr...@morphometrics.org.


[MORPHMET] Read .landmarkAscii file into R

2016-01-19 Thread David Katz
Hi everyone,

I've collected 3D landmarks on a series of cranial surface models in Avizo.
Avizo's landmark editor outputs .landmarkAscii files, which I would like to
read into R. The way I've done the reading has the following very
unexpected effect: *sometimes, *it* writes *additional data to my
.landmarkAscii files. I'd like to understand why, but am mostly interested
in finding a solution.

To read in the landmark files for a specimen...

# Below, avz.file is the filepath for the .landmarkAscii
# file for a single specimen.
# The code reads the .landmarkAscii file with read.csv.
# This is useful because the object created lays out
# the informational data that precedes the coordinate data
# predictably. This makes it easy to lop off the
# informational data.
  read.lms <- read.csv(avz.file, header=FALSE)[,1]

  # The last row of informational data will contain the
  # text "@1" and nothing else.
  lm.start <- which(read.lms=="@1")+1

  # Now it is possible to create an object with landmark
  # data only. R interprets each landmark (all three
  # coordinates together) as a factor. I convert the factor
  # vector to a character vector.
  lm.char <-
 as.character(droplevels(
 read.lms[(lm.start):length(read.lms)]))

  # Then I create an empty matrix for the landmark data
  lm.mat <- matrix(NA, nrow=length(lm.char), ncol=3)

  # Then fill lm.mat with the landmark data. As mentioned,
  # lm.char is a vector. Each element of that vector
  # contains the X, Y, and Z coordinate for a landmark.
  # The coordinates are separated by spaces
  # (or maybe tabs)
  for(i in 1:nrow(lm.mat))
 {lm.mat[i,] <-
 as.numeric(unlist(strsplit(ctlm.char[i], " ")))}

That's it. The code above will read in the data and make a landmark matrix.
Unfortunately, it sometimes also writes additional lines to the
.landmarkAscii file. The first added element is "@2." Thereafter, the
landmark file adds as many three-coordinate triplets as there are landmarks
in the original data file. The values of these triplets are 0,0,1 (or maybe
1,0,0).

This is really strange behavior. A read function shouldn't write.

My issue may be better suited to an R forum, but I am hoping someone here
has reliable code for reading Avizo landmarks into R.

Thanks in advance.

David


-- 
David Katz
University of California, Davis

-- 
MORPHMET may be accessed via its webpage at http://www.morphometrics.org
--- 
You received this message because you are subscribed to the Google Groups 
"MORPHMET" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to morphmet+unsubscr...@morphometrics.org.


Re: [MORPHMET] Read .landmarkAscii file into R

2016-01-19 Thread David Katz
I won't get back to my office, and the hard drive where the files are
stored, for about a week. I'll send something along then.

Thanks, Emma.

David

On Wed, Jan 20, 2016 at 12:08 AM, Emma Sherratt 
wrote:

> Hi David,
>
> Not sure what the file actually looks like since you’ve not included a
> sample here. However I suggest taking a look at the readland functions in
> geomorph R package to see how we tackle the different types. If you want,
> send it through to us and we can take a look. If there’s a lot of people
> using AVIZO for digitising, we can include a function in geomorph.
>
> Regarding a read function writing? Nope, never heard of that.
>
> Em
>
> ~~~
>
> Emma Sherratt, PhD.
>
> Lecturer in Zoology,
> Zoology Division, School of Environmental and Rural Science,
> Room L112 Bldg C02,
> University of New England,
> Armidale, NSW, Australia, 2351
> Tel: +61 2 6773 5041
> email: emma.sherr...@une.edu.au
> Twitter: @DrEmSherratt
>
> Caecilians are legless amphibians...
>
> *  __
> (\   .-.   .-.   /_")
>  \\_//^\\_//^\\_//
>   `"`   `"`   `"`*
>
> learn more about them here: www.emmasherratt.com/caecilians
>
>
> On 20 January 2016 at 14:50:38, David Katz (dck...@ucdavis.edu) wrote:
>
> Hi everyone,
>
> I've collected 3D landmarks on a series of cranial surface models in
> Avizo. Avizo's landmark editor outputs .landmarkAscii files, which I would
> like to read into R. The way I've done the reading has the following very
> unexpected effect: *sometimes,* it* writes *additional data to my
> .landmarkAscii files. I'd like to understand why, but am mostly interested
> in finding a solution.
>
> To read in the landmark files for a specimen...
>
> # Below, avz.file is the filepath for the .landmarkAscii
> # file for a single specimen.
> # The code reads the .landmarkAscii file with read.csv.
> # This is useful because the object created lays out
> # the informational data that precedes the coordinate data
> # predictably. This makes it easy to lop off the
> # informational data.
>   read.lms <- read.csv(avz.file, header=FALSE)[,1]
>
>   # The last row of informational data will contain the
>   # text "@1" and nothing else.
>   lm.start <- which(read.lms=="@1")+1
>
>   # Now it is possible to create an object with landmark
>   # data only. R interprets each landmark (all three
>   # coordinates together) as a factor. I convert the factor
>   # vector to a character vector.
>   lm.char <-
>  as.character(droplevels(
>  read.lms[(lm.start):length(read.lms)]))
>
>   # Then I create an empty matrix for the landmark data
>   lm.mat <- matrix(NA, nrow=length(lm.char), ncol=3)
>
>   # Then fill lm.mat with the landmark data. As mentioned,
>   # lm.char is a vector. Each element of that vector
>   # contains the X, Y, and Z coordinate for a landmark.
>   # The coordinates are separated by spaces
>   # (or maybe tabs)
>   for(i in 1:nrow(lm.mat))
>  {lm.mat[i,] <-
>  as.numeric(unlist(strsplit(ctlm.char[i], " ")))}
>
> That's it. The code above will read in the data and make a landmark
> matrix. Unfortunately, it sometimes also writes additional lines to the
> .landmarkAscii file. The first added element is "@2." Thereafter, the
> landmark file adds as many three-coordinate triplets as there are landmarks
> in the original data file. The values of these triplets are 0,0,1 (or maybe
> 1,0,0).
>
> This is really strange behavior. A read function shouldn't write.
>
> My issue may be better suited to an R forum, but I am hoping someone here
> has reliable code for reading Avizo landmarks into R.
>
> Thanks in advance.
>
> David
>
>
> --
> David Katz
> University of California, Davis
> --
> MORPHMET may be accessed via its webpage at http://www.morphometrics.org
> ---
> You received this message because you are subscribed to the Google Groups
> "MORPHMET" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to morphmet+unsubscr...@morphometrics.org.
>
> --
> MORPHMET may be accessed via its webpage at http://www.morphometrics.org
> ---
> You received this message because you are subscribed to the Google Groups
> "MORPHMET" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to morphmet+unsubscr...@morphometrics.org.
>



-- 
David Katz
Doctoral Candidate
Evolutionary Anthropology
University of California, Davis
Young Hall 204
ResearchGate profile 

-- 
MORPHMET may be accessed via its webpage at http://www.morphometrics.org
--- 
You received this message because you are subscribed to the Google Groups 
"MORPHMET" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to morphmet+unsubscr...@morphometrics.org.


Re: [MORPHMET] writing .nts files from geomorph

2016-01-19 Thread Ariadne Schulz
Dear Emma and Andrea,
Thanks for the rescue. I'll give this a try. I don't really know much about
code so some of the syntax is confusing to me, but this looks to be an
explanation I can follow after a few tries. Thank you so much.

Best,
Ari

On Tue, Jan 19, 2016 at 11:08 AM, Emma Sherratt 
wrote:

> Dear Ari,
>
> geomorph uses the following code to write an .nts from the digtizing
> functions. It's an .nts file for single specimens
>
> # Write .nts file for output of digitize2d(), buildtemplate()
> digit.fixed() and digitsurface()
> # A is an nx2 or nx3 matrix of the output coordinates. To be used
> internally only.
>
> writeland.nts <- function(A, spec.name, comment=NULL){
>   ntsfile=paste(spec.name,".nts",sep="")
>   file.create(file=ntsfile)
>   if(is.null(comment)){
> cat(paste('"',spec.name,sep=""),file= ntsfile,sep="\n",append=TRUE)
>   }
>   else if(!is.null(comment)){
> cat(paste('"',spec.name,sep=""),file= ntsfile,sep="\n")
> cat(paste('"',comment,sep=""),file= ntsfile,sep="\n",append=TRUE)
>   }
>   dims <- dim(A)
>   if (dims[2] == 2){
> cat(paste(1,dims[1],2,0,"dim=2"),file= ntsfile,sep="\n",append=TRUE)
>   }
>   else if (dims[2] == 3){
> cat(paste(1,dims[1],3,0, "dim=3"),file= ntsfile,sep="\n",append=TRUE)
>   }
>   write.table(A ,file= ntsfile,col.names = FALSE, row.names = FALSE,sep="
>  ",append=TRUE)
> }
>
> Emma
>
> ~~~
>
> Emma Sherratt, PhD.
>
> Lecturer in Zoology,
> Zoology Division, School of Environmental and Rural Science,
> Room L112 Bldg C02,
> University of New England,
> Armidale, NSW, Australia, 2351
> Tel: +61 2 6773 5041
> email: emma.sherr...@une.edu.au
> Twitter: @DrEmSherratt
>
> Caecilians are legless amphibians...
>
> *  __
> (\   .-.   .-.   /_")
>  \\_//^\\_//^\\_//
>   `"`   `"`   `"`*
>
> learn more about them here: www.emmasherratt.com/caecilians
>
>
>
>
> On 19 January 2016 at 20:19, Ariadne Schulz 
> wrote:
>
>> Hi all,
>>
>> I'm hoping this will be a quick and easy question. I've even done it
>> before and then forgotten how.
>>
>> I need to create quite a few .nts files. The easiest way to do this I
>> think is in R. I read in my .dta file, got my landmarks all switched the
>> way I want them but now for each of my elements I need to create a .nts
>> file. I've searched about online and the only things I could find were how
>> to read a .nts file and the "digitize" functions. I know it's possible to
>> simply write .nts files, because I have done it before ... but I've
>> forgotten what I did.
>>
>> Help?
>>
>> Best,
>> Ari
>>
>> --
>> MORPHMET may be accessed via its webpage at http://www.morphometrics.org
>> ---
>> You received this message because you are subscribed to the Google Groups
>> "MORPHMET" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to morphmet+unsubscr...@morphometrics.org.
>>
>
>

-- 
MORPHMET may be accessed via its webpage at http://www.morphometrics.org
--- 
You received this message because you are subscribed to the Google Groups 
"MORPHMET" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to morphmet+unsubscr...@morphometrics.org.


[MORPHMET] New pub Geometric Morphometrics in cardiology

2016-01-19 Thread Paolo Piras
Hi folks,
for those that could be interested I signal this publication

*Piras P.*, Teresi L., Gabriele S., Evangelista A., Esposito G., Varano V.,
Torromeo C., Nardinocchi P. & Puddu P.E. (2016) - Systo–diastolic LV shape
analysis by geometric morphometrics and parallel transport highly
discriminates myocardial infarction. In: Camara O., et. al. (Eds), STACOM
2015, Lecture Notes in Computer Science, vol. 9534, Springer International,
pp. 119-129.

PDF available on request
Best
paolo

-- 
MORPHMET may be accessed via its webpage at http://www.morphometrics.org
--- 
You received this message because you are subscribed to the Google Groups 
"MORPHMET" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to morphmet+unsubscr...@morphometrics.org.


Re: [MORPHMET] 3D surface scanner information

2016-01-19 Thread Thomas O'Mahoney
Hi,
This subject pops up every few months on Morphmet. The general consensus is
that either Creaform or structured light scanners like Artec or LMI have
made are generally very satisfactory solutions. People like Breuckmann are
an order of magnitude more expensive but also very good.
You'll want to budget at least $20-30,000 to set yourself up properly with
both scanners and workstations/post-processing software. Popular post
software include geomagic and polyworks. They work extremely well but cost
$$$. For CT, Amira/Avizo has a minimal learning curve but again costs $$$.
I can't give exact prices as they will give you a bespoke quote depending
on number of workstations etc. Stradwin is a nice freeware solution for CT
if your scans don't have too many problems (e.g. fossil embedded in matrix,
low contrast).
For fossil hominins, bear in mind that a large proportion have been either
CT or MicroCT scanned, and curators will be loth to allow surface scanning
on top. So a CT program is useful for processing already existing scans.
Photoscan is worth playing about with, as it only costs $50. With a good
protocol you can get some extremely good results from skulls and mandibles
(think good camera and lazy Susan).

Disclosure-I run a small consultancy on 3d imaging and work with LMI in the
UK.

All the best,
Tom O'Mahoney

University of Manchester, Faculty of lifesciences



On 19 January 2016 at 11:56, Robert Z. Selden, Jr. 
wrote:

> Hi Miguel,
>
> I've been using a Creaform GoSCAN50, and am very happy with it (I scan
> ceramics though; not hominins). There are two of these scanners (GoSCAN20
> and GoSCAN50 - see
> http://www.creaform3d.com/en/metrology-solutions/handheld-portable-3d-scanner-goscan-3d);
> the 20 gets better detail on smaller objects, and the 50 is better for
> medium/large objects. Depending on the level of detail that you need
> (particularly for the teeth), it might be better to opt for the 20. I
> recently used a 20 to scan a projectile point (https://skfb.ly/ATNV), and
> it worked quite well.
>
> A few examples from the GoSCAN50 here:
>
> Ceramic vessel from Salvador, Brazil (takes a moment for the texture file
> to load) - https://skfb.ly/AGtZ
>
> Caddo effigy pipe (frog) from Louisiana (US) - https://skfb.ly/JMvv
>
> Caddo ceramic bowl from Texas (US) - https://skfb.ly/JM6W
>
> Some of my colleagues have produced some good scans with the NextEngineHD (
> http://www.nextengine.com/); these from Bernard Means:
>
> Racoon Skull - https://skfb.ly/EoVw
>
> Owl Skull - https://skfb.ly/EoVP
>
> There are also some good examples of folks using photogrammetry (123D
> Catch, AgiSoft, etc.) for this kind of application; although I don't have
> those handy.
>
> Yet another option would be to see if there is anyone on campus
> (engineering departments usually have quite a few) that might be willing
> and able to help. While I was in grad school, we ran across a CT scanner in
> the petroleum engineering department that they needed to justify
> purchasing, so they let us run as many samples as we wanted to at no cost.
> The art department also had quite a few scanners.
>
> It all comes down to what you have experience with, and what you're most
> comfortable with; particularly since you will be spending quite a bit of
> time with this equipment. There are advantages and drawbacks to every
> surface scanner and photogrammetry program. If you have an opportunity to
> demo a scanner or photogrammetry program, I would take it (there may be a
> variety of product reps in your area).
>
> As things get published, we've been uploading our scan data to Zenodo (
> https://zenodo.org/collection/user-caddo_nagpra_3d); bound to be other
> examples there and elsewhere that you can explore.
>
> Best of luck,
> Zac
>
>
>
> -Original Message-
> From: Miguel Eduardo Delgado Burbano [mailto:mdelgadoburb...@gmail.com]
> Sent: Monday, January 18, 2016 6:10 PM
> To: morphmet@morphometrics.org; morphmet_modera...@morphometrics.org
> Subject: [MORPHMET] 3D surface scanner information
>
> Hello everyone
>
>
> I am interested to obtain a 3D surface scanner which will be used to study
> hominin teeth and skulls. Does anyone have any experience, suggestions
> and/or recommendations?
>
>
> For instance price, resolution, peformance, manipulation (portable)
>
>
>
>
> thanks in advance
>
>
> Miguel
>
>
> ​
> Miguel Delgado PhD
> CONICET-División Antropología.
> Facultad de Ciencias Naturales y Museo.
> Universidad Nacional de La Plata
> Paseo del Bosque s/n. La Plata 1900. Argentina
> Cel: 5492216795916. Fax: 54 221 4257527
> https://unlp.academia.edu/DelgadoMiguel <
> https://urldefense.proofpoint.com/v2/url?u=https-3A__unlp.academia.edu_DelgadoMiguel=AwMFaQ=2X_btuPRWkGwRX26NHIotw=BzjivF1QeBfI_3LA2VUN9ft9kB36GKxt8Ke21CMTTJU=_yMz4_fPydvxBHPfznWW2bMkvyyK0vrm47EDxT-zAxI=5AHSpC1-D2-uNNtx0OB1jpt4oPypMqMjRjFSpjpcjgk=
> >
>