<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.pymol.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Tlinnet</id>
	<title>PyMOL Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.pymol.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Tlinnet"/>
	<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php/Special:Contributions/Tlinnet"/>
	<updated>2026-05-07T11:29:03Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.1</generator>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=MAC_Install&amp;diff=14069</id>
		<title>MAC Install</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=MAC_Install&amp;diff=14069"/>
		<updated>2017-06-29T12:59:41Z</updated>

		<summary type="html">&lt;p&gt;Tlinnet: /* Problems with precompiled brew installed */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes how to install PyMOL on Mac OS X.&lt;br /&gt;
&lt;br /&gt;
== Incentive PyMOL ==&lt;br /&gt;
&lt;br /&gt;
=== MacPyMOL ===&lt;br /&gt;
&lt;br /&gt;
MacPyMOL is available exclusively to paying sponsors. [http://www.schrodinger.com Schrödinger] provides a DMG package which also includes ready-to-use [[APBS]], [[morph|RigiMOL]], an MPEG encoder for movie export, and a small molecule energy minimization engine.&lt;br /&gt;
&lt;br /&gt;
Download: http://pymol.org/download&lt;br /&gt;
&lt;br /&gt;
Installation: Drag '''MacPyMOL.app''' on the '''/Applications''' shortcut. (In principle, you could drag it into any Finder window and run it from there, it doesn’t have to live in /Applications).&lt;br /&gt;
&lt;br /&gt;
Uninstallation: Move '''/Applications/MacPyMOL.app''' to Trash&lt;br /&gt;
&lt;br /&gt;
=== Launching from Command Line ===&lt;br /&gt;
&lt;br /&gt;
The unix executable resides at '''/Applications/MacPyMOL.app/Contents/MacOS/MacPyMOL'''&lt;br /&gt;
&lt;br /&gt;
=== X11 Hybrid ===&lt;br /&gt;
&lt;br /&gt;
MacPyMOL can optionally run with the same two-window GUI which PyMOL uses on Windows and Linux. This GUI has some additional features, like the [[Plugins|Plugin]] menu and the [[Builder]].&lt;br /&gt;
&lt;br /&gt;
Requires [http://xquartz.macosforge.org/ XQuartz].&lt;br /&gt;
&lt;br /&gt;
There are two ways to launch the X11 interface:&lt;br /&gt;
# rename '''/Applications/MacPyMOL.app''' to '''/Applications/MacPyMOLX11Hybrid.app'''&lt;br /&gt;
# launch the unix executable with the '''-m''' flag: '''/Applications/MacPyMOL.app/Contents/MacOS/MacPyMOL -m'''&lt;br /&gt;
&lt;br /&gt;
=== Stereo on Second Monitor ===&lt;br /&gt;
The trick to getting MacPyMOL to work in stereo on the second monitor is to force it to initially open on that display by providing an appropriate &amp;quot;-X #&amp;quot; (and perhaps -Y #) option on launch.  That way the OpenGL context will be created with stereo support.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
./MacPyMOL.app/Contents/MacOS/MacPyMOL -X -1000&lt;br /&gt;
./MacPyMOL.app/Contents/MacOS/MacPyMOL -X -1000 -Y 100&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Source:''' ''Warren DeLano; PyMOL Users Archive''&lt;br /&gt;
&lt;br /&gt;
== Open-Source PyMOL ==&lt;br /&gt;
&lt;br /&gt;
=== Pre-compiled ===&lt;br /&gt;
&lt;br /&gt;
Pre-compiled Open-Source PyMOL is available [https://sourceforge.net/p/pymol/code/HEAD/tree/trunk/pymol/LICENSE free of charge] with the [https://www.macports.org/ MacPorts], [http://www.finkproject.org/ Fink] and [http://brew.sh/ Homebrew] environments.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Fink&lt;br /&gt;
fink install pymol-py27&lt;br /&gt;
&lt;br /&gt;
# MacPorts&lt;br /&gt;
sudo port install pymol&lt;br /&gt;
&lt;br /&gt;
# Homebrew&lt;br /&gt;
brew install homebrew/science/pymol&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure that the dependencies are installed with the required flags:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# MacPorts&lt;br /&gt;
sudo port install tcl -corefoundation&lt;br /&gt;
sudo port install tk -quartz&lt;br /&gt;
&lt;br /&gt;
# Homebrew&lt;br /&gt;
brew install Caskroom/cask/xquartz&lt;br /&gt;
brew install tcl-tk --with-threads --with-x11&lt;br /&gt;
brew install python --with-tcl-tk&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If PyMOL complains that it wasn't able to find X11, try starting xquartz first, then run pymol from the console.&lt;br /&gt;
&lt;br /&gt;
=== Install from Source ===&lt;br /&gt;
&lt;br /&gt;
If you want the latest PyMOL code (warning: might include experimental changes), then follow the [[Linux_Install#Install_from_source|Linux installation instructions]]. You will need an environment like Fink, MacPorts or Homebrew to install the dependencies. Make sure you use the appropriate python interpreter (e.g. '''/sw/bin/python2.7''' when using Fink).&lt;br /&gt;
&lt;br /&gt;
=== Install APBS with Fink ===&lt;br /&gt;
&lt;br /&gt;
To use the electrostatics plugin, you will need [http://apbs.sourceforge.net/ APBS] and its dependencies.  These are also available as Fink packages, and include [http://pdb.finkproject.org/pdb/package.php/apbs APBS], [http://pdb.finkproject.org/pdb/package.php/maloc maloc] and [http://pdb.finkproject.org/pdb/package.php/pdb2pqr pdb2pqr]. If you have multiple processors available, you might wish to install the [http://pdb.finkproject.org/pdb/package.php/apbs-mpi-openmpi MPI version of APBS].&lt;br /&gt;
&lt;br /&gt;
Issuing the command&lt;br /&gt;
&lt;br /&gt;
 fink install apbs&lt;br /&gt;
&lt;br /&gt;
will install apbs and its required dependencies for you.  The fink pymol package is already preconfigured to do the right thing to use apbs as a plugin.&lt;br /&gt;
&lt;br /&gt;
=== Stereo issues ===&lt;br /&gt;
Some older Macs seem to crash with stereo graphics. If this happens to you, a workaround is to launch PyMOL explicitly in Mono mode with `pymol -M`.  You can also set up an alias in your ~/.profile:&lt;br /&gt;
&lt;br /&gt;
 alias pymol='pymol -M'&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[pymolrc]]&lt;br /&gt;
* [[Linux Install]]&lt;br /&gt;
* [[Windows Install]]&lt;br /&gt;
* [[MovieSchool_6#Exporting_your_Movie|FreeMOL installation for MPEG movie export]]&lt;br /&gt;
* [[User:Wgscott|Bill Scott’s]] [[MacOSX-specific .pymolrc file]] and his crystallographic software [http://xanana.ucsc.edu/~wgscott/xtal/wiki/index.php/Main_Page wiki] and [http://chemistry.ucsc.edu/~wgscott/xtal/ website], including instructions on [http://xanana.ucsc.edu/~wgscott/xtal/wiki/index.php/Getting_your_fink_installation_to_use_packages_that_I_have_pre-compiled how to install precompiled binary packages using fink].&lt;br /&gt;
* [[Launching_PyMOL#MacOS_X]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Installation|Mac]]&lt;br /&gt;
[[Category:Nucleic_Acids|MAC Install]]&lt;br /&gt;
[[Category:Technical Issues|MAC Install]]&lt;br /&gt;
[[Category:Mac|MAC Install]]&lt;/div&gt;</summary>
		<author><name>Tlinnet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=MAC_Install&amp;diff=14068</id>
		<title>MAC Install</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=MAC_Install&amp;diff=14068"/>
		<updated>2017-06-29T12:54:53Z</updated>

		<summary type="html">&lt;p&gt;Tlinnet: /* Problems with precompiled brew installed */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes how to install PyMOL on Mac OS X.&lt;br /&gt;
&lt;br /&gt;
== Incentive PyMOL ==&lt;br /&gt;
&lt;br /&gt;
=== MacPyMOL ===&lt;br /&gt;
&lt;br /&gt;
MacPyMOL is available exclusively to paying sponsors. [http://www.schrodinger.com Schrödinger] provides a DMG package which also includes ready-to-use [[APBS]], [[morph|RigiMOL]], an MPEG encoder for movie export, and a small molecule energy minimization engine.&lt;br /&gt;
&lt;br /&gt;
Download: http://pymol.org/download&lt;br /&gt;
&lt;br /&gt;
Installation: Drag '''MacPyMOL.app''' on the '''/Applications''' shortcut. (In principle, you could drag it into any Finder window and run it from there, it doesn’t have to live in /Applications).&lt;br /&gt;
&lt;br /&gt;
Uninstallation: Move '''/Applications/MacPyMOL.app''' to Trash&lt;br /&gt;
&lt;br /&gt;
=== Launching from Command Line ===&lt;br /&gt;
&lt;br /&gt;
The unix executable resides at '''/Applications/MacPyMOL.app/Contents/MacOS/MacPyMOL'''&lt;br /&gt;
&lt;br /&gt;
=== X11 Hybrid ===&lt;br /&gt;
&lt;br /&gt;
MacPyMOL can optionally run with the same two-window GUI which PyMOL uses on Windows and Linux. This GUI has some additional features, like the [[Plugins|Plugin]] menu and the [[Builder]].&lt;br /&gt;
&lt;br /&gt;
Requires [http://xquartz.macosforge.org/ XQuartz].&lt;br /&gt;
&lt;br /&gt;
There are two ways to launch the X11 interface:&lt;br /&gt;
# rename '''/Applications/MacPyMOL.app''' to '''/Applications/MacPyMOLX11Hybrid.app'''&lt;br /&gt;
# launch the unix executable with the '''-m''' flag: '''/Applications/MacPyMOL.app/Contents/MacOS/MacPyMOL -m'''&lt;br /&gt;
&lt;br /&gt;
=== Stereo on Second Monitor ===&lt;br /&gt;
The trick to getting MacPyMOL to work in stereo on the second monitor is to force it to initially open on that display by providing an appropriate &amp;quot;-X #&amp;quot; (and perhaps -Y #) option on launch.  That way the OpenGL context will be created with stereo support.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
./MacPyMOL.app/Contents/MacOS/MacPyMOL -X -1000&lt;br /&gt;
./MacPyMOL.app/Contents/MacOS/MacPyMOL -X -1000 -Y 100&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Source:''' ''Warren DeLano; PyMOL Users Archive''&lt;br /&gt;
&lt;br /&gt;
== Open-Source PyMOL ==&lt;br /&gt;
&lt;br /&gt;
=== Pre-compiled ===&lt;br /&gt;
&lt;br /&gt;
Pre-compiled Open-Source PyMOL is available [https://sourceforge.net/p/pymol/code/HEAD/tree/trunk/pymol/LICENSE free of charge] with the [https://www.macports.org/ MacPorts], [http://www.finkproject.org/ Fink] and [http://brew.sh/ Homebrew] environments.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Fink&lt;br /&gt;
fink install pymol-py27&lt;br /&gt;
&lt;br /&gt;
# MacPorts&lt;br /&gt;
sudo port install pymol&lt;br /&gt;
&lt;br /&gt;
# Homebrew&lt;br /&gt;
brew install homebrew/science/pymol&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure that the dependencies are installed with the required flags:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# MacPorts&lt;br /&gt;
sudo port install tcl -corefoundation&lt;br /&gt;
sudo port install tk -quartz&lt;br /&gt;
&lt;br /&gt;
# Homebrew&lt;br /&gt;
brew install Caskroom/cask/xquartz&lt;br /&gt;
brew install tcl-tk --with-threads --with-x11&lt;br /&gt;
brew install python --with-tcl-tk&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If PyMOL complains that it wasn't able to find X11, try starting xquartz first, then run pymol from the console.&lt;br /&gt;
&lt;br /&gt;
=== Problems with precompiled brew installed ===&lt;br /&gt;
This was experienced on date: 2017/06/29, on macOS Sierra 10.12.5.&lt;br /&gt;
&lt;br /&gt;
There was a problem with '''tcl-tk''' from brew, which gave an error '''Abort trap: 6” error'''. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This can be confirmed with running the brew installed python:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/bin/python&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; import Tkinter &lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; Tkinter.__file__&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; Tkinter._test()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To fix, first un-install&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
brew uninstall pymol&lt;br /&gt;
brew uninstall --ignore-dependencies python&lt;br /&gt;
brew uninstall tcl-tk&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then modify the brew formula&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
brew edit python&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un-commenting the Patch fix at:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
  # Patch to disable the search for Tk.framework, since Homebrew's Tk is&lt;br /&gt;
  # a plain unix build. Remove `-lX11`, too because our Tk is &amp;quot;AquaTk&amp;quot;.&lt;br /&gt;
  #if build.with? &amp;quot;tcl-tk&amp;quot;&lt;br /&gt;
    #patch do&lt;br /&gt;
      #url &amp;quot;https://raw.githubusercontent.com/Homebrew/patches/42fcf22/python/brewed-tk-patch.diff&amp;quot;&lt;br /&gt;
      #sha256 &amp;quot;15c153bdfe51a98efe48f8e8379f5d9b5c6c4015e53d3f9364d23c8689857f09&amp;quot;&lt;br /&gt;
    #end&lt;br /&gt;
  #end&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then install&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
brew install pymol&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then test Tkinter&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/bin/python&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; import Tkinter &lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; Tkinter.__file__&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; Tkinter._test()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then test pymol&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
brew install pymol&lt;br /&gt;
pymol&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Install from Source ===&lt;br /&gt;
&lt;br /&gt;
If you want the latest PyMOL code (warning: might include experimental changes), then follow the [[Linux_Install#Install_from_source|Linux installation instructions]]. You will need an environment like Fink, MacPorts or Homebrew to install the dependencies. Make sure you use the appropriate python interpreter (e.g. '''/sw/bin/python2.7''' when using Fink).&lt;br /&gt;
&lt;br /&gt;
=== Install APBS with Fink ===&lt;br /&gt;
&lt;br /&gt;
To use the electrostatics plugin, you will need [http://apbs.sourceforge.net/ APBS] and its dependencies.  These are also available as Fink packages, and include [http://pdb.finkproject.org/pdb/package.php/apbs APBS], [http://pdb.finkproject.org/pdb/package.php/maloc maloc] and [http://pdb.finkproject.org/pdb/package.php/pdb2pqr pdb2pqr]. If you have multiple processors available, you might wish to install the [http://pdb.finkproject.org/pdb/package.php/apbs-mpi-openmpi MPI version of APBS].&lt;br /&gt;
&lt;br /&gt;
Issuing the command&lt;br /&gt;
&lt;br /&gt;
 fink install apbs&lt;br /&gt;
&lt;br /&gt;
will install apbs and its required dependencies for you.  The fink pymol package is already preconfigured to do the right thing to use apbs as a plugin.&lt;br /&gt;
&lt;br /&gt;
=== Stereo issues ===&lt;br /&gt;
Some older Macs seem to crash with stereo graphics. If this happens to you, a workaround is to launch PyMOL explicitly in Mono mode with `pymol -M`.  You can also set up an alias in your ~/.profile:&lt;br /&gt;
&lt;br /&gt;
 alias pymol='pymol -M'&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[pymolrc]]&lt;br /&gt;
* [[Linux Install]]&lt;br /&gt;
* [[Windows Install]]&lt;br /&gt;
* [[MovieSchool_6#Exporting_your_Movie|FreeMOL installation for MPEG movie export]]&lt;br /&gt;
* [[User:Wgscott|Bill Scott’s]] [[MacOSX-specific .pymolrc file]] and his crystallographic software [http://xanana.ucsc.edu/~wgscott/xtal/wiki/index.php/Main_Page wiki] and [http://chemistry.ucsc.edu/~wgscott/xtal/ website], including instructions on [http://xanana.ucsc.edu/~wgscott/xtal/wiki/index.php/Getting_your_fink_installation_to_use_packages_that_I_have_pre-compiled how to install precompiled binary packages using fink].&lt;br /&gt;
* [[Launching_PyMOL#MacOS_X]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Installation|Mac]]&lt;br /&gt;
[[Category:Nucleic_Acids|MAC Install]]&lt;br /&gt;
[[Category:Technical Issues|MAC Install]]&lt;br /&gt;
[[Category:Mac|MAC Install]]&lt;/div&gt;</summary>
		<author><name>Tlinnet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=MAC_Install&amp;diff=14067</id>
		<title>MAC Install</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=MAC_Install&amp;diff=14067"/>
		<updated>2017-06-29T12:43:37Z</updated>

		<summary type="html">&lt;p&gt;Tlinnet: /* Problems with precompiled brew installed */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes how to install PyMOL on Mac OS X.&lt;br /&gt;
&lt;br /&gt;
== Incentive PyMOL ==&lt;br /&gt;
&lt;br /&gt;
=== MacPyMOL ===&lt;br /&gt;
&lt;br /&gt;
MacPyMOL is available exclusively to paying sponsors. [http://www.schrodinger.com Schrödinger] provides a DMG package which also includes ready-to-use [[APBS]], [[morph|RigiMOL]], an MPEG encoder for movie export, and a small molecule energy minimization engine.&lt;br /&gt;
&lt;br /&gt;
Download: http://pymol.org/download&lt;br /&gt;
&lt;br /&gt;
Installation: Drag '''MacPyMOL.app''' on the '''/Applications''' shortcut. (In principle, you could drag it into any Finder window and run it from there, it doesn’t have to live in /Applications).&lt;br /&gt;
&lt;br /&gt;
Uninstallation: Move '''/Applications/MacPyMOL.app''' to Trash&lt;br /&gt;
&lt;br /&gt;
=== Launching from Command Line ===&lt;br /&gt;
&lt;br /&gt;
The unix executable resides at '''/Applications/MacPyMOL.app/Contents/MacOS/MacPyMOL'''&lt;br /&gt;
&lt;br /&gt;
=== X11 Hybrid ===&lt;br /&gt;
&lt;br /&gt;
MacPyMOL can optionally run with the same two-window GUI which PyMOL uses on Windows and Linux. This GUI has some additional features, like the [[Plugins|Plugin]] menu and the [[Builder]].&lt;br /&gt;
&lt;br /&gt;
Requires [http://xquartz.macosforge.org/ XQuartz].&lt;br /&gt;
&lt;br /&gt;
There are two ways to launch the X11 interface:&lt;br /&gt;
# rename '''/Applications/MacPyMOL.app''' to '''/Applications/MacPyMOLX11Hybrid.app'''&lt;br /&gt;
# launch the unix executable with the '''-m''' flag: '''/Applications/MacPyMOL.app/Contents/MacOS/MacPyMOL -m'''&lt;br /&gt;
&lt;br /&gt;
=== Stereo on Second Monitor ===&lt;br /&gt;
The trick to getting MacPyMOL to work in stereo on the second monitor is to force it to initially open on that display by providing an appropriate &amp;quot;-X #&amp;quot; (and perhaps -Y #) option on launch.  That way the OpenGL context will be created with stereo support.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
./MacPyMOL.app/Contents/MacOS/MacPyMOL -X -1000&lt;br /&gt;
./MacPyMOL.app/Contents/MacOS/MacPyMOL -X -1000 -Y 100&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Source:''' ''Warren DeLano; PyMOL Users Archive''&lt;br /&gt;
&lt;br /&gt;
== Open-Source PyMOL ==&lt;br /&gt;
&lt;br /&gt;
=== Pre-compiled ===&lt;br /&gt;
&lt;br /&gt;
Pre-compiled Open-Source PyMOL is available [https://sourceforge.net/p/pymol/code/HEAD/tree/trunk/pymol/LICENSE free of charge] with the [https://www.macports.org/ MacPorts], [http://www.finkproject.org/ Fink] and [http://brew.sh/ Homebrew] environments.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Fink&lt;br /&gt;
fink install pymol-py27&lt;br /&gt;
&lt;br /&gt;
# MacPorts&lt;br /&gt;
sudo port install pymol&lt;br /&gt;
&lt;br /&gt;
# Homebrew&lt;br /&gt;
brew install homebrew/science/pymol&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure that the dependencies are installed with the required flags:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# MacPorts&lt;br /&gt;
sudo port install tcl -corefoundation&lt;br /&gt;
sudo port install tk -quartz&lt;br /&gt;
&lt;br /&gt;
# Homebrew&lt;br /&gt;
brew install Caskroom/cask/xquartz&lt;br /&gt;
brew install tcl-tk --with-threads --with-x11&lt;br /&gt;
brew install python --with-tcl-tk&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If PyMOL complains that it wasn't able to find X11, try starting xquartz first, then run pymol from the console.&lt;br /&gt;
&lt;br /&gt;
=== Problems with precompiled brew installed ===&lt;br /&gt;
This was experienced on date: 2017/06/29, on macOS Sierra 10.12.5.&lt;br /&gt;
X11 has been installed with https://www.xquartz.org &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There was a problem with '''tcl-tk''' from brew, which gave an error '''Abort trap: 6” error'''. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This can be confirmed with running the brew installed python:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/bin/python&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; import Tkinter &lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; Tkinter.__file__&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; Tkinter._test()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To fix, first un-install&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
brew uninstall pymol&lt;br /&gt;
brew uninstall --ignore-dependencies python&lt;br /&gt;
brew uninstall tcl-tk&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then modify the brew formula&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
brew edit python&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un-commenting the Patch fix at:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
  # Patch to disable the search for Tk.framework, since Homebrew's Tk is&lt;br /&gt;
  # a plain unix build. Remove `-lX11`, too because our Tk is &amp;quot;AquaTk&amp;quot;.&lt;br /&gt;
  #if build.with? &amp;quot;tcl-tk&amp;quot;&lt;br /&gt;
    #patch do&lt;br /&gt;
      #url &amp;quot;https://raw.githubusercontent.com/Homebrew/patches/42fcf22/python/brewed-tk-patch.diff&amp;quot;&lt;br /&gt;
      #sha256 &amp;quot;15c153bdfe51a98efe48f8e8379f5d9b5c6c4015e53d3f9364d23c8689857f09&amp;quot;&lt;br /&gt;
    #end&lt;br /&gt;
  #end&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then install&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
brew install pymol&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then test Tkinter&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/bin/python&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; import Tkinter &lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; Tkinter.__file__&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; Tkinter._test()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then test pymol&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
brew install pymol&lt;br /&gt;
pymol&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Install from Source ===&lt;br /&gt;
&lt;br /&gt;
If you want the latest PyMOL code (warning: might include experimental changes), then follow the [[Linux_Install#Install_from_source|Linux installation instructions]]. You will need an environment like Fink, MacPorts or Homebrew to install the dependencies. Make sure you use the appropriate python interpreter (e.g. '''/sw/bin/python2.7''' when using Fink).&lt;br /&gt;
&lt;br /&gt;
=== Install APBS with Fink ===&lt;br /&gt;
&lt;br /&gt;
To use the electrostatics plugin, you will need [http://apbs.sourceforge.net/ APBS] and its dependencies.  These are also available as Fink packages, and include [http://pdb.finkproject.org/pdb/package.php/apbs APBS], [http://pdb.finkproject.org/pdb/package.php/maloc maloc] and [http://pdb.finkproject.org/pdb/package.php/pdb2pqr pdb2pqr]. If you have multiple processors available, you might wish to install the [http://pdb.finkproject.org/pdb/package.php/apbs-mpi-openmpi MPI version of APBS].&lt;br /&gt;
&lt;br /&gt;
Issuing the command&lt;br /&gt;
&lt;br /&gt;
 fink install apbs&lt;br /&gt;
&lt;br /&gt;
will install apbs and its required dependencies for you.  The fink pymol package is already preconfigured to do the right thing to use apbs as a plugin.&lt;br /&gt;
&lt;br /&gt;
=== Stereo issues ===&lt;br /&gt;
Some older Macs seem to crash with stereo graphics. If this happens to you, a workaround is to launch PyMOL explicitly in Mono mode with `pymol -M`.  You can also set up an alias in your ~/.profile:&lt;br /&gt;
&lt;br /&gt;
 alias pymol='pymol -M'&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[pymolrc]]&lt;br /&gt;
* [[Linux Install]]&lt;br /&gt;
* [[Windows Install]]&lt;br /&gt;
* [[MovieSchool_6#Exporting_your_Movie|FreeMOL installation for MPEG movie export]]&lt;br /&gt;
* [[User:Wgscott|Bill Scott’s]] [[MacOSX-specific .pymolrc file]] and his crystallographic software [http://xanana.ucsc.edu/~wgscott/xtal/wiki/index.php/Main_Page wiki] and [http://chemistry.ucsc.edu/~wgscott/xtal/ website], including instructions on [http://xanana.ucsc.edu/~wgscott/xtal/wiki/index.php/Getting_your_fink_installation_to_use_packages_that_I_have_pre-compiled how to install precompiled binary packages using fink].&lt;br /&gt;
* [[Launching_PyMOL#MacOS_X]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Installation|Mac]]&lt;br /&gt;
[[Category:Nucleic_Acids|MAC Install]]&lt;br /&gt;
[[Category:Technical Issues|MAC Install]]&lt;br /&gt;
[[Category:Mac|MAC Install]]&lt;/div&gt;</summary>
		<author><name>Tlinnet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=MAC_Install&amp;diff=14066</id>
		<title>MAC Install</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=MAC_Install&amp;diff=14066"/>
		<updated>2017-06-29T12:41:05Z</updated>

		<summary type="html">&lt;p&gt;Tlinnet: /* Problems with precompiled brew installed */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes how to install PyMOL on Mac OS X.&lt;br /&gt;
&lt;br /&gt;
== Incentive PyMOL ==&lt;br /&gt;
&lt;br /&gt;
=== MacPyMOL ===&lt;br /&gt;
&lt;br /&gt;
MacPyMOL is available exclusively to paying sponsors. [http://www.schrodinger.com Schrödinger] provides a DMG package which also includes ready-to-use [[APBS]], [[morph|RigiMOL]], an MPEG encoder for movie export, and a small molecule energy minimization engine.&lt;br /&gt;
&lt;br /&gt;
Download: http://pymol.org/download&lt;br /&gt;
&lt;br /&gt;
Installation: Drag '''MacPyMOL.app''' on the '''/Applications''' shortcut. (In principle, you could drag it into any Finder window and run it from there, it doesn’t have to live in /Applications).&lt;br /&gt;
&lt;br /&gt;
Uninstallation: Move '''/Applications/MacPyMOL.app''' to Trash&lt;br /&gt;
&lt;br /&gt;
=== Launching from Command Line ===&lt;br /&gt;
&lt;br /&gt;
The unix executable resides at '''/Applications/MacPyMOL.app/Contents/MacOS/MacPyMOL'''&lt;br /&gt;
&lt;br /&gt;
=== X11 Hybrid ===&lt;br /&gt;
&lt;br /&gt;
MacPyMOL can optionally run with the same two-window GUI which PyMOL uses on Windows and Linux. This GUI has some additional features, like the [[Plugins|Plugin]] menu and the [[Builder]].&lt;br /&gt;
&lt;br /&gt;
Requires [http://xquartz.macosforge.org/ XQuartz].&lt;br /&gt;
&lt;br /&gt;
There are two ways to launch the X11 interface:&lt;br /&gt;
# rename '''/Applications/MacPyMOL.app''' to '''/Applications/MacPyMOLX11Hybrid.app'''&lt;br /&gt;
# launch the unix executable with the '''-m''' flag: '''/Applications/MacPyMOL.app/Contents/MacOS/MacPyMOL -m'''&lt;br /&gt;
&lt;br /&gt;
=== Stereo on Second Monitor ===&lt;br /&gt;
The trick to getting MacPyMOL to work in stereo on the second monitor is to force it to initially open on that display by providing an appropriate &amp;quot;-X #&amp;quot; (and perhaps -Y #) option on launch.  That way the OpenGL context will be created with stereo support.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
./MacPyMOL.app/Contents/MacOS/MacPyMOL -X -1000&lt;br /&gt;
./MacPyMOL.app/Contents/MacOS/MacPyMOL -X -1000 -Y 100&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Source:''' ''Warren DeLano; PyMOL Users Archive''&lt;br /&gt;
&lt;br /&gt;
== Open-Source PyMOL ==&lt;br /&gt;
&lt;br /&gt;
=== Pre-compiled ===&lt;br /&gt;
&lt;br /&gt;
Pre-compiled Open-Source PyMOL is available [https://sourceforge.net/p/pymol/code/HEAD/tree/trunk/pymol/LICENSE free of charge] with the [https://www.macports.org/ MacPorts], [http://www.finkproject.org/ Fink] and [http://brew.sh/ Homebrew] environments.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Fink&lt;br /&gt;
fink install pymol-py27&lt;br /&gt;
&lt;br /&gt;
# MacPorts&lt;br /&gt;
sudo port install pymol&lt;br /&gt;
&lt;br /&gt;
# Homebrew&lt;br /&gt;
brew install homebrew/science/pymol&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure that the dependencies are installed with the required flags:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# MacPorts&lt;br /&gt;
sudo port install tcl -corefoundation&lt;br /&gt;
sudo port install tk -quartz&lt;br /&gt;
&lt;br /&gt;
# Homebrew&lt;br /&gt;
brew install Caskroom/cask/xquartz&lt;br /&gt;
brew install tcl-tk --with-threads --with-x11&lt;br /&gt;
brew install python --with-tcl-tk&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If PyMOL complains that it wasn't able to find X11, try starting xquartz first, then run pymol from the console.&lt;br /&gt;
&lt;br /&gt;
=== Problems with precompiled brew installed ===&lt;br /&gt;
This was experienced on date: 2017/06/29, on macOS Sierra 10.12.5.&lt;br /&gt;
X11 has been installed with https://www.xquartz.org &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There was a problem with '''tcl-tk''' from brew, which gave an error '''Abort trap: 6” error'''. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This can be confirmed with running the brew installed python:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/bin/python&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; import Tkinter &lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; Tkinter.__file__&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; Tkinter._test()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To fix, first un-install&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
brew uninstall pymol&lt;br /&gt;
brew uninstall --ignore-dependencies python&lt;br /&gt;
brew uninstall tcl-tk&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then modify the brew formula&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
brew edit python&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un-commenting the Patch fix at:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
  # Patch to disable the search for Tk.framework, since Homebrew's Tk is&lt;br /&gt;
  # a plain unix build. Remove `-lX11`, too because our Tk is &amp;quot;AquaTk&amp;quot;.&lt;br /&gt;
  #if build.with? &amp;quot;tcl-tk&amp;quot;&lt;br /&gt;
    #patch do&lt;br /&gt;
      #url &amp;quot;https://raw.githubusercontent.com/Homebrew/patches/42fcf22/python/brewed-tk-patch.diff&amp;quot;&lt;br /&gt;
      #sha256 &amp;quot;15c153bdfe51a98efe48f8e8379f5d9b5c6c4015e53d3f9364d23c8689857f09&amp;quot;&lt;br /&gt;
    #end&lt;br /&gt;
  #end&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then install&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
brew install pymol&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then test Tkinter&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/bin/python&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; import Tkinter &lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; Tkinter.__file__&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; Tkinter._test()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then test pymol&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
pymol&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Install from Source ===&lt;br /&gt;
&lt;br /&gt;
If you want the latest PyMOL code (warning: might include experimental changes), then follow the [[Linux_Install#Install_from_source|Linux installation instructions]]. You will need an environment like Fink, MacPorts or Homebrew to install the dependencies. Make sure you use the appropriate python interpreter (e.g. '''/sw/bin/python2.7''' when using Fink).&lt;br /&gt;
&lt;br /&gt;
=== Install APBS with Fink ===&lt;br /&gt;
&lt;br /&gt;
To use the electrostatics plugin, you will need [http://apbs.sourceforge.net/ APBS] and its dependencies.  These are also available as Fink packages, and include [http://pdb.finkproject.org/pdb/package.php/apbs APBS], [http://pdb.finkproject.org/pdb/package.php/maloc maloc] and [http://pdb.finkproject.org/pdb/package.php/pdb2pqr pdb2pqr]. If you have multiple processors available, you might wish to install the [http://pdb.finkproject.org/pdb/package.php/apbs-mpi-openmpi MPI version of APBS].&lt;br /&gt;
&lt;br /&gt;
Issuing the command&lt;br /&gt;
&lt;br /&gt;
 fink install apbs&lt;br /&gt;
&lt;br /&gt;
will install apbs and its required dependencies for you.  The fink pymol package is already preconfigured to do the right thing to use apbs as a plugin.&lt;br /&gt;
&lt;br /&gt;
=== Stereo issues ===&lt;br /&gt;
Some older Macs seem to crash with stereo graphics. If this happens to you, a workaround is to launch PyMOL explicitly in Mono mode with `pymol -M`.  You can also set up an alias in your ~/.profile:&lt;br /&gt;
&lt;br /&gt;
 alias pymol='pymol -M'&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[pymolrc]]&lt;br /&gt;
* [[Linux Install]]&lt;br /&gt;
* [[Windows Install]]&lt;br /&gt;
* [[MovieSchool_6#Exporting_your_Movie|FreeMOL installation for MPEG movie export]]&lt;br /&gt;
* [[User:Wgscott|Bill Scott’s]] [[MacOSX-specific .pymolrc file]] and his crystallographic software [http://xanana.ucsc.edu/~wgscott/xtal/wiki/index.php/Main_Page wiki] and [http://chemistry.ucsc.edu/~wgscott/xtal/ website], including instructions on [http://xanana.ucsc.edu/~wgscott/xtal/wiki/index.php/Getting_your_fink_installation_to_use_packages_that_I_have_pre-compiled how to install precompiled binary packages using fink].&lt;br /&gt;
* [[Launching_PyMOL#MacOS_X]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Installation|Mac]]&lt;br /&gt;
[[Category:Nucleic_Acids|MAC Install]]&lt;br /&gt;
[[Category:Technical Issues|MAC Install]]&lt;br /&gt;
[[Category:Mac|MAC Install]]&lt;/div&gt;</summary>
		<author><name>Tlinnet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=MAC_Install&amp;diff=14065</id>
		<title>MAC Install</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=MAC_Install&amp;diff=14065"/>
		<updated>2017-06-29T12:29:28Z</updated>

		<summary type="html">&lt;p&gt;Tlinnet: /* Open-Source PyMOL */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes how to install PyMOL on Mac OS X.&lt;br /&gt;
&lt;br /&gt;
== Incentive PyMOL ==&lt;br /&gt;
&lt;br /&gt;
=== MacPyMOL ===&lt;br /&gt;
&lt;br /&gt;
MacPyMOL is available exclusively to paying sponsors. [http://www.schrodinger.com Schrödinger] provides a DMG package which also includes ready-to-use [[APBS]], [[morph|RigiMOL]], an MPEG encoder for movie export, and a small molecule energy minimization engine.&lt;br /&gt;
&lt;br /&gt;
Download: http://pymol.org/download&lt;br /&gt;
&lt;br /&gt;
Installation: Drag '''MacPyMOL.app''' on the '''/Applications''' shortcut. (In principle, you could drag it into any Finder window and run it from there, it doesn’t have to live in /Applications).&lt;br /&gt;
&lt;br /&gt;
Uninstallation: Move '''/Applications/MacPyMOL.app''' to Trash&lt;br /&gt;
&lt;br /&gt;
=== Launching from Command Line ===&lt;br /&gt;
&lt;br /&gt;
The unix executable resides at '''/Applications/MacPyMOL.app/Contents/MacOS/MacPyMOL'''&lt;br /&gt;
&lt;br /&gt;
=== X11 Hybrid ===&lt;br /&gt;
&lt;br /&gt;
MacPyMOL can optionally run with the same two-window GUI which PyMOL uses on Windows and Linux. This GUI has some additional features, like the [[Plugins|Plugin]] menu and the [[Builder]].&lt;br /&gt;
&lt;br /&gt;
Requires [http://xquartz.macosforge.org/ XQuartz].&lt;br /&gt;
&lt;br /&gt;
There are two ways to launch the X11 interface:&lt;br /&gt;
# rename '''/Applications/MacPyMOL.app''' to '''/Applications/MacPyMOLX11Hybrid.app'''&lt;br /&gt;
# launch the unix executable with the '''-m''' flag: '''/Applications/MacPyMOL.app/Contents/MacOS/MacPyMOL -m'''&lt;br /&gt;
&lt;br /&gt;
=== Stereo on Second Monitor ===&lt;br /&gt;
The trick to getting MacPyMOL to work in stereo on the second monitor is to force it to initially open on that display by providing an appropriate &amp;quot;-X #&amp;quot; (and perhaps -Y #) option on launch.  That way the OpenGL context will be created with stereo support.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
./MacPyMOL.app/Contents/MacOS/MacPyMOL -X -1000&lt;br /&gt;
./MacPyMOL.app/Contents/MacOS/MacPyMOL -X -1000 -Y 100&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Source:''' ''Warren DeLano; PyMOL Users Archive''&lt;br /&gt;
&lt;br /&gt;
== Open-Source PyMOL ==&lt;br /&gt;
&lt;br /&gt;
=== Pre-compiled ===&lt;br /&gt;
&lt;br /&gt;
Pre-compiled Open-Source PyMOL is available [https://sourceforge.net/p/pymol/code/HEAD/tree/trunk/pymol/LICENSE free of charge] with the [https://www.macports.org/ MacPorts], [http://www.finkproject.org/ Fink] and [http://brew.sh/ Homebrew] environments.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Fink&lt;br /&gt;
fink install pymol-py27&lt;br /&gt;
&lt;br /&gt;
# MacPorts&lt;br /&gt;
sudo port install pymol&lt;br /&gt;
&lt;br /&gt;
# Homebrew&lt;br /&gt;
brew install homebrew/science/pymol&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure that the dependencies are installed with the required flags:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# MacPorts&lt;br /&gt;
sudo port install tcl -corefoundation&lt;br /&gt;
sudo port install tk -quartz&lt;br /&gt;
&lt;br /&gt;
# Homebrew&lt;br /&gt;
brew install Caskroom/cask/xquartz&lt;br /&gt;
brew install tcl-tk --with-threads --with-x11&lt;br /&gt;
brew install python --with-tcl-tk&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If PyMOL complains that it wasn't able to find X11, try starting xquartz first, then run pymol from the console.&lt;br /&gt;
&lt;br /&gt;
=== Problems with precompiled brew installed ===&lt;br /&gt;
This was experienced on date: 2017/06/29, on macOS Sierra 10.12.5.&lt;br /&gt;
X11 has been installed with https://www.xquartz.org &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There was a problem with '''tcl-tk''' from brew, which gave an error '''Abort trap: 6” error'''. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This can be confirmed with running the brew installed python:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/bin/python&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; import Tkinter &lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; Tkinter.__file__&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; Tkinter._test()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To fix&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
brew uninstall pymol&lt;br /&gt;
brew uninstall --ignore-dependencies python&lt;br /&gt;
brew uninstall tcl-tk&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Install from Source ===&lt;br /&gt;
&lt;br /&gt;
If you want the latest PyMOL code (warning: might include experimental changes), then follow the [[Linux_Install#Install_from_source|Linux installation instructions]]. You will need an environment like Fink, MacPorts or Homebrew to install the dependencies. Make sure you use the appropriate python interpreter (e.g. '''/sw/bin/python2.7''' when using Fink).&lt;br /&gt;
&lt;br /&gt;
=== Install APBS with Fink ===&lt;br /&gt;
&lt;br /&gt;
To use the electrostatics plugin, you will need [http://apbs.sourceforge.net/ APBS] and its dependencies.  These are also available as Fink packages, and include [http://pdb.finkproject.org/pdb/package.php/apbs APBS], [http://pdb.finkproject.org/pdb/package.php/maloc maloc] and [http://pdb.finkproject.org/pdb/package.php/pdb2pqr pdb2pqr]. If you have multiple processors available, you might wish to install the [http://pdb.finkproject.org/pdb/package.php/apbs-mpi-openmpi MPI version of APBS].&lt;br /&gt;
&lt;br /&gt;
Issuing the command&lt;br /&gt;
&lt;br /&gt;
 fink install apbs&lt;br /&gt;
&lt;br /&gt;
will install apbs and its required dependencies for you.  The fink pymol package is already preconfigured to do the right thing to use apbs as a plugin.&lt;br /&gt;
&lt;br /&gt;
=== Stereo issues ===&lt;br /&gt;
Some older Macs seem to crash with stereo graphics. If this happens to you, a workaround is to launch PyMOL explicitly in Mono mode with `pymol -M`.  You can also set up an alias in your ~/.profile:&lt;br /&gt;
&lt;br /&gt;
 alias pymol='pymol -M'&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[pymolrc]]&lt;br /&gt;
* [[Linux Install]]&lt;br /&gt;
* [[Windows Install]]&lt;br /&gt;
* [[MovieSchool_6#Exporting_your_Movie|FreeMOL installation for MPEG movie export]]&lt;br /&gt;
* [[User:Wgscott|Bill Scott’s]] [[MacOSX-specific .pymolrc file]] and his crystallographic software [http://xanana.ucsc.edu/~wgscott/xtal/wiki/index.php/Main_Page wiki] and [http://chemistry.ucsc.edu/~wgscott/xtal/ website], including instructions on [http://xanana.ucsc.edu/~wgscott/xtal/wiki/index.php/Getting_your_fink_installation_to_use_packages_that_I_have_pre-compiled how to install precompiled binary packages using fink].&lt;br /&gt;
* [[Launching_PyMOL#MacOS_X]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Installation|Mac]]&lt;br /&gt;
[[Category:Nucleic_Acids|MAC Install]]&lt;br /&gt;
[[Category:Technical Issues|MAC Install]]&lt;br /&gt;
[[Category:Mac|MAC Install]]&lt;/div&gt;</summary>
		<author><name>Tlinnet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=MAC_Install&amp;diff=14064</id>
		<title>MAC Install</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=MAC_Install&amp;diff=14064"/>
		<updated>2017-06-29T12:25:05Z</updated>

		<summary type="html">&lt;p&gt;Tlinnet: /* Problems with precompiled brew installed */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes how to install PyMOL on Mac OS X.&lt;br /&gt;
&lt;br /&gt;
== Incentive PyMOL ==&lt;br /&gt;
&lt;br /&gt;
=== MacPyMOL ===&lt;br /&gt;
&lt;br /&gt;
MacPyMOL is available exclusively to paying sponsors. [http://www.schrodinger.com Schrödinger] provides a DMG package which also includes ready-to-use [[APBS]], [[morph|RigiMOL]], an MPEG encoder for movie export, and a small molecule energy minimization engine.&lt;br /&gt;
&lt;br /&gt;
Download: http://pymol.org/download&lt;br /&gt;
&lt;br /&gt;
Installation: Drag '''MacPyMOL.app''' on the '''/Applications''' shortcut. (In principle, you could drag it into any Finder window and run it from there, it doesn’t have to live in /Applications).&lt;br /&gt;
&lt;br /&gt;
Uninstallation: Move '''/Applications/MacPyMOL.app''' to Trash&lt;br /&gt;
&lt;br /&gt;
=== Launching from Command Line ===&lt;br /&gt;
&lt;br /&gt;
The unix executable resides at '''/Applications/MacPyMOL.app/Contents/MacOS/MacPyMOL'''&lt;br /&gt;
&lt;br /&gt;
=== X11 Hybrid ===&lt;br /&gt;
&lt;br /&gt;
MacPyMOL can optionally run with the same two-window GUI which PyMOL uses on Windows and Linux. This GUI has some additional features, like the [[Plugins|Plugin]] menu and the [[Builder]].&lt;br /&gt;
&lt;br /&gt;
Requires [http://xquartz.macosforge.org/ XQuartz].&lt;br /&gt;
&lt;br /&gt;
There are two ways to launch the X11 interface:&lt;br /&gt;
# rename '''/Applications/MacPyMOL.app''' to '''/Applications/MacPyMOLX11Hybrid.app'''&lt;br /&gt;
# launch the unix executable with the '''-m''' flag: '''/Applications/MacPyMOL.app/Contents/MacOS/MacPyMOL -m'''&lt;br /&gt;
&lt;br /&gt;
=== Stereo on Second Monitor ===&lt;br /&gt;
The trick to getting MacPyMOL to work in stereo on the second monitor is to force it to initially open on that display by providing an appropriate &amp;quot;-X #&amp;quot; (and perhaps -Y #) option on launch.  That way the OpenGL context will be created with stereo support.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
./MacPyMOL.app/Contents/MacOS/MacPyMOL -X -1000&lt;br /&gt;
./MacPyMOL.app/Contents/MacOS/MacPyMOL -X -1000 -Y 100&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Source:''' ''Warren DeLano; PyMOL Users Archive''&lt;br /&gt;
&lt;br /&gt;
== Open-Source PyMOL ==&lt;br /&gt;
&lt;br /&gt;
=== Pre-compiled ===&lt;br /&gt;
&lt;br /&gt;
Pre-compiled Open-Source PyMOL is available [https://sourceforge.net/p/pymol/code/HEAD/tree/trunk/pymol/LICENSE free of charge] with the [https://www.macports.org/ MacPorts], [http://www.finkproject.org/ Fink] and [http://brew.sh/ Homebrew] environments.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Fink&lt;br /&gt;
fink install pymol-py27&lt;br /&gt;
&lt;br /&gt;
# MacPorts&lt;br /&gt;
sudo port install pymol&lt;br /&gt;
&lt;br /&gt;
# Homebrew&lt;br /&gt;
brew install homebrew/science/pymol&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure that the dependencies are installed with the required flags:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# MacPorts&lt;br /&gt;
sudo port install tcl -corefoundation&lt;br /&gt;
sudo port install tk -quartz&lt;br /&gt;
&lt;br /&gt;
# Homebrew&lt;br /&gt;
brew install Caskroom/cask/xquartz&lt;br /&gt;
brew install tcl-tk --with-threads --with-x11&lt;br /&gt;
brew install python --with-tcl-tk&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If PyMOL complains that it wasn't able to find X11, try starting xquartz first, then run pymol from the console.&lt;br /&gt;
&lt;br /&gt;
=== Problems with precompiled brew installed ===&lt;br /&gt;
This was experienced on date: 2017/06/29, on macOS Sierra 10.12.5.&lt;br /&gt;
X11 has been installed with https://www.xquartz.org &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There was a problem with '''tcl-tk''' from brew, which gave an error '''Abort trap: 6” error'''. &amp;lt;br&amp;gt;&lt;br /&gt;
This can be confirmed with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/bin/python&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; import Tkinter &lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; Tkinter.__file__&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; Tkinter._test()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To fix&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
brew uninstall pymol&lt;br /&gt;
brew uninstall --ignore-dependencies python&lt;br /&gt;
brew uninstall tcl-tk&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Install from Source ===&lt;br /&gt;
&lt;br /&gt;
If you want the latest PyMOL code (warning: might include experimental changes), then follow the [[Linux_Install#Install_from_source|Linux installation instructions]]. You will need an environment like Fink, MacPorts or Homebrew to install the dependencies. Make sure you use the appropriate python interpreter (e.g. '''/sw/bin/python2.7''' when using Fink).&lt;br /&gt;
&lt;br /&gt;
=== Install APBS with Fink ===&lt;br /&gt;
&lt;br /&gt;
To use the electrostatics plugin, you will need [http://apbs.sourceforge.net/ APBS] and its dependencies.  These are also available as Fink packages, and include [http://pdb.finkproject.org/pdb/package.php/apbs APBS], [http://pdb.finkproject.org/pdb/package.php/maloc maloc] and [http://pdb.finkproject.org/pdb/package.php/pdb2pqr pdb2pqr]. If you have multiple processors available, you might wish to install the [http://pdb.finkproject.org/pdb/package.php/apbs-mpi-openmpi MPI version of APBS].&lt;br /&gt;
&lt;br /&gt;
Issuing the command&lt;br /&gt;
&lt;br /&gt;
 fink install apbs&lt;br /&gt;
&lt;br /&gt;
will install apbs and its required dependencies for you.  The fink pymol package is already preconfigured to do the right thing to use apbs as a plugin.&lt;br /&gt;
&lt;br /&gt;
=== Stereo issues ===&lt;br /&gt;
Some older Macs seem to crash with stereo graphics. If this happens to you, a workaround is to launch PyMOL explicitly in Mono mode with `pymol -M`.  You can also set up an alias in your ~/.profile:&lt;br /&gt;
&lt;br /&gt;
 alias pymol='pymol -M'&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[pymolrc]]&lt;br /&gt;
* [[Linux Install]]&lt;br /&gt;
* [[Windows Install]]&lt;br /&gt;
* [[MovieSchool_6#Exporting_your_Movie|FreeMOL installation for MPEG movie export]]&lt;br /&gt;
* [[User:Wgscott|Bill Scott’s]] [[MacOSX-specific .pymolrc file]] and his crystallographic software [http://xanana.ucsc.edu/~wgscott/xtal/wiki/index.php/Main_Page wiki] and [http://chemistry.ucsc.edu/~wgscott/xtal/ website], including instructions on [http://xanana.ucsc.edu/~wgscott/xtal/wiki/index.php/Getting_your_fink_installation_to_use_packages_that_I_have_pre-compiled how to install precompiled binary packages using fink].&lt;br /&gt;
* [[Launching_PyMOL#MacOS_X]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Installation|Mac]]&lt;br /&gt;
[[Category:Nucleic_Acids|MAC Install]]&lt;br /&gt;
[[Category:Technical Issues|MAC Install]]&lt;br /&gt;
[[Category:Mac|MAC Install]]&lt;/div&gt;</summary>
		<author><name>Tlinnet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=MAC_Install&amp;diff=14063</id>
		<title>MAC Install</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=MAC_Install&amp;diff=14063"/>
		<updated>2017-06-29T12:18:57Z</updated>

		<summary type="html">&lt;p&gt;Tlinnet: /* Open-Source PyMOL */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes how to install PyMOL on Mac OS X.&lt;br /&gt;
&lt;br /&gt;
== Incentive PyMOL ==&lt;br /&gt;
&lt;br /&gt;
=== MacPyMOL ===&lt;br /&gt;
&lt;br /&gt;
MacPyMOL is available exclusively to paying sponsors. [http://www.schrodinger.com Schrödinger] provides a DMG package which also includes ready-to-use [[APBS]], [[morph|RigiMOL]], an MPEG encoder for movie export, and a small molecule energy minimization engine.&lt;br /&gt;
&lt;br /&gt;
Download: http://pymol.org/download&lt;br /&gt;
&lt;br /&gt;
Installation: Drag '''MacPyMOL.app''' on the '''/Applications''' shortcut. (In principle, you could drag it into any Finder window and run it from there, it doesn’t have to live in /Applications).&lt;br /&gt;
&lt;br /&gt;
Uninstallation: Move '''/Applications/MacPyMOL.app''' to Trash&lt;br /&gt;
&lt;br /&gt;
=== Launching from Command Line ===&lt;br /&gt;
&lt;br /&gt;
The unix executable resides at '''/Applications/MacPyMOL.app/Contents/MacOS/MacPyMOL'''&lt;br /&gt;
&lt;br /&gt;
=== X11 Hybrid ===&lt;br /&gt;
&lt;br /&gt;
MacPyMOL can optionally run with the same two-window GUI which PyMOL uses on Windows and Linux. This GUI has some additional features, like the [[Plugins|Plugin]] menu and the [[Builder]].&lt;br /&gt;
&lt;br /&gt;
Requires [http://xquartz.macosforge.org/ XQuartz].&lt;br /&gt;
&lt;br /&gt;
There are two ways to launch the X11 interface:&lt;br /&gt;
# rename '''/Applications/MacPyMOL.app''' to '''/Applications/MacPyMOLX11Hybrid.app'''&lt;br /&gt;
# launch the unix executable with the '''-m''' flag: '''/Applications/MacPyMOL.app/Contents/MacOS/MacPyMOL -m'''&lt;br /&gt;
&lt;br /&gt;
=== Stereo on Second Monitor ===&lt;br /&gt;
The trick to getting MacPyMOL to work in stereo on the second monitor is to force it to initially open on that display by providing an appropriate &amp;quot;-X #&amp;quot; (and perhaps -Y #) option on launch.  That way the OpenGL context will be created with stereo support.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
./MacPyMOL.app/Contents/MacOS/MacPyMOL -X -1000&lt;br /&gt;
./MacPyMOL.app/Contents/MacOS/MacPyMOL -X -1000 -Y 100&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Source:''' ''Warren DeLano; PyMOL Users Archive''&lt;br /&gt;
&lt;br /&gt;
== Open-Source PyMOL ==&lt;br /&gt;
&lt;br /&gt;
=== Pre-compiled ===&lt;br /&gt;
&lt;br /&gt;
Pre-compiled Open-Source PyMOL is available [https://sourceforge.net/p/pymol/code/HEAD/tree/trunk/pymol/LICENSE free of charge] with the [https://www.macports.org/ MacPorts], [http://www.finkproject.org/ Fink] and [http://brew.sh/ Homebrew] environments.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Fink&lt;br /&gt;
fink install pymol-py27&lt;br /&gt;
&lt;br /&gt;
# MacPorts&lt;br /&gt;
sudo port install pymol&lt;br /&gt;
&lt;br /&gt;
# Homebrew&lt;br /&gt;
brew install homebrew/science/pymol&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure that the dependencies are installed with the required flags:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# MacPorts&lt;br /&gt;
sudo port install tcl -corefoundation&lt;br /&gt;
sudo port install tk -quartz&lt;br /&gt;
&lt;br /&gt;
# Homebrew&lt;br /&gt;
brew install Caskroom/cask/xquartz&lt;br /&gt;
brew install tcl-tk --with-threads --with-x11&lt;br /&gt;
brew install python --with-tcl-tk&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If PyMOL complains that it wasn't able to find X11, try starting xquartz first, then run pymol from the console.&lt;br /&gt;
&lt;br /&gt;
=== Problems with precompiled brew installed ===&lt;br /&gt;
This was experienced on date: 2017/06/29, on macOS Sierra 10.12.5.&lt;br /&gt;
X11 has been installed with https://www.xquartz.org &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There was a problem with '''tcl-tk''' from brew, which gave an error '''Abort trap: 6” error'''. &amp;lt;br&amp;gt;&lt;br /&gt;
This can be confirmed with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/bin/python&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; import Tkinter &lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; Tkinter.__file__&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; Tkinter._test()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Install from Source ===&lt;br /&gt;
&lt;br /&gt;
If you want the latest PyMOL code (warning: might include experimental changes), then follow the [[Linux_Install#Install_from_source|Linux installation instructions]]. You will need an environment like Fink, MacPorts or Homebrew to install the dependencies. Make sure you use the appropriate python interpreter (e.g. '''/sw/bin/python2.7''' when using Fink).&lt;br /&gt;
&lt;br /&gt;
=== Install APBS with Fink ===&lt;br /&gt;
&lt;br /&gt;
To use the electrostatics plugin, you will need [http://apbs.sourceforge.net/ APBS] and its dependencies.  These are also available as Fink packages, and include [http://pdb.finkproject.org/pdb/package.php/apbs APBS], [http://pdb.finkproject.org/pdb/package.php/maloc maloc] and [http://pdb.finkproject.org/pdb/package.php/pdb2pqr pdb2pqr]. If you have multiple processors available, you might wish to install the [http://pdb.finkproject.org/pdb/package.php/apbs-mpi-openmpi MPI version of APBS].&lt;br /&gt;
&lt;br /&gt;
Issuing the command&lt;br /&gt;
&lt;br /&gt;
 fink install apbs&lt;br /&gt;
&lt;br /&gt;
will install apbs and its required dependencies for you.  The fink pymol package is already preconfigured to do the right thing to use apbs as a plugin.&lt;br /&gt;
&lt;br /&gt;
=== Stereo issues ===&lt;br /&gt;
Some older Macs seem to crash with stereo graphics. If this happens to you, a workaround is to launch PyMOL explicitly in Mono mode with `pymol -M`.  You can also set up an alias in your ~/.profile:&lt;br /&gt;
&lt;br /&gt;
 alias pymol='pymol -M'&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[pymolrc]]&lt;br /&gt;
* [[Linux Install]]&lt;br /&gt;
* [[Windows Install]]&lt;br /&gt;
* [[MovieSchool_6#Exporting_your_Movie|FreeMOL installation for MPEG movie export]]&lt;br /&gt;
* [[User:Wgscott|Bill Scott’s]] [[MacOSX-specific .pymolrc file]] and his crystallographic software [http://xanana.ucsc.edu/~wgscott/xtal/wiki/index.php/Main_Page wiki] and [http://chemistry.ucsc.edu/~wgscott/xtal/ website], including instructions on [http://xanana.ucsc.edu/~wgscott/xtal/wiki/index.php/Getting_your_fink_installation_to_use_packages_that_I_have_pre-compiled how to install precompiled binary packages using fink].&lt;br /&gt;
* [[Launching_PyMOL#MacOS_X]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Installation|Mac]]&lt;br /&gt;
[[Category:Nucleic_Acids|MAC Install]]&lt;br /&gt;
[[Category:Technical Issues|MAC Install]]&lt;br /&gt;
[[Category:Mac|MAC Install]]&lt;/div&gt;</summary>
		<author><name>Tlinnet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=AKMT_Lys_pred&amp;diff=14071</id>
		<title>AKMT Lys pred</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=AKMT_Lys_pred&amp;diff=14071"/>
		<updated>2017-06-27T16:23:37Z</updated>

		<summary type="html">&lt;p&gt;Tlinnet: /* Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox script-repo&lt;br /&gt;
|type      = script&lt;br /&gt;
|filename  = aKMT_Lys_pred.py&lt;br /&gt;
|author    = [[User:Tlinnet|Troels Schwarz-Linnet]]&lt;br /&gt;
|license   = BSD&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
Chu ''et al.'' has compiled a large information of peptides which are methylated in ''Sulfolobus Islandicus.'' The mass-spec data is available at: http://www.mcponline.org/content/15/9/2908/suppl/DC1 in&lt;br /&gt;
* Supplemental Table S2a revisied (.xlsx, 6.5 MB) - Supplemental Table S2a revisied : mcp.M115.057778-3.xlsx&lt;br /&gt;
* Supplemental Table S2a revisied (.xlsx, 4.8 MB) - Supplemental Table S2a revisied : mcp.M115.057778-4.xlsx&lt;br /&gt;
&lt;br /&gt;
The authors has tried to find correlation with amino acids in 1D, with 7 residues up and downstream to the lysines. The authors also tried to first predict secondary structure in the chain, and then find correlation. &lt;br /&gt;
They made a weblogo figure http://weblogo.threeplusone.com with their findings. &lt;br /&gt;
There seems to be a preference for helical structure and Glutamic acid (E), Isoleucin (I), Leucin (L) and Valine (V) seems to be dominant with 7 residues up/downstream to the methylated lysines.&lt;br /&gt;
&lt;br /&gt;
This script should try to make an analysis this for 3D, with residues up and downstream in angstrom distance to the residue of interest.&lt;br /&gt;
&lt;br /&gt;
== Data background ==&lt;br /&gt;
=== PDB structures in Sulfolobus Islandicus ===&lt;br /&gt;
Following structures was found June 2017&lt;br /&gt;
* www.rcsb.org -&amp;gt; Search advanced&lt;br /&gt;
* Biology -&amp;gt; Source organism -&amp;gt; Sulfolobus organism&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;mw-collapsible mw-collapsed wikitable&amp;quot; style=&amp;quot;text-align: left;&amp;quot;&lt;br /&gt;
! PDB id !! Info !! Text !! Authors !! Released !! Method !! Residue Count !! Macromolecule !! Gene Name(s) !! UniProtKB AC !! NCBI - Accession Numbers&lt;br /&gt;
|-&lt;br /&gt;
| 4G2D || Entity 1 containing Chain A || Crystal structure of the hyperthermophilic Sulfolobus islandicus PLL SisLac || Hiblot, J., Gotthard, G., Chabriere, E., Elias, M. || 10/24/2012 || X-ray Diffraction || 315 || Aryldialkylphosphatase || M164_0332 || C4KKZ9 || ADX84410&lt;br /&gt;
|-&lt;br /&gt;
|5EWT || Entity 1 containing Chain A || Crystal structure of ExoIII endonuclease from Sulfolobus islandicus || Yan, Z., Yuan, Z.L., Gu, L.C., Shen, Y.L. || 11/23/2016 || X-ray Diffraction || 247 || Exodeoxyribonuclease III Xth || SiRe_0100 || F0NG49  || ADX84195&lt;br /&gt;
|-&lt;br /&gt;
|5JWJ || Entity 1 containing Chain A || NMR solution structure of a thermophilic lysine methyl transferase from Sulfolobus islandicus || de Lichtenberg, C., Stiefler-Jensen, D., Schwarz-Linnet, T., She, Q., Teilum, K. ||  5/24/2017 || Solution NMR || 172 || Protein-lysine N-methyltransferase ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|5F4H || Entity 1 containing Chain A, B, C, D, E, F || Archael RuvB-like Holiday junction helicase || Zhai, B., DuPrez, K.T., Doukov, T.I., Shen, Y., Fan, L. || 12/21/2016 || X-ray Diffraction || 505/3030 || Nucleotide binding protein PINc || LS215_1665 || C3MQK6 || ADX85498&lt;br /&gt;
|-&lt;br /&gt;
|5FA8 || Entity 1 containing Chain A || SAM complex with aKMT from the hyperthermophilic archaeon Sulfolobus islandicu || Chu, Y., Zhu, Y., Chen, Y., Li, W., Zhang, Z., Liu, D., Wang, T., Ma, J., Deng, H., Liu, Z.J., Ouyang, S., Huang, L. || 6/29/2016 || X-ray Diffraction || 161 || Ribosomal protein L11 methyltransf ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|5FAD || Entity 1 containing Chain A || SAH complex with aKMT from the hyperthermophilic archaeon Sulfolobus islandicus || Chu, Y., Zhu, Y., Chen, Y., Li, W., Zhang, Z., Liu, D., Wang, T., Ma, J., Deng, H., Liu, Z.J., Ouyang, S., Huang, L. ||  6/29/2016 || X-ray Diffraction || 161 || Ribosomal protein L11 methyltransf ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|3O27 || Entity 1 containing Chain A, B || The crystal structure of C68 from the hybrid virus-plasmid pSSVx || Contursi, P., D'Ambrosio, K., Pirone, L., Pedone, E.M., Aucelli, T., She, Q., De Simone, G., Bartolucci, S. || 1/19/2011 || X-ray Diffraction || 136 || Putative uncharacterized protein ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|3M1M || Entity 1 containing Chain A || Crystal structure of the primase-polymerase from Sulfolobus islandicus || Beck, K., Vannini, A., Cramer, P., Lipps, G. || 6/16/2010 || X-ray Diffraction || 335 || ORF904 ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|2K9I || Entity 1 containing Chain A, B || NMR structure of plasmid copy control protein ORF56 from sulfolobus islandicus || Weininger, U., Zeeb, M., Neumann, P., Low, C., Stubbs, M.T., Lipps, G., Balbach, J. || 10/20/2009 || Solution NMR || 110 || Uncharacterized protein ORF56 ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|3FT7 || Entity 1 containing Chain A, B || Crystal structure of an extremely stable dimeric protein from sulfolobus islandicus || Weininger, U., Zeeb, M., Neumann, P., Low, C., Stubbs, M.T., Lipps, G., Balbach, J. || 10/20/2009 || X-ray Diffraction || 110 || Uncharacterized protein ORF56 ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|1RNI || Entity 1 containing Chain A || Bifunctional DNA primase/polymerase domain of ORF904 from the archaeal plasmid pRN1 || Lipps, G., Weinzierl, A.O., Von Scheven, G., Buchen, C., Cramer, P. || 1/27/2004 || X-ray Diffraction || 216 || ORF904 ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|1RO0 || Entity 1 containing Chain A || Bifunctional DNA primase/polymerase domain of ORF904 from the archaeal plasmid pRN1- Triple mutant F50M/L107M/L110M SeMet remote || Lipps, G., Weinzierl, A.O., Von Scheven, G., Buchen, C., Cramer, P. || 1/27/2004 || X-ray Diffraction || 216 || ORF904 ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|1RO2 || Entity 1 containing Chain A || Bifunctional DNA primase/polymerase domain of ORF904 from the archaeal plasmid pRN1- Triple mutant F50M/L107M/L110M manganese soak || Lipps, G., Weinzierl, A.O., Von Scheven, G., Buchen, C., Cramer, P. || 1/27/2004 || X-ray Diffraction || 216 || hypothetical protein ORF904 ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Methylated peptide ===&lt;br /&gt;
Data from:&lt;br /&gt;
* mcp.M115.057778-3.xlsx&lt;br /&gt;
* mcp.M115.057778-4.xlsx&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;mw-collapsible mw-collapsed wikitable&amp;quot; style=&amp;quot;text-align: left;&amp;quot;&lt;br /&gt;
! PDB id !! NCBI - Accession Number !! 'Methylated peptides' 'Sequence' in -3.xlsx !! 'Methylated peptides' ' Modification' in -3.xlsx s !! 'Methylated peptides' 'Sequence' in -4.xlsx !! 'Methylated peptides' ' Modification' in -4.xlsx s&lt;br /&gt;
|-&lt;br /&gt;
| 4G2D || ADX84410 Sequence &lt;br /&gt;
| SIDEIADLFIHDIkEGIQATSNK &amp;lt;br&amp;gt; kIADKGSFIGLDR &amp;lt;br&amp;gt; ILmEEGVDPGkILIGHLGDTDNTDYIK &amp;lt;br&amp;gt; kNGmSEEVIDIIFK &amp;lt;br&amp;gt; SIDEIADLFIHDIkEGIQATSNK &amp;lt;br&amp;gt; SIDEIADLFIHDIkEGIQATSNK&lt;br /&gt;
| K14(Methyl) &amp;lt;br&amp;gt; K1(Methyl)  &amp;lt;br&amp;gt; M3(Oxidation); K11(Trimethyl) &amp;lt;br&amp;gt; K1(Methyl); M4(Oxidation) &amp;lt;br&amp;gt; K14(Dimethyl) &amp;lt;br&amp;gt; K14(Trimethyl)&lt;br /&gt;
| mRIPLVGkEPIEAEDmGFTLIHEHLR&lt;br /&gt;
| M1(Oxidation); K8(Trimethyl); M16(Oxidation)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
reinitialize&lt;br /&gt;
viewport 1100,700&lt;br /&gt;
# Imports&lt;br /&gt;
import aKMT_Lys_pred&lt;br /&gt;
&lt;br /&gt;
# Load&lt;br /&gt;
fetch 4g2d, async=0&lt;br /&gt;
remove hydrogens&lt;br /&gt;
remove solvent&lt;br /&gt;
&lt;br /&gt;
# Display&lt;br /&gt;
preset.publication(selection='4g2d')&lt;br /&gt;
center 4g2d&lt;br /&gt;
&lt;br /&gt;
# Get the residues with lysine&lt;br /&gt;
return_list_resn_resi, return_list_resn_resi_sel = aKMT_Lys_pred.get_resis_from_resn(&amp;quot;4g2d&amp;quot;, &amp;quot;LYS&amp;quot;)&lt;br /&gt;
print(return_list_resn_resi)&lt;br /&gt;
&lt;br /&gt;
# Match resi with peptide sequence&lt;br /&gt;
python&lt;br /&gt;
peptides = [&lt;br /&gt;
    [&amp;quot;SIDEIADLFIHDIkEGIQATSNK&amp;quot;, &amp;quot;K14&amp;quot;],&lt;br /&gt;
    [&amp;quot;kIADKGSFIGLDR&amp;quot;, &amp;quot;K1&amp;quot;],&lt;br /&gt;
    [&amp;quot;ILmEEGVDPGkILIGHLGDTDNTDYIK&amp;quot;, &amp;quot;K11&amp;quot;],&lt;br /&gt;
    [&amp;quot;kNGmSEEVIDIIFK&amp;quot;, &amp;quot;K1&amp;quot;],&lt;br /&gt;
    [&amp;quot;mRIPLVGkEPIEAEDmGFTLIHEHLR&amp;quot;, &amp;quot;K8&amp;quot;],&lt;br /&gt;
]&lt;br /&gt;
python end&lt;br /&gt;
&lt;br /&gt;
# Find peptides&lt;br /&gt;
return_list_resn_match, return_list_resn_match_sel = aKMT_Lys_pred.match_peptides(target_sel=&amp;quot;4g2d&amp;quot;, peptides=peptides)&lt;br /&gt;
print(return_list_resn_match)&lt;br /&gt;
&lt;br /&gt;
# Make list of lysines not methylated&lt;br /&gt;
lys_not_meth = [x for x in return_list_resn_resi if x not in return_list_resn_match]&lt;br /&gt;
print(lys_not_meth)&lt;br /&gt;
&lt;br /&gt;
# Make stats&lt;br /&gt;
aKMT_Lys_pred.get_resi_stats(target_sel=&amp;quot;4g2d&amp;quot;, residues=lys_not_meth, group_id=&amp;quot;not_meth&amp;quot;, verb=True)&lt;br /&gt;
aKMT_Lys_pred.get_resi_stats(target_sel=&amp;quot;4g2d&amp;quot;, residues=return_list_resn_match, group_id=&amp;quot;methylated&amp;quot;, verb=True)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
For Mass-Spec data &amp;lt;br&amp;gt;&lt;br /&gt;
''aKMT Catalyzes Extensive Protein Lysine Methylation in the Hyperthermophilic Archaeon Sulfolobus islandicus but is Dispensable for the Growth of the Organism' &amp;lt;br&amp;gt;&lt;br /&gt;
Chu, Yindi; Zhu, Yanping; Chen, Yuling; Li, Wei; Zhang, Zhenfeng; Liu, Di; Wang, Tongkun; Ma, Juncai; Deng, Haiteng; Liu, Zhi-Jie; Ouyang, SongyingHuang, Li &amp;lt;br&amp;gt;&lt;br /&gt;
''Molecular &amp;amp; Cellular Proteomics'' '''2016''', Vol 15, Issue 9, 2908-2923, DOI: 10.1074/mcp.M115.057778&lt;/div&gt;</summary>
		<author><name>Tlinnet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=AKMT_Lys_pred&amp;diff=14017</id>
		<title>AKMT Lys pred</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=AKMT_Lys_pred&amp;diff=14017"/>
		<updated>2017-06-17T11:53:33Z</updated>

		<summary type="html">&lt;p&gt;Tlinnet: /* Methylated peptide */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox script-repo&lt;br /&gt;
|type      = script&lt;br /&gt;
|filename  = aKMT_Lys_pred.py&lt;br /&gt;
|author    = [[User:Tlinnet|Troels Schwarz-Linnet]]&lt;br /&gt;
|license   = BSD&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
Chu ''et al.'' has compiled a large information of peptides which are methylated in ''Sulfolobus Islandicus.'' The mass-spec data is available at: http://www.mcponline.org/content/15/9/2908/suppl/DC1 in&lt;br /&gt;
* Supplemental Table S2a revisied (.xlsx, 6.5 MB) - Supplemental Table S2a revisied : mcp.M115.057778-3.xlsx&lt;br /&gt;
* Supplemental Table S2a revisied (.xlsx, 4.8 MB) - Supplemental Table S2a revisied : mcp.M115.057778-4.xlsx&lt;br /&gt;
&lt;br /&gt;
The authors has tried to find correlation with amino acids in 1D, with 7 residues up and downstream to the lysines. The authors also tried to first predict secondary structure in the chain, and then find correlation. &lt;br /&gt;
They made a weblogo figure http://weblogo.threeplusone.com with their findings. &lt;br /&gt;
There seems to be a preference for helical structure and Glutamic acid (E), Isoleucin (I), Leucin (L) and Valine (V) seems to be dominant with 7 residues up/downstream to the methylated lysines.&lt;br /&gt;
&lt;br /&gt;
This script should try to make an analysis this for 3D, with residues up and downstream in angstrom distance to the residue of interest.&lt;br /&gt;
&lt;br /&gt;
== Data background ==&lt;br /&gt;
=== PDB structures in Sulfolobus Islandicus ===&lt;br /&gt;
Following structures was found June 2017&lt;br /&gt;
* www.rcsb.org -&amp;gt; Search advanced&lt;br /&gt;
* Biology -&amp;gt; Source organism -&amp;gt; Sulfolobus organism&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;mw-collapsible mw-collapsed wikitable&amp;quot; style=&amp;quot;text-align: left;&amp;quot;&lt;br /&gt;
! PDB id !! Info !! Text !! Authors !! Released !! Method !! Residue Count !! Macromolecule !! Gene Name(s) !! UniProtKB AC !! NCBI - Accession Numbers&lt;br /&gt;
|-&lt;br /&gt;
| 4G2D || Entity 1 containing Chain A || Crystal structure of the hyperthermophilic Sulfolobus islandicus PLL SisLac || Hiblot, J., Gotthard, G., Chabriere, E., Elias, M. || 10/24/2012 || X-ray Diffraction || 315 || Aryldialkylphosphatase || M164_0332 || C4KKZ9 || ADX84410&lt;br /&gt;
|-&lt;br /&gt;
|5EWT || Entity 1 containing Chain A || Crystal structure of ExoIII endonuclease from Sulfolobus islandicus || Yan, Z., Yuan, Z.L., Gu, L.C., Shen, Y.L. || 11/23/2016 || X-ray Diffraction || 247 || Exodeoxyribonuclease III Xth || SiRe_0100 || F0NG49  || ADX84195&lt;br /&gt;
|-&lt;br /&gt;
|5JWJ || Entity 1 containing Chain A || NMR solution structure of a thermophilic lysine methyl transferase from Sulfolobus islandicus || de Lichtenberg, C., Stiefler-Jensen, D., Schwarz-Linnet, T., She, Q., Teilum, K. ||  5/24/2017 || Solution NMR || 172 || Protein-lysine N-methyltransferase ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|5F4H || Entity 1 containing Chain A, B, C, D, E, F || Archael RuvB-like Holiday junction helicase || Zhai, B., DuPrez, K.T., Doukov, T.I., Shen, Y., Fan, L. || 12/21/2016 || X-ray Diffraction || 505/3030 || Nucleotide binding protein PINc || LS215_1665 || C3MQK6 || ADX85498&lt;br /&gt;
|-&lt;br /&gt;
|5FA8 || Entity 1 containing Chain A || SAM complex with aKMT from the hyperthermophilic archaeon Sulfolobus islandicu || Chu, Y., Zhu, Y., Chen, Y., Li, W., Zhang, Z., Liu, D., Wang, T., Ma, J., Deng, H., Liu, Z.J., Ouyang, S., Huang, L. || 6/29/2016 || X-ray Diffraction || 161 || Ribosomal protein L11 methyltransf ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|5FAD || Entity 1 containing Chain A || SAH complex with aKMT from the hyperthermophilic archaeon Sulfolobus islandicus || Chu, Y., Zhu, Y., Chen, Y., Li, W., Zhang, Z., Liu, D., Wang, T., Ma, J., Deng, H., Liu, Z.J., Ouyang, S., Huang, L. ||  6/29/2016 || X-ray Diffraction || 161 || Ribosomal protein L11 methyltransf ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|3O27 || Entity 1 containing Chain A, B || The crystal structure of C68 from the hybrid virus-plasmid pSSVx || Contursi, P., D'Ambrosio, K., Pirone, L., Pedone, E.M., Aucelli, T., She, Q., De Simone, G., Bartolucci, S. || 1/19/2011 || X-ray Diffraction || 136 || Putative uncharacterized protein ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|3M1M || Entity 1 containing Chain A || Crystal structure of the primase-polymerase from Sulfolobus islandicus || Beck, K., Vannini, A., Cramer, P., Lipps, G. || 6/16/2010 || X-ray Diffraction || 335 || ORF904 ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|2K9I || Entity 1 containing Chain A, B || NMR structure of plasmid copy control protein ORF56 from sulfolobus islandicus || Weininger, U., Zeeb, M., Neumann, P., Low, C., Stubbs, M.T., Lipps, G., Balbach, J. || 10/20/2009 || Solution NMR || 110 || Uncharacterized protein ORF56 ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|3FT7 || Entity 1 containing Chain A, B || Crystal structure of an extremely stable dimeric protein from sulfolobus islandicus || Weininger, U., Zeeb, M., Neumann, P., Low, C., Stubbs, M.T., Lipps, G., Balbach, J. || 10/20/2009 || X-ray Diffraction || 110 || Uncharacterized protein ORF56 ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|1RNI || Entity 1 containing Chain A || Bifunctional DNA primase/polymerase domain of ORF904 from the archaeal plasmid pRN1 || Lipps, G., Weinzierl, A.O., Von Scheven, G., Buchen, C., Cramer, P. || 1/27/2004 || X-ray Diffraction || 216 || ORF904 ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|1RO0 || Entity 1 containing Chain A || Bifunctional DNA primase/polymerase domain of ORF904 from the archaeal plasmid pRN1- Triple mutant F50M/L107M/L110M SeMet remote || Lipps, G., Weinzierl, A.O., Von Scheven, G., Buchen, C., Cramer, P. || 1/27/2004 || X-ray Diffraction || 216 || ORF904 ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|1RO2 || Entity 1 containing Chain A || Bifunctional DNA primase/polymerase domain of ORF904 from the archaeal plasmid pRN1- Triple mutant F50M/L107M/L110M manganese soak || Lipps, G., Weinzierl, A.O., Von Scheven, G., Buchen, C., Cramer, P. || 1/27/2004 || X-ray Diffraction || 216 || hypothetical protein ORF904 ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Methylated peptide ===&lt;br /&gt;
Data from:&lt;br /&gt;
* mcp.M115.057778-3.xlsx&lt;br /&gt;
* mcp.M115.057778-4.xlsx&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;mw-collapsible mw-collapsed wikitable&amp;quot; style=&amp;quot;text-align: left;&amp;quot;&lt;br /&gt;
! PDB id !! NCBI - Accession Number !! 'Methylated peptides' 'Sequence' in -3.xlsx !! 'Methylated peptides' ' Modification' in -3.xlsx s !! 'Methylated peptides' 'Sequence' in -4.xlsx !! 'Methylated peptides' ' Modification' in -4.xlsx s&lt;br /&gt;
|-&lt;br /&gt;
| 4G2D || ADX84410 Sequence &lt;br /&gt;
| SIDEIADLFIHDIkEGIQATSNK &amp;lt;br&amp;gt; kIADKGSFIGLDR &amp;lt;br&amp;gt; ILmEEGVDPGkILIGHLGDTDNTDYIK &amp;lt;br&amp;gt; kNGmSEEVIDIIFK &amp;lt;br&amp;gt; SIDEIADLFIHDIkEGIQATSNK &amp;lt;br&amp;gt; SIDEIADLFIHDIkEGIQATSNK&lt;br /&gt;
| K14(Methyl) &amp;lt;br&amp;gt; K1(Methyl)  &amp;lt;br&amp;gt; M3(Oxidation); K11(Trimethyl) &amp;lt;br&amp;gt; K1(Methyl); M4(Oxidation) &amp;lt;br&amp;gt; K14(Dimethyl) &amp;lt;br&amp;gt; K14(Trimethyl)&lt;br /&gt;
| mRIPLVGkEPIEAEDmGFTLIHEHLR&lt;br /&gt;
| M1(Oxidation); K8(Trimethyl); M16(Oxidation)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
test&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
For Mass-Spec data &amp;lt;br&amp;gt;&lt;br /&gt;
''aKMT Catalyzes Extensive Protein Lysine Methylation in the Hyperthermophilic Archaeon Sulfolobus islandicus but is Dispensable for the Growth of the Organism' &amp;lt;br&amp;gt;&lt;br /&gt;
Chu, Yindi; Zhu, Yanping; Chen, Yuling; Li, Wei; Zhang, Zhenfeng; Liu, Di; Wang, Tongkun; Ma, Juncai; Deng, Haiteng; Liu, Zhi-Jie; Ouyang, SongyingHuang, Li &amp;lt;br&amp;gt;&lt;br /&gt;
''Molecular &amp;amp; Cellular Proteomics'' '''2016''', Vol 15, Issue 9, 2908-2923, DOI: 10.1074/mcp.M115.057778&lt;/div&gt;</summary>
		<author><name>Tlinnet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=AKMT_Lys_pred&amp;diff=14016</id>
		<title>AKMT Lys pred</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=AKMT_Lys_pred&amp;diff=14016"/>
		<updated>2017-06-17T11:52:00Z</updated>

		<summary type="html">&lt;p&gt;Tlinnet: /* Methylated peptide */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox script-repo&lt;br /&gt;
|type      = script&lt;br /&gt;
|filename  = aKMT_Lys_pred.py&lt;br /&gt;
|author    = [[User:Tlinnet|Troels Schwarz-Linnet]]&lt;br /&gt;
|license   = BSD&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
Chu ''et al.'' has compiled a large information of peptides which are methylated in ''Sulfolobus Islandicus.'' The mass-spec data is available at: http://www.mcponline.org/content/15/9/2908/suppl/DC1 in&lt;br /&gt;
* Supplemental Table S2a revisied (.xlsx, 6.5 MB) - Supplemental Table S2a revisied : mcp.M115.057778-3.xlsx&lt;br /&gt;
* Supplemental Table S2a revisied (.xlsx, 4.8 MB) - Supplemental Table S2a revisied : mcp.M115.057778-4.xlsx&lt;br /&gt;
&lt;br /&gt;
The authors has tried to find correlation with amino acids in 1D, with 7 residues up and downstream to the lysines. The authors also tried to first predict secondary structure in the chain, and then find correlation. &lt;br /&gt;
They made a weblogo figure http://weblogo.threeplusone.com with their findings. &lt;br /&gt;
There seems to be a preference for helical structure and Glutamic acid (E), Isoleucin (I), Leucin (L) and Valine (V) seems to be dominant with 7 residues up/downstream to the methylated lysines.&lt;br /&gt;
&lt;br /&gt;
This script should try to make an analysis this for 3D, with residues up and downstream in angstrom distance to the residue of interest.&lt;br /&gt;
&lt;br /&gt;
== Data background ==&lt;br /&gt;
=== PDB structures in Sulfolobus Islandicus ===&lt;br /&gt;
Following structures was found June 2017&lt;br /&gt;
* www.rcsb.org -&amp;gt; Search advanced&lt;br /&gt;
* Biology -&amp;gt; Source organism -&amp;gt; Sulfolobus organism&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;mw-collapsible mw-collapsed wikitable&amp;quot; style=&amp;quot;text-align: left;&amp;quot;&lt;br /&gt;
! PDB id !! Info !! Text !! Authors !! Released !! Method !! Residue Count !! Macromolecule !! Gene Name(s) !! UniProtKB AC !! NCBI - Accession Numbers&lt;br /&gt;
|-&lt;br /&gt;
| 4G2D || Entity 1 containing Chain A || Crystal structure of the hyperthermophilic Sulfolobus islandicus PLL SisLac || Hiblot, J., Gotthard, G., Chabriere, E., Elias, M. || 10/24/2012 || X-ray Diffraction || 315 || Aryldialkylphosphatase || M164_0332 || C4KKZ9 || ADX84410&lt;br /&gt;
|-&lt;br /&gt;
|5EWT || Entity 1 containing Chain A || Crystal structure of ExoIII endonuclease from Sulfolobus islandicus || Yan, Z., Yuan, Z.L., Gu, L.C., Shen, Y.L. || 11/23/2016 || X-ray Diffraction || 247 || Exodeoxyribonuclease III Xth || SiRe_0100 || F0NG49  || ADX84195&lt;br /&gt;
|-&lt;br /&gt;
|5JWJ || Entity 1 containing Chain A || NMR solution structure of a thermophilic lysine methyl transferase from Sulfolobus islandicus || de Lichtenberg, C., Stiefler-Jensen, D., Schwarz-Linnet, T., She, Q., Teilum, K. ||  5/24/2017 || Solution NMR || 172 || Protein-lysine N-methyltransferase ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|5F4H || Entity 1 containing Chain A, B, C, D, E, F || Archael RuvB-like Holiday junction helicase || Zhai, B., DuPrez, K.T., Doukov, T.I., Shen, Y., Fan, L. || 12/21/2016 || X-ray Diffraction || 505/3030 || Nucleotide binding protein PINc || LS215_1665 || C3MQK6 || ADX85498&lt;br /&gt;
|-&lt;br /&gt;
|5FA8 || Entity 1 containing Chain A || SAM complex with aKMT from the hyperthermophilic archaeon Sulfolobus islandicu || Chu, Y., Zhu, Y., Chen, Y., Li, W., Zhang, Z., Liu, D., Wang, T., Ma, J., Deng, H., Liu, Z.J., Ouyang, S., Huang, L. || 6/29/2016 || X-ray Diffraction || 161 || Ribosomal protein L11 methyltransf ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|5FAD || Entity 1 containing Chain A || SAH complex with aKMT from the hyperthermophilic archaeon Sulfolobus islandicus || Chu, Y., Zhu, Y., Chen, Y., Li, W., Zhang, Z., Liu, D., Wang, T., Ma, J., Deng, H., Liu, Z.J., Ouyang, S., Huang, L. ||  6/29/2016 || X-ray Diffraction || 161 || Ribosomal protein L11 methyltransf ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|3O27 || Entity 1 containing Chain A, B || The crystal structure of C68 from the hybrid virus-plasmid pSSVx || Contursi, P., D'Ambrosio, K., Pirone, L., Pedone, E.M., Aucelli, T., She, Q., De Simone, G., Bartolucci, S. || 1/19/2011 || X-ray Diffraction || 136 || Putative uncharacterized protein ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|3M1M || Entity 1 containing Chain A || Crystal structure of the primase-polymerase from Sulfolobus islandicus || Beck, K., Vannini, A., Cramer, P., Lipps, G. || 6/16/2010 || X-ray Diffraction || 335 || ORF904 ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|2K9I || Entity 1 containing Chain A, B || NMR structure of plasmid copy control protein ORF56 from sulfolobus islandicus || Weininger, U., Zeeb, M., Neumann, P., Low, C., Stubbs, M.T., Lipps, G., Balbach, J. || 10/20/2009 || Solution NMR || 110 || Uncharacterized protein ORF56 ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|3FT7 || Entity 1 containing Chain A, B || Crystal structure of an extremely stable dimeric protein from sulfolobus islandicus || Weininger, U., Zeeb, M., Neumann, P., Low, C., Stubbs, M.T., Lipps, G., Balbach, J. || 10/20/2009 || X-ray Diffraction || 110 || Uncharacterized protein ORF56 ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|1RNI || Entity 1 containing Chain A || Bifunctional DNA primase/polymerase domain of ORF904 from the archaeal plasmid pRN1 || Lipps, G., Weinzierl, A.O., Von Scheven, G., Buchen, C., Cramer, P. || 1/27/2004 || X-ray Diffraction || 216 || ORF904 ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|1RO0 || Entity 1 containing Chain A || Bifunctional DNA primase/polymerase domain of ORF904 from the archaeal plasmid pRN1- Triple mutant F50M/L107M/L110M SeMet remote || Lipps, G., Weinzierl, A.O., Von Scheven, G., Buchen, C., Cramer, P. || 1/27/2004 || X-ray Diffraction || 216 || ORF904 ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|1RO2 || Entity 1 containing Chain A || Bifunctional DNA primase/polymerase domain of ORF904 from the archaeal plasmid pRN1- Triple mutant F50M/L107M/L110M manganese soak || Lipps, G., Weinzierl, A.O., Von Scheven, G., Buchen, C., Cramer, P. || 1/27/2004 || X-ray Diffraction || 216 || hypothetical protein ORF904 ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Methylated peptide ===&lt;br /&gt;
Data from:&lt;br /&gt;
* mcp.M115.057778-3.xlsx&lt;br /&gt;
* mcp.M115.057778-4.xlsx&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;mw-collapsible mw-collapsed wikitable&amp;quot; style=&amp;quot;text-align: left;&amp;quot;&lt;br /&gt;
! PDB id !! NCBI - Accession Number !! 'Methylated peptides' 'Sequence' in -3.xlsx !! 'Methylated peptides' ' Modification' in -3.xlsx s&lt;br /&gt;
|-&lt;br /&gt;
| 4G2D || ADX84410 Sequence &lt;br /&gt;
| SIDEIADLFIHDIkEGIQATSNK &amp;lt;br&amp;gt; kIADKGSFIGLDR &amp;lt;br&amp;gt; ILmEEGVDPGkILIGHLGDTDNTDYIK &amp;lt;br&amp;gt; kNGmSEEVIDIIFK &amp;lt;br&amp;gt; SIDEIADLFIHDIkEGIQATSNK &amp;lt;br&amp;gt; SIDEIADLFIHDIkEGIQATSNK&lt;br /&gt;
| K14(Methyl) &amp;lt;br&amp;gt; K1(Methyl)  &amp;lt;br&amp;gt; M3(Oxidation); K11(Trimethyl) &amp;lt;br&amp;gt; K1(Methyl); M4(Oxidation) &amp;lt;br&amp;gt; K14(Dimethyl) &amp;lt;br&amp;gt; K14(Trimethyl)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
test&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
For Mass-Spec data &amp;lt;br&amp;gt;&lt;br /&gt;
''aKMT Catalyzes Extensive Protein Lysine Methylation in the Hyperthermophilic Archaeon Sulfolobus islandicus but is Dispensable for the Growth of the Organism' &amp;lt;br&amp;gt;&lt;br /&gt;
Chu, Yindi; Zhu, Yanping; Chen, Yuling; Li, Wei; Zhang, Zhenfeng; Liu, Di; Wang, Tongkun; Ma, Juncai; Deng, Haiteng; Liu, Zhi-Jie; Ouyang, SongyingHuang, Li &amp;lt;br&amp;gt;&lt;br /&gt;
''Molecular &amp;amp; Cellular Proteomics'' '''2016''', Vol 15, Issue 9, 2908-2923, DOI: 10.1074/mcp.M115.057778&lt;/div&gt;</summary>
		<author><name>Tlinnet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=AKMT_Lys_pred&amp;diff=14015</id>
		<title>AKMT Lys pred</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=AKMT_Lys_pred&amp;diff=14015"/>
		<updated>2017-06-17T11:47:02Z</updated>

		<summary type="html">&lt;p&gt;Tlinnet: /* Data background */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox script-repo&lt;br /&gt;
|type      = script&lt;br /&gt;
|filename  = aKMT_Lys_pred.py&lt;br /&gt;
|author    = [[User:Tlinnet|Troels Schwarz-Linnet]]&lt;br /&gt;
|license   = BSD&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
Chu ''et al.'' has compiled a large information of peptides which are methylated in ''Sulfolobus Islandicus.'' The mass-spec data is available at: http://www.mcponline.org/content/15/9/2908/suppl/DC1 in&lt;br /&gt;
* Supplemental Table S2a revisied (.xlsx, 6.5 MB) - Supplemental Table S2a revisied : mcp.M115.057778-3.xlsx&lt;br /&gt;
* Supplemental Table S2a revisied (.xlsx, 4.8 MB) - Supplemental Table S2a revisied : mcp.M115.057778-4.xlsx&lt;br /&gt;
&lt;br /&gt;
The authors has tried to find correlation with amino acids in 1D, with 7 residues up and downstream to the lysines. The authors also tried to first predict secondary structure in the chain, and then find correlation. &lt;br /&gt;
They made a weblogo figure http://weblogo.threeplusone.com with their findings. &lt;br /&gt;
There seems to be a preference for helical structure and Glutamic acid (E), Isoleucin (I), Leucin (L) and Valine (V) seems to be dominant with 7 residues up/downstream to the methylated lysines.&lt;br /&gt;
&lt;br /&gt;
This script should try to make an analysis this for 3D, with residues up and downstream in angstrom distance to the residue of interest.&lt;br /&gt;
&lt;br /&gt;
== Data background ==&lt;br /&gt;
=== PDB structures in Sulfolobus Islandicus ===&lt;br /&gt;
Following structures was found June 2017&lt;br /&gt;
* www.rcsb.org -&amp;gt; Search advanced&lt;br /&gt;
* Biology -&amp;gt; Source organism -&amp;gt; Sulfolobus organism&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;mw-collapsible mw-collapsed wikitable&amp;quot; style=&amp;quot;text-align: left;&amp;quot;&lt;br /&gt;
! PDB id !! Info !! Text !! Authors !! Released !! Method !! Residue Count !! Macromolecule !! Gene Name(s) !! UniProtKB AC !! NCBI - Accession Numbers&lt;br /&gt;
|-&lt;br /&gt;
| 4G2D || Entity 1 containing Chain A || Crystal structure of the hyperthermophilic Sulfolobus islandicus PLL SisLac || Hiblot, J., Gotthard, G., Chabriere, E., Elias, M. || 10/24/2012 || X-ray Diffraction || 315 || Aryldialkylphosphatase || M164_0332 || C4KKZ9 || ADX84410&lt;br /&gt;
|-&lt;br /&gt;
|5EWT || Entity 1 containing Chain A || Crystal structure of ExoIII endonuclease from Sulfolobus islandicus || Yan, Z., Yuan, Z.L., Gu, L.C., Shen, Y.L. || 11/23/2016 || X-ray Diffraction || 247 || Exodeoxyribonuclease III Xth || SiRe_0100 || F0NG49  || ADX84195&lt;br /&gt;
|-&lt;br /&gt;
|5JWJ || Entity 1 containing Chain A || NMR solution structure of a thermophilic lysine methyl transferase from Sulfolobus islandicus || de Lichtenberg, C., Stiefler-Jensen, D., Schwarz-Linnet, T., She, Q., Teilum, K. ||  5/24/2017 || Solution NMR || 172 || Protein-lysine N-methyltransferase ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|5F4H || Entity 1 containing Chain A, B, C, D, E, F || Archael RuvB-like Holiday junction helicase || Zhai, B., DuPrez, K.T., Doukov, T.I., Shen, Y., Fan, L. || 12/21/2016 || X-ray Diffraction || 505/3030 || Nucleotide binding protein PINc || LS215_1665 || C3MQK6 || ADX85498&lt;br /&gt;
|-&lt;br /&gt;
|5FA8 || Entity 1 containing Chain A || SAM complex with aKMT from the hyperthermophilic archaeon Sulfolobus islandicu || Chu, Y., Zhu, Y., Chen, Y., Li, W., Zhang, Z., Liu, D., Wang, T., Ma, J., Deng, H., Liu, Z.J., Ouyang, S., Huang, L. || 6/29/2016 || X-ray Diffraction || 161 || Ribosomal protein L11 methyltransf ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|5FAD || Entity 1 containing Chain A || SAH complex with aKMT from the hyperthermophilic archaeon Sulfolobus islandicus || Chu, Y., Zhu, Y., Chen, Y., Li, W., Zhang, Z., Liu, D., Wang, T., Ma, J., Deng, H., Liu, Z.J., Ouyang, S., Huang, L. ||  6/29/2016 || X-ray Diffraction || 161 || Ribosomal protein L11 methyltransf ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|3O27 || Entity 1 containing Chain A, B || The crystal structure of C68 from the hybrid virus-plasmid pSSVx || Contursi, P., D'Ambrosio, K., Pirone, L., Pedone, E.M., Aucelli, T., She, Q., De Simone, G., Bartolucci, S. || 1/19/2011 || X-ray Diffraction || 136 || Putative uncharacterized protein ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|3M1M || Entity 1 containing Chain A || Crystal structure of the primase-polymerase from Sulfolobus islandicus || Beck, K., Vannini, A., Cramer, P., Lipps, G. || 6/16/2010 || X-ray Diffraction || 335 || ORF904 ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|2K9I || Entity 1 containing Chain A, B || NMR structure of plasmid copy control protein ORF56 from sulfolobus islandicus || Weininger, U., Zeeb, M., Neumann, P., Low, C., Stubbs, M.T., Lipps, G., Balbach, J. || 10/20/2009 || Solution NMR || 110 || Uncharacterized protein ORF56 ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|3FT7 || Entity 1 containing Chain A, B || Crystal structure of an extremely stable dimeric protein from sulfolobus islandicus || Weininger, U., Zeeb, M., Neumann, P., Low, C., Stubbs, M.T., Lipps, G., Balbach, J. || 10/20/2009 || X-ray Diffraction || 110 || Uncharacterized protein ORF56 ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|1RNI || Entity 1 containing Chain A || Bifunctional DNA primase/polymerase domain of ORF904 from the archaeal plasmid pRN1 || Lipps, G., Weinzierl, A.O., Von Scheven, G., Buchen, C., Cramer, P. || 1/27/2004 || X-ray Diffraction || 216 || ORF904 ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|1RO0 || Entity 1 containing Chain A || Bifunctional DNA primase/polymerase domain of ORF904 from the archaeal plasmid pRN1- Triple mutant F50M/L107M/L110M SeMet remote || Lipps, G., Weinzierl, A.O., Von Scheven, G., Buchen, C., Cramer, P. || 1/27/2004 || X-ray Diffraction || 216 || ORF904 ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|1RO2 || Entity 1 containing Chain A || Bifunctional DNA primase/polymerase domain of ORF904 from the archaeal plasmid pRN1- Triple mutant F50M/L107M/L110M manganese soak || Lipps, G., Weinzierl, A.O., Von Scheven, G., Buchen, C., Cramer, P. || 1/27/2004 || X-ray Diffraction || 216 || hypothetical protein ORF904 ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Methylated peptide ===&lt;br /&gt;
Data from:&lt;br /&gt;
* mcp.M115.057778-3.xlsx&lt;br /&gt;
* mcp.M115.057778-4.xlsx&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;mw-collapsible mw-collapsed wikitable&amp;quot; style=&amp;quot;text-align: left;&amp;quot;&lt;br /&gt;
! PDB id !! NCBI - Accession Number !! Methylated peptides !! &lt;br /&gt;
|-&lt;br /&gt;
| 4G2D || ADX84410&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
test&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
For Mass-Spec data &amp;lt;br&amp;gt;&lt;br /&gt;
''aKMT Catalyzes Extensive Protein Lysine Methylation in the Hyperthermophilic Archaeon Sulfolobus islandicus but is Dispensable for the Growth of the Organism' &amp;lt;br&amp;gt;&lt;br /&gt;
Chu, Yindi; Zhu, Yanping; Chen, Yuling; Li, Wei; Zhang, Zhenfeng; Liu, Di; Wang, Tongkun; Ma, Juncai; Deng, Haiteng; Liu, Zhi-Jie; Ouyang, SongyingHuang, Li &amp;lt;br&amp;gt;&lt;br /&gt;
''Molecular &amp;amp; Cellular Proteomics'' '''2016''', Vol 15, Issue 9, 2908-2923, DOI: 10.1074/mcp.M115.057778&lt;/div&gt;</summary>
		<author><name>Tlinnet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=AKMT_Lys_pred&amp;diff=14014</id>
		<title>AKMT Lys pred</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=AKMT_Lys_pred&amp;diff=14014"/>
		<updated>2017-06-17T11:45:58Z</updated>

		<summary type="html">&lt;p&gt;Tlinnet: /* Data background */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox script-repo&lt;br /&gt;
|type      = script&lt;br /&gt;
|filename  = aKMT_Lys_pred.py&lt;br /&gt;
|author    = [[User:Tlinnet|Troels Schwarz-Linnet]]&lt;br /&gt;
|license   = BSD&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
Chu ''et al.'' has compiled a large information of peptides which are methylated in ''Sulfolobus Islandicus.'' The mass-spec data is available at: http://www.mcponline.org/content/15/9/2908/suppl/DC1 in&lt;br /&gt;
* Supplemental Table S2a revisied (.xlsx, 6.5 MB) - Supplemental Table S2a revisied : mcp.M115.057778-3.xlsx&lt;br /&gt;
* Supplemental Table S2a revisied (.xlsx, 4.8 MB) - Supplemental Table S2a revisied : mcp.M115.057778-4.xlsx&lt;br /&gt;
&lt;br /&gt;
The authors has tried to find correlation with amino acids in 1D, with 7 residues up and downstream to the lysines. The authors also tried to first predict secondary structure in the chain, and then find correlation. &lt;br /&gt;
They made a weblogo figure http://weblogo.threeplusone.com with their findings. &lt;br /&gt;
There seems to be a preference for helical structure and Glutamic acid (E), Isoleucin (I), Leucin (L) and Valine (V) seems to be dominant with 7 residues up/downstream to the methylated lysines.&lt;br /&gt;
&lt;br /&gt;
This script should try to make an analysis this for 3D, with residues up and downstream in angstrom distance to the residue of interest.&lt;br /&gt;
&lt;br /&gt;
== Data background ==&lt;br /&gt;
=== PDB structures in Sulfolobus Islandicus ===&lt;br /&gt;
Following structures was found June 2017&lt;br /&gt;
* www.rcsb.org -&amp;gt; Search advanced&lt;br /&gt;
* Biology -&amp;gt; Source organism -&amp;gt; Sulfolobus organism&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;mw-collapsible mw-collapsed wikitable&amp;quot; style=&amp;quot;text-align: left;&amp;quot;&lt;br /&gt;
! PDB id !! Info !! Text !! Authors !! Released !! Method !! Residue Count !! Macromolecule !! Gene Name(s) !! UniProtKB AC !! NCBI - Accession Numbers&lt;br /&gt;
|-&lt;br /&gt;
| 4G2D || Entity 1 containing Chain A || Crystal structure of the hyperthermophilic Sulfolobus islandicus PLL SisLac || Hiblot, J., Gotthard, G., Chabriere, E., Elias, M. || 10/24/2012 || X-ray Diffraction || 315 || Aryldialkylphosphatase || M164_0332 || C4KKZ9 || ADX84410&lt;br /&gt;
|-&lt;br /&gt;
|5EWT || Entity 1 containing Chain A || Crystal structure of ExoIII endonuclease from Sulfolobus islandicus || Yan, Z., Yuan, Z.L., Gu, L.C., Shen, Y.L. || 11/23/2016 || X-ray Diffraction || 247 || Exodeoxyribonuclease III Xth || SiRe_0100 || F0NG49  || ADX84195&lt;br /&gt;
|-&lt;br /&gt;
|5JWJ || Entity 1 containing Chain A || NMR solution structure of a thermophilic lysine methyl transferase from Sulfolobus islandicus || de Lichtenberg, C., Stiefler-Jensen, D., Schwarz-Linnet, T., She, Q., Teilum, K. ||  5/24/2017 || Solution NMR || 172 || Protein-lysine N-methyltransferase ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|5F4H || Entity 1 containing Chain A, B, C, D, E, F || Archael RuvB-like Holiday junction helicase || Zhai, B., DuPrez, K.T., Doukov, T.I., Shen, Y., Fan, L. || 12/21/2016 || X-ray Diffraction || 505/3030 || Nucleotide binding protein PINc || LS215_1665 || C3MQK6 || ADX85498&lt;br /&gt;
|-&lt;br /&gt;
|5FA8 || Entity 1 containing Chain A || SAM complex with aKMT from the hyperthermophilic archaeon Sulfolobus islandicu || Chu, Y., Zhu, Y., Chen, Y., Li, W., Zhang, Z., Liu, D., Wang, T., Ma, J., Deng, H., Liu, Z.J., Ouyang, S., Huang, L. || 6/29/2016 || X-ray Diffraction || 161 || Ribosomal protein L11 methyltransf ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|5FAD || Entity 1 containing Chain A || SAH complex with aKMT from the hyperthermophilic archaeon Sulfolobus islandicus || Chu, Y., Zhu, Y., Chen, Y., Li, W., Zhang, Z., Liu, D., Wang, T., Ma, J., Deng, H., Liu, Z.J., Ouyang, S., Huang, L. ||  6/29/2016 || X-ray Diffraction || 161 || Ribosomal protein L11 methyltransf ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|3O27 || Entity 1 containing Chain A, B || The crystal structure of C68 from the hybrid virus-plasmid pSSVx || Contursi, P., D'Ambrosio, K., Pirone, L., Pedone, E.M., Aucelli, T., She, Q., De Simone, G., Bartolucci, S. || 1/19/2011 || X-ray Diffraction || 136 || Putative uncharacterized protein ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|3M1M || Entity 1 containing Chain A || Crystal structure of the primase-polymerase from Sulfolobus islandicus || Beck, K., Vannini, A., Cramer, P., Lipps, G. || 6/16/2010 || X-ray Diffraction || 335 || ORF904 ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|2K9I || Entity 1 containing Chain A, B || NMR structure of plasmid copy control protein ORF56 from sulfolobus islandicus || Weininger, U., Zeeb, M., Neumann, P., Low, C., Stubbs, M.T., Lipps, G., Balbach, J. || 10/20/2009 || Solution NMR || 110 || Uncharacterized protein ORF56 ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|3FT7 || Entity 1 containing Chain A, B || Crystal structure of an extremely stable dimeric protein from sulfolobus islandicus || Weininger, U., Zeeb, M., Neumann, P., Low, C., Stubbs, M.T., Lipps, G., Balbach, J. || 10/20/2009 || X-ray Diffraction || 110 || Uncharacterized protein ORF56 ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|1RNI || Entity 1 containing Chain A || Bifunctional DNA primase/polymerase domain of ORF904 from the archaeal plasmid pRN1 || Lipps, G., Weinzierl, A.O., Von Scheven, G., Buchen, C., Cramer, P. || 1/27/2004 || X-ray Diffraction || 216 || ORF904 ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|1RO0 || Entity 1 containing Chain A || Bifunctional DNA primase/polymerase domain of ORF904 from the archaeal plasmid pRN1- Triple mutant F50M/L107M/L110M SeMet remote || Lipps, G., Weinzierl, A.O., Von Scheven, G., Buchen, C., Cramer, P. || 1/27/2004 || X-ray Diffraction || 216 || ORF904 ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|1RO2 || Entity 1 containing Chain A || Bifunctional DNA primase/polymerase domain of ORF904 from the archaeal plasmid pRN1- Triple mutant F50M/L107M/L110M manganese soak || Lipps, G., Weinzierl, A.O., Von Scheven, G., Buchen, C., Cramer, P. || 1/27/2004 || X-ray Diffraction || 216 || hypothetical protein ORF904 ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Methylated lysines ===&lt;br /&gt;
{| class=&amp;quot;mw-collapsible mw-collapsed wikitable&amp;quot; style=&amp;quot;text-align: left;&amp;quot;&lt;br /&gt;
! PDB id !! NCBI - Accession Number !! Methylated peptides !! &lt;br /&gt;
|-&lt;br /&gt;
| 4G2D || ADX84410&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
test&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
For Mass-Spec data &amp;lt;br&amp;gt;&lt;br /&gt;
''aKMT Catalyzes Extensive Protein Lysine Methylation in the Hyperthermophilic Archaeon Sulfolobus islandicus but is Dispensable for the Growth of the Organism' &amp;lt;br&amp;gt;&lt;br /&gt;
Chu, Yindi; Zhu, Yanping; Chen, Yuling; Li, Wei; Zhang, Zhenfeng; Liu, Di; Wang, Tongkun; Ma, Juncai; Deng, Haiteng; Liu, Zhi-Jie; Ouyang, SongyingHuang, Li &amp;lt;br&amp;gt;&lt;br /&gt;
''Molecular &amp;amp; Cellular Proteomics'' '''2016''', Vol 15, Issue 9, 2908-2923, DOI: 10.1074/mcp.M115.057778&lt;/div&gt;</summary>
		<author><name>Tlinnet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=AKMT_Lys_pred&amp;diff=14013</id>
		<title>AKMT Lys pred</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=AKMT_Lys_pred&amp;diff=14013"/>
		<updated>2017-06-17T11:42:20Z</updated>

		<summary type="html">&lt;p&gt;Tlinnet: /* Data background */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox script-repo&lt;br /&gt;
|type      = script&lt;br /&gt;
|filename  = aKMT_Lys_pred.py&lt;br /&gt;
|author    = [[User:Tlinnet|Troels Schwarz-Linnet]]&lt;br /&gt;
|license   = BSD&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
Chu ''et al.'' has compiled a large information of peptides which are methylated in ''Sulfolobus Islandicus.'' The mass-spec data is available at: http://www.mcponline.org/content/15/9/2908/suppl/DC1 in&lt;br /&gt;
* Supplemental Table S2a revisied (.xlsx, 6.5 MB) - Supplemental Table S2a revisied : mcp.M115.057778-3.xlsx&lt;br /&gt;
* Supplemental Table S2a revisied (.xlsx, 4.8 MB) - Supplemental Table S2a revisied : mcp.M115.057778-4.xlsx&lt;br /&gt;
&lt;br /&gt;
The authors has tried to find correlation with amino acids in 1D, with 7 residues up and downstream to the lysines. The authors also tried to first predict secondary structure in the chain, and then find correlation. &lt;br /&gt;
They made a weblogo figure http://weblogo.threeplusone.com with their findings. &lt;br /&gt;
There seems to be a preference for helical structure and Glutamic acid (E), Isoleucin (I), Leucin (L) and Valine (V) seems to be dominant with 7 residues up/downstream to the methylated lysines.&lt;br /&gt;
&lt;br /&gt;
This script should try to make an analysis this for 3D, with residues up and downstream in angstrom distance to the residue of interest.&lt;br /&gt;
&lt;br /&gt;
== Data background ==&lt;br /&gt;
=== PDB structures in Sulfolobus Islandicus ===&lt;br /&gt;
Following structures was found June 2017&lt;br /&gt;
* www.rcsb.org -&amp;gt; Search advanced&lt;br /&gt;
* Biology -&amp;gt; Source organism -&amp;gt; Sulfolobus organism&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;mw-collapsible mw-collapsed wikitable&amp;quot; style=&amp;quot;text-align: left;&amp;quot;&lt;br /&gt;
! PDB id !! Info !! Text !! Authors !! Released !! Method !! Residue Count !! Macromolecule !! Gene Name(s) !! UniProtKB AC !! NCBI - Accession Numbers&lt;br /&gt;
|-&lt;br /&gt;
| 4G2D || Entity 1 containing Chain A || Crystal structure of the hyperthermophilic Sulfolobus islandicus PLL SisLac || Hiblot, J., Gotthard, G., Chabriere, E., Elias, M. || 10/24/2012 || X-ray Diffraction || 315 || Aryldialkylphosphatase || M164_0332 || C4KKZ9 || ADX84410&lt;br /&gt;
|-&lt;br /&gt;
|5EWT || Entity 1 containing Chain A || Crystal structure of ExoIII endonuclease from Sulfolobus islandicus || Yan, Z., Yuan, Z.L., Gu, L.C., Shen, Y.L. || 11/23/2016 || X-ray Diffraction || 247 || Exodeoxyribonuclease III Xth || SiRe_0100 || F0NG49  || ADX84195&lt;br /&gt;
|-&lt;br /&gt;
|5JWJ || Entity 1 containing Chain A || NMR solution structure of a thermophilic lysine methyl transferase from Sulfolobus islandicus || de Lichtenberg, C., Stiefler-Jensen, D., Schwarz-Linnet, T., She, Q., Teilum, K. ||  5/24/2017 || Solution NMR || 172 || Protein-lysine N-methyltransferase ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|5F4H || Entity 1 containing Chain A, B, C, D, E, F || Archael RuvB-like Holiday junction helicase || Zhai, B., DuPrez, K.T., Doukov, T.I., Shen, Y., Fan, L. || 12/21/2016 || X-ray Diffraction || 505/3030 || Nucleotide binding protein PINc || LS215_1665 || C3MQK6 || ADX85498&lt;br /&gt;
|-&lt;br /&gt;
|5FA8 || Entity 1 containing Chain A || SAM complex with aKMT from the hyperthermophilic archaeon Sulfolobus islandicu || Chu, Y., Zhu, Y., Chen, Y., Li, W., Zhang, Z., Liu, D., Wang, T., Ma, J., Deng, H., Liu, Z.J., Ouyang, S., Huang, L. || 6/29/2016 || X-ray Diffraction || 161 || Ribosomal protein L11 methyltransf ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|5FAD || Entity 1 containing Chain A || SAH complex with aKMT from the hyperthermophilic archaeon Sulfolobus islandicus || Chu, Y., Zhu, Y., Chen, Y., Li, W., Zhang, Z., Liu, D., Wang, T., Ma, J., Deng, H., Liu, Z.J., Ouyang, S., Huang, L. ||  6/29/2016 || X-ray Diffraction || 161 || Ribosomal protein L11 methyltransf ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|3O27 || Entity 1 containing Chain A, B || The crystal structure of C68 from the hybrid virus-plasmid pSSVx || Contursi, P., D'Ambrosio, K., Pirone, L., Pedone, E.M., Aucelli, T., She, Q., De Simone, G., Bartolucci, S. || 1/19/2011 || X-ray Diffraction || 136 || Putative uncharacterized protein ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|3M1M || Entity 1 containing Chain A || Crystal structure of the primase-polymerase from Sulfolobus islandicus || Beck, K., Vannini, A., Cramer, P., Lipps, G. || 6/16/2010 || X-ray Diffraction || 335 || ORF904 ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|2K9I || Entity 1 containing Chain A, B || NMR structure of plasmid copy control protein ORF56 from sulfolobus islandicus || Weininger, U., Zeeb, M., Neumann, P., Low, C., Stubbs, M.T., Lipps, G., Balbach, J. || 10/20/2009 || Solution NMR || 110 || Uncharacterized protein ORF56 ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|3FT7 || Entity 1 containing Chain A, B || Crystal structure of an extremely stable dimeric protein from sulfolobus islandicus || Weininger, U., Zeeb, M., Neumann, P., Low, C., Stubbs, M.T., Lipps, G., Balbach, J. || 10/20/2009 || X-ray Diffraction || 110 || Uncharacterized protein ORF56 ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|1RNI || Entity 1 containing Chain A || Bifunctional DNA primase/polymerase domain of ORF904 from the archaeal plasmid pRN1 || Lipps, G., Weinzierl, A.O., Von Scheven, G., Buchen, C., Cramer, P. || 1/27/2004 || X-ray Diffraction || 216 || ORF904 ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|1RO0 || Entity 1 containing Chain A || Bifunctional DNA primase/polymerase domain of ORF904 from the archaeal plasmid pRN1- Triple mutant F50M/L107M/L110M SeMet remote || Lipps, G., Weinzierl, A.O., Von Scheven, G., Buchen, C., Cramer, P. || 1/27/2004 || X-ray Diffraction || 216 || ORF904 ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|1RO2 || Entity 1 containing Chain A || Bifunctional DNA primase/polymerase domain of ORF904 from the archaeal plasmid pRN1- Triple mutant F50M/L107M/L110M manganese soak || Lipps, G., Weinzierl, A.O., Von Scheven, G., Buchen, C., Cramer, P. || 1/27/2004 || X-ray Diffraction || 216 || hypothetical protein ORF904 ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Methylated lysines ===&lt;br /&gt;
{| class=&amp;quot;mw-collapsible mw-collapsed wikitable&amp;quot; style=&amp;quot;text-align: left;&amp;quot;&lt;br /&gt;
! PDB id !! NCBI - Accession Numbers&lt;br /&gt;
|-&lt;br /&gt;
| 4G2D || ADX84410&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
test&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
For Mass-Spec data &amp;lt;br&amp;gt;&lt;br /&gt;
''aKMT Catalyzes Extensive Protein Lysine Methylation in the Hyperthermophilic Archaeon Sulfolobus islandicus but is Dispensable for the Growth of the Organism' &amp;lt;br&amp;gt;&lt;br /&gt;
Chu, Yindi; Zhu, Yanping; Chen, Yuling; Li, Wei; Zhang, Zhenfeng; Liu, Di; Wang, Tongkun; Ma, Juncai; Deng, Haiteng; Liu, Zhi-Jie; Ouyang, SongyingHuang, Li &amp;lt;br&amp;gt;&lt;br /&gt;
''Molecular &amp;amp; Cellular Proteomics'' '''2016''', Vol 15, Issue 9, 2908-2923, DOI: 10.1074/mcp.M115.057778&lt;/div&gt;</summary>
		<author><name>Tlinnet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=AKMT_Lys_pred&amp;diff=14012</id>
		<title>AKMT Lys pred</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=AKMT_Lys_pred&amp;diff=14012"/>
		<updated>2017-06-17T11:40:29Z</updated>

		<summary type="html">&lt;p&gt;Tlinnet: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox script-repo&lt;br /&gt;
|type      = script&lt;br /&gt;
|filename  = aKMT_Lys_pred.py&lt;br /&gt;
|author    = [[User:Tlinnet|Troels Schwarz-Linnet]]&lt;br /&gt;
|license   = BSD&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
Chu ''et al.'' has compiled a large information of peptides which are methylated in ''Sulfolobus Islandicus.'' The mass-spec data is available at: http://www.mcponline.org/content/15/9/2908/suppl/DC1 in&lt;br /&gt;
* Supplemental Table S2a revisied (.xlsx, 6.5 MB) - Supplemental Table S2a revisied : mcp.M115.057778-3.xlsx&lt;br /&gt;
* Supplemental Table S2a revisied (.xlsx, 4.8 MB) - Supplemental Table S2a revisied : mcp.M115.057778-4.xlsx&lt;br /&gt;
&lt;br /&gt;
The authors has tried to find correlation with amino acids in 1D, with 7 residues up and downstream to the lysines. The authors also tried to first predict secondary structure in the chain, and then find correlation. &lt;br /&gt;
They made a weblogo figure http://weblogo.threeplusone.com with their findings. &lt;br /&gt;
There seems to be a preference for helical structure and Glutamic acid (E), Isoleucin (I), Leucin (L) and Valine (V) seems to be dominant with 7 residues up/downstream to the methylated lysines.&lt;br /&gt;
&lt;br /&gt;
This script should try to make an analysis this for 3D, with residues up and downstream in angstrom distance to the residue of interest.&lt;br /&gt;
&lt;br /&gt;
== Data background ==&lt;br /&gt;
=== PDB structures in Sulfolobus Islandicus ===&lt;br /&gt;
Following structures was found June 2017&lt;br /&gt;
* www.rcsb.org -&amp;gt; Search advanced&lt;br /&gt;
* Biology -&amp;gt; Source organism -&amp;gt; Sulfolobus organism&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;mw-collapsible mw-collapsed wikitable&amp;quot; style=&amp;quot;text-align: left;&amp;quot;&lt;br /&gt;
! PDB id !! Info !! Text !! Authors !! Released !! Method !! Residue Count !! Macromolecule !! Gene Name(s) !! UniProtKB AC !! NCBI - Accession Numbers&lt;br /&gt;
|-&lt;br /&gt;
| 4G2D || Entity 1 containing Chain A || Crystal structure of the hyperthermophilic Sulfolobus islandicus PLL SisLac || Hiblot, J., Gotthard, G., Chabriere, E., Elias, M. || 10/24/2012 || X-ray Diffraction || 315 || Aryldialkylphosphatase || M164_0332 || C4KKZ9 || ADX84410&lt;br /&gt;
|-&lt;br /&gt;
|5EWT || Entity 1 containing Chain A || Crystal structure of ExoIII endonuclease from Sulfolobus islandicus || Yan, Z., Yuan, Z.L., Gu, L.C., Shen, Y.L. || 11/23/2016 || X-ray Diffraction || 247 || Exodeoxyribonuclease III Xth || SiRe_0100 || F0NG49  || ADX84195&lt;br /&gt;
|-&lt;br /&gt;
|5JWJ || Entity 1 containing Chain A || NMR solution structure of a thermophilic lysine methyl transferase from Sulfolobus islandicus || de Lichtenberg, C., Stiefler-Jensen, D., Schwarz-Linnet, T., She, Q., Teilum, K. ||  5/24/2017 || Solution NMR || 172 || Protein-lysine N-methyltransferase ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|5F4H || Entity 1 containing Chain A, B, C, D, E, F || Archael RuvB-like Holiday junction helicase || Zhai, B., DuPrez, K.T., Doukov, T.I., Shen, Y., Fan, L. || 12/21/2016 || X-ray Diffraction || 505/3030 || Nucleotide binding protein PINc || LS215_1665 || C3MQK6 || ADX85498&lt;br /&gt;
|-&lt;br /&gt;
|5FA8 || Entity 1 containing Chain A || SAM complex with aKMT from the hyperthermophilic archaeon Sulfolobus islandicu || Chu, Y., Zhu, Y., Chen, Y., Li, W., Zhang, Z., Liu, D., Wang, T., Ma, J., Deng, H., Liu, Z.J., Ouyang, S., Huang, L. || 6/29/2016 || X-ray Diffraction || 161 || Ribosomal protein L11 methyltransf ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|5FAD || Entity 1 containing Chain A || SAH complex with aKMT from the hyperthermophilic archaeon Sulfolobus islandicus || Chu, Y., Zhu, Y., Chen, Y., Li, W., Zhang, Z., Liu, D., Wang, T., Ma, J., Deng, H., Liu, Z.J., Ouyang, S., Huang, L. ||  6/29/2016 || X-ray Diffraction || 161 || Ribosomal protein L11 methyltransf ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|3O27 || Entity 1 containing Chain A, B || The crystal structure of C68 from the hybrid virus-plasmid pSSVx || Contursi, P., D'Ambrosio, K., Pirone, L., Pedone, E.M., Aucelli, T., She, Q., De Simone, G., Bartolucci, S. || 1/19/2011 || X-ray Diffraction || 136 || Putative uncharacterized protein ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|3M1M || Entity 1 containing Chain A || Crystal structure of the primase-polymerase from Sulfolobus islandicus || Beck, K., Vannini, A., Cramer, P., Lipps, G. || 6/16/2010 || X-ray Diffraction || 335 || ORF904 ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|2K9I || Entity 1 containing Chain A, B || NMR structure of plasmid copy control protein ORF56 from sulfolobus islandicus || Weininger, U., Zeeb, M., Neumann, P., Low, C., Stubbs, M.T., Lipps, G., Balbach, J. || 10/20/2009 || Solution NMR || 110 || Uncharacterized protein ORF56 ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|3FT7 || Entity 1 containing Chain A, B || Crystal structure of an extremely stable dimeric protein from sulfolobus islandicus || Weininger, U., Zeeb, M., Neumann, P., Low, C., Stubbs, M.T., Lipps, G., Balbach, J. || 10/20/2009 || X-ray Diffraction || 110 || Uncharacterized protein ORF56 ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|1RNI || Entity 1 containing Chain A || Bifunctional DNA primase/polymerase domain of ORF904 from the archaeal plasmid pRN1 || Lipps, G., Weinzierl, A.O., Von Scheven, G., Buchen, C., Cramer, P. || 1/27/2004 || X-ray Diffraction || 216 || ORF904 ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|1RO0 || Entity 1 containing Chain A || Bifunctional DNA primase/polymerase domain of ORF904 from the archaeal plasmid pRN1- Triple mutant F50M/L107M/L110M SeMet remote || Lipps, G., Weinzierl, A.O., Von Scheven, G., Buchen, C., Cramer, P. || 1/27/2004 || X-ray Diffraction || 216 || ORF904 ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|1RO2 || Entity 1 containing Chain A || Bifunctional DNA primase/polymerase domain of ORF904 from the archaeal plasmid pRN1- Triple mutant F50M/L107M/L110M manganese soak || Lipps, G., Weinzierl, A.O., Von Scheven, G., Buchen, C., Cramer, P. || 1/27/2004 || X-ray Diffraction || 216 || hypothetical protein ORF904 ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
test&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
For Mass-Spec data &amp;lt;br&amp;gt;&lt;br /&gt;
''aKMT Catalyzes Extensive Protein Lysine Methylation in the Hyperthermophilic Archaeon Sulfolobus islandicus but is Dispensable for the Growth of the Organism' &amp;lt;br&amp;gt;&lt;br /&gt;
Chu, Yindi; Zhu, Yanping; Chen, Yuling; Li, Wei; Zhang, Zhenfeng; Liu, Di; Wang, Tongkun; Ma, Juncai; Deng, Haiteng; Liu, Zhi-Jie; Ouyang, SongyingHuang, Li &amp;lt;br&amp;gt;&lt;br /&gt;
''Molecular &amp;amp; Cellular Proteomics'' '''2016''', Vol 15, Issue 9, 2908-2923, DOI: 10.1074/mcp.M115.057778&lt;/div&gt;</summary>
		<author><name>Tlinnet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=AKMT_Lys_pred&amp;diff=14011</id>
		<title>AKMT Lys pred</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=AKMT_Lys_pred&amp;diff=14011"/>
		<updated>2017-06-17T11:39:23Z</updated>

		<summary type="html">&lt;p&gt;Tlinnet: /* PDB structures in Sulfolobus Islandicus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox script-repo&lt;br /&gt;
|type      = script&lt;br /&gt;
|filename  = aKMT_Lys_pred.py&lt;br /&gt;
|author    = [[User:Tlinnet|Troels Schwarz-Linnet]]&lt;br /&gt;
|license   = BSD&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
Chu ''et al.'' has compiled a large information of peptides which are methylated in ''Sulfolobus Islandicus.'' The mass-spec data is available at: http://www.mcponline.org/content/15/9/2908/suppl/DC1 in&lt;br /&gt;
* Supplemental Table S2a revisied (.xlsx, 6.5 MB) - Supplemental Table S2a revisied : mcp.M115.057778-3.xlsx&lt;br /&gt;
* Supplemental Table S2a revisied (.xlsx, 4.8 MB) - Supplemental Table S2a revisied : mcp.M115.057778-4.xlsx&lt;br /&gt;
&lt;br /&gt;
The authors has tried to find correlation with amino acids in 1D, with 7 residues up and downstream to the lysines. The authors also tried to first predict secondary structure in the chain, and then find correlation. &lt;br /&gt;
They made a weblogo figure http://weblogo.threeplusone.com with their findings. &lt;br /&gt;
There seems to be a preference for helical structure and Glutamic acid (E), Isoleucin (I), Leucin (L) and Valine (V) seems to be dominant with 7 residues up/downstream to the methylated lysines.&lt;br /&gt;
&lt;br /&gt;
This script should try to make an analysis this for 3D, with residues up and downstream in angstrom distance to the residue of interest.&lt;br /&gt;
&lt;br /&gt;
== PDB structures in Sulfolobus Islandicus ==&lt;br /&gt;
Following structures was found June 2017&lt;br /&gt;
* www.rcsb.org -&amp;gt; Search advanced&lt;br /&gt;
* Biology -&amp;gt; Source organism -&amp;gt; Sulfolobus organism&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;mw-collapsible mw-collapsed wikitable&amp;quot; style=&amp;quot;text-align: left;&amp;quot;&lt;br /&gt;
! PDB id !! Info !! Text !! Authors !! Released !! Method !! Residue Count !! Macromolecule !! Gene Name(s) !! UniProtKB AC !! NCBI - Accession Numbers&lt;br /&gt;
|-&lt;br /&gt;
| 4G2D || Entity 1 containing Chain A || Crystal structure of the hyperthermophilic Sulfolobus islandicus PLL SisLac || Hiblot, J., Gotthard, G., Chabriere, E., Elias, M. || 10/24/2012 || X-ray Diffraction || 315 || Aryldialkylphosphatase || M164_0332 || C4KKZ9 || ADX84410&lt;br /&gt;
|-&lt;br /&gt;
|5EWT || Entity 1 containing Chain A || Crystal structure of ExoIII endonuclease from Sulfolobus islandicus || Yan, Z., Yuan, Z.L., Gu, L.C., Shen, Y.L. || 11/23/2016 || X-ray Diffraction || 247 || Exodeoxyribonuclease III Xth || SiRe_0100 || F0NG49  || ADX84195&lt;br /&gt;
|-&lt;br /&gt;
|5JWJ || Entity 1 containing Chain A || NMR solution structure of a thermophilic lysine methyl transferase from Sulfolobus islandicus || de Lichtenberg, C., Stiefler-Jensen, D., Schwarz-Linnet, T., She, Q., Teilum, K. ||  5/24/2017 || Solution NMR || 172 || Protein-lysine N-methyltransferase ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|5F4H || Entity 1 containing Chain A, B, C, D, E, F || Archael RuvB-like Holiday junction helicase || Zhai, B., DuPrez, K.T., Doukov, T.I., Shen, Y., Fan, L. || 12/21/2016 || X-ray Diffraction || 505/3030 || Nucleotide binding protein PINc || LS215_1665 || C3MQK6 || ADX85498&lt;br /&gt;
|-&lt;br /&gt;
|5FA8 || Entity 1 containing Chain A || SAM complex with aKMT from the hyperthermophilic archaeon Sulfolobus islandicu || Chu, Y., Zhu, Y., Chen, Y., Li, W., Zhang, Z., Liu, D., Wang, T., Ma, J., Deng, H., Liu, Z.J., Ouyang, S., Huang, L. || 6/29/2016 || X-ray Diffraction || 161 || Ribosomal protein L11 methyltransf ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|5FAD || Entity 1 containing Chain A || SAH complex with aKMT from the hyperthermophilic archaeon Sulfolobus islandicus || Chu, Y., Zhu, Y., Chen, Y., Li, W., Zhang, Z., Liu, D., Wang, T., Ma, J., Deng, H., Liu, Z.J., Ouyang, S., Huang, L. ||  6/29/2016 || X-ray Diffraction || 161 || Ribosomal protein L11 methyltransf ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|3O27 || Entity 1 containing Chain A, B || The crystal structure of C68 from the hybrid virus-plasmid pSSVx || Contursi, P., D'Ambrosio, K., Pirone, L., Pedone, E.M., Aucelli, T., She, Q., De Simone, G., Bartolucci, S. || 1/19/2011 || X-ray Diffraction || 136 || Putative uncharacterized protein ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|3M1M || Entity 1 containing Chain A || Crystal structure of the primase-polymerase from Sulfolobus islandicus || Beck, K., Vannini, A., Cramer, P., Lipps, G. || 6/16/2010 || X-ray Diffraction || 335 || ORF904 ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|2K9I || Entity 1 containing Chain A, B || NMR structure of plasmid copy control protein ORF56 from sulfolobus islandicus || Weininger, U., Zeeb, M., Neumann, P., Low, C., Stubbs, M.T., Lipps, G., Balbach, J. || 10/20/2009 || Solution NMR || 110 || Uncharacterized protein ORF56 ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|3FT7 || Entity 1 containing Chain A, B || Crystal structure of an extremely stable dimeric protein from sulfolobus islandicus || Weininger, U., Zeeb, M., Neumann, P., Low, C., Stubbs, M.T., Lipps, G., Balbach, J. || 10/20/2009 || X-ray Diffraction || 110 || Uncharacterized protein ORF56 ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|1RNI || Entity 1 containing Chain A || Bifunctional DNA primase/polymerase domain of ORF904 from the archaeal plasmid pRN1 || Lipps, G., Weinzierl, A.O., Von Scheven, G., Buchen, C., Cramer, P. || 1/27/2004 || X-ray Diffraction || 216 || ORF904 ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|1RO0 || Entity 1 containing Chain A || Bifunctional DNA primase/polymerase domain of ORF904 from the archaeal plasmid pRN1- Triple mutant F50M/L107M/L110M SeMet remote || Lipps, G., Weinzierl, A.O., Von Scheven, G., Buchen, C., Cramer, P. || 1/27/2004 || X-ray Diffraction || 216 || ORF904 ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|1RO2 || Entity 1 containing Chain A || Bifunctional DNA primase/polymerase domain of ORF904 from the archaeal plasmid pRN1- Triple mutant F50M/L107M/L110M manganese soak || Lipps, G., Weinzierl, A.O., Von Scheven, G., Buchen, C., Cramer, P. || 1/27/2004 || X-ray Diffraction || 216 || hypothetical protein ORF904 ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
test&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
For Mass-Spec data &amp;lt;br&amp;gt;&lt;br /&gt;
''aKMT Catalyzes Extensive Protein Lysine Methylation in the Hyperthermophilic Archaeon Sulfolobus islandicus but is Dispensable for the Growth of the Organism' &amp;lt;br&amp;gt;&lt;br /&gt;
Chu, Yindi; Zhu, Yanping; Chen, Yuling; Li, Wei; Zhang, Zhenfeng; Liu, Di; Wang, Tongkun; Ma, Juncai; Deng, Haiteng; Liu, Zhi-Jie; Ouyang, SongyingHuang, Li &amp;lt;br&amp;gt;&lt;br /&gt;
''Molecular &amp;amp; Cellular Proteomics'' '''2016''', Vol 15, Issue 9, 2908-2923, DOI: 10.1074/mcp.M115.057778&lt;/div&gt;</summary>
		<author><name>Tlinnet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=AKMT_Lys_pred&amp;diff=14010</id>
		<title>AKMT Lys pred</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=AKMT_Lys_pred&amp;diff=14010"/>
		<updated>2017-06-17T11:38:15Z</updated>

		<summary type="html">&lt;p&gt;Tlinnet: /* PDB structures in Sulfolobus Islandicus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox script-repo&lt;br /&gt;
|type      = script&lt;br /&gt;
|filename  = aKMT_Lys_pred.py&lt;br /&gt;
|author    = [[User:Tlinnet|Troels Schwarz-Linnet]]&lt;br /&gt;
|license   = BSD&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
Chu ''et al.'' has compiled a large information of peptides which are methylated in ''Sulfolobus Islandicus.'' The mass-spec data is available at: http://www.mcponline.org/content/15/9/2908/suppl/DC1 in&lt;br /&gt;
* Supplemental Table S2a revisied (.xlsx, 6.5 MB) - Supplemental Table S2a revisied : mcp.M115.057778-3.xlsx&lt;br /&gt;
* Supplemental Table S2a revisied (.xlsx, 4.8 MB) - Supplemental Table S2a revisied : mcp.M115.057778-4.xlsx&lt;br /&gt;
&lt;br /&gt;
The authors has tried to find correlation with amino acids in 1D, with 7 residues up and downstream to the lysines. The authors also tried to first predict secondary structure in the chain, and then find correlation. &lt;br /&gt;
They made a weblogo figure http://weblogo.threeplusone.com with their findings. &lt;br /&gt;
There seems to be a preference for helical structure and Glutamic acid (E), Isoleucin (I), Leucin (L) and Valine (V) seems to be dominant with 7 residues up/downstream to the methylated lysines.&lt;br /&gt;
&lt;br /&gt;
This script should try to make an analysis this for 3D, with residues up and downstream in angstrom distance to the residue of interest.&lt;br /&gt;
&lt;br /&gt;
== PDB structures in Sulfolobus Islandicus ==&lt;br /&gt;
Following structures was found June 2017&lt;br /&gt;
* www.rcsb.org -&amp;gt; Search advanced&lt;br /&gt;
* Biology -&amp;gt; Source organism -&amp;gt; Sulfolobus organism&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: left;&amp;quot;&lt;br /&gt;
! PDB id !! Info !! Text !! Authors !! Released !! Method !! Residue Count !! Macromolecule !! Gene Name(s) !! UniProtKB AC !! NCBI - Accession Numbers&lt;br /&gt;
|-&lt;br /&gt;
| 4G2D || Entity 1 containing Chain A || Crystal structure of the hyperthermophilic Sulfolobus islandicus PLL SisLac || Hiblot, J., Gotthard, G., Chabriere, E., Elias, M. || 10/24/2012 || X-ray Diffraction || 315 || Aryldialkylphosphatase || M164_0332 || C4KKZ9 || ADX84410&lt;br /&gt;
|-&lt;br /&gt;
|5EWT || Entity 1 containing Chain A || Crystal structure of ExoIII endonuclease from Sulfolobus islandicus || Yan, Z., Yuan, Z.L., Gu, L.C., Shen, Y.L. || 11/23/2016 || X-ray Diffraction || 247 || Exodeoxyribonuclease III Xth || SiRe_0100 || F0NG49  || ADX84195&lt;br /&gt;
|-&lt;br /&gt;
|5JWJ || Entity 1 containing Chain A || NMR solution structure of a thermophilic lysine methyl transferase from Sulfolobus islandicus || de Lichtenberg, C., Stiefler-Jensen, D., Schwarz-Linnet, T., She, Q., Teilum, K. ||  5/24/2017 || Solution NMR || 172 || Protein-lysine N-methyltransferase ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|5F4H || Entity 1 containing Chain A, B, C, D, E, F || Archael RuvB-like Holiday junction helicase || Zhai, B., DuPrez, K.T., Doukov, T.I., Shen, Y., Fan, L. || 12/21/2016 || X-ray Diffraction || 505/3030 || Nucleotide binding protein PINc || LS215_1665 || C3MQK6 || ADX85498&lt;br /&gt;
|-&lt;br /&gt;
|5FA8 || Entity 1 containing Chain A || SAM complex with aKMT from the hyperthermophilic archaeon Sulfolobus islandicu || Chu, Y., Zhu, Y., Chen, Y., Li, W., Zhang, Z., Liu, D., Wang, T., Ma, J., Deng, H., Liu, Z.J., Ouyang, S., Huang, L. || 6/29/2016 || X-ray Diffraction || 161 || Ribosomal protein L11 methyltransf ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|5FAD || Entity 1 containing Chain A || SAH complex with aKMT from the hyperthermophilic archaeon Sulfolobus islandicus || Chu, Y., Zhu, Y., Chen, Y., Li, W., Zhang, Z., Liu, D., Wang, T., Ma, J., Deng, H., Liu, Z.J., Ouyang, S., Huang, L. ||  6/29/2016 || X-ray Diffraction || 161 || Ribosomal protein L11 methyltransf ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|3O27 || Entity 1 containing Chain A, B || The crystal structure of C68 from the hybrid virus-plasmid pSSVx || Contursi, P., D'Ambrosio, K., Pirone, L., Pedone, E.M., Aucelli, T., She, Q., De Simone, G., Bartolucci, S. || 1/19/2011 || X-ray Diffraction || 136 || Putative uncharacterized protein ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|3M1M || Entity 1 containing Chain A || Crystal structure of the primase-polymerase from Sulfolobus islandicus || Beck, K., Vannini, A., Cramer, P., Lipps, G. || 6/16/2010 || X-ray Diffraction || 335 || ORF904 ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|2K9I || Entity 1 containing Chain A, B || NMR structure of plasmid copy control protein ORF56 from sulfolobus islandicus || Weininger, U., Zeeb, M., Neumann, P., Low, C., Stubbs, M.T., Lipps, G., Balbach, J. || 10/20/2009 || Solution NMR || 110 || Uncharacterized protein ORF56 ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|3FT7 || Entity 1 containing Chain A, B || Crystal structure of an extremely stable dimeric protein from sulfolobus islandicus || Weininger, U., Zeeb, M., Neumann, P., Low, C., Stubbs, M.T., Lipps, G., Balbach, J. || 10/20/2009 || X-ray Diffraction || 110 || Uncharacterized protein ORF56 ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|1RNI || Entity 1 containing Chain A || Bifunctional DNA primase/polymerase domain of ORF904 from the archaeal plasmid pRN1 || Lipps, G., Weinzierl, A.O., Von Scheven, G., Buchen, C., Cramer, P. || 1/27/2004 || X-ray Diffraction || 216 || ORF904 ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|1RO0 || Entity 1 containing Chain A || Bifunctional DNA primase/polymerase domain of ORF904 from the archaeal plasmid pRN1- Triple mutant F50M/L107M/L110M SeMet remote || Lipps, G., Weinzierl, A.O., Von Scheven, G., Buchen, C., Cramer, P. || 1/27/2004 || X-ray Diffraction || 216 || ORF904 ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|1RO2 || Entity 1 containing Chain A || Bifunctional DNA primase/polymerase domain of ORF904 from the archaeal plasmid pRN1- Triple mutant F50M/L107M/L110M manganese soak || Lipps, G., Weinzierl, A.O., Von Scheven, G., Buchen, C., Cramer, P. || 1/27/2004 || X-ray Diffraction || 216 || hypothetical protein ORF904 ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
test&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
For Mass-Spec data &amp;lt;br&amp;gt;&lt;br /&gt;
''aKMT Catalyzes Extensive Protein Lysine Methylation in the Hyperthermophilic Archaeon Sulfolobus islandicus but is Dispensable for the Growth of the Organism' &amp;lt;br&amp;gt;&lt;br /&gt;
Chu, Yindi; Zhu, Yanping; Chen, Yuling; Li, Wei; Zhang, Zhenfeng; Liu, Di; Wang, Tongkun; Ma, Juncai; Deng, Haiteng; Liu, Zhi-Jie; Ouyang, SongyingHuang, Li &amp;lt;br&amp;gt;&lt;br /&gt;
''Molecular &amp;amp; Cellular Proteomics'' '''2016''', Vol 15, Issue 9, 2908-2923, DOI: 10.1074/mcp.M115.057778&lt;/div&gt;</summary>
		<author><name>Tlinnet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=AKMT_Lys_pred&amp;diff=14009</id>
		<title>AKMT Lys pred</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=AKMT_Lys_pred&amp;diff=14009"/>
		<updated>2017-06-17T11:37:26Z</updated>

		<summary type="html">&lt;p&gt;Tlinnet: /* PDB structures in Sulfolobus Islandicus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox script-repo&lt;br /&gt;
|type      = script&lt;br /&gt;
|filename  = aKMT_Lys_pred.py&lt;br /&gt;
|author    = [[User:Tlinnet|Troels Schwarz-Linnet]]&lt;br /&gt;
|license   = BSD&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
Chu ''et al.'' has compiled a large information of peptides which are methylated in ''Sulfolobus Islandicus.'' The mass-spec data is available at: http://www.mcponline.org/content/15/9/2908/suppl/DC1 in&lt;br /&gt;
* Supplemental Table S2a revisied (.xlsx, 6.5 MB) - Supplemental Table S2a revisied : mcp.M115.057778-3.xlsx&lt;br /&gt;
* Supplemental Table S2a revisied (.xlsx, 4.8 MB) - Supplemental Table S2a revisied : mcp.M115.057778-4.xlsx&lt;br /&gt;
&lt;br /&gt;
The authors has tried to find correlation with amino acids in 1D, with 7 residues up and downstream to the lysines. The authors also tried to first predict secondary structure in the chain, and then find correlation. &lt;br /&gt;
They made a weblogo figure http://weblogo.threeplusone.com with their findings. &lt;br /&gt;
There seems to be a preference for helical structure and Glutamic acid (E), Isoleucin (I), Leucin (L) and Valine (V) seems to be dominant with 7 residues up/downstream to the methylated lysines.&lt;br /&gt;
&lt;br /&gt;
This script should try to make an analysis this for 3D, with residues up and downstream in angstrom distance to the residue of interest.&lt;br /&gt;
&lt;br /&gt;
== PDB structures in Sulfolobus Islandicus ==&lt;br /&gt;
Following structures was found June 2017&lt;br /&gt;
* www.rcsb.org -&amp;gt; Search advanced&lt;br /&gt;
* Biology -&amp;gt; Source organism -&amp;gt; Sulfolobus organism&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: left;&amp;quot;&lt;br /&gt;
! PDB id !! Info !! Text !! Authors !! Released !! Method !! Residue Count !! Macromolecule !! Gene Name(s) !! UniProtKB AC !! NCBI - Accession Numbers&lt;br /&gt;
|-&lt;br /&gt;
| 4G2D || Entity 1 containing Chain A || Crystal structure of the hyperthermophilic Sulfolobus islandicus PLL SisLac || Hiblot, J., Gotthard, G., Chabriere, E., Elias, M. || 10/24/2012 || X-ray Diffraction || 315 || Aryldialkylphosphatase || M164_0332 || C4KKZ9 || ADX84410&lt;br /&gt;
|-&lt;br /&gt;
|5EWT || Entity 1 containing Chain A || Crystal structure of ExoIII endonuclease from Sulfolobus islandicus || Yan, Z., Yuan, Z.L., Gu, L.C., Shen, Y.L. || 11/23/2016 || X-ray Diffraction || 247 || Exodeoxyribonuclease III Xth || SiRe_0100 || F0NG49  || ADX84195&lt;br /&gt;
|-&lt;br /&gt;
|5JWJ || Entity 1 containing Chain A || NMR solution structure of a thermophilic lysine methyl transferase from Sulfolobus islandicus || de Lichtenberg, C., Stiefler-Jensen, D., Schwarz-Linnet, T., She, Q., Teilum, K. ||  5/24/2017 || Solution NMR || 172 || Protein-lysine N-methyltransferase ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|5F4H || Entity 1 containing Chain A, B, C, D, E, F || Archael RuvB-like Holiday junction helicase || Zhai, B., DuPrez, K.T., Doukov, T.I., Shen, Y., Fan, L. || 12/21/2016 || X-ray Diffraction || 505/3030 || Nucleotide binding protein PINc || LS215_1665 || C3MQK6 || ADX85498&lt;br /&gt;
|-&lt;br /&gt;
|5FA8 || Entity 1 containing Chain A || SAM complex with aKMT from the hyperthermophilic archaeon Sulfolobus islandicu || Chu, Y., Zhu, Y., Chen, Y., Li, W., Zhang, Z., Liu, D., Wang, T., Ma, J., Deng, H., Liu, Z.J., Ouyang, S., Huang, L. || 6/29/2016 || X-ray Diffraction || 161 || Ribosomal protein L11 methyltransf ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|5FAD || Entity 1 containing Chain A || SAH complex with aKMT from the hyperthermophilic archaeon Sulfolobus islandicus || Chu, Y., Zhu, Y., Chen, Y., Li, W., Zhang, Z., Liu, D., Wang, T., Ma, J., Deng, H., Liu, Z.J., Ouyang, S., Huang, L. ||  6/29/2016 || X-ray Diffraction || 161 || Ribosomal protein L11 methyltransf ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|3O27 || Entity 1 containing Chain A, B || The crystal structure of C68 from the hybrid virus-plasmid pSSVx || Contursi, P., D'Ambrosio, K., Pirone, L., Pedone, E.M., Aucelli, T., She, Q., De Simone, G., Bartolucci, S. || 1/19/2011 || X-ray Diffraction || 136 || Putative uncharacterized protein ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|3M1M || Entity 1 containing Chain A || Crystal structure of the primase-polymerase from Sulfolobus islandicus || Beck, K., Vannini, A., Cramer, P., Lipps, G. || 6/16/2010 || X-ray Diffraction || 335 || ORF904 ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
test&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
For Mass-Spec data &amp;lt;br&amp;gt;&lt;br /&gt;
''aKMT Catalyzes Extensive Protein Lysine Methylation in the Hyperthermophilic Archaeon Sulfolobus islandicus but is Dispensable for the Growth of the Organism' &amp;lt;br&amp;gt;&lt;br /&gt;
Chu, Yindi; Zhu, Yanping; Chen, Yuling; Li, Wei; Zhang, Zhenfeng; Liu, Di; Wang, Tongkun; Ma, Juncai; Deng, Haiteng; Liu, Zhi-Jie; Ouyang, SongyingHuang, Li &amp;lt;br&amp;gt;&lt;br /&gt;
''Molecular &amp;amp; Cellular Proteomics'' '''2016''', Vol 15, Issue 9, 2908-2923, DOI: 10.1074/mcp.M115.057778&lt;/div&gt;</summary>
		<author><name>Tlinnet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=AKMT_Lys_pred&amp;diff=14008</id>
		<title>AKMT Lys pred</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=AKMT_Lys_pred&amp;diff=14008"/>
		<updated>2017-06-17T11:35:54Z</updated>

		<summary type="html">&lt;p&gt;Tlinnet: /* PDB structures in Sulfolobus Islandicus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox script-repo&lt;br /&gt;
|type      = script&lt;br /&gt;
|filename  = aKMT_Lys_pred.py&lt;br /&gt;
|author    = [[User:Tlinnet|Troels Schwarz-Linnet]]&lt;br /&gt;
|license   = BSD&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
Chu ''et al.'' has compiled a large information of peptides which are methylated in ''Sulfolobus Islandicus.'' The mass-spec data is available at: http://www.mcponline.org/content/15/9/2908/suppl/DC1 in&lt;br /&gt;
* Supplemental Table S2a revisied (.xlsx, 6.5 MB) - Supplemental Table S2a revisied : mcp.M115.057778-3.xlsx&lt;br /&gt;
* Supplemental Table S2a revisied (.xlsx, 4.8 MB) - Supplemental Table S2a revisied : mcp.M115.057778-4.xlsx&lt;br /&gt;
&lt;br /&gt;
The authors has tried to find correlation with amino acids in 1D, with 7 residues up and downstream to the lysines. The authors also tried to first predict secondary structure in the chain, and then find correlation. &lt;br /&gt;
They made a weblogo figure http://weblogo.threeplusone.com with their findings. &lt;br /&gt;
There seems to be a preference for helical structure and Glutamic acid (E), Isoleucin (I), Leucin (L) and Valine (V) seems to be dominant with 7 residues up/downstream to the methylated lysines.&lt;br /&gt;
&lt;br /&gt;
This script should try to make an analysis this for 3D, with residues up and downstream in angstrom distance to the residue of interest.&lt;br /&gt;
&lt;br /&gt;
== PDB structures in Sulfolobus Islandicus ==&lt;br /&gt;
Following structures was found June 2017&lt;br /&gt;
* www.rcsb.org -&amp;gt; Search advanced&lt;br /&gt;
* Biology -&amp;gt; Source organism -&amp;gt; Sulfolobus organism&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: left;&amp;quot;&lt;br /&gt;
! PDB id !! Info !! Text !! Authors !! Released !! Method !! Residue Count !! Macromolecule !! Gene Name(s) !! UniProtKB AC !! NCBI - Accession Numbers&lt;br /&gt;
|-&lt;br /&gt;
| 4G2D || Entity 1 containing Chain A || Crystal structure of the hyperthermophilic Sulfolobus islandicus PLL SisLac || Hiblot, J., Gotthard, G., Chabriere, E., Elias, M. || 10/24/2012 || X-ray Diffraction || 315 || Aryldialkylphosphatase || M164_0332 || C4KKZ9 || ADX84410&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
test&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
For Mass-Spec data &amp;lt;br&amp;gt;&lt;br /&gt;
''aKMT Catalyzes Extensive Protein Lysine Methylation in the Hyperthermophilic Archaeon Sulfolobus islandicus but is Dispensable for the Growth of the Organism' &amp;lt;br&amp;gt;&lt;br /&gt;
Chu, Yindi; Zhu, Yanping; Chen, Yuling; Li, Wei; Zhang, Zhenfeng; Liu, Di; Wang, Tongkun; Ma, Juncai; Deng, Haiteng; Liu, Zhi-Jie; Ouyang, SongyingHuang, Li &amp;lt;br&amp;gt;&lt;br /&gt;
''Molecular &amp;amp; Cellular Proteomics'' '''2016''', Vol 15, Issue 9, 2908-2923, DOI: 10.1074/mcp.M115.057778&lt;/div&gt;</summary>
		<author><name>Tlinnet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=AKMT_Lys_pred&amp;diff=14007</id>
		<title>AKMT Lys pred</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=AKMT_Lys_pred&amp;diff=14007"/>
		<updated>2017-06-17T11:33:11Z</updated>

		<summary type="html">&lt;p&gt;Tlinnet: /* PDB structures in Sulfolobus Islandicus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox script-repo&lt;br /&gt;
|type      = script&lt;br /&gt;
|filename  = aKMT_Lys_pred.py&lt;br /&gt;
|author    = [[User:Tlinnet|Troels Schwarz-Linnet]]&lt;br /&gt;
|license   = BSD&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
Chu ''et al.'' has compiled a large information of peptides which are methylated in ''Sulfolobus Islandicus.'' The mass-spec data is available at: http://www.mcponline.org/content/15/9/2908/suppl/DC1 in&lt;br /&gt;
* Supplemental Table S2a revisied (.xlsx, 6.5 MB) - Supplemental Table S2a revisied : mcp.M115.057778-3.xlsx&lt;br /&gt;
* Supplemental Table S2a revisied (.xlsx, 4.8 MB) - Supplemental Table S2a revisied : mcp.M115.057778-4.xlsx&lt;br /&gt;
&lt;br /&gt;
The authors has tried to find correlation with amino acids in 1D, with 7 residues up and downstream to the lysines. The authors also tried to first predict secondary structure in the chain, and then find correlation. &lt;br /&gt;
They made a weblogo figure http://weblogo.threeplusone.com with their findings. &lt;br /&gt;
There seems to be a preference for helical structure and Glutamic acid (E), Isoleucin (I), Leucin (L) and Valine (V) seems to be dominant with 7 residues up/downstream to the methylated lysines.&lt;br /&gt;
&lt;br /&gt;
This script should try to make an analysis this for 3D, with residues up and downstream in angstrom distance to the residue of interest.&lt;br /&gt;
&lt;br /&gt;
== PDB structures in Sulfolobus Islandicus ==&lt;br /&gt;
Following structures was found June 2017&lt;br /&gt;
* www.rcsb.org -&amp;gt; Search advanced&lt;br /&gt;
* Biology -&amp;gt; Source organism -&amp;gt; Sulfolobus organism&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: left;&amp;quot;&lt;br /&gt;
! PDB id !! Info !! Text !! Authors !! Released !! Method !! Residue Count !! Macromolecule !! Gene Name(s) !! UniProtKB AC !! NCBI - Accession Numbers&lt;br /&gt;
|-&lt;br /&gt;
| 4G2D || test&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: auto;&amp;quot;&lt;br /&gt;
! Orange !! Apple&lt;br /&gt;
|-&lt;br /&gt;
| Bread || Pie&lt;br /&gt;
|-&lt;br /&gt;
| Butter&lt;br /&gt;
| Ice cream &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
test&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
For Mass-Spec data &amp;lt;br&amp;gt;&lt;br /&gt;
''aKMT Catalyzes Extensive Protein Lysine Methylation in the Hyperthermophilic Archaeon Sulfolobus islandicus but is Dispensable for the Growth of the Organism' &amp;lt;br&amp;gt;&lt;br /&gt;
Chu, Yindi; Zhu, Yanping; Chen, Yuling; Li, Wei; Zhang, Zhenfeng; Liu, Di; Wang, Tongkun; Ma, Juncai; Deng, Haiteng; Liu, Zhi-Jie; Ouyang, SongyingHuang, Li &amp;lt;br&amp;gt;&lt;br /&gt;
''Molecular &amp;amp; Cellular Proteomics'' '''2016''', Vol 15, Issue 9, 2908-2923, DOI: 10.1074/mcp.M115.057778&lt;/div&gt;</summary>
		<author><name>Tlinnet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=AKMT_Lys_pred&amp;diff=14006</id>
		<title>AKMT Lys pred</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=AKMT_Lys_pred&amp;diff=14006"/>
		<updated>2017-06-17T11:32:58Z</updated>

		<summary type="html">&lt;p&gt;Tlinnet: /* PDB structures in Sulfolobus Islandicus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox script-repo&lt;br /&gt;
|type      = script&lt;br /&gt;
|filename  = aKMT_Lys_pred.py&lt;br /&gt;
|author    = [[User:Tlinnet|Troels Schwarz-Linnet]]&lt;br /&gt;
|license   = BSD&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
Chu ''et al.'' has compiled a large information of peptides which are methylated in ''Sulfolobus Islandicus.'' The mass-spec data is available at: http://www.mcponline.org/content/15/9/2908/suppl/DC1 in&lt;br /&gt;
* Supplemental Table S2a revisied (.xlsx, 6.5 MB) - Supplemental Table S2a revisied : mcp.M115.057778-3.xlsx&lt;br /&gt;
* Supplemental Table S2a revisied (.xlsx, 4.8 MB) - Supplemental Table S2a revisied : mcp.M115.057778-4.xlsx&lt;br /&gt;
&lt;br /&gt;
The authors has tried to find correlation with amino acids in 1D, with 7 residues up and downstream to the lysines. The authors also tried to first predict secondary structure in the chain, and then find correlation. &lt;br /&gt;
They made a weblogo figure http://weblogo.threeplusone.com with their findings. &lt;br /&gt;
There seems to be a preference for helical structure and Glutamic acid (E), Isoleucin (I), Leucin (L) and Valine (V) seems to be dominant with 7 residues up/downstream to the methylated lysines.&lt;br /&gt;
&lt;br /&gt;
This script should try to make an analysis this for 3D, with residues up and downstream in angstrom distance to the residue of interest.&lt;br /&gt;
&lt;br /&gt;
== PDB structures in Sulfolobus Islandicus ==&lt;br /&gt;
Following structures was found June 2017&lt;br /&gt;
* www.rcsb.org -&amp;gt; Search advanced&lt;br /&gt;
* Biology -&amp;gt; Source organism -&amp;gt; Sulfolobus organism&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: left;&amp;quot;&lt;br /&gt;
! PDB id !! Info !! Text !! Authors !! Released !! Method !! Residue Count !! Macromolecule !! Gene Name(s) !! UniProtKB AC !! NCBI - Accession Numbers&lt;br /&gt;
|-&lt;br /&gt;
4G2D || test&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: auto;&amp;quot;&lt;br /&gt;
! Orange !! Apple&lt;br /&gt;
|-&lt;br /&gt;
| Bread || Pie&lt;br /&gt;
|-&lt;br /&gt;
| Butter&lt;br /&gt;
| Ice cream &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
test&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
For Mass-Spec data &amp;lt;br&amp;gt;&lt;br /&gt;
''aKMT Catalyzes Extensive Protein Lysine Methylation in the Hyperthermophilic Archaeon Sulfolobus islandicus but is Dispensable for the Growth of the Organism' &amp;lt;br&amp;gt;&lt;br /&gt;
Chu, Yindi; Zhu, Yanping; Chen, Yuling; Li, Wei; Zhang, Zhenfeng; Liu, Di; Wang, Tongkun; Ma, Juncai; Deng, Haiteng; Liu, Zhi-Jie; Ouyang, SongyingHuang, Li &amp;lt;br&amp;gt;&lt;br /&gt;
''Molecular &amp;amp; Cellular Proteomics'' '''2016''', Vol 15, Issue 9, 2908-2923, DOI: 10.1074/mcp.M115.057778&lt;/div&gt;</summary>
		<author><name>Tlinnet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=AKMT_Lys_pred&amp;diff=14005</id>
		<title>AKMT Lys pred</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=AKMT_Lys_pred&amp;diff=14005"/>
		<updated>2017-06-17T11:32:38Z</updated>

		<summary type="html">&lt;p&gt;Tlinnet: /* PDB structures in Sulfolobus Islandicus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox script-repo&lt;br /&gt;
|type      = script&lt;br /&gt;
|filename  = aKMT_Lys_pred.py&lt;br /&gt;
|author    = [[User:Tlinnet|Troels Schwarz-Linnet]]&lt;br /&gt;
|license   = BSD&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
Chu ''et al.'' has compiled a large information of peptides which are methylated in ''Sulfolobus Islandicus.'' The mass-spec data is available at: http://www.mcponline.org/content/15/9/2908/suppl/DC1 in&lt;br /&gt;
* Supplemental Table S2a revisied (.xlsx, 6.5 MB) - Supplemental Table S2a revisied : mcp.M115.057778-3.xlsx&lt;br /&gt;
* Supplemental Table S2a revisied (.xlsx, 4.8 MB) - Supplemental Table S2a revisied : mcp.M115.057778-4.xlsx&lt;br /&gt;
&lt;br /&gt;
The authors has tried to find correlation with amino acids in 1D, with 7 residues up and downstream to the lysines. The authors also tried to first predict secondary structure in the chain, and then find correlation. &lt;br /&gt;
They made a weblogo figure http://weblogo.threeplusone.com with their findings. &lt;br /&gt;
There seems to be a preference for helical structure and Glutamic acid (E), Isoleucin (I), Leucin (L) and Valine (V) seems to be dominant with 7 residues up/downstream to the methylated lysines.&lt;br /&gt;
&lt;br /&gt;
This script should try to make an analysis this for 3D, with residues up and downstream in angstrom distance to the residue of interest.&lt;br /&gt;
&lt;br /&gt;
== PDB structures in Sulfolobus Islandicus ==&lt;br /&gt;
Following structures was found June 2017&lt;br /&gt;
* www.rcsb.org -&amp;gt; Search advanced&lt;br /&gt;
* Biology -&amp;gt; Source organism -&amp;gt; Sulfolobus organism&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: left;&amp;quot;&lt;br /&gt;
! PDB id !! Info !! Text !! Authors !! Released !! Method !! Residue Count !! Macromolecule: !! Gene Name(s) !! UniProtKB AC !! NCBI - Accession Numbers&lt;br /&gt;
|-&lt;br /&gt;
4G2D || test&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: auto;&amp;quot;&lt;br /&gt;
! Orange !! Apple&lt;br /&gt;
|-&lt;br /&gt;
| Bread | Pie&lt;br /&gt;
|-&lt;br /&gt;
| Butter&lt;br /&gt;
| Ice cream &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
test&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
For Mass-Spec data &amp;lt;br&amp;gt;&lt;br /&gt;
''aKMT Catalyzes Extensive Protein Lysine Methylation in the Hyperthermophilic Archaeon Sulfolobus islandicus but is Dispensable for the Growth of the Organism' &amp;lt;br&amp;gt;&lt;br /&gt;
Chu, Yindi; Zhu, Yanping; Chen, Yuling; Li, Wei; Zhang, Zhenfeng; Liu, Di; Wang, Tongkun; Ma, Juncai; Deng, Haiteng; Liu, Zhi-Jie; Ouyang, SongyingHuang, Li &amp;lt;br&amp;gt;&lt;br /&gt;
''Molecular &amp;amp; Cellular Proteomics'' '''2016''', Vol 15, Issue 9, 2908-2923, DOI: 10.1074/mcp.M115.057778&lt;/div&gt;</summary>
		<author><name>Tlinnet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=AKMT_Lys_pred&amp;diff=14004</id>
		<title>AKMT Lys pred</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=AKMT_Lys_pred&amp;diff=14004"/>
		<updated>2017-06-17T11:31:43Z</updated>

		<summary type="html">&lt;p&gt;Tlinnet: /* PDB structures in Sulfolobus Islandicus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox script-repo&lt;br /&gt;
|type      = script&lt;br /&gt;
|filename  = aKMT_Lys_pred.py&lt;br /&gt;
|author    = [[User:Tlinnet|Troels Schwarz-Linnet]]&lt;br /&gt;
|license   = BSD&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
Chu ''et al.'' has compiled a large information of peptides which are methylated in ''Sulfolobus Islandicus.'' The mass-spec data is available at: http://www.mcponline.org/content/15/9/2908/suppl/DC1 in&lt;br /&gt;
* Supplemental Table S2a revisied (.xlsx, 6.5 MB) - Supplemental Table S2a revisied : mcp.M115.057778-3.xlsx&lt;br /&gt;
* Supplemental Table S2a revisied (.xlsx, 4.8 MB) - Supplemental Table S2a revisied : mcp.M115.057778-4.xlsx&lt;br /&gt;
&lt;br /&gt;
The authors has tried to find correlation with amino acids in 1D, with 7 residues up and downstream to the lysines. The authors also tried to first predict secondary structure in the chain, and then find correlation. &lt;br /&gt;
They made a weblogo figure http://weblogo.threeplusone.com with their findings. &lt;br /&gt;
There seems to be a preference for helical structure and Glutamic acid (E), Isoleucin (I), Leucin (L) and Valine (V) seems to be dominant with 7 residues up/downstream to the methylated lysines.&lt;br /&gt;
&lt;br /&gt;
This script should try to make an analysis this for 3D, with residues up and downstream in angstrom distance to the residue of interest.&lt;br /&gt;
&lt;br /&gt;
== PDB structures in Sulfolobus Islandicus ==&lt;br /&gt;
Following structures was found June 2017&lt;br /&gt;
* www.rcsb.org -&amp;gt; Search advanced&lt;br /&gt;
* Biology -&amp;gt; Source organism -&amp;gt; Sulfolobus organism&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: left;&amp;quot;&lt;br /&gt;
! PDB id !! Info !! Text !! Authors !! Released !! Method !! Residue Count !! Macromolecule: !! Gene Name(s) !! UniProtKB AC !! NCBI - Accession Numbers&lt;br /&gt;
|-&lt;br /&gt;
4G2D || test&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: auto;&amp;quot;&lt;br /&gt;
| Orange&lt;br /&gt;
| Apple&lt;br /&gt;
|-&lt;br /&gt;
| Bread&lt;br /&gt;
| Pie&lt;br /&gt;
|-&lt;br /&gt;
| Butter&lt;br /&gt;
| Ice cream &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
test&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
For Mass-Spec data &amp;lt;br&amp;gt;&lt;br /&gt;
''aKMT Catalyzes Extensive Protein Lysine Methylation in the Hyperthermophilic Archaeon Sulfolobus islandicus but is Dispensable for the Growth of the Organism' &amp;lt;br&amp;gt;&lt;br /&gt;
Chu, Yindi; Zhu, Yanping; Chen, Yuling; Li, Wei; Zhang, Zhenfeng; Liu, Di; Wang, Tongkun; Ma, Juncai; Deng, Haiteng; Liu, Zhi-Jie; Ouyang, SongyingHuang, Li &amp;lt;br&amp;gt;&lt;br /&gt;
''Molecular &amp;amp; Cellular Proteomics'' '''2016''', Vol 15, Issue 9, 2908-2923, DOI: 10.1074/mcp.M115.057778&lt;/div&gt;</summary>
		<author><name>Tlinnet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=AKMT_Lys_pred&amp;diff=14003</id>
		<title>AKMT Lys pred</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=AKMT_Lys_pred&amp;diff=14003"/>
		<updated>2017-06-17T11:31:07Z</updated>

		<summary type="html">&lt;p&gt;Tlinnet: /* PDB structures in Sulfolobus Islandicus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox script-repo&lt;br /&gt;
|type      = script&lt;br /&gt;
|filename  = aKMT_Lys_pred.py&lt;br /&gt;
|author    = [[User:Tlinnet|Troels Schwarz-Linnet]]&lt;br /&gt;
|license   = BSD&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
Chu ''et al.'' has compiled a large information of peptides which are methylated in ''Sulfolobus Islandicus.'' The mass-spec data is available at: http://www.mcponline.org/content/15/9/2908/suppl/DC1 in&lt;br /&gt;
* Supplemental Table S2a revisied (.xlsx, 6.5 MB) - Supplemental Table S2a revisied : mcp.M115.057778-3.xlsx&lt;br /&gt;
* Supplemental Table S2a revisied (.xlsx, 4.8 MB) - Supplemental Table S2a revisied : mcp.M115.057778-4.xlsx&lt;br /&gt;
&lt;br /&gt;
The authors has tried to find correlation with amino acids in 1D, with 7 residues up and downstream to the lysines. The authors also tried to first predict secondary structure in the chain, and then find correlation. &lt;br /&gt;
They made a weblogo figure http://weblogo.threeplusone.com with their findings. &lt;br /&gt;
There seems to be a preference for helical structure and Glutamic acid (E), Isoleucin (I), Leucin (L) and Valine (V) seems to be dominant with 7 residues up/downstream to the methylated lysines.&lt;br /&gt;
&lt;br /&gt;
This script should try to make an analysis this for 3D, with residues up and downstream in angstrom distance to the residue of interest.&lt;br /&gt;
&lt;br /&gt;
== PDB structures in Sulfolobus Islandicus ==&lt;br /&gt;
Following structures was found June 2017&lt;br /&gt;
* www.rcsb.org -&amp;gt; Search advanced&lt;br /&gt;
* Biology -&amp;gt; Source organism -&amp;gt; Sulfolobus organism&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: left;&amp;quot;&lt;br /&gt;
! PDB id !! Info !! Text !! Authors !! Released !! Method !! Residue Count !! Macromolecule: !! Gene Name(s) !! UniProtKB AC !! NCBI - Accession Numbers&lt;br /&gt;
|-&lt;br /&gt;
4G2D || test&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
test&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
For Mass-Spec data &amp;lt;br&amp;gt;&lt;br /&gt;
''aKMT Catalyzes Extensive Protein Lysine Methylation in the Hyperthermophilic Archaeon Sulfolobus islandicus but is Dispensable for the Growth of the Organism' &amp;lt;br&amp;gt;&lt;br /&gt;
Chu, Yindi; Zhu, Yanping; Chen, Yuling; Li, Wei; Zhang, Zhenfeng; Liu, Di; Wang, Tongkun; Ma, Juncai; Deng, Haiteng; Liu, Zhi-Jie; Ouyang, SongyingHuang, Li &amp;lt;br&amp;gt;&lt;br /&gt;
''Molecular &amp;amp; Cellular Proteomics'' '''2016''', Vol 15, Issue 9, 2908-2923, DOI: 10.1074/mcp.M115.057778&lt;/div&gt;</summary>
		<author><name>Tlinnet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=AKMT_Lys_pred&amp;diff=14002</id>
		<title>AKMT Lys pred</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=AKMT_Lys_pred&amp;diff=14002"/>
		<updated>2017-06-17T11:30:29Z</updated>

		<summary type="html">&lt;p&gt;Tlinnet: /* PDB structures in Sulfolobus Islandicus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox script-repo&lt;br /&gt;
|type      = script&lt;br /&gt;
|filename  = aKMT_Lys_pred.py&lt;br /&gt;
|author    = [[User:Tlinnet|Troels Schwarz-Linnet]]&lt;br /&gt;
|license   = BSD&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
Chu ''et al.'' has compiled a large information of peptides which are methylated in ''Sulfolobus Islandicus.'' The mass-spec data is available at: http://www.mcponline.org/content/15/9/2908/suppl/DC1 in&lt;br /&gt;
* Supplemental Table S2a revisied (.xlsx, 6.5 MB) - Supplemental Table S2a revisied : mcp.M115.057778-3.xlsx&lt;br /&gt;
* Supplemental Table S2a revisied (.xlsx, 4.8 MB) - Supplemental Table S2a revisied : mcp.M115.057778-4.xlsx&lt;br /&gt;
&lt;br /&gt;
The authors has tried to find correlation with amino acids in 1D, with 7 residues up and downstream to the lysines. The authors also tried to first predict secondary structure in the chain, and then find correlation. &lt;br /&gt;
They made a weblogo figure http://weblogo.threeplusone.com with their findings. &lt;br /&gt;
There seems to be a preference for helical structure and Glutamic acid (E), Isoleucin (I), Leucin (L) and Valine (V) seems to be dominant with 7 residues up/downstream to the methylated lysines.&lt;br /&gt;
&lt;br /&gt;
This script should try to make an analysis this for 3D, with residues up and downstream in angstrom distance to the residue of interest.&lt;br /&gt;
&lt;br /&gt;
== PDB structures in Sulfolobus Islandicus ==&lt;br /&gt;
Following structures was found June 2017&lt;br /&gt;
* www.rcsb.org -&amp;gt; Search advanced&lt;br /&gt;
* Biology -&amp;gt; Source organism -&amp;gt; Sulfolobus organism&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: left;&amp;quot;&lt;br /&gt;
! PDB id !! Info !! Text !! Authors !! Released !! Method !! Residue Count !! Macromolecule: !! Gene Name(s) !! UniProtKB AC !! NCBI - Accession Numbers&lt;br /&gt;
|-&lt;br /&gt;
4G2D ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
test&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
For Mass-Spec data &amp;lt;br&amp;gt;&lt;br /&gt;
''aKMT Catalyzes Extensive Protein Lysine Methylation in the Hyperthermophilic Archaeon Sulfolobus islandicus but is Dispensable for the Growth of the Organism' &amp;lt;br&amp;gt;&lt;br /&gt;
Chu, Yindi; Zhu, Yanping; Chen, Yuling; Li, Wei; Zhang, Zhenfeng; Liu, Di; Wang, Tongkun; Ma, Juncai; Deng, Haiteng; Liu, Zhi-Jie; Ouyang, SongyingHuang, Li &amp;lt;br&amp;gt;&lt;br /&gt;
''Molecular &amp;amp; Cellular Proteomics'' '''2016''', Vol 15, Issue 9, 2908-2923, DOI: 10.1074/mcp.M115.057778&lt;/div&gt;</summary>
		<author><name>Tlinnet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=AKMT_Lys_pred&amp;diff=14001</id>
		<title>AKMT Lys pred</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=AKMT_Lys_pred&amp;diff=14001"/>
		<updated>2017-06-17T11:29:43Z</updated>

		<summary type="html">&lt;p&gt;Tlinnet: /* PDB structures in Sulfolobus Islandicus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox script-repo&lt;br /&gt;
|type      = script&lt;br /&gt;
|filename  = aKMT_Lys_pred.py&lt;br /&gt;
|author    = [[User:Tlinnet|Troels Schwarz-Linnet]]&lt;br /&gt;
|license   = BSD&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
Chu ''et al.'' has compiled a large information of peptides which are methylated in ''Sulfolobus Islandicus.'' The mass-spec data is available at: http://www.mcponline.org/content/15/9/2908/suppl/DC1 in&lt;br /&gt;
* Supplemental Table S2a revisied (.xlsx, 6.5 MB) - Supplemental Table S2a revisied : mcp.M115.057778-3.xlsx&lt;br /&gt;
* Supplemental Table S2a revisied (.xlsx, 4.8 MB) - Supplemental Table S2a revisied : mcp.M115.057778-4.xlsx&lt;br /&gt;
&lt;br /&gt;
The authors has tried to find correlation with amino acids in 1D, with 7 residues up and downstream to the lysines. The authors also tried to first predict secondary structure in the chain, and then find correlation. &lt;br /&gt;
They made a weblogo figure http://weblogo.threeplusone.com with their findings. &lt;br /&gt;
There seems to be a preference for helical structure and Glutamic acid (E), Isoleucin (I), Leucin (L) and Valine (V) seems to be dominant with 7 residues up/downstream to the methylated lysines.&lt;br /&gt;
&lt;br /&gt;
This script should try to make an analysis this for 3D, with residues up and downstream in angstrom distance to the residue of interest.&lt;br /&gt;
&lt;br /&gt;
== PDB structures in Sulfolobus Islandicus ==&lt;br /&gt;
Following structures was found June 2017&lt;br /&gt;
* www.rcsb.org -&amp;gt; Search advanced&lt;br /&gt;
* Biology -&amp;gt; Source organism -&amp;gt; Sulfolobus organism&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+3D structure info&lt;br /&gt;
|-&lt;br /&gt;
! PDB id !! Info !! Text !! Authors !! Released !! Method !! Residue Count !! Macromolecule: !! Gene Name(s) !! UniProtKB AC !! NCBI - Accession Numbers&lt;br /&gt;
|-&lt;br /&gt;
4G2D ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
test&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
For Mass-Spec data &amp;lt;br&amp;gt;&lt;br /&gt;
''aKMT Catalyzes Extensive Protein Lysine Methylation in the Hyperthermophilic Archaeon Sulfolobus islandicus but is Dispensable for the Growth of the Organism' &amp;lt;br&amp;gt;&lt;br /&gt;
Chu, Yindi; Zhu, Yanping; Chen, Yuling; Li, Wei; Zhang, Zhenfeng; Liu, Di; Wang, Tongkun; Ma, Juncai; Deng, Haiteng; Liu, Zhi-Jie; Ouyang, SongyingHuang, Li &amp;lt;br&amp;gt;&lt;br /&gt;
''Molecular &amp;amp; Cellular Proteomics'' '''2016''', Vol 15, Issue 9, 2908-2923, DOI: 10.1074/mcp.M115.057778&lt;/div&gt;</summary>
		<author><name>Tlinnet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=AKMT_Lys_pred&amp;diff=14000</id>
		<title>AKMT Lys pred</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=AKMT_Lys_pred&amp;diff=14000"/>
		<updated>2017-06-17T11:29:23Z</updated>

		<summary type="html">&lt;p&gt;Tlinnet: /* PDB structures in Sulfolobus Islandicus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox script-repo&lt;br /&gt;
|type      = script&lt;br /&gt;
|filename  = aKMT_Lys_pred.py&lt;br /&gt;
|author    = [[User:Tlinnet|Troels Schwarz-Linnet]]&lt;br /&gt;
|license   = BSD&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
Chu ''et al.'' has compiled a large information of peptides which are methylated in ''Sulfolobus Islandicus.'' The mass-spec data is available at: http://www.mcponline.org/content/15/9/2908/suppl/DC1 in&lt;br /&gt;
* Supplemental Table S2a revisied (.xlsx, 6.5 MB) - Supplemental Table S2a revisied : mcp.M115.057778-3.xlsx&lt;br /&gt;
* Supplemental Table S2a revisied (.xlsx, 4.8 MB) - Supplemental Table S2a revisied : mcp.M115.057778-4.xlsx&lt;br /&gt;
&lt;br /&gt;
The authors has tried to find correlation with amino acids in 1D, with 7 residues up and downstream to the lysines. The authors also tried to first predict secondary structure in the chain, and then find correlation. &lt;br /&gt;
They made a weblogo figure http://weblogo.threeplusone.com with their findings. &lt;br /&gt;
There seems to be a preference for helical structure and Glutamic acid (E), Isoleucin (I), Leucin (L) and Valine (V) seems to be dominant with 7 residues up/downstream to the methylated lysines.&lt;br /&gt;
&lt;br /&gt;
This script should try to make an analysis this for 3D, with residues up and downstream in angstrom distance to the residue of interest.&lt;br /&gt;
&lt;br /&gt;
== PDB structures in Sulfolobus Islandicus ==&lt;br /&gt;
Following structures was found June 2017&lt;br /&gt;
* www.rcsb.org -&amp;gt; Search advanced&lt;br /&gt;
* Biology -&amp;gt; Source organism -&amp;gt; Sulfolobus organism&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+3D structure info&lt;br /&gt;
|-&lt;br /&gt;
! PDB id !! Info !! Text !! Authors !! Released !! Method !! Residue Count !! Macromolecule: !! Gene Name(s) !! UniProtKB AC !! NCBI - Accession Numbers&lt;br /&gt;
|-&lt;br /&gt;
4G2D || Entity 1 containing Chain A || Crystal structure of the hyperthermophilic Sulfolobus islandicus PLL SisLac || Hiblot, J., Gotthard, G., Chabriere, E., Elias, M. || 10/24/2012 || X-ray Diffraction || 315 || Aryldialkylphosphatase || M164_0332 || C4KKZ9 || ADX84410&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
test&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
For Mass-Spec data &amp;lt;br&amp;gt;&lt;br /&gt;
''aKMT Catalyzes Extensive Protein Lysine Methylation in the Hyperthermophilic Archaeon Sulfolobus islandicus but is Dispensable for the Growth of the Organism' &amp;lt;br&amp;gt;&lt;br /&gt;
Chu, Yindi; Zhu, Yanping; Chen, Yuling; Li, Wei; Zhang, Zhenfeng; Liu, Di; Wang, Tongkun; Ma, Juncai; Deng, Haiteng; Liu, Zhi-Jie; Ouyang, SongyingHuang, Li &amp;lt;br&amp;gt;&lt;br /&gt;
''Molecular &amp;amp; Cellular Proteomics'' '''2016''', Vol 15, Issue 9, 2908-2923, DOI: 10.1074/mcp.M115.057778&lt;/div&gt;</summary>
		<author><name>Tlinnet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=AKMT_Lys_pred&amp;diff=13999</id>
		<title>AKMT Lys pred</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=AKMT_Lys_pred&amp;diff=13999"/>
		<updated>2017-06-17T11:27:41Z</updated>

		<summary type="html">&lt;p&gt;Tlinnet: /* PDB structures in Sulfolobus Islandicus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox script-repo&lt;br /&gt;
|type      = script&lt;br /&gt;
|filename  = aKMT_Lys_pred.py&lt;br /&gt;
|author    = [[User:Tlinnet|Troels Schwarz-Linnet]]&lt;br /&gt;
|license   = BSD&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
Chu ''et al.'' has compiled a large information of peptides which are methylated in ''Sulfolobus Islandicus.'' The mass-spec data is available at: http://www.mcponline.org/content/15/9/2908/suppl/DC1 in&lt;br /&gt;
* Supplemental Table S2a revisied (.xlsx, 6.5 MB) - Supplemental Table S2a revisied : mcp.M115.057778-3.xlsx&lt;br /&gt;
* Supplemental Table S2a revisied (.xlsx, 4.8 MB) - Supplemental Table S2a revisied : mcp.M115.057778-4.xlsx&lt;br /&gt;
&lt;br /&gt;
The authors has tried to find correlation with amino acids in 1D, with 7 residues up and downstream to the lysines. The authors also tried to first predict secondary structure in the chain, and then find correlation. &lt;br /&gt;
They made a weblogo figure http://weblogo.threeplusone.com with their findings. &lt;br /&gt;
There seems to be a preference for helical structure and Glutamic acid (E), Isoleucin (I), Leucin (L) and Valine (V) seems to be dominant with 7 residues up/downstream to the methylated lysines.&lt;br /&gt;
&lt;br /&gt;
This script should try to make an analysis this for 3D, with residues up and downstream in angstrom distance to the residue of interest.&lt;br /&gt;
&lt;br /&gt;
== PDB structures in Sulfolobus Islandicus ==&lt;br /&gt;
Following structures was found June 2017&lt;br /&gt;
* www.rcsb.org -&amp;gt; Search advanced&lt;br /&gt;
* Biology -&amp;gt; Source organism -&amp;gt; Sulfolobus organism&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+3D structure info&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| PDB id&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Info&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Text&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Authors&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Released:&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Method:&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Residue Count:&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Macromolecule:&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Gene Name(s)&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| UniProtKB AC&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| NCBI - Accession Numbers&lt;br /&gt;
|-&lt;br /&gt;
4G2D || Entity 1 containing Chain A || Crystal structure of the hyperthermophilic Sulfolobus islandicus PLL SisLac || Hiblot, J., Gotthard, G., Chabriere, E., Elias, M. || 10/24/2012 || X-ray Diffraction || 315 || Aryldialkylphosphatase || M164_0332 || C4KKZ9 || ADX84410&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
test&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
For Mass-Spec data &amp;lt;br&amp;gt;&lt;br /&gt;
''aKMT Catalyzes Extensive Protein Lysine Methylation in the Hyperthermophilic Archaeon Sulfolobus islandicus but is Dispensable for the Growth of the Organism' &amp;lt;br&amp;gt;&lt;br /&gt;
Chu, Yindi; Zhu, Yanping; Chen, Yuling; Li, Wei; Zhang, Zhenfeng; Liu, Di; Wang, Tongkun; Ma, Juncai; Deng, Haiteng; Liu, Zhi-Jie; Ouyang, SongyingHuang, Li &amp;lt;br&amp;gt;&lt;br /&gt;
''Molecular &amp;amp; Cellular Proteomics'' '''2016''', Vol 15, Issue 9, 2908-2923, DOI: 10.1074/mcp.M115.057778&lt;/div&gt;</summary>
		<author><name>Tlinnet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=AKMT_Lys_pred&amp;diff=13998</id>
		<title>AKMT Lys pred</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=AKMT_Lys_pred&amp;diff=13998"/>
		<updated>2017-06-17T11:26:55Z</updated>

		<summary type="html">&lt;p&gt;Tlinnet: /* PDB structures in Sulfolobus Islandicus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox script-repo&lt;br /&gt;
|type      = script&lt;br /&gt;
|filename  = aKMT_Lys_pred.py&lt;br /&gt;
|author    = [[User:Tlinnet|Troels Schwarz-Linnet]]&lt;br /&gt;
|license   = BSD&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
Chu ''et al.'' has compiled a large information of peptides which are methylated in ''Sulfolobus Islandicus.'' The mass-spec data is available at: http://www.mcponline.org/content/15/9/2908/suppl/DC1 in&lt;br /&gt;
* Supplemental Table S2a revisied (.xlsx, 6.5 MB) - Supplemental Table S2a revisied : mcp.M115.057778-3.xlsx&lt;br /&gt;
* Supplemental Table S2a revisied (.xlsx, 4.8 MB) - Supplemental Table S2a revisied : mcp.M115.057778-4.xlsx&lt;br /&gt;
&lt;br /&gt;
The authors has tried to find correlation with amino acids in 1D, with 7 residues up and downstream to the lysines. The authors also tried to first predict secondary structure in the chain, and then find correlation. &lt;br /&gt;
They made a weblogo figure http://weblogo.threeplusone.com with their findings. &lt;br /&gt;
There seems to be a preference for helical structure and Glutamic acid (E), Isoleucin (I), Leucin (L) and Valine (V) seems to be dominant with 7 residues up/downstream to the methylated lysines.&lt;br /&gt;
&lt;br /&gt;
This script should try to make an analysis this for 3D, with residues up and downstream in angstrom distance to the residue of interest.&lt;br /&gt;
&lt;br /&gt;
== PDB structures in Sulfolobus Islandicus ==&lt;br /&gt;
Following structures was found June 2017&lt;br /&gt;
* www.rcsb.org -&amp;gt; Search advanced&lt;br /&gt;
* Biology -&amp;gt; Source organism -&amp;gt; Sulfolobus organism&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+3D structure info&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| PDB id&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Info&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Text&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Authors&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Released:&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Method:&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Residue Count:&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Macromolecule:&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Gene Name(s)&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| UniProtKB AC&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| NCBI - Accession Numbers&lt;br /&gt;
|-&lt;br /&gt;
4G2D &amp;amp;&amp;amp; Entity 1 containing Chain A || Crystal structure of the hyperthermophilic Sulfolobus islandicus PLL SisLac || Hiblot, J., Gotthard, G., Chabriere, E., Elias, M. || 10/24/2012 || X-ray Diffraction || 315 || Aryldialkylphosphatase || M164_0332 || C4KKZ9 || ADX84410&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
test&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
For Mass-Spec data &amp;lt;br&amp;gt;&lt;br /&gt;
''aKMT Catalyzes Extensive Protein Lysine Methylation in the Hyperthermophilic Archaeon Sulfolobus islandicus but is Dispensable for the Growth of the Organism' &amp;lt;br&amp;gt;&lt;br /&gt;
Chu, Yindi; Zhu, Yanping; Chen, Yuling; Li, Wei; Zhang, Zhenfeng; Liu, Di; Wang, Tongkun; Ma, Juncai; Deng, Haiteng; Liu, Zhi-Jie; Ouyang, SongyingHuang, Li &amp;lt;br&amp;gt;&lt;br /&gt;
''Molecular &amp;amp; Cellular Proteomics'' '''2016''', Vol 15, Issue 9, 2908-2923, DOI: 10.1074/mcp.M115.057778&lt;/div&gt;</summary>
		<author><name>Tlinnet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=AKMT_Lys_pred&amp;diff=13997</id>
		<title>AKMT Lys pred</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=AKMT_Lys_pred&amp;diff=13997"/>
		<updated>2017-06-17T11:26:17Z</updated>

		<summary type="html">&lt;p&gt;Tlinnet: /* PDB structures in Sulfolobus Islandicus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox script-repo&lt;br /&gt;
|type      = script&lt;br /&gt;
|filename  = aKMT_Lys_pred.py&lt;br /&gt;
|author    = [[User:Tlinnet|Troels Schwarz-Linnet]]&lt;br /&gt;
|license   = BSD&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
Chu ''et al.'' has compiled a large information of peptides which are methylated in ''Sulfolobus Islandicus.'' The mass-spec data is available at: http://www.mcponline.org/content/15/9/2908/suppl/DC1 in&lt;br /&gt;
* Supplemental Table S2a revisied (.xlsx, 6.5 MB) - Supplemental Table S2a revisied : mcp.M115.057778-3.xlsx&lt;br /&gt;
* Supplemental Table S2a revisied (.xlsx, 4.8 MB) - Supplemental Table S2a revisied : mcp.M115.057778-4.xlsx&lt;br /&gt;
&lt;br /&gt;
The authors has tried to find correlation with amino acids in 1D, with 7 residues up and downstream to the lysines. The authors also tried to first predict secondary structure in the chain, and then find correlation. &lt;br /&gt;
They made a weblogo figure http://weblogo.threeplusone.com with their findings. &lt;br /&gt;
There seems to be a preference for helical structure and Glutamic acid (E), Isoleucin (I), Leucin (L) and Valine (V) seems to be dominant with 7 residues up/downstream to the methylated lysines.&lt;br /&gt;
&lt;br /&gt;
This script should try to make an analysis this for 3D, with residues up and downstream in angstrom distance to the residue of interest.&lt;br /&gt;
&lt;br /&gt;
== PDB structures in Sulfolobus Islandicus ==&lt;br /&gt;
Following structures was found June 2017&lt;br /&gt;
* www.rcsb.org -&amp;gt; Search advanced&lt;br /&gt;
* Biology -&amp;gt; Source organism -&amp;gt; Sulfolobus organism&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+3D structure info&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| PDB id&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Info&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Text&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Authors&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Released:&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Method:&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Residue Count:&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Macromolecule:&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Gene Name(s)&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| UniProtKB AC&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| NCBI - Accession Numbers&lt;br /&gt;
|-&lt;br /&gt;
4G2D || Entity 1 containing Chain A || Crystal structure of the hyperthermophilic Sulfolobus islandicus PLL SisLac || Hiblot, J., Gotthard, G., Chabriere, E., Elias, M. || 10/24/2012 || X-ray Diffraction || 315 || Aryldialkylphosphatase || M164_0332 || C4KKZ9 || ADX84410&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
test&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
For Mass-Spec data &amp;lt;br&amp;gt;&lt;br /&gt;
''aKMT Catalyzes Extensive Protein Lysine Methylation in the Hyperthermophilic Archaeon Sulfolobus islandicus but is Dispensable for the Growth of the Organism' &amp;lt;br&amp;gt;&lt;br /&gt;
Chu, Yindi; Zhu, Yanping; Chen, Yuling; Li, Wei; Zhang, Zhenfeng; Liu, Di; Wang, Tongkun; Ma, Juncai; Deng, Haiteng; Liu, Zhi-Jie; Ouyang, SongyingHuang, Li &amp;lt;br&amp;gt;&lt;br /&gt;
''Molecular &amp;amp; Cellular Proteomics'' '''2016''', Vol 15, Issue 9, 2908-2923, DOI: 10.1074/mcp.M115.057778&lt;/div&gt;</summary>
		<author><name>Tlinnet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=User:Tlinnet&amp;diff=14020</id>
		<title>User:Tlinnet</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=User:Tlinnet&amp;diff=14020"/>
		<updated>2017-06-17T10:45:03Z</updated>

		<summary type="html">&lt;p&gt;Tlinnet: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Author of following PyMOL scripts ==&lt;br /&gt;
[[Propka | PROPKA for PyMOL]] 2015/11/19 42k&amp;lt;br&amp;gt;&lt;br /&gt;
[[DisplacementMap | Displacement map for conformational changes]] 2015/11/19 43k&amp;lt;br&amp;gt;&lt;br /&gt;
[[Forster-distance-calculator | Forster distance calculator]] 2015/11/19 22k &amp;lt;br&amp;gt;&lt;br /&gt;
[[Rotkit | Rotation matrix calculator]] 015/11/19 17k &amp;lt;br&amp;gt;&lt;br /&gt;
[[ColorByDisplacement | Color by displacement]] 2015/11/19 13k &amp;lt;br&amp;gt;&lt;br /&gt;
[[Cyspka | Surface Cysteine pKa predictor]] 2015/11/19 12k &amp;lt;br&amp;gt;&lt;br /&gt;
[[AKMT_Lys_pred | aKMT lysine predictor]] 2017/06/17 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
149 k&lt;br /&gt;
&lt;br /&gt;
== Tutorial ==&lt;br /&gt;
[[Biochemistry_student_intro | Biochemistry student intro]] 2015/11/19 60k&lt;br /&gt;
&lt;br /&gt;
== Test ==&lt;br /&gt;
&amp;lt;nowiki&amp;gt; &amp;lt;include src=&amp;quot;https://raw.github.com/Pymol-Scripts/Pymol-script-repo/master/cyspka.py&amp;quot; /&amp;gt; &amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tlinnet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=User:Tlinnet&amp;diff=14019</id>
		<title>User:Tlinnet</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=User:Tlinnet&amp;diff=14019"/>
		<updated>2017-06-17T10:44:39Z</updated>

		<summary type="html">&lt;p&gt;Tlinnet: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Author of following PyMOL scripts ==&lt;br /&gt;
[[Propka | PROPKA for PyMOL]] 2015/11/19 42k&amp;lt;br&amp;gt;&lt;br /&gt;
[[DisplacementMap | Displacement map for conformational changes]] 2015/11/19 43k&amp;lt;br&amp;gt;&lt;br /&gt;
[[Forster-distance-calculator | Forster distance calculator]] 2015/11/19 22k &amp;lt;br&amp;gt;&lt;br /&gt;
[[Rotkit | Rotation matrix calculator]] 015/11/19 17k &amp;lt;br&amp;gt;&lt;br /&gt;
[[ColorByDisplacement | Color by displacement]] 2015/11/19 13k &amp;lt;br&amp;gt;&lt;br /&gt;
[[Cyspka | Surface Cysteine pKa predictor]] 2015/11/19 12k &amp;lt;br&amp;gt;&lt;br /&gt;
[[AKMT_Lys_pred aKMT lysine predictor]] 2017/06/17 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
149 k&lt;br /&gt;
&lt;br /&gt;
== Tutorial ==&lt;br /&gt;
[[Biochemistry_student_intro | Biochemistry student intro]] 2015/11/19 60k&lt;br /&gt;
&lt;br /&gt;
== Test ==&lt;br /&gt;
&amp;lt;nowiki&amp;gt; &amp;lt;include src=&amp;quot;https://raw.github.com/Pymol-Scripts/Pymol-script-repo/master/cyspka.py&amp;quot; /&amp;gt; &amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tlinnet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=AKMT_Lys_pred&amp;diff=13996</id>
		<title>AKMT Lys pred</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=AKMT_Lys_pred&amp;diff=13996"/>
		<updated>2017-06-17T10:43:53Z</updated>

		<summary type="html">&lt;p&gt;Tlinnet: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox script-repo&lt;br /&gt;
|type      = script&lt;br /&gt;
|filename  = aKMT_Lys_pred.py&lt;br /&gt;
|author    = [[User:Tlinnet|Troels Schwarz-Linnet]]&lt;br /&gt;
|license   = BSD&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
Chu ''et al.'' has compiled a large information of peptides which are methylated in ''Sulfolobus Islandicus.'' The mass-spec data is available at: http://www.mcponline.org/content/15/9/2908/suppl/DC1 in&lt;br /&gt;
* Supplemental Table S2a revisied (.xlsx, 6.5 MB) - Supplemental Table S2a revisied : mcp.M115.057778-3.xlsx&lt;br /&gt;
* Supplemental Table S2a revisied (.xlsx, 4.8 MB) - Supplemental Table S2a revisied : mcp.M115.057778-4.xlsx&lt;br /&gt;
&lt;br /&gt;
The authors has tried to find correlation with amino acids in 1D, with 7 residues up and downstream to the lysines. The authors also tried to first predict secondary structure in the chain, and then find correlation. &lt;br /&gt;
They made a weblogo figure http://weblogo.threeplusone.com with their findings. &lt;br /&gt;
There seems to be a preference for helical structure and Glutamic acid (E), Isoleucin (I), Leucin (L) and Valine (V) seems to be dominant with 7 residues up/downstream to the methylated lysines.&lt;br /&gt;
&lt;br /&gt;
This script should try to make an analysis this for 3D, with residues up and downstream in angstrom distance to the residue of interest.&lt;br /&gt;
&lt;br /&gt;
== PDB structures in Sulfolobus Islandicus ==&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
test&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
For Mass-Spec data &amp;lt;br&amp;gt;&lt;br /&gt;
''aKMT Catalyzes Extensive Protein Lysine Methylation in the Hyperthermophilic Archaeon Sulfolobus islandicus but is Dispensable for the Growth of the Organism' &amp;lt;br&amp;gt;&lt;br /&gt;
Chu, Yindi; Zhu, Yanping; Chen, Yuling; Li, Wei; Zhang, Zhenfeng; Liu, Di; Wang, Tongkun; Ma, Juncai; Deng, Haiteng; Liu, Zhi-Jie; Ouyang, SongyingHuang, Li &amp;lt;br&amp;gt;&lt;br /&gt;
''Molecular &amp;amp; Cellular Proteomics'' '''2016''', Vol 15, Issue 9, 2908-2923, DOI: 10.1074/mcp.M115.057778&lt;/div&gt;</summary>
		<author><name>Tlinnet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=AKMT_Lys_pred&amp;diff=13995</id>
		<title>AKMT Lys pred</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=AKMT_Lys_pred&amp;diff=13995"/>
		<updated>2017-06-17T10:35:05Z</updated>

		<summary type="html">&lt;p&gt;Tlinnet: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox script-repo&lt;br /&gt;
|type      = script&lt;br /&gt;
|filename  = aKMT_Lys_pred.py&lt;br /&gt;
|author    = [[User:Tlinnet|Troels Schwarz-Linnet]]&lt;br /&gt;
|license   = BSD&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
Chu ''et al.'' has compiled a large information of peptides which are methylated in ''Sulfolobus Islandicus.'' The mass-spec data is available at: http://www.mcponline.org/content/15/9/2908/suppl/DC1 in&lt;br /&gt;
* Supplemental Table S2a revisied (.xlsx, 6.5 MB) - Supplemental Table S2a revisied : mcp.M115.057778-3.xlsx&lt;br /&gt;
* Supplemental Table S2a revisied (.xlsx, 4.8 MB) - Supplemental Table S2a revisied : mcp.M115.057778-4.xlsx&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
test&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
For Mass-Spec data &amp;lt;br&amp;gt;&lt;br /&gt;
''aKMT Catalyzes Extensive Protein Lysine Methylation in the Hyperthermophilic Archaeon Sulfolobus islandicus but is Dispensable for the Growth of the Organism' &amp;lt;br&amp;gt;&lt;br /&gt;
Chu, Yindi; Zhu, Yanping; Chen, Yuling; Li, Wei; Zhang, Zhenfeng; Liu, Di; Wang, Tongkun; Ma, Juncai; Deng, Haiteng; Liu, Zhi-Jie; Ouyang, SongyingHuang, Li &amp;lt;br&amp;gt;&lt;br /&gt;
''Molecular &amp;amp; Cellular Proteomics'' '''2016''', Vol 15, Issue 9, 2908-2923, DOI: 10.1074/mcp.M115.057778&lt;/div&gt;</summary>
		<author><name>Tlinnet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=AKMT_Lys_pred&amp;diff=13994</id>
		<title>AKMT Lys pred</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=AKMT_Lys_pred&amp;diff=13994"/>
		<updated>2017-06-17T10:31:56Z</updated>

		<summary type="html">&lt;p&gt;Tlinnet: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox script-repo&lt;br /&gt;
|type      = script&lt;br /&gt;
|filename  = aKMT_Lys_pred.py&lt;br /&gt;
|author    = [[User:Tlinnet|Troels Schwarz-Linnet]]&lt;br /&gt;
|license   = BSD&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
test&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
For Mass-Spec data &amp;lt;br&amp;gt;&lt;br /&gt;
''aKMT Catalyzes Extensive Protein Lysine Methylation in the Hyperthermophilic Archaeon Sulfolobus islandicus but is Dispensable for the Growth of the Organism' &amp;lt;br&amp;gt;&lt;br /&gt;
Chu, Yindi; Zhu, Yanping; Chen, Yuling; Li, Wei; Zhang, Zhenfeng; Liu, Di; Wang, Tongkun; Ma, Juncai; Deng, Haiteng; Liu, Zhi-Jie; Ouyang, SongyingHuang, Li &amp;lt;br&amp;gt;&lt;br /&gt;
''Molecular &amp;amp; Cellular Proteomics'' '''2016''', Vol 15, Issue 9, 2908-2923, DOI: 10.1074/mcp.M115.057778&lt;/div&gt;</summary>
		<author><name>Tlinnet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=AKMT_Lys_pred&amp;diff=13993</id>
		<title>AKMT Lys pred</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=AKMT_Lys_pred&amp;diff=13993"/>
		<updated>2017-06-17T10:31:38Z</updated>

		<summary type="html">&lt;p&gt;Tlinnet: Created page with &amp;quot;{{Infobox script-repo |type      = script |filename  = aKMT_Lys_pred.py |author    = Troels Schwarz-Linnet |license   = BSD }}  == Overview ==  == Example ==...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox script-repo&lt;br /&gt;
|type      = script&lt;br /&gt;
|filename  = aKMT_Lys_pred.py&lt;br /&gt;
|author    = [[User:Tlinnet|Troels Schwarz-Linnet]]&lt;br /&gt;
|license   = BSD&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
test&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
For EPR considerations &amp;lt;br&amp;gt;&lt;br /&gt;
''aKMT Catalyzes Extensive Protein Lysine Methylation in the Hyperthermophilic Archaeon Sulfolobus islandicus but is Dispensable for the Growth of the Organism' &amp;lt;br&amp;gt;&lt;br /&gt;
Chu, Yindi; Zhu, Yanping; Chen, Yuling; Li, Wei; Zhang, Zhenfeng; Liu, Di; Wang, Tongkun; Ma, Juncai; Deng, Haiteng; Liu, Zhi-Jie; Ouyang, SongyingHuang, Li &amp;lt;br&amp;gt;&lt;br /&gt;
''Molecular &amp;amp; Cellular Proteomics'' '''2016''', Vol 15, Issue 9, 2908-2923, DOI: 10.1074/mcp.M115.057778&lt;/div&gt;</summary>
		<author><name>Tlinnet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Plane_Wizard&amp;diff=13787</id>
		<title>Plane Wizard</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Plane_Wizard&amp;diff=13787"/>
		<updated>2016-12-26T23:27:06Z</updated>

		<summary type="html">&lt;p&gt;Tlinnet: /* Examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
This wizard has a simple purpose - to draw a cgo plane that passes through three points picked by the user. Most of the wizard itself was copied from the measure wizard.&lt;br /&gt;
&lt;br /&gt;
To use, put it in the same directory as the other wizards. This is not quality code, and there may be bugs, but it seems to work okay.&lt;br /&gt;
&lt;br /&gt;
== Original ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import pymol&lt;br /&gt;
from pymol import cmd&lt;br /&gt;
from pymol.wizard import Wizard&lt;br /&gt;
from chempy import cpv&lt;br /&gt;
from pymol.cgo import *&lt;br /&gt;
&lt;br /&gt;
def makePrimitive(cgo, name):&lt;br /&gt;
    az = cmd.get('auto_zoom', quiet=1)&lt;br /&gt;
    cmd.set('auto_zoom', 0, quiet=1)&lt;br /&gt;
    cmd.load_cgo(cgo, name)&lt;br /&gt;
    cmd.set('auto_zoom', az, quiet=1)&lt;br /&gt;
&lt;br /&gt;
def point(p):&lt;br /&gt;
    x, y, z = p&lt;br /&gt;
    return [COLOR, 1, 1, 1, SPHERE, float(x), float(y), float(z), 0.5]&lt;br /&gt;
&lt;br /&gt;
def line(p1, p2):&lt;br /&gt;
    x1, y1, z1 = p1&lt;br /&gt;
    x2, y2, z2 = p2&lt;br /&gt;
    return [CYLINDER, float(x1), float(y1), float(z1), float(x2), float(y2), float(z2), 0.25, 1, 1, 1, 1, 1, 1]&lt;br /&gt;
&lt;br /&gt;
def plane(corner1, corner2, corner3, corner4, normal):&lt;br /&gt;
    planeObj = []&lt;br /&gt;
    planeObj.extend(point(corner1))&lt;br /&gt;
    planeObj.extend(point(corner2))&lt;br /&gt;
    planeObj.extend(point(corner3))&lt;br /&gt;
    planeObj.extend(point(corner4))&lt;br /&gt;
    planeObj.extend(line(corner1, corner2))&lt;br /&gt;
    planeObj.extend(line(corner2, corner3))&lt;br /&gt;
    planeObj.extend(line(corner3, corner4))&lt;br /&gt;
    planeObj.extend(line(corner4, corner1))&lt;br /&gt;
&lt;br /&gt;
    planeObj.extend([COLOR, 0.8, 0.8, 0.8])&lt;br /&gt;
    planeObj.extend([BEGIN, TRIANGLE_STRIP])&lt;br /&gt;
    planeObj.append(NORMAL)&lt;br /&gt;
    planeObj.extend(normal)&lt;br /&gt;
    for corner in [corner1, corner2, corner3, corner4, corner1]:&lt;br /&gt;
        planeObj.append(VERTEX)&lt;br /&gt;
        planeObj.extend(corner)&lt;br /&gt;
    planeObj.append(END)&lt;br /&gt;
    return planeObj&lt;br /&gt;
&lt;br /&gt;
def planeFromPoints(point1, point2, point3, facetSize):&lt;br /&gt;
    v1 = cpv.normalize(cpv.sub(point2, point1))&lt;br /&gt;
    v2 = cpv.normalize(cpv.sub(point3, point1))&lt;br /&gt;
    normal = cpv.cross_product(v1, v2)&lt;br /&gt;
    v2 = cpv.cross_product(normal, v1)&lt;br /&gt;
    x = cpv.scale(v1, facetSize)&lt;br /&gt;
    y = cpv.scale(v2, facetSize)&lt;br /&gt;
    center = point2&lt;br /&gt;
    corner1 = cpv.add(cpv.add(center, x), y)&lt;br /&gt;
    corner2 = cpv.sub(cpv.add(center, x), y)&lt;br /&gt;
    corner3 = cpv.sub(cpv.sub(center, x), y)&lt;br /&gt;
    corner4 = cpv.add(cpv.sub(center, x), y)&lt;br /&gt;
    return plane(corner1, corner2, corner3, corner4, normal)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class PlaneWizard(Wizard):&lt;br /&gt;
&lt;br /&gt;
    def __init__(self):&lt;br /&gt;
        Wizard.__init__(self)&lt;br /&gt;
&lt;br /&gt;
        # some attributes to do with picking&lt;br /&gt;
        self.pick_count = 0&lt;br /&gt;
        self.object_count = 0&lt;br /&gt;
        self.object_prefix = &amp;quot;pw&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        # the plane facet size (the 'radius' of the section of plane we show)&lt;br /&gt;
        self.facetSize = 5&lt;br /&gt;
&lt;br /&gt;
        self.selection_mode = cmd.get_setting_legacy(&amp;quot;mouse_selection_mode&amp;quot;)&lt;br /&gt;
        cmd.set(&amp;quot;mouse_selection_mode&amp;quot;,0) # set selection mode to atomic&lt;br /&gt;
        cmd.deselect()&lt;br /&gt;
&lt;br /&gt;
    def reset(self):&lt;br /&gt;
        cmd.delete(self.object_prefix + &amp;quot;*&amp;quot;)&lt;br /&gt;
        cmd.delete(&amp;quot;sele*&amp;quot;)&lt;br /&gt;
        cmd.delete(&amp;quot;_indicate*&amp;quot;)&lt;br /&gt;
        cmd.unpick()&lt;br /&gt;
        cmd.refresh_wizard()&lt;br /&gt;
&lt;br /&gt;
    def delete_all(self):&lt;br /&gt;
        cmd.delete(&amp;quot;plane*&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    def cleanup(self):&lt;br /&gt;
        cmd.set(&amp;quot;mouse_selection_mode&amp;quot;,self.selection_mode) # restore selection mode&lt;br /&gt;
        self.reset()&lt;br /&gt;
        self.delete_all()&lt;br /&gt;
&lt;br /&gt;
    def get_prompt(self):&lt;br /&gt;
        self.prompt = None&lt;br /&gt;
        if self.pick_count == 0:&lt;br /&gt;
            self.prompt = [ 'Please click on the first atom...']&lt;br /&gt;
        elif self.pick_count == 1:&lt;br /&gt;
            self.prompt = [ 'Please click on the second atom...' ]&lt;br /&gt;
        elif self.pick_count == 2:&lt;br /&gt;
            self.prompt = [ 'Please click on the third atom...' ]&lt;br /&gt;
        return self.prompt&lt;br /&gt;
&lt;br /&gt;
    def do_select(self, name):&lt;br /&gt;
        # &amp;quot;edit&amp;quot; only this atom, and not others with the object prefix&lt;br /&gt;
        try:&lt;br /&gt;
            cmd.edit(&amp;quot;%s and not %s*&amp;quot; % (name, self.object_prefix))&lt;br /&gt;
            self.do_pick(0)&lt;br /&gt;
        except pymol.CmdException, pmce:&lt;br /&gt;
            print pmce&lt;br /&gt;
&lt;br /&gt;
    def pickNextAtom(self, atom_name):&lt;br /&gt;
        # transfer the click selection to a named selection&lt;br /&gt;
        cmd.select(atom_name, &amp;quot;(pk1)&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        # delete the click selection&lt;br /&gt;
        cmd.unpick()&lt;br /&gt;
&lt;br /&gt;
        # using the magic of indicate, highlight stuff&lt;br /&gt;
        indicate_selection = &amp;quot;_indicate&amp;quot; + self.object_prefix&lt;br /&gt;
        cmd.select(indicate_selection, atom_name)&lt;br /&gt;
        cmd.enable(indicate_selection)&lt;br /&gt;
&lt;br /&gt;
        self.pick_count += 1&lt;br /&gt;
        self.error = None&lt;br /&gt;
&lt;br /&gt;
        # necessary to force update of the prompt&lt;br /&gt;
        cmd.refresh_wizard()&lt;br /&gt;
&lt;br /&gt;
    def do_pick(self, picked_bond):&lt;br /&gt;
&lt;br /&gt;
        # this shouldn't actually happen if going through the &amp;quot;do_select&amp;quot;&lt;br /&gt;
        if picked_bond:&lt;br /&gt;
            self.error = &amp;quot;Error: please select bonds, not atoms&amp;quot;&lt;br /&gt;
            print self.error&lt;br /&gt;
            return&lt;br /&gt;
&lt;br /&gt;
        atom_name = self.object_prefix + str(self.pick_count)&lt;br /&gt;
        if self.pick_count &amp;lt; 2:&lt;br /&gt;
            self.pickNextAtom(atom_name)&lt;br /&gt;
        else:&lt;br /&gt;
            self.pickNextAtom(atom_name)&lt;br /&gt;
&lt;br /&gt;
            point1 = cmd.get_atom_coords(&amp;quot;(%s%s)&amp;quot; % (self.object_prefix, &amp;quot;0&amp;quot;))&lt;br /&gt;
            point2 = cmd.get_atom_coords(&amp;quot;(%s%s)&amp;quot; % (self.object_prefix, &amp;quot;1&amp;quot;))&lt;br /&gt;
            point3 = cmd.get_atom_coords(&amp;quot;(%s%s)&amp;quot; % (self.object_prefix, &amp;quot;2&amp;quot;))&lt;br /&gt;
            plane = planeFromPoints(point1, point2, point3, self.facetSize)&lt;br /&gt;
&lt;br /&gt;
            planeName = &amp;quot;plane-%02d&amp;quot; % self.object_count&lt;br /&gt;
            self.object_count += 1&lt;br /&gt;
            makePrimitive(plane, planeName)&lt;br /&gt;
            cmd.show(&amp;quot;cgo&amp;quot;, &amp;quot;plane*&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
            self.pick_count = 0&lt;br /&gt;
            self.reset()&lt;br /&gt;
&lt;br /&gt;
    def get_panel(self):&lt;br /&gt;
        return [&lt;br /&gt;
            [ 1, 'Plane Wizard',''],&lt;br /&gt;
            [ 2, 'Reset','cmd.get_wizard().reset()'],&lt;br /&gt;
            [ 2, 'Delete All Planes' , 'cmd.get_wizard().delete_all()'],&lt;br /&gt;
            [ 2, 'Done','cmd.set_wizard()'],&lt;br /&gt;
        ]&lt;br /&gt;
&lt;br /&gt;
# create an instance&lt;br /&gt;
&lt;br /&gt;
wiz = PlaneWizard()&lt;br /&gt;
&lt;br /&gt;
# make this the active wizard&lt;br /&gt;
&lt;br /&gt;
cmd.set_wizard(wiz)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Modification==&lt;br /&gt;
Small modifications to the same code as above.&lt;br /&gt;
&lt;br /&gt;
=== Gallery ===&lt;br /&gt;
&amp;lt;gallery heights=&amp;quot;240px&amp;quot; widths=&amp;quot;340px&amp;quot;&amp;gt;&lt;br /&gt;
Image:Plane_img1.png | Drawing a plane in a protein&lt;br /&gt;
Image:Plane_img2.png | Drawing 6 planes in a box&lt;br /&gt;
Image:Plane_img3.png | Drawing 6 planes in a box&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== plane.py===&lt;br /&gt;
Make a '''plane.py''' file in the same directory where you are working&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
'''&lt;br /&gt;
Described at PyMOL wiki:&lt;br /&gt;
https://pymolwiki.org/index.php/Plane_Wizard&lt;br /&gt;
&lt;br /&gt;
Authors : Troels Schwarz-Linnet&lt;br /&gt;
Date    : Dec 2016&lt;br /&gt;
Modified: From previous contributors. &lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
import pymol&lt;br /&gt;
from pymol import cmd&lt;br /&gt;
from pymol.wizard import Wizard&lt;br /&gt;
from chempy import cpv&lt;br /&gt;
from pymol.cgo import COLOR, SPHERE, CYLINDER, BEGIN, TRIANGLE_STRIP, NORMAL, VERTEX, END, ALPHA&lt;br /&gt;
&lt;br /&gt;
def makePrimitive(cgo, name):&lt;br /&gt;
    az = cmd.get('auto_zoom', quiet=1)&lt;br /&gt;
    cmd.set('auto_zoom', 0, quiet=1)&lt;br /&gt;
    cmd.load_cgo(cgo, name)&lt;br /&gt;
    cmd.set('auto_zoom', az, quiet=1)&lt;br /&gt;
&lt;br /&gt;
def point(p):&lt;br /&gt;
    x, y, z = p&lt;br /&gt;
    return [COLOR, 1, 1, 1, SPHERE, float(x), float(y), float(z), 0.5]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def line(p1, p2):&lt;br /&gt;
    x1, y1, z1 = p1&lt;br /&gt;
    x2, y2, z2 = p2&lt;br /&gt;
    return [CYLINDER, float(x1), float(y1), float(z1), float(x2), float(y2), float(z2), 0.25, 1, 1, 1, 1, 1, 1]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def plane(corner1, corner2, corner3, corner4, normal, settings):&lt;br /&gt;
    planeObj = []&lt;br /&gt;
    planeObj.extend(point(corner1))&lt;br /&gt;
    planeObj.extend(point(corner2))&lt;br /&gt;
    planeObj.extend(point(corner3))&lt;br /&gt;
    planeObj.extend(point(corner4))&lt;br /&gt;
    planeObj.extend(line(corner1, corner2))&lt;br /&gt;
    planeObj.extend(line(corner2, corner3))&lt;br /&gt;
    planeObj.extend(line(corner3, corner4))&lt;br /&gt;
    planeObj.extend(line(corner4, corner1))&lt;br /&gt;
&lt;br /&gt;
    # Make settings&lt;br /&gt;
    if 'ALPHA' in settings:&lt;br /&gt;
        planeObj.extend([ALPHA, settings['ALPHA']])&lt;br /&gt;
&lt;br /&gt;
    if 'COLOR' in settings:&lt;br /&gt;
        planeObj.extend([COLOR, settings['COLOR'][0], settings['COLOR'][1], settings['COLOR'][2]])&lt;br /&gt;
    else:&lt;br /&gt;
        planeObj.extend([COLOR, 0.8, 0.8, 0.8]) # greyish&lt;br /&gt;
&lt;br /&gt;
    planeObj.extend([BEGIN, TRIANGLE_STRIP])&lt;br /&gt;
    planeObj.append(NORMAL)&lt;br /&gt;
&lt;br /&gt;
    if 'INVERT' in settings:&lt;br /&gt;
        if settings['INVERT']==True:&lt;br /&gt;
            planeObj.extend(cpv.negate(normal))&lt;br /&gt;
        else:&lt;br /&gt;
            planeObj.extend(normal)&lt;br /&gt;
    else:&lt;br /&gt;
        planeObj.extend(normal)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    for corner in [corner1, corner2, corner3, corner4, corner1]:&lt;br /&gt;
        planeObj.append(VERTEX)&lt;br /&gt;
        planeObj.extend(corner)&lt;br /&gt;
    planeObj.append(END)&lt;br /&gt;
    return planeObj&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def planeFromPoints(p1, p2, p3, vm1=None, vm2=None, center=True, settings={}):&lt;br /&gt;
    v1 = cpv.sub(p1, p2)&lt;br /&gt;
    v2 = cpv.sub(p3, p2)&lt;br /&gt;
    normal = cpv.cross_product(v1, v2)&lt;br /&gt;
&lt;br /&gt;
    if 'translate' in settings:&lt;br /&gt;
        vtran = cpv.scale(cpv.normalize(normal), settings['translate'])&lt;br /&gt;
        p1_t = cpv.sub(p1, vtran)&lt;br /&gt;
        p2_t = cpv.sub(p2, vtran)&lt;br /&gt;
        p3_t = cpv.sub(p3, vtran)&lt;br /&gt;
        print(&amp;quot;New coordinates are:&amp;quot;)&lt;br /&gt;
        print_info(&amp;quot;New&amp;quot;, p1_t, p2_t, p3_t)&lt;br /&gt;
        print(&amp;quot;New coordinates are for normalized plane:&amp;quot;)&lt;br /&gt;
        v1_t = cpv.normalize(cpv.sub(p1_t, p2_t))&lt;br /&gt;
        v2_t = cpv.normalize(cpv.sub(p3_t, p2_t))&lt;br /&gt;
        normal_t = cpv.normalize(cpv.cross_product(v1_t, v2_t))&lt;br /&gt;
        v2_t = cpv.normalize(cpv.cross_product(normal_t, v1_t))&lt;br /&gt;
        p1_t2 = cpv.add(v1_t, p2_t)&lt;br /&gt;
        p3_t2 = cpv.add(v2_t, p2_t)&lt;br /&gt;
        print_info(&amp;quot;Newnormal&amp;quot;, p1_t2, p2_t, p3_t2)&lt;br /&gt;
&lt;br /&gt;
    if vm1!=None:&lt;br /&gt;
        v1 = cpv.scale(cpv.normalize(v1), vm1)&lt;br /&gt;
    if vm2!=None:&lt;br /&gt;
        v2 = cpv.scale(cpv.normalize(v2), vm2)&lt;br /&gt;
&lt;br /&gt;
    centrum = p2&lt;br /&gt;
    if center:&lt;br /&gt;
        corner1 = cpv.add(cpv.add(centrum, v1), v2)&lt;br /&gt;
        corner2 = cpv.sub(cpv.add(centrum, v1), v2)&lt;br /&gt;
        corner3 = cpv.sub(cpv.sub(centrum, v1), v2)&lt;br /&gt;
        corner4 = cpv.add(cpv.sub(centrum, v1), v2)&lt;br /&gt;
    else:&lt;br /&gt;
        corner1 = cpv.add(cpv.add(centrum, v1), v2)&lt;br /&gt;
        corner2 = cpv.add(centrum, v1)&lt;br /&gt;
        corner3 = centrum&lt;br /&gt;
        corner4 = cpv.add(centrum, v2)&lt;br /&gt;
&lt;br /&gt;
    return plane(corner1, corner2, corner3, corner4, normal, settings)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def print_info(name, coor1, coor2, coor3):&lt;br /&gt;
    cs1 = (map(float, [ '%.2f' % elem for elem in coor1 ]) )&lt;br /&gt;
    cs2 = (map(float, [ '%.2f' % elem for elem in coor2 ]) )&lt;br /&gt;
    cs3 = (map(float, [ '%.2f' % elem for elem in coor3 ]) )&lt;br /&gt;
    print(&amp;quot;You can also use the function calls with these coordinates&amp;quot;)&lt;br /&gt;
    print(&amp;quot;plane.make_plane_points(name='%s', l1=%s, l2=%s, l3=%s)&amp;quot;%(name, cs1, cs2, cs3))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def make_plane(name,a1='(pk1)',a2='(pk2)',a3='(pk3)', vm1=None, vm2=None, center=True, makepseudo=True, settings={}):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    DESCRIPTION&lt;br /&gt;
    Create a CGO plane from three atomic coordinates&lt;br /&gt;
&lt;br /&gt;
    USAGE&lt;br /&gt;
    make_plane name, a1, a2, a3&lt;br /&gt;
&lt;br /&gt;
    where each atom is a standard PyMOL selection (defaults to pk1,pk2 and pk3)&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    # get coordinates from atom selections&lt;br /&gt;
    coor1 = cmd.get_model(a1).get_coord_list()[0]&lt;br /&gt;
    coor2 = cmd.get_model(a2).get_coord_list()[0]&lt;br /&gt;
    coor3 = cmd.get_model(a3).get_coord_list()[0]&lt;br /&gt;
&lt;br /&gt;
    # Help with alternative&lt;br /&gt;
    print_info(name, coor1, coor2, coor3)&lt;br /&gt;
&lt;br /&gt;
    # Get the plane&lt;br /&gt;
    plane = planeFromPoints(p1=coor1, p2=coor2, p3=coor3, vm1=vm1, vm2=vm2, center=center, settings=settings)&lt;br /&gt;
    makePrimitive(plane, name)&lt;br /&gt;
    #cmd.show(&amp;quot;cgo&amp;quot;, &amp;quot;plane*&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    if makepseudo:&lt;br /&gt;
        cmd.pseudoatom(&amp;quot;%s_%s&amp;quot;%(name, &amp;quot;l1&amp;quot;), color=&amp;quot;tv_blue&amp;quot;, pos=coor1)&lt;br /&gt;
        cmd.pseudoatom(&amp;quot;%s_%s&amp;quot;%(name, &amp;quot;l2&amp;quot;), color=&amp;quot;tv_green&amp;quot;, pos=coor2)&lt;br /&gt;
        cmd.pseudoatom(&amp;quot;%s_%s&amp;quot;%(name, &amp;quot;l3&amp;quot;), color=&amp;quot;red&amp;quot;, pos=coor3)&lt;br /&gt;
&lt;br /&gt;
# Extend function to be called inside pymol&lt;br /&gt;
cmd.extend(&amp;quot;make_plane&amp;quot;, make_plane)&lt;br /&gt;
&lt;br /&gt;
def make_plane_points(name,l1=None,l2=None,l3=None, vm1=None, vm2=None, center=True, makepseudo=True, settings={}):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    DESCRIPTION&lt;br /&gt;
    Create a CGO plane from three atomic coordinates&lt;br /&gt;
&lt;br /&gt;
    USAGE&lt;br /&gt;
    make_plane name, l1, l2, l3&lt;br /&gt;
&lt;br /&gt;
    where each xys is a list with floats of x,y,z coordinates&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    if l1==None or l2==None or l3==None:&lt;br /&gt;
        print(&amp;quot;Please provide a list of xyz floats for each 3 positions&amp;quot;)&lt;br /&gt;
        return&lt;br /&gt;
    if type(l1) is not list or type(l2) is not list or type(l3) is not list:&lt;br /&gt;
        print(type(l1),type(l2),type(l3))&lt;br /&gt;
        print(&amp;quot;Please provide 3 list of xyz floats for each 3 positions&amp;quot;)&lt;br /&gt;
        return&lt;br /&gt;
&lt;br /&gt;
    plane = planeFromPoints(p1=l1, p2=l2, p3=l3, vm1=vm1, vm2=vm2, center=center, settings=settings)&lt;br /&gt;
    makePrimitive(plane, name)&lt;br /&gt;
&lt;br /&gt;
    if makepseudo:&lt;br /&gt;
        cmd.pseudoatom(&amp;quot;%s_%s&amp;quot;%(name, &amp;quot;l1&amp;quot;), color=&amp;quot;tv_blue&amp;quot;, pos=l1)&lt;br /&gt;
        cmd.pseudoatom(&amp;quot;%s_%s&amp;quot;%(name, &amp;quot;l2&amp;quot;), color=&amp;quot;tv_green&amp;quot;, pos=l2)&lt;br /&gt;
        cmd.pseudoatom(&amp;quot;%s_%s&amp;quot;%(name, &amp;quot;l3&amp;quot;), color=&amp;quot;red&amp;quot;, pos=l3)&lt;br /&gt;
&lt;br /&gt;
# Extend function to be called inside pymol&lt;br /&gt;
cmd.extend(&amp;quot;make_plane_points&amp;quot;, make_plane_points)&lt;br /&gt;
&lt;br /&gt;
class PlaneWizard(Wizard):&lt;br /&gt;
    def __init__(self):&lt;br /&gt;
        Wizard.__init__(self)&lt;br /&gt;
&lt;br /&gt;
        # some attributes to do with picking&lt;br /&gt;
        self.pick_count = 0&lt;br /&gt;
        self.object_count = 0&lt;br /&gt;
        self.object_prefix = &amp;quot;pw&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        self.selection_mode = cmd.get_setting_legacy(&amp;quot;mouse_selection_mode&amp;quot;)&lt;br /&gt;
        cmd.set(&amp;quot;mouse_selection_mode&amp;quot;,0) # set selection mode to atomic&lt;br /&gt;
        cmd.deselect()&lt;br /&gt;
&lt;br /&gt;
    def reset(self):&lt;br /&gt;
        cmd.delete(self.object_prefix + &amp;quot;*&amp;quot;)&lt;br /&gt;
        cmd.delete(&amp;quot;sele*&amp;quot;)&lt;br /&gt;
        cmd.delete(&amp;quot;_indicate*&amp;quot;)&lt;br /&gt;
        cmd.unpick()&lt;br /&gt;
        cmd.refresh_wizard()&lt;br /&gt;
&lt;br /&gt;
    def delete_all(self):&lt;br /&gt;
        cmd.delete(&amp;quot;plane*&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    def cleanup(self):&lt;br /&gt;
        cmd.set(&amp;quot;mouse_selection_mode&amp;quot;,self.selection_mode) # restore selection mode&lt;br /&gt;
        self.reset()&lt;br /&gt;
        self.delete_all()&lt;br /&gt;
&lt;br /&gt;
    def get_prompt(self):&lt;br /&gt;
        self.prompt = None&lt;br /&gt;
        if self.pick_count == 0:&lt;br /&gt;
            self.prompt = [ 'Please click on the first atom...']&lt;br /&gt;
        elif self.pick_count == 1:&lt;br /&gt;
            self.prompt = [ 'Please click on the second atom...' ]&lt;br /&gt;
        elif self.pick_count == 2:&lt;br /&gt;
            self.prompt = [ 'Please click on the third atom...' ]&lt;br /&gt;
        return self.prompt&lt;br /&gt;
&lt;br /&gt;
    def do_select(self, name):&lt;br /&gt;
        # &amp;quot;edit&amp;quot; only this atom, and not others with the object prefix&lt;br /&gt;
        try:&lt;br /&gt;
            cmd.edit(&amp;quot;%s and not %s*&amp;quot; % (name, self.object_prefix))&lt;br /&gt;
            self.do_pick(0)&lt;br /&gt;
        except pymol.CmdException, pmce:&lt;br /&gt;
            print pmce&lt;br /&gt;
&lt;br /&gt;
    def pickNextAtom(self, atom_name):&lt;br /&gt;
        # transfer the click selection to a named selection&lt;br /&gt;
        cmd.select(atom_name, &amp;quot;(pk1)&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        # delete the click selection&lt;br /&gt;
        cmd.unpick()&lt;br /&gt;
&lt;br /&gt;
        # using the magic of indicate, highlight stuff&lt;br /&gt;
        indicate_selection = &amp;quot;_indicate&amp;quot; + self.object_prefix&lt;br /&gt;
        cmd.select(indicate_selection, atom_name)&lt;br /&gt;
        cmd.enable(indicate_selection)&lt;br /&gt;
&lt;br /&gt;
        self.pick_count += 1&lt;br /&gt;
        self.error = None&lt;br /&gt;
&lt;br /&gt;
        # necessary to force update of the prompt&lt;br /&gt;
        cmd.refresh_wizard()&lt;br /&gt;
&lt;br /&gt;
    def do_pick(self, picked_bond):&lt;br /&gt;
&lt;br /&gt;
        # this shouldn't actually happen if going through the &amp;quot;do_select&amp;quot;&lt;br /&gt;
        if picked_bond:&lt;br /&gt;
            self.error = &amp;quot;Error: please select bonds, not atoms&amp;quot;&lt;br /&gt;
            print self.error&lt;br /&gt;
            return&lt;br /&gt;
&lt;br /&gt;
        atom_name = self.object_prefix + str(self.pick_count)&lt;br /&gt;
        if self.pick_count &amp;lt; 2:&lt;br /&gt;
            self.pickNextAtom(atom_name)&lt;br /&gt;
        else:&lt;br /&gt;
            self.pickNextAtom(atom_name)&lt;br /&gt;
&lt;br /&gt;
            point1 = cmd.get_atom_coords(&amp;quot;(%s%s)&amp;quot; % (self.object_prefix, &amp;quot;0&amp;quot;))&lt;br /&gt;
            point2 = cmd.get_atom_coords(&amp;quot;(%s%s)&amp;quot; % (self.object_prefix, &amp;quot;1&amp;quot;))&lt;br /&gt;
            point3 = cmd.get_atom_coords(&amp;quot;(%s%s)&amp;quot; % (self.object_prefix, &amp;quot;2&amp;quot;))&lt;br /&gt;
            plane = planeFromPoints(point1, point2, point3)&lt;br /&gt;
&lt;br /&gt;
            planeName = &amp;quot;plane-%02d&amp;quot; % self.object_count&lt;br /&gt;
&lt;br /&gt;
            print_info(planeName, point1, point2, point3)&lt;br /&gt;
&lt;br /&gt;
            self.object_count += 1&lt;br /&gt;
            makePrimitive(plane, planeName)&lt;br /&gt;
            cmd.show(&amp;quot;cgo&amp;quot;, &amp;quot;plane*&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
            self.pick_count = 0&lt;br /&gt;
            self.reset()&lt;br /&gt;
&lt;br /&gt;
    def get_panel(self):&lt;br /&gt;
        return [&lt;br /&gt;
            [ 1, 'Plane Wizard',''],&lt;br /&gt;
            [ 2, 'Reset','cmd.get_wizard().reset()'],&lt;br /&gt;
            [ 2, 'Delete All Planes' , 'cmd.get_wizard().delete_all()'],&lt;br /&gt;
            [ 2, 'Done','cmd.set_wizard()'],&lt;br /&gt;
        ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
Plane in a protein&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
reinitialize&lt;br /&gt;
&lt;br /&gt;
fetch 1ubq, async=0&lt;br /&gt;
show_as cartoon, all &lt;br /&gt;
&lt;br /&gt;
import plane&lt;br /&gt;
# Start the wizard, and do manual picking&lt;br /&gt;
cmd.set_wizard(plane.PlaneWizard())&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or by selection&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
reinitialize&lt;br /&gt;
&lt;br /&gt;
fetch 1ubq, async=0&lt;br /&gt;
show_as cartoon, all &lt;br /&gt;
&lt;br /&gt;
import plane&lt;br /&gt;
&lt;br /&gt;
# Set alpha level and color&lt;br /&gt;
#violetpurple: 0.55, 0.25, 0.60 #yellow: 1.0, 1.0, 0.0, #blue: 0.0, 0.0, 1.0 #orange: 1.0, 0.5, 0.0 #forest: 0.2, 0.6, 0.2 #red: 1.0, 0.0, 0.0&lt;br /&gt;
dict = {'ALPHA':0.6, 'COLOR':[0.55, 0.25, 0.60], 'INVERT':True}&lt;br /&gt;
plane.make_plane(name='test', a1='/1ubq//A/24/CA', a2='/1ubq//A/29/CA', a3='/1ubq//A/40/CA', center=False, settings=dict)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or by atom coordinates&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
reinitialize&lt;br /&gt;
&lt;br /&gt;
fetch 1ubq, async=0&lt;br /&gt;
show_as cartoon, all &lt;br /&gt;
&lt;br /&gt;
import plane&lt;br /&gt;
&lt;br /&gt;
# Or  make from atom coordinates&lt;br /&gt;
#plane.make_plane_points(name='test', l1=[35.03, 21.72, 17.07], l2=[37.47, 27.39, 10.67], l3=[37.74, 31.64, 23.71])&lt;br /&gt;
&lt;br /&gt;
# Define plane, 10 angstrom in length&lt;br /&gt;
#plane.make_plane_points(name='p1', l1=[0.0, 10.0, 0.0], l2=[0.0, 0.0, 0.0], l3=[0.0, 0.0, 10.0], center=False, makepseudo=False)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or make a color cube&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
reinitialize&lt;br /&gt;
#violetpurple: 0.55, 0.25, 0.60 #yellow: 1.0, 1.0, 0.0, #blue: 0.0, 0.0, 1.0 #orange: 1.0, 0.5, 0.0 #forest: 0.2, 0.6, 0.2 #red: 1.0, 0.0, 0.0&lt;br /&gt;
&lt;br /&gt;
# YZ Plane, #purple&lt;br /&gt;
dict = {'ALPHA':0.4, 'COLOR':[0.55, 0.25, 0.60], 'INVERT':True}&lt;br /&gt;
plane.make_plane_points(name='p1', l1=[0.0, 10.0, 0.0], l2=[0.0, 0.0, 0.0], l3=[0.0, 0.0, 10.0], center=False, makepseudo=False, settings=dict)&lt;br /&gt;
# YZ Plane, shifted in X, #yellow&lt;br /&gt;
dict = {'ALPHA':0.4, 'COLOR':[1.0, 1.0, 0.0]}&lt;br /&gt;
plane.make_plane_points(name='p6', l1=[10.0, 10.0, 0.0], l2=[10.0, 0.0, 0.0], l3=[10.0, 0.0, 10.0], center=False, makepseudo=False, settings=dict)&lt;br /&gt;
&lt;br /&gt;
# XZ Plane, blue&lt;br /&gt;
dict = {'ALPHA':0.4, 'COLOR':[0.0, 0.0, 1.0]}&lt;br /&gt;
plane.make_plane_points(name='p2', l1=[10.0, 0.0, 0.0], l2=[0.0, 0.0, 0.0], l3=[0.0, 0.0, 10.0], center=False, makepseudo=False, settings=dict)&lt;br /&gt;
# XZ Plane, shifted in Y, #orange&lt;br /&gt;
dict = {'ALPHA':0.4, 'COLOR':[1.0, 0.5, 0.0], 'INVERT':True}&lt;br /&gt;
plane.make_plane_points(name='p5', l1=[10.0, 10.0, 0.0], l2=[0.0, 10.0, 0.0], l3=[0.0, 10.0, 10.0], center=False, makepseudo=False, settings=dict)&lt;br /&gt;
&lt;br /&gt;
# XY Plane, forest&lt;br /&gt;
dict = {'ALPHA':0.4, 'COLOR':[0.2, 0.6, 0.2], 'INVERT':True}&lt;br /&gt;
plane.make_plane_points(name='p4', l1=[10.0, 0.0, 0.0], l2=[0.0, 0.0, 0.0], l3=[0.0, 10.0, 0.0], center=False, makepseudo=False, settings=dict)&lt;br /&gt;
# XY Plane, shifted in Z, red&lt;br /&gt;
dict = {'ALPHA':0.4, 'COLOR':[1.0, 0.0, 0.0]}&lt;br /&gt;
plane.make_plane_points(name='p3', l1=[10.0, 0.0, 10.0], l2=[0.0, 0.0, 10.0], l3=[0.0, 10.0, 10.0], center=False, makepseudo=False, settings=dict)&lt;br /&gt;
&lt;br /&gt;
zoom all&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or make a color cube, by initial fixed plane&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import plane&lt;br /&gt;
&lt;br /&gt;
python&lt;br /&gt;
from chempy import cpv&lt;br /&gt;
p1 = [23.76, -47.69, 45.23]&lt;br /&gt;
p2 = [34.96, -18.57, -1.25]&lt;br /&gt;
p3 = [90.76, -4.31, 21.69]&lt;br /&gt;
v1 = cpv.sub(p1, p2)&lt;br /&gt;
v2 = cpv.sub(p3, p2)&lt;br /&gt;
normal = cpv.cross_product(v1, v2)&lt;br /&gt;
normal_norm = cpv.normalize(normal)&lt;br /&gt;
v3 = cpv.scale(normal_norm, 40)&lt;br /&gt;
p4 = cpv.add(p2, v3)&lt;br /&gt;
cmd.pseudoatom(&amp;quot;mine&amp;quot;, color=&amp;quot;tv_blue&amp;quot;, pos=p4)&lt;br /&gt;
python end&lt;br /&gt;
&lt;br /&gt;
# XY Plane, forest&lt;br /&gt;
dict = {'ALPHA':0.4, 'COLOR':[0.2, 0.6, 0.2], 'INVERT':True}&lt;br /&gt;
plane.make_plane_points(name='p4', l1=p1, l2=p2, l3=p3, center=False, makepseudo=False, settings=dict)&lt;br /&gt;
# XY Plane, shifted in Z, red&lt;br /&gt;
dict = {'ALPHA':0.4, 'COLOR':[1.0, 0.0, 0.0]}&lt;br /&gt;
plane.make_plane_points(name='p3', l1=cpv.add(p1, v3), l2=cpv.add(p2, v3), l3=cpv.add(p3, v3), center=False, makepseudo=False, settings=dict)&lt;br /&gt;
&lt;br /&gt;
# XZ Plane, blue&lt;br /&gt;
dict = {'ALPHA':0.4, 'COLOR':[0.0, 0.0, 1.0]}&lt;br /&gt;
plane.make_plane_points(name='p2', l1=p1, l2=p2, l3=cpv.add(cpv.sub(p3, v2), v3), center=False, makepseudo=False, settings=dict)&lt;br /&gt;
# XZ Plane, shifted in Y, #orange&lt;br /&gt;
dict = {'ALPHA':0.4, 'COLOR':[1.0, 0.5, 0.0], 'INVERT':True}&lt;br /&gt;
plane.make_plane_points(name='p5', l1=cpv.add(p1, v2), l2=cpv.add(p2, v2), l3=cpv.add(p3, v3), center=False, makepseudo=False, settings=dict)&lt;br /&gt;
&lt;br /&gt;
# YZ Plane, #purple&lt;br /&gt;
dict = {'ALPHA':0.4, 'COLOR':[0.55, 0.25, 0.60], 'INVERT':True}&lt;br /&gt;
plane.make_plane_points(name='p1', l1=cpv.add(cpv.sub(p1, v1), v3), l2=p2, l3=p3, center=False, makepseudo=False, settings=dict)&lt;br /&gt;
## YZ Plane, shifted in X, #yellow&lt;br /&gt;
dict = {'ALPHA':0.4, 'COLOR':[1.0, 1.0, 0.0]}&lt;br /&gt;
plane.make_plane_points(name='p6', l1=cpv.add(p1, v3), l2=cpv.add(p2, v1), l3=cpv.add(p3, v1), center=False, makepseudo=False, settings=dict)&lt;br /&gt;
&lt;br /&gt;
zoom all&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Script_Library|Plane Wizard]]&lt;br /&gt;
[[Category:Math_Scripts]]&lt;br /&gt;
[[Category:CGO]]&lt;/div&gt;</summary>
		<author><name>Tlinnet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Plane_Wizard&amp;diff=13786</id>
		<title>Plane Wizard</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Plane_Wizard&amp;diff=13786"/>
		<updated>2016-12-26T23:26:00Z</updated>

		<summary type="html">&lt;p&gt;Tlinnet: /* plane.py */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
This wizard has a simple purpose - to draw a cgo plane that passes through three points picked by the user. Most of the wizard itself was copied from the measure wizard.&lt;br /&gt;
&lt;br /&gt;
To use, put it in the same directory as the other wizards. This is not quality code, and there may be bugs, but it seems to work okay.&lt;br /&gt;
&lt;br /&gt;
== Original ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import pymol&lt;br /&gt;
from pymol import cmd&lt;br /&gt;
from pymol.wizard import Wizard&lt;br /&gt;
from chempy import cpv&lt;br /&gt;
from pymol.cgo import *&lt;br /&gt;
&lt;br /&gt;
def makePrimitive(cgo, name):&lt;br /&gt;
    az = cmd.get('auto_zoom', quiet=1)&lt;br /&gt;
    cmd.set('auto_zoom', 0, quiet=1)&lt;br /&gt;
    cmd.load_cgo(cgo, name)&lt;br /&gt;
    cmd.set('auto_zoom', az, quiet=1)&lt;br /&gt;
&lt;br /&gt;
def point(p):&lt;br /&gt;
    x, y, z = p&lt;br /&gt;
    return [COLOR, 1, 1, 1, SPHERE, float(x), float(y), float(z), 0.5]&lt;br /&gt;
&lt;br /&gt;
def line(p1, p2):&lt;br /&gt;
    x1, y1, z1 = p1&lt;br /&gt;
    x2, y2, z2 = p2&lt;br /&gt;
    return [CYLINDER, float(x1), float(y1), float(z1), float(x2), float(y2), float(z2), 0.25, 1, 1, 1, 1, 1, 1]&lt;br /&gt;
&lt;br /&gt;
def plane(corner1, corner2, corner3, corner4, normal):&lt;br /&gt;
    planeObj = []&lt;br /&gt;
    planeObj.extend(point(corner1))&lt;br /&gt;
    planeObj.extend(point(corner2))&lt;br /&gt;
    planeObj.extend(point(corner3))&lt;br /&gt;
    planeObj.extend(point(corner4))&lt;br /&gt;
    planeObj.extend(line(corner1, corner2))&lt;br /&gt;
    planeObj.extend(line(corner2, corner3))&lt;br /&gt;
    planeObj.extend(line(corner3, corner4))&lt;br /&gt;
    planeObj.extend(line(corner4, corner1))&lt;br /&gt;
&lt;br /&gt;
    planeObj.extend([COLOR, 0.8, 0.8, 0.8])&lt;br /&gt;
    planeObj.extend([BEGIN, TRIANGLE_STRIP])&lt;br /&gt;
    planeObj.append(NORMAL)&lt;br /&gt;
    planeObj.extend(normal)&lt;br /&gt;
    for corner in [corner1, corner2, corner3, corner4, corner1]:&lt;br /&gt;
        planeObj.append(VERTEX)&lt;br /&gt;
        planeObj.extend(corner)&lt;br /&gt;
    planeObj.append(END)&lt;br /&gt;
    return planeObj&lt;br /&gt;
&lt;br /&gt;
def planeFromPoints(point1, point2, point3, facetSize):&lt;br /&gt;
    v1 = cpv.normalize(cpv.sub(point2, point1))&lt;br /&gt;
    v2 = cpv.normalize(cpv.sub(point3, point1))&lt;br /&gt;
    normal = cpv.cross_product(v1, v2)&lt;br /&gt;
    v2 = cpv.cross_product(normal, v1)&lt;br /&gt;
    x = cpv.scale(v1, facetSize)&lt;br /&gt;
    y = cpv.scale(v2, facetSize)&lt;br /&gt;
    center = point2&lt;br /&gt;
    corner1 = cpv.add(cpv.add(center, x), y)&lt;br /&gt;
    corner2 = cpv.sub(cpv.add(center, x), y)&lt;br /&gt;
    corner3 = cpv.sub(cpv.sub(center, x), y)&lt;br /&gt;
    corner4 = cpv.add(cpv.sub(center, x), y)&lt;br /&gt;
    return plane(corner1, corner2, corner3, corner4, normal)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class PlaneWizard(Wizard):&lt;br /&gt;
&lt;br /&gt;
    def __init__(self):&lt;br /&gt;
        Wizard.__init__(self)&lt;br /&gt;
&lt;br /&gt;
        # some attributes to do with picking&lt;br /&gt;
        self.pick_count = 0&lt;br /&gt;
        self.object_count = 0&lt;br /&gt;
        self.object_prefix = &amp;quot;pw&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        # the plane facet size (the 'radius' of the section of plane we show)&lt;br /&gt;
        self.facetSize = 5&lt;br /&gt;
&lt;br /&gt;
        self.selection_mode = cmd.get_setting_legacy(&amp;quot;mouse_selection_mode&amp;quot;)&lt;br /&gt;
        cmd.set(&amp;quot;mouse_selection_mode&amp;quot;,0) # set selection mode to atomic&lt;br /&gt;
        cmd.deselect()&lt;br /&gt;
&lt;br /&gt;
    def reset(self):&lt;br /&gt;
        cmd.delete(self.object_prefix + &amp;quot;*&amp;quot;)&lt;br /&gt;
        cmd.delete(&amp;quot;sele*&amp;quot;)&lt;br /&gt;
        cmd.delete(&amp;quot;_indicate*&amp;quot;)&lt;br /&gt;
        cmd.unpick()&lt;br /&gt;
        cmd.refresh_wizard()&lt;br /&gt;
&lt;br /&gt;
    def delete_all(self):&lt;br /&gt;
        cmd.delete(&amp;quot;plane*&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    def cleanup(self):&lt;br /&gt;
        cmd.set(&amp;quot;mouse_selection_mode&amp;quot;,self.selection_mode) # restore selection mode&lt;br /&gt;
        self.reset()&lt;br /&gt;
        self.delete_all()&lt;br /&gt;
&lt;br /&gt;
    def get_prompt(self):&lt;br /&gt;
        self.prompt = None&lt;br /&gt;
        if self.pick_count == 0:&lt;br /&gt;
            self.prompt = [ 'Please click on the first atom...']&lt;br /&gt;
        elif self.pick_count == 1:&lt;br /&gt;
            self.prompt = [ 'Please click on the second atom...' ]&lt;br /&gt;
        elif self.pick_count == 2:&lt;br /&gt;
            self.prompt = [ 'Please click on the third atom...' ]&lt;br /&gt;
        return self.prompt&lt;br /&gt;
&lt;br /&gt;
    def do_select(self, name):&lt;br /&gt;
        # &amp;quot;edit&amp;quot; only this atom, and not others with the object prefix&lt;br /&gt;
        try:&lt;br /&gt;
            cmd.edit(&amp;quot;%s and not %s*&amp;quot; % (name, self.object_prefix))&lt;br /&gt;
            self.do_pick(0)&lt;br /&gt;
        except pymol.CmdException, pmce:&lt;br /&gt;
            print pmce&lt;br /&gt;
&lt;br /&gt;
    def pickNextAtom(self, atom_name):&lt;br /&gt;
        # transfer the click selection to a named selection&lt;br /&gt;
        cmd.select(atom_name, &amp;quot;(pk1)&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        # delete the click selection&lt;br /&gt;
        cmd.unpick()&lt;br /&gt;
&lt;br /&gt;
        # using the magic of indicate, highlight stuff&lt;br /&gt;
        indicate_selection = &amp;quot;_indicate&amp;quot; + self.object_prefix&lt;br /&gt;
        cmd.select(indicate_selection, atom_name)&lt;br /&gt;
        cmd.enable(indicate_selection)&lt;br /&gt;
&lt;br /&gt;
        self.pick_count += 1&lt;br /&gt;
        self.error = None&lt;br /&gt;
&lt;br /&gt;
        # necessary to force update of the prompt&lt;br /&gt;
        cmd.refresh_wizard()&lt;br /&gt;
&lt;br /&gt;
    def do_pick(self, picked_bond):&lt;br /&gt;
&lt;br /&gt;
        # this shouldn't actually happen if going through the &amp;quot;do_select&amp;quot;&lt;br /&gt;
        if picked_bond:&lt;br /&gt;
            self.error = &amp;quot;Error: please select bonds, not atoms&amp;quot;&lt;br /&gt;
            print self.error&lt;br /&gt;
            return&lt;br /&gt;
&lt;br /&gt;
        atom_name = self.object_prefix + str(self.pick_count)&lt;br /&gt;
        if self.pick_count &amp;lt; 2:&lt;br /&gt;
            self.pickNextAtom(atom_name)&lt;br /&gt;
        else:&lt;br /&gt;
            self.pickNextAtom(atom_name)&lt;br /&gt;
&lt;br /&gt;
            point1 = cmd.get_atom_coords(&amp;quot;(%s%s)&amp;quot; % (self.object_prefix, &amp;quot;0&amp;quot;))&lt;br /&gt;
            point2 = cmd.get_atom_coords(&amp;quot;(%s%s)&amp;quot; % (self.object_prefix, &amp;quot;1&amp;quot;))&lt;br /&gt;
            point3 = cmd.get_atom_coords(&amp;quot;(%s%s)&amp;quot; % (self.object_prefix, &amp;quot;2&amp;quot;))&lt;br /&gt;
            plane = planeFromPoints(point1, point2, point3, self.facetSize)&lt;br /&gt;
&lt;br /&gt;
            planeName = &amp;quot;plane-%02d&amp;quot; % self.object_count&lt;br /&gt;
            self.object_count += 1&lt;br /&gt;
            makePrimitive(plane, planeName)&lt;br /&gt;
            cmd.show(&amp;quot;cgo&amp;quot;, &amp;quot;plane*&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
            self.pick_count = 0&lt;br /&gt;
            self.reset()&lt;br /&gt;
&lt;br /&gt;
    def get_panel(self):&lt;br /&gt;
        return [&lt;br /&gt;
            [ 1, 'Plane Wizard',''],&lt;br /&gt;
            [ 2, 'Reset','cmd.get_wizard().reset()'],&lt;br /&gt;
            [ 2, 'Delete All Planes' , 'cmd.get_wizard().delete_all()'],&lt;br /&gt;
            [ 2, 'Done','cmd.set_wizard()'],&lt;br /&gt;
        ]&lt;br /&gt;
&lt;br /&gt;
# create an instance&lt;br /&gt;
&lt;br /&gt;
wiz = PlaneWizard()&lt;br /&gt;
&lt;br /&gt;
# make this the active wizard&lt;br /&gt;
&lt;br /&gt;
cmd.set_wizard(wiz)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Modification==&lt;br /&gt;
Small modifications to the same code as above.&lt;br /&gt;
&lt;br /&gt;
=== Gallery ===&lt;br /&gt;
&amp;lt;gallery heights=&amp;quot;240px&amp;quot; widths=&amp;quot;340px&amp;quot;&amp;gt;&lt;br /&gt;
Image:Plane_img1.png | Drawing a plane in a protein&lt;br /&gt;
Image:Plane_img2.png | Drawing 6 planes in a box&lt;br /&gt;
Image:Plane_img3.png | Drawing 6 planes in a box&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== plane.py===&lt;br /&gt;
Make a '''plane.py''' file in the same directory where you are working&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
'''&lt;br /&gt;
Described at PyMOL wiki:&lt;br /&gt;
https://pymolwiki.org/index.php/Plane_Wizard&lt;br /&gt;
&lt;br /&gt;
Authors : Troels Schwarz-Linnet&lt;br /&gt;
Date    : Dec 2016&lt;br /&gt;
Modified: From previous contributors. &lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
import pymol&lt;br /&gt;
from pymol import cmd&lt;br /&gt;
from pymol.wizard import Wizard&lt;br /&gt;
from chempy import cpv&lt;br /&gt;
from pymol.cgo import COLOR, SPHERE, CYLINDER, BEGIN, TRIANGLE_STRIP, NORMAL, VERTEX, END, ALPHA&lt;br /&gt;
&lt;br /&gt;
def makePrimitive(cgo, name):&lt;br /&gt;
    az = cmd.get('auto_zoom', quiet=1)&lt;br /&gt;
    cmd.set('auto_zoom', 0, quiet=1)&lt;br /&gt;
    cmd.load_cgo(cgo, name)&lt;br /&gt;
    cmd.set('auto_zoom', az, quiet=1)&lt;br /&gt;
&lt;br /&gt;
def point(p):&lt;br /&gt;
    x, y, z = p&lt;br /&gt;
    return [COLOR, 1, 1, 1, SPHERE, float(x), float(y), float(z), 0.5]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def line(p1, p2):&lt;br /&gt;
    x1, y1, z1 = p1&lt;br /&gt;
    x2, y2, z2 = p2&lt;br /&gt;
    return [CYLINDER, float(x1), float(y1), float(z1), float(x2), float(y2), float(z2), 0.25, 1, 1, 1, 1, 1, 1]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def plane(corner1, corner2, corner3, corner4, normal, settings):&lt;br /&gt;
    planeObj = []&lt;br /&gt;
    planeObj.extend(point(corner1))&lt;br /&gt;
    planeObj.extend(point(corner2))&lt;br /&gt;
    planeObj.extend(point(corner3))&lt;br /&gt;
    planeObj.extend(point(corner4))&lt;br /&gt;
    planeObj.extend(line(corner1, corner2))&lt;br /&gt;
    planeObj.extend(line(corner2, corner3))&lt;br /&gt;
    planeObj.extend(line(corner3, corner4))&lt;br /&gt;
    planeObj.extend(line(corner4, corner1))&lt;br /&gt;
&lt;br /&gt;
    # Make settings&lt;br /&gt;
    if 'ALPHA' in settings:&lt;br /&gt;
        planeObj.extend([ALPHA, settings['ALPHA']])&lt;br /&gt;
&lt;br /&gt;
    if 'COLOR' in settings:&lt;br /&gt;
        planeObj.extend([COLOR, settings['COLOR'][0], settings['COLOR'][1], settings['COLOR'][2]])&lt;br /&gt;
    else:&lt;br /&gt;
        planeObj.extend([COLOR, 0.8, 0.8, 0.8]) # greyish&lt;br /&gt;
&lt;br /&gt;
    planeObj.extend([BEGIN, TRIANGLE_STRIP])&lt;br /&gt;
    planeObj.append(NORMAL)&lt;br /&gt;
&lt;br /&gt;
    if 'INVERT' in settings:&lt;br /&gt;
        if settings['INVERT']==True:&lt;br /&gt;
            planeObj.extend(cpv.negate(normal))&lt;br /&gt;
        else:&lt;br /&gt;
            planeObj.extend(normal)&lt;br /&gt;
    else:&lt;br /&gt;
        planeObj.extend(normal)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    for corner in [corner1, corner2, corner3, corner4, corner1]:&lt;br /&gt;
        planeObj.append(VERTEX)&lt;br /&gt;
        planeObj.extend(corner)&lt;br /&gt;
    planeObj.append(END)&lt;br /&gt;
    return planeObj&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def planeFromPoints(p1, p2, p3, vm1=None, vm2=None, center=True, settings={}):&lt;br /&gt;
    v1 = cpv.sub(p1, p2)&lt;br /&gt;
    v2 = cpv.sub(p3, p2)&lt;br /&gt;
    normal = cpv.cross_product(v1, v2)&lt;br /&gt;
&lt;br /&gt;
    if 'translate' in settings:&lt;br /&gt;
        vtran = cpv.scale(cpv.normalize(normal), settings['translate'])&lt;br /&gt;
        p1_t = cpv.sub(p1, vtran)&lt;br /&gt;
        p2_t = cpv.sub(p2, vtran)&lt;br /&gt;
        p3_t = cpv.sub(p3, vtran)&lt;br /&gt;
        print(&amp;quot;New coordinates are:&amp;quot;)&lt;br /&gt;
        print_info(&amp;quot;New&amp;quot;, p1_t, p2_t, p3_t)&lt;br /&gt;
        print(&amp;quot;New coordinates are for normalized plane:&amp;quot;)&lt;br /&gt;
        v1_t = cpv.normalize(cpv.sub(p1_t, p2_t))&lt;br /&gt;
        v2_t = cpv.normalize(cpv.sub(p3_t, p2_t))&lt;br /&gt;
        normal_t = cpv.normalize(cpv.cross_product(v1_t, v2_t))&lt;br /&gt;
        v2_t = cpv.normalize(cpv.cross_product(normal_t, v1_t))&lt;br /&gt;
        p1_t2 = cpv.add(v1_t, p2_t)&lt;br /&gt;
        p3_t2 = cpv.add(v2_t, p2_t)&lt;br /&gt;
        print_info(&amp;quot;Newnormal&amp;quot;, p1_t2, p2_t, p3_t2)&lt;br /&gt;
&lt;br /&gt;
    if vm1!=None:&lt;br /&gt;
        v1 = cpv.scale(cpv.normalize(v1), vm1)&lt;br /&gt;
    if vm2!=None:&lt;br /&gt;
        v2 = cpv.scale(cpv.normalize(v2), vm2)&lt;br /&gt;
&lt;br /&gt;
    centrum = p2&lt;br /&gt;
    if center:&lt;br /&gt;
        corner1 = cpv.add(cpv.add(centrum, v1), v2)&lt;br /&gt;
        corner2 = cpv.sub(cpv.add(centrum, v1), v2)&lt;br /&gt;
        corner3 = cpv.sub(cpv.sub(centrum, v1), v2)&lt;br /&gt;
        corner4 = cpv.add(cpv.sub(centrum, v1), v2)&lt;br /&gt;
    else:&lt;br /&gt;
        corner1 = cpv.add(cpv.add(centrum, v1), v2)&lt;br /&gt;
        corner2 = cpv.add(centrum, v1)&lt;br /&gt;
        corner3 = centrum&lt;br /&gt;
        corner4 = cpv.add(centrum, v2)&lt;br /&gt;
&lt;br /&gt;
    return plane(corner1, corner2, corner3, corner4, normal, settings)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def print_info(name, coor1, coor2, coor3):&lt;br /&gt;
    cs1 = (map(float, [ '%.2f' % elem for elem in coor1 ]) )&lt;br /&gt;
    cs2 = (map(float, [ '%.2f' % elem for elem in coor2 ]) )&lt;br /&gt;
    cs3 = (map(float, [ '%.2f' % elem for elem in coor3 ]) )&lt;br /&gt;
    print(&amp;quot;You can also use the function calls with these coordinates&amp;quot;)&lt;br /&gt;
    print(&amp;quot;plane.make_plane_points(name='%s', l1=%s, l2=%s, l3=%s)&amp;quot;%(name, cs1, cs2, cs3))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def make_plane(name,a1='(pk1)',a2='(pk2)',a3='(pk3)', vm1=None, vm2=None, center=True, makepseudo=True, settings={}):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    DESCRIPTION&lt;br /&gt;
    Create a CGO plane from three atomic coordinates&lt;br /&gt;
&lt;br /&gt;
    USAGE&lt;br /&gt;
    make_plane name, a1, a2, a3&lt;br /&gt;
&lt;br /&gt;
    where each atom is a standard PyMOL selection (defaults to pk1,pk2 and pk3)&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    # get coordinates from atom selections&lt;br /&gt;
    coor1 = cmd.get_model(a1).get_coord_list()[0]&lt;br /&gt;
    coor2 = cmd.get_model(a2).get_coord_list()[0]&lt;br /&gt;
    coor3 = cmd.get_model(a3).get_coord_list()[0]&lt;br /&gt;
&lt;br /&gt;
    # Help with alternative&lt;br /&gt;
    print_info(name, coor1, coor2, coor3)&lt;br /&gt;
&lt;br /&gt;
    # Get the plane&lt;br /&gt;
    plane = planeFromPoints(p1=coor1, p2=coor2, p3=coor3, vm1=vm1, vm2=vm2, center=center, settings=settings)&lt;br /&gt;
    makePrimitive(plane, name)&lt;br /&gt;
    #cmd.show(&amp;quot;cgo&amp;quot;, &amp;quot;plane*&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    if makepseudo:&lt;br /&gt;
        cmd.pseudoatom(&amp;quot;%s_%s&amp;quot;%(name, &amp;quot;l1&amp;quot;), color=&amp;quot;tv_blue&amp;quot;, pos=coor1)&lt;br /&gt;
        cmd.pseudoatom(&amp;quot;%s_%s&amp;quot;%(name, &amp;quot;l2&amp;quot;), color=&amp;quot;tv_green&amp;quot;, pos=coor2)&lt;br /&gt;
        cmd.pseudoatom(&amp;quot;%s_%s&amp;quot;%(name, &amp;quot;l3&amp;quot;), color=&amp;quot;red&amp;quot;, pos=coor3)&lt;br /&gt;
&lt;br /&gt;
# Extend function to be called inside pymol&lt;br /&gt;
cmd.extend(&amp;quot;make_plane&amp;quot;, make_plane)&lt;br /&gt;
&lt;br /&gt;
def make_plane_points(name,l1=None,l2=None,l3=None, vm1=None, vm2=None, center=True, makepseudo=True, settings={}):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    DESCRIPTION&lt;br /&gt;
    Create a CGO plane from three atomic coordinates&lt;br /&gt;
&lt;br /&gt;
    USAGE&lt;br /&gt;
    make_plane name, l1, l2, l3&lt;br /&gt;
&lt;br /&gt;
    where each xys is a list with floats of x,y,z coordinates&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    if l1==None or l2==None or l3==None:&lt;br /&gt;
        print(&amp;quot;Please provide a list of xyz floats for each 3 positions&amp;quot;)&lt;br /&gt;
        return&lt;br /&gt;
    if type(l1) is not list or type(l2) is not list or type(l3) is not list:&lt;br /&gt;
        print(type(l1),type(l2),type(l3))&lt;br /&gt;
        print(&amp;quot;Please provide 3 list of xyz floats for each 3 positions&amp;quot;)&lt;br /&gt;
        return&lt;br /&gt;
&lt;br /&gt;
    plane = planeFromPoints(p1=l1, p2=l2, p3=l3, vm1=vm1, vm2=vm2, center=center, settings=settings)&lt;br /&gt;
    makePrimitive(plane, name)&lt;br /&gt;
&lt;br /&gt;
    if makepseudo:&lt;br /&gt;
        cmd.pseudoatom(&amp;quot;%s_%s&amp;quot;%(name, &amp;quot;l1&amp;quot;), color=&amp;quot;tv_blue&amp;quot;, pos=l1)&lt;br /&gt;
        cmd.pseudoatom(&amp;quot;%s_%s&amp;quot;%(name, &amp;quot;l2&amp;quot;), color=&amp;quot;tv_green&amp;quot;, pos=l2)&lt;br /&gt;
        cmd.pseudoatom(&amp;quot;%s_%s&amp;quot;%(name, &amp;quot;l3&amp;quot;), color=&amp;quot;red&amp;quot;, pos=l3)&lt;br /&gt;
&lt;br /&gt;
# Extend function to be called inside pymol&lt;br /&gt;
cmd.extend(&amp;quot;make_plane_points&amp;quot;, make_plane_points)&lt;br /&gt;
&lt;br /&gt;
class PlaneWizard(Wizard):&lt;br /&gt;
    def __init__(self):&lt;br /&gt;
        Wizard.__init__(self)&lt;br /&gt;
&lt;br /&gt;
        # some attributes to do with picking&lt;br /&gt;
        self.pick_count = 0&lt;br /&gt;
        self.object_count = 0&lt;br /&gt;
        self.object_prefix = &amp;quot;pw&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        self.selection_mode = cmd.get_setting_legacy(&amp;quot;mouse_selection_mode&amp;quot;)&lt;br /&gt;
        cmd.set(&amp;quot;mouse_selection_mode&amp;quot;,0) # set selection mode to atomic&lt;br /&gt;
        cmd.deselect()&lt;br /&gt;
&lt;br /&gt;
    def reset(self):&lt;br /&gt;
        cmd.delete(self.object_prefix + &amp;quot;*&amp;quot;)&lt;br /&gt;
        cmd.delete(&amp;quot;sele*&amp;quot;)&lt;br /&gt;
        cmd.delete(&amp;quot;_indicate*&amp;quot;)&lt;br /&gt;
        cmd.unpick()&lt;br /&gt;
        cmd.refresh_wizard()&lt;br /&gt;
&lt;br /&gt;
    def delete_all(self):&lt;br /&gt;
        cmd.delete(&amp;quot;plane*&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    def cleanup(self):&lt;br /&gt;
        cmd.set(&amp;quot;mouse_selection_mode&amp;quot;,self.selection_mode) # restore selection mode&lt;br /&gt;
        self.reset()&lt;br /&gt;
        self.delete_all()&lt;br /&gt;
&lt;br /&gt;
    def get_prompt(self):&lt;br /&gt;
        self.prompt = None&lt;br /&gt;
        if self.pick_count == 0:&lt;br /&gt;
            self.prompt = [ 'Please click on the first atom...']&lt;br /&gt;
        elif self.pick_count == 1:&lt;br /&gt;
            self.prompt = [ 'Please click on the second atom...' ]&lt;br /&gt;
        elif self.pick_count == 2:&lt;br /&gt;
            self.prompt = [ 'Please click on the third atom...' ]&lt;br /&gt;
        return self.prompt&lt;br /&gt;
&lt;br /&gt;
    def do_select(self, name):&lt;br /&gt;
        # &amp;quot;edit&amp;quot; only this atom, and not others with the object prefix&lt;br /&gt;
        try:&lt;br /&gt;
            cmd.edit(&amp;quot;%s and not %s*&amp;quot; % (name, self.object_prefix))&lt;br /&gt;
            self.do_pick(0)&lt;br /&gt;
        except pymol.CmdException, pmce:&lt;br /&gt;
            print pmce&lt;br /&gt;
&lt;br /&gt;
    def pickNextAtom(self, atom_name):&lt;br /&gt;
        # transfer the click selection to a named selection&lt;br /&gt;
        cmd.select(atom_name, &amp;quot;(pk1)&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        # delete the click selection&lt;br /&gt;
        cmd.unpick()&lt;br /&gt;
&lt;br /&gt;
        # using the magic of indicate, highlight stuff&lt;br /&gt;
        indicate_selection = &amp;quot;_indicate&amp;quot; + self.object_prefix&lt;br /&gt;
        cmd.select(indicate_selection, atom_name)&lt;br /&gt;
        cmd.enable(indicate_selection)&lt;br /&gt;
&lt;br /&gt;
        self.pick_count += 1&lt;br /&gt;
        self.error = None&lt;br /&gt;
&lt;br /&gt;
        # necessary to force update of the prompt&lt;br /&gt;
        cmd.refresh_wizard()&lt;br /&gt;
&lt;br /&gt;
    def do_pick(self, picked_bond):&lt;br /&gt;
&lt;br /&gt;
        # this shouldn't actually happen if going through the &amp;quot;do_select&amp;quot;&lt;br /&gt;
        if picked_bond:&lt;br /&gt;
            self.error = &amp;quot;Error: please select bonds, not atoms&amp;quot;&lt;br /&gt;
            print self.error&lt;br /&gt;
            return&lt;br /&gt;
&lt;br /&gt;
        atom_name = self.object_prefix + str(self.pick_count)&lt;br /&gt;
        if self.pick_count &amp;lt; 2:&lt;br /&gt;
            self.pickNextAtom(atom_name)&lt;br /&gt;
        else:&lt;br /&gt;
            self.pickNextAtom(atom_name)&lt;br /&gt;
&lt;br /&gt;
            point1 = cmd.get_atom_coords(&amp;quot;(%s%s)&amp;quot; % (self.object_prefix, &amp;quot;0&amp;quot;))&lt;br /&gt;
            point2 = cmd.get_atom_coords(&amp;quot;(%s%s)&amp;quot; % (self.object_prefix, &amp;quot;1&amp;quot;))&lt;br /&gt;
            point3 = cmd.get_atom_coords(&amp;quot;(%s%s)&amp;quot; % (self.object_prefix, &amp;quot;2&amp;quot;))&lt;br /&gt;
            plane = planeFromPoints(point1, point2, point3)&lt;br /&gt;
&lt;br /&gt;
            planeName = &amp;quot;plane-%02d&amp;quot; % self.object_count&lt;br /&gt;
&lt;br /&gt;
            print_info(planeName, point1, point2, point3)&lt;br /&gt;
&lt;br /&gt;
            self.object_count += 1&lt;br /&gt;
            makePrimitive(plane, planeName)&lt;br /&gt;
            cmd.show(&amp;quot;cgo&amp;quot;, &amp;quot;plane*&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
            self.pick_count = 0&lt;br /&gt;
            self.reset()&lt;br /&gt;
&lt;br /&gt;
    def get_panel(self):&lt;br /&gt;
        return [&lt;br /&gt;
            [ 1, 'Plane Wizard',''],&lt;br /&gt;
            [ 2, 'Reset','cmd.get_wizard().reset()'],&lt;br /&gt;
            [ 2, 'Delete All Planes' , 'cmd.get_wizard().delete_all()'],&lt;br /&gt;
            [ 2, 'Done','cmd.set_wizard()'],&lt;br /&gt;
        ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
Plane in a protein&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
reinitialize&lt;br /&gt;
&lt;br /&gt;
fetch 1ubq, async=0&lt;br /&gt;
show_as cartoon, all &lt;br /&gt;
&lt;br /&gt;
import plane&lt;br /&gt;
# Start the wizard, and do manual picking&lt;br /&gt;
cmd.set_wizard(plane.PlaneWizard())&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or by selection&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
reinitialize&lt;br /&gt;
&lt;br /&gt;
fetch 1ubq, async=0&lt;br /&gt;
show_as cartoon, all &lt;br /&gt;
&lt;br /&gt;
import plane&lt;br /&gt;
&lt;br /&gt;
# Set alpha level and color&lt;br /&gt;
#violetpurple: 0.55, 0.25, 0.60 #yellow: 1.0, 1.0, 0.0, #blue: 0.0, 0.0, 1.0 #orange: 1.0, 0.5, 0.0 #forest: 0.2, 0.6, 0.2 #red: 1.0, 0.0, 0.0&lt;br /&gt;
dict = {'ALPHA':0.6, 'COLOR':[0.55, 0.25, 0.60], 'INVERT':True}&lt;br /&gt;
plane.make_plane(name='test', a1='/1ubq//A/24/CA', a2='/1ubq//A/29/CA', a3='/1ubq//A/40/CA', center=False, settings=dict)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or by atom coordinates&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
reinitialize&lt;br /&gt;
&lt;br /&gt;
fetch 1ubq, async=0&lt;br /&gt;
show_as cartoon, all &lt;br /&gt;
&lt;br /&gt;
import plane&lt;br /&gt;
&lt;br /&gt;
# Or  make from atom coordinates&lt;br /&gt;
#plane.make_plane_points(name='test', l1=[35.03, 21.72, 17.07], l2=[37.47, 27.39, 10.67], l3=[37.74, 31.64, 23.71])&lt;br /&gt;
&lt;br /&gt;
# Define plane, 10 angstrom in length&lt;br /&gt;
#plane.make_plane_points(name='p1', l1=[0.0, 10.0, 0.0], l2=[0.0, 0.0, 0.0], l3=[0.0, 0.0, 10.0], center=False, makepseudo=False)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or make a color cube&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
reinitialize&lt;br /&gt;
#violetpurple: 0.55, 0.25, 0.60 #yellow: 1.0, 1.0, 0.0, #blue: 0.0, 0.0, 1.0 #orange: 1.0, 0.5, 0.0 #forest: 0.2, 0.6, 0.2 #red: 1.0, 0.0, 0.0&lt;br /&gt;
&lt;br /&gt;
# YZ Plane, #purple&lt;br /&gt;
dict = {'ALPHA':0.4, 'COLOR':[0.55, 0.25, 0.60], 'INVERT':True}&lt;br /&gt;
plane.make_plane_points(name='p1', l1=[0.0, 10.0, 0.0], l2=[0.0, 0.0, 0.0], l3=[0.0, 0.0, 10.0], center=False, makepseudo=False, settings=dict)&lt;br /&gt;
# YZ Plane, shifted in X, #yellow&lt;br /&gt;
dict = {'ALPHA':0.4, 'COLOR':[1.0, 1.0, 0.0]}&lt;br /&gt;
plane.make_plane_points(name='p6', l1=[10.0, 10.0, 0.0], l2=[10.0, 0.0, 0.0], l3=[10.0, 0.0, 10.0], center=False, makepseudo=False, settings=dict)&lt;br /&gt;
&lt;br /&gt;
# XZ Plane, blue&lt;br /&gt;
dict = {'ALPHA':0.4, 'COLOR':[0.0, 0.0, 1.0]}&lt;br /&gt;
plane.make_plane_points(name='p2', l1=[10.0, 0.0, 0.0], l2=[0.0, 0.0, 0.0], l3=[0.0, 0.0, 10.0], center=False, makepseudo=False, settings=dict)&lt;br /&gt;
# XZ Plane, shifted in Y, #orange&lt;br /&gt;
dict = {'ALPHA':0.4, 'COLOR':[1.0, 0.5, 0.0], 'INVERT':True}&lt;br /&gt;
plane.make_plane_points(name='p5', l1=[10.0, 10.0, 0.0], l2=[0.0, 10.0, 0.0], l3=[0.0, 10.0, 10.0], center=False, makepseudo=False, settings=dict)&lt;br /&gt;
&lt;br /&gt;
# XY Plane, forest&lt;br /&gt;
dict = {'ALPHA':0.4, 'COLOR':[0.2, 0.6, 0.2], 'INVERT':True}&lt;br /&gt;
plane.make_plane_points(name='p4', l1=[10.0, 0.0, 0.0], l2=[0.0, 0.0, 0.0], l3=[0.0, 10.0, 0.0], center=False, makepseudo=False, settings=dict)&lt;br /&gt;
# XY Plane, shifted in Z, red&lt;br /&gt;
dict = {'ALPHA':0.4, 'COLOR':[1.0, 0.0, 0.0]}&lt;br /&gt;
plane.make_plane_points(name='p3', l1=[10.0, 0.0, 10.0], l2=[0.0, 0.0, 10.0], l3=[0.0, 10.0, 10.0], center=False, makepseudo=False, settings=dict)&lt;br /&gt;
&lt;br /&gt;
zoom all&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Script_Library|Plane Wizard]]&lt;br /&gt;
[[Category:Math_Scripts]]&lt;br /&gt;
[[Category:CGO]]&lt;/div&gt;</summary>
		<author><name>Tlinnet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Plane_Wizard&amp;diff=13785</id>
		<title>Plane Wizard</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Plane_Wizard&amp;diff=13785"/>
		<updated>2016-12-26T20:40:09Z</updated>

		<summary type="html">&lt;p&gt;Tlinnet: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
This wizard has a simple purpose - to draw a cgo plane that passes through three points picked by the user. Most of the wizard itself was copied from the measure wizard.&lt;br /&gt;
&lt;br /&gt;
To use, put it in the same directory as the other wizards. This is not quality code, and there may be bugs, but it seems to work okay.&lt;br /&gt;
&lt;br /&gt;
== Original ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import pymol&lt;br /&gt;
from pymol import cmd&lt;br /&gt;
from pymol.wizard import Wizard&lt;br /&gt;
from chempy import cpv&lt;br /&gt;
from pymol.cgo import *&lt;br /&gt;
&lt;br /&gt;
def makePrimitive(cgo, name):&lt;br /&gt;
    az = cmd.get('auto_zoom', quiet=1)&lt;br /&gt;
    cmd.set('auto_zoom', 0, quiet=1)&lt;br /&gt;
    cmd.load_cgo(cgo, name)&lt;br /&gt;
    cmd.set('auto_zoom', az, quiet=1)&lt;br /&gt;
&lt;br /&gt;
def point(p):&lt;br /&gt;
    x, y, z = p&lt;br /&gt;
    return [COLOR, 1, 1, 1, SPHERE, float(x), float(y), float(z), 0.5]&lt;br /&gt;
&lt;br /&gt;
def line(p1, p2):&lt;br /&gt;
    x1, y1, z1 = p1&lt;br /&gt;
    x2, y2, z2 = p2&lt;br /&gt;
    return [CYLINDER, float(x1), float(y1), float(z1), float(x2), float(y2), float(z2), 0.25, 1, 1, 1, 1, 1, 1]&lt;br /&gt;
&lt;br /&gt;
def plane(corner1, corner2, corner3, corner4, normal):&lt;br /&gt;
    planeObj = []&lt;br /&gt;
    planeObj.extend(point(corner1))&lt;br /&gt;
    planeObj.extend(point(corner2))&lt;br /&gt;
    planeObj.extend(point(corner3))&lt;br /&gt;
    planeObj.extend(point(corner4))&lt;br /&gt;
    planeObj.extend(line(corner1, corner2))&lt;br /&gt;
    planeObj.extend(line(corner2, corner3))&lt;br /&gt;
    planeObj.extend(line(corner3, corner4))&lt;br /&gt;
    planeObj.extend(line(corner4, corner1))&lt;br /&gt;
&lt;br /&gt;
    planeObj.extend([COLOR, 0.8, 0.8, 0.8])&lt;br /&gt;
    planeObj.extend([BEGIN, TRIANGLE_STRIP])&lt;br /&gt;
    planeObj.append(NORMAL)&lt;br /&gt;
    planeObj.extend(normal)&lt;br /&gt;
    for corner in [corner1, corner2, corner3, corner4, corner1]:&lt;br /&gt;
        planeObj.append(VERTEX)&lt;br /&gt;
        planeObj.extend(corner)&lt;br /&gt;
    planeObj.append(END)&lt;br /&gt;
    return planeObj&lt;br /&gt;
&lt;br /&gt;
def planeFromPoints(point1, point2, point3, facetSize):&lt;br /&gt;
    v1 = cpv.normalize(cpv.sub(point2, point1))&lt;br /&gt;
    v2 = cpv.normalize(cpv.sub(point3, point1))&lt;br /&gt;
    normal = cpv.cross_product(v1, v2)&lt;br /&gt;
    v2 = cpv.cross_product(normal, v1)&lt;br /&gt;
    x = cpv.scale(v1, facetSize)&lt;br /&gt;
    y = cpv.scale(v2, facetSize)&lt;br /&gt;
    center = point2&lt;br /&gt;
    corner1 = cpv.add(cpv.add(center, x), y)&lt;br /&gt;
    corner2 = cpv.sub(cpv.add(center, x), y)&lt;br /&gt;
    corner3 = cpv.sub(cpv.sub(center, x), y)&lt;br /&gt;
    corner4 = cpv.add(cpv.sub(center, x), y)&lt;br /&gt;
    return plane(corner1, corner2, corner3, corner4, normal)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class PlaneWizard(Wizard):&lt;br /&gt;
&lt;br /&gt;
    def __init__(self):&lt;br /&gt;
        Wizard.__init__(self)&lt;br /&gt;
&lt;br /&gt;
        # some attributes to do with picking&lt;br /&gt;
        self.pick_count = 0&lt;br /&gt;
        self.object_count = 0&lt;br /&gt;
        self.object_prefix = &amp;quot;pw&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        # the plane facet size (the 'radius' of the section of plane we show)&lt;br /&gt;
        self.facetSize = 5&lt;br /&gt;
&lt;br /&gt;
        self.selection_mode = cmd.get_setting_legacy(&amp;quot;mouse_selection_mode&amp;quot;)&lt;br /&gt;
        cmd.set(&amp;quot;mouse_selection_mode&amp;quot;,0) # set selection mode to atomic&lt;br /&gt;
        cmd.deselect()&lt;br /&gt;
&lt;br /&gt;
    def reset(self):&lt;br /&gt;
        cmd.delete(self.object_prefix + &amp;quot;*&amp;quot;)&lt;br /&gt;
        cmd.delete(&amp;quot;sele*&amp;quot;)&lt;br /&gt;
        cmd.delete(&amp;quot;_indicate*&amp;quot;)&lt;br /&gt;
        cmd.unpick()&lt;br /&gt;
        cmd.refresh_wizard()&lt;br /&gt;
&lt;br /&gt;
    def delete_all(self):&lt;br /&gt;
        cmd.delete(&amp;quot;plane*&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    def cleanup(self):&lt;br /&gt;
        cmd.set(&amp;quot;mouse_selection_mode&amp;quot;,self.selection_mode) # restore selection mode&lt;br /&gt;
        self.reset()&lt;br /&gt;
        self.delete_all()&lt;br /&gt;
&lt;br /&gt;
    def get_prompt(self):&lt;br /&gt;
        self.prompt = None&lt;br /&gt;
        if self.pick_count == 0:&lt;br /&gt;
            self.prompt = [ 'Please click on the first atom...']&lt;br /&gt;
        elif self.pick_count == 1:&lt;br /&gt;
            self.prompt = [ 'Please click on the second atom...' ]&lt;br /&gt;
        elif self.pick_count == 2:&lt;br /&gt;
            self.prompt = [ 'Please click on the third atom...' ]&lt;br /&gt;
        return self.prompt&lt;br /&gt;
&lt;br /&gt;
    def do_select(self, name):&lt;br /&gt;
        # &amp;quot;edit&amp;quot; only this atom, and not others with the object prefix&lt;br /&gt;
        try:&lt;br /&gt;
            cmd.edit(&amp;quot;%s and not %s*&amp;quot; % (name, self.object_prefix))&lt;br /&gt;
            self.do_pick(0)&lt;br /&gt;
        except pymol.CmdException, pmce:&lt;br /&gt;
            print pmce&lt;br /&gt;
&lt;br /&gt;
    def pickNextAtom(self, atom_name):&lt;br /&gt;
        # transfer the click selection to a named selection&lt;br /&gt;
        cmd.select(atom_name, &amp;quot;(pk1)&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        # delete the click selection&lt;br /&gt;
        cmd.unpick()&lt;br /&gt;
&lt;br /&gt;
        # using the magic of indicate, highlight stuff&lt;br /&gt;
        indicate_selection = &amp;quot;_indicate&amp;quot; + self.object_prefix&lt;br /&gt;
        cmd.select(indicate_selection, atom_name)&lt;br /&gt;
        cmd.enable(indicate_selection)&lt;br /&gt;
&lt;br /&gt;
        self.pick_count += 1&lt;br /&gt;
        self.error = None&lt;br /&gt;
&lt;br /&gt;
        # necessary to force update of the prompt&lt;br /&gt;
        cmd.refresh_wizard()&lt;br /&gt;
&lt;br /&gt;
    def do_pick(self, picked_bond):&lt;br /&gt;
&lt;br /&gt;
        # this shouldn't actually happen if going through the &amp;quot;do_select&amp;quot;&lt;br /&gt;
        if picked_bond:&lt;br /&gt;
            self.error = &amp;quot;Error: please select bonds, not atoms&amp;quot;&lt;br /&gt;
            print self.error&lt;br /&gt;
            return&lt;br /&gt;
&lt;br /&gt;
        atom_name = self.object_prefix + str(self.pick_count)&lt;br /&gt;
        if self.pick_count &amp;lt; 2:&lt;br /&gt;
            self.pickNextAtom(atom_name)&lt;br /&gt;
        else:&lt;br /&gt;
            self.pickNextAtom(atom_name)&lt;br /&gt;
&lt;br /&gt;
            point1 = cmd.get_atom_coords(&amp;quot;(%s%s)&amp;quot; % (self.object_prefix, &amp;quot;0&amp;quot;))&lt;br /&gt;
            point2 = cmd.get_atom_coords(&amp;quot;(%s%s)&amp;quot; % (self.object_prefix, &amp;quot;1&amp;quot;))&lt;br /&gt;
            point3 = cmd.get_atom_coords(&amp;quot;(%s%s)&amp;quot; % (self.object_prefix, &amp;quot;2&amp;quot;))&lt;br /&gt;
            plane = planeFromPoints(point1, point2, point3, self.facetSize)&lt;br /&gt;
&lt;br /&gt;
            planeName = &amp;quot;plane-%02d&amp;quot; % self.object_count&lt;br /&gt;
            self.object_count += 1&lt;br /&gt;
            makePrimitive(plane, planeName)&lt;br /&gt;
            cmd.show(&amp;quot;cgo&amp;quot;, &amp;quot;plane*&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
            self.pick_count = 0&lt;br /&gt;
            self.reset()&lt;br /&gt;
&lt;br /&gt;
    def get_panel(self):&lt;br /&gt;
        return [&lt;br /&gt;
            [ 1, 'Plane Wizard',''],&lt;br /&gt;
            [ 2, 'Reset','cmd.get_wizard().reset()'],&lt;br /&gt;
            [ 2, 'Delete All Planes' , 'cmd.get_wizard().delete_all()'],&lt;br /&gt;
            [ 2, 'Done','cmd.set_wizard()'],&lt;br /&gt;
        ]&lt;br /&gt;
&lt;br /&gt;
# create an instance&lt;br /&gt;
&lt;br /&gt;
wiz = PlaneWizard()&lt;br /&gt;
&lt;br /&gt;
# make this the active wizard&lt;br /&gt;
&lt;br /&gt;
cmd.set_wizard(wiz)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Modification==&lt;br /&gt;
Small modifications to the same code as above.&lt;br /&gt;
&lt;br /&gt;
=== Gallery ===&lt;br /&gt;
&amp;lt;gallery heights=&amp;quot;240px&amp;quot; widths=&amp;quot;340px&amp;quot;&amp;gt;&lt;br /&gt;
Image:Plane_img1.png | Drawing a plane in a protein&lt;br /&gt;
Image:Plane_img2.png | Drawing 6 planes in a box&lt;br /&gt;
Image:Plane_img3.png | Drawing 6 planes in a box&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== plane.py===&lt;br /&gt;
Make a '''plane.py''' file in the same directory where you are working&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
'''&lt;br /&gt;
Described at PyMOL wiki:&lt;br /&gt;
https://pymolwiki.org/index.php/Plane_Wizard&lt;br /&gt;
&lt;br /&gt;
Authors : Troels Schwarz-Linnet&lt;br /&gt;
Date    : Dec 2016&lt;br /&gt;
Modified: From previous contributors. &lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
import pymol&lt;br /&gt;
from pymol import cmd&lt;br /&gt;
from pymol.wizard import Wizard&lt;br /&gt;
from chempy import cpv&lt;br /&gt;
from pymol.cgo import COLOR, SPHERE, CYLINDER, BEGIN, TRIANGLE_STRIP, NORMAL, VERTEX, END, ALPHA&lt;br /&gt;
&lt;br /&gt;
def makePrimitive(cgo, name):&lt;br /&gt;
    az = cmd.get('auto_zoom', quiet=1)&lt;br /&gt;
    cmd.set('auto_zoom', 0, quiet=1)&lt;br /&gt;
    cmd.load_cgo(cgo, name)&lt;br /&gt;
    cmd.set('auto_zoom', az, quiet=1)&lt;br /&gt;
&lt;br /&gt;
def point(p):&lt;br /&gt;
    x, y, z = p&lt;br /&gt;
    return [COLOR, 1, 1, 1, SPHERE, float(x), float(y), float(z), 0.5]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def line(p1, p2):&lt;br /&gt;
    x1, y1, z1 = p1&lt;br /&gt;
    x2, y2, z2 = p2&lt;br /&gt;
    return [CYLINDER, float(x1), float(y1), float(z1), float(x2), float(y2), float(z2), 0.25, 1, 1, 1, 1, 1, 1]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def plane(corner1, corner2, corner3, corner4, normal, settings):&lt;br /&gt;
    planeObj = []&lt;br /&gt;
    planeObj.extend(point(corner1))&lt;br /&gt;
    planeObj.extend(point(corner2))&lt;br /&gt;
    planeObj.extend(point(corner3))&lt;br /&gt;
    planeObj.extend(point(corner4))&lt;br /&gt;
    planeObj.extend(line(corner1, corner2))&lt;br /&gt;
    planeObj.extend(line(corner2, corner3))&lt;br /&gt;
    planeObj.extend(line(corner3, corner4))&lt;br /&gt;
    planeObj.extend(line(corner4, corner1))&lt;br /&gt;
&lt;br /&gt;
    # Make settings&lt;br /&gt;
    if 'ALPHA' in settings:&lt;br /&gt;
        planeObj.extend([ALPHA, settings['ALPHA']])&lt;br /&gt;
&lt;br /&gt;
    if 'COLOR' in settings:&lt;br /&gt;
        planeObj.extend([COLOR, settings['COLOR'][0], settings['COLOR'][1], settings['COLOR'][2]])&lt;br /&gt;
    else:&lt;br /&gt;
        planeObj.extend([COLOR, 0.8, 0.8, 0.8]) # greyish&lt;br /&gt;
&lt;br /&gt;
    planeObj.extend([BEGIN, TRIANGLE_STRIP])&lt;br /&gt;
    planeObj.append(NORMAL)&lt;br /&gt;
&lt;br /&gt;
    if 'INVERT' in settings:&lt;br /&gt;
        if settings['INVERT']==True:&lt;br /&gt;
            planeObj.extend(cpv.negate(normal))&lt;br /&gt;
        else:&lt;br /&gt;
            planeObj.extend(normal)&lt;br /&gt;
    else:&lt;br /&gt;
        planeObj.extend(normal)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    for corner in [corner1, corner2, corner3, corner4, corner1]:&lt;br /&gt;
        planeObj.append(VERTEX)&lt;br /&gt;
        planeObj.extend(corner)&lt;br /&gt;
    planeObj.append(END)&lt;br /&gt;
    return planeObj&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def planeFromPoints(p1, p2, p3, vm1=None, vm2=None, center=True, settings={}):&lt;br /&gt;
    v1 = cpv.sub(p1, p2)&lt;br /&gt;
    v2 = cpv.sub(p3, p2)&lt;br /&gt;
    normal = cpv.cross_product(v1, v2)&lt;br /&gt;
&lt;br /&gt;
    if vm1!=None:&lt;br /&gt;
        v1 = cpv.scale(cpv.normalize(v1), vm1)&lt;br /&gt;
    if vm2!=None:&lt;br /&gt;
        v2 = cpv.scale(cpv.normalize(v2), vm2)&lt;br /&gt;
&lt;br /&gt;
    centrum = p2&lt;br /&gt;
    if center:&lt;br /&gt;
        corner1 = cpv.add(cpv.add(centrum, v1), v2)&lt;br /&gt;
        corner2 = cpv.sub(cpv.add(centrum, v1), v2)&lt;br /&gt;
        corner3 = cpv.sub(cpv.sub(centrum, v1), v2)&lt;br /&gt;
        corner4 = cpv.add(cpv.sub(centrum, v1), v2)&lt;br /&gt;
    else:&lt;br /&gt;
        corner1 = cpv.add(cpv.add(centrum, v1), v2)&lt;br /&gt;
        corner2 = cpv.add(centrum, v1)&lt;br /&gt;
        corner3 = centrum&lt;br /&gt;
        corner4 = cpv.add(centrum, v2)&lt;br /&gt;
&lt;br /&gt;
    return plane(corner1, corner2, corner3, corner4, normal, settings)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def print_info(name, coor1, coor2, coor3):&lt;br /&gt;
    cs1 = (map(float, [ '%.2f' % elem for elem in coor1 ]) )&lt;br /&gt;
    cs2 = (map(float, [ '%.2f' % elem for elem in coor2 ]) )&lt;br /&gt;
    cs3 = (map(float, [ '%.2f' % elem for elem in coor3 ]) )&lt;br /&gt;
    print(&amp;quot;You can also use the function calls with these coordinates&amp;quot;)&lt;br /&gt;
    print(&amp;quot;make_plane_points(name='%s', l1=%s, l2=%s, l3=%s)&amp;quot;%(name, cs1, cs2, cs3))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def make_plane(name,a1='(pk1)',a2='(pk2)',a3='(pk3)', vm1=None, vm2=None, center=True, makepseudo=True, settings={}):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    DESCRIPTION&lt;br /&gt;
    Create a CGO plane from three atomic coordinates&lt;br /&gt;
&lt;br /&gt;
    USAGE&lt;br /&gt;
    make_plane name, a1, a2, a3&lt;br /&gt;
&lt;br /&gt;
    where each atom is a standard PyMOL selection (defaults to pk1,pk2 and pk3)&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    # get coordinates from atom selections&lt;br /&gt;
    coor1 = cmd.get_model(a1).get_coord_list()[0]&lt;br /&gt;
    coor2 = cmd.get_model(a2).get_coord_list()[0]&lt;br /&gt;
    coor3 = cmd.get_model(a3).get_coord_list()[0]&lt;br /&gt;
&lt;br /&gt;
    # Help with alternative&lt;br /&gt;
    print_info(name, coor1, coor2, coor3)&lt;br /&gt;
&lt;br /&gt;
    # Get the plane&lt;br /&gt;
    plane = planeFromPoints(p1=coor1, p2=coor2, p3=coor3, vm1=vm1, vm2=vm2, center=center, settings=settings)&lt;br /&gt;
    makePrimitive(plane, name)&lt;br /&gt;
    #cmd.show(&amp;quot;cgo&amp;quot;, &amp;quot;plane*&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    if makepseudo:&lt;br /&gt;
        cmd.pseudoatom(&amp;quot;%s_%s&amp;quot;%(name, &amp;quot;l1&amp;quot;), color=&amp;quot;tv_blue&amp;quot;, pos=coor1)&lt;br /&gt;
        cmd.pseudoatom(&amp;quot;%s_%s&amp;quot;%(name, &amp;quot;l2&amp;quot;), color=&amp;quot;tv_green&amp;quot;, pos=coor2)&lt;br /&gt;
        cmd.pseudoatom(&amp;quot;%s_%s&amp;quot;%(name, &amp;quot;l3&amp;quot;), color=&amp;quot;red&amp;quot;, pos=coor3)&lt;br /&gt;
&lt;br /&gt;
# Extend function to be called inside pymol&lt;br /&gt;
cmd.extend(&amp;quot;make_plane&amp;quot;, make_plane)&lt;br /&gt;
&lt;br /&gt;
def make_plane_points(name,l1=None,l2=None,l3=None, vm1=None, vm2=None, center=True, makepseudo=True, settings={}):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    DESCRIPTION&lt;br /&gt;
    Create a CGO plane from three atomic coordinates&lt;br /&gt;
&lt;br /&gt;
    USAGE&lt;br /&gt;
    make_plane name, l1, l2, l3&lt;br /&gt;
&lt;br /&gt;
    where each xys is a list with floats of x,y,z coordinates&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    if l1==None or l2==None or l3==None:&lt;br /&gt;
        print(&amp;quot;Please provide a list of xyz floats for each 3 positions&amp;quot;)&lt;br /&gt;
        return&lt;br /&gt;
    if type(l1) is not list or type(l2) is not list or type(l3) is not list:&lt;br /&gt;
        print(type(l1),type(l2),type(l3))&lt;br /&gt;
        print(&amp;quot;Please provide 3 list of xyz floats for each 3 positions&amp;quot;)&lt;br /&gt;
        return&lt;br /&gt;
&lt;br /&gt;
    plane = planeFromPoints(p1=l1, p2=l2, p3=l3, vm1=vm1, vm2=vm2, center=center, settings=settings)&lt;br /&gt;
    makePrimitive(plane, name)&lt;br /&gt;
&lt;br /&gt;
    if makepseudo:&lt;br /&gt;
        cmd.pseudoatom(&amp;quot;%s_%s&amp;quot;%(name, &amp;quot;l1&amp;quot;), color=&amp;quot;tv_blue&amp;quot;, pos=l1)&lt;br /&gt;
        cmd.pseudoatom(&amp;quot;%s_%s&amp;quot;%(name, &amp;quot;l2&amp;quot;), color=&amp;quot;tv_green&amp;quot;, pos=l2)&lt;br /&gt;
        cmd.pseudoatom(&amp;quot;%s_%s&amp;quot;%(name, &amp;quot;l3&amp;quot;), color=&amp;quot;red&amp;quot;, pos=l3)&lt;br /&gt;
&lt;br /&gt;
# Extend function to be called inside pymol&lt;br /&gt;
cmd.extend(&amp;quot;make_plane_points&amp;quot;, make_plane_points)&lt;br /&gt;
&lt;br /&gt;
class PlaneWizard(Wizard):&lt;br /&gt;
    def __init__(self):&lt;br /&gt;
        Wizard.__init__(self)&lt;br /&gt;
&lt;br /&gt;
        # some attributes to do with picking&lt;br /&gt;
        self.pick_count = 0&lt;br /&gt;
        self.object_count = 0&lt;br /&gt;
        self.object_prefix = &amp;quot;pw&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        self.selection_mode = cmd.get_setting_legacy(&amp;quot;mouse_selection_mode&amp;quot;)&lt;br /&gt;
        cmd.set(&amp;quot;mouse_selection_mode&amp;quot;,0) # set selection mode to atomic&lt;br /&gt;
        cmd.deselect()&lt;br /&gt;
&lt;br /&gt;
    def reset(self):&lt;br /&gt;
        cmd.delete(self.object_prefix + &amp;quot;*&amp;quot;)&lt;br /&gt;
        cmd.delete(&amp;quot;sele*&amp;quot;)&lt;br /&gt;
        cmd.delete(&amp;quot;_indicate*&amp;quot;)&lt;br /&gt;
        cmd.unpick()&lt;br /&gt;
        cmd.refresh_wizard()&lt;br /&gt;
&lt;br /&gt;
    def delete_all(self):&lt;br /&gt;
        cmd.delete(&amp;quot;plane*&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    def cleanup(self):&lt;br /&gt;
        cmd.set(&amp;quot;mouse_selection_mode&amp;quot;,self.selection_mode) # restore selection mode&lt;br /&gt;
        self.reset()&lt;br /&gt;
        self.delete_all()&lt;br /&gt;
&lt;br /&gt;
    def get_prompt(self):&lt;br /&gt;
        self.prompt = None&lt;br /&gt;
        if self.pick_count == 0:&lt;br /&gt;
            self.prompt = [ 'Please click on the first atom...']&lt;br /&gt;
        elif self.pick_count == 1:&lt;br /&gt;
            self.prompt = [ 'Please click on the second atom...' ]&lt;br /&gt;
        elif self.pick_count == 2:&lt;br /&gt;
            self.prompt = [ 'Please click on the third atom...' ]&lt;br /&gt;
        return self.prompt&lt;br /&gt;
&lt;br /&gt;
    def do_select(self, name):&lt;br /&gt;
        # &amp;quot;edit&amp;quot; only this atom, and not others with the object prefix&lt;br /&gt;
        try:&lt;br /&gt;
            cmd.edit(&amp;quot;%s and not %s*&amp;quot; % (name, self.object_prefix))&lt;br /&gt;
            self.do_pick(0)&lt;br /&gt;
        except pymol.CmdException, pmce:&lt;br /&gt;
            print pmce&lt;br /&gt;
&lt;br /&gt;
    def pickNextAtom(self, atom_name):&lt;br /&gt;
        # transfer the click selection to a named selection&lt;br /&gt;
        cmd.select(atom_name, &amp;quot;(pk1)&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        # delete the click selection&lt;br /&gt;
        cmd.unpick()&lt;br /&gt;
&lt;br /&gt;
        # using the magic of indicate, highlight stuff&lt;br /&gt;
        indicate_selection = &amp;quot;_indicate&amp;quot; + self.object_prefix&lt;br /&gt;
        cmd.select(indicate_selection, atom_name)&lt;br /&gt;
        cmd.enable(indicate_selection)&lt;br /&gt;
&lt;br /&gt;
        self.pick_count += 1&lt;br /&gt;
        self.error = None&lt;br /&gt;
&lt;br /&gt;
        # necessary to force update of the prompt&lt;br /&gt;
        cmd.refresh_wizard()&lt;br /&gt;
&lt;br /&gt;
    def do_pick(self, picked_bond):&lt;br /&gt;
&lt;br /&gt;
        # this shouldn't actually happen if going through the &amp;quot;do_select&amp;quot;&lt;br /&gt;
        if picked_bond:&lt;br /&gt;
            self.error = &amp;quot;Error: please select bonds, not atoms&amp;quot;&lt;br /&gt;
            print self.error&lt;br /&gt;
            return&lt;br /&gt;
&lt;br /&gt;
        atom_name = self.object_prefix + str(self.pick_count)&lt;br /&gt;
        if self.pick_count &amp;lt; 2:&lt;br /&gt;
            self.pickNextAtom(atom_name)&lt;br /&gt;
        else:&lt;br /&gt;
            self.pickNextAtom(atom_name)&lt;br /&gt;
&lt;br /&gt;
            point1 = cmd.get_atom_coords(&amp;quot;(%s%s)&amp;quot; % (self.object_prefix, &amp;quot;0&amp;quot;))&lt;br /&gt;
            point2 = cmd.get_atom_coords(&amp;quot;(%s%s)&amp;quot; % (self.object_prefix, &amp;quot;1&amp;quot;))&lt;br /&gt;
            point3 = cmd.get_atom_coords(&amp;quot;(%s%s)&amp;quot; % (self.object_prefix, &amp;quot;2&amp;quot;))&lt;br /&gt;
            plane = planeFromPoints(point1, point2, point3)&lt;br /&gt;
&lt;br /&gt;
            planeName = &amp;quot;plane-%02d&amp;quot; % self.object_count&lt;br /&gt;
&lt;br /&gt;
            print_info(planeName, point1, point2, point3)&lt;br /&gt;
&lt;br /&gt;
            self.object_count += 1&lt;br /&gt;
            makePrimitive(plane, planeName)&lt;br /&gt;
            cmd.show(&amp;quot;cgo&amp;quot;, &amp;quot;plane*&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
            self.pick_count = 0&lt;br /&gt;
            self.reset()&lt;br /&gt;
&lt;br /&gt;
    def get_panel(self):&lt;br /&gt;
        return [&lt;br /&gt;
            [ 1, 'Plane Wizard',''],&lt;br /&gt;
            [ 2, 'Reset','cmd.get_wizard().reset()'],&lt;br /&gt;
            [ 2, 'Delete All Planes' , 'cmd.get_wizard().delete_all()'],&lt;br /&gt;
            [ 2, 'Done','cmd.set_wizard()'],&lt;br /&gt;
        ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
Plane in a protein&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
reinitialize&lt;br /&gt;
&lt;br /&gt;
fetch 1ubq, async=0&lt;br /&gt;
show_as cartoon, all &lt;br /&gt;
&lt;br /&gt;
import plane&lt;br /&gt;
# Start the wizard, and do manual picking&lt;br /&gt;
cmd.set_wizard(plane.PlaneWizard())&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or by selection&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
reinitialize&lt;br /&gt;
&lt;br /&gt;
fetch 1ubq, async=0&lt;br /&gt;
show_as cartoon, all &lt;br /&gt;
&lt;br /&gt;
import plane&lt;br /&gt;
&lt;br /&gt;
# Set alpha level and color&lt;br /&gt;
#violetpurple: 0.55, 0.25, 0.60 #yellow: 1.0, 1.0, 0.0, #blue: 0.0, 0.0, 1.0 #orange: 1.0, 0.5, 0.0 #forest: 0.2, 0.6, 0.2 #red: 1.0, 0.0, 0.0&lt;br /&gt;
dict = {'ALPHA':0.6, 'COLOR':[0.55, 0.25, 0.60], 'INVERT':True}&lt;br /&gt;
plane.make_plane(name='test', a1='/1ubq//A/24/CA', a2='/1ubq//A/29/CA', a3='/1ubq//A/40/CA', center=False, settings=dict)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or by atom coordinates&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
reinitialize&lt;br /&gt;
&lt;br /&gt;
fetch 1ubq, async=0&lt;br /&gt;
show_as cartoon, all &lt;br /&gt;
&lt;br /&gt;
import plane&lt;br /&gt;
&lt;br /&gt;
# Or  make from atom coordinates&lt;br /&gt;
#plane.make_plane_points(name='test', l1=[35.03, 21.72, 17.07], l2=[37.47, 27.39, 10.67], l3=[37.74, 31.64, 23.71])&lt;br /&gt;
&lt;br /&gt;
# Define plane, 10 angstrom in length&lt;br /&gt;
#plane.make_plane_points(name='p1', l1=[0.0, 10.0, 0.0], l2=[0.0, 0.0, 0.0], l3=[0.0, 0.0, 10.0], center=False, makepseudo=False)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or make a color cube&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
reinitialize&lt;br /&gt;
#violetpurple: 0.55, 0.25, 0.60 #yellow: 1.0, 1.0, 0.0, #blue: 0.0, 0.0, 1.0 #orange: 1.0, 0.5, 0.0 #forest: 0.2, 0.6, 0.2 #red: 1.0, 0.0, 0.0&lt;br /&gt;
&lt;br /&gt;
# YZ Plane, #purple&lt;br /&gt;
dict = {'ALPHA':0.4, 'COLOR':[0.55, 0.25, 0.60], 'INVERT':True}&lt;br /&gt;
plane.make_plane_points(name='p1', l1=[0.0, 10.0, 0.0], l2=[0.0, 0.0, 0.0], l3=[0.0, 0.0, 10.0], center=False, makepseudo=False, settings=dict)&lt;br /&gt;
# YZ Plane, shifted in X, #yellow&lt;br /&gt;
dict = {'ALPHA':0.4, 'COLOR':[1.0, 1.0, 0.0]}&lt;br /&gt;
plane.make_plane_points(name='p6', l1=[10.0, 10.0, 0.0], l2=[10.0, 0.0, 0.0], l3=[10.0, 0.0, 10.0], center=False, makepseudo=False, settings=dict)&lt;br /&gt;
&lt;br /&gt;
# XZ Plane, blue&lt;br /&gt;
dict = {'ALPHA':0.4, 'COLOR':[0.0, 0.0, 1.0]}&lt;br /&gt;
plane.make_plane_points(name='p2', l1=[10.0, 0.0, 0.0], l2=[0.0, 0.0, 0.0], l3=[0.0, 0.0, 10.0], center=False, makepseudo=False, settings=dict)&lt;br /&gt;
# XZ Plane, shifted in Y, #orange&lt;br /&gt;
dict = {'ALPHA':0.4, 'COLOR':[1.0, 0.5, 0.0], 'INVERT':True}&lt;br /&gt;
plane.make_plane_points(name='p5', l1=[10.0, 10.0, 0.0], l2=[0.0, 10.0, 0.0], l3=[0.0, 10.0, 10.0], center=False, makepseudo=False, settings=dict)&lt;br /&gt;
&lt;br /&gt;
# XY Plane, forest&lt;br /&gt;
dict = {'ALPHA':0.4, 'COLOR':[0.2, 0.6, 0.2], 'INVERT':True}&lt;br /&gt;
plane.make_plane_points(name='p4', l1=[10.0, 0.0, 0.0], l2=[0.0, 0.0, 0.0], l3=[0.0, 10.0, 0.0], center=False, makepseudo=False, settings=dict)&lt;br /&gt;
# XY Plane, shifted in Z, red&lt;br /&gt;
dict = {'ALPHA':0.4, 'COLOR':[1.0, 0.0, 0.0]}&lt;br /&gt;
plane.make_plane_points(name='p3', l1=[10.0, 0.0, 10.0], l2=[0.0, 0.0, 10.0], l3=[0.0, 10.0, 10.0], center=False, makepseudo=False, settings=dict)&lt;br /&gt;
&lt;br /&gt;
zoom all&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Script_Library|Plane Wizard]]&lt;br /&gt;
[[Category:Math_Scripts]]&lt;br /&gt;
[[Category:CGO]]&lt;/div&gt;</summary>
		<author><name>Tlinnet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Plane_Wizard&amp;diff=13784</id>
		<title>Plane Wizard</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Plane_Wizard&amp;diff=13784"/>
		<updated>2016-12-26T20:12:01Z</updated>

		<summary type="html">&lt;p&gt;Tlinnet: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
This wizard has a simple purpose - to draw a cgo plane that passes through three points picked by the user. Most of the wizard itself was copied from the measure wizard.&lt;br /&gt;
&lt;br /&gt;
To use, put it in the same directory as the other wizards. This is not quality code, and there may be bugs, but it seems to work okay.&lt;br /&gt;
&lt;br /&gt;
== Original ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import pymol&lt;br /&gt;
from pymol import cmd&lt;br /&gt;
from pymol.wizard import Wizard&lt;br /&gt;
from chempy import cpv&lt;br /&gt;
from pymol.cgo import *&lt;br /&gt;
&lt;br /&gt;
def makePrimitive(cgo, name):&lt;br /&gt;
    az = cmd.get('auto_zoom', quiet=1)&lt;br /&gt;
    cmd.set('auto_zoom', 0, quiet=1)&lt;br /&gt;
    cmd.load_cgo(cgo, name)&lt;br /&gt;
    cmd.set('auto_zoom', az, quiet=1)&lt;br /&gt;
&lt;br /&gt;
def point(p):&lt;br /&gt;
    x, y, z = p&lt;br /&gt;
    return [COLOR, 1, 1, 1, SPHERE, float(x), float(y), float(z), 0.5]&lt;br /&gt;
&lt;br /&gt;
def line(p1, p2):&lt;br /&gt;
    x1, y1, z1 = p1&lt;br /&gt;
    x2, y2, z2 = p2&lt;br /&gt;
    return [CYLINDER, float(x1), float(y1), float(z1), float(x2), float(y2), float(z2), 0.25, 1, 1, 1, 1, 1, 1]&lt;br /&gt;
&lt;br /&gt;
def plane(corner1, corner2, corner3, corner4, normal):&lt;br /&gt;
    planeObj = []&lt;br /&gt;
    planeObj.extend(point(corner1))&lt;br /&gt;
    planeObj.extend(point(corner2))&lt;br /&gt;
    planeObj.extend(point(corner3))&lt;br /&gt;
    planeObj.extend(point(corner4))&lt;br /&gt;
    planeObj.extend(line(corner1, corner2))&lt;br /&gt;
    planeObj.extend(line(corner2, corner3))&lt;br /&gt;
    planeObj.extend(line(corner3, corner4))&lt;br /&gt;
    planeObj.extend(line(corner4, corner1))&lt;br /&gt;
&lt;br /&gt;
    planeObj.extend([COLOR, 0.8, 0.8, 0.8])&lt;br /&gt;
    planeObj.extend([BEGIN, TRIANGLE_STRIP])&lt;br /&gt;
    planeObj.append(NORMAL)&lt;br /&gt;
    planeObj.extend(normal)&lt;br /&gt;
    for corner in [corner1, corner2, corner3, corner4, corner1]:&lt;br /&gt;
        planeObj.append(VERTEX)&lt;br /&gt;
        planeObj.extend(corner)&lt;br /&gt;
    planeObj.append(END)&lt;br /&gt;
    return planeObj&lt;br /&gt;
&lt;br /&gt;
def planeFromPoints(point1, point2, point3, facetSize):&lt;br /&gt;
    v1 = cpv.normalize(cpv.sub(point2, point1))&lt;br /&gt;
    v2 = cpv.normalize(cpv.sub(point3, point1))&lt;br /&gt;
    normal = cpv.cross_product(v1, v2)&lt;br /&gt;
    v2 = cpv.cross_product(normal, v1)&lt;br /&gt;
    x = cpv.scale(v1, facetSize)&lt;br /&gt;
    y = cpv.scale(v2, facetSize)&lt;br /&gt;
    center = point2&lt;br /&gt;
    corner1 = cpv.add(cpv.add(center, x), y)&lt;br /&gt;
    corner2 = cpv.sub(cpv.add(center, x), y)&lt;br /&gt;
    corner3 = cpv.sub(cpv.sub(center, x), y)&lt;br /&gt;
    corner4 = cpv.add(cpv.sub(center, x), y)&lt;br /&gt;
    return plane(corner1, corner2, corner3, corner4, normal)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class PlaneWizard(Wizard):&lt;br /&gt;
&lt;br /&gt;
    def __init__(self):&lt;br /&gt;
        Wizard.__init__(self)&lt;br /&gt;
&lt;br /&gt;
        # some attributes to do with picking&lt;br /&gt;
        self.pick_count = 0&lt;br /&gt;
        self.object_count = 0&lt;br /&gt;
        self.object_prefix = &amp;quot;pw&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        # the plane facet size (the 'radius' of the section of plane we show)&lt;br /&gt;
        self.facetSize = 5&lt;br /&gt;
&lt;br /&gt;
        self.selection_mode = cmd.get_setting_legacy(&amp;quot;mouse_selection_mode&amp;quot;)&lt;br /&gt;
        cmd.set(&amp;quot;mouse_selection_mode&amp;quot;,0) # set selection mode to atomic&lt;br /&gt;
        cmd.deselect()&lt;br /&gt;
&lt;br /&gt;
    def reset(self):&lt;br /&gt;
        cmd.delete(self.object_prefix + &amp;quot;*&amp;quot;)&lt;br /&gt;
        cmd.delete(&amp;quot;sele*&amp;quot;)&lt;br /&gt;
        cmd.delete(&amp;quot;_indicate*&amp;quot;)&lt;br /&gt;
        cmd.unpick()&lt;br /&gt;
        cmd.refresh_wizard()&lt;br /&gt;
&lt;br /&gt;
    def delete_all(self):&lt;br /&gt;
        cmd.delete(&amp;quot;plane*&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    def cleanup(self):&lt;br /&gt;
        cmd.set(&amp;quot;mouse_selection_mode&amp;quot;,self.selection_mode) # restore selection mode&lt;br /&gt;
        self.reset()&lt;br /&gt;
        self.delete_all()&lt;br /&gt;
&lt;br /&gt;
    def get_prompt(self):&lt;br /&gt;
        self.prompt = None&lt;br /&gt;
        if self.pick_count == 0:&lt;br /&gt;
            self.prompt = [ 'Please click on the first atom...']&lt;br /&gt;
        elif self.pick_count == 1:&lt;br /&gt;
            self.prompt = [ 'Please click on the second atom...' ]&lt;br /&gt;
        elif self.pick_count == 2:&lt;br /&gt;
            self.prompt = [ 'Please click on the third atom...' ]&lt;br /&gt;
        return self.prompt&lt;br /&gt;
&lt;br /&gt;
    def do_select(self, name):&lt;br /&gt;
        # &amp;quot;edit&amp;quot; only this atom, and not others with the object prefix&lt;br /&gt;
        try:&lt;br /&gt;
            cmd.edit(&amp;quot;%s and not %s*&amp;quot; % (name, self.object_prefix))&lt;br /&gt;
            self.do_pick(0)&lt;br /&gt;
        except pymol.CmdException, pmce:&lt;br /&gt;
            print pmce&lt;br /&gt;
&lt;br /&gt;
    def pickNextAtom(self, atom_name):&lt;br /&gt;
        # transfer the click selection to a named selection&lt;br /&gt;
        cmd.select(atom_name, &amp;quot;(pk1)&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        # delete the click selection&lt;br /&gt;
        cmd.unpick()&lt;br /&gt;
&lt;br /&gt;
        # using the magic of indicate, highlight stuff&lt;br /&gt;
        indicate_selection = &amp;quot;_indicate&amp;quot; + self.object_prefix&lt;br /&gt;
        cmd.select(indicate_selection, atom_name)&lt;br /&gt;
        cmd.enable(indicate_selection)&lt;br /&gt;
&lt;br /&gt;
        self.pick_count += 1&lt;br /&gt;
        self.error = None&lt;br /&gt;
&lt;br /&gt;
        # necessary to force update of the prompt&lt;br /&gt;
        cmd.refresh_wizard()&lt;br /&gt;
&lt;br /&gt;
    def do_pick(self, picked_bond):&lt;br /&gt;
&lt;br /&gt;
        # this shouldn't actually happen if going through the &amp;quot;do_select&amp;quot;&lt;br /&gt;
        if picked_bond:&lt;br /&gt;
            self.error = &amp;quot;Error: please select bonds, not atoms&amp;quot;&lt;br /&gt;
            print self.error&lt;br /&gt;
            return&lt;br /&gt;
&lt;br /&gt;
        atom_name = self.object_prefix + str(self.pick_count)&lt;br /&gt;
        if self.pick_count &amp;lt; 2:&lt;br /&gt;
            self.pickNextAtom(atom_name)&lt;br /&gt;
        else:&lt;br /&gt;
            self.pickNextAtom(atom_name)&lt;br /&gt;
&lt;br /&gt;
            point1 = cmd.get_atom_coords(&amp;quot;(%s%s)&amp;quot; % (self.object_prefix, &amp;quot;0&amp;quot;))&lt;br /&gt;
            point2 = cmd.get_atom_coords(&amp;quot;(%s%s)&amp;quot; % (self.object_prefix, &amp;quot;1&amp;quot;))&lt;br /&gt;
            point3 = cmd.get_atom_coords(&amp;quot;(%s%s)&amp;quot; % (self.object_prefix, &amp;quot;2&amp;quot;))&lt;br /&gt;
            plane = planeFromPoints(point1, point2, point3, self.facetSize)&lt;br /&gt;
&lt;br /&gt;
            planeName = &amp;quot;plane-%02d&amp;quot; % self.object_count&lt;br /&gt;
            self.object_count += 1&lt;br /&gt;
            makePrimitive(plane, planeName)&lt;br /&gt;
            cmd.show(&amp;quot;cgo&amp;quot;, &amp;quot;plane*&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
            self.pick_count = 0&lt;br /&gt;
            self.reset()&lt;br /&gt;
&lt;br /&gt;
    def get_panel(self):&lt;br /&gt;
        return [&lt;br /&gt;
            [ 1, 'Plane Wizard',''],&lt;br /&gt;
            [ 2, 'Reset','cmd.get_wizard().reset()'],&lt;br /&gt;
            [ 2, 'Delete All Planes' , 'cmd.get_wizard().delete_all()'],&lt;br /&gt;
            [ 2, 'Done','cmd.set_wizard()'],&lt;br /&gt;
        ]&lt;br /&gt;
&lt;br /&gt;
# create an instance&lt;br /&gt;
&lt;br /&gt;
wiz = PlaneWizard()&lt;br /&gt;
&lt;br /&gt;
# make this the active wizard&lt;br /&gt;
&lt;br /&gt;
cmd.set_wizard(wiz)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Modification==&lt;br /&gt;
Small modifications to the same code as above.&lt;br /&gt;
&lt;br /&gt;
=== Gallery ===&lt;br /&gt;
&amp;lt;gallery heights=&amp;quot;240px&amp;quot; widths=&amp;quot;340px&amp;quot;&amp;gt;&lt;br /&gt;
Image:Plane_img1.png | Drawing a plane in a protein&lt;br /&gt;
Image:Plane_img2.png | Drawing 6 planes in a box&lt;br /&gt;
Image:Plane_img3.png | Drawing 6 planes in a box&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== plane.py===&lt;br /&gt;
Make a '''plane.py''' file in the same directory where you are working&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
'''&lt;br /&gt;
Described at PyMOL wiki:&lt;br /&gt;
https://pymolwiki.org/index.php/Plane_Wizard&lt;br /&gt;
&lt;br /&gt;
Authors : Troels Schwarz-Linnet&lt;br /&gt;
Date    : Dec 2016&lt;br /&gt;
Modified: From previous contributors. &lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
import pymol&lt;br /&gt;
from pymol import cmd&lt;br /&gt;
from pymol.wizard import Wizard&lt;br /&gt;
from chempy import cpv&lt;br /&gt;
from pymol.cgo import COLOR, SPHERE, CYLINDER, BEGIN, TRIANGLE_STRIP, NORMAL, VERTEX, END, ALPHA&lt;br /&gt;
&lt;br /&gt;
def makePrimitive(cgo, name):&lt;br /&gt;
    az = cmd.get('auto_zoom', quiet=1)&lt;br /&gt;
    cmd.set('auto_zoom', 0, quiet=1)&lt;br /&gt;
    cmd.load_cgo(cgo, name)&lt;br /&gt;
    cmd.set('auto_zoom', az, quiet=1)&lt;br /&gt;
&lt;br /&gt;
def point(p):&lt;br /&gt;
    x, y, z = p&lt;br /&gt;
    return [COLOR, 1, 1, 1, SPHERE, float(x), float(y), float(z), 0.5]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def line(p1, p2):&lt;br /&gt;
    x1, y1, z1 = p1&lt;br /&gt;
    x2, y2, z2 = p2&lt;br /&gt;
    return [CYLINDER, float(x1), float(y1), float(z1), float(x2), float(y2), float(z2), 0.25, 1, 1, 1, 1, 1, 1]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def plane(corner1, corner2, corner3, corner4, normal, settings):&lt;br /&gt;
    planeObj = []&lt;br /&gt;
    planeObj.extend(point(corner1))&lt;br /&gt;
    planeObj.extend(point(corner2))&lt;br /&gt;
    planeObj.extend(point(corner3))&lt;br /&gt;
    planeObj.extend(point(corner4))&lt;br /&gt;
    planeObj.extend(line(corner1, corner2))&lt;br /&gt;
    planeObj.extend(line(corner2, corner3))&lt;br /&gt;
    planeObj.extend(line(corner3, corner4))&lt;br /&gt;
    planeObj.extend(line(corner4, corner1))&lt;br /&gt;
&lt;br /&gt;
    # Make settings&lt;br /&gt;
    if 'ALPHA' in settings:&lt;br /&gt;
        planeObj.extend([ALPHA, settings['ALPHA']])&lt;br /&gt;
&lt;br /&gt;
    if 'COLOR' in settings:&lt;br /&gt;
        print settings['COLOR']&lt;br /&gt;
        planeObj.extend([COLOR, settings['COLOR'][0], settings['COLOR'][1], settings['COLOR'][2]])&lt;br /&gt;
    else:&lt;br /&gt;
        planeObj.extend([COLOR, 0.8, 0.8, 0.8]) # greyish&lt;br /&gt;
&lt;br /&gt;
    planeObj.extend([BEGIN, TRIANGLE_STRIP])&lt;br /&gt;
    planeObj.append(NORMAL)&lt;br /&gt;
&lt;br /&gt;
    if 'INVERT' in settings:&lt;br /&gt;
        if settings['INVERT']==True:&lt;br /&gt;
            planeObj.extend(cpv.negate(normal))&lt;br /&gt;
        else:&lt;br /&gt;
            planeObj.extend(normal)&lt;br /&gt;
    else:&lt;br /&gt;
        planeObj.extend(normal)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    for corner in [corner1, corner2, corner3, corner4, corner1]:&lt;br /&gt;
        planeObj.append(VERTEX)&lt;br /&gt;
        planeObj.extend(corner)&lt;br /&gt;
    planeObj.append(END)&lt;br /&gt;
    return planeObj&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def planeFromPoints(p1, p2, p3, vm1=None, vm2=None, center=True, settings={}):&lt;br /&gt;
    v1 = cpv.sub(p1, p2)&lt;br /&gt;
    v2 = cpv.sub(p3, p2)&lt;br /&gt;
    normal = cpv.cross_product(v1, v2)&lt;br /&gt;
&lt;br /&gt;
    if vm1!=None:&lt;br /&gt;
        v1 = cpv.scale(cpv.normalize(v1), vm1)&lt;br /&gt;
    if vm2!=None:&lt;br /&gt;
        v2 = cpv.scale(cpv.normalize(v2), vm2)&lt;br /&gt;
&lt;br /&gt;
    centrum = p2&lt;br /&gt;
    if center:&lt;br /&gt;
        corner1 = cpv.add(cpv.add(centrum, v1), v2)&lt;br /&gt;
        corner2 = cpv.sub(cpv.add(centrum, v1), v2)&lt;br /&gt;
        corner3 = cpv.sub(cpv.sub(centrum, v1), v2)&lt;br /&gt;
        corner4 = cpv.add(cpv.sub(centrum, v1), v2)&lt;br /&gt;
    else:&lt;br /&gt;
        corner1 = cpv.add(cpv.add(centrum, v1), v2)&lt;br /&gt;
        corner2 = cpv.add(centrum, v1)&lt;br /&gt;
        corner3 = centrum&lt;br /&gt;
        corner4 = cpv.add(centrum, v2)&lt;br /&gt;
&lt;br /&gt;
    return plane(corner1, corner2, corner3, corner4, normal, settings)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def print_info(name, coor1, coor2, coor3):&lt;br /&gt;
    cs1 = (map(float, [ '%.2f' % elem for elem in coor1 ]) )&lt;br /&gt;
    cs2 = (map(float, [ '%.2f' % elem for elem in coor2 ]) )&lt;br /&gt;
    cs3 = (map(float, [ '%.2f' % elem for elem in coor3 ]) )&lt;br /&gt;
    print(&amp;quot;You can also use the function calls with these coordinates&amp;quot;)&lt;br /&gt;
    print(&amp;quot;make_plane_points(name='%s', l1=%s, l2=%s, l3=%s)&amp;quot;%(name, cs1, cs2, cs3))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def make_plane(name,a1='(pk1)',a2='(pk2)',a3='(pk3)', vm1=None, vm2=None, center=True, makepseudo=True, settings={}):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    DESCRIPTION&lt;br /&gt;
    Create a CGO plane from three atomic coordinates&lt;br /&gt;
&lt;br /&gt;
    USAGE&lt;br /&gt;
    make_plane name, a1, a2, a3&lt;br /&gt;
&lt;br /&gt;
    where each atom is a standard PyMOL selection (defaults to pk1,pk2 and pk3)&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    # get coordinates from atom selections&lt;br /&gt;
    coor1 = cmd.get_model(a1).get_coord_list()[0]&lt;br /&gt;
    coor2 = cmd.get_model(a2).get_coord_list()[0]&lt;br /&gt;
    coor3 = cmd.get_model(a3).get_coord_list()[0]&lt;br /&gt;
&lt;br /&gt;
    # Help with alternative&lt;br /&gt;
    print_info(name, coor1, coor2, coor3)&lt;br /&gt;
&lt;br /&gt;
    # Get the plane&lt;br /&gt;
    plane = planeFromPoints(p1=coor1, p2=coor2, p3=coor3, vm1=vm1, vm2=vm2, center=center, settings=settings)&lt;br /&gt;
    makePrimitive(plane, name)&lt;br /&gt;
    #cmd.show(&amp;quot;cgo&amp;quot;, &amp;quot;plane*&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    if makepseudo:&lt;br /&gt;
        cmd.pseudoatom(&amp;quot;%s_%s&amp;quot;%(name, &amp;quot;l1&amp;quot;), color=&amp;quot;tv_blue&amp;quot;, pos=coor1)&lt;br /&gt;
        cmd.pseudoatom(&amp;quot;%s_%s&amp;quot;%(name, &amp;quot;l2&amp;quot;), color=&amp;quot;tv_green&amp;quot;, pos=coor2)&lt;br /&gt;
        cmd.pseudoatom(&amp;quot;%s_%s&amp;quot;%(name, &amp;quot;l3&amp;quot;), color=&amp;quot;red&amp;quot;, pos=coor3)&lt;br /&gt;
&lt;br /&gt;
# Extend function to be called inside pymol&lt;br /&gt;
cmd.extend(&amp;quot;make_plane&amp;quot;, make_plane)&lt;br /&gt;
&lt;br /&gt;
def make_plane_points(name,l1=None,l2=None,l3=None, vm1=None, vm2=None, center=True, makepseudo=True, settings={}):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    DESCRIPTION&lt;br /&gt;
    Create a CGO plane from three atomic coordinates&lt;br /&gt;
&lt;br /&gt;
    USAGE&lt;br /&gt;
    make_plane name, l1, l2, l3&lt;br /&gt;
&lt;br /&gt;
    where each xys is a list with floats of x,y,z coordinates&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    if l1==None or l2==None or l3==None:&lt;br /&gt;
        print(&amp;quot;Please provide a list of xyz floats for each 3 positions&amp;quot;)&lt;br /&gt;
        return&lt;br /&gt;
    if type(l1) is not list or type(l2) is not list or type(l3) is not list:&lt;br /&gt;
        print(type(l1),type(l2),type(l3))&lt;br /&gt;
        print(&amp;quot;Please provide 3 list of xyz floats for each 3 positions&amp;quot;)&lt;br /&gt;
        return&lt;br /&gt;
&lt;br /&gt;
    plane = planeFromPoints(p1=l1, p2=l2, p3=l3, vm1=vm1, vm2=vm2, center=center, settings=settings)&lt;br /&gt;
    makePrimitive(plane, name)&lt;br /&gt;
&lt;br /&gt;
    if makepseudo:&lt;br /&gt;
        cmd.pseudoatom(&amp;quot;%s_%s&amp;quot;%(name, &amp;quot;l1&amp;quot;), color=&amp;quot;tv_blue&amp;quot;, pos=l1)&lt;br /&gt;
        cmd.pseudoatom(&amp;quot;%s_%s&amp;quot;%(name, &amp;quot;l2&amp;quot;), color=&amp;quot;tv_green&amp;quot;, pos=l2)&lt;br /&gt;
        cmd.pseudoatom(&amp;quot;%s_%s&amp;quot;%(name, &amp;quot;l3&amp;quot;), color=&amp;quot;red&amp;quot;, pos=l3)&lt;br /&gt;
&lt;br /&gt;
# Extend function to be called inside pymol&lt;br /&gt;
cmd.extend(&amp;quot;make_plane_points&amp;quot;, make_plane_points)&lt;br /&gt;
&lt;br /&gt;
class PlaneWizard(Wizard):&lt;br /&gt;
    def __init__(self):&lt;br /&gt;
        Wizard.__init__(self)&lt;br /&gt;
&lt;br /&gt;
        # some attributes to do with picking&lt;br /&gt;
        self.pick_count = 0&lt;br /&gt;
        self.object_count = 0&lt;br /&gt;
        self.object_prefix = &amp;quot;pw&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        self.selection_mode = cmd.get_setting_legacy(&amp;quot;mouse_selection_mode&amp;quot;)&lt;br /&gt;
        cmd.set(&amp;quot;mouse_selection_mode&amp;quot;,0) # set selection mode to atomic&lt;br /&gt;
        cmd.deselect()&lt;br /&gt;
&lt;br /&gt;
    def reset(self):&lt;br /&gt;
        cmd.delete(self.object_prefix + &amp;quot;*&amp;quot;)&lt;br /&gt;
        cmd.delete(&amp;quot;sele*&amp;quot;)&lt;br /&gt;
        cmd.delete(&amp;quot;_indicate*&amp;quot;)&lt;br /&gt;
        cmd.unpick()&lt;br /&gt;
        cmd.refresh_wizard()&lt;br /&gt;
&lt;br /&gt;
    def delete_all(self):&lt;br /&gt;
        cmd.delete(&amp;quot;plane*&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    def cleanup(self):&lt;br /&gt;
        cmd.set(&amp;quot;mouse_selection_mode&amp;quot;,self.selection_mode) # restore selection mode&lt;br /&gt;
        self.reset()&lt;br /&gt;
        self.delete_all()&lt;br /&gt;
&lt;br /&gt;
    def get_prompt(self):&lt;br /&gt;
        self.prompt = None&lt;br /&gt;
        if self.pick_count == 0:&lt;br /&gt;
            self.prompt = [ 'Please click on the first atom...']&lt;br /&gt;
        elif self.pick_count == 1:&lt;br /&gt;
            self.prompt = [ 'Please click on the second atom...' ]&lt;br /&gt;
        elif self.pick_count == 2:&lt;br /&gt;
            self.prompt = [ 'Please click on the third atom...' ]&lt;br /&gt;
        return self.prompt&lt;br /&gt;
&lt;br /&gt;
    def do_select(self, name):&lt;br /&gt;
        # &amp;quot;edit&amp;quot; only this atom, and not others with the object prefix&lt;br /&gt;
        try:&lt;br /&gt;
            cmd.edit(&amp;quot;%s and not %s*&amp;quot; % (name, self.object_prefix))&lt;br /&gt;
            self.do_pick(0)&lt;br /&gt;
        except pymol.CmdException, pmce:&lt;br /&gt;
            print pmce&lt;br /&gt;
&lt;br /&gt;
    def pickNextAtom(self, atom_name):&lt;br /&gt;
        # transfer the click selection to a named selection&lt;br /&gt;
        cmd.select(atom_name, &amp;quot;(pk1)&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        # delete the click selection&lt;br /&gt;
        cmd.unpick()&lt;br /&gt;
&lt;br /&gt;
        # using the magic of indicate, highlight stuff&lt;br /&gt;
        indicate_selection = &amp;quot;_indicate&amp;quot; + self.object_prefix&lt;br /&gt;
        cmd.select(indicate_selection, atom_name)&lt;br /&gt;
        cmd.enable(indicate_selection)&lt;br /&gt;
&lt;br /&gt;
        self.pick_count += 1&lt;br /&gt;
        self.error = None&lt;br /&gt;
&lt;br /&gt;
        # necessary to force update of the prompt&lt;br /&gt;
        cmd.refresh_wizard()&lt;br /&gt;
&lt;br /&gt;
    def do_pick(self, picked_bond):&lt;br /&gt;
&lt;br /&gt;
        # this shouldn't actually happen if going through the &amp;quot;do_select&amp;quot;&lt;br /&gt;
        if picked_bond:&lt;br /&gt;
            self.error = &amp;quot;Error: please select bonds, not atoms&amp;quot;&lt;br /&gt;
            print self.error&lt;br /&gt;
            return&lt;br /&gt;
&lt;br /&gt;
        atom_name = self.object_prefix + str(self.pick_count)&lt;br /&gt;
        if self.pick_count &amp;lt; 2:&lt;br /&gt;
            self.pickNextAtom(atom_name)&lt;br /&gt;
        else:&lt;br /&gt;
            self.pickNextAtom(atom_name)&lt;br /&gt;
&lt;br /&gt;
            point1 = cmd.get_atom_coords(&amp;quot;(%s%s)&amp;quot; % (self.object_prefix, &amp;quot;0&amp;quot;))&lt;br /&gt;
            point2 = cmd.get_atom_coords(&amp;quot;(%s%s)&amp;quot; % (self.object_prefix, &amp;quot;1&amp;quot;))&lt;br /&gt;
            point3 = cmd.get_atom_coords(&amp;quot;(%s%s)&amp;quot; % (self.object_prefix, &amp;quot;2&amp;quot;))&lt;br /&gt;
            plane = planeFromPoints(point1, point2, point3)&lt;br /&gt;
&lt;br /&gt;
            planeName = &amp;quot;plane-%02d&amp;quot; % self.object_count&lt;br /&gt;
&lt;br /&gt;
            print_info(planeName, point1, point2, point3)&lt;br /&gt;
&lt;br /&gt;
            self.object_count += 1&lt;br /&gt;
            makePrimitive(plane, planeName)&lt;br /&gt;
            cmd.show(&amp;quot;cgo&amp;quot;, &amp;quot;plane*&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
            self.pick_count = 0&lt;br /&gt;
            self.reset()&lt;br /&gt;
&lt;br /&gt;
    def get_panel(self):&lt;br /&gt;
        return [&lt;br /&gt;
            [ 1, 'Plane Wizard',''],&lt;br /&gt;
            [ 2, 'Reset','cmd.get_wizard().reset()'],&lt;br /&gt;
            [ 2, 'Delete All Planes' , 'cmd.get_wizard().delete_all()'],&lt;br /&gt;
            [ 2, 'Done','cmd.set_wizard()'],&lt;br /&gt;
        ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
Plane in a protein&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
reinitialize&lt;br /&gt;
&lt;br /&gt;
fetch 1ubq, async=0&lt;br /&gt;
show_as cartoon, all &lt;br /&gt;
&lt;br /&gt;
import plane&lt;br /&gt;
# Start the wizard, and do manual picking&lt;br /&gt;
cmd.set_wizard(plane.PlaneWizard())&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or by selection&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
reinitialize&lt;br /&gt;
&lt;br /&gt;
fetch 1ubq, async=0&lt;br /&gt;
show_as cartoon, all &lt;br /&gt;
&lt;br /&gt;
import plane&lt;br /&gt;
&lt;br /&gt;
# Set alpha level and color&lt;br /&gt;
#violetpurple: 0.55, 0.25, 0.60 #yellow: 1.0, 1.0, 0.0, #blue: 0.0, 0.0, 1.0 #orange: 1.0, 0.5, 0.0 #forest: 0.2, 0.6, 0.2 #red: 1.0, 0.0, 0.0&lt;br /&gt;
dict = {'ALPHA':0.6, 'COLOR':[0.55, 0.25, 0.60], 'INVERT':True}&lt;br /&gt;
plane.make_plane(name='test', a1='/1ubq//A/24/CA', a2='/1ubq//A/29/CA', a3='/1ubq//A/40/CA', center=False, settings=dict)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or by atom coordinates&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
reinitialize&lt;br /&gt;
&lt;br /&gt;
fetch 1ubq, async=0&lt;br /&gt;
show_as cartoon, all &lt;br /&gt;
&lt;br /&gt;
import plane&lt;br /&gt;
&lt;br /&gt;
# Or  make from atom coordinates&lt;br /&gt;
#plane.make_plane_points(name='test', l1=[35.03, 21.72, 17.07], l2=[37.47, 27.39, 10.67], l3=[37.74, 31.64, 23.71])&lt;br /&gt;
&lt;br /&gt;
# Define plane, 10 angstrom in length&lt;br /&gt;
#plane.make_plane_points(name='p1', l1=[0.0, 10.0, 0.0], l2=[0.0, 0.0, 0.0], l3=[0.0, 0.0, 10.0], center=False, makepseudo=False)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or make a color cube&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
reinitialize&lt;br /&gt;
#violetpurple: 0.55, 0.25, 0.60 #yellow: 1.0, 1.0, 0.0, #blue: 0.0, 0.0, 1.0 #orange: 1.0, 0.5, 0.0 #forest: 0.2, 0.6, 0.2 #red: 1.0, 0.0, 0.0&lt;br /&gt;
&lt;br /&gt;
# YZ Plane, #purple&lt;br /&gt;
dict = {'ALPHA':0.4, 'COLOR':[0.55, 0.25, 0.60], 'INVERT':True}&lt;br /&gt;
plane.make_plane_points(name='p1', l1=[0.0, 10.0, 0.0], l2=[0.0, 0.0, 0.0], l3=[0.0, 0.0, 10.0], center=False, makepseudo=False, settings=dict)&lt;br /&gt;
# YZ Plane, shifted in X, #yellow&lt;br /&gt;
dict = {'ALPHA':0.4, 'COLOR':[1.0, 1.0, 0.0]}&lt;br /&gt;
plane.make_plane_points(name='p6', l1=[10.0, 10.0, 0.0], l2=[10.0, 0.0, 0.0], l3=[10.0, 0.0, 10.0], center=False, makepseudo=False, settings=dict)&lt;br /&gt;
&lt;br /&gt;
# XZ Plane, blue&lt;br /&gt;
dict = {'ALPHA':0.4, 'COLOR':[0.0, 0.0, 1.0]}&lt;br /&gt;
plane.make_plane_points(name='p2', l1=[10.0, 0.0, 0.0], l2=[0.0, 0.0, 0.0], l3=[0.0, 0.0, 10.0], center=False, makepseudo=False, settings=dict)&lt;br /&gt;
# XZ Plane, shifted in Y, #orange&lt;br /&gt;
dict = {'ALPHA':0.4, 'COLOR':[1.0, 0.5, 0.0], 'INVERT':True}&lt;br /&gt;
plane.make_plane_points(name='p5', l1=[10.0, 10.0, 0.0], l2=[0.0, 10.0, 0.0], l3=[0.0, 10.0, 10.0], center=False, makepseudo=False, settings=dict)&lt;br /&gt;
&lt;br /&gt;
# XY Plane, forest&lt;br /&gt;
dict = {'ALPHA':0.4, 'COLOR':[0.2, 0.6, 0.2], 'INVERT':True}&lt;br /&gt;
plane.make_plane_points(name='p4', l1=[10.0, 0.0, 0.0], l2=[0.0, 0.0, 0.0], l3=[0.0, 10.0, 0.0], center=False, makepseudo=False, settings=dict)&lt;br /&gt;
# XY Plane, shifted in Z, red&lt;br /&gt;
dict = {'ALPHA':0.4, 'COLOR':[1.0, 0.0, 0.0]}&lt;br /&gt;
plane.make_plane_points(name='p3', l1=[10.0, 0.0, 10.0], l2=[0.0, 0.0, 10.0], l3=[0.0, 10.0, 10.0], center=False, makepseudo=False, settings=dict)&lt;br /&gt;
&lt;br /&gt;
zoom all&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Script_Library|Plane Wizard]]&lt;br /&gt;
[[Category:Math_Scripts]]&lt;br /&gt;
[[Category:CGO]]&lt;/div&gt;</summary>
		<author><name>Tlinnet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Plane_Wizard&amp;diff=13783</id>
		<title>Plane Wizard</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Plane_Wizard&amp;diff=13783"/>
		<updated>2016-12-26T20:04:53Z</updated>

		<summary type="html">&lt;p&gt;Tlinnet: /* Gallery */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
This wizard has a simple purpose - to draw a cgo plane that passes through three points picked by the user. Most of the wizard itself was copied from the measure wizard.&lt;br /&gt;
&lt;br /&gt;
To use, put it in the same directory as the other wizards. This is not quality code, and there may be bugs, but it seems to work okay.&lt;br /&gt;
&lt;br /&gt;
== Original ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import pymol&lt;br /&gt;
from pymol import cmd&lt;br /&gt;
from pymol.wizard import Wizard&lt;br /&gt;
from chempy import cpv&lt;br /&gt;
from pymol.cgo import *&lt;br /&gt;
&lt;br /&gt;
def makePrimitive(cgo, name):&lt;br /&gt;
    az = cmd.get('auto_zoom', quiet=1)&lt;br /&gt;
    cmd.set('auto_zoom', 0, quiet=1)&lt;br /&gt;
    cmd.load_cgo(cgo, name)&lt;br /&gt;
    cmd.set('auto_zoom', az, quiet=1)&lt;br /&gt;
&lt;br /&gt;
def point(p):&lt;br /&gt;
    x, y, z = p&lt;br /&gt;
    return [COLOR, 1, 1, 1, SPHERE, float(x), float(y), float(z), 0.5]&lt;br /&gt;
&lt;br /&gt;
def line(p1, p2):&lt;br /&gt;
    x1, y1, z1 = p1&lt;br /&gt;
    x2, y2, z2 = p2&lt;br /&gt;
    return [CYLINDER, float(x1), float(y1), float(z1), float(x2), float(y2), float(z2), 0.25, 1, 1, 1, 1, 1, 1]&lt;br /&gt;
&lt;br /&gt;
def plane(corner1, corner2, corner3, corner4, normal):&lt;br /&gt;
    planeObj = []&lt;br /&gt;
    planeObj.extend(point(corner1))&lt;br /&gt;
    planeObj.extend(point(corner2))&lt;br /&gt;
    planeObj.extend(point(corner3))&lt;br /&gt;
    planeObj.extend(point(corner4))&lt;br /&gt;
    planeObj.extend(line(corner1, corner2))&lt;br /&gt;
    planeObj.extend(line(corner2, corner3))&lt;br /&gt;
    planeObj.extend(line(corner3, corner4))&lt;br /&gt;
    planeObj.extend(line(corner4, corner1))&lt;br /&gt;
&lt;br /&gt;
    planeObj.extend([COLOR, 0.8, 0.8, 0.8])&lt;br /&gt;
    planeObj.extend([BEGIN, TRIANGLE_STRIP])&lt;br /&gt;
    planeObj.append(NORMAL)&lt;br /&gt;
    planeObj.extend(normal)&lt;br /&gt;
    for corner in [corner1, corner2, corner3, corner4, corner1]:&lt;br /&gt;
        planeObj.append(VERTEX)&lt;br /&gt;
        planeObj.extend(corner)&lt;br /&gt;
    planeObj.append(END)&lt;br /&gt;
    return planeObj&lt;br /&gt;
&lt;br /&gt;
def planeFromPoints(point1, point2, point3, facetSize):&lt;br /&gt;
    v1 = cpv.normalize(cpv.sub(point2, point1))&lt;br /&gt;
    v2 = cpv.normalize(cpv.sub(point3, point1))&lt;br /&gt;
    normal = cpv.cross_product(v1, v2)&lt;br /&gt;
    v2 = cpv.cross_product(normal, v1)&lt;br /&gt;
    x = cpv.scale(v1, facetSize)&lt;br /&gt;
    y = cpv.scale(v2, facetSize)&lt;br /&gt;
    center = point2&lt;br /&gt;
    corner1 = cpv.add(cpv.add(center, x), y)&lt;br /&gt;
    corner2 = cpv.sub(cpv.add(center, x), y)&lt;br /&gt;
    corner3 = cpv.sub(cpv.sub(center, x), y)&lt;br /&gt;
    corner4 = cpv.add(cpv.sub(center, x), y)&lt;br /&gt;
    return plane(corner1, corner2, corner3, corner4, normal)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class PlaneWizard(Wizard):&lt;br /&gt;
&lt;br /&gt;
    def __init__(self):&lt;br /&gt;
        Wizard.__init__(self)&lt;br /&gt;
&lt;br /&gt;
        # some attributes to do with picking&lt;br /&gt;
        self.pick_count = 0&lt;br /&gt;
        self.object_count = 0&lt;br /&gt;
        self.object_prefix = &amp;quot;pw&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        # the plane facet size (the 'radius' of the section of plane we show)&lt;br /&gt;
        self.facetSize = 5&lt;br /&gt;
&lt;br /&gt;
        self.selection_mode = cmd.get_setting_legacy(&amp;quot;mouse_selection_mode&amp;quot;)&lt;br /&gt;
        cmd.set(&amp;quot;mouse_selection_mode&amp;quot;,0) # set selection mode to atomic&lt;br /&gt;
        cmd.deselect()&lt;br /&gt;
&lt;br /&gt;
    def reset(self):&lt;br /&gt;
        cmd.delete(self.object_prefix + &amp;quot;*&amp;quot;)&lt;br /&gt;
        cmd.delete(&amp;quot;sele*&amp;quot;)&lt;br /&gt;
        cmd.delete(&amp;quot;_indicate*&amp;quot;)&lt;br /&gt;
        cmd.unpick()&lt;br /&gt;
        cmd.refresh_wizard()&lt;br /&gt;
&lt;br /&gt;
    def delete_all(self):&lt;br /&gt;
        cmd.delete(&amp;quot;plane*&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    def cleanup(self):&lt;br /&gt;
        cmd.set(&amp;quot;mouse_selection_mode&amp;quot;,self.selection_mode) # restore selection mode&lt;br /&gt;
        self.reset()&lt;br /&gt;
        self.delete_all()&lt;br /&gt;
&lt;br /&gt;
    def get_prompt(self):&lt;br /&gt;
        self.prompt = None&lt;br /&gt;
        if self.pick_count == 0:&lt;br /&gt;
            self.prompt = [ 'Please click on the first atom...']&lt;br /&gt;
        elif self.pick_count == 1:&lt;br /&gt;
            self.prompt = [ 'Please click on the second atom...' ]&lt;br /&gt;
        elif self.pick_count == 2:&lt;br /&gt;
            self.prompt = [ 'Please click on the third atom...' ]&lt;br /&gt;
        return self.prompt&lt;br /&gt;
&lt;br /&gt;
    def do_select(self, name):&lt;br /&gt;
        # &amp;quot;edit&amp;quot; only this atom, and not others with the object prefix&lt;br /&gt;
        try:&lt;br /&gt;
            cmd.edit(&amp;quot;%s and not %s*&amp;quot; % (name, self.object_prefix))&lt;br /&gt;
            self.do_pick(0)&lt;br /&gt;
        except pymol.CmdException, pmce:&lt;br /&gt;
            print pmce&lt;br /&gt;
&lt;br /&gt;
    def pickNextAtom(self, atom_name):&lt;br /&gt;
        # transfer the click selection to a named selection&lt;br /&gt;
        cmd.select(atom_name, &amp;quot;(pk1)&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        # delete the click selection&lt;br /&gt;
        cmd.unpick()&lt;br /&gt;
&lt;br /&gt;
        # using the magic of indicate, highlight stuff&lt;br /&gt;
        indicate_selection = &amp;quot;_indicate&amp;quot; + self.object_prefix&lt;br /&gt;
        cmd.select(indicate_selection, atom_name)&lt;br /&gt;
        cmd.enable(indicate_selection)&lt;br /&gt;
&lt;br /&gt;
        self.pick_count += 1&lt;br /&gt;
        self.error = None&lt;br /&gt;
&lt;br /&gt;
        # necessary to force update of the prompt&lt;br /&gt;
        cmd.refresh_wizard()&lt;br /&gt;
&lt;br /&gt;
    def do_pick(self, picked_bond):&lt;br /&gt;
&lt;br /&gt;
        # this shouldn't actually happen if going through the &amp;quot;do_select&amp;quot;&lt;br /&gt;
        if picked_bond:&lt;br /&gt;
            self.error = &amp;quot;Error: please select bonds, not atoms&amp;quot;&lt;br /&gt;
            print self.error&lt;br /&gt;
            return&lt;br /&gt;
&lt;br /&gt;
        atom_name = self.object_prefix + str(self.pick_count)&lt;br /&gt;
        if self.pick_count &amp;lt; 2:&lt;br /&gt;
            self.pickNextAtom(atom_name)&lt;br /&gt;
        else:&lt;br /&gt;
            self.pickNextAtom(atom_name)&lt;br /&gt;
&lt;br /&gt;
            point1 = cmd.get_atom_coords(&amp;quot;(%s%s)&amp;quot; % (self.object_prefix, &amp;quot;0&amp;quot;))&lt;br /&gt;
            point2 = cmd.get_atom_coords(&amp;quot;(%s%s)&amp;quot; % (self.object_prefix, &amp;quot;1&amp;quot;))&lt;br /&gt;
            point3 = cmd.get_atom_coords(&amp;quot;(%s%s)&amp;quot; % (self.object_prefix, &amp;quot;2&amp;quot;))&lt;br /&gt;
            plane = planeFromPoints(point1, point2, point3, self.facetSize)&lt;br /&gt;
&lt;br /&gt;
            planeName = &amp;quot;plane-%02d&amp;quot; % self.object_count&lt;br /&gt;
            self.object_count += 1&lt;br /&gt;
            makePrimitive(plane, planeName)&lt;br /&gt;
            cmd.show(&amp;quot;cgo&amp;quot;, &amp;quot;plane*&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
            self.pick_count = 0&lt;br /&gt;
            self.reset()&lt;br /&gt;
&lt;br /&gt;
    def get_panel(self):&lt;br /&gt;
        return [&lt;br /&gt;
            [ 1, 'Plane Wizard',''],&lt;br /&gt;
            [ 2, 'Reset','cmd.get_wizard().reset()'],&lt;br /&gt;
            [ 2, 'Delete All Planes' , 'cmd.get_wizard().delete_all()'],&lt;br /&gt;
            [ 2, 'Done','cmd.set_wizard()'],&lt;br /&gt;
        ]&lt;br /&gt;
&lt;br /&gt;
# create an instance&lt;br /&gt;
&lt;br /&gt;
wiz = PlaneWizard()&lt;br /&gt;
&lt;br /&gt;
# make this the active wizard&lt;br /&gt;
&lt;br /&gt;
cmd.set_wizard(wiz)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Modification==&lt;br /&gt;
Small modifications to the same code as above.&lt;br /&gt;
&lt;br /&gt;
=== Gallery ===&lt;br /&gt;
&amp;lt;gallery heights=&amp;quot;240px&amp;quot; widths=&amp;quot;340px&amp;quot;&amp;gt;&lt;br /&gt;
Image:Plane_img1.png | Drawing a plane in a protein&lt;br /&gt;
Image:Plane_img2.png | Drawing 6 planes in a box&lt;br /&gt;
Image:Plane_img3.png | Drawing 6 planes in a box&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Script_Library|Plane Wizard]]&lt;br /&gt;
[[Category:Math_Scripts]]&lt;br /&gt;
[[Category:CGO]]&lt;/div&gt;</summary>
		<author><name>Tlinnet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Plane_Wizard&amp;diff=13782</id>
		<title>Plane Wizard</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Plane_Wizard&amp;diff=13782"/>
		<updated>2016-12-26T20:04:23Z</updated>

		<summary type="html">&lt;p&gt;Tlinnet: /* Gallery */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
This wizard has a simple purpose - to draw a cgo plane that passes through three points picked by the user. Most of the wizard itself was copied from the measure wizard.&lt;br /&gt;
&lt;br /&gt;
To use, put it in the same directory as the other wizards. This is not quality code, and there may be bugs, but it seems to work okay.&lt;br /&gt;
&lt;br /&gt;
== Original ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import pymol&lt;br /&gt;
from pymol import cmd&lt;br /&gt;
from pymol.wizard import Wizard&lt;br /&gt;
from chempy import cpv&lt;br /&gt;
from pymol.cgo import *&lt;br /&gt;
&lt;br /&gt;
def makePrimitive(cgo, name):&lt;br /&gt;
    az = cmd.get('auto_zoom', quiet=1)&lt;br /&gt;
    cmd.set('auto_zoom', 0, quiet=1)&lt;br /&gt;
    cmd.load_cgo(cgo, name)&lt;br /&gt;
    cmd.set('auto_zoom', az, quiet=1)&lt;br /&gt;
&lt;br /&gt;
def point(p):&lt;br /&gt;
    x, y, z = p&lt;br /&gt;
    return [COLOR, 1, 1, 1, SPHERE, float(x), float(y), float(z), 0.5]&lt;br /&gt;
&lt;br /&gt;
def line(p1, p2):&lt;br /&gt;
    x1, y1, z1 = p1&lt;br /&gt;
    x2, y2, z2 = p2&lt;br /&gt;
    return [CYLINDER, float(x1), float(y1), float(z1), float(x2), float(y2), float(z2), 0.25, 1, 1, 1, 1, 1, 1]&lt;br /&gt;
&lt;br /&gt;
def plane(corner1, corner2, corner3, corner4, normal):&lt;br /&gt;
    planeObj = []&lt;br /&gt;
    planeObj.extend(point(corner1))&lt;br /&gt;
    planeObj.extend(point(corner2))&lt;br /&gt;
    planeObj.extend(point(corner3))&lt;br /&gt;
    planeObj.extend(point(corner4))&lt;br /&gt;
    planeObj.extend(line(corner1, corner2))&lt;br /&gt;
    planeObj.extend(line(corner2, corner3))&lt;br /&gt;
    planeObj.extend(line(corner3, corner4))&lt;br /&gt;
    planeObj.extend(line(corner4, corner1))&lt;br /&gt;
&lt;br /&gt;
    planeObj.extend([COLOR, 0.8, 0.8, 0.8])&lt;br /&gt;
    planeObj.extend([BEGIN, TRIANGLE_STRIP])&lt;br /&gt;
    planeObj.append(NORMAL)&lt;br /&gt;
    planeObj.extend(normal)&lt;br /&gt;
    for corner in [corner1, corner2, corner3, corner4, corner1]:&lt;br /&gt;
        planeObj.append(VERTEX)&lt;br /&gt;
        planeObj.extend(corner)&lt;br /&gt;
    planeObj.append(END)&lt;br /&gt;
    return planeObj&lt;br /&gt;
&lt;br /&gt;
def planeFromPoints(point1, point2, point3, facetSize):&lt;br /&gt;
    v1 = cpv.normalize(cpv.sub(point2, point1))&lt;br /&gt;
    v2 = cpv.normalize(cpv.sub(point3, point1))&lt;br /&gt;
    normal = cpv.cross_product(v1, v2)&lt;br /&gt;
    v2 = cpv.cross_product(normal, v1)&lt;br /&gt;
    x = cpv.scale(v1, facetSize)&lt;br /&gt;
    y = cpv.scale(v2, facetSize)&lt;br /&gt;
    center = point2&lt;br /&gt;
    corner1 = cpv.add(cpv.add(center, x), y)&lt;br /&gt;
    corner2 = cpv.sub(cpv.add(center, x), y)&lt;br /&gt;
    corner3 = cpv.sub(cpv.sub(center, x), y)&lt;br /&gt;
    corner4 = cpv.add(cpv.sub(center, x), y)&lt;br /&gt;
    return plane(corner1, corner2, corner3, corner4, normal)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class PlaneWizard(Wizard):&lt;br /&gt;
&lt;br /&gt;
    def __init__(self):&lt;br /&gt;
        Wizard.__init__(self)&lt;br /&gt;
&lt;br /&gt;
        # some attributes to do with picking&lt;br /&gt;
        self.pick_count = 0&lt;br /&gt;
        self.object_count = 0&lt;br /&gt;
        self.object_prefix = &amp;quot;pw&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        # the plane facet size (the 'radius' of the section of plane we show)&lt;br /&gt;
        self.facetSize = 5&lt;br /&gt;
&lt;br /&gt;
        self.selection_mode = cmd.get_setting_legacy(&amp;quot;mouse_selection_mode&amp;quot;)&lt;br /&gt;
        cmd.set(&amp;quot;mouse_selection_mode&amp;quot;,0) # set selection mode to atomic&lt;br /&gt;
        cmd.deselect()&lt;br /&gt;
&lt;br /&gt;
    def reset(self):&lt;br /&gt;
        cmd.delete(self.object_prefix + &amp;quot;*&amp;quot;)&lt;br /&gt;
        cmd.delete(&amp;quot;sele*&amp;quot;)&lt;br /&gt;
        cmd.delete(&amp;quot;_indicate*&amp;quot;)&lt;br /&gt;
        cmd.unpick()&lt;br /&gt;
        cmd.refresh_wizard()&lt;br /&gt;
&lt;br /&gt;
    def delete_all(self):&lt;br /&gt;
        cmd.delete(&amp;quot;plane*&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    def cleanup(self):&lt;br /&gt;
        cmd.set(&amp;quot;mouse_selection_mode&amp;quot;,self.selection_mode) # restore selection mode&lt;br /&gt;
        self.reset()&lt;br /&gt;
        self.delete_all()&lt;br /&gt;
&lt;br /&gt;
    def get_prompt(self):&lt;br /&gt;
        self.prompt = None&lt;br /&gt;
        if self.pick_count == 0:&lt;br /&gt;
            self.prompt = [ 'Please click on the first atom...']&lt;br /&gt;
        elif self.pick_count == 1:&lt;br /&gt;
            self.prompt = [ 'Please click on the second atom...' ]&lt;br /&gt;
        elif self.pick_count == 2:&lt;br /&gt;
            self.prompt = [ 'Please click on the third atom...' ]&lt;br /&gt;
        return self.prompt&lt;br /&gt;
&lt;br /&gt;
    def do_select(self, name):&lt;br /&gt;
        # &amp;quot;edit&amp;quot; only this atom, and not others with the object prefix&lt;br /&gt;
        try:&lt;br /&gt;
            cmd.edit(&amp;quot;%s and not %s*&amp;quot; % (name, self.object_prefix))&lt;br /&gt;
            self.do_pick(0)&lt;br /&gt;
        except pymol.CmdException, pmce:&lt;br /&gt;
            print pmce&lt;br /&gt;
&lt;br /&gt;
    def pickNextAtom(self, atom_name):&lt;br /&gt;
        # transfer the click selection to a named selection&lt;br /&gt;
        cmd.select(atom_name, &amp;quot;(pk1)&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        # delete the click selection&lt;br /&gt;
        cmd.unpick()&lt;br /&gt;
&lt;br /&gt;
        # using the magic of indicate, highlight stuff&lt;br /&gt;
        indicate_selection = &amp;quot;_indicate&amp;quot; + self.object_prefix&lt;br /&gt;
        cmd.select(indicate_selection, atom_name)&lt;br /&gt;
        cmd.enable(indicate_selection)&lt;br /&gt;
&lt;br /&gt;
        self.pick_count += 1&lt;br /&gt;
        self.error = None&lt;br /&gt;
&lt;br /&gt;
        # necessary to force update of the prompt&lt;br /&gt;
        cmd.refresh_wizard()&lt;br /&gt;
&lt;br /&gt;
    def do_pick(self, picked_bond):&lt;br /&gt;
&lt;br /&gt;
        # this shouldn't actually happen if going through the &amp;quot;do_select&amp;quot;&lt;br /&gt;
        if picked_bond:&lt;br /&gt;
            self.error = &amp;quot;Error: please select bonds, not atoms&amp;quot;&lt;br /&gt;
            print self.error&lt;br /&gt;
            return&lt;br /&gt;
&lt;br /&gt;
        atom_name = self.object_prefix + str(self.pick_count)&lt;br /&gt;
        if self.pick_count &amp;lt; 2:&lt;br /&gt;
            self.pickNextAtom(atom_name)&lt;br /&gt;
        else:&lt;br /&gt;
            self.pickNextAtom(atom_name)&lt;br /&gt;
&lt;br /&gt;
            point1 = cmd.get_atom_coords(&amp;quot;(%s%s)&amp;quot; % (self.object_prefix, &amp;quot;0&amp;quot;))&lt;br /&gt;
            point2 = cmd.get_atom_coords(&amp;quot;(%s%s)&amp;quot; % (self.object_prefix, &amp;quot;1&amp;quot;))&lt;br /&gt;
            point3 = cmd.get_atom_coords(&amp;quot;(%s%s)&amp;quot; % (self.object_prefix, &amp;quot;2&amp;quot;))&lt;br /&gt;
            plane = planeFromPoints(point1, point2, point3, self.facetSize)&lt;br /&gt;
&lt;br /&gt;
            planeName = &amp;quot;plane-%02d&amp;quot; % self.object_count&lt;br /&gt;
            self.object_count += 1&lt;br /&gt;
            makePrimitive(plane, planeName)&lt;br /&gt;
            cmd.show(&amp;quot;cgo&amp;quot;, &amp;quot;plane*&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
            self.pick_count = 0&lt;br /&gt;
            self.reset()&lt;br /&gt;
&lt;br /&gt;
    def get_panel(self):&lt;br /&gt;
        return [&lt;br /&gt;
            [ 1, 'Plane Wizard',''],&lt;br /&gt;
            [ 2, 'Reset','cmd.get_wizard().reset()'],&lt;br /&gt;
            [ 2, 'Delete All Planes' , 'cmd.get_wizard().delete_all()'],&lt;br /&gt;
            [ 2, 'Done','cmd.set_wizard()'],&lt;br /&gt;
        ]&lt;br /&gt;
&lt;br /&gt;
# create an instance&lt;br /&gt;
&lt;br /&gt;
wiz = PlaneWizard()&lt;br /&gt;
&lt;br /&gt;
# make this the active wizard&lt;br /&gt;
&lt;br /&gt;
cmd.set_wizard(wiz)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Modification==&lt;br /&gt;
Small modifications to the same code as above.&lt;br /&gt;
&lt;br /&gt;
=== Gallery ===&lt;br /&gt;
&amp;lt;gallery heights=&amp;quot;240px&amp;quot; widths=&amp;quot;340px&amp;quot;&amp;gt;&lt;br /&gt;
Image:Plane_img1 | Drawing a plane in a protein&lt;br /&gt;
Image:Plane_img2 | Drawing 6 planes in a box&lt;br /&gt;
Image:Plane_img3 | Drawing 6 planes in a box&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Script_Library|Plane Wizard]]&lt;br /&gt;
[[Category:Math_Scripts]]&lt;br /&gt;
[[Category:CGO]]&lt;/div&gt;</summary>
		<author><name>Tlinnet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Plane_Wizard&amp;diff=13781</id>
		<title>Plane Wizard</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Plane_Wizard&amp;diff=13781"/>
		<updated>2016-12-26T20:03:05Z</updated>

		<summary type="html">&lt;p&gt;Tlinnet: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
This wizard has a simple purpose - to draw a cgo plane that passes through three points picked by the user. Most of the wizard itself was copied from the measure wizard.&lt;br /&gt;
&lt;br /&gt;
To use, put it in the same directory as the other wizards. This is not quality code, and there may be bugs, but it seems to work okay.&lt;br /&gt;
&lt;br /&gt;
== Original ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import pymol&lt;br /&gt;
from pymol import cmd&lt;br /&gt;
from pymol.wizard import Wizard&lt;br /&gt;
from chempy import cpv&lt;br /&gt;
from pymol.cgo import *&lt;br /&gt;
&lt;br /&gt;
def makePrimitive(cgo, name):&lt;br /&gt;
    az = cmd.get('auto_zoom', quiet=1)&lt;br /&gt;
    cmd.set('auto_zoom', 0, quiet=1)&lt;br /&gt;
    cmd.load_cgo(cgo, name)&lt;br /&gt;
    cmd.set('auto_zoom', az, quiet=1)&lt;br /&gt;
&lt;br /&gt;
def point(p):&lt;br /&gt;
    x, y, z = p&lt;br /&gt;
    return [COLOR, 1, 1, 1, SPHERE, float(x), float(y), float(z), 0.5]&lt;br /&gt;
&lt;br /&gt;
def line(p1, p2):&lt;br /&gt;
    x1, y1, z1 = p1&lt;br /&gt;
    x2, y2, z2 = p2&lt;br /&gt;
    return [CYLINDER, float(x1), float(y1), float(z1), float(x2), float(y2), float(z2), 0.25, 1, 1, 1, 1, 1, 1]&lt;br /&gt;
&lt;br /&gt;
def plane(corner1, corner2, corner3, corner4, normal):&lt;br /&gt;
    planeObj = []&lt;br /&gt;
    planeObj.extend(point(corner1))&lt;br /&gt;
    planeObj.extend(point(corner2))&lt;br /&gt;
    planeObj.extend(point(corner3))&lt;br /&gt;
    planeObj.extend(point(corner4))&lt;br /&gt;
    planeObj.extend(line(corner1, corner2))&lt;br /&gt;
    planeObj.extend(line(corner2, corner3))&lt;br /&gt;
    planeObj.extend(line(corner3, corner4))&lt;br /&gt;
    planeObj.extend(line(corner4, corner1))&lt;br /&gt;
&lt;br /&gt;
    planeObj.extend([COLOR, 0.8, 0.8, 0.8])&lt;br /&gt;
    planeObj.extend([BEGIN, TRIANGLE_STRIP])&lt;br /&gt;
    planeObj.append(NORMAL)&lt;br /&gt;
    planeObj.extend(normal)&lt;br /&gt;
    for corner in [corner1, corner2, corner3, corner4, corner1]:&lt;br /&gt;
        planeObj.append(VERTEX)&lt;br /&gt;
        planeObj.extend(corner)&lt;br /&gt;
    planeObj.append(END)&lt;br /&gt;
    return planeObj&lt;br /&gt;
&lt;br /&gt;
def planeFromPoints(point1, point2, point3, facetSize):&lt;br /&gt;
    v1 = cpv.normalize(cpv.sub(point2, point1))&lt;br /&gt;
    v2 = cpv.normalize(cpv.sub(point3, point1))&lt;br /&gt;
    normal = cpv.cross_product(v1, v2)&lt;br /&gt;
    v2 = cpv.cross_product(normal, v1)&lt;br /&gt;
    x = cpv.scale(v1, facetSize)&lt;br /&gt;
    y = cpv.scale(v2, facetSize)&lt;br /&gt;
    center = point2&lt;br /&gt;
    corner1 = cpv.add(cpv.add(center, x), y)&lt;br /&gt;
    corner2 = cpv.sub(cpv.add(center, x), y)&lt;br /&gt;
    corner3 = cpv.sub(cpv.sub(center, x), y)&lt;br /&gt;
    corner4 = cpv.add(cpv.sub(center, x), y)&lt;br /&gt;
    return plane(corner1, corner2, corner3, corner4, normal)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class PlaneWizard(Wizard):&lt;br /&gt;
&lt;br /&gt;
    def __init__(self):&lt;br /&gt;
        Wizard.__init__(self)&lt;br /&gt;
&lt;br /&gt;
        # some attributes to do with picking&lt;br /&gt;
        self.pick_count = 0&lt;br /&gt;
        self.object_count = 0&lt;br /&gt;
        self.object_prefix = &amp;quot;pw&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        # the plane facet size (the 'radius' of the section of plane we show)&lt;br /&gt;
        self.facetSize = 5&lt;br /&gt;
&lt;br /&gt;
        self.selection_mode = cmd.get_setting_legacy(&amp;quot;mouse_selection_mode&amp;quot;)&lt;br /&gt;
        cmd.set(&amp;quot;mouse_selection_mode&amp;quot;,0) # set selection mode to atomic&lt;br /&gt;
        cmd.deselect()&lt;br /&gt;
&lt;br /&gt;
    def reset(self):&lt;br /&gt;
        cmd.delete(self.object_prefix + &amp;quot;*&amp;quot;)&lt;br /&gt;
        cmd.delete(&amp;quot;sele*&amp;quot;)&lt;br /&gt;
        cmd.delete(&amp;quot;_indicate*&amp;quot;)&lt;br /&gt;
        cmd.unpick()&lt;br /&gt;
        cmd.refresh_wizard()&lt;br /&gt;
&lt;br /&gt;
    def delete_all(self):&lt;br /&gt;
        cmd.delete(&amp;quot;plane*&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    def cleanup(self):&lt;br /&gt;
        cmd.set(&amp;quot;mouse_selection_mode&amp;quot;,self.selection_mode) # restore selection mode&lt;br /&gt;
        self.reset()&lt;br /&gt;
        self.delete_all()&lt;br /&gt;
&lt;br /&gt;
    def get_prompt(self):&lt;br /&gt;
        self.prompt = None&lt;br /&gt;
        if self.pick_count == 0:&lt;br /&gt;
            self.prompt = [ 'Please click on the first atom...']&lt;br /&gt;
        elif self.pick_count == 1:&lt;br /&gt;
            self.prompt = [ 'Please click on the second atom...' ]&lt;br /&gt;
        elif self.pick_count == 2:&lt;br /&gt;
            self.prompt = [ 'Please click on the third atom...' ]&lt;br /&gt;
        return self.prompt&lt;br /&gt;
&lt;br /&gt;
    def do_select(self, name):&lt;br /&gt;
        # &amp;quot;edit&amp;quot; only this atom, and not others with the object prefix&lt;br /&gt;
        try:&lt;br /&gt;
            cmd.edit(&amp;quot;%s and not %s*&amp;quot; % (name, self.object_prefix))&lt;br /&gt;
            self.do_pick(0)&lt;br /&gt;
        except pymol.CmdException, pmce:&lt;br /&gt;
            print pmce&lt;br /&gt;
&lt;br /&gt;
    def pickNextAtom(self, atom_name):&lt;br /&gt;
        # transfer the click selection to a named selection&lt;br /&gt;
        cmd.select(atom_name, &amp;quot;(pk1)&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        # delete the click selection&lt;br /&gt;
        cmd.unpick()&lt;br /&gt;
&lt;br /&gt;
        # using the magic of indicate, highlight stuff&lt;br /&gt;
        indicate_selection = &amp;quot;_indicate&amp;quot; + self.object_prefix&lt;br /&gt;
        cmd.select(indicate_selection, atom_name)&lt;br /&gt;
        cmd.enable(indicate_selection)&lt;br /&gt;
&lt;br /&gt;
        self.pick_count += 1&lt;br /&gt;
        self.error = None&lt;br /&gt;
&lt;br /&gt;
        # necessary to force update of the prompt&lt;br /&gt;
        cmd.refresh_wizard()&lt;br /&gt;
&lt;br /&gt;
    def do_pick(self, picked_bond):&lt;br /&gt;
&lt;br /&gt;
        # this shouldn't actually happen if going through the &amp;quot;do_select&amp;quot;&lt;br /&gt;
        if picked_bond:&lt;br /&gt;
            self.error = &amp;quot;Error: please select bonds, not atoms&amp;quot;&lt;br /&gt;
            print self.error&lt;br /&gt;
            return&lt;br /&gt;
&lt;br /&gt;
        atom_name = self.object_prefix + str(self.pick_count)&lt;br /&gt;
        if self.pick_count &amp;lt; 2:&lt;br /&gt;
            self.pickNextAtom(atom_name)&lt;br /&gt;
        else:&lt;br /&gt;
            self.pickNextAtom(atom_name)&lt;br /&gt;
&lt;br /&gt;
            point1 = cmd.get_atom_coords(&amp;quot;(%s%s)&amp;quot; % (self.object_prefix, &amp;quot;0&amp;quot;))&lt;br /&gt;
            point2 = cmd.get_atom_coords(&amp;quot;(%s%s)&amp;quot; % (self.object_prefix, &amp;quot;1&amp;quot;))&lt;br /&gt;
            point3 = cmd.get_atom_coords(&amp;quot;(%s%s)&amp;quot; % (self.object_prefix, &amp;quot;2&amp;quot;))&lt;br /&gt;
            plane = planeFromPoints(point1, point2, point3, self.facetSize)&lt;br /&gt;
&lt;br /&gt;
            planeName = &amp;quot;plane-%02d&amp;quot; % self.object_count&lt;br /&gt;
            self.object_count += 1&lt;br /&gt;
            makePrimitive(plane, planeName)&lt;br /&gt;
            cmd.show(&amp;quot;cgo&amp;quot;, &amp;quot;plane*&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
            self.pick_count = 0&lt;br /&gt;
            self.reset()&lt;br /&gt;
&lt;br /&gt;
    def get_panel(self):&lt;br /&gt;
        return [&lt;br /&gt;
            [ 1, 'Plane Wizard',''],&lt;br /&gt;
            [ 2, 'Reset','cmd.get_wizard().reset()'],&lt;br /&gt;
            [ 2, 'Delete All Planes' , 'cmd.get_wizard().delete_all()'],&lt;br /&gt;
            [ 2, 'Done','cmd.set_wizard()'],&lt;br /&gt;
        ]&lt;br /&gt;
&lt;br /&gt;
# create an instance&lt;br /&gt;
&lt;br /&gt;
wiz = PlaneWizard()&lt;br /&gt;
&lt;br /&gt;
# make this the active wizard&lt;br /&gt;
&lt;br /&gt;
cmd.set_wizard(wiz)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Modification==&lt;br /&gt;
Small modifications to the same code as above.&lt;br /&gt;
&lt;br /&gt;
=== Gallery ===&lt;br /&gt;
&amp;lt;gallery heights=&amp;quot;240px&amp;quot; widths=&amp;quot;340px&amp;quot;&amp;gt;&lt;br /&gt;
Image:Plane_img1|Drawing a plane in a protein&lt;br /&gt;
Image:Plane_img2|Drawing 6 planes in a box&lt;br /&gt;
Image:Plane_img3|Drawing 6 planes in a box&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Script_Library|Plane Wizard]]&lt;br /&gt;
[[Category:Math_Scripts]]&lt;br /&gt;
[[Category:CGO]]&lt;/div&gt;</summary>
		<author><name>Tlinnet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Plane_Wizard&amp;diff=13780</id>
		<title>Plane Wizard</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Plane_Wizard&amp;diff=13780"/>
		<updated>2016-12-26T19:11:31Z</updated>

		<summary type="html">&lt;p&gt;Tlinnet: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
This wizard has a simple purpose - to draw a cgo plane that passes through three points picked by the user. Most of the wizard itself was copied from the measure wizard.&lt;br /&gt;
&lt;br /&gt;
To use, put it in the same directory as the other wizards. This is not quality code, and there may be bugs, but it seems to work okay.&lt;br /&gt;
&lt;br /&gt;
== Original ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import pymol&lt;br /&gt;
from pymol import cmd&lt;br /&gt;
from pymol.wizard import Wizard&lt;br /&gt;
from chempy import cpv&lt;br /&gt;
from pymol.cgo import *&lt;br /&gt;
&lt;br /&gt;
def makePrimitive(cgo, name):&lt;br /&gt;
    az = cmd.get('auto_zoom', quiet=1)&lt;br /&gt;
    cmd.set('auto_zoom', 0, quiet=1)&lt;br /&gt;
    cmd.load_cgo(cgo, name)&lt;br /&gt;
    cmd.set('auto_zoom', az, quiet=1)&lt;br /&gt;
&lt;br /&gt;
def point(p):&lt;br /&gt;
    x, y, z = p&lt;br /&gt;
    return [COLOR, 1, 1, 1, SPHERE, float(x), float(y), float(z), 0.5]&lt;br /&gt;
&lt;br /&gt;
def line(p1, p2):&lt;br /&gt;
    x1, y1, z1 = p1&lt;br /&gt;
    x2, y2, z2 = p2&lt;br /&gt;
    return [CYLINDER, float(x1), float(y1), float(z1), float(x2), float(y2), float(z2), 0.25, 1, 1, 1, 1, 1, 1]&lt;br /&gt;
&lt;br /&gt;
def plane(corner1, corner2, corner3, corner4, normal):&lt;br /&gt;
    planeObj = []&lt;br /&gt;
    planeObj.extend(point(corner1))&lt;br /&gt;
    planeObj.extend(point(corner2))&lt;br /&gt;
    planeObj.extend(point(corner3))&lt;br /&gt;
    planeObj.extend(point(corner4))&lt;br /&gt;
    planeObj.extend(line(corner1, corner2))&lt;br /&gt;
    planeObj.extend(line(corner2, corner3))&lt;br /&gt;
    planeObj.extend(line(corner3, corner4))&lt;br /&gt;
    planeObj.extend(line(corner4, corner1))&lt;br /&gt;
&lt;br /&gt;
    planeObj.extend([COLOR, 0.8, 0.8, 0.8])&lt;br /&gt;
    planeObj.extend([BEGIN, TRIANGLE_STRIP])&lt;br /&gt;
    planeObj.append(NORMAL)&lt;br /&gt;
    planeObj.extend(normal)&lt;br /&gt;
    for corner in [corner1, corner2, corner3, corner4, corner1]:&lt;br /&gt;
        planeObj.append(VERTEX)&lt;br /&gt;
        planeObj.extend(corner)&lt;br /&gt;
    planeObj.append(END)&lt;br /&gt;
    return planeObj&lt;br /&gt;
&lt;br /&gt;
def planeFromPoints(point1, point2, point3, facetSize):&lt;br /&gt;
    v1 = cpv.normalize(cpv.sub(point2, point1))&lt;br /&gt;
    v2 = cpv.normalize(cpv.sub(point3, point1))&lt;br /&gt;
    normal = cpv.cross_product(v1, v2)&lt;br /&gt;
    v2 = cpv.cross_product(normal, v1)&lt;br /&gt;
    x = cpv.scale(v1, facetSize)&lt;br /&gt;
    y = cpv.scale(v2, facetSize)&lt;br /&gt;
    center = point2&lt;br /&gt;
    corner1 = cpv.add(cpv.add(center, x), y)&lt;br /&gt;
    corner2 = cpv.sub(cpv.add(center, x), y)&lt;br /&gt;
    corner3 = cpv.sub(cpv.sub(center, x), y)&lt;br /&gt;
    corner4 = cpv.add(cpv.sub(center, x), y)&lt;br /&gt;
    return plane(corner1, corner2, corner3, corner4, normal)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class PlaneWizard(Wizard):&lt;br /&gt;
&lt;br /&gt;
    def __init__(self):&lt;br /&gt;
        Wizard.__init__(self)&lt;br /&gt;
&lt;br /&gt;
        # some attributes to do with picking&lt;br /&gt;
        self.pick_count = 0&lt;br /&gt;
        self.object_count = 0&lt;br /&gt;
        self.object_prefix = &amp;quot;pw&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        # the plane facet size (the 'radius' of the section of plane we show)&lt;br /&gt;
        self.facetSize = 5&lt;br /&gt;
&lt;br /&gt;
        self.selection_mode = cmd.get_setting_legacy(&amp;quot;mouse_selection_mode&amp;quot;)&lt;br /&gt;
        cmd.set(&amp;quot;mouse_selection_mode&amp;quot;,0) # set selection mode to atomic&lt;br /&gt;
        cmd.deselect()&lt;br /&gt;
&lt;br /&gt;
    def reset(self):&lt;br /&gt;
        cmd.delete(self.object_prefix + &amp;quot;*&amp;quot;)&lt;br /&gt;
        cmd.delete(&amp;quot;sele*&amp;quot;)&lt;br /&gt;
        cmd.delete(&amp;quot;_indicate*&amp;quot;)&lt;br /&gt;
        cmd.unpick()&lt;br /&gt;
        cmd.refresh_wizard()&lt;br /&gt;
&lt;br /&gt;
    def delete_all(self):&lt;br /&gt;
        cmd.delete(&amp;quot;plane*&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    def cleanup(self):&lt;br /&gt;
        cmd.set(&amp;quot;mouse_selection_mode&amp;quot;,self.selection_mode) # restore selection mode&lt;br /&gt;
        self.reset()&lt;br /&gt;
        self.delete_all()&lt;br /&gt;
&lt;br /&gt;
    def get_prompt(self):&lt;br /&gt;
        self.prompt = None&lt;br /&gt;
        if self.pick_count == 0:&lt;br /&gt;
            self.prompt = [ 'Please click on the first atom...']&lt;br /&gt;
        elif self.pick_count == 1:&lt;br /&gt;
            self.prompt = [ 'Please click on the second atom...' ]&lt;br /&gt;
        elif self.pick_count == 2:&lt;br /&gt;
            self.prompt = [ 'Please click on the third atom...' ]&lt;br /&gt;
        return self.prompt&lt;br /&gt;
&lt;br /&gt;
    def do_select(self, name):&lt;br /&gt;
        # &amp;quot;edit&amp;quot; only this atom, and not others with the object prefix&lt;br /&gt;
        try:&lt;br /&gt;
            cmd.edit(&amp;quot;%s and not %s*&amp;quot; % (name, self.object_prefix))&lt;br /&gt;
            self.do_pick(0)&lt;br /&gt;
        except pymol.CmdException, pmce:&lt;br /&gt;
            print pmce&lt;br /&gt;
&lt;br /&gt;
    def pickNextAtom(self, atom_name):&lt;br /&gt;
        # transfer the click selection to a named selection&lt;br /&gt;
        cmd.select(atom_name, &amp;quot;(pk1)&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        # delete the click selection&lt;br /&gt;
        cmd.unpick()&lt;br /&gt;
&lt;br /&gt;
        # using the magic of indicate, highlight stuff&lt;br /&gt;
        indicate_selection = &amp;quot;_indicate&amp;quot; + self.object_prefix&lt;br /&gt;
        cmd.select(indicate_selection, atom_name)&lt;br /&gt;
        cmd.enable(indicate_selection)&lt;br /&gt;
&lt;br /&gt;
        self.pick_count += 1&lt;br /&gt;
        self.error = None&lt;br /&gt;
&lt;br /&gt;
        # necessary to force update of the prompt&lt;br /&gt;
        cmd.refresh_wizard()&lt;br /&gt;
&lt;br /&gt;
    def do_pick(self, picked_bond):&lt;br /&gt;
&lt;br /&gt;
        # this shouldn't actually happen if going through the &amp;quot;do_select&amp;quot;&lt;br /&gt;
        if picked_bond:&lt;br /&gt;
            self.error = &amp;quot;Error: please select bonds, not atoms&amp;quot;&lt;br /&gt;
            print self.error&lt;br /&gt;
            return&lt;br /&gt;
&lt;br /&gt;
        atom_name = self.object_prefix + str(self.pick_count)&lt;br /&gt;
        if self.pick_count &amp;lt; 2:&lt;br /&gt;
            self.pickNextAtom(atom_name)&lt;br /&gt;
        else:&lt;br /&gt;
            self.pickNextAtom(atom_name)&lt;br /&gt;
&lt;br /&gt;
            point1 = cmd.get_atom_coords(&amp;quot;(%s%s)&amp;quot; % (self.object_prefix, &amp;quot;0&amp;quot;))&lt;br /&gt;
            point2 = cmd.get_atom_coords(&amp;quot;(%s%s)&amp;quot; % (self.object_prefix, &amp;quot;1&amp;quot;))&lt;br /&gt;
            point3 = cmd.get_atom_coords(&amp;quot;(%s%s)&amp;quot; % (self.object_prefix, &amp;quot;2&amp;quot;))&lt;br /&gt;
            plane = planeFromPoints(point1, point2, point3, self.facetSize)&lt;br /&gt;
&lt;br /&gt;
            planeName = &amp;quot;plane-%02d&amp;quot; % self.object_count&lt;br /&gt;
            self.object_count += 1&lt;br /&gt;
            makePrimitive(plane, planeName)&lt;br /&gt;
            cmd.show(&amp;quot;cgo&amp;quot;, &amp;quot;plane*&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
            self.pick_count = 0&lt;br /&gt;
            self.reset()&lt;br /&gt;
&lt;br /&gt;
    def get_panel(self):&lt;br /&gt;
        return [&lt;br /&gt;
            [ 1, 'Plane Wizard',''],&lt;br /&gt;
            [ 2, 'Reset','cmd.get_wizard().reset()'],&lt;br /&gt;
            [ 2, 'Delete All Planes' , 'cmd.get_wizard().delete_all()'],&lt;br /&gt;
            [ 2, 'Done','cmd.set_wizard()'],&lt;br /&gt;
        ]&lt;br /&gt;
&lt;br /&gt;
# create an instance&lt;br /&gt;
&lt;br /&gt;
wiz = PlaneWizard()&lt;br /&gt;
&lt;br /&gt;
# make this the active wizard&lt;br /&gt;
&lt;br /&gt;
cmd.set_wizard(wiz)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
[[Category:Script_Library|Plane Wizard]]&lt;br /&gt;
[[Category:Math_Scripts]]&lt;br /&gt;
[[Category:CGO]]&lt;/div&gt;</summary>
		<author><name>Tlinnet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Plane_Wizard&amp;diff=13779</id>
		<title>Plane Wizard</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Plane_Wizard&amp;diff=13779"/>
		<updated>2016-12-26T19:10:45Z</updated>

		<summary type="html">&lt;p&gt;Tlinnet: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wizard has a simple purpose - to draw a cgo plane that passes through three points picked by the user. Most of the wizard itself was copied from the measure wizard.&lt;br /&gt;
&lt;br /&gt;
To use, put it in the same directory as the other wizards. This is not quality code, and there may be bugs, but it seems to work okay.&lt;br /&gt;
&lt;br /&gt;
= Original =&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import pymol&lt;br /&gt;
from pymol import cmd&lt;br /&gt;
from pymol.wizard import Wizard&lt;br /&gt;
from chempy import cpv&lt;br /&gt;
from pymol.cgo import *&lt;br /&gt;
&lt;br /&gt;
def makePrimitive(cgo, name):&lt;br /&gt;
    az = cmd.get('auto_zoom', quiet=1)&lt;br /&gt;
    cmd.set('auto_zoom', 0, quiet=1)&lt;br /&gt;
    cmd.load_cgo(cgo, name)&lt;br /&gt;
    cmd.set('auto_zoom', az, quiet=1)&lt;br /&gt;
&lt;br /&gt;
def point(p):&lt;br /&gt;
    x, y, z = p&lt;br /&gt;
    return [COLOR, 1, 1, 1, SPHERE, float(x), float(y), float(z), 0.5]&lt;br /&gt;
&lt;br /&gt;
def line(p1, p2):&lt;br /&gt;
    x1, y1, z1 = p1&lt;br /&gt;
    x2, y2, z2 = p2&lt;br /&gt;
    return [CYLINDER, float(x1), float(y1), float(z1), float(x2), float(y2), float(z2), 0.25, 1, 1, 1, 1, 1, 1]&lt;br /&gt;
&lt;br /&gt;
def plane(corner1, corner2, corner3, corner4, normal):&lt;br /&gt;
    planeObj = []&lt;br /&gt;
    planeObj.extend(point(corner1))&lt;br /&gt;
    planeObj.extend(point(corner2))&lt;br /&gt;
    planeObj.extend(point(corner3))&lt;br /&gt;
    planeObj.extend(point(corner4))&lt;br /&gt;
    planeObj.extend(line(corner1, corner2))&lt;br /&gt;
    planeObj.extend(line(corner2, corner3))&lt;br /&gt;
    planeObj.extend(line(corner3, corner4))&lt;br /&gt;
    planeObj.extend(line(corner4, corner1))&lt;br /&gt;
&lt;br /&gt;
    planeObj.extend([COLOR, 0.8, 0.8, 0.8])&lt;br /&gt;
    planeObj.extend([BEGIN, TRIANGLE_STRIP])&lt;br /&gt;
    planeObj.append(NORMAL)&lt;br /&gt;
    planeObj.extend(normal)&lt;br /&gt;
    for corner in [corner1, corner2, corner3, corner4, corner1]:&lt;br /&gt;
        planeObj.append(VERTEX)&lt;br /&gt;
        planeObj.extend(corner)&lt;br /&gt;
    planeObj.append(END)&lt;br /&gt;
    return planeObj&lt;br /&gt;
&lt;br /&gt;
def planeFromPoints(point1, point2, point3, facetSize):&lt;br /&gt;
    v1 = cpv.normalize(cpv.sub(point2, point1))&lt;br /&gt;
    v2 = cpv.normalize(cpv.sub(point3, point1))&lt;br /&gt;
    normal = cpv.cross_product(v1, v2)&lt;br /&gt;
    v2 = cpv.cross_product(normal, v1)&lt;br /&gt;
    x = cpv.scale(v1, facetSize)&lt;br /&gt;
    y = cpv.scale(v2, facetSize)&lt;br /&gt;
    center = point2&lt;br /&gt;
    corner1 = cpv.add(cpv.add(center, x), y)&lt;br /&gt;
    corner2 = cpv.sub(cpv.add(center, x), y)&lt;br /&gt;
    corner3 = cpv.sub(cpv.sub(center, x), y)&lt;br /&gt;
    corner4 = cpv.add(cpv.sub(center, x), y)&lt;br /&gt;
    return plane(corner1, corner2, corner3, corner4, normal)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class PlaneWizard(Wizard):&lt;br /&gt;
&lt;br /&gt;
    def __init__(self):&lt;br /&gt;
        Wizard.__init__(self)&lt;br /&gt;
&lt;br /&gt;
        # some attributes to do with picking&lt;br /&gt;
        self.pick_count = 0&lt;br /&gt;
        self.object_count = 0&lt;br /&gt;
        self.object_prefix = &amp;quot;pw&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        # the plane facet size (the 'radius' of the section of plane we show)&lt;br /&gt;
        self.facetSize = 5&lt;br /&gt;
&lt;br /&gt;
        self.selection_mode = cmd.get_setting_legacy(&amp;quot;mouse_selection_mode&amp;quot;)&lt;br /&gt;
        cmd.set(&amp;quot;mouse_selection_mode&amp;quot;,0) # set selection mode to atomic&lt;br /&gt;
        cmd.deselect()&lt;br /&gt;
&lt;br /&gt;
    def reset(self):&lt;br /&gt;
        cmd.delete(self.object_prefix + &amp;quot;*&amp;quot;)&lt;br /&gt;
        cmd.delete(&amp;quot;sele*&amp;quot;)&lt;br /&gt;
        cmd.delete(&amp;quot;_indicate*&amp;quot;)&lt;br /&gt;
        cmd.unpick()&lt;br /&gt;
        cmd.refresh_wizard()&lt;br /&gt;
&lt;br /&gt;
    def delete_all(self):&lt;br /&gt;
        cmd.delete(&amp;quot;plane*&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    def cleanup(self):&lt;br /&gt;
        cmd.set(&amp;quot;mouse_selection_mode&amp;quot;,self.selection_mode) # restore selection mode&lt;br /&gt;
        self.reset()&lt;br /&gt;
        self.delete_all()&lt;br /&gt;
&lt;br /&gt;
    def get_prompt(self):&lt;br /&gt;
        self.prompt = None&lt;br /&gt;
        if self.pick_count == 0:&lt;br /&gt;
            self.prompt = [ 'Please click on the first atom...']&lt;br /&gt;
        elif self.pick_count == 1:&lt;br /&gt;
            self.prompt = [ 'Please click on the second atom...' ]&lt;br /&gt;
        elif self.pick_count == 2:&lt;br /&gt;
            self.prompt = [ 'Please click on the third atom...' ]&lt;br /&gt;
        return self.prompt&lt;br /&gt;
&lt;br /&gt;
    def do_select(self, name):&lt;br /&gt;
        # &amp;quot;edit&amp;quot; only this atom, and not others with the object prefix&lt;br /&gt;
        try:&lt;br /&gt;
            cmd.edit(&amp;quot;%s and not %s*&amp;quot; % (name, self.object_prefix))&lt;br /&gt;
            self.do_pick(0)&lt;br /&gt;
        except pymol.CmdException, pmce:&lt;br /&gt;
            print pmce&lt;br /&gt;
&lt;br /&gt;
    def pickNextAtom(self, atom_name):&lt;br /&gt;
        # transfer the click selection to a named selection&lt;br /&gt;
        cmd.select(atom_name, &amp;quot;(pk1)&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        # delete the click selection&lt;br /&gt;
        cmd.unpick()&lt;br /&gt;
&lt;br /&gt;
        # using the magic of indicate, highlight stuff&lt;br /&gt;
        indicate_selection = &amp;quot;_indicate&amp;quot; + self.object_prefix&lt;br /&gt;
        cmd.select(indicate_selection, atom_name)&lt;br /&gt;
        cmd.enable(indicate_selection)&lt;br /&gt;
&lt;br /&gt;
        self.pick_count += 1&lt;br /&gt;
        self.error = None&lt;br /&gt;
&lt;br /&gt;
        # necessary to force update of the prompt&lt;br /&gt;
        cmd.refresh_wizard()&lt;br /&gt;
&lt;br /&gt;
    def do_pick(self, picked_bond):&lt;br /&gt;
&lt;br /&gt;
        # this shouldn't actually happen if going through the &amp;quot;do_select&amp;quot;&lt;br /&gt;
        if picked_bond:&lt;br /&gt;
            self.error = &amp;quot;Error: please select bonds, not atoms&amp;quot;&lt;br /&gt;
            print self.error&lt;br /&gt;
            return&lt;br /&gt;
&lt;br /&gt;
        atom_name = self.object_prefix + str(self.pick_count)&lt;br /&gt;
        if self.pick_count &amp;lt; 2:&lt;br /&gt;
            self.pickNextAtom(atom_name)&lt;br /&gt;
        else:&lt;br /&gt;
            self.pickNextAtom(atom_name)&lt;br /&gt;
&lt;br /&gt;
            point1 = cmd.get_atom_coords(&amp;quot;(%s%s)&amp;quot; % (self.object_prefix, &amp;quot;0&amp;quot;))&lt;br /&gt;
            point2 = cmd.get_atom_coords(&amp;quot;(%s%s)&amp;quot; % (self.object_prefix, &amp;quot;1&amp;quot;))&lt;br /&gt;
            point3 = cmd.get_atom_coords(&amp;quot;(%s%s)&amp;quot; % (self.object_prefix, &amp;quot;2&amp;quot;))&lt;br /&gt;
            plane = planeFromPoints(point1, point2, point3, self.facetSize)&lt;br /&gt;
&lt;br /&gt;
            planeName = &amp;quot;plane-%02d&amp;quot; % self.object_count&lt;br /&gt;
            self.object_count += 1&lt;br /&gt;
            makePrimitive(plane, planeName)&lt;br /&gt;
            cmd.show(&amp;quot;cgo&amp;quot;, &amp;quot;plane*&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
            self.pick_count = 0&lt;br /&gt;
            self.reset()&lt;br /&gt;
&lt;br /&gt;
    def get_panel(self):&lt;br /&gt;
        return [&lt;br /&gt;
            [ 1, 'Plane Wizard',''],&lt;br /&gt;
            [ 2, 'Reset','cmd.get_wizard().reset()'],&lt;br /&gt;
            [ 2, 'Delete All Planes' , 'cmd.get_wizard().delete_all()'],&lt;br /&gt;
            [ 2, 'Done','cmd.set_wizard()'],&lt;br /&gt;
        ]&lt;br /&gt;
&lt;br /&gt;
# create an instance&lt;br /&gt;
&lt;br /&gt;
wiz = PlaneWizard()&lt;br /&gt;
&lt;br /&gt;
# make this the active wizard&lt;br /&gt;
&lt;br /&gt;
cmd.set_wizard(wiz)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
[[Category:Script_Library|Plane Wizard]]&lt;br /&gt;
[[Category:Math_Scripts]]&lt;br /&gt;
[[Category:CGO]]&lt;/div&gt;</summary>
		<author><name>Tlinnet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Plane_Wizard&amp;diff=13778</id>
		<title>Plane Wizard</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Plane_Wizard&amp;diff=13778"/>
		<updated>2016-12-26T19:08:40Z</updated>

		<summary type="html">&lt;p&gt;Tlinnet: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wizard has a simple purpose - to draw a cgo plane that passes through three points picked by the user. Most of the wizard itself was copied from the measure wizard.&lt;br /&gt;
&lt;br /&gt;
To use, put it in the same directory as the other wizards. This is not quality code, and there may be bugs, but it seems to work okay.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import pymol&lt;br /&gt;
from pymol import cmd&lt;br /&gt;
from pymol.wizard import Wizard&lt;br /&gt;
from chempy import cpv&lt;br /&gt;
from pymol.cgo import *&lt;br /&gt;
&lt;br /&gt;
def makePrimitive(cgo, name):&lt;br /&gt;
    az = cmd.get('auto_zoom', quiet=1)&lt;br /&gt;
    cmd.set('auto_zoom', 0, quiet=1)&lt;br /&gt;
    cmd.load_cgo(cgo, name)&lt;br /&gt;
    cmd.set('auto_zoom', az, quiet=1)&lt;br /&gt;
&lt;br /&gt;
def point(p):&lt;br /&gt;
    x, y, z = p&lt;br /&gt;
    return [COLOR, 1, 1, 1, SPHERE, float(x), float(y), float(z), 0.5]&lt;br /&gt;
&lt;br /&gt;
def line(p1, p2):&lt;br /&gt;
    x1, y1, z1 = p1&lt;br /&gt;
    x2, y2, z2 = p2&lt;br /&gt;
    return [CYLINDER, float(x1), float(y1), float(z1), float(x2), float(y2), float(z2), 0.25, 1, 1, 1, 1, 1, 1]&lt;br /&gt;
&lt;br /&gt;
def plane(corner1, corner2, corner3, corner4, normal):&lt;br /&gt;
    planeObj = []&lt;br /&gt;
    planeObj.extend(point(corner1))&lt;br /&gt;
    planeObj.extend(point(corner2))&lt;br /&gt;
    planeObj.extend(point(corner3))&lt;br /&gt;
    planeObj.extend(point(corner4))&lt;br /&gt;
    planeObj.extend(line(corner1, corner2))&lt;br /&gt;
    planeObj.extend(line(corner2, corner3))&lt;br /&gt;
    planeObj.extend(line(corner3, corner4))&lt;br /&gt;
    planeObj.extend(line(corner4, corner1))&lt;br /&gt;
&lt;br /&gt;
    planeObj.extend([COLOR, 0.8, 0.8, 0.8])&lt;br /&gt;
    planeObj.extend([BEGIN, TRIANGLE_STRIP])&lt;br /&gt;
    planeObj.append(NORMAL)&lt;br /&gt;
    planeObj.extend(normal)&lt;br /&gt;
    for corner in [corner1, corner2, corner3, corner4, corner1]:&lt;br /&gt;
        planeObj.append(VERTEX)&lt;br /&gt;
        planeObj.extend(corner)&lt;br /&gt;
    planeObj.append(END)&lt;br /&gt;
    return planeObj&lt;br /&gt;
&lt;br /&gt;
def planeFromPoints(point1, point2, point3, facetSize):&lt;br /&gt;
    v1 = cpv.normalize(cpv.sub(point2, point1))&lt;br /&gt;
    v2 = cpv.normalize(cpv.sub(point3, point1))&lt;br /&gt;
    normal = cpv.cross_product(v1, v2)&lt;br /&gt;
    v2 = cpv.cross_product(normal, v1)&lt;br /&gt;
    x = cpv.scale(v1, facetSize)&lt;br /&gt;
    y = cpv.scale(v2, facetSize)&lt;br /&gt;
    center = point2&lt;br /&gt;
    corner1 = cpv.add(cpv.add(center, x), y)&lt;br /&gt;
    corner2 = cpv.sub(cpv.add(center, x), y)&lt;br /&gt;
    corner3 = cpv.sub(cpv.sub(center, x), y)&lt;br /&gt;
    corner4 = cpv.add(cpv.sub(center, x), y)&lt;br /&gt;
    return plane(corner1, corner2, corner3, corner4, normal)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class PlaneWizard(Wizard):&lt;br /&gt;
&lt;br /&gt;
    def __init__(self):&lt;br /&gt;
        Wizard.__init__(self)&lt;br /&gt;
&lt;br /&gt;
        # some attributes to do with picking&lt;br /&gt;
        self.pick_count = 0&lt;br /&gt;
        self.object_count = 0&lt;br /&gt;
        self.object_prefix = &amp;quot;pw&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        # the plane facet size (the 'radius' of the section of plane we show)&lt;br /&gt;
        self.facetSize = 5&lt;br /&gt;
&lt;br /&gt;
        self.selection_mode = cmd.get_setting_legacy(&amp;quot;mouse_selection_mode&amp;quot;)&lt;br /&gt;
        cmd.set(&amp;quot;mouse_selection_mode&amp;quot;,0) # set selection mode to atomic&lt;br /&gt;
        cmd.deselect()&lt;br /&gt;
&lt;br /&gt;
    def reset(self):&lt;br /&gt;
        cmd.delete(self.object_prefix + &amp;quot;*&amp;quot;)&lt;br /&gt;
        cmd.delete(&amp;quot;sele*&amp;quot;)&lt;br /&gt;
        cmd.delete(&amp;quot;_indicate*&amp;quot;)&lt;br /&gt;
        cmd.unpick()&lt;br /&gt;
        cmd.refresh_wizard()&lt;br /&gt;
&lt;br /&gt;
    def delete_all(self):&lt;br /&gt;
        cmd.delete(&amp;quot;plane*&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    def cleanup(self):&lt;br /&gt;
        cmd.set(&amp;quot;mouse_selection_mode&amp;quot;,self.selection_mode) # restore selection mode&lt;br /&gt;
        self.reset()&lt;br /&gt;
        self.delete_all()&lt;br /&gt;
&lt;br /&gt;
    def get_prompt(self):&lt;br /&gt;
        self.prompt = None&lt;br /&gt;
        if self.pick_count == 0:&lt;br /&gt;
            self.prompt = [ 'Please click on the first atom...']&lt;br /&gt;
        elif self.pick_count == 1:&lt;br /&gt;
            self.prompt = [ 'Please click on the second atom...' ]&lt;br /&gt;
        elif self.pick_count == 2:&lt;br /&gt;
            self.prompt = [ 'Please click on the third atom...' ]&lt;br /&gt;
        return self.prompt&lt;br /&gt;
&lt;br /&gt;
    def do_select(self, name):&lt;br /&gt;
        # &amp;quot;edit&amp;quot; only this atom, and not others with the object prefix&lt;br /&gt;
        try:&lt;br /&gt;
            cmd.edit(&amp;quot;%s and not %s*&amp;quot; % (name, self.object_prefix))&lt;br /&gt;
            self.do_pick(0)&lt;br /&gt;
        except pymol.CmdException, pmce:&lt;br /&gt;
            print pmce&lt;br /&gt;
&lt;br /&gt;
    def pickNextAtom(self, atom_name):&lt;br /&gt;
        # transfer the click selection to a named selection&lt;br /&gt;
        cmd.select(atom_name, &amp;quot;(pk1)&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        # delete the click selection&lt;br /&gt;
        cmd.unpick()&lt;br /&gt;
&lt;br /&gt;
        # using the magic of indicate, highlight stuff&lt;br /&gt;
        indicate_selection = &amp;quot;_indicate&amp;quot; + self.object_prefix&lt;br /&gt;
        cmd.select(indicate_selection, atom_name)&lt;br /&gt;
        cmd.enable(indicate_selection)&lt;br /&gt;
&lt;br /&gt;
        self.pick_count += 1&lt;br /&gt;
        self.error = None&lt;br /&gt;
&lt;br /&gt;
        # necessary to force update of the prompt&lt;br /&gt;
        cmd.refresh_wizard()&lt;br /&gt;
&lt;br /&gt;
    def do_pick(self, picked_bond):&lt;br /&gt;
&lt;br /&gt;
        # this shouldn't actually happen if going through the &amp;quot;do_select&amp;quot;&lt;br /&gt;
        if picked_bond:&lt;br /&gt;
            self.error = &amp;quot;Error: please select bonds, not atoms&amp;quot;&lt;br /&gt;
            print self.error&lt;br /&gt;
            return&lt;br /&gt;
&lt;br /&gt;
        atom_name = self.object_prefix + str(self.pick_count)&lt;br /&gt;
        if self.pick_count &amp;lt; 2:&lt;br /&gt;
            self.pickNextAtom(atom_name)&lt;br /&gt;
        else:&lt;br /&gt;
            self.pickNextAtom(atom_name)&lt;br /&gt;
&lt;br /&gt;
            point1 = cmd.get_atom_coords(&amp;quot;(%s%s)&amp;quot; % (self.object_prefix, &amp;quot;0&amp;quot;))&lt;br /&gt;
            point2 = cmd.get_atom_coords(&amp;quot;(%s%s)&amp;quot; % (self.object_prefix, &amp;quot;1&amp;quot;))&lt;br /&gt;
            point3 = cmd.get_atom_coords(&amp;quot;(%s%s)&amp;quot; % (self.object_prefix, &amp;quot;2&amp;quot;))&lt;br /&gt;
            plane = planeFromPoints(point1, point2, point3, self.facetSize)&lt;br /&gt;
&lt;br /&gt;
            planeName = &amp;quot;plane-%02d&amp;quot; % self.object_count&lt;br /&gt;
            self.object_count += 1&lt;br /&gt;
            makePrimitive(plane, planeName)&lt;br /&gt;
            cmd.show(&amp;quot;cgo&amp;quot;, &amp;quot;plane*&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
            self.pick_count = 0&lt;br /&gt;
            self.reset()&lt;br /&gt;
&lt;br /&gt;
    def get_panel(self):&lt;br /&gt;
        return [&lt;br /&gt;
            [ 1, 'Plane Wizard',''],&lt;br /&gt;
            [ 2, 'Reset','cmd.get_wizard().reset()'],&lt;br /&gt;
            [ 2, 'Delete All Planes' , 'cmd.get_wizard().delete_all()'],&lt;br /&gt;
            [ 2, 'Done','cmd.set_wizard()'],&lt;br /&gt;
        ]&lt;br /&gt;
&lt;br /&gt;
# create an instance&lt;br /&gt;
&lt;br /&gt;
wiz = PlaneWizard()&lt;br /&gt;
&lt;br /&gt;
# make this the active wizard&lt;br /&gt;
&lt;br /&gt;
cmd.set_wizard(wiz)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
[[Category:Script_Library|Plane Wizard]]&lt;br /&gt;
[[Category:Math_Scripts]]&lt;br /&gt;
[[Category:CGO]]&lt;/div&gt;</summary>
		<author><name>Tlinnet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=Practical_Pymol_for_Beginners&amp;diff=13349</id>
		<title>Practical Pymol for Beginners</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=Practical_Pymol_for_Beginners&amp;diff=13349"/>
		<updated>2015-11-19T23:39:55Z</updated>

		<summary type="html">&lt;p&gt;Tlinnet: /* Learning More... */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Although PyMOL has a powerful and flexible interface, it is complex, and can appear daunting to new users. This guide is intended to introduce the PyMOL interface and basic tasks without leaving the mouse behind. &lt;br /&gt;
&lt;br /&gt;
==The PyMOL Interface==&lt;br /&gt;
When PyMOL is opened, two windows appear. The smaller window (called the &amp;quot;External GUI&amp;quot; in PyMOL documentation) contains the menu bar ('''File''', '''Edit''', '''Help''', '''Display''', etc), shortcut buttons for common commands, and the command line.&lt;br /&gt;
&lt;br /&gt;
[[Image:Viewer_guide.png|right|thumb|The PyMol Viewer Window]]&lt;br /&gt;
The second window is the PyMOL Viewer, which is where all the magic happens. In the Viewer, 3D models are displayed, and the user interacts (eg rotates) and manipulates the model. &lt;br /&gt;
&lt;br /&gt;
The objects that PyMOL renders in 3D are loaded from coordinate files that describe (in great detail) locations of individual atoms in the molecule. PyMOL can display more than one object at a time, and provides an Object Control Panel to adjust viewing modes, colors, labels, hiding, and just about anything else relating to objects. After each object name is a set of command buttons which control the object. Here are the buttons and some of their options:&lt;br /&gt;
* '''A''' - ''Actions'': Rename, duplicate, remove, apply presets (like &amp;quot;ball-and-stick&amp;quot; or &amp;quot;publication&amp;quot;), perform computations&lt;br /&gt;
* '''S''' - ''Show'': Change the way things appear, eg change to stick or cartoon view. &lt;br /&gt;
* '''H''' - ''Hide'': Things that are shown using '''S''' accumulate, and don't automatically replace the last view. '''H''' is the opposite of '''S''' and hides unwanted representations. &lt;br /&gt;
* '''L''' - ''Label'': Label atoms, residues, etc.&lt;br /&gt;
* '''C''' - ''Color'': Change the color of atoms and groups. &lt;br /&gt;
&lt;br /&gt;
The lower-right corner of the Viewer contains a guide to using the mouse, as well as a powerful selection tool. There is also another command line at the bottom of the Viewer ('''PyMOL&amp;gt;''').&lt;br /&gt;
&lt;br /&gt;
===About the command line===&lt;br /&gt;
The PyMOL command line is a great tool that lets the experienced user change all sorts of options that simply don't appear in the point-and-click graphical interface. It can also be a lot faster. Combined with scripting, it is a powerful option for automating tasks and making intricate sets of changes. But, it's complex, and page upon page of PyMOL documentation cover these commands, so we're going to ignore them as much as possible.&lt;br /&gt;
&lt;br /&gt;
Although this guide may include some text commands and links to more advanced documentation, they're purely optional and meant to be informative. &lt;br /&gt;
&lt;br /&gt;
To run any text command, type it in at a '''PyMOL&amp;gt;''' command line and hit ''[Enter]''.&lt;br /&gt;
&lt;br /&gt;
==Getting started: explore a protein==&lt;br /&gt;
PyMOL is great for casual visualization of biological molecules. In this example, a PDB file describing a protein is loaded and its style and color are tweaked.&lt;br /&gt;
&lt;br /&gt;
[[Image:Kchannel-rainbow.png|thumb|right|The end result will look something like this]]&lt;br /&gt;
[[Image:Mouse-3view.png|thumb|right|Default buttons for viewing with a 3-button mouse]]&lt;br /&gt;
# Obtain a PDB coordinates file for your favorite protein. (The [http://www.pdb.org/ RCSB Protein Data Bank] is a public structure repository containing over 40,000 protein structures in PDB format available for download, not a bad place to look.) For this example, we're using the potassium channel from ''Streptomyces Lividans'' ([http://www.pdb.org/pdb/files/1bl8.pdb 1BL8]).&lt;br /&gt;
#* or just type, &amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;fetch 1bl8&amp;lt;/source&amp;gt; and you can skip the next step (see [[Fetch]] command), as PyMOL will open the file for you.&lt;br /&gt;
# Open the PDB file using '''File''' =&amp;gt; '''Open...''' from the menu bar. The protein's structure will appear, probably rendered as simple bonding lines. &lt;br /&gt;
# The right side of the Viewer shows the loaded PDB as an object, as well as its command buttons. Each button contains a submenu with more options. Click '''S''', then '''cartoon''' to show the protein's secondary structure in popular cartoon form. &lt;br /&gt;
#* Notice that the lines view is still visible on top of the cartoon view. To hide the lines, click '''H''' then '''lines'''. &lt;br /&gt;
# To change the color of each protein chain (as defined in the coordinate file), click '''C''' then select '''chainbows''' from the '''by chain''' menu. &amp;quot;Chainbows&amp;quot; colors residues in each protein chain as a rainbow that begins with blue and ends with red.&lt;br /&gt;
#* Another common coloring method assigns a single color to each chain. Click '''C''' then select '''by chain''' from the '''by chain''' menu.&lt;br /&gt;
# Click and drag the protein to change the view. A list of mouse buttons is below the object control panel. &lt;br /&gt;
#*Rota: Rotate&lt;br /&gt;
#*Move: Translate object along an axis&lt;br /&gt;
#*MoveZ: aka Zoom&lt;br /&gt;
#*Sele: Select`&lt;br /&gt;
#*Slab:&lt;br /&gt;
#*Cent:&lt;br /&gt;
#*PkAt:&lt;br /&gt;
&lt;br /&gt;
=== Related Commands ===&lt;br /&gt;
[[Load]], [[Fetch]], [[Color]], [[Show]], [[Show_as]], [[Cartoon]], [[Lines]], [[Rotate]], [[Select]], [[Center]]&lt;br /&gt;
&lt;br /&gt;
==What else can this thing do?==&lt;br /&gt;
So, now what? Good question. PyMOL is a powerful program, and everyone uses it for something different. The remainder of this guide is devoted to common tasks that come in handy.&lt;br /&gt;
&lt;br /&gt;
===Saving an image===&lt;br /&gt;
You've found the perfect view, and you'd like to [[Save]] it?&lt;br /&gt;
&lt;br /&gt;
# Change the size of the viewer and zoom in/out to make the image the right size. Images are saved exactly as they appear in the viewer, and the size of the viewer determines the size of the image.&lt;br /&gt;
#* For example, images for printing and presenting should be larger than images for a posting on a website.&lt;br /&gt;
# Because PyMOL was designed to run on older computers, the maximum quality is not enabled by default. To change this, select '''Display''', '''Quality''', '''Maximum Quality'''. Notice that round things are rounder, curves are curvier, and color shading is smoother.&lt;br /&gt;
# Once you've found the appropriate view, save an image using '''File''', '''Save Image...''' An picture of the current view will be saved in PNG format.&lt;br /&gt;
&lt;br /&gt;
'''Tip:''' Using the ''[[ray]]'' command before saving an image will create a higher quality version with shadows, etc. This can take time, depending on the size of the image and speed of the computer, but the images created after ray tracing are usually spectacular. However, the ray tracing disappears if the view is changed in any way.&lt;br /&gt;
&lt;br /&gt;
===Selecting parts of an object===&lt;br /&gt;
Sometimes it might be useful to select part of an object and modify it directly; for example, selecting active-site residues in a protein to highlight them in another color. &lt;br /&gt;
&lt;br /&gt;
In the lower-right corner of the Viewer, next to the animation controls, is an '''S''' button (not to be confused with the '''S'''how button in the object control panel) that activates the selection tool. The selection tool can be changed to select atoms or residues by clicking ''Selecting Residues(or whatever)'' until the right mode appears.&lt;br /&gt;
&lt;br /&gt;
Once selecting is activated, a list of parts to select appears at the top of the Viewer. Select things clicking or dragging across a range.&lt;br /&gt;
&lt;br /&gt;
Selections can be controlled individually in the object control panel, just like any other object. To save a selection, select '''rename''' from the '''A''' menu.&lt;br /&gt;
&lt;br /&gt;
===Whoops: Getting unstuck===&lt;br /&gt;
PyMOL is a program meant to be explored and played with, and sometimes funny things happen in the process. A few common problems:&lt;br /&gt;
&lt;br /&gt;
* ''The model disappeared:'' Sometimes while rotating and moving a model, it can get lost. Right-click the background of the viewer, and select '''reset''' from the ''Main Pop-Up''. The model should return to view; if it doesn't, make sure the object is being drawn using the '''S''' menu.&lt;br /&gt;
* ''The model has funny colors, labels, etc and they won't go away:'' The '''H''' menu in the object control panel will remove unwanted details; however, sometimes it's difficult to know exactly what to remove. Select '''H''', then '''everything''' to hide all details and start fresh.&lt;br /&gt;
* ''Things are really messed up:'' Use '''File''', '''Reinitalize''' to reset PyMOL to its initial state, but all work will be lost.&lt;br /&gt;
&lt;br /&gt;
=== Related Commands ===&lt;br /&gt;
[[Save]], [[Viewport]], [[Zoom]], [[Save]], [[Ray]], [[Select]]&lt;br /&gt;
&lt;br /&gt;
===Saving work===&lt;br /&gt;
PyMOL supports saving your work in various formats.  You can save, images, molecules, sessions, movies, etc.&lt;br /&gt;
&lt;br /&gt;
====Sessions====&lt;br /&gt;
A PyMOL sessions retains the state of your PyMOL instance.  You can save the session to disk and reload it later.  You can setup a complicated scene, with transitions and more, and simply save it as a PyMOL Session (.pse) file.  Use, '''File'''=&amp;gt;'''Save Session''' or '''Save Session As...'''.&lt;br /&gt;
&lt;br /&gt;
Loading sessions is just as easy: '''File'''=&amp;gt;'''Load''' and choose your session file.&lt;br /&gt;
&lt;br /&gt;
====Molecules====&lt;br /&gt;
You can save a molecule by selecting '''File'''=&amp;gt;'''Save Molecule'''.  A dialog box will appear from which you can select your molecule to save.  You can also save an object or selection using the [[Save]] command.  It's very easy:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
save  fileName, objSel&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
where fileName is something like &amp;quot;1abc.pdb&amp;quot;, and objSel can be any object or selection.  For example, to save just the waters to disk do:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
save wat.pdb, resn HOH&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Images ====&lt;br /&gt;
You can save images that you've rendered (with [[Ray]]) or drawn (with [[Draw]]) again using the [[Save]] command or by '''File'''=&amp;gt;'''Save Image'''.  You can save in [[Png]], VRML-2 and the POVRay formats.&lt;br /&gt;
&lt;br /&gt;
You can save images to disk, through the command line, by using the [[Png]] command.&lt;br /&gt;
&lt;br /&gt;
==== Movies ====&lt;br /&gt;
PyMOL allows you to save movies you've created, too.  You can automatically save the MPEG or save a series of PNG files--for stitching together later.  This is a new command, and I don't know too much about it.  Use '''File'''=&amp;gt;'''Save Movie'''.&lt;br /&gt;
&lt;br /&gt;
===Scripting===&lt;br /&gt;
====Introduction and Very Simple Scripting====&lt;br /&gt;
Scripting in PyMOL ranges from very simple to very intricate.  You can make a simple loop (say rotating a molecule one-degree at a time) or execute full featured scripts.  Once you've got the basics of PyMOL down, learning scripting will greatly enhance your productivity and capabilities.&lt;br /&gt;
&lt;br /&gt;
Because of the way PyMOL is built on top of the Python interpreter, any command that PyMOL doesn't recognize it passes on to Python to execute.  This is a '''very''' handy feature--you essentially have a live Python interpreter you can interact with, which makes your life much easier.  Take the following for example:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
f = 10.&lt;br /&gt;
for x in range(0,100,10):&lt;br /&gt;
  cmd.set(&amp;quot;spec_direct_power&amp;quot;, float(float(x) / f))&lt;br /&gt;
  cmd.png(&amp;quot;spec_dir_power&amp;quot; + str(x) + &amp;quot;.png&amp;quot;, ray=1)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This simple script of 4 lines will create 10 images each one with the [[Spec_direct_power]] changed (see the [[Spec_direct_power]] for the output of this script; the animated GIF).  Did you notice that '''f''' on line 1 and '''for''' and '''x''' on line 2 are not PyMOL commands or symbols?  You can simply write Python code that interacts with PyMOL.  Brilliant!&lt;br /&gt;
&lt;br /&gt;
====The Python MiniShell ====&lt;br /&gt;
Taking this one level higher, you can write little code snippets, like 10-20+ lines of code that perform some specific task and wrap these in the &amp;lt;code&amp;gt;python&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;python end&amp;lt;/code&amp;gt; commands.  (If your script ever makes a mistake, you can abort the endeavor with &amp;lt;code&amp;gt;end&amp;lt;/code&amp;gt; instead of &amp;lt;code&amp;gt;python end&amp;lt;/code&amp;gt;.  The power here is that none of your command are executed until you type &amp;lt;code&amp;gt;python end&amp;lt;/code&amp;gt;.  Confused?  Here's the above example in using the wrapper:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
python&lt;br /&gt;
f = 10.&lt;br /&gt;
for x in range(0,100,10):&lt;br /&gt;
  cmd.set(&amp;quot;spec_direct_power&amp;quot;, float(float(x) / f))&lt;br /&gt;
  cmd.png(&amp;quot;spec_dir_power&amp;quot; + str(x) + &amp;quot;.png&amp;quot;, ray=1)&lt;br /&gt;
python end&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
The &amp;lt;code&amp;gt;[[python]]&amp;lt;/code&amp;gt; command gives you complete access to the Python shell and &amp;lt;code&amp;gt;python end&amp;lt;/code&amp;gt; brings you back into PyMOL's shell.  Also, note that PyMOL saves information across instantiations of the &amp;lt;code&amp;gt;python&amp;lt;/code&amp;gt; command.  For example,&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# enter mini python shell&lt;br /&gt;
python&lt;br /&gt;
ff = 10.&lt;br /&gt;
python end&lt;br /&gt;
&lt;br /&gt;
# now we're back in the normal PyMOL shell, where PyMOL knows about the value&lt;br /&gt;
print ff&lt;br /&gt;
&lt;br /&gt;
# in the mini shell, Python still knows about ff.&lt;br /&gt;
python &lt;br /&gt;
print ff&lt;br /&gt;
python end&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Learning More... ====&lt;br /&gt;
To learn more about scripting check out:&lt;br /&gt;
*[[Biochemistry_student_intro]] Basic use of GUI and script&lt;br /&gt;
*[[Simple_Scripting]] introduction&lt;br /&gt;
*[[Advanced_Scripting]] pages&lt;br /&gt;
*[[:Category:Script_Library|Popular Script Library]].&lt;br /&gt;
&lt;br /&gt;
==Coming Soon==&lt;br /&gt;
&lt;br /&gt;
===Logging===&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
[[Category:States]]&lt;br /&gt;
[[Category:Movies]]&lt;/div&gt;</summary>
		<author><name>Tlinnet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=User:Tlinnet&amp;diff=13359</id>
		<title>User:Tlinnet</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=User:Tlinnet&amp;diff=13359"/>
		<updated>2015-11-19T21:14:28Z</updated>

		<summary type="html">&lt;p&gt;Tlinnet: /* Test */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Author of following PyMOL scripts ==&lt;br /&gt;
[[Propka | PROPKA for PyMOL]] 2015/11/19 42k&amp;lt;br&amp;gt;&lt;br /&gt;
[[DisplacementMap | Displacement map for conformational changes]] 2015/11/19 43k&amp;lt;br&amp;gt;&lt;br /&gt;
[[Forster-distance-calculator | Forster distance calculator]] 2015/11/19 22k &amp;lt;br&amp;gt;&lt;br /&gt;
[[Rotkit | Rotation matrix calculator]] 015/11/19 17k &amp;lt;br&amp;gt;&lt;br /&gt;
[[ColorByDisplacement | Color by displacement]] 2015/11/19 13k &amp;lt;br&amp;gt;&lt;br /&gt;
[[Cyspka | Surface Cysteine pKa predictor]] 2015/11/19 12k&lt;br /&gt;
&lt;br /&gt;
149 k&lt;br /&gt;
&lt;br /&gt;
== Tutorial ==&lt;br /&gt;
[[Biochemistry_student_intro | Biochemistry student intro]] 2015/11/19 60k&lt;br /&gt;
&lt;br /&gt;
== Test ==&lt;br /&gt;
&amp;lt;nowiki&amp;gt; &amp;lt;include src=&amp;quot;https://raw.github.com/Pymol-Scripts/Pymol-script-repo/master/cyspka.py&amp;quot; /&amp;gt; &amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tlinnet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=User:Tlinnet&amp;diff=13358</id>
		<title>User:Tlinnet</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=User:Tlinnet&amp;diff=13358"/>
		<updated>2015-11-19T21:13:34Z</updated>

		<summary type="html">&lt;p&gt;Tlinnet: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Author of following PyMOL scripts ==&lt;br /&gt;
[[Propka | PROPKA for PyMOL]] 2015/11/19 42k&amp;lt;br&amp;gt;&lt;br /&gt;
[[DisplacementMap | Displacement map for conformational changes]] 2015/11/19 43k&amp;lt;br&amp;gt;&lt;br /&gt;
[[Forster-distance-calculator | Forster distance calculator]] 2015/11/19 22k &amp;lt;br&amp;gt;&lt;br /&gt;
[[Rotkit | Rotation matrix calculator]] 015/11/19 17k &amp;lt;br&amp;gt;&lt;br /&gt;
[[ColorByDisplacement | Color by displacement]] 2015/11/19 13k &amp;lt;br&amp;gt;&lt;br /&gt;
[[Cyspka | Surface Cysteine pKa predictor]] 2015/11/19 12k&lt;br /&gt;
&lt;br /&gt;
149 k&lt;br /&gt;
&lt;br /&gt;
== Tutorial ==&lt;br /&gt;
[[Biochemistry_student_intro | Biochemistry student intro]] 2015/11/19 60k&lt;br /&gt;
&lt;br /&gt;
== Test ==&lt;br /&gt;
# &amp;lt;include src=&amp;quot;https://raw.github.com/Pymol-Scripts/Pymol-script-repo/master/cyspka.py&amp;quot; /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tlinnet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=User:Tlinnet&amp;diff=13357</id>
		<title>User:Tlinnet</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=User:Tlinnet&amp;diff=13357"/>
		<updated>2015-11-19T20:49:47Z</updated>

		<summary type="html">&lt;p&gt;Tlinnet: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Author of following PyMOL scripts ==&lt;br /&gt;
[[Propka | PROPKA for PyMOL]] 2015/11/19 42k&amp;lt;br&amp;gt;&lt;br /&gt;
[[DisplacementMap | Displacement map for conformational changes]] 2015/11/19 43k&amp;lt;br&amp;gt;&lt;br /&gt;
[[Forster-distance-calculator | Forster distance calculator]] 2015/11/19 22k &amp;lt;br&amp;gt;&lt;br /&gt;
[[Rotkit | Rotation matrix calculator]] 015/11/19 17k &amp;lt;br&amp;gt;&lt;br /&gt;
[[ColorByDisplacement | Color by displacement]] 2015/11/19 13k &amp;lt;br&amp;gt;&lt;br /&gt;
[[Cyspka | Surface Cysteine pKa predictor]] 2015/11/19 12k&lt;br /&gt;
&lt;br /&gt;
149 k&lt;br /&gt;
&lt;br /&gt;
== Tutorial ==&lt;br /&gt;
[[Biochemistry_student_intro | Biochemistry student intro]] 2015/11/19 60k&lt;br /&gt;
&lt;br /&gt;
== Test ==&lt;br /&gt;
&amp;lt;include src=&amp;quot;https://raw.github.com/Pymol-Scripts/Pymol-script-repo/master/cyspka.py&amp;quot; /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tlinnet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pymol.org/index.php?title=3d_pdf&amp;diff=12754</id>
		<title>3d pdf</title>
		<link rel="alternate" type="text/html" href="https://wiki.pymol.org/index.php?title=3d_pdf&amp;diff=12754"/>
		<updated>2015-05-14T16:17:14Z</updated>

		<summary type="html">&lt;p&gt;Tlinnet: /* Linux install - Convert the IDTF to U3D */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
PyMOL can convert to formats (vrml2 and idtf) that can be converted to a [[:File:Pymol.pdf|3D PDF]] (will not work with most PDF browser plugins; must be downloaded and viewed with certain viewers liked Adobe Acrobat 9.2+).&lt;br /&gt;
&lt;br /&gt;
'''Note'''. The figure is only represented in cartoon format. No sticks yet...&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
* PyMOL&lt;br /&gt;
* [http://sourceforge.net/projects/u3d/files/Universal%203D%20Sample%20Software/ Universal 3D Sample Software - u3d converter - IDTF to U3D]&lt;br /&gt;
* LaTeX (pdflatex)&lt;br /&gt;
&lt;br /&gt;
== Get IDFT file from PyMOL == &lt;br /&gt;
* Save your molecule to an IDTF file in PyMOL:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
save pymol.idtf, *&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
PyMOL will print a line that looks like:&lt;br /&gt;
  3Daac=20.0, 3Droll=0, 3Dc2c=0 0 1, 3Droo=62.45, 3Dcoo=0 0 -62.45&lt;br /&gt;
copy this line into the pymol.tex file overwriting the same line in the file.&lt;br /&gt;
&lt;br /&gt;
= Windows - Convert the IDTF to U3D =&lt;br /&gt;
== Quick ==&lt;br /&gt;
# Download '''Universal 3D Sample Software - u3d converter - IDTF to U3D''', and extract to Desktop&amp;lt;br&amp;gt;&lt;br /&gt;
# Navigate to the '''bin''' folder: \Desktop\U3D_A_061228_5\Bin\Win32\Release &amp;lt;br&amp;gt;&lt;br /&gt;
# Copy '''pymol.idtf''' in here.&lt;br /&gt;
# Hold '''shift''' key, right click in folder, click '''Open command window here'''.&lt;br /&gt;
Then copy this inot command window:&lt;br /&gt;
 IDTFConverter -input pymol.idtf -output pymol.u3d&lt;br /&gt;
Copy the pymol.u3d into your LaTeX folder&lt;br /&gt;
== General ==&lt;br /&gt;
# Download '''Universal 3D Sample Software - u3d converter - IDTF to U3D''', and extract to C:\Program Files (x86)\U3D_A_061228_5&amp;lt;br&amp;gt;&lt;br /&gt;
# Make a '''IDTF2U3D.bat''' and afterwards copy to '''C:\Windows'''.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;winbatch&amp;quot;&amp;gt;&lt;br /&gt;
@echo off&lt;br /&gt;
rem -- Run IDTFConverter --&lt;br /&gt;
set IDTF_EXE_DIR=C:\Program Files (x86)\U3D_A_061228_5\Bin\Win32\Release&lt;br /&gt;
&lt;br /&gt;
if exist &amp;quot;%IDTF_EXE_DIR%\IDTFConverter.exe&amp;quot; goto haveProg&lt;br /&gt;
echo &amp;quot;%IDTF_EXE_DIR%\IDTFConverter.exe&amp;quot; not found&lt;br /&gt;
goto eof&lt;br /&gt;
&lt;br /&gt;
:haveProg&lt;br /&gt;
if .%1==. goto noarg&lt;br /&gt;
&lt;br /&gt;
&amp;quot;%IDTF_EXE_DIR%\IDTFConverter.exe&amp;quot; -input %1 -output %~n1.u3d &lt;br /&gt;
goto eof&lt;br /&gt;
&lt;br /&gt;
:noarg&lt;br /&gt;
echo no arguments given.&lt;br /&gt;
echo IDTF2U3D pymol.idtf&lt;br /&gt;
&lt;br /&gt;
:eof&lt;br /&gt;
echo Done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
# Navigate to '''pymol.idtf'''. Right click, Open with..., Browse to: '''C:\Windows''' and select '''IDTF2U3D.bat'''&lt;br /&gt;
Copy the pymol.u3d into your LaTeX folder&lt;br /&gt;
&lt;br /&gt;
= Linux install - Convert the IDTF to U3D=&lt;br /&gt;
* Currently you have to compile the u3d converter on Linux. I did that with:&lt;br /&gt;
* Some versions of Acrobat on Linux incorrectly parse the 3D data. Adobe knows about this and plans to fix it. Ironically, I created a 3D PDF on Linux but could only view it on Mac OS X.&lt;br /&gt;
See current versions here: http://www2.iaas.msu.ru/tmp/u3d&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd ~/Downloads/ ;&lt;br /&gt;
wget http://www2.iaas.msu.ru/tmp/u3d/u3d-1.4.3.tar.gz ;&lt;br /&gt;
tar -xzf u3d-1.4.3.tar.gz ;&lt;br /&gt;
cd u3d-1.4.3 ;&lt;br /&gt;
cmake . ;&lt;br /&gt;
make ;&lt;br /&gt;
chmod g+wx . ;&lt;br /&gt;
set IDDIR=$PWD ;&lt;br /&gt;
&lt;br /&gt;
cat &amp;gt; IDTF2U3D &amp;lt;&amp;lt; EOF&lt;br /&gt;
#!/bin/tcsh&lt;br /&gt;
set FOLD=\$PWD&lt;br /&gt;
set IN=\$PWD/\$1&lt;br /&gt;
cp -f \$IN $IDDIR&lt;br /&gt;
cd $IDDIR&lt;br /&gt;
./IDTFConverter -input \$1 -output \$1:r:t.u3d&lt;br /&gt;
cp -f \$1:r:t.u3d \$FOLD/&lt;br /&gt;
EOF&lt;br /&gt;
&lt;br /&gt;
chmod +x IDTF2U3D&lt;br /&gt;
&lt;br /&gt;
ln -s $PWD/IDTF2U3D ~/bin/IDTF2U3D&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then write in terminal&lt;br /&gt;
 IDTF2U3D pymol.idtf&lt;br /&gt;
&lt;br /&gt;
= LaTeX code =&lt;br /&gt;
== LaTeX code pdf  ==&lt;br /&gt;
Example [[:File:Pymol.pdf|3D PDF]]&amp;lt;br&amp;gt;&lt;br /&gt;
Download Example, and open in acrobat reader: [http://www.fys.ku.dk/~tlinnet/1zqa.pdf 1zqa PDF]&lt;br /&gt;
* The following LaTeX code saved as &amp;quot;pymol.tex&amp;quot;:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;latex&amp;quot;&amp;gt;&lt;br /&gt;
\documentclass[a4paper]{article}&lt;br /&gt;
\usepackage[3D]{movie15}&lt;br /&gt;
\usepackage[UKenglish]{babel}&lt;br /&gt;
\usepackage[colorlinks=true]{hyperref} &lt;br /&gt;
\begin{document}&lt;br /&gt;
\title{PyMOL 3D Objects in PDF}&lt;br /&gt;
\author{Jason Vertrees}&lt;br /&gt;
\maketitle&lt;br /&gt;
\begin{figure}[!htb]&lt;br /&gt;
\centering&lt;br /&gt;
\includemovie[&lt;br /&gt;
poster,&lt;br /&gt;
toolbar, %same as `controls'&lt;br /&gt;
label=pymol.ud3&lt;br /&gt;
text=(pymol.u3d),&lt;br /&gt;
3Dlights=CAD,&lt;br /&gt;
% replace the next line with what PyMOL output&lt;br /&gt;
3Daac=20.0, 3Droll=0, 3Dc2c=0 0 1, 3Droo=243.39, 3Dcoo=0 0 -243.39&lt;br /&gt;
]{\linewidth}{\linewidth}{pymol.u3d}&lt;br /&gt;
\caption{A PyMOL object embedded in PDF, using U3D data format.}&lt;br /&gt;
\label{pym:ex3d}&lt;br /&gt;
\end{figure}&lt;br /&gt;
\end{document}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== LaTeX beamer presentation ==&lt;br /&gt;
Download Example, and open in acrobat reader: [http://www.fys.ku.dk/~tlinnet/beamer.pdf beamer PDF] &amp;lt;br&amp;gt;&lt;br /&gt;
Download Example, and open in acrobat reader: [http://www.fys.ku.dk/~tlinnet/beamer_1zqa.pdf beamer 1zqa PDF]&lt;br /&gt;
&amp;lt;source lang=&amp;quot;latex&amp;quot;&amp;gt;&lt;br /&gt;
\documentclass{beamer}&lt;br /&gt;
\usepackage[3D]{movie15}&lt;br /&gt;
\usepackage[UKenglish]{babel}&lt;br /&gt;
&lt;br /&gt;
%% See: http://en.wikibooks.org/wiki/LaTeX/Presentations&lt;br /&gt;
%% See: http://www.hartwork.org/beamer-theme-matrix/&lt;br /&gt;
\usetheme{Copenhagen} &lt;br /&gt;
\usecolortheme{beaver}&lt;br /&gt;
&lt;br /&gt;
\begin{document}&lt;br /&gt;
\title{Simple Beamer Class}   &lt;br /&gt;
\author{Troels Linnet} &lt;br /&gt;
\date{\today} &lt;br /&gt;
\frame{\titlepage} &lt;br /&gt;
\frame{\frametitle{Table of contents}\tableofcontents} &lt;br /&gt;
&lt;br /&gt;
\section{3D object} &lt;br /&gt;
\frame{\frametitle{Pymol 3D object}&lt;br /&gt;
\begin{figure}[!htb]&lt;br /&gt;
\centering&lt;br /&gt;
\includemovie[&lt;br /&gt;
poster,&lt;br /&gt;
toolbar, %same as `controls'&lt;br /&gt;
label=pymol.ud3&lt;br /&gt;
text=(pymol.u3d),&lt;br /&gt;
3Dlights=CAD,&lt;br /&gt;
% replace the next line with what PyMOL output&lt;br /&gt;
3Daac=20.0, 3Droll=0, 3Dc2c=0 0 1, 3Droo=243.39, 3Dcoo=0 0 -243.39&lt;br /&gt;
]{10cm}{6cm}{pymol.u3d}&lt;br /&gt;
\caption{A PyMOL object embedded in PDF, using U3D data format.}&lt;br /&gt;
\label{pym:ex3d}&lt;br /&gt;
\end{figure}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
\section{Lists}&lt;br /&gt;
\subsection{Lists I}&lt;br /&gt;
\frame{\frametitle{Unnumbered lists}&lt;br /&gt;
\begin{block}{My bloc}&lt;br /&gt;
test of bloc&lt;br /&gt;
\end{block}&lt;br /&gt;
&lt;br /&gt;
\begin{itemize}&lt;br /&gt;
\item Introduction to  \LaTeX  &lt;br /&gt;
\item Beamer class&lt;br /&gt;
\end{itemize} &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
\end{document}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Create the PDF using LaTeX:&lt;br /&gt;
  pdflatex pymol.tex&lt;br /&gt;
&lt;br /&gt;
= More on 3D PDFs =&lt;br /&gt;
* [http://www.adobe.com/manufacturing/3dpdfsamples/3dsolutions/ 3D PDFs at Adobe]&lt;br /&gt;
* [http://molecularmodelingbasics.blogspot.dk/2009/12/future-of-scientific-publishing-is-here.html Future of scientific publishing]&lt;br /&gt;
* [http://jpswalsh.com/how-to-embed-a-3d-molecule-in-a-pdf/ Instructions for Jmol]&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[Movie_pdf | Movie in pdf]]&lt;br /&gt;
&lt;br /&gt;
[[Category:PyMOL_in_pdf]]&lt;/div&gt;</summary>
		<author><name>Tlinnet</name></author>
	</entry>
</feed>