MDAnalysis / mdanalysis

MDAnalysis is a Python library to analyze molecular dynamics simulations.
https://mdanalysis.org
Other
1.29k stars 647 forks source link

asv: fix GeoSelectionBench.time_geometric_selections #2793

Open orbeckst opened 4 years ago

orbeckst commented 4 years ago

Expected behavior

All ASV benchmarks for the latest develop run (see benchmarks.benchmarks for the code and the MDAnalysis/benchmarks repo + the benchmarks wiki for more details.)

Actual behavior

All GeoSelectionBench.time_geometric_selections tests fail as shown below (recent output from nightly run on Python 3.6). This seems to be related to the removal of the flags #782 .

[ 97.44%] ··· ....GeoSelectionBench.time_geometric_selections             failed
[ 97.44%] ··· ============================ =================== ==================== ========
                   selection_string        dynamic_selection   periodic_selection          
             ---------------------------- ------------------- -------------------- --------
                  around 5.0 resid 1              True           [False, True]      failed 
                  around 5.0 resid 1              True           [True, False]      failed 
                  around 5.0 resid 1             False           [False, True]      failed 
                  around 5.0 resid 1             False           [True, False]      failed 
              sphlayer 2.4 6.0 (protein)          True           [False, True]      failed 
              sphlayer 2.4 6.0 (protein)          True           [True, False]      failed 
              sphlayer 2.4 6.0 (protein)         False           [False, True]      failed 
              sphlayer 2.4 6.0 (protein)         False           [True, False]      failed 
                sphzone 6.0 (protein)             True           [False, True]      failed 
                sphzone 6.0 (protein)             True           [True, False]      failed 
                sphzone 6.0 (protein)            False           [False, True]      failed 
                sphzone 6.0 (protein)            False           [True, False]      failed 
              cylayer 5 10 10 -8 protein          True           [False, True]      failed 
              cylayer 5 10 10 -8 protein          True           [True, False]      failed 
              cylayer 5 10 10 -8 protein         False           [False, True]      failed 
              cylayer 5 10 10 -8 protein         False           [True, False]      failed 
                cyzone 15 4 -8 protein            True           [False, True]      failed 
                cyzone 15 4 -8 protein            True           [True, False]      failed 
                cyzone 15 4 -8 protein           False           [False, True]      failed 
                cyzone 15 4 -8 protein           False           [True, False]      failed 
                point 5.0 5.0 5.0 3.5             True           [False, True]      failed 
                point 5.0 5.0 5.0 3.5             True           [True, False]      failed 
                point 5.0 5.0 5.0 3.5            False           [False, True]      failed 
                point 5.0 5.0 5.0 3.5            False           [True, False]      failed 
                    prop z >= 5.0                 True           [False, True]      failed 
                    prop z >= 5.0                 True           [True, False]      failed 
                    prop z >= 5.0                False           [False, True]      failed 
                    prop z >= 5.0                False           [True, False]      failed 
                  prop abs z <= 5.0               True           [False, True]      failed 
                  prop abs z <= 5.0               True           [True, False]      failed 
                  prop abs z <= 5.0              False           [False, True]      failed 
                  prop abs z <= 5.0              False           [True, False]      failed 
             ============================ =================== ==================== ========

