From d5df76ea79ab62b75c913ce11a84e5f8c27595a5 Mon Sep 17 00:00:00 2001 From: marco <marco@5a81b35b-ba03-0410-adc8-b2c5c5119f08> Date: Wed, 23 Jun 2010 08:42:09 +0000 Subject: [PATCH] major overhaul to intro and docs in general git-svn-id: https://dng.biozentrum.unibas.ch/svn/openstructure/trunk@2449 5a81b35b-ba03-0410-adc8-b2c5c5119f08 --- modules/doc/intro-01.rst | 226 ++++++++++++++ modules/doc/intro-02.rst | 92 ++++++ modules/doc/intro-03.rst | 179 ++++++++++++ modules/doc/intro.rst | 323 +-------------------- modules/doc/sel.png | Bin 0 -> 55798 bytes modules/gfx/doc/cpk.png | Bin 0 -> 28230 bytes modules/gfx/doc/custom.png | Bin 0 -> 28509 bytes modules/gfx/doc/entity.rst | 196 +++++++++++++ modules/gfx/doc/gfx.rst | 10 + modules/gfx/doc/hsc.png | Bin 0 -> 17913 bytes modules/gfx/doc/line_trace.png | Bin 0 -> 10784 bytes modules/gfx/doc/simple.png | Bin 0 -> 22994 bytes modules/gfx/doc/sline.png | Bin 0 -> 12031 bytes modules/gfx/doc/trace.png | Bin 0 -> 14997 bytes modules/gfx/doc/tube.png | Bin 0 -> 16659 bytes modules/gfx/pymod/export_entity.cc | 8 +- modules/gfx/pymod/export_render_options.cc | 24 ++ modules/gui/src/file_browser.cc | 4 +- modules/index.rst | 25 +- modules/mol/base/doc/query.rst | 257 ++++++++++++---- modules/mol/base/pymod/export_query.cc | 10 +- 21 files changed, 969 insertions(+), 385 deletions(-) create mode 100644 modules/doc/intro-01.rst create mode 100644 modules/doc/intro-02.rst create mode 100644 modules/doc/intro-03.rst create mode 100644 modules/doc/sel.png create mode 100644 modules/gfx/doc/cpk.png create mode 100644 modules/gfx/doc/custom.png create mode 100644 modules/gfx/doc/entity.rst create mode 100644 modules/gfx/doc/gfx.rst create mode 100644 modules/gfx/doc/hsc.png create mode 100644 modules/gfx/doc/line_trace.png create mode 100644 modules/gfx/doc/simple.png create mode 100644 modules/gfx/doc/sline.png create mode 100644 modules/gfx/doc/trace.png create mode 100644 modules/gfx/doc/tube.png diff --git a/modules/doc/intro-01.rst b/modules/doc/intro-01.rst new file mode 100644 index 000000000..2b0f969e7 --- /dev/null +++ b/modules/doc/intro-01.rst @@ -0,0 +1,226 @@ +Introduction to the :mod:`~ost.mol` Module +================================================================================ + +For the course of this tutorial, we assume that you have :ref:`DNG up and running<start-dng>`. + +Loading and inspecting a protein structure +-------------------------------------------------------------------------------- + +The code to load and save structures is not directly part of the mol module, but rather lives in a module dedicated to input and output of any kind of data: The +:mod:`~ost.io` module. We will be using functions if this module to load +structures. + +One of the most commonly used file formats for macromolecular structures are PDB +(Brookhaven Protein Databank) files. The official name for molecules stored in +a PDB file is an *entity* and we decided to follow this convention in +OpenStructure. You will hear this word all the time, but you can replace the +word entity with molecule (or most of the time even protein) in your head. + + +To load a PDB file, simply type + +.. code-block:: python + + fragment=io.LoadPDB('/path/to/examples/entity/fragment.pdb') + +This will load the fragment from the specified file 'fragment.pdb' and store the +result in fragment. The :func:`~ost.io.LoadPDB` has many option, which, for +simplicity will not be discussed here. If you want to know more about the +function, type: + +.. code-block:: python + + help(io.LoadPDB) + +or read the :func:`online documentation <ost.io.LoadPDB>`. + +The loaded structure is an instance of :class:`~ost.mol.EntityHandle` which offers a comprehensive interface to inspect an manipulate molecular structures. Now let's inspect what we just loaded: + +.. code-block:: python + + print len(fragment.chains), fragment.chains + print len(fragment.residues), fragment.residues + print len(fragment.atoms), fragment.atoms + +As you can see, our fragment consists of one peptide chain of 12 amino acids and +has 81 atoms in total. Now let's examine our fragment in more detail. Enter the +command + +.. code-block:: python + + for residue in fragment.residues: + print residue, 'has', len(residue.atoms), 'atom(s).' + for atom in residue.atoms: + print ' ', atom.name, atom.pos + + +This will group the atoms by residue. And, for completeness, we will first group them by chain, then by residues. + +.. code-block:: python + + for chain in fragments.chains: + print 'chain', chain.name, 'has', len(chain.residues), 'residue(s)' + for residue in chain.residues: + print ' ', residue, 'has', len(residue.atoms), 'atom(s).' + for atom in residue.atoms: + print ' ', atom.name, atom.pos + +A protein fragment would not be complete without bonds: Let's see +what bonds we have in there: + +.. code-block:: python + + for bond in fragment.bonds: + print bond + +From these short code examples we already see how the entity is structured: On +one hand we have a hierarchy of chains, residues and atoms. On the other hand, +we have bonds that form a network overlayed on the hierarchy. This is +illustrated in the picture on the left. An important feature of entities is that +we can always assume that the hierarchy is intact. You will never find an atom +without residues, no residue can exist without a parent chain and chains belong +always to an entity. + +Let There Be Shiny Graphics +-------------------------------------------------------------------------------- + +For visually inspecting the fragment, we now create a graphical representation +of the entity. The graphical representation os completely separate from the :class:`~ost.mol.EntityHandle` class. This is on purpose. When writing processing scripts, usually no graphical representation is required and things would be slowed down without any reason. The following code will take our fragment and initialise a :class:`gfx.Entity<ost.gfx.Entity>`, add it to the scene, and center the camera on it. + +.. code-block:: python + + go=gfx.Entity("Fragment", fragment) + scene.Add(go) + scene.CenterOn(go) + + +Now you will see the fragment in the 3D window. + +Use the mouse to rotate, zoom in an shift the camera. Double clicking on an atom +will center the camera on that atom. If you want to learn more about the +:mod:`~ost.gfx` module, you are encouraged to read :doc:`the gfx +intro<intro-03>` and the :mod:`gfx documentation<ost.gfx`. + +Introduction to Views +-------------------------------------------------------------------------------- + +Often during processing and visualisation of data, only parts of a protein +structure are of interest. This realisation has had a major impact on the design +of OpenStructure and is tied very deeply into the core of the framework. +Subparts of structure are modeled as so-called :class:`EntityViews +<ost.mol.EntityView>`. You can think of them as a selection of chains, residues, +atoms and bonds of an entity. A views has almost the same interface as the +underlying entity, making it very easy to mix entity views with handles in +Python due to the dynamic nature of the language. An algorithm that is written +for entities will almost always (with some care) also work for +:class:`EntityHandles <ost.mol.EntityHandle>`. This is referred to as +`duck-typing <http://en.wikipedia.org/wiki/Duck_typing>`_ (I don' t care if it +is a duck as long as it looks like a duck), a concept used all over the place in Python. + +The view consists of one chain, one residue and two atoms. Again the same rule +applies: No atom can be part of the view without it's residue. In this example, +no bonds are included, since there is at most one atom per bond in the original structure. + +To familiarize yourself with the concept of views, we will use the fragment in +the 3D window. + +We will use several ways to select parts of our fragment: + * By using a dedicated query language + * By manually constructing a view + +The Query Language +-------------------------------------------------------------------------------- + +The first way to select parts of a structure is with a dedicated mini-language, +called :doc:`the query language <mol/base/query>`. In the Python Shell, type + +.. code-block:: python + + go.selection=fragment.Select('') + +The code performs a selection on the fragment and assigns the resulting view to +the selection of the graphical object. A green halo will be displayed around the +selected parts (image in the middle). + +.. image:: sel.png + +As you can see the previous statement created a “full view”, containing all the +chains, residues, atoms and bonds. To select lysine residues, type + +.. code-block:: python + + go.selection=fragment.Select('rname=LYS') + + +As you can see (image on the right), the only lysine residue is now +highlighted in the 3D window, because it was the only one matching the predicate +"residue name must be equal to LYS". Several such predicates can be combined +with boolean operators such as *and* and *or*. To select residues with residue +number 1 to 3, the following statement will do the job: + +.. code-block:: python + + go.selection=fragment.Select('rnum>=1 and rnum<=3') + +but this is very cumbersome. That's why there is a shortcut to this statement. +You can specify a range of values. + +.. code-block:: python + + go.selection=fragment.Select('rnum=1:3') + +For a complete description of what you can do with the query language, have a +look at the :doc:`../mol/base/query`. + + +Constructing Views Manually +-------------------------------------------------------------------------------- + +Sometimes the query language Is Not Enough (TM). For these cases the +construction of manual entities becomes neccessary. This is pretty straight +forward: + +.. code-block:: python + + view=fragment.CreateEmptyView() + ca=fragment.FindAtom('A', mol.ResNum(1), 'CA') + cb=fragment.FindAtom('A', mol.ResNum(1), 'CB') + view.AddAtom(ca) + view.AddAtom(cb) + go.SetSelection(view) + +The last step sets our constructed view as the current selection, displaying it +in the 3D window. As you can see, C-alpha and C-beta of the first residue are +not connected by bonds, even though both atoms are in the view. You have either +to add the bond manually with + +.. code-block:: python + + ca_cb=ca.FindBondToAtom(cb) + view.AddBond(ca_cb) + +Or, as a very convenient shortcut +:meth:`view.AddAllInclusiveBonds()<ost.mol.EntityView.AddAllInclusiveBonds>` to +add all bonds that have both bonding partners in the view. + +Don't forget to update the selection of the graphics object to see what view you +have created. + +Saving an Entity +-------------------------------------------------------------------------------- + +Saving an entity (or a view) is a breeze: + +.. code-block:: python + + io.SavePDB(fragment, 'full.pdb') + +will save the full fragment. To save only the backbone atoms, we can first +select the backbone atoms and then save it: + +.. code-block:: python + + io.SavePDB(fragment.Select('aname=CA,C,N,O'), 'backbone.pdb') + +That's it for the mol module. Continue with :doc:`part two<intro-02>` of the +tutorial. diff --git a/modules/doc/intro-02.rst b/modules/doc/intro-02.rst new file mode 100644 index 000000000..bfca96383 --- /dev/null +++ b/modules/doc/intro-02.rst @@ -0,0 +1,92 @@ +Introduction to the :mod:`~ost.img` Module +================================================================================ + +For the course of this tutorial, we assume that you have :ref:`DNG up and running<start-dng>`. + + +Loading Images and Density Maps +-------------------------------------------------------------------------------- + +Openstructure features a :mod:`~ost.img` module that is dedicated to the +manipulation of images/density maps. The images or density maps can either be +one-, two- or three-dimensional. The most common formats used in X-ray and +electron crystallography and atomic force microscope are supported in addition +to several general purpose image formats. See `supported file formats` for +details. The :mod:`~ost.img` module was originally developed as part of the +Image Processing Library & Toolbox IPLT. More documentation and examples can +also be found on the `IPLT website <http://www.iplt.org>`_. + +To load a density map, type + +.. code-block:: python + + map=io.LoadImage('/path/to/examples/map/1ppt.map') + +This will load the fragment density map from the specified file 'fragment.map' +and store the result in map. + +Now let's inspect what we just loaded: + +.. code-block:: python + + print map.GetPixelSampling(), map.GetSize() + +We can see that the sampling is set to 1.0 Angstroems in all three dimensions. The loaded map is an instance of :class:`~ost.img.ImageHandle`, a class to represent images in 1, 2 and 3 dimensions. + +Manipulating Images and Density Maps +-------------------------------------------------------------------------------- + +The algorithms used for manipulation of an image are found in the +:mod:`img.alg <ost.img.alg>` module. Therefore before using an algorithm we +first have to import the :mod:`img.alg <ost.img.alg>` module. + +.. code-block:: python + + from ost.img import alg + + +The :mod:`img.alg <ost.img.alg>` module provides a wide range of algorithm to +manipulate image data. Here for example we use a LowPassFilter to restrict the +resolution of the density map to frequencies lower than a treshold. + +.. code-block:: python + + map_filtered=map.Apply(alg.LowPassFilter(3.0)) + +The filtered map is stored in a new variable called `fragment_map_filtered`. A complete list of algorithms is available on the :doc:`img/alg/alg` page. + + +Displaying Images and Density Maps +-------------------------------------------------------------------------------- + +Now that we have a filtered map it's time to have a look at it. There are +fundamentally two ways to visualize 3-dimensional density maps. One is by +drawing isocontour surfaces. These are conceptually similar to contour lines +used in cartography: every point on an isosurface has the same density value. +Isosurfaces are easy to create in OpenStructure: + +.. code-block:: python + + go=gfx.MapIso("filtered", map_filtered,0.5) + scene.Add(go) + +The other way to visualize a 3-dimensional map is by showing one 2-dimensional +density slice at a time, allowing the user to move through the slices. In +OpenStructure this is achieved using a DataViewer :doc:`gui/image-viewer`). +A DataViewer showing the filtered map is created using the following command: + +.. code-block:: python + + gui.CreateDataViewer(map_filtered) + +This command displays a panel showing one slice of the density map lying on a +particular (x,y) plane in the coordinate reference system. +The `z` and `x` keys can be used to move to slices lying at a lower or higher +coordinate along the `z` axis, allowing the examination of +the full 3-dimensional volume. + +A more detailed explanation of the :mod:`~ost.img` module can be found in the +tutorial section for :mod:`~ost.img`. + + +Continue with :doc:`part three <intro-03>` of the tutorial. diff --git a/modules/doc/intro-03.rst b/modules/doc/intro-03.rst new file mode 100644 index 000000000..5a6fc08aa --- /dev/null +++ b/modules/doc/intro-03.rst @@ -0,0 +1,179 @@ +Introduction to the :mod:`~ost.gfx` Module +================================================================================ + +.. currentmodule:: ost.gfx + +For the course of this tutorial, we assume that you have :ref:`DNG up and +running<start-dng>`. + +As already mentioned in the :doc:`intro-01`, the basic representation of +molecular structures, sequences, images are completely independent from the +graphical rendering. Thus, to display it on the screen, we first have to create +a graphical representation of the object. This is illustrated for the entity +below, but follows a similar scheme for density maps, surfaces and other types +of data. + +.. code-block:: python + + pdb=io.LoadPDB('/path/to/molecule.pdb') + go=gfx.Entity('PROTEIN', pdb) + scene.Add(go) + scene.CenterOn(go) + +The last command is not mandatory, but very convenient to center the camera on the object. + + +The :class:`~ost.gfx.Scene` +-------------------------------------------------------------------------------- + + +The scene is the central registry for graphical objects and manages rendering +parameters. Among other parameters, it is used to setup the lighting, fog, +background color and the camera. The scene is a singleton, meaning that there is +only one scene available. The instance can be accessed via :func:`gfx.Scene`. +Because the scene is so important and commonly used, the scene is also available +as the `scene` variable in the interactive python shell as well as from scripts. +In fact, this is the preferred way to use functionality of the scene. As an easy example, let's change the background color: + +.. code-block:: python + + scene.background=gfx.WHITE + +Now, the color of the screen has changed to white. To set it back to black, simply assign :obj:`gfx.BLACK` to the background property. + +Objects are added to the scene by calling :meth:`Scene.Add`. Once added to the +scene, the objects will be rendered automatically. Since all the graphical +objects have a name that identifies them, they can be retrieved by name and +manipulated: + +.. code-block:: python + + # retrieving the previously added protein + obj=scene['PROTEIN'] + # set color of the protein to red + obj.SetColor(gfx.RED) + + +The last command assigns a uniform red coloring to all atoms. + + +The :class:`Graphical Entity <ost.gfx.Entity>` +-------------------------------------------------------------------------------- + +Now let's look at the graphical entity in more detail. The graphical entity is +responsible for the rendering of :class:`~ost.mol.EntityHandle` and +:class:`~ost.mol.EntityView` instances. + +Render Modes +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Molecules are rendered in :ref:`different representations <render-mode>`. Some +representations show the structure at atomic detail (connectivity level display +styles), while others simplify the structure significantly (trace-based display +styles). + +To change the display mode of an entity programmatically, use the :meth:`Entity.SetRenderMode` method: + +.. code-block:: python + + # render the molecule with an interpolated line trace + obj.SetRenderMode(gfx.SLINE) + # switch back to simple line rendering + obj.SetRenderMode(gfx.SIMPLE) + # switch to helix-strand-coil cartoon + obj.SetRenderMode(gfx.HSC) + +It is also possible to change the render mode of only a part of the structure. +To display the ligand with balls and sticks and everything else in cartoon mode, +we make use of the query language to select everything that is not part of the +protein. Remember from above, that we stored our molecule in the `pdb` variable. + +.. code-block:: python + + not_protein=pdb.Select('peptide=false') + obj.SetRenderMode(gfx.HSC) + obj.SetRenderMode(gfx.CUSTOM, not_protein) + + +The Basics of Coloring +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The color of each atom can be set individually. The simplest coloring scheme is +to set all atoms to the same color: + +.. code-block:: python + + obj.SetColor(gfx.YELLOW) + +Assigning colors based on selections is also possible. To reproduce the +well-known `CPK coloring <http://en.wikipedia.org/wiki/CPK_coloring>`_, 4 +consecutive coloring operations are sufficient: + +.. code-block:: python + + obj.SetColor(gfx.WHITE, 'ele=C') + obj.SetColor(gfx.BLUE, 'ele=N') + obj.SetColor(gfx.RED, 'ele=O') + obj.SetColor(gfx.YELLOW, 'ele=S') + + +But because this is such a common task, the entity provides a built-in method to color the atoms by element: + +.. code-block:: python + + obj.ColorByElement() + +As already seen above, the coloring operations can be chained to achieve the desired effect. For example, sometimes one wants to apply conventional CPK coloring to the protein and then change the color of C-alpha atoms to pink: + +.. code-block:: python + + obj.ColorByElement() + obj.SetColor(gfx.Color(1, 0, 1), 'aname=CA and ele=C') + + + +Internally, the chain of calls to the coloring methods is stored as a list of +coloring operations that is reapplied sequentially. This makes sure that the +coloring remains when changing render modes or updating the geometry of the +molecule. This storage scheme has one drawback. Consider the following code: + +.. code-block:: python + + for i in range(100): + obj.SetColor(gfx.RED) + +While the code obviously achieves the desired effect, it is far for optimal +because all of the 100 color operations are applied every time the graphical +entity needs an update. When you see a slow down in rendering after playing +around with the coloring operations, consider calling +:meth:`Entity.ClearColorOps` and reapply only the set of coloring operations +that are required to achieve your rendering. + +Coloring the Entity By Property +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The most complex but also most powerful coloring method is +:meth:`Entity.ColorBy`, which allows to color atoms by a numeric property. This +property can either be built-in a property such as atomic b-factor, charge, +residue number or be :doc:`custom properties <../base/generic>` assigned by the +user or an algorithm and be defined at any level (chain, residue, atom). The +naming of the built-in properties is identical to the properties available in +:doc:`query language <../mol/base/query>`. For example, to achieve a heat-map +coloring for b-factors: + +.. code-block:: python + + # will color the atoms by the atomic b-factor, setting atoms with + # a temperature factor of 0 to blue and atoms with a temperature factor of + # 100 and higher to red. Values in between are linearly interpolated. + obj.ColorBy('abfac', gfx.BLUE, gfx.RED, 0, 100) + +Fine-tuning the Coloring +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The :obj:`HSC` render mode uses two colors to color the secondary structure +elements. The main color affects the top and bottom of extended and the outside +of helical elements. The detail color is used for the inner side of helices and +the rim of extended elements. This color is changed with +:meth:`Entity.SetDetailColor`. + \ No newline at end of file diff --git a/modules/doc/intro.rst b/modules/doc/intro.rst index abf6e6cf9..934398e68 100644 --- a/modules/doc/intro.rst +++ b/modules/doc/intro.rst @@ -14,12 +14,19 @@ What will be covered in this tutorial? This tutorial is aimed at users that would like to get their hands dirty and execute commands in Python and write scripts rather clicking their way through a shiny user interface. The user interface of OpenStructure is in a very early -state anyway that you probably won't go far by clicking you way through... +state anyway that you probably won't go far by clicking your way through... -The first part of the tutorial is a walk-through of the basic functionality you -will be using in your everyday work. You will learn how to load structure -datasets, inspect, display them in the 3D window and save them. +The tutorial is divided into several parts. The first part of the tutorial is a +walk-through of the basic functionality you will be using in your everyday work, followed by an introduction to the :mod:`~ost.mol`, :mod:`~ost.img` and :mod:`~ost.seq` modules. +.. toctree:: + :maxdepth: 1 + + intro-01 + intro-02 + intro-03 + +.. _start-dng: Getting ready to rumble -------------------------------------------------------------------------------- @@ -59,310 +66,4 @@ be useful. For example: # get help for method Select help(mol.EntityView.Select) -Loading and inspecting a protein structure --------------------------------------------------------------------------------- - -OpenStructure has a module that is dedicated to deal with input and output of -data, including sequence alignment formats, protein structures and density data -and images. If you are reading this tutorial you most certainly have dealt with -protein structures before and you are most certainly aware that they are usually -stored in Brookhaven structure files (aka PDB files). The official name for -molecules stored in a PDB file is an entity. You will hear this word all the -time, but you can replace the word entity with molecule in your head. - - -To load a PDB file, type - - .. code-block:: python - - fragment=io.LoadPDB('/path/to/examples/entity/fragment.pdb') - -This will load the fragment from the specified file 'fragment.pdb' and store the result in fragment. For more information on the LoadPDB function, type - - .. code-block:: python - - help(io.LoadPDB) - -Now let's inspect what we just loaded: - - .. code-block:: python - - print fragment.chain_count - print fragment.residue_count - print fragment.atom_count - -As you can see, our fragment consists of one peptide chain of 12 amino acids and -has 81 atoms in total. Now let's examine our fragment in more detail. Enter the -command - - .. code-block:: python - - for residue in fragment.residues: - print residue - -This will print a list of all residues in the fragment. Similarly to get a list -of atoms, use: - - .. code-block:: python - - for atom in fragment.atoms: - print atom - -Of course, we can also get a list of atoms grouped by residues: - - .. code-block:: python - - for residue in fragment.residues: - print residue, 'has', residue.atom_count, 'atom(s).' - for atom in residue.atoms: - print ' ', atom.name, atom.pos - -And, for completeness, we will first group them by chain, then by residues. - - .. code-block:: python - - for chain in fragments.chains: - print 'chain', chain.name, 'has', chain.residue_count, 'residue(s)' - for residue in chain.residues: - print ' ', residue, 'has', residue.atom_count, 'atom(s).' - for atom in residue.atoms: - print ' ', atom.name, atom.pos - -Aah, wait! A protein fragment would not be complete without bonds: Let's see -what bonds we have in there: - - .. code-block:: python - - for bond in fragment.bonds: - print bond - -From these short code examples we already see how the entity is structured: On -one hand we have a hierarchy of chains, residues and atoms. On the other hand, -we have bonds that form a network overlayed on the hierarchy. This is -illustrated in the picture on the left. An important feature of entities is that -we can always assume that the hierarchy is intact. You will never find an atom -without residues, no residue can exist without a parent chain and chains belong -always to an entity. - -Let There Be Shiny Graphics --------------------------------------------------------------------------------- - -For visually inspecting the fragment, we now create a graphical representation -of the entity: - - .. code-block:: python - - go=gfx.Entity("Fragment", fragment) - scene.Add(go) - scene.CenterOn(go) - -Now you will see the fragment in the 3D window (left): - - - -Use the mouse to rotate, zoom in an shift the camera. Double clicking on an atom will center the camera on that atom. - -Introduction to Views --------------------------------------------------------------------------------- - -Often during processing and visualisation of data, only parts of a protein -structure are of interest. This realisation has had a major impact on the design -of OpenStructure and is tied very deeply into the core of the framework. -Subparts of structure are modeled as so-called :class:`EntityViews -<mol.EntityView>`. You can think of them as a selection of chains, residues, -atoms and bonds of an entity. A views has almost the same interface as the -underlying entity, making it very easy to mix entity views with handles in -Python due to the dynamic nature of the language. An algorithm that is written -for entities will almost always (with some care) also work for -:class:`EntityHandles <mol.EntityHandle>`. This is referred to as `duck-typing -<http://en.wikipedia.org/wiki/Duck_typing>`_ (I don' t care if it is a duck as -long as it looks like a duck), a concept used all over the place in Python. - -A typical view can be seen in the image on the left. The view consists of one -chain, one residue and two atoms. Again the same rule applies: No atom can be -part of the view without it's residue. In this example, no bonds are included, -since there is at most one atom per bond in the original structure. - -To familiarize yourself with the concept of views, we will use the fragment in -the 3D window. - -We will use several ways to select parts of our fragment: - * By using a dedicated query language - * By manually constructing a view - -The Query Language --------------------------------------------------------------------------------- - -The first way to select parts of a structure is with a dedicated mini-language, -called ["the query language”](docs/tut/query.html). In the Python Shell, type - - .. code-block:: python - - go.selection=fragment.Select('') - -A green halo will be displayed around the selected parts (image in the middle). - -As you can see the previous statement created a “full view”, containing all the -chains, residues, atoms and bonds. To select lysine residues, type - - .. code-block:: python - - go.selection=fragment.Select('rname=LYS') - - -As you can see (image in the middle), the only lysine residue is now -highlighted in the 3D window, because it was the only one matching the predicate -"residue name must be equal to LYS". Several such predicates can be combined -with boolean operators such as *and* and *or*. To select residues with residue -number 1 to 3, the following statement will do the job: - - .. code-block:: python - - go.selection=fragment.Select('rnum>=1 and rnum<=3') - -but this is very cumbersome. That's why there is a shortcut to this statement. -You can specify a range of values. - - .. code-block:: python - - go.selection=fragment.Select('rnum=1:3') - -For a complete description of what you can do with the query language, have a -look at the :doc:`../mol/base/query`. - - -Constructing Views Manually --------------------------------------------------------------------------------- - -Sometimes the query language Is Not Enough (TM). For these cases the -construction of manual entities becomes neccessary. This is pretty straight -forward: - - .. code-block:: python - - view=fragment.CreateEmptyView() - ca=fragment.FindAtom('A', mol.ResNum(1), 'CA') - cb=fragment.FindAtom('A', mol.ResNum(1), 'CB') - view.AddAtom(ca) - view.AddAtom(cb) - go.SetSelection(view) - -The last step sets our constructed view as the current selection, displaying it -in the 3D window. As you can see, C-alpha and C-beta of the first residue are -not connected by bonds, even though both atoms are in the view. You have either -to add the bond manually with - - .. code-block:: python - - ca_cb=ca.FindBondToAtom(cb) - view.AddBond(ca_cb) - -Or as a very convenient shortcut 'view.AddAllInclusiveBonds()' to add all bonds -that have both bonding partners in the view. - -Don't forget to call update the selection of the graphics object to see what -view you have created. - -Saving an Entity --------------------------------------------------------------------------------- - -Saving an entity (or a view) is a breeze: - -Type - - .. code-block:: python - - io.SavePDB(fragment, 'full.pdb') - -to save the full view. To save only the backbone atoms, we can first select the -backbone atoms and then save it: - - .. code-block:: python - - io.SavePDB(fragment.Select('aname=CA,C,N,O'), 'backbone.pdb') - - -Loading images and density maps --------------------------------------------------------------------------------- - -Openstructure features a :mod:`~ost.img` module that is dedicated to the -manipulation of -images/density maps. The images or density maps can either be one-, two- or -three-dimensional. The most common formats used in x-ray and electron -crystallography and atomic force microscope are supported in addition to several -general purpose image formats. See `supported file formats` for details. -The :mod:`~ost.img` module was originally developed as part of the Image -Processing Library & Toolbox IPLT. More documentation and examples can also be -found on the `IPLT website <http://www.iplt.org>`_. - -To load a density map, type - - .. code-block:: python - - map=io.LoadImage('/path/to/examples/map/1ppt.map') - -This will load the fragment density map from the specified file 'fragment.map' -and store the result in fragment_map. - -Now let's inspect what we just loaded: - - .. code-block:: python - - print map.GetPixelSampling() - -We can see that the sampling is set to 1.0 Angstroems in all three dimensions. - -Manipulating images and density maps --------------------------------------------------------------------------------- - -The algorithms used for manipulation of an image are found in the -:mod:`~ost.img` module. Therefore before using an algorithm we first have to -import the :mod:`~ost.img` module. - - .. code-block:: python - - from ost import img - - -The :mod:`~ost.img` module provides a wide range of algorithm to manipulate -image data. Here for the example we use a LowPassFilter to restrict the -resolution of the density map. - - .. code-block:: python - - map_filtered=map.Apply(img.alg.LowPassFilter(3.0)) - -The filtered map is stored in a new variable called fragment\_map\_filtered. - - -Displaying images and density maps --------------------------------------------------------------------------------- - -Now that we have a filtered map it's time to have a look at it. There are -fundamentally two ways to visualize 3-dimensional density maps. One is by -drawing isosurfaces. These are conceputally similar to contour lines used in -cartography: every point on an isosurface has the same density value. -Isosurfaces are easy to create in OpenStructure: - - .. code-block:: python - - go=gfx.MapIso("filtered", map_filtered,0.5) - scene.Add(go) - -The other way to visualize a 3-dimensional map is by showing one 2-dimensional -density slice at a time, allowing the user to move through the slices. In -OpenStructure this is achieved using a DataViewer docs/tut/imgdataviewer.html). -A DataViewer showing the filtered map is created using the following command: - - .. code-block:: python - - gui.CreateDataViewer(map_filtered) - -This command displays a panel showing one slice of the density map lying on a -particular (x,y) plane in the coordinate reference system. -The 'z' and 'x' keys can be used to move to slices lying at a lower or higher -coordinate along the 'z' axis, allowing the examination of -the full 3-dimensional volume. - -A more detailed explanation of the :mod:`~ost.img` module can be found in the -tutorial section for :mod:`~ost.img`. +Continue with :doc:`part one <intro-01>` diff --git a/modules/doc/sel.png b/modules/doc/sel.png new file mode 100644 index 0000000000000000000000000000000000000000..e5b3c80252ac121d9ec3a56f3730dbda8e91356d GIT binary patch literal 55798 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 Xe-*p^#CaD30|SGntDnm{r-UW|x5skY literal 0 HcmV?d00001 diff --git a/modules/gfx/doc/cpk.png b/modules/gfx/doc/cpk.png new file mode 100644 index 0000000000000000000000000000000000000000..38808e16817504447d7b260ff14f208cb8de30fe GIT binary patch literal 28230 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±aK%&mtM<jCTHgl?{+ZH|MO}3N2!2am&F(zygPem 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 literal 0 HcmV?d00001 diff --git a/modules/gfx/doc/custom.png b/modules/gfx/doc/custom.png new file mode 100644 index 0000000000000000000000000000000000000000..812c317d520a0e9fb66342050b77b74748c42cd3 GIT binary patch literal 28509 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 aduidTi(Bhv2{SM-FnGH9xvX<aXaWEW$FRl# literal 0 HcmV?d00001 diff --git a/modules/gfx/doc/entity.rst b/modules/gfx/doc/entity.rst new file mode 100644 index 000000000..a3bf16719 --- /dev/null +++ b/modules/gfx/doc/entity.rst @@ -0,0 +1,196 @@ +The Graphical Entity +================================================================================ + +.. currentmodule:: ost.gfx + +.. note:: + + This document describes the API of the :class:`Entity` and related classes. + For an overview of the graphical entity, see :doc:`../intro-03`. + +.. _render-mode: + +Render Modes +-------------------------------------------------------------------------------- + +The entity supports different render modes. They are depicted in the following +images together with the options they support. To change the render mode of the +full entity or part of the entity, use the :meth:`Entity.SetRenderMode` method. + +Render Modes at the Connectivity Level +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. data:: SIMPLE + + .. image:: simple.png + + Renders bonds as lines and single atoms as crosses. + +.. data:: CPK + + .. image:: cpk.png + + + Renders atoms as spheres with radii proportional to their van-der-Waals + radius. + +.. data:: CUSTOM + + .. image:: custom.png + +Render Modes at the Trace Level +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. data:: TUBE + + .. image:: tube.png + + Renders a smooth backbone trace with circular profiles. + +.. data:: SLINE + + .. image:: sline.png + + Renders a smooth backbone trace with lines. + +.. data:: TRACE + + .. image:: trace.png + + Renders the Calpha atoms connected by tubes. + +.. data:: LINE_TRACE + + .. image:: line_trace.png + + Renders the Calpha connected bys lines. + +.. data:: HSC + + .. image:: hsc.png + + Renders a Helix/Strand/Coil Cartoon. + + +.. _render-options: + +Render Options +-------------------------------------------------------------------------------- + + +**line_width** + + The line width. Defaults to 1.0 + + :type: float + +**aa_lines** + + Controls whether antialiased lines are enabled. Only available when + compiled with shaders. Defaults to false. + + :type: bool + +**draw_bond_order** + + Controls whether double/triple bonds are drawn as multiple lines. This + requires that the bond order information has been assigned. As of now, + only the :class:`~ost.conop.RuleBasedBuilder` assigns this information. + + Defaults to off. + + :type: bool + +**bond_order_distance** + + The distance between the lines depicting higher order bonds. + +.. class:: Entity(name, entity) + Entity(name, render_mode, entity) + + Graphical representation of entitites. + + + .. attribute:: name + + The name of the entity. Read-only. Also available as :meth:`GetName` + + :type: str + + .. attribute:: selection + + The selection of the entity is rendered with a green halo. + + :type: :class:`~ost.mol.EntityView` + + .. attribute:: center + + The geometric center of the graphical entity. Read-only. + + :type: :class:`~ost.geom.Vec3` + + :param name: Name of the entity + :type name: str + :param render_mode: One of the :ref:`render-mode`. + Defaults to :obj:`SIMPLE`. + :param entity: The entity. Only atoms and bonds that part part of the entity + view (or handle) are rendered. + :type entity: :class:`~ost.mol.EntityView`, or :class:`~ost.mol.EntityHandle` + + .. method:: SetRenderMode(render_mode) + SetRenderMode(render_mode, view, keep=False) + + Changes the render mode of the graphical entity. The first signature changes + the render mode of all atoms and bonds, whereas the second only changes the + display of atoms/bonds that are part of the view. If `keep` is set to false, + the atoms and bonds that are part of the view will only be displayed in the + new render mode, if keep is set to true, the atoms and bonds will be + rendered with the new render mode in addition to whatever render mode they + were rendered previously. + + :param render_mode: One of the :ref:`render-mode`. + Defaults to :obj:`SIMPLE`. + :param view: A valid entity view + :type view: :class:`~ost.mol.EntityView` + + .. method:: SetColor(color, selection='') + + Sets the atoms matching the selection predicates to `color`. + + :param color: The new color + :type color: :class:`Color` + :param selection: A valid :doc:`query <../mol/base/query>` + :type selection: str + + .. method:: ColorByElement() + + Apply `CPK coloring <http://en.wikipedia.org/wiki/CPK_coloring>`_ coloring + to atoms. This will color the carbon atoms in white, nitrogen in blue, + oxygen in red, phosphorous in pink and sulfur in yellow. + + + .. method:: ColorBy(prop, color1, color2, min, max, hint='U') + ColorBy(prop, color1, color2, hint='U') + ColorBy(prop, gradient, min, max, hint='U') + ColorBy(prop, gradient, hint='U') + + Colors the entity by mapping a numeric property to a color. This property + can be a built-in a property such as atomic b-factor, charge, residue number + or be a :doc:`custom property <../base/generic>` assigned by the user or an + algorithm and be defined at any level (chain, residue, atom). The naming of + the built-in properties is identical to the properties available in + :doc:`query language <../mol/base/query>`. + + :param prop: The name of the numeric property + :type prop: str + :param color1: Color corresponding to min value + :type color1: :class:`Color` + :param color2: Color corresponding to max value + :type color2: :class:`Color` + :param gradient: The gradient to be used + :type gradient: :class:`Gradient` + :type min: Value mapped to `color1`, or the color at 0.0 in the gradient + :type max: Value mapped to `color2` or the color at 1.0 in the gradient + :param hint: When `prop` refers to a generic property, hint must be set to + the hierarchy level at which the property is defined. + :type hint: str diff --git a/modules/gfx/doc/gfx.rst b/modules/gfx/doc/gfx.rst new file mode 100644 index 000000000..3535136fe --- /dev/null +++ b/modules/gfx/doc/gfx.rst @@ -0,0 +1,10 @@ +:mod:`~ost.gfx` - Realtime 3D Rendering +================================================================================ + +.. module:: ost.gfx + :synopsis: Realtime 3D Rendering + +.. toctree:: + :maxdepth: 2 + + entity \ No newline at end of file diff --git a/modules/gfx/doc/hsc.png b/modules/gfx/doc/hsc.png new file mode 100644 index 0000000000000000000000000000000000000000..62ec72c8a392ad715481a64e70f4397e0be24e46 GIT binary patch literal 17913 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 literal 0 HcmV?d00001 diff --git a/modules/gfx/doc/line_trace.png b/modules/gfx/doc/line_trace.png new file mode 100644 index 0000000000000000000000000000000000000000..73e48987c6593ba9b43b9faaa99c09322728924a GIT binary patch literal 10784 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�=<aA{Rn z(JvEsAGIDeVYgnkre@9XeKx$SLKnO4EHcpw<JtZu$D+9Hu(X-M*AIz{&d+)1k)<VG zTg&<4{`~y9zf*s9iy5wpHgBt{e8~DUxn1?=a}mx)hC4eB_69C~F=@`3_}JY>I+ioL z?d*PV9bbOH;Z$nMgtsp`yf>%q30*6tdwSZ^#{KqnZptcZMOn}N#N@1wv^_q4v-T<1 z%F6eq6$Zum_nsWvlKJKAIk&SX8TIu~Z_(exsyW5xJJUv`oMk5W>(769k|Ol$YjV`z zUnLe56MFyso3cJ~ve?X-OM0b`=f8WmLq)CV+lNH6bF<yAe0=<7U&X{DHrGSesC}As zC#EQB`?LR2ri)H4aNM%DZtiO~=3QS(g7)my)$LeP5ER0qv@0rYt=QjLrhgV(On7&_ z-*U2gv4LWv^Syg5F}sho9_^l4@kwRBs+!RJ?^0o_6RxJ6=PS<BQ>(9UV&i$RTU7f; z=5fBT%&jkqi%#sVnkphM@6A2w{<>|GjxRpJ!J^Z8CFj_RiwnBDk{qL?p5LqPmps}f z_~2F7=k@zH8ClJ0RodID5E6Pc$L#;v5NF0S@^vTXobfT*_jj7zA#oN3-QJM$^3!5j zK?<#tpV!SY*LPB}w471?CgJme#w*rEEnlr<zwO+)ggImDi?wd;Zm+MU*GK1E&eDDM zB=?rU%?*nBf1lg$nL5vJS80@FgZK1~?_ZY8a4W8^HnrrNC?a=6De>y6E4TMZetvaz z$@jO}oO0~nx6R)q7w$Dhq2jcd&-|K0H9L~utNy#an0@i0#fDZE4;YGcmly;+i4urz zIUM}*(v=e@71Pg3?W=pt%hn@zR==;$V%FIi?;ln!*Wh|JK~cxU|M{saE2pgsy%*px zU4L?d!GhAlgD)j*C%JrjB4GOW!NHpCH9J#pZF6M4m2<nzs@kl*rbZ`h-?oc4S`%(< zUHpDu?TW40pSAw1Kf2~e`CKcL-*3%9b7XVOdzTahEQuBfd^}ypbLkS5N207}&&^%) z>T<i(ym=z?EhpdC4p}g*^kP6d@0T1t9+fZ6{4+M?NEUy4leqWBGRya0*T+8AYM4EH z&MVzDB9V<8uj6{zj-Kxq$POvqe6XQ5M&@_**F~?Ede8a&E&7{D){)m~#%`{lwPt*B zXZ~z430m&^xOq40MB(ONTTITSrZ@NV?|U>)$aA3s&kS3eg4-LJw-%?fWtwDst$M@D z_J;B3P08mM7yo>Efbq)q`)Lvm?R;PEZ|C0{rt6(Dd3SGMj@h}wTYDt8R+qa)T^3uJ z`Sp3D((i*VZ|(@GYRsN|`0C;In_AzP1T*vQJUI5@;hwrjEc5q$=1caTvLNShTgl&- z>S^!po>p_+Sh6$cn`F4i(>~V1JiVJQU#e7AKAhR#ul181<j0uU!aZfZU+Vt;_;*Uw zFFj?#tci|pX=>)i#-8U+D17~X|E7$<fjb)vlpa04xhsWJ`R&`n6K7RVr|jDM|HplU znF^*;yNgWseh5loO)^Uk5;3X%zRA>T*3zr1E*?4Gf9c`Fkn*BKx6kpZuNC`Jb^89= z=n1pC4b|J%RDRx(U^1!rv)am;Gh=pFPJR=;eaFO!2V1|C1Q{Fcm^jrnElcb8)+iBq zd8f7Cr!Z-zoJdTT6Jh;QRZ?Zk_wCz@IdcliiWcpdEc{MS&tk{Uhi~8X%x`8sr>AGJ zbNAz?ue=)e+Mes{yJ2bl_~o0P^>O)z&O0k69u5pV6TP9q^OF6Z4~ndZ=86_?Ui#wS zVx~108xA%sKG<;WB&WN&`W^qdn_R-Ch}bQ0c-OSnvqPdL`af^wy_uzN7T)S{ey3)@ zn(}>>ffDPdmXq1}sxft+we1IJ4dkTf)Bm$`s~9;r2e61RFfcH9y85}Sb4q9e0RJ}_ Ap#T5? literal 0 HcmV?d00001 diff --git a/modules/gfx/doc/simple.png b/modules/gfx/doc/simple.png new file mode 100644 index 0000000000000000000000000000000000000000..e6a4d8cd8369fc8cc7c9151b1e0424138d9ba859 GIT binary patch literal 22994 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 literal 0 HcmV?d00001 diff --git a/modules/gfx/doc/sline.png b/modules/gfx/doc/sline.png new file mode 100644 index 0000000000000000000000000000000000000000..79ee2f533764fda141b1783c3391b750de0a8f6d GIT binary patch literal 12031 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 L^>bP0l+XkK??g?I literal 0 HcmV?d00001 diff --git a/modules/gfx/doc/trace.png b/modules/gfx/doc/trace.png new file mode 100644 index 0000000000000000000000000000000000000000..8f7f5e6754c9d0d19ec3f357886bf2e65d84f6cb GIT binary patch literal 14997 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 literal 0 HcmV?d00001 diff --git a/modules/gfx/doc/tube.png b/modules/gfx/doc/tube.png new file mode 100644 index 0000000000000000000000000000000000000000..5256aa3dd62bdfa24068114a442d84fd1b97fa13 GIT binary patch literal 16659 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 UbLKxM1_lNOPgg&ebxsLQ06}myA^-pY literal 0 HcmV?d00001 diff --git a/modules/gfx/pymod/export_entity.cc b/modules/gfx/pymod/export_entity.cc index a81f8299e..2e5a0f13f 100644 --- a/modules/gfx/pymod/export_entity.cc +++ b/modules/gfx/pymod/export_entity.cc @@ -186,7 +186,7 @@ void (Entity::*set_rm1)(RenderMode::Type, const mol::EntityView&, bool)=&Entity: void (Entity::*set_rm2)(RenderMode::Type)=&Entity::SetRenderMode; RenderOptionsPtr ent_trace_opts(Entity* ent) { - return ent->GetOptions(RenderMode::LINE_TRACE); + return ent->GetOptions(RenderMode::TRACE); } RenderOptionsPtr ent_simple_opts(Entity* ent) @@ -214,6 +214,11 @@ RenderOptionsPtr ent_cpk_opts(Entity* ent) return ent->GetOptions(RenderMode::CPK); } +RenderOptionsPtr ent_ltrace_opts(Entity* ent) +{ + return ent->GetOptions(RenderMode::LINE_TRACE); +} + } void export_Entity() @@ -273,6 +278,7 @@ void export_Entity() .add_property("cartoon_options", &ent_hsc_opts) .add_property("cpk_options", &ent_cpk_opts) .add_property("trace_options", &ent_trace_opts) + .add_property("line_trace_options", &ent_ltrace_opts) .def("ApplyOptions", &Entity::ApplyOptions) .def("SetOptions", &Entity::SetOptions) .def("Apply",&ent_apply_11) diff --git a/modules/gfx/pymod/export_render_options.cc b/modules/gfx/pymod/export_render_options.cc index b27e55c46..2c7277578 100644 --- a/modules/gfx/pymod/export_render_options.cc +++ b/modules/gfx/pymod/export_render_options.cc @@ -43,6 +43,10 @@ void export_RenderOptions() .def("GetLineWidth",&LineRenderOptions::GetLineWidth) .def("SetAALines",&LineRenderOptions::SetAALines) .def("GetAALines",&LineRenderOptions::GetAALines) + .add_property("aa_lines", &LineRenderOptions::GetAALines, + &LineRenderOptions::SetAALines) + .add_property("line_width", &LineRenderOptions::GetLineWidth, + &LineRenderOptions::SetLineWidth) ; class_<SimpleRenderOptions, boost::shared_ptr<SimpleRenderOptions>, bases<LineRenderOptions>, boost::noncopyable>("SimpleRenderOptions") @@ -50,6 +54,10 @@ void export_RenderOptions() .def("SetBondOrderDistance", &SimpleRenderOptions::SetBondOrderDistance) .def("GetBondOrderFlag", &SimpleRenderOptions::GetBondOrderFlag) .def("GetBondOrderDistance", &SimpleRenderOptions::GetBondOrderDistance) + .add_property("draw_bond_order", &SimpleRenderOptions::GetBondOrderFlag, + &SimpleRenderOptions::SetBondOrderFlag) + .add_property("bond_order_distance", &SimpleRenderOptions::GetBondOrderDistance, + &SimpleRenderOptions::SetBondOrderDistance) ; class_<LineTraceRenderOptions, boost::shared_ptr<LineTraceRenderOptions>, bases<LineRenderOptions>, boost::noncopyable>("LineTraceRenderOptions") @@ -65,6 +73,10 @@ void export_RenderOptions() .def("GetSphereDetail", &CPKRenderOptions::GetSphereDetail) .def("SetCPKMode", &CPKRenderOptions::SetCPKMode) .def("GetCPKMode", &CPKRenderOptions::GetCPKMode) + .add_property("cpk_mode", &CPKRenderOptions::GetCPKMode, + &CPKRenderOptions::SetCPKMode) + .add_property("sphere_detail", &CPKRenderOptions::GetSphereDetail, + &CPKRenderOptions::SetSphereDetail) ; class_<CustomRenderOptions, boost::shared_ptr<CustomRenderOptions>, bases<RenderOptions>, boost::noncopyable>("CustomRenderOptions") @@ -76,6 +88,11 @@ void export_RenderOptions() .def("GetSphereRad", &CustomRenderOptions::GetSphereRad) .def("SetBondRad", &CustomRenderOptions::SetBondRad) .def("GetBondRad", &CustomRenderOptions::GetBondRad) + .add_property("sphere_detail", &CustomRenderOptions::GetSphereDetail, &CustomRenderOptions::SetSphereDetail) + .add_property("bond_rad", &CustomRenderOptions::GetBondRad, &CustomRenderOptions::SetBondRad) + .add_property("sphere_rad", &CustomRenderOptions::GetSphereRad, &CustomRenderOptions::SetSphereRad) + .add_property("arc_detail", &CustomRenderOptions::GetArcDetail, + &CustomRenderOptions::SetArcDetail) ; class_<CartoonRenderOptions, boost::shared_ptr<CartoonRenderOptions>, bases<RenderOptions>, boost::noncopyable>("CartoonRenderOptions") @@ -119,6 +136,13 @@ void export_RenderOptions() .def("GetNormalSmoothFactor", &TraceRenderOptions::GetNormalSmoothFactor) .def("SetTubeRadius", &TraceRenderOptions::SetTubeRadius) .def("GetTubeRadius", &TraceRenderOptions::GetTubeRadius) + .add_property("tube_radius", &TraceRenderOptions::GetTubeRadius, + &TraceRenderOptions::SetTubeRadius) + .add_property("arc_detail", &TraceRenderOptions::GetArcDetail, + &TraceRenderOptions::SetArcDetail) + .add_property("normal_smooth_factor", + &TraceRenderOptions::GetNormalSmoothFactor, + &TraceRenderOptions::SetNormalSmoothFactor) ; } diff --git a/modules/gui/src/file_browser.cc b/modules/gui/src/file_browser.cc index 965e3321a..9c6885b1b 100644 --- a/modules/gui/src/file_browser.cc +++ b/modules/gui/src/file_browser.cc @@ -71,7 +71,9 @@ FileBrowser::FileBrowser(QWidget* parent): } # elif defined(__APPLE__) if (path.contains("DNG.app") || path=="/") { - QString example_path="/Applications/OpenStructure/Examples/entity"; + QDir dir(QCoreApplication::applicationDirPath()); + dir.cdUp(); + QString example_path=dir.path()+"/examples"; if (QDir(example_path).exists()) { path=example_path; } diff --git a/modules/index.rst b/modules/index.rst index c70e751c0..a9d779a20 100644 --- a/modules/index.rst +++ b/modules/index.rst @@ -2,7 +2,7 @@ OpenStructure documentation ================================================================================ .. toctree:: - :maxdepth: 2 + :maxdepth: 1 Introduction -------------------------------------------------------------------------------- @@ -10,31 +10,38 @@ Introduction .. toctree:: :maxdepth: 2 - intro install - + intro + + Modules -------------------------------------------------------------------------------- .. toctree:: - :maxdepth: 2 + :maxdepth: 1 base/generic - img/base/img - img/alg/alg + base/base geom/geom - conop/conop + mol/base/mol + conop/conop + + img/base/img + img/alg/alg + seq/base/seq - base/base + io/io + + gfx/gfx gui/gui Extending OpenStructure -------------------------------------------------------------------------------- .. toctree:: - :maxdepth: 2 + :maxdepth: 1 newmodule external diff --git a/modules/mol/base/doc/query.rst b/modules/mol/base/doc/query.rst index 20c4b711a..ff8ff21a4 100644 --- a/modules/mol/base/doc/query.rst +++ b/modules/mol/base/doc/query.rst @@ -1,93 +1,137 @@ Queries ================================================================================ -.. class:: Query +.. currentmodule:: ost.mol - Blabla - -It is often convenient to highlight or focus certain parts of the structure. OpenStructure includes a powerful query system that allows you to perform custom selections in a convenient way. -Please refer to the tutorial on the query language for an introduction. -The query language reference +The Basics -------------------------------------------------------------------------------- -The query consists of one or more predicates combined with boolean -operators. A predicate takes the form *prop op value*. Operators are -one of `` =, !=, >, >=, <=`` and ``<``. A predicate has the following form: -*PROPERTY - OPERATOR - ARGUMENT*. - -The following properties may be used in predicates. The supported type of the -value is given for each property. - - * ``rname`` residue name. type: string - * ``rnum`` residue number. currently only numeric part is honored. - type: int - * ``rtype`` residue type as given by the DSSP code, i.e. H for helix, E - for extended. type: string - * ``aname`` atom name. type: string - * ``ele`` element of atom. type: string - * ``cname`` chain name. type: string - * ``occ`` occupancy, between 0 and 1. type: float - * ``abfac`` B (temperature) factor of atom. type: float - * ``rbfac`` average B (temperature) factor of residue. type: float. - Note that this does not work for views as expected. When running a - second selection statement on a view, all atoms of the residue handle - and not the view are considered in the calculation - * ``ishetatm`` whether the atom is a hetorogenous atom. type: bool or int - (0 for false, 1 for true) - * ``peptide`` whether the residue is peptide linking. type: bool or int - (0 for false, 1 for true) - * ``x`` X coordinate of atom. type: float - * ``y`` Y coordinate of atom. type: float - * ``z`` Z coordinate of atom. type: float - * ``rindex`` index of residue in chain. This index is the same for views - and handles - * For :ref:`generic properties in queries <genprop-in-queries>` see below. - -Distance-based selections within a given atom position are supported by -the within statement. To select atoms within 5 Angstrom of the point -``{1, 2, 3}``, one would write: - -``5 <> {1,2,3}`` - -Negation of this expression is possible with the not operator, i.e. - -``not 5 <> {1,2,3}`` -will select atoms that are further than five Angstrom apart from ``{1, 2 , 3}`` - -Abbreviations +It is often convenient to highlight or focus certain parts of the structure. +OpenStructure includes a powerful query system that allows you to perform custom +selections in a convenient way. Selections are carried out mainly by calling the Select method made available by EntityHandle and :class:`EntityView` objects while providing a query string. Queries are written using a dedicated mini-language. For example, to select all arginine residues of a given structure, one would write: + +.. code-block:: python + + arginines=model.Select('rname=ARG') + +A simple selection query (called a predicate) consists in a property (here, +`rname`), a comparison operator (here, `=`) and an argument (here, `ARG`). The +return value of a call to the :meth:`EntityHandle.Select` method is always an +:class:`EntityView`. The :class:`EntityView` always contains a full hierarchy of +elements, never standalone separated elements. In the above example, the +:class:`EntityView` called `arginines` will contain all chains from the +structure called 'model' that have at least one arginine. In turn these chains +will contain all residues that have been identified as arginines. The residues +themselves will contain references to all of their atoms. Of course, queries are +not limited to selecting residues based on their type, it is also possible to +select atom by name: + +.. code-block:: python + + c_betas=model.Select('aname=CB') + +As before, c`betas is an instance of an :class:`EntityView` object and contains +a full hierarchy. The main difference to the previous example is that the +selected residues do not contain a list of all of their atoms but only the +C-beta. These examples clarify why the name 'view' was chosen for this result of +a :meth:`~EntityHandle.Select` statement. It represents a reduced, restrained +way of looking at the original structure. + +Both the selection statements that have been used so far take strings as their arguments. However, selection properties such as `rnum` (residue number), take numeric arguments. With numeric arguments it is possible to use identity operators ( `!=` and `=`). It is also possible to compare them using the `>`, `<`, `>=` and `<=` operators. For example, the 20 N-terminal residues of a protein can be selected with: + +.. code-block:: python + + n_term=model.Select('rnum<=20') + +Combining predicates ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -Two abbreviations exist for convenience: +Selection predicates can be combined with boolean operators. For example , you might want to select all C atoms with crystallographic occupancy higher than 50. These atoms must match the predicate `ele=C` in addition to the predicate `occ>50`. In the query language this can be written as: -Instead of writing +.. code-block:: python -``aname=CA or aname=C or aname=O or aname=N``, + model.Select('ele=C and occ>50') + +Compact forms are available for several selection statements. For example, to select all arginines and aspargines, one could use a statement like: -one can write +.. code-block:: python + + arg_and_asn=model.Select('rname=ARG or rname=ASN') -``aname=CA,N,C,O``. +However, this is rather cumbersome as it requires the word `rname` to be typed twice. Since the only difference between the two parts of the selection is the argument that follows the word `rname`, the statement can also be written in an abbreviated form: -For integral value ranges, one can use the colon syntax: instead of +.. code-block:: python + + arg_and_asn=model.Select('rname=ARG,ASN') -``rnum>=10 and rnum<=20`` +Another example: to select residues with numbers in the range 130 to 200, one could use the following statement -one can write +.. code-block:: python + + center=model.Select('rnum>=130 and rnum<=200') + +or alternatively use the much nicer syntax: + +.. code-block:: python + + center=model.Select('rnum=130:200') + +This last statement is completely equivalent to the previous one. This syntax +can be used when the selection statement requires a range of integer values +within a closed interval. + +Distance Queries +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The query + +.. code-block:: python + + around_center=model.Select('5 <> {0,0,0}') + +selects all chains, residues and atoms that lie with 5 Å to the origin of the reference system ({0,0,0}). The `<>` operator is called the ‘within’ operator. +Instead of a point, the within statements can also be used to return a view containing all chains, residues and atoms within a radius of another selection statement applied to the same entity. Square brackets are used to delimit the inner query statement. + +.. code-block:: python + + around_hem=model.Select('5 <> [rname=HEM]') + model.Select('5 <> [rname=HEM and ele=C] and rname!=HEM') + +Bonds and Queries +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +When an :class:`EntityView` is generated by a selection, it includes by default only bonds for which both connected atoms satisfy the query statement. This can be changed by passing the parameters `EXCLUSIVE_BONDS` or `NO_BONDS` when calling the Select method. `EXCLUSIVE_BONDS` adds bonds to the :class:`EntityView` when at least one of the two atoms falls within the boundary of the selection. `NO_BONDS` suppresses the bond inclusion step completely. + +Whole Residue Queries +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -``rnum=10:20`` +If the parameter `MATCH_RESIDUES` is passed when the Select method is called, the resulting :class:`EntityView` will include whole residues for which at least one atom satisfies the query. This means that if at least one atom in the residue falls within the boundaries of the selection, all atoms of the residue will be included in the View. + +More Query Usage +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The high level interface for queries are the Select methods of the +EntityHandle and :class:`EntityView` classes. By passing in a query string, a view +consisting of a subset of the elements is returned. + +Queries also offer a second interface: `IsAtomSelected()`, +`IsResidueSelected()` and `IsChainSelected()` take an atom, residue or +chain as their argument and return true or false, depending on whether the +element fulfills the predicates. .. _genprop-in-queries: Generic Properties in Queries --------------------------------------------------------------------------------- +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The query language can also be used for numeric generic properties (i.e. float and int), but the syntax is slightly different. To access any generic properties, it needs to be specified that they are generic and at which level -they are defined. Therefore, all generic properties start with a ``g``, followed by an ``a``, ``r`` or ``c`` for atom, residue or chain level respectively. +they are defined. Therefore, all generic properties start with a `g`, followed by an `a`, `r` or `c` for atom, residue or chain level respectively. .. code-block:: python @@ -122,3 +166,92 @@ statement which can be done using a ':' character: Using this method, you will be warned if a generic property is not set for all atoms, residues or chains unless you specify a default value. So, be careful when you do. + +Available Properties +-------------------------------------------------------------------------------- + +The following properties may be used in predicates. The type is given for each property. + +Properties of Chains +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +**cname/chain** (str) :attr:`Chain name<ChainHandle.name>` + +Properties of Residues +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +**rname** (str): :attr:`Residue name<ResidueHandle.name>` + +**rnum** (int): :attr:`Residue number<ResidueHandle.number>`. Currently only the numeric part is honored. + +**rtype** (str): Residue type as given by the DSSP code, i.e. H for helix, E for extended. + +**rindex** (int): :attr:`Index<ResidueHandle.index>` of residue in chain. This +index is the same for views and handles. + +**ishetatm** (bool): Whether the atom is a :attr:`heterogenous<AtomHandle.is_hetatm>` atom. + +**peptide** (bool): Whether the residue is a :meth:`peptide <ResidueHandle.IsPeptideLinking>`. + +**rbfac** (float): average B (temperature) factor of residue + +Properties of Atoms +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +**aname** (str): :attr:`Atom name<AtomHandle.name>` + +**ele** (str): :attr:`Atom element<AtomHandle.element>` + + + +**occ** (float): :attr:`Atom occupancy<AtomHandle.occupancy>` + +**abfac** (float): :attr:`Atom B-factor<AtomHandle.b_factor>` + +**x** (float): :attr:`X<AtomHandle.pos>` coordinate of atom. + +**y** (float): :attr:`Y<AtomHandle.pos>` coordinate of atom. + +**z** (float): :attr:`Z<AtomHandle.pos>` coordinate of atom. + +Query API documentation +-------------------------------------------------------------------------------- + +.. class:: Query(string='') + + Create a new query from the given string. The constructor does not throw any + error in case the query contains syntax errors. Use :attr:`valid` to check + whether the query was valid. + + + .. attribute:: string + + The string used to create the query. + + :type: str + + .. attribute:: valid + + True, when the query could be compiled without syntax errors. + + :type: bool + + .. attribute:: error + + If :attr:`valid` is false, this attribute contains the error message. + Otherwise it is set to an empty string + + :type: str + .. method:: IsAtomSelected(atom) + + Returns true, when the given atom handle fulfills the predicates, false if + not. + + .. method:: IsChainSelected(chain) + + Return true if at least one of the atomso of the chain matches the + predicates. + + .. method:: IsResidueSelected(residue) + + Returns true, when at least one atom of the residue matches the predicates. diff --git a/modules/mol/base/pymod/export_query.cc b/modules/mol/base/pymod/export_query.cc index 2a301e0b3..40c729672 100644 --- a/modules/mol/base/pymod/export_query.cc +++ b/modules/mol/base/pymod/export_query.cc @@ -29,6 +29,12 @@ void translate_QueryError(const QueryError& e) { PyErr_SetString(PyExc_RuntimeError, e.GetFormattedMessage().c_str()); } +String error_msg(Query& q) +{ + return QueryError(q.GetQueryString(), + q.GetErrorDescription()).GetFormattedMessage(); +} + void export_Query() { @@ -52,7 +58,9 @@ void export_Query() .def("IsAtomSelected", &Query::IsAtomSelected) .def("IsResidueSelected", &Query::IsResidueSelected) .def("IsChainSelected", &Query::IsChainSelected) - .add_property("String", + .add_property("valid", &Query::IsValid) + .add_property("error", &error_msg) + .add_property("string", make_function(&Query::GetQueryString, return_value_policy<copy_const_reference>())) .def("GetErrorDescription", &Query::GetErrorDescription, -- GitLab