Re: [Veusz-discuss] Import plugin crash at startup
Dear Jason, I am the writer of this plugin mdfreader. I indeed had this concern with previous Veusz versions.. Please download the latest mdfreader dataplugin version, it should be working. Aymeric Le 31/05/13 16:16, Jason Zink a écrit : Hello, I am trying to use a plugin to read MDF files (from here: http://code.google.com/p/mdfreader/), but the plugin appears to be crashing for some reason. Since the import plugin was added to the list of plugins to load (via the preferences dialog) the whole Veusz application shuts down immediately after startup. I tried to uninstall Veusz and reinstall it, but it always remembers that plugin and tries to load it at startup. This effectively disables the tool completely! Is there some way to manually remove a plugin from the list? If so, where can I find the appropriate files to do so? Thanks in advance for your help! - Jason Zink ___ Veusz-discuss mailing list Veusz-discuss@gna.org https://mail.gna.org/listinfo/veusz-discuss ___ Veusz-discuss mailing list Veusz-discuss@gna.org https://mail.gna.org/listinfo/veusz-discuss
Re: [Veusz-discuss] Import plugin crash at startup
Jeremy Sanders writes: > > On 31/05/13 19:36, Zink Jason (DGS-EC/PJ-GMP) wrote: > > > Perhaps you could briefly give some pointers on the origin of the crashing plugin. When I tried to load the > plugin I followed the directions that were provided with it, to copy its Python file mdfreader.py to the > Veusz directory. I then added the plugin to my preferences as described on the wiki. > > > > The software attempts to load the plugin, but then fails saying that it doesn't have access to the > 'multiprocessing' module. I read on some of your other posts that Veusz has its own version of Python > bundled in with it. Does this mean that the built-in version of Python doesn't include 'multiprocessing'? > > Veusz doesn't include the multiprocessing module in its version of > Python, so that's probably the problem. > > You might be able to copy the multiprocessing module from the standard > distribution of python and put it in the same directory as your plugin. > > Alternatively, you can edit the plugin to add the location of the > multiprocessing module, e.g. > > import sys > sys.path.append('/some/location...') > > Jeremy > That get's me a bit further (adding the local installation directory to the path) but there is still some errors. The application is able to find and load the multiprocessing module, but one of the python scripts within that module (util.py) is trying to 'from subprocess import _args_from_interpreter_flags', and it can't find that name in the subprocess module. This seems to me that portions of the python modules are being loaded from within Veusz and the ones that aren't already packed in are loaded from the external reference. Perhaps they are each referencing different versions of the subprocess module? I apologize for the questions - I'm not very experienced with Python... Has anyone successfully used this plugin before? The link is here: http://code.google.com/p/mdfreader/. Even if someone can just confirm that it loads properly in their installation then it would be a big help to my debugging activities. Thanks again for your help. ___ Veusz-discuss mailing list Veusz-discuss@gna.org https://mail.gna.org/listinfo/veusz-discuss
Re: [Veusz-discuss] Import plugin crash at startup
On 31/05/13 19:36, Zink Jason (DGS-EC/PJ-GMP) wrote: Perhaps you could briefly give some pointers on the origin of the crashing plugin. When I tried to load the plugin I followed the directions that were provided with it, to copy its Python file mdfreader.py to the Veusz directory. I then added the plugin to my preferences as described on the wiki. The software attempts to load the plugin, but then fails saying that it doesn't have access to the 'multiprocessing' module. I read on some of your other posts that Veusz has its own version of Python bundled in with it. Does this mean that the built-in version of Python doesn't include 'multiprocessing'? Veusz doesn't include the multiprocessing module in its version of Python, so that's probably the problem. You might be able to copy the multiprocessing module from the standard distribution of python and put it in the same directory as your plugin. Alternatively, you can edit the plugin to add the location of the multiprocessing module, e.g. import sys sys.path.append('/some/location...') Jeremy ___ Veusz-discuss mailing list Veusz-discuss@gna.org https://mail.gna.org/listinfo/veusz-discuss
Re: [Veusz-discuss] Import plugin crash at startup
On 05/31/2013 04:16 PM, Jason Zink wrote: Is there some way to manually remove a plugin from the list? If so, where can I find the appropriate files to do so? Dear Jason You can delete the Veusz preferences (detailed here): http://www.barmag.net/veusz-wiki/PreferencesFile You can edit the file (or registry) to remove the bad plugin, or delete it altogether. I need to add some code to catch errors in plugin initialisation so that the application can start. Jeremy ___ Veusz-discuss mailing list Veusz-discuss@gna.org https://mail.gna.org/listinfo/veusz-discuss
Re: [Veusz-discuss] Import plugin - importing datetime data
On 12/09/11 15:16, mimisa...@gmail.com wrote: Thanks! Now my import plugin works fine, imports datetime, and constants too! Only a little more question, my return statement now is something like this: rerturn [ImportConstant(...bla bla...] + [datasetplugin.DatasetDateTime(columnNames[0],data[0])]+ ... the ImportConstant() method in the future will become datasetplugin.Constant() or it will not change? I've just renamed them now for consistency. So ImportConstant is now Constant and ImportFunction is Function. Thanks Jeremy ___ Veusz-discuss mailing list Veusz-discuss@gna.org https://mail.gna.org/listinfo/veusz-discuss
Re: [Veusz-discuss] Import plugin - importing datetime data
Thanks! Now my import plugin works fine, imports datetime, and constants too! Only a little more question, my return statement now is something like this: rerturn [ImportConstant(...bla bla...] + [datasetplugin.DatasetDateTime(columnNames[0],data[0])]+ ... the ImportConstant() method in the future will become datasetplugin.Constant() or it will not change? Valerio. On 08/09/2011 20:24, Jeremy Sanders wrote: mimisa...@gmail.com wrote: I tried also to return a constant from the import plugin (using the development version in the repository) but probably something was wrong in my code, because I got an error. My code for the import plugin is: def doImport(self, params): #bla bla bla return [ImportConstant("constName","10")] Thanks - I've fixed the code in the development tree. The import dialog also prints returned constants/functions. Doing my trials I noticed two things: 1. In the on-line manual the documentation for AddCustom says: AddCustom(name, type, value) but I think It should be AddCustom(type, name, value) Correct - I've fixed the docs. I should get the API docs out of the Python docstrings, but I haven't done this yet. 2. I was a bit silly, but writing my importplugin I used a string with a whitespace ("Split Datasets") as the "name" of an ImportFieldCheck. The plugin worked well, but when I saved the document containing the imported data, and tried to reopen it I got an error, because of this line of document: ImportFilePlugin(u'MUSP furnace import plugin', u'2011-05-10_Spezzone 04.txt', linked=True, encoding='latin_1', name=u'name', split Datasets=False) The problem is that my "Split Dataset" is not a valid variable name, it is not a bug. In my opinion it could be useful to add a note in the documentation of the importfields explaining that the string "name" has to be a valid variable name. Good idea. Feel free to update the wiki. I'll do it later when I remember. Thanks Jeremy ___ Veusz-discuss mailing list Veusz-discuss@gna.org https://mail.gna.org/listinfo/veusz-discuss ___ Veusz-discuss mailing list Veusz-discuss@gna.org https://mail.gna.org/listinfo/veusz-discuss
Re: [Veusz-discuss] Import plugin - importing datetime data
mimisa...@gmail.com wrote: > I tried also to return a constant from the import plugin (using the > development version in the repository) but probably something was wrong > in my code, because I got an error. > My code for the import plugin is: > def doImport(self, params): > #bla bla bla > return [ImportConstant("constName","10")] Thanks - I've fixed the code in the development tree. The import dialog also prints returned constants/functions. > Doing my trials I noticed two things: > 1. > In the on-line manual the documentation for AddCustom says: > AddCustom(name, type, value) but I think It should be AddCustom(type, > name, value) Correct - I've fixed the docs. I should get the API docs out of the Python docstrings, but I haven't done this yet. > 2. > I was a bit silly, but writing my importplugin I used a string with a > whitespace ("Split Datasets") as the "name" of an ImportFieldCheck. The > plugin worked well, but when I saved the document containing the > imported data, and tried to reopen it I got an error, because of this > line of document: > ImportFilePlugin(u'MUSP furnace import plugin', > u'2011-05-10_Spezzone 04.txt', linked=True, encoding='latin_1', > name=u'name', split Datasets=False) > The problem is that my "Split Dataset" is not a valid variable name, it > is not a bug. In my opinion it could be useful to add a note in the > documentation of the importfields explaining that the string "name" has > to be a valid variable name. Good idea. Feel free to update the wiki. I'll do it later when I remember. Thanks Jeremy ___ Veusz-discuss mailing list Veusz-discuss@gna.org https://mail.gna.org/listinfo/veusz-discuss
Re: [Veusz-discuss] Import plugin - importing datetime data
Hi Jeremy, I wrote a tool plugin as you suggested, and it worked. But in my opinion my code is not very efficient, because the tool plugin calls the import plugin and then reopens the data file in order read the constants... but it works! I tried also to return a constant from the import plugin (using the development version in the repository) but probably something was wrong in my code, because I got an error. My code for the import plugin is: def doImport(self, params): #bla bla bla return [ImportConstant("constName","10")] And the traceback is: Traceback (most recent call last): File "D:\Valerio Mussi\Documents\Python\veusz\dialogs\importdialog.py", line 950, in slotImport prefix, suffix) File "D:\Valerio Mussi\Documents\Python\veusz\dialogs\importdialog.py", line 745, in doImport results = doc.applyOperation(op) File "D:\Valerio Mussi\Documents\Python\veusz\document\doc.py", line 162, in applyOperation retn = operation.do(self) File "D:\Valerio Mussi\Documents\Python\veusz\document\operations.py", line 1287, in do ds.linked = linked UnboundLocalError: local variable 'ds' referenced before assignment Doing my trials I noticed two things: 1. In the on-line manual the documentation for AddCustom says: AddCustom(name, type, value) but I think It should be AddCustom(type, name, value) 2. I was a bit silly, but writing my importplugin I used a string with a whitespace ("Split Datasets") as the "name" of an ImportFieldCheck. The plugin worked well, but when I saved the document containing the imported data, and tried to reopen it I got an error, because of this line of document: ImportFilePlugin(u'MUSP furnace import plugin', u'2011-05-10_Spezzone 04.txt', linked=True, encoding='latin_1', name=u'name', split Datasets=False) The problem is that my "Split Dataset" is not a valid variable name, it is not a bug. In my opinion it could be useful to add a note in the documentation of the importfields explaining that the string "name" has to be a valid variable name. Thanks, Valerio Mussi. On 06/09/2011 10:22, Jeremy Sanders wrote: mimisa...@gmail.com wrote: Hi Jeremy, I used the workaround you suggested and it works fine. Another little question: in the header of my data file I have some rows, useful for plotting and manipulating data, stored in the form: SampleFrequency = xxxyyyHy I'd like to use them in order to crate Vuesz constants. Is there a way to create constants programmatically in an importPlugin? I've added some code which mostly works for returning constants from an import plugin as extra dataset-like objects. It's in the development version: https://github.com/jeremysanders/veusz/commit/4b9905c4c696f507556a0541a2bba77f4fa34fa6 At the moment you could write a tools plugin which does the import and then calls AddCustom to add your variables. There is an issue with that API I notice, however. Adding multiple definitions with the same name leaves the originals intact, though the later ones override the earlier ones. I ought to fix that... Jeremy ___ Veusz-discuss mailing list Veusz-discuss@gna.org https://mail.gna.org/listinfo/veusz-discuss ___ Veusz-discuss mailing list Veusz-discuss@gna.org https://mail.gna.org/listinfo/veusz-discuss
Re: [Veusz-discuss] Import plugin - importing datetime data
mimisa...@gmail.com wrote: > Hi Jeremy, > I used the workaround you suggested and it works fine. > Another little question: in the header of my data file I have some rows, > useful for plotting and manipulating data, stored in the form: > SampleFrequency = xxxyyyHy > I'd like to use them in order to crate Vuesz constants. Is there a way > to create constants programmatically in an importPlugin? I've added some code which mostly works for returning constants from an import plugin as extra dataset-like objects. It's in the development version: https://github.com/jeremysanders/veusz/commit/4b9905c4c696f507556a0541a2bba77f4fa34fa6 At the moment you could write a tools plugin which does the import and then calls AddCustom to add your variables. There is an issue with that API I notice, however. Adding multiple definitions with the same name leaves the originals intact, though the later ones override the earlier ones. I ought to fix that... Jeremy ___ Veusz-discuss mailing list Veusz-discuss@gna.org https://mail.gna.org/listinfo/veusz-discuss
Re: [Veusz-discuss] Import plugin - importing datetime data
mimisa...@gmail.com wrote: > Hi Jeremy, > I used the workaround you suggested and it works fine. > Another little question: in the header of my data file I have some rows, > useful for plotting and manipulating data, stored in the form: > SampleFrequency = xxxyyyHy > I'd like to use them in order to crate Vuesz constants. Is there a way > to create constants programmatically in an importPlugin? Unfortunately I can't see a way to do that with the current API. You'd need to get access to the document object, which isn't exposed. It's definitely a useful thing to add however. Maybe the import function could also return some sort of ImportConstant objects with the datasets... I'll have a look. Jeremy ___ Veusz-discuss mailing list Veusz-discuss@gna.org https://mail.gna.org/listinfo/veusz-discuss
Re: [Veusz-discuss] Import plugin - importing datetime data
Hi Jeremy, I used the workaround you suggested and it works fine. Another little question: in the header of my data file I have some rows, useful for plotting and manipulating data, stored in the form: SampleFrequency = xxxyyyHy I'd like to use them in order to crate Vuesz constants. Is there a way to create constants programmatically in an importPlugin? Thank you very much, Valerio. On 04/09/2011 13:32, Jeremy Sanders wrote: mimisa...@gmail.com wrote: Hi all! First of all, thank you very much for VUESZ, it is really simple and effective. Since I discovered it I'm using it everyday. I'm trying to write an importPlugin to read the log files of a process control system I use at work. The problem is that the first column of data is a time-stamp in iso data format (-MM-DDThh:mm:ss.ss), but in the "Import plugins" page I cannot find a class able to import DateTime datasets (ImportDatasetDateTime ???). I've missed out date time datasets for import and dataset plugins. It won't be hard to fix this and they should be there. As a workaround, you can convert your datetime objects to veusz floating point times using import veusz.utils as utils utils.datetimetoFloat -> convert python datetime to float utils.dateStringToDate -> convert string containing iso or local dates to floats Then you can create a simple 1D dataset from these values. They won't show up correctly in the data edit dialog boxes, but they will plot. This isn't a standard api, however, and might be subject to change. Jeremy ___ Veusz-discuss mailing list Veusz-discuss@gna.org https://mail.gna.org/listinfo/veusz-discuss ___ Veusz-discuss mailing list Veusz-discuss@gna.org https://mail.gna.org/listinfo/veusz-discuss
Re: [Veusz-discuss] Import plugin - importing datetime data
mimisa...@gmail.com wrote: > Hi all! > First of all, thank you very much for VUESZ, it is really simple and > effective. Since I discovered it I'm using it everyday. > > I'm trying to write an importPlugin to read the log files of a process > control system I use at work. The problem is that the first column of data > is a time-stamp in iso data format (-MM-DDThh:mm:ss.ss), but in the > "Import plugins" page I cannot find a class able to import DateTime > datasets (ImportDatasetDateTime ???). I've missed out date time datasets for import and dataset plugins. It won't be hard to fix this and they should be there. As a workaround, you can convert your datetime objects to veusz floating point times using import veusz.utils as utils utils.datetimetoFloat -> convert python datetime to float utils.dateStringToDate -> convert string containing iso or local dates to floats Then you can create a simple 1D dataset from these values. They won't show up correctly in the data edit dialog boxes, but they will plot. This isn't a standard api, however, and might be subject to change. Jeremy ___ Veusz-discuss mailing list Veusz-discuss@gna.org https://mail.gna.org/listinfo/veusz-discuss
Re: [Veusz-discuss] Import plugin
3. I have an other question for you, sorry... The data I want to import are timeseries. It means for each data channels, I have a time channel related. The way mdf is made allows several data groups corresponding to one time channel (in total several time channels for several data groups). From my trials, the dataset2D is not corresponding to these data, the dataset1D either. Do you think I should implement a new data class to be managed by Veusz specifically for timeseries ? I'd simply import the time channel as t and each data series as d_1, d_2, d_3... You can use the clone widget plugin to add plots for each t and d_x data set. Jeremy I tried to import everything into 1D datasets. There can be like 10 x t (times vector, different lengths) to be imported, with like 200 data vectors. When doing a chart, you have to select y from the data, but the user can not tell which time vector is corresponding to the data. That is why implementing a timeseries class makes sense as for each data, there could be a attribute linking to the time vector name. But I guess then a new plot object/icon has to be also implemented, probably big job. Searching a bit on the net, I found following module to specifically manipulate timeseries : http://pytseries.sourceforge.net/contents.html Maybe overkilling for what is needed. I am not so familiar with the clone widget. There could be the trick to add at the end of each data name a number for time vector like _t1 ? But anyway, this not so convenient. Aymeric ___ Veusz-discuss mailing list Veusz-discuss@gna.org https://mail.gna.org/listinfo/veusz-discuss
Re: [Veusz-discuss] Import plugin
aymeric rateau wrote: > 3. I have an other question for you, sorry... The data I want to import > are timeseries. It means for each data channels, I have a time channel > related. The way mdf is made allows several data groups corresponding to > one time channel (in total several time channels for several data groups). > From my trials, the dataset2D is not corresponding to these data, the > dataset1D either. Do you think I should implement a new data class to be > managed by Veusz specifically for timeseries ? I'd simply import the time channel as t and each data series as d_1, d_2, d_3... You can use the clone widget plugin to add plots for each t and d_x data set. Jeremy ___ Veusz-discuss mailing list Veusz-discuss@gna.org https://mail.gna.org/listinfo/veusz-discuss
Re: [Veusz-discuss] Import plugin
Dear Jeremy, Thank you very much for answering. 1. Your proposal for adding a field in parameters of importplugin seems good. I would imagine simply a field called "number of header lines". It would take the first line/column for the data names and skip the rest of the lines/columns in header and start reading data just after header. I can also send a sample of the dataset I usually use if you want. To say honestly, this kind of data is quite common format in engineering field as it fits easily with excel. 2. Thank you, I will try. I saw in previous discussions an other person had same problem. Launching Veusz from source is working, so I will try what you've written with compiled version. 3. I have an other question for you, sorry... The data I want to import are timeseries. It means for each data channels, I have a time channel related. The way mdf is made allows several data groups corresponding to one time channel (in total several time channels for several data groups). From my trials, the dataset2D is not corresponding to these data, the dataset1D either. Do you think I should implement a new data class to be managed by Veusz specifically for timeseries ? Aymeric 2010/11/20 Jeremy Sanders > aymeric rateau wrote: > > > 1. I was not able to load csv file with more than 1 line of comment. I > > would say that most generally generated files from data acquisition > > equipment (like engine bench) contain at least 2 header lines, One for > the > > channel name and the second for the units. I could not find a field in > the > > import interface to allow csv import with more than 1 line header. Would > > it be possible to arrange this ? Ultimatively, it would be interesting to > > consider the unit in the code to be displayed with the channel name. > > It's difficult to think of a way of specifying the data format of any type > of CSV files. If anyone has a suggestion for how this might be done please > tell me! > > I could add an option to only have one set of data in a column/row and to > ignore any further text in that column. > > > 2. We use heavily the system INCA from ETAS company, generating MDF files > > (binary structure file a bit like netcdf or hdf5). I developed a module > > you could find source at following address : > > http://code.google.com/p/mdfreader/source/browse/ > > So, I am now writing a plugin for Veusz to be able to visualize/analyse > > recorded data. > > I want to use Veusz in windows (compiled version) but I can not use my > > plugin attached (located in plugin directory with dedicated mdf plugin). > > Inside the plugin, I do a import to my mdf reader module, but during > veusz > > launch, this module is not found. Would you know why and how to fix this > ? > > As the compiled versions has its own copy of python, any modules which are > installed in your local python aren't seen as it doesn't know about your > local python directory. > > You can try setting the PYTHONPATH environment variable to contain the > directory of your module. This should work as long as Veusz contains its > dependencies. > > Jeremy > > > > ___ > Veusz-discuss mailing list > Veusz-discuss@gna.org > https://mail.gna.org/listinfo/veusz-discuss > ___ Veusz-discuss mailing list Veusz-discuss@gna.org https://mail.gna.org/listinfo/veusz-discuss
Re: [Veusz-discuss] Import plugin
aymeric rateau wrote: > 1. I was not able to load csv file with more than 1 line of comment. I > would say that most generally generated files from data acquisition > equipment (like engine bench) contain at least 2 header lines, One for the > channel name and the second for the units. I could not find a field in the > import interface to allow csv import with more than 1 line header. Would > it be possible to arrange this ? Ultimatively, it would be interesting to > consider the unit in the code to be displayed with the channel name. It's difficult to think of a way of specifying the data format of any type of CSV files. If anyone has a suggestion for how this might be done please tell me! I could add an option to only have one set of data in a column/row and to ignore any further text in that column. > 2. We use heavily the system INCA from ETAS company, generating MDF files > (binary structure file a bit like netcdf or hdf5). I developed a module > you could find source at following address : > http://code.google.com/p/mdfreader/source/browse/ > So, I am now writing a plugin for Veusz to be able to visualize/analyse > recorded data. > I want to use Veusz in windows (compiled version) but I can not use my > plugin attached (located in plugin directory with dedicated mdf plugin). > Inside the plugin, I do a import to my mdf reader module, but during veusz > launch, this module is not found. Would you know why and how to fix this ? As the compiled versions has its own copy of python, any modules which are installed in your local python aren't seen as it doesn't know about your local python directory. You can try setting the PYTHONPATH environment variable to contain the directory of your module. This should work as long as Veusz contains its dependencies. Jeremy ___ Veusz-discuss mailing list Veusz-discuss@gna.org https://mail.gna.org/listinfo/veusz-discuss