solid-dmft 3.2.1__tar.gz → 3.2.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. {solid_dmft-3.2.1 → solid_dmft-3.2.2}/PKG-INFO +1 -3
  2. {solid_dmft-3.2.1 → solid_dmft-3.2.2}/pyproject.toml +2 -4
  3. {solid_dmft-3.2.1 → solid_dmft-3.2.2}/python/solid_dmft/dmft_cycle.py +1 -1
  4. solid_dmft-3.2.2/python/solid_dmft/dmft_tools/matheval.py +59 -0
  5. {solid_dmft-3.2.1 → solid_dmft-3.2.2}/python/solid_dmft/dmft_tools/solver.py +17 -7
  6. {solid_dmft-3.2.1 → solid_dmft-3.2.2}/python/solid_dmft/main.py +2 -2
  7. {solid_dmft-3.2.1 → solid_dmft-3.2.2}/python/solid_dmft/postprocessing/plot_correlated_bands.py +12 -9
  8. {solid_dmft-3.2.1 → solid_dmft-3.2.2}/python/solid_dmft/read_config.py +10 -5
  9. {solid_dmft-3.2.1 → solid_dmft-3.2.2}/python/solid_dmft/version.py +4 -4
  10. {solid_dmft-3.2.1 → solid_dmft-3.2.2}/python/solid_dmft.egg-info/PKG-INFO +2 -4
  11. {solid_dmft-3.2.1 → solid_dmft-3.2.2}/python/solid_dmft.egg-info/SOURCES.txt +1 -0
  12. solid_dmft-3.2.2/python/solid_dmft.egg-info/requires.txt +3 -0
  13. solid_dmft-3.2.1/python/solid_dmft.egg-info/requires.txt +0 -5
  14. {solid_dmft-3.2.1 → solid_dmft-3.2.2}/COPYING.txt +0 -0
  15. {solid_dmft-3.2.1 → solid_dmft-3.2.2}/LICENSE.txt +0 -0
  16. {solid_dmft-3.2.1 → solid_dmft-3.2.2}/MANIFEST.in +0 -0
  17. {solid_dmft-3.2.1 → solid_dmft-3.2.2}/README.md +0 -0
  18. {solid_dmft-3.2.1 → solid_dmft-3.2.2}/python/solid_dmft/__init__.py +0 -0
  19. {solid_dmft-3.2.1 → solid_dmft-3.2.2}/python/solid_dmft/csc_flow.py +0 -0
  20. {solid_dmft-3.2.1 → solid_dmft-3.2.2}/python/solid_dmft/dft_managers/__init__.py +0 -0
  21. {solid_dmft-3.2.1 → solid_dmft-3.2.2}/python/solid_dmft/dft_managers/mpi_helpers.py +0 -0
  22. {solid_dmft-3.2.1 → solid_dmft-3.2.2}/python/solid_dmft/dft_managers/qe_manager.py +0 -0
  23. {solid_dmft-3.2.1 → solid_dmft-3.2.2}/python/solid_dmft/dft_managers/vasp_manager.py +0 -0
  24. {solid_dmft-3.2.1 → solid_dmft-3.2.2}/python/solid_dmft/dmft_tools/__init__.py +0 -0
  25. {solid_dmft-3.2.1 → solid_dmft-3.2.2}/python/solid_dmft/dmft_tools/afm_mapping.py +0 -0
  26. {solid_dmft-3.2.1 → solid_dmft-3.2.2}/python/solid_dmft/dmft_tools/convergence.py +0 -0
  27. {solid_dmft-3.2.1 → solid_dmft-3.2.2}/python/solid_dmft/dmft_tools/formatter.py +0 -0
  28. {solid_dmft-3.2.1 → solid_dmft-3.2.2}/python/solid_dmft/dmft_tools/greens_functions_mixer.py +0 -0
  29. {solid_dmft-3.2.1 → solid_dmft-3.2.2}/python/solid_dmft/dmft_tools/initial_self_energies.py +0 -0
  30. {solid_dmft-3.2.1 → solid_dmft-3.2.2}/python/solid_dmft/dmft_tools/interaction_hamiltonian.py +0 -0
  31. {solid_dmft-3.2.1 → solid_dmft-3.2.2}/python/solid_dmft/dmft_tools/legendre_filter.py +0 -0
  32. {solid_dmft-3.2.1 → solid_dmft-3.2.2}/python/solid_dmft/dmft_tools/manipulate_chemical_potential.py +0 -0
  33. {solid_dmft-3.2.1 → solid_dmft-3.2.2}/python/solid_dmft/dmft_tools/observables.py +0 -0
  34. {solid_dmft-3.2.1 → solid_dmft-3.2.2}/python/solid_dmft/dmft_tools/results_to_archive.py +0 -0
  35. {solid_dmft-3.2.1 → solid_dmft-3.2.2}/python/solid_dmft/postprocessing/__init__.py +0 -0
  36. {solid_dmft-3.2.1 → solid_dmft-3.2.2}/python/solid_dmft/postprocessing/eval_U_cRPA_RESPACK.py +0 -0
  37. {solid_dmft-3.2.1 → solid_dmft-3.2.2}/python/solid_dmft/postprocessing/eval_U_cRPA_Vasp.py +0 -0
  38. {solid_dmft-3.2.1 → solid_dmft-3.2.2}/python/solid_dmft/postprocessing/maxent_gf_imp.py +0 -0
  39. {solid_dmft-3.2.1 → solid_dmft-3.2.2}/python/solid_dmft/postprocessing/maxent_gf_latt.py +0 -0
  40. {solid_dmft-3.2.1 → solid_dmft-3.2.2}/python/solid_dmft/postprocessing/maxent_sigma.py +0 -0
  41. {solid_dmft-3.2.1 → solid_dmft-3.2.2}/python/solid_dmft/util/__init__.py +0 -0
  42. {solid_dmft-3.2.1 → solid_dmft-3.2.2}/python/solid_dmft/util/symmetrize_gamma_file.py +0 -0
  43. {solid_dmft-3.2.1 → solid_dmft-3.2.2}/python/solid_dmft/util/update_dmft_config.py +0 -0
  44. {solid_dmft-3.2.1 → solid_dmft-3.2.2}/python/solid_dmft/util/update_results_h5.py +0 -0
  45. {solid_dmft-3.2.1 → solid_dmft-3.2.2}/python/solid_dmft/util/write_kslice_to_h5.py +0 -0
  46. {solid_dmft-3.2.1 → solid_dmft-3.2.2}/python/solid_dmft.egg-info/dependency_links.txt +0 -0
  47. {solid_dmft-3.2.1 → solid_dmft-3.2.2}/python/solid_dmft.egg-info/entry_points.txt +0 -0
  48. {solid_dmft-3.2.1 → solid_dmft-3.2.2}/python/solid_dmft.egg-info/top_level.txt +0 -0
  49. {solid_dmft-3.2.1 → solid_dmft-3.2.2}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: solid_dmft
