public ImproperTorsion GetImproperTorsionParameter(DihedralConnection dihedralConnection) { List <string> types = new List <string>(); types.Add(dihedralConnection.atom0.amberName); types.Add(dihedralConnection.atom1.amberName); types.Add(dihedralConnection.atom2.amberName); types.Add(dihedralConnection.atom3.amberName); return(parameters.improperTorsions.Where(p => (types.SequenceEqual(p.types, new WildCardEqualityComparer()) || types.SequenceEqual(p.reverseTypes, new WildCardEqualityComparer()))).OrderBy(p => p.wildcardCount).FirstOrDefault()); }
public void DihedralConnect(int a0, int a1, int a2, int a3) { _busy++; long key = GetDihedralConnectionKey(a0, a1, a2, a3); if (!dihedralsDict.ContainsKey(key)) { DihedralConnection dihedralConnection = new DihedralConnection(atoms, a0, a1, a2, a3); dihedralsDict[key] = dihedralConnection; } _busy--; }