docs: def from_start_and_end(cls, start, end, aa=None, helix_type='alpha'):
          """Creates a `Helix` between `start` and `end`.
  
          Parameters
          ----------
          start : 3D Vector (tuple or list or numpy.array)
              The coordinate of the start of the helix primitive.
          end : 3D Vector (tuple or list or numpy.array)
              The coordinate of the end of the helix primitive.
          aa : int, optional
              Number of amino acids in the `Helix`. If `None, an
              appropriate number of residues are added.
          helix_type : str, optional
              Type of helix, can be: 'alpha', 'pi', '3-10',
              'PPI', 'PPII', 'collagen'.
          """
          start = numpy.array(start)
          end = numpy.array(end)
          if aa is None:
              rise_per_residue = _helix_parameters[helix_type][1]
              aa = int((numpy.linalg.norm(end - start) / rise_per_residue) + 1)
          instance = cls(aa=aa, helix_type=helix_type)
          instance.move_to(start=start, end=end)
          return instance