[ 97.44%] ···· For parameters: 'around 5.0 resid 1', True, [False, True]
              Traceback (most recent call last):
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 1184, in main_run_server
                  main_run(run_args)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 1058, in main_run
                  result = benchmark.do_run()
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 537, in do_run
                  return self.run(*self._current_params)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 631, in run
                  min_run_count=self.min_run_count)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 663, in benchmark_timing
                  timing = timer.timeit(number)
                File "~/mdanalysis/benchmarks/env/80c5ba7efaa89366b97da3ced85c0c44/lib/python3.6/timeit.py", line 178, in timeit
                  timing = self.inner(it, self.timer)
                File "<timeit-src>", line 6, in inner
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 599, in <lambda>
                  func = lambda: self.func(*param)
                File "~/mdanalysis/benchmarks/benchmarks/selections.py", line 76, in time_geometric_selections
                  MDAnalysis.core.flags['use_periodic_selections'] = periodic_selection[0]
              AttributeError: module 'MDAnalysis.core' has no attribute 'flags'

              For parameters: 'around 5.0 resid 1', True, [True, False]
              Traceback (most recent call last):
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 1184, in main_run_server
                  main_run(run_args)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 1058, in main_run
                  result = benchmark.do_run()
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 537, in do_run
                  return self.run(*self._current_params)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 631, in run
                  min_run_count=self.min_run_count)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 663, in benchmark_timing
                  timing = timer.timeit(number)
                File "~/mdanalysis/benchmarks/env/80c5ba7efaa89366b97da3ced85c0c44/lib/python3.6/timeit.py", line 178, in timeit
                  timing = self.inner(it, self.timer)
                File "<timeit-src>", line 6, in inner
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 599, in <lambda>
                  func = lambda: self.func(*param)
                File "~/mdanalysis/benchmarks/benchmarks/selections.py", line 76, in time_geometric_selections
                  MDAnalysis.core.flags['use_periodic_selections'] = periodic_selection[0]
              AttributeError: module 'MDAnalysis.core' has no attribute 'flags'

              For parameters: 'around 5.0 resid 1', False, [False, True]
              Traceback (most recent call last):
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 1184, in main_run_server
                  main_run(run_args)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 1058, in main_run
                  result = benchmark.do_run()
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 537, in do_run
                  return self.run(*self._current_params)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 631, in run
                  min_run_count=self.min_run_count)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 663, in benchmark_timing
                  timing = timer.timeit(number)
                File "~/mdanalysis/benchmarks/env/80c5ba7efaa89366b97da3ced85c0c44/lib/python3.6/timeit.py", line 178, in timeit
                  timing = self.inner(it, self.timer)
                File "<timeit-src>", line 6, in inner
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 599, in <lambda>
                  func = lambda: self.func(*param)
                File "~/mdanalysis/benchmarks/benchmarks/selections.py", line 76, in time_geometric_selections
                  MDAnalysis.core.flags['use_periodic_selections'] = periodic_selection[0]
              AttributeError: module 'MDAnalysis.core' has no attribute 'flags'

              For parameters: 'around 5.0 resid 1', False, [True, False]
              Traceback (most recent call last):
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 1184, in main_run_server
                  main_run(run_args)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 1058, in main_run
                  result = benchmark.do_run()
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 537, in do_run
                  return self.run(*self._current_params)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 631, in run
                  min_run_count=self.min_run_count)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 663, in benchmark_timing
                  timing = timer.timeit(number)
                File "~/mdanalysis/benchmarks/env/80c5ba7efaa89366b97da3ced85c0c44/lib/python3.6/timeit.py", line 178, in timeit
                  timing = self.inner(it, self.timer)
                File "<timeit-src>", line 6, in inner
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 599, in <lambda>
                  func = lambda: self.func(*param)
                File "~/mdanalysis/benchmarks/benchmarks/selections.py", line 76, in time_geometric_selections
                  MDAnalysis.core.flags['use_periodic_selections'] = periodic_selection[0]
              AttributeError: module 'MDAnalysis.core' has no attribute 'flags'

              For parameters: 'sphlayer 2.4 6.0 (protein)', True, [False, True]
              Traceback (most recent call last):
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 1184, in main_run_server
                  main_run(run_args)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 1058, in main_run
                  result = benchmark.do_run()
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 537, in do_run
                  return self.run(*self._current_params)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 631, in run
                  min_run_count=self.min_run_count)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 663, in benchmark_timing
                  timing = timer.timeit(number)
                File "~/mdanalysis/benchmarks/env/80c5ba7efaa89366b97da3ced85c0c44/lib/python3.6/timeit.py", line 178, in timeit
                  timing = self.inner(it, self.timer)
                File "<timeit-src>", line 6, in inner
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 599, in <lambda>
                  func = lambda: self.func(*param)
                File "~/mdanalysis/benchmarks/benchmarks/selections.py", line 76, in time_geometric_selections
                  MDAnalysis.core.flags['use_periodic_selections'] = periodic_selection[0]
              AttributeError: module 'MDAnalysis.core' has no attribute 'flags'

              For parameters: 'sphlayer 2.4 6.0 (protein)', True, [True, False]
              Traceback (most recent call last):
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 1184, in main_run_server
                  main_run(run_args)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 1058, in main_run
                  result = benchmark.do_run()
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 537, in do_run
                  return self.run(*self._current_params)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 631, in run
                  min_run_count=self.min_run_count)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 663, in benchmark_timing
                  timing = timer.timeit(number)
                File "~/mdanalysis/benchmarks/env/80c5ba7efaa89366b97da3ced85c0c44/lib/python3.6/timeit.py", line 178, in timeit
                  timing = self.inner(it, self.timer)
                File "<timeit-src>", line 6, in inner
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 599, in <lambda>
                  func = lambda: self.func(*param)
                File "~/mdanalysis/benchmarks/benchmarks/selections.py", line 76, in time_geometric_selections
                  MDAnalysis.core.flags['use_periodic_selections'] = periodic_selection[0]
              AttributeError: module 'MDAnalysis.core' has no attribute 'flags'

              For parameters: 'sphlayer 2.4 6.0 (protein)', False, [False, True]
              Traceback (most recent call last):
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 1184, in main_run_server
                  main_run(run_args)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 1058, in main_run
                  result = benchmark.do_run()
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 537, in do_run
                  return self.run(*self._current_params)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 631, in run
                  min_run_count=self.min_run_count)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 663, in benchmark_timing
                  timing = timer.timeit(number)
                File "~/mdanalysis/benchmarks/env/80c5ba7efaa89366b97da3ced85c0c44/lib/python3.6/timeit.py", line 178, in timeit
                  timing = self.inner(it, self.timer)
                File "<timeit-src>", line 6, in inner
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 599, in <lambda>
                  func = lambda: self.func(*param)
                File "~/mdanalysis/benchmarks/benchmarks/selections.py", line 76, in time_geometric_selections
                  MDAnalysis.core.flags['use_periodic_selections'] = periodic_selection[0]
              AttributeError: module 'MDAnalysis.core' has no attribute 'flags'

              For parameters: 'sphlayer 2.4 6.0 (protein)', False, [True, False]
              Traceback (most recent call last):
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 1184, in main_run_server
                  main_run(run_args)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 1058, in main_run
                  result = benchmark.do_run()
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 537, in do_run
                  return self.run(*self._current_params)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 631, in run
                  min_run_count=self.min_run_count)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 663, in benchmark_timing
                  timing = timer.timeit(number)
                File "~/mdanalysis/benchmarks/env/80c5ba7efaa89366b97da3ced85c0c44/lib/python3.6/timeit.py", line 178, in timeit
                  timing = self.inner(it, self.timer)
                File "<timeit-src>", line 6, in inner
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 599, in <lambda>
                  func = lambda: self.func(*param)
                File "~/mdanalysis/benchmarks/benchmarks/selections.py", line 76, in time_geometric_selections
                  MDAnalysis.core.flags['use_periodic_selections'] = periodic_selection[0]
              AttributeError: module 'MDAnalysis.core' has no attribute 'flags'

              For parameters: 'sphzone 6.0 (protein)', True, [False, True]
              Traceback (most recent call last):
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 1184, in main_run_server
                  main_run(run_args)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 1058, in main_run
                  result = benchmark.do_run()
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 537, in do_run
                  return self.run(*self._current_params)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 631, in run
                  min_run_count=self.min_run_count)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 663, in benchmark_timing
                  timing = timer.timeit(number)
                File "~/mdanalysis/benchmarks/env/80c5ba7efaa89366b97da3ced85c0c44/lib/python3.6/timeit.py", line 178, in timeit
                  timing = self.inner(it, self.timer)
                File "<timeit-src>", line 6, in inner
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 599, in <lambda>
                  func = lambda: self.func(*param)
                File "~/mdanalysis/benchmarks/benchmarks/selections.py", line 76, in time_geometric_selections
                  MDAnalysis.core.flags['use_periodic_selections'] = periodic_selection[0]
              AttributeError: module 'MDAnalysis.core' has no attribute 'flags'

              For parameters: 'sphzone 6.0 (protein)', True, [True, False]
              Traceback (most recent call last):
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 1184, in main_run_server
                  main_run(run_args)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 1058, in main_run
                  result = benchmark.do_run()
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 537, in do_run
                  return self.run(*self._current_params)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 631, in run
                  min_run_count=self.min_run_count)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 663, in benchmark_timing
                  timing = timer.timeit(number)
                File "~/mdanalysis/benchmarks/env/80c5ba7efaa89366b97da3ced85c0c44/lib/python3.6/timeit.py", line 178, in timeit
                  timing = self.inner(it, self.timer)
                File "<timeit-src>", line 6, in inner
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 599, in <lambda>
                  func = lambda: self.func(*param)
                File "~/mdanalysis/benchmarks/benchmarks/selections.py", line 76, in time_geometric_selections
                  MDAnalysis.core.flags['use_periodic_selections'] = periodic_selection[0]
              AttributeError: module 'MDAnalysis.core' has no attribute 'flags'

              For parameters: 'sphzone 6.0 (protein)', False, [False, True]
              Traceback (most recent call last):
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 1184, in main_run_server
                  main_run(run_args)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 1058, in main_run
                  result = benchmark.do_run()
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 537, in do_run
                  return self.run(*self._current_params)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 631, in run
                  min_run_count=self.min_run_count)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 663, in benchmark_timing
                  timing = timer.timeit(number)
                File "~/mdanalysis/benchmarks/env/80c5ba7efaa89366b97da3ced85c0c44/lib/python3.6/timeit.py", line 178, in timeit
                  timing = self.inner(it, self.timer)
                File "<timeit-src>", line 6, in inner
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 599, in <lambda>
                  func = lambda: self.func(*param)
                File "~/mdanalysis/benchmarks/benchmarks/selections.py", line 76, in time_geometric_selections
                  MDAnalysis.core.flags['use_periodic_selections'] = periodic_selection[0]
              AttributeError: module 'MDAnalysis.core' has no attribute 'flags'

              For parameters: 'sphzone 6.0 (protein)', False, [True, False]
              Traceback (most recent call last):
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 1184, in main_run_server
                  main_run(run_args)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 1058, in main_run
                  result = benchmark.do_run()
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 537, in do_run
                  return self.run(*self._current_params)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 631, in run
                  min_run_count=self.min_run_count)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 663, in benchmark_timing
                  timing = timer.timeit(number)
                File "~/mdanalysis/benchmarks/env/80c5ba7efaa89366b97da3ced85c0c44/lib/python3.6/timeit.py", line 178, in timeit
                  timing = self.inner(it, self.timer)
                File "<timeit-src>", line 6, in inner
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 599, in <lambda>
                  func = lambda: self.func(*param)
                File "~/mdanalysis/benchmarks/benchmarks/selections.py", line 76, in time_geometric_selections
                  MDAnalysis.core.flags['use_periodic_selections'] = periodic_selection[0]
              AttributeError: module 'MDAnalysis.core' has no attribute 'flags'

              For parameters: 'cylayer 5 10 10 -8 protein', True, [False, True]
              Traceback (most recent call last):
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 1184, in main_run_server
                  main_run(run_args)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 1058, in main_run
                  result = benchmark.do_run()
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 537, in do_run
                  return self.run(*self._current_params)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 631, in run
                  min_run_count=self.min_run_count)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 663, in benchmark_timing
                  timing = timer.timeit(number)
                File "~/mdanalysis/benchmarks/env/80c5ba7efaa89366b97da3ced85c0c44/lib/python3.6/timeit.py", line 178, in timeit
                  timing = self.inner(it, self.timer)
                File "<timeit-src>", line 6, in inner
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 599, in <lambda>
                  func = lambda: self.func(*param)
                File "~/mdanalysis/benchmarks/benchmarks/selections.py", line 76, in time_geometric_selections
                  MDAnalysis.core.flags['use_periodic_selections'] = periodic_selection[0]
              AttributeError: module 'MDAnalysis.core' has no attribute 'flags'

              For parameters: 'cylayer 5 10 10 -8 protein', True, [True, False]
              Traceback (most recent call last):
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 1184, in main_run_server
                  main_run(run_args)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 1058, in main_run
                  result = benchmark.do_run()
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 537, in do_run
                  return self.run(*self._current_params)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 631, in run
                  min_run_count=self.min_run_count)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 663, in benchmark_timing
                  timing = timer.timeit(number)
                File "~/mdanalysis/benchmarks/env/80c5ba7efaa89366b97da3ced85c0c44/lib/python3.6/timeit.py", line 178, in timeit
                  timing = self.inner(it, self.timer)
                File "<timeit-src>", line 6, in inner
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 599, in <lambda>
                  func = lambda: self.func(*param)
                File "~/mdanalysis/benchmarks/benchmarks/selections.py", line 76, in time_geometric_selections
                  MDAnalysis.core.flags['use_periodic_selections'] = periodic_selection[0]
              AttributeError: module 'MDAnalysis.core' has no attribute 'flags'

              For parameters: 'cylayer 5 10 10 -8 protein', False, [False, True]
              Traceback (most recent call last):
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 1184, in main_run_server
                  main_run(run_args)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 1058, in main_run
                  result = benchmark.do_run()
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 537, in do_run
                  return self.run(*self._current_params)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 631, in run
                  min_run_count=self.min_run_count)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 663, in benchmark_timing
                  timing = timer.timeit(number)
                File "~/mdanalysis/benchmarks/env/80c5ba7efaa89366b97da3ced85c0c44/lib/python3.6/timeit.py", line 178, in timeit
                  timing = self.inner(it, self.timer)
                File "<timeit-src>", line 6, in inner
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 599, in <lambda>
                  func = lambda: self.func(*param)
                File "~/mdanalysis/benchmarks/benchmarks/selections.py", line 76, in time_geometric_selections
                  MDAnalysis.core.flags['use_periodic_selections'] = periodic_selection[0]
              AttributeError: module 'MDAnalysis.core' has no attribute 'flags'

              For parameters: 'cylayer 5 10 10 -8 protein', False, [True, False]
              Traceback (most recent call last):
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 1184, in main_run_server
                  main_run(run_args)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 1058, in main_run
                  result = benchmark.do_run()
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 537, in do_run
                  return self.run(*self._current_params)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 631, in run
                  min_run_count=self.min_run_count)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 663, in benchmark_timing
                  timing = timer.timeit(number)
                File "~/mdanalysis/benchmarks/env/80c5ba7efaa89366b97da3ced85c0c44/lib/python3.6/timeit.py", line 178, in timeit
                  timing = self.inner(it, self.timer)
                File "<timeit-src>", line 6, in inner
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 599, in <lambda>
                  func = lambda: self.func(*param)
                File "~/mdanalysis/benchmarks/benchmarks/selections.py", line 76, in time_geometric_selections
                  MDAnalysis.core.flags['use_periodic_selections'] = periodic_selection[0]
              AttributeError: module 'MDAnalysis.core' has no attribute 'flags'

              For parameters: 'cyzone 15 4 -8 protein', True, [False, True]
              Traceback (most recent call last):
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 1184, in main_run_server
                  main_run(run_args)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 1058, in main_run
                  result = benchmark.do_run()
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 537, in do_run
                  return self.run(*self._current_params)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 631, in run
                  min_run_count=self.min_run_count)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 663, in benchmark_timing
                  timing = timer.timeit(number)
                File "~/mdanalysis/benchmarks/env/80c5ba7efaa89366b97da3ced85c0c44/lib/python3.6/timeit.py", line 178, in timeit
                  timing = self.inner(it, self.timer)
                File "<timeit-src>", line 6, in inner
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 599, in <lambda>
                  func = lambda: self.func(*param)
                File "~/mdanalysis/benchmarks/benchmarks/selections.py", line 76, in time_geometric_selections
                  MDAnalysis.core.flags['use_periodic_selections'] = periodic_selection[0]
              AttributeError: module 'MDAnalysis.core' has no attribute 'flags'

              For parameters: 'cyzone 15 4 -8 protein', True, [True, False]
              Traceback (most recent call last):
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 1184, in main_run_server
                  main_run(run_args)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 1058, in main_run
                  result = benchmark.do_run()
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 537, in do_run
                  return self.run(*self._current_params)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 631, in run
                  min_run_count=self.min_run_count)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 663, in benchmark_timing
                  timing = timer.timeit(number)
                File "~/mdanalysis/benchmarks/env/80c5ba7efaa89366b97da3ced85c0c44/lib/python3.6/timeit.py", line 178, in timeit
                  timing = self.inner(it, self.timer)
                File "<timeit-src>", line 6, in inner
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 599, in <lambda>
                  func = lambda: self.func(*param)
                File "~/mdanalysis/benchmarks/benchmarks/selections.py", line 76, in time_geometric_selections
                  MDAnalysis.core.flags['use_periodic_selections'] = periodic_selection[0]
              AttributeError: module 'MDAnalysis.core' has no attribute 'flags'

              For parameters: 'cyzone 15 4 -8 protein', False, [False, True]
              Traceback (most recent call last):
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 1184, in main_run_server
                  main_run(run_args)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 1058, in main_run
                  result = benchmark.do_run()
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 537, in do_run
                  return self.run(*self._current_params)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 631, in run
                  min_run_count=self.min_run_count)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 663, in benchmark_timing
                  timing = timer.timeit(number)
                File "~/mdanalysis/benchmarks/env/80c5ba7efaa89366b97da3ced85c0c44/lib/python3.6/timeit.py", line 178, in timeit
                  timing = self.inner(it, self.timer)
                File "<timeit-src>", line 6, in inner
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 599, in <lambda>
                  func = lambda: self.func(*param)
                File "~/mdanalysis/benchmarks/benchmarks/selections.py", line 76, in time_geometric_selections
                  MDAnalysis.core.flags['use_periodic_selections'] = periodic_selection[0]
              AttributeError: module 'MDAnalysis.core' has no attribute 'flags'

              For parameters: 'cyzone 15 4 -8 protein', False, [True, False]
              Traceback (most recent call last):
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 1184, in main_run_server
                  main_run(run_args)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 1058, in main_run
                  result = benchmark.do_run()
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 537, in do_run
                  return self.run(*self._current_params)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 631, in run
                  min_run_count=self.min_run_count)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 663, in benchmark_timing
                  timing = timer.timeit(number)
                File "~/mdanalysis/benchmarks/env/80c5ba7efaa89366b97da3ced85c0c44/lib/python3.6/timeit.py", line 178, in timeit
                  timing = self.inner(it, self.timer)
                File "<timeit-src>", line 6, in inner
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 599, in <lambda>
                  func = lambda: self.func(*param)
                File "~/mdanalysis/benchmarks/benchmarks/selections.py", line 76, in time_geometric_selections
                  MDAnalysis.core.flags['use_periodic_selections'] = periodic_selection[0]
              AttributeError: module 'MDAnalysis.core' has no attribute 'flags'

              For parameters: 'point 5.0 5.0 5.0 3.5', True, [False, True]
              Traceback (most recent call last):
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 1184, in main_run_server
                  main_run(run_args)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 1058, in main_run
                  result = benchmark.do_run()
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 537, in do_run
                  return self.run(*self._current_params)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 631, in run
                  min_run_count=self.min_run_count)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 663, in benchmark_timing
                  timing = timer.timeit(number)
                File "~/mdanalysis/benchmarks/env/80c5ba7efaa89366b97da3ced85c0c44/lib/python3.6/timeit.py", line 178, in timeit
                  timing = self.inner(it, self.timer)
                File "<timeit-src>", line 6, in inner
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 599, in <lambda>
                  func = lambda: self.func(*param)
                File "~/mdanalysis/benchmarks/benchmarks/selections.py", line 76, in time_geometric_selections
                  MDAnalysis.core.flags['use_periodic_selections'] = periodic_selection[0]
              AttributeError: module 'MDAnalysis.core' has no attribute 'flags'

              For parameters: 'point 5.0 5.0 5.0 3.5', True, [True, False]
              Traceback (most recent call last):
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 1184, in main_run_server
                  main_run(run_args)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 1058, in main_run
                  result = benchmark.do_run()
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 537, in do_run
                  return self.run(*self._current_params)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 631, in run
                  min_run_count=self.min_run_count)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 663, in benchmark_timing
                  timing = timer.timeit(number)
                File "~/mdanalysis/benchmarks/env/80c5ba7efaa89366b97da3ced85c0c44/lib/python3.6/timeit.py", line 178, in timeit
                  timing = self.inner(it, self.timer)
                File "<timeit-src>", line 6, in inner
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 599, in <lambda>
                  func = lambda: self.func(*param)
                File "~/mdanalysis/benchmarks/benchmarks/selections.py", line 76, in time_geometric_selections
                  MDAnalysis.core.flags['use_periodic_selections'] = periodic_selection[0]
              AttributeError: module 'MDAnalysis.core' has no attribute 'flags'

              For parameters: 'point 5.0 5.0 5.0 3.5', False, [False, True]
              Traceback (most recent call last):
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 1184, in main_run_server
                  main_run(run_args)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 1058, in main_run
                  result = benchmark.do_run()
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 537, in do_run
                  return self.run(*self._current_params)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 631, in run
                  min_run_count=self.min_run_count)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 663, in benchmark_timing
                  timing = timer.timeit(number)
                File "~/mdanalysis/benchmarks/env/80c5ba7efaa89366b97da3ced85c0c44/lib/python3.6/timeit.py", line 178, in timeit
                  timing = self.inner(it, self.timer)
                File "<timeit-src>", line 6, in inner
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 599, in <lambda>
                  func = lambda: self.func(*param)
                File "~/mdanalysis/benchmarks/benchmarks/selections.py", line 76, in time_geometric_selections
                  MDAnalysis.core.flags['use_periodic_selections'] = periodic_selection[0]
              AttributeError: module 'MDAnalysis.core' has no attribute 'flags'

              For parameters: 'point 5.0 5.0 5.0 3.5', False, [True, False]
              Traceback (most recent call last):
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 1184, in main_run_server
                  main_run(run_args)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 1058, in main_run
                  result = benchmark.do_run()
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 537, in do_run
                  return self.run(*self._current_params)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 631, in run
                  min_run_count=self.min_run_count)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 663, in benchmark_timing
                  timing = timer.timeit(number)
                File "~/mdanalysis/benchmarks/env/80c5ba7efaa89366b97da3ced85c0c44/lib/python3.6/timeit.py", line 178, in timeit
                  timing = self.inner(it, self.timer)
                File "<timeit-src>", line 6, in inner
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 599, in <lambda>
                  func = lambda: self.func(*param)
                File "~/mdanalysis/benchmarks/benchmarks/selections.py", line 76, in time_geometric_selections
                  MDAnalysis.core.flags['use_periodic_selections'] = periodic_selection[0]
              AttributeError: module 'MDAnalysis.core' has no attribute 'flags'

              For parameters: 'prop z >= 5.0', True, [False, True]
              Traceback (most recent call last):
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 1184, in main_run_server
                  main_run(run_args)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 1058, in main_run
                  result = benchmark.do_run()
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 537, in do_run
                  return self.run(*self._current_params)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 631, in run
                  min_run_count=self.min_run_count)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 663, in benchmark_timing
                  timing = timer.timeit(number)
                File "~/mdanalysis/benchmarks/env/80c5ba7efaa89366b97da3ced85c0c44/lib/python3.6/timeit.py", line 178, in timeit
                  timing = self.inner(it, self.timer)
                File "<timeit-src>", line 6, in inner
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 599, in <lambda>
                  func = lambda: self.func(*param)
                File "~/mdanalysis/benchmarks/benchmarks/selections.py", line 76, in time_geometric_selections
                  MDAnalysis.core.flags['use_periodic_selections'] = periodic_selection[0]
              AttributeError: module 'MDAnalysis.core' has no attribute 'flags'

              For parameters: 'prop z >= 5.0', True, [True, False]
              Traceback (most recent call last):
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 1184, in main_run_server
                  main_run(run_args)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 1058, in main_run
                  result = benchmark.do_run()
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 537, in do_run
                  return self.run(*self._current_params)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 631, in run
                  min_run_count=self.min_run_count)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 663, in benchmark_timing
                  timing = timer.timeit(number)
                File "~/mdanalysis/benchmarks/env/80c5ba7efaa89366b97da3ced85c0c44/lib/python3.6/timeit.py", line 178, in timeit
                  timing = self.inner(it, self.timer)
                File "<timeit-src>", line 6, in inner
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 599, in <lambda>
                  func = lambda: self.func(*param)
                File "~/mdanalysis/benchmarks/benchmarks/selections.py", line 76, in time_geometric_selections
                  MDAnalysis.core.flags['use_periodic_selections'] = periodic_selection[0]
              AttributeError: module 'MDAnalysis.core' has no attribute 'flags'

              For parameters: 'prop z >= 5.0', False, [False, True]
              Traceback (most recent call last):
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 1184, in main_run_server
                  main_run(run_args)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 1058, in main_run
                  result = benchmark.do_run()
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 537, in do_run
                  return self.run(*self._current_params)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 631, in run
                  min_run_count=self.min_run_count)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 663, in benchmark_timing
                  timing = timer.timeit(number)
                File "~/mdanalysis/benchmarks/env/80c5ba7efaa89366b97da3ced85c0c44/lib/python3.6/timeit.py", line 178, in timeit
                  timing = self.inner(it, self.timer)
                File "<timeit-src>", line 6, in inner
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 599, in <lambda>
                  func = lambda: self.func(*param)
                File "~/mdanalysis/benchmarks/benchmarks/selections.py", line 76, in time_geometric_selections
                  MDAnalysis.core.flags['use_periodic_selections'] = periodic_selection[0]
              AttributeError: module 'MDAnalysis.core' has no attribute 'flags'

              For parameters: 'prop z >= 5.0', False, [True, False]
              Traceback (most recent call last):
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 1184, in main_run_server
                  main_run(run_args)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 1058, in main_run
                  result = benchmark.do_run()
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 537, in do_run
                  return self.run(*self._current_params)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 631, in run
                  min_run_count=self.min_run_count)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 663, in benchmark_timing
                  timing = timer.timeit(number)
                File "~/mdanalysis/benchmarks/env/80c5ba7efaa89366b97da3ced85c0c44/lib/python3.6/timeit.py", line 178, in timeit
                  timing = self.inner(it, self.timer)
                File "<timeit-src>", line 6, in inner
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 599, in <lambda>
                  func = lambda: self.func(*param)
                File "~/mdanalysis/benchmarks/benchmarks/selections.py", line 76, in time_geometric_selections
                  MDAnalysis.core.flags['use_periodic_selections'] = periodic_selection[0]
              AttributeError: module 'MDAnalysis.core' has no attribute 'flags'

              For parameters: 'prop abs z <= 5.0', True, [False, True]
              Traceback (most recent call last):
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 1184, in main_run_server
                  main_run(run_args)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 1058, in main_run
                  result = benchmark.do_run()
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 537, in do_run
                  return self.run(*self._current_params)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 631, in run
                  min_run_count=self.min_run_count)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 663, in benchmark_timing
                  timing = timer.timeit(number)
                File "~/mdanalysis/benchmarks/env/80c5ba7efaa89366b97da3ced85c0c44/lib/python3.6/timeit.py", line 178, in timeit
                  timing = self.inner(it, self.timer)
                File "<timeit-src>", line 6, in inner
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 599, in <lambda>
                  func = lambda: self.func(*param)
                File "~/mdanalysis/benchmarks/benchmarks/selections.py", line 76, in time_geometric_selections
                  MDAnalysis.core.flags['use_periodic_selections'] = periodic_selection[0]
              AttributeError: module 'MDAnalysis.core' has no attribute 'flags'

              For parameters: 'prop abs z <= 5.0', True, [True, False]
              Traceback (most recent call last):
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 1184, in main_run_server
                  main_run(run_args)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 1058, in main_run
                  result = benchmark.do_run()
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 537, in do_run
                  return self.run(*self._current_params)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 631, in run
                  min_run_count=self.min_run_count)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 663, in benchmark_timing
                  timing = timer.timeit(number)
                File "~/mdanalysis/benchmarks/env/80c5ba7efaa89366b97da3ced85c0c44/lib/python3.6/timeit.py", line 178, in timeit
                  timing = self.inner(it, self.timer)
                File "<timeit-src>", line 6, in inner
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 599, in <lambda>
                  func = lambda: self.func(*param)
                File "~/mdanalysis/benchmarks/benchmarks/selections.py", line 76, in time_geometric_selections
                  MDAnalysis.core.flags['use_periodic_selections'] = periodic_selection[0]
              AttributeError: module 'MDAnalysis.core' has no attribute 'flags'

              For parameters: 'prop abs z <= 5.0', False, [False, True]
              Traceback (most recent call last):
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 1184, in main_run_server
                  main_run(run_args)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 1058, in main_run
                  result = benchmark.do_run()
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 537, in do_run
                  return self.run(*self._current_params)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 631, in run
                  min_run_count=self.min_run_count)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 663, in benchmark_timing
                  timing = timer.timeit(number)
                File "~/mdanalysis/benchmarks/env/80c5ba7efaa89366b97da3ced85c0c44/lib/python3.6/timeit.py", line 178, in timeit
                  timing = self.inner(it, self.timer)
                File "<timeit-src>", line 6, in inner
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 599, in <lambda>
                  func = lambda: self.func(*param)
                File "~/mdanalysis/benchmarks/benchmarks/selections.py", line 76, in time_geometric_selections
                  MDAnalysis.core.flags['use_periodic_selections'] = periodic_selection[0]
              AttributeError: module 'MDAnalysis.core' has no attribute 'flags'

              For parameters: 'prop abs z <= 5.0', False, [True, False]
              Traceback (most recent call last):
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 1184, in main_run_server
                  main_run(run_args)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 1058, in main_run
                  result = benchmark.do_run()
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 537, in do_run
                  return self.run(*self._current_params)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 631, in run
                  min_run_count=self.min_run_count)
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 663, in benchmark_timing
                  timing = timer.timeit(number)
                File "~/mdanalysis/benchmarks/env/80c5ba7efaa89366b97da3ced85c0c44/lib/python3.6/timeit.py", line 178, in timeit
                  timing = self.inner(it, self.timer)
                File "<timeit-src>", line 6, in inner
                File "~/miniconda3/envs/benchmark/lib/python3.6/site-packages/asv/benchmark.py", line 599, in <lambda>
                  func = lambda: self.func(*param)
                File "~/mdanalysis/benchmarks/benchmarks/selections.py", line 76, in time_geometric_selections
                  MDAnalysis.core.flags['use_periodic_selections'] = periodic_selection[0]
              AttributeError: module 'MDAnalysis.core' has no attribute 'flags'
