Permalink
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
DAR-Mars-F24/StudentNotebooks/Assignment05/MatchingLIBSandPIXL.Rmd
Go to fileThis commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
270 lines (202 sloc)
7.56 KB
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
title: "Combining LIBS and PIXL Data" | |
author: "Margo VanEsselstyn" | |
date: "`r Sys.Date()`" | |
output: | |
pdf_document: | |
toc: yes | |
html_document: | |
toc: yes | |
subtitle: "DAR Mars" | |
--- | |
```{r setup, include=FALSE} | |
# Set the default CRAN repository | |
local({r <- getOption("repos") | |
r["CRAN"] <- "http://cran.r-project.org" | |
options(repos=r) | |
}) | |
if (!require("pandoc")) { | |
install.packages("pandoc") | |
library(pandoc) | |
} | |
if (!require("rmarkdown")) { | |
install.packages("rmarkdown") | |
library(rmarkdown) | |
} | |
if (!require("tidyverse")) { | |
install.packages("tidyverse") | |
library(tidyverse) | |
} | |
if (!require("stringr")) { | |
install.packages("stringr") | |
library(stringr) | |
} | |
if (!require("ggbiplot")) { | |
install.packages("ggbiplot") | |
library(ggbiplot) | |
} | |
if(!require("knitr")){ | |
install.packages("knitr") | |
library(knitr) | |
} | |
if(!require("cluster")){ | |
install.packages("cluster") | |
library(cluster) | |
} | |
if(!require("ggtern")){ | |
install.packages("ggtern") | |
library(ggtern) | |
} | |
if(!require("caret")){ | |
install.packages("caret") | |
library(caret) | |
} | |
if(!require("geosphere")){ | |
install.packages("geosphere") | |
library(geosphere) | |
} | |
knitr::opts_chunk$set(echo = TRUE) | |
``` | |
### Data Preparation | |
Load in LIBS data | |
```{r, data01} | |
#load in LIBS data | |
libs.df <- readRDS("/academics/MATP-4910-F24/DAR-Mars-F24/Data/supercam_libs_moc_loc.Rds") | |
#Drop the standard deviation features, the sum of the percentages, | |
#the distance, and the total frequencies | |
libs.df <- libs.df %>% | |
select(!(c(distance_mm,Tot.Em.,SiO2_stdev,TiO2_stdev,Al2O3_stdev,FeOT_stdev, | |
MgO_stdev,Na2O_stdev,CaO_stdev,K2O_stdev,Total))) | |
# Convert the points to numeric | |
libs.df$point <- as.numeric(libs.df$point) | |
libs.df[,6:13] <- sapply(libs.df[,6:13],as.numeric) | |
#remove the scct/reference samples | |
libs.df<-libs.df%>% | |
filter(!(grepl("scct", target))) | |
#add a column to indicate the nearest pixl | |
libs.df<-cbind(nearestpixl=0,libs.df) | |
#make a dataframe of just the LIBS Lat/Long and target name and remove duplicates | |
libstargets.df<-libs.df[,c(1,3,4,5)] | |
libstargets.df<-distinct(libstargets.df) | |
``` | |
Load in PIXL data | |
```{r, data02} | |
#read in pixl data with lat/long | |
pixl.df<-readRDS("/academics/MATP-4910-F24/DAR-Mars-F24/StudentData/pixl_sol_coordinates.Rds") | |
#include only pixl metadata | |
pixl.df<-pixl.df %>% | |
select(c(1,2,19,20,22)) | |
#convert Lat/Long to numeric | |
pixl.df$Lat <- as.numeric(pixl.df$Lat) | |
pixl.df$Long <- as.numeric(pixl.df$Long) | |
#remove rows so we only have one sample per abrasion and remove atmospheric sample | |
pixl.df<-pixl.df[c(2,4,6,8,10,12,14,16),] | |
``` | |
### Combining datasets | |
```{r} | |
distance=100 | |
distCosine(pixl.df[1,c(1,2)],libstargets.df[1,c(2,3)], r=3393169) | |
for(i in 1:nrow(pixl.df)) { | |
libstargets.df<-libstargets.df%>%mutate(nearestpixl = ifelse(distHaversine(pixl.df[i,c(1,2)],c(lat,lon),r=3393169),pixl.df[i,5], nearestpixl)) | |
} | |
``` | |
```{r} | |
libstargets.df<-cbind(libstargets.df,"Distance"=0,"Bellegrade"=0,"Dourbes"=0,"Quartier"=0,"Alfalfa"=0,"ThorntonGap"=0,"BerryHollow"=0,"Novarupta"=0,"UganikIsland"=0) | |
``` | |
```{r} | |
#DistCosine(pixl.df[1,c(1,2)],libstargets.df[1,c(2,3)], r=3393169) | |
for(i in 1:nrow(libstargets.df)) { | |
libstargets.df[i,c(6:13)]<-c(distHaversine(pixl.df[1,c(1,2)],libstargets.df[i,c(2,3)],r=3393169), | |
distHaversine(pixl.df[2,c(1,2)],libstargets.df[i,c(2,3)],r=3393169), | |
distHaversine(pixl.df[3,c(1,2)],libstargets.df[i,c(2,3)],r=3393169), | |
distHaversine(pixl.df[4,c(1,2)],libstargets.df[i,c(2,3)],r=3393169), | |
distHaversine(pixl.df[5,c(1,2)],libstargets.df[i,c(2,3)],r=3393169), | |
distHaversine(pixl.df[6,c(1,2)],libstargets.df[i,c(2,3)],r=3393169), | |
distHaversine(pixl.df[7,c(1,2)],libstargets.df[i,c(2,3)],r=3393169), | |
distHaversine(pixl.df[8,c(1,2)],libstargets.df[i,c(2,3)],r=3393169)) | |
libstargets.df[i,1]<-which.min(libstargets.df[i,c(6:13)]) | |
libstargets.df[i,5]<-min(libstargets.df[i,c(6:13)]) | |
} | |
libstargets.df$nearestpixl<-as.factor(libstargets.df$nearestpixl) | |
levels(libstargets.df$nearestpixl)<-(c("Bellegrade","Dourbes","Quartier","Alfalfa","ThorntonGap","BerryHollow","Novarupta","UganikIsland")) | |
``` | |
```{r} | |
Bellegrade<-libstargets.df[libstargets.df$nearestpixl=="Bellegrade",]$target | |
Dourbes<-libstargets.df[libstargets.df$nearestpixl=="Dourbes",]$target | |
Quartier<-libstargets.df[libstargets.df$nearestpixl=="Quartier",]$target | |
Alfalfa<-libstargets.df[libstargets.df$nearestpixl=="Alfalfa",]$target | |
ThorntonGap<-libstargets.df[libstargets.df$nearestpixl=="ThorntonGap",]$target | |
BerryHollow<-libstargets.df[libstargets.df$nearestpixl=="BerryHollow",]$target | |
Novarupta<-libstargets.df[libstargets.df$nearestpixl=="Novarupta",]$target | |
UganikIsland<-libstargets.df[libstargets.df$nearestpixl=="UganikIsland",]$target | |
``` | |
### Ternary Diagram | |
```{r} | |
meters=100 | |
included.libs<-(libstargets.df%>% | |
filter(Distance<meters))$target | |
libs.matrix <-libs.df %>% | |
filter(target %in% included.libs) | |
libs.matrix <- libs.matrix[,c(5,7:14)] | |
libs.tern <- as.data.frame(libs.matrix) %>% | |
mutate(x=(SiO2+Al2O3)/100,y=(FeOT+MgO)/100,z=(CaO+Na2O+K2O)/100) %>% | |
select(-c(SiO2,Al2O3,FeOT,MgO,CaO,Na2O,K2O,TiO2)) | |
libs.tern<-cbind("Abrasion"=0,libs.tern) | |
libs.tern<-libs.tern%>% | |
mutate(Abrasion = ifelse(target%in%Alfalfa,"Alfalfa", | |
ifelse(target %in% Bellegrade, "Belegrade", | |
ifelse(target %in% BerryHollow, "BerryHollow", | |
ifelse(target %in% Dourbes, "Dourbes", | |
ifelse(target %in% Novarupta, "Novarupta", | |
ifelse(target %in% Quartier, "Quartier", | |
ifelse(target %in% ThorntonGap, "ThorntonGap", | |
ifelse(target %in% UganikIsland, "UganikIsland",Abrasion))))))))) | |
kabledf<-rbind("Distance (m)"=meters,"Targets"=length(included.libs),"Points"=nrow(libs.tern)) | |
kable(kabledf) | |
``` | |
```{r} | |
ggtern(libs.tern, ggtern::aes(x=x,y=y,z=z)) + | |
geom_point(data=libs.tern,aes(color=Abrasion,alpha=0.5)) + | |
theme_rgbw() + | |
labs(title=paste("Mars LIBS Data Within",distance,"meters of PIXL",sep=" "), | |
x="Si+Al", | |
y="Fe+Mg", | |
z="Ca+Na+K")+theme(legend.position="right") + | |
guides(alpha="none") | |
``` | |
### Line plot | |
```{r} | |
meters=100 | |
included.libs<-(libstargets.df%>% | |
filter(Distance<meters))$target | |
libs.matrix <-libs.df %>% | |
filter(target %in% included.libs) | |
libs.matrix <- libs.matrix[,c(5,7:14)] | |
libs.matrix<-libs.matrix[,c(1:2,4:9,3)] | |
libs.matrix<-cbind("Abrasion"=0,libs.matrix) | |
libs.matrix<-libs.matrix%>% | |
mutate(Abrasion = ifelse(target%in%Alfalfa,"Alfalfa", | |
ifelse(target %in% Bellegrade, "Belegrade", | |
ifelse(target %in% BerryHollow, "BerryHollow", | |
ifelse(target %in% Dourbes, "Dourbes", | |
ifelse(target %in% Novarupta, "Novarupta", | |
ifelse(target %in% Quartier, "Quartier", | |
ifelse(target %in% ThorntonGap, "ThorntonGap", | |
ifelse(target %in% UganikIsland, "UganikIsland",Abrasion))))))))) | |
libs.matrix<-cbind(libsorpixl=1,libs.matrix) | |
``` | |
```{r, data03} | |
#read in pixl data with lat/long | |
pixl.df<-readRDS("/academics/MATP-4910-F24/DAR-Mars-F24/StudentData/pixl_sol_coordinates.Rds") | |
pixl.df<-pixl.df %>% | |
select(c(5:8,12:14,17,19,18,22)) | |
#reorder pixl columns so that it matches libs data organization | |
pixl.df<-pixl.df[,c(11,10,4,3,8,2,6,1,5,7)] | |
#remove atmospheric sample | |
pixl.df<-pixl.df[2:16,] | |
pixl.df<-cbind(libsorpixl=0,pixl.df) | |
``` | |
```{r} | |
colnames(pixl.df)<-colnames(libs.matrix) | |
pixllibs.df<-rbind(pixl.df,libs.matrix) | |
``` | |