[Tutor] regular expression matching a dot?
Hi I've got the problem that I need to find a certain group of file names within a lot of different file names. Those I want to match with a regular expression are a bit peculiar since they all look like: 07SS.INF , 10SE.INF, 13SS.INF, 02BS.INF, 05SS.INF. Unfortunately there are similar file names that shouldn't be matched, like: 01BE.INF, 02BS.INF Any other extension than 'INF' should also be skipped. (There are names like 07SS.E00, wich I don't want to see matched.) So I tried the following pattern (using re): \d+[SS|SE]\.INF - as there should be at least one digit, the group 'SE' or 'SS' followed by a dot and the extension 'INF'. Well, this doesn't work, no match. However, if I change the pattern to \d+[SS|SE] it somehow works and all all valid names are matched. But if there is a different extension than 'INF' it matches too - but it shouldn't. (Surrounding the dot with [] doesn't help, though I have no idea as for why.) Any ideas what I could do else? TIA Christian PS Hope that I described the problem well enough ... ___ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor
Re: [Tutor] regular expression matching a dot?
Actually, your answer did help to open my eyes. The expression is \d+S[S|E]\.INF: Ouch! Thanks a lot, Christian On 19 Oct 2005, at 12:11, Misto . wrote: [ Workaround ] What about using the glob module? http://docs.python.org/lib/module-glob.html you can use something like glob.glob('./[0-9][0-9]S[E|S].INF') (Not tested) Misto ___ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor
Re: [Tutor] regular expression matching a dot?
Thanks, corrected. I was happy now - and then too fast ;-). Cheers Christian On 19 Oct 2005, at 13:50, Kent Johnson wrote: Christian Meesters wrote: Actually, your answer did help to open my eyes. The expression is \d+S[S|E]\.INF: Ouch! That will work, but what you really mean is one of these: \d+S[SE]\.INF \d+S(S|E)\.INF Your regex will match 0S|.INF Kent ___ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor
[Tutor] PyDoc problem
Hi, PyDoc is working well, if invoked without flags on the modul in question. But when I use it with '-w' to produce html-output, I get an extremely long Traceback after a runtime of an hour or two. Here is a short part from it: Traceback (most recent call last): File /usr/bin/pydoc, line 4, in ? pydoc.cli() File /System/Library/Frameworks/Python.framework/Versions/2.3/lib/ python2.3/pydoc.py, line 2117, in cli writedoc(arg) File /System/Library/Frameworks/Python.framework/Versions/2.3/lib/ python2.3/pydoc.py, line 1383, in writedoc page = html.page(describe(object), html.document(object, name)) File /Users/maxwell/Packages/SciPy_complete-0.3.2/build/lib.darwin-7.7.0- Power_Macintosh-2.3/scipy_base/ppimport.py, line 397, in _scipy_pydoc_Doc_document File /System/Library/Frameworks/Python.framework/Versions/2.3/lib/ python2.3/pydoc.py, line 283, in document if inspect.ismodule(object): return self.docmodule(*args) snip File /System/Library/Frameworks/Python.framework/Versions/2.3/lib/ python2.3/repr.py, line 49, in repr_list s = s + self.repr1(x[i], level-1) File /System/Library/Frameworks/Python.framework/Versions/2.3/lib/ python2.3/pydoc.py, line 319, in repr1 return self.escape(cram(stripid(repr(x)), self.maxother)) File /System/Library/Frameworks/Python.framework/Versions/2.3/lib/ python2.3/pydoc.py, line 111, in stripid if re.search(pattern, repr(Exception)): File /System/Library/Frameworks/Python.framework/Versions/2.3/lib/ python2.3/sre.py, line 137, in search return _compile(pattern, flags).search(string) RuntimeError: maximum recursion depth exceeded What's going wrong? When I ask Pydoc to write html documentation for other modules there is no problem at all. It just works fine. And this traceback tell me nothing about my module, only about PyDoc. For it matters: I'm stuck with Python2.3 for compatibility reasons in this project and the module I'd like to see documented uses scipy and it is not really a small module anymore (about 1000 lines, including docstrings and comments). Anybody an idea how I can force PyDoc to produce html output on this module? TIA Christian ___ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor
Re: [Tutor] PyDoc problem
Hi Paul, works great and within a seond, if I just uncomment the scipy imports. This was easy, but without your help I still would stare at my screen and think it's hopeless. Thanks, Christian On 23 Sep 2005, at 13:18, paul brian wrote: THis sounds like a recursive import, which frankly should not happen but perhaps pydoc imports differently to the standard. Or it is trying to document the entire scipy framework, rather than just your module try firstly moving the module alone to directory foo and ensuring you are calling only that module pydoc -w mymodule Perhaps also try uncommenting imports at the top of the file (ie # import scipy) to see if that helps. On 9/23/05, Christian Meesters [EMAIL PROTECTED] wrote: Hi, PyDoc is working well, if invoked without flags on the modul in question. But when I use it with '-w' to produce html-output, I get an extremely long Traceback after a runtime of an hour or two. Here is a short part from it: Traceback (most recent call last): File /usr/bin/pydoc, line 4, in ? pydoc.cli() File /System/Library/Frameworks/Python.framework/Versions/2.3/lib/ python2.3/pydoc.py, line 2117, in cli writedoc(arg) File /System/Library/Frameworks/Python.framework/Versions/2.3/lib/ python2.3/pydoc.py, line 1383, in writedoc page = html.page(describe(object), html.document(object, name)) File /Users/maxwell/Packages/SciPy_complete-0.3.2/build/lib.darwin-7.7.0- Power_Macintosh-2.3/scipy_base/ppimport.py, line 397, in _scipy_pydoc_Doc_document File /System/Library/Frameworks/Python.framework/Versions/2.3/lib/ python2.3/pydoc.py, line 283, in document if inspect.ismodule(object): return self.docmodule(*args) snip File /System/Library/Frameworks/Python.framework/Versions/2.3/lib/ python2.3/repr.py, line 49, in repr_list s = s + self.repr1(x[i], level-1) File /System/Library/Frameworks/Python.framework/Versions/2.3/lib/ python2.3/pydoc.py, line 319, in repr1 return self.escape(cram(stripid(repr(x)), self.maxother)) File /System/Library/Frameworks/Python.framework/Versions/2.3/lib/ python2.3/pydoc.py, line 111, in stripid if re.search(pattern, repr(Exception)): File /System/Library/Frameworks/Python.framework/Versions/2.3/lib/ python2.3/sre.py, line 137, in search return _compile(pattern, flags).search(string) RuntimeError: maximum recursion depth exceeded What's going wrong? When I ask Pydoc to write html documentation for other modules there is no problem at all. It just works fine. And this traceback tell me nothing about my module, only about PyDoc. For it matters: I'm stuck with Python2.3 for compatibility reasons in this project and the module I'd like to see documented uses scipy and it is not really a small module anymore (about 1000 lines, including docstrings and comments). Anybody an idea how I can force PyDoc to produce html output on this module? TIA Christian ___ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor -- -- Paul Brian m. 07875 074 534 t. 0208 352 1741 ___ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor
Re: [Tutor] fourier transform
Hi Jeff, On 3 Aug 2005, at 02:03, Jeff Peery wrote: hope this is more clear. from the output I would expect that two spikes appear with amplitude = 1. [snip] I don't understand the output amplitudes. they should all be zero except for at one herz it should be one. not sure about the frequency for that matter either. I gotta dig up my math book and figure this out. in the meantime any suggestions for what this is outputing would be greatly appreciated! thanks. Yes, well, the math book idea might be a good one ;-). No, but seriously: You are just making a little mistake. First of all you are NOT exactly calculating a Fourier transform but a numerical estimation of it (you are dealing with an array of discrete data points, which is unavoidable when dealing with computers ;-)). Look on your sine wave. Is it a perfect one? Then, what do you see when you plot your data? Some 'noise' and one little peak. The noise is due to errors which have to do with floating point arithmetics (see http://docs.python.org/tut/node16.html). It's really small and in most cases I'm sure it's neglectable as well. But when looking on your idea of what you would expect, I'm wondering whether you actually want a power spectrum estimation (see http://mathworld.wolfram.com/PowerSpectrum.html)? Try myFFT = abs(fft.fft(inp)) instead of myFFT = fft.real_fft(inp) This a least might come close to what I think you want to see, right? You might have a look on myFFt = fft.fft(inp).real as well, because it might make things to appear a little clearer. One more remark: Try to avoid overwriting python key words like 'input'. Hope this helped. Cheers Christian PS Here is the code I used. It looks a bit different from yours - I hope the comments help a bit: from numarray import * import numarray.fft as fft #at least one of the numbers should be floating point here period = 1.0 #use numarray's / Numpy's pi instead of 3.14... inp = sin(arange(0,64)*pi*2/64.0) myFFT = abs(fft.fft(inp)) #or #myFFt = fft.fft(inp).real #or #myFFT = fft.real_fft(inp) #depending on what you really want dtime = period/64.0 dfreq = 1.0/dtime for i in range(len(myFFT)): print myFFT[i], dfreq*i ___ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor
Re: [Tutor] fourier transform
Hi Pawel Kraszewski wrote: 4. The answer is symmetrical - usually you take only half of it. I don't remember the exact difference between the halves, but you may find it in any article on FFT. The real part is identical the imaginary part has the opposite sign (same amplitude, opposite phase). Jeff Peery wrote: thanks for the help. I think I'm understanding this a bit better. although I still don't completely understand the output. here is an example... for the input I have 1024 samples taken from a 1 Hz square wave with amplitude = 1. for the output I would expect an infinite number of frequencies. the output from FFT.fft(myData).real is this: . . . -0.498 1 0.0 2 -0.498 3 0.0 4 -0.498 5 0.0 6 -0.498 7 0.0 8 Frankly, I don't understand this. After your description I thought your input is like array([0, 1, 0, ..., 1, 0, 1]). But this can't be. Could you show us how exactly your input array looks like? And how do we have to read your output? Is this a 1d-array? What do the two numbers per line mean? Cheers Christian PS Sorry for the late reply. ___ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor
Re: [Tutor] fourier transform
Jeff Peery wrote: Hello, I have a signal that I want to do a fourier transform on. I tried using FFT.fft(data).real but I don't understand the output. what is output from this function, and why doesn't it require amplitude and time as inputs? Hi Jeff, As Danny wrote, your input are real numbers and your output will be complex numbers. I don't want to point you to the numarray documentation once more, but you might to check out this: http://mathworld.wolfram.com/FourierSeries.html as for why you get complex numbers back. (To get only the real value part try real_fft() in numarrayl.) In general in numerical computation your input is simply a series of real numbers - of equal spacing in the dimension you want to consider. Which dimension you choose (amplitudes and time/phase or amplitudes and spacial frequencies and so on) is up to you. It depends on your physical or mathematical question. IMHO the best introduction you can get on Fourier Transforms programming can be found in Numerical Recipies (here the Numerical Recipies in C-link http://www.library.cornell.edu/nr/bookcpdf.html - check chapter 12). Have fun with FFTs! Cheers Christian ___ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor
[Tutor] finding path to resource files in a GUI application
Hi Currently I'm writing a GUI application with wxPython (on OS X, but I guess the problem is the same, regardless of the UNIX derivative one is using). When I start the main script where it is located the application finds all resource files (non-Python files like images and html files for html windows) without any problem. However, if a put a link in /usr/local/bin and start the script using the link the application cannot find those resource files - unless, of course, I will use full absolute paths to point to those files. One brief example to illustrate the problem: The class Goals is in a file called Help.py, located in '/gui_lib/' as seen from my main script. class Goals(wx.Frame): def __init__(self,parent,frame,title,size,pos=wx.DefaultPosition): wx.Frame.__init__(self,parent, -1,title,size,style=wx.DEFAULT_FRAME_STYLE) self.frame = frame self.cwd = os.getcwd() self.html = HtmlWindow(self,-1) self.html.LoadPage(os.path.join(self.cwd,'gui_lib/Goals.html')) #this, of course, won't work #if the main script is called from somewhere else and not the directory where the main script #is located Any ideas what I could use instead of os.getcwd to construct a relative path which will work even if I port the script to an other machine? Cheers Christian ___ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor
Re: [Tutor] finding path to resource files in a GUI
On 9 Jun 2005, at 12:00, Michael Lange wrote: Hi Christian, try self.cwd = os.path.abspath(sys.path[0]) sys.path[0] is the directory of your main program file, with os.path.abspath() you can get rid of the ../../ stuff at the beginning of the path if the program is called from a link. I hope this helps It does! Actually I tried abspath, but didn't think of this very combination with sys.path ... Thanks a lot! Danke, Christian ___ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor
[Tutor] classmethods
Hi I've asked a similar question before, but still I have to admit that I didn't find a solution with this particular problem here: Imaging you have a class with a certain __init__ function like: class MyClass: def __init__(parameter1, parameter2=default,*args,**kwargs): #handle all input And a member function like: def fromFile(cls,path): adict = {} alist = [] #... #some part to read a file and to process data Now, how do I create an instance of MyClass when calling: x = MyClass.fromfile(path) ? When I have a line return parameter1,parameter2,...,d in fromFile, a tuple is returned, which is not quite what I want. Is there a way to make fromFile a true classmethod? Any hint would be greatly appreciated. Regards, Christian ___ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor
Re: [Tutor] one line code
Hi, Great! My own solution was more like Wolfram's. But your solution, Pierre, really runs under obfuscating enhanced. I like it. And your idea, Andrei, is something I really didn't expect. Anyway, sorry for my late reply. Guess I learned a lot again. Thanks, Christian ___ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor
[Tutor] one line code
Hi Yesterday night I was thinking about the following problem: I do have a list like l = ['1','2','3','abc','','4'] - for instance like a list one could get from a file import with the csv module (which is where my 'problem' comes from). Now I would like to generate the following list, preferably with one line of code: l2 = [1.0,2.0,3.0,'abc','',4.0] With other words I'd like to tell Python: Convert into a float if possible, otherwise append anyway. Is this possible in one line? (Right now my code is a lot longer.) I was trying with 'filter' + lambda forms, list comprehensions etc., but could not find a solution. Could it be that a C-like solution with '?' and ':' is more straightforward than a solution with Python or am I just too blind to see a real pythonic solution here? I am aware that putting a solution in one line of code might be against the 'Zen of Python' (... Complex is better than complicated ... Readability counts ...), but since I'm just asking out of curiosity, perhaps I'll get an answer anyway. ;-) Thanks a lot in advance. Cheers Christian ___ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor
[Tutor] how to initialize a class with arbitrary argument list from a file?
Hi How can I initialize a class like this from a file: class Some: def __init__(self,data,axis,**kwargs): pass 'data' and 'axis' should be lists of floats. Meta data can be passed to kwargs like 'name=name,date=2/3/05,...'. Right now the return value of my function reading the file looks like this: dummy = fromFile(path) print dummy [[[datalist],[axislist],'name=name','date=2/3/05',...],...] And, of course, initializing Some with dummy[0] like: Some(dummy[0]) will throw an exception; a TypeError, since the argument list is not of the right length and of the wrong type. Well, I've tried a few things to solve this problem, but didn't succeed: How do I have to alter FromFile() so, that I can use dummy to initialize Some? Oh, and I should mention that **kwargs can be of arbitrary length: __init__ has default values for every keyword not given. And for the record: I'm still stuck with version 2.3 until I'll upgrade to Tiger (on OSX). I'm totally lost. It would be great if you could help me out here. Thanks a lot in advance, Christian ___ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor
Re: [Tutor] Initializing with a call like: someClass.open(someFile)?
Thanks Guys, Guess I have to look once more into decorator functions - and guess it's worth doing so. Anyway: My problem is solved. Cheers Christian ___ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor
[Tutor] Initializing with a call like: someClass.open(someFile)?
Hi My cryptic subject is perhaps not sufficient - I'll try to make it a little better: Assume you'd like to write something like: import someClass x = someClass.open(someFile) Here '.open' should read in the data and initialize the instance - with or without calling __init__. How is this to implement? Up to now I rather wrote something like x = someClass(somePrepFunction(someFile)) where the return value of somePrepFunction was used to initialize x or called the conventional 'open' within __init__. But is there no direct approach like in my pseudo-code? My problem is that if I simply define open as a method of someClass (with def open(self,file_name): #somecode pass ) all I get is: TypeError: unbound method open() must be called with someClass instance as first argument (got str instance instead) Which is perfectly understandable. But what is a possible workaround? (Instead of 'open' I could, of course, better use some other keyword which is no Python keyword.) Any hints? Thanks a lot in advance. Christian ___ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor
RE: [Tutor] German Totorial!?!
Hoi Michael, Apart from Alan's tutorial in German and the link Andrew provided you might want to have a look here: http://python.sandtner.org/ (The German Python forum.) You'll find not only links to other German sources, but also friendly support in German ;-). Gruss, Christian ___ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor