From 23d104658c50d0510684284f374777af07d5c2d8 Mon Sep 17 00:00:00 2001 From: Diego Prada Date: Mon, 22 Apr 2024 14:22:41 -0600 Subject: [PATCH] In process --- .../digestion/argument/output_indices.py | 13 + .../digestion/argument/output_type.py | 2 +- molsysmt/basic/selector/molsysmt.py | 29 +- molsysmt/build/get_missing_bonds.py | 5 +- .../get_structural_attributes.py | 4 +- molsysmt/structure/get_contacts.py | 6 +- sandbox/Tests.ipynb | 1174 +++++++++++++++-- 7 files changed, 1097 insertions(+), 136 deletions(-) create mode 100644 molsysmt/_private/digestion/argument/output_indices.py diff --git a/molsysmt/_private/digestion/argument/output_indices.py b/molsysmt/_private/digestion/argument/output_indices.py new file mode 100644 index 000000000..48c38375f --- /dev/null +++ b/molsysmt/_private/digestion/argument/output_indices.py @@ -0,0 +1,13 @@ +from ...exceptions import ArgumentError +from ...variables import is_all + +def digest_output_indices(output_indices, caller=None): + + if caller=='molsysmt.structure.get_contacts.get_contacts': + + if isinstance(output_indices, str): + if output_indices.lower() in ['selection', 'atom', 'group']: + return output_indices.lower() + + raise ArgumentError('output_indices', value=output_indices, caller=caller, message=None) + diff --git a/molsysmt/_private/digestion/argument/output_type.py b/molsysmt/_private/digestion/argument/output_type.py index 0de34c587..49aacbb06 100644 --- a/molsysmt/_private/digestion/argument/output_type.py +++ b/molsysmt/_private/digestion/argument/output_type.py @@ -36,7 +36,7 @@ def digest_output_type(output_type, caller=None): elif caller=='molsysmt.structure.get_contacts.get_contacts': if isinstance(output_type, str): - if output_type.lower() in ['numpy.ndarray', 'dictionary']: + if output_type.lower() in ['pairs', 'sorted pairs', 'matrix']: return output_type.lower() elif caller=='molsysmt.topology.get_covalent_blocks.get_covalent_blocks': diff --git a/molsysmt/basic/selector/molsysmt.py b/molsysmt/basic/selector/molsysmt.py index ef00b3b08..39adf16ab 100644 --- a/molsysmt/basic/selector/molsysmt.py +++ b/molsysmt/basic/selector/molsysmt.py @@ -42,14 +42,33 @@ def select_standard(item, selection): from molsysmt.basic import convert, get_form from molsysmt.config import selection_shortcuts + + tmp_selection = selection + + shortcuts = selection_shortcuts['MolSysMT'] + + for key in shortcuts: + if key in selection: + tmp_selection = tmp_selection.replace(key, shortcuts[key]) + + + form_in = get_form(item) if form_in == 'molsysmt.Topology': tmp_item = item else: - tmp_item = convert(item, to_form='molsysmt.Topology', skip_digestion=True) - tmp_selection = selection + from molsysmt.attribute.bonds_are_required_to_get_attribute import bond_dependent_attributes + + bonds_required_by_selection = False + for attribute in bond_dependent_attributes: + if attribute in tmp_selection: + bonds_required_by_selection = True + break + + tmp_item = convert(item, to_form='molsysmt.Topology', get_missing_bonds=bonds_required_by_selection, + skip_digestion=True) if '@' in selection: @@ -100,12 +119,6 @@ def select_standard(item, selection): var_value = list(var_value) locals()['auxiliar_variable_'+var_name]=var_value - shortcuts = selection_shortcuts['MolSysMT'] - - for key in shortcuts: - if key in selection: - tmp_selection = tmp_selection.replace(key, shortcuts[key]) - if is_all(tmp_selection): output = np.array(np.arange(tmp_item.atoms.shape[0])) diff --git a/molsysmt/build/get_missing_bonds.py b/molsysmt/build/get_missing_bonds.py index 9e4382ec1..d7885af78 100644 --- a/molsysmt/build/get_missing_bonds.py +++ b/molsysmt/build/get_missing_bonds.py @@ -30,6 +30,7 @@ def get_missing_bonds(molecular_system, threshold='2 angstroms', selection='all' bonds_templates = [] bonds_distances = [] + print('llega_0') n_atoms = get(molecular_system, n_atoms=True) atoms_water = select(molecular_system, selection='group_type=="water"') atoms_not_water = complementary_atom_indices(molecular_system, atoms_water) @@ -37,10 +38,10 @@ def get_missing_bonds(molecular_system, threshold='2 angstroms', selection='all' h_atoms_no_water = [ii for ii in atoms_not_water if ii not in heavy_atoms_not_water] if with_distances: - + print('llega_1') contacts_heavy_atoms = get_contacts(molecular_system, selection=heavy_atoms_not_water, threshold=threshold, output_type='pairs', - output_indices='atom_index', pbc=True) + output_indices='atom', pbc=True, skip_digestion=False) return contacts_heavy_atoms diff --git a/molsysmt/form/nglview_NGLWidget/get_structural_attributes.py b/molsysmt/form/nglview_NGLWidget/get_structural_attributes.py index 23a8691d8..838b8d76a 100644 --- a/molsysmt/form/nglview_NGLWidget/get_structural_attributes.py +++ b/molsysmt/form/nglview_NGLWidget/get_structural_attributes.py @@ -23,10 +23,10 @@ def get_coordinates_from_atom(item, indices='all', structure_indices='all', skip coordinates = [] for ii in structure_indices: - if is_all(atom_indices): + if is_all(indices): coordinates.append(item[0].get_coordinates(ii)) else: - coordinates.append(item[0].get_coordinates(ii)[atom_indices,:]) + coordinates.append(item[0].get_coordinates(ii)[indices,:]) coordinates = np.array(coordinates) coordinates = puw.quantity(coordinates, unit='angstroms') coordinates = puw.standardize(coordinates) diff --git a/molsysmt/structure/get_contacts.py b/molsysmt/structure/get_contacts.py index 117bd36fb..848003621 100644 --- a/molsysmt/structure/get_contacts.py +++ b/molsysmt/structure/get_contacts.py @@ -7,7 +7,7 @@ @digest() def get_contacts(molecular_system, selection=None, center_of_atoms=False, weights=None, structure_indices="all", selection_2=None, center_of_atoms_2=False, weights_2=None, structure_indices_2=None, - threshold='12 angstroms', pbc=True, syntax='MolSysMT', output_type='map', output_indices=None, + threshold='12 angstroms', pbc=True, syntax='MolSysMT', output_type='matrix', output_indices='selection', skip_digestion=False): """ @@ -48,7 +48,7 @@ def get_contacts(molecular_system, selection=None, center_of_atoms=False, weight output = None - if output_type=='map': + if output_type=='matrix': output = contact_map @@ -62,7 +62,7 @@ def get_contacts(molecular_system, selection=None, center_of_atoms=False, weight aux_pairs = np.column_stack(aux_pairs).tolist() pairs.append(aux_pairs) - if output_indices=='atom_index': + if output_indices=='atom': atom_indices = np.array(atom_indices) diff --git a/sandbox/Tests.ipynb b/sandbox/Tests.ipynb index 2c7e95230..5e9035928 100644 --- a/sandbox/Tests.ipynb +++ b/sandbox/Tests.ipynb @@ -28,7 +28,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "410191d20dd240878be5fcd9fb95b907", + "model_id": "8546031f84594be0b291a7c24d45521d", "version_major": 2, "version_minor": 0 }, @@ -80,17 +80,36 @@ "metadata": {}, "outputs": [], "source": [ - "molecular_system = molsys" + "molecular_system = view" ] }, { "cell_type": "code", "execution_count": 7, + "id": "bce7baf1-eae7-4a92-b8b6-5d134d2ddad3", + "metadata": {}, + "outputs": [], + "source": [ + "n_atoms = msm.get(molecular_system, n_atoms=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "fef4f5ec-6c71-4575-99a6-8a31c8b264a5", + "metadata": {}, + "outputs": [], + "source": [ + "atoms_water = msm.select(molecular_system, selection='group_type==\"water\"')" + ] + }, + { + "cell_type": "code", + "execution_count": 9, "id": "8fdd18d1-f7c7-4279-88cb-4035457fb4c7", "metadata": {}, "outputs": [], "source": [ - "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", @@ -99,154 +118,1069 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 10, "id": "c348d54a-0d07-4cba-a488-c7472cfeadfd", "metadata": {}, "outputs": [ { - "ename": "ArgumentError", - "evalue": "Error in molsysmt.structure.get_contacts.get_contacts due to the output_type argument with value pairs.Check for more information. If you still need help, open a new issue in https://github.com/uibcdf/MolSysMT/issues.", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mArgumentError\u001b[0m Traceback (most recent call last)", - "File \u001b[0;32m:1\u001b[0m\n", - "File \u001b[0;32m~/repos@uibcdf/MolSysMT/molsysmt/_private/digestion/digest.py:109\u001b[0m, in \u001b[0;36mdigest..digestor..wrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 105\u001b[0m \u001b[38;5;28;01mpass\u001b[39;00m\n\u001b[1;32m 108\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m arg_name \u001b[38;5;129;01min\u001b[39;00m all_args:\n\u001b[0;32m--> 109\u001b[0m \u001b[43mgut\u001b[49m\u001b[43m(\u001b[49m\u001b[43marg_name\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 112\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m arg_name \u001b[38;5;129;01min\u001b[39;00m not_digested_args:\n\u001b[1;32m 113\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m arg_name \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;129;01min\u001b[39;00m [\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mself\u001b[39m\u001b[38;5;124m'\u001b[39m]:\n", - "File \u001b[0;32m~/repos@uibcdf/MolSysMT/molsysmt/_private/digestion/digest.py:100\u001b[0m, in \u001b[0;36mdigest..digestor..wrapper..gut\u001b[0;34m(arg_name)\u001b[0m\n\u001b[1;32m 98\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 99\u001b[0m parameters_dict[parameter] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[0;32m--> 100\u001b[0m digested_args[arg_name] \u001b[38;5;241m=\u001b[39m \u001b[43mdigestion_functions\u001b[49m\u001b[43m[\u001b[49m\u001b[43marg_name\u001b[49m\u001b[43m]\u001b[49m\u001b[43m(\u001b[49m\u001b[43mall_args\u001b[49m\u001b[43m[\u001b[49m\u001b[43marg_name\u001b[49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 101\u001b[0m \u001b[43m \u001b[49m\u001b[43mcaller\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcaller\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 102\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mparameters_dict\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 103\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 104\u001b[0m not_digested_args[arg_name] \u001b[38;5;241m=\u001b[39m all_args[arg_name]\n", - "File \u001b[0;32m~/repos@uibcdf/MolSysMT/molsysmt/_private/digestion/argument/output_type.py:60\u001b[0m, in \u001b[0;36mdigest_output_type\u001b[0;34m(output_type, caller)\u001b[0m\n\u001b[1;32m 57\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m output_type\u001b[38;5;241m.\u001b[39mlower() \u001b[38;5;129;01min\u001b[39;00m [\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mnumpy.ndarray\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mdictionary\u001b[39m\u001b[38;5;124m'\u001b[39m]:\n\u001b[1;32m 58\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m output_type\u001b[38;5;241m.\u001b[39mlower()\n\u001b[0;32m---> 60\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m ArgumentError(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124moutput_type\u001b[39m\u001b[38;5;124m'\u001b[39m, value\u001b[38;5;241m=\u001b[39moutput_type, caller\u001b[38;5;241m=\u001b[39mcaller, message\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m)\n", - "\u001b[0;31mArgumentError\u001b[0m: Error in molsysmt.structure.get_contacts.get_contacts due to the output_type argument with value pairs.Check for more information. If you still need help, open a new issue in https://github.com/uibcdf/MolSysMT/issues." + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 2.57 s, sys: 59.5 ms, total: 2.63 s\n", + "Wall time: 2.61 s\n" ] } ], "source": [ "%%time\n", "aa = msm.structure.get_contacts(molecular_system, threshold='2 angstroms', selection=heavy_atoms_not_water, pbc=True,\n", - " output_type='pairs', output_indices='atom_index', skip_digestion=False)" + " output_type='pairs', output_indices='atom')" ] }, { "cell_type": "code", - "execution_count": 11, - "id": "b66520e4-9c08-4808-825e-c24c2e9fc3dc", + "execution_count": 12, + "id": "c1fa6850-48a1-4fae-8b2b-d4e8d298f714", "metadata": {}, "outputs": [ { - "data": { - "text/plain": [ - "[0, 1]" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" + "name": "stdout", + "output_type": "stream", + "text": [ + "llega_0\n", + "llega_1\n" + ] } ], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "c1fa6850-48a1-4fae-8b2b-d4e8d298f714", - "metadata": {}, - "outputs": [], - "source": [ - "msm.build.get_missing_bonds(view)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "7c34909f-e82f-41be-9a1a-a913143f7dba", - "metadata": {}, - "outputs": [], - "source": [ - "msm.get(view, n_bonds=True)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "60e2fdc5-6743-4733-aea7-8912685f8c68", - "metadata": {}, - "outputs": [], - "source": [ - "msm.get(molsys, n_bonds=True)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "b21c0d6d-56ed-4b24-b822-c9affa319316", - "metadata": {}, - "outputs": [], - "source": [ - "molsys.topology.components" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "3d84aabd-c118-4b56-a699-a60f7b661706", - "metadata": {}, - "outputs": [], - "source": [ - "output = msm.compare(molsys, view, attribute_type='topological', rule='equal', output_type='dictionary')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "d4fb0697-d2e8-4710-a2a7-a8d8647f7f03", - "metadata": {}, - "outputs": [], - "source": [ - "output" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "666242b2-f2ed-4790-a806-9d33042eb570", - "metadata": {}, - "outputs": [], "source": [ - "aa = [0,1,0,2,3]" + "aa = msm.build.get_missing_bonds(view)" ] }, { "cell_type": "code", - "execution_count": null, - "id": "2e331400-256b-468a-b527-427f045cfabd", - "metadata": {}, - "outputs": [], - "source": [ - "aa=np.array(aa)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "a86544c8-d676-4ac7-90d0-6ffa1db25360", - "metadata": {}, - "outputs": [], - "source": [ - "bb=[[[0,3,4],[1,2,3]]]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "033c5343-ebce-449d-b317-0edd359c26fd", + "execution_count": 13, + "id": "bb376390-1cd7-45ab-8e29-a039ef0a09dd", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "[[[0, 1],\n", + " [1, 2],\n", + " [1, 4],\n", + " [2, 3],\n", + " [2, 9],\n", + " [4, 5],\n", + " [5, 6],\n", + " [6, 7],\n", + " [7, 8],\n", + " [9, 10],\n", + " [9, 15],\n", + " [10, 11],\n", + " [10, 13],\n", + " [11, 12],\n", + " [11, 16],\n", + " [13, 14],\n", + " [14, 15],\n", + " [16, 17],\n", + " [17, 18],\n", + " [17, 20],\n", + " [18, 19],\n", + " [18, 25],\n", + " [20, 21],\n", + " [21, 22],\n", + " [22, 23],\n", + " [22, 24],\n", + " [25, 26],\n", + " [25, 31],\n", + " [26, 27],\n", + " [26, 29],\n", + " [27, 28],\n", + " [27, 32],\n", + " [29, 30],\n", + " [30, 31],\n", + " [32, 33],\n", + " [33, 34],\n", + " [33, 36],\n", + " [34, 35],\n", + " [34, 40],\n", + " [36, 37],\n", + " [36, 38],\n", + " [37, 39],\n", + " [40, 41],\n", + " [41, 42],\n", + " [41, 44],\n", + " [42, 43],\n", + " [42, 45],\n", + " [45, 46],\n", + " [46, 47],\n", + " [46, 49],\n", + " [47, 48],\n", + " [47, 50],\n", + " [50, 51],\n", + " [51, 52],\n", + " [51, 54],\n", + " [52, 53],\n", + " [52, 55],\n", + " [55, 56],\n", + " [56, 57],\n", + " [56, 59],\n", + " [57, 58],\n", + " [57, 63],\n", + " [59, 60],\n", + " [60, 61],\n", + " [60, 62],\n", + " [63, 64],\n", + " [64, 65],\n", + " [64, 67],\n", + " [65, 66],\n", + " [65, 77],\n", + " [67, 68],\n", + " [68, 69],\n", + " [68, 70],\n", + " [69, 71],\n", + " [70, 72],\n", + " [70, 73],\n", + " [71, 72],\n", + " [72, 74],\n", + " [73, 75],\n", + " [74, 76],\n", + " [75, 76],\n", + " [77, 78],\n", + " [78, 79],\n", + " [78, 81],\n", + " [79, 80],\n", + " [79, 86],\n", + " [81, 82],\n", + " [82, 83],\n", + " [83, 84],\n", + " [84, 85],\n", + " [86, 87],\n", + " [87, 88],\n", + " [87, 90],\n", + " [88, 89],\n", + " [88, 92],\n", + " [90, 91],\n", + " [92, 93],\n", + " [93, 94],\n", + " [93, 96],\n", + " [94, 95],\n", + " [94, 100],\n", + " [96, 97],\n", + " [97, 98],\n", + " [97, 99],\n", + " [100, 101],\n", + " [101, 102],\n", + " [102, 103],\n", + " [102, 104],\n", + " [104, 105],\n", + " [105, 106],\n", + " [105, 108],\n", + " [106, 107],\n", + " [106, 110],\n", + " [108, 109],\n", + " [110, 111],\n", + " [111, 112],\n", + " [111, 114],\n", + " [112, 113],\n", + " [112, 119],\n", + " [114, 115],\n", + " [115, 116],\n", + " [116, 117],\n", + " [116, 118],\n", + " [119, 120],\n", + " [120, 121],\n", + " [120, 123],\n", + " [121, 122],\n", + " [121, 125],\n", + " [123, 124],\n", + " [125, 126],\n", + " [126, 127],\n", + " [126, 129],\n", + " [127, 128],\n", + " [127, 133],\n", + " [129, 130],\n", + " [130, 131],\n", + " [130, 132],\n", + " [133, 134],\n", + " [134, 135],\n", + " [134, 137],\n", + " [135, 136],\n", + " [135, 141],\n", + " [137, 138],\n", + " [138, 139],\n", + " [138, 140],\n", + " [141, 142],\n", + " [142, 143],\n", + " [142, 145],\n", + " [143, 144],\n", + " [143, 148],\n", + " [145, 146],\n", + " [145, 147],\n", + " [148, 149],\n", + " [148, 154],\n", + " [149, 150],\n", + " [149, 152],\n", + " [150, 151],\n", + " [150, 155],\n", + " [152, 153],\n", + " [153, 154],\n", + " [155, 156],\n", + " [156, 157],\n", + " [156, 159],\n", + " [157, 158],\n", + " [157, 163],\n", + " [159, 160],\n", + " [160, 161],\n", + " [160, 162],\n", + " [163, 164],\n", + " [164, 165],\n", + " [164, 167],\n", + " [165, 166],\n", + " [165, 171],\n", + " [167, 168],\n", + " [167, 169],\n", + " [168, 170],\n", + " [171, 172],\n", + " [172, 173],\n", + " [172, 175],\n", + " [173, 174],\n", + " [173, 180],\n", + " [175, 176],\n", + " [176, 177],\n", + " [177, 178],\n", + " [177, 179],\n", + " [180, 181],\n", + " [181, 182],\n", + " [181, 184],\n", + " [182, 183],\n", + " [182, 187],\n", + " [184, 185],\n", + " [184, 186],\n", + " [187, 188],\n", + " [188, 189],\n", + " [188, 191],\n", + " [189, 190],\n", + " [189, 195],\n", + " [191, 192],\n", + " [192, 193],\n", + " [192, 194],\n", + " [195, 196],\n", + " [196, 197],\n", + " [196, 199],\n", + " [197, 198],\n", + " [197, 203],\n", + " [199, 200],\n", + " [200, 201],\n", + " [200, 202],\n", + " [203, 204],\n", + " [204, 205],\n", + " [204, 207],\n", + " [205, 206],\n", + " [205, 208],\n", + " [208, 209],\n", + " [209, 210],\n", + " [209, 212],\n", + " [210, 211],\n", + " [210, 213],\n", + " [213, 214],\n", + " [214, 215],\n", + " [214, 217],\n", + " [215, 216],\n", + " [215, 220],\n", + " [217, 218],\n", + " [217, 219],\n", + " [220, 221],\n", + " [221, 222],\n", + " [221, 224],\n", + " [222, 223],\n", + " [222, 231],\n", + " [224, 225],\n", + " [225, 226],\n", + " [225, 227],\n", + " [226, 228],\n", + " [227, 229],\n", + " [228, 230],\n", + " [229, 230],\n", + " [231, 232],\n", + " [232, 233],\n", + " [232, 235],\n", + " [233, 234],\n", + " [233, 239],\n", + " [235, 236],\n", + " [236, 237],\n", + " [236, 238],\n", + " [239, 240],\n", + " [240, 241],\n", + " [240, 243],\n", + " [241, 242],\n", + " [241, 249],\n", + " [243, 244],\n", + " [244, 245],\n", + " [244, 246],\n", + " [245, 247],\n", + " [246, 248],\n", + " [247, 248],\n", + " [249, 250],\n", + " [250, 251],\n", + " [250, 253],\n", + " [251, 252],\n", + " [251, 257],\n", + " [253, 254],\n", + " [254, 255],\n", + " [254, 256],\n", + " [257, 258],\n", + " [258, 259],\n", + " [258, 261],\n", + " [259, 260],\n", + " [259, 264],\n", + " [261, 262],\n", + " [261, 263],\n", + " [264, 265],\n", + " [265, 266],\n", + " [265, 268],\n", + " [266, 267],\n", + " [266, 273],\n", + " [268, 269],\n", + " [269, 270],\n", + " [270, 271],\n", + " [270, 272],\n", + " [273, 274],\n", + " [274, 275],\n", + " [274, 277],\n", + " [275, 276],\n", + " [275, 279],\n", + " [277, 278],\n", + " [279, 280],\n", + " [280, 281],\n", + " [280, 283],\n", + " [281, 282],\n", + " [281, 286],\n", + " [283, 284],\n", + " [283, 285],\n", + " [286, 287],\n", + " [287, 288],\n", + " [287, 290],\n", + " [288, 289],\n", + " [288, 293],\n", + " [290, 291],\n", + " [290, 292],\n", + " [293, 294],\n", + " [294, 295],\n", + " [294, 297],\n", + " [295, 296],\n", + " [295, 298],\n", + " [298, 299],\n", + " [298, 304],\n", + " [299, 300],\n", + " [299, 302],\n", + " [300, 301],\n", + " [300, 305],\n", + " [302, 303],\n", + " [303, 304],\n", + " [305, 306],\n", + " [306, 307],\n", + " [306, 309],\n", + " [307, 308],\n", + " [307, 312],\n", + " [309, 310],\n", + " [309, 311],\n", + " [312, 313],\n", + " [313, 314],\n", + " [313, 316],\n", + " [314, 315],\n", + " [314, 323],\n", + " [316, 317],\n", + " [317, 318],\n", + " [317, 319],\n", + " [318, 320],\n", + " [319, 321],\n", + " [320, 322],\n", + " [321, 322],\n", + " [323, 324],\n", + " [324, 325],\n", + " [324, 327],\n", + " [325, 326],\n", + " [325, 331],\n", + " [327, 328],\n", + " [328, 329],\n", + " [328, 330],\n", + " [331, 332],\n", + " [332, 333],\n", + " [332, 335],\n", + " [333, 334],\n", + " [333, 341],\n", + " [335, 336],\n", + " [336, 337],\n", + " [336, 338],\n", + " [337, 339],\n", + " [338, 340],\n", + " [339, 340],\n", + " [341, 342],\n", + " [342, 343],\n", + " [342, 345],\n", + " [343, 344],\n", + " [343, 349],\n", + " [345, 346],\n", + " [345, 347],\n", + " [346, 348],\n", + " [349, 350],\n", + " [349, 355],\n", + " [350, 351],\n", + " [350, 353],\n", + " [351, 352],\n", + " [351, 356],\n", + " [353, 354],\n", + " [354, 355],\n", + " [356, 357],\n", + " [357, 358],\n", + " [357, 360],\n", + " [358, 359],\n", + " [358, 364],\n", + " [360, 361],\n", + " [361, 362],\n", + " [362, 363],\n", + " [364, 365],\n", + " [365, 366],\n", + " [365, 368],\n", + " [366, 367],\n", + " [366, 371],\n", + " [368, 369],\n", + " [368, 370],\n", + " [371, 372],\n", + " [372, 373],\n", + " [372, 375],\n", + " [373, 374],\n", + " [373, 380],\n", + " [375, 376],\n", + " [376, 377],\n", + " [377, 378],\n", + " [378, 379],\n", + " [380, 381],\n", + " [381, 382],\n", + " [381, 384],\n", + " [382, 383],\n", + " [382, 385],\n", + " [385, 386],\n", + " [386, 387],\n", + " [386, 389],\n", + " [387, 388],\n", + " [387, 396],\n", + " [389, 390],\n", + " [390, 391],\n", + " [391, 392],\n", + " [392, 393],\n", + " [393, 394],\n", + " [393, 395],\n", + " [396, 397],\n", + " [397, 398],\n", + " [397, 400],\n", + " [398, 399],\n", + " [398, 404],\n", + " [400, 401],\n", + " [401, 402],\n", + " [401, 403],\n", + " [404, 405],\n", + " [405, 406],\n", + " [405, 408],\n", + " [406, 407],\n", + " [406, 411],\n", + " [408, 409],\n", + " [408, 410],\n", + " [411, 412],\n", + " [412, 413],\n", + " [412, 415],\n", + " [413, 414],\n", + " [413, 419],\n", + " [415, 416],\n", + " [416, 417],\n", + " [416, 418],\n", + " [419, 420],\n", + " [419, 425],\n", + " [420, 421],\n", + " [420, 423],\n", + " [421, 422],\n", + " [421, 426],\n", + " [423, 424],\n", + " [424, 425],\n", + " [426, 427],\n", + " [427, 428],\n", + " [427, 430],\n", + " [428, 429],\n", + " [428, 435],\n", + " [430, 431],\n", + " [431, 432],\n", + " [432, 433],\n", + " [433, 434],\n", + " [435, 436],\n", + " [436, 437],\n", + " [436, 439],\n", + " [437, 438],\n", + " [437, 446],\n", + " [439, 440],\n", + " [440, 441],\n", + " [440, 442],\n", + " [441, 443],\n", + " [442, 444],\n", + " [443, 445],\n", + " [444, 445],\n", + " [446, 447],\n", + " [447, 448],\n", + " [447, 450],\n", + " [448, 449],\n", + " [448, 455],\n", + " [450, 451],\n", + " [451, 452],\n", + " [452, 453],\n", + " [452, 454],\n", + " [455, 456],\n", + " [456, 457],\n", + " [456, 459],\n", + " [457, 458],\n", + " [457, 463],\n", + " [459, 460],\n", + " [459, 461],\n", + " [460, 462],\n", + " [463, 464],\n", + " [464, 465],\n", + " [464, 467],\n", + " [465, 466],\n", + " [465, 468],\n", + " [468, 469],\n", + " [469, 470],\n", + " [469, 472],\n", + " [470, 471],\n", + " [470, 473],\n", + " [473, 474],\n", + " [474, 475],\n", + " [474, 477],\n", + " [475, 476],\n", + " [475, 482],\n", + " [477, 478],\n", + " [478, 479],\n", + " [479, 480],\n", + " [479, 481],\n", + " [482, 483],\n", + " [483, 484],\n", + " [483, 486],\n", + " [484, 485],\n", + " [484, 490],\n", + " [486, 487],\n", + " [487, 488],\n", + " [487, 489],\n", + " [490, 491],\n", + " [491, 492],\n", + " [491, 494],\n", + " [492, 493],\n", + " [492, 495],\n", + " [495, 496],\n", + " [496, 497],\n", + " [496, 499],\n", + " [497, 498],\n", + " [497, 503],\n", + " [499, 500],\n", + " [499, 501],\n", + " [500, 502],\n", + " [503, 504],\n", + " [504, 505],\n", + " [504, 507],\n", + " [505, 506],\n", + " [505, 510],\n", + " [507, 508],\n", + " [507, 509],\n", + " [510, 511],\n", + " [511, 512],\n", + " [511, 514],\n", + " [512, 513],\n", + " [512, 521],\n", + " [514, 515],\n", + " [515, 516],\n", + " [516, 517],\n", + " [517, 518],\n", + " [518, 519],\n", + " [518, 520],\n", + " [521, 522],\n", + " [522, 523],\n", + " [522, 525],\n", + " [523, 524],\n", + " [523, 527],\n", + " [525, 526],\n", + " [527, 528],\n", + " [528, 529],\n", + " [529, 530],\n", + " [529, 531],\n", + " [531, 532],\n", + " [532, 533],\n", + " [532, 535],\n", + " [533, 534],\n", + " [533, 536],\n", + " [536, 537],\n", + " [537, 538],\n", + " [537, 540],\n", + " [538, 539],\n", + " [538, 547],\n", + " [540, 541],\n", + " [541, 542],\n", + " [541, 543],\n", + " [542, 544],\n", + " [543, 545],\n", + " [544, 546],\n", + " [545, 546],\n", + " [547, 548],\n", + " [548, 549],\n", + " [548, 551],\n", + " [549, 550],\n", + " [549, 554],\n", + " [551, 552],\n", + " [551, 553],\n", + " [554, 555],\n", + " [555, 556],\n", + " [556, 557],\n", + " [556, 558],\n", + " [558, 559],\n", + " [559, 560],\n", + " [559, 562],\n", + " [560, 561],\n", + " [560, 567],\n", + " [562, 563],\n", + " [563, 564],\n", + " [564, 565],\n", + " [564, 566],\n", + " [567, 568],\n", + " [568, 569],\n", + " [568, 571],\n", + " [569, 570],\n", + " [569, 574],\n", + " [571, 572],\n", + " [571, 573],\n", + " [574, 575],\n", + " [575, 576],\n", + " [575, 578],\n", + " [576, 577],\n", + " [576, 580],\n", + " [578, 579],\n", + " [580, 581],\n", + " [581, 582],\n", + " [581, 584],\n", + " [582, 583],\n", + " [582, 588],\n", + " [584, 585],\n", + " [585, 586],\n", + " [585, 587],\n", + " [588, 589],\n", + " [589, 590],\n", + " [589, 592],\n", + " [590, 591],\n", + " [590, 597],\n", + " [592, 593],\n", + " [593, 594],\n", + " [594, 595],\n", + " [594, 596],\n", + " [597, 598],\n", + " [598, 599],\n", + " [598, 601],\n", + " [599, 600],\n", + " [599, 605],\n", + " [601, 602],\n", + " [601, 603],\n", + " [602, 604],\n", + " [605, 606],\n", + " [606, 607],\n", + " [606, 609],\n", + " [607, 608],\n", + " [607, 613],\n", + " [609, 610],\n", + " [610, 611],\n", + " [610, 612],\n", + " [613, 614],\n", + " [614, 615],\n", + " [614, 617],\n", + " [615, 616],\n", + " [615, 622],\n", + " [617, 618],\n", + " [618, 619],\n", + " [619, 620],\n", + " [620, 621],\n", + " [622, 623],\n", + " [623, 624],\n", + " [623, 626],\n", + " [624, 625],\n", + " [624, 630],\n", + " [626, 627],\n", + " [627, 628],\n", + " [627, 629],\n", + " [630, 631],\n", + " [631, 632],\n", + " [631, 634],\n", + " [632, 633],\n", + " [632, 642],\n", + " [634, 635],\n", + " [635, 636],\n", + " [635, 637],\n", + " [636, 638],\n", + " [637, 639],\n", + " [638, 640],\n", + " [639, 640],\n", + " [640, 641],\n", + " [642, 643],\n", + " [643, 644],\n", + " [644, 645],\n", + " [644, 646],\n", + " [646, 647],\n", + " [647, 648],\n", + " [647, 650],\n", + " [648, 649],\n", + " [648, 654],\n", + " [650, 651],\n", + " [650, 652],\n", + " [651, 653],\n", + " [654, 655],\n", + " [655, 656],\n", + " [655, 658],\n", + " [656, 657],\n", + " [656, 660],\n", + " [658, 659],\n", + " [660, 661],\n", + " [661, 662],\n", + " [661, 664],\n", + " [662, 663],\n", + " [662, 674],\n", + " [664, 665],\n", + " [665, 666],\n", + " [665, 667],\n", + " [666, 668],\n", + " [667, 669],\n", + " [667, 670],\n", + " [668, 669],\n", + " [669, 671],\n", + " [670, 672],\n", + " [671, 673],\n", + " [672, 673],\n", + " [674, 675],\n", + " [675, 676],\n", + " [675, 678],\n", + " [676, 677],\n", + " [676, 681],\n", + " [678, 679],\n", + " [678, 680],\n", + " [681, 682],\n", + " [682, 683],\n", + " [682, 685],\n", + " [683, 684],\n", + " [683, 688],\n", + " [685, 686],\n", + " [685, 687],\n", + " [688, 689],\n", + " [689, 690],\n", + " [689, 692],\n", + " [690, 691],\n", + " [690, 696],\n", + " [692, 693],\n", + " [693, 694],\n", + " [693, 695],\n", + " [696, 697],\n", + " [697, 698],\n", + " [698, 699],\n", + " [698, 700],\n", + " [700, 701],\n", + " [701, 702],\n", + " [701, 704],\n", + " [702, 703],\n", + " [702, 710],\n", + " [704, 705],\n", + " [705, 706],\n", + " [705, 707],\n", + " [706, 708],\n", + " [707, 709],\n", + " [708, 709],\n", + " [710, 711],\n", + " [711, 712],\n", + " [711, 714],\n", + " [712, 713],\n", + " [712, 716],\n", + " [714, 715],\n", + " [716, 717],\n", + " [717, 718],\n", + " [717, 720],\n", + " [718, 719],\n", + " [718, 725],\n", + " [720, 721],\n", + " [721, 722],\n", + " [722, 723],\n", + " [722, 724],\n", + " [725, 726],\n", + " [726, 727],\n", + " [726, 729],\n", + " [727, 728],\n", + " [727, 736],\n", + " [729, 730],\n", + " [730, 731],\n", + " [731, 732],\n", + " [732, 733],\n", + " [733, 734],\n", + " [733, 735],\n", + " [736, 737],\n", + " [737, 738],\n", + " [737, 740],\n", + " [738, 739],\n", + " [738, 747],\n", + " [740, 741],\n", + " [741, 742],\n", + " [742, 743],\n", + " [743, 744],\n", + " [744, 745],\n", + " [744, 746],\n", + " [747, 748],\n", + " [748, 749],\n", + " [748, 751],\n", + " [749, 750],\n", + " [749, 755],\n", + " [751, 752],\n", + " [752, 753],\n", + " [752, 754],\n", + " [755, 756],\n", + " [756, 757],\n", + " [756, 759],\n", + " [757, 758],\n", + " [757, 767],\n", + " [759, 760],\n", + " [760, 761],\n", + " [760, 762],\n", + " [761, 763],\n", + " [762, 764],\n", + " [763, 765],\n", + " [764, 765],\n", + " [765, 766],\n", + " [767, 768],\n", + " [768, 769],\n", + " [768, 771],\n", + " [769, 770],\n", + " [769, 779],\n", + " [771, 772],\n", + " [772, 773],\n", + " [772, 774],\n", + " [773, 775],\n", + " [774, 776],\n", + " [775, 777],\n", + " [776, 777],\n", + " [777, 778],\n", + " [779, 780],\n", + " [780, 781],\n", + " [781, 782],\n", + " [781, 783],\n", + " [783, 784],\n", + " [784, 785],\n", + " [784, 787],\n", + " [785, 786],\n", + " [785, 792],\n", + " [787, 788],\n", + " [788, 789],\n", + " [789, 790],\n", + " [789, 791],\n", + " [792, 793],\n", + " [793, 794],\n", + " [793, 796],\n", + " [794, 795],\n", + " [794, 799],\n", + " [796, 797],\n", + " [796, 798],\n", + " [799, 800],\n", + " [800, 801],\n", + " [800, 803],\n", + " [801, 802],\n", + " [801, 807],\n", + " [803, 804],\n", + " [804, 805],\n", + " [804, 806],\n", + " [807, 808],\n", + " [808, 809],\n", + " [808, 811],\n", + " [809, 810],\n", + " [809, 816],\n", + " [811, 812],\n", + " [812, 813],\n", + " [813, 814],\n", + " [813, 815],\n", + " [816, 817],\n", + " [817, 818],\n", + " [817, 820],\n", + " [818, 819],\n", + " [818, 824],\n", + " [820, 821],\n", + " [820, 822],\n", + " [821, 823],\n", + " [824, 825],\n", + " [825, 826],\n", + " [825, 828],\n", + " [826, 827],\n", + " [826, 831],\n", + " [828, 829],\n", + " [828, 830],\n", + " [831, 832],\n", + " [832, 833],\n", + " [832, 835],\n", + " [833, 834],\n", + " [833, 836],\n", + " [836, 837],\n", + " [837, 838],\n", + " [837, 840],\n", + " [838, 839],\n", + " [838, 845],\n", + " [840, 841],\n", + " [841, 842],\n", + " [842, 843],\n", + " [842, 844],\n", + " [845, 846],\n", + " [846, 847],\n", + " [846, 849],\n", + " [847, 848],\n", + " [847, 854],\n", + " [849, 850],\n", + " [850, 851],\n", + " [851, 852],\n", + " [852, 853],\n", + " [854, 855],\n", + " [855, 856],\n", + " [855, 858],\n", + " [856, 857],\n", + " [856, 861],\n", + " [858, 859],\n", + " [858, 860],\n", + " [861, 862],\n", + " [862, 863],\n", + " [862, 865],\n", + " [863, 864],\n", + " [863, 866],\n", + " [866, 867],\n", + " [867, 868],\n", + " [867, 870],\n", + " [868, 869],\n", + " [868, 875],\n", + " [870, 871],\n", + " [871, 872],\n", + " [872, 873],\n", + " [872, 874],\n", + " [875, 876],\n", + " [876, 877],\n", + " [876, 879],\n", + " [877, 878],\n", + " [877, 880],\n", + " [880, 881],\n", + " [881, 882],\n", + " [881, 884],\n", + " [882, 883],\n", + " [882, 886],\n", + " [884, 885],\n", + " [886, 887],\n", + " [887, 888],\n", + " [887, 890],\n", + " [888, 889],\n", + " [888, 891],\n", + " [891, 892],\n", + " [892, 893],\n", + " [892, 895],\n", + " [893, 894],\n", + " [893, 896],\n", + " [896, 897],\n", + " [897, 898],\n", + " [898, 899],\n", + " [898, 900],\n", + " [900, 901],\n", + " [901, 902],\n", + " [901, 904],\n", + " [902, 903],\n", + " [902, 911],\n", + " [904, 905],\n", + " [905, 906],\n", + " [905, 907],\n", + " [906, 908],\n", + " [907, 909],\n", + " [908, 910],\n", + " [909, 910],\n", + " [911, 912],\n", + " [912, 913],\n", + " [912, 915],\n", + " [913, 914],\n", + " [913, 921],\n", + " [915, 916],\n", + " [916, 917],\n", + " [916, 918],\n", + " [917, 919],\n", + " [918, 920],\n", + " [919, 920],\n", + " [921, 922],\n", + " [922, 923],\n", + " [922, 925],\n", + " [923, 924],\n", + " [923, 928],\n", + " [925, 926],\n", + " [925, 927],\n", + " [928, 929],\n", + " [929, 930],\n", + " [929, 932],\n", + " [930, 931],\n", + " [930, 936],\n", + " [932, 933],\n", + " [932, 934],\n", + " [933, 935],\n", + " [936, 937],\n", + " [937, 938],\n", + " [937, 940],\n", + " [938, 939],\n", + " [938, 943],\n", + " [940, 941],\n", + " [940, 942],\n", + " [943, 944],\n", + " [944, 945],\n", + " [944, 947],\n", + " [945, 946],\n", + " [945, 949],\n", + " [947, 948],\n", + " [949, 950],\n", + " [950, 951],\n", + " [950, 953],\n", + " [951, 952],\n", + " [951, 956],\n", + " [953, 954],\n", + " [953, 955],\n", + " [956, 957],\n", + " [957, 958],\n", + " [958, 959],\n", + " [958, 960],\n", + " [960, 961],\n", + " [961, 962],\n", + " [961, 964],\n", + " [962, 963],\n", + " [962, 969],\n", + " [964, 965],\n", + " [965, 966],\n", + " [966, 967],\n", + " [966, 968],\n", + " [969, 970],\n", + " [970, 971],\n", + " [970, 973],\n", + " [971, 972],\n", + " [971, 976],\n", + " [973, 974],\n", + " [973, 975],\n", + " [976, 977],\n", + " [977, 978],\n", + " ...]]" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "bb[0][:,1]" + "aa" ] }, { "cell_type": "code", "execution_count": null, - "id": "bb376390-1cd7-45ab-8e29-a039ef0a09dd", + "id": "0710eeba-ed65-4095-8a84-384f95263bae", "metadata": {}, "outputs": [], "source": []