Hello,

Comment out the second apply and all following instructions using 'r2'. In the end return 'r1', not cbind.

Hope this helps,

Rui Barradas
Em 04-10-2012 23:38, genome1976 escreveu:
Hi Rui,
A while ago you helped me with calculaing all possible ratios from a dataset. This is the code I am using as suggested by you. data <- read.table("new_data.txt", header=T, row.names=1, sep="\t")
pairwise.ratios <- function(x, prefix="probeset", char=":"){
         n <- ncol(x)
         cn <- colnames(x)
         if(length(cn) == 0){
                 cn <- gsub(" ", "0", formatC(seq.int(n), width=nchar(n)))
                 cn <- paste(prefix, cn, sep="")
         }
         cmb <- combn(n, 2)
         r1 <- apply(cmb, 2, function(j) x[, j[1]]/x[, j[2]])
         r2 <- apply(cmb, 2, function(j) x[, j[2]]/x[, j[1]])
         colnames(r1) <- apply(cmb, 2, function(j) paste(cn[j], collapse=char))
         colnames(r2) <- apply(cmb, 2, function(j) paste(cn[rev(j)], 
collapse=char))
         cbind(r1, r2)[, order(c(colnames(r1), colnames(r2)))]
}
results <- pairwise.ratios(data.t)
write.table(t(results), "ratios_results.txt", sep="\t")
It works perfectly fine only that it gives both pairs of ratios a:b and b:a for any two variables a and b.
Can you suggest me a way so that I get only one ratio and not both (Combination 
with caring for the order and not Permutation??)
Thanks for any help. Best Regards,
Som.



Date: Sat, 12 May 2012 15:20:52 -0700
From: ml-node+s789695n4629656...@n4.nabble.com
To: genome1...@hotmail.com
Subject: RE: Calculating all possible ratios

Hello,

Nothing wrong with me, maybe your R session has some conflicting objects.
Running the function in the previous post on the first 4 rows and first 6 columns 
of your dataset the result was (copy&paste to your session)

result <- structure(c(8.74714923153198, 1.83094400392095, 9.92065138471113,
1.77145415014708, 1.01515180575001, 0.167175438316099, 0.222321656865252,
0.155576771874649, 3.09417748158541, 0.469647988505747, 1.29398633565582,
0.524043736521509, 3.75969597954255, 0.422694576901317, 9.75471698113208,
0.290397651827521, 4.9035575319622, 1.00105273231888, 1.01093964697178,
0.26895145631068, 0.114322960947685, 0.546166347992352, 0.100799832714726,
0.564507977763338, 0.11605516024473, 0.0913055986191245, 0.0224099858208782,
0.0878243288779063, 0.353735531392494, 0.256505926724138, 0.130433606169248,
0.295826869963301, 0.42981957664441, 0.230861553382365, 0.983273839877614,
0.163931791180376, 0.56058921623124, 0.546741314958369, 0.10190254729944,
0.151825242718447, 0.9850743448771, 5.98173996175908, 4.49798734905118,
6.4276947512815, 8.61659229879359, 10.9522309159971, 44.6229644227777,
11.3863665430362, 3.04799485560622, 2.8093121408046, 5.82033416762497,
3.36839317468124, 3.70358005398494, 2.52844904226946, 43.8765935747068,
1.86658746243623, 4.83036872336483, 5.98803713273998, 4.54719374273333,
1.72873786407767, 0.323187666496628, 2.12925430210325, 0.772805687699305,
1.90823767237023, 2.82697074863659, 3.89854539725884, 7.66673581578674,
3.38035554418724, 0.328084543240185, 0.35595902124055, 0.1718114409242,
0.296877457036954, 1.21508737036511, 0.900024246342843, 7.53850076491586,
0.554147739185128, 1.58476931628683, 2.13149583692219, 0.781259909100518,
0.513223300970874, 0.265978952936953, 2.36577437858509, 0.102514506769826,
3.44355401535389, 2.32655759378615, 4.33160041310018, 1.01701068353905,
6.10009805175427, 0.270009014365446, 0.395499368696959, 0.0227911949977918,
0.535737017484743, 0.822986086753186, 1.11108117816092, 0.132652370966651,
1.8045729131197, 1.30424309801742, 2.36826490573261, 0.103635979283374,
0.926148867313916, 0.203933571388086, 0.998948374760994, 0.989178733859585,
3.71814309436142, 1.78383738225087, 1.82901853699522, 9.81329737579089,
6.58652001534723, 0.207023533247665, 0.166999632405824, 0.219915855047535,
0.578456699988768, 0.631006664328306, 0.469154094827586, 1.27998376513563,
1.9484696000908, 0.76672822844154, 0.422250060615857, 9.64915859255482,
1.07974002376127), .Dim = c(4L, 30L), .Dimnames = list(c("S1",
"S2", "S3", "S4"), c("P1:P2", "P1:P3", "P1:P4", "P1:P5", "P1:P6",
"P2:P1", "P2:P3", "P2:P4", "P2:P5", "P2:P6", "P3:P1", "P3:P2",
"P3:P4", "P3:P5", "P3:P6", "P4:P1", "P4:P2", "P4:P3", "P4:P5",
"P4:P6", "P5:P1", "P5:P2", "P5:P3", "P5:P4", "P5:P6", "P6:P1",
"P6:P2", "P6:P3", "P6:P4", "P6:P5")))