3
- Version: 3.2.1
3
+ Version: 3.2.2
4
4
  Summary: solid_dmft: a versatile python wrapper to perform DFT+DMFT calculations utilizing the TRIQS software library
5
5
  Author-email: Alexander Hampel <ahampel@flatironinstitute.org>
6
6
  Project-URL: Homepage, https://triqs.github.io/solid_dmft
@@ -17,8 +17,6 @@ License-File: COPYING.txt
17
17
  Requires-Dist: numpy
18
18
  Requires-Dist: scipy
19
19
  Requires-Dist: pytest
20
- Requires-Dist: scikit-image
21
- Requires-Dist: argparse
22
20
 
23
21
  ![logo_soliDMFT](https://raw.githubusercontent.com/triqs/solid_dmft/unstable/doc/logos/logo_solid_dmft.png)
24
22
 
@@ -7,7 +7,7 @@ where = ["python"]
7
7
 
8
8
  [project]
9
9
  name = "solid_dmft"
10
- version = "3.2.1"
10
+ version = "3.2.2"
11
11
  authors = [
12
12
  { name="Alexander Hampel", email="ahampel@flatironinstitute.org" }
13
13
  ]
@@ -23,9 +23,7 @@ classifiers = [
23
23
  dependencies = [
24
24
  "numpy",
25
25
  "scipy",
26
- "pytest",
27
- "scikit-image",
28
- "argparse"
26
+ "pytest"
29
27
  ]
30
28
 
31
29
  [project.urls]
@@ -660,7 +660,7 @@ def _dmft_step(sum_k, solvers, it, general_params,
660
660
  mpi.report('\nSolving the impurity problem for shell {} ...'.format(icrsh))
661
661
  mpi.barrier()
662
662
  start_time = timer()
663
- solvers[icrsh].solve()
663
+ solvers[icrsh].solve(it=it)
664
664
  mpi.barrier()
665
665
  mpi.report('Actual time for solver: {:.2f} s'.format(timer() - start_time))
666
666
 
@@ -0,0 +1,59 @@
1
+ # https://stackoverflow.com/a/30516254
2
+
3
+ import ast
4
+ import math
5
+
6
+
7
+ class MathExpr(object):
8
+ allowed_nodes = (
9
+ ast.Module,
10
+ ast.Expr,
11
+ ast.Load,
12
+ ast.Expression,
13
+ ast.Add,
14
+ ast.Sub,
15
+ ast.UnaryOp,
16
+ ast.Num,
17
+ ast.BinOp,
18
+ ast.Mult,
19
+ ast.Div,
20
+ ast.Pow,
21
+ ast.BitOr,
22
+ ast.BitAnd,
23
+ ast.BitXor,
24
+ ast.USub,
25
+ ast.UAdd,
26
+ ast.FloorDiv,
27
+ ast.Mod,
28
+ ast.LShift,
29
+ ast.RShift,
30
+ ast.Invert,
31
+ ast.Call,
32
+ ast.Name,
33
+ )
34
+
35
+ functions = {
36
+ "abs": abs,
37
+ "complex": complex,
38
+ "min": min,
39
+ "max": max,
40
+ "pow": pow,
41
+ "round": round,
42
+ }
43
+ functions.update(
44
+ {key: value for (key, value) in vars(math).items() if not key.startswith("_")}
45
+ )
46
+
47
+ def __init__(self, expr):
48
+ if any(elem in expr for elem in "\n#"):
49
+ raise ValueError(expr)
50
+
51
+ node = ast.parse(expr.strip(), mode="eval")
52
+ for curr in ast.walk(node):
53
+ if not isinstance(curr, self.allowed_nodes):
54
+ raise ValueError(curr)
55
+
56
+ self.code = compile(node, "<string>", "eval")
57
+
58
+ def __call__(self, **kwargs):
59
+ return eval(self.code, {"__builtins__": None}, {**self.functions, **kwargs})
@@ -32,6 +32,7 @@ import triqs.utility.mpi as mpi
32
32
  from h5 import HDFArchive
33
33
 
34
34
  from . import legendre_filter
35
+ from .matheval import MathExpr
35
36
 
36
37
  def get_n_orbitals(sum_k):
37
38
  """
@@ -108,7 +109,7 @@ class SolverStructure:
108
109
 
109
110
  Methods
110
111
  -------
111
- solve(self)
112
+ solve(self, **kwargs)
112
113
  solve impurity problem
113
114
  '''
114
115
 
@@ -140,6 +141,10 @@ class SolverStructure:
140
141
  self.h_int = h_int
141
142
  self.iteration_offset = iteration_offset
142
143
  self.solver_struct_ftps = solver_struct_ftps
144
+ if solver_params.get("random_seed") is None:
145
+ self.random_seed_generator = None
146
+ else:
147
+ self.random_seed_generator = MathExpr(solver_params["random_seed"])
143
148
 
144
149
  # initialize solver object, options are cthyb
145
150
  if self.general_params['solver_type'] == 'cthyb':
@@ -336,11 +341,16 @@ class SolverStructure:
336
341
  # solver-specific solve() command
337
342
  # ********************************************************************
338
343
 
339
- def solve(self):
344
+ def solve(self, **kwargs):
340
345
  r'''
341
346
  solve impurity problem with current solver
342
347
  '''
343
348
 
349
+ if self.random_seed_generator is None:
350
+ random_seed = {}
351
+ else:
352
+ random_seed = { "random_seed": int(self.random_seed_generator(it=kwargs["it"], rank=mpi.rank)) }
353
+
344
354
  if self.general_params['solver_type'] == 'cthyb':
345
355
 
346
356
  if self.general_params['cthyb_delta_interface']:
@@ -387,7 +397,7 @@ class SolverStructure:
387
397
 
388
398
  # Solve the impurity problem for icrsh shell
389
399
  # *************************************
390
- self.triqs_solver.solve(h_int=self.h_int, **self.solver_params)
400
+ self.triqs_solver.solve(h_int=self.h_int, **{ **self.solver_params, **random_seed })
391
401
  # *************************************
392
402
 
393
403
  # call postprocessing
@@ -403,7 +413,7 @@ class SolverStructure:
403
413
 
404
414
  # Solve the impurity problem for icrsh shell
405
415
  # *************************************
406
- self.triqs_solver.solve(h_int=self.h_int, **self.solver_params)
416
+ self.triqs_solver.solve(h_int=self.h_int, **{ **self.solver_params, **random_seed })
407
417
  # *************************************
408
418
 
409
419
  # call postprocessing
@@ -577,7 +587,7 @@ class SolverStructure:
577
587
 
578
588
  # Solve the impurity problem for icrsh shell
579
589
  # *************************************
580
- self.triqs_solver.solve(h_int=self.h_int, **self.solver_params)
590
+ self.triqs_solver.solve(h_int=self.h_int, **{ **self.solver_params, **random_seed })
581
591
  # *************************************
582
592
 
583
593
  # call postprocessing
@@ -594,7 +604,7 @@ class SolverStructure:
594
604
 
595
605
  # Solve the impurity problem for icrsh shell
596
606
  # *************************************
597
- self.triqs_solver.solve(h_int=self.h_int, **self.solver_params)
607
+ self.triqs_solver.solve(h_int=self.h_int, **{ **self.solver_params, **random_seed })
598
608
  # *************************************
599
609
 
600
610
  # call postprocessing
@@ -701,7 +711,7 @@ class SolverStructure:
701
711
  )
702
712
 
703
713
  def _interface_hartree_dc(hartree_instance, general_params, advanced_params, icrsh):
704
- """ Modifies in-place class attributes to infercace with options in solid_dmft
714
+ """ Modifies in-place class attributes to infercace with options in solid_dmft
705
715
  for the moment supports only DC-relevant parameters
706
716
 
707
717
  Parameters
@@ -108,8 +108,8 @@ def main(argv=sys.argv):
108
108
  # Copies h5 archive and config file to subfolder if are not there
109
109
  for file in (general_params['seedname']+'.h5',
110
110
  general_params['config_file']):
111
- if not os.path.isfile(general_params['jobname']+'/'+file):
112
- shutil.copyfile(file, general_params['jobname']+'/'+file)
111
+ if not os.path.isfile(general_params['jobname']+'/'+os.path.basename(file)):
112
+ shutil.copyfile(file, general_params['jobname']+'/'+os.path.basename(file))
113
113
  mpi.barrier()
114
114
 
115
115
  # Runs dmft_cycle
@@ -178,8 +178,6 @@ def _sigma_from_dmft(n_orb, orbital_order, with_sigma, spin, orbital_order_dmft=
178
178
  def interpolate_sigma(w_mesh, w_mesh_dmft, orb1, orb2): return np.interp(w_mesh, w_mesh_dmft, sigma_mat[:, orb1, orb2])
179
179
 
180
180
  for ct1, ct2 in itertools.product(range(n_orb), range(n_orb)):
181
- if ct1 != ct2 and not SOC:
182
- continue
183
181
  sigma_interpolated[ct1, ct2] = interpolate_sigma(w_mesh, w_mesh_dmft, ct1, ct2)
184
182
 
185
183
  return sigma_interpolated, mu_dmft, freq_dict
@@ -481,7 +479,7 @@ def get_kx_ky_FS(lower_right, upper_left, Z, tb, select=None, N_kxy=10, kz=0.0,
481
479
 
482
480
  sheet_ct = 0
483
481
  for sheet in contours.keys():
484
- for sec_per_sheet in range(np.shape(contours[sheet])[0]):
482
+ for sec_per_sheet in range(len(contours[sheet])):
485
483
  # once on 2D cubic mesh
486
484
  FS_kx_ky[sheet_ct] = np.vstack([_fract_ind_to_val(kx, contours[sheet][sec_per_sheet][:, 0]),
487
485
  _fract_ind_to_val(ky, contours[sheet][sec_per_sheet][:, 1]),
@@ -507,7 +505,7 @@ def get_kx_ky_FS(lower_right, upper_left, Z, tb, select=None, N_kxy=10, kz=0.0,
507
505
  def _setup_plot_bands(ax, special_k, k_points_labels, freq_dict):
508
506
 
509
507
  ax.axhline(y=0, c='gray', ls='--', lw=0.8, zorder=0)
510
- ax.set_ylabel(r'$\omega - \mu$ (eV)')
508
+ ax.set_ylabel(r'$\epsilon - \mu$ (eV)')
511
509
  # ax.set_ylim(*freq_dict['window'])
512
510
  for ik in special_k:
513
511
  ax.axvline(x=ik, linewidth=0.7, color='k', zorder=0.5)
@@ -549,8 +547,10 @@ def plot_bands(fig, ax, alatt_k_w, tb_data, freq_dict, n_orb, tb=True, alatt=Fal
549
547
 
550
548
  graph = ax.pcolormesh(kw_x, kw_y, alatt_k_w.T, cmap=plot_dict['colorscheme_alatt'],
551
549
  norm=Normalize(vmin=vmin, vmax=vmax), shading='gouraud')
552
- colorbar = plt.colorbar(graph)
553
- colorbar.set_label(r'$A(k, \omega)$')
550
+
551
+ if 'colorbar' not in plot_dict or plot_dict['colorbar']:
552
+ colorbar = plt.colorbar(graph)
553
+ colorbar.set_label(r'$A(k, \omega)$')
554
554
 
555
555
  if tb:
556
556
  # if projection is requested, _get_tb_bands() ran already
@@ -589,7 +589,7 @@ def plot_dos(fig, ax, alatt_k_w, tb_data, freq_dict, tb=False, alatt=True, label
589
589
  alatt_k_w.shape[0], label=label, color=color)
590
590
 
591
591
  ax.axvline(x=0, c='gray', ls='--', zorder=0)
592
- ax.set_xlabel(r'$\omega - \mu$ (eV)')
592
+ ax.set_xlabel(r'$\epsilon - \mu$ (eV)')
593
593
  ax.set_ylabel(r'A($\omega$)')
594
594
 
595
595
  ax.set_xlim(*freq_dict['window'])
@@ -629,8 +629,10 @@ def plot_kslice(fig, ax, alatt_k_w, tb_data, freq_dict, n_orb, tb_dict, tb=True,
629
629
  cmap=plot_dict['colorscheme_kslice'],
630
630
  norm=Normalize(vmin=vmin, vmax=vmax),
631
631
  shading='gouraud')
632
- #colorbar = plt.colorbar(graph)
633
- #colorbar.set_label(r'$A(k, 0$)')
632
+
633
+ if 'colorbar' not in plot_dict or plot_dict['colorbar']:
634
+ colorbar = plt.colorbar(graph)
635
+ colorbar.set_label(r'$A(k, 0$)')
634
636
 
635
637
  if tb:
636
638
  FS_kx_ky, band_char = get_tb_kslice(tb_data['tb'], tb_data['mu_tb'], **tb_dict)
@@ -861,6 +863,7 @@ def get_dmft_bands(n_orb, w90_path, w90_seed, mu_tb, add_spin=False, add_lambda=
861
863
  delta_sigma, mu_dmft, freq_dict = _sigma_from_dmft(n_orb, orbital_order_to, with_sigma, **specs)
862
864
  mu = mu_dmft + mu_shift
863
865
 
866
+ freq_dict['sigma_upfolded'] = delta_sigma
864
867
  if add_mu_tb:
865
868
  print('Adding mu_tb to DMFT μ; assuming DMFT was run with subtracted dft μ.')
866
869
  mu += mu_tb
@@ -147,7 +147,9 @@ sigma_mix : float, optional, default=1.0
147
147
  careful: Sigma mixing can break orbital symmetries, use G0 mixing
148
148
  mixing sigma with previous iteration sigma for better convergency. 1.0 means no mixing
149
149
  g0_mix : float, optional, default=1.0
150
- mixing the weiss field G0 with previous iteration G0 for better convergency. 1.0 means no mixing
150
+ Mixing the weiss field G0 with previous iteration G0 for better convergency. 1.0 means no mixing.
151
+ Setting g0_mix to 0.0 with linear mixing can be used for statistic sampling when
152
+ restarting a calculation
151
153
  g0_mix_type : string, optional, default='linear'
152
154
  which type of mixing is used. Possible values are:
153
155
  linear: linear mixing
@@ -279,9 +281,12 @@ fit_min_w : float, optional
279
281
  start matsubara frequency to start with
280
282
  fit_max_w : float, optional
281
283
  highest matsubara frequency to fit
282
- random_seed : int, optional default by triqs
284
+ random_seed : str, optional default by triqs
283
285
  if specified the int will be used for random seeds! Careful, this will give the same random
284
286
  numbers on all mpi ranks
287
+ You can also pass a string that will convert the keywords it or rank on runtime, e.g.
288
+ 34788 * it + 928374 * rank will convert each iteration the variables it and rank for the random
289
+ seed
285
290
  legendre_fit : bool, optional default= False
286
291
  filter noise of G(tau) with G_l, cutoff is taken from n_l
287
292
  loc_n_min : int, optional
@@ -549,11 +554,11 @@ PROPERTIES_PARAMS = {'general': {'seedname': {'used': True},
549
554
  'default': False},
550
555
 
551
556
  'sigma_mix': {'converter': float,
552
- 'valid for': lambda x, params: x > 0 and (np.isclose(params['general']['g0_mix'], 1)
557
+ 'valid for': lambda x, params: x >= 0 and (np.isclose(params['general']['g0_mix'], 1)
553
558
  or np.isclose(x, 1)),
554
559
  'used': True, 'default': 1.0},
555
560
 
556
- 'g0_mix': {'converter': float, 'valid for': lambda x, _: x > 0,
561
+ 'g0_mix': {'converter': float, 'valid for': lambda x, _: x >= 0,
557
562
  'used': True, 'default': 1.0},
558
563
 
559
564
  'g0_mix_type': {'valid for': lambda x, _: x in ('linear', 'broyden'),
@@ -731,7 +736,7 @@ PROPERTIES_PARAMS = {'general': {'seedname': {'used': True},
731
736
  'move_shift': {'converter': BOOL_PARSER, 'default': False,
732
737
  'used': lambda params: params['general']['solver_type'] in ['cthyb']},
733
738
 
734
- 'random_seed': {'converter': int, 'default': None,
739
+ 'random_seed': {'converter': str, 'default': None,
735
740
  'used': lambda params: params['general']['solver_type'] in ['cthyb', 'ctint', 'ctseg']},
736
741
 
737
742
  'perform_tail_fit': {'converter': BOOL_PARSER,
@@ -22,12 +22,12 @@
22
22
  #
23
23
  ################################################################################
24
24
 
25
- version = "3.2.1"
26
- triqs_hash = "90c8f8c257be434bc4560f4bbc518905c4d226ea"
27
- solid_dmft_hash = ""
25
+ version = "3.2.2"
26
+ triqs_hash = "8216931d15230ad4ffd4acba3db651046c040d99"
27
+ solid_dmft_hash = "90f23ef5222ddd232855e5a8d3440b8008359e65"
28
28
 
29
29
  def show_version():
30
30
  print("\nYou are using solid_dmft version %s\n"%version)
31
31
 
32
32
  def show_git_hash():
33
- print("\nYou are using solid_dmft git hash %s based on triqs git hash %s\n"%("", triqs_hash))
33
+ print("\nYou are using solid_dmft git hash %s based on triqs git hash %s\n"%("90f23ef5222ddd232855e5a8d3440b8008359e65", triqs_hash))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
- Name: solid-dmft
3
- Version: 3.2.1
2
+ Name: solid_dmft
3
+ Version: 3.2.2
4
4
  Summary: solid_dmft: a versatile python wrapper to perform DFT+DMFT calculations utilizing the TRIQS software library
5
5
  Author-email: Alexander Hampel <ahampel@flatironinstitute.org>
6
6
  Project-URL: Homepage, https://triqs.github.io/solid_dmft
@@ -17,8 +17,6 @@ License-File: COPYING.txt
17
17
  Requires-Dist: numpy
18
18
  Requires-Dist: scipy
19
19
  Requires-Dist: pytest
20
- Requires-Dist: scikit-image
21
- Requires-Dist: argparse
22
20
 
23
21
  ![logo_soliDMFT](https://raw.githubusercontent.com/triqs/solid_dmft/unstable/doc/logos/logo_solid_dmft.png)
24
22
 
@@ -28,6 +28,7 @@ python/solid_dmft/dmft_tools/initial_self_energies.py
28
28
  python/solid_dmft/dmft_tools/interaction_hamiltonian.py
29
29
  python/solid_dmft/dmft_tools/legendre_filter.py
30
30
  python/solid_dmft/dmft_tools/manipulate_chemical_potential.py
31
+ python/solid_dmft/dmft_tools/matheval.py
31
32
  python/solid_dmft/dmft_tools/observables.py
32
33
  python/solid_dmft/dmft_tools/results_to_archive.py
33
34
  python/solid_dmft/dmft_tools/solver.py
@@ -0,0 +1,3 @@
1
+ numpy
2
+ scipy
3
+ pytest
@@ -1,5 +0,0 @@
1
- numpy
2
- scipy
3
- pytest
4
- scikit-image
5
- argparse
File without changes
File without changes
File without changes
File without changes
File without changes