diff --git a/examples/07 - Custom energy functions/R1_Data.pkl b/examples/07 - Custom energy functions/R1_Data.pkl index 339dadc..5c1f790 100644 Binary files a/examples/07 - Custom energy functions/R1_Data.pkl and b/examples/07 - Custom energy functions/R1_Data.pkl differ diff --git a/examples/09 - Bifunctional labels/DCNip2_drotlib.zip b/examples/09 - Bifunctional labels/DCNip2_drotlib.zip index d2334ae..6b9dc03 100644 Binary files a/examples/09 - Bifunctional labels/DCNip2_drotlib.zip and b/examples/09 - Bifunctional labels/DCNip2_drotlib.zip differ diff --git a/examples/09 - Bifunctional labels/DCNip4_drotlib.zip b/examples/09 - Bifunctional labels/DCNip4_drotlib.zip index 304b878..fc0ebf0 100644 Binary files a/examples/09 - Bifunctional labels/DCNip4_drotlib.zip and b/examples/09 - Bifunctional labels/DCNip4_drotlib.zip differ diff --git a/examples/11 - Arbitrary molecular labels/11 - Arbitrary molecular labels.ipynb b/examples/11 - Arbitrary molecular labels/11 - Arbitrary molecular labels.ipynb new file mode 100644 index 00000000..29c7ee8 --- /dev/null +++ b/examples/11 - Arbitrary molecular labels/11 - Arbitrary molecular labels.ipynb @@ -0,0 +1,203 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "ea38958b-9720-4bde-aad9-a7b62276e626", + "metadata": {}, + "source": [ + "# Arbitrary molecular labels" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "5cba2abd-e51e-43ed-bd42-e933aea01f7e", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\Program Files\\Python312\\Lib\\site-packages\\tqdm\\auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n", + " from .autonotebook import tqdm as notebook_tqdm\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import chilife as xl\n", + "plt.style.use('chiLife')" + ] + }, + { + "cell_type": "markdown", + "id": "06684563-70a7-4072-adba-3e2fbee00392", + "metadata": {}, + "source": [ + "In some cases, investigators may be interested in labeling not just proteins and nucleic acids, but arbitrary molecules like ligands, or lipids. In this example, we create a rotamer library for labeling cAMP with the 8-NBD fluorophre to demonstrate how this is done. \n", + "\n", + "The first thing we must do is create a PDB file. As a starting template, I have downloaded the [CMP ligand](https://www.rcsb.org/ligand/CMP) structure from the PDB. When creating a label for a common ligand, it is always preferable to start with a structure from the PDB since the atom names should be consistent between the rotamer library you are creating and the ligands you will be labeling with it. **If the backbone atom names are not consistent chiLife will not be able to label the ligand of interest since it won't know where to attach the label**. \n", + "\n", + "![CMP](CMP.png)\n", + "\n", + "A PDB file of the CMP ligand is included in this directory. Notably this CMP has no attached label, so we must add a label using pymol or your profered molecular editing program. For this example we will add an NBD fluorphore to the C8 carbon of the purine side chain. Included in this directory are two pdb files corresponding to the raw, pymol built structure (NCA.pdb) \n", + "\n", + "![NCA](NCA.png)\n", + "\n", + "\n", + "and the xTB optimized structure (NCA_opt.pdb). \n", + "\n", + "\n", + "![NCA_opt](NCA_opt.png)\n", + "\n", + "\n", + "In general all PDBs used for chiLife rotlibs should be optimized before creating a library.\n", + "\n", + "Now that we have structure we can create a chiLife rotlib. To do this, we will use the `create_rotlib` function, but for an arbitrty ligand we must specify the names of the atom we wish to use for alignment " + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "192d42e4-86da-40fc-ac37-3b1084cb240e", + "metadata": {}, + "outputs": [], + "source": [ + "aln_atoms = [\"C2'\", \"C1'\", \"O4'\"]\n", + "spin_atoms = \"O01 N02 N03 C03 C04 C05 C06 C07 C08\".split()\n", + "\n", + "xl.create_library('NCA', 'NCA_opt.pdb', site=0, aln_atoms=aln_atoms, spin_atoms=spin_atoms)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "d80a91c0-b2ae-4d54-93a6-bc85a125b14b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "********************************************************************************\n", + "* Rotamer Library Name: NCA *\n", + "********************************************************************************\n", + "Rotamer Library Name: NCA\n", + "File: E:\\07)Programming\\Python\\chiLife\\examples\\11 - Arbitrary molecular \n", + " labels\\NCA_rotlib.npz\n", + "Description: None\n", + "Comment: None\n", + "\n", + "Length of library: 1\n", + "Dihedral definitions: \n", + " [\"C2'\" \"C1'\" 'N9' 'C4']\n", + " ['N9' 'C8' 'S01' 'C01']\n", + " ['C8' 'S01' 'C01' 'C02']\n", + " ['S01' 'C01' 'C02' 'N01']\n", + " ['C01' 'C02' 'N01' 'C07']\n", + " ['C02' 'N01' 'C07' 'C06']\n", + " ['C05' 'C04' 'N04' 'O03']\n", + "Spin atoms: ['O01' 'N02' 'N03' 'C03' 'C04' 'C05' 'C06' 'C07' 'C08']\n", + "Number of atoms: C: 18, O: 9, P: 1, N: 9, S: 1, H: 18\n", + "Number of heavy atoms: 38\n", + "Reference: None\n", + "chiLife rotlib format: 1.5\n", + "********************************************************************************\n" + ] + } + ], + "source": [ + "xl.rotlib_info('NCA')" + ] + }, + { + "cell_type": "markdown", + "id": "ad160dfc-c277-44f8-b03e-b95710509b41", + "metadata": {}, + "source": [ + "![labled](CMP501NCA.png)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "0f08f771-0091-4735-9046-659db4f7a037", + "metadata": {}, + "outputs": [], + "source": [ + "prot = xl.fetch('7tj5')\n", + "\n", + "CMPs = prot.select_atoms('resname CMP')\n", + "labels = []\n", + "for res in CMPs.residues:\n", + " SL = xl.SpinLabel('NCA', res.resnum, prot, chain=res.segid, sample=5000)\n", + " labels.append(SL)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "c7cd6175-4a09-48d1-a26a-699e8f43e0e9", + "metadata": {}, + "outputs": [], + "source": [ + "r = np.linspace(15, 100, 256)\n", + "P = xl.distance_distribution(*labels, r)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "62b6ad6a-3331-446b-97d2-95b3e3bad305", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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YoRmzJjBeQrZJz/5SS1dulTr16+XJL311lt66aWX9NnPflYS5yqK0jknr776qqqrq3X66af3vGbevHkqKChQQ0ODr+NJ60ZFcZRMJnX11Vdr1qxZmjJliiRp+/btKikpUXV1dZ/XjhkzRtu3b3cwyvz18MMP649//KPeeOONQz7GeYqGTZs26Z577tG3v/1tfe9739Mbb7yhK6+8UiUlJVq4cGHPuRgzZkyfz+M8he+GG25QU1OTjj/+eBUWFqq7u1s333yzFixYIEmcqwhK55xs375ddXV1fT5eVFSkmpoa389bzoaBK664QqtXr9ZLL73keig4yPvvv6+rrrpKS5Ys0bBhw1wPBwNIJpM6/fTT9aMf/UiSdOqpp2r16tW69957tXDhQsejQ2+PPPKIHnzwQT300EM66aST9Oabb+rqq6/W+PHjOVdIS05OE3zrW9/Sk08+qT/84Q868sgje54fO3asOjo61NjY2Of1O3bs0NixY0MeZf5asWKFdu7cqdNOO01FRUUqKirSsmXLdNddd6moqEhjxozhPEXAuHHjdOKJJ/Z57oQTTtDWrVslqedcHLzKg/MUvmuvvVY33HCDvvKVr2jq1Kn62te+pmuuuUa33HKLJM5VFKVzTsaOHaudO3f2+XhXV5f27Nnj+3nLqTDgeZ6+9a1v6bHHHtNzzz2n+vr6Ph+fPn26iouLtXTp0p7n1q1bp61bt2rmzJlhDzdvzZ07V6tWrdKbb77Z8+f000/XggULeh5zntybNWvWIUtz169frwkTJkiS6uvrNXbs2D7nqampSQ0NDZynkB04cEAFBX1/nRcWFiqZTEriXEVROudk5syZamxs1IoVK3pe89xzzymZTGrGjBn+DsjXdkTHvvnNb3ojRozwnn/+eW/btm09fw4cONDzmm984xve0Ucf7T333HPe8uXLvZkzZ3ozZ850OGp4ntdnNYHncZ6i4PXXX/eKioq8m2++2duwYYP34IMPeuXl5d4DDzzQ85pbb73Vq66u9p544gnv7bff9i688EKvvr7ea21tdTjy/LNw4ULviCOO8J588klv8+bN3qOPPuqNGjXKu+6663pew7kKX3Nzs7dy5Upv5cqVniTv3/7t37yVK1d67733nud56Z2Tz3zmM96pp57qNTQ0eC+99JI3adIkb/78+b6PNafCgKR+/yxevLjnNa2trd7f//3feyNHjvTKy8u9iy66yNu2bZu7QcPzvEPDAOcpGn772996U6ZM8UpLS73jjz/e+9nPftbn48lk0rvpppu8MWPGeKWlpd7cuXO9devWORpt/mpqavKuuuoq7+ijj/aGDRvmHXvssd6NN97otbe397yGcxW+P/zhD/1ekxYuXOh5XnrnZPfu3d78+fO9iooKr6qqyrvsssu85uZm38fKLYwBAMhzOdUzAAAAMkcYAAAgzxEGAADIc4QBAADyHGEAAIA8RxgAACDPEQYAAMhzhAEAAPIcYQAAgDxHGAAAIM8RBgA489Of/lRHHnmk5s6de8itWgGEh3sTAHCiublZkydP1qOPPqqHH35YpaWluu2221wPC8hLVAYAR+bMmaOrr776kMe5aPfu3aqrq9OWLVt6nistLVV1dbUmTpyoI444QjU1NYd83le+8hXdcccdIY4UyE9FrgcAQHr00UdVXFyc1mvnzJmjU045RXfeeWewg/LRzTffrAsvvFDHHHNMz3MlJSW67LLLNGbMGNXU1OiDDz445PO+//3v66yzztJf//Vfa8SIESGOGMgvVAaACKipqVFlZaXrYQTiwIED+q//+i8tWrTokI+98sor+od/+Ae1tLRo/fr1h3x8ypQpOu644/TAAw+EMVQgbxEGgBC0tLTo61//uioqKjRu3LhDSt8HTxP86le/0tSpU1VWVqba2lrNmzdPLS0t+qu/+istW7ZMP/nJT5RIJJRIJHpK77/73e80e/ZsVVdXq7a2Vp/73Of07rvv9vkeV155pa677jrV1NRo7Nix+ud//uc+40gmk7r99ts1ceJElZaW6uijj9bNN9/c5+O33HKL6uvrVVZWpmnTpulXv/rVoP/2p59+WqWlpTrzzDP7PL9r1y499dRT+uY3v6nPf/7zWrx4cb+ff8EFF+jhhx8e9HsAyA5hAAjBtddeq2XLlumJJ57Qs88+q+eff15//OMf+33ttm3bNH/+fF1++eVau3atnn/+eV188cXyPE8/+clPNHPmTP3N3/yNtm3bpm3btumoo46SZALHt7/9bS1fvlxLly5VQUGBLrroIiWTyZ6v/d///d8aPny4GhoadPvtt+tf//VftWTJkp6Pf/e739Wtt96qm266SWvWrNFDDz2kMWPG9Hz8lltu0f333697771X77zzjq655hpdeumlWrZs2YD/9hdffFHTp08/5PkHHnhA06ZN0+TJk3XppZfqwQcfVFdX1yGv+8QnPqHXX39d7e3th/8PDWBoPACBam5u9kpKSrxHHnmk57ndu3d7ZWVl3lVXXeV5nuedffbZPY9XrFjhSfK2bNnS79fr/drB7Nq1y5PkrVq1qufzZs+e3ec1Z5xxhnf99dd7nud5TU1NXmlpqXfffff1+/Xa2tq88vJy75VXXunz/KJFi7z58+cPOI4LL7zQu/zyyw95furUqd6dd97peZ7ndXZ2eqNGjfIef/zxQ1731ltvDfrfA0D2qAwAAXv33XfV0dGhGTNm9DxXU1OjyZMn9/v6adOmae7cuZo6daouueQS3Xfffdq7d+9hv8+GDRs0f/58HXvssaqqqupp1tu6dWvPa04++eQ+nzNu3Lie9f1r165Ve3u75s6d2+/X37hxow4cOKBzzjlHFRUVPX/uv//+PtMRB2ttbdWwYcP6PLdixQqtWbNG8+fPlyQVFRXpy1/+cr9TBWVlZZJM7wGAYLCaAIiYwsJCLVmyRK+88oqeffZZ3X333brxxhvV0NCg+vr6AT/vggsu0IQJE3Tfffdp/PjxSiaTmjJlijo6Onpec/CKhUQi0TONYC+6A9m/f78k6amnntIRRxzR52OlpaUDft6oUaMOCTOLFy9Wd3e3xo8f3/Oc53kqLCzUrl27NHr06J7n9+zZI0l9ngPgLyoDQMCOO+44FRcXq6Ghoee5vXv39ts9byUSCc2aNUv/8i//opUrV6qkpESPPfaYJLMkr7u7u8/rd+/erXXr1un73/++5s6dqxNOOCGtakJvkyZNUllZmZYuXdrvx0888USVlpZq69atmjhxYp8/tm+hP6eeeqrWrFnT8/f29nY99NBDuuOOO/Tmm2/2/HnrrbdUX19/yMqB1atX68gjj9SoUaMy+vcASB+VASBgFRUVWrRoka699lrV1taqrq5ON954owoK+s/iDQ0NWrp0qc4991zV1dWpoaFBu3bt0gknnCBJOuaYY9TQ0KAtW7aooqJCNTU1GjlypGpra/Wzn/1M48aN09atW3XDDTdkNM5hw4bp+uuv13XXXaeSkhLNmjVLu3bt0jvvvKNFixapsrJS3/nOd3TNNdcomUxq9uzZ2rdvn15++WVVVVVp4cKF/X7d8847T9/97ne1d+9ejRw5Uk888YRaWlq0aNGiQ/YO+OIXv6jFixfrmmuu6XnuxRdf1LnnnpvRvwVAZggDQAh+/OMfa//+/brgggtUWVmpf/zHf9S+ffv6fW1VVZVeeOEF3XnnnWpqatKECRN0xx136LOf/awk6Tvf+Y4WLlyoE088Ua2trdq8ebOOOeYYPfzww7ryyis1ZcoUTZ48WXfddZfmzJmT0ThvuukmFRUV6Qc/+IE++ugjjRs3Tt/4xjd6Pv7DH/5Qo0eP1i233KJNmzapurpap512mr73ve8N+DWnTp2q0047TY888oj+7u/+TosXL9a8efP63UToC1/4gn70ox9pxYoVmj59utra2vT444/rd7/7XUb/DgCZ4d4EAAL31FNP6dprr9Xq1asHrIj055577tFjjz2mZ599NsDRAaAyACBw559/vjZs2KAPP/xw0P6CgxUXF+vuu+8OcGQAJCoDAADkPVYTAACQ5wgDAADkOcIAAAB5jjAAAECeIwwAAJDnCAMAAOQ5wgAAAHmOMAAAQJ4jDAAAkOf+P3twXd04aGZzAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots()\n", + "ax.plot(r, P)\n", + "ax.set_xlabel(r'distance ($\\rm\\AA$)')\n", + "ax.set_yticks([])\n", + "for spine in ax.spines:\n", + " if spine=='bottom':\n", + " continue\n", + " ax.spines[spine].set_visible(False)\n", + "\n", + "plt.show()\n", + "xl.save(*labels, prot)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": " Python 3.12", + "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.12.3" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/examples/11 - Arbitrary molecular labels/12 - Arbitrary molecular labels.ipynb b/examples/11 - Arbitrary molecular labels/12 - Arbitrary molecular labels.ipynb deleted file mode 100644 index f449fa6..00000000 --- a/examples/11 - Arbitrary molecular labels/12 - Arbitrary molecular labels.ipynb +++ /dev/null @@ -1,178 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "ea38958b-9720-4bde-aad9-a7b62276e626", - "metadata": {}, - "source": [ - "# Arbitrary molecular labels" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "5cba2abd-e51e-43ed-bd42-e933aea01f7e", - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "import chilife as xl\n", - "plt.style.use('chiLife')" - ] - }, - { - "cell_type": "markdown", - "id": "06684563-70a7-4072-adba-3e2fbee00392", - "metadata": {}, - "source": [ - "In some cases, investigators may be interested in labeling not just proteins and nucleic acids, but arbitrary molecules like ligands, or lipids. In this example, we create a rotamer library for labeling cAMP with the 8-NBD fluorophre to demonstrate how this is done. \n", - "\n", - "The first thing we must do is create a PDB file. As a starting template, I have downloaded the [CMP ligand](https://www.rcsb.org/ligand/CMP) structure from the PDB. When creating a label for a common ligand, it is always preferable to start with a structure from the PDB since the atom names should be consistent between the rotamer library you are creating and the ligands you will be labeling with it. **If the backbone atom names are not consistent chiLife will not be able to label the ligand of interest since it won't know where to attach the label**. \n", - "\n", - "![CMP](CMP.png)\n", - "\n", - "A PDB file of the CMP ligand is included in this directory. Notably this CMP has no attached label, so we must add a label using pymol or your profered molecular editing program. For this example we will add an NBD fluorphore to the C8 carbon of the purine side chain. Included in this directory are two pdb files corresponding to the raw, pymol built structure (NCA.pdb) \n", - "\n", - "![NCA](NCA.png)\n", - "\n", - "\n", - "and the xTB optimized structure (NCA_opt.pdb). \n", - "\n", - "\n", - "![NCA_opt](NCA_opt.png)\n", - "\n", - "\n", - "In general all PDBs used for chiLife rotlibs should be optimized before creating a library.\n", - "\n", - "Now that we have structure we can create a chiLife rotlib. To do this, we will use the `create_rotlib` function, but for an arbitrty ligand we must specify the names of the atom we wish to use for alignment " - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "192d42e4-86da-40fc-ac37-3b1084cb240e", - "metadata": {}, - "outputs": [], - "source": [ - "aln_atoms = [\"C2'\", \"C1'\", \"O4'\"]\n", - "spin_atoms = \"O01 N02 N03 C03 C04 C05 C06 C07 C08\".split()\n", - "\n", - "xl.create_library('NCA', 'NCA_opt.pdb', site=0, aln_atoms=aln_atoms, spin_atoms=spin_atoms)" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "d80a91c0-b2ae-4d54-93a6-bc85a125b14b", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "********************************************************************************\n", - "* Rotamer Library Name: NCA *\n", - "********************************************************************************\n", - "Rotamer Library Name: NCA\n", - "File: E:\\07)Programming\\Python\\chiLife\\examples\\11 - Arbitrary molecular \n", - " lables\\NCA_rotlib.npz\n", - "Description: None\n", - "Comment: None\n", - "\n", - "Length of library: 1\n", - "Dihedral definitions: \n", - " [\"O4'\" \"C1'\" 'N9' 'C4']\n", - " ['N9' 'C8' 'S01' 'C01']\n", - " ['C8' 'S01' 'C01' 'C02']\n", - " ['S01' 'C01' 'C02' 'N01']\n", - " ['C01' 'C02' 'N01' 'C07']\n", - " ['C02' 'N01' 'C07' 'C06']\n", - " ['C05' 'C04' 'N04' 'O03']\n", - "Spin atoms: ['O01' 'N02' 'N03' 'C03' 'C04' 'C05' 'C06' 'C07' 'C08']\n", - "Number of atoms: P: 1, O: 9, C: 18, N: 9, S: 1, H: 18\n", - "Number of heavy atoms: 38\n", - "Reference: None\n", - "chiLife rotlib format: 1.4\n", - "********************************************************************************\n" - ] - } - ], - "source": [ - "xl.rotlib_info('NCA')" - ] - }, - { - "cell_type": "markdown", - "id": "ad160dfc-c277-44f8-b03e-b95710509b41", - "metadata": {}, - "source": [ - "![labled](CMP501NCA.png)" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "c7cd6175-4a09-48d1-a26a-699e8f43e0e9", - "metadata": {}, - "outputs": [], - "source": [ - "r = np.linspace(15, 100, 256)\n", - "P = xl.distance_distribution(*labels, r)" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "62b6ad6a-3331-446b-97d2-95b3e3bad305", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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p3/8x39ULpcLeygYBecpHjhP8cB5ioconKeiGggBAEBypaYyAAAAhkcYAAAg5QgDAACkHGEAAICUS1QYuPbaa/WpT31KjY2NmjJliv7sz/5MmzZtGvScrq4uXXjhhWptbVVDQ4O+8pWvaMeOHSGNGJJ03XXXKZPJ6JJLLhn4HOcpGj788EOdf/75am1tVX19vRYuXKgXX3xx4OuO4+iHP/yhpk+frvr6ei1btkybN28OccTp1N/fr6uvvlpz5sxRfX295s2bpx/96Ecq7A/nXAXvmWee0VlnnaUZM2Yok8nooYceGvT1Ys7Jnj17dN5556mpqUnNzc1auXKlDhw44PlYExUG1qxZowsvvFC//e1vtWrVKvX29ur000/XwYMHB55z6aWX6pFHHtF9992nNWvW6KOPPtI555wT4qjTbd26dfrZz36m4447btDnOU/h27t3r04++WTV1NTo8ccf18aNG3XjjTdq4sSJA8+54YYbdPPNN+u2227T2rVrNX78eH3xi19UV1dXiCNPn+uvv1633nqr/u3f/k1vvPGGrr/+et1www265ZZbBp7DuQrewYMHdfzxx+vf//3fh/16MefkvPPO0+uvv65Vq1bp0Ucf1TPPPKO//du/9X6wToJ9/PHHjiRnzZo1juM4zr59+5yamhrnvvvuG3jOG2+84UhyXnjhhbCGmVrt7e3OkUce6axatco59dRTnYsvvthxHM5TVFxxxRXOKaecMuLX8/m8M23aNOcnP/nJwOf27dvn5HI55z//8z+DGCL+4Mwzz3QuuOCCQZ8755xznPPOO89xHM5VFEhyHnzwwYH/LuacbNy40ZHkrFu3buA5jz/+uJPJZJwPP/zQ0/ElqjJwqP3790uSWlpaJEnr169Xb2+vli1bNvCco48+WkcccYReeOGFUMaYZhdeeKHOPPPMQedD4jxFxa9+9SstXrxYX/3qVzVlyhQtWrRIt99++8DX3333XW3fvn3QeZowYYJOOukkzlPAPvvZz2r16tV68803JUmvvvqqnn32WZ1xxhmSOFdRVMw5eeGFF9Tc3KzFixcPPGfZsmWqqqrS2rVrPR1PUTcqiqN8Pq9LLrlEJ598shYsWCBJ2r59u2pra9Xc3DzouVOnTtX27dtDGGV63XPPPXrppZe0bt26IV/jPEXDO++8o1tvvVXf+c539P3vf1/r1q3TRRddpNraWq1YsWLgXEydOnXQ93GegnfllVeqra1NRx99tKqrq9Xf369rrrlG5513niRxriKomHOyfft2TZkyZdDXs9msWlpaPD9viQ0DF154oTZs2KBnn3027KHgEO+//74uvvhirVq1SnV1dWEPByPI5/NavHixfvzjH0uSFi1apA0bNui2227TihUrQh4dCt1777266667dPfdd+sTn/iEXnnlFV1yySWaMWMG5wpFSeQ0wbe//W09+uijeuqpp3T44YcPfH7atGnq6enRvn37Bj1/x44dmjZtWsCjTK/169fr448/1gknnKBsNqtsNqs1a9bo5ptvVjab1dSpUzlPETB9+nQde+yxgz53zDHHaOvWrZI0cC4OXeXBeQreZZddpiuvvFLnnnuuFi5cqL/8y7/UpZdeqmuvvVYS5yqKijkn06ZN08cffzzo6319fdqzZ4/n5y1RYcBxHH3729/Wgw8+qCeffFJz5swZ9PUTTzxRNTU1Wr169cDnNm3apK1bt2rJkiVBDze1li5dqtdee02vvPLKwMfixYt13nnnDTzmPIXv5JNPHrI0980339SsWbMkSXPmzNG0adMGnae2tjatXbuW8xSwjo4OVVUN/nVeXV2tfD4viXMVRcWckyVLlmjfvn1av379wHOefPJJ5fN5nXTSSd4OyNN2xJB985vfdCZMmOA8/fTTzrZt2wY+Ojo6Bp7zjW98wzniiCOcJ5980nnxxRedJUuWOEuWLAlx1HAcZ9BqAsfhPEXB7373OyebzTrXXHONs3nzZueuu+5yxo0b59x5550Dz7nuuuuc5uZm5+GHH3Z+//vfO2effbYzZ84cp7OzM8SRp8+KFSucww47zHn00Uedd99913nggQecSZMmOZdffvnAczhXwWtvb3defvll5+WXX3YkOf/6r//qvPzyy857773nOE5x5+RLX/qSs2jRImft2rXOs88+6xx55JHO8uXLPR9rosKApGE/7rjjjoHndHZ2Ot/61reciRMnOuPGjXO+/OUvO9u2bQtv0HAcZ2gY4DxFwyOPPOIsWLDAyeVyztFHH+38/Oc/H/T1fD7vXH311c7UqVOdXC7nLF261Nm0aVNIo02vtrY25+KLL3aOOOIIp66uzpk7d65z1VVXOd3d3QPP4VwF76mnnhr2mrRixQrHcYo7J7t373aWL1/uNDQ0OE1NTc7Xv/51p7293fOxcgtjAABSLlE9AwAAoHSEAQAAUo4wAABAyhEGAABIOcIAAAApRxgAACDlCAMAAKQcYQAAgJQjDAAAkHKEAQAAUo4wACA0P/vZz3T44Ydr6dKlQ27VCiA43JsAQCja29t11FFH6YEHHtA999yjXC6n66+/PuxhAalEZQAIyWmnnaZLLrlkyOMk2r17t6ZMmaItW7YMfC6Xy6m5uVnz58/XYYcdppaWliHfd+655+rGG28McKRAOmXDHgAA6YEHHlBNTU1Rzz3ttNP0yU9+UjfddJO/g/LQNddco7PPPluzZ88e+Fxtba2+/vWva+rUqWppadEHH3ww5Pt+8IMf6HOf+5z++q//WhMmTAhwxEC6UBkAIqClpUWNjY1hD8MXHR0d+o//+A+tXLlyyNeef/55/f3f/70OHjyoN998c8jXFyxYoHnz5unOO+8MYqhAahEGgAAcPHhQX/va19TQ0KDp06cPKX0fOk1w//33a+HChaqvr1dra6uWLVumgwcP6q/+6q+0Zs0a/fSnP1Umk1Emkxkovf/617/WKaecoubmZrW2tupP/uRP9Pbbbw96jYsuukiXX365WlpaNG3aNP3TP/3ToHHk83ndcMMNmj9/vnK5nI444ghdc801g75+7bXXas6cOaqvr9fxxx+v+++/f9Q/+3//938rl8vpM5/5zKDP79y5U4899pi++c1v6k//9E91xx13DPv9Z511lu65555RXwNAZQgDQAAuu+wyrVmzRg8//LCeeOIJPf3003rppZeGfe62bdu0fPlyXXDBBXrjjTf09NNP65xzzpHjOPrpT3+qJUuW6G/+5m+0bds2bdu2TTNnzpRkAsd3vvMdvfjii1q9erWqqqr05S9/Wfl8fuBn/+IXv9D48eO1du1a3XDDDfqXf/kXrVq1auDr3/ve93Tdddfp6quv1saNG3X33Xdr6tSpA1+/9tpr9ctf/lK33XabXn/9dV166aU6//zztWbNmhH/7L/5zW904oknDvn8nXfeqeOPP15HHXWUzj//fN11113q6+sb8rxPf/rT+t3vfqfu7u6x/6IBlMcB4Kv29nantrbWuffeewc+t3v3bqe+vt65+OKLHcdxnFNPPXXg8fr16x1JzpYtW4b9eYXPHc3OnTsdSc5rr7028H2nnHLKoOd86lOfcq644grHcRynra3NyeVyzu233z7sz+vq6nLGjRvnPP/884M+v3LlSmf58uUjjuPss892LrjggiGfX7hwoXPTTTc5juM4vb29zqRJk5yHHnpoyPNeffXVUf8+AFSOygDgs7fffls9PT066aSTBj7X0tKio446atjnH3/88Vq6dKkWLlyor371q7r99tu1d+/eMV9n8+bNWr58uebOnaumpqaBZr2tW7cOPOe4444b9D3Tp08fWN//xhtvqLu7W0uXLh3257/11lvq6OjQF77wBTU0NAx8/PKXvxw0HXGozs5O1dXVDfrc+vXrtXHjRi1fvlySlM1m9Rd/8RfDThXU19dLMr0HAPzBagIgYqqrq7Vq1So9//zzeuKJJ3TLLbfoqquu0tq1azVnzpwRv++ss87SrFmzdPvtt2vGjBnK5/NasGCBenp6Bp5z6IqFTCYzMI1gL7ojOXDggCTpscce02GHHTboa7lcbsTvmzRp0pAwc8cdd6i/v18zZswY+JzjOKqurtbOnTs1efLkgc/v2bNHkgZ9DoC3qAwAPps3b55qamq0du3agc/t3bt32O55K5PJ6OSTT9Y///M/6+WXX1Ztba0efPBBSWZJXn9//6Dn7969W5s2bdIPfvADLV26VMccc0xR1YRCRx55pOrr67V69ephv37ssccql8tp69atmj9//qAP27cwnEWLFmnjxo0D/93d3a27775bN954o1555ZWBj1dffVVz5swZsnJgw4YNOvzwwzVp0qSS/jwAikdlAPBZQ0ODVq5cqcsuu0ytra2aMmWKrrrqKlVVDZ/F165dq9WrV+v000/XlClTtHbtWu3cuVPHHHOMJGn27Nlau3attmzZooaGBrW0tGjixIlqbW3Vz3/+c02fPl1bt27VlVdeWdI46+rqdMUVV+jyyy9XbW2tTj75ZO3cuVOvv/66Vq5cqcbGRn33u9/VpZdeqnw+r1NOOUX79+/Xc889p6amJq1YsWLYn/vFL35R3/ve97R3715NnDhRDz/8sA4ePKiVK1cO2Tvgz//8z3XHHXfo0ksvHfjcb37zG51++ukl/VkAlIYwAATgJz/5iQ4cOKCzzjpLjY2N+od/+Aft379/2Oc2NTXpmWee0U033aS2tjbNmjVLN954o8444wxJ0ne/+12tWLFCxx57rDo7O/Xuu+9q9uzZuueee3TRRRdpwYIFOuqoo3TzzTfrtNNOK2mcV199tbLZrH74wx/qo48+0vTp0/WNb3xj4Os/+tGPNHnyZF177bV655131NzcrBNOOEHf//73R/yZCxcu1AknnKB7771Xf/d3f6c77rhDy5YtG3YToa985Sv68Y9/rPXr1+vEE09UV1eXHnroIf36178u6c8BoDTcmwCA7x577DFddtll2rBhw4gVkeHceuutevDBB/XEE0/4ODoAVAYA+O7MM8/U5s2b9eGHH47aX3Compoa3XLLLT6ODIBEZQAAgNRjNQEAAClHGAAAIOUIAwAApBxhAACAlCMMAACQcoQBAABSjjAAAEDKEQYAAEg5wgAAACn3/wF//Ms4fDAp5QAAAABJRU5ErkJggg==", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "fig, ax = plt.subplots()\n", - "ax.plot(r, P)\n", - "ax.set_xlabel(r'distance ($\\rm\\AA$)')\n", - "ax.set_yticks([])\n", - "for spine in ax.spines:\n", - " if spine=='bottom':\n", - " continue\n", - " ax.spines[spine].set_visible(False)\n", - "\n", - "plt.show()\n", - "xl.save(*labels, prot)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Py312", - "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.12.1" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/src/chilife/__init__.py b/src/chilife/__init__.py index 17e2e1e..a9c466d 100644 --- a/src/chilife/__init__.py +++ b/src/chilife/__init__.py @@ -26,4 +26,4 @@ # SpinLabel = SpinLabel.SpinLabel # dSpinLabel = dSpinLabel.dSpinLabel -__version__ = '1.1.5' +__version__ = '1.1.6'