[R] Calculating all possible ratios
Rui Barradas
ruipbarradas at sapo.pt
Fri Oct 5 12:28:41 CEST 2012
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+s789695n4629656h97 at n4.nabble.com
> To: genome1976 at 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 at 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.
More information about the R-help
mailing list