def run_outofplane(QCA): pyramidquads = smiles.SmilesSearchTree("*~*(~*)~*", QCA, name="pyramidquads") outofplane = geometry.ImproperTorsionOperation(pyramidquads, name="outofplane") outofplane.apply(targets=entries) save(outofplane)
def run_angles( QCA): triples = smiles.SmilesSearchTree( "*~*~*", QCA, name="triples") angles = geometry.AngleOperation( triples, name="angles") angles.apply( targets=entries) save( angles)
def run_bonds( QCA): pairs = smiles.SmilesSearchTree( "*~*", QCA, name="pairs") bonds = geometry.BondOperation( pairs, name="bonds") bonds.apply( targets=entries) save( bonds)
def run_torsions( QCA): linquads = smiles.SmilesSearchTree("*~*~*~*", QCA, name="linquads") torsions = geometry.TorsionOperation(linquads, name="torsions") torsions.apply( targets=entries) save( torsions)
root_payload=client, node_index=dict(), db=dict()) drop = ["Intermediates", "Hessian"] QCA.build_index(ds, drop=drop, keep_specs=["default"]) save(QCA) entries = list(QCA.node_iter_depth_first(QCA.root(), select="Entry")) print("There are {:d} entries total".format(len(entries))) # The general query on the dataset. # The results respect the key, and will only return those indices if specified # If no key is specified, then the indices are in order as they appear in the string query = smiles.SmilesSearchTree("[#7X3:2](~[#1:1])(~[#6])~[#6:3]=[O:4]", QCA, name="smiles") query.apply(targets=entries) if True: # This is the torsion drive we are looking for # For whatever reason, the mapped indices are not respected, so need the map # # It is possible to select just a subset of the above search. # For example matching [2,3] will match any torsiondrive with the same # rotatable bond # # This is 1-indexing # # This will search for the exact torsion specified above # tmap = [1, 2, 3, 4]