Error when doing power spectrum analysis in R - r
I am trying to do a spectral density analysis with ozone data but have run into the error:
Error in ts(tser, frequency = x.fsamp, start = x.start) : 'ts'
object must have one or more observations
I am not sure what the problem is because it sounds like it is having a problem with the number of entries in the file but the file is certainly not empty. What could be causing this problem? The code is as follows:
library(openair)
library(psd)
filedir <-"C:/Users/dfmcg/Documents/Thesis files/ALL_GPMP_O3_Met"
myfiles <-c(list.files(path = filedir))
paste(filedir,myfiles,sep = '/')
npsfiles<-c(paste(filedir,myfiles,sep = '/'))
for (i in npsfiles[1:3]){
x <- substr(i,55,61)
y<-paste(paste('C:/Users/dfmcg/Documents/Thesis files/nps images',x,sep='/'), '.png', sep='')
png(filename = y)
timeozone<-import(i,date="DATE",date.format = "%m/%d/%Y %H",header=TRUE,na.strings="-999")
psdcore(timeozone, ntaper = ,
na.action = "-999", plot = TRUE,
refresh = TRUE)
dev()
}
Related
How do I resolve an integration error in Seurat?
I am new to Seurat, and am trying to run an integrated analysis of two different single-nuclei RNAseq datasets. I have been following the Seurat tutorial on integrated analysis (https://satijalab.org/seurat/articles/integration_introduction.html) to guide me, but when I ran the last line of code, I got an error. # Loading required libraries library(Seurat) library(cowplot) library(patchwork) # Set up the Seurat Object vgat.data <- Read10X(data.dir = "~/Desktop/VGAT Viral Data 1/") vglut.data <- Read10X(data.dir = "~/Desktop/VGLUT3 Viral/") # Initialize the Seurat object with the raw (non-normalized data) vgat <- CreateSeuratObject(counts = vgat.data, project = "VGAT/VGLUT Integration", min.cells = 3, min.features = 200) vglut <- CreateSeuratObject(counts = vglut.data, project = "VGAT/VGLUT Integration", min.cells = 3, min.features = 200) # Merging the datasets vgat <- AddMetaData(vgat, metadata = "VGAT", col.name = "Cell") vglut <- AddMetaData(vglut, metadata = "VGLUT", col.name = "Cell") merged <- merge(vgat, y = vglut, add.cell.ids = c("VGAT", "VGLUT"), project = "VGAT/VGLUT Integration") # Split the dataset into a list of two seurat objects (vgat and vglut) merged.list <- SplitObject(merged, split.by = "Cell") # Normalize and Identify variable features for each dataset independently merged.list <lapply(X = merged.list, FUN = function(x) { x <- NormalizeData(x) x <- FindVariableFeatures(x, selection.method = "vst", nFeatures = 2000) }) After running the last line of code, I get the following error: Error in merged.list < lapply(X = merged.list, FUN = function(x) { : comparison of these types is not implemented I was wondering if anyone is familiar with Seurat and knows how I can troubleshoot this error. Any help would be greatly appreciated.
Weird characters appearing in the plot legend when using DoHeatmap
I was using Seurat to analyse single cell RNA-seq data and I managed to draw a heatmap plot with DoHeatmap() after clustering and marker selection, but got a bunch of random characters appearing in the legend. They are random characters as they will change every time you run the code. I was worrying over it's something related to my own dataset, so I then tried the test Seurat object 'ifnb' but still got the same issue (see the red oval in the example plot). example plot I also tried importing the Seurat object in R in the terminal (via readRDS) and ran the plotting function, but got the same issue there, so it's not a Rstudio thing. Here are the codes I ran: ''' library(Seurat) library(SeuratData) library(patchwork) InstallData("ifnb") LoadData("ifnb") ifnb.list <- SplitObject(ifnb, split.by = "stim") ifnb.list <- lapply(X = ifnb.list, FUN = function(x) { x <- NormalizeData(x) x <- FindVariableFeatures(x, selection.method = "vst", nfeatures = 2000) }) features <- SelectIntegrationFeatures(object.list = ifnb.list) immune.anchors <- FindIntegrationAnchors(object.list = ifnb.list, anchor.features = features) immune.combined <- IntegrateData(anchorset = immune.anchors) immune.combined <- ScaleData(immune.combined, verbose = FALSE) immune.combined <- RunPCA(immune.combined, npcs = 30, verbose = FALSE) immune.combined <- RunUMAP(immune.combined, reduction = "pca", dims = 1:30) immune.combined <- FindNeighbors(immune.combined, reduction = "pca", dims = 1:30) immune.combined <- FindClusters(immune.combined, resolution = 0.5) DefaultAssay(immune.combined) <- 'RNA' immune_markers <- FindAllMarkers(immune.combined, latent.vars = "stim", test.use = "MAST", assay = 'RNA') immune_markers %>% group_by(cluster) %>% top_n(n = 10, wt = avg_log2FC) -> top10_immune DoHeatmap(immune.combined, slot = 'data',features = top10_immune$gene, group.by = 'stim', assay = 'RNA') ''' Does anyone have any idea how to solve this issue other than reinstalling everything?
I have been having the same issue myself and while I have solved it by not needing the legend, I think you could use this approach and use a similar solution: DoHeatmap(immune.combined, slot = 'data',features = top10_immune$gene, group.by = 'stim', assay = 'RNA') + scale_color_manual( values = my_colors, limits = c('CTRL', 'STIM')) Let me know if this works! It doesn't solve the source of the odd text values but it does the job! If you haven't already, I would recommend creating a forum question on the Seurat forums to see where these characters are coming from!
When I use seurat4.0, I met the same problem. While I loaded 4.1, it disappeared
How does the "LoadBeatRR" function from the RHRV package work?
I was trying to analyze my RR intervals using the RHRV package. I have used: hrv.data = CreateHRVData() hrv.data = SetVerbose(hrv.data, TRUE) hrv.data = LoadBeatRR(hrv.data, "dataset.txt", RecordPath = "#the path of dataset.txt here", datetime = "1/1/1900 0:0:0", verbose = NULL) Unfortunately, when I do this I get the warning message : "NAs introduced by coercion". And all my following analyses do not work. I do not see what the problem could be.
You should make sure the time, hr and rr variables are named as such: "Time", "niHR", and "RR" respectively. A work-around would to just to manually create the beat object. hrv.data$Beat <- readr::read_delim("txt file") %>% dplyr::rename("Time" = time, "niHR" = hr, "RR" = rr) %>% dplyr::select(Time, niHR, RR) hrv.data <- RHRV::BuildNIHR(hrv.data)
R -> Error in `row.names<-.data.frame`
Following this other question (Get p-value about contrast hypothesis for rectangular matrix) I am trying to run the following code in R, but the line: colnames(posmat) <- "pos_c1" causes an error when calling the function summary(). Error in `row.names<-.data.frame`(`*tmp*`, value = value) : duplicate 'row.names' are not allowed In addition: Warning message: non-unique value when setting 'row.names': ‘Pos’ Does anybody knows why this error comes up? Here the MWE: library(lme4) library(lmerTest) library(corpcor) database <- data.frame( Clos=factor(c(4,4,1,4,4,3,2,1,2,1,2,2,4,3,1,2,1,4,1,3,2,2,4,4,4,4,2,1,4,2,2,1,4,2,4,2,1,4,4,3)), Pos=factor(c(2,4,1,2,5,6,7,2,2,2,5,6,3,3,3,8,5,3,4,2,1,4,3,3,2,6,1,8,3,7,5,7,8,3,6,6,1,6,3,7)), RF=c(8,6,2,9,7,1,7,6,3,4,6,4,5,2,5,5,3,4,1,3,1,2,3,1,2,2,3,1,8,5,2,2,7,1,9,4,5,6,4,2), Score=c(4,3,3,5,4,3,2,4,5,2,2,3,3,4,4,4,3,2,3,3,5,4,3,4,4,2,3,4,3,4,1,2,2,2,3,4,5,3,1,2) ) clos_c1 = c(0,0,-1,1) clos_c2 = c(0,-1,0,1) clos_c3 = c(-1,0,0,1) closmat.temp = rbind(constant = 1/4,clos_c1,clos_c2,clos_c3) closmat = solve(closmat.temp) closmat = closmat[, -1] closmat pos_c1 = c(1/2,1/2,-1/6,-1/6,-1/6,-1/6,-1/6,-1/6) posmat.temp = rbind(pos_c1) posmat = pseudoinverse(posmat.temp) colnames(posmat) <- "pos_c1" contrasts(database$Clos) = closmat contrasts(database$Pos) = posmat model = lmer(Score~Clos+Pos+(1|RF), data = database, REML = TRUE) summary(model)
The problem is that when you run the model, you have the contrasts(database$Pos) without colnames but just one. You can see that by running your model variable and you will see 6 variables with the name "Pos". This causes trouble in reading the summary() command. Just by adding the line colnames(contrasts(database$Pos))<-c("pos1","pos2","pos3","pos4","pos5","pos6","pos7") after the creation of your contrasts(database$Pos) <- posmat your code will work. Feel free to put the colnames you require. The whole code is as follows then: library(lme4) library(lmerTest) library(corpcor) database <- data.frame( Clos=factor(c(4,4,1,4,4,3,2,1,2,1,2,2,4,3,1,2,1,4,1,3,2,2,4,4,4,4,2,1,4,2,2,1,4,2,4,2,1,4,4,3)), Pos=factor(c(2,4,1,2,5,6,7,2,2,2,5,6,3,3,3,8,5,3,4,2,1,4,3,3,2,6,1,8,3,7,5,7,8,3,6,6,1,6,3,7)), RF=c(8,6,2,9,7,1,7,6,3,4,6,4,5,2,5,5,3,4,1,3,1,2,3,1,2,2,3,1,8,5,2,2,7,1,9,4,5,6,4,2), Score=c(4,3,3,5,4,3,2,4,5,2,2,3,3,4,4,4,3,2,3,3,5,4,3,4,4,2,3,4,3,4,1,2,2,2,3,4,5,3,1,2) ) clos_c1 = c(0,0,-1,1) clos_c2 = c(0,-1,0,1) clos_c3 = c(-1,0,0,1) closmat.temp = rbind(constant = 1/4,clos_c1,clos_c2,clos_c3) closmat = solve(closmat.temp) closmat = closmat[, -1] closmat pos_c1 = c(1/2,1/2,-1/6,-1/6,-1/6,-1/6,-1/6,-1/6) posmat.temp = rbind(pos_c1) posmat <- pseudoinverse(posmat.temp) colnames(posmat) <- "pos_c1" contrasts(database$Clos) <- closmat contrasts(database$Pos) <- posmat ##NEW LINE colnames(contrasts(database$Pos))<-c("pos1","pos2","pos3","pos4","pos5","pos6","pos7") model <- lmer(Score~Clos+Pos+(1|RF), data = database, REML = TRUE) summary(model) I hope it helps. Cheers!
R - XGBoost: Error building DMatrix
I am having trouble using the XGBoost in R. I am reading a CSV file with my data: get_data = function() { #Loading Data path = "dados_eye.csv" data = read.csv(path) #Dividing into two groups train_porcentage = 0.05 train_lines = nrow(data)*train_porcentage train = data[1:train_lines,] test = data[train_lines:nrow(data),] rownames(train) = c(1:nrow(train)) rownames(test) = c(1:nrow(test)) return (list("test" = test, "train" = train)) } This function is Called my the main.R lista_dados = get_data() #machine = train_svm(lista_dados$train) #machine = train_rf(lista_dados$train) machine = train_xgt(lista_dados$train) The problem is here in the train_xgt train_xgt = function(train_data) { data_train = data.frame(train_data[,1:14]) label_train = data.frame(factor(train_data[,15])) print(is.data.frame(data_train)) print(is.data.frame(label_train)) dtrain = xgb.DMatrix(data_train, label=label_train) machine = xgboost(dtrain, num_class = 4 ,max.depth = 2, eta = 1, nround = 2,nthread = 2, objective = "binary:logistic") return (machine) } This is the Error: becchi#ubuntu:~/Documents/EEG_DATA/Dados_Eye$ Rscript main.R [1] TRUE [1] TRUE Error in xgb.DMatrix(data_train, label = label_train) : xgb.DMatrix: does not support to construct from list Calls: train_xgt -> xgb.DMatrix Execution halted becchi#ubuntu:~/Documents/EEG_DATA/Dados_Eye$ As you can see, they are both DataFrames. I dont know what I am doing wrong, please help!
Just convert data frame to matrix first using as.matrix() and then pass to xgb.Dmatrix().
Check if all columns have numeric data in them- I think this could be because you have some column that has data stored as factors/ characters which it won't be able to convert to a matrix. if you have factor variables, you can use one-hot encoding to convert them into dummy variables.
Try: dtrain = xgb.DMatrix(as.matrix(sapply(data_train, as.numeric)), label=label_train) instead of just: dtrain = xgb.DMatrix(data_train, label=label_train)