schrodinger.application.matsci.custom_lipid_prep module¶
Custom Lipid Preparation module
Copyright Schrodinger, LLC. All rights reserved.
- schrodinger.application.matsci.custom_lipid_prep.lipid_is_phospholipid(lipid_st)¶
Check if molecule is a phospholipid
- Parameters
lipid_st (structure.Structure) – Structure of lipid
- Return type
bool
- Returns
True if lipid is a phospholipid; False otherwise
- schrodinger.application.matsci.custom_lipid_prep.input_is_lipid(lipid_st)¶
Check if the input molecule is a lipid with the criterion of finding a 12-carbon chain. Unfortunately, this is not foolproof.
- Parameters
lipid_st (structure.Structure) – Structure of lipid
- Return type
bool
- Returns
True if input structure is a lipid; False otherwise
- schrodinger.application.matsci.custom_lipid_prep.validate_input_type(lipid_st, lipid_smiles, lipid_name)¶
Make sure that only one input is provided for the custom lipid, a SMILES string or a structure file
- Parameters
lipid_st (None or structure.Structure) – Lipid structure file
lipid_name (str) – Lipid SMILES
lipid_name – Name ascribed to input structure
- Raises
Exception – If both SMILES and structure are input or if neither are
- schrodinger.application.matsci.custom_lipid_prep.validate_lipid_struct(include_nonlipids, lipid_st, lipid_name)¶
If input structure is not a lipid, continue only if include_nonlipids option is True
- Parameters
include_nonlipids (bool) – True to include non-lipids; False otherwise
lipid_st (structure.Structure) – Input structure
lipid_name (str) – Name ascribed to input structure
- Raises
Exception – If the custom lipid is not a lipid and we are not including non-lipids
- schrodinger.application.matsci.custom_lipid_prep.validate_phospholipid_struct(include_nonphospholipids, lipid_st, lipid_name)¶
If lipid is not a phospholipid, continue only if include_nonphospholipids option is True
- Parameters
include_nonphospholipids (bool) – True to include non-phospholipids; False otherwise
struct (structure.Structure) – Input structure
lipid_name (str) – Name assigned to input lipid structure
- Raises
Exception – If the custom lipid is not a phospholipid and we are not including non-phospholipids
- schrodinger.application.matsci.custom_lipid_prep.validate_smiles(lipid_st, lipid_smiles, lipid_name)¶
Validate a smiles string
- Parameters
lipid_st (None or structure.Structure) – Input structure
lipid_smiles (None or str) – SMILES string
lipid_name (str) – Name assigned to input lipid structure
- Raises
Exception – If the SMILES input is not valid
- schrodinger.application.matsci.custom_lipid_prep.validate_stretching_option(stretching_option, lipid_smiles, cis_option, lipid_name)¶
Validate stretching option, which must be True if input is SMILES or stereochemistry options are defined
- Parameters
stretching_option (bool) – True to stretch the lipid using fast3D; False otherwise
lipid_smiles (None or str) – SMILES string
cis_option (bool or None) – How and if to assign stereochemistry. None if stereochemistry shouldn’t be assigned; True if cis; False if trans.
lipid_name (str) – Name assigned to input lipid structure
- Raises
Exception – If stretching is turned off but SMILES is input, and if stretching is turned off but stereochemistry is defined
- schrodinger.application.matsci.custom_lipid_prep.validate_renumbering_option(renumbering_option, is_phospholipid, lipid_name)¶
Validate renumbering option, which can only be done if the lipid is a phospholipid
- Parameters
renumbering_option (bool) – True to renumber the lipid; False otherwise
is_phospholipid (bool) – True if the custom lipid is a phospholipid
lipid_name (str) – Name assigned to input lipid structure
- Raises
Exception – If renumbering is on and the custom lipid is not a phospholipid because only phospholipids can be appropriately renumbered right now
- schrodinger.application.matsci.custom_lipid_prep.validate_custom_lipid_name(custom_lipid_name)¶
Validate custom lipid name
- Parameters
custom_lipid_name (str) – Name of the custom lipid
- Raises
Exception – If the custom lipid name has more than four characters
- class schrodinger.application.matsci.custom_lipid_prep.CustomLipidPrep(custom_lipid_name, lipid_st, lipid_smiles=None, cis=True, include_nonphospholipids=True, include_nonlipids=False, stretch=True, renumber=True, logger=None)¶
Bases:
object
Class to prepare custom lipid
- __init__(custom_lipid_name, lipid_st, lipid_smiles=None, cis=True, include_nonphospholipids=True, include_nonlipids=False, stretch=True, renumber=True, logger=None)¶
Initialize the custom lipid preparation module
- Parameters
custom_lipid_name (str) – 4-character name for custom lipid
lipid_st (structure.Structure or None) – Custom Lipid structure. If None, lipid_smiles should be defined.
lipid_smiles (str or None) – Custom Lipid SMILES string. If lipid_st is defined, this will be ignored
cis (bool) – True means to make cis double-bonds. False means to make trans double-bonds. None means to ignore double-bond stereochemistry
include_nonphospholipids (bool) – True to include non-phospholipids; False otherwise
include_nonlipids (bool) – True to include non-lipids; False otherwise
stretch (bool) – True means to run fast 3D and generate the optimal, stretched structure; False otherwise
renumber (bool) – True means to conduct the renumbering of phospholipids; False otherwise
logger (logging.Logger) – The logger imported from a driver
- run()¶
Run the custom lipid preparation
- static validateAllOptions(custom_lipid_name, lipid_st, lipid_smiles, cis, include_nonphospholipids, include_nonlipids, stretch, renumber)¶
Validate all arguments.
- Parameters
custom_lipid_name (str) – 4-character name for custom lipid
lipid_st (structure.Structure or None) – Custom Lipid structure. If None, lipid_smiles should be defined.
lipid_smiles (str or None) – Custom Lipid SMILES string. If lipid_st is defined, this will be ignored
cis (bool) – True means to make cis double-bonds. False means to make trans double-bonds. None means to ignore double-bond stereochemistry
include_nonphospholipids (bool) – True to include non-phospholipids; False otherwise
include_nonlipids (bool) – True to include non-lipids; False otherwise
stretch (bool) – True means to run fast 3D and generate the optimal, stretched structure; False otherwise
renumber (bool) – True means to conduct the renumbering of phospholipids; False otherwise
- static getLipidStructure(lipid_st, lipid_smiles)¶
Get the lipid structure by either reading the custom lipid MAE file input or converting the custom smiles string input to a structure.
- Parameters
lipid_st (None or structure.Structure) – Lipid structure file
lipid_smiles (None or str) – Lipid SMILES string
- Return type
- Returns
Lipid Structure
- setAtomProp(prop_type, atom_idx, settings)¶
Set the pdbres, pdbname, or hydrophilic/hydrophobic atoms of the lipid
- Parameters
prop_type (str) – Property type to set
atom_idx (list) – List of atom indices for which to set property
settings (list) – What to set each atom index to for given prop_type
- makeCustomLipid()¶
Make MAE of Custom Lipid
- class schrodinger.application.matsci.custom_lipid_prep.LipidEndProcessor(struct, include_nonphospholipids=False)¶
Bases:
object
Find the hydrophobic and hydrophilic ends of the lipid structure
- __init__(struct, include_nonphospholipids=False)¶
Initialize the LipidEndProcessor
- Parameters
struct (structre.Structure) – the structure to process
include_nonphospholipids (bool) – True to find the head and tail atoms of non-phospholipids
- static getHeavyStructGraph(struct, asl='not atom.ele H')¶
Get the networkx graph of the heavy atoms in the structure
- Parameters
struct (structure.Structure) – Structure of the lipid
asl (str) – Atom selection to acquire graph from structure, where default is creating the graph from heavy atoms only
- Returns
the networkx graph of the heavy atoms in the structure
- Return type
networkx.Graph
- getFurthestPair(nodes, start_node=None)¶
Get the pair of nodes among the given nodes that are furthest apart. Note graph.find_head_tail is more efficient version of this function but lacks the ability to specify a nodes.
- Parameters
nodes (list) – the nodes to find the furthest pair among
start_node (int) – the node to start from
- Returns
the pair of nodes that are furthest apart, one of them will be the start_node if it is specified
- Return type
tuple
- removePhosphorusNodes()¶
Remove all the nodes between the phosphorus atoms to create graph with tail chains only
- Returns
the graph with the phosphorus nodes removed and the removed nodes
- Return type
tuple(networkx.Graph, list)
- getNodesByCondition(nx_graph, condition_fn)¶
Get the nodes in the graph that satisfy the condition function
- Parameters
nx_graph (networkx.Graph) – the graph to search
condition_fn (function) – the function to use to determine if a node satisfies the condition
- Returns
the nodes that satisfy the condition
- Return type
list
- isNodeElement(node, elements)¶
Check if the element of the given node belongs to the given elements
- Parameters
node (int) – the node to check
elements (str or list) – the element(s) to check for in the node
- Returns
True if the node has the element(s), False otherwise
- Return type
bool
- isNodeTerminal(node)¶
Check if the node is terminal (has only one neighbor)
- Parameters
node (int) – the node to check
- Returns
True if the node is terminal, False otherwise
- Return type
bool
- findHydrophobicAtoms(sub_graphs)¶
Find the hydrophobic atoms in the structure
- Parameters
sub_graphs (list(networkx.Graph)) – The sorted list of sub graphs in the structure in order of decreasing size
- Returns
the ids of the hydrophobic atoms
- Return type
tuple
- findHydrophilicAtoms(sub_graphs, removed_nodes)¶
Find the hydrophilic atoms in the structure
- Parameters
sub_graphs (list(networkx.Graph)) – The sorted list of sub graphs in the structure in order of decreasing size
removed_nodes (list) – the nodes that were removed from the structure
- Returns
the ids of the hydrophilic atoms
- Return type
tuple
- searchTerminalAtoms()¶
Search for the terminal atoms in the structure
- Returns
the ids of the hydrophilic and hydrophobic atoms
- Return type
tuple
- getHydrophilicAndHydrophobic()¶
Get the atom ids of the hydrophilic and hydrophobic atoms in the structure. If the structure has no marked hydrophilic or hydrophobic atoms, then they will be searched assuming that the phosphorus atoms are the central atom and chains are attached to them.
- Returns
the ids of the hydrophilic and hydrophobic atoms, will empty tuple of empty lists if no hydrophilic or hydrophobic atoms are found
- Return type
tuple
- class schrodinger.application.matsci.custom_lipid_prep.RenumberLipid(lipid_st, head_tail_info, logger=None)¶
Bases:
object
Class for finding the correct pdbnames for lipid atoms
- __init__(lipid_st, head_tail_info, logger=None)¶
Initialize identifying features of the custom lipid
- Parameters
lipid (structure.Structure) – The lipid structure
head_tail_info (FindHeadTail) – Class instance of FindHeadTail, containing information about tail_skeletons and head_skeleton
logger (logging.Logger) – The logger imported from a driver
- createSegmentInfo()¶
Creates a dictionary containing information about each segment of the lipid. Skeletons are the backbone atom indices for each segment. Start denotes the numbering of each segment, immediately following the atom element (e.g., the head is renumbered C1 and so on, the first tail is renumbered C2 and so on, the second tail is renumbered C3…)
- getPDBNames()¶
- For each segment of the lipid (Head, Tail), get the pdbnames associated
with each skeleton
- setSpacing(atom_name)¶
Set appropriate four-character spacing for pdbname where spaces precede the atomname
- Parameters
atom_name (str) – Atom name with greater than or equal to four characters and incorrect spacing
- Return type
str
- Returns
Four-character atom name (pdbname)
- storePDBName(atom_idx, atom_name)¶
Add the atom name (pdbname) to the dictionary with atom index as key if it doesn’t already exist
- Parameters
atom_idx (int) – Index of atom
atom_name (str) – Name of atom
- makePDBName(atom_idx, s_idx, is_backbone=True)¶
Generate the atom’s name (pdbname)
- Parameters
atom_idx (int) – Index of atom
s_idx (int) – Number associated with head vs. tail atoms. Head has s_idx = 1; tail has s_idx = 2, 3… depending on tail order
is_backbone (bool) – True if atom is on the lipid backbone; False if atom branches from the backbone
- getSegmentPDBNames(lipid_segment, skeletons, start)¶
Get the pdbname for each atom in the head or tail
- Parameters
lipid_segment (str) – Lipid segment (Head, Tail)
skeletons (list(lists)) – backbone path of indices for head or for each tail
start (int) – Starting number to tag each segment pdbname in pdbname prefix
- class schrodinger.application.matsci.custom_lipid_prep.FindHeadTail(lipid_st, include_nonphospholipids, logger=None)¶
Bases:
schrodinger.application.matsci.custom_lipid_prep.LipidEndProcessor
Class for finding head atoms & tail atoms
- __init__(lipid_st, include_nonphospholipids, logger=None)¶
Initialize lipid structure and common lipid entities
- Parameters
lipid (structure_file) – The lipid structure
include_nonphospholipids (bool) – True means to find the head/tail atoms for lipids that are not phospholipids
logger (logging.Logger) – The logger imported from a driver
- createLipidSkeleton(is_phospholipid=False)¶
Create lipid skeleton for phospholipids. Skeletons are used in renumbering and, thus, only make sense to calculate if the lipid is a phospholipid
- findAnchorHierarchy(anchor_O_idx)¶
Find the anchoring carbon’s hierarchy to determine order of tails Carbon’s hierarchy: The first tail is the one that’s closest to the head
- Parameters
anchor_O_idx (int) – Index of atom anchoring tail to lipid head
- Return type
int
- Returns
The distance (in bonds) between the anchor atom and a head atom
- findAnchoredPath(path)¶
Find the anchoring carbon atom index for the tail with path Cut the path at the carbon after the first non-carbon atom
- Parameters
path (list) – Shortest path from a given tail atom idx to head
- Return type
tuple(list, int)
- Returns
Cut path from anchor to tail at anchor atom and number of bonds b/w anchor and head atom
- mapHead()¶
Find the path of the head from the anchor to the top
- Return type
list
- Returns
List of head indices, where list[0] is the anchor atom
- mapTails()¶
Find the path of each tail from the anchor to tail atom index
- Return type
list of lists
- Returns
List of each tail indices, where list[0] is anchor atom
- class schrodinger.application.matsci.custom_lipid_prep.StretchMol(lipid_st, head_tail_info, logger=None)¶
Bases:
object
Class for acquiring optimal structure of lipid using Fast3D
- __init__(lipid_st, head_tail_info, logger=None)¶
Initialize the temporary structure to be stretched
- Parameters
lipid_st (structure.Structure) – The unstretched temporary structure
head_tail_info (FindHeadTail) – Class instance of FindHeadTail, containing information about head_idx and tail_idx for selecting the best structure created by Fast3d
logger (logging.Logger) – The logger imported from a driver
- getHeadTailCOM(struct)¶
Find the centers of mass for head and tail atoms
- Parameters
struct (structure.Structure) – A fast3D-generated structure of lipid
- Return type
tuple(float, float)
- Returns
Vector of coordinates of head COM and tail COM
- genDistHeadTail(struct)¶
Find the distance between the centers of mass of the head and tail atom indices for a given structure
- Parameters
struct (structure.Structure) – A fast3D-generated structure of lipid
- Return type
float
- Returns
Distance between COM of tail atoms with COM of head atoms
- genDistTails(struct)¶
Find the average distance between each tail atom for a given structure
- Parameters
struct (structure.Structure) – A fast3D-generated structure of lipid
- Return type
float
- Returns
Average distance among tail atoms
- updateBestStruct(conf_info, fast3d_conf)¶
Update the best structure and update the information of the best struct
- Parameters
conf_info (namedtuple) – Structure information, including head-tail distance, average tail-tail distance, and index of conformer generated by fast3D
fast3d_conf (structure.Structure) – Structure generated by fast3D
- checkIsBest(fast3d_conf, conf_n)¶
Of all the conformers output by fast3D engine, return the best structure based on the following criteria: 1) structure has the longest distance b/w head-tail COMs and 2) the shortest distance b/w all tail atoms
- Parameters
fast3d_conf (structure.Structure) – Structure generated by fast3D
conf_n (int) – Number of fast3D structure generated
- generateConformers()¶
Run Fast3D engine to generate structure conformers
- class schrodinger.application.matsci.custom_lipid_prep.SetDoubleBondType(struct, cis=True, logger=None)¶
Bases:
object
Class for setting the double-bond type in the lipid tails
- __init__(struct, cis=True, logger=None)¶
Initialize the RDKit molecule
- Parameters
struct (structure.Structure) – Lipid structure
cis (bool) – True if changing double-bonds in tails to cis-stereochemistry; False if changing them to trans
logger (logging.Logger) – The logger imported from a driver
- prepStructure(struct)¶
Generate 3D conformation of the structure if it doesn’t already have 3D coordinates
- Return type
- Returns
3D lipid structure
- isDoubleBond(bond)¶
Check if a bond is a double-bond
- Parameters
bond (rdkit.Chem.rdchem.Bond) – RDKit bond
- Return type
bool
- Returns
True if the bond type is double
- isCCBond(bond)¶
Check if the bond is between two carbon atoms
- Parameters
bond (rdkit.Chem.rdchem.Bond) – RDKit bond
- Return type
bool
- Returns
True if the bond type is double
- fromSmiles()¶
Create isomeric SMILES string from RDKit molecule
- Return type
str
- Returns
SMILES string
- createStereoStructure()¶
Create lipid structure from SMILES string
- Return type
- Returns
Lipid structure