IAlibay commented 4 years ago

So as far as I can tell (I might be missing something obvious), there no longer is a means by which we can set the search method in a selection call, so I guess that needs removing?

orbeckst commented 4 years ago

I’m not sure how to write the tests so that they work with different call signatures across different versions. Try/except? @tylerjereddy , any hints? You have a lot of experience with asv?

tylerjereddy commented 4 years ago

You can use a try/except to get the benchmarks running again--I just tried the diff below locally (the flags are part of the setup, so they should be moved to setup() as well I think).

That said, I do share some of @IAlibay concerns re: semantics before and after--do we actually preserve an identical calculation type over history here with modern MDA not using those flags? If not, producing a plot with performance before/after the transition for the same benchmark name may be dubious.

If the meaning of the benchmark has changed after removal of flags, the "failing" benchmark still has a 0 exit code (shouldn't prevent the overall asv run), so could just be left as is I suppose, or eventually removed.

Could maybe consider adding i.e., time_geometric_selections_modern() or something, but actually even writing a new benchmark may be tricky to have "fair" over time if the defaults under the hood are different because flags were removed.

Well, I guess not that hard to check--just debug print the results (atomgroups/sizes) over various versions of MDA; a little tedious though.

diff --git a/benchmarks/benchmarks/selections.py b/benchmarks/benchmarks/selections.py
index b07fc7348..c6afa3c6b 100644
--- a/benchmarks/benchmarks/selections.py
+++ b/benchmarks/benchmarks/selections.py
@@ -66,16 +66,19 @@ class GeoSelectionBench(object):
               dynamic_selection,
               periodic_selection):
         self.u = MDAnalysis.Universe(GRO)
