ahmohamed / lipidr

Data Mining and Analysis of Lipidomics datasets in R
https://www.lipidr.org/
Other
27 stars 13 forks source link

PCA loading plot #40

Closed rosanmar closed 1 year ago

rosanmar commented 1 year ago

Hi, I would like to know if it is possible to obtain the loading plot in the PCA analysis. I can only get the Score plot. It would help me a lot to have a more accurate view of the data. Thanks!

ahmohamed commented 1 year ago

You can easily access rotation scores and feature loadings in the mvaresults object that you get out of mva

mvaresults <- mva(data_normalized, measure = "Area", method = "PCA")
head(mvaresults$loadings)
#>            p1            p2          p3            p4          p5         p6
#> 1 -0.04486626 -0.0233747391 -0.02287171 -0.0001824736 -0.11510403 0.10940792
#> 2 -0.06824449 -0.0041885108 -0.10580046 -0.0271234534 -0.05546431 0.04938349
#> 3 -0.05685793  0.0005886418 -0.08676486 -0.0105830023 -0.05827554 0.09475925
#> 4 -0.07189545  0.0122874373 -0.08121652 -0.0047797565 -0.07815611 0.08942695
#> 5 -0.05769839  0.0191061415 -0.06930820  0.0074809106 -0.12747176 0.06469317
#> 6 -0.06703077 -0.0172104696 -0.08123090 -0.0222336836 -0.02194360 0.14513379
#>             p7           p8           p9         p10          p11        p12
#> 1  0.041422864 -0.123401876  0.062488158 -0.07354506 -0.072472752 0.06127880
#> 2 -0.002641356  0.024756163 -0.027674854  0.03606265 -0.008551648 0.10877558
#> 3 -0.002939514 -0.024244310  0.022280400  0.02903706 -0.028059333 0.04165076
#> 4  0.004178734  0.010924320 -0.020351285  0.04147909 -0.002295194 0.06791264
#> 5  0.042523774 -0.009729941 -0.017658042  0.07323154 -0.080672000 0.04562555
#> 6  0.051002617 -0.032604989  0.001773531  0.01593442 -0.005125500 0.01516734
#>            p13         p14          p15          p16          p17         p18
#> 1 -0.101870593  0.09815173  0.141787153  0.034732585  0.059012853  0.03850636
#> 2  0.001371712  0.02484810  0.065049476  0.028121947 -0.015897704 -0.00527741
#> 3 -0.066706070 -0.04278449 -0.092226897  0.054104472 -0.154535843  0.05144231
#> 4 -0.043459893  0.01568352 -0.001005736  0.008276927 -0.004047336 -0.02446107
#> 5 -0.029622134  0.02087661  0.047224964 -0.126033033  0.025858293 -0.11239465
#> 6  0.056604628 -0.02346504 -0.058938814  0.031138657 -0.044391858 -0.04313277
#>           p19          p20           p21          p22          p23          p24
#> 1  0.08735057 -0.023171998  0.1327614587  0.143515538  0.017939290  0.022034086
#> 2  0.11714317  0.002029921  0.0863722055 -0.013607537  0.007089923  0.013205412
#> 3 -0.07283001  0.091112524 -0.0849109083  0.143208236  0.009746848  0.012963286
#> 4  0.04687795 -0.012546376  0.0733380260 -0.031099794 -0.002185009  0.020077987
#> 5  0.05266569 -0.019254358  0.0936993506  0.051854809  0.044529168 -0.051850745
#> 6  0.01738002  0.034460499  0.0006764378  0.000419968 -0.008940267 -0.003577616
#>           p25          p26          p27           p28         p29           p30
#> 1 -0.08018621 -0.185873658  0.071979006 -0.1797587379 -0.01475394 -0.0898808441
#> 2  0.05753981  0.078977584 -0.001519507 -0.0001887463  0.03304144  0.0316588592
#> 3 -0.13430893 -0.120268941  0.065336383  0.0694995333 -0.04210952 -0.1065655993
#> 4 -0.01315190  0.029543886 -0.030397421  0.0164037116  0.02957865  0.0004006193
#> 5 -0.04443170  0.062118642 -0.111382037 -0.0002494434 -0.14720892 -0.1444244667
#> 6 -0.03688617 -0.008309826 -0.026150740 -0.0183052204  0.01578169 -0.0076053224
#>           p31          p32          p33         p34          p35         p36
#> 1  0.19680094 -0.073313211  0.143210303  0.11575151  0.079779108 -0.12212705
#> 2 -0.01716728  0.015515933 -0.006823624  0.01058728  0.067893446  0.00434836
#> 3  0.20716507  0.151799833 -0.048203747  0.02706126 -0.086087612 -0.02546880
#> 4  0.05332261 -0.002234615 -0.002740621  0.02195654  0.038125575  0.03832301
#> 5 -0.12189552 -0.111593044  0.100929223 -0.04682216  0.122059894 -0.11715653
#> 6  0.04013675 -0.013802894 -0.046485265  0.02199375 -0.008693271 -0.01381856
#>            p37           p38          p39           p40          p41
#> 1 -0.064761343  0.0464734042 -0.018826614 -0.1625078046  0.022150272
#> 2  0.020340294 -0.0086062917 -0.013022199  0.0227267812 -0.013628586
#> 3  0.089553876  0.2392170503  0.141294601  0.0507552024 -0.004970093
#> 4  0.026502505  0.0009704052 -0.005765791  0.0079784152 -0.002567018
#> 5  0.071363136 -0.0472534963 -0.196216872 -0.0006502088  0.093888513
#> 6  0.002937943 -0.0624690809 -0.014324027 -0.0249568821 -0.010661841
#>            p42         p43          p44         p45         p46         p47
#> 1  0.061575593  0.06371584  0.002368088  0.05398453 -0.04479277  0.07029665
#> 2 -0.040983679  0.04660136  0.031113107 -0.04166941  0.05449903  0.06638949
#> 3 -0.007192564 -0.13055651 -0.050809408  0.05753822 -0.10570869  0.09074203
#> 4  0.023666501 -0.10090235  0.145264101  0.01842521  0.04465017 -0.07046376
#> 5 -0.041274547  0.05219034 -0.113364519 -0.09273369 -0.01139080  0.06016911
#> 6 -0.097450820  0.12884173  0.042805271  0.03738526 -0.01062511 -0.01198347
#>            p48          p49          p50          p51         p52         p53
#> 1 -0.039157610 -0.018659476  0.025656832  0.015796183 -0.03123130  0.10398039
#> 2  0.076567358  0.100391995  0.030225296 -0.031444802  0.07215529  0.03700429
#> 3  0.140156318  0.146798496 -0.000348664  0.208762054  0.02683236  0.02217379
#> 4  0.009997167  0.031175316 -0.058012141 -0.081188864  0.03573016  0.06084736
#> 5  0.016585190 -0.007281378 -0.033409371 -0.003697608  0.07778175  0.08738922
#> 6 -0.078560315 -0.048563258 -0.058780513 -0.008313705  0.10416144 -0.03026025
#>            p54          p55           p56
#> 1 -0.022447268  0.029989331  1.677175e-08
#> 2 -0.102920138 -0.003963734  3.789119e-08
#> 3 -0.081605517 -0.052167020  1.099639e-08
#> 4  0.012820158 -0.013551350  3.090635e-08
#> 5  0.039494155  0.092428200  3.100631e-08
#> 6 -0.004072756  0.037759084 -2.787232e-08
head(mvaresults$scores)
#>             p1         p2       p3         p4         p5        p6         p7
#> S1A  -3.389052  -9.783666 2.170264 -0.1381608  0.3898506 -7.547779  1.7744696
#> S2A  -8.617481  -9.519327 2.155308 -2.1006989  0.1635756 -5.458006  0.2970577
#> S3A  -8.093241  -6.082544 3.648055 -1.3647316  1.9769127  2.200922 -4.3734197
#> S4A -11.230227 -11.793822 2.828469  1.2301022 -1.9791670  2.846245  4.1847916
#> S5A -11.046872 -10.568540 1.614010 -2.9355782  0.9754839 -2.248875  2.6948012
#> S6A -11.217205  -7.553303 4.539788  1.4530670 -2.2743519  5.027765  4.6714424
#>             p8        p9        p10        p11        p12        p13
#> S1A -0.5527409  1.609809 -1.0974229  1.7643018 -1.0622011  3.9603446
#> S2A -1.3562399  1.020424  1.1821638 -0.2822290 -0.8105609  0.5022525
#> S3A  0.4786930  7.505775 -3.0457816  1.8156550  2.9885354  0.5422828
#> S4A  2.6243623 -5.054472 -1.9918639 -0.4520386  1.4328927  1.3878084
#> S5A -0.3135096  1.551402 -0.3997732  1.1751316 -1.7143864 -4.3496838
#> S6A  5.6468546 -2.640643 -0.9740625 -2.5520324 -1.3991995  0.2086560
#>             p14         p15        p16         p17        p18        p19
#> S1A -0.98753330  0.18144563 -2.3919224  0.03335976 -0.0549729  2.9940190
#> S2A -2.57110796 -1.31631840 -0.5033193  0.57023702 -1.6670968  0.6620278
#> S3A  0.08387708 -1.03239241 -1.3562597 -0.41041365  4.7716781 -1.4251001
#> S4A -0.34734940  0.06740679 -2.2907055 -1.93567801  0.8966249 -1.3748868
#> S5A -0.38734848 -1.12376955  1.1327551  0.54339140 -0.9577151 -1.5715385
#> S6A -1.87416718 -1.52561389 -0.5245885 -0.92741859  0.4059875 -1.1882350
#>            p20        p21        p22        p23         p24         p25
#> S1A -0.9453414  1.8981966 -1.6873041  0.5985171 -1.15171465 -0.13250058
#> S2A -0.1947738 -1.2777145  0.1143270 -0.2617331 -0.82949445  0.06194476
#> S3A -1.3198005 -0.7707923 -1.0298894  0.2215337  0.53882718 -0.58213914
#> S4A -0.9966085 -1.4198805  0.7901539  0.2433820  1.42759416 -0.31621381
#> S5A  1.0288627 -0.6159911  0.7495257  0.2617134  0.48701917  1.13458096
#> S6A  0.1532440  2.1799007  0.1015316 -0.5883413  0.02968717 -0.03153017
#>             p26        p27         p28        p29         p30        p31
#> S1A -0.83531219  1.1782938  0.46563737  0.9595102  0.42808437 -0.4474506
#> S2A  1.45780695 -0.3339886 -0.67661162 -1.2998638  0.05393809 -0.2947462
#> S3A  1.17238389 -0.3722343  0.79027247  0.9882649  0.15908415  0.3004675
#> S4A -0.02359825  0.1263715 -1.59178275 -0.8888971  1.19893748 -0.9644964
#> S5A  0.55233896  0.3443943 -0.01768317 -0.7205369  0.60387511 -0.5576576
#> S6A  0.13671744  0.6636323  1.23199624  0.7048083 -1.93376292 -0.7303524
#>            p32        p33        p34        p35         p36         p37
#> S1A -0.5154476 -0.8254394 -0.1644401  1.0272981  0.48768823  0.06574612
#> S2A  0.3443014  1.1049848  0.8609025 -0.6980224 -0.75710563  0.05084846
#> S3A  0.7301498  0.7323349 -0.4600249 -0.6966259  0.06456891  0.14305978
#> S4A -0.2872269 -0.2851235  0.7056463  0.1619820 -0.21096218 -0.68311746
#> S5A  0.5323703 -1.6969022 -0.1499577 -1.4140969  0.14364860 -0.40110845
#> S6A  0.6329406  0.8282167 -0.9095093  0.9184934 -0.36437165  0.35065205
#>            p38         p39         p40         p41         p42         p43
#> S1A  0.2705323  0.02425644  0.17021476  0.98507785  0.17433633 -0.13801865
#> S2A  1.0515692 -0.66412382 -0.64986922  0.01307083  0.29890552  0.14720659
#> S3A -0.5121970 -0.09959737 -0.02354705  0.43273435  0.07568789  0.01727799
#> S4A -0.5119569  0.18028081  0.14333264  0.34905603  0.55680782 -0.09145678
#> S5A -0.1503646 -0.36463465 -0.31910584  0.85898450 -1.12895306  0.11878245
#> S6A  0.7249559  0.06383262  0.03433319 -0.35261103 -0.64743849  0.35302887
#>            p44         p45        p46         p47         p48          p49
#> S1A -0.4285355 -0.14164237 -0.5056658 -0.36088144 -0.13365404 -0.072973728
#> S2A  1.2974050  0.63204517  0.2729308  0.18178705 -1.47856026  0.307450676
#> S3A  0.1129909 -0.06578999 -0.1101750  0.08656873 -0.23771047 -0.178336149
#> S4A -0.8569712 -0.21693871  0.4989003 -0.95013898  0.18870139  0.391694852
#> S5A -0.6176003 -0.53750168  0.2430985  0.69075635  0.24233823 -0.367584487
#> S6A  0.2210085  0.44719414 -0.3317279  0.95764767 -0.03981357  0.002108038
#>            p50          p51         p52        p53          p54         p55
#> S1A -0.5130158 -0.010960726  0.04925003  0.7524236  0.109834104  0.12430692
#> S2A -0.2225566 -0.220043048  0.19979093 -0.4599694 -0.284382492  0.06240105
#> S3A  0.3530716  0.003229078 -0.02687068 -0.2243258  0.109630101 -0.10789731
#> S4A -0.2258803 -0.327339574  0.09504706 -0.5460712 -0.115620791  0.09043329
#> S5A  0.0389916  0.261059074 -0.34763108  0.8268310  0.340989129  0.49375362
#> S6A  0.2948872 -0.033388944  0.10736295  0.1780890 -0.006969587 -0.18751794
#>               p56
#> S1A -1.406289e-07
#> S2A -1.406289e-07
#> S3A -1.406289e-07
#> S4A -1.406289e-07
#> S5A -1.406289e-07
#> S6A -1.406289e-07

Created on 2022-10-10 by the reprex package (v2.0.1)

rosanmar commented 1 year ago

Thank you !!!, but is it possible to obtain the PCA loading plots (the visualization), as is done with OPLS or OPLS-DA (plot_mva_loadings(mvaresults, color_by="Class", top.n=10))?

ahmohamed commented 1 year ago

Sorry I didn't realise you're after plotting them. For now, you can use lipidr internal functions to help you do that. I'll consider adding support in the near future.

library(ggplot2)
#> Warning: package 'ggplot2' was built under R version 4.1.1
mvaresults <- mva(data_normalized, measure = "Area", method = "PCA")
m = lipidr:::.get_loading_matrix(mvaresults, components = c(1,2), color_by = "Class")
ggplot(m[[1]], aes(p1, p2, color=Class)) + geom_point()

Created on 2022-10-11 by the reprex package (v2.0.1)

rosanmar commented 1 year ago

It works! :) thanks!