public Trajectory(Topology topology)
 {
     _topology = topology;
 }
        private Snapshot ParseSnapshot(Pair<int, int> snapshotRange, Topology topology)
        {
            Snapshot snapshot = new Snapshot();
            Console.Write("Parsing snapshot... ");

            int index = _pyon.IndexOf("[\n", snapshotRange.First);
            String snap = _pyon.Substring(index, snapshotRange.Second - snapshotRange.First);
            MatchCollection tokens = Regex.Matches(snap, @"(?<=\[)(([^\[]*?))(?=\])");

            char[] split = new char[]{','};
            foreach (Match token in tokens)
            {
                String[] lines = token.Value.Replace("\r", "").Replace("\n", "").Split(split, StringSplitOptions.RemoveEmptyEntries);
                snapshot.AddPosition(new Vector3(float.Parse(lines[0]), float.Parse(lines[1]), float.Parse(lines[2])));
            }

            /*
            int count = 0;
            while (index < snapshotRange.Second)
            {
                float x = float.Parse(_pyon.Substring(index + 2));//(float)atof(_pyon + index + 2);
                index = _pyon.IndexOf(",\n", index) + 2;
                float y = float.Parse(_pyon.Substring(index));//(float)atof(_pyon + index);
                index = _pyon.IndexOf(",\n", index) + 2;
                float z = float.Parse(_pyon.Substring(index));//(float)atof(_pyon + index);
                index = _pyon.IndexOf("[\n", index);

                snapshot.AddPosition(new Vector3(x, y, z));
                count++;
            }*/

            Console.WriteLine("done.");
            return snapshot;
        }