Problems with Automatic Manifest Maker (Rlang)


(Angus Bishop) #1

Hello! Loving the script!
I think it would be worth a mention so the novices such as myself remember to make sure the script is being interpreted by R and not bash.
Unfortunately I get this error when I try to run

(R-Env) [email protected]:~/Desktop/MACE_DEMUX_FASTQs/barcode07$ ~/Taxonomy.R
Error in [<-.data.frame(*tmp*, “direction”, value = “forward”) :
replacement has 1 row, data has 0
Calls: [<- -> [<-.data.frame
Execution halted

I’ve never done anything in R before so was hoping you could lend a hand to the meek!

Cheers!!


Automatic Manifest Maker in R
(Angus Bishop) #2

Hi all!
please see https://stackoverflow.com/questions/52496914/tidyverse-conflicts-with-automatic-manifest-maker/52498031?noredirect=1#comment91937434_52498031
for ammendments


(Angus Bishop) #3

here is the ammended script for anyone who is interested. make sure you have your data in a sub directory called “Data” and edit ~/Desktop/MACE_DEMUX_FASTQs/barcode11 to be your parent directory

#!/usr/bin/env Rscript
library(tidyverse)

data_path <- paste("~/Desktop/MACE_DEMUX_FASTQs/barcode11", “Data”, sep = “/”)
SamplesF <- list.files(path = data_path, pattern = “*.R1.fastq.gz”, all.files = FALSE,
full.names = TRUE, recursive = FALSE,
ignore.case = FALSE, include.dirs = FALSE, no… = FALSE)

TabF <- as.data.frame(SamplesF)

PathF <- data.frame(lapply(TabF, function(TabF) {gsub(“Data/”, “$PWD/N/”, TabF)}))
PathF <- data.frame(lapply(PathF, function(PathF) {gsub(“fastq.gz”, “fastq.gip”, PathF)}))

names(PathF)[names(PathF)==“SamplesF”] <- “absolute-filepath”

PathF[‘direction’]=‘forward’

PathF[‘sample-id’]= SamplesF

PathF <- data.frame(lapply(PathF, function(PathF) {gsub(“Data/”, “sample-”, PathF)}))
PathF <- data.frame(lapply(PathF, function(PathF) {gsub(".R1.fastq.gz", “”, PathF)}))
PathF <- data.frame(lapply(PathF, function(PathF) {gsub(“fastq.gip”, “fastq.gz”, PathF)}))
PathF <- data.frame(lapply(PathF, function(PathF) {gsub("/N/", “/Data/”, PathF)}))

PathF <- PathF[,c(3,1,2)]

SamplesR <- list.files(path = data_path, pattern = “*.R2.fastq.gz”, all.files = FALSE,
full.names = TRUE, recursive = FALSE,
ignore.case = FALSE, include.dirs = FALSE, no… = FALSE)

TabR <- as.data.frame(SamplesR)

PathR <- data.frame(lapply(TabR, function(TabR) {gsub(“Data/”, “$PWD/N/”, TabR)}))
PathR <- data.frame(lapply(PathR, function(PathR) {gsub(“fastq.gz”, “fastq.gip”, PathR)}))

names(PathR)[names(PathR)==“SamplesR”] <- “absolute-filepath”

PathR[‘direction’]=‘reverse’

PathR[‘sample-id’]= SamplesR

PathR <- data.frame(lapply(PathR, function(PathR) {gsub(“Data/”, “sample-”, PathR)}))
PathR <- data.frame(lapply(PathR, function(PathR) {gsub(".R2.fastq.gz", “”, PathR)}))
PathR <- data.frame(lapply(PathR, function(PathR) {gsub(“fastq.gip”, “fastq.gz”, PathR)}))
PathR <- data.frame(lapply(PathR, function(PathR) {gsub("/N/", “/Data/”, PathR)}))

PathR <- PathR[,c(3,1,2)]

Manifest <- rbind(PathF, PathR)

names(Manifest)[names(Manifest)==“sample.id”] <- “sample-id”

names(Manifest)[names(Manifest)==“absolute.filepath”] <- “absolute-filepath”

write_csv(Manifest, “Manifest.csv”)


(Angus Bishop) #4

IMPORTANT!!!
ALL OF THE “” and ‘’ change format to curly types here! =O
Please take care to change them back before use!


(Angus Bishop) #5

For use on single end reads please use this instead of the above (WARNING, still fresh off the press so is likely to have a few issues)

 #!/usr/bin/env Rscript
library(tidyverse)

data_path <- paste (setwd ("Data/"),"Data", sep = "/")
SamplesF <- list.files(path = data_path, pattern = "*.R1.fastq.gz", all.files = FALSE,
       full.names = TRUE, recursive = FALSE,
       ignore.case = FALSE, include.dirs = FALSE, no.. = FALSE)

TabF <- as.data.frame(SamplesF)

PathF <- data.frame(lapply(TabF, function(TabF) {gsub("Data/", "$PWD/N/", TabF)}))
PathF <- data.frame(lapply(PathF, function(PathF) {gsub("fastq.gz", "fastq.gip", PathF)}))

names(PathF)[names(PathF)=="SamplesF"] <- "absolute-filepath" 

PathF['direction']='forward'

PathF['sample-id']= SamplesF

PathF <- data.frame(lapply(PathF, function(PathF) {gsub("Data/", "sample-", PathF)}))
PathF <- data.frame(lapply(PathF, function(PathF) {gsub(".R1.fastq.gz", "", PathF)}))
PathF <- data.frame(lapply(PathF, function(PathF) {gsub("fastq.gip", "fastq.gz", PathF)})) 
PathF <- data.frame(lapply(PathF, function(PathF) {gsub("/N/", "/Data/", PathF)})) 

PathF <- PathF[,c(3,1,2)]

Manifest <- rbind(PathF)

names(Manifest)[names(Manifest)=="sample.id"] <- "sample-id" 

names(Manifest)[names(Manifest)=="absolute.filepath"] <- "absolute-filepath" 

write_csv(Manifest, "Manifest.csv")

```

(Matthew Ryan Dillon) #6

Hey there @mouldinator

Discourse (the platform this forum is built on) supports a wide variety of formatting options, including code formatting. Simply place your code in a triple-backtick code-fence like this:

```
my code...
```

You can also get syntax highlighting:

```bash
echo $PATH
```

which will render like this:

echo $PATH

Regarding the curly quotes - those might also be coming from the editor you are working with, but if not, the code fences will use programming quotes instead of prose quotes.


(Angus Bishop) #7

Thanks, will use that in the future =)
cheers


(Matthew Ryan Dillon) #8

Feel free to use it now — you can actually edit your existing posts, that way you can remove your warning about curlies.

The future is now! :dark_sunglasses: :first_quarter_moon_with_face:


(Jono Warren) #9

Whilst I think it is a good idea to make the directory a variable to make it easier to change, I did say you’d need to change it…


(Angus Bishop) #10

@ Micro_Biologist hey there! Unfortunately didn’t do a very good job; I keep getting the absolute filepath pasted onto the sequence ID in the manifest files and qiime tools cant Import it as it dosnt recognise the manifest file type