+        try:
+            # set core flags for PBC accounting
+            MDAnalysis.core.flags['use_periodic_selections'] = periodic_selection[0]
+            MDAnalysis.core.flags['use_KDTree_routines'] = periodic_selection[1]
+        except AttributeError:
+            # modern MDAnalysis
+            pass

     def time_geometric_selections(self,
                                   selection_string,
                                   dynamic_selection,
                                   periodic_selection):

-        # set core flags for PBC accounting
-        MDAnalysis.core.flags['use_periodic_selections'] = periodic_selection[0]
-        MDAnalysis.core.flags['use_KDTree_routines'] = periodic_selection[1]
-
         if hasattr(MDAnalysis.Universe, 'select_atoms'):
             self.u.select_atoms(selection_string, updating=dynamic_selection)
         else:
tylerjereddy commented 4 years ago

@richardjgowers or @lilyminium may be able to tell at a glance which subsets of calculations are actually the same before/after flags were in place? I suspect just leaving the benchmark alone may be the way forward, with a new time_ benchmark for "modern" selections.

lilyminium commented 4 years ago

I don't think we use pkdtree anywhere unless it's explicitly passed in as the chosen method, which as @IAlibay points out we can't do with atom selections. Distance and geometry selections are either brute force or NSGrid depending on how many atoms are involved (<10 = bruteforce) or how big the box is relative to the cutoff. This part of the code doesn't seem to have been changed for 2 years, so I think the tests that don't set 'use_KDTree_routines'=True should still be the same as the versions that have come out since.

https://github.com/MDAnalysis/mdanalysis/blob/343e10a257690e4312673f2a0fa4703b31b2e223/package/MDAnalysis/lib/distances.py#L405