Rui Barradas




genome1976 wrote
Hi Rui,
Thanks once again. I really appreciate it.
I tried using the code with the following dataset:




Sample
   P1
   P2
   P3
   P4
   P5
   P6
   P7
   P8
   P9
   P10
S1
   5292.9
   605.1
   5213.9
   1710.6
   1407.8
   1079.4
   1379.6
   9321.4
   6951
   1205.8
S2
   104.6
   57.129
   625.69
   222.72
   247.46
   104.49
   330.29
   1863.7
   389.67
   216.29
S3
   191.29
   19.282
   860.42
   147.83
   19.61
   189.22
   203.27
   1799
   369.9
   175.73
S4
   41.553
   23.457
   267.09
   79.293
   143.09
   154.5
   52.567
   613.54
   408.86
   61.715
S5
   671.33
   19.076
   1040.9
   319.04
   50.766
   57.445
   50.005
   1615.5
   1149.1
   163.99
S6
   125.9
   22.296
   563.83
   236.36
   112.38
   81.581
   48.406
   2073.6
   388.4
   62.575
S7
   78.485
   18.152
   248.18
   156.19
   322.4
   162.01
   38.379
   2786.8
   630.63
   71.163
S8
   1355.6
   51.534
   422.51
   134.89
   202.34
   48.368
   69.45
   231.11
   1875.9
   153.18
S9
   2167.6
   45.244
   430.73
   262.19
   365.71
   116.49
   65.663
   151.04
   3071.5
   210.55
S10
   575.7
   24.699
   170.09
   128.64
   42.58
   31.034
   55.256
   294.67
   448.05
   226.19
S11
   234.22
   22.594
   944.54
   118.91
   16.994
   102.67
   199.32
   2300
   192.38
   108.3
S12
   193.38
   25.374
   829.88
   74.872
   108.1
   116.49
   175.49
   1248
   340.33
   65.022
S13
   60.43
   15.907
   947.23
   49.12
   62.992
   189.11
   27.348
   134.46
   209.66
   67.638
S14
   94.563
   23.304
   303.25
   36.745
   220.11
   128.72
   33.242
   135.6
   263.31
   107.4
S15
   44.379
   17.794
   768
   26.144
   49.329
   103
   26.782
   290.04
   151.63
   66.928
S16
   42.333
   14.671
   224.49
   19.642
   100.96
   82.624
   42.736
   94.781
   182.99
   68.087
S17
   528.59
   49.81
   685.29
   24.981
   106.7
   72.219
   114.44
   610.74
   1779.9
   245.57
When I run the code, this is what I get :

      probeset1:probeset2 probeset1:probeset3 probeset1:probeset4
[1,]           0.2000000           0.1111111          0.07692308
[2,]           0.3333333           0.2000000          0.14285714
[3,]           0.4285714           0.2727273          0.20000000
[4,]           0.5000000           0.3333333          0.25000000
      probeset1:probeset5 probeset1:probeset6 probeset2:probeset1
[1,]          0.05882353          0.04761905            5.000000
[2,]          0.11111111          0.09090909            3.000000
[3,]          0.15789474          0.13043478            2.333333
[4,]          0.20000000          0.16666667            2.000000
      probeset2:probeset3 probeset2:probeset4 probeset2:probeset5
[1,]           0.5555556           0.3846154           0.2941176
[2,]           0.6000000           0.4285714           0.3333333
[3,]           0.6363636           0.4666667           0.3684211
[4,]           0.6666667           0.5000000           0.4000000
      probeset2:probeset6 probeset3:probeset1 probeset3:probeset2
[1,]           0.2380952            9.000000            1.800000
[2,]           0.2727273            5.000000            1.666667
[3,]           0.3043478            3.666667            1.571429
[4,]           0.3333333            3.000000            1.500000
      probeset3:probeset4 probeset3:probeset5 probeset3:probeset6
[1,]           0.6923077           0.5294118           0.4285714
[2,]           0.7142857           0.5555556           0.4545455
[3,]           0.7333333           0.5789474           0.4782609
[4,]           0.7500000           0.6000000           0.5000000
      probeset4:probeset1 probeset4:probeset2 probeset4:probeset3
[1,]                  13            2.600000            1.444444
[2,]                   7            2.333333            1.400000
[3,]                   5            2.142857            1.363636
[4,]                   4            2.000000            1.333333
      probeset4:probeset5 probeset4:probeset6 probeset5:probeset1
