diff --git a/.gitignore b/.gitignore index f9617a7..c13b508 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,6 @@ __pycache__/ .idea/ .DS_Store + +.egg-info +build/ \ No newline at end of file diff --git a/.python-version b/.python-version new file mode 100644 index 0000000..cc1923a --- /dev/null +++ b/.python-version @@ -0,0 +1 @@ +3.8 diff --git a/__init__.py b/build/lib/projectorEmbedding/__init__.py similarity index 97% rename from __init__.py rename to build/lib/projectorEmbedding/__init__.py index 41f58d4..9e78513 100644 --- a/__init__.py +++ b/build/lib/projectorEmbedding/__init__.py @@ -1,4 +1,5 @@ -""" __init__.py """ +"""__init__.py""" + from projectorEmbedding.embed_utils import get_occ_coeffs from projectorEmbedding.embed_utils import get_mo_occ_a from projectorEmbedding.embed_utils import flatten_basis diff --git a/embed_partition.py b/build/lib/projectorEmbedding/embed_partition.py similarity index 52% rename from embed_partition.py rename to build/lib/projectorEmbedding/embed_partition.py index 906df44..467525b 100644 --- a/embed_partition.py +++ b/build/lib/projectorEmbedding/embed_partition.py @@ -1,6 +1,7 @@ """ Functions to partition the density """ + import numpy as np from math import ceil from math import floor @@ -8,16 +9,22 @@ from scipy.linalg import fractional_matrix_power from projectorEmbedding.embed_utils import get_occ_coeffs + def mulliken_partition(charge_threshold=0.4, localize=True): """Splits the MOs into active and frozen parts based on charge threshold.""" + def internal(pyscf_mf, active_atoms=None, c_occ=None): # if occupied coeffs aren't provided, get the ones from the mean field results. if c_occ is None: c_occ = get_occ_coeffs(pyscf_mf.mo_coeff, pyscf_mf.mo_occ) if isinstance(c_occ, tuple): - alpha_active, alpha_inactive = internal(pyscf_mf, active_atoms, c_occ=c_occ[0]) - beta_active, beta_inactive = internal(pyscf_mf, active_atoms, c_occ=c_occ[1]) + alpha_active, alpha_inactive = internal( + pyscf_mf, active_atoms, c_occ=c_occ[0] + ) + beta_active, beta_inactive = internal( + pyscf_mf, active_atoms, c_occ=c_occ[1] + ) return (alpha_active, beta_active), (alpha_inactive, beta_inactive) mo_occ = pyscf_mf.mo_occ @@ -29,35 +36,43 @@ def internal(pyscf_mf, active_atoms=None, c_occ=None): # localize orbitals if internal.localize: + print("Localize = True") c_occ = lo.PM(pyscf_mf.mol, c_occ).kernel() - # for each mo, go through active atoms and check the charge on that atom. # if charge on active atom is greater than threshold, mo added to active list. active_mos = [] - if active_atoms == []: # default case for NO active atoms + if active_atoms == []: # default case for NO active atoms + print("Active atoms = True") return c_occ[:, []], c_occ[:, :] if active_atoms is None: + print("Active None = True") return c_occ[:, :], c_occ[:, []] + # print(c_occ.shape[1],"Shape, Sahil") for mo_i in range(c_occ.shape[1]): - rdm_mo = np.dot(c_occ[:, [mo_i]] * mo_occ[mo_i], c_occ[:, [mo_i]].conj().T) for atom in active_atoms: offset = offset_ao_by_atom[atom, 2] extent = offset_ao_by_atom[atom, 3] + # print(offset,extent,"offset") + ao_indices = np.arange(offset, offset + extent) + overlap_atom = overlap[np.ix_(ao_indices, ao_indices)] + rdm_mo_atom = rdm_mo[np.ix_(ao_indices, ao_indices)] - overlap_atom = overlap[:, offset:extent] - rdm_mo_atom = rdm_mo[:, offset:extent] - - q_atom_mo = np.einsum('ij,ij->', rdm_mo_atom, overlap_atom) + # print(overlap_atom) + # print(rdm_mo_atom) + q_atom_mo = np.einsum("ij,ij->", rdm_mo_atom, overlap_atom) + # print(q_atom_mo) if q_atom_mo > (internal.charge_threshold * (mo_occ[mo_i] / 2)): + # print("charge command is working", q_atom_mo ,internal.charge_threshold* (mo_occ[mo_i] / 2)) active_mos.append(mo_i) break # all mos not active are frozen frozen_mos = [i for i in range(c_occ.shape[1]) if i not in active_mos] + # print(c_occ.shape) return c_occ[:, active_mos], c_occ[:, frozen_mos] @@ -66,16 +81,22 @@ def internal(pyscf_mf, active_atoms=None, c_occ=None): return internal -def occupancy_partition(occupancy_threshold=0.2, localize=True): + +def occupancy_partition(occupancy_threshold=0.6, localize=True): """Splits the MOs into active and frozen parts based on occupancy threshold.""" + def internal(pyscf_mf, active_atoms=None, c_occ=None): # Handle orbital coefficients if c_occ is None: c_occ = get_occ_coeffs(pyscf_mf.mo_coeff, pyscf_mf.mo_occ) if isinstance(c_occ, tuple): - alpha_active, alpha_inactive = internal(pyscf_mf, active_atoms, c_occ=c_occ[0]) - beta_active, beta_inactive = internal(pyscf_mf, active_atoms, c_occ=c_occ[1]) + alpha_active, alpha_inactive = internal( + pyscf_mf, active_atoms, c_occ=c_occ[0] + ) + beta_active, beta_inactive = internal( + pyscf_mf, active_atoms, c_occ=c_occ[1] + ) return (alpha_active, beta_active), (alpha_inactive, beta_inactive) if internal.localize: @@ -83,24 +104,33 @@ def internal(pyscf_mf, active_atoms=None, c_occ=None): overlap = pyscf_mf.get_ovlp() # Handle active atoms - if active_atoms == []: # default case for NO active atoms + if active_atoms == []: # default case for NO active atoms return c_occ[:, []], c_occ[:, :] if active_atoms is None: return c_occ[:, :], c_occ[:, []] # Find AOs on active atoms offset_ao_by_atom = pyscf_mf.mol.offset_ao_by_atom() + print(offset_ao_by_atom) active_aos = [] for atom in active_atoms: - active_aos += list(range(offset_ao_by_atom[atom, 2], offset_ao_by_atom[atom, 3])) + active_aos += list( + range(offset_ao_by_atom[atom, 2], offset_ao_by_atom[atom, 3]) + ) + print(active_aos) mesh = np.ix_(active_aos, active_aos) # Find MO occupancies in active AOs and sort accordingly active_mos = [] frozen_mos = [] + + print(c_occ.shape[1]) + print(mesh) + for mo_i in range(c_occ.shape[1]): rdm_mo = np.dot(c_occ[:, [mo_i]], c_occ[:, [mo_i]].conj().T) dm_mo = rdm_mo @ overlap + print(np.trace(dm_mo[mesh])) if np.trace(dm_mo[mesh]) > internal.occupancy_threshold: active_mos.append(mo_i) else: @@ -113,70 +143,85 @@ def internal(pyscf_mf, active_atoms=None, c_occ=None): return internal -def spade_partition(pyscf_mf, active_atoms=None, c_occ=None, n_act_mos=None): - """SPADE partitioning scheme""" - if c_occ is None: - c_occ = get_occ_coeffs(pyscf_mf.mo_coeff, pyscf_mf.mo_occ) - if isinstance(c_occ, tuple): - if n_act_mos is None: - n_act_mos_a = n_act_mos_b = None +def spade_partition(): + def internal(pyscf_mf, active_atoms=None, c_occ=None, n_act_mos=None): + """SPADE partitioning scheme""" + if c_occ is None: + c_occ = get_occ_coeffs(pyscf_mf.mo_coeff, pyscf_mf.mo_occ) + + if isinstance(c_occ, tuple): + if n_act_mos is None: + n_act_mos_a = n_act_mos_b = None + else: + n_act_mos_a, n_act_mos_b = n_act_mos + alpha_active, alpha_inactive = internal( + pyscf_mf, active_atoms, c_occ=c_occ[0], n_act_mos=n_act_mos_a + ) + beta_active, beta_inactive = internal( + pyscf_mf, active_atoms, c_occ=c_occ[1], n_act_mos=n_act_mos_b + ) + return (alpha_active, beta_active), (alpha_inactive, beta_inactive) + + offset_ao_by_atom = pyscf_mf.mol.offset_ao_by_atom() + overlap = pyscf_mf.get_ovlp() + + # for each mo, go through active atoms and check the charge on that atom. + # if charge on active atom is greater than threshold, mo added to active list. + if active_atoms == []: # default case for NO active atoms + return c_occ[:, []], c_occ[:, :] + if active_atoms is None: + return c_occ[:, :], c_occ[:, []] + + # Find AOs on active atoms + active_aos = [] + for atom in active_atoms: + active_aos += list( + range(offset_ao_by_atom[atom, 2], offset_ao_by_atom[atom, 3]) + ) + + # Convert to orthogonal AOs and SVD submatrix + overlap_sqrt = fractional_matrix_power(overlap, 0.5) + c_orthogonal_ao = (overlap_sqrt @ c_occ)[active_aos, :] + _, s_vals, v_vecs = np.linalg.svd(c_orthogonal_ao, full_matrices=True) + + # Identify partitioning split + if len(s_vals) == 1: + n_act_mos = 1 else: - n_act_mos_a, n_act_mos_b = n_act_mos - alpha_active, alpha_inactive = spade_partition(pyscf_mf, active_atoms, c_occ=c_occ[0], n_act_mos=n_act_mos_a) - beta_active, beta_inactive = spade_partition(pyscf_mf, active_atoms, c_occ=c_occ[1], n_act_mos=n_act_mos_b) - return (alpha_active, beta_active), (alpha_inactive, beta_inactive) + if not n_act_mos: + if len(s_vals) != v_vecs.shape[0]: + s_vals = np.append(s_vals, [0.0]) + deltas = [-(s_vals[i + 1] - s_vals[i]) for i in range(len(s_vals) - 1)] + n_act_mos = np.argpartition(deltas, -1)[-1] + 1 - offset_ao_by_atom = pyscf_mf.mol.offset_ao_by_atom() - overlap = pyscf_mf.get_ovlp() + # Make SPADE orbitals + c_a = c_occ @ v_vecs.T[:, :n_act_mos] + c_b = c_occ @ v_vecs.T[:, n_act_mos:] - # Find AOs on active atoms - active_aos = [] - for atom in active_atoms: - active_aos += list(range(offset_ao_by_atom[atom, 2], offset_ao_by_atom[atom, 3])) - - # Convert to orthogonal AOs and SVD submatrix - overlap_sqrt = fractional_matrix_power(overlap, 0.5) - c_orthogonal_ao = (overlap_sqrt @ c_occ)[active_aos, :] - _, s_vals, v_vecs = np.linalg.svd(c_orthogonal_ao, full_matrices=True) - - # Identify partitioning split - if len(s_vals) == 1: - n_act_mos = 1 - else: - if not n_act_mos: - if len(s_vals) != v_vecs.shape[0]: - s_vals = np.append(s_vals, [0.0]) - deltas = [-(s_vals[i + 1] - s_vals[i]) for i in range(len(s_vals)-1)] - n_act_mos = np.argpartition(deltas, -1)[-1]+1 - - # Make SPADE orbitals - c_a = c_occ @ v_vecs.T[:, :n_act_mos] - c_b = c_occ @ v_vecs.T[:, n_act_mos:] - - return c_a, c_b - -def single_atom_mulliken_partition(pyscf_mf, active_atoms=None, c_occ=None, - n_act_mos=None, localize=True): + return c_a, c_b + + return internal + + +def single_atom_mulliken_partition( + pyscf_mf, active_atoms=None, c_occ=None, n_act_mos=None, localize=True +): # if occupied coeffs aren't provided, get the ones from the mean field results. if len(active_atoms) > 1: - raise Exception( - "This partition isn't intended for more than one active atom." - ) + raise Exception("This partition isn't intended for more than one active atom.") if c_occ is None: c_occ = get_occ_coeffs(pyscf_mf.mo_coeff, pyscf_mf.mo_occ) if isinstance(c_occ, tuple): n_act_mos_a, n_act_mos_b = n_act_mos - alpha_active, alpha_inactive = single_atom_mulliken_partition(pyscf_mf, - active_atoms, - c_occ=c_occ[0], - n_act_mos=n_act_mos_a) - beta_active, beta_inactive = single_atom_mulliken_partition(pyscf_mf, - active_atoms, - c_occ=c_occ[1], - n_act_mos=n_act_mos_b) + alpha_active, alpha_inactive = single_atom_mulliken_partition( + pyscf_mf, active_atoms, c_occ=c_occ[0], n_act_mos=n_act_mos_a + ) + beta_active, beta_inactive = single_atom_mulliken_partition( + pyscf_mf, active_atoms, c_occ=c_occ[1], n_act_mos=n_act_mos_b + ) return (alpha_active, beta_active), (alpha_inactive, beta_inactive) mo_occ = pyscf_mf.mo_occ @@ -192,14 +237,13 @@ def single_atom_mulliken_partition(pyscf_mf, active_atoms=None, c_occ=None, # for each mo, go through active atoms and check the charge on that atom. # if charge on active atom is greater than threshold, mo added to active list. - if active_atoms == []: # default case for NO active atoms + if active_atoms == []: # default case for NO active atoms return c_occ[:, []], c_occ[:, :] if active_atoms is None: return c_occ[:, :], c_occ[:, []] charges = [] for mo_i in range(c_occ.shape[1]): - rdm_mo = np.dot(c_occ[:, [mo_i]] * mo_occ[mo_i], c_occ[:, [mo_i]].conj().T) atom = active_atoms[0] @@ -209,13 +253,13 @@ def single_atom_mulliken_partition(pyscf_mf, active_atoms=None, c_occ=None, overlap_atom = overlap[:, offset:extent] rdm_mo_atom = rdm_mo[:, offset:extent] - charges.append(np.einsum('ij,ij->', rdm_mo_atom, overlap_atom)) + charges.append(np.einsum("ij,ij->", rdm_mo_atom, overlap_atom)) - active_mos = sorted([i for i in range(len(charges))], - key=lambda x: charges[x], reverse=True - )[:n_act_mos] + active_mos = sorted( + [i for i in range(len(charges))], key=lambda x: charges[x], reverse=True + )[:n_act_mos] # all mos not active are frozen frozen_mos = [i for i in range(c_occ.shape[1]) if i not in active_mos] - return c_occ[:, active_mos], c_occ[:, frozen_mos] \ No newline at end of file + return c_occ[:, active_mos], c_occ[:, frozen_mos] diff --git a/embed_proc.py b/build/lib/projectorEmbedding/embed_proc.py similarity index 71% rename from embed_proc.py rename to build/lib/projectorEmbedding/embed_proc.py index 28fdb30..1259caa 100644 --- a/embed_proc.py +++ b/build/lib/projectorEmbedding/embed_proc.py @@ -1,7 +1,9 @@ """ Perform projector based embedding """ + import numpy as np +import projectorEmbedding from pyscf import scf, dft, mp, cc, df from projectorEmbedding.embed_utils import get_occ_coeffs from projectorEmbedding.embed_utils import get_mo_occ_a @@ -10,18 +12,29 @@ from projectorEmbedding.embed_utils import screen_aos from projectorEmbedding.embed_utils import truncate_basis from projectorEmbedding.embed_partition import mulliken_partition as pmm +from projectorEmbedding.embed_partition import spade_partition as spade from projectorEmbedding.embed_pyscf_replacements import energy_elec - -def embedding_procedure(init_mf, active_atoms=None, embed_meth=None, - mu_val=10**6, trunc_lambda=None, - distribute_mos=pmm(), diis_space=8, max_cycle = 50, - chk_file=None, chk_start=None, cc_econv=1e-07, - cc_tconv=1e-06): +from projectorEmbedding.concentric_localization import ConcentricLocalizer + +def embedding_procedure( + init_mf, + active_atoms=None, + embed_meth=None, + mu_val=10**6, + trunc_lambda=None, + distribute_mos=pmm(), + diis_space=8, + max_cycle=50, + chk_file=None, + chk_start=None, + cc_econv=1e-07, + cc_tconv=1e-06, +): """ Manby-like embedding procedure. Parameters: - init_mf: Full system background calculation. + init_mf: Full system background calculation. Must be a HF or DFT object. Restricted open-shell not supported. active_atoms: List of atom numbers specifying active atoms. @@ -37,13 +50,16 @@ def embedding_procedure(init_mf, active_atoms=None, embed_meth=None, results: A tuple containing the total embedded energy. """ print("Start Projector Embedding") + # print(active_atoms) # restricted open-shell not supported if isinstance(init_mf, scf.rohf.ROHF) or isinstance(init_mf, dft.roks.ROKS): - raise RuntimeError('Restricted open-shell methods not supported') + raise RuntimeError("Restricted open-shell methods not supported") # unresticted or restricted initial method - init_is_unrestricted = isinstance(init_mf, scf.uhf.UHF) or isinstance(init_mf, dft.uks.UKS) + init_is_unrestricted = isinstance(init_mf, scf.uhf.UHF) or isinstance( + init_mf, dft.uks.UKS + ) # initial information mol = init_mf.mol.copy() @@ -53,7 +69,8 @@ def embedding_procedure(init_mf, active_atoms=None, embed_meth=None, # get active mos print("Partitioning MOs") c_occ_a, _ = distribute_mos(init_mf, active_atoms=active_atoms, c_occ=c_occ) - if init_is_unrestricted: + # print(c_occ_a[0].shape) + if init_is_unrestricted: print(f"Number of active MOs: {c_occ_a[0].shape[1]}, {c_occ_a[1].shape[1]}") else: print(f"Number of active MOs: {c_occ_a.shape[1]}") @@ -63,25 +80,25 @@ def embedding_procedure(init_mf, active_atoms=None, embed_meth=None, # make full and subsystem densities dens = {} - dens['ab'] = init_mf.make_rdm1() - dens['a'] = init_mf.make_rdm1(c_occ_a, mo_occ_active) - dens['b'] = dens['ab'] - dens['a'] + dens["ab"] = init_mf.make_rdm1() + dens["a"] = init_mf.make_rdm1(c_occ_a, mo_occ_active) + dens["b"] = dens["ab"] - dens["a"] # build embedding potential f_ab = init_mf.get_fock() - v_a = init_mf.get_veff(dm=dens['a']) + v_a = init_mf.get_veff(dm=dens["a"]) hcore_a_in_b = f_ab - v_a if mu_val is None: # Huzinaga Projection - matrix_sum = f_ab @ dens['b'] @ ovlp - coeff = 1.0 if dens['b'].ndim == 3 else 0.5 + matrix_sum = f_ab @ dens["b"] @ ovlp + coeff = 1.0 if dens["b"].ndim == 3 else 0.5 hcore_a_in_b -= coeff * (matrix_sum + matrix_sum.swapaxes(-1, -2)) else: # Level-shift projection - hcore_a_in_b += mu_val * (ovlp @ dens['b'] @ ovlp) + hcore_a_in_b += mu_val * (ovlp @ dens["b"] @ ovlp) # get electronic energy for A - energy_a, _ = energy_elec(init_mf, dm=dens['a'], vhf=v_a, h1e=hcore_a_in_b) + energy_a, _ = energy_elec(init_mf, dm=dens["a"], vhf=v_a, h1e=hcore_a_in_b) # set new number of electrons if init_is_unrestricted: @@ -91,14 +108,16 @@ def embedding_procedure(init_mf, active_atoms=None, embed_meth=None, if trunc_lambda: # AO truncation - print('Truncating AO Space') + print("Truncating AO Space") # alter basis set to facilitate screening - print(' Flattening Basis Set') + print(" Flattening Basis Set") mol.build(basis=flatten_basis(mol)) # screen basis sets for truncation - active_aos, include = screen_aos(mol, active_atoms, dens['a'], ovlp, trunc_lambda) + active_aos, include = screen_aos( + mol, active_atoms, dens["a"], ovlp, trunc_lambda + ) print("Active AOs:", len(active_aos), "/", mol.nao) if len(active_aos) != mol.nao: @@ -106,12 +125,12 @@ def embedding_procedure(init_mf, active_atoms=None, embed_meth=None, mol.build(dump_input=True, basis=truncate_basis(mol, include)) # make appropiate mean field object with new molecule - if hasattr(init_mf, 'xc'): + if hasattr(init_mf, "xc"): tinit_mf = dft.UKS(mol) if init_is_unrestricted else dft.RKS(mol) tinit_mf.xc = init_mf.xc else: tinit_mf = dft.UHF(mol) if init_is_unrestricted else scf.RHF(mol) - if hasattr(init_mf, 'with_df'): + if hasattr(init_mf, "with_df"): tinit_mf = df.density_fit(tinit_mf) tinit_mf.with_df.auxbasis = init_mf.with_df.auxbasis @@ -122,29 +141,29 @@ def embedding_procedure(init_mf, active_atoms=None, embed_meth=None, hcore_a_in_b = masked(hcore_a_in_b) factor = 1 if init_is_unrestricted else 2 - pure_d_a = factor * purify(masked(dens['a']) / factor, masked(ovlp)) + pure_d_a = factor * purify(masked(dens["a"]) / factor, masked(ovlp)) # truncated initial method (self embedded) tinit_mf.get_hcore = lambda *args: hcore_a_in_b tinit_mf.energy_elec = energy_elec.__get__(tinit_mf, type(tinit_mf)) if np.isnan(pure_d_a).any(): # Failsafe on purify - tinit_mf.kernel(masked(dens['a'])) + tinit_mf.kernel(masked(dens["a"])) else: tinit_mf.kernel(pure_d_a) # overwrite previous values - dens['a'] = tinit_mf.make_rdm1() - v_a = tinit_mf.get_veff(dm=dens['a']) - energy_a, _ = energy_elec(init_mf, dm=dens['a'], vhf=v_a, h1e=hcore_a_in_b) + dens["a"] = tinit_mf.make_rdm1() + v_a = tinit_mf.get_veff(dm=dens["a"]) + energy_a, _ = energy_elec(init_mf, dm=dens["a"], vhf=v_a, h1e=hcore_a_in_b) else: print("No AOs truncated") print("Calculating A-in-B") # wavefunction method options - general_options = ('hf', 'mp2', 'ccsd', 'ccsd(t)') - unrestricted = tuple('u' + opt for opt in general_options) + general_options = ("hf", "mp2", "ccsd", "ccsd(t)") + unrestricted = tuple("u" + opt for opt in general_options) embed_meth = embed_meth.lower() # make embedding mean field object @@ -153,8 +172,8 @@ def embedding_procedure(init_mf, active_atoms=None, embed_meth=None, mf_embed = scf.UHF(mol) else: mf_embed = scf.RHF(mol) - else: # assume anything else is just a functional name - if "uks-" in embed_meth: # deal with specification of unrestricted + else: # assume anything else is just a functional name + if "uks-" in embed_meth: # deal with specification of unrestricted embed_meth = embed_meth.replace("uks-", "") init_is_unrestricted = True if init_is_unrestricted: @@ -162,7 +181,7 @@ def embedding_procedure(init_mf, active_atoms=None, embed_meth=None, else: mf_embed = dft.RKS(mol) mf_embed.xc = embed_meth - if hasattr(init_mf, 'with_df'): + if hasattr(init_mf, "with_df"): mf_embed = df.density_fit(mf_embed) mf_embed.with_df.auxbasis = init_mf.with_df.auxbasis mf_embed.diis_space = diis_space @@ -171,32 +190,41 @@ def embedding_procedure(init_mf, active_atoms=None, embed_meth=None, mf_embed.get_hcore = lambda *args: hcore_a_in_b mf_embed.energy_elec = energy_elec.__get__(mf_embed, type(mf_embed)) + cl = ConcentricLocalizer(mf_embed, active_atoms=active_atoms) + mf_embed = cl.localize_virtual() + # run embedded SCF if chk_start: init_dm = mf_embed.from_chk(chk_start) tot_energy_a_in_b = mf_embed.kernel(init_dm) else: - tot_energy_a_in_b = mf_embed.kernel(dens['a']) + tot_energy_a_in_b = mf_embed.kernel(dens["a"]) # get electronic energy for embedded part energy_a_in_b = tot_energy_a_in_b - mf_embed.energy_nuc() # recombined energy with embedded part - results = (init_mf.e_tot - energy_a + energy_a_in_b, ) + results = (init_mf.e_tot - energy_a + energy_a_in_b,) + + # norb_alpha = mf_embed.mo_coeff[0].shape[1] + # norb_beta = mf_embed.mo_coeff[1].shape[1] + # total_orbitals = norb_alpha + norb_beta + # print(f"Total number of orbitals: {total_orbitals}") + print(hcore_a_in_b.shape) # correlated WF methods - if 'mp2' in embed_meth: + if "mp2" in embed_meth: embed_corr = mp.MP2(mf_embed) embed_corr.kernel() results = results + (embed_corr.e_corr,) - elif 'ccsd' in embed_meth or 'ccsd(t)' in embed_meth: + elif "ccsd" in embed_meth or "ccsd(t)" in embed_meth: embed_corr = cc.CCSD(mf_embed) embed_corr.conv_tol = cc_econv embed_corr.conv_tol_normt = cc_tconv embed_corr.kernel() results = results + (embed_corr.emp2,) results = results + (embed_corr.e_corr - embed_corr.emp2,) - if 'ccsd(t)' in embed_meth: + if "ccsd(t)" in embed_meth: results = results + (embed_corr.ccsd_t(),) print("Projector Embedding Complete") diff --git a/build/lib/projectorEmbedding/embed_pyscf_replacements.py b/build/lib/projectorEmbedding/embed_pyscf_replacements.py new file mode 100644 index 0000000..eac4442 --- /dev/null +++ b/build/lib/projectorEmbedding/embed_pyscf_replacements.py @@ -0,0 +1,46 @@ +import numpy as np +from pyscf.lib import logger, NPArrayWithTag + + +def _check_dims_then_einsum(mat, dm): + if mat.ndim == 2 and dm.ndim == 2: + return np.einsum("ij,ji->", mat, dm) + elif mat.ndim == 2 and dm.ndim == 3: + return np.einsum("ij,aji->", mat, dm) + elif mat.ndim == 3 and dm.ndim == 2: + return np.einsum("aij,ji->", mat, dm * 0.5) + elif mat.ndim == 3 and dm.ndim == 3: + return np.einsum("aij,aji->", mat, dm) + else: + raise RuntimeError(f"Unexpected dims: {mat.ndim}, {dm.ndim}") + + +def energy_elec(mf, dm=None, h1e=None, vhf=None): + if dm is None: + dm = mf.make_rdm1() + if h1e is None: + h1e = mf.get_hcore() + if vhf is None or ( + isinstance(vhf, NPArrayWithTag) and getattr(vhf, "ecoul", None) is None + ): + vhf = mf.get_veff(mf.mol, dm) + + e1 = _check_dims_then_einsum(h1e, dm) + + if hasattr(vhf, "ecoul"): + e2 = vhf.ecoul + vhf.exc + + mf.scf_summary["e1"] = e1.real + mf.scf_summary["coul"] = vhf.ecoul.real + mf.scf_summary["exc"] = vhf.exc.real + logger.debug( + mf, "PATCHED E1 = %s Ecoul = %s Exc = %s", e1, vhf.ecoul, vhf.exc + ) + else: + e2 = _check_dims_then_einsum(vhf, dm) * 0.5 + + mf.scf_summary["e1"] = e1.real + mf.scf_summary["e2"] = e2.real + logger.debug(mf, "PATCHED E1 = %s Ecoul = %s", e1, e2.real) + + return (e1 + e2).real, e2 diff --git a/embed_utils.py b/build/lib/projectorEmbedding/embed_utils.py similarity index 66% rename from embed_utils.py rename to build/lib/projectorEmbedding/embed_utils.py index d4b88b8..908e4ee 100644 --- a/embed_utils.py +++ b/build/lib/projectorEmbedding/embed_utils.py @@ -1,9 +1,11 @@ """ Some utility functions """ + from copy import deepcopy import numpy as np + def get_occ_coeffs(coefficients, occupancies): if coefficients.ndim == 3: alpha_coeffs = get_occ_coeffs(coefficients[0], occupancies[0]) @@ -11,12 +13,14 @@ def get_occ_coeffs(coefficients, occupancies): return (alpha_coeffs, beta_coeffs) return coefficients[:, occupancies > 0] + def get_mo_occ_a(c_occ_a, mo_occ): if len(mo_occ.shape) == 2: mo_occ_alpha = get_mo_occ_a(c_occ_a[0], mo_occ[0]) mo_occ_beta = get_mo_occ_a(c_occ_a[1], mo_occ[1]) return (mo_occ_alpha, mo_occ_beta) - return mo_occ[..., mo_occ > 0][..., -c_occ_a.shape[1]:] + return mo_occ[..., mo_occ > 0][..., -c_occ_a.shape[1] :] + def flatten_basis(mol): """Flattens out PySCF's basis set representation""" @@ -34,8 +38,9 @@ def flatten_basis(mol): for contraction in range(len(i_val[1]) - 1): # split individual contractions into seperate lists - new_contractions.append([i_val[0]] \ - + i_nparray[:, [0, contraction + 1]].tolist()) + new_contractions.append( + [i_val[0]] + i_nparray[:, [0, contraction + 1]].tolist() + ) for i_ctr, new_contraction in enumerate(new_contractions): # place the split contractions into the overall structure @@ -46,6 +51,7 @@ def flatten_basis(mol): return flatten_set + def screen_aos(mol, active_atoms, den_mat_a, ovlp, trunc_lambda): """Screen AOs for truncation""" include = [False] * mol.nbas @@ -54,17 +60,22 @@ def screen_aos(mol, active_atoms, den_mat_a, ovlp, trunc_lambda): for shell in range(mol.nbas): aos_in_shell = list(range(mol.ao_loc[shell], mol.ao_loc[shell + 1])) - if mol.bas_atom(shell) not in active_atoms: # shells on active atoms are always kept + if ( + mol.bas_atom(shell) not in active_atoms + ): # shells on active atoms are always kept for ao_i in aos_in_shell: if den_mat_a.ndim == 3: charge = den_mat_a[0, ao_i, ao_i] * ovlp[ao_i, ao_i] - if charge > (trunc_lambda / 2): break + if charge > (trunc_lambda / 2): + break charge = den_mat_a[1, ao_i, ao_i] * ovlp[ao_i, ao_i] - if charge > (trunc_lambda / 2): break + if charge > (trunc_lambda / 2): + break else: charge = den_mat_a[ao_i, ao_i] * ovlp[ao_i, ao_i] - if charge > trunc_lambda: break - else: # if nothing trips the break, these AOs aren't kept and we move on + if charge > trunc_lambda: + break + else: # if nothing trips the break, these AOs aren't kept and we move on continue include[shell] = True @@ -72,27 +83,42 @@ def screen_aos(mol, active_atoms, den_mat_a, ovlp, trunc_lambda): return active_aos, include + def truncate_basis(mol, mask): """Truncate the molecule basis set according to the shell mask""" - print(' Making Truncated Basis Set') + print(" Making Truncated Basis Set") trunc_basis = deepcopy(mol._basis) + trunc_basis1 = deepcopy(mol._basis) + # print(trunc_basis) for i_atom in range(mol.natm): symbol = mol.atom_symbol(i_atom) shell_ids = mol.atom_shell_ids(i_atom) - + # print(symbol, shell_ids, mask ) # keep only the AOs in shells that were not screened - trunc_basis[symbol] = \ - [trunc_basis[symbol][i] for i, shell in enumerate(shell_ids) if mask[shell]] + + filtered = [] + # print(symbol,trunc_basis1[symbol],"Sahil") + for i, shell in enumerate(shell_ids): + # print(i,shell,trunc_basis[symbol][i]) + if mask[shell]: + # print(i,trunc_basis[symbol][i]) + filtered.append(trunc_basis[symbol][i]) + trunc_basis1[symbol] = filtered + + # trunc_basis[symbol] = \ + # [trunc_basis[symbol][i] for i, shell in enumerate(shell_ids) if mask[shell]] print(symbol, shell_ids, [mask[shell] for shell in shell_ids]) - if trunc_basis[symbol] == []: # if all AOs on an atom are gone, remove it - del trunc_basis[symbol] + if trunc_basis1[symbol] == []: # if all AOs on an atom are gone, remove it + del trunc_basis1[symbol] + + # print(trunc_basis1) + return trunc_basis1 - return trunc_basis def purify(matrix, overlap, rtol=1e-5, atol=1e-8, max_iter=15): """McWeeny Purification of Density Matrix""" - print('Begin Purification') + print("Begin Purification") if matrix.ndim == 3: matrix_alpha = purify(matrix[0], overlap, rtol, atol, max_iter) @@ -102,19 +128,20 @@ def purify(matrix, overlap, rtol=1e-5, atol=1e-8, max_iter=15): i = 0 density = matrix @ overlap - omega = np.trace(np.linalg.matrix_power(density, 2) - density)**2 - print(i, 'Omega = ', omega) + omega = np.trace(np.linalg.matrix_power(density, 2) - density) ** 2 + print(i, "Omega = ", omega) while (i < max_iter) and not np.allclose(omega, 0.0, rtol=rtol, atol=atol): i += 1 - matrix = 3 * (matrix @ overlap @ matrix) \ - - 2 * (matrix @ overlap @ matrix @ overlap @ matrix) + matrix = 3 * (matrix @ overlap @ matrix) - 2 * ( + matrix @ overlap @ matrix @ overlap @ matrix + ) density = matrix @ overlap - omega = np.trace(np.linalg.matrix_power(density, 2) - density)**2 - print(i, 'Omega = ', omega) + omega = np.trace(np.linalg.matrix_power(density, 2) - density) ** 2 + print(i, "Omega = ", omega) if i < max_iter: - print('Purification Completed\n') + print("Purification Completed\n") else: print("Max Iterations hit\n") diff --git a/embed_pyscf_replacements.py b/embed_pyscf_replacements.py deleted file mode 100644 index d1cfb0d..0000000 --- a/embed_pyscf_replacements.py +++ /dev/null @@ -1,40 +0,0 @@ -import numpy as np -from pyscf.lib import logger, NPArrayWithTag - -def _check_dims_then_einsum(mat, dm): - if mat.ndim == 2 and dm.ndim == 2: - return np.einsum('ij,ji->', mat, dm) - elif mat.ndim == 2 and dm.ndim == 3: - return np.einsum('ij,aji->', mat, dm) - elif mat.ndim == 3 and dm.ndim == 2: - return np.einsum('aij,ji->', mat, dm * 0.5) - elif mat.ndim == 3 and dm.ndim == 3: - return np.einsum('aij,aji->', mat, dm) - else: - raise RuntimeError(f"Unexpected dims: {mat.ndim}, {dm.ndim}") - - -def energy_elec(mf, dm=None, h1e=None, vhf=None): - if dm is None: dm = mf.make_rdm1() - if h1e is None: h1e = mf.get_hcore() - if vhf is None or (isinstance(vhf, NPArrayWithTag) and getattr(vhf, 'ecoul', None) is None): - vhf = mf.get_veff(mf.mol, dm) - - e1 = _check_dims_then_einsum(h1e, dm) - - if hasattr(vhf, 'ecoul'): - e2 = vhf.ecoul + vhf.exc - - mf.scf_summary['e1'] = e1.real - mf.scf_summary['coul'] = vhf.ecoul.real - mf.scf_summary['exc'] = vhf.exc.real - logger.debug(mf, 'PATCHED E1 = %s Ecoul = %s Exc = %s', e1, vhf.ecoul, vhf.exc) - else: - e2 = _check_dims_then_einsum(vhf, dm) * 0.5 - - mf.scf_summary['e1'] = e1.real - mf.scf_summary['e2'] = e2.real - logger.debug(mf, 'PATCHED E1 = %s Ecoul = %s', e1, e2.real) - - return (e1+e2).real, e2 - diff --git a/projectorEmbedding.egg-info/PKG-INFO b/projectorEmbedding.egg-info/PKG-INFO new file mode 100644 index 0000000..2205489 --- /dev/null +++ b/projectorEmbedding.egg-info/PKG-INFO @@ -0,0 +1,14 @@ +Metadata-Version: 2.1 +Name: projectorEmbedding +Version: 0.1.0 +Summary: Add your description here +Requires-Python: <3.9,>=3.8 +Description-Content-Type: text/markdown +License-File: LICENSE +Requires-Dist: pyscf>=2.10.0 + +PythonProjectorEmbedding +=== + +A Python implementation of the Projector-based Embedding scheme. +Requires [PySCF](https://pyscf.org/) diff --git a/projectorEmbedding.egg-info/SOURCES.txt b/projectorEmbedding.egg-info/SOURCES.txt new file mode 100644 index 0000000..1b238b0 --- /dev/null +++ b/projectorEmbedding.egg-info/SOURCES.txt @@ -0,0 +1,14 @@ +LICENSE +README.md +pyproject.toml +projectorEmbedding/__init__.py +projectorEmbedding/concentric_localization.py +projectorEmbedding/embed_partition.py +projectorEmbedding/embed_proc.py +projectorEmbedding/embed_pyscf_replacements.py +projectorEmbedding/embed_utils.py +projectorEmbedding.egg-info/PKG-INFO +projectorEmbedding.egg-info/SOURCES.txt +projectorEmbedding.egg-info/dependency_links.txt +projectorEmbedding.egg-info/requires.txt +projectorEmbedding.egg-info/top_level.txt \ No newline at end of file diff --git a/projectorEmbedding.egg-info/dependency_links.txt b/projectorEmbedding.egg-info/dependency_links.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/projectorEmbedding.egg-info/dependency_links.txt @@ -0,0 +1 @@ + diff --git a/projectorEmbedding.egg-info/requires.txt b/projectorEmbedding.egg-info/requires.txt new file mode 100644 index 0000000..4cda8f8 --- /dev/null +++ b/projectorEmbedding.egg-info/requires.txt @@ -0,0 +1 @@ +pyscf>=2.10.0 diff --git a/projectorEmbedding.egg-info/top_level.txt b/projectorEmbedding.egg-info/top_level.txt new file mode 100644 index 0000000..d52e07c --- /dev/null +++ b/projectorEmbedding.egg-info/top_level.txt @@ -0,0 +1 @@ +projectorEmbedding diff --git a/projectorEmbedding/__init__.py b/projectorEmbedding/__init__.py new file mode 100644 index 0000000..9e78513 --- /dev/null +++ b/projectorEmbedding/__init__.py @@ -0,0 +1,17 @@ +"""__init__.py""" + +from projectorEmbedding.embed_utils import get_occ_coeffs +from projectorEmbedding.embed_utils import get_mo_occ_a +from projectorEmbedding.embed_utils import flatten_basis +from projectorEmbedding.embed_utils import purify +from projectorEmbedding.embed_utils import screen_aos +from projectorEmbedding.embed_utils import truncate_basis + +from projectorEmbedding.embed_partition import mulliken_partition +from projectorEmbedding.embed_partition import occupancy_partition +from projectorEmbedding.embed_partition import spade_partition +from projectorEmbedding.embed_partition import single_atom_mulliken_partition + +from projectorEmbedding.embed_proc import embedding_procedure + +from projectorEmbedding.embed_pyscf_replacements import energy_elec diff --git a/projectorEmbedding/concentric_localization.py b/projectorEmbedding/concentric_localization.py new file mode 100644 index 0000000..8b65151 --- /dev/null +++ b/projectorEmbedding/concentric_localization.py @@ -0,0 +1,270 @@ +"""Concentric Localization of virtual orbitals.""" + +import logging + +import numpy as np +from numpy.typing import NDArray +from pyscf import gto, scf # type:ignore + + +class ConcentricLocalizer(): + """Class to localize virtual orbitals using concentric localization. + + Attributes: + max_shells (int): Maximum number of shells to localize. + _n_active_atoms (int): Number of active atoms in the system. + projected_overlap (np.ndarray): Projected overlap matrix. + overlap_two_basis (np.ndarray): Overlap matrix between two basis sets. + n_act_proj_aos (int): Number of active projected atomic orbitals. + shells (list): List of shell sizes. + singular_values (list): List of singular values from SVD. + + Methods: + localize_virtual(scf.hf.SCF): Localize virtual orbitals using concentric localization. + _localize_virtual_spin(np.ndarray, np.ndarray, np.ndarray): Run concentric localization for each spin separately. + """ + + def __init__( + self, + embedded_scf: scf.hf.SCF, + active_atoms: list, + max_shells: int = 4, + ): + """Initialize Concentric Localization object. + + Args: + embedded_scf (scf.hf.SCF): SCF object with occupied orbitals localized. + n_active_atoms (int): Number of active atoms in the system. + max_shells (int): Maximum number of shells to localize. + """ + self.active_atoms = active_atoms + self._n_active_atoms = len(active_atoms) + self.embedded_scf = embedded_scf + self.max_shells = max_shells + self.projected_overlap: NDArray[np.floating] + self.overlap_two_basis: NDArray[np.floating] + self.n_act_proj_aos: NDArray[np.floating] + self.shells: list[int] | list[list[int]] + self.singular_values: list[list[int]] | tuple[list[list[int]], list[list[int]]] + + def localize_virtual(self) -> scf.hf.SCF: + """Localise virtual (unoccupied) obitals using concentric localization. + + [1] D. Claudino and N. J. Mayhall, "Simple and Efficient Truncation of Virtual + Spaces in Embedded Wave Functions via Concentric Localization", Journal of Chemical + Theory and Computation, vol. 15, no. 11, pp. 6085-6096, Nov. 2019, + doi: 10.1021/ACS.JCTC.9B00682. + + Returns: + scf.hf.SCF: Fully Localized SCF object. + """ + print("Localising virtual orbital spin with concentric localization.") + + print("Creating projected molecule object.") + embedded_scf = self.embedded_scf + print(f"{embedded_scf.mol.atom=}") + print(f"{embedded_scf.mol.charge=}") + print(f"{embedded_scf.mol.spin=}") + + projected_mol = gto.mole.Mole() + projected_mol.atom = embedded_scf.mol.atom + projected_mol.nelec = embedded_scf.mol.nelec + projected_mol.basis = embedded_scf.mol.basis # can be anything + projected_mol.charge = embedded_scf.mol.charge + projected_mol.spin = embedded_scf.mol.spin + projected_mol.build() + projected_mf = scf.UKS(projected_mol) + print(f"{self.active_atoms=}") + n_act_proj_aos = projected_mol.aoslice_by_atom()[self.active_atoms[-1]][-1] + print(f"{n_act_proj_aos=}") + + self.projected_overlap = projected_mf.get_ovlp(embedded_scf.mol)[ + :n_act_proj_aos, :n_act_proj_aos + ] + self.overlap_two_basis = gto.intor_cross( + "int1e_ovlp_sph", embedded_scf.mol, projected_mol + )[:n_act_proj_aos, :] + self.n_act_proj_aos = n_act_proj_aos + + spinless = embedded_scf.mo_coeff.ndim == 2 # type: ignore + + if spinless: + localised_virts = self._localize_virtual_spin( + embedded_scf.mo_occ, # type: ignore + embedded_scf.mo_coeff, # type: ignore + embedded_scf.get_fock(), + ) + embedded_scf.mo_coeff = localised_virts[0] # type:ignore + self.shells = list(localised_virts[1]) + self.singular_values = localised_virts[2] + else: + localised_virts_alpha = self._localize_virtual_spin( + embedded_scf.mo_occ[0], # type: ignore + embedded_scf.mo_coeff[0], # type: ignore + embedded_scf.get_fock()[0], + ) + localised_virts_beta = self._localize_virtual_spin( + embedded_scf.mo_occ[1], # type: ignore + embedded_scf.mo_coeff[1], # type: ignore + embedded_scf.get_fock()[1], + ) + embedded_scf.mo_coeff = np.array( + [localised_virts_alpha[0], localised_virts_beta[0]] + ) # type: ignore + + self.shells = [ + list(localised_virts_alpha[1]), + list(localised_virts_beta[1]), + ] + self.singular_values = ( + localised_virts_alpha[2], + localised_virts_beta[2], + ) + + print("Completed Concentric Localization.") + print(f"{self.shells=}") + print(f"{self.singular_values=}") + return embedded_scf + + def _localize_virtual_spin( + self, occ: np.ndarray, mo_coeff: np.ndarray, fock_operator: np.ndarray + ): + """Run concentric localization for each spin separately. + + NOTE: These cant be done together as the number of occupied orbitals may be different between the two spins. + + Args: + occ (np.ndarry): MO occupancy + mo_coeff (np.ndarry): MO coefficient matrix + fock_operator (np.ndarray): Fock operator for one spin + + Returns: + np.ndarray: The update MO coefficient matrix + """ + print("Running concentric localiztion for single spin.") + print(f"{occ=}") + print(f"{mo_coeff.shape=}") + print(f"{fock_operator.shape=}") + + effective_virt = mo_coeff[:, occ == 0] + print(f"N effective virtuals: {effective_virt.shape}") + + left = ( + np.linalg.inv(self.projected_overlap) + @ self.overlap_two_basis + @ effective_virt + ) + _, sigma, right_vectors = np.linalg.svd( + np.swapaxes(left, -1, -2) @ self.overlap_two_basis @ effective_virt + ) + print(f"Singular values: {sigma}") + + # record singular values for analysis + singular_values: list[list[int]] = [] + singular_values.append(list(sigma)) + + c_total = mo_coeff[:, occ > 0] + + print(f"Initial {c_total.shape=} (nocc)") + print(f"{self.n_act_proj_aos=}") + shell_size = np.sum(sigma[: self.n_act_proj_aos] >= 1e-15) + print(f"{shell_size=}") + + right_vectors = np.swapaxes(right_vectors, -1, -2) + # v_span, v_ker = np.split( + # right_vectors, [shell_size], axis=-1 + # ) # 0 but instability + v_span = right_vectors[..., :shell_size] + v_ker = right_vectors[..., shell_size:] + + print(f"{v_span.shape=}") + print(f"{v_ker.shape=}") + + c_ispan = effective_virt @ v_span + c_iker = effective_virt @ v_ker + + c_total = np.concatenate((c_total, c_ispan), axis=-1) + + # keep track of the number of orbitals in each shell + shells = [] + shells.append(c_total.shape[-1]) + print("Created 0th shell.") + + if v_ker.shape[-1] == 0: + print("No kernel for 0th shell, cannot perform CL.") + print( + "This is expected for molecules with majority active MOs occupied." + ) + elif v_ker.shape[-1] == 1: + print( + "Kernel is 1 for 0th shell, ending CL as cannot perform SVD of vector." + ) + c_total = np.concatenate((c_total, c_iker), axis=-1) + shells.append(c_total.shape[-1]) + else: + # why use the overlap for the first shell and then the fock for the rest? + for ishell in range(0, self.max_shells): + print("Beginning Concentric Localization Iteration") + print(f"Shell {ishell}.") + + print( + f"{c_total.shape=}, {fock_operator.shape=}, {c_iker.shape=}" + ) + _, sigma, right_vectors = np.linalg.svd( + np.swapaxes(c_total, -1, -2) @ fock_operator @ c_iker + ) + print(f"Singular values: {sigma}") + singular_values.append(list(sigma)) + print(f"{right_vectors.shape=}") + + shell_size = np.sum(sigma[: self.n_act_proj_aos] >= 1e-15) + print(f"{shell_size=}") + if shell_size == 0: + print("Empty shell %s, ending CL.", ishell) + c_total = np.concatenate((c_total, c_iker), axis=-1) + break + + right_vectors = np.swapaxes(right_vectors, -1, -2) + # v_span, v_ker = np.split( + # right_vectors, [shell_size], axis=-1 + # ) # 0 but instability + v_span = right_vectors[..., :shell_size] + v_ker = right_vectors[..., shell_size:] + + print(f"{v_span.shape=}") + print(f"{v_ker.shape=}") + + # span must be done first as both need to use old c_iker + c_ispan = c_iker @ v_span + c_total = np.concatenate((c_total, c_ispan), axis=-1) + shells.append(c_total.shape[-1]) + + if v_ker.shape[-1] > 1: + print("Kernel dimension is greater than 1, continuing CL.") + # in-place update + c_iker = c_iker @ v_ker + elif v_ker.shape[-1] == 1: + c_iker = c_iker @ v_ker + print( + "Kernel is 1, ending CL as cannot perform SVD of vector.", + ) + c_total = np.concatenate((c_total, c_iker), axis=-1) + shells.append(c_total.shape[-1]) + break + else: + print( + "Ending Concentric Localization - All virtual MOs localized." + ) + break + + if ishell >= self.max_shells: + print("Max shells reached, not localizing further virtuals.") + c_total = np.concatenate((c_total, c_iker), axis=-1) + shells.append(c_total.shape[-1]) + break + + print(f"Shell indices: {shells}") + + print(f"{c_total, shells, singular_values}") + + return c_total, np.array(shells, dtype=np.uint), singular_values \ No newline at end of file diff --git a/projectorEmbedding/embed_partition.py b/projectorEmbedding/embed_partition.py new file mode 100644 index 0000000..467525b --- /dev/null +++ b/projectorEmbedding/embed_partition.py @@ -0,0 +1,265 @@ +""" +Functions to partition the density +""" + +import numpy as np +from math import ceil +from math import floor +from pyscf import lo +from scipy.linalg import fractional_matrix_power +from projectorEmbedding.embed_utils import get_occ_coeffs + + +def mulliken_partition(charge_threshold=0.4, localize=True): + """Splits the MOs into active and frozen parts based on charge threshold.""" + + def internal(pyscf_mf, active_atoms=None, c_occ=None): + # if occupied coeffs aren't provided, get the ones from the mean field results. + if c_occ is None: + c_occ = get_occ_coeffs(pyscf_mf.mo_coeff, pyscf_mf.mo_occ) + + if isinstance(c_occ, tuple): + alpha_active, alpha_inactive = internal( + pyscf_mf, active_atoms, c_occ=c_occ[0] + ) + beta_active, beta_inactive = internal( + pyscf_mf, active_atoms, c_occ=c_occ[1] + ) + return (alpha_active, beta_active), (alpha_inactive, beta_inactive) + + mo_occ = pyscf_mf.mo_occ + if len(mo_occ) == 2: + mo_occ = mo_occ[0] + + offset_ao_by_atom = pyscf_mf.mol.offset_ao_by_atom() + overlap = pyscf_mf.get_ovlp() + + # localize orbitals + if internal.localize: + print("Localize = True") + c_occ = lo.PM(pyscf_mf.mol, c_occ).kernel() + # for each mo, go through active atoms and check the charge on that atom. + # if charge on active atom is greater than threshold, mo added to active list. + active_mos = [] + if active_atoms == []: # default case for NO active atoms + print("Active atoms = True") + return c_occ[:, []], c_occ[:, :] + if active_atoms is None: + print("Active None = True") + return c_occ[:, :], c_occ[:, []] + + # print(c_occ.shape[1],"Shape, Sahil") + for mo_i in range(c_occ.shape[1]): + rdm_mo = np.dot(c_occ[:, [mo_i]] * mo_occ[mo_i], c_occ[:, [mo_i]].conj().T) + + for atom in active_atoms: + offset = offset_ao_by_atom[atom, 2] + extent = offset_ao_by_atom[atom, 3] + # print(offset,extent,"offset") + ao_indices = np.arange(offset, offset + extent) + overlap_atom = overlap[np.ix_(ao_indices, ao_indices)] + rdm_mo_atom = rdm_mo[np.ix_(ao_indices, ao_indices)] + + # print(overlap_atom) + # print(rdm_mo_atom) + q_atom_mo = np.einsum("ij,ij->", rdm_mo_atom, overlap_atom) + # print(q_atom_mo) + + if q_atom_mo > (internal.charge_threshold * (mo_occ[mo_i] / 2)): + # print("charge command is working", q_atom_mo ,internal.charge_threshold* (mo_occ[mo_i] / 2)) + active_mos.append(mo_i) + break + + # all mos not active are frozen + frozen_mos = [i for i in range(c_occ.shape[1]) if i not in active_mos] + # print(c_occ.shape) + + return c_occ[:, active_mos], c_occ[:, frozen_mos] + + internal.charge_threshold = charge_threshold + internal.localize = localize + + return internal + + +def occupancy_partition(occupancy_threshold=0.6, localize=True): + """Splits the MOs into active and frozen parts based on occupancy threshold.""" + + def internal(pyscf_mf, active_atoms=None, c_occ=None): + # Handle orbital coefficients + if c_occ is None: + c_occ = get_occ_coeffs(pyscf_mf.mo_coeff, pyscf_mf.mo_occ) + + if isinstance(c_occ, tuple): + alpha_active, alpha_inactive = internal( + pyscf_mf, active_atoms, c_occ=c_occ[0] + ) + beta_active, beta_inactive = internal( + pyscf_mf, active_atoms, c_occ=c_occ[1] + ) + return (alpha_active, beta_active), (alpha_inactive, beta_inactive) + + if internal.localize: + c_occ = lo.PM(pyscf_mf.mol, c_occ).kernel() + overlap = pyscf_mf.get_ovlp() + + # Handle active atoms + if active_atoms == []: # default case for NO active atoms + return c_occ[:, []], c_occ[:, :] + if active_atoms is None: + return c_occ[:, :], c_occ[:, []] + + # Find AOs on active atoms + offset_ao_by_atom = pyscf_mf.mol.offset_ao_by_atom() + print(offset_ao_by_atom) + active_aos = [] + for atom in active_atoms: + active_aos += list( + range(offset_ao_by_atom[atom, 2], offset_ao_by_atom[atom, 3]) + ) + print(active_aos) + mesh = np.ix_(active_aos, active_aos) + + # Find MO occupancies in active AOs and sort accordingly + active_mos = [] + frozen_mos = [] + + print(c_occ.shape[1]) + print(mesh) + + for mo_i in range(c_occ.shape[1]): + rdm_mo = np.dot(c_occ[:, [mo_i]], c_occ[:, [mo_i]].conj().T) + dm_mo = rdm_mo @ overlap + print(np.trace(dm_mo[mesh])) + if np.trace(dm_mo[mesh]) > internal.occupancy_threshold: + active_mos.append(mo_i) + else: + frozen_mos.append(mo_i) + + return c_occ[:, active_mos], c_occ[:, frozen_mos] + + internal.occupancy_threshold = occupancy_threshold + internal.localize = localize + + return internal + + +def spade_partition(): + def internal(pyscf_mf, active_atoms=None, c_occ=None, n_act_mos=None): + """SPADE partitioning scheme""" + if c_occ is None: + c_occ = get_occ_coeffs(pyscf_mf.mo_coeff, pyscf_mf.mo_occ) + + if isinstance(c_occ, tuple): + if n_act_mos is None: + n_act_mos_a = n_act_mos_b = None + else: + n_act_mos_a, n_act_mos_b = n_act_mos + alpha_active, alpha_inactive = internal( + pyscf_mf, active_atoms, c_occ=c_occ[0], n_act_mos=n_act_mos_a + ) + beta_active, beta_inactive = internal( + pyscf_mf, active_atoms, c_occ=c_occ[1], n_act_mos=n_act_mos_b + ) + return (alpha_active, beta_active), (alpha_inactive, beta_inactive) + + offset_ao_by_atom = pyscf_mf.mol.offset_ao_by_atom() + overlap = pyscf_mf.get_ovlp() + + # for each mo, go through active atoms and check the charge on that atom. + # if charge on active atom is greater than threshold, mo added to active list. + if active_atoms == []: # default case for NO active atoms + return c_occ[:, []], c_occ[:, :] + if active_atoms is None: + return c_occ[:, :], c_occ[:, []] + + # Find AOs on active atoms + active_aos = [] + for atom in active_atoms: + active_aos += list( + range(offset_ao_by_atom[atom, 2], offset_ao_by_atom[atom, 3]) + ) + + # Convert to orthogonal AOs and SVD submatrix + overlap_sqrt = fractional_matrix_power(overlap, 0.5) + c_orthogonal_ao = (overlap_sqrt @ c_occ)[active_aos, :] + _, s_vals, v_vecs = np.linalg.svd(c_orthogonal_ao, full_matrices=True) + + # Identify partitioning split + if len(s_vals) == 1: + n_act_mos = 1 + else: + if not n_act_mos: + if len(s_vals) != v_vecs.shape[0]: + s_vals = np.append(s_vals, [0.0]) + deltas = [-(s_vals[i + 1] - s_vals[i]) for i in range(len(s_vals) - 1)] + n_act_mos = np.argpartition(deltas, -1)[-1] + 1 + + # Make SPADE orbitals + c_a = c_occ @ v_vecs.T[:, :n_act_mos] + c_b = c_occ @ v_vecs.T[:, n_act_mos:] + + return c_a, c_b + + return internal + + +def single_atom_mulliken_partition( + pyscf_mf, active_atoms=None, c_occ=None, n_act_mos=None, localize=True +): + # if occupied coeffs aren't provided, get the ones from the mean field results. + if len(active_atoms) > 1: + raise Exception("This partition isn't intended for more than one active atom.") + + if c_occ is None: + c_occ = get_occ_coeffs(pyscf_mf.mo_coeff, pyscf_mf.mo_occ) + + if isinstance(c_occ, tuple): + n_act_mos_a, n_act_mos_b = n_act_mos + alpha_active, alpha_inactive = single_atom_mulliken_partition( + pyscf_mf, active_atoms, c_occ=c_occ[0], n_act_mos=n_act_mos_a + ) + beta_active, beta_inactive = single_atom_mulliken_partition( + pyscf_mf, active_atoms, c_occ=c_occ[1], n_act_mos=n_act_mos_b + ) + return (alpha_active, beta_active), (alpha_inactive, beta_inactive) + + mo_occ = pyscf_mf.mo_occ + if len(mo_occ) == 2: + mo_occ = mo_occ[0] + + offset_ao_by_atom = pyscf_mf.mol.offset_ao_by_atom() + overlap = pyscf_mf.get_ovlp() + + # localize orbitals + if localize: + c_occ = lo.PM(pyscf_mf.mol, c_occ).kernel() + + # for each mo, go through active atoms and check the charge on that atom. + # if charge on active atom is greater than threshold, mo added to active list. + if active_atoms == []: # default case for NO active atoms + return c_occ[:, []], c_occ[:, :] + if active_atoms is None: + return c_occ[:, :], c_occ[:, []] + + charges = [] + for mo_i in range(c_occ.shape[1]): + rdm_mo = np.dot(c_occ[:, [mo_i]] * mo_occ[mo_i], c_occ[:, [mo_i]].conj().T) + + atom = active_atoms[0] + offset = offset_ao_by_atom[atom, 2] + extent = offset_ao_by_atom[atom, 3] + + overlap_atom = overlap[:, offset:extent] + rdm_mo_atom = rdm_mo[:, offset:extent] + + charges.append(np.einsum("ij,ij->", rdm_mo_atom, overlap_atom)) + + active_mos = sorted( + [i for i in range(len(charges))], key=lambda x: charges[x], reverse=True + )[:n_act_mos] + + # all mos not active are frozen + frozen_mos = [i for i in range(c_occ.shape[1]) if i not in active_mos] + + return c_occ[:, active_mos], c_occ[:, frozen_mos] diff --git a/projectorEmbedding/embed_proc.py b/projectorEmbedding/embed_proc.py new file mode 100644 index 0000000..f777d57 --- /dev/null +++ b/projectorEmbedding/embed_proc.py @@ -0,0 +1,232 @@ +""" +Perform projector based embedding +""" + +import numpy as np +import projectorEmbedding +from pyscf import scf, dft, mp, cc, df +from projectorEmbedding.embed_utils import get_occ_coeffs +from projectorEmbedding.embed_utils import get_mo_occ_a +from projectorEmbedding.embed_utils import flatten_basis +from projectorEmbedding.embed_utils import purify +from projectorEmbedding.embed_utils import screen_aos +from projectorEmbedding.embed_utils import truncate_basis +from projectorEmbedding.embed_partition import mulliken_partition as pmm +from projectorEmbedding.embed_partition import spade_partition as spade +from projectorEmbedding.embed_pyscf_replacements import energy_elec +from projectorEmbedding.concentric_localization import ConcentricLocalizer + +def embedding_procedure( + init_mf, + active_atoms=None, + embed_meth=None, + mu_val=10**6, + trunc_lambda=None, + distribute_mos=pmm(), + diis_space=8, + max_cycle=50, + chk_file=None, + chk_start=None, + cc_econv=1e-07, + cc_tconv=1e-06, +): + """ + Manby-like embedding procedure. + + Parameters: + init_mf: Full system background calculation. + Must be a HF or DFT object. + Restricted open-shell not supported. + active_atoms: List of atom numbers specifying active atoms. + embed_meth: String specifying embedded level of theory. + Can be "HF", "MP2", "CCSD", "CCSD(T)", or a density functional. + Prepend "U" to WFT methods to specify unresticted for closed-shelled systems. + Prepend "UKS-" to DFT methods for the same. + mu_val: Value of level-shift. Uses Huzinaga projection if set to None. + trunc_lambda: Float charge threshold for AO truncation screening. + distribute_mos: Function used to partition the density. + + Returns: + results: A tuple containing the total embedded energy. + """ + print("Start Projector Embedding") + print(active_atoms) + + # restricted open-shell not supported + if isinstance(init_mf, scf.rohf.ROHF) or isinstance(init_mf, dft.roks.ROKS): + raise RuntimeError("Restricted open-shell methods not supported") + + # unresticted or restricted initial method + init_is_unrestricted = isinstance(init_mf, scf.uhf.UHF) or isinstance( + init_mf, dft.uks.UKS + ) + + # initial information + mol = init_mf.mol.copy() + ovlp = init_mf.get_ovlp() + c_occ = get_occ_coeffs(init_mf.mo_coeff, init_mf.mo_occ) + + # get active mos + print("Partitioning MOs") + c_occ_a, _ = distribute_mos(init_mf, active_atoms=active_atoms, c_occ=c_occ) + # print(c_occ_a[0].shape) + if init_is_unrestricted: + print(f"Number of active MOs: {c_occ_a[0].shape[1]}, {c_occ_a[1].shape[1]}") + else: + print(f"Number of active MOs: {c_occ_a.shape[1]}") + + # get active occupancies + mo_occ_active = get_mo_occ_a(c_occ_a, init_mf.mo_occ) + + # make full and subsystem densities + dens = {} + dens["ab"] = init_mf.make_rdm1() + dens["a"] = init_mf.make_rdm1(c_occ_a, mo_occ_active) + dens["b"] = dens["ab"] - dens["a"] + + # build embedding potential + f_ab = init_mf.get_fock() + v_a = init_mf.get_veff(dm=dens["a"]) + hcore_a_in_b = f_ab - v_a + if mu_val is None: + # Huzinaga Projection + matrix_sum = f_ab @ dens["b"] @ ovlp + coeff = 1.0 if dens["b"].ndim == 3 else 0.5 + hcore_a_in_b -= coeff * (matrix_sum + matrix_sum.swapaxes(-1, -2)) + else: + # Level-shift projection + hcore_a_in_b += mu_val * (ovlp @ dens["b"] @ ovlp) + + # get electronic energy for A + energy_a, _ = energy_elec(init_mf, dm=dens["a"], vhf=v_a, h1e=hcore_a_in_b) + + # set new number of electrons + if init_is_unrestricted: + mol.nelectron = int(sum(mo_occ_active[0]) + sum(mo_occ_active[1])) + else: + mol.nelectron = int(sum(mo_occ_active)) + + if trunc_lambda: + # AO truncation + print("Truncating AO Space") + + # alter basis set to facilitate screening + print(" Flattening Basis Set") + mol.build(basis=flatten_basis(mol)) + + # screen basis sets for truncation + active_aos, include = screen_aos( + mol, active_atoms, dens["a"], ovlp, trunc_lambda + ) + print("Active AOs:", len(active_aos), "/", mol.nao) + + if len(active_aos) != mol.nao: + # make truncated basis set + mol.build(dump_input=True, basis=truncate_basis(mol, include)) + + # make appropiate mean field object with new molecule + if hasattr(init_mf, "xc"): + tinit_mf = dft.UKS(mol) if init_is_unrestricted else dft.RKS(mol) + tinit_mf.xc = init_mf.xc + else: + tinit_mf = dft.UHF(mol) if init_is_unrestricted else scf.RHF(mol) + if hasattr(init_mf, "with_df"): + tinit_mf = df.density_fit(tinit_mf) + tinit_mf.with_df.auxbasis = init_mf.with_df.auxbasis + + # make truncated tensors + mesh3d = np.ix_([0, 1], active_aos, active_aos) + mesh2d = np.ix_(active_aos, active_aos) + masked = lambda mat: mat[mesh3d] if mat.ndim == 3 else mat[mesh2d] + + hcore_a_in_b = masked(hcore_a_in_b) + factor = 1 if init_is_unrestricted else 2 + pure_d_a = factor * purify(masked(dens["a"]) / factor, masked(ovlp)) + + # truncated initial method (self embedded) + tinit_mf.get_hcore = lambda *args: hcore_a_in_b + tinit_mf.energy_elec = energy_elec.__get__(tinit_mf, type(tinit_mf)) + if np.isnan(pure_d_a).any(): + # Failsafe on purify + tinit_mf.kernel(masked(dens["a"])) + else: + tinit_mf.kernel(pure_d_a) + + # overwrite previous values + dens["a"] = tinit_mf.make_rdm1() + v_a = tinit_mf.get_veff(dm=dens["a"]) + energy_a, _ = energy_elec(init_mf, dm=dens["a"], vhf=v_a, h1e=hcore_a_in_b) + else: + print("No AOs truncated") + + print("Calculating A-in-B") + + # wavefunction method options + general_options = ("hf", "mp2", "ccsd", "ccsd(t)") + unrestricted = tuple("u" + opt for opt in general_options) + embed_meth = embed_meth.lower() + + # make embedding mean field object + if embed_meth in general_options + unrestricted: + if init_is_unrestricted or embed_meth in unrestricted: + mf_embed = scf.UHF(mol) + else: + mf_embed = scf.RHF(mol) + else: # assume anything else is just a functional name + if "uks-" in embed_meth: # deal with specification of unrestricted + embed_meth = embed_meth.replace("uks-", "") + init_is_unrestricted = True + if init_is_unrestricted: + mf_embed = dft.UKS(mol) + else: + mf_embed = dft.RKS(mol) + mf_embed.xc = embed_meth + if hasattr(init_mf, "with_df"): + mf_embed = df.density_fit(mf_embed) + mf_embed.with_df.auxbasis = init_mf.with_df.auxbasis + mf_embed.diis_space = diis_space + mf_embed.chkfile = chk_file + mf_embed.max_cycle = max_cycle + mf_embed.get_hcore = lambda *args: hcore_a_in_b + mf_embed.energy_elec = energy_elec.__get__(mf_embed, type(mf_embed)) + + # run embedded SCF + if chk_start: + init_dm = mf_embed.from_chk(chk_start) + tot_energy_a_in_b = mf_embed.kernel(init_dm) + else: + tot_energy_a_in_b = mf_embed.kernel(dens["a"]) + + cl = ConcentricLocalizer(mf_embed, active_atoms=active_atoms) + mf_embed = cl.localize_virtual() + + # get electronic energy for embedded part + energy_a_in_b = tot_energy_a_in_b - mf_embed.energy_nuc() + print("Embedded region energy: ", energy_a_in_b) + + # recombined energy with embedded part + results = (init_mf.e_tot - energy_a + energy_a_in_b,) + + # norb_alpha = mf_embed.mo_coeff[0].shape[1] + # norb_beta = mf_embed.mo_coeff[1].shape[1] + # total_orbitals = norb_alpha + norb_beta + + # print(f"Total number of orbitals: {total_orbitals}") + print(hcore_a_in_b.shape) + # correlated WF methods + if "mp2" in embed_meth: + embed_corr = mp.MP2(mf_embed) + embed_corr.kernel() + results = results + (embed_corr.e_corr,) + elif "ccsd" in embed_meth or "ccsd(t)" in embed_meth: + embed_corr = cc.CCSD(mf_embed) + embed_corr.conv_tol = cc_econv + embed_corr.conv_tol_normt = cc_tconv + embed_corr.kernel() + results = results + (embed_corr.emp2,) + results = results + (embed_corr.e_corr - embed_corr.emp2,) + if "ccsd(t)" in embed_meth: + results = results + (embed_corr.ccsd_t(),) + + print("Projector Embedding Complete") + return results, mf_embed diff --git a/projectorEmbedding/embed_pyscf_replacements.py b/projectorEmbedding/embed_pyscf_replacements.py new file mode 100644 index 0000000..eac4442 --- /dev/null +++ b/projectorEmbedding/embed_pyscf_replacements.py @@ -0,0 +1,46 @@ +import numpy as np +from pyscf.lib import logger, NPArrayWithTag + + +def _check_dims_then_einsum(mat, dm): + if mat.ndim == 2 and dm.ndim == 2: + return np.einsum("ij,ji->", mat, dm) + elif mat.ndim == 2 and dm.ndim == 3: + return np.einsum("ij,aji->", mat, dm) + elif mat.ndim == 3 and dm.ndim == 2: + return np.einsum("aij,ji->", mat, dm * 0.5) + elif mat.ndim == 3 and dm.ndim == 3: + return np.einsum("aij,aji->", mat, dm) + else: + raise RuntimeError(f"Unexpected dims: {mat.ndim}, {dm.ndim}") + + +def energy_elec(mf, dm=None, h1e=None, vhf=None): + if dm is None: + dm = mf.make_rdm1() + if h1e is None: + h1e = mf.get_hcore() + if vhf is None or ( + isinstance(vhf, NPArrayWithTag) and getattr(vhf, "ecoul", None) is None + ): + vhf = mf.get_veff(mf.mol, dm) + + e1 = _check_dims_then_einsum(h1e, dm) + + if hasattr(vhf, "ecoul"): + e2 = vhf.ecoul + vhf.exc + + mf.scf_summary["e1"] = e1.real + mf.scf_summary["coul"] = vhf.ecoul.real + mf.scf_summary["exc"] = vhf.exc.real + logger.debug( + mf, "PATCHED E1 = %s Ecoul = %s Exc = %s", e1, vhf.ecoul, vhf.exc + ) + else: + e2 = _check_dims_then_einsum(vhf, dm) * 0.5 + + mf.scf_summary["e1"] = e1.real + mf.scf_summary["e2"] = e2.real + logger.debug(mf, "PATCHED E1 = %s Ecoul = %s", e1, e2.real) + + return (e1 + e2).real, e2 diff --git a/projectorEmbedding/embed_utils.py b/projectorEmbedding/embed_utils.py new file mode 100644 index 0000000..908e4ee --- /dev/null +++ b/projectorEmbedding/embed_utils.py @@ -0,0 +1,148 @@ +""" +Some utility functions +""" + +from copy import deepcopy +import numpy as np + + +def get_occ_coeffs(coefficients, occupancies): + if coefficients.ndim == 3: + alpha_coeffs = get_occ_coeffs(coefficients[0], occupancies[0]) + beta_coeffs = get_occ_coeffs(coefficients[1], occupancies[1]) + return (alpha_coeffs, beta_coeffs) + return coefficients[:, occupancies > 0] + + +def get_mo_occ_a(c_occ_a, mo_occ): + if len(mo_occ.shape) == 2: + mo_occ_alpha = get_mo_occ_a(c_occ_a[0], mo_occ[0]) + mo_occ_beta = get_mo_occ_a(c_occ_a[1], mo_occ[1]) + return (mo_occ_alpha, mo_occ_beta) + return mo_occ[..., mo_occ > 0][..., -c_occ_a.shape[1] :] + + +def flatten_basis(mol): + """Flattens out PySCF's basis set representation""" + flatten_set = deepcopy(mol._basis) + + for atom_type in flatten_set: + # step through basis set by atoms + atom_basis = flatten_set[atom_type] + + for i, i_val in enumerate(atom_basis): + # for each shell, see contains more than one contraction + if len(i_val[1]) > 2: + new_contractions = [] + i_nparray = np.asarray(i_val[1:]) + + for contraction in range(len(i_val[1]) - 1): + # split individual contractions into seperate lists + new_contractions.append( + [i_val[0]] + i_nparray[:, [0, contraction + 1]].tolist() + ) + + for i_ctr, new_contraction in enumerate(new_contractions): + # place the split contractions into the overall structure + if i_ctr != 0: + atom_basis.insert(i + i_ctr, new_contraction) + else: + atom_basis[i] = new_contraction + + return flatten_set + + +def screen_aos(mol, active_atoms, den_mat_a, ovlp, trunc_lambda): + """Screen AOs for truncation""" + include = [False] * mol.nbas + active_aos = [] + + for shell in range(mol.nbas): + aos_in_shell = list(range(mol.ao_loc[shell], mol.ao_loc[shell + 1])) + + if ( + mol.bas_atom(shell) not in active_atoms + ): # shells on active atoms are always kept + for ao_i in aos_in_shell: + if den_mat_a.ndim == 3: + charge = den_mat_a[0, ao_i, ao_i] * ovlp[ao_i, ao_i] + if charge > (trunc_lambda / 2): + break + charge = den_mat_a[1, ao_i, ao_i] * ovlp[ao_i, ao_i] + if charge > (trunc_lambda / 2): + break + else: + charge = den_mat_a[ao_i, ao_i] * ovlp[ao_i, ao_i] + if charge > trunc_lambda: + break + else: # if nothing trips the break, these AOs aren't kept and we move on + continue + + include[shell] = True + active_aos += aos_in_shell + + return active_aos, include + + +def truncate_basis(mol, mask): + """Truncate the molecule basis set according to the shell mask""" + print(" Making Truncated Basis Set") + trunc_basis = deepcopy(mol._basis) + trunc_basis1 = deepcopy(mol._basis) + # print(trunc_basis) + for i_atom in range(mol.natm): + symbol = mol.atom_symbol(i_atom) + shell_ids = mol.atom_shell_ids(i_atom) + # print(symbol, shell_ids, mask ) + # keep only the AOs in shells that were not screened + + filtered = [] + # print(symbol,trunc_basis1[symbol],"Sahil") + for i, shell in enumerate(shell_ids): + # print(i,shell,trunc_basis[symbol][i]) + if mask[shell]: + # print(i,trunc_basis[symbol][i]) + filtered.append(trunc_basis[symbol][i]) + trunc_basis1[symbol] = filtered + + # trunc_basis[symbol] = \ + # [trunc_basis[symbol][i] for i, shell in enumerate(shell_ids) if mask[shell]] + print(symbol, shell_ids, [mask[shell] for shell in shell_ids]) + + if trunc_basis1[symbol] == []: # if all AOs on an atom are gone, remove it + del trunc_basis1[symbol] + + # print(trunc_basis1) + return trunc_basis1 + + +def purify(matrix, overlap, rtol=1e-5, atol=1e-8, max_iter=15): + """McWeeny Purification of Density Matrix""" + print("Begin Purification") + + if matrix.ndim == 3: + matrix_alpha = purify(matrix[0], overlap, rtol, atol, max_iter) + matrix_beta = purify(matrix[1], overlap, rtol, atol, max_iter) + return np.array((matrix_alpha, matrix_beta)) + + i = 0 + density = matrix @ overlap + + omega = np.trace(np.linalg.matrix_power(density, 2) - density) ** 2 + print(i, "Omega = ", omega) + + while (i < max_iter) and not np.allclose(omega, 0.0, rtol=rtol, atol=atol): + i += 1 + matrix = 3 * (matrix @ overlap @ matrix) - 2 * ( + matrix @ overlap @ matrix @ overlap @ matrix + ) + density = matrix @ overlap + omega = np.trace(np.linalg.matrix_power(density, 2) - density) ** 2 + print(i, "Omega = ", omega) + + if i < max_iter: + print("Purification Completed\n") + else: + print("Max Iterations hit\n") + + return matrix diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..b013f99 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,11 @@ +[project] +name = "projectorEmbedding" +version = "0.1.0" +description = "Add your description here" +readme = "README.md" +requires-python = ">=3.8, <3.9" +dependencies = [ + "jupyter>=1.1.1", + "matplotlib>=3.7.5", + "pyscf>=2.10.0", +] diff --git a/singlet.json b/singlet.json new file mode 100644 index 0000000..481f81b --- /dev/null +++ b/singlet.json @@ -0,0 +1 @@ +[0.0, -0.0027128354991203946, -0.01044201436040803, -0.016732334303086557, -0.025726895890560174, -0.0524701415172547, -0.07467972264171466, -0.11669171566654477, -0.16307886668293992, -0.202565241748136, -0.256525471957063, -0.2758017086742053, -0.30654853872374704, -0.3842809852956133, -0.4221507178361341, -0.5019383321351111, -0.552749694890506, -0.6066462739188119, -0.6501011281779216, -0.6926096610282141, -0.7359743607621536, -0.7374024429613915, -0.7385893640435259, -0.7392612441767255, -0.7397403685098551, -0.7400183145501391, -0.7406852738649611, -0.7427130135570641, -0.7446045692005114, -0.7472207970245848, -0.7533536327164074, -0.7644683379235455, -0.774292943564263, -0.7827401557516891, -0.7829811484195202, -0.784171657669281, -0.7842003703954255, -0.7842133483586691, -0.7855192469666423, -0.7855295383544614, -0.7856659873419667, -0.785800653249086, -0.7859407182376058, -0.7860536542810215, -0.7861563034334333, -0.7862370296682879, -0.7862994454190941, -0.78629983074294, -0.7863325042154039, -0.7863627811201476, -0.786389074979388, -0.7864091980713783, -0.7864305727241415, -0.7864396449455099, -0.7864456573152037, -0.7864537950570356, -0.7864608430230312, -0.7864639517916802, -0.7864646974108139, -0.7864656107848209, -0.7864660789813736, -0.7864660966736743, -0.7864662717886987, -0.7864663749725616, -0.7864663949558278, -0.7866527017305343, -0.7869229753325999, -0.7869759075885028, -0.7869778763825512, -0.7869985601283518, -0.7870235821081097, -0.7870244534488655, -0.7871237301827081, -0.7872036632405515, -0.7872456585934835, -0.7873734472130611, -0.7874501436678452, -0.7877796845048939, -0.7879449988725328, -0.7880004031202559, -0.7880910031565391, -0.788120677079991, -0.7881279933369576, -0.7881415648223706, -0.7881468279485577, -0.7881471121425743, -0.7881478061735241, -0.7881482414047398, -0.7881488462374266, -0.7881538984871501, -0.7881540560795077, -0.7881570577076528, -0.7881588371503809, -0.7881613524853954, -0.7881626758863591, -0.7881639804159091, -0.788164172780037, -0.7881641885528823, -0.7881645415169563, -0.7881645415184177, -0.788164541518658, -0.7881645415188114, -0.7881645415239681, -0.7881645415376308, -0.7881645415380916, -0.7881645415540324, -0.7881645415541662, -0.7881645415543741, -0.7881645415560696, -0.7881645415616948, -0.7881645415726206, -0.7881645415900588, -0.7881645415907006, -0.7881645415914573, -0.78816454159788, -0.7881645416281262, -0.7881645416283006, -0.7881645416312466, -0.7881645416317262, -0.788164541631847, -0.788164541639151, -0.7881645416392415, -0.7881645416427623, -0.7881645416523034, -0.7881645416618046, -0.7881645416622222, -0.7881645416659403, -0.7881645416687038] \ No newline at end of file diff --git a/test_run_example.ipynb b/test_run_example.ipynb new file mode 100644 index 0000000..ae81843 --- /dev/null +++ b/test_run_example.ipynb @@ -0,0 +1,1463 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "c763a662", + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import time\n", + "\n", + "from pyscf import gto, scf\n", + "from projectorEmbedding import embedding_procedure\n", + "from projectorEmbedding.embed_partition import mulliken_partition\n", + "\n", + "start_time = time.time()\n", + "\n", + "water = \"\"\"\n", + "O 0.00000 0.000 0.115\n", + "H 0.00000 0.754 -0.459\n", + "H1 0.00000 -0.754 -0.459\n", + "\"\"\"\n", + "\n", + "Iron = \"\"\"\n", + "Fe 0.00000000 0.00000000 0.00000000\n", + "C -1.81917027 -0.03335831 -0.71926660\n", + "N -2.91104648 -0.05028038 -1.14336000\n", + "C -0.26363647 1.81748256 0.66107639\n", + "N -0.39650765 2.91674740 1.04361053\n", + "C -0.65245477 -0.72431645 1.71356864\n", + "N -1.01949658 -1.14265108 2.74378932\n", + "C 0.26492194 -1.81715092 -0.66122605\n", + "N 0.39946334 -2.91608401 -1.04407649\n", + "C 0.65377106 0.72497185 -1.71283131\n", + "N 1.02222110 1.14453278 -2.74209377\n", + "C 1.81942656 0.03289085 0.71938992\n", + "N 2.91151676 0.04957108 1.14269602\n", + " \"\"\"\n", + "\n", + "\n", + "complex1 = \"\"\"\n", + "V 5.34800 8.22940 9.95180 \n", + "C 4.83030 9.96040 8.89490 \n", + "C 3.75140 6.88460 9.79650 \n", + "C 5.59960 8.73400 11.96610 \n", + "C 7.05430 7.30710 9.15770 \n", + "C 5.47230 10.28360 7.69410 \n", + "H 6.20920 9.75000 7.41950 \n", + "C 5.08920 11.34560 6.88210 \n", + "H 5.55020 11.52510 6.07140 \n", + "C 4.02610 12.13490 7.27450 \n", + "H 3.73800 12.85360 6.72410 \n", + "C 3.38500 11.87760 8.46430 \n", + "H 2.66760 12.43810 8.73610 \n", + "C 3.76250 10.81770 9.27580 \n", + "C 3.05790 10.58760 10.59350 \n", + "H 2.73890 9.66260 10.63660 \n", + "H 2.29580 11.20000 10.66720 \n", + "H 3.68180 10.75330 11.33090 \n", + "C 2.54390 7.32670 9.22530 \n", + "H 2.50290 8.20460 8.86450 \n", + "C 1.41770 6.53300 9.17020 \n", + "H 0.61550 6.86810 8.78790 \n", + "C 1.46240 5.25030 9.67220 \n", + "H 0.68840 4.70000 9.64150 \n", + "C 2.64020 4.76520 10.22260 \n", + "H 2.67140 3.87850 10.56210 \n", + "C 3.76900 5.56240 10.28060 \n", + "C 5.03430 4.99640 10.87630 \n", + "H 5.73480 4.97230 10.19200 \n", + "H 4.86360 4.08780 11.20170 \n", + "H 5.32480 5.56140 11.62240 \n", + "C 4.76890 8.10770 12.91990 \n", + "H 4.17870 7.42100 12.63130 \n", + "C 4.78070 8.45510 14.25500 \n", + "H 4.21140 8.00880 14.87100 \n", + "C 5.62490 9.45560 14.68830 \n", + "H 5.63460 9.70910 15.60360 \n", + "C 6.45620 10.08490 13.78300 \n", + "H 7.04020 10.77090 14.08490 \n", + "C 6.45300 9.73440 12.43660 \n", + "C 7.38200 10.45950 11.48660 \n", + "H 7.68040 11.29740 11.89720 \n", + "H 6.90810 10.65480 10.65140 \n", + "H 8.15990 9.89390 11.29600 \n", + "C 8.16850 7.10050 9.99920 \n", + "H 8.12970 7.41880 10.89350 \n", + "C 9.31520 6.45170 9.57240 \n", + "H 10.04710 6.33300 10.16600 \n", + "C 9.38560 5.98000 8.27760 \n", + "H 10.17160 5.54070 7.97280 \n", + "C 8.31480 6.14590 7.42920 \n", + "H 8.36660 5.81650 6.53950 \n", + "C 7.15740 6.78950 7.85750 \n", + "C 5.99860 6.92540 6.89520 \n", + "H 6.25070 7.52520 6.16290 \n", + "H 5.22330 7.29290 7.36750 \n", + "H 5.77170 6.04340 6.53160\n", + "\"\"\"\n", + "\n", + "complex2 = \"\"\"\n", + "Mo 5.92450 5.92450 3.94650 \n", + "C 4.17800 5.61050 2.78710 \n", + "C 3.03690 6.37710 3.09570 \n", + "H 3.09220 7.05450 3.76000 \n", + "C 1.82360 6.15440 2.43580 \n", + "H 1.06170 6.68190 2.64260 \n", + "C 1.74300 5.15910 1.48070 \n", + "H 0.91400 4.98190 1.05220 \n", + "C 2.86390 4.41970 1.14450 \n", + "H 2.79960 3.75100 0.47320 \n", + "C 4.09030 4.64360 1.77830 \n", + "C 5.30010 3.89710 1.32050 \n", + "H 5.95050 4.52740 0.94620 \n", + "H 5.04200 3.24770 0.63340 \n", + "H 5.70060 3.42690 2.08080 \n", + "C 7.67100 6.23850 2.78710 \n", + "C 8.81210 5.47190 3.09570 \n", + "H 8.75680 4.79450 3.76000 \n", + "C 10.02540 5.69460 2.43580 \n", + "H 10.78730 5.16710 2.64260 \n", + "C 10.10600 6.68990 1.48070 \n", + "H 10.93500 6.86710 1.05220 \n", + "C 8.98510 7.42930 1.14450 \n", + "H 9.04940 8.09800 0.47320 \n", + "C 7.75870 7.20540 1.77830 \n", + "C 6.54890 7.95190 1.32050 \n", + "H 5.89850 7.32160 0.94620 \n", + "H 6.80700 8.60130 0.63340 \n", + "H 6.14840 8.42210 2.08080 \n", + "C 5.61050 7.67100 5.10600 \n", + "C 6.37710 8.81210 4.79740 \n", + "H 7.05450 8.75680 4.13310 \n", + "C 6.15440 10.02540 5.45730 \n", + "H 6.68190 10.78730 5.25050 \n", + "C 5.15910 10.10600 6.41240 \n", + "H 4.98190 10.93500 6.84090 \n", + "C 4.41970 8.98510 6.74860 \n", + "H 3.75100 9.04940 7.41990 \n", + "C 4.64360 7.75870 6.11480 \n", + "C 3.89710 6.54890 6.57260 \n", + "H 4.52740 5.89850 6.94690 \n", + "H 3.24770 6.80700 7.25970 \n", + "H 3.42690 6.14840 5.81230 \n", + "C 6.23850 4.17800 5.10600 \n", + "C 5.47190 3.03690 4.79740 \n", + "H 4.79450 3.09220 4.13310 \n", + "C 5.69460 1.82360 5.45730 \n", + "H 5.16710 1.06170 5.25050 \n", + "C 6.68990 1.74300 6.41240 \n", + "H 6.86710 0.91400 6.84090 \n", + "C 7.42930 2.86390 6.74860 \n", + "H 8.09800 2.79960 7.41990 \n", + "C 7.20540 4.09030 6.11480 \n", + "C 7.95190 5.30010 6.57260 \n", + "H 7.32160 5.95050 6.94690 \n", + "H 8.60130 5.04200 7.25970 \n", + "H 8.42210 5.70060 5.81230 \n", + "\"\"\"\n", + "\n", + "complex4 = \"\"\"\n", + "Cr 8.00940 15.16000 8.33100 \n", + "C 9.77950 15.29670 9.23370 \n", + "C 7.68320 18.00440 8.72990 \n", + "H 8.56330 17.91140 9.07480 \n", + "C 10.04640 15.72710 10.53250 \n", + "C 7.00720 13.78410 9.36330 \n", + "C 7.01270 16.87370 8.28050 \n", + "C 12.40040 15.28860 10.16620 \n", + "H 13.29260 15.30170 10.49230 \n", + "C 5.87640 14.27490 10.08150 \n", + "H 5.67650 15.20260 10.05560 \n", + "C 5.71410 17.01880 7.74780 \n", + "C 7.32240 12.42680 9.46410 \n", + "C 10.85430 14.82890 8.42280 \n", + "H 10.67380 14.51380 7.54560 \n", + "C 8.84010 15.54530 5.45900 \n", + "C 11.37910 15.72840 10.96760 \n", + "H 11.58130 16.04380 11.84070 \n", + "C 8.96470 16.17390 11.46020 \n", + "H 8.73710 17.10790 11.27100 \n", + "H 9.27380 16.09340 12.38620 \n", + "H 8.17120 15.61220 11.33090 \n", + "C 5.82170 19.39430 8.19890 \n", + "H 5.40980 20.25090 8.17510 \n", + "C 8.19270 14.71470 6.39470 \n", + "C 5.13270 18.28810 7.74460 \n", + "H 4.24510 18.39280 7.42420 \n", + "C 12.14930 14.82610 8.89150 \n", + "H 12.85790 14.51030 8.34380 \n", + "C 6.46920 11.59050 10.19820 \n", + "H 6.66140 10.66170 10.24870 \n", + "C 4.94390 15.87380 7.15120 \n", + "H 5.52660 15.08840 7.08140 \n", + "H 4.62480 16.12360 6.25910 \n", + "H 4.17780 15.66130 7.72460 \n", + "C 7.56410 13.55000 5.95480 \n", + "H 7.10730 13.00200 6.58290 \n", + "C 7.10530 19.26600 8.68830 \n", + "H 7.58650 20.02680 8.99160 \n", + "C 8.21910 13.97280 3.71240 \n", + "H 8.23720 13.71420 2.79900 \n", + "C 5.35540 12.08510 10.84600 \n", + "H 4.77980 11.49580 11.32080 \n", + "C 8.82690 15.14890 4.10580 \n", + "H 9.24370 15.70020 3.45280 \n", + "C 9.51590 16.83840 5.83810 \n", + "H 8.87000 17.42760 6.27900 \n", + "H 9.86000 17.27560 5.03080 \n", + "H 10.25900 16.65130 6.44930 \n", + "C 7.59050 13.17620 4.62890 \n", + "H 7.17240 12.36990 4.35200 \n", + "C 5.07610 13.44240 10.80600 \n", + "H 4.33090 13.79040 11.28030 \n", + "C 8.56080 11.84730 8.86110 \n", + "H 8.59150 12.06460 7.90650 \n", + "H 8.55500 10.87450 8.97580 \n", + "H 9.34810 12.22430 9.30770 \n", + "\"\"\"\n", + "\n", + "radon2 = \"\"\"\n", + "Fe 0.00000000 0.00000000 -0.00000000 \n", + "N 1.67165559 0.33816772 -1.11907622 \n", + "N 1.27861235 -1.12868963 1.11907622 \n", + "N -1.12868963 1.27861235 -1.11907622 \n", + "N -0.54296596 -1.61678006 -1.11907622 \n", + "N 0.33816772 1.67165559 1.11907622 \n", + "N -1.61678006 -0.54296596 1.11907622 \n", + "C 2.74339410 -0.65169645 -0.74834317 \n", + "C 2.70169721 -0.80731137 0.74834317 \n", + "C -0.80731137 2.70169721 -0.74834317 \n", + "C -1.93608273 -2.05000076 -0.74834317 \n", + "C -0.65169645 2.74339410 0.74834317 \n", + "C -2.05000076 -1.93608273 0.74834317 \n", + "H 2.04660549 1.27965223 -0.98898510 \n", + "H 3.72135501 -0.31049043 -1.09603467 \n", + "H 1.51176615 0.27687304 -2.12699353 \n", + "H 2.52555842 -1.59444614 -1.25618563 \n", + "H 1.13258622 -2.13151409 0.98898510 \n", + "H 2.98442082 0.11805165 1.25618563 \n", + "H 1.17079138 -0.99566216 2.12699353 \n", + "H 3.37803319 -1.59178491 1.09603467 \n", + "H -2.13151409 1.13258622 -0.98898510 \n", + "H -0.99566216 1.17079138 -2.12699353 \n", + "H 0.08490860 -2.41223846 -0.98898510 \n", + "H -0.51610399 -1.44766441 -2.12699353 \n", + "H 1.27965223 2.04660549 0.98898510 \n", + "H 0.27687304 1.51176615 2.12699353 \n", + "H -2.41223846 0.08490860 0.98898510 \n", + "H -1.44766441 -0.51610399 2.12699353 \n", + "H -1.59178491 3.37803319 -1.09603467 \n", + "H 0.11805165 2.98442082 -1.25618563 \n", + "H -2.12957010 -3.06754276 -1.09603467 \n", + "H -2.64361007 -1.38997469 -1.25618563 \n", + "H -1.59444614 2.52555842 1.25618563 \n", + "H -0.31049043 3.72135501 1.09603467 \n", + "H -1.38997469 -2.64361007 1.25618563 \n", + "H -3.06754276 -2.12957010 1.09603467\n", + "\"\"\"\n", + "\n", + "zinc = \"\"\"\n", + "Zn -0.00000042 0.00000048 -0.00000065\n", + "O 2.11041094 0.00000126 0.00000221\n", + "H 2.68444824 0.77964234 -0.00000089\n", + "H 2.68444651 -0.77964107 -0.00000099\n", + "O -2.11041073 0.00000155 0.00000229\n", + "H -2.68444802 0.77964260 -0.00000083\n", + "H -2.68444592 -0.77964101 -0.00000111\n", + "O 0.00000021 2.05126926 -0.00000287\n", + "H 0.78202720 2.62245834 0.00000169\n", + "H -0.78202794 2.62245699 0.00000168\n", + "O 0.00000023 -2.05126822 -0.00000302\n", + "H 0.78202705 -2.62245792 0.00000121\n", + "H -0.78202744 -2.62245691 0.00000122\n", + "O 0.00000126 -0.00000038 2.07067265\n", + "H -0.00000055 0.78389413 2.63878249\n", + "H -0.00000066 -0.78389706 2.63877928\n", + "O 0.00000119 -0.00000059 -2.07067261\n", + "H -0.00000060 0.78389372 -2.63878282\n", + "H -0.00000056 -0.78389747 -2.63877894\n", + "\"\"\"" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "e3cebb05", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Getting Mol\n", + "Got mol\n", + "Running MF\n", + "converged SCF energy = -2236.38268191332 = 7.0627948e-12 2S+1 = 1\n", + "Kohn-Sham Energy: -2236.3826819133183\n" + ] + } + ], + "source": [ + "\n", + "print(\"Getting Mol\")\n", + "mol = gto.Mole(atom=zinc, basis=\"6-31G*\", charge=2, multiplicity=1).build()\n", + "print(\"Got mol\")\n", + "\n", + "print(\"Running MF\")\n", + "mf = scf.UKS(mol)\n", + "mf.xc = \"PBE0\"\n", + "mf.max_cycle = 100\n", + "mf.diis_space = 12\n", + "mf.kernel()\n", + "# print(mf.get_ovlp())\n", + "# Print the energy\n", + "print(\"Kohn-Sham Energy:\", mf.e_tot)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "456a91da", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Running embedding procedure.\n", + "Start Projector Embedding\n", + "[0]\n", + "Partitioning MOs\n", + "Localize = True\n", + "Localize = True\n", + "Number of active MOs: 14, 14\n", + "Calculating A-in-B\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Overwritten attributes get_hcore energy_elec of \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "converged SCF energy = -1031.3842480863 = 9.3614005e-13 2S+1 = 1\n", + "Localising virtual orbital spin with concentric localization.\n", + "Creating projected molecule object.\n", + "embedded_scf.mol.atom='\\nZn -0.00000042 0.00000048 -0.00000065\\nO 2.11041094 0.00000126 0.00000221\\nH 2.68444824 0.77964234 -0.00000089\\nH 2.68444651 -0.77964107 -0.00000099\\nO -2.11041073 0.00000155 0.00000229\\nH -2.68444802 0.77964260 -0.00000083\\nH -2.68444592 -0.77964101 -0.00000111\\nO 0.00000021 2.05126926 -0.00000287\\nH 0.78202720 2.62245834 0.00000169\\nH -0.78202794 2.62245699 0.00000168\\nO 0.00000023 -2.05126822 -0.00000302\\nH 0.78202705 -2.62245792 0.00000121\\nH -0.78202744 -2.62245691 0.00000122\\nO 0.00000126 -0.00000038 2.07067265\\nH -0.00000055 0.78389413 2.63878249\\nH -0.00000066 -0.78389706 2.63877928\\nO 0.00000119 -0.00000059 -2.07067261\\nH -0.00000060 0.78389372 -2.63878282\\nH -0.00000056 -0.78389747 -2.63877894\\n'\n", + "embedded_scf.mol.charge=2\n", + "embedded_scf.mol.spin=0\n", + "self.active_atoms=[0]\n", + "n_act_proj_aos=34\n", + "Running concentric localiztion for single spin.\n", + "occ=array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 0., 0., 0.,\n", + " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n", + " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n", + " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n", + " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n", + " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n", + " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n", + " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n", + " 0., 0., 0., 0., 0., 0.])\n", + "mo_coeff.shape=(142, 142)\n", + "fock_operator.shape=(142, 142)\n", + "N effective virtuals: (142, 128)\n", + "Singular values: [1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00\n", + " 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00\n", + " 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00\n", + " 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00\n", + " 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00\n", + " 3.24611212e-03 3.04746957e-03 2.39136265e-03 1.72403402e-03\n", + " 9.66159813e-04 4.55752999e-06 2.67742614e-06 2.66237327e-06\n", + " 2.24388780e-06 1.10974894e-06 5.67610269e-07 5.00270014e-07\n", + " 4.63957266e-07 7.75748925e-09 1.38247076e-15 8.88178420e-16\n", + " 7.13970913e-16 6.18699339e-16 5.64976581e-16 4.49028023e-16\n", + " 4.48695521e-16 4.28784268e-16 4.18036143e-16 3.78241499e-16\n", + " 3.75227959e-16 3.35911158e-16 3.17561258e-16 2.92388460e-16\n", + " 2.77790459e-16 2.73900788e-16 2.71585728e-16 2.51614798e-16\n", + " 2.21567368e-16 2.18443288e-16 2.12075914e-16 2.07044572e-16\n", + " 1.97975299e-16 1.96547641e-16 1.95958847e-16 1.60429436e-16\n", + " 1.51644123e-16 1.38774977e-16 1.36257661e-16 1.26203078e-16\n", + " 1.07210635e-16 9.99200722e-17 9.99200722e-17 9.99200722e-17\n", + " 9.99200722e-17 9.99200722e-17 9.99200722e-17 9.99200722e-17\n", + " 9.99200722e-17 9.99200722e-17 9.99200722e-17 9.99200722e-17\n", + " 9.99200722e-17 9.99200722e-17 9.99200722e-17 9.99200722e-17\n", + " 9.99200722e-17 9.99200722e-17 9.99200722e-17 9.99200722e-17\n", + " 9.99200722e-17 9.99200722e-17 9.99200722e-17 9.99200722e-17\n", + " 9.99200722e-17 9.99200722e-17 9.99200722e-17 9.99200722e-17\n", + " 9.99200722e-17 9.99200722e-17 9.99200722e-17 9.99200722e-17\n", + " 9.99200722e-17 9.99200722e-17 9.99200722e-17 9.99200722e-17\n", + " 9.99200722e-17 9.99200722e-17 9.99200722e-17 9.99200722e-17\n", + " 9.99200722e-17 9.99200722e-17 9.99200722e-17 9.99200722e-17\n", + " 9.99200722e-17 9.99200722e-17 9.99200722e-17 9.99200722e-17\n", + " 9.99200722e-17 9.99200722e-17 9.99200722e-17 9.99200722e-17\n", + " 9.99200722e-17 9.99200722e-17 9.99200722e-17 9.99200722e-17\n", + " 9.99200722e-17 9.65757126e-17 7.72393269e-17 7.13265150e-17\n", + " 5.09230169e-17 4.31708129e-17 2.97313576e-17 1.62225760e-17]\n", + "Initial c_total.shape=(142, 14) (nocc)\n", + "self.n_act_proj_aos=34\n", + "shell_size=34\n", + "v_span.shape=(128, 34)\n", + "v_ker.shape=(128, 94)\n", + "Created 0th shell.\n", + "Beginning Concentric Localization Iteration\n", + "Shell 0.\n", + "c_total.shape=(142, 48), fock_operator.shape=(142, 142), c_iker.shape=(142, 94)\n", + "Singular values: [4.93057631e+05 4.90274527e+05 4.83174866e+05 4.83055474e+05\n", + " 4.79910003e+05 4.71281068e+05 4.20496562e+05 4.02241010e+05\n", + " 3.78712490e+05 2.32532938e+05 2.22540812e+05 2.17442220e+05\n", + " 1.69871591e+05 7.83439203e+04 7.48470165e+04 7.40020096e+04\n", + " 6.24205724e+04 5.84034852e+04 3.72588156e+04 3.08737954e+04\n", + " 2.76356274e+04 2.62158047e+04 2.18974279e+04 1.72250202e+04\n", + " 1.68570454e+04 1.42264101e+04 2.02482658e+03 3.67563766e+02\n", + " 3.62036904e+02 7.34256824e+00 2.83250365e-01 2.20340754e-01\n", + " 1.31644005e-01 8.06059408e-02 1.79839093e-08 1.54679175e-08\n", + " 1.07126553e-08 9.75690328e-09 9.66180483e-09 8.42825917e-09\n", + " 3.17890944e-09 3.17035846e-09 1.68701673e-09 1.43949920e-09\n", + " 5.33223634e-10 5.19542812e-10 5.01991205e-10 8.99320503e-11]\n", + "right_vectors.shape=(94, 94)\n", + "shell_size=34\n", + "v_span.shape=(94, 34)\n", + "v_ker.shape=(94, 60)\n", + "Kernel dimension is greater than 1, continuing CL.\n", + "Beginning Concentric Localization Iteration\n", + "Shell 1.\n", + "c_total.shape=(142, 82), fock_operator.shape=(142, 142), c_iker.shape=(142, 60)\n", + "Singular values: [3.35031247e+04 2.28733651e+02 8.71499046e+01 5.51461522e+01\n", + " 3.73444595e+01 3.01815928e+01 2.28537089e+01 1.04574543e+01\n", + " 1.02109557e+01 7.91578749e+00 5.80726850e+00 5.71871978e+00\n", + " 3.37273042e+00 3.11240108e+00 2.88129270e+00 2.83204143e+00\n", + " 9.00840532e-01 7.77452435e-01 7.45611980e-01 7.04753074e-01\n", + " 4.59739213e-01 4.15357812e-01 3.89124234e-01 3.76813999e-01\n", + " 2.69070116e-01 2.60013909e-01 2.37539379e-01 2.30180971e-01\n", + " 2.10588932e-01 8.06875127e-02 7.92487476e-02 1.31514945e-02\n", + " 1.16250551e-02 9.77459347e-03 1.09958633e-08 9.69962481e-09\n", + " 5.56358584e-09 2.77823320e-09 2.37292613e-09 1.55338212e-09\n", + " 1.23522135e-09 1.15153111e-09 6.27960081e-10 6.02578152e-10\n", + " 5.50959337e-10 4.48052966e-10 4.29278133e-10 3.52398504e-10\n", + " 3.36564291e-10 2.97012879e-10 2.54668195e-10 2.42125993e-10\n", + " 2.00587289e-10 1.80177223e-10 1.35906026e-10 1.27770850e-10\n", + " 1.12131911e-10 9.16276212e-11 8.72667758e-11 5.04648883e-11]\n", + "right_vectors.shape=(60, 60)\n", + "shell_size=34\n", + "v_span.shape=(60, 34)\n", + "v_ker.shape=(60, 26)\n", + "Kernel dimension is greater than 1, continuing CL.\n", + "Beginning Concentric Localization Iteration\n", + "Shell 2.\n", + "c_total.shape=(142, 116), fock_operator.shape=(142, 142), c_iker.shape=(142, 26)\n", + "Singular values: [7.90164440e-01 7.21664672e-01 6.63979645e-01 6.48935866e-01\n", + " 6.44834369e-01 4.58675518e-01 4.57836902e-01 4.39190667e-01\n", + " 3.81096554e-01 3.04437798e-01 2.96954348e-01 2.71745629e-01\n", + " 1.91293835e-01 1.43406316e-01 9.49281785e-02 8.34263185e-02\n", + " 7.84961823e-02 7.62084125e-03 6.08449488e-03 3.37526613e-04\n", + " 3.77336360e-05 2.54438590e-05 1.29098064e-05 7.72242705e-06\n", + " 4.99727625e-06 2.75328873e-06]\n", + "right_vectors.shape=(26, 26)\n", + "shell_size=26\n", + "v_span.shape=(26, 26)\n", + "v_ker.shape=(26, 0)\n", + "Ending Concentric Localization - All virtual MOs localized.\n", + "Shell indices: [48, 82, 116, 142]\n", + "(array([[ 9.96031956e-01, 3.08824261e-01, -4.65395664e-10, ...,\n", + " 2.16548188e-10, 2.16357391e-09, 3.12333389e-09],\n", + " [-1.37943022e-02, 1.03740000e+00, -1.65373171e-09, ...,\n", + " -2.25490723e-09, -1.86056958e-08, -2.67253298e-08],\n", + " [ 2.64230200e-03, 1.42562649e-02, -4.34434173e-10, ...,\n", + " -8.19196418e-09, -8.08863426e-08, -1.16471279e-07],\n", + " ...,\n", + " [-1.34085732e-04, -1.41708492e-04, 2.25985472e-10, ...,\n", + " -1.44839113e-02, -2.45251080e-01, 1.61233804e-01],\n", + " [ 1.11122931e-05, 1.07997069e-05, 3.61056750e-10, ...,\n", + " -6.50944075e-04, -1.27481713e-02, 8.44960213e-03],\n", + " [-1.34086226e-04, -1.41708863e-04, 1.28074146e-09, ...,\n", + " 1.45602220e-02, 2.45268144e-01, -1.61229474e-01]]), [48, 82, 116, 142], [[1.0000000000000013, 1.000000000000001, 1.0000000000000007, 1.0000000000000004, 1.0000000000000002, 1.0000000000000002, 1.0000000000000002, 1.0000000000000002, 1.0000000000000002, 1.0, 1.0, 0.9999999999999999, 0.9999999999999998, 0.9999999999999998, 0.9999999999999997, 0.9999999999999996, 0.9999999999999996, 0.9999999999999994, 0.9999999999999992, 0.9999999999999987, 0.0032461121237088784, 0.0030474695682678613, 0.0023913626466778286, 0.00172403402129376, 0.0009661598131672071, 4.557529991979472e-06, 2.6774261406232637e-06, 2.6623732723772182e-06, 2.243887798946817e-06, 1.1097489354784007e-06, 5.676102688635651e-07, 5.002700137447623e-07, 4.6395726637676466e-07, 7.757489247966295e-09, 1.3824707616085034e-15, 8.881784197001254e-16, 7.139709134299305e-16, 6.1869933933528785e-16, 5.649765806512101e-16, 4.490280232419039e-16, 4.486955205762425e-16, 4.287842676010008e-16, 4.1803614316495545e-16, 3.7824149943100975e-16, 3.7522795893446364e-16, 3.3591115844442305e-16, 3.1756125750113576e-16, 2.923884599262427e-16, 2.7779045881355033e-16, 2.7390078786299166e-16, 2.715857275999228e-16, 2.516147984410268e-16, 2.2156736812043121e-16, 2.1844328819913484e-16, 2.1207591354622104e-16, 2.070445716908266e-16, 1.9797529897449366e-16, 1.9654764082992362e-16, 1.9595884703852748e-16, 1.604294355026274e-16, 1.5164412344586925e-16, 1.3877497701630755e-16, 1.362576610744967e-16, 1.2620307781229406e-16, 1.0721063546953783e-16, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.657571264531809e-17, 7.723932690968307e-17, 7.132651498002667e-17, 5.0923016883799844e-17, 4.3170812859179453e-17, 2.973135758992436e-17, 1.6222576020314288e-17], [493057.6309372139, 490274.527110241, 483174.86567143974, 483055.47445159836, 479910.00305142853, 471281.06802886876, 420496.56218553666, 402241.01015114365, 378712.4897141813, 232532.93797148523, 222540.81220525177, 217442.22015560637, 169871.59076477954, 78343.9203396275, 74847.01645960766, 74002.00958841055, 62420.57237965045, 58403.48515192283, 37258.81556208346, 30873.79542465958, 27635.627410493304, 26215.804719140397, 21897.427923739746, 17225.020185146856, 16857.04544520667, 14226.410114557782, 2024.8265843574125, 367.5637659029715, 362.03690388854756, 7.342568243147349, 0.2832503649536792, 0.22034075443444218, 0.13164400494795733, 0.08060594080024697, 1.798390926639187e-08, 1.5467917518561832e-08, 1.0712655300606215e-08, 9.756903277495822e-09, 9.661804832403422e-09, 8.428259169865277e-09, 3.1789094362220686e-09, 3.1703584570642276e-09, 1.6870167339789105e-09, 1.4394991963503021e-09, 5.332236339369409e-10, 5.195428118564066e-10, 5.019912045921891e-10, 8.99320503131457e-11], [33503.124743349916, 228.73365143566477, 87.14990459624246, 55.14615224425857, 37.34445946144084, 30.181592784714148, 22.853708869237987, 10.45745429309071, 10.210955665708294, 7.9157874901366405, 5.807268495869317, 5.718719780210596, 3.372730423087958, 3.1124010797749744, 2.8812927045347103, 2.8320414329948385, 0.9008405315448362, 0.777452434702361, 0.7456119802060244, 0.7047530743482938, 0.4597392129159985, 0.4153578116549328, 0.38912423398390406, 0.3768139989671318, 0.26907011558908106, 0.2600139091563858, 0.23753937943341652, 0.23018097104305452, 0.21058893214504987, 0.08068751266826293, 0.07924874761838675, 0.01315149447630843, 0.01162505505268194, 0.009774593473989237, 1.0995863309741096e-08, 9.699624806365539e-09, 5.563585837254688e-09, 2.7782332030933288e-09, 2.372926129554059e-09, 1.55338212473315e-09, 1.235221350732038e-09, 1.1515311096225387e-09, 6.27960080699265e-10, 6.025781524156307e-10, 5.509593370094881e-10, 4.4805296642464137e-10, 4.2927813257247187e-10, 3.523985039243711e-10, 3.365642909637064e-10, 2.970128791606637e-10, 2.5466819484996845e-10, 2.421259934567641e-10, 2.0058728914462918e-10, 1.8017722300150394e-10, 1.3590602579072444e-10, 1.2777085000161112e-10, 1.121319113033918e-10, 9.162762117689008e-11, 8.726677581512269e-11, 5.046488827989374e-11], [0.7901644399410803, 0.721664672113464, 0.6639796452800847, 0.6489358655653601, 0.6448343692621541, 0.4586755180949323, 0.4578369020847686, 0.4391906672328905, 0.3810965543735716, 0.30443779849840297, 0.29695434845037005, 0.2717456292471813, 0.19129383480454326, 0.14340631580337607, 0.094928178493479, 0.08342631848687768, 0.07849618231424926, 0.007620841249553676, 0.006084494880282257, 0.0003375266133665793, 3.773363599765233e-05, 2.5443859034235405e-05, 1.2909806371239824e-05, 7.722427052889677e-06, 4.997276246082162e-06, 2.7532887317229327e-06]])\n", + "Running concentric localiztion for single spin.\n", + "occ=array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 0., 0., 0.,\n", + " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n", + " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n", + " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n", + " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n", + " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n", + " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n", + " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n", + " 0., 0., 0., 0., 0., 0.])\n", + "mo_coeff.shape=(142, 142)\n", + "fock_operator.shape=(142, 142)\n", + "N effective virtuals: (142, 128)\n", + "Singular values: [1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00\n", + " 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00\n", + " 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00\n", + " 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00\n", + " 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00\n", + " 3.24610461e-03 3.04747566e-03 2.39136629e-03 1.72403536e-03\n", + " 9.66159715e-04 4.55670716e-06 2.67742443e-06 2.66237483e-06\n", + " 2.24388616e-06 1.10974891e-06 5.67612438e-07 5.00272122e-07\n", + " 4.63958306e-07 7.75762904e-09 1.02516109e-15 8.53616651e-16\n", + " 8.39368595e-16 6.44639841e-16 5.66139301e-16 4.76448216e-16\n", + " 4.47914237e-16 4.26131541e-16 4.17602080e-16 3.98666613e-16\n", + " 3.85067393e-16 3.66026091e-16 3.31841142e-16 3.21030095e-16\n", + " 2.93922472e-16 2.78283251e-16 2.57247788e-16 2.47058942e-16\n", + " 2.38226908e-16 2.17809806e-16 2.08423329e-16 2.01056141e-16\n", + " 1.82047167e-16 1.72019303e-16 1.70930291e-16 1.61848842e-16\n", + " 1.46448792e-16 1.31664364e-16 1.26300474e-16 9.99200722e-17\n", + " 9.99200722e-17 9.99200722e-17 9.99200722e-17 9.99200722e-17\n", + " 9.99200722e-17 9.99200722e-17 9.99200722e-17 9.99200722e-17\n", + " 9.99200722e-17 9.99200722e-17 9.99200722e-17 9.99200722e-17\n", + " 9.99200722e-17 9.99200722e-17 9.99200722e-17 9.99200722e-17\n", + " 9.99200722e-17 9.99200722e-17 9.99200722e-17 9.99200722e-17\n", + " 9.99200722e-17 9.99200722e-17 9.99200722e-17 9.99200722e-17\n", + " 9.99200722e-17 9.99200722e-17 9.99200722e-17 9.99200722e-17\n", + " 9.99200722e-17 9.99200722e-17 9.99200722e-17 9.99200722e-17\n", + " 9.99200722e-17 9.99200722e-17 9.99200722e-17 9.99200722e-17\n", + " 9.99200722e-17 9.99200722e-17 9.99200722e-17 9.99200722e-17\n", + " 9.99200722e-17 9.99200722e-17 9.99200722e-17 9.99200722e-17\n", + " 9.99200722e-17 9.99200722e-17 9.99200722e-17 9.99200722e-17\n", + " 9.99200722e-17 9.99200722e-17 9.99200722e-17 9.99200722e-17\n", + " 9.99200722e-17 9.99200722e-17 9.99200722e-17 9.99200722e-17\n", + " 9.74306843e-17 8.98123125e-17 7.37350804e-17 6.91646830e-17\n", + " 6.91412978e-17 5.84098980e-17 4.20022577e-17 1.52072622e-17]\n", + "Initial c_total.shape=(142, 14) (nocc)\n", + "self.n_act_proj_aos=34\n", + "shell_size=34\n", + "v_span.shape=(128, 34)\n", + "v_ker.shape=(128, 94)\n", + "Created 0th shell.\n", + "Beginning Concentric Localization Iteration\n", + "Shell 0.\n", + "c_total.shape=(142, 48), fock_operator.shape=(142, 142), c_iker.shape=(142, 94)\n", + "Singular values: [4.93057349e+05 4.90274453e+05 4.83174742e+05 4.83055690e+05\n", + " 4.79909842e+05 4.71270359e+05 4.20496363e+05 4.02241589e+05\n", + " 3.78713873e+05 2.32532498e+05 2.22540588e+05 2.17441886e+05\n", + " 1.69881875e+05 7.83436454e+04 7.48472202e+04 7.40029421e+04\n", + " 6.24206516e+04 5.84034417e+04 3.72588818e+04 3.08778496e+04\n", + " 2.76357435e+04 2.62145317e+04 2.18975571e+04 1.72253196e+04\n", + " 1.68573472e+04 1.42271747e+04 2.02546569e+03 3.67563843e+02\n", + " 3.62039545e+02 1.05293114e+01 2.83272641e-01 2.20352534e-01\n", + " 1.31644677e-01 8.06059405e-02 1.80859817e-08 1.54715636e-08\n", + " 1.06706417e-08 9.73672403e-09 9.73486700e-09 8.43260921e-09\n", + " 3.24013846e-09 3.07679075e-09 1.66398078e-09 1.47125128e-09\n", + " 5.09355997e-10 5.01731071e-10 1.45483483e-10 1.19690022e-10]\n", + "right_vectors.shape=(94, 94)\n", + "shell_size=34\n", + "v_span.shape=(94, 34)\n", + "v_ker.shape=(94, 60)\n", + "Kernel dimension is greater than 1, continuing CL.\n", + "Beginning Concentric Localization Iteration\n", + "Shell 1.\n", + "c_total.shape=(142, 82), fock_operator.shape=(142, 142), c_iker.shape=(142, 60)\n", + "Singular values: [2.33687287e+04 2.28732108e+02 8.71499467e+01 5.51195500e+01\n", + " 3.73412845e+01 3.01773966e+01 2.28529827e+01 1.04574461e+01\n", + " 1.02130505e+01 7.91736816e+00 5.80726947e+00 5.71872681e+00\n", + " 3.37276887e+00 3.11237165e+00 2.88127667e+00 2.83203871e+00\n", + " 9.00838089e-01 7.77439771e-01 7.45607808e-01 7.04733909e-01\n", + " 4.59739850e-01 4.15350311e-01 3.89123471e-01 3.76817126e-01\n", + " 2.69071782e-01 2.60013831e-01 2.37533383e-01 2.30179441e-01\n", + " 2.10567651e-01 8.06869220e-02 7.92497120e-02 1.31506945e-02\n", + " 1.16250085e-02 9.77495448e-03 1.10470938e-08 9.69963087e-09\n", + " 5.58889807e-09 2.81565701e-09 2.37511126e-09 1.47098354e-09\n", + " 1.34752650e-09 1.15303928e-09 5.78345236e-10 5.76729456e-10\n", + " 5.35014989e-10 4.63518968e-10 4.21100657e-10 3.23810624e-10\n", + " 3.13586534e-10 2.90629876e-10 2.41686994e-10 2.36690178e-10\n", + " 2.07968167e-10 1.85991412e-10 1.51493455e-10 1.28505619e-10\n", + " 1.15662938e-10 9.46923413e-11 8.18360333e-11 6.72698444e-11]\n", + "right_vectors.shape=(60, 60)\n", + "shell_size=34\n", + "v_span.shape=(60, 34)\n", + "v_ker.shape=(60, 26)\n", + "Kernel dimension is greater than 1, continuing CL.\n", + "Beginning Concentric Localization Iteration\n", + "Shell 2.\n", + "c_total.shape=(142, 116), fock_operator.shape=(142, 142), c_iker.shape=(142, 26)\n", + "Singular values: [7.90169512e-01 7.21664683e-01 6.63980011e-01 6.48934526e-01\n", + " 6.44834335e-01 4.58675456e-01 4.57836785e-01 4.39178844e-01\n", + " 3.81093078e-01 3.04437846e-01 2.96950876e-01 2.71734595e-01\n", + " 1.91296177e-01 1.43402046e-01 9.49282742e-02 8.34137050e-02\n", + " 7.85006878e-02 7.61696503e-03 6.08454366e-03 3.37567877e-04\n", + " 4.07174476e-05 2.84916954e-05 1.14897707e-05 7.41073604e-06\n", + " 4.71308724e-06 2.55209539e-06]\n", + "right_vectors.shape=(26, 26)\n", + "shell_size=26\n", + "v_span.shape=(26, 26)\n", + "v_ker.shape=(26, 0)\n", + "Ending Concentric Localization - All virtual MOs localized.\n", + "Shell indices: [48, 82, 116, 142]\n", + "(array([[ 9.96031956e-01, 3.08824260e-01, -4.93142370e-10, ...,\n", + " 4.30682507e-10, -1.97994284e-09, -2.49255146e-09],\n", + " [-1.37943023e-02, 1.03740000e+00, -1.74487001e-09, ...,\n", + " -3.89691837e-09, 1.73227783e-08, 2.15134824e-08],\n", + " [ 2.64230202e-03, 1.42562748e-02, -4.59522247e-10, ...,\n", + " -1.71442004e-08, 7.45261847e-08, 9.32540581e-08],\n", + " ...,\n", + " [-1.34086511e-04, -1.41711784e-04, 1.29158700e-09, ...,\n", + " 2.33506169e-02, 2.65786928e-01, -2.01828184e-01],\n", + " [ 1.11070568e-05, 1.07829303e-05, -7.48025557e-11, ...,\n", + " 8.84025253e-04, 1.18791428e-02, -9.21157233e-03],\n", + " [-1.34086883e-04, -1.41711749e-04, 1.88578152e-10, ...,\n", + " -2.34197229e-02, -2.65805226e-01, 2.01827691e-01]]), [48, 82, 116, 142], [[1.0000000000000027, 1.000000000000001, 1.000000000000001, 1.0000000000000009, 1.0000000000000009, 1.0000000000000007, 1.0000000000000007, 1.0000000000000007, 1.0000000000000002, 0.9999999999999999, 0.9999999999999998, 0.9999999999999998, 0.9999999999999997, 0.9999999999999996, 0.9999999999999994, 0.9999999999999994, 0.999999999999999, 0.9999999999999987, 0.9999999999999984, 0.9999999999999983, 0.0032461046060029476, 0.00304747565516623, 0.002391366292907798, 0.001724035363427272, 0.0009661597153285049, 4.556707160054104e-06, 2.6774244263928732e-06, 2.6623748332619375e-06, 2.2438861584376443e-06, 1.1097489050179215e-06, 5.676124376170096e-07, 5.002721222885423e-07, 4.63958305893404e-07, 7.757629040421038e-09, 1.025161089455791e-15, 8.536166507361259e-16, 8.393685952900813e-16, 6.446398413113646e-16, 5.661393008441633e-16, 4.764482155361081e-16, 4.479142372328699e-16, 4.2613154105593554e-16, 4.1760208019486486e-16, 3.9866661254009163e-16, 3.8506739302031484e-16, 3.6602609115941793e-16, 3.3184114230274284e-16, 3.2103009478607625e-16, 2.939224721791656e-16, 2.782832509920915e-16, 2.5724778783182546e-16, 2.470589417772867e-16, 2.3822690801088747e-16, 2.1780980568353833e-16, 2.08423329388356e-16, 2.0105614143483996e-16, 1.8204716717402235e-16, 1.7201930258781586e-16, 1.7093029054977116e-16, 1.6184884200279618e-16, 1.4644879198986193e-16, 1.3166436424614742e-16, 1.2630047375940703e-16, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.74306842682348e-17, 8.981231253515405e-17, 7.373508039440929e-17, 6.916468300463457e-17, 6.914129779526311e-17, 5.8409897974147e-17, 4.2002257692458634e-17, 1.520726219299181e-17], [493057.34932655893, 490274.4527640175, 483174.7417083543, 483055.69014442415, 479909.84196000843, 471270.35897773877, 420496.36263065354, 402241.58879626554, 378713.87330971396, 232532.49765377777, 222540.58802599297, 217441.8860101609, 169881.875458331, 78343.64536027082, 74847.22022746762, 74002.9420648514, 62420.651574968935, 58403.441671405475, 37258.88184391885, 30877.84959108525, 27635.74346306149, 26214.531711172007, 21897.557081627798, 17225.319591278247, 16857.34719346066, 14227.174656460767, 2025.4656911783402, 367.5638428165633, 362.03954463743327, 10.529311401438502, 0.28327264145182357, 0.2203525343842204, 0.13164467690150292, 0.08060594050610828, 1.8085981682064133e-08, 1.54715636489118e-08, 1.0670641702638326e-08, 9.736724031837452e-09, 9.734866999084997e-09, 8.432609211674334e-09, 3.240138458324685e-09, 3.0767907511960613e-09, 1.6639807792979164e-09, 1.4712512807764936e-09, 5.09355997279589e-10, 5.017310712027604e-10, 1.4548348262303348e-10, 1.1969002211613849e-10], [23368.728719059483, 228.73210783921485, 87.14994665206879, 55.119550036716824, 37.341284518434726, 30.177396551893068, 22.8529827091197, 10.457446091742444, 10.213050517158463, 7.9173681646443494, 5.807269467413405, 5.7187268141781304, 3.372768870623255, 3.112371653547042, 2.8812766698453594, 2.8320387108873355, 0.9008380889468239, 0.7774397708631048, 0.7456078078079945, 0.7047339094076047, 0.4597398497852329, 0.41535031080941265, 0.3891234710884527, 0.37681712630785275, 0.2690717820752572, 0.26001383105928805, 0.23753338311855396, 0.23017944123346537, 0.21056765121310708, 0.08068692197303137, 0.07924971204390248, 0.013150694508632719, 0.01162500852081235, 0.009774954483953355, 1.104709378017045e-08, 9.69963086658744e-09, 5.5888980650754504e-09, 2.8156570091359585e-09, 2.3751112560588962e-09, 1.4709835413680156e-09, 1.3475265046670915e-09, 1.1530392826033002e-09, 5.783452359335964e-10, 5.76729455824626e-10, 5.350149892190698e-10, 4.6351896837944413e-10, 4.2110065683506555e-10, 3.2381062388049907e-10, 3.135865344247509e-10, 2.906298759701494e-10, 2.416869936509781e-10, 2.366901777472593e-10, 2.0796816696104896e-10, 1.8599141241203757e-10, 1.5149345547089034e-10, 1.2850561907142223e-10, 1.1566293786655404e-10, 9.469234134565815e-11, 8.183603325621308e-11, 6.726984444790661e-11], [0.7901695116866849, 0.7216646829767203, 0.663980011154652, 0.6489345261351332, 0.6448343353795747, 0.45867545606928106, 0.45783678520971965, 0.439178843888454, 0.3810930776042022, 0.3044378456936786, 0.29695087571652223, 0.2717345952743908, 0.1912961767635617, 0.14340204621738536, 0.09492827417405313, 0.08341370497154661, 0.07850068776121825, 0.007616965026955437, 0.00608454365629496, 0.0003375678769719544, 4.071744761725427e-05, 2.8491695394405266e-05, 1.1489770658132792e-05, 7.4107360424760504e-06, 4.7130872351722045e-06, 2.5520953858346313e-06]])\n", + "Completed Concentric Localization.\n", + "self.shells=[[48, 82, 116, 142], [48, 82, 116, 142]]\n", + "self.singular_values=([[1.0000000000000013, 1.000000000000001, 1.0000000000000007, 1.0000000000000004, 1.0000000000000002, 1.0000000000000002, 1.0000000000000002, 1.0000000000000002, 1.0000000000000002, 1.0, 1.0, 0.9999999999999999, 0.9999999999999998, 0.9999999999999998, 0.9999999999999997, 0.9999999999999996, 0.9999999999999996, 0.9999999999999994, 0.9999999999999992, 0.9999999999999987, 0.0032461121237088784, 0.0030474695682678613, 0.0023913626466778286, 0.00172403402129376, 0.0009661598131672071, 4.557529991979472e-06, 2.6774261406232637e-06, 2.6623732723772182e-06, 2.243887798946817e-06, 1.1097489354784007e-06, 5.676102688635651e-07, 5.002700137447623e-07, 4.6395726637676466e-07, 7.757489247966295e-09, 1.3824707616085034e-15, 8.881784197001254e-16, 7.139709134299305e-16, 6.1869933933528785e-16, 5.649765806512101e-16, 4.490280232419039e-16, 4.486955205762425e-16, 4.287842676010008e-16, 4.1803614316495545e-16, 3.7824149943100975e-16, 3.7522795893446364e-16, 3.3591115844442305e-16, 3.1756125750113576e-16, 2.923884599262427e-16, 2.7779045881355033e-16, 2.7390078786299166e-16, 2.715857275999228e-16, 2.516147984410268e-16, 2.2156736812043121e-16, 2.1844328819913484e-16, 2.1207591354622104e-16, 2.070445716908266e-16, 1.9797529897449366e-16, 1.9654764082992362e-16, 1.9595884703852748e-16, 1.604294355026274e-16, 1.5164412344586925e-16, 1.3877497701630755e-16, 1.362576610744967e-16, 1.2620307781229406e-16, 1.0721063546953783e-16, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.992007221626409e-17, 9.657571264531809e-17, 7.723932690968307e-17, 7.132651498002667e-17, 5.0923016883799844e-17, 4.3170812859179453e-17, 2.973135758992436e-17, 1.6222576020314288e-17], [493057.6309372139, 490274.527110241, 483174.86567143974, 483055.47445159836, 479910.00305142853, 471281.06802886876, 420496.56218553666, 402241.01015114365, 378712.4897141813, 232532.93797148523, 222540.81220525177, 217442.22015560637, 169871.59076477954, 78343.9203396275, 74847.01645960766, 74002.00958841055, 62420.57237965045, 58403.48515192283, 37258.81556208346, 30873.79542465958, 27635.627410493304, 26215.804719140397, 21897.427923739746, 17225.020185146856, 16857.04544520667, 14226.410114557782, 2024.8265843574125, 367.5637659029715, 362.03690388854756, 7.342568243147349, 0.2832503649536792, 0.22034075443444218, 0.13164400494795733, 0.08060594080024697, 1.798390926639187e-08, 1.5467917518561832e-08, 1.0712655300606215e-08, 9.756903277495822e-09, 9.661804832403422e-09, 8.428259169865277e-09, 3.1789094362220686e-09, 3.1703584570642276e-09, 1.6870167339789105e-09, 1.4394991963503021e-09, 5.332236339369409e-10, 5.195428118564066e-10, 5.019912045921891e-10, 8.99320503131457e-11], [33503.124743349916, 228.73365143566477, 87.14990459624246, 55.14615224425857, 37.34445946144084, 30.181592784714148, 22.853708869237987, 10.45745429309071, 10.210955665708294, 7.9157874901366405, 5.807268495869317, 5.718719780210596, 3.372730423087958, 3.1124010797749744, 2.8812927045347103, 2.8320414329948385, 0.9008405315448362, 0.777452434702361, 0.7456119802060244, 0.7047530743482938, 0.4597392129159985, 0.4153578116549328, 0.38912423398390406, 0.3768139989671318, 0.26907011558908106, 0.2600139091563858, 0.23753937943341652, 0.23018097104305452, 0.21058893214504987, 0.08068751266826293, 0.07924874761838675, 0.01315149447630843, 0.01162505505268194, 0.009774593473989237, 1.0995863309741096e-08, 9.699624806365539e-09, 5.563585837254688e-09, 2.7782332030933288e-09, 2.372926129554059e-09, 1.55338212473315e-09, 1.235221350732038e-09, 1.1515311096225387e-09, 6.27960080699265e-10, 6.025781524156307e-10, 5.509593370094881e-10, 4.4805296642464137e-10, 4.2927813257247187e-10, 3.523985039243711e-10, 3.365642909637064e-10, 2.970128791606637e-10, 2.5466819484996845e-10, 2.421259934567641e-10, 2.0058728914462918e-10, 1.8017722300150394e-10, 1.3590602579072444e-10, 1.2777085000161112e-10, 1.121319113033918e-10, 9.162762117689008e-11, 8.726677581512269e-11, 5.046488827989374e-11], [0.7901644399410803, 0.721664672113464, 0.6639796452800847, 0.6489358655653601, 0.6448343692621541, 0.4586755180949323, 0.4578369020847686, 0.4391906672328905, 0.3810965543735716, 0.30443779849840297, 0.29695434845037005, 0.2717456292471813, 0.19129383480454326, 0.14340631580337607, 0.094928178493479, 0.08342631848687768, 0.07849618231424926, 0.007620841249553676, 0.006084494880282257, 0.0003375266133665793, 3.773363599765233e-05, 2.5443859034235405e-05, 1.2909806371239824e-05, 7.722427052889677e-06, 4.997276246082162e-06, 2.7532887317229327e-06]], [[1.0000000000000027, 1.000000000000001, 1.000000000000001, 1.0000000000000009, 1.0000000000000009, 1.0000000000000007, 1.0000000000000007, 1.0000000000000007, 1.0000000000000002, 0.9999999999999999, 0.9999999999999998, 0.9999999999999998, 0.9999999999999997, 0.9999999999999996, 0.9999999999999994, 0.9999999999999994, 0.999999999999999, 0.9999999999999987, 0.9999999999999984, 0.9999999999999983, 0.0032461046060029476, 0.00304747565516623, 0.002391366292907798, 0.001724035363427272, 0.0009661597153285049, 4.556707160054104e-06, 2.6774244263928732e-06, 2.6623748332619375e-06, 2.2438861584376443e-06, 1.1097489050179215e-06, 5.676124376170096e-07, 5.002721222885423e-07, 4.63958305893404e-07, 7.757629040421038e-09, 1.025161089455791e-15, 8.536166507361259e-16, 8.393685952900813e-16, 6.446398413113646e-16, 5.661393008441633e-16, 4.764482155361081e-16, 4.479142372328699e-16, 4.2613154105593554e-16, 4.1760208019486486e-16, 3.9866661254009163e-16, 3.8506739302031484e-16, 3.6602609115941793e-16, 3.3184114230274284e-16, 3.2103009478607625e-16, 2.939224721791656e-16, 2.782832509920915e-16, 2.5724778783182546e-16, 2.470589417772867e-16, 2.3822690801088747e-16, 2.1780980568353833e-16, 2.08423329388356e-16, 2.0105614143483996e-16, 1.8204716717402235e-16, 1.7201930258781586e-16, 1.7093029054977116e-16, 1.6184884200279618e-16, 1.4644879198986193e-16, 1.3166436424614742e-16, 1.2630047375940703e-16, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.992007221626412e-17, 9.74306842682348e-17, 8.981231253515405e-17, 7.373508039440929e-17, 6.916468300463457e-17, 6.914129779526311e-17, 5.8409897974147e-17, 4.2002257692458634e-17, 1.520726219299181e-17], [493057.34932655893, 490274.4527640175, 483174.7417083543, 483055.69014442415, 479909.84196000843, 471270.35897773877, 420496.36263065354, 402241.58879626554, 378713.87330971396, 232532.49765377777, 222540.58802599297, 217441.8860101609, 169881.875458331, 78343.64536027082, 74847.22022746762, 74002.9420648514, 62420.651574968935, 58403.441671405475, 37258.88184391885, 30877.84959108525, 27635.74346306149, 26214.531711172007, 21897.557081627798, 17225.319591278247, 16857.34719346066, 14227.174656460767, 2025.4656911783402, 367.5638428165633, 362.03954463743327, 10.529311401438502, 0.28327264145182357, 0.2203525343842204, 0.13164467690150292, 0.08060594050610828, 1.8085981682064133e-08, 1.54715636489118e-08, 1.0670641702638326e-08, 9.736724031837452e-09, 9.734866999084997e-09, 8.432609211674334e-09, 3.240138458324685e-09, 3.0767907511960613e-09, 1.6639807792979164e-09, 1.4712512807764936e-09, 5.09355997279589e-10, 5.017310712027604e-10, 1.4548348262303348e-10, 1.1969002211613849e-10], [23368.728719059483, 228.73210783921485, 87.14994665206879, 55.119550036716824, 37.341284518434726, 30.177396551893068, 22.8529827091197, 10.457446091742444, 10.213050517158463, 7.9173681646443494, 5.807269467413405, 5.7187268141781304, 3.372768870623255, 3.112371653547042, 2.8812766698453594, 2.8320387108873355, 0.9008380889468239, 0.7774397708631048, 0.7456078078079945, 0.7047339094076047, 0.4597398497852329, 0.41535031080941265, 0.3891234710884527, 0.37681712630785275, 0.2690717820752572, 0.26001383105928805, 0.23753338311855396, 0.23017944123346537, 0.21056765121310708, 0.08068692197303137, 0.07924971204390248, 0.013150694508632719, 0.01162500852081235, 0.009774954483953355, 1.104709378017045e-08, 9.69963086658744e-09, 5.5888980650754504e-09, 2.8156570091359585e-09, 2.3751112560588962e-09, 1.4709835413680156e-09, 1.3475265046670915e-09, 1.1530392826033002e-09, 5.783452359335964e-10, 5.76729455824626e-10, 5.350149892190698e-10, 4.6351896837944413e-10, 4.2110065683506555e-10, 3.2381062388049907e-10, 3.135865344247509e-10, 2.906298759701494e-10, 2.416869936509781e-10, 2.366901777472593e-10, 2.0796816696104896e-10, 1.8599141241203757e-10, 1.5149345547089034e-10, 1.2850561907142223e-10, 1.1566293786655404e-10, 9.469234134565815e-11, 8.183603325621308e-11, 6.726984444790661e-11], [0.7901695116866849, 0.7216646829767203, 0.663980011154652, 0.6489345261351332, 0.6448343353795747, 0.45867545606928106, 0.45783678520971965, 0.439178843888454, 0.3810930776042022, 0.3044378456936786, 0.29695087571652223, 0.2717345952743908, 0.1912961767635617, 0.14340204621738536, 0.09492827417405313, 0.08341370497154661, 0.07850068776121825, 0.007616965026955437, 0.00608454365629496, 0.0003375678769719544, 4.071744761725427e-05, 2.8491695394405266e-05, 1.1489770658132792e-05, 7.4107360424760504e-06, 4.7130872351722045e-06, 2.5520953858346313e-06]])\n", + "Embedded region energy: -1762.6815101149418\n", + "(2, 142, 142)\n", + "E(UMP2) = -1032.17241262797 E_corr = -0.788164541671956\n", + "E(SCS-UMP2) = -1032.0830450691 E_corr = -0.698796982802522\n", + "Projector Embedding Complete\n", + "(-2235.15268823113, -0.7881645416719556)\n", + "Elapsed time: 46.75 seconds\n" + ] + } + ], + "source": [ + "from pyscf import gto, scf\n", + "from projectorEmbedding import embedding_procedure\n", + "from projectorEmbedding.embed_partition import mulliken_partition\n", + "print(\"Running embedding procedure.\")\n", + "energy, mf_embed = embedding_procedure(\n", + " mf,\n", + " active_atoms=[0],\n", + " embed_meth=\"MP2\",\n", + " mu_val=10**6,\n", + " trunc_lambda=0,\n", + " distribute_mos=mulliken_partition(),\n", + " diis_space=8,\n", + " max_cycle=50,\n", + " chk_file=None,\n", + " chk_start=None,\n", + " cc_econv=1e-07,\n", + " cc_tconv=1e-06,\n", + ")\n", + "print(energy)\n", + "end_time = time.time()\n", + "elapsed_time = end_time - start_time\n", + "print(f\"Elapsed time: {elapsed_time:.2f} seconds\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "9c946507", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "28" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mf_embed.mol.nelectron" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "eb8318ae", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "14\n", + "E(UMP2) = -1031.3842480863 E_corr = 0\n", + "E(SCS-UMP2) = -1031.3842480863 E_corr = 0\n", + "\n", + "15\n", + "E(UMP2) = -1031.3869609218 E_corr = -0.00271283549912039\n", + "E(SCS-UMP2) = -1031.3875034889 E_corr = -0.00325540259894447\n", + "\n", + "16\n", + "E(UMP2) = -1031.39469010066 E_corr = -0.010442014360408\n", + "E(SCS-UMP2) = -1031.39432865355 E_corr = -0.0100805672525349\n", + "\n", + "17\n", + "E(UMP2) = -1031.4009804206 E_corr = -0.0167323343030866\n", + "E(SCS-UMP2) = -1031.4002703188 E_corr = -0.0160222325021024\n", + "\n", + "18\n", + "E(UMP2) = -1031.40997498219 E_corr = -0.0257268958905602\n", + "E(SCS-UMP2) = -1031.40815515757 E_corr = -0.0239070712741528\n", + "\n", + "19\n", + "E(UMP2) = -1031.43671822782 E_corr = -0.0524701415172547\n", + "E(SCS-UMP2) = -1031.43209847956 E_corr = -0.0478503932650441\n", + "\n", + "20\n", + "E(UMP2) = -1031.45892780894 E_corr = -0.0746797226417147\n", + "E(SCS-UMP2) = -1031.45141355436 E_corr = -0.0671654680628293\n", + "\n", + "21\n", + "E(UMP2) = -1031.50093980196 E_corr = -0.116691715666545\n", + "E(SCS-UMP2) = -1031.48924646154 E_corr = -0.104998375236751\n", + "\n", + "22\n", + "E(UMP2) = -1031.54732695298 E_corr = -0.16307886668294\n", + "E(SCS-UMP2) = -1031.53014431102 E_corr = -0.145896224726922\n", + "\n", + "23\n", + "E(UMP2) = -1031.58681332805 E_corr = -0.202565241748136\n", + "E(SCS-UMP2) = -1031.5649319474 E_corr = -0.180683861106748\n", + "\n", + "24\n", + "E(UMP2) = -1031.64077355826 E_corr = -0.256525471957063\n", + "E(SCS-UMP2) = -1031.61367251118 E_corr = -0.229424424883252\n", + "\n", + "25\n", + "E(UMP2) = -1031.66004979497 E_corr = -0.275801708674205\n", + "E(SCS-UMP2) = -1031.63090785025 E_corr = -0.246659763949082\n", + "\n", + "26\n", + "E(UMP2) = -1031.69079662502 E_corr = -0.306548538723747\n", + "E(SCS-UMP2) = -1031.65862169143 E_corr = -0.274373605127506\n", + "\n", + "27\n", + "E(UMP2) = -1031.76852907159 E_corr = -0.384280985295613\n", + "E(SCS-UMP2) = -1031.72742071834 E_corr = -0.343172632041805\n", + "\n", + "28\n", + "E(UMP2) = -1031.80639880413 E_corr = -0.422150717836134\n", + "E(SCS-UMP2) = -1031.76075350168 E_corr = -0.376505415382926\n", + "\n", + "29\n", + "E(UMP2) = -1031.88618641843 E_corr = -0.501938332135111\n", + "E(SCS-UMP2) = -1031.83052648836 E_corr = -0.446278402057084\n", + "\n", + "30\n", + "E(UMP2) = -1031.93699778119 E_corr = -0.552749694890506\n", + "E(SCS-UMP2) = -1031.87528868371 E_corr = -0.491040597407044\n", + "\n", + "31\n", + "E(UMP2) = -1031.99089436022 E_corr = -0.606646273918812\n", + "E(SCS-UMP2) = -1031.92132787406 E_corr = -0.537079787765655\n", + "\n", + "32\n", + "E(UMP2) = -1032.03434921448 E_corr = -0.650101128177922\n", + "E(SCS-UMP2) = -1031.95977843863 E_corr = -0.575530352332444\n", + "\n", + "33\n", + "E(UMP2) = -1032.07685774733 E_corr = -0.692609661028214\n", + "E(SCS-UMP2) = -1031.99712622862 E_corr = -0.612878142326255\n", + "\n", + "34\n", + "E(UMP2) = -1032.12022244706 E_corr = -0.735974360762154\n", + "E(SCS-UMP2) = -1032.03510587596 E_corr = -0.650857789664519\n", + "\n", + "35\n", + "E(UMP2) = -1032.12165052926 E_corr = -0.737402442961391\n", + "E(SCS-UMP2) = -1032.03630549214 E_corr = -0.652057405837298\n", + "\n", + "36\n", + "E(UMP2) = -1032.12283745034 E_corr = -0.738589364043526\n", + "E(SCS-UMP2) = -1032.0372969037 E_corr = -0.653048817403311\n", + "\n", + "37\n", + "E(UMP2) = -1032.12350933047 E_corr = -0.739261244176725\n", + "E(SCS-UMP2) = -1032.03784543598 E_corr = -0.653597349678225\n", + "\n", + "38\n", + "E(UMP2) = -1032.12398845481 E_corr = -0.739740368509855\n", + "E(SCS-UMP2) = -1032.03823688299 E_corr = -0.653988796690291\n", + "\n", + "39\n", + "E(UMP2) = -1032.12426640085 E_corr = -0.740018314550139\n", + "E(SCS-UMP2) = -1032.03846428174 E_corr = -0.654216195446775\n", + "\n", + "40\n", + "E(UMP2) = -1032.12493336016 E_corr = -0.740685273864961\n", + "E(SCS-UMP2) = -1032.03910014736 E_corr = -0.654852061063164\n", + "\n", + "41\n", + "E(UMP2) = -1032.12696109986 E_corr = -0.742713013557064\n", + "E(SCS-UMP2) = -1032.04095751145 E_corr = -0.656709425148894\n", + "\n", + "42\n", + "E(UMP2) = -1032.1288526555 E_corr = -0.744604569200511\n", + "E(SCS-UMP2) = -1032.04269208845 E_corr = -0.658444002154082\n", + "\n", + "43\n", + "E(UMP2) = -1032.13146888332 E_corr = -0.747220797024585\n", + "E(SCS-UMP2) = -1032.04508724699 E_corr = -0.660839160695111\n", + "\n", + "44\n", + "E(UMP2) = -1032.13760171901 E_corr = -0.753353632716407\n", + "E(SCS-UMP2) = -1032.05091720998 E_corr = -0.666669123679182\n", + "\n", + "45\n", + "E(UMP2) = -1032.14871642422 E_corr = -0.764468337923546\n", + "E(SCS-UMP2) = -1032.06117776803 E_corr = -0.676929681733822\n", + "\n", + "46\n", + "E(UMP2) = -1032.15854102986 E_corr = -0.774292943564263\n", + "E(SCS-UMP2) = -1032.07024738306 E_corr = -0.685999296757115\n", + "\n", + "47\n", + "E(UMP2) = -1032.16698824205 E_corr = -0.782740155751689\n", + "E(SCS-UMP2) = -1032.07803288457 E_corr = -0.693784798276358\n", + "\n", + "48\n", + "E(UMP2) = -1032.16722923472 E_corr = -0.78298114841952\n", + "E(SCS-UMP2) = -1032.07825820203 E_corr = -0.694010115736552\n", + "\n", + "49\n", + "E(UMP2) = -1032.16841974397 E_corr = -0.784171657669281\n", + "E(SCS-UMP2) = -1032.07937699136 E_corr = -0.695128905058804\n", + "\n", + "50\n", + "E(UMP2) = -1032.16844845669 E_corr = -0.784200370395425\n", + "E(SCS-UMP2) = -1032.07940209784 E_corr = -0.695154011545102\n", + "\n", + "51\n", + "E(UMP2) = -1032.16846143466 E_corr = -0.784213348358669\n", + "E(SCS-UMP2) = -1032.07941346908 E_corr = -0.695165382778744\n", + "\n", + "52\n", + "E(UMP2) = -1032.16976733326 E_corr = -0.785519246966642\n", + "E(SCS-UMP2) = -1032.08064148512 E_corr = -0.696393398820787\n", + "\n", + "53\n", + "E(UMP2) = -1032.16977762465 E_corr = -0.785529538354461\n", + "E(SCS-UMP2) = -1032.08065058097 E_corr = -0.696402494670078\n", + "\n", + "54\n", + "E(UMP2) = -1032.16991407364 E_corr = -0.785665987341967\n", + "E(SCS-UMP2) = -1032.08078656367 E_corr = -0.696538477372529\n", + "\n", + "55\n", + "E(UMP2) = -1032.17004873955 E_corr = -0.785800653249086\n", + "E(SCS-UMP2) = -1032.08091355255 E_corr = -0.696665466254984\n", + "\n", + "56\n", + "E(UMP2) = -1032.17018880454 E_corr = -0.785940718237606\n", + "E(SCS-UMP2) = -1032.08104560326 E_corr = -0.696797516958869\n", + "\n", + "57\n", + "E(UMP2) = -1032.17030174058 E_corr = -0.786053654281021\n", + "E(SCS-UMP2) = -1032.08115181169 E_corr = -0.696903725389151\n", + "\n", + "58\n", + "E(UMP2) = -1032.17040438973 E_corr = -0.786156303433433\n", + "E(SCS-UMP2) = -1032.08124348466 E_corr = -0.696995398366301\n", + "\n", + "59\n", + "E(UMP2) = -1032.17048511597 E_corr = -0.786237029668288\n", + "E(SCS-UMP2) = -1032.0813156061 E_corr = -0.697067519806338\n", + "\n", + "60\n", + "E(UMP2) = -1032.17054753172 E_corr = -0.786299445419094\n", + "E(SCS-UMP2) = -1032.08137170434 E_corr = -0.697123618044672\n", + "\n", + "61\n", + "E(UMP2) = -1032.17054791704 E_corr = -0.78629983074294\n", + "E(SCS-UMP2) = -1032.08137207617 E_corr = -0.697123989875597\n", + "\n", + "62\n", + "E(UMP2) = -1032.17058059051 E_corr = -0.786332504215404\n", + "E(SCS-UMP2) = -1032.08140009028 E_corr = -0.697152003977369\n", + "\n", + "63\n", + "E(UMP2) = -1032.17061086742 E_corr = -0.786362781120148\n", + "E(SCS-UMP2) = -1032.08142632774 E_corr = -0.697178241446523\n", + "\n", + "64\n", + "E(UMP2) = -1032.17063716128 E_corr = -0.786389074979388\n", + "E(SCS-UMP2) = -1032.08144959199 E_corr = -0.697201505687855\n", + "\n", + "65\n", + "E(UMP2) = -1032.17065728437 E_corr = -0.786409198071378\n", + "E(SCS-UMP2) = -1032.08146685195 E_corr = -0.697218765653703\n", + "\n", + "66\n", + "E(UMP2) = -1032.17067865902 E_corr = -0.786430572724142\n", + "E(SCS-UMP2) = -1032.08148508702 E_corr = -0.697237000724675\n", + "\n", + "67\n", + "E(UMP2) = -1032.17068773124 E_corr = -0.78643964494551\n", + "E(SCS-UMP2) = -1032.08149282987 E_corr = -0.697244743573629\n", + "\n", + "68\n", + "E(UMP2) = -1032.17069374361 E_corr = -0.786445657315204\n", + "E(SCS-UMP2) = -1032.0814985005 E_corr = -0.69725041419802\n", + "\n", + "69\n", + "E(UMP2) = -1032.17070188136 E_corr = -0.786453795057036\n", + "E(SCS-UMP2) = -1032.08150634029 E_corr = -0.69725825399685\n", + "\n", + "70\n", + "E(UMP2) = -1032.17070892932 E_corr = -0.786460843023031\n", + "E(SCS-UMP2) = -1032.08151313305 E_corr = -0.697265046747392\n", + "\n", + "71\n", + "E(UMP2) = -1032.17071203809 E_corr = -0.78646395179168\n", + "E(SCS-UMP2) = -1032.08151608292 E_corr = -0.697267996621429\n", + "\n", + "72\n", + "E(UMP2) = -1032.17071278371 E_corr = -0.786464697410814\n", + "E(SCS-UMP2) = -1032.08151672324 E_corr = -0.69726863694079\n", + "\n", + "73\n", + "E(UMP2) = -1032.17071369708 E_corr = -0.786465610784821\n", + "E(SCS-UMP2) = -1032.08151750841 E_corr = -0.697269422113142\n", + "\n", + "74\n", + "E(UMP2) = -1032.17071416528 E_corr = -0.786466078981374\n", + "E(SCS-UMP2) = -1032.08151791218 E_corr = -0.697269825883094\n", + "\n", + "75\n", + "E(UMP2) = -1032.17071418297 E_corr = -0.786466096673674\n", + "E(SCS-UMP2) = -1032.08151792939 E_corr = -0.697269843090002\n", + "\n", + "76\n", + "E(UMP2) = -1032.17071435809 E_corr = -0.786466271788699\n", + "E(SCS-UMP2) = -1032.08151810915 E_corr = -0.697270022850754\n", + "\n", + "77\n", + "E(UMP2) = -1032.17071446127 E_corr = -0.786466374972562\n", + "E(SCS-UMP2) = -1032.08151821217 E_corr = -0.69727012587095\n", + "\n", + "78\n", + "E(UMP2) = -1032.17071448125 E_corr = -0.786466394955828\n", + "E(SCS-UMP2) = -1032.0815182307 E_corr = -0.69727014440258\n", + "\n", + "79\n", + "E(UMP2) = -1032.17090078803 E_corr = -0.786652701730534\n", + "E(SCS-UMP2) = -1032.08168156491 E_corr = -0.697433478616247\n", + "\n", + "80\n", + "E(UMP2) = -1032.17117106163 E_corr = -0.7869229753326\n", + "E(SCS-UMP2) = -1032.08191957281 E_corr = -0.697671486514558\n", + "\n", + "81\n", + "E(UMP2) = -1032.17122399389 E_corr = -0.786975907588503\n", + "E(SCS-UMP2) = -1032.0819663016 E_corr = -0.697718215300535\n", + "\n", + "82\n", + "E(UMP2) = -1032.17122596268 E_corr = -0.786977876382551\n", + "E(SCS-UMP2) = -1032.08196802181 E_corr = -0.697719935511567\n", + "\n", + "83\n", + "E(UMP2) = -1032.17124664643 E_corr = -0.786998560128352\n", + "E(SCS-UMP2) = -1032.08198756361 E_corr = -0.697739477309779\n", + "\n", + "84\n", + "E(UMP2) = -1032.17127166841 E_corr = -0.78702358210811\n", + "E(SCS-UMP2) = -1032.08201073792 E_corr = -0.69776265162638\n", + "\n", + "85\n", + "E(UMP2) = -1032.17127253975 E_corr = -0.787024453448866\n", + "E(SCS-UMP2) = -1032.08201149975 E_corr = -0.697763413448598\n", + "\n", + "86\n", + "E(UMP2) = -1032.17137181648 E_corr = -0.787123730182708\n", + "E(SCS-UMP2) = -1032.08210444681 E_corr = -0.697856360516146\n", + "\n", + "87\n", + "E(UMP2) = -1032.17145174954 E_corr = -0.787203663240551\n", + "E(SCS-UMP2) = -1032.08217417774 E_corr = -0.697926091439505\n", + "\n", + "88\n", + "E(UMP2) = -1032.17149374489 E_corr = -0.787245658593483\n", + "E(SCS-UMP2) = -1032.08221082813 E_corr = -0.697962741828274\n", + "\n", + "89\n", + "E(UMP2) = -1032.17162153351 E_corr = -0.787373447213061\n", + "E(SCS-UMP2) = -1032.08232312128 E_corr = -0.698075034980337\n", + "\n", + "90\n", + "E(UMP2) = -1032.17169822997 E_corr = -0.787450143667845\n", + "E(SCS-UMP2) = -1032.08238983256 E_corr = -0.698141746266446\n", + "\n", + "91\n", + "E(UMP2) = -1032.1720277708 E_corr = -0.787779684504894\n", + "E(SCS-UMP2) = -1032.08269770689 E_corr = -0.698449620591264\n", + "\n", + "92\n", + "E(UMP2) = -1032.17219308517 E_corr = -0.787944998872533\n", + "E(SCS-UMP2) = -1032.08285180403 E_corr = -0.698603717728937\n", + "\n", + "93\n", + "E(UMP2) = -1032.17224848942 E_corr = -0.788000403120256\n", + "E(SCS-UMP2) = -1032.08289999104 E_corr = -0.698651904745516\n", + "\n", + "94\n", + "E(UMP2) = -1032.17233908945 E_corr = -0.788091003156539\n", + "E(SCS-UMP2) = -1032.08297914634 E_corr = -0.698731060041519\n", + "\n", + "95\n", + "E(UMP2) = -1032.17236876338 E_corr = -0.788120677079991\n", + "E(SCS-UMP2) = -1032.08300504409 E_corr = -0.698756957789687\n", + "\n", + "96\n", + "E(UMP2) = -1032.17237607964 E_corr = -0.788127993336958\n", + "E(SCS-UMP2) = -1032.08301145397 E_corr = -0.698763367671399\n", + "\n", + "97\n", + "E(UMP2) = -1032.17238965112 E_corr = -0.788141564822371\n", + "E(SCS-UMP2) = -1032.08302404133 E_corr = -0.698775955029901\n", + "\n", + "98\n", + "E(UMP2) = -1032.17239491425 E_corr = -0.788146827948558\n", + "E(SCS-UMP2) = -1032.08302868157 E_corr = -0.698780595273963\n", + "\n", + "99\n", + "E(UMP2) = -1032.17239519844 E_corr = -0.788147112142574\n", + "E(SCS-UMP2) = -1032.08302896704 E_corr = -0.698780880742198\n", + "\n", + "100\n", + "E(UMP2) = -1032.17239589247 E_corr = -0.788147806173524\n", + "E(SCS-UMP2) = -1032.0830296619 E_corr = -0.698781575600317\n", + "\n", + "101\n", + "E(UMP2) = -1032.1723963277 E_corr = -0.78814824140474\n", + "E(SCS-UMP2) = -1032.08303003971 E_corr = -0.698781953407357\n", + "\n", + "102\n", + "E(UMP2) = -1032.17239693254 E_corr = -0.788148846237427\n", + "E(SCS-UMP2) = -1032.0830306374 E_corr = -0.698782551105131\n", + "\n", + "103\n", + "E(UMP2) = -1032.17240198479 E_corr = -0.78815389848715\n", + "E(SCS-UMP2) = -1032.08303524803 E_corr = -0.698787161727891\n", + "\n", + "104\n", + "E(UMP2) = -1032.17240214238 E_corr = -0.788154056079508\n", + "E(SCS-UMP2) = -1032.08303540393 E_corr = -0.698787317627894\n", + "\n", + "105\n", + "E(UMP2) = -1032.17240514401 E_corr = -0.788157057707653\n", + "E(SCS-UMP2) = -1032.08303812886 E_corr = -0.698790042559506\n", + "\n", + "106\n", + "E(UMP2) = -1032.17240692345 E_corr = -0.788158837150381\n", + "E(SCS-UMP2) = -1032.08303975185 E_corr = -0.698791665552147\n", + "\n", + "107\n", + "E(UMP2) = -1032.17240943878 E_corr = -0.788161352485395\n", + "E(SCS-UMP2) = -1032.08304204678 E_corr = -0.69879396047895\n", + "\n", + "108\n", + "E(UMP2) = -1032.17241076218 E_corr = -0.788162675886359\n", + "E(SCS-UMP2) = -1032.08304336984 E_corr = -0.698795283543097\n", + "\n", + "109\n", + "E(UMP2) = -1032.17241206671 E_corr = -0.788163980415909\n", + "E(SCS-UMP2) = -1032.08304457106 E_corr = -0.698796484758406\n", + "\n", + "110\n", + "E(UMP2) = -1032.17241225908 E_corr = -0.788164172780037\n", + "E(SCS-UMP2) = -1032.08304474772 E_corr = -0.698796661418406\n", + "\n", + "111\n", + "E(UMP2) = -1032.17241227485 E_corr = -0.788164188552882\n", + "E(SCS-UMP2) = -1032.08304476378 E_corr = -0.698796677483374\n", + "\n", + "112\n", + "E(UMP2) = -1032.17241262782 E_corr = -0.788164541516956\n", + "E(SCS-UMP2) = -1032.08304506896 E_corr = -0.698796982661678\n", + "\n", + "113\n", + "E(UMP2) = -1032.17241262782 E_corr = -0.788164541518418\n", + "E(SCS-UMP2) = -1032.08304506896 E_corr = -0.698796982662989\n", + "\n", + "114\n", + "E(UMP2) = -1032.17241262782 E_corr = -0.788164541518658\n", + "E(SCS-UMP2) = -1032.08304506896 E_corr = -0.698796982663209\n", + "\n", + "115\n", + "E(UMP2) = -1032.17241262782 E_corr = -0.788164541518811\n", + "E(SCS-UMP2) = -1032.08304506896 E_corr = -0.698796982663353\n", + "\n", + "116\n", + "E(UMP2) = -1032.17241262782 E_corr = -0.788164541523968\n", + "E(SCS-UMP2) = -1032.08304506897 E_corr = -0.698796982667878\n", + "\n", + "117\n", + "E(UMP2) = -1032.17241262784 E_corr = -0.788164541537631\n", + "E(SCS-UMP2) = -1032.08304506898 E_corr = -0.698796982679862\n", + "\n", + "118\n", + "E(UMP2) = -1032.17241262784 E_corr = -0.788164541538092\n", + "E(SCS-UMP2) = -1032.08304506898 E_corr = -0.6987969826803\n", + "\n", + "119\n", + "E(UMP2) = -1032.17241262785 E_corr = -0.788164541554032\n", + "E(SCS-UMP2) = -1032.08304506899 E_corr = -0.698796982694076\n", + "\n", + "120\n", + "E(UMP2) = -1032.17241262785 E_corr = -0.788164541554166\n", + "E(SCS-UMP2) = -1032.08304506899 E_corr = -0.698796982694203\n", + "\n", + "121\n", + "E(UMP2) = -1032.17241262785 E_corr = -0.788164541554374\n", + "E(SCS-UMP2) = -1032.08304506899 E_corr = -0.698796982694399\n", + "\n", + "122\n", + "E(UMP2) = -1032.17241262785 E_corr = -0.78816454155607\n", + "E(SCS-UMP2) = -1032.08304506899 E_corr = -0.69879698269602\n", + "\n", + "123\n", + "E(UMP2) = -1032.17241262786 E_corr = -0.788164541561695\n", + "E(SCS-UMP2) = -1032.083045069 E_corr = -0.698796982700837\n", + "\n", + "124\n", + "E(UMP2) = -1032.17241262787 E_corr = -0.788164541572621\n", + "E(SCS-UMP2) = -1032.08304506901 E_corr = -0.698796982710698\n", + "\n", + "125\n", + "E(UMP2) = -1032.17241262789 E_corr = -0.788164541590059\n", + "E(SCS-UMP2) = -1032.08304506902 E_corr = -0.698796982726427\n", + "\n", + "126\n", + "E(UMP2) = -1032.17241262789 E_corr = -0.788164541590701\n", + "E(SCS-UMP2) = -1032.08304506903 E_corr = -0.698796982727063\n", + "\n", + "127\n", + "E(UMP2) = -1032.17241262789 E_corr = -0.788164541591457\n", + "E(SCS-UMP2) = -1032.08304506903 E_corr = -0.698796982727791\n", + "\n", + "128\n", + "E(UMP2) = -1032.1724126279 E_corr = -0.78816454159788\n", + "E(SCS-UMP2) = -1032.08304506903 E_corr = -0.69879698273332\n", + "\n", + "129\n", + "E(UMP2) = -1032.17241262793 E_corr = -0.788164541628126\n", + "E(SCS-UMP2) = -1032.08304506906 E_corr = -0.698796982760641\n", + "\n", + "130\n", + "E(UMP2) = -1032.17241262793 E_corr = -0.788164541628301\n", + "E(SCS-UMP2) = -1032.08304506906 E_corr = -0.698796982760799\n", + "\n", + "131\n", + "E(UMP2) = -1032.17241262793 E_corr = -0.788164541631247\n", + "E(SCS-UMP2) = -1032.08304506906 E_corr = -0.698796982763579\n", + "\n", + "132\n", + "E(UMP2) = -1032.17241262793 E_corr = -0.788164541631726\n", + "E(SCS-UMP2) = -1032.08304506906 E_corr = -0.698796982763996\n", + "\n", + "133\n", + "E(UMP2) = -1032.17241262793 E_corr = -0.788164541631847\n", + "E(SCS-UMP2) = -1032.08304506906 E_corr = -0.698796982764115\n", + "\n", + "134\n", + "E(UMP2) = -1032.17241262794 E_corr = -0.788164541639151\n", + "E(SCS-UMP2) = -1032.08304506907 E_corr = -0.698796982770369\n", + "\n", + "135\n", + "E(UMP2) = -1032.17241262794 E_corr = -0.788164541639242\n", + "E(SCS-UMP2) = -1032.08304506907 E_corr = -0.698796982770458\n", + "\n", + "136\n", + "E(UMP2) = -1032.17241262794 E_corr = -0.788164541642762\n", + "E(SCS-UMP2) = -1032.08304506907 E_corr = -0.698796982773894\n", + "\n", + "137\n", + "E(UMP2) = -1032.17241262795 E_corr = -0.788164541652303\n", + "E(SCS-UMP2) = -1032.08304506908 E_corr = -0.698796982783254\n", + "\n", + "138\n", + "E(UMP2) = -1032.17241262796 E_corr = -0.788164541661805\n", + "E(SCS-UMP2) = -1032.08304506909 E_corr = -0.698796982792585\n", + "\n", + "139\n", + "E(UMP2) = -1032.17241262796 E_corr = -0.788164541662222\n", + "E(SCS-UMP2) = -1032.08304506909 E_corr = -0.698796982792988\n", + "\n", + "140\n", + "E(UMP2) = -1032.17241262796 E_corr = -0.78816454166594\n", + "E(SCS-UMP2) = -1032.08304506909 E_corr = -0.698796982796672\n", + "\n", + "141\n", + "E(UMP2) = -1032.17241262797 E_corr = -0.788164541668704\n", + "E(SCS-UMP2) = -1032.0830450691 E_corr = -0.698796982799366\n", + "\n" + ] + } + ], + "source": [ + "from pyscf import cc, mp\n", + "\n", + "results = []\n", + "converged = []\n", + "for top_frozen in range(max(mf_embed.mol.nelec), mf_embed.mol.nao):\n", + " print(top_frozen)\n", + " mp2 = mp.MP2(mf_embed)(frozen=[*range(top_frozen, mf_embed.mol.nao)], max_cycle=100)\n", + " results.append(mp2.kernel())\n", + " # converged.append(ccsd.converged)\n", + " print()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "9a76cc3f", + "metadata": {}, + "outputs": [], + "source": [ + "# import json\n", + "# with open(\"zinc_virtuals.json\", \"r\") as f:\n", + " # data = json.load(f)\n", + "data = {}\n", + "data[\"results\"] = results\n", + "data[\"converged\"]=converged" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "c2db6c76", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[ 0. -0.00271284 -0.01044201 -0.01673233 -0.0257269 -0.05247014\n", + " -0.07467972 -0.11669172 -0.16307887 -0.20256524 -0.25652547 -0.27580171\n", + " -0.30654854 -0.38428099 -0.42215072 -0.50193833 -0.55274969 -0.60664627\n", + " -0.65010113 -0.69260966 -0.73597436 -0.73740244 -0.73858936 -0.73926124\n", + " -0.73974037 -0.74001831 -0.74068527 -0.74271301 -0.74460457 -0.7472208\n", + " -0.75335363 -0.76446834 -0.77429294 -0.78274016 -0.78298115 -0.78417166\n", + " -0.78420037 -0.78421335 -0.78551925 -0.78552954 -0.78566599 -0.78580065\n", + " -0.78594072 -0.78605365 -0.7861563 -0.78623703 -0.78629945 -0.78629983\n", + " -0.7863325 -0.78636278 -0.78638907 -0.7864092 -0.78643057 -0.78643964\n", + " -0.78644566 -0.7864538 -0.78646084 -0.78646395 -0.7864647 -0.78646561\n", + " -0.78646608 -0.7864661 -0.78646627 -0.78646637 -0.78646639 -0.7866527\n", + " -0.78692298 -0.78697591 -0.78697788 -0.78699856 -0.78702358 -0.78702445\n", + " -0.78712373 -0.78720366 -0.78724566 -0.78737345 -0.78745014 -0.78777968\n", + " -0.787945 -0.7880004 -0.788091 -0.78812068 -0.78812799 -0.78814156\n", + " -0.78814683 -0.78814711 -0.78814781 -0.78814824 -0.78814885 -0.7881539\n", + " -0.78815406 -0.78815706 -0.78815884 -0.78816135 -0.78816268 -0.78816398\n", + " -0.78816417 -0.78816419 -0.78816454 -0.78816454 -0.78816454 -0.78816454\n", + " -0.78816454 -0.78816454 -0.78816454 -0.78816454 -0.78816454 -0.78816454\n", + " -0.78816454 -0.78816454 -0.78816454 -0.78816454 -0.78816454 -0.78816454\n", + " -0.78816454 -0.78816454 -0.78816454 -0.78816454 -0.78816454 -0.78816454\n", + " -0.78816454 -0.78816454 -0.78816454 -0.78816454 -0.78816454 -0.78816454\n", + " -0.78816454 -0.78816454]\n", + "[7.88164542e-01 7.85451706e-01 7.77722527e-01 7.71432207e-01\n", + " 7.62437646e-01 7.35694400e-01 7.13484819e-01 6.71472826e-01\n", + " 6.25085675e-01 5.85599300e-01 5.31639070e-01 5.12362833e-01\n", + " 4.81616003e-01 4.03883556e-01 3.66013824e-01 2.86226210e-01\n", + " 2.35414847e-01 1.81518268e-01 1.38063413e-01 9.55548806e-02\n", + " 5.21901809e-02 5.07620987e-02 4.95751776e-02 4.89032975e-02\n", + " 4.84241732e-02 4.81462271e-02 4.74792678e-02 4.54515281e-02\n", + " 4.35599725e-02 4.09437446e-02 3.48109090e-02 2.36962037e-02\n", + " 1.38715981e-02 5.42438592e-03 5.18339325e-03 3.99288400e-03\n", + " 3.96417127e-03 3.95119331e-03 2.64529470e-03 2.63500331e-03\n", + " 2.49855433e-03 2.36388842e-03 2.22382343e-03 2.11088739e-03\n", + " 2.00823824e-03 1.92751200e-03 1.86509625e-03 1.86471093e-03\n", + " 1.83203745e-03 1.80176055e-03 1.77546669e-03 1.75534360e-03\n", + " 1.73396894e-03 1.72489672e-03 1.71888435e-03 1.71074661e-03\n", + " 1.70369865e-03 1.70058988e-03 1.69984426e-03 1.69893088e-03\n", + " 1.69846269e-03 1.69844500e-03 1.69826988e-03 1.69816670e-03\n", + " 1.69814671e-03 1.51183994e-03 1.24156634e-03 1.18863408e-03\n", + " 1.18666529e-03 1.16598154e-03 1.14095956e-03 1.14008822e-03\n", + " 1.04081149e-03 9.60878428e-04 9.18883075e-04 7.91094456e-04\n", + " 7.14398001e-04 3.84857164e-04 2.19542796e-04 1.64138548e-04\n", + " 7.35385122e-05 4.38645887e-05 3.65483317e-05 2.29768463e-05\n", + " 1.77137201e-05 1.74295261e-05 1.67354952e-05 1.63002640e-05\n", + " 1.56954313e-05 1.06431816e-05 1.04855892e-05 7.48396105e-06\n", + " 5.70451832e-06 3.18918331e-06 1.86578234e-06 5.61252795e-07\n", + " 3.68888667e-07 3.53115821e-07 1.51747503e-10 1.50286006e-10\n", + " 1.50045754e-10 1.49892321e-10 1.44735668e-10 1.31072930e-10\n", + " 1.30612188e-10 1.14671383e-10 1.14537602e-10 1.14329657e-10\n", + " 1.12634124e-10 1.07008957e-10 9.60831414e-11 7.86449794e-11\n", + " 7.80031595e-11 7.72464315e-11 7.08237913e-11 4.05775413e-11\n", + " 4.04031253e-11 3.74571485e-11 3.69775321e-11 3.68567399e-11\n", + " 2.95528046e-11 2.94622104e-11 2.59414712e-11 1.64003255e-11\n", + " 6.89914792e-12 6.48159304e-12 2.76345613e-12 0.00000000e+00]\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "energy = np.array([r[0] for r in data[\"results\"]])\n", + "print(energy)\n", + "energy_error = abs(energy - min(energy))\n", + "print(energy_error)\n", + "plt.plot(energy_error, color=\"tab:blue\")\n", + "plt.yscale(\"log\")\n", + "plt.title(\"MP2 Energy vs Virtual Orbital Space\")\n", + "plt.vlines([ind - max(mf_embed.mol.nelec) for ind in [48, 82, 116, 142]], ymin=0, ymax=max(energy_error), color=\"tab:red\")" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "82fcfd60", + "metadata": {}, + "outputs": [ + { + "ename": "ValueError", + "evalue": "setting an array element with a sequence. The requested array has an inhomogeneous shape after 2 dimensions. The detected shape was (128, 2) + inhomogeneous part.", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[8], line 3\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mmatplotlib\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mpyplot\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mas\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mplt\u001b[39;00m\n\u001b[1;32m 2\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mnumpy\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mas\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mnp\u001b[39;00m\n\u001b[0;32m----> 3\u001b[0m energy \u001b[38;5;241m=\u001b[39m \u001b[43mnp\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43marray\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdata\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mresults\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 4\u001b[0m \u001b[38;5;28mprint\u001b[39m(energy)\n\u001b[1;32m 5\u001b[0m energy_error \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mabs\u001b[39m(energy \u001b[38;5;241m-\u001b[39m \u001b[38;5;28mmin\u001b[39m(energy))\n", + "\u001b[0;31mValueError\u001b[0m: setting an array element with a sequence. The requested array has an inhomogeneous shape after 2 dimensions. The detected shape was (128, 2) + inhomogeneous part." + ] + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "energy = np.array(data[\"results\"])\n", + "print(energy)\n", + "energy_error = abs(energy - min(energy))\n", + "print(energy_error)\n", + "converged_results = energy_error[data[\"converged\"]]\n", + "unconverged_results = energy_error[np.bitwise_not(data[\"converged\"])]\n", + "print(energy_error[:-1])\n", + "plt.plot(np.arange(0,len(converged_results)), converged_results, color=\"tab:blue\")\n", + "plt.plot(np.arange(len(converged_results), len(converged_results) + len(unconverged_results)), unconverged_results, color=\"tab:red\")\n", + "plt.yscale(\"log\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f865a9d5", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[6.48223022e-08 4.03988452e-08 1.62438027e-08 1.61350044e-08\n", + " 1.58516968e-08 1.56089754e-08 1.54094550e-08 1.53653446e-08\n", + " 1.52874691e-08 1.40629481e-08 7.58507213e-09 7.20024218e-09\n", + " 6.82382506e-09 1.89061211e-10]\n" + ] + }, + { + "data": { + "image/png": "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m3XxxRdbUKnFTBzXzJkzzaqqqsTzaDRqFhcXmwsXLrSwquRSW1trSjJff/11q0uxXFNTk1lWVma++uqr5sc//nHz5ptvtroky9x+++3meeedZ3UZSefCCy80r7vuuh7HLrvsMvOqq66yqCJrSTIXL16ceB6Lxczhw4ebDzzwQOLYoUOHTL/fbz777LMWVGiNw+/LkaxevdqUZO7cuXNwikoStLwcRzgc1po1azRnzpzEMZfLpTlz5mjFihUWVpZcGhoaJEl5eXkWV2K9qqoqXXjhhT3+nUlVL7/8smbMmKErrrhChYWFOuuss/T4449bXZblzj33XC1dulRbtmyRJL399tt644039OlPf9riypLDjh07tG/fvh7/DeXm5qqyspK/u4dpaGiQYRgaMmSI1aUMKsdtzDjQ6urqFI1GVVRU1ON4UVGR3nvvPYuqSi6xWEy33HKLZs+erUmTJlldjqWee+45rV27VtXV1VaXkhS2b9+uRx55RPPnz9f3vvc9VVdX66abbpLP59O8efOsLs8yCxYsUGNjo8444wy53W5Fo1Hdc889uuqqq6wuLSns27dPko74dzf+GqS2tjbdfvvtuvLKKx29WeOREF5w0qqqqrRhwwa98cYbVpdiqd27d+vmm2/Wq6++qrS0NKvLSQqxWEwzZszQvffeK0k666yztGHDBj366KMpHV5++9vf6umnn9YzzzyjiRMnat26dbrllltUXFyc0vcFfReJRPSFL3xBpmnqkUcesbqcQUe30XEUFBTI7Xarpqamx/GamhoNHz7coqqSxw033KAlS5botdde08iRI60ux1Jr1qxRbW2tzj77bHk8Hnk8Hr3++ut66KGH5PF4FI1GrS5x0I0YMULl5eU9jp155pnatWuXRRUlh9tuu00LFizQl770JU2ePFlf+cpXdOutt2rhwoVWl5YU4n9b+bt7ZPHgsnPnTr366qsp1+oiEV6Oy+fzafr06Vq6dGniWCwW09KlSzVr1iwLK7OWaZq64YYbtHjxYv3tb3/TmDFjrC7JchdccIHWr1+vdevWJb5mzJihq666SuvWrZPb7ba6xEE3e/bsXlPot2zZolGjRllUUXJoaWmRy9Xzz6/b7VYsFrOoouQyZswYDR8+vMff3cbGRq1atSql/+5KXcFl69at+utf/6r8/HyrS7IE3UZ9MH/+fM2bN08zZszQzJkz9eCDDyoYDOraa6+1ujTLVFVV6ZlnntFLL72k7OzsRD90bm6u0tPTLa7OGtnZ2b3G/GRmZio/Pz9lxwLdeuutOvfcc3XvvffqC1/4glavXq3HHntMjz32mNWlWeqiiy7SPffco9LSUk2cOFH/+Mc/9B//8R+67rrrrC5t0DQ3N2vbtm2J5zt27NC6deuUl5en0tJS3XLLLfrRj36ksrIyjRkzRnfeeaeKi4t16aWXWlf0IDjWfRkxYoQuv/xyrV27VkuWLFE0Gk387c3Ly5PP57Oq7MFn9XQnu3j44YfN0tJS0+fzmTNnzjRXrlxpdUmWknTEryeffNLq0pJKqk+VNk3T/OMf/2hOmjTJ9Pv95hlnnGE+9thjVpdkucbGRvPmm282S0tLzbS0NHPs2LHm97//fTMUClld2qB57bXXjvg3ZN68eaZpdkyXvvPOO82ioiLT7/ebF1xwgbl582Zrix4Ex7ovO3bsOOrf3tdee83q0geVYZoptKQjAACwPca8AAAAWyG8AAAAWyG8AAAAWyG8AAAAWyG8AAAAWyG8AAAAWyG8AAAAWyG8AAAAWyG8AAAAWyG8AAAAWyG8AAAAWyG8AAAAW/n/VkdutWtkaEkAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "energy = np.array(data[\"results\"])\n", + "converged_results = energy[data[\"converged\"]]\n", + "energy_error = np.abs(converged_results - min(converged_results))[:-1]\n", + "print(energy_error)\n", + "plt.plot(np.arange(0,len(energy_error)), energy_error, color=\"tab:blue\")\n", + "plt.yscale(\"log\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2d20e372", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "E(UCCSD) = -1004.339535153026 E_corr = -6.888764718540948e-07\n", + "E(UCCSD) = -1004.339535239557 E_corr = -7.754072092091179e-07\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from pyscf import cc\n", + "ccsd = cc.CCSD(mf_embed, frozen=[0,1,2,3,4]+[*range(32, mf_embed.mol.nao)])\n", + "ccsd.run()\n", + "ccsd = cc.CCSD(mf_embed, frozen=[*range(32, mf_embed.mol.nao)])\n", + "ccsd.run()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "bc92e9f2", + "metadata": {}, + "outputs": [], + "source": [ + "# import json\n", + "# with open(\"singlet.json\", \"w+\") as f:\n", + "# json.dump([r[0] for r in data[\"results\"]], f)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e383bf55", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "PythonProjectorEmbedding (3.8.20)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.20" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/test_run_example.py b/test_run_example.py new file mode 100644 index 0000000..b627198 --- /dev/null +++ b/test_run_example.py @@ -0,0 +1,285 @@ +import os +import time + +from pyscf import gto, scf +from projectorEmbedding import embedding_procedure +from projectorEmbedding.embed_partition import mulliken_partition + +start_time = time.time() + +water = """ +O 0.00000 0.000 0.115 +H 0.00000 0.754 -0.459 +H1 0.00000 -0.754 -0.459 +""" + +Iron = """ +Fe 0.00000000 0.00000000 0.00000000 +C -1.81917027 -0.03335831 -0.71926660 +N -2.91104648 -0.05028038 -1.14336000 +C -0.26363647 1.81748256 0.66107639 +N -0.39650765 2.91674740 1.04361053 +C -0.65245477 -0.72431645 1.71356864 +N -1.01949658 -1.14265108 2.74378932 +C 0.26492194 -1.81715092 -0.66122605 +N 0.39946334 -2.91608401 -1.04407649 +C 0.65377106 0.72497185 -1.71283131 +N 1.02222110 1.14453278 -2.74209377 +C 1.81942656 0.03289085 0.71938992 +N 2.91151676 0.04957108 1.14269602 + """ + + +complex1 = """ +V 5.34800 8.22940 9.95180 +C 4.83030 9.96040 8.89490 +C 3.75140 6.88460 9.79650 +C 5.59960 8.73400 11.96610 +C 7.05430 7.30710 9.15770 +C 5.47230 10.28360 7.69410 +H 6.20920 9.75000 7.41950 +C 5.08920 11.34560 6.88210 +H 5.55020 11.52510 6.07140 +C 4.02610 12.13490 7.27450 +H 3.73800 12.85360 6.72410 +C 3.38500 11.87760 8.46430 +H 2.66760 12.43810 8.73610 +C 3.76250 10.81770 9.27580 +C 3.05790 10.58760 10.59350 +H 2.73890 9.66260 10.63660 +H 2.29580 11.20000 10.66720 +H 3.68180 10.75330 11.33090 +C 2.54390 7.32670 9.22530 +H 2.50290 8.20460 8.86450 +C 1.41770 6.53300 9.17020 +H 0.61550 6.86810 8.78790 +C 1.46240 5.25030 9.67220 +H 0.68840 4.70000 9.64150 +C 2.64020 4.76520 10.22260 +H 2.67140 3.87850 10.56210 +C 3.76900 5.56240 10.28060 +C 5.03430 4.99640 10.87630 +H 5.73480 4.97230 10.19200 +H 4.86360 4.08780 11.20170 +H 5.32480 5.56140 11.62240 +C 4.76890 8.10770 12.91990 +H 4.17870 7.42100 12.63130 +C 4.78070 8.45510 14.25500 +H 4.21140 8.00880 14.87100 +C 5.62490 9.45560 14.68830 +H 5.63460 9.70910 15.60360 +C 6.45620 10.08490 13.78300 +H 7.04020 10.77090 14.08490 +C 6.45300 9.73440 12.43660 +C 7.38200 10.45950 11.48660 +H 7.68040 11.29740 11.89720 +H 6.90810 10.65480 10.65140 +H 8.15990 9.89390 11.29600 +C 8.16850 7.10050 9.99920 +H 8.12970 7.41880 10.89350 +C 9.31520 6.45170 9.57240 +H 10.04710 6.33300 10.16600 +C 9.38560 5.98000 8.27760 +H 10.17160 5.54070 7.97280 +C 8.31480 6.14590 7.42920 +H 8.36660 5.81650 6.53950 +C 7.15740 6.78950 7.85750 +C 5.99860 6.92540 6.89520 +H 6.25070 7.52520 6.16290 +H 5.22330 7.29290 7.36750 +H 5.77170 6.04340 6.53160 +""" + +complex2 = """ +Mo 5.92450 5.92450 3.94650 +C 4.17800 5.61050 2.78710 +C 3.03690 6.37710 3.09570 +H 3.09220 7.05450 3.76000 +C 1.82360 6.15440 2.43580 +H 1.06170 6.68190 2.64260 +C 1.74300 5.15910 1.48070 +H 0.91400 4.98190 1.05220 +C 2.86390 4.41970 1.14450 +H 2.79960 3.75100 0.47320 +C 4.09030 4.64360 1.77830 +C 5.30010 3.89710 1.32050 +H 5.95050 4.52740 0.94620 +H 5.04200 3.24770 0.63340 +H 5.70060 3.42690 2.08080 +C 7.67100 6.23850 2.78710 +C 8.81210 5.47190 3.09570 +H 8.75680 4.79450 3.76000 +C 10.02540 5.69460 2.43580 +H 10.78730 5.16710 2.64260 +C 10.10600 6.68990 1.48070 +H 10.93500 6.86710 1.05220 +C 8.98510 7.42930 1.14450 +H 9.04940 8.09800 0.47320 +C 7.75870 7.20540 1.77830 +C 6.54890 7.95190 1.32050 +H 5.89850 7.32160 0.94620 +H 6.80700 8.60130 0.63340 +H 6.14840 8.42210 2.08080 +C 5.61050 7.67100 5.10600 +C 6.37710 8.81210 4.79740 +H 7.05450 8.75680 4.13310 +C 6.15440 10.02540 5.45730 +H 6.68190 10.78730 5.25050 +C 5.15910 10.10600 6.41240 +H 4.98190 10.93500 6.84090 +C 4.41970 8.98510 6.74860 +H 3.75100 9.04940 7.41990 +C 4.64360 7.75870 6.11480 +C 3.89710 6.54890 6.57260 +H 4.52740 5.89850 6.94690 +H 3.24770 6.80700 7.25970 +H 3.42690 6.14840 5.81230 +C 6.23850 4.17800 5.10600 +C 5.47190 3.03690 4.79740 +H 4.79450 3.09220 4.13310 +C 5.69460 1.82360 5.45730 +H 5.16710 1.06170 5.25050 +C 6.68990 1.74300 6.41240 +H 6.86710 0.91400 6.84090 +C 7.42930 2.86390 6.74860 +H 8.09800 2.79960 7.41990 +C 7.20540 4.09030 6.11480 +C 7.95190 5.30010 6.57260 +H 7.32160 5.95050 6.94690 +H 8.60130 5.04200 7.25970 +H 8.42210 5.70060 5.81230 +""" + +complex4 = """ +Cr 8.00940 15.16000 8.33100 +C 9.77950 15.29670 9.23370 +C 7.68320 18.00440 8.72990 +H 8.56330 17.91140 9.07480 +C 10.04640 15.72710 10.53250 +C 7.00720 13.78410 9.36330 +C 7.01270 16.87370 8.28050 +C 12.40040 15.28860 10.16620 +H 13.29260 15.30170 10.49230 +C 5.87640 14.27490 10.08150 +H 5.67650 15.20260 10.05560 +C 5.71410 17.01880 7.74780 +C 7.32240 12.42680 9.46410 +C 10.85430 14.82890 8.42280 +H 10.67380 14.51380 7.54560 +C 8.84010 15.54530 5.45900 +C 11.37910 15.72840 10.96760 +H 11.58130 16.04380 11.84070 +C 8.96470 16.17390 11.46020 +H 8.73710 17.10790 11.27100 +H 9.27380 16.09340 12.38620 +H 8.17120 15.61220 11.33090 +C 5.82170 19.39430 8.19890 +H 5.40980 20.25090 8.17510 +C 8.19270 14.71470 6.39470 +C 5.13270 18.28810 7.74460 +H 4.24510 18.39280 7.42420 +C 12.14930 14.82610 8.89150 +H 12.85790 14.51030 8.34380 +C 6.46920 11.59050 10.19820 +H 6.66140 10.66170 10.24870 +C 4.94390 15.87380 7.15120 +H 5.52660 15.08840 7.08140 +H 4.62480 16.12360 6.25910 +H 4.17780 15.66130 7.72460 +C 7.56410 13.55000 5.95480 +H 7.10730 13.00200 6.58290 +C 7.10530 19.26600 8.68830 +H 7.58650 20.02680 8.99160 +C 8.21910 13.97280 3.71240 +H 8.23720 13.71420 2.79900 +C 5.35540 12.08510 10.84600 +H 4.77980 11.49580 11.32080 +C 8.82690 15.14890 4.10580 +H 9.24370 15.70020 3.45280 +C 9.51590 16.83840 5.83810 +H 8.87000 17.42760 6.27900 +H 9.86000 17.27560 5.03080 +H 10.25900 16.65130 6.44930 +C 7.59050 13.17620 4.62890 +H 7.17240 12.36990 4.35200 +C 5.07610 13.44240 10.80600 +H 4.33090 13.79040 11.28030 +C 8.56080 11.84730 8.86110 +H 8.59150 12.06460 7.90650 +H 8.55500 10.87450 8.97580 +H 9.34810 12.22430 9.30770 +""" + +radon2 = """ +Fe 0.00000000 0.00000000 -0.00000000 +N 1.67165559 0.33816772 -1.11907622 +N 1.27861235 -1.12868963 1.11907622 +N -1.12868963 1.27861235 -1.11907622 +N -0.54296596 -1.61678006 -1.11907622 +N 0.33816772 1.67165559 1.11907622 +N -1.61678006 -0.54296596 1.11907622 +C 2.74339410 -0.65169645 -0.74834317 +C 2.70169721 -0.80731137 0.74834317 +C -0.80731137 2.70169721 -0.74834317 +C -1.93608273 -2.05000076 -0.74834317 +C -0.65169645 2.74339410 0.74834317 +C -2.05000076 -1.93608273 0.74834317 +H 2.04660549 1.27965223 -0.98898510 +H 3.72135501 -0.31049043 -1.09603467 +H 1.51176615 0.27687304 -2.12699353 +H 2.52555842 -1.59444614 -1.25618563 +H 1.13258622 -2.13151409 0.98898510 +H 2.98442082 0.11805165 1.25618563 +H 1.17079138 -0.99566216 2.12699353 +H 3.37803319 -1.59178491 1.09603467 +H -2.13151409 1.13258622 -0.98898510 +H -0.99566216 1.17079138 -2.12699353 +H 0.08490860 -2.41223846 -0.98898510 +H -0.51610399 -1.44766441 -2.12699353 +H 1.27965223 2.04660549 0.98898510 +H 0.27687304 1.51176615 2.12699353 +H -2.41223846 0.08490860 0.98898510 +H -1.44766441 -0.51610399 2.12699353 +H -1.59178491 3.37803319 -1.09603467 +H 0.11805165 2.98442082 -1.25618563 +H -2.12957010 -3.06754276 -1.09603467 +H -2.64361007 -1.38997469 -1.25618563 +H -1.59444614 2.52555842 1.25618563 +H -0.31049043 3.72135501 1.09603467 +H -1.38997469 -2.64361007 1.25618563 +H -3.06754276 -2.12957010 1.09603467 +""" + +print("Getting Mol") +mol = gto.Mole(atom=radon2, basis="sto-3g", charge=1, multiplicity=2).build() +print("Got mol") + +print("Running MF") +mf = scf.UKS(mol) +mf.xc = "B3LYP" +mf.max_cycle = 1000 +mf.diis_space = 12 +mf.kernel() +# print(mf.get_ovlp()) +# Print the energy +print("Kohn-Sham Energy:", mf.e_tot) + +print("Running embedding procedure.") +energy = embedding_procedure( + mf, + active_atoms=[0], + embed_meth="MP2", + mu_val=10**6, + trunc_lambda=0, + distribute_mos=mulliken_partition(), + diis_space=8, + max_cycle=50, + chk_file=None, + chk_start=None, + cc_econv=1e-07, + cc_tconv=1e-06, +) +print(energy) +end_time = time.time() +elapsed_time = end_time - start_time +print(f"Elapsed time: {elapsed_time:.2f} seconds") diff --git a/uv.lock b/uv.lock new file mode 100644 index 0000000..2e0b308 --- /dev/null +++ b/uv.lock @@ -0,0 +1,1621 @@ +version = 1 +revision = 3 +requires-python = "==3.8.*" + +[[package]] +name = "anyio" +version = "4.5.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "exceptiongroup" }, + { name = "idna" }, + { name = "sniffio" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/4d/f9/9a7ce600ebe7804daf90d4d48b1c0510a4561ddce43a596be46676f82343/anyio-4.5.2.tar.gz", hash = "sha256:23009af4ed04ce05991845451e11ef02fc7c5ed29179ac9a420e5ad0ac7ddc5b", size = 171293, upload-time = "2024-10-13T22:18:03.307Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1b/b4/f7e396030e3b11394436358ca258a81d6010106582422f23443c16ca1873/anyio-4.5.2-py3-none-any.whl", hash = "sha256:c011ee36bc1e8ba40e5a81cb9df91925c218fe9b778554e0b56a21e1b5d4716f", size = 89766, upload-time = "2024-10-13T22:18:01.524Z" }, +] + +[[package]] +name = "appnope" +version = "0.1.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/35/5d/752690df9ef5b76e169e68d6a129fa6d08a7100ca7f754c89495db3c6019/appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee", size = 4170, upload-time = "2024-02-06T09:43:11.258Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/81/29/5ecc3a15d5a33e31b26c11426c45c501e439cb865d0bff96315d86443b78/appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c", size = 4321, upload-time = "2024-02-06T09:43:09.663Z" }, +] + +[[package]] +name = "argon2-cffi" +version = "25.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "argon2-cffi-bindings" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0e/89/ce5af8a7d472a67cc819d5d998aa8c82c5d860608c4db9f46f1162d7dab9/argon2_cffi-25.1.0.tar.gz", hash = "sha256:694ae5cc8a42f4c4e2bf2ca0e64e51e23a040c6a517a85074683d3959e1346c1", size = 45706, upload-time = "2025-06-03T06:55:32.073Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4f/d3/a8b22fa575b297cd6e3e3b0155c7e25db170edf1c74783d6a31a2490b8d9/argon2_cffi-25.1.0-py3-none-any.whl", hash = "sha256:fdc8b074db390fccb6eb4a3604ae7231f219aa669a2652e0f20e16ba513d5741", size = 14657, upload-time = "2025-06-03T06:55:30.804Z" }, +] + +[[package]] +name = "argon2-cffi-bindings" +version = "21.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b9/e9/184b8ccce6683b0aa2fbb7ba5683ea4b9c5763f1356347f1312c32e3c66e/argon2-cffi-bindings-21.2.0.tar.gz", hash = "sha256:bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3", size = 1779911, upload-time = "2021-12-01T08:52:55.68Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d4/13/838ce2620025e9666aa8f686431f67a29052241692a3dd1ae9d3692a89d3/argon2_cffi_bindings-21.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ccb949252cb2ab3a08c02024acb77cfb179492d5701c7cbdbfd776124d4d2367", size = 29658, upload-time = "2021-12-01T09:09:17.016Z" }, + { url = "https://files.pythonhosted.org/packages/b3/02/f7f7bb6b6af6031edb11037639c697b912e1dea2db94d436e681aea2f495/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9524464572e12979364b7d600abf96181d3541da11e23ddf565a32e70bd4dc0d", size = 80583, upload-time = "2021-12-01T09:09:19.546Z" }, + { url = "https://files.pythonhosted.org/packages/ec/f7/378254e6dd7ae6f31fe40c8649eea7d4832a42243acaf0f1fff9083b2bed/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b746dba803a79238e925d9046a63aa26bf86ab2a2fe74ce6b009a1c3f5c8f2ae", size = 86168, upload-time = "2021-12-01T09:09:21.445Z" }, + { url = "https://files.pythonhosted.org/packages/74/f6/4a34a37a98311ed73bb80efe422fed95f2ac25a4cacc5ae1d7ae6a144505/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58ed19212051f49a523abb1dbe954337dc82d947fb6e5a0da60f7c8471a8476c", size = 82709, upload-time = "2021-12-01T09:09:18.182Z" }, + { url = "https://files.pythonhosted.org/packages/74/2b/73d767bfdaab25484f7e7901379d5f8793cccbb86c6e0cbc4c1b96f63896/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:bd46088725ef7f58b5a1ef7ca06647ebaf0eb4baff7d1d0d177c6cc8744abd86", size = 83613, upload-time = "2021-12-01T09:09:22.741Z" }, + { url = "https://files.pythonhosted.org/packages/4f/fd/37f86deef67ff57c76f137a67181949c2d408077e2e3dd70c6c42912c9bf/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_i686.whl", hash = "sha256:8cd69c07dd875537a824deec19f978e0f2078fdda07fd5c42ac29668dda5f40f", size = 84583, upload-time = "2021-12-01T09:09:24.177Z" }, + { url = "https://files.pythonhosted.org/packages/6f/52/5a60085a3dae8fded8327a4f564223029f5f54b0cb0455a31131b5363a01/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:f1152ac548bd5b8bcecfb0b0371f082037e47128653df2e8ba6e914d384f3c3e", size = 88475, upload-time = "2021-12-01T09:09:26.673Z" }, + { url = "https://files.pythonhosted.org/packages/8b/95/143cd64feb24a15fa4b189a3e1e7efbaeeb00f39a51e99b26fc62fbacabd/argon2_cffi_bindings-21.2.0-cp36-abi3-win32.whl", hash = "sha256:603ca0aba86b1349b147cab91ae970c63118a0f30444d4bc80355937c950c082", size = 27698, upload-time = "2021-12-01T09:09:27.87Z" }, + { url = "https://files.pythonhosted.org/packages/37/2c/e34e47c7dee97ba6f01a6203e0383e15b60fb85d78ac9a15cd066f6fe28b/argon2_cffi_bindings-21.2.0-cp36-abi3-win_amd64.whl", hash = "sha256:b2ef1c30440dbbcba7a5dc3e319408b59676e2e039e2ae11a8775ecf482b192f", size = 30817, upload-time = "2021-12-01T09:09:30.267Z" }, + { url = "https://files.pythonhosted.org/packages/5a/e4/bf8034d25edaa495da3c8a3405627d2e35758e44ff6eaa7948092646fdcc/argon2_cffi_bindings-21.2.0-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e415e3f62c8d124ee16018e491a009937f8cf7ebf5eb430ffc5de21b900dad93", size = 53104, upload-time = "2021-12-01T09:09:31.335Z" }, + { url = "https://files.pythonhosted.org/packages/34/da/d105a3235ae86c1c1a80c1e9c46953e6e53cc8c4c61fb3c5ac8a39bbca48/argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3b9ef65804859d335dc6b31582cad2c5166f0c3e7975f324d9ffaa34ee7e6583", size = 23689, upload-time = "2021-12-01T09:09:40.511Z" }, + { url = "https://files.pythonhosted.org/packages/43/f3/20bc53a6e50471dfea16a63dc9b69d2a9ec78fd2b9532cc25f8317e121d9/argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4966ef5848d820776f5f562a7d45fdd70c2f330c961d0d745b784034bd9f48d", size = 28122, upload-time = "2021-12-01T09:09:42.818Z" }, + { url = "https://files.pythonhosted.org/packages/2e/f1/48888db30b6a4a0c78ab7bc7444058a1135b223b6a2a5f2ac7d6780e7443/argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20ef543a89dee4db46a1a6e206cd015360e5a75822f76df533845c3cbaf72670", size = 27882, upload-time = "2021-12-01T09:09:43.93Z" }, + { url = "https://files.pythonhosted.org/packages/ee/0f/a2260a207f21ce2ff4cad00a417c31597f08eafb547e00615bcbf403d8ea/argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ed2937d286e2ad0cc79a7087d3c272832865f779430e0cc2b4f3718d3159b0cb", size = 30745, upload-time = "2021-12-01T09:09:41.73Z" }, + { url = "https://files.pythonhosted.org/packages/ed/55/f8ba268bc9005d0ca57a862e8f1b55bf1775e97a36bd30b0a8fb568c265c/argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:5e00316dabdaea0b2dd82d141cc66889ced0cdcbfa599e8b471cf22c620c329a", size = 28587, upload-time = "2021-12-01T09:09:45.508Z" }, +] + +[[package]] +name = "arrow" +version = "1.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "backports-zoneinfo" }, + { name = "python-dateutil" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b9/33/032cdc44182491aa708d06a68b62434140d8c50820a087fac7af37703357/arrow-1.4.0.tar.gz", hash = "sha256:ed0cc050e98001b8779e84d461b0098c4ac597e88704a655582b21d116e526d7", size = 152931, upload-time = "2025-10-18T17:46:46.761Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ed/c9/d7977eaacb9df673210491da99e6a247e93df98c715fc43fd136ce1d3d33/arrow-1.4.0-py3-none-any.whl", hash = "sha256:749f0769958ebdc79c173ff0b0670d59051a535fa26e8eba02953dc19eb43205", size = 68797, upload-time = "2025-10-18T17:46:45.663Z" }, +] + +[[package]] +name = "asttokens" +version = "3.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/be/a5/8e3f9b6771b0b408517c82d97aed8f2036509bc247d46114925e32fe33f0/asttokens-3.0.1.tar.gz", hash = "sha256:71a4ee5de0bde6a31d64f6b13f2293ac190344478f081c3d1bccfcf5eacb0cb7", size = 62308, upload-time = "2025-11-15T16:43:48.578Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d2/39/e7eaf1799466a4aef85b6a4fe7bd175ad2b1c6345066aa33f1f58d4b18d0/asttokens-3.0.1-py3-none-any.whl", hash = "sha256:15a3ebc0f43c2d0a50eeafea25e19046c68398e487b9f1f5b517f7c0f40f976a", size = 27047, upload-time = "2025-11-15T16:43:16.109Z" }, +] + +[[package]] +name = "async-lru" +version = "2.0.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/80/e2/2b4651eff771f6fd900d233e175ddc5e2be502c7eb62c0c42f975c6d36cd/async-lru-2.0.4.tar.gz", hash = "sha256:b8a59a5df60805ff63220b2a0c5b5393da5521b113cd5465a44eb037d81a5627", size = 10019, upload-time = "2023-07-27T19:12:18.631Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fa/9f/3c3503693386c4b0f245eaf5ca6198e3b28879ca0a40bde6b0e319793453/async_lru-2.0.4-py3-none-any.whl", hash = "sha256:ff02944ce3c288c5be660c42dbcca0742b32c3b279d6dceda655190240b99224", size = 6111, upload-time = "2023-07-27T19:12:17.164Z" }, +] + +[[package]] +name = "attrs" +version = "25.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5a/b0/1367933a8532ee6ff8d63537de4f1177af4bff9f3e829baf7331f595bb24/attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b", size = 812032, upload-time = "2025-03-13T11:10:22.779Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/77/06/bb80f5f86020c4551da315d78b3ab75e8228f89f0162f2c3a819e407941a/attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3", size = 63815, upload-time = "2025-03-13T11:10:21.14Z" }, +] + +[[package]] +name = "babel" +version = "2.17.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytz" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7d/6b/d52e42361e1aa00709585ecc30b3f9684b3ab62530771402248b1b1d6240/babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d", size = 9951852, upload-time = "2025-02-01T15:17:41.026Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2", size = 10182537, upload-time = "2025-02-01T15:17:37.39Z" }, +] + +[[package]] +name = "backcall" +version = "0.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/40/764a663805d84deee23043e1426a9175567db89c8b3287b5c2ad9f71aa93/backcall-0.2.0.tar.gz", hash = "sha256:5cbdbf27be5e7cfadb448baf0aa95508f91f2bbc6c6437cd9cd06e2a4c215e1e", size = 18041, upload-time = "2020-06-09T15:11:32.931Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4c/1c/ff6546b6c12603d8dd1070aa3c3d273ad4c07f5771689a7b69a550e8c951/backcall-0.2.0-py2.py3-none-any.whl", hash = "sha256:fbbce6a29f263178a1f7915c1940bde0ec2b2a967566fe1c65c1dfb7422bd255", size = 11157, upload-time = "2020-06-09T15:11:30.87Z" }, +] + +[[package]] +name = "backports-zoneinfo" +version = "0.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ad/85/475e514c3140937cf435954f78dedea1861aeab7662d11de232bdaa90655/backports.zoneinfo-0.2.1.tar.gz", hash = "sha256:fadbfe37f74051d024037f223b8e001611eac868b5c5b06144ef4d8b799862f2", size = 74098, upload-time = "2020-06-23T13:51:22.041Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4a/6d/eca004eeadcbf8bd64cc96feb9e355536147f0577420b44d80c7cac70767/backports.zoneinfo-0.2.1-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:8961c0f32cd0336fb8e8ead11a1f8cd99ec07145ec2931122faaac1c8f7fd987", size = 35816, upload-time = "2020-06-23T13:51:21.244Z" }, + { url = "https://files.pythonhosted.org/packages/c1/8f/9b1b920a6a95652463143943fa3b8c000cb0b932ab463764a6f2a2416560/backports.zoneinfo-0.2.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:e81b76cace8eda1fca50e345242ba977f9be6ae3945af8d46326d776b4cf78d1", size = 72147, upload-time = "2020-06-23T13:51:17.562Z" }, + { url = "https://files.pythonhosted.org/packages/1a/ab/3e941e3fcf1b7d3ab3d0233194d99d6a0ed6b24f8f956fc81e47edc8c079/backports.zoneinfo-0.2.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7b0a64cda4145548fed9efc10322770f929b944ce5cee6c0dfe0c87bf4c0c8c9", size = 74033, upload-time = "2020-06-23T13:51:14.592Z" }, + { url = "https://files.pythonhosted.org/packages/c0/34/5fdb0a3a28841d215c255be8fc60b8666257bb6632193c86fd04b63d4a31/backports.zoneinfo-0.2.1-cp38-cp38-win32.whl", hash = "sha256:1b13e654a55cd45672cb54ed12148cd33628f672548f373963b0bff67b217328", size = 36803, upload-time = "2020-06-23T13:51:07.517Z" }, + { url = "https://files.pythonhosted.org/packages/78/cc/e27fd6493bbce8dbea7e6c1bc861fe3d3bc22c4f7c81f4c3befb8ff5bfaf/backports.zoneinfo-0.2.1-cp38-cp38-win_amd64.whl", hash = "sha256:4a0f800587060bf8880f954dbef70de6c11bbe59c673c3d818921f042f9954a6", size = 38967, upload-time = "2020-06-23T13:51:13.735Z" }, +] + +[[package]] +name = "beautifulsoup4" +version = "4.14.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "soupsieve" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c3/b0/1c6a16426d389813b48d95e26898aff79abbde42ad353958ad95cc8c9b21/beautifulsoup4-4.14.3.tar.gz", hash = "sha256:6292b1c5186d356bba669ef9f7f051757099565ad9ada5dd630bd9de5fa7fb86", size = 627737, upload-time = "2025-11-30T15:08:26.084Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1a/39/47f9197bdd44df24d67ac8893641e16f386c984a0619ef2ee4c51fbbc019/beautifulsoup4-4.14.3-py3-none-any.whl", hash = "sha256:0918bfe44902e6ad8d57732ba310582e98da931428d231a5ecb9e7c703a735bb", size = 107721, upload-time = "2025-11-30T15:08:24.087Z" }, +] + +[[package]] +name = "bleach" +version = "6.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six" }, + { name = "webencodings" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/6d/10/77f32b088738f40d4f5be801daa5f327879eadd4562f36a2b5ab975ae571/bleach-6.1.0.tar.gz", hash = "sha256:0a31f1837963c41d46bbf1331b8778e1308ea0791db03cc4e7357b97cf42a8fe", size = 202119, upload-time = "2023-10-06T19:30:51.304Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ea/63/da7237f805089ecc28a3f36bca6a21c31fcbc2eb380f3b8f1be3312abd14/bleach-6.1.0-py3-none-any.whl", hash = "sha256:3225f354cfc436b9789c66c4ee030194bee0568fbf9cbdad3bc8b5c26c5f12b6", size = 162750, upload-time = "2023-10-06T19:30:49.408Z" }, +] + +[package.optional-dependencies] +css = [ + { name = "tinycss2" }, +] + +[[package]] +name = "certifi" +version = "2026.1.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e0/2d/a891ca51311197f6ad14a7ef42e2399f36cf2f9bd44752b3dc4eab60fdc5/certifi-2026.1.4.tar.gz", hash = "sha256:ac726dd470482006e014ad384921ed6438c457018f4b3d204aea4281258b2120", size = 154268, upload-time = "2026-01-04T02:42:41.825Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e6/ad/3cc14f097111b4de0040c83a525973216457bbeeb63739ef1ed275c1c021/certifi-2026.1.4-py3-none-any.whl", hash = "sha256:9943707519e4add1115f44c2bc244f782c0249876bf51b6599fee1ffbedd685c", size = 152900, upload-time = "2026-01-04T02:42:40.15Z" }, +] + +[[package]] +name = "cffi" +version = "1.17.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pycparser" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", size = 516621, upload-time = "2024-09-04T20:45:21.852Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/48/08/15bf6b43ae9bd06f6b00ad8a91f5a8fe1069d4c9fab550a866755402724e/cffi-1.17.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:636062ea65bd0195bc012fea9321aca499c0504409f413dc88af450b57ffd03b", size = 182457, upload-time = "2024-09-04T20:44:47.892Z" }, + { url = "https://files.pythonhosted.org/packages/c2/5b/f1523dd545f92f7df468e5f653ffa4df30ac222f3c884e51e139878f1cb5/cffi-1.17.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7eac2ef9b63c79431bc4b25f1cd649d7f061a28808cbc6c47b534bd789ef964", size = 425932, upload-time = "2024-09-04T20:44:49.491Z" }, + { url = "https://files.pythonhosted.org/packages/53/93/7e547ab4105969cc8c93b38a667b82a835dd2cc78f3a7dad6130cfd41e1d/cffi-1.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e221cf152cff04059d011ee126477f0d9588303eb57e88923578ace7baad17f9", size = 448585, upload-time = "2024-09-04T20:44:51.671Z" }, + { url = "https://files.pythonhosted.org/packages/56/c4/a308f2c332006206bb511de219efeff090e9d63529ba0a77aae72e82248b/cffi-1.17.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:31000ec67d4221a71bd3f67df918b1f88f676f1c3b535a7eb473255fdc0b83fc", size = 456268, upload-time = "2024-09-04T20:44:53.51Z" }, + { url = "https://files.pythonhosted.org/packages/ca/5b/b63681518265f2f4060d2b60755c1c77ec89e5e045fc3773b72735ddaad5/cffi-1.17.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6f17be4345073b0a7b8ea599688f692ac3ef23ce28e5df79c04de519dbc4912c", size = 436592, upload-time = "2024-09-04T20:44:55.085Z" }, + { url = "https://files.pythonhosted.org/packages/bb/19/b51af9f4a4faa4a8ac5a0e5d5c2522dcd9703d07fac69da34a36c4d960d3/cffi-1.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2b1fac190ae3ebfe37b979cc1ce69c81f4e4fe5746bb401dca63a9062cdaf1", size = 446512, upload-time = "2024-09-04T20:44:57.135Z" }, + { url = "https://files.pythonhosted.org/packages/e2/63/2bed8323890cb613bbecda807688a31ed11a7fe7afe31f8faaae0206a9a3/cffi-1.17.1-cp38-cp38-win32.whl", hash = "sha256:7596d6620d3fa590f677e9ee430df2958d2d6d6de2feeae5b20e82c00b76fbf8", size = 171576, upload-time = "2024-09-04T20:44:58.535Z" }, + { url = "https://files.pythonhosted.org/packages/2f/70/80c33b044ebc79527447fd4fbc5455d514c3bb840dede4455de97da39b4d/cffi-1.17.1-cp38-cp38-win_amd64.whl", hash = "sha256:78122be759c3f8a014ce010908ae03364d00a1f81ab5c7f4a7a5120607ea56e1", size = 181229, upload-time = "2024-09-04T20:44:59.963Z" }, +] + +[[package]] +name = "charset-normalizer" +version = "3.4.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/13/69/33ddede1939fdd074bce5434295f38fae7136463422fe4fd3e0e89b98062/charset_normalizer-3.4.4.tar.gz", hash = "sha256:94537985111c35f28720e43603b8e7b43a6ecfb2ce1d3058bbe955b73404e21a", size = 129418, upload-time = "2025-10-14T04:42:32.879Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0a/4e/3926a1c11f0433791985727965263f788af00db3482d89a7545ca5ecc921/charset_normalizer-3.4.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ce8a0633f41a967713a59c4139d29110c07e826d131a316b50ce11b1d79b4f84", size = 198599, upload-time = "2025-10-14T04:41:53.213Z" }, + { url = "https://files.pythonhosted.org/packages/ec/7c/b92d1d1dcffc34592e71ea19c882b6709e43d20fa498042dea8b815638d7/charset_normalizer-3.4.4-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:eaabd426fe94daf8fd157c32e571c85cb12e66692f15516a83a03264b08d06c3", size = 143090, upload-time = "2025-10-14T04:41:54.385Z" }, + { url = "https://files.pythonhosted.org/packages/84/ce/61a28d3bb77281eb24107b937a497f3c43089326d27832a63dcedaab0478/charset_normalizer-3.4.4-cp38-cp38-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:c4ef880e27901b6cc782f1b95f82da9313c0eb95c3af699103088fa0ac3ce9ac", size = 139490, upload-time = "2025-10-14T04:41:55.551Z" }, + { url = "https://files.pythonhosted.org/packages/c0/bd/c9e59a91b2061c6f8bb98a150670cb16d4cd7c4ba7d11ad0cdf789155f41/charset_normalizer-3.4.4-cp38-cp38-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2aaba3b0819274cc41757a1da876f810a3e4d7b6eb25699253a4effef9e8e4af", size = 155334, upload-time = "2025-10-14T04:41:56.724Z" }, + { url = "https://files.pythonhosted.org/packages/bf/37/f17ae176a80f22ff823456af91ba3bc59df308154ff53aef0d39eb3d3419/charset_normalizer-3.4.4-cp38-cp38-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:778d2e08eda00f4256d7f672ca9fef386071c9202f5e4607920b86d7803387f2", size = 152823, upload-time = "2025-10-14T04:41:58.236Z" }, + { url = "https://files.pythonhosted.org/packages/bf/fa/cf5bb2409a385f78750e78c8d2e24780964976acdaaed65dbd6083ae5b40/charset_normalizer-3.4.4-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f155a433c2ec037d4e8df17d18922c3a0d9b3232a396690f17175d2946f0218d", size = 147618, upload-time = "2025-10-14T04:41:59.409Z" }, + { url = "https://files.pythonhosted.org/packages/9b/63/579784a65bc7de2d4518d40bb8f1870900163e86f17f21fd1384318c459d/charset_normalizer-3.4.4-cp38-cp38-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:a8bf8d0f749c5757af2142fe7903a9df1d2e8aa3841559b2bad34b08d0e2bcf3", size = 145516, upload-time = "2025-10-14T04:42:00.579Z" }, + { url = "https://files.pythonhosted.org/packages/a3/a9/94ec6266cd394e8f93a4d69cca651d61bf6ac58d2a0422163b30c698f2c7/charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:194f08cbb32dc406d6e1aea671a68be0823673db2832b38405deba2fb0d88f63", size = 145266, upload-time = "2025-10-14T04:42:01.684Z" }, + { url = "https://files.pythonhosted.org/packages/09/14/d6626eb97764b58c2779fa7928fa7d1a49adb8ce687c2dbba4db003c1939/charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_armv7l.whl", hash = "sha256:6aee717dcfead04c6eb1ce3bd29ac1e22663cdea57f943c87d1eab9a025438d7", size = 139559, upload-time = "2025-10-14T04:42:02.902Z" }, + { url = "https://files.pythonhosted.org/packages/09/01/ddbe6b01313ba191dbb0a43c7563bc770f2448c18127f9ea4b119c44dff0/charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:cd4b7ca9984e5e7985c12bc60a6f173f3c958eae74f3ef6624bb6b26e2abbae4", size = 156653, upload-time = "2025-10-14T04:42:04.005Z" }, + { url = "https://files.pythonhosted.org/packages/95/c8/d05543378bea89296e9af4510b44c704626e191da447235c8fdedfc5b7b2/charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_riscv64.whl", hash = "sha256:b7cf1017d601aa35e6bb650b6ad28652c9cd78ee6caff19f3c28d03e1c80acbf", size = 145644, upload-time = "2025-10-14T04:42:05.211Z" }, + { url = "https://files.pythonhosted.org/packages/72/01/2866c4377998ef8a1f6802f6431e774a4c8ebe75b0a6e569ceec55c9cbfb/charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:e912091979546adf63357d7e2ccff9b44f026c075aeaf25a52d0e95ad2281074", size = 153964, upload-time = "2025-10-14T04:42:06.341Z" }, + { url = "https://files.pythonhosted.org/packages/4a/66/66c72468a737b4cbd7851ba2c522fe35c600575fbeac944460b4fd4a06fe/charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:5cb4d72eea50c8868f5288b7f7f33ed276118325c1dfd3957089f6b519e1382a", size = 148777, upload-time = "2025-10-14T04:42:07.535Z" }, + { url = "https://files.pythonhosted.org/packages/50/94/d0d56677fdddbffa8ca00ec411f67bb8c947f9876374ddc9d160d4f2c4b3/charset_normalizer-3.4.4-cp38-cp38-win32.whl", hash = "sha256:837c2ce8c5a65a2035be9b3569c684358dfbf109fd3b6969630a87535495ceaa", size = 98687, upload-time = "2025-10-14T04:42:08.678Z" }, + { url = "https://files.pythonhosted.org/packages/00/64/c3bc303d1b586480b1c8e6e1e2191a6d6dd40255244e5cf16763dcec52e6/charset_normalizer-3.4.4-cp38-cp38-win_amd64.whl", hash = "sha256:44c2a8734b333e0578090c4cd6b16f275e07aa6614ca8715e6c038e865e70576", size = 106115, upload-time = "2025-10-14T04:42:09.793Z" }, + { url = "https://files.pythonhosted.org/packages/0a/4c/925909008ed5a988ccbb72dcc897407e5d6d3bd72410d69e051fc0c14647/charset_normalizer-3.4.4-py3-none-any.whl", hash = "sha256:7a32c560861a02ff789ad905a2fe94e3f840803362c84fecf1851cb4cf3dc37f", size = 53402, upload-time = "2025-10-14T04:42:31.76Z" }, +] + +[[package]] +name = "colorama" +version = "0.4.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, +] + +[[package]] +name = "comm" +version = "0.2.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/4c/13/7d740c5849255756bc17888787313b61fd38a0a8304fc4f073dfc46122aa/comm-0.2.3.tar.gz", hash = "sha256:2dc8048c10962d55d7ad693be1e7045d891b7ce8d999c97963a5e3e99c055971", size = 6319, upload-time = "2025-07-25T14:02:04.452Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/60/97/891a0971e1e4a8c5d2b20bbe0e524dc04548d2307fee33cdeba148fd4fc7/comm-0.2.3-py3-none-any.whl", hash = "sha256:c615d91d75f7f04f095b30d1c1711babd43bdc6419c1be9886a85f2f4e489417", size = 7294, upload-time = "2025-07-25T14:02:02.896Z" }, +] + +[[package]] +name = "contourpy" +version = "1.1.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b1/7d/087ee4295e7580d3f7eb8a8a4e0ec8c7847e60f34135248ccf831cf5bbfc/contourpy-1.1.1.tar.gz", hash = "sha256:96ba37c2e24b7212a77da85004c38e7c4d155d3e72a45eeaf22c1f03f607e8ab", size = 13433167, upload-time = "2023-09-16T10:25:49.501Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/02/7e/ffaba1bf3719088be3ad6983a5e85e1fc9edccd7b406b98e433436ecef74/contourpy-1.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:70e5a10f8093d228bb2b552beeb318b8928b8a94763ef03b858ef3612b29395d", size = 247023, upload-time = "2023-09-16T10:22:26.954Z" }, + { url = "https://files.pythonhosted.org/packages/a6/82/29f5ff4ae074c3230e266bc9efef449ebde43721a727b989dd8ef8f97d73/contourpy-1.1.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:8394e652925a18ef0091115e3cc191fef350ab6dc3cc417f06da66bf98071ae9", size = 232380, upload-time = "2023-09-16T10:22:30.423Z" }, + { url = "https://files.pythonhosted.org/packages/9b/cb/08f884c4c2efd433a38876b1b8069bfecef3f2d21ff0ce635d455962f70f/contourpy-1.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5bd5680f844c3ff0008523a71949a3ff5e4953eb7701b28760805bc9bcff217", size = 285830, upload-time = "2023-09-16T10:22:33.787Z" }, + { url = "https://files.pythonhosted.org/packages/8e/57/cd4d4c99d999a25e9d518f628b4793e64b1ecb8ad3147f8469d8d4a80678/contourpy-1.1.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:66544f853bfa85c0d07a68f6c648b2ec81dafd30f272565c37ab47a33b220684", size = 322038, upload-time = "2023-09-16T10:22:37.627Z" }, + { url = "https://files.pythonhosted.org/packages/32/b6/c57ed305a6f86731107fc183e97c7e6a6005d145f5c5228a44718082ad12/contourpy-1.1.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e0c02b75acfea5cab07585d25069207e478d12309557f90a61b5a3b4f77f46ce", size = 295797, upload-time = "2023-09-16T10:22:41.952Z" }, + { url = "https://files.pythonhosted.org/packages/8e/71/7f20855592cc929bc206810432b991ec4c702dc26b0567b132e52c85536f/contourpy-1.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:41339b24471c58dc1499e56783fedc1afa4bb018bcd035cfb0ee2ad2a7501ef8", size = 301124, upload-time = "2023-09-16T10:22:45.993Z" }, + { url = "https://files.pythonhosted.org/packages/86/6d/52c2fc80f433e7cdc8624d82e1422ad83ad461463cf16a1953bbc7d10eb1/contourpy-1.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f29fb0b3f1217dfe9362ec55440d0743fe868497359f2cf93293f4b2701b8251", size = 819787, upload-time = "2023-09-16T10:22:53.511Z" }, + { url = "https://files.pythonhosted.org/packages/d0/b0/f8d4548e89f929d6c5ca329df9afad6190af60079ec77d8c31eb48cf6f82/contourpy-1.1.1-cp38-cp38-win32.whl", hash = "sha256:f9dc7f933975367251c1b34da882c4f0e0b2e24bb35dc906d2f598a40b72bfc7", size = 400031, upload-time = "2023-09-16T10:22:57.78Z" }, + { url = "https://files.pythonhosted.org/packages/96/1b/b05cd42c8d21767a0488b883b38658fb9a45f86c293b7b42521a8113dc5d/contourpy-1.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:498e53573e8b94b1caeb9e62d7c2d053c263ebb6aa259c81050766beb50ff8d9", size = 477949, upload-time = "2023-09-16T10:23:02.587Z" }, + { url = "https://files.pythonhosted.org/packages/e6/3c/fc36884b6793e2066a6ff25c86e21b8bd62553456b07e964c260bcf22711/contourpy-1.1.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:229a25f68046c5cf8067d6d6351c8b99e40da11b04d8416bf8d2b1d75922521e", size = 246493, upload-time = "2023-09-16T10:23:45.721Z" }, + { url = "https://files.pythonhosted.org/packages/3d/85/f4c5b09ce79828ed4553a8ae2ebdf937794f57b45848b1f5c95d9744ecc2/contourpy-1.1.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a10dab5ea1bd4401c9483450b5b0ba5416be799bbd50fc7a6cc5e2a15e03e8a3", size = 289240, upload-time = "2023-09-16T10:23:49.207Z" }, + { url = "https://files.pythonhosted.org/packages/18/d3/9d7c0a372baf5130c1417a4b8275079d5379c11355436cb9fc78af7d7559/contourpy-1.1.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:4f9147051cb8fdb29a51dc2482d792b3b23e50f8f57e3720ca2e3d438b7adf23", size = 476043, upload-time = "2023-09-16T10:23:54.495Z" }, +] + +[[package]] +name = "cycler" +version = "0.12.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a9/95/a3dbbb5028f35eafb79008e7522a75244477d2838f38cbb722248dabc2a8/cycler-0.12.1.tar.gz", hash = "sha256:88bb128f02ba341da8ef447245a9e138fae777f6a23943da4540077d3601eb1c", size = 7615, upload-time = "2023-10-07T05:32:18.335Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl", hash = "sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30", size = 8321, upload-time = "2023-10-07T05:32:16.783Z" }, +] + +[[package]] +name = "debugpy" +version = "1.8.20" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e0/b7/cd8080344452e4874aae67c40d8940e2b4d47b01601a8fd9f44786c757c7/debugpy-1.8.20.tar.gz", hash = "sha256:55bc8701714969f1ab89a6d5f2f3d40c36f91b2cbe2f65d98bf8196f6a6a2c33", size = 1645207, upload-time = "2026-01-29T23:03:28.199Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/17/b6/33ad879a4613b96dbae37a75101b32e927f830ab4104d759e6b8e19251c3/debugpy-1.8.20-cp38-cp38-macosx_15_0_x86_64.whl", hash = "sha256:b773eb026a043e4d9c76265742bc846f2f347da7e27edf7fe97716ea19d6bfc5", size = 2099349, upload-time = "2026-01-29T23:04:01.322Z" }, + { url = "https://files.pythonhosted.org/packages/2c/37/88710a0b7ccc2649815723749b451d1f528c708bc3766a53417065460809/debugpy-1.8.20-cp38-cp38-manylinux_2_34_x86_64.whl", hash = "sha256:20d6e64ea177ab6732bffd3ce8fc6fb8879c60484ce14c3b3fe183b1761459ca", size = 3170486, upload-time = "2026-01-29T23:04:02.694Z" }, + { url = "https://files.pythonhosted.org/packages/22/bf/856f2eee220effd2e49733bdd74db1ee162753a02a0a0323a3155776188b/debugpy-1.8.20-cp38-cp38-win32.whl", hash = "sha256:0dfd9adb4b3c7005e9c33df430bcdd4e4ebba70be533e0066e3a34d210041b66", size = 5288729, upload-time = "2026-01-29T23:04:04.636Z" }, + { url = "https://files.pythonhosted.org/packages/eb/dd/daf84fabab699d2dad45c71fa0cfb0612caa9446f7d307a77d6469792aa1/debugpy-1.8.20-cp38-cp38-win_amd64.whl", hash = "sha256:60f89411a6c6afb89f18e72e9091c3dfbcfe3edc1066b2043a1f80a3bbb3e11f", size = 5321543, upload-time = "2026-01-29T23:04:07.142Z" }, + { url = "https://files.pythonhosted.org/packages/e0/c3/7f67dea8ccf8fdcb9c99033bbe3e90b9e7395415843accb81428c441be2d/debugpy-1.8.20-py2.py3-none-any.whl", hash = "sha256:5be9bed9ae3be00665a06acaa48f8329d2b9632f15fd09f6a9a8c8d9907e54d7", size = 5337658, upload-time = "2026-01-29T23:04:17.404Z" }, +] + +[[package]] +name = "decorator" +version = "5.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/43/fa/6d96a0978d19e17b68d634497769987b16c8f4cd0a7a05048bec693caa6b/decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360", size = 56711, upload-time = "2025-02-24T04:41:34.073Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a", size = 9190, upload-time = "2025-02-24T04:41:32.565Z" }, +] + +[[package]] +name = "defusedxml" +version = "0.7.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0f/d5/c66da9b79e5bdb124974bfe172b4daf3c984ebd9c2a06e2b8a4dc7331c72/defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69", size = 75520, upload-time = "2021-03-08T10:59:26.269Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/07/6c/aa3f2f849e01cb6a001cd8554a88d4c77c5c1a31c95bdf1cf9301e6d9ef4/defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61", size = 25604, upload-time = "2021-03-08T10:59:24.45Z" }, +] + +[[package]] +name = "exceptiongroup" +version = "1.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/50/79/66800aadf48771f6b62f7eb014e352e5d06856655206165d775e675a02c9/exceptiongroup-1.3.1.tar.gz", hash = "sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219", size = 30371, upload-time = "2025-11-21T23:01:54.787Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8a/0e/97c33bf5009bdbac74fd2beace167cab3f978feb69cc36f1ef79360d6c4e/exceptiongroup-1.3.1-py3-none-any.whl", hash = "sha256:a7a39a3bd276781e98394987d3a5701d0c4edffb633bb7a5144577f82c773598", size = 16740, upload-time = "2025-11-21T23:01:53.443Z" }, +] + +[[package]] +name = "executing" +version = "2.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cc/28/c14e053b6762b1044f34a13aab6859bbf40456d37d23aa286ac24cfd9a5d/executing-2.2.1.tar.gz", hash = "sha256:3632cc370565f6648cc328b32435bd120a1e4ebb20c77e3fdde9a13cd1e533c4", size = 1129488, upload-time = "2025-09-01T09:48:10.866Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c1/ea/53f2148663b321f21b5a606bd5f191517cf40b7072c0497d3c92c4a13b1e/executing-2.2.1-py2.py3-none-any.whl", hash = "sha256:760643d3452b4d777d295bb167ccc74c64a81df23fb5e08eff250c425a4b2017", size = 28317, upload-time = "2025-09-01T09:48:08.5Z" }, +] + +[[package]] +name = "fastjsonschema" +version = "2.21.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/20/b5/23b216d9d985a956623b6bd12d4086b60f0059b27799f23016af04a74ea1/fastjsonschema-2.21.2.tar.gz", hash = "sha256:b1eb43748041c880796cd077f1a07c3d94e93ae84bba5ed36800a33554ae05de", size = 374130, upload-time = "2025-08-14T18:49:36.666Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cb/a8/20d0723294217e47de6d9e2e40fd4a9d2f7c4b6ef974babd482a59743694/fastjsonschema-2.21.2-py3-none-any.whl", hash = "sha256:1c797122d0a86c5cace2e54bf4e819c36223b552017172f32c5c024a6b77e463", size = 24024, upload-time = "2025-08-14T18:49:34.776Z" }, +] + +[[package]] +name = "fonttools" +version = "4.57.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/03/2d/a9a0b6e3a0cf6bd502e64fc16d894269011930cabfc89aee20d1635b1441/fonttools-4.57.0.tar.gz", hash = "sha256:727ece10e065be2f9dd239d15dd5d60a66e17eac11aea47d447f9f03fdbc42de", size = 3492448, upload-time = "2025-04-03T11:07:13.898Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8a/3f/c16dbbec7221783f37dcc2022d5a55f0d704ffc9feef67930f6eb517e8ce/fonttools-4.57.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:9d57b4e23ebbe985125d3f0cabbf286efa191ab60bbadb9326091050d88e8213", size = 2753756, upload-time = "2025-04-03T11:06:36.875Z" }, + { url = "https://files.pythonhosted.org/packages/48/9f/5b4a3d6aed5430b159dd3494bb992d4e45102affa3725f208e4f0aedc6a3/fonttools-4.57.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:579ba873d7f2a96f78b2e11028f7472146ae181cae0e4d814a37a09e93d5c5cc", size = 2283179, upload-time = "2025-04-03T11:06:39.095Z" }, + { url = "https://files.pythonhosted.org/packages/17/b2/4e887b674938b4c3848029a4134ac90dd8653ea80b4f464fa1edeae37f25/fonttools-4.57.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6e3e1ec10c29bae0ea826b61f265ec5c858c5ba2ce2e69a71a62f285cf8e4595", size = 4647139, upload-time = "2025-04-03T11:06:41.315Z" }, + { url = "https://files.pythonhosted.org/packages/a5/0e/b6314a09a4d561aaa7e09de43fa700917be91e701f07df6178865962666c/fonttools-4.57.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a1968f2a2003c97c4ce6308dc2498d5fd4364ad309900930aa5a503c9851aec8", size = 4691211, upload-time = "2025-04-03T11:06:43.566Z" }, + { url = "https://files.pythonhosted.org/packages/bf/1d/b9f4b70d165c25f5c9aee61eb6ae90b0e9b5787b2c0a45e4f3e50a839274/fonttools-4.57.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:aff40f8ac6763d05c2c8f6d240c6dac4bb92640a86d9b0c3f3fff4404f34095c", size = 4873755, upload-time = "2025-04-03T11:06:45.457Z" }, + { url = "https://files.pythonhosted.org/packages/3b/fa/a731c8f42ae2c6761d1c22bd3c90241d5b2b13cabb70598abc74a828b51f/fonttools-4.57.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:d07f1b64008e39fceae7aa99e38df8385d7d24a474a8c9872645c4397b674481", size = 5070072, upload-time = "2025-04-03T11:06:47.853Z" }, + { url = "https://files.pythonhosted.org/packages/1f/1e/6a988230109a2ba472e5de0a4c3936d49718cfc4b700b6bad53eca414bcf/fonttools-4.57.0-cp38-cp38-win32.whl", hash = "sha256:51d8482e96b28fb28aa8e50b5706f3cee06de85cbe2dce80dbd1917ae22ec5a6", size = 1484098, upload-time = "2025-04-03T11:06:50.167Z" }, + { url = "https://files.pythonhosted.org/packages/dc/7a/2b3666e8c13d035adf656a8ae391380656144760353c97f74747c64fd3e5/fonttools-4.57.0-cp38-cp38-win_amd64.whl", hash = "sha256:03290e818782e7edb159474144fca11e36a8ed6663d1fcbd5268eb550594fd8e", size = 1529536, upload-time = "2025-04-03T11:06:52.468Z" }, + { url = "https://files.pythonhosted.org/packages/90/27/45f8957c3132917f91aaa56b700bcfc2396be1253f685bd5c68529b6f610/fonttools-4.57.0-py3-none-any.whl", hash = "sha256:3122c604a675513c68bd24c6a8f9091f1c2376d18e8f5fe5a101746c81b3e98f", size = 1093605, upload-time = "2025-04-03T11:07:11.341Z" }, +] + +[[package]] +name = "fqdn" +version = "1.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/30/3e/a80a8c077fd798951169626cde3e239adeba7dab75deb3555716415bd9b0/fqdn-1.5.1.tar.gz", hash = "sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f", size = 6015, upload-time = "2021-03-11T07:16:29.08Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cf/58/8acf1b3e91c58313ce5cb67df61001fc9dcd21be4fadb76c1a2d540e09ed/fqdn-1.5.1-py3-none-any.whl", hash = "sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014", size = 9121, upload-time = "2021-03-11T07:16:28.351Z" }, +] + +[[package]] +name = "h11" +version = "0.16.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/01/ee/02a2c011bdab74c6fb3c75474d40b3052059d95df7e73351460c8588d963/h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1", size = 101250, upload-time = "2025-04-24T03:35:25.427Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86", size = 37515, upload-time = "2025-04-24T03:35:24.344Z" }, +] + +[[package]] +name = "h5py" +version = "3.11.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/52/8f/e557819155a282da36fb21f8de4730cfd10a964b52b3ae8d20157ac1c668/h5py-3.11.0.tar.gz", hash = "sha256:7b7e8f78072a2edec87c9836f25f34203fd492a4475709a18b417a33cfb21fa9", size = 406519, upload-time = "2024-04-10T10:52:39.585Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/33/97/c1a8f28329ad794d18fc61bf251268ac03959bf93b82fdd7701ac6931fed/h5py-3.11.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:754c0c2e373d13d6309f408325343b642eb0f40f1a6ad21779cfa9502209e150", size = 3470228, upload-time = "2024-04-10T10:51:14.716Z" }, + { url = "https://files.pythonhosted.org/packages/a4/1d/fd0b88c51c37bc8aeedecc4f4b48397f7ce13c87073aaf6912faec06e9f6/h5py-3.11.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:731839240c59ba219d4cb3bc5880d438248533366f102402cfa0621b71796b62", size = 2935809, upload-time = "2024-04-10T10:51:33.125Z" }, + { url = "https://files.pythonhosted.org/packages/86/43/fd0bd74462b3c3fb35d98568935d3e5a435c8ec24d45ef408ac8869166af/h5py-3.11.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ec9df3dd2018904c4cc06331951e274f3f3fd091e6d6cc350aaa90fa9b42a76", size = 5309045, upload-time = "2024-04-10T10:51:44.58Z" }, + { url = "https://files.pythonhosted.org/packages/15/9a/b5456e1acc4abb382938d4a730600823bfe77a4bbfd29140ccbf01ba5596/h5py-3.11.0-cp38-cp38-win_amd64.whl", hash = "sha256:55106b04e2c83dfb73dc8732e9abad69d83a436b5b82b773481d95d17b9685e1", size = 2989172, upload-time = "2024-04-10T10:51:56.815Z" }, +] + +[[package]] +name = "httpcore" +version = "1.0.9" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "h11" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/06/94/82699a10bca87a5556c9c59b5963f2d039dbd239f25bc2a63907a05a14cb/httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8", size = 85484, upload-time = "2025-04-24T22:06:22.219Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55", size = 78784, upload-time = "2025-04-24T22:06:20.566Z" }, +] + +[[package]] +name = "httpx" +version = "0.28.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "certifi" }, + { name = "httpcore" }, + { name = "idna" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b1/df/48c586a5fe32a0f01324ee087459e112ebb7224f646c0b5023f5e79e9956/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc", size = 141406, upload-time = "2024-12-06T15:37:23.222Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517, upload-time = "2024-12-06T15:37:21.509Z" }, +] + +[[package]] +name = "idna" +version = "3.11" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6f/6d/0703ccc57f3a7233505399edb88de3cbd678da106337b9fcde432b65ed60/idna-3.11.tar.gz", hash = "sha256:795dafcc9c04ed0c1fb032c2aa73654d8e8c5023a7df64a53f39190ada629902", size = 194582, upload-time = "2025-10-12T14:55:20.501Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0e/61/66938bbb5fc52dbdf84594873d5b51fb1f7c7794e9c0f5bd885f30bc507b/idna-3.11-py3-none-any.whl", hash = "sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea", size = 71008, upload-time = "2025-10-12T14:55:18.883Z" }, +] + +[[package]] +name = "importlib-metadata" +version = "8.5.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "zipp" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/cd/12/33e59336dca5be0c398a7482335911a33aa0e20776128f038019f1a95f1b/importlib_metadata-8.5.0.tar.gz", hash = "sha256:71522656f0abace1d072b9e5481a48f07c138e00f079c38c8f883823f9c26bd7", size = 55304, upload-time = "2024-09-11T14:56:08.937Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/d9/a1e041c5e7caa9a05c925f4bdbdfb7f006d1f74996af53467bc394c97be7/importlib_metadata-8.5.0-py3-none-any.whl", hash = "sha256:45e54197d28b7a7f1559e60b95e7c567032b602131fbd588f1497f47880aa68b", size = 26514, upload-time = "2024-09-11T14:56:07.019Z" }, +] + +[[package]] +name = "importlib-resources" +version = "6.4.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "zipp" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/98/be/f3e8c6081b684f176b761e6a2fef02a0be939740ed6f54109a2951d806f3/importlib_resources-6.4.5.tar.gz", hash = "sha256:980862a1d16c9e147a59603677fa2aa5fd82b87f223b6cb870695bcfce830065", size = 43372, upload-time = "2024-09-09T17:03:14.677Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e1/6a/4604f9ae2fa62ef47b9de2fa5ad599589d28c9fd1d335f32759813dfa91e/importlib_resources-6.4.5-py3-none-any.whl", hash = "sha256:ac29d5f956f01d5e4bb63102a5a19957f1b9175e45649977264a1416783bb717", size = 36115, upload-time = "2024-09-09T17:03:13.39Z" }, +] + +[[package]] +name = "ipykernel" +version = "6.29.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "appnope", marker = "sys_platform == 'darwin'" }, + { name = "comm" }, + { name = "debugpy" }, + { name = "ipython" }, + { name = "jupyter-client" }, + { name = "jupyter-core" }, + { name = "matplotlib-inline" }, + { name = "nest-asyncio" }, + { name = "packaging" }, + { name = "psutil" }, + { name = "pyzmq" }, + { name = "tornado" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e9/5c/67594cb0c7055dc50814b21731c22a601101ea3b1b50a9a1b090e11f5d0f/ipykernel-6.29.5.tar.gz", hash = "sha256:f093a22c4a40f8828f8e330a9c297cb93dcab13bd9678ded6de8e5cf81c56215", size = 163367, upload-time = "2024-07-01T14:07:22.543Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/94/5c/368ae6c01c7628438358e6d337c19b05425727fbb221d2a3c4303c372f42/ipykernel-6.29.5-py3-none-any.whl", hash = "sha256:afdb66ba5aa354b09b91379bac28ae4afebbb30e8b39510c9690afb7a10421b5", size = 117173, upload-time = "2024-07-01T14:07:19.603Z" }, +] + +[[package]] +name = "ipython" +version = "8.12.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "appnope", marker = "sys_platform == 'darwin'" }, + { name = "backcall" }, + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "decorator" }, + { name = "jedi" }, + { name = "matplotlib-inline" }, + { name = "pexpect", marker = "sys_platform != 'win32'" }, + { name = "pickleshare" }, + { name = "prompt-toolkit" }, + { name = "pygments" }, + { name = "stack-data" }, + { name = "traitlets" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9e/6a/44ef299b1762f5a73841e87fae8a73a8cc8aee538d6dc8c77a5afe1fd2ce/ipython-8.12.3.tar.gz", hash = "sha256:3910c4b54543c2ad73d06579aa771041b7d5707b033bd488669b4cf544e3b363", size = 5470171, upload-time = "2023-09-29T09:14:37.468Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8d/97/8fe103906cd81bc42d3b0175b5534a9f67dccae47d6451131cf8d0d70bb2/ipython-8.12.3-py3-none-any.whl", hash = "sha256:b0340d46a933d27c657b211a329d0be23793c36595acf9e6ef4164bc01a1804c", size = 798307, upload-time = "2023-09-29T09:14:34.431Z" }, +] + +[[package]] +name = "ipywidgets" +version = "8.1.8" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "comm" }, + { name = "ipython" }, + { name = "jupyterlab-widgets" }, + { name = "traitlets" }, + { name = "widgetsnbextension" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/4c/ae/c5ce1edc1afe042eadb445e95b0671b03cee61895264357956e61c0d2ac0/ipywidgets-8.1.8.tar.gz", hash = "sha256:61f969306b95f85fba6b6986b7fe45d73124d1d9e3023a8068710d47a22ea668", size = 116739, upload-time = "2025-11-01T21:18:12.393Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/56/6d/0d9848617b9f753b87f214f1c682592f7ca42de085f564352f10f0843026/ipywidgets-8.1.8-py3-none-any.whl", hash = "sha256:ecaca67aed704a338f88f67b1181b58f821ab5dc89c1f0f5ef99db43c1c2921e", size = 139808, upload-time = "2025-11-01T21:18:10.956Z" }, +] + +[[package]] +name = "isoduration" +version = "20.11.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "arrow" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7c/1a/3c8edc664e06e6bd06cce40c6b22da5f1429aa4224d0c590f3be21c91ead/isoduration-20.11.0.tar.gz", hash = "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9", size = 11649, upload-time = "2020-11-01T11:00:00.312Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7b/55/e5326141505c5d5e34c5e0935d2908a74e4561eca44108fbfb9c13d2911a/isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042", size = 11321, upload-time = "2020-11-01T10:59:58.02Z" }, +] + +[[package]] +name = "jedi" +version = "0.19.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "parso" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/72/3a/79a912fbd4d8dd6fbb02bf69afd3bb72cf0c729bb3063c6f4498603db17a/jedi-0.19.2.tar.gz", hash = "sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0", size = 1231287, upload-time = "2024-11-11T01:41:42.873Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c0/5a/9cac0c82afec3d09ccd97c8b6502d48f165f9124db81b4bcb90b4af974ee/jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9", size = 1572278, upload-time = "2024-11-11T01:41:40.175Z" }, +] + +[[package]] +name = "jinja2" +version = "3.1.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markupsafe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115, upload-time = "2025-03-05T20:05:02.478Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899, upload-time = "2025-03-05T20:05:00.369Z" }, +] + +[[package]] +name = "json5" +version = "0.13.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/77/e8/a3f261a66e4663f22700bc8a17c08cb83e91fbf086726e7a228398968981/json5-0.13.0.tar.gz", hash = "sha256:b1edf8d487721c0bf64d83c28e91280781f6e21f4a797d3261c7c828d4c165bf", size = 52441, upload-time = "2026-01-01T19:42:14.99Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d7/9e/038522f50ceb7e74f1f991bf1b699f24b0c2bbe7c390dd36ad69f4582258/json5-0.13.0-py3-none-any.whl", hash = "sha256:9a08e1dd65f6a4d4c6fa82d216cf2477349ec2346a38fd70cc11d2557499fbcc", size = 36163, upload-time = "2026-01-01T19:42:13.962Z" }, +] + +[[package]] +name = "jsonpointer" +version = "3.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6a/0a/eebeb1fa92507ea94016a2a790b93c2ae41a7e18778f85471dc54475ed25/jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef", size = 9114, upload-time = "2024-06-10T19:24:42.462Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/71/92/5e77f98553e9e75130c78900d000368476aed74276eb8ae8796f65f00918/jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942", size = 7595, upload-time = "2024-06-10T19:24:40.698Z" }, +] + +[[package]] +name = "jsonschema" +version = "4.23.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "importlib-resources" }, + { name = "jsonschema-specifications" }, + { name = "pkgutil-resolve-name" }, + { name = "referencing" }, + { name = "rpds-py" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/38/2e/03362ee4034a4c917f697890ccd4aec0800ccf9ded7f511971c75451deec/jsonschema-4.23.0.tar.gz", hash = "sha256:d71497fef26351a33265337fa77ffeb82423f3ea21283cd9467bb03999266bc4", size = 325778, upload-time = "2024-07-08T18:40:05.546Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/69/4a/4f9dbeb84e8850557c02365a0eee0649abe5eb1d84af92a25731c6c0f922/jsonschema-4.23.0-py3-none-any.whl", hash = "sha256:fbadb6f8b144a8f8cf9f0b89ba94501d143e50411a1278633f56a7acf7fd5566", size = 88462, upload-time = "2024-07-08T18:40:00.165Z" }, +] + +[package.optional-dependencies] +format-nongpl = [ + { name = "fqdn" }, + { name = "idna" }, + { name = "isoduration" }, + { name = "jsonpointer" }, + { name = "rfc3339-validator" }, + { name = "rfc3986-validator" }, + { name = "uri-template" }, + { name = "webcolors" }, +] + +[[package]] +name = "jsonschema-specifications" +version = "2023.12.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "importlib-resources" }, + { name = "referencing" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f8/b9/cc0cc592e7c195fb8a650c1d5990b10175cf13b4c97465c72ec841de9e4b/jsonschema_specifications-2023.12.1.tar.gz", hash = "sha256:48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc", size = 13983, upload-time = "2023-12-25T15:16:53.63Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ee/07/44bd408781594c4d0a027666ef27fab1e441b109dc3b76b4f836f8fd04fe/jsonschema_specifications-2023.12.1-py3-none-any.whl", hash = "sha256:87e4fdf3a94858b8a2ba2778d9ba57d8a9cafca7c7489c46ba0d30a8bc6a9c3c", size = 18482, upload-time = "2023-12-25T15:16:51.997Z" }, +] + +[[package]] +name = "jupyter" +version = "1.1.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ipykernel" }, + { name = "ipywidgets" }, + { name = "jupyter-console" }, + { name = "jupyterlab" }, + { name = "nbconvert" }, + { name = "notebook" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/58/f3/af28ea964ab8bc1e472dba2e82627d36d470c51f5cd38c37502eeffaa25e/jupyter-1.1.1.tar.gz", hash = "sha256:d55467bceabdea49d7e3624af7e33d59c37fff53ed3a350e1ac957bed731de7a", size = 5714959, upload-time = "2024-08-30T07:15:48.299Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/38/64/285f20a31679bf547b75602702f7800e74dbabae36ef324f716c02804753/jupyter-1.1.1-py2.py3-none-any.whl", hash = "sha256:7a59533c22af65439b24bbe60373a4e95af8f16ac65a6c00820ad378e3f7cc83", size = 2657, upload-time = "2024-08-30T07:15:47.045Z" }, +] + +[[package]] +name = "jupyter-client" +version = "8.6.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "importlib-metadata" }, + { name = "jupyter-core" }, + { name = "python-dateutil" }, + { name = "pyzmq" }, + { name = "tornado" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/71/22/bf9f12fdaeae18019a468b68952a60fe6dbab5d67cd2a103cac7659b41ca/jupyter_client-8.6.3.tar.gz", hash = "sha256:35b3a0947c4a6e9d589eb97d7d4cd5e90f910ee73101611f01283732bd6d9419", size = 342019, upload-time = "2024-09-17T10:44:17.613Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/11/85/b0394e0b6fcccd2c1eeefc230978a6f8cb0c5df1e4cd3e7625735a0d7d1e/jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f", size = 106105, upload-time = "2024-09-17T10:44:15.218Z" }, +] + +[[package]] +name = "jupyter-console" +version = "6.6.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ipykernel" }, + { name = "ipython" }, + { name = "jupyter-client" }, + { name = "jupyter-core" }, + { name = "prompt-toolkit" }, + { name = "pygments" }, + { name = "pyzmq" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bd/2d/e2fd31e2fc41c14e2bcb6c976ab732597e907523f6b2420305f9fc7fdbdb/jupyter_console-6.6.3.tar.gz", hash = "sha256:566a4bf31c87adbfadf22cdf846e3069b59a71ed5da71d6ba4d8aaad14a53539", size = 34363, upload-time = "2023-03-06T14:13:31.02Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ca/77/71d78d58f15c22db16328a476426f7ac4a60d3a5a7ba3b9627ee2f7903d4/jupyter_console-6.6.3-py3-none-any.whl", hash = "sha256:309d33409fcc92ffdad25f0bcdf9a4a9daa61b6f341177570fdac03de5352485", size = 24510, upload-time = "2023-03-06T14:13:28.229Z" }, +] + +[[package]] +name = "jupyter-core" +version = "5.8.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "platformdirs" }, + { name = "pywin32", marker = "platform_python_implementation != 'PyPy' and sys_platform == 'win32'" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/99/1b/72906d554acfeb588332eaaa6f61577705e9ec752ddb486f302dafa292d9/jupyter_core-5.8.1.tar.gz", hash = "sha256:0a5f9706f70e64786b75acba995988915ebd4601c8a52e534a40b51c95f59941", size = 88923, upload-time = "2025-05-27T07:38:16.655Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2f/57/6bffd4b20b88da3800c5d691e0337761576ee688eb01299eae865689d2df/jupyter_core-5.8.1-py3-none-any.whl", hash = "sha256:c28d268fc90fb53f1338ded2eb410704c5449a358406e8a948b75706e24863d0", size = 28880, upload-time = "2025-05-27T07:38:15.137Z" }, +] + +[[package]] +name = "jupyter-events" +version = "0.10.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jsonschema", extra = ["format-nongpl"] }, + { name = "python-json-logger" }, + { name = "pyyaml" }, + { name = "referencing" }, + { name = "rfc3339-validator" }, + { name = "rfc3986-validator" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/8d/53/7537a1aa558229bb0b1b178d814c9d68a9c697d3aecb808a1cb2646acf1f/jupyter_events-0.10.0.tar.gz", hash = "sha256:670b8229d3cc882ec782144ed22e0d29e1c2d639263f92ca8383e66682845e22", size = 61516, upload-time = "2024-03-18T17:41:58.642Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a5/94/059180ea70a9a326e1815176b2370da56376da347a796f8c4f0b830208ef/jupyter_events-0.10.0-py3-none-any.whl", hash = "sha256:4b72130875e59d57716d327ea70d3ebc3af1944d3717e5a498b8a06c6c159960", size = 18777, upload-time = "2024-03-18T17:41:56.155Z" }, +] + +[[package]] +name = "jupyter-lsp" +version = "2.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "importlib-metadata" }, + { name = "jupyter-server" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/eb/5a/9066c9f8e94ee517133cd98dba393459a16cd48bba71a82f16a65415206c/jupyter_lsp-2.3.0.tar.gz", hash = "sha256:458aa59339dc868fb784d73364f17dbce8836e906cd75fd471a325cba02e0245", size = 54823, upload-time = "2025-08-27T17:47:34.671Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1a/60/1f6cee0c46263de1173894f0fafcb3475ded276c472c14d25e0280c18d6d/jupyter_lsp-2.3.0-py3-none-any.whl", hash = "sha256:e914a3cb2addf48b1c7710914771aaf1819d46b2e5a79b0f917b5478ec93f34f", size = 76687, upload-time = "2025-08-27T17:47:33.15Z" }, +] + +[[package]] +name = "jupyter-server" +version = "2.14.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "argon2-cffi" }, + { name = "jinja2" }, + { name = "jupyter-client" }, + { name = "jupyter-core" }, + { name = "jupyter-events" }, + { name = "jupyter-server-terminals" }, + { name = "nbconvert" }, + { name = "nbformat" }, + { name = "overrides" }, + { name = "packaging" }, + { name = "prometheus-client" }, + { name = "pywinpty", marker = "os_name == 'nt'" }, + { name = "pyzmq" }, + { name = "send2trash" }, + { name = "terminado" }, + { name = "tornado" }, + { name = "traitlets" }, + { name = "websocket-client" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0c/34/88b47749c7fa9358e10eac356c4b97d94a91a67d5c935a73f69bc4a31118/jupyter_server-2.14.2.tar.gz", hash = "sha256:66095021aa9638ced276c248b1d81862e4c50f292d575920bbe960de1c56b12b", size = 719933, upload-time = "2024-07-12T18:31:43.019Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/57/e1/085edea6187a127ca8ea053eb01f4e1792d778b4d192c74d32eb6730fed6/jupyter_server-2.14.2-py3-none-any.whl", hash = "sha256:47ff506127c2f7851a17bf4713434208fc490955d0e8632e95014a9a9afbeefd", size = 383556, upload-time = "2024-07-12T18:31:39.724Z" }, +] + +[[package]] +name = "jupyter-server-terminals" +version = "0.5.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pywinpty", marker = "os_name == 'nt'" }, + { name = "terminado" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f4/a7/bcd0a9b0cbba88986fe944aaaf91bfda603e5a50bda8ed15123f381a3b2f/jupyter_server_terminals-0.5.4.tar.gz", hash = "sha256:bbda128ed41d0be9020349f9f1f2a4ab9952a73ed5f5ac9f1419794761fb87f5", size = 31770, upload-time = "2026-01-14T16:53:20.213Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/2d/6674563f71c6320841fc300911a55143925112a72a883e2ca71fba4c618d/jupyter_server_terminals-0.5.4-py3-none-any.whl", hash = "sha256:55be353fc74a80bc7f3b20e6be50a55a61cd525626f578dcb66a5708e2007d14", size = 13704, upload-time = "2026-01-14T16:53:18.738Z" }, +] + +[[package]] +name = "jupyterlab" +version = "4.3.8" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "async-lru" }, + { name = "httpx" }, + { name = "importlib-metadata" }, + { name = "importlib-resources" }, + { name = "ipykernel" }, + { name = "jinja2" }, + { name = "jupyter-core" }, + { name = "jupyter-lsp" }, + { name = "jupyter-server" }, + { name = "jupyterlab-server" }, + { name = "notebook-shim" }, + { name = "packaging" }, + { name = "setuptools" }, + { name = "tomli" }, + { name = "tornado" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c1/8e/9d3d91a0492be047167850419e43ba72e7950145ba2ff60824366bcae50f/jupyterlab-4.3.8.tar.gz", hash = "sha256:2ffd0e7b82786dba54743f4d1646130642ed81cb9e52f0a31e79416f6e5ba2e7", size = 21826824, upload-time = "2025-06-24T16:49:34.005Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e6/15/ef346ab227f161cba2dcffe3ffeb8b4e4d2630600408f8276945d49fc868/jupyterlab-4.3.8-py3-none-any.whl", hash = "sha256:8c6451ef224a18b457975fd52010e45a7aef58b719dfb242c5f253e0e48ea047", size = 11682103, upload-time = "2025-06-24T16:49:28.459Z" }, +] + +[[package]] +name = "jupyterlab-pygments" +version = "0.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/90/51/9187be60d989df97f5f0aba133fa54e7300f17616e065d1ada7d7646b6d6/jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d", size = 512900, upload-time = "2023-11-23T09:26:37.44Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b1/dd/ead9d8ea85bf202d90cc513b533f9c363121c7792674f78e0d8a854b63b4/jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780", size = 15884, upload-time = "2023-11-23T09:26:34.325Z" }, +] + +[[package]] +name = "jupyterlab-server" +version = "2.28.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "babel" }, + { name = "importlib-metadata" }, + { name = "jinja2" }, + { name = "json5" }, + { name = "jsonschema" }, + { name = "jupyter-server" }, + { name = "packaging" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d6/2c/90153f189e421e93c4bb4f9e3f59802a1f01abd2ac5cf40b152d7f735232/jupyterlab_server-2.28.0.tar.gz", hash = "sha256:35baa81898b15f93573e2deca50d11ac0ae407ebb688299d3a5213265033712c", size = 76996, upload-time = "2025-10-22T13:59:18.37Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e0/07/a000fe835f76b7e1143242ab1122e6362ef1c03f23f83a045c38859c2ae0/jupyterlab_server-2.28.0-py3-none-any.whl", hash = "sha256:e4355b148fdcf34d312bbbc80f22467d6d20460e8b8736bf235577dd18506968", size = 59830, upload-time = "2025-10-22T13:59:16.767Z" }, +] + +[[package]] +name = "jupyterlab-widgets" +version = "3.0.16" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/26/2d/ef58fed122b268c69c0aa099da20bc67657cdfb2e222688d5731bd5b971d/jupyterlab_widgets-3.0.16.tar.gz", hash = "sha256:423da05071d55cf27a9e602216d35a3a65a3e41cdf9c5d3b643b814ce38c19e0", size = 897423, upload-time = "2025-11-01T21:11:29.724Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ab/b5/36c712098e6191d1b4e349304ef73a8d06aed77e56ceaac8c0a306c7bda1/jupyterlab_widgets-3.0.16-py3-none-any.whl", hash = "sha256:45fa36d9c6422cf2559198e4db481aa243c7a32d9926b500781c830c80f7ecf8", size = 914926, upload-time = "2025-11-01T21:11:28.008Z" }, +] + +[[package]] +name = "kiwisolver" +version = "1.4.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/85/4d/2255e1c76304cbd60b48cee302b66d1dde4468dc5b1160e4b7cb43778f2a/kiwisolver-1.4.7.tar.gz", hash = "sha256:9893ff81bd7107f7b685d3017cc6583daadb4fc26e4a888350df530e41980a60", size = 97286, upload-time = "2024-09-04T09:39:44.302Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/57/d6/620247574d9e26fe24384087879e8399e309f0051782f95238090afa6ccc/kiwisolver-1.4.7-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5d5abf8f8ec1f4e22882273c423e16cae834c36856cac348cfbfa68e01c40f3a", size = 122325, upload-time = "2024-09-04T09:05:31.648Z" }, + { url = "https://files.pythonhosted.org/packages/bd/c6/572ad7d73dbd898cffa9050ffd7ff7e78a055a1d9b7accd6b4d1f50ec858/kiwisolver-1.4.7-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:aeb3531b196ef6f11776c21674dba836aeea9d5bd1cf630f869e3d90b16cfade", size = 65679, upload-time = "2024-09-04T09:05:32.934Z" }, + { url = "https://files.pythonhosted.org/packages/14/a7/bb8ab10e12cc8764f4da0245d72dee4731cc720bdec0f085d5e9c6005b98/kiwisolver-1.4.7-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b7d755065e4e866a8086c9bdada157133ff466476a2ad7861828e17b6026e22c", size = 64267, upload-time = "2024-09-04T09:05:34.11Z" }, + { url = "https://files.pythonhosted.org/packages/54/a4/3b5a2542429e182a4df0528214e76803f79d016110f5e67c414a0357cd7d/kiwisolver-1.4.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:08471d4d86cbaec61f86b217dd938a83d85e03785f51121e791a6e6689a3be95", size = 1387236, upload-time = "2024-09-04T09:05:35.97Z" }, + { url = "https://files.pythonhosted.org/packages/a6/d7/bc3005e906c1673953a3e31ee4f828157d5e07a62778d835dd937d624ea0/kiwisolver-1.4.7-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7bbfcb7165ce3d54a3dfbe731e470f65739c4c1f85bb1018ee912bae139e263b", size = 1500555, upload-time = "2024-09-04T09:05:37.552Z" }, + { url = "https://files.pythonhosted.org/packages/09/a7/87cb30741f13b7af08446795dca6003491755805edc9c321fe996c1320b8/kiwisolver-1.4.7-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5d34eb8494bea691a1a450141ebb5385e4b69d38bb8403b5146ad279f4b30fa3", size = 1431684, upload-time = "2024-09-04T09:05:39.75Z" }, + { url = "https://files.pythonhosted.org/packages/37/a4/1e4e2d8cdaa42c73d523413498445247e615334e39401ae49dae74885429/kiwisolver-1.4.7-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9242795d174daa40105c1d86aba618e8eab7bf96ba8c3ee614da8302a9f95503", size = 1125811, upload-time = "2024-09-04T09:05:41.31Z" }, + { url = "https://files.pythonhosted.org/packages/76/36/ae40d7a3171e06f55ac77fe5536079e7be1d8be2a8210e08975c7f9b4d54/kiwisolver-1.4.7-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:a0f64a48bb81af7450e641e3fe0b0394d7381e342805479178b3d335d60ca7cf", size = 1179987, upload-time = "2024-09-04T09:05:42.893Z" }, + { url = "https://files.pythonhosted.org/packages/d8/5d/6e4894b9fdf836d8bd095729dff123bbbe6ad0346289287b45c800fae656/kiwisolver-1.4.7-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:8e045731a5416357638d1700927529e2b8ab304811671f665b225f8bf8d8f933", size = 2186817, upload-time = "2024-09-04T09:05:44.474Z" }, + { url = "https://files.pythonhosted.org/packages/f0/2d/603079b2c2fd62890be0b0ebfc8bb6dda8a5253ca0758885596565b0dfc1/kiwisolver-1.4.7-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:4322872d5772cae7369f8351da1edf255a604ea7087fe295411397d0cfd9655e", size = 2332538, upload-time = "2024-09-04T09:05:46.206Z" }, + { url = "https://files.pythonhosted.org/packages/bb/2a/9a28279c865c38a27960db38b07179143aafc94877945c209bfc553d9dd3/kiwisolver-1.4.7-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:e1631290ee9271dffe3062d2634c3ecac02c83890ada077d225e081aca8aab89", size = 2293890, upload-time = "2024-09-04T09:05:47.819Z" }, + { url = "https://files.pythonhosted.org/packages/1a/4d/4da8967f3bf13c764984b8fbae330683ee5fbd555b4a5624ad2b9decc0ab/kiwisolver-1.4.7-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:edcfc407e4eb17e037bca59be0e85a2031a2ac87e4fed26d3e9df88b4165f92d", size = 2434677, upload-time = "2024-09-04T09:05:49.459Z" }, + { url = "https://files.pythonhosted.org/packages/08/e9/a97a2b6b74dd850fa5974309367e025c06093a143befe9b962d0baebb4f0/kiwisolver-1.4.7-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:4d05d81ecb47d11e7f8932bd8b61b720bf0b41199358f3f5e36d38e28f0532c5", size = 2250339, upload-time = "2024-09-04T09:05:51.165Z" }, + { url = "https://files.pythonhosted.org/packages/8a/e7/55507a387ba1766e69f5e13a79e1aefabdafe0532bee5d1972dfc42b3d16/kiwisolver-1.4.7-cp38-cp38-win32.whl", hash = "sha256:b38ac83d5f04b15e515fd86f312479d950d05ce2368d5413d46c088dda7de90a", size = 46932, upload-time = "2024-09-04T09:05:52.49Z" }, + { url = "https://files.pythonhosted.org/packages/52/77/7e04cca2ff1dc6ee6b7654cebe233de72b7a3ec5616501b6f3144fb70740/kiwisolver-1.4.7-cp38-cp38-win_amd64.whl", hash = "sha256:d83db7cde68459fc803052a55ace60bea2bae361fc3b7a6d5da07e11954e4b09", size = 55836, upload-time = "2024-09-04T09:05:54.078Z" }, + { url = "https://files.pythonhosted.org/packages/64/f3/2403d90821fffe496df16f6996cb328b90b0d80c06d2938a930a7732b4f1/kiwisolver-1.4.7-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:bfa1acfa0c54932d5607e19a2c24646fb4c1ae2694437789129cf099789a3b00", size = 59662, upload-time = "2024-09-04T09:06:33.551Z" }, + { url = "https://files.pythonhosted.org/packages/fa/7d/8f409736a4a6ac04354fa530ebf46682ddb1539b0bae15f4731ff2c575bc/kiwisolver-1.4.7-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:eee3ea935c3d227d49b4eb85660ff631556841f6e567f0f7bda972df6c2c9935", size = 57753, upload-time = "2024-09-04T09:06:35.095Z" }, + { url = "https://files.pythonhosted.org/packages/4c/a5/3937c9abe8eedb1356071739ad437a0b486cbad27d54f4ec4733d24882ac/kiwisolver-1.4.7-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:f3160309af4396e0ed04db259c3ccbfdc3621b5559b5453075e5de555e1f3a1b", size = 103564, upload-time = "2024-09-04T09:06:36.756Z" }, + { url = "https://files.pythonhosted.org/packages/b2/18/a5ae23888f010b90d5eb8d196fed30e268056b2ded54d25b38a193bb70e9/kiwisolver-1.4.7-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a17f6a29cf8935e587cc8a4dbfc8368c55edc645283db0ce9801016f83526c2d", size = 95264, upload-time = "2024-09-04T09:06:38.786Z" }, + { url = "https://files.pythonhosted.org/packages/f9/d0/c4240ae86306d4395e9701f1d7e6ddcc6d60c28cb0127139176cfcfc9ebe/kiwisolver-1.4.7-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:10849fb2c1ecbfae45a693c070e0320a91b35dd4bcf58172c023b994283a124d", size = 78197, upload-time = "2024-09-04T09:06:40.453Z" }, + { url = "https://files.pythonhosted.org/packages/62/db/62423f0ab66813376a35c1e7da488ebdb4e808fcb54b7cec33959717bda1/kiwisolver-1.4.7-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:ac542bf38a8a4be2dc6b15248d36315ccc65f0743f7b1a76688ffb6b5129a5c2", size = 56080, upload-time = "2024-09-04T09:06:42.061Z" }, +] + +[[package]] +name = "markupsafe" +version = "2.1.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/87/5b/aae44c6655f3801e81aa3eef09dbbf012431987ba564d7231722f68df02d/MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b", size = 19384, upload-time = "2024-02-02T16:31:22.863Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f8/ff/2c942a82c35a49df5de3a630ce0a8456ac2969691b230e530ac12314364c/MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a", size = 18192, upload-time = "2024-02-02T16:30:57.715Z" }, + { url = "https://files.pythonhosted.org/packages/4f/14/6f294b9c4f969d0c801a4615e221c1e084722ea6114ab2114189c5b8cbe0/MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46", size = 14072, upload-time = "2024-02-02T16:30:58.844Z" }, + { url = "https://files.pythonhosted.org/packages/81/d4/fd74714ed30a1dedd0b82427c02fa4deec64f173831ec716da11c51a50aa/MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532", size = 26928, upload-time = "2024-02-02T16:30:59.922Z" }, + { url = "https://files.pythonhosted.org/packages/c7/bd/50319665ce81bb10e90d1cf76f9e1aa269ea6f7fa30ab4521f14d122a3df/MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab", size = 26106, upload-time = "2024-02-02T16:31:01.582Z" }, + { url = "https://files.pythonhosted.org/packages/4c/6f/f2b0f675635b05f6afd5ea03c094557bdb8622fa8e673387444fe8d8e787/MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68", size = 25781, upload-time = "2024-02-02T16:31:02.71Z" }, + { url = "https://files.pythonhosted.org/packages/51/e0/393467cf899b34a9d3678e78961c2c8cdf49fb902a959ba54ece01273fb1/MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0", size = 30518, upload-time = "2024-02-02T16:31:04.392Z" }, + { url = "https://files.pythonhosted.org/packages/f6/02/5437e2ad33047290dafced9df741d9efc3e716b75583bbd73a9984f1b6f7/MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4", size = 29669, upload-time = "2024-02-02T16:31:05.53Z" }, + { url = "https://files.pythonhosted.org/packages/0e/7d/968284145ffd9d726183ed6237c77938c021abacde4e073020f920e060b2/MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3", size = 29933, upload-time = "2024-02-02T16:31:06.636Z" }, + { url = "https://files.pythonhosted.org/packages/bf/f3/ecb00fc8ab02b7beae8699f34db9357ae49d9f21d4d3de6f305f34fa949e/MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff", size = 16656, upload-time = "2024-02-02T16:31:07.767Z" }, + { url = "https://files.pythonhosted.org/packages/92/21/357205f03514a49b293e214ac39de01fadd0970a6e05e4bf1ddd0ffd0881/MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029", size = 17206, upload-time = "2024-02-02T16:31:08.843Z" }, +] + +[[package]] +name = "matplotlib" +version = "3.7.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "contourpy" }, + { name = "cycler" }, + { name = "fonttools" }, + { name = "importlib-resources" }, + { name = "kiwisolver" }, + { name = "numpy" }, + { name = "packaging" }, + { name = "pillow" }, + { name = "pyparsing" }, + { name = "python-dateutil" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b6/f0/3836719cc3982fbba3b840d18a59db1d0ee9ac7986f24e8c0a092851b67b/matplotlib-3.7.5.tar.gz", hash = "sha256:1e5c971558ebc811aa07f54c7b7c677d78aa518ef4c390e14673a09e0860184a", size = 38098611, upload-time = "2024-02-16T10:50:56.19Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e3/72/50a38c8fd5dc845b06f8e71c9da802db44b81baabf4af8be78bb8a5622ea/matplotlib-3.7.5-cp38-cp38-macosx_10_12_universal2.whl", hash = "sha256:cfff9b838531698ee40e40ea1a8a9dc2c01edb400b27d38de6ba44c1f9a8e3d2", size = 8322659, upload-time = "2024-02-16T10:49:23.206Z" }, + { url = "https://files.pythonhosted.org/packages/b1/ea/129163dcd21db6da5d559a8160c4a74c1dc5f96ac246a3d4248b43c7648d/matplotlib-3.7.5-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:1dbcca4508bca7847fe2d64a05b237a3dcaec1f959aedb756d5b1c67b770c5ee", size = 7438408, upload-time = "2024-02-16T10:49:27.462Z" }, + { url = "https://files.pythonhosted.org/packages/aa/59/4d13e5b6298b1ca5525eea8c68d3806ae93ab6d0bb17ca9846aa3156b92b/matplotlib-3.7.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4cdf4ef46c2a1609a50411b66940b31778db1e4b73d4ecc2eaa40bd588979b13", size = 7341782, upload-time = "2024-02-16T10:49:32.173Z" }, + { url = "https://files.pythonhosted.org/packages/9e/c4/f562df04b08487731743511ff274ae5d31dce2ff3e5621f8b070d20ab54a/matplotlib-3.7.5-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:167200ccfefd1674b60e957186dfd9baf58b324562ad1a28e5d0a6b3bea77905", size = 9196487, upload-time = "2024-02-16T10:49:37.971Z" }, + { url = "https://files.pythonhosted.org/packages/30/33/cc27211d2ffeee4fd7402dca137b6e8a83f6dcae3d4be8d0ad5068555561/matplotlib-3.7.5-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:53e64522934df6e1818b25fd48cf3b645b11740d78e6ef765fbb5fa5ce080d02", size = 9213051, upload-time = "2024-02-16T10:49:43.916Z" }, + { url = "https://files.pythonhosted.org/packages/9b/9d/8bd37c86b79312c9dbcfa379dec32303f9b38e8456e0829d7e666a0e0a05/matplotlib-3.7.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3e3bc79b2d7d615067bd010caff9243ead1fc95cf735c16e4b2583173f717eb", size = 11370807, upload-time = "2024-02-16T10:49:47.701Z" }, + { url = "https://files.pythonhosted.org/packages/c0/1e/b24a07a849c8d458f1b3724f49029f0dedf748bdedb4d5f69491314838b6/matplotlib-3.7.5-cp38-cp38-win32.whl", hash = "sha256:6b641b48c6819726ed47c55835cdd330e53747d4efff574109fd79b2d8a13748", size = 7340461, upload-time = "2024-02-16T10:49:51.597Z" }, + { url = "https://files.pythonhosted.org/packages/16/51/58b0b9de42fe1e665736d9286f88b5f1556a0e22bed8a71f468231761083/matplotlib-3.7.5-cp38-cp38-win_amd64.whl", hash = "sha256:f0b60993ed3488b4532ec6b697059897891927cbfc2b8d458a891b60ec03d9d7", size = 7507471, upload-time = "2024-02-16T10:49:54.353Z" }, + { url = "https://files.pythonhosted.org/packages/27/6c/1bb10f3d6f337b9faa2e96a251bd87ba5fed85a608df95eb4d69acc109f0/matplotlib-3.7.5-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:2a9a3f4d6a7f88a62a6a18c7e6a84aedcaf4faf0708b4ca46d87b19f1b526f88", size = 7397285, upload-time = "2024-02-16T10:50:27.375Z" }, + { url = "https://files.pythonhosted.org/packages/b2/36/66cfea213e9ba91cda9e257542c249ed235d49021af71c2e8007107d7d4c/matplotlib-3.7.5-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b9b3fd853d4a7f008a938df909b96db0b454225f935d3917520305b90680579c", size = 7552612, upload-time = "2024-02-16T10:50:30.65Z" }, + { url = "https://files.pythonhosted.org/packages/77/df/16655199bf984c37c6a816b854bc032b56aef521aadc04f27928422f3c91/matplotlib-3.7.5-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0ad550da9f160737d7890217c5eeed4337d07e83ca1b2ca6535078f354e7675", size = 7515564, upload-time = "2024-02-16T10:50:33.589Z" }, + { url = "https://files.pythonhosted.org/packages/5b/c8/3534c3705a677b71abb6be33609ba129fdeae2ea4e76b2fd3ab62c86fab3/matplotlib-3.7.5-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:20da7924a08306a861b3f2d1da0d1aa9a6678e480cf8eacffe18b565af2813e7", size = 7521336, upload-time = "2024-02-16T10:50:36.4Z" }, +] + +[[package]] +name = "matplotlib-inline" +version = "0.1.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/99/5b/a36a337438a14116b16480db471ad061c36c3694df7c2084a0da7ba538b7/matplotlib_inline-0.1.7.tar.gz", hash = "sha256:8423b23ec666be3d16e16b60bdd8ac4e86e840ebd1dd11a30b9f117f2fa0ab90", size = 8159, upload-time = "2024-04-15T13:44:44.803Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8f/8e/9ad090d3553c280a8060fbf6e24dc1c0c29704ee7d1c372f0c174aa59285/matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca", size = 9899, upload-time = "2024-04-15T13:44:43.265Z" }, +] + +[[package]] +name = "mistune" +version = "3.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9d/55/d01f0c4b45ade6536c51170b9043db8b2ec6ddf4a35c7ea3f5f559ac935b/mistune-3.2.0.tar.gz", hash = "sha256:708487c8a8cdd99c9d90eb3ed4c3ed961246ff78ac82f03418f5183ab70e398a", size = 95467, upload-time = "2025-12-23T11:36:34.994Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9b/f7/4a5e785ec9fbd65146a27b6b70b6cdc161a66f2024e4b04ac06a67f5578b/mistune-3.2.0-py3-none-any.whl", hash = "sha256:febdc629a3c78616b94393c6580551e0e34cc289987ec6c35ed3f4be42d0eee1", size = 53598, upload-time = "2025-12-23T11:36:33.211Z" }, +] + +[[package]] +name = "nbclient" +version = "0.10.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jupyter-client" }, + { name = "jupyter-core" }, + { name = "nbformat" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/06/db/25929926860ba8a3f6123d2d0a235e558e0e4be7b46e9db063a7dfefa0a2/nbclient-0.10.1.tar.gz", hash = "sha256:3e93e348ab27e712acd46fccd809139e356eb9a31aab641d1a7991a6eb4e6f68", size = 62273, upload-time = "2024-11-29T08:28:38.47Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/26/1a/ed6d1299b1a00c1af4a033fdee565f533926d819e084caf0d2832f6f87c6/nbclient-0.10.1-py3-none-any.whl", hash = "sha256:949019b9240d66897e442888cfb618f69ef23dc71c01cb5fced8499c2cfc084d", size = 25344, upload-time = "2024-11-29T08:28:21.844Z" }, +] + +[[package]] +name = "nbconvert" +version = "7.16.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "beautifulsoup4" }, + { name = "bleach", extra = ["css"] }, + { name = "defusedxml" }, + { name = "importlib-metadata" }, + { name = "jinja2" }, + { name = "jupyter-core" }, + { name = "jupyterlab-pygments" }, + { name = "markupsafe" }, + { name = "mistune" }, + { name = "nbclient" }, + { name = "nbformat" }, + { name = "packaging" }, + { name = "pandocfilters" }, + { name = "pygments" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a3/59/f28e15fc47ffb73af68a8d9b47367a8630d76e97ae85ad18271b9db96fdf/nbconvert-7.16.6.tar.gz", hash = "sha256:576a7e37c6480da7b8465eefa66c17844243816ce1ccc372633c6b71c3c0f582", size = 857715, upload-time = "2025-01-28T09:29:14.724Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cc/9a/cd673b2f773a12c992f41309ef81b99da1690426bd2f96957a7ade0d3ed7/nbconvert-7.16.6-py3-none-any.whl", hash = "sha256:1375a7b67e0c2883678c48e506dc320febb57685e5ee67faa51b18a90f3a712b", size = 258525, upload-time = "2025-01-28T09:29:12.551Z" }, +] + +[[package]] +name = "nbformat" +version = "5.10.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "fastjsonschema" }, + { name = "jsonschema" }, + { name = "jupyter-core" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/6d/fd/91545e604bc3dad7dca9ed03284086039b294c6b3d75c0d2fa45f9e9caf3/nbformat-5.10.4.tar.gz", hash = "sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a", size = 142749, upload-time = "2024-04-04T11:20:37.371Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a9/82/0340caa499416c78e5d8f5f05947ae4bc3cba53c9f038ab6e9ed964e22f1/nbformat-5.10.4-py3-none-any.whl", hash = "sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b", size = 78454, upload-time = "2024-04-04T11:20:34.895Z" }, +] + +[[package]] +name = "nest-asyncio" +version = "1.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/83/f8/51569ac65d696c8ecbee95938f89d4abf00f47d58d48f6fbabfe8f0baefe/nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe", size = 7418, upload-time = "2024-01-21T14:25:19.227Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c", size = 5195, upload-time = "2024-01-21T14:25:17.223Z" }, +] + +[[package]] +name = "notebook" +version = "7.3.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jupyter-server" }, + { name = "jupyterlab" }, + { name = "jupyterlab-server" }, + { name = "notebook-shim" }, + { name = "tornado" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/71/0f/7781fed05f79d1047c039dfd17fbd6e6670bcf5ad330baa997bcc62525b5/notebook-7.3.3.tar.gz", hash = "sha256:707a313fb882d35f921989eb3d204de942ed5132a44e4aa1fe0e8f24bb9dc25d", size = 12758099, upload-time = "2025-03-14T13:40:57.001Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f2/bf/5e5fcf79c559600b738d7577c8360bfd4cfa705400af06f23b3a049e44b6/notebook-7.3.3-py3-none-any.whl", hash = "sha256:b193df0878956562d5171c8e25c9252b8e86c9fcc16163b8ee3fe6c5e3f422f7", size = 13142886, upload-time = "2025-03-14T13:40:52.754Z" }, +] + +[[package]] +name = "notebook-shim" +version = "0.2.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jupyter-server" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/54/d2/92fa3243712b9a3e8bafaf60aac366da1cada3639ca767ff4b5b3654ec28/notebook_shim-0.2.4.tar.gz", hash = "sha256:b4b2cfa1b65d98307ca24361f5b30fe785b53c3fd07b7a47e89acb5e6ac638cb", size = 13167, upload-time = "2024-02-14T23:35:18.353Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f9/33/bd5b9137445ea4b680023eb0469b2bb969d61303dedb2aac6560ff3d14a1/notebook_shim-0.2.4-py3-none-any.whl", hash = "sha256:411a5be4e9dc882a074ccbcae671eda64cceb068767e9a3419096986560e1cef", size = 13307, upload-time = "2024-02-14T23:35:16.286Z" }, +] + +[[package]] +name = "numpy" +version = "1.24.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a4/9b/027bec52c633f6556dba6b722d9a0befb40498b9ceddd29cbe67a45a127c/numpy-1.24.4.tar.gz", hash = "sha256:80f5e3a4e498641401868df4208b74581206afbee7cf7b8329daae82676d9463", size = 10911229, upload-time = "2023-06-26T13:39:33.218Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/11/10/943cfb579f1a02909ff96464c69893b1d25be3731b5d3652c2e0cf1281ea/numpy-1.24.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1452241c290f3e2a312c137a9999cdbf63f78864d63c79039bda65ee86943f61", size = 19780722, upload-time = "2023-06-26T13:27:49.573Z" }, + { url = "https://files.pythonhosted.org/packages/a7/ae/f53b7b265fdc701e663fbb322a8e9d4b14d9cb7b2385f45ddfabfc4327e4/numpy-1.24.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:04640dab83f7c6c85abf9cd729c5b65f1ebd0ccf9de90b270cd61935eef0197f", size = 13843102, upload-time = "2023-06-26T13:28:12.288Z" }, + { url = "https://files.pythonhosted.org/packages/25/6f/2586a50ad72e8dbb1d8381f837008a0321a3516dfd7cb57fc8cf7e4bb06b/numpy-1.24.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5425b114831d1e77e4b5d812b69d11d962e104095a5b9c3b641a218abcc050e", size = 14039616, upload-time = "2023-06-26T13:28:35.659Z" }, + { url = "https://files.pythonhosted.org/packages/98/5d/5738903efe0ecb73e51eb44feafba32bdba2081263d40c5043568ff60faf/numpy-1.24.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd80e219fd4c71fc3699fc1dadac5dcf4fd882bfc6f7ec53d30fa197b8ee22dc", size = 17316263, upload-time = "2023-06-26T13:29:09.272Z" }, + { url = "https://files.pythonhosted.org/packages/d1/57/8d328f0b91c733aa9aa7ee540dbc49b58796c862b4fbcb1146c701e888da/numpy-1.24.4-cp38-cp38-win32.whl", hash = "sha256:4602244f345453db537be5314d3983dbf5834a9701b7723ec28923e2889e0bb2", size = 12455660, upload-time = "2023-06-26T13:29:33.434Z" }, + { url = "https://files.pythonhosted.org/packages/69/65/0d47953afa0ad569d12de5f65d964321c208492064c38fe3b0b9744f8d44/numpy-1.24.4-cp38-cp38-win_amd64.whl", hash = "sha256:692f2e0f55794943c5bfff12b3f56f99af76f902fc47487bdfe97856de51a706", size = 14868112, upload-time = "2023-06-26T13:29:58.385Z" }, + { url = "https://files.pythonhosted.org/packages/a4/fd/8dff40e25e937c94257455c237b9b6bf5a30d42dd1cc11555533be099492/numpy-1.24.4-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:31f13e25b4e304632a4619d0e0777662c2ffea99fcae2029556b17d8ff958aef", size = 19156590, upload-time = "2023-06-26T13:33:10.36Z" }, + { url = "https://files.pythonhosted.org/packages/42/e7/4bf953c6e05df90c6d351af69966384fed8e988d0e8c54dad7103b59f3ba/numpy-1.24.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95f7ac6540e95bc440ad77f56e520da5bf877f87dca58bd095288dce8940532a", size = 16705744, upload-time = "2023-06-26T13:33:36.703Z" }, + { url = "https://files.pythonhosted.org/packages/fc/dd/9106005eb477d022b60b3817ed5937a43dad8fd1f20b0610ea8a32fcb407/numpy-1.24.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:e98f220aa76ca2a977fe435f5b04d7b3470c0a2e6312907b37ba6068f26787f2", size = 14734290, upload-time = "2023-06-26T13:34:05.409Z" }, +] + +[[package]] +name = "overrides" +version = "7.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/36/86/b585f53236dec60aba864e050778b25045f857e17f6e5ea0ae95fe80edd2/overrides-7.7.0.tar.gz", hash = "sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a", size = 22812, upload-time = "2024-01-27T21:01:33.423Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2c/ab/fc8290c6a4c722e5514d80f62b2dc4c4df1a68a41d1364e625c35990fcf3/overrides-7.7.0-py3-none-any.whl", hash = "sha256:c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49", size = 17832, upload-time = "2024-01-27T21:01:31.393Z" }, +] + +[[package]] +name = "packaging" +version = "26.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/65/ee/299d360cdc32edc7d2cf530f3accf79c4fca01e96ffc950d8a52213bd8e4/packaging-26.0.tar.gz", hash = "sha256:00243ae351a257117b6a241061796684b084ed1c516a08c48a3f7e147a9d80b4", size = 143416, upload-time = "2026-01-21T20:50:39.064Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/b9/c538f279a4e237a006a2c98387d081e9eb060d203d8ed34467cc0f0b9b53/packaging-26.0-py3-none-any.whl", hash = "sha256:b36f1fef9334a5588b4166f8bcd26a14e521f2b55e6b9de3aaa80d3ff7a37529", size = 74366, upload-time = "2026-01-21T20:50:37.788Z" }, +] + +[[package]] +name = "pandocfilters" +version = "1.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/70/6f/3dd4940bbe001c06a65f88e36bad298bc7a0de5036115639926b0c5c0458/pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e", size = 8454, upload-time = "2024-01-18T20:08:13.726Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ef/af/4fbc8cab944db5d21b7e2a5b8e9211a03a79852b1157e2c102fcc61ac440/pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc", size = 8663, upload-time = "2024-01-18T20:08:11.28Z" }, +] + +[[package]] +name = "parso" +version = "0.8.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d4/de/53e0bcf53d13e005bd8c92e7855142494f41171b34c2536b86187474184d/parso-0.8.5.tar.gz", hash = "sha256:034d7354a9a018bdce352f48b2a8a450f05e9d6ee85db84764e9b6bd96dafe5a", size = 401205, upload-time = "2025-08-23T15:15:28.028Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/16/32/f8e3c85d1d5250232a5d3477a2a28cc291968ff175caeadaf3cc19ce0e4a/parso-0.8.5-py2.py3-none-any.whl", hash = "sha256:646204b5ee239c396d040b90f9e272e9a8017c630092bf59980beb62fd033887", size = 106668, upload-time = "2025-08-23T15:15:25.663Z" }, +] + +[[package]] +name = "pexpect" +version = "4.9.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ptyprocess" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/42/92/cc564bf6381ff43ce1f4d06852fc19a2f11d180f23dc32d9588bee2f149d/pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f", size = 166450, upload-time = "2023-11-25T09:07:26.339Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523", size = 63772, upload-time = "2023-11-25T06:56:14.81Z" }, +] + +[[package]] +name = "pickleshare" +version = "0.7.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/b6/df3c1c9b616e9c0edbc4fbab6ddd09df9535849c64ba51fcb6531c32d4d8/pickleshare-0.7.5.tar.gz", hash = "sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca", size = 6161, upload-time = "2018-09-25T19:17:37.249Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9a/41/220f49aaea88bc6fa6cba8d05ecf24676326156c23b991e80b3f2fc24c77/pickleshare-0.7.5-py2.py3-none-any.whl", hash = "sha256:9649af414d74d4df115d5d718f82acb59c9d418196b7b4290ed47a12ce62df56", size = 6877, upload-time = "2018-09-25T19:17:35.817Z" }, +] + +[[package]] +name = "pillow" +version = "10.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cd/74/ad3d526f3bf7b6d3f408b73fde271ec69dfac8b81341a318ce825f2b3812/pillow-10.4.0.tar.gz", hash = "sha256:166c1cd4d24309b30d61f79f4a9114b7b2313d7450912277855ff5dfd7cd4a06", size = 46555059, upload-time = "2024-07-01T09:48:43.583Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/56/70/f40009702a477ce87d8d9faaa4de51d6562b3445d7a314accd06e4ffb01d/pillow-10.4.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:8d4d5063501b6dd4024b8ac2f04962d661222d120381272deea52e3fc52d3736", size = 3509213, upload-time = "2024-07-01T09:47:11.662Z" }, + { url = "https://files.pythonhosted.org/packages/10/43/105823d233c5e5d31cea13428f4474ded9d961652307800979a59d6a4276/pillow-10.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7c1ee6f42250df403c5f103cbd2768a28fe1a0ea1f0f03fe151c8741e1469c8b", size = 3375883, upload-time = "2024-07-01T09:47:14.453Z" }, + { url = "https://files.pythonhosted.org/packages/3c/ad/7850c10bac468a20c918f6a5dbba9ecd106ea1cdc5db3c35e33a60570408/pillow-10.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b15e02e9bb4c21e39876698abf233c8c579127986f8207200bc8a8f6bb27acf2", size = 4330810, upload-time = "2024-07-01T09:47:16.695Z" }, + { url = "https://files.pythonhosted.org/packages/84/4c/69bbed9e436ac22f9ed193a2b64f64d68fcfbc9f4106249dc7ed4889907b/pillow-10.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a8d4bade9952ea9a77d0c3e49cbd8b2890a399422258a77f357b9cc9be8d680", size = 4444341, upload-time = "2024-07-01T09:47:19.334Z" }, + { url = "https://files.pythonhosted.org/packages/8f/4f/c183c63828a3f37bf09644ce94cbf72d4929b033b109160a5379c2885932/pillow-10.4.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:43efea75eb06b95d1631cb784aa40156177bf9dd5b4b03ff38979e048258bc6b", size = 4356005, upload-time = "2024-07-01T09:47:21.805Z" }, + { url = "https://files.pythonhosted.org/packages/fb/ad/435fe29865f98a8fbdc64add8875a6e4f8c97749a93577a8919ec6f32c64/pillow-10.4.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:950be4d8ba92aca4b2bb0741285a46bfae3ca699ef913ec8416c1b78eadd64cd", size = 4525201, upload-time = "2024-07-01T09:47:24.457Z" }, + { url = "https://files.pythonhosted.org/packages/80/74/be8bf8acdfd70e91f905a12ae13cfb2e17c0f1da745c40141e26d0971ff5/pillow-10.4.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:d7480af14364494365e89d6fddc510a13e5a2c3584cb19ef65415ca57252fb84", size = 4460635, upload-time = "2024-07-01T09:47:26.841Z" }, + { url = "https://files.pythonhosted.org/packages/e4/90/763616e66dc9ad59c9b7fb58f863755e7934ef122e52349f62c7742b82d3/pillow-10.4.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:73664fe514b34c8f02452ffb73b7a92c6774e39a647087f83d67f010eb9a0cf0", size = 4590283, upload-time = "2024-07-01T09:47:29.247Z" }, + { url = "https://files.pythonhosted.org/packages/69/66/03002cb5b2c27bb519cba63b9f9aa3709c6f7a5d3b285406c01f03fb77e5/pillow-10.4.0-cp38-cp38-win32.whl", hash = "sha256:e88d5e6ad0d026fba7bdab8c3f225a69f063f116462c49892b0149e21b6c0a0e", size = 2235185, upload-time = "2024-07-01T09:47:32.205Z" }, + { url = "https://files.pythonhosted.org/packages/f2/75/3cb820b2812405fc7feb3d0deb701ef0c3de93dc02597115e00704591bc9/pillow-10.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:5161eef006d335e46895297f642341111945e2c1c899eb406882a6c61a4357ab", size = 2554594, upload-time = "2024-07-01T09:47:34.285Z" }, +] + +[[package]] +name = "pkgutil-resolve-name" +version = "1.3.10" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/70/f2/f2891a9dc37398696ddd945012b90ef8d0a034f0012e3f83c3f7a70b0f79/pkgutil_resolve_name-1.3.10.tar.gz", hash = "sha256:357d6c9e6a755653cfd78893817c0853af365dd51ec97f3d358a819373bbd174", size = 5054, upload-time = "2021-07-21T08:19:05.096Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c9/5c/3d4882ba113fd55bdba9326c1e4c62a15e674a2501de4869e6bd6301f87e/pkgutil_resolve_name-1.3.10-py3-none-any.whl", hash = "sha256:ca27cc078d25c5ad71a9de0a7a330146c4e014c2462d9af19c6b828280649c5e", size = 4734, upload-time = "2021-07-21T08:19:03.106Z" }, +] + +[[package]] +name = "platformdirs" +version = "4.3.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/13/fc/128cc9cb8f03208bdbf93d3aa862e16d376844a14f9a0ce5cf4507372de4/platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907", size = 21302, upload-time = "2024-09-17T19:06:50.688Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3c/a6/bc1012356d8ece4d66dd75c4b9fc6c1f6650ddd5991e421177d9f8f671be/platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb", size = 18439, upload-time = "2024-09-17T19:06:49.212Z" }, +] + +[[package]] +name = "projectorembedding" +version = "0.1.0" +source = { virtual = "." } +dependencies = [ + { name = "jupyter" }, + { name = "matplotlib" }, + { name = "pyscf" }, +] + +[package.metadata] +requires-dist = [ + { name = "jupyter", specifier = ">=1.1.1" }, + { name = "matplotlib", specifier = ">=3.7.5" }, + { name = "pyscf", specifier = ">=2.10.0" }, +] + +[[package]] +name = "prometheus-client" +version = "0.21.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/62/14/7d0f567991f3a9af8d1cd4f619040c93b68f09a02b6d0b6ab1b2d1ded5fe/prometheus_client-0.21.1.tar.gz", hash = "sha256:252505a722ac04b0456be05c05f75f45d760c2911ffc45f2a06bcaed9f3ae3fb", size = 78551, upload-time = "2024-12-03T14:59:12.164Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ff/c2/ab7d37426c179ceb9aeb109a85cda8948bb269b7561a0be870cc656eefe4/prometheus_client-0.21.1-py3-none-any.whl", hash = "sha256:594b45c410d6f4f8888940fe80b5cc2521b305a1fafe1c58609ef715a001f301", size = 54682, upload-time = "2024-12-03T14:59:10.935Z" }, +] + +[[package]] +name = "prompt-toolkit" +version = "3.0.52" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "wcwidth" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a1/96/06e01a7b38dce6fe1db213e061a4602dd6032a8a97ef6c1a862537732421/prompt_toolkit-3.0.52.tar.gz", hash = "sha256:28cde192929c8e7321de85de1ddbe736f1375148b02f2e17edd840042b1be855", size = 434198, upload-time = "2025-08-27T15:24:02.057Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/84/03/0d3ce49e2505ae70cf43bc5bb3033955d2fc9f932163e84dc0779cc47f48/prompt_toolkit-3.0.52-py3-none-any.whl", hash = "sha256:9aac639a3bbd33284347de5ad8d68ecc044b91a762dc39b7c21095fcd6a19955", size = 391431, upload-time = "2025-08-27T15:23:59.498Z" }, +] + +[[package]] +name = "psutil" +version = "7.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/aa/c6/d1ddf4abb55e93cebc4f2ed8b5d6dbad109ecb8d63748dd2b20ab5e57ebe/psutil-7.2.2.tar.gz", hash = "sha256:0746f5f8d406af344fd547f1c8daa5f5c33dbc293bb8d6a16d80b4bb88f59372", size = 493740, upload-time = "2026-01-28T18:14:54.428Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/36/5ee6e05c9bd427237b11b3937ad82bb8ad2752d72c6969314590dd0c2f6e/psutil-7.2.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ed0cace939114f62738d808fdcecd4c869222507e266e574799e9c0faa17d486", size = 129090, upload-time = "2026-01-28T18:15:22.168Z" }, + { url = "https://files.pythonhosted.org/packages/80/c4/f5af4c1ca8c1eeb2e92ccca14ce8effdeec651d5ab6053c589b074eda6e1/psutil-7.2.2-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:1a7b04c10f32cc88ab39cbf606e117fd74721c831c98a27dc04578deb0c16979", size = 129859, upload-time = "2026-01-28T18:15:23.795Z" }, + { url = "https://files.pythonhosted.org/packages/b5/70/5d8df3b09e25bce090399cf48e452d25c935ab72dad19406c77f4e828045/psutil-7.2.2-cp36-abi3-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:076a2d2f923fd4821644f5ba89f059523da90dc9014e85f8e45a5774ca5bc6f9", size = 155560, upload-time = "2026-01-28T18:15:25.976Z" }, + { url = "https://files.pythonhosted.org/packages/63/65/37648c0c158dc222aba51c089eb3bdfa238e621674dc42d48706e639204f/psutil-7.2.2-cp36-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b0726cecd84f9474419d67252add4ac0cd9811b04d61123054b9fb6f57df6e9e", size = 156997, upload-time = "2026-01-28T18:15:27.794Z" }, + { url = "https://files.pythonhosted.org/packages/8e/13/125093eadae863ce03c6ffdbae9929430d116a246ef69866dad94da3bfbc/psutil-7.2.2-cp36-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:fd04ef36b4a6d599bbdb225dd1d3f51e00105f6d48a28f006da7f9822f2606d8", size = 148972, upload-time = "2026-01-28T18:15:29.342Z" }, + { url = "https://files.pythonhosted.org/packages/04/78/0acd37ca84ce3ddffaa92ef0f571e073faa6d8ff1f0559ab1272188ea2be/psutil-7.2.2-cp36-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:b58fabe35e80b264a4e3bb23e6b96f9e45a3df7fb7eed419ac0e5947c61e47cc", size = 148266, upload-time = "2026-01-28T18:15:31.597Z" }, + { url = "https://files.pythonhosted.org/packages/b4/90/e2159492b5426be0c1fef7acba807a03511f97c5f86b3caeda6ad92351a7/psutil-7.2.2-cp37-abi3-win_amd64.whl", hash = "sha256:eb7e81434c8d223ec4a219b5fc1c47d0417b12be7ea866e24fb5ad6e84b3d988", size = 137737, upload-time = "2026-01-28T18:15:33.849Z" }, + { url = "https://files.pythonhosted.org/packages/8c/c7/7bb2e321574b10df20cbde462a94e2b71d05f9bbda251ef27d104668306a/psutil-7.2.2-cp37-abi3-win_arm64.whl", hash = "sha256:8c233660f575a5a89e6d4cb65d9f938126312bca76d8fe087b947b3a1aaac9ee", size = 134617, upload-time = "2026-01-28T18:15:36.514Z" }, +] + +[[package]] +name = "ptyprocess" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/20/e5/16ff212c1e452235a90aeb09066144d0c5a6a8c0834397e03f5224495c4e/ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220", size = 70762, upload-time = "2020-12-28T15:15:30.155Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35", size = 13993, upload-time = "2020-12-28T15:15:28.35Z" }, +] + +[[package]] +name = "pure-eval" +version = "0.2.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cd/05/0a34433a064256a578f1783a10da6df098ceaa4a57bbeaa96a6c0352786b/pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42", size = 19752, upload-time = "2024-07-21T12:58:21.801Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0", size = 11842, upload-time = "2024-07-21T12:58:20.04Z" }, +] + +[[package]] +name = "pycparser" +version = "2.23" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fe/cf/d2d3b9f5699fb1e4615c8e32ff220203e43b248e1dfcc6736ad9057731ca/pycparser-2.23.tar.gz", hash = "sha256:78816d4f24add8f10a06d6f05b4d424ad9e96cfebf68a4ddc99c65c0720d00c2", size = 173734, upload-time = "2025-09-09T13:23:47.91Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/e3/59cd50310fc9b59512193629e1984c1f95e5c8ae6e5d8c69532ccc65a7fe/pycparser-2.23-py3-none-any.whl", hash = "sha256:e5c6e8d3fbad53479cab09ac03729e0a9faf2bee3db8208a550daf5af81a5934", size = 118140, upload-time = "2025-09-09T13:23:46.651Z" }, +] + +[[package]] +name = "pygments" +version = "2.19.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b0/77/a5b8c569bf593b0140bde72ea885a803b82086995367bf2037de0159d924/pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887", size = 4968631, upload-time = "2025-06-21T13:39:12.283Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217, upload-time = "2025-06-21T13:39:07.939Z" }, +] + +[[package]] +name = "pyparsing" +version = "3.1.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/83/08/13f3bce01b2061f2bbd582c9df82723de943784cf719a35ac886c652043a/pyparsing-3.1.4.tar.gz", hash = "sha256:f86ec8d1a83f11977c9a6ea7598e8c27fc5cddfa5b07ea2241edbbde1d7bc032", size = 900231, upload-time = "2024-08-25T15:00:47.416Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e5/0c/0e3c05b1c87bb6a1c76d281b0f35e78d2d80ac91b5f8f524cebf77f51049/pyparsing-3.1.4-py3-none-any.whl", hash = "sha256:a6a7ee4235a3f944aa1fa2249307708f893fe5717dc603503c6c7969c070fb7c", size = 104100, upload-time = "2024-08-25T15:00:45.361Z" }, +] + +[[package]] +name = "pyscf" +version = "2.11.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "h5py" }, + { name = "numpy" }, + { name = "scipy" }, + { name = "setuptools" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f1/b8/69364ed18114bbd814ae411bdb08d06422abba7cb6527f6a72e46c70bcfb/pyscf-2.11.0.tar.gz", hash = "sha256:832b3ff4a84886e003fab272a49a7eec7b29e58733faadb94abc7b169956423a", size = 10348189, upload-time = "2025-10-21T18:27:36.774Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4b/8d/1cdc1b9cbbc7f9481d5513f81927338529d54b05095cd1b740970765fb2c/pyscf-2.11.0-py3-none-macosx_10_9_x86_64.whl", hash = "sha256:1cd04f76b85d9a4170decd6c70637351b155fbd83f82d1af150fbf508d6ee15f", size = 35920072, upload-time = "2025-10-21T18:05:09.023Z" }, + { url = "https://files.pythonhosted.org/packages/2a/4f/01a2b5b2a3aac945fd701b347aba78f4d9bf4faadb42622a416ec88c58aa/pyscf-2.11.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:32721c8b768c99f048ee2a3ddb286916402a9a87194e465cef48b7c435f78e45", size = 35098287, upload-time = "2025-10-21T17:57:09.355Z" }, + { url = "https://files.pythonhosted.org/packages/71/8a/fc15ae35450b70bb69e274faeeca10668246d8a5c891a777af449c9482c2/pyscf-2.11.0-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:9214bbbedfdadabe8007c252e4980e8cb74fc667d39f317729d3b8cda340fdf4", size = 44523764, upload-time = "2025-10-21T20:46:56.885Z" }, + { url = "https://files.pythonhosted.org/packages/4f/8b/9fae5f56d1fb6eff907f934f1c7eab5846cfba79f9cdc1170a37138fd4fa/pyscf-2.11.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28499e2ab237279ecd0a868a36766160616e659b2ec959e1c1727f749bb2fa3a", size = 51318168, upload-time = "2025-10-21T18:26:59.331Z" }, +] + +[[package]] +name = "python-dateutil" +version = "2.9.0.post0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432, upload-time = "2024-03-01T18:36:20.211Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload-time = "2024-03-01T18:36:18.57Z" }, +] + +[[package]] +name = "python-json-logger" +version = "4.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/29/bf/eca6a3d43db1dae7070f70e160ab20b807627ba953663ba07928cdd3dc58/python_json_logger-4.0.0.tar.gz", hash = "sha256:f58e68eb46e1faed27e0f574a55a0455eecd7b8a5b88b85a784519ba3cff047f", size = 17683, upload-time = "2025-10-06T04:15:18.984Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/51/e5/fecf13f06e5e5f67e8837d777d1bc43fac0ed2b77a676804df5c34744727/python_json_logger-4.0.0-py3-none-any.whl", hash = "sha256:af09c9daf6a813aa4cc7180395f50f2a9e5fa056034c9953aec92e381c5ba1e2", size = 15548, upload-time = "2025-10-06T04:15:17.553Z" }, +] + +[[package]] +name = "pytz" +version = "2025.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f8/bf/abbd3cdfb8fbc7fb3d4d38d320f2441b1e7cbe29be4f23797b4a2b5d8aac/pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3", size = 320884, upload-time = "2025-03-25T02:25:00.538Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/81/c4/34e93fe5f5429d7570ec1fa436f1986fb1f00c3e0f43a589fe2bbcd22c3f/pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00", size = 509225, upload-time = "2025-03-25T02:24:58.468Z" }, +] + +[[package]] +name = "pywin32" +version = "311" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/75/20/6cd04d636a4c83458ecbb7c8220c13786a1a80d3f5fb568df39310e73e98/pywin32-311-cp38-cp38-win32.whl", hash = "sha256:6c6f2969607b5023b0d9ce2541f8d2cbb01c4f46bc87456017cf63b73f1e2d8c", size = 8766775, upload-time = "2025-07-14T20:12:55.029Z" }, + { url = "https://files.pythonhosted.org/packages/ff/6c/94c10268bae5d0d0c6509bdfb5aa08882d11a9ccdf89ff1cde59a6161afb/pywin32-311-cp38-cp38-win_amd64.whl", hash = "sha256:c8015b09fb9a5e188f83b7b04de91ddca4658cee2ae6f3bc483f0b21a77ef6cd", size = 9594743, upload-time = "2025-07-14T20:12:57.59Z" }, +] + +[[package]] +name = "pywinpty" +version = "2.0.14" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f1/82/90f8750423cba4b9b6c842df227609fb60704482d7abf6dd47e2babc055a/pywinpty-2.0.14.tar.gz", hash = "sha256:18bd9529e4a5daf2d9719aa17788ba6013e594ae94c5a0c27e83df3278b0660e", size = 27769, upload-time = "2024-10-17T16:01:43.197Z" } + +[[package]] +name = "pyyaml" +version = "6.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f", size = 130960, upload-time = "2025-09-25T21:33:16.546Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0d/a2/09f67a3589cb4320fb5ce90d3fd4c9752636b8b6ad8f34b54d76c5a54693/PyYAML-6.0.3-cp38-cp38-macosx_10_13_x86_64.whl", hash = "sha256:c2514fceb77bc5e7a2f7adfaa1feb2fb311607c9cb518dbc378688ec73d8292f", size = 186824, upload-time = "2025-09-29T20:27:35.918Z" }, + { url = "https://files.pythonhosted.org/packages/02/72/d972384252432d57f248767556ac083793292a4adf4e2d85dfe785ec2659/PyYAML-6.0.3-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9c57bb8c96f6d1808c030b1687b9b5fb476abaa47f0db9c0101f5e9f394e97f4", size = 795069, upload-time = "2025-09-29T20:27:38.15Z" }, + { url = "https://files.pythonhosted.org/packages/a7/3b/6c58ac0fa7c4e1b35e48024eb03d00817438310447f93ef4431673c24138/PyYAML-6.0.3-cp38-cp38-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:efd7b85f94a6f21e4932043973a7ba2613b059c4a000551892ac9f1d11f5baf3", size = 862585, upload-time = "2025-09-29T20:27:39.715Z" }, + { url = "https://files.pythonhosted.org/packages/25/a2/b725b61ac76a75583ae7104b3209f75ea44b13cfd026aa535ece22b7f22e/PyYAML-6.0.3-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:22ba7cfcad58ef3ecddc7ed1db3409af68d023b7f940da23c6c2a1890976eda6", size = 806018, upload-time = "2025-09-29T20:27:41.444Z" }, + { url = "https://files.pythonhosted.org/packages/6f/b0/b2227677b2d1036d84f5ee95eb948e7af53d59fe3e4328784e4d290607e0/PyYAML-6.0.3-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:6344df0d5755a2c9a276d4473ae6b90647e216ab4757f8426893b5dd2ac3f369", size = 802822, upload-time = "2025-09-29T20:27:42.885Z" }, + { url = "https://files.pythonhosted.org/packages/99/a5/718a8ea22521e06ef19f91945766a892c5ceb1855df6adbde67d997ea7ed/PyYAML-6.0.3-cp38-cp38-win32.whl", hash = "sha256:3ff07ec89bae51176c0549bc4c63aa6202991da2d9a6129d7aef7f1407d3f295", size = 143744, upload-time = "2025-09-29T20:27:44.487Z" }, + { url = "https://files.pythonhosted.org/packages/76/b2/2b69cee94c9eb215216fc05778675c393e3aa541131dc910df8e52c83776/PyYAML-6.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:5cf4e27da7e3fbed4d6c3d8e797387aaad68102272f8f9752883bc32d61cb87b", size = 160082, upload-time = "2025-09-29T20:27:46.049Z" }, +] + +[[package]] +name = "pyzmq" +version = "27.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi", marker = "implementation_name == 'pypy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/04/0b/3c9baedbdf613ecaa7aa07027780b8867f57b6293b6ee50de316c9f3222b/pyzmq-27.1.0.tar.gz", hash = "sha256:ac0765e3d44455adb6ddbf4417dcce460fc40a05978c08efdf2948072f6db540", size = 281750, upload-time = "2025-09-08T23:10:18.157Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/92/e7/038aab64a946d535901103da16b953c8c9cc9c961dadcbf3609ed6428d23/pyzmq-27.1.0-cp312-abi3-macosx_10_15_universal2.whl", hash = "sha256:452631b640340c928fa343801b0d07eb0c3789a5ffa843f6e1a9cee0ba4eb4fc", size = 1306279, upload-time = "2025-09-08T23:08:03.807Z" }, + { url = "https://files.pythonhosted.org/packages/e8/5e/c3c49fdd0f535ef45eefcc16934648e9e59dace4a37ee88fc53f6cd8e641/pyzmq-27.1.0-cp312-abi3-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:1c179799b118e554b66da67d88ed66cd37a169f1f23b5d9f0a231b4e8d44a113", size = 895645, upload-time = "2025-09-08T23:08:05.301Z" }, + { url = "https://files.pythonhosted.org/packages/f8/e5/b0b2504cb4e903a74dcf1ebae157f9e20ebb6ea76095f6cfffea28c42ecd/pyzmq-27.1.0-cp312-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3837439b7f99e60312f0c926a6ad437b067356dc2bc2ec96eb395fd0fe804233", size = 652574, upload-time = "2025-09-08T23:08:06.828Z" }, + { url = "https://files.pythonhosted.org/packages/f8/9b/c108cdb55560eaf253f0cbdb61b29971e9fb34d9c3499b0e96e4e60ed8a5/pyzmq-27.1.0-cp312-abi3-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:43ad9a73e3da1fab5b0e7e13402f0b2fb934ae1c876c51d0afff0e7c052eca31", size = 840995, upload-time = "2025-09-08T23:08:08.396Z" }, + { url = "https://files.pythonhosted.org/packages/c2/bb/b79798ca177b9eb0825b4c9998c6af8cd2a7f15a6a1a4272c1d1a21d382f/pyzmq-27.1.0-cp312-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:0de3028d69d4cdc475bfe47a6128eb38d8bc0e8f4d69646adfbcd840facbac28", size = 1642070, upload-time = "2025-09-08T23:08:09.989Z" }, + { url = "https://files.pythonhosted.org/packages/9c/80/2df2e7977c4ede24c79ae39dcef3899bfc5f34d1ca7a5b24f182c9b7a9ca/pyzmq-27.1.0-cp312-abi3-musllinux_1_2_i686.whl", hash = "sha256:cf44a7763aea9298c0aa7dbf859f87ed7012de8bda0f3977b6fb1d96745df856", size = 2021121, upload-time = "2025-09-08T23:08:11.907Z" }, + { url = "https://files.pythonhosted.org/packages/46/bd/2d45ad24f5f5ae7e8d01525eb76786fa7557136555cac7d929880519e33a/pyzmq-27.1.0-cp312-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:f30f395a9e6fbca195400ce833c731e7b64c3919aa481af4d88c3759e0cb7496", size = 1878550, upload-time = "2025-09-08T23:08:13.513Z" }, + { url = "https://files.pythonhosted.org/packages/e6/2f/104c0a3c778d7c2ab8190e9db4f62f0b6957b53c9d87db77c284b69f33ea/pyzmq-27.1.0-cp312-abi3-win32.whl", hash = "sha256:250e5436a4ba13885494412b3da5d518cd0d3a278a1ae640e113c073a5f88edd", size = 559184, upload-time = "2025-09-08T23:08:15.163Z" }, + { url = "https://files.pythonhosted.org/packages/fc/7f/a21b20d577e4100c6a41795842028235998a643b1ad406a6d4163ea8f53e/pyzmq-27.1.0-cp312-abi3-win_amd64.whl", hash = "sha256:9ce490cf1d2ca2ad84733aa1d69ce6855372cb5ce9223802450c9b2a7cba0ccf", size = 619480, upload-time = "2025-09-08T23:08:17.192Z" }, + { url = "https://files.pythonhosted.org/packages/78/c2/c012beae5f76b72f007a9e91ee9401cb88c51d0f83c6257a03e785c81cc2/pyzmq-27.1.0-cp312-abi3-win_arm64.whl", hash = "sha256:75a2f36223f0d535a0c919e23615fc85a1e23b71f40c7eb43d7b1dedb4d8f15f", size = 552993, upload-time = "2025-09-08T23:08:18.926Z" }, + { url = "https://files.pythonhosted.org/packages/38/f8/946ecde123eaffe933ecf287186495d5f22a8bf444bcb774d9c83dcb2fa5/pyzmq-27.1.0-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:18339186c0ed0ce5835f2656cdfb32203125917711af64da64dbaa3d949e5a1b", size = 1332188, upload-time = "2025-09-08T23:09:03.639Z" }, + { url = "https://files.pythonhosted.org/packages/56/08/5960fd162bf1e0e22f251c2f7744101241bc419fbc52abab4108260eb3e0/pyzmq-27.1.0-cp38-cp38-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:753d56fba8f70962cd8295fb3edb40b9b16deaa882dd2b5a3a2039f9ff7625aa", size = 907319, upload-time = "2025-09-08T23:09:06.079Z" }, + { url = "https://files.pythonhosted.org/packages/7f/62/2d8712aafbd7fcf0e303d67c1d923f64a41aa872f1348e3d5dcec147c909/pyzmq-27.1.0-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b721c05d932e5ad9ff9344f708c96b9e1a485418c6618d765fca95d4daacfbef", size = 864213, upload-time = "2025-09-08T23:09:07.985Z" }, + { url = "https://files.pythonhosted.org/packages/e1/04/e9a1550d2dcb29cd662d88c89e9fe975393dd577e2c8b2c528d0a0bacfac/pyzmq-27.1.0-cp38-cp38-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7be883ff3d722e6085ee3f4afc057a50f7f2e0c72d289fd54df5706b4e3d3a50", size = 668520, upload-time = "2025-09-08T23:09:10.317Z" }, + { url = "https://files.pythonhosted.org/packages/48/ad/1638518b7554686d17b5fdd0c0381c13656fe4899dc13af0ba10850d56f0/pyzmq-27.1.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:b2e592db3a93128daf567de9650a2f3859017b3f7a66bc4ed6e4779d6034976f", size = 1657582, upload-time = "2025-09-08T23:09:12.256Z" }, + { url = "https://files.pythonhosted.org/packages/cc/b7/6cb8123ee217c1efa8e917feabe86425185a7b55504af32bffa057dcd91d/pyzmq-27.1.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:ad68808a61cbfbbae7ba26d6233f2a4aa3b221de379ce9ee468aa7a83b9c36b0", size = 2035054, upload-time = "2025-09-08T23:09:14.175Z" }, + { url = "https://files.pythonhosted.org/packages/cb/95/8d6ec87b43e1d8608be461165180fec4744da9edceea4ce48c7bd8c60402/pyzmq-27.1.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:e2687c2d230e8d8584fbea433c24382edfeda0c60627aca3446aa5e58d5d1831", size = 1894186, upload-time = "2025-09-08T23:09:15.797Z" }, + { url = "https://files.pythonhosted.org/packages/a7/2a/7806479dd1f1b964d0aa07f1d961fcaa8673ed543c911847fc45e91f103a/pyzmq-27.1.0-cp38-cp38-win32.whl", hash = "sha256:a1aa0ee920fb3825d6c825ae3f6c508403b905b698b6460408ebd5bb04bbb312", size = 567508, upload-time = "2025-09-08T23:09:17.514Z" }, + { url = "https://files.pythonhosted.org/packages/9f/24/70e83d3ff64ef7e3d6666bd30a241be695dad0ef30d5519bf9c5ff174786/pyzmq-27.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:df7cd397ece96cf20a76fae705d40efbab217d217897a5053267cd88a700c266", size = 632740, upload-time = "2025-09-08T23:09:19.352Z" }, + { url = "https://files.pythonhosted.org/packages/eb/d8/2cf36ee6d037b52640997bde488d046db55bdea05e34229cf9cd3154fd7d/pyzmq-27.1.0-pp38-pypy38_pp73-macosx_10_15_x86_64.whl", hash = "sha256:50081a4e98472ba9f5a02850014b4c9b629da6710f8f14f3b15897c666a28f1b", size = 836250, upload-time = "2025-09-08T23:09:58.313Z" }, + { url = "https://files.pythonhosted.org/packages/e5/40/5ff9acff898558fb54731d4b897d5bf16b3725e0c1778166ac9a234b5297/pyzmq-27.1.0-pp38-pypy38_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:510869f9df36ab97f89f4cff9d002a89ac554c7ac9cadd87d444aa4cf66abd27", size = 800201, upload-time = "2025-09-08T23:10:00.131Z" }, + { url = "https://files.pythonhosted.org/packages/2f/58/f941950f64c5e7919c64d36e52991ade7ac8ea4805e9d2cdba47337d9edc/pyzmq-27.1.0-pp38-pypy38_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1f8426a01b1c4098a750973c37131cf585f61c7911d735f729935a0c701b68d3", size = 758755, upload-time = "2025-09-08T23:10:01.896Z" }, + { url = "https://files.pythonhosted.org/packages/7b/26/ddd3502658bf85d41ab6d75dcab78a7af5bb32fb5f7ac38bd7cf1bce321d/pyzmq-27.1.0-pp38-pypy38_pp73-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:726b6a502f2e34c6d2ada5e702929586d3ac948a4dbbb7fed9854ec8c0466027", size = 567742, upload-time = "2025-09-08T23:10:03.732Z" }, + { url = "https://files.pythonhosted.org/packages/36/ad/50515db14fb3c19d48a2a05716c7f4d658da51ea2b145c67f003b3f443d2/pyzmq-27.1.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:bd67e7c8f4654bef471c0b1ca6614af0b5202a790723a58b79d9584dc8022a78", size = 544859, upload-time = "2025-09-08T23:10:05.491Z" }, +] + +[[package]] +name = "referencing" +version = "0.35.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "rpds-py" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/99/5b/73ca1f8e72fff6fa52119dbd185f73a907b1989428917b24cff660129b6d/referencing-0.35.1.tar.gz", hash = "sha256:25b42124a6c8b632a425174f24087783efb348a6f1e0008e63cd4466fedf703c", size = 62991, upload-time = "2024-05-01T20:26:04.574Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/59/2056f61236782a2c86b33906c025d4f4a0b17be0161b63b70fd9e8775d36/referencing-0.35.1-py3-none-any.whl", hash = "sha256:eda6d3234d62814d1c64e305c1331c9a3a6132da475ab6382eaa997b21ee75de", size = 26684, upload-time = "2024-05-01T20:26:02.078Z" }, +] + +[[package]] +name = "requests" +version = "2.32.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "charset-normalizer" }, + { name = "idna" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e1/0a/929373653770d8a0d7ea76c37de6e41f11eb07559b103b1c02cafb3f7cf8/requests-2.32.4.tar.gz", hash = "sha256:27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422", size = 135258, upload-time = "2025-06-09T16:43:07.34Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7c/e4/56027c4a6b4ae70ca9de302488c5ca95ad4a39e190093d6c1a8ace08341b/requests-2.32.4-py3-none-any.whl", hash = "sha256:27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c", size = 64847, upload-time = "2025-06-09T16:43:05.728Z" }, +] + +[[package]] +name = "rfc3339-validator" +version = "0.1.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/28/ea/a9387748e2d111c3c2b275ba970b735e04e15cdb1eb30693b6b5708c4dbd/rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b", size = 5513, upload-time = "2021-05-12T16:37:54.178Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7b/44/4e421b96b67b2daff264473f7465db72fbdf36a07e05494f50300cc7b0c6/rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa", size = 3490, upload-time = "2021-05-12T16:37:52.536Z" }, +] + +[[package]] +name = "rfc3986-validator" +version = "0.1.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/da/88/f270de456dd7d11dcc808abfa291ecdd3f45ff44e3b549ffa01b126464d0/rfc3986_validator-0.1.1.tar.gz", hash = "sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055", size = 6760, upload-time = "2019-10-28T16:00:19.144Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/51/17023c0f8f1869d8806b979a2bffa3f861f26a3f1a66b094288323fba52f/rfc3986_validator-0.1.1-py2.py3-none-any.whl", hash = "sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9", size = 4242, upload-time = "2019-10-28T16:00:13.976Z" }, +] + +[[package]] +name = "rpds-py" +version = "0.20.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/25/cb/8e919951f55d109d658f81c9b49d0cc3b48637c50792c5d2e77032b8c5da/rpds_py-0.20.1.tar.gz", hash = "sha256:e1791c4aabd117653530dccd24108fa03cc6baf21f58b950d0a73c3b3b29a350", size = 25931, upload-time = "2024-10-31T14:30:20.522Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/53/ef/b1883734ea0cd9996de793cdc38c32a28143b04911d1e570090acd8a9162/rpds_py-0.20.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:5b48e790e0355865197ad0aca8cde3d8ede347831e1959e158369eb3493d2191", size = 327757, upload-time = "2024-10-31T14:28:16.323Z" }, + { url = "https://files.pythonhosted.org/packages/54/63/47d34dc4ddb3da73e78e10c9009dcf8edc42d355a221351c05c822c2a50b/rpds_py-0.20.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3e310838a5801795207c66c73ea903deda321e6146d6f282e85fa7e3e4854804", size = 318785, upload-time = "2024-10-31T14:28:18.381Z" }, + { url = "https://files.pythonhosted.org/packages/f7/e1/d6323be4afbe3013f28725553b7bfa80b3f013f91678af258f579f8ea8f9/rpds_py-0.20.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2249280b870e6a42c0d972339e9cc22ee98730a99cd7f2f727549af80dd5a963", size = 361511, upload-time = "2024-10-31T14:28:20.292Z" }, + { url = "https://files.pythonhosted.org/packages/ab/d3/c40e4d9ecd571f0f50fe69bc53fe608d7b2c49b30738b480044990260838/rpds_py-0.20.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e79059d67bea28b53d255c1437b25391653263f0e69cd7dec170d778fdbca95e", size = 370201, upload-time = "2024-10-31T14:28:22.314Z" }, + { url = "https://files.pythonhosted.org/packages/f1/b6/96a4a9977a8a06c2c49d90aa571346aff1642abf15066a39a0b4817bf049/rpds_py-0.20.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2b431c777c9653e569986ecf69ff4a5dba281cded16043d348bf9ba505486f36", size = 403866, upload-time = "2024-10-31T14:28:24.135Z" }, + { url = "https://files.pythonhosted.org/packages/cd/8f/702b52287949314b498a311f92b5ee0ba30c702a27e0e6b560e2da43b8d5/rpds_py-0.20.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:da584ff96ec95e97925174eb8237e32f626e7a1a97888cdd27ee2f1f24dd0ad8", size = 430163, upload-time = "2024-10-31T14:28:26.021Z" }, + { url = "https://files.pythonhosted.org/packages/c4/ce/af016c81fda833bf125b20d1677d816f230cad2ab189f46bcbfea3c7a375/rpds_py-0.20.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02a0629ec053fc013808a85178524e3cb63a61dbc35b22499870194a63578fb9", size = 360776, upload-time = "2024-10-31T14:28:27.852Z" }, + { url = "https://files.pythonhosted.org/packages/08/a7/988e179c9bef55821abe41762228d65077e0570ca75c9efbcd1bc6e263b4/rpds_py-0.20.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fbf15aff64a163db29a91ed0868af181d6f68ec1a3a7d5afcfe4501252840bad", size = 383008, upload-time = "2024-10-31T14:28:30.029Z" }, + { url = "https://files.pythonhosted.org/packages/96/b0/e4077f7f1b9622112ae83254aedfb691490278793299bc06dcf54ec8c8e4/rpds_py-0.20.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:07924c1b938798797d60c6308fa8ad3b3f0201802f82e4a2c41bb3fafb44cc28", size = 546371, upload-time = "2024-10-31T14:28:33.062Z" }, + { url = "https://files.pythonhosted.org/packages/e4/5e/1d4dd08ec0352cfe516ea93ea1993c2f656f893c87dafcd9312bd07f65f7/rpds_py-0.20.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:4a5a844f68776a7715ecb30843b453f07ac89bad393431efbf7accca3ef599c1", size = 549809, upload-time = "2024-10-31T14:28:35.285Z" }, + { url = "https://files.pythonhosted.org/packages/57/ac/a716b4729ff23ec034b7d2ff76a86e6f0753c4098401bdfdf55b2efe90e6/rpds_py-0.20.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:518d2ca43c358929bf08f9079b617f1c2ca6e8848f83c1225c88caeac46e6cbc", size = 528492, upload-time = "2024-10-31T14:28:37.516Z" }, + { url = "https://files.pythonhosted.org/packages/e0/ed/a0b58a9ecef79918169eacdabd14eb4c5c86ce71184ed56b80c6eb425828/rpds_py-0.20.1-cp38-none-win32.whl", hash = "sha256:3aea7eed3e55119635a74bbeb80b35e776bafccb70d97e8ff838816c124539f1", size = 200512, upload-time = "2024-10-31T14:28:39.484Z" }, + { url = "https://files.pythonhosted.org/packages/5f/c3/222e25124283afc76c473fcd2c547e82ec57683fa31cb4d6c6eb44e5d57a/rpds_py-0.20.1-cp38-none-win_amd64.whl", hash = "sha256:7dca7081e9a0c3b6490a145593f6fe3173a94197f2cb9891183ef75e9d64c425", size = 218627, upload-time = "2024-10-31T14:28:41.479Z" }, +] + +[[package]] +name = "scipy" +version = "1.9.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0a/2e/44795c6398e24e45fa0bb61c3e98de1cfea567b1b51efd3751e2f7ff9720/scipy-1.9.3.tar.gz", hash = "sha256:fbc5c05c85c1a02be77b1ff591087c83bc44579c6d2bd9fb798bb64ea5e1a027", size = 42075414, upload-time = "2022-10-20T02:33:46.579Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/84/86/4f38fa30c112c3590954420f85d95b8cd23811ecc5cfc4bfd4d988d4db44/scipy-1.9.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:5a04cd7d0d3eff6ea4719371cbc44df31411862b9646db617c99718ff68d4840", size = 34171254, upload-time = "2022-10-20T00:53:26.939Z" }, + { url = "https://files.pythonhosted.org/packages/44/8a/bae77e624391b27aeea2d33a02f2ce4a8019f1378ce92faf5780f1521f2e/scipy-1.9.3-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:545c83ffb518094d8c9d83cce216c0c32f8c04aaf28b92cc8283eda0685162d5", size = 28480393, upload-time = "2022-10-20T00:55:00.701Z" }, + { url = "https://files.pythonhosted.org/packages/f4/9d/882134b1e774a9227ab855c71a39612194e1106185595417ce92f0f1e78c/scipy-1.9.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d54222d7a3ba6022fdf5773931b5d7c56efe41ede7f7128c7b1637700409108", size = 30384443, upload-time = "2022-10-20T02:11:25.971Z" }, + { url = "https://files.pythonhosted.org/packages/56/af/6a2b90fe280e89466d84747054667f74b84a8304f75931a173090919991f/scipy-1.9.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cff3a5295234037e39500d35316a4c5794739433528310e117b8a9a0c76d20fc", size = 33779355, upload-time = "2022-10-20T02:13:11.628Z" }, + { url = "https://files.pythonhosted.org/packages/42/14/d2500818b7bb7b862d70c1ae97e646a4795b068583c67720553764095024/scipy-1.9.3-cp38-cp38-win_amd64.whl", hash = "sha256:2318bef588acc7a574f5bfdff9c172d0b1bf2c8143d9582e05f878e580a3781e", size = 39775138, upload-time = "2022-10-20T02:15:24.233Z" }, +] + +[[package]] +name = "send2trash" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c5/f0/184b4b5f8d00f2a92cf96eec8967a3d550b52cf94362dad1100df9e48d57/send2trash-2.1.0.tar.gz", hash = "sha256:1c72b39f09457db3c05ce1d19158c2cbef4c32b8bedd02c155e49282b7ea7459", size = 17255, upload-time = "2026-01-14T06:27:36.056Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1c/78/504fdd027da3b84ff1aecd9f6957e65f35134534ccc6da8628eb71e76d3f/send2trash-2.1.0-py3-none-any.whl", hash = "sha256:0da2f112e6d6bb22de6aa6daa7e144831a4febf2a87261451c4ad849fe9a873c", size = 17610, upload-time = "2026-01-14T06:27:35.218Z" }, +] + +[[package]] +name = "setuptools" +version = "75.3.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5c/01/771ea46cce201dd42cff043a5eea929d1c030fb3d1c2ee2729d02ca7814c/setuptools-75.3.2.tar.gz", hash = "sha256:3c1383e1038b68556a382c1e8ded8887cd20141b0eb5708a6c8d277de49364f5", size = 1354489, upload-time = "2025-03-12T00:02:19.004Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/15/65/3f0dba35760d902849d39d38c0a72767794b1963227b69a587f8a336d08c/setuptools-75.3.2-py3-none-any.whl", hash = "sha256:90ab613b6583fc02d5369cbca13ea26ea0e182d1df2d943ee9cbe81d4c61add9", size = 1251198, upload-time = "2025-03-12T00:02:17.554Z" }, +] + +[[package]] +name = "six" +version = "1.17.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031, upload-time = "2024-12-04T17:35:28.174Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" }, +] + +[[package]] +name = "sniffio" +version = "1.3.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372, upload-time = "2024-02-25T23:20:04.057Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235, upload-time = "2024-02-25T23:20:01.196Z" }, +] + +[[package]] +name = "soupsieve" +version = "2.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/3f/f4/4a80cd6ef364b2e8b65b15816a843c0980f7a5a2b4dc701fc574952aa19f/soupsieve-2.7.tar.gz", hash = "sha256:ad282f9b6926286d2ead4750552c8a6142bc4c783fd66b0293547c8fe6ae126a", size = 103418, upload-time = "2025-04-20T18:50:08.518Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/9c/0e6afc12c269578be5c0c1c9f4b49a8d32770a080260c333ac04cc1c832d/soupsieve-2.7-py3-none-any.whl", hash = "sha256:6e60cc5c1ffaf1cebcc12e8188320b72071e922c2e897f737cadce79ad5d30c4", size = 36677, upload-time = "2025-04-20T18:50:07.196Z" }, +] + +[[package]] +name = "stack-data" +version = "0.6.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "asttokens" }, + { name = "executing" }, + { name = "pure-eval" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/28/e3/55dcc2cfbc3ca9c29519eb6884dd1415ecb53b0e934862d3559ddcb7e20b/stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9", size = 44707, upload-time = "2023-09-30T13:58:05.479Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695", size = 24521, upload-time = "2023-09-30T13:58:03.53Z" }, +] + +[[package]] +name = "terminado" +version = "0.18.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ptyprocess", marker = "os_name != 'nt'" }, + { name = "pywinpty", marker = "os_name == 'nt'" }, + { name = "tornado" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/8a/11/965c6fd8e5cc254f1fe142d547387da17a8ebfd75a3455f637c663fb38a0/terminado-0.18.1.tar.gz", hash = "sha256:de09f2c4b85de4765f7714688fff57d3e75bad1f909b589fde880460c753fd2e", size = 32701, upload-time = "2024-03-12T14:34:39.026Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6a/9e/2064975477fdc887e47ad42157e214526dcad8f317a948dee17e1659a62f/terminado-0.18.1-py3-none-any.whl", hash = "sha256:a4468e1b37bb318f8a86514f65814e1afc977cf29b3992a4500d9dd305dcceb0", size = 14154, upload-time = "2024-03-12T14:34:36.569Z" }, +] + +[[package]] +name = "tinycss2" +version = "1.2.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "webencodings" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/75/be/24179dfaa1d742c9365cbd0e3f0edc5d3aa3abad415a2327c5a6ff8ca077/tinycss2-1.2.1.tar.gz", hash = "sha256:8cff3a8f066c2ec677c06dbc7b45619804a6938478d9d73c284b29d14ecb0627", size = 65957, upload-time = "2022-10-18T07:04:56.49Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/da/99/fd23634d6962c2791fb8cb6ccae1f05dcbfc39bce36bba8b1c9a8d92eae8/tinycss2-1.2.1-py3-none-any.whl", hash = "sha256:2b80a96d41e7c3914b8cda8bc7f705a4d9c49275616e886103dd839dfc847847", size = 21824, upload-time = "2022-10-18T07:04:54.003Z" }, +] + +[[package]] +name = "tomli" +version = "2.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/82/30/31573e9457673ab10aa432461bee537ce6cef177667deca369efb79df071/tomli-2.4.0.tar.gz", hash = "sha256:aa89c3f6c277dd275d8e243ad24f3b5e701491a860d5121f2cdd399fbb31fc9c", size = 17477, upload-time = "2026-01-11T11:22:38.165Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/23/d1/136eb2cb77520a31e1f64cbae9d33ec6df0d78bdf4160398e86eec8a8754/tomli-2.4.0-py3-none-any.whl", hash = "sha256:1f776e7d669ebceb01dee46484485f43a4048746235e683bcdffacdf1fb4785a", size = 14477, upload-time = "2026-01-11T11:22:37.446Z" }, +] + +[[package]] +name = "tornado" +version = "6.4.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/59/45/a0daf161f7d6f36c3ea5fc0c2de619746cc3dd4c76402e9db545bd920f63/tornado-6.4.2.tar.gz", hash = "sha256:92bad5b4746e9879fd7bf1eb21dce4e3fc5128d71601f80005afa39237ad620b", size = 501135, upload-time = "2024-11-22T03:06:38.036Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/26/7e/71f604d8cea1b58f82ba3590290b66da1e72d840aeb37e0d5f7291bd30db/tornado-6.4.2-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e828cce1123e9e44ae2a50a9de3055497ab1d0aeb440c5ac23064d9e44880da1", size = 436299, upload-time = "2024-11-22T03:06:20.162Z" }, + { url = "https://files.pythonhosted.org/packages/96/44/87543a3b99016d0bf54fdaab30d24bf0af2e848f1d13d34a3a5380aabe16/tornado-6.4.2-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:072ce12ada169c5b00b7d92a99ba089447ccc993ea2143c9ede887e0937aa803", size = 434253, upload-time = "2024-11-22T03:06:22.39Z" }, + { url = "https://files.pythonhosted.org/packages/cb/fb/fdf679b4ce51bcb7210801ef4f11fdac96e9885daa402861751353beea6e/tornado-6.4.2-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a017d239bd1bb0919f72af256a970624241f070496635784d9bf0db640d3fec", size = 437602, upload-time = "2024-11-22T03:06:24.214Z" }, + { url = "https://files.pythonhosted.org/packages/4f/3b/e31aeffffc22b475a64dbeb273026a21b5b566f74dee48742817626c47dc/tornado-6.4.2-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c36e62ce8f63409301537222faffcef7dfc5284f27eec227389f2ad11b09d946", size = 436972, upload-time = "2024-11-22T03:06:25.559Z" }, + { url = "https://files.pythonhosted.org/packages/22/55/b78a464de78051a30599ceb6983b01d8f732e6f69bf37b4ed07f642ac0fc/tornado-6.4.2-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bca9eb02196e789c9cb5c3c7c0f04fb447dc2adffd95265b2c7223a8a615ccbf", size = 437173, upload-time = "2024-11-22T03:06:27.584Z" }, + { url = "https://files.pythonhosted.org/packages/79/5e/be4fb0d1684eb822c9a62fb18a3e44a06188f78aa466b2ad991d2ee31104/tornado-6.4.2-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:304463bd0772442ff4d0f5149c6f1c2135a1fae045adf070821c6cdc76980634", size = 437892, upload-time = "2024-11-22T03:06:28.933Z" }, + { url = "https://files.pythonhosted.org/packages/f5/33/4f91fdd94ea36e1d796147003b490fe60a0215ac5737b6f9c65e160d4fe0/tornado-6.4.2-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:c82c46813ba483a385ab2a99caeaedf92585a1f90defb5693351fa7e4ea0bf73", size = 437334, upload-time = "2024-11-22T03:06:30.428Z" }, + { url = "https://files.pythonhosted.org/packages/2b/ae/c1b22d4524b0e10da2f29a176fb2890386f7bd1f63aacf186444873a88a0/tornado-6.4.2-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:932d195ca9015956fa502c6b56af9eb06106140d844a335590c1ec7f5277d10c", size = 437261, upload-time = "2024-11-22T03:06:32.458Z" }, + { url = "https://files.pythonhosted.org/packages/b5/25/36dbd49ab6d179bcfc4c6c093a51795a4f3bed380543a8242ac3517a1751/tornado-6.4.2-cp38-abi3-win32.whl", hash = "sha256:2876cef82e6c5978fde1e0d5b1f919d756968d5b4282418f3146b79b58556482", size = 438463, upload-time = "2024-11-22T03:06:34.71Z" }, + { url = "https://files.pythonhosted.org/packages/61/cc/58b1adeb1bb46228442081e746fcdbc4540905c87e8add7c277540934edb/tornado-6.4.2-cp38-abi3-win_amd64.whl", hash = "sha256:908b71bf3ff37d81073356a5fadcc660eb10c1476ee6e2725588626ce7e5ca38", size = 438907, upload-time = "2024-11-22T03:06:36.71Z" }, +] + +[[package]] +name = "traitlets" +version = "5.14.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/eb/79/72064e6a701c2183016abbbfedaba506d81e30e232a68c9f0d6f6fcd1574/traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7", size = 161621, upload-time = "2024-04-19T11:11:49.746Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f", size = 85359, upload-time = "2024-04-19T11:11:46.763Z" }, +] + +[[package]] +name = "typing-extensions" +version = "4.13.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f6/37/23083fcd6e35492953e8d2aaaa68b860eb422b34627b13f2ce3eb6106061/typing_extensions-4.13.2.tar.gz", hash = "sha256:e6c81219bd689f51865d9e372991c540bda33a0379d5573cddb9a3a23f7caaef", size = 106967, upload-time = "2025-04-10T14:19:05.416Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8b/54/b1ae86c0973cc6f0210b53d508ca3641fb6d0c56823f288d108bc7ab3cc8/typing_extensions-4.13.2-py3-none-any.whl", hash = "sha256:a439e7c04b49fec3e5d3e2beaa21755cadbbdc391694e28ccdd36ca4a1408f8c", size = 45806, upload-time = "2025-04-10T14:19:03.967Z" }, +] + +[[package]] +name = "uri-template" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/31/c7/0336f2bd0bcbada6ccef7aaa25e443c118a704f828a0620c6fa0207c1b64/uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7", size = 21678, upload-time = "2023-06-21T01:49:05.374Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/00/3fca040d7cf8a32776d3d81a00c8ee7457e00f80c649f1e4a863c8321ae9/uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363", size = 11140, upload-time = "2023-06-21T01:49:03.467Z" }, +] + +[[package]] +name = "urllib3" +version = "2.2.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ed/63/22ba4ebfe7430b76388e7cd448d5478814d3032121827c12a2cc287e2260/urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9", size = 300677, upload-time = "2024-09-12T10:52:18.401Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ce/d9/5f4c13cecde62396b0d3fe530a50ccea91e7dfc1ccf0e09c228841bb5ba8/urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac", size = 126338, upload-time = "2024-09-12T10:52:16.589Z" }, +] + +[[package]] +name = "wcwidth" +version = "0.5.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5f/3e/3d456efe55d2d5e7938b5f9abd68333dd8dceb14e829f51f9a8deed2217e/wcwidth-0.5.2.tar.gz", hash = "sha256:c022c39a02a0134d1e10810da36d1f984c79648181efcc70a389f4569695f5ae", size = 152817, upload-time = "2026-01-29T19:32:52.22Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6d/72/da5a6f511a8267f962a08637464a70409736ac72f9f75b069e0e96d69b64/wcwidth-0.5.2-py3-none-any.whl", hash = "sha256:46912178a64217749bf3426b21e36e849fbc46e05c949407b3e364d9f7ffcadf", size = 90088, upload-time = "2026-01-29T19:32:50.592Z" }, +] + +[[package]] +name = "webcolors" +version = "24.8.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fe/f8/53150a5bda7e042840b14f0236e1c0a4819d403658e3d453237983addfac/webcolors-24.8.0.tar.gz", hash = "sha256:08b07af286a01bcd30d583a7acadf629583d1f79bfef27dd2c2c5c263817277d", size = 42392, upload-time = "2024-08-10T08:52:31.226Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f0/33/12020ba99beaff91682b28dc0bbf0345bbc3244a4afbae7644e4fa348f23/webcolors-24.8.0-py3-none-any.whl", hash = "sha256:fc4c3b59358ada164552084a8ebee637c221e4059267d0f8325b3b560f6c7f0a", size = 15027, upload-time = "2024-08-10T08:52:28.707Z" }, +] + +[[package]] +name = "webencodings" +version = "0.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0b/02/ae6ceac1baeda530866a85075641cec12989bd8d31af6d5ab4a3e8c92f47/webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923", size = 9721, upload-time = "2017-04-05T20:21:34.189Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", size = 11774, upload-time = "2017-04-05T20:21:32.581Z" }, +] + +[[package]] +name = "websocket-client" +version = "1.8.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e6/30/fba0d96b4b5fbf5948ed3f4681f7da2f9f64512e1d303f94b4cc174c24a5/websocket_client-1.8.0.tar.gz", hash = "sha256:3239df9f44da632f96012472805d40a23281a991027ce11d2f45a6f24ac4c3da", size = 54648, upload-time = "2024-04-23T22:16:16.976Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/84/44687a29792a70e111c5c477230a72c4b957d88d16141199bf9acb7537a3/websocket_client-1.8.0-py3-none-any.whl", hash = "sha256:17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526", size = 58826, upload-time = "2024-04-23T22:16:14.422Z" }, +] + +[[package]] +name = "widgetsnbextension" +version = "4.0.15" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/bd/f4/c67440c7fb409a71b7404b7aefcd7569a9c0d6bd071299bf4198ae7a5d95/widgetsnbextension-4.0.15.tar.gz", hash = "sha256:de8610639996f1567952d763a5a41af8af37f2575a41f9852a38f947eb82a3b9", size = 1097402, upload-time = "2025-11-01T21:15:55.178Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3f/0e/fa3b193432cfc60c93b42f3be03365f5f909d2b3ea410295cf36df739e31/widgetsnbextension-4.0.15-py3-none-any.whl", hash = "sha256:8156704e4346a571d9ce73b84bee86a29906c9abfd7223b7228a28899ccf3366", size = 2196503, upload-time = "2025-11-01T21:15:53.565Z" }, +] + +[[package]] +name = "zipp" +version = "3.20.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/54/bf/5c0000c44ebc80123ecbdddba1f5dcd94a5ada602a9c225d84b5aaa55e86/zipp-3.20.2.tar.gz", hash = "sha256:bc9eb26f4506fda01b81bcde0ca78103b6e62f991b381fec825435c836edbc29", size = 24199, upload-time = "2024-09-13T13:44:16.101Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/62/8b/5ba542fa83c90e09eac972fc9baca7a88e7e7ca4b221a89251954019308b/zipp-3.20.2-py3-none-any.whl", hash = "sha256:a817ac80d6cf4b23bf7f2828b7cabf326f15a001bea8b1f9b49631780ba28350", size = 9200, upload-time = "2024-09-13T13:44:14.38Z" }, +] diff --git a/zinc_virtuals.json b/zinc_virtuals.json new file mode 100644 index 0000000..f1792c4 --- /dev/null +++ b/zinc_virtuals.json @@ -0,0 +1 @@ +{"results": [-1004.3395351908698, -1004.3395352152933, -1004.3395352394483, -1004.3395352395571, -1004.3395352398404, -1004.3395352400831, -1004.3395352402827, -1004.3395352403268, -1004.3395352404046, -1004.3395352416292, -1004.339535248107, -1004.3395352484919, -1004.3395352488683, -1004.339535255503, -1004.3395352556921, -1004.3395381205875, -1004.3395381236405, -1004.3395381233879, -1004.3395381245182, -1004.3395381245408, -1004.3395381299273, -1004.3395381309306, -1004.3395381519753, -1004.3395381293877, -1004.3395381323651, -1004.3395381293687, -1004.3395381303832, -1004.3395381304142, -1004.3395381312558, -1004.3395381313351, -1004.3395381310443], "converged": [true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false]} \ No newline at end of file