[R] Calculating all possible ratios

Rui Barradas ruipbarradas at sapo.pt
Sun May 13 00:20:50 CEST 2012


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: ml-node+s789695n4629513h64 at .nabble
> To: genome1976@
> 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
> 


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



More information about the R-help mailing list