README.md 9.24 KB
Newer Older
jdurrant's avatar
jdurrant committed
1
LipidWrapper 1.15
jdurrant's avatar
jdurrant committed
2
=================
3
4
5
6
7
8
9
10
11
12
13
14
15
16

As ever larger and more complex biological systems are modeled in 
silico, approximating physiological lipid bilayers with simple 
planar models becomes increasingly unrealistic. When building 
large-scale models of whole subcellular environments, models of 
lipid membranes with carefully considered, biologically relevant 
curvature are essential. We here present a computer program called
LipidWrapper, written by Jacob Durrant in the lab of Rommie E. Amaro,
capable of creating curved membrane models with geometries derived
from various possible sources, both experimental and theoretical. We
are hopeful that this utility will be a useful tool for the
computational-biology community.

Installation
jdurrant's avatar
jdurrant committed
17
------------
18
19
20
21
22
23
24
25
26
27
28
29
30
31
As a python script, LipidWrapper should run on any operating system
that has python, numpy, and scipy installed, without requiring the
installation of additional software. If the user optionally wishes 
to generate lipid-bilayer models from PNG images, the Python Imaging 
Library must also be installed. LipidWrapper has been explicitly 
tested on Scientific Linux 6.2, OS X, Windows XP, and Windows 7.

The program download includes an "examples" directory that demonstrate 
how to use the software. Examples are provided showing how to generate 
lipid-bilayer models wrapped around equations, PDB point files, DAE 
models, and image-defined surfaces. Test PDB, DAE, and PNG files are 
included.

Command-Line Parameters
jdurrant's avatar
jdurrant committed
32
-----------------------
33

jdurrant's avatar
jdurrant committed
34
### Methods for creating a surface mesh ###
35

jdurrant's avatar
jdurrant committed
36
```
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
--surface_equation: Generate a surface mesh from a python-formatted
      equation defining z, given x and y. The --min_x, --max_x,
      --min_y, and --max_y parameters are used to specify the region
      over which the function should be evaluated. The --step_x and
      --step_y parameters define the x-y distance between adjacent
      points. Python functions from the math, numpy, and scipy modules
      can be used. Example: --surface_equation "z =
      250*numpy.sin(x*x/60000 +y*y/60000)"
--surface_filename: If this parameter specifies a file with the PDB
      extension, a surface mesh is generated from the coordinates of
      the PDB atoms. Example: --surface_filename mymesh.pdb
--surface_filename: If this parameter specifies a file that does not
      have the PDB extension, the file is assumed to be a gray-scale
      image, where black represents regions that are topologically
      low, and white represents regions that are topologically high.
      The --min_x, --max_x, --min_y, and --max_y parameters are used
      to specify the region where the mesh should be generated. The
      --step_x and --step_y parameters define the x-y distance between
      adjacent points. The --max_height parameter determines the
      height of the bilayer model at those locations where the image
      is white; black regions are assigned a height of 0. This feature
      is only available if the python PIL module has been installed on
      your system. Example: --surface_filename mymesh.png
jdurrant's avatar
jdurrant committed
60
```
61
62

The initial lipid model
jdurrant's avatar
jdurrant committed
63
-----------------------
64

jdurrant's avatar
jdurrant committed
65
```
66
67
68
69
70
71
72
73
74
75
76
77
--lipid_pdb_filename: This parameter specifies a PDB file containing
      an all-atom model of a planar lipid bilayer. LipidWrapper will
      wrap this lipid around the user-generated mesh. Example:
      --lipid_pdb_filename lipid.pdb
--lipid_headgroup_marker: A unique atom representing the headgroup of
      each lipid residue must be specified. The
      --lipid_headgroup_marker accepts a comma-separated lists of atom
      specifications (RESNAME_ATOMNAME). If either RESNAME or ATOMNAME
      is omitted, any value will be accepted. By default, LipidWrapper
      identifies lipid headgroups by looking for any atom named "P"
      (_P) or any atom named "O3" belonging to a cholesterol molecule
      (CHL1_O3). Example: --lipid_headgroup_marker "_P,CHL1_O3"
jdurrant's avatar
jdurrant committed
78
```
79
80

Methods for resolving lipid clashes
jdurrant's avatar
jdurrant committed
81
-----------------------------------
82

