Announcement

Collapse
No announcement yet.
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • elizabeth000
    replied
    Actually the solution was super easy! You have to use double [[ to index a list! This works:

    Code:
    extest = list()
    k = 1
    for(i in 1:nlevels(data$samples$group)) {
       for(j in (i+1):nlevels(data$samples$group)) {
          if (i < nlevels(data$samples$group)) {
             extest[[k]] = exactTest(data, pair=c(i,j))
             k = k+1
          }
       }
    }

    Leave a comment:


  • elizabeth000
    replied
    For the moment this works, but is really not ideal.
    Code:
    for(i in 1:nlevels(data$samples$group)) {
       for(j in (i+1):nlevels(data$samples$group)) {
          if (i < nlevels(data$samples$group)) {
             et = exactTest(data, pair=c(i,j))
             filen = paste("/media/liz/ACERDATA/Elizabeth_DATA/exacttest_dev_cds", i, j, ".txt", sep="")
             #Open output file
             sink(filen)
             print(et$comparison)
             print(topTags(et, n=100))
             #Close output file
             sink()
          }
       }
    }

    Leave a comment:


  • elizabeth000
    replied
    Yes, that's what I was thinking. Instead of filling indices with list objects, I should append the new result to the list. Hmmmm but how do I do that in R?
    I'm drawing a blank...

    Leave a comment:


  • dpryan
    replied
    Try making the empty list first and then adding to it, since that will match all the coercion processes going on in in your real code.

    Leave a comment:


  • elizabeth000
    replied
    > first = exactTest(data,pair=c(1,2))
    > second = exactTest(data,pair=c(2,3))
    > results = list(first,second)
    > results
    [[1]]
    An object of class "DGEExact"
    $table
    logFC logCPM PValue
    CGI_10000009 -2.3851234 1.493044 0.1171040419
    CGI_10000013 0.1844446 4.147738 0.7403461115
    CGI_10000014 -4.9376158 2.707417 0.0001137864
    CGI_10000015 0.4967844 3.773692 0.4339343285
    CGI_10000028 -0.2890212 2.476181 0.9883519753
    18055 more rows ...

    $comparison
    [1] "28cell" "blastula"

    $genes
    NULL


    [[2]]
    An object of class "DGEExact"
    $table
    logFC logCPM PValue
    CGI_10000009 -2.57188463 1.493044 0.8000000
    CGI_10000013 0.01444976 4.147738 1.0000000
    CGI_10000014 0.41462168 2.707417 0.9686494
    CGI_10000015 -0.36575812 3.773692 0.6137249
    CGI_10000028 0.64099475 2.476181 0.7954756
    18055 more rows ...

    $comparison
    [1] "blastula" "dlarvae"

    $genes
    NULL

    That seems to work... so why doesn't it work in my loop...

    Leave a comment:


  • dpryan
    replied
    Not sure then, I'd have to play around with it. You might just play around with making a list of two instance by hand.

    Leave a comment:


  • elizabeth000
    replied
    By declaring extest as a list:

    Code:
    extest = list()
    k = 1
    for(i in 1:nlevels(data$samples$group)) {
       #print(c(i,"i"))
       for(j in (i+1):nlevels(data$samples$group)) {
          if (i < nlevels(data$samples$group)) {
             extest[k] = exactTest(data, pair=c(i,j))
             #print(et$table)
             k = k+1
          }
       }
    }
    I get this warning for each execution of exactTest:
    28: In extest[k] = exactTest(data, pair = c(i, j)) :
    number of items to replace is not a multiple of replacement length

    > class(extest)
    [1] "list"
    > class(extest[1])
    [1] "list"

    Leave a comment:


  • dpryan
    replied
    You might have to change extest to a list itself, since I'm not sure how/if coercion works in this scenario.

    Leave a comment:


  • elizabeth000
    replied
    I find that extest[1] is a list:

    > class(extest[1])
    [1] "list"

    whereas it should be:

    > class(extest)
    [1] "DGEExact"
    attr(,"package")
    [1] "edgeR"

    So I need to find out how to store the DGEExact objects somewhere while creating them in the loop. There must be a way to do this????

    Leave a comment:


  • elizabeth000
    replied
    Thank you for your fast reply. Yes, this was completely wrong, and I fixed a few problems. Here is the complete loop:

    Code:
    extest = c()
    k = 1
    for(i in 1:nlevels(data$samples$group)) {
       print(c(i,"i"))
       for(j in (i+1):nlevels(data$samples$group)) {
          if (i < nlevels(data$samples$group)) {
             extest[k] = exactTest(data, pair=c(i,j))
             k = k+1
          }
       }
    }
    This is improved because it tests each pair only once, and I prevented extest from being overwritten. But... extest[k] is not structured as expected... for example, I cannot view head(extest[1]), the whole list prints to screen. And:

    > extest[1]$comparison
    NULL

    How can this strange behavior be explained? Is there any way to store DGEExact objects in a list or other R class?

    Leave a comment:


  • dpryan
    replied
    You need to create "extext" beforehand, that's why it's complaining that it can't be found. Just add this above your while loop:
    Code:
    extest = c()
    Of course, you'll have to deal with extest after the while loop or it'll get over-written.

    Leave a comment:


  • elizabeth000
    started a topic Working with DGEExact objects in a loop

    Working with DGEExact objects in a loop

    Objects of class DGEExact are the result of the exactTest() function in edgeR. I'm having trouble making loops to assign DGEExact objects to a variable. I'm probably making some very basic mistake in handling R data types...?

    > nlevels(data$samples$group)
    [1] 8

    Code:
    for(i in 1:nlevels(data$samples$group)) {
       index = 1
       while(index < nlevels(data$samples$group)) {
          extest[i] = exactTest(data, pair=c(i,1+index),)
          index = index + 1
       }
    }
    Error in extest[i] = exactTest(data, pair = c(i, 1 + index), ) :
    object 'extest' not found

    Sorry for the basic question, I hope it is easy to answer!

Latest Articles

Collapse

  • seqadmin
    Advanced Tools Transforming the Field of Cytogenomics
    by seqadmin


    At the intersection of cytogenetics and genomics lies the exciting field of cytogenomics. It focuses on studying chromosomes at a molecular scale, involving techniques that analyze either the whole genome or particular DNA sequences to examine variations in structure and behavior at the chromosomal or subchromosomal level. By integrating cytogenetic techniques with genomic analysis, researchers can effectively investigate chromosomal abnormalities related to diseases, particularly...
    Yesterday, 06:26 AM
  • seqadmin
    How RNA-Seq is Transforming Cancer Studies
    by seqadmin



    Cancer research has been transformed through numerous molecular techniques, with RNA sequencing (RNA-seq) playing a crucial role in understanding the complexity of the disease. Maša Ivin, Ph.D., Scientific Writer at Lexogen, and Yvonne Goepel Ph.D., Product Manager at Lexogen, remarked that “The high-throughput nature of RNA-seq allows for rapid profiling and deep exploration of the transcriptome.” They emphasized its indispensable role in cancer research, aiding in biomarker...
    09-07-2023, 11:15 PM
  • seqadmin
    Methods for Investigating the Transcriptome
    by seqadmin




    Ribonucleic acid (RNA) represents a range of diverse molecules that play a crucial role in many cellular processes. From serving as a protein template to regulating genes, the complex processes involving RNA make it a focal point of study for many scientists. This article will spotlight various methods scientists have developed to investigate different RNA subtypes and the broader transcriptome.

    Whole Transcriptome RNA-seq
    Whole transcriptome sequencing...
    08-31-2023, 11:07 AM

ad_right_rmr

Collapse

News

Collapse

Topics Statistics Last Post
Started by seqadmin, Yesterday, 07:53 AM
0 responses
8 views
0 likes
Last Post seqadmin  
Started by seqadmin, 09-25-2023, 07:42 AM
0 responses
14 views
0 likes
Last Post seqadmin  
Started by seqadmin, 09-22-2023, 09:05 AM
0 responses
43 views
0 likes
Last Post seqadmin  
Started by seqadmin, 09-21-2023, 06:18 AM
0 responses
44 views
0 likes
Last Post seqadmin  
Working...
X