R/ContextualityIndex.R

Defines functions ContextualityIndex

Documented in ContextualityIndex

ContextualityIndex <- function( inANIObj, inSnapShot = NULL, inHalfDecayChords = 0.1,
                                inHalfDecayToneCenters = 1.5, inEnlargement = 0)
{
  inPeriodicityPitch <- inANIObj[[1]]
  inSampleFreq <- inANIObj[[2]]
  inPeriods <- inANIObj[[3]]

  if (inEnlargement == -1) {
    inEnlargement = 2*inHalfDecayToneCenters;
  }

  if (is.null(inSnapShot)){
    inSnapShot <- (dim(inPeriodicityPitch)[2]-1)/inSampleFreq
  }

  if (inSnapShot >= 0){
    inSnapShotSamples <- round(inSnapShot*inSampleFreq)+1
  } else {
    inSnapShotSamples <- size(inPeriodicityPitch,2) - abs(round(inSnapShot*inSampleFreq))
  }

  outChords <- LeakyIntegration(inPeriodicityPitch, inSampleFreq,
                                inHalfDecayChords, inEnlargement)

  outToneCenters <- LeakyIntegration(inPeriodicityPitch, inSampleFreq,
                                     inHalfDecayToneCenters, inEnlargement)

  outContextuality1 = array()
  outContextuality2 = array()
  outContextuality3 = array()

  for (i in 1:dim(outToneCenters)[2]){
    value1 <- cor(outChords[,i],outChords[,inSnapShotSamples])
    value2 <- cor(outToneCenters[,i],outChords[,inSnapShotSamples])
    value3 <- cor(outToneCenters[,i],outChords[,i])
    outContextuality1[i] =  value1
    outContextuality2[i] =  value2
    outContextuality3[i] =  value3
  }

  suppressMessages(require(ggplot2))
  suppressMessages(require(cowplot))
  plotcoefs <-data.frame(1:length(outContextuality1)/100, outContextuality1,
                         outContextuality2, outContextuality3)
  colnames(plotcoefs) <- c("time","coef1","coef2","coef3")

  g1 <- ggplot(data = plotcoefs, aes(x=time, y=coef1, group=1)) +
    labs(x = "Time (in s)", y = "Corr. Coef.", title = "Local Inspection")+
    geom_line(color = "steelblue", size = 0.65) +
    ylim(0,1) +
    theme(text = element_text(size=10))

  g2 <- ggplot(data = plotcoefs, aes(x=time, y=coef2, group=1)) +
    labs(x="Time (in s)", y = "Corr. Coef.", title = "Global Inspection") +
    geom_line(color = "steelblue", size = 0.65) +
    ylim(0,1) +
    theme(text = element_text(size=10))

  g3 <- ggplot(data = plotcoefs, aes(x=time, y=coef3, group=1)) +
    labs(x="Time (in s)", y = "Corr. Coef.", title = "Comparison") +
    geom_line(color = "steelblue", size = 0.65) +
    ylim(0,1) +
    theme(text = element_text(size=10))

  coefplot <- plot_grid(g1, g2, g3, label_x = 0.2, nrow = 3)

    Contextuality.Index <- list(outToneCenters, outChords,  outContextuality1,
                              outContextuality2, outContextuality3)
    class(Contextuality.Index) <- "ANI"
    names(Contextuality.Index) <- c("ChordsImage", "ToneCentersImage",
                                  "LocalInspection", "GlobalInspection",
                                  "Comparison")
    return(list(Contextuality.Index, coefplot))
  }
m-vidal/pv01 documentation built on Dec. 2, 2020, 1:24 a.m.