diff --git a/molsysmt/build/get_missing_bonds.py b/molsysmt/build/get_missing_bonds.py index 8663bbf16..b1b87fbd1 100644 --- a/molsysmt/build/get_missing_bonds.py +++ b/molsysmt/build/get_missing_bonds.py @@ -49,18 +49,32 @@ def get_missing_bonds(molecular_system, threshold='2 angstroms', selection='all' if with_distances: + # Protein: + # Enlace C-N: aproximadamente 1.33 Å + # Enlace C-C: aproximadamente 1.54 Å + # Enlace C-S: aproximadamente 1.82 Å + # Small molecule: + # Enlace C-H: aproximadamente 1.09 Å + # Enlace C-C: aproximadamente 1.54 Å + # Enlace C-O: aproximadamente 1.43 Å + # Enlace C-N: aproximadamente 1.47 Å + # Water molecule: + # Enlace O-H: aproximadamente 0.96 Å + # Lipid: + # Enlace C-H: aproximadamente 1.09 Å + # Enlace C-C: aproximadamente 1.54 Å + # Enlace P-O: aproximadamente 1.61 Å + contacts_heavy_atoms = get_contacts(molecular_system, selection=heavy_atoms_not_water, threshold=threshold, output_type='pairs', output_indices='atom', pbc=True, skip_digestion=True) - bonds_distances += contacts_heavy_atoms + bonds_distances += contacts_heavy_atoms[0] if len(h_atoms_not_water): print('System with hydrogens... to be implemented') raise NotImplementedError() - return contacts_heavy_atoms - if with_templates: aux_peptidic_bonds_C={} @@ -117,9 +131,16 @@ def get_missing_bonds(molecular_system, threshold='2 angstroms', selection='all' group_type=True, atom_index=True, atom_name=True, atom_type=True, skip_digestion=True) + indices_no_template = [] + for group_index, group_name, group_type, atom_indices, atom_names, atom_types in zip(*aux_output): - if group_type=='ion': + if group_type=='water': + + aux_bonds = _bonds_in_water(atom_indices, atom_names, atom_types, sorted=False) + bonds_templates += aux_bonds + + elif group_type=='ion': aux_bonds = _bonds_in_ion(group_name, atom_indices, atom_names, sorted=False) bonds_templates += aux_bonds @@ -165,60 +186,61 @@ def get_missing_bonds(molecular_system, threshold='2 angstroms', selection='all' else: - indices_with_distance += atom_indices + indices_no_template += atom_indices # peptidic bonds for group_index in aux_peptidic_bonds_C.keys(): if group_index+1 in aux_peptidic_bonds_N: - bonds_templates += [[aux_peptidic_bonds_C[group_index], aux_peptidic_bonds_N[group_index+1]]] + possible_bond = [aux_peptidic_bonds_C[group_index], aux_peptidic_bonds_N[group_index+1]] + if with_distances: + if possible_bond in bonds_distances: + bonds_templates += [[aux_peptidic_bonds_C[group_index], + aux_peptidic_bonds_N[group_index+1]]] else: raise NotImplementedError - #neighbors, _ = get_neighbors(molecular_system, selection=indices_with_distance, threshold=threshold) - - #if is_all(indices_with_distance): - # for atom_i, neighbors_frame in enumerate(neighbors): - # for atom_j in neighbors_frame[ii]: - # if atom_i < atom_j: - # bonds_with_distance.append([atom_i, atom_j]) - #else: - # for atom_i, neighbors_frame in enumerate(neighbors): - # for atom_j in neighbors_frame[ii]: - # if atom_i < atom_j: - # bonds_with_distance.append([atom_i, atom_j]) - - #if sorted: # output = _sorted(bonds) #else: # output = bonds - return bonds_distances, bonds_templates + if with_distances and with_templates: - else: + distances_in_templates = True + templates_in_distances = True - raise NotImplementedError + for ii in bonds_distances: + if ii not in bonds_templates: + distances_in_templates = False + break + + for ii in bonds_distances: + if ii not in bonds_templates: + templates_in_distances = False + break + + if distances_in_templates and templates_in_distances: + output = bonds_distances + else: - #neighbors, distance = get_neighbors(molecular_system, selection=atom_indices, - # selection_2=atom_indices, threshold=threshold, output='dict') + raise NotImplementedError + - #for atom_i, atom_j in old_bonds: - # for kk, neighbors_frame in enumerate(neighbors): - # if atom_j not in neighbors_frame[atom_i]: - # warnings.warn(f"The bond between atoms {atom_i} and {atom_j} was observed with a length larger than the threshold: distance[kk][atom_i]") + if sorted: + output = _sorted(output) + else: + output = bonds + + return output + + else: + + raise NotImplementedError - #for ii, atom_index in enumerate(atom_indices): - # atom_i = atom_index - # for neighbors_frame in neighbors: - # for atom_j in neighbors_frame[ii]: - # if atom_i < atom_j: - # if [atom_i, atom_j] not in old_bonds: - # if [atom_i, atom_j] not in output: - # output.append([atom_i, atom_j]) elif engine=="pytraj": @@ -253,14 +275,14 @@ def get_missing_bonds(molecular_system, threshold='2 angstroms', selection='all' return output -def _bonds_in_water(atom_indices, atom_names, atom_type, sorted=True): +def _bonds_in_water(atom_indices, atom_names, atom_types, sorted=True): if len(atom_indices)>=3: O = None Hs = [] - for ii,jj in zip(atom_indices, atom_type): + for ii,jj in zip(atom_indices, atom_types): if jj=='O': O=ii else: diff --git a/molsysmt/form/molsysmt_PDBFileHandler/to_molsysmt_Topology.py b/molsysmt/form/molsysmt_PDBFileHandler/to_molsysmt_Topology.py index 06ba90f04..de2698c53 100644 --- a/molsysmt/form/molsysmt_PDBFileHandler/to_molsysmt_Topology.py +++ b/molsysmt/form/molsysmt_PDBFileHandler/to_molsysmt_Topology.py @@ -128,7 +128,7 @@ def to_molsysmt_Topology(item, atom_indices='all', structure_indices=0, get_miss if get_missing_bonds: - bonds = _get_missing_bonds(tmp_item, with_distances=True) + bonds = _get_missing_bonds(tmp_item, skip_digestion=True) bonds = np.array(bonds) tmp_item.reset_bonds(n_bonds=bonds.shape[0]) tmp_item.bonds.drop(['order', 'type'], axis=1, inplace=True) diff --git a/molsysmt/structure/get_distances.py b/molsysmt/structure/get_distances.py index 6d9773e77..f2c5aa797 100644 --- a/molsysmt/structure/get_distances.py +++ b/molsysmt/structure/get_distances.py @@ -81,10 +81,11 @@ def get_distances(molecular_system, selection="all", structure_indices="all", ce if in_memory: - output = _get_distances_in_memory(molecular_system, - selection=atom_indices, structure_indices=structure_indices, center_of_atoms=center_of_atoms, weights=weights, - molecular_system_2=molecular_system_2, selection_2=atom_indices_2, structure_indices_2=structure_indices_2, - center_of_atoms_2=center_of_atoms_2, weights_2=weights_2, pairs=pairs, pbc=pbc, syntax=syntax) + output = _get_distances_in_memory(molecular_system, selection=atom_indices, + structure_indices=structure_indices, center_of_atoms=center_of_atoms, weights=weights, + molecular_system_2=molecular_system_2, selection_2=atom_indices_2, + structure_indices_2=structure_indices_2, center_of_atoms_2=center_of_atoms_2, weights_2=weights_2, + pairs=pairs, pbc=pbc, syntax=syntax) else: diff --git a/sandbox/Tests.ipynb b/sandbox/Tests.ipynb index 74e349d06..f0f62f83b 100644 --- a/sandbox/Tests.ipynb +++ b/sandbox/Tests.ipynb @@ -28,7 +28,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "82d5bc588d6e43cd9ab5c70136bd76cf", + "model_id": "99da1f04440343a7af688013598d9547", "version_major": 2, "version_minor": 0 }, @@ -76,86 +76,57 @@ { "cell_type": "code", "execution_count": 6, - "id": "7e0095fb-7afa-4f81-b9c8-79fe0988223d", - "metadata": {}, - "outputs": [], - "source": [ - "molecular_system = view\n", - "n_atoms = msm.get(molecular_system, n_atoms=True)\n", - "atoms_water = msm.select(molecular_system, selection='group_type==\"water\"')\n", - "atoms_not_water = msm._private.atom_indices.complementary_atom_indices(molecular_system, atoms_water)\n", - "heavy_atoms_not_water = msm.select(molecular_system, selection='atom_type!=\"H\"', mask=atoms_not_water)\n", - "h_atoms_not_water = [ii for ii in atoms_not_water if ii not in heavy_atoms_not_water] " - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "00985b36-1541-41a3-80c4-34389e22bbf9", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "165" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(atoms_water)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "3cbabe92-c07b-4a3f-a3fa-4836dbf189e2", - "metadata": {}, - "outputs": [], - "source": [ - "msm.structure.get_contacts(molecular_system, selection=h_atoms_not_water, # selection_2=heavy_atoms_not_water,\n", - " threshold='2 angstroms', output_type='pairs', pbc=True, skip_digestion=False)" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "c1fa6850-48a1-4fae-8b2b-d4e8d298f714", + "id": "cd4610ac-0e3b-455f-b0d1-1c809edbaca6", "metadata": {}, "outputs": [ { - "ename": "ValueError", - "evalue": "not enough values to unpack (expected 2, got 1)", + "ename": "NotImplementedFormError", + "evalue": "None", "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 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m dd, pp \u001b[38;5;241m=\u001b[39m msm\u001b[38;5;241m.\u001b[39mbuild\u001b[38;5;241m.\u001b[39mget_missing_bonds(view)\n", - "\u001b[0;31mValueError\u001b[0m: not enough values to unpack (expected 2, got 1)" + "\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)", + "File \u001b[0;32m/conda/miniconda3/envs/MolSysMT@uibcdf_3.10/lib/python3.10/site-packages/pyunitwizard/main.py:27\u001b[0m, in \u001b[0;36mget_form\u001b[0;34m(quantity_or_unit)\u001b[0m\n\u001b[1;32m 26\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m---> 27\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mdict_is_form\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;28;43mtype\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mquantity_or_unit\u001b[49m\u001b[43m)\u001b[49m\u001b[43m]\u001b[49m\n\u001b[1;32m 28\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mKeyError\u001b[39;00m:\n", + "\u001b[0;31mKeyError\u001b[0m: ", + "\nDuring handling of the above exception, another exception occurred:\n", + "\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)", + "File \u001b[0;32m/conda/miniconda3/envs/MolSysMT@uibcdf_3.10/lib/python3.10/site-packages/pyunitwizard/main.py:30\u001b[0m, in \u001b[0;36mget_form\u001b[0;34m(quantity_or_unit)\u001b[0m\n\u001b[1;32m 29\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m---> 30\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mdict_is_form\u001b[49m\u001b[43m[\u001b[49m\u001b[43mquantity_or_unit\u001b[49m\u001b[43m]\u001b[49m\n\u001b[1;32m 31\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mKeyError\u001b[39;00m:\n", + "\u001b[0;31mKeyError\u001b[0m: None", + "\nDuring handling of the above exception, another exception occurred:\n", + "\u001b[0;31mNotImplementedFormError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[6], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mmsm\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget\u001b[49m\u001b[43m(\u001b[49m\u001b[43mview\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43melement\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43msystem\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mn_components\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/repos@uibcdf/MolSysMT/molsysmt/_private/digestion/digest.py:122\u001b[0m, in \u001b[0;36mdigest..digestor..wrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 120\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m func(all_args[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mself\u001b[39m\u001b[38;5;124m'\u001b[39m], \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mfinal_args)\n\u001b[1;32m 121\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m--> 122\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mfinal_args\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/repos@uibcdf/MolSysMT/molsysmt/basic/get.py:282\u001b[0m, in \u001b[0;36mget\u001b[0;34m(molecular_system, element, selection, structure_indices, mask, syntax, get_missing_bonds, output_type, skip_digestion, **kwargs)\u001b[0m\n\u001b[1;32m 280\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 281\u001b[0m aux_get \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mgetattr\u001b[39m(_dict_modules[aux_form], \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mget_\u001b[39m\u001b[38;5;132;01m{\u001b[39;00min_attribute\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m_from_\u001b[39m\u001b[38;5;132;01m{\u001b[39;00melement\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m'\u001b[39m)\n\u001b[0;32m--> 282\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[43maux_get\u001b[49m\u001b[43m(\u001b[49m\u001b[43maux_item\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mdict_indices\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 284\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 286\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n", + "File \u001b[0;32m~/repos@uibcdf/MolSysMT/molsysmt/_private/digestion/digest.py:122\u001b[0m, in \u001b[0;36mdigest..digestor..wrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 120\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m func(all_args[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mself\u001b[39m\u001b[38;5;124m'\u001b[39m], \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mfinal_args)\n\u001b[1;32m 121\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m--> 122\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mfinal_args\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/repos@uibcdf/MolSysMT/molsysmt/form/nglview_NGLWidget/get_topological_attributes.py:4183\u001b[0m, in \u001b[0;36mget_n_components_from_system\u001b[0;34m(item, skip_digestion)\u001b[0m\n\u001b[1;32m 4180\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mmolsysmt_Topology\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m get_n_components_from_system \u001b[38;5;28;01mas\u001b[39;00m aux_get\n\u001b[1;32m 4182\u001b[0m bonds_required \u001b[38;5;241m=\u001b[39m bonds_are_required_to_get_attribute(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mn_components\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124msystem\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[0;32m-> 4183\u001b[0m tmp_item \u001b[38;5;241m=\u001b[39m \u001b[43mto_molsysmt_Topology\u001b[49m\u001b[43m(\u001b[49m\u001b[43mitem\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mget_missing_bonds\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mbonds_required\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mskip_digestion\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m)\u001b[49m\n\u001b[1;32m 4184\u001b[0m output \u001b[38;5;241m=\u001b[39m aux_get(tmp_item, skip_digestion\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m)\n\u001b[1;32m 4186\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m output\n", + "File \u001b[0;32m~/repos@uibcdf/MolSysMT/molsysmt/_private/digestion/digest.py:52\u001b[0m, in \u001b[0;36mdigest..digestor..wrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 48\u001b[0m \u001b[38;5;129m@functools\u001b[39m\u001b[38;5;241m.\u001b[39mwraps(func)\n\u001b[1;32m 49\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mwrapper\u001b[39m(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[1;32m 51\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m kwargs\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mskip_digestion\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;28;01mFalse\u001b[39;00m):\n\u001b[0;32m---> 52\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 54\u001b[0m \u001b[38;5;66;03m# Define caller\u001b[39;00m\n\u001b[1;32m 56\u001b[0m caller \u001b[38;5;241m=\u001b[39m func\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__module__\u001b[39m\u001b[38;5;241m+\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m.\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;241m+\u001b[39mfunc\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__name__\u001b[39m\n", + "File \u001b[0;32m~/repos@uibcdf/MolSysMT/molsysmt/form/nglview_NGLWidget/to_molsysmt_Topology.py:10\u001b[0m, in \u001b[0;36mto_molsysmt_Topology\u001b[0;34m(item, atom_indices, get_missing_bonds, skip_digestion)\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mstring_pdb_text\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m to_molsysmt_Topology \u001b[38;5;28;01mas\u001b[39;00m string_pdb_text_to_molsysmt_Topology\n\u001b[1;32m 9\u001b[0m tmp_item \u001b[38;5;241m=\u001b[39m to_string_pdb_text(item, skip_digestion\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m)\n\u001b[0;32m---> 10\u001b[0m tmp_item \u001b[38;5;241m=\u001b[39m \u001b[43mstring_pdb_text_to_molsysmt_Topology\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtmp_item\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43matom_indices\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43matom_indices\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 11\u001b[0m \u001b[43m \u001b[49m\u001b[43mget_missing_bonds\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mget_missing_bonds\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mskip_digestion\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m)\u001b[49m\n\u001b[1;32m 13\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m tmp_item\n", + "File \u001b[0;32m~/repos@uibcdf/MolSysMT/molsysmt/_private/digestion/digest.py:52\u001b[0m, in \u001b[0;36mdigest..digestor..wrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 48\u001b[0m \u001b[38;5;129m@functools\u001b[39m\u001b[38;5;241m.\u001b[39mwraps(func)\n\u001b[1;32m 49\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mwrapper\u001b[39m(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[1;32m 51\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m kwargs\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mskip_digestion\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;28;01mFalse\u001b[39;00m):\n\u001b[0;32m---> 52\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 54\u001b[0m \u001b[38;5;66;03m# Define caller\u001b[39;00m\n\u001b[1;32m 56\u001b[0m caller \u001b[38;5;241m=\u001b[39m func\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__module__\u001b[39m\u001b[38;5;241m+\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m.\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;241m+\u001b[39mfunc\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__name__\u001b[39m\n", + "File \u001b[0;32m~/repos@uibcdf/MolSysMT/molsysmt/form/string_pdb_text/to_molsysmt_Topology.py:10\u001b[0m, in \u001b[0;36mto_molsysmt_Topology\u001b[0;34m(item, atom_indices, get_missing_bonds, skip_digestion)\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mmolsysmt_PDBFileHandler\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m to_molsysmt_Topology \u001b[38;5;28;01mas\u001b[39;00m molsysmt_PDBFileHandler_to_molsysmt_Topology\n\u001b[1;32m 9\u001b[0m tmp_item \u001b[38;5;241m=\u001b[39m to_molsysmt_PDBFileHandler(item, skip_digestion\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m)\n\u001b[0;32m---> 10\u001b[0m tmp_item \u001b[38;5;241m=\u001b[39m \u001b[43mmolsysmt_PDBFileHandler_to_molsysmt_Topology\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtmp_item\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43matom_indices\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43matom_indices\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 11\u001b[0m \u001b[43m \u001b[49m\u001b[43mget_missing_bonds\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mget_missing_bonds\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 12\u001b[0m \u001b[43m \u001b[49m\u001b[43mskip_digestion\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m)\u001b[49m\n\u001b[1;32m 14\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m tmp_item\n", + "File \u001b[0;32m~/repos@uibcdf/MolSysMT/molsysmt/_private/digestion/digest.py:52\u001b[0m, in \u001b[0;36mdigest..digestor..wrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 48\u001b[0m \u001b[38;5;129m@functools\u001b[39m\u001b[38;5;241m.\u001b[39mwraps(func)\n\u001b[1;32m 49\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mwrapper\u001b[39m(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[1;32m 51\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m kwargs\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mskip_digestion\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;28;01mFalse\u001b[39;00m):\n\u001b[0;32m---> 52\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 54\u001b[0m \u001b[38;5;66;03m# Define caller\u001b[39;00m\n\u001b[1;32m 56\u001b[0m caller \u001b[38;5;241m=\u001b[39m func\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__module__\u001b[39m\u001b[38;5;241m+\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m.\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;241m+\u001b[39mfunc\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__name__\u001b[39m\n", + "File \u001b[0;32m~/repos@uibcdf/MolSysMT/molsysmt/form/molsysmt_PDBFileHandler/to_molsysmt_Topology.py:131\u001b[0m, in \u001b[0;36mto_molsysmt_Topology\u001b[0;34m(item, atom_indices, structure_indices, get_missing_bonds, skip_digestion)\u001b[0m\n\u001b[1;32m 127\u001b[0m tmp_item\u001b[38;5;241m.\u001b[39mrebuild_chains(redefine_ids\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m, redefine_types\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m )\n\u001b[1;32m 129\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m get_missing_bonds:\n\u001b[0;32m--> 131\u001b[0m bonds \u001b[38;5;241m=\u001b[39m \u001b[43m_get_missing_bonds\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtmp_item\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mskip_digestion\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m)\u001b[49m\n\u001b[1;32m 132\u001b[0m bonds \u001b[38;5;241m=\u001b[39m np\u001b[38;5;241m.\u001b[39marray(bonds)\n\u001b[1;32m 133\u001b[0m tmp_item\u001b[38;5;241m.\u001b[39mreset_bonds(n_bonds\u001b[38;5;241m=\u001b[39mbonds\u001b[38;5;241m.\u001b[39mshape[\u001b[38;5;241m0\u001b[39m])\n", + "File \u001b[0;32m~/repos@uibcdf/MolSysMT/molsysmt/_private/digestion/digest.py:52\u001b[0m, in \u001b[0;36mdigest..digestor..wrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 48\u001b[0m \u001b[38;5;129m@functools\u001b[39m\u001b[38;5;241m.\u001b[39mwraps(func)\n\u001b[1;32m 49\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mwrapper\u001b[39m(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[1;32m 51\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m kwargs\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mskip_digestion\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;28;01mFalse\u001b[39;00m):\n\u001b[0;32m---> 52\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 54\u001b[0m \u001b[38;5;66;03m# Define caller\u001b[39;00m\n\u001b[1;32m 56\u001b[0m caller \u001b[38;5;241m=\u001b[39m func\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__module__\u001b[39m\u001b[38;5;241m+\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m.\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;241m+\u001b[39mfunc\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__name__\u001b[39m\n", + "File \u001b[0;32m~/repos@uibcdf/MolSysMT/molsysmt/build/get_missing_bonds.py:68\u001b[0m, in \u001b[0;36mget_missing_bonds\u001b[0;34m(molecular_system, threshold, selection, structure_indices, syntax, engine, with_templates, with_distances, sorted, skip_digestion)\u001b[0m\n\u001b[1;32m 48\u001b[0m \u001b[38;5;28;01mpass\u001b[39;00m\n\u001b[1;32m 50\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m with_distances:\n\u001b[1;32m 51\u001b[0m \n\u001b[1;32m 52\u001b[0m \u001b[38;5;66;03m# Protein:\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 65\u001b[0m \u001b[38;5;66;03m# Enlace C-C: aproximadamente 1.54 Å\u001b[39;00m\n\u001b[1;32m 66\u001b[0m \u001b[38;5;66;03m# Enlace P-O: aproximadamente 1.61 Å\u001b[39;00m\n\u001b[0;32m---> 68\u001b[0m contacts_heavy_atoms \u001b[38;5;241m=\u001b[39m \u001b[43mget_contacts\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmolecular_system\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mselection\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mheavy_atoms_not_water\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 69\u001b[0m \u001b[43m \u001b[49m\u001b[43mthreshold\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mthreshold\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43moutput_type\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mpairs\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 70\u001b[0m \u001b[43m \u001b[49m\u001b[43moutput_indices\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43matom\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mpbc\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mskip_digestion\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m)\u001b[49m\n\u001b[1;32m 72\u001b[0m bonds_distances \u001b[38;5;241m+\u001b[39m\u001b[38;5;241m=\u001b[39m contacts_heavy_atoms[\u001b[38;5;241m0\u001b[39m]\n\u001b[1;32m 74\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(h_atoms_not_water):\n", + "File \u001b[0;32m~/repos@uibcdf/MolSysMT/molsysmt/_private/digestion/digest.py:52\u001b[0m, in \u001b[0;36mdigest..digestor..wrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 48\u001b[0m \u001b[38;5;129m@functools\u001b[39m\u001b[38;5;241m.\u001b[39mwraps(func)\n\u001b[1;32m 49\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mwrapper\u001b[39m(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[1;32m 51\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m kwargs\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mskip_digestion\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;28;01mFalse\u001b[39;00m):\n\u001b[0;32m---> 52\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 54\u001b[0m \u001b[38;5;66;03m# Define caller\u001b[39;00m\n\u001b[1;32m 56\u001b[0m caller \u001b[38;5;241m=\u001b[39m func\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__module__\u001b[39m\u001b[38;5;241m+\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m.\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;241m+\u001b[39mfunc\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__name__\u001b[39m\n", + "File \u001b[0;32m~/repos@uibcdf/MolSysMT/molsysmt/structure/get_contacts.py:31\u001b[0m, in \u001b[0;36mget_contacts\u001b[0;34m(molecular_system, selection, center_of_atoms, weights, structure_indices, selection_2, center_of_atoms_2, weights_2, structure_indices_2, threshold, pbc, syntax, output_type, output_indices, skip_digestion)\u001b[0m\n\u001b[1;32m 28\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 29\u001b[0m atom_indices_2 \u001b[38;5;241m=\u001b[39m select(molecular_system, selection\u001b[38;5;241m=\u001b[39mselection_2, syntax\u001b[38;5;241m=\u001b[39msyntax)\n\u001b[0;32m---> 31\u001b[0m all_dists \u001b[38;5;241m=\u001b[39m \u001b[43mget_distances\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmolecular_system\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mmolecular_system\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mselection\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43matom_indices\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 32\u001b[0m \u001b[43m \u001b[49m\u001b[43mcenter_of_atoms\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcenter_of_atoms\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mweights\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mweights\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mstructure_indices\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstructure_indices\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 33\u001b[0m \u001b[43m \u001b[49m\u001b[43mselection_2\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43matom_indices_2\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcenter_of_atoms_2\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcenter_of_atoms_2\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mweights_2\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mweights_2\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 34\u001b[0m \u001b[43m \u001b[49m\u001b[43mstructure_indices_2\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstructure_indices_2\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mpbc\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mpbc\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 36\u001b[0m length_units \u001b[38;5;241m=\u001b[39m puw\u001b[38;5;241m.\u001b[39mget_unit(all_dists)\n\u001b[1;32m 37\u001b[0m threshold \u001b[38;5;241m=\u001b[39m puw\u001b[38;5;241m.\u001b[39mget_value(threshold, to_unit\u001b[38;5;241m=\u001b[39mlength_units)\n", + "File \u001b[0;32m~/repos@uibcdf/MolSysMT/molsysmt/_private/digestion/digest.py:122\u001b[0m, in \u001b[0;36mdigest..digestor..wrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 120\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m func(all_args[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mself\u001b[39m\u001b[38;5;124m'\u001b[39m], \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mfinal_args)\n\u001b[1;32m 121\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m--> 122\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mfinal_args\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/repos@uibcdf/MolSysMT/molsysmt/structure/get_distances.py:84\u001b[0m, in \u001b[0;36mget_distances\u001b[0;34m(molecular_system, selection, structure_indices, center_of_atoms, weights, molecular_system_2, selection_2, structure_indices_2, center_of_atoms_2, weights_2, pairs, pbc, engine, syntax)\u001b[0m\n\u001b[1;32m 80\u001b[0m in_memory \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mFalse\u001b[39;00m\n\u001b[1;32m 82\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m in_memory:\n\u001b[0;32m---> 84\u001b[0m output \u001b[38;5;241m=\u001b[39m \u001b[43m_get_distances_in_memory\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmolecular_system\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 85\u001b[0m \u001b[43m \u001b[49m\u001b[43mselection\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43matom_indices\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mstructure_indices\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstructure_indices\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcenter_of_atoms\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcenter_of_atoms\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mweights\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mweights\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 86\u001b[0m \u001b[43m \u001b[49m\u001b[43mmolecular_system_2\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mmolecular_system_2\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mselection_2\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43matom_indices_2\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mstructure_indices_2\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstructure_indices_2\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 87\u001b[0m \u001b[43m \u001b[49m\u001b[43mcenter_of_atoms_2\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcenter_of_atoms_2\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mweights_2\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mweights_2\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mpairs\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mpairs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mpbc\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mpbc\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43msyntax\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43msyntax\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 89\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 91\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m NotImplementedMethodError\n", + "File \u001b[0;32m~/repos@uibcdf/MolSysMT/molsysmt/structure/get_distances.py:171\u001b[0m, in \u001b[0;36m_get_distances_in_memory\u001b[0;34m(molecular_system, selection, structure_indices, center_of_atoms, weights, molecular_system_2, selection_2, structure_indices_2, center_of_atoms_2, weights_2, pairs, pbc, aux_dict, syntax)\u001b[0m\n\u001b[1;32m 167\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m pairs:\n\u001b[1;32m 169\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m coordinates_2 \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m--> 171\u001b[0m coordinates, length_unit \u001b[38;5;241m=\u001b[39m \u001b[43mpuw\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_value_and_unit\u001b[49m\u001b[43m(\u001b[49m\u001b[43mcoordinates\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 173\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m pbc:\n\u001b[1;32m 174\u001b[0m box \u001b[38;5;241m=\u001b[39m get(molecular_system, element\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124msystem\u001b[39m\u001b[38;5;124m'\u001b[39m, structure_indices\u001b[38;5;241m=\u001b[39mstructure_indices, box\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m)\n", + "File \u001b[0;32m/conda/miniconda3/envs/MolSysMT@uibcdf_3.10/lib/python3.10/site-packages/pyunitwizard/main.py:180\u001b[0m, in \u001b[0;36mget_value_and_unit\u001b[0;34m(quantity, to_unit, to_form, parser, standardized)\u001b[0m\n\u001b[1;32m 177\u001b[0m quantity \u001b[38;5;241m=\u001b[39m standardize(quantity)\n\u001b[1;32m 178\u001b[0m to_unit \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[0;32m--> 180\u001b[0m value \u001b[38;5;241m=\u001b[39m \u001b[43mconvert\u001b[49m\u001b[43m(\u001b[49m\u001b[43mquantity\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mto_unit\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mto_unit\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mparser\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mparser\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mto_type\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mvalue\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 181\u001b[0m unit \u001b[38;5;241m=\u001b[39m convert(quantity, to_unit\u001b[38;5;241m=\u001b[39mto_unit, to_form\u001b[38;5;241m=\u001b[39mto_form, parser\u001b[38;5;241m=\u001b[39mparser, to_type\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124munit\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[1;32m 183\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m value, unit\n", + "File \u001b[0;32m/conda/miniconda3/envs/MolSysMT@uibcdf_3.10/lib/python3.10/site-packages/pyunitwizard/main.py:547\u001b[0m, in \u001b[0;36mconvert\u001b[0;34m(quantity_or_unit, to_unit, to_form, parser, to_type)\u001b[0m\n\u001b[1;32m 522\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\" Converts a quantity or unit to a different unit and/or to a different\u001b[39;00m\n\u001b[1;32m 523\u001b[0m \u001b[38;5;124;03m form and/or type. \u001b[39;00m\n\u001b[1;32m 524\u001b[0m \n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 543\u001b[0m \u001b[38;5;124;03m be a float or a numpy array.\u001b[39;00m\n\u001b[1;32m 544\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 545\u001b[0m output \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[0;32m--> 547\u001b[0m form_in \u001b[38;5;241m=\u001b[39m \u001b[43mget_form\u001b[49m\u001b[43m(\u001b[49m\u001b[43mquantity_or_unit\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 548\u001b[0m to_form \u001b[38;5;241m=\u001b[39m digest_to_form(to_form, form_in)\n\u001b[1;32m 549\u001b[0m parser \u001b[38;5;241m=\u001b[39m digest_parser(parser)\n", + "File \u001b[0;32m/conda/miniconda3/envs/MolSysMT@uibcdf_3.10/lib/python3.10/site-packages/pyunitwizard/main.py:32\u001b[0m, in \u001b[0;36mget_form\u001b[0;34m(quantity_or_unit)\u001b[0m\n\u001b[1;32m 30\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m dict_is_form[quantity_or_unit]\n\u001b[1;32m 31\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mKeyError\u001b[39;00m:\n\u001b[0;32m---> 32\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m NotImplementedFormError(\u001b[38;5;28mtype\u001b[39m(quantity_or_unit))\n", + "\u001b[0;31mNotImplementedFormError\u001b[0m: None" ] } ], "source": [ - "dd, pp = msm.build.get_missing_bonds(view)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "bb376390-1cd7-45ab-8e29-a039ef0a09dd", - "metadata": {}, - "outputs": [], - "source": [ - "aa" + "msm.get(view, element='system', n_components=True)" ] }, { "cell_type": "code", "execution_count": null, - "id": "0710eeba-ed65-4095-8a84-384f95263bae", + "id": "59e18040-4290-4bed-8bf3-1021d2a4234a", "metadata": {}, "outputs": [], "source": []