Author: bugman Date: Wed Oct 22 10:08:50 2014 New Revision: 26335 URL: http://svn.gna.org/viewcvs/relax?rev=26335&view=rev Log: Modified the interatom.unit_vectors user function backend to handle missing atomic positions. This is to match the structure.load_spins user function change whereby missing atomic positions are now set to the value of None. Modified: trunk/pipe_control/interatomic.py Modified: trunk/pipe_control/interatomic.py URL: http://svn.gna.org/viewcvs/relax/trunk/pipe_control/interatomic.py?rev=26335&r1=26334&r2=26335&view=diff ============================================================================== --- trunk/pipe_control/interatomic.py (original) +++ trunk/pipe_control/interatomic.py Wed Oct 22 10:08:50 2014 @@ -742,10 +742,20 @@ # Calculate all vectors. vector_list = [] for i in range(len(spin1.pos)): - vector_list.append(spin2.pos[i] - spin1.pos[i]) + # No structural information. + if spin1.pos[i] == None or spin2.pos[i] == None: + vector_list.append(None) + + # All data is present. + else: + vector_list.append(spin2.pos[i] - spin1.pos[i]) # Unit vectors. for i in range(len(vector_list)): + # No vector. + if vector_list[i] == None: + continue + # Normalisation factor. norm_factor = norm(vector_list[i]) @@ -760,9 +770,12 @@ # Average. if ave: ave_vector = zeros(3, float64) + count = 0 for i in range(len(vector_list)): - ave_vector = ave_vector + vector_list[i] - vector_list = [ave_vector / len(vector_list)] + if vector_list[i] != None: + ave_vector = ave_vector + vector_list[i] + count += 1 + vector_list = [ave_vector / count] # Convert to a single vector if needed. if len(vector_list) == 1: @@ -774,7 +787,7 @@ # We have a vector! no_vectors = False - # Print out. + # Printout. num = 1 if not is_float(vector_list[0], raise_error=False): num = len(vector_list)