0
$\begingroup$

I have tried to use UpsetR to visualize the input file which can be found here

> library("UpSetR")
> orthogroups_df<- read.table("orthogroups.GeneCount.tsv",  header=T, stringsAsFactors = F)
> #All species
> selected_species <- colnames(orthogroups_df)[2:(ncol(orthogroups_df) -1)] 
> selected_species
 [1] "Atha" "Cann" "NQLD" "Natt" "Ngla" "Nlab" "Nsyl" "Ntab" "Ntom" "Slyc" "Stub" "Vvin"
> head(orthogroups_df)
  Orthogroup Atha Cann NQLD Natt Ngla Nlab Nsyl Ntab Ntom Slyc Stub Vvin Total
1  OG0000000    0    0  965    0    0    3    0    0    0    0    0    0   968
2  OG0000001    0    1    3    0    0  448    0    0    0    0    0    0   452
3  OG0000002    0    1  313    0    0  120    1    0    1    0    0    0   436
4  OG0000003    0   93   15   21   46   16   33   63   36   25   39   26   413
5  OG0000004    1   42    2   34  109    6    8  154   11    9    4    0   380
6  OG0000005    0    2   61    1   34   44   91   70   43   20    1    0   367
> ncol(orthogroups_df)
[1] 14
> orthogroups_df[orthogroups_df > 0] <- 1
> upset(orthogroups_df, 
+       nsets = ncol(orthogroups_df), 
+       sets = rev(c(selected_species)), 
+       queries = list(list(query = intersects, params = list("NQLD", "Nlab", "Nsyl"), color = "#238c45", active = T),
+                 list(query = intersects, params = list("NQLD", "Nlab"), color = "#ffd977", active = T)))


Error in `$<-.data.frame`(`*tmp*`, "freq", value = 45L) : 
  replacement has 1 row, data has 0

How is it possible to fix the above error?

$\endgroup$
1
  • $\begingroup$ Please provide some reproducible data first. Nobody is going to be able to help otherwise. $\endgroup$
    – user438383
    Nov 22, 2022 at 17:46

1 Answer 1

2
$\begingroup$

I suspect the error is caused by a 'lack' of intersection between "NQLD", "Nlab", and "Nsyl"? If you remove "Nlab" from the first query the command appears to complete as expected, e.g.

library(UpSetR)
orthogroups_df <- read.table("~/Desktop/orthogroups.GeneCount.tsv",
                            header=T, stringsAsFactors = F)
selected_species <- colnames(orthogroups_df)[2:(ncol(orthogroups_df) -1)]
selected_species
#>  [1] "Athaliana_447_Araport11.protein_primaryTranscriptOnly"
#>  [2] "Cann"                                                 
#>  [3] "NQLD"                                                 
#>  [4] "Natt"                                                 
#>  [5] "Ngla"                                                 
#>  [6] "Nlab"                                                 
#>  [7] "Nsyl"                                                 
#>  [8] "Ntab"                                                 
#>  [9] "Ntom"                                                 
#> [10] "Slyc"                                                 
#> [11] "Stub"                                                 
#> [12] "Vvin"
head(orthogroups_df)
#>   Orthogroup Athaliana_447_Araport11.protein_primaryTranscriptOnly Cann NQLD
#> 1  OG0000000                                                     0    0  965
#> 2  OG0000001                                                     0    1    3
#> 3  OG0000002                                                     0    1  313
#> 4  OG0000003                                                     0   93   15
#> 5  OG0000004                                                     1   42    2
#> 6  OG0000005                                                     0    2   61
#>   Natt Ngla Nlab Nsyl Ntab Ntom Slyc Stub Vvin Total
#> 1    0    0    3    0    0    0    0    0    0   968
#> 2    0    0  448    0    0    0    0    0    0   452
#> 3    0    0  120    1    0    1    0    0    0   436
#> 4   21   46   16   33   63   36   25   39   26   413
#> 5   34  109    6    8  154   11    9    4    0   380
#> 6    1   34   44   91   70   43   20    1    0   367
ncol(orthogroups_df)
#> [1] 14
orthogroups_df[orthogroups_df > 0] <- 1

upset(orthogroups_df,
      nsets = ncol(orthogroups_df),
      sets = rev(c(selected_species)),
      queries = list(list(query = intersects,
                          params = list("NQLD", "Nsyl"),
                          color = "#238c45", active = T),
                     list(query = intersects,
                          params = list("NQLD", "Nlab"),
                          color = "#ffd977", active = T)))

Created on 2022-11-28 with reprex v2.0.2

You can see in the plot that "NQLD", "Nlab", and "Nsyl" don't appear to have any values in common, i.e. the 'dots' corresponding to those variables aren't joined. So, to fix the error you need to select variables that intersect in your queries.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.