docs: def solve_sweep_structure(
          self,
          structures,
          sweep_param_list,
          filename="structure_n_effs.dat",
          plot=True,
          x_label="Structure number",
          fraction_mode_list=[],
      ):
          """
          Find the modes of many structures.
  
          Args:
              structures (list): A list of `Structures` to find the modes
                  of.
              sweep_param_list (list): A list of the parameter-sweep sweep
                  that was used.  This is for plotting purposes only.
              filename (str): The nominal filename to use when saving the
                  effective indices.  Defaults to 'structure_n_effs.dat'.
              plot (bool): `True` if plots should be generates,
                  otherwise `False`.  Default is `True`.
              x_label (str): x-axis text to display in the plot.
              fraction_mode_list (list): A list of mode indices of the modes
                  that should be included in the TE/TM mode fraction plot.
                  If the list is empty, all modes will be included.  The list
                  is empty by default.
  
          Returns:
              list: A list of the effective indices found for each structure.
          """
          n_effs = []
          mode_types = []
          fractions_te = []
          fractions_tm = []
          for s in tqdm.tqdm(structures, ncols=70):
              self.solve(s)
              n_effs.append(np.real(self.n_effs))
              mode_types.append(self._get_mode_types())
              fractions_te.append(self.fraction_te)
              fractions_tm.append(self.fraction_tm)
  
          if filename:
              self._write_n_effs_to_file(
                  n_effs, self._modes_directory + filename, sweep_param_list
              )
  
              with open(self._modes_directory + "mode_types.dat", "w") as fs:
                  header = ",".join(
                      "Mode%i" % i for i, _ in enumerate(mode_types[0])
                  )
                  fs.write("# " + header + "\n")
                  for mt in mode_types:
                      txt = ",".join("%s %.2f" % pair for pair in mt)
                      fs.write(txt + "\n")
  
              with open(self._modes_directory + "fraction_te.dat", "w") as fs:
                  header = "fraction te"
                  fs.write("# param sweep," + header + "\n")
                  for param, fte in zip(sweep_param_list, fractions_te):
                      txt = "%.6f," % param
                      txt += ",".join("%.2f" % f for f in fte)
                      fs.write(txt + "\n")
  
              with open(self._modes_directory + "fraction_tm.dat", "w") as fs:
                  header = "fraction tm"
                  fs.write("# param sweep," + header + "\n")
                  for param, ftm in zip(sweep_param_list, fractions_tm):
                      txt = "%.6f," % param
                      txt += ",".join("%.2f" % f for f in ftm)
                      fs.write(txt + "\n")
  
              if plot:
                  if MPL:
                      title = "$n_{eff}$ vs %s" % x_label
                      y_label = "$n_{eff}$"
                  else:
                      title = "n_{effs} vs %s" % x_label
                      y_label = "n_{eff}"
                  self._plot_n_effs(
                      self._modes_directory + filename, self._modes_directory + "fraction_te.dat", x_label, y_label, title
                  )
  
                  title = "TE Fraction vs %s" % x_label
                  self._plot_fraction(
                      self._modes_directory + "fraction_te.dat",
                      x_label,
                      "TE Fraction [%]",
                      title,
                      fraction_mode_list,
                  )
  
                  title = "TM Fraction vs %s" % x_label
                  self._plot_fraction(
                      self._modes_directory + "fraction_tm.dat",
                      x_label,
                      "TM Fraction [%]",
                      title,
                      fraction_mode_list,
                  )
  
          return n_effs