jtamames / SqueezeMeta

A complete pipeline for metagenomic analysis
GNU General Public License v3.0
372 stars 80 forks source link

Issue using combineSQM #858

Closed Whitehouse2610 closed 2 months ago

Whitehouse2610 commented 3 months ago

Good afternoon,

I am trying to merge a number of squeezemeta runs using the combineSQM function. I use the following document as guidance - https://cran.r-project.org/web/packages/SQMtools/SQMtools.pdf.

The code I run is:

Install and load the SQMtools R package and your data.

install.packages("/path/to/uncompressed/SqueezeMeta/lib/SQMtools", repos = NULL, type = "source") library('SQMtools')

load your data

HBLB_01 = loadSQM('HBLB_R/HBLB_01') HBLB_02 = loadSQM('HBLB_R/HBLB_02')

Combine an arbitrary number of SQM objects into a single SQM object

HBLB = combineSQM( HBLB_01, HBLB_02, tax_source = "orfs", trusted_functions_only = FALSE, ignore_unclassified_functions = FALSE, rescale_tpm = TRUE, rescale_copy_number = TRUE )

I then get this error - "Error in rbind(combSQM$orfs$abund, SQM2$orfs$abund[extraORFs, , drop = FALSE]) : number of columns of matrices must match (see arg 2)".

Does combineSQM actually allow you to combine separate SqueezeMeta runs on different samples?

fpusan commented 3 months ago

It does not. You can use combineSQMlite instead.

fpusan commented 3 months ago

... but if you create a new environment with the squeezemeta-dev conda package you'll get the dev version of SQMtools (1.7.0), which allows to load more than one project with loadSQM. This is still on development so there could be any issues, although we are using it internally already.

library(SQMtools)
HBLB  = loadSQM(c('HBLB_R/HBLB_01', 'HBLB_R/HBLB_02')) # only works for SQMtools 1.7.0 onwards
# HBLB now contains the samples from your two projects
# You can use all functions that would work on a normal SQM object, including subsetting.