code: def get_lattice(self, data, length_strings=("a", "b", "c"),
                      angle_strings=("alpha", "beta", "gamma"),
                      lattice_type=None):
          
          try:
  
              lengths = [str2float(data["_cell_length_" + i])
                         for i in length_strings]
              angles = [str2float(data["_cell_angle_" + i])
                        for i in angle_strings]
              if not lattice_type:
                  return Lattice.from_lengths_and_angles(lengths, angles)
  
              else:
                  return getattr(Lattice, lattice_type)(*(lengths + angles))
  
          except KeyError:
              # Missing Key search for cell setting
              for lattice_lable in ["_symmetry_cell_setting",
                                    "_space_group_crystal_system"]:
                  if data.data.get(lattice_lable):
                      lattice_type = data.data.get(lattice_lable).lower()
                      try:
  
                          required_args = getargspec(
                              getattr(Lattice, lattice_type)).args
  
                          lengths = (l for l in length_strings
                                     if l in required_args)
                          angles = (a for a in angle_strings
                                    if a in required_args)
                          return self.get_lattice(data, lengths, angles,
                                                  lattice_type=lattice_type)
                      except AttributeError as exc:
                          self.errors.append(str(exc))
                          warnings.warn(exc)
  
                  else:
                      return None
docs: Generate the lattice from the provided lattice parameters. In
          the absence of all six lattice parameters, the crystal system
          and necessary parameters are parsed