示例#1
0
            public static Prm FromFileXPlor(string filepath, ITextLogger logger)
            {
                List <string> lines = new List <string>(System.IO.File.ReadAllLines(filepath));

                RemoveComments(ref lines);

                string[] keywards = CollectKeywards(lines);

                List <Bond>      bonds      = new List <Bond>();
                List <Angle>     angles     = new List <Angle>();
                List <Dihedral>  dihedrals  = new List <Dihedral>();
                List <Improper>  impropers  = new List <Improper>();
                List <Nonbonded> nonbondeds = new List <Nonbonded>();

                for (int i = 0; i < lines.Count; i++)
                {
                    string line    = lines[i];
                    string keyward = line.Split(separator, StringSplitOptions.RemoveEmptyEntries).First().ToUpper();
                    line = line.Substring(keyward.Length);
                    switch (keyward)
                    {
                    case "REMARK": break;

                    case "SET": break;

                    case "BOND": bonds.Add(Bond.FromString(line, logger)); break;

                    case "ANGLE": angles.Add(Angle.FromString(line, logger)); break;

                    case "DIHE": dihedrals.Add(Dihedral.FromString(line, logger)); break;

                    case "IMPR": impropers.Add(Improper.FromString(line, logger)); break;

                    case "{*": break;                     // comment

                    case "NONBONDED": nonbondeds.Add(Nonbonded.FromStringXPlor(line, logger)); break;

                    default:
                        HDebug.Assert(false);
                        break;
                    }
                }

                Prm prm = new Prm();

                prm.bonds      = bonds.ToArray();
                prm.angles     = angles.ToArray();
                prm.dihedrals  = dihedrals.ToArray();
                prm.impropers  = impropers.ToArray();
                prm.nonbondeds = nonbondeds.ToArray();

                return(prm);
            }
示例#2
0
            public static Improper[] FromFileXXX_CollectImpropers(List <string> lines, ITextLogger logger)
            {
                RemoveComments(ref lines);
                HDebug.Assert(lines[0].ToUpper() == "IMPROPER");

                List <Improper> impropers = new List <Improper>();

                foreach (string line in lines)
                {
                    if (line.ToUpper() == "IMPROPER")
                    {
                        continue;
                    }
                    impropers.Add(Improper.FromString(line, logger));
                }

                return(impropers.ToArray());
            }