In general, we strongly recommend that everyone follow the official python coding standards ([http://www.python.org/dev/peps/pep-0008/ Python standards]) but we will summarize here the relevant key points.

+

In general, we '''strongly''' recommend that everyone follow the official python coding standards ([http://www.python.org/dev/peps/pep-0008/ Python standards]) but we will summarize here the relevant key points.

* Every indent is 4 spaces, replace '''all''' tabs with spaces.

* Every indent is 4 spaces, replace '''all''' tabs with spaces.

+

* Don't use 'from blah_module import *'

+

* imported names must be longer than 1 character.

+

* all imports should be at the top of your file except for..

+

* imports that are only used in your __main__ blocks should be at the beginning of that __main__ block.

* ClassName, method_name, _private_name

* ClassName, method_name, _private_name

−

* Use default parameters sparingly

+

* Use default parameters sparingly.

* Use classes sparingly, please try to define functions whenever possible. Functions should not be more than a page or two long unless there is an extremely good reason to do so.

* Use classes sparingly, please try to define functions whenever possible. Functions should not be more than a page or two long unless there is an extremely good reason to do so.

* Instead of using inheritance, use [http://en.wikipedia.org/wiki/Duck_typing duck typing] (i.e. define interfaces based on conventions)

* Instead of using inheritance, use [http://en.wikipedia.org/wiki/Duck_typing duck typing] (i.e. define interfaces based on conventions)

* With numpy, use matrices instead of arrays, all vectors should be column vectors.

* With numpy, use matrices instead of arrays, all vectors should be column vectors.

+

* Debugging printouts that are left in the code should be annotated with the class and method name that is generating it. Instead of:

+

def some_func(a,b):

+

print "results of a + b", a+b

+

Use:

+

def some_func(a,b):

+

print "<my_file.py> some_func: results of a+b

* We use doxygen styled comments:

* We use doxygen styled comments:

##

##

Line 27:

Line 37:

self.intrinsic_cvmat = cv.cvCreateMat(3,3,cv.CV_32FC1)

self.intrinsic_cvmat = cv.cvCreateMat(3,3,cv.CV_32FC1)

self.distortion_cvmat = cv.cvCreateMat(1,4,cv.CV_32FC1)

self.distortion_cvmat = cv.cvCreateMat(1,4,cv.CV_32FC1)

−

* We '''strongly''' recommend that you be extremely familiar with the python coding standards: [http://www.python.org/dev/peps/pep-0008/ Python standards]

+

* Again, we '''strongly''' recommend that you be extremely familiar with the python coding standards: [http://www.python.org/dev/peps/pep-0008/ Python standards]

== learning python ==

== learning python ==

−

* We use python 2.5.2 and code using the [http://www.python.org/dev/peps/pep-0008/ Python coding standards].

* When you need buffering of some sort for logging/writing data, if speed is important use the deque data structure instead of lists: http://docs.python.org/library/collections.html#collections.deque

* When you need buffering of some sort for logging/writing data, if speed is important use the deque data structure instead of lists: http://docs.python.org/library/collections.html#collections.deque

+

+

== Call Matlab from Python ==

+

* [http://mlabwrap.sourceforge.net/ mlabwrap] - Use this to easily call Matlab from within Python. Useful for computer vision libraries, displays, or the signal processing toolkits among the other functions which make Matlab really useful. Interoperates well with Numpy matricies.

efficiency

Call Matlab from Python

mlabwrap - Use this to easily call Matlab from within Python. Useful for computer vision libraries, displays, or the signal processing toolkits among the other functions which make Matlab really useful. Interoperates well with Numpy matricies.