plotpfm has been removed in PWMEnrich?
1
0
Entering edit mode
@fabrice-tourre-4394
Last seen 9.6 years ago
Dear expert, I just want to plot PFM using PWMEnrich package. It seems seqlogo cannot do this. But I found in PWMEnrich2.6.2, plotpfm does not exist. How can I plotPFM using new PWMEnrich?
PWMEnrich PWMEnrich • 1.6k views
ADD COMMENT
0
Entering edit mode
@robert-stojnic-4721
Last seen 9.6 years ago
Dear Fabrice, You can plot the PFM in PWMEnrich by converting it to PWM: plot(PFMtoPWM(pfm_matrix)) Unfortunately the old function was deprecated. Sorry if it broke your code! Cheers, Robert On 07/12/13 04:41, Fabrice Tourre wrote: > Dear expert, > > I just want to plot PFM using PWMEnrich package. It seems seqlogo > cannot do this. But I found in PWMEnrich2.6.2, plotpfm does not exist. > How can I plotPFM using new PWMEnrich? > > _______________________________________________ > Bioconductor mailing list > Bioconductor at r-project.org > https://stat.ethz.ch/mailman/listinfo/bioconductor > Search the archives: http://news.gmane.org/gmane.science.biology.informatics.conductor >
ADD COMMENT
0
Entering edit mode
PWM always give me some negative value. This strange to me. PFMtoPWM(pfm) An object of class 'PWM' ID: Target name: Frequency matrix: $pfm [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] A 3289112 3286601 3324808 3295086 3297953 3371158 3350851 3380593 3406893 C 2770671 2771901 2749093 2791942 2791869 2756225 2779305 2780189 2727296 G 2836085 2853221 2826205 2830413 2845211 2809652 2778112 2742323 2542202 T 3286234 3270379 3281996 3264661 3247069 3245067 3273834 3278997 3505711 [,10] [,11] [,12] [,13] [,14] [,15] [,16] [,17] [,18] A 3293358 2178674 4352405 3227324 3461232 3446487 3259436 3276060 3271729 C 2663331 2932504 2139363 3052255 2674074 2550187 3005584 2805702 2844711 G 2467603 2413635 1644787 2028507 2906055 2827872 2948758 3050624 2971989 T 3757810 4657289 4045547 3874016 3140741 3357556 2968324 3049716 3093673 [,19] [,20] [,21] A 3297076 3293868 3334010 C 2853311 2824444 2768038 G 2891960 3017416 2974502 T 3139755 3046374 3105552 Position weight matrix (PWM): $pwm [,1] [,2] [,3] [,4] [,5] [,6] A 0.1110069 0.10990513 0.1265798 0.1136249 0.11487965 0.14655305 C -0.1364558 -0.13581544 -0.1477355 -0.1254222 -0.12545992 -0.14399751 G -0.1027904 -0.09409968 -0.1078251 -0.1056786 -0.09815553 -0.11629972 T 0.1097440 0.10276665 0.1078823 0.1002420 0.09244685 0.09155707 [,7] [,8] [,9] [,10] [,11] [,12] A 0.1378363 0.1505851 0.1617654 0.1128682 -0.4832408 0.5151216 C -0.1319670 -0.1315082 -0.1592199 -0.1934594 -0.0545581 -0.5095098 G -0.1325864 -0.1512927 -0.2606125 -0.3035809 -0.3354836 -0.8887903 T 0.1042900 0.1065634 0.2030159 0.3032009 0.6127992 0.4096436 [,13] [,14] [,15] [,16] [,17] [,18] A 0.083647231 0.18459445 0.1784354 0.09793116 0.105270587 0.10336206 C 0.003184313 -0.18765178 -0.2560881 -0.01904584 -0.118329389 -0.09840908 G -0.586272844 -0.06762917 -0.1069744 -0.04658375 0.002413189 -0.03526240 T 0.347138703 0.04441379 0.1407203 -0.03704261 0.001983716 0.02262953 [,19] [,20] [,21] A 0.11449595 0.1130915480 0.13056724 C -0.09405417 -0.1087242780 -0.13782742 G -0.07464358 -0.0133775737 -0.03404303 T 0.04396080 0.0004018867 0.02815854 With background nucleotide frequencies which also serve as pseudo- count: $prior.params A C G T 0.25 0.25 0.25 0.25 On Tue, Dec 10, 2013 at 7:29 AM, Robert Stojnic <rainmansr at="" gmail.com=""> wrote: > > Dear Fabrice, > > You can plot the PFM in PWMEnrich by converting it to PWM: > > plot(PFMtoPWM(pfm_matrix)) > > Unfortunately the old function was deprecated. Sorry if it broke your code! > > Cheers, Robert > > > On 07/12/13 04:41, Fabrice Tourre wrote: >> >> Dear expert, >> >> I just want to plot PFM using PWMEnrich package. It seems seqlogo >> cannot do this. But I found in PWMEnrich2.6.2, plotpfm does not exist. >> How can I plotPFM using new PWMEnrich? >> >> _______________________________________________ >> Bioconductor mailing list >> Bioconductor at r-project.org >> https://stat.ethz.ch/mailman/listinfo/bioconductor >> Search the archives: >> http://news.gmane.org/gmane.science.biology.informatics.conductor >> >
ADD REPLY
0
Entering edit mode
Hi Fabrice, The negative values are usual as the PWM matrix is defined as log2 probability_base / probability_background. So if the any of the probabilities is smaller than 0.25 in your input matrix, this will give a negative value. Maybe you wanted to get the heights of the individual letters in the logo? # convert the count matrix to probabilities p = t(t(pfm) / colSums(pfm)) # this is without the small-sample correction, for more information see https://en.wikipedia.org/wiki/Sequence_logo or the original paper h = - colSums(p * log2(p)) heights = t(t(p) * (2-h)) All the transpositions (calls to t()) are needed to make sure the matrix and vector operations are carried out along the correct dimensions. Cheers, Robert On 10/12/13 16:41, Fabrice Tourre wrote: > PWM always give me some negative value. This strange to me. > > PFMtoPWM(pfm) > An object of class 'PWM' > ID: > Target name: > Frequency matrix: > $pfm > [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] > A 3289112 3286601 3324808 3295086 3297953 3371158 3350851 3380593 3406893 > C 2770671 2771901 2749093 2791942 2791869 2756225 2779305 2780189 2727296 > G 2836085 2853221 2826205 2830413 2845211 2809652 2778112 2742323 2542202 > T 3286234 3270379 3281996 3264661 3247069 3245067 3273834 3278997 3505711 > [,10] [,11] [,12] [,13] [,14] [,15] [,16] [,17] [,18] > A 3293358 2178674 4352405 3227324 3461232 3446487 3259436 3276060 3271729 > C 2663331 2932504 2139363 3052255 2674074 2550187 3005584 2805702 2844711 > G 2467603 2413635 1644787 2028507 2906055 2827872 2948758 3050624 2971989 > T 3757810 4657289 4045547 3874016 3140741 3357556 2968324 3049716 3093673 > [,19] [,20] [,21] > A 3297076 3293868 3334010 > C 2853311 2824444 2768038 > G 2891960 3017416 2974502 > T 3139755 3046374 3105552 > Position weight matrix (PWM): > $pwm > [,1] [,2] [,3] [,4] [,5] [,6] > A 0.1110069 0.10990513 0.1265798 0.1136249 0.11487965 0.14655305 > C -0.1364558 -0.13581544 -0.1477355 -0.1254222 -0.12545992 -0.14399751 > G -0.1027904 -0.09409968 -0.1078251 -0.1056786 -0.09815553 -0.11629972 > T 0.1097440 0.10276665 0.1078823 0.1002420 0.09244685 0.09155707 > [,7] [,8] [,9] [,10] [,11] [,12] > A 0.1378363 0.1505851 0.1617654 0.1128682 -0.4832408 0.5151216 > C -0.1319670 -0.1315082 -0.1592199 -0.1934594 -0.0545581 -0.5095098 > G -0.1325864 -0.1512927 -0.2606125 -0.3035809 -0.3354836 -0.8887903 > T 0.1042900 0.1065634 0.2030159 0.3032009 0.6127992 0.4096436 > [,13] [,14] [,15] [,16] [,17] [,18] > A 0.083647231 0.18459445 0.1784354 0.09793116 0.105270587 0.10336206 > C 0.003184313 -0.18765178 -0.2560881 -0.01904584 -0.118329389 -0.09840908 > G -0.586272844 -0.06762917 -0.1069744 -0.04658375 0.002413189 -0.03526240 > T 0.347138703 0.04441379 0.1407203 -0.03704261 0.001983716 0.02262953 > [,19] [,20] [,21] > A 0.11449595 0.1130915480 0.13056724 > C -0.09405417 -0.1087242780 -0.13782742 > G -0.07464358 -0.0133775737 -0.03404303 > T 0.04396080 0.0004018867 0.02815854 > With background nucleotide frequencies which also serve as pseudo- count: > $prior.params > A C G T > 0.25 0.25 0.25 0.25 > > On Tue, Dec 10, 2013 at 7:29 AM, Robert Stojnic <rainmansr at="" gmail.com=""> wrote: >> Dear Fabrice, >> >> You can plot the PFM in PWMEnrich by converting it to PWM: >> >> plot(PFMtoPWM(pfm_matrix)) >> >> Unfortunately the old function was deprecated. Sorry if it broke your code! >> >> Cheers, Robert >> >> >> On 07/12/13 04:41, Fabrice Tourre wrote: >>> Dear expert, >>> >>> I just want to plot PFM using PWMEnrich package. It seems seqlogo >>> cannot do this. But I found in PWMEnrich2.6.2, plotpfm does not exist. >>> How can I plotPFM using new PWMEnrich? >>> >>> _______________________________________________ >>> Bioconductor mailing list >>> Bioconductor at r-project.org >>> https://stat.ethz.ch/mailman/listinfo/bioconductor >>> Search the archives: >>> http://news.gmane.org/gmane.science.biology.informatics.conductor >>>
ADD REPLY
0
Entering edit mode
Dear Robert, Thank you. When I have the heights matrixs, how can we get a weblogo plot? On Wed, Dec 11, 2013 at 5:44 AM, Robert Stojnic <rainmansr at="" gmail.com=""> wrote: > > Hi Fabrice, > > The negative values are usual as the PWM matrix is defined as log2 > probability_base / probability_background. So if the any of the > probabilities is smaller than 0.25 in your input matrix, this will give a > negative value. Maybe you wanted to get the heights of the individual > letters in the logo? > > # convert the count matrix to probabilities > p = t(t(pfm) / colSums(pfm)) > > # this is without the small-sample correction, for more information see > https://en.wikipedia.org/wiki/Sequence_logo or the original paper > h = - colSums(p * log2(p)) > heights = t(t(p) * (2-h)) > > All the transpositions (calls to t()) are needed to make sure the matrix and > vector operations are carried out along the correct dimensions. > > Cheers, Robert > > > On 10/12/13 16:41, Fabrice Tourre wrote: >> >> PWM always give me some negative value. This strange to me. >> >> PFMtoPWM(pfm) >> An object of class 'PWM' >> ID: >> Target name: >> Frequency matrix: >> $pfm >> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] >> A 3289112 3286601 3324808 3295086 3297953 3371158 3350851 3380593 3406893 >> C 2770671 2771901 2749093 2791942 2791869 2756225 2779305 2780189 2727296 >> G 2836085 2853221 2826205 2830413 2845211 2809652 2778112 2742323 2542202 >> T 3286234 3270379 3281996 3264661 3247069 3245067 3273834 3278997 3505711 >> [,10] [,11] [,12] [,13] [,14] [,15] [,16] [,17] [,18] >> A 3293358 2178674 4352405 3227324 3461232 3446487 3259436 3276060 3271729 >> C 2663331 2932504 2139363 3052255 2674074 2550187 3005584 2805702 2844711 >> G 2467603 2413635 1644787 2028507 2906055 2827872 2948758 3050624 2971989 >> T 3757810 4657289 4045547 3874016 3140741 3357556 2968324 3049716 3093673 >> [,19] [,20] [,21] >> A 3297076 3293868 3334010 >> C 2853311 2824444 2768038 >> G 2891960 3017416 2974502 >> T 3139755 3046374 3105552 >> Position weight matrix (PWM): >> $pwm >> [,1] [,2] [,3] [,4] [,5] [,6] >> A 0.1110069 0.10990513 0.1265798 0.1136249 0.11487965 0.14655305 >> C -0.1364558 -0.13581544 -0.1477355 -0.1254222 -0.12545992 -0.14399751 >> G -0.1027904 -0.09409968 -0.1078251 -0.1056786 -0.09815553 -0.11629972 >> T 0.1097440 0.10276665 0.1078823 0.1002420 0.09244685 0.09155707 >> [,7] [,8] [,9] [,10] [,11] [,12] >> A 0.1378363 0.1505851 0.1617654 0.1128682 -0.4832408 0.5151216 >> C -0.1319670 -0.1315082 -0.1592199 -0.1934594 -0.0545581 -0.5095098 >> G -0.1325864 -0.1512927 -0.2606125 -0.3035809 -0.3354836 -0.8887903 >> T 0.1042900 0.1065634 0.2030159 0.3032009 0.6127992 0.4096436 >> [,13] [,14] [,15] [,16] [,17] >> [,18] >> A 0.083647231 0.18459445 0.1784354 0.09793116 0.105270587 0.10336206 >> C 0.003184313 -0.18765178 -0.2560881 -0.01904584 -0.118329389 -0.09840908 >> G -0.586272844 -0.06762917 -0.1069744 -0.04658375 0.002413189 -0.03526240 >> T 0.347138703 0.04441379 0.1407203 -0.03704261 0.001983716 0.02262953 >> [,19] [,20] [,21] >> A 0.11449595 0.1130915480 0.13056724 >> C -0.09405417 -0.1087242780 -0.13782742 >> G -0.07464358 -0.0133775737 -0.03404303 >> T 0.04396080 0.0004018867 0.02815854 >> With background nucleotide frequencies which also serve as pseudo- count: >> $prior.params >> A C G T >> 0.25 0.25 0.25 0.25 >> >> On Tue, Dec 10, 2013 at 7:29 AM, Robert Stojnic <rainmansr at="" gmail.com=""> >> wrote: >>> >>> Dear Fabrice, >>> >>> You can plot the PFM in PWMEnrich by converting it to PWM: >>> >>> plot(PFMtoPWM(pfm_matrix)) >>> >>> Unfortunately the old function was deprecated. Sorry if it broke your >>> code! >>> >>> Cheers, Robert >>> >>> >>> On 07/12/13 04:41, Fabrice Tourre wrote: >>>> >>>> Dear expert, >>>> >>>> I just want to plot PFM using PWMEnrich package. It seems seqlogo >>>> cannot do this. But I found in PWMEnrich2.6.2, plotpfm does not exist. >>>> How can I plotPFM using new PWMEnrich? >>>> >>>> _______________________________________________ >>>> Bioconductor mailing list >>>> Bioconductor at r-project.org >>>> https://stat.ethz.ch/mailman/listinfo/bioconductor >>>> Search the archives: >>>> http://news.gmane.org/gmane.science.biology.informatics.conductor >>>> >
ADD REPLY
0
Entering edit mode
pm <- PFMtoPWM(pfm) pm at pwm <- heights plot(pm) This plot is not good. Because we cannot control y-axis On Wed, Dec 11, 2013 at 3:44 PM, Fabrice Tourre <fabrice.ciup at="" gmail.com=""> wrote: > Dear Robert, > > Thank you. When I have the heights matrixs, how can we get a weblogo plot? > > On Wed, Dec 11, 2013 at 5:44 AM, Robert Stojnic <rainmansr at="" gmail.com=""> wrote: >> >> Hi Fabrice, >> >> The negative values are usual as the PWM matrix is defined as log2 >> probability_base / probability_background. So if the any of the >> probabilities is smaller than 0.25 in your input matrix, this will give a >> negative value. Maybe you wanted to get the heights of the individual >> letters in the logo? >> >> # convert the count matrix to probabilities >> p = t(t(pfm) / colSums(pfm)) >> >> # this is without the small-sample correction, for more information see >> https://en.wikipedia.org/wiki/Sequence_logo or the original paper >> h = - colSums(p * log2(p)) >> heights = t(t(p) * (2-h)) >> >> All the transpositions (calls to t()) are needed to make sure the matrix and >> vector operations are carried out along the correct dimensions. >> >> Cheers, Robert >> >> >> On 10/12/13 16:41, Fabrice Tourre wrote: >>> >>> PWM always give me some negative value. This strange to me. >>> >>> PFMtoPWM(pfm) >>> An object of class 'PWM' >>> ID: >>> Target name: >>> Frequency matrix: >>> $pfm >>> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] >>> A 3289112 3286601 3324808 3295086 3297953 3371158 3350851 3380593 3406893 >>> C 2770671 2771901 2749093 2791942 2791869 2756225 2779305 2780189 2727296 >>> G 2836085 2853221 2826205 2830413 2845211 2809652 2778112 2742323 2542202 >>> T 3286234 3270379 3281996 3264661 3247069 3245067 3273834 3278997 3505711 >>> [,10] [,11] [,12] [,13] [,14] [,15] [,16] [,17] [,18] >>> A 3293358 2178674 4352405 3227324 3461232 3446487 3259436 3276060 3271729 >>> C 2663331 2932504 2139363 3052255 2674074 2550187 3005584 2805702 2844711 >>> G 2467603 2413635 1644787 2028507 2906055 2827872 2948758 3050624 2971989 >>> T 3757810 4657289 4045547 3874016 3140741 3357556 2968324 3049716 3093673 >>> [,19] [,20] [,21] >>> A 3297076 3293868 3334010 >>> C 2853311 2824444 2768038 >>> G 2891960 3017416 2974502 >>> T 3139755 3046374 3105552 >>> Position weight matrix (PWM): >>> $pwm >>> [,1] [,2] [,3] [,4] [,5] [,6] >>> A 0.1110069 0.10990513 0.1265798 0.1136249 0.11487965 0.14655305 >>> C -0.1364558 -0.13581544 -0.1477355 -0.1254222 -0.12545992 -0.14399751 >>> G -0.1027904 -0.09409968 -0.1078251 -0.1056786 -0.09815553 -0.11629972 >>> T 0.1097440 0.10276665 0.1078823 0.1002420 0.09244685 0.09155707 >>> [,7] [,8] [,9] [,10] [,11] [,12] >>> A 0.1378363 0.1505851 0.1617654 0.1128682 -0.4832408 0.5151216 >>> C -0.1319670 -0.1315082 -0.1592199 -0.1934594 -0.0545581 -0.5095098 >>> G -0.1325864 -0.1512927 -0.2606125 -0.3035809 -0.3354836 -0.8887903 >>> T 0.1042900 0.1065634 0.2030159 0.3032009 0.6127992 0.4096436 >>> [,13] [,14] [,15] [,16] [,17] >>> [,18] >>> A 0.083647231 0.18459445 0.1784354 0.09793116 0.105270587 0.10336206 >>> C 0.003184313 -0.18765178 -0.2560881 -0.01904584 -0.118329389 -0.09840908 >>> G -0.586272844 -0.06762917 -0.1069744 -0.04658375 0.002413189 -0.03526240 >>> T 0.347138703 0.04441379 0.1407203 -0.03704261 0.001983716 0.02262953 >>> [,19] [,20] [,21] >>> A 0.11449595 0.1130915480 0.13056724 >>> C -0.09405417 -0.1087242780 -0.13782742 >>> G -0.07464358 -0.0133775737 -0.03404303 >>> T 0.04396080 0.0004018867 0.02815854 >>> With background nucleotide frequencies which also serve as pseudo- count: >>> $prior.params >>> A C G T >>> 0.25 0.25 0.25 0.25 >>> >>> On Tue, Dec 10, 2013 at 7:29 AM, Robert Stojnic <rainmansr at="" gmail.com=""> >>> wrote: >>>> >>>> Dear Fabrice, >>>> >>>> You can plot the PFM in PWMEnrich by converting it to PWM: >>>> >>>> plot(PFMtoPWM(pfm_matrix)) >>>> >>>> Unfortunately the old function was deprecated. Sorry if it broke your >>>> code! >>>> >>>> Cheers, Robert >>>> >>>> >>>> On 07/12/13 04:41, Fabrice Tourre wrote: >>>>> >>>>> Dear expert, >>>>> >>>>> I just want to plot PFM using PWMEnrich package. It seems seqlogo >>>>> cannot do this. But I found in PWMEnrich2.6.2, plotpfm does not exist. >>>>> How can I plotPFM using new PWMEnrich? >>>>> >>>>> _______________________________________________ >>>>> Bioconductor mailing list >>>>> Bioconductor at r-project.org >>>>> https://stat.ethz.ch/mailman/listinfo/bioconductor >>>>> Search the archives: >>>>> http://news.gmane.org/gmane.science.biology.informatics.conductor >>>>> >>
ADD REPLY
0
Entering edit mode
Dear Fabrice, pm <- PFMtoPWM(pfm) plot(pm) will plot the logo with correct heights (it will use the calculation I've described below). More advanced options such as changing units (i.e. from bits to e.g. nats) are not supported. If you want to create a custom plot you will have to do it from scratch. Look at the seqLogo package source, or a similar function PWMEnrich:::seqLogoGrid in PWMEnrich. Cheers, Robert On 11/12/13 21:01, Fabrice Tourre wrote: > pm <- PFMtoPWM(pfm) > pm at pwm <- heights > plot(pm) > > > This plot is not good. Because we cannot control y-axis > > On Wed, Dec 11, 2013 at 3:44 PM, Fabrice Tourre <fabrice.ciup at="" gmail.com=""> wrote: >> Dear Robert, >> >> Thank you. When I have the heights matrixs, how can we get a weblogo plot? >> >> On Wed, Dec 11, 2013 at 5:44 AM, Robert Stojnic <rainmansr at="" gmail.com=""> wrote: >>> Hi Fabrice, >>> >>> The negative values are usual as the PWM matrix is defined as log2 >>> probability_base / probability_background. So if the any of the >>> probabilities is smaller than 0.25 in your input matrix, this will give a >>> negative value. Maybe you wanted to get the heights of the individual >>> letters in the logo? >>> >>> # convert the count matrix to probabilities >>> p = t(t(pfm) / colSums(pfm)) >>> >>> # this is without the small-sample correction, for more information see >>> https://en.wikipedia.org/wiki/Sequence_logo or the original paper >>> h = - colSums(p * log2(p)) >>> heights = t(t(p) * (2-h)) >>> >>> All the transpositions (calls to t()) are needed to make sure the matrix and >>> vector operations are carried out along the correct dimensions. >>> >>> Cheers, Robert >>> >>> >>> On 10/12/13 16:41, Fabrice Tourre wrote: >>>> PWM always give me some negative value. This strange to me. >>>> >>>> PFMtoPWM(pfm) >>>> An object of class 'PWM' >>>> ID: >>>> Target name: >>>> Frequency matrix: >>>> $pfm >>>> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] >>>> A 3289112 3286601 3324808 3295086 3297953 3371158 3350851 3380593 3406893 >>>> C 2770671 2771901 2749093 2791942 2791869 2756225 2779305 2780189 2727296 >>>> G 2836085 2853221 2826205 2830413 2845211 2809652 2778112 2742323 2542202 >>>> T 3286234 3270379 3281996 3264661 3247069 3245067 3273834 3278997 3505711 >>>> [,10] [,11] [,12] [,13] [,14] [,15] [,16] [,17] [,18] >>>> A 3293358 2178674 4352405 3227324 3461232 3446487 3259436 3276060 3271729 >>>> C 2663331 2932504 2139363 3052255 2674074 2550187 3005584 2805702 2844711 >>>> G 2467603 2413635 1644787 2028507 2906055 2827872 2948758 3050624 2971989 >>>> T 3757810 4657289 4045547 3874016 3140741 3357556 2968324 3049716 3093673 >>>> [,19] [,20] [,21] >>>> A 3297076 3293868 3334010 >>>> C 2853311 2824444 2768038 >>>> G 2891960 3017416 2974502 >>>> T 3139755 3046374 3105552 >>>> Position weight matrix (PWM): >>>> $pwm >>>> [,1] [,2] [,3] [,4] [,5] [,6] >>>> A 0.1110069 0.10990513 0.1265798 0.1136249 0.11487965 0.14655305 >>>> C -0.1364558 -0.13581544 -0.1477355 -0.1254222 -0.12545992 -0.14399751 >>>> G -0.1027904 -0.09409968 -0.1078251 -0.1056786 -0.09815553 -0.11629972 >>>> T 0.1097440 0.10276665 0.1078823 0.1002420 0.09244685 0.09155707 >>>> [,7] [,8] [,9] [,10] [,11] [,12] >>>> A 0.1378363 0.1505851 0.1617654 0.1128682 -0.4832408 0.5151216 >>>> C -0.1319670 -0.1315082 -0.1592199 -0.1934594 -0.0545581 -0.5095098 >>>> G -0.1325864 -0.1512927 -0.2606125 -0.3035809 -0.3354836 -0.8887903 >>>> T 0.1042900 0.1065634 0.2030159 0.3032009 0.6127992 0.4096436 >>>> [,13] [,14] [,15] [,16] [,17] >>>> [,18] >>>> A 0.083647231 0.18459445 0.1784354 0.09793116 0.105270587 0.10336206 >>>> C 0.003184313 -0.18765178 -0.2560881 -0.01904584 -0.118329389 -0.09840908 >>>> G -0.586272844 -0.06762917 -0.1069744 -0.04658375 0.002413189 -0.03526240 >>>> T 0.347138703 0.04441379 0.1407203 -0.03704261 0.001983716 0.02262953 >>>> [,19] [,20] [,21] >>>> A 0.11449595 0.1130915480 0.13056724 >>>> C -0.09405417 -0.1087242780 -0.13782742 >>>> G -0.07464358 -0.0133775737 -0.03404303 >>>> T 0.04396080 0.0004018867 0.02815854 >>>> With background nucleotide frequencies which also serve as pseudo-count: >>>> $prior.params >>>> A C G T >>>> 0.25 0.25 0.25 0.25 >>>> >>>> On Tue, Dec 10, 2013 at 7:29 AM, Robert Stojnic <rainmansr at="" gmail.com=""> >>>> wrote: >>>>> Dear Fabrice, >>>>> >>>>> You can plot the PFM in PWMEnrich by converting it to PWM: >>>>> >>>>> plot(PFMtoPWM(pfm_matrix)) >>>>> >>>>> Unfortunately the old function was deprecated. Sorry if it broke your >>>>> code! >>>>> >>>>> Cheers, Robert >>>>> >>>>> >>>>> On 07/12/13 04:41, Fabrice Tourre wrote: >>>>>> Dear expert, >>>>>> >>>>>> I just want to plot PFM using PWMEnrich package. It seems seqlogo >>>>>> cannot do this. But I found in PWMEnrich2.6.2, plotpfm does not exist. >>>>>> How can I plotPFM using new PWMEnrich? >>>>>> >>>>>> _______________________________________________ >>>>>> Bioconductor mailing list >>>>>> Bioconductor at r-project.org >>>>>> https://stat.ethz.ch/mailman/listinfo/bioconductor >>>>>> Search the archives: >>>>>> http://news.gmane.org/gmane.science.biology.informatics.conductor >>>>>>
ADD REPLY
0
Entering edit mode
Thank you. The plot is not very good. I have attached it. On Wed, Dec 11, 2013 at 5:22 PM, Robert Stojnic <rainmansr at="" gmail.com=""> wrote: > > Dear Fabrice, > > pm <- PFMtoPWM(pfm) > plot(pm) > > will plot the logo with correct heights (it will use the calculation I've > described below). More advanced options such as changing units (i.e. from > bits to e.g. nats) are not supported. If you want to create a custom plot > you will have to do it from scratch. Look at the seqLogo package source, or > a similar function PWMEnrich:::seqLogoGrid in PWMEnrich. > > Cheers, Robert > > > On 11/12/13 21:01, Fabrice Tourre wrote: >> >> pm <- PFMtoPWM(pfm) >> pm at pwm <- heights >> plot(pm) >> >> >> This plot is not good. Because we cannot control y-axis >> >> On Wed, Dec 11, 2013 at 3:44 PM, Fabrice Tourre <fabrice.ciup at="" gmail.com=""> >> wrote: >>> >>> Dear Robert, >>> >>> Thank you. When I have the heights matrixs, how can we get a weblogo >>> plot? >>> >>> On Wed, Dec 11, 2013 at 5:44 AM, Robert Stojnic <rainmansr at="" gmail.com=""> >>> wrote: >>>> >>>> Hi Fabrice, >>>> >>>> The negative values are usual as the PWM matrix is defined as log2 >>>> probability_base / probability_background. So if the any of the >>>> probabilities is smaller than 0.25 in your input matrix, this will give >>>> a >>>> negative value. Maybe you wanted to get the heights of the individual >>>> letters in the logo? >>>> >>>> # convert the count matrix to probabilities >>>> p = t(t(pfm) / colSums(pfm)) >>>> >>>> # this is without the small-sample correction, for more information see >>>> https://en.wikipedia.org/wiki/Sequence_logo or the original paper >>>> h = - colSums(p * log2(p)) >>>> heights = t(t(p) * (2-h)) >>>> >>>> All the transpositions (calls to t()) are needed to make sure the matrix >>>> and >>>> vector operations are carried out along the correct dimensions. >>>> >>>> Cheers, Robert >>>> >>>> >>>> On 10/12/13 16:41, Fabrice Tourre wrote: >>>>> >>>>> PWM always give me some negative value. This strange to me. >>>>> >>>>> PFMtoPWM(pfm) >>>>> An object of class 'PWM' >>>>> ID: >>>>> Target name: >>>>> Frequency matrix: >>>>> $pfm >>>>> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] >>>>> [,9] >>>>> A 3289112 3286601 3324808 3295086 3297953 3371158 3350851 3380593 >>>>> 3406893 >>>>> C 2770671 2771901 2749093 2791942 2791869 2756225 2779305 2780189 >>>>> 2727296 >>>>> G 2836085 2853221 2826205 2830413 2845211 2809652 2778112 2742323 >>>>> 2542202 >>>>> T 3286234 3270379 3281996 3264661 3247069 3245067 3273834 3278997 >>>>> 3505711 >>>>> [,10] [,11] [,12] [,13] [,14] [,15] [,16] [,17] >>>>> [,18] >>>>> A 3293358 2178674 4352405 3227324 3461232 3446487 3259436 3276060 >>>>> 3271729 >>>>> C 2663331 2932504 2139363 3052255 2674074 2550187 3005584 2805702 >>>>> 2844711 >>>>> G 2467603 2413635 1644787 2028507 2906055 2827872 2948758 3050624 >>>>> 2971989 >>>>> T 3757810 4657289 4045547 3874016 3140741 3357556 2968324 3049716 >>>>> 3093673 >>>>> [,19] [,20] [,21] >>>>> A 3297076 3293868 3334010 >>>>> C 2853311 2824444 2768038 >>>>> G 2891960 3017416 2974502 >>>>> T 3139755 3046374 3105552 >>>>> Position weight matrix (PWM): >>>>> $pwm >>>>> [,1] [,2] [,3] [,4] [,5] >>>>> [,6] >>>>> A 0.1110069 0.10990513 0.1265798 0.1136249 0.11487965 0.14655305 >>>>> C -0.1364558 -0.13581544 -0.1477355 -0.1254222 -0.12545992 -0.14399751 >>>>> G -0.1027904 -0.09409968 -0.1078251 -0.1056786 -0.09815553 -0.11629972 >>>>> T 0.1097440 0.10276665 0.1078823 0.1002420 0.09244685 0.09155707 >>>>> [,7] [,8] [,9] [,10] [,11] [,12] >>>>> A 0.1378363 0.1505851 0.1617654 0.1128682 -0.4832408 0.5151216 >>>>> C -0.1319670 -0.1315082 -0.1592199 -0.1934594 -0.0545581 -0.5095098 >>>>> G -0.1325864 -0.1512927 -0.2606125 -0.3035809 -0.3354836 -0.8887903 >>>>> T 0.1042900 0.1065634 0.2030159 0.3032009 0.6127992 0.4096436 >>>>> [,13] [,14] [,15] [,16] [,17] >>>>> [,18] >>>>> A 0.083647231 0.18459445 0.1784354 0.09793116 0.105270587 >>>>> 0.10336206 >>>>> C 0.003184313 -0.18765178 -0.2560881 -0.01904584 -0.118329389 >>>>> -0.09840908 >>>>> G -0.586272844 -0.06762917 -0.1069744 -0.04658375 0.002413189 >>>>> -0.03526240 >>>>> T 0.347138703 0.04441379 0.1407203 -0.03704261 0.001983716 >>>>> 0.02262953 >>>>> [,19] [,20] [,21] >>>>> A 0.11449595 0.1130915480 0.13056724 >>>>> C -0.09405417 -0.1087242780 -0.13782742 >>>>> G -0.07464358 -0.0133775737 -0.03404303 >>>>> T 0.04396080 0.0004018867 0.02815854 >>>>> With background nucleotide frequencies which also serve as >>>>> pseudo-count: >>>>> $prior.params >>>>> A C G T >>>>> 0.25 0.25 0.25 0.25 >>>>> >>>>> On Tue, Dec 10, 2013 at 7:29 AM, Robert Stojnic <rainmansr at="" gmail.com=""> >>>>> wrote: >>>>>> >>>>>> Dear Fabrice, >>>>>> >>>>>> You can plot the PFM in PWMEnrich by converting it to PWM: >>>>>> >>>>>> plot(PFMtoPWM(pfm_matrix)) >>>>>> >>>>>> Unfortunately the old function was deprecated. Sorry if it broke your >>>>>> code! >>>>>> >>>>>> Cheers, Robert >>>>>> >>>>>> >>>>>> On 07/12/13 04:41, Fabrice Tourre wrote: >>>>>>> >>>>>>> Dear expert, >>>>>>> >>>>>>> I just want to plot PFM using PWMEnrich package. It seems seqlogo >>>>>>> cannot do this. But I found in PWMEnrich2.6.2, plotpfm does not >>>>>>> exist. >>>>>>> How can I plotPFM using new PWMEnrich? >>>>>>> >>>>>>> _______________________________________________ >>>>>>> Bioconductor mailing list >>>>>>> Bioconductor at r-project.org >>>>>>> https://stat.ethz.ch/mailman/listinfo/bioconductor >>>>>>> Search the archives: >>>>>>> http://news.gmane.org/gmane.science.biology.informatics.conductor >>>>>>> > -------------- next part -------------- A non-text attachment was scrubbed... Name: test.pdf Type: application/pdf Size: 98266 bytes Desc: not available URL: <https: stat.ethz.ch="" pipermail="" bioconductor="" attachments="" 20131211="" a34a577b="" attachment.pdf="">
ADD REPLY
0
Entering edit mode
Dear Fabrice, This is because your PFM has very little information content. The only way to chop off the y axis (which might be misleading to your readers!) is to modify the plotting function. If you look at PWMEnrich:::seqLogoGrid() you will see these lines of code: if (ic.scale) { ylim <- 2 ylab <- "Information content" facs <- pwm2ic(pwm) } You can make a custom copy of this function where you can set your own value for ylim. You will also need the pwm2ic() function from the seqLogo package. Note that this function takes a probability matrix, i.e. "p" from the code below. Cheers, Robert On 11/12/13 22:28, Fabrice Tourre wrote: > Thank you. The plot is not very good. I have attached it. > > On Wed, Dec 11, 2013 at 5:22 PM, Robert Stojnic <rainmansr at="" gmail.com=""> wrote: >> Dear Fabrice, >> >> pm <- PFMtoPWM(pfm) >> plot(pm) >> >> will plot the logo with correct heights (it will use the calculation I've >> described below). More advanced options such as changing units (i.e. from >> bits to e.g. nats) are not supported. If you want to create a custom plot >> you will have to do it from scratch. Look at the seqLogo package source, or >> a similar function PWMEnrich:::seqLogoGrid in PWMEnrich. >> >> Cheers, Robert >> >> >> On 11/12/13 21:01, Fabrice Tourre wrote: >>> pm <- PFMtoPWM(pfm) >>> pm at pwm <- heights >>> plot(pm) >>> >>> >>> This plot is not good. Because we cannot control y-axis >>> >>> On Wed, Dec 11, 2013 at 3:44 PM, Fabrice Tourre <fabrice.ciup at="" gmail.com=""> >>> wrote: >>>> Dear Robert, >>>> >>>> Thank you. When I have the heights matrixs, how can we get a weblogo >>>> plot? >>>> >>>> On Wed, Dec 11, 2013 at 5:44 AM, Robert Stojnic <rainmansr at="" gmail.com=""> >>>> wrote: >>>>> Hi Fabrice, >>>>> >>>>> The negative values are usual as the PWM matrix is defined as log2 >>>>> probability_base / probability_background. So if the any of the >>>>> probabilities is smaller than 0.25 in your input matrix, this will give >>>>> a >>>>> negative value. Maybe you wanted to get the heights of the individual >>>>> letters in the logo? >>>>> >>>>> # convert the count matrix to probabilities >>>>> p = t(t(pfm) / colSums(pfm)) >>>>> >>>>> # this is without the small-sample correction, for more information see >>>>> https://en.wikipedia.org/wiki/Sequence_logo or the original paper >>>>> h = - colSums(p * log2(p)) >>>>> heights = t(t(p) * (2-h)) >>>>> >>>>> All the transpositions (calls to t()) are needed to make sure the matrix >>>>> and >>>>> vector operations are carried out along the correct dimensions. >>>>> >>>>> Cheers, Robert >>>>> >>>>> >>>>> On 10/12/13 16:41, Fabrice Tourre wrote: >>>>>> PWM always give me some negative value. This strange to me. >>>>>> >>>>>> PFMtoPWM(pfm) >>>>>> An object of class 'PWM' >>>>>> ID: >>>>>> Target name: >>>>>> Frequency matrix: >>>>>> $pfm >>>>>> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] >>>>>> [,9] >>>>>> A 3289112 3286601 3324808 3295086 3297953 3371158 3350851 3380593 >>>>>> 3406893 >>>>>> C 2770671 2771901 2749093 2791942 2791869 2756225 2779305 2780189 >>>>>> 2727296 >>>>>> G 2836085 2853221 2826205 2830413 2845211 2809652 2778112 2742323 >>>>>> 2542202 >>>>>> T 3286234 3270379 3281996 3264661 3247069 3245067 3273834 3278997 >>>>>> 3505711 >>>>>> [,10] [,11] [,12] [,13] [,14] [,15] [,16] [,17] >>>>>> [,18] >>>>>> A 3293358 2178674 4352405 3227324 3461232 3446487 3259436 3276060 >>>>>> 3271729 >>>>>> C 2663331 2932504 2139363 3052255 2674074 2550187 3005584 2805702 >>>>>> 2844711 >>>>>> G 2467603 2413635 1644787 2028507 2906055 2827872 2948758 3050624 >>>>>> 2971989 >>>>>> T 3757810 4657289 4045547 3874016 3140741 3357556 2968324 3049716 >>>>>> 3093673 >>>>>> [,19] [,20] [,21] >>>>>> A 3297076 3293868 3334010 >>>>>> C 2853311 2824444 2768038 >>>>>> G 2891960 3017416 2974502 >>>>>> T 3139755 3046374 3105552 >>>>>> Position weight matrix (PWM): >>>>>> $pwm >>>>>> [,1] [,2] [,3] [,4] [,5] >>>>>> [,6] >>>>>> A 0.1110069 0.10990513 0.1265798 0.1136249 0.11487965 0.14655305 >>>>>> C -0.1364558 -0.13581544 -0.1477355 -0.1254222 -0.12545992 -0.14399751 >>>>>> G -0.1027904 -0.09409968 -0.1078251 -0.1056786 -0.09815553 -0.11629972 >>>>>> T 0.1097440 0.10276665 0.1078823 0.1002420 0.09244685 0.09155707 >>>>>> [,7] [,8] [,9] [,10] [,11] [,12] >>>>>> A 0.1378363 0.1505851 0.1617654 0.1128682 -0.4832408 0.5151216 >>>>>> C -0.1319670 -0.1315082 -0.1592199 -0.1934594 -0.0545581 -0.5095098 >>>>>> G -0.1325864 -0.1512927 -0.2606125 -0.3035809 -0.3354836 -0.8887903 >>>>>> T 0.1042900 0.1065634 0.2030159 0.3032009 0.6127992 0.4096436 >>>>>> [,13] [,14] [,15] [,16] [,17] >>>>>> [,18] >>>>>> A 0.083647231 0.18459445 0.1784354 0.09793116 0.105270587 >>>>>> 0.10336206 >>>>>> C 0.003184313 -0.18765178 -0.2560881 -0.01904584 -0.118329389 >>>>>> -0.09840908 >>>>>> G -0.586272844 -0.06762917 -0.1069744 -0.04658375 0.002413189 >>>>>> -0.03526240 >>>>>> T 0.347138703 0.04441379 0.1407203 -0.03704261 0.001983716 >>>>>> 0.02262953 >>>>>> [,19] [,20] [,21] >>>>>> A 0.11449595 0.1130915480 0.13056724 >>>>>> C -0.09405417 -0.1087242780 -0.13782742 >>>>>> G -0.07464358 -0.0133775737 -0.03404303 >>>>>> T 0.04396080 0.0004018867 0.02815854 >>>>>> With background nucleotide frequencies which also serve as >>>>>> pseudo-count: >>>>>> $prior.params >>>>>> A C G T >>>>>> 0.25 0.25 0.25 0.25 >>>>>> >>>>>> On Tue, Dec 10, 2013 at 7:29 AM, Robert Stojnic <rainmansr at="" gmail.com=""> >>>>>> wrote: >>>>>>> Dear Fabrice, >>>>>>> >>>>>>> You can plot the PFM in PWMEnrich by converting it to PWM: >>>>>>> >>>>>>> plot(PFMtoPWM(pfm_matrix)) >>>>>>> >>>>>>> Unfortunately the old function was deprecated. Sorry if it broke your >>>>>>> code! >>>>>>> >>>>>>> Cheers, Robert >>>>>>> >>>>>>> >>>>>>> On 07/12/13 04:41, Fabrice Tourre wrote: >>>>>>>> Dear expert, >>>>>>>> >>>>>>>> I just want to plot PFM using PWMEnrich package. It seems seqlogo >>>>>>>> cannot do this. But I found in PWMEnrich2.6.2, plotpfm does not >>>>>>>> exist. >>>>>>>> How can I plotPFM using new PWMEnrich? >>>>>>>> >>>>>>>> _______________________________________________ >>>>>>>> Bioconductor mailing list >>>>>>>> Bioconductor at r-project.org >>>>>>>> https://stat.ethz.ch/mailman/listinfo/bioconductor >>>>>>>> Search the archives: >>>>>>>> http://news.gmane.org/gmane.science.biology.informatics.conductor >>>>>>>>
ADD REPLY

Login before adding your answer.

Traffic: 705 users visited in the last hour
Help About
FAQ
Access RSS
API
Stats

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.

Powered by the version 2.3.6