jdurrant's avatar
jdurrant committed
83
```
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
--delete_clashing_lipids: It's common for lipids to sterically clash
      at the interface of two adjacent surface-mesh tessellated
      triangles. If this parameter is set to TRUE, any clashing lipids
      are deleted. Example: --delete_clashing_lipids TRUE
--clash_cutoff: If you do choose to delete clashing lipids, this
      parameter determines how close two atoms must be (in Angstroms)
      to constitute a steric clash. Example: --clash_cutoff 2.0
--fill_holes: Deleting lipids often leaves holes in the membrane. If
      this parameter is set to TRUE, LipidWrapper tries to fill the
      hole. Example: --fill_holes TRUE
--fill_hole_exhaustiveness: Essentially, how long LipidWrapper should
      try to fill the holes. Example: --fill_hole_exhaustiveness 10
--clashing_potential_margin: Lipid clashes occur at the edges of
      adjacent tessellated triangles. If these triangles are very
      large, it's faster to only check for clashes and holes near the
      triangle edges. This variable specifies how far from the edges,
      in Angstroms, that LipidWrapper should look for clashes and
      holes. Example: --clashing_potential_margin 25.0
--very_distant_lipids_cutoff: LipidWrapper determines if two lipids
      clash by comparing the distance between every atom in the first
      lipid with every atom in the second lipid. This can be
      computationally expensive. However, sometimes two lipids are so
      distant from each other, that it's obvious there are no clashes,
      making the pair-wise comparison unnecessary. Before performing
      this expensive pair-wise comparison, LipidWrapper calculates the
      distance between one atom of each lipid. If this distance is
      greater than this user-specified cutoff, the program will simply
      assume there are no clashes. WARNING: Remember to consider the
      width of your lipid bilayer when choosing this value. Adjacent
      lipids on opposite sides of the bilayer can seem distant when
      considering the distance between their headgroups, for example.
      Example: --very_distant_lipids_cutoff 50.0
--triangle_center_proximity_cutoff_distance: Lipid steric
      clashes/holes typically occur between lipids that belong to
      adjacent tessellated triangles. However, if tessellated
      triangles are small enough, clashes are possible between lipids
      that belong to non-adjacent triangles as well. Consequently, in
      addition to checking for adjacency, LipidWrapper also checks the
      distance between the triangle centers, using this user-specified
      value as a cutoff. Example:
      --triangle_center_proximity_cutoff_distance 50.0
--memory_optimization_factor: When the tessellated triangles are very
      large and consequently contain many individual lipids, the
      extensive pairwise distance comparisons required can result in
      memory errors. This parameter tells lipid Wrapper to divide the
      list of atoms being compared into smaller chunks. The pairwise
      distance comparison is performed piecewise on each chunk-chunk
      pair and so uses less memory, albeit at the expensive of speed.
      Only increase the value of this parameter if you run into memory
      errors. Example: --memory_optimization_factor 1
jdurrant's avatar
jdurrant committed
134
```
135
136

Additional options
jdurrant's avatar
jdurrant committed
137
------------------
138

jdurrant's avatar
jdurrant committed
139
```
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
--number_of_processors: Using multiple processors can significantly
      increase the speed of the LipidWrapper algorithm. Example:
      --number_of_processors 8
--show_grid_points: Aside from producing PDB coordinates for lipid
      atoms, additional coordinates will be appended to the bottom of
      the output containing "atoms" named "X" that specify the
      location of the surface mesh points. Example: --show_grid_points
      TRUE
--create_triangle_tcl_file: A separate file named "triangles.tcl" will
      be generated containing a tcl script that can be run in VMD to
      visualize the mesh surface. Example: --create_triangle_tcl_file
      TRUE
--output_directory: If an output directory is specified, all
      LipidWrapper output files, as well as additional files
      representing the intermediate steps required to build the final
      bilayer, will be saved in that directory. Example:
      --output_directory ./my_output/
--use_disk_instead_of_memory: For very large systems, storing the
      growing model in memory can be problematic. If this parameter is
      set to TRUE, the growing model will be stored on the hard disk
      instead. However, expect longer execution times if this
      parameter is set to TRUE. Example: --use_disk_instead_of_memory
      TRUE
--compress_output: Depending on the user options selected,
      LipidWrapper output can require a lot of disk space. If this
      parameter is set to TRUE, the output will be automatically
      compressed using the gzip algorithm (Lempel-Ziv coding LZ77).
      The files can be uncompressed with the UNIX gunzip utility, or
      similar Windows-based packages. Example: --compress_output TRUE
jdurrant's avatar
jdurrant committed
169
```
170
171

Example
jdurrant's avatar
jdurrant committed
172
-------
173

jdurrant's avatar
jdurrant committed
174
```
175
176
177
178
179
180
181
python lipidwrapper.py --surface_equation "z = 250*numpy.sin(x*x/60000
      +y*y/60000) * (-numpy.sqrt(x*x+y*y)/(560 * numpy.sqrt(2)) + 1)"
      --min_x 500 --max_x 1000 --min_y 500 --max_y 1000 --step_x 25
      --step_y 25 --lipid_pdb_filename lipid.pdb
      --lipid_headgroup_marker "_P,CHL1_O3" --delete_clashing_lipids
      TRUE --clash_cutoff 1.0 --fill_holes TRUE
      --fill_hole_exhaustiveness 10 > lipid_model.pdb
jdurrant's avatar
jdurrant committed
182
```