1. PyQScimpl

    Eric Dobbs

    home: http://dobbse.net

    work: bivio Software, Inc.

    other: Tech-X Corporation

  2. Tech-X Corporation

    • Tech-X, mostly PhD physicists, collaborate on research, commercialize related software.
    • Dream Beam: Use of plasma and lasers to dramatically reduce the size of particle accelerators.
  3. QScimpl

    • Qt 3.3
  4. Scientists vs. Engineers

    A good scientist is a person with original ideas.

    A good engineer is a person who makes a design that works with as few original ideas as possible.

    • My degree is in architecture, with false starts in CS and math.
    • I am nevertheless a software engineer, not a scientist.
  5. One step forward, Two steps back

    • I'm the guy who has more or less successfully avoided compiled languages for most of my career.
    • ironic that "the python guy" (at bivio) landed on a C++ project
    • 'make install' is a tax on your development time. If the build takes enough time that you switch to email while you wait, you're paying a huge cost in the context switch. That build step is a long way from the science you're trying to do.
  6. PyQScimpl

  7. Demo

    • graph is embedded in Qt application
    • data in the graph can respond to Qt controls
    • zoom in to take a closer look
    • save image to a file
    • 3d views: drag POV, scroll wheel to zoom
    • copy current view to another application
  8. API

    class Plot2D(Txq2dPlotWin):
        def __init__(self, window, data):
    	Txq2dPlotWin.__init__(self, window)
    	self.data = data
    	self.x = Numeric.arrayrange(data.xmax)
    	self.setAxes(data.xmin, data.zmin,
        	    	     data.xmax,data.zmax)
        def slice(self, i):
    	self.setSeries(self.x,
        	    	       self.data.xSlice(i))
    

    primarily setSeries() as shown and setPoints() for scatter plots

  9. API

    class Plot3D(Txq3dPlotWin):
        def __init__(self, window, mesh):
    	Txq3dPlotWin.__init__(self, window)
    	self.setAxes(mesh.xmin, mesh.ymin,
                         mesh.zmin, mesh.xmax,
        	    	     mesh.ymax, mesh.zmax)
    	self.mesh = mesh
        def meshChanged(self):
    	self.setMesh(self.mesh.frame())
    

    primarily setMesh() as shown and setPoints(x array, y array, z array) for scatter plots

  • Ask me about...

  • Conclusion

  • Thanks