You can subscribe to this list here.
2014 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2015 |
Jan
|
Feb
|
Mar
(1) |
Apr
(5) |
May
(34) |
Jun
(30) |
Jul
(65) |
Aug
(34) |
Sep
(9) |
Oct
(39) |
Nov
(147) |
Dec
(73) |
2016 |
Jan
(89) |
Feb
(42) |
Mar
(41) |
Apr
(28) |
May
(39) |
Jun
(59) |
Jul
(119) |
Aug
(48) |
Sep
(10) |
Oct
(19) |
Nov
(13) |
Dec
|
2017 |
Jan
(2) |
Feb
|
Mar
(3) |
Apr
|
May
(1) |
Jun
(1) |
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2018 |
Jan
|
Feb
(1) |
Mar
(1) |
Apr
|
May
(2) |
Jun
(1) |
Jul
(2) |
Aug
|
Sep
|
Oct
(1) |
Nov
|
Dec
|
2019 |
Jan
|
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
(2) |
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
|
2020 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
(1) |
Jul
(3) |
Aug
(2) |
Sep
|
Oct
|
Nov
|
Dec
(1) |
2021 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
(1) |
Jun
(1) |
Jul
|
Aug
|
Sep
(2) |
Oct
|
Nov
(1) |
Dec
|
2022 |
Jan
|
Feb
|
Mar
|
Apr
(7) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2023 |
Jan
(1) |
Feb
(3) |
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
(2) |
Aug
(3) |
Sep
(2) |
Oct
(3) |
Nov
(4) |
Dec
(3) |
2024 |
Jan
|
Feb
(3) |
Mar
(3) |
Apr
(4) |
May
(4) |
Jun
(3) |
Jul
(2) |
Aug
|
Sep
(2) |
Oct
|
Nov
(2) |
Dec
(2) |
2025 |
Jan
(1) |
Feb
(2) |
Mar
(2) |
Apr
(2) |
May
(1) |
Jun
(1) |
Jul
(2) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Carlos P. <cpa...@ce...> - 2015-08-17 07:52:55
|
Hi Giacomo, Sorry for this late reply (I just returned from Holidays). In a first quick look your solution seems ok for me, but I want to give some "insider" tips: - As Zibi mentioned, some discussions already took place about whether /how to support commands via taurus models. We left it out of the current core refactoring (TEP3 & TEP14) because we wanted to think it over carefully. I would be very interested in getting your help and/or opinions in for that feature (we can discuss in the tauruslib-devel mailing list) - As for your tango-command-plot implementation: I am sorry that the current API of TaurusPlot is so convoluted. A few years ago I started a parallel implementation of plots in the extra_guiqwt submodule (see TaurusCurveDialog and TaurusCurveItem). This alternative API is simpler and may make your implementation easier. But the abandonment of the PyQwt library put a hold on the extra_guiqwt development (although the existing TaurusCurveDialog and TaurusCurveItem are perfectly usable). In your case, implementing a "TangoCommandCurveItem" should be quite easy and a bit more elegant than what you were forced to do with TaurusPlot. - As for the future of plots in Taurus: since TaurusPlot is also affected by the abandonment of PyQwt, it is a top priority for us to develop a new qwt-free plot widget (probably using PyQtGraph). Its API will probably follow the lines of what was done in the taurus.qt.qtgui.extra_guiqwt submodule. I would love to have something ready for the Jan16 or Jul16 release). Again, any comments and help will be greatly appreciated. I hope this was useful, and sorry for the spam in the Tango list. I propose to follow the discussion in the tauruslib mailing lists. Carlos On Tue 4 August 2015 20:02:12 Zbigniew Reszela wrote: > Hi Giacomo, > > It's good to hear that you are not blocked anymore with this problem. > Maybe when Carlos Pascual is back from holidays, he could comment on > the solution that you found (he has developed the TaurusPlot widget). > Just for the curiosity, why you do not use the tango or taurus > polling instead of the Qt reading thread? > > Cheers, > Zibi > > On 08/04/2015 04:43 PM, Giacomo S. wrote: > > Hello Zbigniew. > > > > I attach the solution to my problem, found after some Taurus code > > inspection ;-) > > > > Thanks for your help! > > > > Giacomo > > > > On 08/03/2015 09:34 AM, Zbigniew Reszela wrote: > >> Hi Giacomo, > >> > >> I see that in this example you use attributes and not commands. > >> This > >> will make easier to play with taurusplot. > >> > >> I bet that you must already know how to use a standalone taurusplot > >> application e.g. > >> > >> taurusplot sys/tg_test/1/wave > >> > >> and that with --taurus-polling-period=MILLISEC argument you can > >> change polling of the plotted attributes. > >> So playing with this period we see a difference in refreshing of > >> the > >> plot (the default period is 3 seconds): > >> > >> taurusplot sys/tg_test/1/wave --taurus-polling-period=10000 > >> taurusplot sys/tg_test/1/wave --taurus-polling-period=1000 > >> > >> I think that the following execution of the taurusplot should be > >> equivalent to what you try to achieve: > >> > >> taurusplot --taurus-polling-period=100 > >> srv-tango-srf.fcs:20000/sfel01/diagnostics/cbpm_sfel01.03/{HorCalSu > >> mPickup,VerCalSumPickup,HorCalDeltaPickup,VerCalDeltaPickup} > >> > >> Please read the following thread which talks about the "taurus > >> polling period", the consequences of changing its value, and > >> alternatives: > >> https://sourceforge.net/p/tauruslib/taurus-devel/message/34272929/ > >> > >> You can do the same in the code, please see the attachment. > >> > >> Regarding you script, I have simplified it to work with taurusplot > >> sys/tg_test/1/wave only, and it works for me. As you mentioned the > >> curve seems to be recreated, cause they changes colors. I'm not an > >> expert of the taurusplot widget so I can not give you better ways > >> to > >> implement it right now. > >> I would need to investigate a little bit to give you feedback about > >> it. > >> > >> If you still need to program it using your own update thread, just > >> let us know and we will continue investigating. > >> > >> Cheers, > >> Zibi > >> > >> On 07/30/2015 04:43 PM, Giacomo S. wrote: > >>> Hello, thanks for your help. > >>> I almost realized what I need. > >>> Please see the attached source code. > >>> > >>> The problem (one of the problems, maybe), is that maybe when I > >>> update > >>> the values of the four curves in the plot I should not > >>> call attachRawData. > >>> What I see actually, are the curves flickering (appearing and > >>> disappearing) at each refresh. > >>> > >>> This means they are continuosly removed/re added. > >>> > >>> In the documentation I've not found the correct method to simply > >>> fetch the curve with a given name and change its values. > >>> > >>> Thanks for any help. > >>> Giacomo. > >>> > >>> On 07/29/2015 10:07 AM, Carlos Manuel Falcon Torres wrote: > >>>> Hi Giacomo, > >>>> Unfortunately the Taurus plotting GUIs do not have API for > >>>> manage > >>>> commands. The only one how can do it is the TaurusCommandButton > >>>> (which accepts parameters). > >>>> > >>>> From the core side, you can do it (using the PyTango API of > >>>> taurus),>>>> > >>>> I mean , > >>>> You can do: > >>>> > >>>> import taurus > >>>> dev = taurus.device('inj/diagnostics/cm_inj.01') > >>>> curve = dev.GetCharge(0,1000) > >>>> > >>>> So, you could represent the curve using a PySignalSimulator > >>>> device > >>>> server as proxy, where a dynamic attribute was calculated like > >>>> that, > >>>> or having the result in an attribute of your device server. > >>>> > >>>> Maybe if you ask in any of the taurus mailing list, you can get > >>>> a > >>>> better answer: > >>>> tau...@li... > >>>> <mailto:tau...@li...> > >>>> tau...@li... > >>>> <mailto:tau...@li...> > >>>> > >>>> > >>>> Hope this help you!! > >>>> > >>>> Best, > >>>> Carlos Falcon > >>> > >>> ------------------------------------------------------------------ > >>> ------------ > >>> > >>> > >>> _______________________________________________ > >>> Tauruslib-devel mailing list > >>> Tau...@li... > >>> https://lists.sourceforge.net/lists/listinfo/tauruslib-devel > >> > >> ALBA Synchrotron <http://www.albasynchrotron.es> > >> > >> Zbigniew Reszela > >> > >> Controls Section - Computing Division > >> > >> ALBA SYNCHROTRON LIGHT SOURCE > >> Ctra. BP 1413 km. 3,3 | 08290 | Cerdanyola del Vallès| Barcelona | > >> Spain <http://www.albasynchrotron.es/AboutUs/Access> > >> (+34) 93 592 4407 > >> www.albasynchrotron.es <http://www.albasynchrotron.es>| > >> zre...@ce... <mailto:zre...@ce...> > >> > >> **Please, do not print this e-mail unless it is absolutely > >> necessary. > >> **Si heu rebut aquest correu per error, us informo que pot contenir > >> informació confidencial i privada i que està prohibit el seu ús. Us > >> agrairíem que ho comuniqueu al remitent i l'elimineu. Gràcies. > >> Si ha recibido este correo por error, le informo de que puede > >> contener información confidencial y privada y que está prohibido > >> su uso. Le agradeceré que lo comunique a su remitente y lo > >> elimine. Gracias. If you have received this e-mail in error, > >> please note that it may contain confidential and private > >> information, therefore, the use of this information is strictly > >> forbidden. Please inform the sender of the error and delete the > >> information received. Thank you. -- +----------------------------------------------------+ Carlos Pascual Izarra Scientific Software Coordinator Computing Division ALBA Synchrotron [http://www.albasynchrotron.es] Carretera BP 1413 de Cerdanyola-Sant Cugat, Km. 3.3 E-08290 Cerdanyola del Valles (Barcelona), Spain E-mail: cpa...@ce... Phone: +34 93 592 4428 +----------------------------------------------------+ |
From: Carlos M. F. T. <cf...@ce...> - 2015-08-10 15:04:23
|
Hi Giacomo, It is the right procedure.. Did you use sudo for install taurus? Could you put back the original taurusdesigner.py file, Then please launch in a new console the: %designer and %taurusdesigner Do you see something similar to the attached files? In image named taurusdesigner.png, you can see the expected taurus widgets. For getting it, I wrote in the filter textbox of the designer "taurus". It shows all the widgets whose name starts with taurus. Could send me your screenshots? If still the problem lets try another thing (we'll test if there was problem during the installation), in a new console add to your PYTHONPATH the TAURUS_GIT_CLONE_PATH/lib, like that: export PYTHONPATH=TAURUS_GIT_CLONE_PATH/lib:$PYTHONPATH and launch again the taurusdesigner (now you are using the git clone src) Do you see something different? Best, Carlos On 08/10/2015 04:29 PM, Giacomo S. wrote: > Hello Carlos, > > I installed taurus with the two commands: > > python setup.py build > python setup.py install > > > It's 3.6.0. > > You read those messages because I uncommented a couple of prints in > > /usr/lib64/python2.7/site-packages/taurus/qt/qtdesigner/taurusdesigner.py > > just to be sure that PYQTDESIGNERPATH was initialized as expected. > > To launch the designer, I execute > > /usr/bin/taurusdesigner > > Thanks, > > Giacomo. > > On 08/10/2015 03:00 PM, Carlos Manuel Falcon Torres wrote: > >> Hi Giacomo, >> Which version of taurus are you using? and How do you installed? >> I tested with Taurus 3.6.0 and from GIT and I don't see any problem >> with the designer. >> >> These are rare messages for me, and I don't know from where it comes; >> maybe something is missing or is unconfigured: >> >> PYTHONPATH=None >> PYQTDESIGNERPATH=/usr/lib64/python2.7/site-packages/taurus/qt/qtdesigner >> default KB_LAYOUT_DIR: "/usr/share/qtermwidget4/kb-layouts/" >> >> I will try to figure out a little more about this message. >> >> Best, >> Carlos >> >> >> On 08/10/2015 11:44 AM, Giacomo S. wrote: >>> Hello tangoers, >>> >>> I've installed taurus. >>> >>> When I launch taurusdesigner: >>> >>> giacomo@woody ~/devel/taurustest $ taurusdesigner >>> MainThread INFO 2015-08-10 11:39:47,918 TaurusRootLogger: Using >>> "PyQt4" for Qt >>> >>> >>> >>> the qt4 designer does not show the taurus custom widgets on the widget >>> box on the left. >>> >>> Listing the contents of PYQTDESIGNERPATH results in: >>> >>> giacomo@woody ~/devel/taurustest $ ls >>> /usr/lib64/python2.7/site-packages/taurus/qt/qtdesigner >>> containerplugin.py extraguiqwtplugin.pyc taurusdesigner.py >>> tauruspluginplugin.py >>> containerplugin.pyc __init__.py taurusdesigner.pyc >>> tauruspluginplugin.pyc >>> extraguiqwtplugin.py __init__.pyc taurusplugin >>> >>> From the qt designer help->about plugins menu, I can't see the taurus >>> plugins listed, not in the loaded plugins list, >>> nor in the failed plugins list. >>> >>> Thanks for any hint. >>> >>> Giacomo, Elettra. |
From: Carlos M. F. T. <cf...@ce...> - 2015-08-10 13:01:13
|
Hi Giacomo, Which version of taurus are you using? and How do you installed? I tested with Taurus 3.6.0 and from GIT and I don't see any problem with the designer. These are rare messages for me, and I don't know from where it comes; maybe something is missing or is unconfigured: PYTHONPATH=None PYQTDESIGNERPATH=/usr/lib64/python2.7/site-packages/taurus/qt/qtdesigner default KB_LAYOUT_DIR: "/usr/share/qtermwidget4/kb-layouts/" I will try to figure out a little more about this message. Best, Carlos On 08/10/2015 11:44 AM, Giacomo S. wrote: > Hello tangoers, > > I've installed taurus. > > When I launch taurusdesigner: > > giacomo@woody ~/devel/taurustest $ taurusdesigner > MainThread INFO 2015-08-10 11:39:47,918 TaurusRootLogger: Using > "PyQt4" for Qt > > > > the qt4 designer does not show the taurus custom widgets on the widget > box on the left. > > Listing the contents of PYQTDESIGNERPATH results in: > > giacomo@woody ~/devel/taurustest $ ls > /usr/lib64/python2.7/site-packages/taurus/qt/qtdesigner > containerplugin.py extraguiqwtplugin.pyc taurusdesigner.py > tauruspluginplugin.py > containerplugin.pyc __init__.py taurusdesigner.pyc > tauruspluginplugin.pyc > extraguiqwtplugin.py __init__.pyc taurusplugin > > From the qt designer help->about plugins menu, I can't see the taurus > plugins listed, not in the loaded plugins list, > nor in the failed plugins list. > > Thanks for any hint. > > Giacomo, Elettra. |
From: Sergi R. <sr...@ce...> - 2015-08-05 15:26:47
|
Merci!!!, just to provide a bit of context; it was to clarify that isPollingEnabled()==True does not mean that the polling is active. enablePolling(True) must be called if you don't have any registered listener. Srj On 08/05/2015 01:44 PM, Zbigniew Reszela wrote: > From: zreszela <zre...@ce...> > > --- > lib/taurus/core/taurusattribute.py | 27 +++++++++++++++++++++++++++ > 1 file changed, 27 insertions(+) > > diff --git a/lib/taurus/core/taurusattribute.py b/lib/taurus/core/taurusattribute.py > index 1f66be5..cee5f03 100644 > --- a/lib/taurus/core/taurusattribute.py > +++ b/lib/taurus/core/taurusattribute.py > @@ -250,6 +250,12 @@ class TaurusAttribute(TaurusModel): > #-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~- > > def enablePolling(self, force=False): > + '''Enable polling. See :meth:`isPollingEnabled` for clarification of > + what enabled polling means. > + > + :param force: True also activates polling (see: :meth:`activatePolling`) > + :type force: bool > + ''' > self.__enable_polling = True > self.__forced_polling = force > if force: > @@ -259,12 +265,25 @@ class TaurusAttribute(TaurusModel): > self._activatePolling() > > def disablePolling(self): > + '''Disable polling and if polling is active also deactivate it. > + See :meth:`isPollingEnabled` for clarification of > + what enabled polling means. > + ''' > self.__enable_polling = False > self.__forced_polling = False > if self.__activate_polling: > self._deactivatePolling() > > def isPollingEnabled(self): > + '''Indicate whether polling was activated/deactivated by user. > + Enabled polling does not mean that it is active - periodically poll > + the attribute. By default the attribute creation enables polling. > + > + :return: whether polling is enabled > + :type: bool > + > + :see: :meth:`enablePolling`, :meth:`disablePolling` > + ''' > return self.__enable_polling > > def _activatePolling(self): > @@ -280,6 +299,14 @@ class TaurusAttribute(TaurusModel): > self.__polled = False > > def isPollingActive(self): > + '''Indicate whether polling is active. Active polling means that > + a periodic timer poll the attribute. By default the attribute creation > + does not activate polling. > + > + :return: whether polling is active > + :type: bool > + :see: :meth:`activatePolling`, :meth:`disablePolling` > + ''' > return self.__polled > > def isPollingForced(self): |
From: Zbigniew R. <zre...@ce...> - 2015-08-05 11:44:17
|
From: zreszela <zre...@ce...> --- lib/taurus/core/taurusattribute.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/lib/taurus/core/taurusattribute.py b/lib/taurus/core/taurusattribute.py index 1f66be5..cee5f03 100644 --- a/lib/taurus/core/taurusattribute.py +++ b/lib/taurus/core/taurusattribute.py @@ -250,6 +250,12 @@ class TaurusAttribute(TaurusModel): #-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~- def enablePolling(self, force=False): + '''Enable polling. See :meth:`isPollingEnabled` for clarification of + what enabled polling means. + + :param force: True also activates polling (see: :meth:`activatePolling`) + :type force: bool + ''' self.__enable_polling = True self.__forced_polling = force if force: @@ -259,12 +265,25 @@ class TaurusAttribute(TaurusModel): self._activatePolling() def disablePolling(self): + '''Disable polling and if polling is active also deactivate it. + See :meth:`isPollingEnabled` for clarification of + what enabled polling means. + ''' self.__enable_polling = False self.__forced_polling = False if self.__activate_polling: self._deactivatePolling() def isPollingEnabled(self): + '''Indicate whether polling was activated/deactivated by user. + Enabled polling does not mean that it is active - periodically poll + the attribute. By default the attribute creation enables polling. + + :return: whether polling is enabled + :type: bool + + :see: :meth:`enablePolling`, :meth:`disablePolling` + ''' return self.__enable_polling def _activatePolling(self): @@ -280,6 +299,14 @@ class TaurusAttribute(TaurusModel): self.__polled = False def isPollingActive(self): + '''Indicate whether polling is active. Active polling means that + a periodic timer poll the attribute. By default the attribute creation + does not activate polling. + + :return: whether polling is active + :type: bool + :see: :meth:`activatePolling`, :meth:`disablePolling` + ''' return self.__polled def isPollingForced(self): -- 1.8.4.5 |
From: Zbigniew R. <zre...@ce...> - 2015-08-05 11:44:16
|
Dear all, In the following mail I propose documentation of some taurusattribute polling related methods. My understanding of them is based on some emprirical tests. Feel free to comment, Zibi |
From: Александр С. <sen...@gm...> - 2015-08-05 09:50:40
|
Hello Zbigniew, I have run both of tests, no memory usage growth was observed. It seems that avoiding "signal.name" is acceptable solution. Thanks for your help! 2015-08-04 16:00 GMT+06:00 Zbigniew Reszela <zre...@ce...>: > Dear Alexander, > > To be honest I've not experienced this problem before. But I will try to > help you with what I know. > The warning message comes from the push_event method of the > TangoConfiguration class. > This method is passed as a callback when subscribing to the attribute's > configuration event. > In the code it has an interesting comment: > > #=================================================================== > # This is a safety net to catch "zombie" TangoConfiguration objects > # when they get called. > # If you get here, there is some bug elsewhere which should be > # investigated. > # Without this safety net, you would get exceptions. > # We assume that a TangoConfiguration object which has no listeners > # and which is not associated to a TangoAttribute, is a "zombie". > > From the taurus script which you attached in the Tango forum entry, the > code responsible for subscribing to this event is: signal.name. > The attribute name is obtained from the Tango configuration object and > Taurus subscribes to configuration events the first time one tries to > obtain some value from it like label, units, name, etc.. > > In order to debug the problem could you please: > > 1) Try to do not use the signal.name in your code and substitite if by > signal.getSimpleName() and check if the memory also grows? > > 2) Try to execute the following code and see if the memory also grows: > > import time > import PyTango > > period = YOUR_POLLING_PERIOD > d = PyTango.DeviceProxy(YOUR_DEVICE_NAME) > > while True: > print d.read_attribute('signal').value[0:5] > time.sleep(period) > > Please let us know about results of your tests. > > Cheers, > Zibi > > > > On 08/03/2015 09:05 AM, Александр Сенченко wrote: > > Hello. > > I have been faced with a problem. > When i connect to tango server from taurus client, server memory usage > grows. > When i use C++ client or jive, it doesn't. > > When server increases memory consumption, taurus client issues a warning: > Dummy-2 WARNING 2015-07-30 18:24:55,560 > devhost:10000.simple2/gen/dev1.signal.configuration: > "Zombie" object > (TangoConfiguration(devhost:10000/simple2/gen/dev1/signal?configuration)) > received an event. Unsubscribing it. > > Tango Server system: > CPU powerpc > OS debian lenny > gcc 4.3.2 > Tango 8.1.2c > zeromq 4.1.2 > omniorb 4.1.6 > > Taurus Clietns system: > CPU intel I7 > OS debian 8 jessie amd 64 > gcc 4.9 > omniorb 4.1.6 > zeromq 4.0.5 > tango 8.1.2c > taurus 3.3.1 > > > I also started discussion in Tango forum: > http://www.tango-controls.org/community/forums/topic/99/ > > > ------------------------------------------------------------------------------ > > > > _______________________________________________ > Tauruslib-devel mailing lis...@li...https://lists.sourceforge.net/lists/listinfo/tauruslib-devel > > > -- > > -- > > > [image: ALBA Synchrotron] <http://www.albasynchrotron.es> > Zbigniew Reszela > Controls Section - Computing Division > > ALBA SYNCHROTRON LIGHT SOURCE Ctra. BP 1413 km. 3,3 | 08290 | Cerdanyola > del Vallès| Barcelona | Spain > <http://www.albasynchrotron.es/AboutUs/Access> > (+34) 93 592 4407 www.albasynchrotron.es | zre...@ce... > > *Please, do not print this e-mail unless it is absolutely necessary. *Si > heu rebut aquest correu per error, us informo que pot contenir informació > confidencial i privada i que està prohibit el seu ús. Us agrairíem que ho > comuniqueu al remitent i l'elimineu. Gràcies. > Si ha recibido este correo por error, le informo de que puede contener > información confidencial y privada y que está prohibido su uso. Le > agradeceré que lo comunique a su remitente y lo elimine. Gracias. > If you have received this e-mail in error, please note that it may contain > confidential and private information, therefore, the use of this > information is strictly forbidden. Please inform the sender of the error > and delete the information received. Thank you. > |
From: Zbigniew R. <zre...@ce...> - 2015-08-04 18:02:32
|
Hi Giacomo, It's good to hear that you are not blocked anymore with this problem. Maybe when Carlos Pascual is back from holidays, he could comment on the solution that you found (he has developed the TaurusPlot widget). Just for the curiosity, why you do not use the tango or taurus polling instead of the Qt reading thread? Cheers, Zibi On 08/04/2015 04:43 PM, Giacomo S. wrote: > Hello Zbigniew. > > I attach the solution to my problem, found after some Taurus code > inspection ;-) > > Thanks for your help! > > Giacomo > > On 08/03/2015 09:34 AM, Zbigniew Reszela wrote: >> Hi Giacomo, >> >> I see that in this example you use attributes and not commands. This >> will make easier to play with taurusplot. >> >> I bet that you must already know how to use a standalone taurusplot >> application e.g. >> >> taurusplot sys/tg_test/1/wave >> >> and that with --taurus-polling-period=MILLISEC argument you can change >> polling of the plotted attributes. >> So playing with this period we see a difference in refreshing of the >> plot (the default period is 3 seconds): >> >> taurusplot sys/tg_test/1/wave --taurus-polling-period=10000 >> taurusplot sys/tg_test/1/wave --taurus-polling-period=1000 >> >> I think that the following execution of the taurusplot should be >> equivalent to what you try to achieve: >> >> taurusplot --taurus-polling-period=100 >> srv-tango-srf.fcs:20000/sfel01/diagnostics/cbpm_sfel01.03/{HorCalSumPickup,VerCalSumPickup,HorCalDeltaPickup,VerCalDeltaPickup} >> >> Please read the following thread which talks about the "taurus polling >> period", the consequences of changing its value, and alternatives: >> https://sourceforge.net/p/tauruslib/taurus-devel/message/34272929/ >> >> You can do the same in the code, please see the attachment. >> >> Regarding you script, I have simplified it to work with taurusplot >> sys/tg_test/1/wave only, and it works for me. As you mentioned the >> curve seems to be recreated, cause they changes colors. I'm not an >> expert of the taurusplot widget so I can not give you better ways to >> implement it right now. >> I would need to investigate a little bit to give you feedback about it. >> >> If you still need to program it using your own update thread, just let >> us know and we will continue investigating. >> >> Cheers, >> Zibi >> >> >> On 07/30/2015 04:43 PM, Giacomo S. wrote: >>> Hello, thanks for your help. >>> I almost realized what I need. >>> Please see the attached source code. >>> >>> The problem (one of the problems, maybe), is that maybe when I update >>> the values of the four curves in the plot I should not >>> call attachRawData. >>> What I see actually, are the curves flickering (appearing and >>> disappearing) at each refresh. >>> >>> This means they are continuosly removed/re added. >>> >>> In the documentation I've not found the correct method to simply fetch >>> the curve with a given name and change its values. >>> >>> Thanks for any help. >>> Giacomo. >>> >>> On 07/29/2015 10:07 AM, Carlos Manuel Falcon Torres wrote: >>>> Hi Giacomo, >>>> Unfortunately the Taurus plotting GUIs do not have API for manage >>>> commands. The only one how can do it is the TaurusCommandButton >>>> (which accepts parameters). >>>> >>>> From the core side, you can do it (using the PyTango API of taurus), >>>> I mean , >>>> You can do: >>>> >>>> import taurus >>>> dev = taurus.device('inj/diagnostics/cm_inj.01') >>>> curve = dev.GetCharge(0,1000) >>>> >>>> So, you could represent the curve using a PySignalSimulator device >>>> server as proxy, where a dynamic attribute was calculated like that, >>>> or having the result in an attribute of your device server. >>>> >>>> Maybe if you ask in any of the taurus mailing list, you can get a >>>> better answer: >>>> tau...@li... >>>> <mailto:tau...@li...> >>>> tau...@li... >>>> <mailto:tau...@li...> >>>> >>>> >>>> Hope this help you!! >>>> >>>> Best, >>>> Carlos Falcon >>> >>> ------------------------------------------------------------------------------ >>> >>> >>> _______________________________________________ >>> Tauruslib-devel mailing list >>> Tau...@li... >>> https://lists.sourceforge.net/lists/listinfo/tauruslib-devel >> -- >> >> -- >> >> >> ALBA Synchrotron <http://www.albasynchrotron.es> >> >> Zbigniew Reszela >> Controls Section - Computing Division >> >> ALBA SYNCHROTRON LIGHT SOURCE >> Ctra. BP 1413 km. 3,3 | 08290 | Cerdanyola del Vallès| Barcelona | >> Spain <http://www.albasynchrotron.es/AboutUs/Access> >> (+34) 93 592 4407 >> www.albasynchrotron.es <http://www.albasynchrotron.es>| >> zre...@ce... <mailto:zre...@ce...> >> >> **Please, do not print this e-mail unless it is absolutely necessary. >> **Si heu rebut aquest correu per error, us informo que pot contenir >> informació confidencial i privada i que està prohibit el seu ús. Us >> agrairíem que ho comuniqueu al remitent i l'elimineu. Gràcies. >> Si ha recibido este correo por error, le informo de que puede contener >> información confidencial y privada y que está prohibido su uso. Le >> agradeceré que lo comunique a su remitente y lo elimine. Gracias. >> If you have received this e-mail in error, please note that it may >> contain confidential and private information, therefore, the use of >> this information is strictly forbidden. Please inform the sender of >> the error and delete the information received. Thank you. >> -- -- ALBA Synchrotron <http://www.albasynchrotron.es> Zbigniew Reszela Controls Section - Computing Division ALBA SYNCHROTRON LIGHT SOURCE Ctra. BP 1413 km. 3,3 | 08290 | Cerdanyola del Vallès| Barcelona | Spain <http://www.albasynchrotron.es/AboutUs/Access> (+34) 93 592 4407 www.albasynchrotron.es <http://www.albasynchrotron.es>| zre...@ce... <mailto:zre...@ce...> **Please, do not print this e-mail unless it is absolutely necessary. **Si heu rebut aquest correu per error, us informo que pot contenir informació confidencial i privada i que està prohibit el seu ús. Us agrairíem que ho comuniqueu al remitent i l'elimineu. Gràcies. Si ha recibido este correo por error, le informo de que puede contener información confidencial y privada y que está prohibido su uso. Le agradeceré que lo comunique a su remitente y lo elimine. Gracias. If you have received this e-mail in error, please note that it may contain confidential and private information, therefore, the use of this information is strictly forbidden. Please inform the sender of the error and delete the information received. Thank you. |
From: Zbigniew R. <zre...@ce...> - 2015-08-04 10:00:15
|
Dear Alexander, To be honest I've not experienced this problem before. But I will try to help you with what I know. The warning message comes from the push_event method of the TangoConfiguration class. This method is passed as a callback when subscribing to the attribute's configuration event. In the code it has an interesting comment: #=================================================================== # This is a safety net to catch "zombie" TangoConfiguration objects # when they get called. # If you get here, there is some bug elsewhere which should be # investigated. # Without this safety net, you would get exceptions. # We assume that a TangoConfiguration object which has no listeners # and which is not associated to a TangoAttribute, is a "zombie". From the taurus script which you attached in the Tango forum entry, the code responsible for subscribing to this event is: signal.name. The attribute name is obtained from the Tango configuration object and Taurus subscribes to configuration events the first time one tries to obtain some value from it like label, units, name, etc.. In order to debug the problem could you please: 1) Try to do not use the signal.name in your code and substitite if by signal.getSimpleName() and check if the memory also grows? 2) Try to execute the following code and see if the memory also grows: import time import PyTango period = YOUR_POLLING_PERIOD d = PyTango.DeviceProxy(YOUR_DEVICE_NAME) while True: print d.read_attribute('signal').value[0:5] time.sleep(period) Please let us know about results of your tests. Cheers, Zibi On 08/03/2015 09:05 AM, Александр Сенченко wrote: > Hello. > > I have been faced with a problem. > When i connect to tango server from taurus client, server memory usage > grows. > When i use C++ client or jive, it doesn't. > > When server increases memory consumption, taurus client issues a warning: > Dummy-2 WARNING 2015-07-30 18:24:55,560 > devhost:10000.simple2/gen/dev1.signal.configuration: > "Zombie" object > (TangoConfiguration(devhost:10000/simple2/gen/dev1/signal?configuration)) > received an event. Unsubscribing it. > > Tango Server system: > CPU powerpc > OS debian lenny > gcc 4.3.2 > Tango 8.1.2c > zeromq 4.1.2 > omniorb 4.1.6 > > Taurus Clietns system: > CPU intel I7 > OS debian 8 jessie amd 64 > gcc 4.9 > omniorb 4.1.6 > zeromq 4.0.5 > tango 8.1.2c > taurus 3.3.1 > > > I also started discussion in Tango forum: > http://www.tango-controls.org/community/forums/topic/99/ > > > ------------------------------------------------------------------------------ > > > _______________________________________________ > Tauruslib-devel mailing list > Tau...@li... > https://lists.sourceforge.net/lists/listinfo/tauruslib-devel -- -- ALBA Synchrotron <http://www.albasynchrotron.es> Zbigniew Reszela Controls Section - Computing Division ALBA SYNCHROTRON LIGHT SOURCE Ctra. BP 1413 km. 3,3 | 08290 | Cerdanyola del Vallès| Barcelona | Spain <http://www.albasynchrotron.es/AboutUs/Access> (+34) 93 592 4407 www.albasynchrotron.es <http://www.albasynchrotron.es>| zre...@ce... <mailto:zre...@ce...> **Please, do not print this e-mail unless it is absolutely necessary. **Si heu rebut aquest correu per error, us informo que pot contenir informació confidencial i privada i que està prohibit el seu ús. Us agrairíem que ho comuniqueu al remitent i l'elimineu. Gràcies. Si ha recibido este correo por error, le informo de que puede contener información confidencial y privada y que está prohibido su uso. Le agradeceré que lo comunique a su remitente y lo elimine. Gracias. If you have received this e-mail in error, please note that it may contain confidential and private information, therefore, the use of this information is strictly forbidden. Please inform the sender of the error and delete the information received. Thank you. |
From: Zbigniew R. <zre...@ce...> - 2015-08-03 07:34:31
|
Hi Giacomo, I see that in this example you use attributes and not commands. This will make easier to play with taurusplot. I bet that you must already know how to use a standalone taurusplot application e.g. taurusplot sys/tg_test/1/wave and that with --taurus-polling-period=MILLISEC argument you can change polling of the plotted attributes. So playing with this period we see a difference in refreshing of the plot (the default period is 3 seconds): taurusplot sys/tg_test/1/wave --taurus-polling-period=10000 taurusplot sys/tg_test/1/wave --taurus-polling-period=1000 I think that the following execution of the taurusplot should be equivalent to what you try to achieve: taurusplot --taurus-polling-period=100 srv-tango-srf.fcs:20000/sfel01/diagnostics/cbpm_sfel01.03/{HorCalSumPickup,VerCalSumPickup,HorCalDeltaPickup,VerCalDeltaPickup} Please read the following thread which talks about the "taurus polling period", the consequences of changing its value, and alternatives: https://sourceforge.net/p/tauruslib/taurus-devel/message/34272929/ You can do the same in the code, please see the attachment. Regarding you script, I have simplified it to work with taurusplot sys/tg_test/1/wave only, and it works for me. As you mentioned the curve seems to be recreated, cause they changes colors. I'm not an expert of the taurusplot widget so I can not give you better ways to implement it right now. I would need to investigate a little bit to give you feedback about it. If you still need to program it using your own update thread, just let us know and we will continue investigating. Cheers, Zibi On 07/30/2015 04:43 PM, Giacomo S. wrote: > Hello, thanks for your help. > I almost realized what I need. > Please see the attached source code. > > The problem (one of the problems, maybe), is that maybe when I update > the values of the four curves in the plot I should not > call attachRawData. > What I see actually, are the curves flickering (appearing and > disappearing) at each refresh. > > This means they are continuosly removed/re added. > > In the documentation I've not found the correct method to simply fetch > the curve with a given name and change its values. > > Thanks for any help. > Giacomo. > > On 07/29/2015 10:07 AM, Carlos Manuel Falcon Torres wrote: >> Hi Giacomo, >> Unfortunately the Taurus plotting GUIs do not have API for manage >> commands. The only one how can do it is the TaurusCommandButton >> (which accepts parameters). >> >> From the core side, you can do it (using the PyTango API of taurus), >> I mean , >> You can do: >> >> import taurus >> dev = taurus.device('inj/diagnostics/cm_inj.01') >> curve = dev.GetCharge(0,1000) >> >> So, you could represent the curve using a PySignalSimulator device >> server as proxy, where a dynamic attribute was calculated like that, >> or having the result in an attribute of your device server. >> >> Maybe if you ask in any of the taurus mailing list, you can get a >> better answer: >> tau...@li... >> <mailto:tau...@li...> >> tau...@li... >> <mailto:tau...@li...> >> >> >> Hope this help you!! >> >> Best, >> Carlos Falcon > > > ------------------------------------------------------------------------------ > > > _______________________________________________ > Tauruslib-devel mailing list > Tau...@li... > https://lists.sourceforge.net/lists/listinfo/tauruslib-devel -- -- ALBA Synchrotron <http://www.albasynchrotron.es> Zbigniew Reszela Controls Section - Computing Division ALBA SYNCHROTRON LIGHT SOURCE Ctra. BP 1413 km. 3,3 | 08290 | Cerdanyola del Vallès| Barcelona | Spain <http://www.albasynchrotron.es/AboutUs/Access> (+34) 93 592 4407 www.albasynchrotron.es <http://www.albasynchrotron.es>| zre...@ce... <mailto:zre...@ce...> **Please, do not print this e-mail unless it is absolutely necessary. **Si heu rebut aquest correu per error, us informo que pot contenir informació confidencial i privada i que està prohibit el seu ús. Us agrairíem que ho comuniqueu al remitent i l'elimineu. Gràcies. Si ha recibido este correo por error, le informo de que puede contener información confidencial y privada y que está prohibido su uso. Le agradeceré que lo comunique a su remitente y lo elimine. Gracias. If you have received this e-mail in error, please note that it may contain confidential and private information, therefore, the use of this information is strictly forbidden. Please inform the sender of the error and delete the information received. Thank you. |
From: Александр С. <sen...@gm...> - 2015-08-03 07:05:53
|
Hello. I have been faced with a problem. When i connect to tango server from taurus client, server memory usage grows. When i use C++ client or jive, it doesn't. When server increases memory consumption, taurus client issues a warning: Dummy-2 WARNING 2015-07-30 18:24:55,560 devhost:10000.simple2/gen/dev1.signal.configuration: "Zombie" object (TangoConfiguration(devhost:10000/simple2/gen/dev1/signal?configuration)) received an event. Unsubscribing it. Tango Server system: CPU powerpc OS debian lenny gcc 4.3.2 Tango 8.1.2c zeromq 4.1.2 omniorb 4.1.6 Taurus Clietns system: CPU intel I7 OS debian 8 jessie amd 64 gcc 4.9 omniorb 4.1.6 zeromq 4.0.5 tango 8.1.2c taurus 3.3.1 I also started discussion in Tango forum: http://www.tango-controls.org/community/forums/topic/99/ |
From: Giacomo S. <gia...@el...> - 2015-07-30 14:42:33
|
Hello, thanks for your help. I almost realized what I need. Please see the attached source code. The problem (one of the problems, maybe), is that maybe when I update the values of the four curves in the plot I should not call attachRawData. What I see actually, are the curves flickering (appearing and disappearing) at each refresh. This means they are continuosly removed/re added. In the documentation I've not found the correct method to simply fetch the curve with a given name and change its values. Thanks for any help. Giacomo. On 07/29/2015 10:07 AM, Carlos Manuel Falcon Torres wrote: > Hi Giacomo, > Unfortunately the Taurus plotting GUIs do not have API for manage > commands. The only one how can do it is the TaurusCommandButton > (which accepts parameters). > > From the core side, you can do it (using the PyTango API of taurus), > I mean , > You can do: > > import taurus > dev = taurus.device('inj/diagnostics/cm_inj.01') > curve = dev.GetCharge(0,1000) > > So, you could represent the curve using a PySignalSimulator device > server as proxy, where a dynamic attribute was calculated like that, > or having the result in an attribute of your device server. > > Maybe if you ask in any of the taurus mailing list, you can get a > better answer: > tau...@li... > <mailto:tau...@li...> > tau...@li... > <mailto:tau...@li...> > > > Hope this help you!! > > Best, > Carlos Falcon |
From: Carlos M. F. T. <cf...@ce...> - 2015-07-30 14:15:38
|
Hi Giacomo, First at all, I moved the thread to the taurus list, that is more convenient for this kind of discussions. If you are not in there, you can subscribe it in http://sourceforge.net/p/tauruslib/taurus-devel/?source=navbar I'm not able to reproduce your problem in my system (Tango8, PyTango8.1.3 and Taurus from git (develop branch)). So, we need more information for help you. Which tango, pytango and taurus libraries are you using? Can you plot the two attribute separately? % taurusplot tom:20000/sr/feedback/bpm_s1.2/HorSpectrum %taurusplot tom:20000/sr/feedback/bpm_s1.2/VerSpectrum Can you reproduce the problem with tangotest and DevFloat attributes: % taurusplot sys/tg_test/1/float_spectrum sys/tg_test/1/float_spectrum_ro or % taurusplot tango://TANGOHOST1/sys/tg_test/1/float_spectrum_ro tango://TANGOHOST2/sys/tg_test/1/float_spectrum_ro Do you have configure events in your device? Or, Do you do something special with these attributes? Could you try to reproduce the problem with the attached device server (it uses polling)? You can test it with taurusplot or your code. % taurusplot twodevfloat/test/1/attr_1 twodevfloat/test/1/attr_2 Best, Carlos Falcon > > > > -------- Forwarded Message -------- > Subject: Problem with TaurusPlot > Date: Thu, 30 Jul 2015 10:58:08 +0200 > From: Giacomo S. <gia...@el...> > To: ta...@es..., cou...@es... > > > > hello Tiago, hello Tangoers. > > The attached screenshot shows two applications (on the left a Taurus > plot, on the right a QTango GUI) that plot the very same tango attributes, > spectrum ones, namely HorSpectrum and VerSpectrum. > > It happens that the Taurus plot does not show both curves, as you can > see in the plot on the right. > > If I click on the legends and hide one curve, I can see that the second > one is "below", with its different colour. > > I am not able to reproduce the issue if I configure a taurus plot with > double_spectrum_ro and long_spectrum_ro from TangoTest device. In this case, > everything works as expected. > > I mention that HorSpectrum and VerSpectrum are DevFloat. > > > I also attach the piece of code I am running. > > Thanks for Your attention > > Giacomo. > > > |
From: Sergi Blanch-T. <sb...@ce...> - 2015-07-27 09:35:21
|
Hello, I've found that the reimplementation of the setFilterEvents in the classes TaurusPlot and TaurusTrend didn't have the "preqt" boolean in the arguments. I've prepared a patch to have this argument and to propagate is to the curves composing the widget. Thanks -- Sergi Blanch-Torné Controls Section - Computing Division ALBA SYNCHROTRON LIGHT SOURCE Ctra. BP1413 km. 3,3 | 08290 | Cerdanyola del Vallès | Barcelona | Spain (+34) 93 592 4417 www.albasynchrotron.es | sb...@ce... Please, do not print this e-mail unless it is absolutely necessary. Si heu rebut aquest correu per error, us informo que pot contenir informació confidencial i privada i que està prohibit el seu ús. Us agrairíem que ho comuniqueu al remitent i l'elimineu. Gràcies. Si ha recibido este correo por error, le informo de que puede contener información confidencial y privada y que está prohibido su uso. Le agradeceré que lo comunique a su remitente y lo elimine. Gracias. If you have received this e-mail by error, please note that it may contain confidential and private information, therefore, the use of this information is strictly forbidden. Please inform the sender of the error and delete the information received. Thank you. |
From: Carlos P. <cpa...@ce...> - 2015-07-23 12:59:27
|
Hi, Sourceforge's git repos are operative again, so the backups in github will be removed. The backup for taurus is already removed and the one for sardana will follow as soon as the release-Jan15 is not needed anymore. Please use the official repos from sourceforge from now on. Cheers, Carlos On Wed 22 July 2015 10:12:33 Carlos Pascual wrote: > Hi, > > You probably noticed that, since last Thursday SourceForge suffered a > major downtime which affected the taurus and sardana > mailing lists among other services (see details in [1]). > > If you sent some email to the list and it hasn't gone through, > reconsider sending it again. > > At the moment of writing this, most of the "user" services are back, > but the "developer" tools (e.g. git repos) are still missing. > > If you need access to the **develop** git branches of taurus or > sardana, you can access them on the backup repos that I uploaded to > github [2]. We are also using these backup repos for coordinating the > Jul15 release. Please note that once the git services on sourceforge > are back to normal, these github backup repos won't be updated > anymore (and may be removed). > > Cheers, > > Carlos > > [1] https://sourceforge.net/blog/category/sitestatus/ > [2] https://github.com/cpascual -- +----------------------------------------------------+ Carlos Pascual Izarra Scientific Software Coordinator Computing Division ALBA Synchrotron [http://www.albasynchrotron.es] Carretera BP 1413 de Cerdanyola-Sant Cugat, Km. 3.3 E-08290 Cerdanyola del Valles (Barcelona), Spain E-mail: cpa...@ce... Phone: +34 93 592 4428 +----------------------------------------------------+ |
From: Carlos P. <cpa...@ce...> - 2015-07-23 11:35:27
|
Hi, just one correction to my previous email: I wrote the address of the taurus users mailing list as: > tau...@li... But it actually is: tau...@li... -- +----------------------------------------------------+ Carlos Pascual Izarra Scientific Software Coordinator Computing Division ALBA Synchrotron [http://www.albasynchrotron.es] Carretera BP 1413 de Cerdanyola-Sant Cugat, Km. 3.3 E-08290 Cerdanyola del Valles (Barcelona), Spain E-mail: cpa...@ce... Phone: +34 93 592 4428 +----------------------------------------------------+ |
From: Carlos P. <cpa...@ce...> - 2015-07-23 11:27:31
|
Hi all, The new Taurus release 3.6.0 (corresponding to the Jul15 milestone) is now available to download from PyPI (source and windows installer): http://pypi.python.org/pypi/taurus/3.6.0 To install from source, download the tarball, untar and run: % python setup.py install The documentation is available at: http://www.taurus-scada.org The main improvements since taurus 3.4.0 (aka Jan15) are: - support of user creation/removal of custom external application launchers at run time (see #158) - support of LimaCCDs DS (see #175) and improvements in the codecs - taurusplot/trend uses the same order than the legend for exported data (see #161) - Fixed memory leaks in plots/trends (see #171) - fixed many bugs in TaurusPlot, TaurusWheel, TaurusImageDialog, and several other places - Docs: several improvements and made ReadTheDocs-compliant For a detailed list of solved issues, see: http://sourceforge.net/p/tauruslib/tickets/milestone/Jul15/ You can also get the full log of commits, from your local git repo with: git log 3.4.0..3.6.0 If you encounter problems installing or running this release, please report them back to the taurus mailing list: tau...@li... or put a ticket in the taurus project: http://sourceforge.net/p/tauruslib/tickets/ Cheers! Carlos (on behalf of all the release team) PS: before someone asks about the jump in version number... a v3.5.0 exists in the git repo but was not released in pypi ;) -- +----------------------------------------------------+ Carlos Pascual Izarra Scientific Software Coordinator Computing Division ALBA Synchrotron [http://www.albasynchrotron.es] Carretera BP 1413 de Cerdanyola-Sant Cugat, Km. 3.3 E-08290 Cerdanyola del Valles (Barcelona), Spain E-mail: cpa...@ce... Phone: +34 93 592 4428 +----------------------------------------------------+ |
From: cpascual <cpa...@ce...> - 2015-07-23 09:25:35
|
Add version numbers in docs and index pages. --- doc/source/docs.rst | 6 +++--- doc/source/index.rst | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/source/docs.rst b/doc/source/docs.rst index ad00e5b..8900855 100644 --- a/doc/source/docs.rst +++ b/doc/source/docs.rst @@ -3,9 +3,9 @@ .. _docs: -==================== -Taurus documentation -==================== +============================== +Taurus |version| documentation +============================== Taurus is a free, open source, multi-platform pure Python module for creating and supporting Graphical User Interfaces for experiment control and data acquisition. diff --git a/doc/source/index.rst b/doc/source/index.rst index 53ba773..f16fbdd 100644 --- a/doc/source/index.rst +++ b/doc/source/index.rst @@ -43,7 +43,7 @@ Projects related to Taurus docs :Last Update: |today| - +:Release: |release| .. _Tango: http://www.tango-controls.org/ .. _PyTango: http://packages.python.org/PyTango/ -- 2.1.4 |
From: Carlos P. <cpa...@ce...> - 2015-07-22 08:13:13
|
Hi, You probably noticed that, since last Thursday SourceForge suffered a major downtime which affected the taurus and sardana mailing lists among other services (see details in [1]). If you sent some email to the list and it hasn't gone through, reconsider sending it again. At the moment of writing this, most of the "user" services are back, but the "developer" tools (e.g. git repos) are still missing. If you need access to the **develop** git branches of taurus or sardana, you can access them on the backup repos that I uploaded to github [2]. We are also using these backup repos for coordinating the Jul15 release. Please note that once the git services on sourceforge are back to normal, these github backup repos won't be updated anymore (and may be removed). Cheers, Carlos [1] https://sourceforge.net/blog/category/sitestatus/ [2] https://github.com/cpascual -- +----------------------------------------------------+ Carlos Pascual Izarra Scientific Software Coordinator Computing Division ALBA Synchrotron [http://www.albasynchrotron.es] Carretera BP 1413 de Cerdanyola-Sant Cugat, Km. 3.3 E-08290 Cerdanyola del Valles (Barcelona), Spain E-mail: cpa...@ce... Phone: +34 93 592 4428 +----------------------------------------------------+ |
From: Carlos P. <cpa...@ce...> - 2015-07-22 07:05:30
|
-- +----------------------------------------------------+ Carlos Pascual Izarra Scientific Software Coordinator Computing Division ALBA Synchrotron [http://www.albasynchrotron.es] Carretera BP 1413 de Cerdanyola-Sant Cugat, Km. 3.3 E-08290 Cerdanyola del Valles (Barcelona), Spain E-mail: cpa...@ce... Phone: +34 93 592 4428 +----------------------------------------------------+ |
From: Zbigniew R. <zre...@ce...> - 2015-07-15 17:13:49
|
Hi Carlos, I've applied your patches to develop. Indeed in the modern OS version, like mine openSUSE 13.1, the leak disappeared completely. In the openSUSE 11.1 (both 32 and 64 bits) I have seen sporadic increases of the memory, but for sure not proportional to the application uptime. The application can last for tens of hours with the same memory footprint, but it may slightly change (<100 bytes) in some unknown occasions. Thanks for your contribution! Zibi On 07/10/2015 02:51 PM, cpascual wrote: > Hi, these are (partial)fixes for mem leaks in Taurusplot . > After applying them, the leaks are stopped in debian (AFAIK) and > reduced in suse11. > > [PATCH 1/2] Fix memleak in TaurusPlot (partial fix of bug-171) > [PATCH 2/2] Change width of default pen (workaround for bug-171) > > ------------------------------------------------------------------------------ > Don't Limit Your Business. Reach for the Cloud. > GigeNET's Cloud Solutions provide you with the tools and support that > you need to offload your IT needs and focus on growing your business. > Configured For All Businesses. Start Your Cloud Today. > https://www.gigenetcloud.com/ > _______________________________________________ > Tauruslib-devel mailing list > Tau...@li... > https://lists.sourceforge.net/lists/listinfo/tauruslib-devel -- -- ALBA Synchrotron <http://www.albasynchrotron.es> Zbigniew Reszela Controls Section - Computing Division ALBA SYNCHROTRON LIGHT SOURCE Ctra. BP 1413 km. 3,3 | 08290 | Cerdanyola del Vallès| Barcelona | Spain <http://www.albasynchrotron.es/AboutUs/Access> (+34) 93 592 4407 www.albasynchrotron.es <http://www.albasynchrotron.es>| zre...@ce... <mailto:zre...@ce...> **Please, do not print this e-mail unless it is absolutely necessary. **Si heu rebut aquest correu per error, us informo que pot contenir informació confidencial i privada i que està prohibit el seu ús. Us agrairíem que ho comuniqueu al remitent i l'elimineu. Gràcies. Si ha recibido este correo por error, le informo de que puede contener información confidencial y privada y que está prohibido su uso. Le agradeceré que lo comunique a su remitente y lo elimine. Gracias. If you have received this e-mail in error, please note that it may contain confidential and private information, therefore, the use of this information is strictly forbidden. Please inform the sender of the error and delete the information received. Thank you. |
From: Carlos P. <cpa...@ce...> - 2015-07-15 11:58:59
|
Patch applied to develop (with edited commit message). Thanks for contributing! On Tue 14 July 2015 16:14:06 dr...@ce... wrote: > From: Daniel Roldán Ballesteros <dr...@ce...> > > Add LimaCCDs class in RegisterExtension method. > This fix is to resolve the impossibility to subscrive event in > image attributes in Tango 7. > This Fix subscribes to 'image_count' attribute changes and for each > new image will push a new event with the image data and the source > like the image attribute. > --- > lib/taurus/core/tango/img/__init__.py | 3 ++- > lib/taurus/core/tango/img/img.py | 27 > +++++++++++++++++++++++++-- 2 files changed, 27 insertions(+), 3 > deletions(-) > > diff --git a/lib/taurus/core/tango/img/__init__.py > b/lib/taurus/core/tango/img/__init__.py index eb95ef4..a6be985 100644 > --- a/lib/taurus/core/tango/img/__init__.py > +++ b/lib/taurus/core/tango/img/__init__.py > @@ -38,4 +38,5 @@ def registerExtensions(): > factory.registerDeviceClass('ImgGrabber', ImgGrabber) > factory.registerDeviceClass('ImgBeamAnalyzer', ImgBeamAnalyzer) > factory.registerDeviceClass('CCDPVCAM', CCDPVCAM) > - factory.registerDeviceClass('Falcon', Falcon) > \ No newline at end of file > + factory.registerDeviceClass('Falcon', Falcon) > + factory.registerDeviceClass('LimaCCDs', LimaCCDs) > diff --git a/lib/taurus/core/tango/img/img.py > b/lib/taurus/core/tango/img/img.py index da2df08..455b720 100644 > --- a/lib/taurus/core/tango/img/img.py > +++ b/lib/taurus/core/tango/img/img.py > @@ -27,7 +27,7 @@ > 2D detectors""" > > __all__ = ['ImageDevice', 'ImageCounterDevice', 'PyImageViewer', > 'ImgGrabber', - 'CCDPVCAM', 'ImgBeamAnalyzer', 'Falcon'] > + 'CCDPVCAM', 'ImgBeamAnalyzer', 'Falcon', 'LimaCCDs'] > > __docformat__ = 'restructuredtext' > > @@ -35,6 +35,7 @@ __docformat__ = 'restructuredtext' > from taurus.core.taurusbasetypes import TaurusEventType > from taurus.core.tango import TangoDevice > from taurus.core.util.containers import CaselessDict, CaselessList > +from threading import RLock > > class ImageDevice(TangoDevice): > """A class encapsulating a generic image device""" > @@ -143,4 +144,26 @@ class ImgBeamAnalyzer(ImageCounterDevice): > > def __init__(self, name, image_name='roiimage', **kw): > self.call__init__(ImageCounterDevice, name, image_name, **kw) > - > + > +class LimaCCDs(ImageCounterDevice): > + > + def __init__(self, name, image_name='video_last_image', **kw): > + self.call__init__(ImageCounterDevice, name, image_name, **kw) > + self.rlock = RLock() > + self.processing = False > + > + def getImageIDAttrName(self): > + return 'video_last_image_counter' > + > + def eventReceived(self, evt_src, evt_type, evt_value): > + if evt_src == self._image_id_attr and self.processing == > False: + if evt_type == TaurusEventType.Change: > + with self.rlock: > + self.processing = True > + attr_image = > self.getAttribute('video_last_image') + evt_value > = attr_image.read(False) > + attr_image.fireEvent(evt_type, evt_value) > + self.processing = False > + > + else: > + ImageCounterDevice.eventReceived(self, evt_src, evt_type, > evt_value) -- +----------------------------------------------------+ Carlos Pascual Izarra Scientific Software Coordinator Computing Division ALBA Synchrotron [http://www.albasynchrotron.es] Carretera BP 1413 de Cerdanyola-Sant Cugat, Km. 3.3 E-08290 Cerdanyola del Valles (Barcelona), Spain E-mail: cpa...@ce... Phone: +34 93 592 4428 +----------------------------------------------------+ |
From: <dr...@ce...> - 2015-07-14 14:14:35
|
From: Daniel Roldán Ballesteros <dr...@ce...> Add LimaCCDs class in RegisterExtension method. This fix is to resolve the impossibility to subscrive event in image attributes in Tango 7. This Fix subscribes to 'image_count' attribute changes and for each new image will push a new event with the image data and the source like the image attribute. --- lib/taurus/core/tango/img/__init__.py | 3 ++- lib/taurus/core/tango/img/img.py | 27 +++++++++++++++++++++++++-- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/lib/taurus/core/tango/img/__init__.py b/lib/taurus/core/tango/img/__init__.py index eb95ef4..a6be985 100644 --- a/lib/taurus/core/tango/img/__init__.py +++ b/lib/taurus/core/tango/img/__init__.py @@ -38,4 +38,5 @@ def registerExtensions(): factory.registerDeviceClass('ImgGrabber', ImgGrabber) factory.registerDeviceClass('ImgBeamAnalyzer', ImgBeamAnalyzer) factory.registerDeviceClass('CCDPVCAM', CCDPVCAM) - factory.registerDeviceClass('Falcon', Falcon) \ No newline at end of file + factory.registerDeviceClass('Falcon', Falcon) + factory.registerDeviceClass('LimaCCDs', LimaCCDs) diff --git a/lib/taurus/core/tango/img/img.py b/lib/taurus/core/tango/img/img.py index da2df08..455b720 100644 --- a/lib/taurus/core/tango/img/img.py +++ b/lib/taurus/core/tango/img/img.py @@ -27,7 +27,7 @@ 2D detectors""" __all__ = ['ImageDevice', 'ImageCounterDevice', 'PyImageViewer', 'ImgGrabber', - 'CCDPVCAM', 'ImgBeamAnalyzer', 'Falcon'] + 'CCDPVCAM', 'ImgBeamAnalyzer', 'Falcon', 'LimaCCDs'] __docformat__ = 'restructuredtext' @@ -35,6 +35,7 @@ __docformat__ = 'restructuredtext' from taurus.core.taurusbasetypes import TaurusEventType from taurus.core.tango import TangoDevice from taurus.core.util.containers import CaselessDict, CaselessList +from threading import RLock class ImageDevice(TangoDevice): """A class encapsulating a generic image device""" @@ -143,4 +144,26 @@ class ImgBeamAnalyzer(ImageCounterDevice): def __init__(self, name, image_name='roiimage', **kw): self.call__init__(ImageCounterDevice, name, image_name, **kw) - + +class LimaCCDs(ImageCounterDevice): + + def __init__(self, name, image_name='video_last_image', **kw): + self.call__init__(ImageCounterDevice, name, image_name, **kw) + self.rlock = RLock() + self.processing = False + + def getImageIDAttrName(self): + return 'video_last_image_counter' + + def eventReceived(self, evt_src, evt_type, evt_value): + if evt_src == self._image_id_attr and self.processing == False: + if evt_type == TaurusEventType.Change: + with self.rlock: + self.processing = True + attr_image = self.getAttribute('video_last_image') + evt_value = attr_image.read(False) + attr_image.fireEvent(evt_type, evt_value) + self.processing = False + + else: + ImageCounterDevice.eventReceived(self, evt_src, evt_type, evt_value) -- 1.8.1.4 |
From: cpascual <cpa...@ce...> - 2015-07-10 12:51:57
|
TaurusPlot defines a set of pens to use by default. They are set with width=2. It has been found that using width=2 causes a memory leak on replotting. Change the width to 1 to avoid triggering this mem leak. Note that this is just a workaround for the *default* pens. The leak will still appear if the pen is customised (e.g. by the user) --- lib/taurus/qt/qtgui/plot/taurusplot.py | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/lib/taurus/qt/qtgui/plot/taurusplot.py b/lib/taurus/qt/qtgui/plot/taurusplot.py index e931c18..b0824e8 100644 --- a/lib/taurus/qt/qtgui/plot/taurusplot.py +++ b/lib/taurus/qt/qtgui/plot/taurusplot.py @@ -67,13 +67,16 @@ class DummyLock(object): #from taurus.core.util.log import TraceIt, DebugIt, InfoIt, WarnIt -DFT_CURVE_PENS = [Qt.QPen(Qt.Qt.red, 2), - Qt.QPen(Qt.Qt.blue, 2), - Qt.QPen(Qt.Qt.green, 2), - Qt.QPen(Qt.Qt.magenta, 2), - Qt.QPen(Qt.Qt.cyan, 2), - Qt.QPen(Qt.Qt.yellow, 2), - Qt.QPen(Qt.Qt.black, 2)] +DFT_CURVE_PENS = [Qt.QPen(Qt.Qt.red), + Qt.QPen(Qt.Qt.blue), + Qt.QPen(Qt.Qt.green), + Qt.QPen(Qt.Qt.magenta), + Qt.QPen(Qt.Qt.cyan), + Qt.QPen(Qt.Qt.yellow), + Qt.QPen(Qt.Qt.black)] + +for __p in DFT_CURVE_PENS: + __p.setWidth(1) # TODO: we would like this to be 2, but bug #171 forces 1 class TaurusZoomer(Qwt5.QwtPlotZoomer): '''A QwtPlotZoomer that displays the label assuming that X values are timestamps''' -- 2.1.4 |
From: cpascual <cpa...@ce...> - 2015-07-10 12:51:53
|
Qwt has a mem leak in the QwtScaleEngine.transformation() method, which is used in several parts of Taurus (the TaurusPlot.setData method among them) to obtain the transformation type of a given axis(i.e., linear or log scale). Minimize the impact of this Qwt bug by caching the transformation type and providing a new getter for the transformation type. --- lib/taurus/qt/qtgui/plot/qwtdialog.py | 2 +- lib/taurus/qt/qtgui/plot/taurusplot.py | 38 ++++++++++++++++++++++++++++------ 2 files changed, 33 insertions(+), 7 deletions(-) diff --git a/lib/taurus/qt/qtgui/plot/qwtdialog.py b/lib/taurus/qt/qtgui/plot/qwtdialog.py index 65fac89..4c1424a 100644 --- a/lib/taurus/qt/qtgui/plot/qwtdialog.py +++ b/lib/taurus/qt/qtgui/plot/qwtdialog.py @@ -148,7 +148,7 @@ class TaurusPlotConfigDialog(Qt.QDialog): #qwt QwtPlot.axis enum type to relate our GUI combo name and qwt axis name (enum type). axes = [self.ui.y1ModeComboBox, self.ui.y2ModeComboBox, self.ui.xModeComboBox] for axis in range(len(axes)): - scaleType = self.parent.axisScaleEngine(axis).transformation().type() + scaleType = self.parent.getAxisTransformationType(axis) if scaleType == Qwt5.QwtScaleTransformation.Linear: axes[axis].setCurrentIndex(0) elif scaleType == Qwt5.QwtScaleTransformation.Log10: diff --git a/lib/taurus/qt/qtgui/plot/taurusplot.py b/lib/taurus/qt/qtgui/plot/taurusplot.py index 9f9185b..e931c18 100644 --- a/lib/taurus/qt/qtgui/plot/taurusplot.py +++ b/lib/taurus/qt/qtgui/plot/taurusplot.py @@ -765,12 +765,12 @@ class TaurusCurve(Qwt5.QwtPlotCurve, TaurusBaseComponent): if self.isFilteredWhenLog(): #filter out the nonpossitive elements if the scale is logarithmic if self.plot(): - type_ = self.plot().axisScaleEngine(self.xAxis()).transformation().type() + type_ = self.plot().getAxisTransformationType(self.xAxis()) if type_ == Qwt5.QwtScaleTransformation.Log10: x,y = numpy.array(x),numpy.array(y) valid = x>0 #this is an array of bools representing valid entries x , y = x[valid], y[valid] - type_ = self.plot().axisScaleEngine(self.yAxis()).transformation().type() + type_ = self.plot().getAxisTransformationType(self.yAxis()) if type_ == Qwt5.QwtScaleTransformation.Log10: x,y = numpy.array(x),numpy.array(y) valid = y>0 #this is an array of bools representing valid entries @@ -997,12 +997,15 @@ class TaurusPlot(Qwt5.QwtPlot, TaurusBaseWidget): self._curvePens = LoopList(DFT_CURVE_PENS) self._gridPen = Qt.QPen(Qt.Qt.gray, 1) self._supportedConfigVersions = ["tpc-1","tpc-1.1"] #the latest element of this list is considered the current version + # Logger.__init__(self) # Qwt5.QwtPlot.__init__(self, parent) #dictionary for default axes naming self._axesnames = {Qwt5.QwtPlot.xBottom:'X',Qwt5.QwtPlot.xTop:'X2', Qwt5.QwtPlot.yLeft:'Y1', Qwt5.QwtPlot.yRight:'Y2'} + # cache for the values of the axis transformation + self.__transformations = {} #Data Import Dialog (it will only be initialised if required) self.DataImportDlg=None @@ -1223,6 +1226,29 @@ class TaurusPlot(Qwt5.QwtPlot, TaurusBaseWidget): # self.info('Dropped data is invalid (%s)'%repr(modelname)) # return + def getAxisTransformationType(self, axis): + """Retrieve the transformation type for a given axis (cached) + + :param axis: (Qwt5.QwtPlot.Axis) the axis + + :return: (Qwt5.QwtScaleTransformation.Type) + + .. note:: thismethod helps to avoid a memory leak in Qwt (see + http://sf.net/p/tauruslib/tickets/171 ) + """ + try: + return self.__transformations[axis] + except KeyError: + t = self.axisScaleEngine(axis).transformation().type() + self.__transformations[axis] = t + return t + + def setAxisScaleEngine(self, axis, scaleEngine): + """ reimplemented from :meth:`Qwt5.QwtPlot.setAxisScaleEngine` to store + a cache of the transformation type """ + self.__transformations[axis] = scaleEngine.transformation().type() + return Qwt5.QwtPlot.setAxisScaleEngine(self, axis, scaleEngine) + def getCurveTitle(self, curvename): '''return the current title associated to a given curve name @@ -2150,9 +2176,9 @@ class TaurusPlot(Qwt5.QwtPlot, TaurusBaseWidget): y1Min, y1Max= self.getAxisScale(Qwt5.QwtPlot.yLeft) y2Min, y2Max= self.getAxisScale(Qwt5.QwtPlot.yRight) axesdict= {'xMin': xMin, 'xMax': xMax, 'y1Min': y1Min, 'y1Max': y1Max, 'y2Min': y2Min, 'y2Max': y2Max, - 'xMode': int(self.axisScaleEngine(Qwt5.QwtPlot.xBottom).transformation().type()), - 'y1Mode':int(self.axisScaleEngine(Qwt5.QwtPlot.yLeft).transformation().type()), - 'y2Mode':int(self.axisScaleEngine(Qwt5.QwtPlot.yRight).transformation().type()), + 'xMode': int(self.getAxisTransformationType(Qwt5.QwtPlot.xBottom)), + 'y1Mode':int(self.getAxisTransformationType(Qwt5.QwtPlot.yLeft)), + 'y2Mode':int(self.getAxisTransformationType(Qwt5.QwtPlot.yRight)), 'xDyn': self.getXDynScale(), 'xIsTime':self.getXIsTime() } @@ -2438,7 +2464,7 @@ class TaurusPlot(Qwt5.QwtPlot, TaurusBaseWidget): if not Qwt5.QwtPlot.axisValid(axis): self.error("TaurusPlot.setScale() invalid axis: " + axis) if scale is None: - currentType = self.axisScaleEngine(axis).transformation().type() + currentType = self.getAxisTransformationType(axis) if currentType == Qwt5.QwtScaleTransformation.Linear: scale = Qwt5.QwtScaleTransformation.Log10 elif currentType == Qwt5.QwtScaleTransformation.Log10: -- 2.1.4 |