Hi, I am analyzing RNA-seq data and I used Stringtie to assemble transcripts and quantify them. Now to perfom DE analysis on them (using DESeq2), I used tximport which is recommended by the authors of DESeq2 to convert the count values generated from Stringtie to integer values that DESeq2 can use.
This is my R code -
quantdata <- c('path/to/18T3L/t_data.ctab', '/path to/18T6L/t_data.ctab', ....)
tmp <-readr::read_tsv(quantdata[2])
tx2gene <- tmp[, c("t_name", "gene_id")]
txi_output <- tximport(quantdata, type = "stringtie", tx2gene = tx2gene)
sampleTable <- data.frame(condition = factor(c("P", "P", "NP", "P", "P", "P", "P", "NP", "NP", "P", "P", "P", "P", "P", "P", "P", "P", "P", "P", "P", "NP", "P", "P", "P", "NP", "P", "P", "P", "P", "P", "NP", "NP", "NP", "NP", "P", "P", "P", "P", "P")))
coldata <- sampleTable
coldata$condition <- relevel(coldata$condition, ref = "NP")
library(DESeq2)
dds <- DESeqDataSetFromMatrix(
     countData = txi_output$counts,
     colData = coldata,
     design= ~ condition)
However, running this gives the error -
Error in DESeqDataSet(se, design = design, ignoreRank) :   some values in assay are not integers
And when I check the values using head(txi_output$counts), the corresponding values are not integers, but decimal. 
So basically, tximport is not converting the count values to integer, which is one of its functions. Any pointers to what I may be doing wrong here?
EDIT : The problem was, as Ram points out below, that I was using DESeqDataSetFromMatrix(), whereas I should use DESeqDataSetFromTximport(). Changing the last line to the following solved the issue - 
dds <- DESeqDataSetFromTximport(
     txi = txi_output,
     colData = coldata,
     design= ~ condition)
dds <- DESeq(dds)
                    
                
                
Hi Ram, I understood that this is one of the main functions of
tximportfrom here - A: Transcript to gene level count for DEseq(2) use- Salmon/Sailfish/Kallisto etc.I might be missing something but nothing in there speaks about integer/decimal counts or rounding.
Thanks a lot Ram. I think I may have misunderstood. I think it is true that the job of tximport is to provide count values to DESeq2 (which need to be integer) but I guess it doesn't do it on its own (using the tximport function). Rather I think that conversion to integer happens using DESeqDataSetFromTximport(). Thanks for the clarification!
Ram, I changed my code to have DESeqDataSetFromTximport() instead of DESeqDataSetFromMatrix(), and it worked fine. Thanks a lot!