old_contents: # -----------------------------------------------------------------------------------------------------
  # CONDOR
  # Simulator for diffractive single-particle imaging experiments with X-ray lasers
  # http://xfel.icm.uu.se/condor/
  # -----------------------------------------------------------------------------------------------------
  # Copyright 2016 Max Hantke, Filipe R.N.C. Maia, Tomas Ekeberg
  # Condor is distributed under the terms of the BSD 2-Clause License
  # -----------------------------------------------------------------------------------------------------
  # Redistribution and use in source and binary forms, with or without
  # modification, are permitted provided that the following conditions are met:
  # 
  # 1. Redistributions of source code must retain the above copyright notice, this
  #    list of conditions and the following disclaimer.
  # 2. Redistributions in binary form must reproduce the above copyright notice,
  #    this list of conditions and the following disclaimer in the documentation
  #    and/or other materials provided with the distribution.
  # 
  # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
  # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
  # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
  # ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
  # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  # -----------------------------------------------------------------------------------------------------
  # General note:
  # All variables are in SI units by default. Exceptions explicit by variable name.
  # -----------------------------------------------------------------------------------------------------
  
  from __future__ import print_function, absolute_import # Compatibility with python 2 and 3
  import numpy
   
  def crossproduct(a, b):
      c = numpy.array([a[1]*b[2] - a[2]*b[1],
                       a[2]*b[0] - a[0]*b[2],
                       a[0]*b[1] - a[1]*b[0]])
      return c
  
  def dotproduct(v1, v2):
      return numpy.sum((a*b) for a, b in zip(v1, v2))
  
  def length(v):
      return numpy.sqrt(dotproduct(v, v))
  
  def angle(v1, v2):
      return numpy.arccos(dotproduct(v1, v2) / (length(v1) * length(v2)))
  
new_contents: # -----------------------------------------------------------------------------------------------------
  # CONDOR
  # Simulator for diffractive single-particle imaging experiments with X-ray lasers
  # http://xfel.icm.uu.se/condor/
  # -----------------------------------------------------------------------------------------------------
  # Copyright 2016 Max Hantke, Filipe R.N.C. Maia, Tomas Ekeberg
  # Condor is distributed under the terms of the BSD 2-Clause License
  # -----------------------------------------------------------------------------------------------------
  # Redistribution and use in source and binary forms, with or without
  # modification, are permitted provided that the following conditions are met:
  # 
  # 1. Redistributions of source code must retain the above copyright notice, this
  #    list of conditions and the following disclaimer.
  # 2. Redistributions in binary form must reproduce the above copyright notice,
  #    this list of conditions and the following disclaimer in the documentation
  #    and/or other materials provided with the distribution.
  # 
  # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
  # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
  # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
  # ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
  # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  # -----------------------------------------------------------------------------------------------------
  # General note:
  # All variables are in SI units by default. Exceptions explicit by variable name.
  # -----------------------------------------------------------------------------------------------------
  
  from __future__ import print_function, absolute_import # Compatibility with python 2 and 3
  import numpy
   
  def crossproduct(a, b):
      c = numpy.array([a[1]*b[2] - a[2]*b[1],
                       a[2]*b[0] - a[0]*b[2],
                       a[0]*b[1] - a[1]*b[0]])
      return c
  
  def dotproduct(v1, v2):
      return (numpy.asarray(v1)*numpy.asarray(v2)).sum()
  
  def length(v):
      return numpy.sqrt(dotproduct(v, v))
  
  def angle(v1, v2):
      return numpy.arccos(dotproduct(v1, v2) / (length(v1) * length(v2)))
  
subject: Rewrite numpy sum call to avoid generator argument to avoid deprecation warning