Merge pull request #212 from RosettaCommons/jkleman/compute_membrane_position
Jkleman/compute membrane position
**Updates for MembraneFramework: compute_structure_based_membrane_position**
* protocols/membrane/geometry/util:compute_structure_based_membrane_position: removed code duplication for this function; now this function uses the constructors in Embedding that takes a pose and a topology object
* Embedding: Embedding from span now checks for the dihedral angle between the first span and each consecutive one to calculate embedding normal instead of positive/negative z-coordinate or odd/even spans; this is much less error-prone and works for multiple chains. The dihedral angle cutoff is 100 degrees. Works for the cases I looked at but is not extensively benchmarked.
* membrane normal: normalized membrane normal vector to length 15 instead of 1 for better visualization and debugging purposes; same holds true for embedding normal vectors
* VisualizeEmbeddingMover: added VisualizeEmbeddingMover; when using this mover embedding virtuals are added to the pose after the membrane residue. Can be invoked using the flag -membrane_new::visualize::embedding <boolean>
* EmbeddingDef / Embedding: added constructor to create Embedding object from a single EmbeddingDef object
* EmbeddingDef: added function in EmbeddingDef:from_span_positive_z to distinguish calculation of the normal vector into positive z-coordinate instead of any direction
* protocols/membrane/geometry/util: added function average_antiparallel_embeddings which inverts the normals that are showing in the opposite directions; the average_embeddings function just averages which can result in zero vectors if some of them are antiparallel
* TransformIntoMembraneMover: for fixing the unit tests I needed to set the membrane residue at the root in the apply function
* EmbeddingDef / Embedding: added copy constructor and assignment operators
* Embedding: added error checking for embedding(span_number)
* PymolPyRosettaServer: adjusted membrane thickness to work with normals of length 15, removed RG dependence for membrane
**Tests**
Membrane unit tests: pass
Membrane integration tests: expected changes in mpframework_relax and mpframework_loadtime due to different calculation of membrane normal
Other integration tests: all other changes are typically broken tests or numerical changes