[1,]           0.7647059           0.6190476           17.000000
[2,]           0.7777778           0.6363636            9.000000
[3,]           0.7894737           0.6521739            6.333333
[4,]           0.8000000           0.6666667            5.000000
      probeset5:probeset2 probeset5:probeset3 probeset5:probeset4
[1,]            3.400000            1.888889            1.307692
[2,]            3.000000            1.800000            1.285714
[3,]            2.714286            1.727273            1.266667
[4,]            2.500000            1.666667            1.250000
      probeset5:probeset6 probeset6:probeset1 probeset6:probeset2
[1,]           0.8095238           21.000000            4.200000
[2,]           0.8181818           11.000000            3.666667
[3,]           0.8260870            7.666667            3.285714
[4,]           0.8333333            6.000000            3.000000
      probeset6:probeset3 probeset6:probeset4 probeset6:probeset5
[1,]            2.333333            1.615385            1.235294
[2,]            2.200000            1.571429            1.222222
[3,]            2.090909            1.533333            1.210526
[4,]            2.000000            1.500000            1.200000


As you can see P1:P2 is not 0.2000000 as indicated by the results of the code.

Am I doing something wrong?

Thanks once again.
Som.

Date: Sat, 12 May 2012 14:04:11 -0700
From: [hidden email]
To: [hidden email]
Subject: RE: Calculating all possible ratios



         Hello,


I'm glad it helped. Now to make the result readable. (I had thought of it.)


pairwise.ratios <- function(x, prefix="probeset", char=":"){

         n <- ncol(x)

         cn <- colnames(x)

         if(length(cn) == 0){

                 cn <- gsub(" ", "0", formatC(seq.int(n), width=nchar(n)))

                 cn <- paste(prefix, cn, sep="")

         }

         cmb <- combn(n, 2)

         r1 <- apply(cmb, 2, function(j) x[, j[1]]/x[, j[2]])

         r2 <- apply(cmb, 2, function(j) x[, j[2]]/x[, j[1]])

         colnames(r1) <- apply(cmb, 2, function(j) paste(cn[j], collapse=char))

         colnames(r2) <- apply(cmb, 2, function(j) paste(cn[rev(j)], 
collapse=char))

         cbind(r1, r2)[, order(c(colnames(r1), colnames(r2)))]

}


m1 <- matrix(1:24, ncol=6)

pairwise.ratios(m1)


Rui Barradas


genome1976 wrote
Thanks so much Rui. I really appreciate all the help.


I implemented the code and it ran fine. I was wondering how I could include the 
probeset ids as probeset1:probeset2 in the final output so that I know which 
ratios are for which probeset pairs.



Thanks so much.

Som.

Date: Sat, 12 May 2012 09:29:54 -0700

From: [hidden email]
To: [hidden email]
Subject: Re: Calculating all possible ratios




         Hello,



If by all possible gene ratios you mean all pairwise column ratios, try


the following.



# Make up some data


x <- matrix(1:24, ncol=6)



cmb <- combn(ncol(x), 2)


r1 <- apply(cmb, 2, function(j) x[, j[1]]/x[, j[2]])


r2 <- apply(cmb, 2, function(j) x[, j[2]]/x[, j[1]])


cbind(r1, r2)



Note that the dataset must be a numeric only matrix or data.frame.



Hope this helps,



Rui Barradas



Em 12-05-2012 11:00, [hidden email] escreveu:


Date: Fri, 11 May 2012 12:39:23 -0700 (PDT)

From: genome1976<[hidden email]>

To:[hidden email]

Subject: [R] Calculating all possible ratios

Message-ID:<[hidden email]>

Content-Type: text/plain


I have a data matrix with  genes as columns and samples as rows. I want to

create all possible gene ratios.Is there an elegant and fast way to do it in

R and write it to a dataframe?


Thanks for any help.

Som.


--

View this message in 
context:http://r.789695.n4.nabble.com/Calculating-all-possible-ratios-tp4627405.html
Sent from the R help mailing list archive at Nabble.com.

[[alternative HTML version deleted]]


______________________________________________


[hidden email] mailing list


https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.





                 If you reply to this email, your message will be added to the 
discussion below:

                 
http://r.789695.n4.nabble.com/Calculating-all-possible-ratios-tp4627405p4629105.html
                 To unsubscribe from Calculating all possible ratios, click 
here.


                 NAML



If you reply to this email, your message will be added to the discussion below:
                 
http://r.789695.n4.nabble.com/Calculating-all-possible-ratios-tp4627405p4629513.html
To unsubscribe from Calculating all possible ratios, click here.

                 NAML





If you reply to this email, your message will be added to the discussion 
below:http://r.789695.n4.nabble.com/Calculating-all-possible-ratios-tp4627405p4629656.html
To unsubscribe from Calculating all possible ratios, click here.
NAML                                    



--
View this message in context: 
http://r.789695.n4.nabble.com/Calculating-all-possible-ratios-tp4627405p4645098.html
Sent from the R help mailing list archive at Nabble.com.
        [[alternative HTML version deleted]]

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to