{ "info": { "author": "Sam Ireland", "author_email": "mail@samireland.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Science/Research", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Scientific/Engineering :: Chemistry" ], "description": "atomium\n=======\n\n|travis| |coveralls| |pypi| |version| |commit| |downloads|\n\n.. |travis| image:: https://api.travis-ci.org/samirelanduk/atomium.svg?branch=1.0.2\n :target: https://travis-ci.org/samirelanduk/atomium/\n\n.. |coveralls| image:: https://coveralls.io/repos/github/samirelanduk/atomium/badge.svg?branch=1.0.2\n :target: https://coveralls.io/github/samirelanduk/atomium/\n\n.. |pypi| image:: https://img.shields.io/pypi/pyversions/atomium.svg\n :target: https://pypi.org/project/atomium/\n\n.. |version| image:: https://img.shields.io/pypi/v/atomium.svg\n :target: https://pypi.org/project/atomium/\n\n.. |commit| image:: https://img.shields.io/github/last-commit/samirelanduk/atomium/1.0.2.svg\n :target: https://github.com/samirelanduk/atomium/tree/1.0.2/\n\n.. |downloads| image:: https://img.shields.io/pypi/dm/atomium.svg\n :target: https://pypi.org/project/atomium/\n\n\natomium is a molecular modeller and file parser, capable of reading from and\nwriting to .pdb, .cif and .mmtf files.\n\nExample\n-------\n\n >>> import atomium\n >>> pdb = atomium.fetch(\"5HVD\")\n >>> pdb.model\n \n >>> pdb.model.chain(\"A\")\n \n\n\n\nInstalling\n----------\n\npip\n~~~\n\natomium can be installed using pip:\n\n``$ pip3 install atomium``\n\natomium is written for Python 3, and does not support Python 2.\n\nIf you get permission errors, try using ``sudo``:\n\n``$ sudo pip3 install atomium``\n\n\nDevelopment\n~~~~~~~~~~~\n\nThe repository for atomium, containing the most recent iteration, can be\nfound `here `_. To clone the\natomium repository directly from there, use:\n\n``$ git clone git://github.com/samirelanduk/atomium.git``\n\n\nRequirements\n~~~~~~~~~~~~\n\natomium requires `requests `_ for fetching\nstructures from the RCSB, `paramiko `_ for\nfetching structures over SSH,\n`msgpack `_ for parsing .mmtf files,\nand `valerius `_ for dealing with sequences.\n\n\nTesting\n~~~~~~~\n\nTo test a local version of atomium, cd to the atomium directory and run:\n\n``$ python -m unittest discover tests``\n\nYou can opt to only run unit tests or integration tests:\n\n``$ python -m unittest discover tests.unit``\n``$ python -m unittest discover tests.integration``\n\nYou can run the 'big test' to get a random 1000 structures, parse them all, and\nreport any problems:\n\n``$ python tests/big.py``\n\nFinally, to perform speed profiles you can run:\n\n``$ python tests/time/time.py``\n\n...which creates various profiles that SnakeViz can visualise.\n\n\n\nOverview\n--------\n\natomium is a Python library for opening and saving .pdb, .cif and .mmtf files,\nand presenting and manipulating the information contained within.\n\n\nLoading Data\n~~~~~~~~~~~~\n\nWhile you can use atomium to create models from scratch to build an entirely\n*de novo* structure, in practice you would generally use it to load molecular\ndata from an existing file...\n\n\t>>> import atomium\n\t>>> pdb1 = atomium.open('../1LOL.pdb')\n\t>>> mmtf1 = atomium.open('/structures/glucose.mmtf')\n\t>>> cif1 = atomium.open('/structures/1XDA.cif')\n\t>>> pdb2 = atomium.fetch('5HVD.pdb')\n\t>>> cif2 = atomium.fetch('5HVD')\n\nIn that latter case, you don't need the file to be saved locally - it will just\ngo and grab the PDB with that code from the RCSB.\n\natomium will use the file extension you provide to decide how to parse it. If\nthere isn't one, or it doesn't recognise the extension, it will peek at the\nfile contents and try and guess whether it should be interpreted as .pdb, .cif\nor .mmtf.\n\n\nUsing Data\n~~~~~~~~~~\n\nOnce you've got your ``File`` object, what can you do with it?\n\nAnnotation\n##########\n\nThere is meta information contained within the ``File`` object:\n\n >>> pdb1.title\n 'CRYSTAL STRUCTURE OF OROTIDINE MONOPHOSPHATE DECARBOXYLASE COMPLEX WITH XMP'\n >>> pdb1.deposition_date\n datetime.date(2002, 5, 6)\n >>> pdb1.keywords\n ['TIM BARREL', 'LYASE']\n >>> pdb1.classification\n 'LYASE'\n >>> pdb1.source_organism\n 'METHANOTHERMOBACTER THERMAUTOTROPHICUS STR. DELTA H'\n >>> pdb1.resolution\n 1.9\n >>> pdb1.rvalue\n 0.193\n >>> pdb1.rfree\n 0.229\n\natomium doesn't currently parse *every* bit of information from these\nfiles, but there is more than those shown above. See\n`the full API docs `_ for more details. In particular, you can\naccess the processed intermediate MMCIF dictionary to get *any* attribute of\nthese structures.\n\nModels and Assembly\n###################\n\nAll .pdb files contain one or more models - little universes containing a\nmolecular scene.\n\n >>> pdb1.model\n \n >>> pdb1.models\n (,)\n\nMost just contain one - it's generally those that come from NMR experiments\nwhich contain multiple models.\n\nThis model contains the 'asymmetric unit' - this is one or more protein\n(usually) chains arranged in space, which may not be how the molecule arranges\nitself in real life. It might just be how they arranged themselves in the\nexperiment. To create the 'real thing' from the asymmetric unit, you use\n**biological assemblies.**\n\nMost .pdb files contain one or more biological assemblies - instructions for how\nto create a more realistic structure from the chains present, which in atomium\nare accessed using ``File.assemblies``.\n\nIn practice, what you need to know is that you can create a new model - not the\none already there containing the asymmetric unit - as follows...\n\n >>> pdb3 = atomium.fetch('1XDA')\n >>> pdb3.model\n \n >>> pdb3.generate_assembly(1)\n \n >>> pdb3.generate_assembly(10)\n \n\nHere you load a .pdb with multiple possible assemblies, have a quick look at\nthe asymmetric unit with 1,842 atoms, and then generate two of its possible\nbiological assemblies by passing in their IDs.\n\n\nModel Contents\n##############\n\nThe basic structures within a model are chains, residues, ligands, and atoms.\n\n >>> pdb1.model.chains()\n {, }\n >>> pdb1.model.chain('B')\n \n >>> pdb1.model.residues(name='TYR')\n {, , , , , , , }\n >>> pdb1.model.residues(name__regex='TYR|PRO')\n {, , , , , , , , , , , , , <\n Residue PRO (B.1180)>, , , , , , , , , , , , }\n >>> pdb1.model.chain('B').residue('B.1206')\n \n >>> pdb1.model.chain('B').residue('B.1206').helix\n True\n >>> pdb1.model.ligands()\n {, , , }\n >>> pdb1.model.ligand(name='BU2').atoms()\n {, , , , , }\n >>> pdb1.model.ligand(name='BU2').atoms(mass__gt=12)\n {, , , , , }\n >>> pdb1.model.ligand(name='BU2').atoms(mass__gt=14)\n {, }\n\nThe examples above demonstrate atomium's selection language. In the case of the\nmolecules - ``Model``, ``Chain``, ``Residue`` and\n``Ligand`` - you can pass in an ``id`` or ``name``, or search by regex\npattern with ``id__regex`` or ``name__regex``.\n\nThese structures have an even more powerful syntax too - you can pass in *any*\nproperty such as ``charge=1``, any comparitor of a property such as\n``mass__lt=100``, or any regex of a property such as ``name__regex='[^C]'``.\n\nFor pairwise comparisons, structures also have the\n``AtomStructure.pairwise_atoms`` generator which will yield all\nunique atom pairs in the structure. These can obviously get very big indeed - a\n5000 atom PDB file would have about 12 million unique pairs.\n\nStructures can be moved around and otherwise compared with each other...\n\n >>> pdb1.model.ligand(id='B:2002').mass\n 351.1022\n >>> pdb1.model.ligand(id='B.2002').formula\n Counter({'C': 10, 'O': 9, 'N': 4, 'P': 1})\n >>> pdb1.model.ligand(id='B:2002').nearby_atoms(2.8)\n {, , }\n >>> pdb1.model.ligand(id='B.2002').nearby_atoms(2.8, name='OD1')\n {}\n >>> pdb1.model.ligand(id='B.2002').nearby_residues(2.8)\n {}\n >>> pdb1.model.ligand(id='B.2002').nearby_structures(2.8, waters=True)\n {, , }\n >>> import math\n >>> pdb1.model.ligand(id='B.2002').rotate(math.pi / 2, 'x')\n >>> pdb1.model.ligand(id='B.2002').translate(10, 10, 15)\n >>> pdb1.model.ligand(id='B.2002').center_of_mass\n (-9.886734282781484, -42.558415679537184, 77.33400578435568)\n >>> pdb1.model.ligand(id='B.2002').radius_of_gyration\n 3.6633506511540825\n >>> pdb1.model.ligand(id='B.2002').rmsd_with(pdb1.model.ligand(id='A.2001'))\n 0.133255572356\n\nHere we look at one of the ligands, identify its mass and molecular formula,\nlook at what atoms are within 2.8 Angstroms of it, and what residues are within\nthat same distance, rotate it and translate it through space, see where its new\ncenter of mass is, and then finally get its RMSD with the other similar ligand\nin the model.\n\nAny operation which involves identifying nearby structures or atoms can be sped\nup - dramatically in the case of very large structures - by calling\n``Model.optimise_distances`` on the ``Model`` first. This\nprevents atomium from having to compare every atom with every other atom every\ntime a proximity check is made.\n\nThe ``Atom`` objects themselves have their own useful properties.\n\n >>> pdb1.model.atom(97)\n \n >>> pdb1.model.atom(97).mass\n 12.0107\n >>> pdb1.model.atom(97).anisotropy\n [0, 0, 0, 0, 0, 0]\n >>> pdb1.model.atom(97).bvalue\n 24.87\n >>> pdb1.model.atom(97).location\n (-12.739, 31.201, 43.016)\n >>> pdb1.model.atom(97).distance_to(pdb1.model.atom(1))\n 26.18289982030257\n >>> pdb1.model.atom(97).nearby_atoms(2)\n {, , }\n >>> pdb1.model.atom(97).is_metal\n False\n >>> pdb1.model.atom(97).structure\n \n >>> pdb1.model.atom(97).chain\n \n\nChains are a bit different from other structures in that they are iterable,\nindexable, and return their residues as a tuple, not a set...\n\n >>> pdb1.model.atom(97).chain\n \n >>> pdb1.model.chain('A')\n \n >>> len(pdb1.model.chain('A'))\n 204\n >>> pdb1.model.chain('A')[10]\n \n >>> pdb1.model.chain('A').residues()[:5]\n (, , , , )\n >>> pdb1.model.chain('A').sequence\n 'LRSRRVDVMDVMNRLILAMDLMNRDDALRVTGEVREYIDTVKIGYPLVLSEGMDIIAEFRKRFGCRIIADFKVAD\n IPETNEKICRATFKAGADAIIVHGFPGADSVRACLNVAEEMGREVFLLTEMSHPGAEMFIQGAADEIARMGVDLGV\n KNYVGPSTRPERLSRLREIIGQDSFLISPGVGAQGGDPGETLRFADAIIVGRSIYLADNPAAAAAGIIESIKDLLI\n PE'\n\nThe sequence is\nthe 'real' sequence that exists in nature. Some of them will be\nmissing from the model for practical reasons.\n\nResidues can generate name information based on their three letter code, and are\naware of their immediate neighbors.\n\n >>> pdb1.model.residue('A.100')\n \n >>> pdb1.model.residue('A.100').name\n 'PHE'\n >>> pdb1.model.residue('A.100').code\n 'F'\n >>> pdb1.model.residue('A.100').full_name\n 'phenylalanine'\n >>> pdb1.model.residue('A.100').next\n \n >>> pdb1.model.residue('A.100').previous\n \n\nSaving Data\n~~~~~~~~~~~\n\nA model can be saved to file using:\n\n >>> model.save(\"new.cif\")\n >>> model.save(\"new.pdb\")\n\nAny structure can be saved in this way, so you can save chains or molecules to\ntheir own seperate files if you so wish.\n\n\n >>> model.chain(\"A\").save(\"chainA.pdb\")\n >>> model.chain(\"B\").save(\"chainB.cif\")\n >>> model.ligand(name=\"XMP\").save(\"ligand.mmtf\")\n\nNote that if the model you are saving is one from a biological assembly, it will\nlikely have many duplicated IDs, so saving to file may create unexpected\nresults.\n\n\nChangelog\n---------\n\nRelease 1.0.2\n~~~~~~~~~~~~~\n\n`1 October 2019`\n\n* Added distance optimiser for proximity checks.\n* Improved test coverage.\n\n\nRelease 1.0.1\n~~~~~~~~~~~~~\n\n`26 September 2019`\n\n* Added a pdb2json script for converting local structure files to JSON.\n* Improved speed comparison checks.\n\n\nRelease 1.0.0\n~~~~~~~~~~~~~\n\n`23 June 2019`\n\n* Saving now issues warning if the stucture has duplicate IDs.\n* Missing residues parsed for all three file types.\n* Crystallographic information now parsed.\n* Refactor of atomic structures.\n* Refactor of .mmtf parsing.\n* Structure copying now retains all properties.\n* Fixed bug in parsing .cif expression systems.\n* Full names of ligands and modified residues now parsed.\n* Secondary structure information parsed and available now.\n* Atoms now have covalent radius property for calculating bond cutoffs.\n* .pdb parsing can now handle heavy water (DOD).\n* General speed improvements.\n\n\nRelease 0.12.2\n~~~~~~~~~~~~~~\n\n`4 February 2019`\n\n* Angle between superimposed atoms now possible.\n* Fixed source speices lookup in .cif files.\n* Fixed bug relating to embedded quotes in .cif files.\n\n\nRelease 0.12.1\n~~~~~~~~~~~~~~\n\n`13 January 2019`\n\n* Fixed assembly parsing bug in small number of .cif files.\n\n\nRelease 0.12.0\n~~~~~~~~~~~~~~\n\n`2 January 2019`\n\n* Refactored parse utilities to improve speed.\n* Added support for .mmtf files.\n* Added file writing for all three file types (.pdb, .cif, .mmtf).\n* Made .cif the default file type.\n* General library restructuring.\n\n\nRelease 0.11.1\n~~~~~~~~~~~~~~\n\n`13 September 2018`\n\n* Fixed bug pertaining to residues with ID 0.\n* Fixed bug pertaining to SEQRES parsing when chain ID is numeric.\n* Changed format of residue IDs to include colon.\n* Considerable speed improvements in .mmcif parsing.\n\n\nRelease 0.11.0\n~~~~~~~~~~~~~~\n\n`22 August 2018`\n\n* Added .mmcif parsing.\n* Changed how parsing in general is done under the hood.\n* Added atom angle calculation.\n* Fixed bug where modified residues were treated as ligands if authors used HETATM records.\n\n\nRelease 0.10.2\n~~~~~~~~~~~~~~\n\n`29 July 2018`\n\n* Added function for getting PDBs over SSH.\n* Fixed biological assembly parsing bug.\n* Fixed chain copying of sequence bug.\n\n\nRelease 0.10.1\n~~~~~~~~~~~~~~\n\n`25 June 2018`\n\n* Added function for returning best biological assembly.\n* Fixed bug with sorting None energy assemblies.\n* Fixed bug pertaining to excessive atom duplication when creating assembly.\n\n\nRelease 0.10.0\n~~~~~~~~~~~~~~\n\n`22 June 2018`\n\n* Parsing of .pdb keywords.\n* Parsing of atom anisotropy.\n* Parsing of .pdb sequence information.\n* More R-factor information.\n* Biological assembly parsing and generation.\n* More powerful transformations rather than just simple rotation.\n* Backend simplifications.\n* Powerful new atom querying syntax.\n\n\nRelease 0.9.1\n~~~~~~~~~~~~~\n\n`17 May 2018`\n\n* Added Residue one-letter codes.\n* Fixed stray print statement.\n\n\nRelease 0.9.0\n~~~~~~~~~~~~~\n\n`10 April 2018`\n\n* Turned many methods into properties.\n* Added full residue name generation.\n* Made bind site detection more picky.\n* Added coordinate rounding to deal with floating point rounding errors.\n* Atomic structures now 'copy'able.\n* Refactored atom querying.\n* Added grid generation.\n* Implemented Kabsch superposition/rotation.\n* Implemented RMSD comparison.\n* Created Complex class (for later).\n\n\nRelease 0.8.0\n~~~~~~~~~~~~~\n\n`2 December 2017`\n\n* Added option to get water residues in binding sites.\n* Added extra PDB meta information parsing, such as:\n\n\t* Classification\n\t* Experimental Technique\n\t* Source Organism\n\t* Expression Organism\n\t* R-factor\n\n\nRelease 0.7.0\n~~~~~~~~~~~~~\n\n`2 November 2017`\n\n* PDBs with multiple occupancy can now be parsed correctly.\n* Added pairwise atom generator.\n* PDB parser now extracts resolution.\n* Further speed increased to PDB parser.\n* Miscellaneous bug fixes.\n* Implemented Continuous Integration.\n\n\nRelease 0.6.0\n~~~~~~~~~~~~~\n\n`3 October 2017`\n\n* Now allows for fetching and opening of PDB data dictionaries.\n* Added parsing/saving of HEADER and TITLE records in PDB files.\n* Added ability to exclude elements from atom search.\n* Added ability to get nearby atoms in a model.\n* Added bind site identification.\n* Fixed chain length bottleneck in PDB model saving.\n* Overhauled PDB parsing by replacing classes with built in Python types.\n* Fixed bug where numerical residue names were interpreted as integers.\n* Changed atoms so that they can allow negative B factors.\n* Added loading of .xyz data dictionaries.\n* Miscellaneous speed increases.\n\nRelease 0.5.0\n~~~~~~~~~~~~~\n\n`16 September 2017`\n\n* Added atom temperature factors.\n* Added bond vector production.\n* Added parse time tests and reduced parse time by over a half.\n* Changed way atoms are stored in structures to make ID lookup orders of \\\n magnitude faster.\n* Made IDs immutable.\n* Added multiple model parsing and saving.\n* Added option to fetch PDBs from PDBe rather than RCSB.\n\n\nRelease 0.4.0\n~~~~~~~~~~~~~\n\n`26 August 2017`\n\n* Added PDB parsing.\n* Added PDB saving.\n* Gave atoms ability to get specific bond with other atom.\n* Added bond angle calculation.\n* Added ability to filter out water molecules.\n\nRelease 0.3.0\n~~~~~~~~~~~~~\n\n`11 August 2017`\n\n* Added classes for Molecules, Chains, Residues, and their interfaces.\n* Added charges to atoms and structures.\n* Add ability to create AtomicStructures from AtomicStructures.\n\n\nRelease 0.2.0\n~~~~~~~~~~~~~\n\n`14 June 2017`\n\n* Made all Atomic Structures savable.\n* Added Atom IDs and uniqueness constraints.\n* Added Atom Bonds.\n\n\nRelease 0.1.1\n~~~~~~~~~~~~~\n\n`1 June 2017`\n\n* Fixed setup.py\n* Minor typos\n\n\nRelease 0.1.0\n~~~~~~~~~~~~~\n\n`1 June 2017`\n\n* Added basic Model and Atom classes.\n* Added .xyz parsing.\n\n\n", "description_content_type": "text/x-rst", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://atomium.samireland.com", "keywords": "chemistry bioinformatics proteins biochemistry molecules PDB MMCIF CIF MMTF", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "atomium", "package_url": "https://pypi.org/project/atomium/", "platform": "", "project_url": "https://pypi.org/project/atomium/", "project_urls": { "Homepage": "https://atomium.samireland.com" }, "release_url": "https://pypi.org/project/atomium/1.0.2/", "requires_dist": [ "numpy", "requests", "rmsd", "paramiko", "msgpack", "valerius" ], "requires_python": "!=2.*, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*", "summary": "A molecular modeller and file parser.", "version": "1.0.2" }, "last_serial": 5912559, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "9d824c8f61996f5ee99978f8208396af", "sha256": "bba68507e59bc5a08f418061b9ccb87691b53ea10533d7700aff641e10e84af0" }, "downloads": -1, "filename": "atomium-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "9d824c8f61996f5ee99978f8208396af", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 2360, "upload_time": "2017-06-01T08:09:35", "url": "https://files.pythonhosted.org/packages/0f/7b/8572b609e420313cb3aa29e20124f35df1f6fd9a71e9cb1e33653829db8a/atomium-0.1.0-py3-none-any.whl" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "98a9c3b704b178c76bb39ad84d22f83c", "sha256": "c37fec0ec4de2b2721905f2b24b8256ef0b73e6fe5461f2c1cc3b16c2546d152" }, "downloads": -1, "filename": "atomium-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "98a9c3b704b178c76bb39ad84d22f83c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10697, "upload_time": "2017-06-01T08:19:14", "url": "https://files.pythonhosted.org/packages/2b/30/b55db93c696820f4daf7c3153a2a5a91f230e2645d3a39fbce36530b144d/atomium-0.1.1-py3-none-any.whl" } ], "0.10.0": [ { "comment_text": "", "digests": { "md5": "fa8291dae79aebbebb8fdb9ced2e3239", "sha256": "20d5fdb88c8311c3d066bbf3cc5d3b272851a1fe9f0ffd14988a9316eba4cd25" }, "downloads": -1, "filename": "atomium-0.10.0-py3-none-any.whl", "has_sig": false, "md5_digest": "fa8291dae79aebbebb8fdb9ced2e3239", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 96439, "upload_time": "2018-06-22T09:39:19", "url": "https://files.pythonhosted.org/packages/63/61/6f5ea34023aef06738176af6717e03bf31e0ac849837939542ec9f92b01f/atomium-0.10.0-py3-none-any.whl" } ], "0.10.1": [ { "comment_text": "", "digests": { "md5": "a04be1085f1172daf4877296127cdfa3", "sha256": "cbad3846b40024b7bc327a9df65abb7ce7332de5a29ebb464a9b784847869d05" }, "downloads": -1, "filename": "atomium-0.10.1-py3-none-any.whl", "has_sig": false, "md5_digest": "a04be1085f1172daf4877296127cdfa3", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 97449, "upload_time": "2018-06-25T15:10:43", "url": "https://files.pythonhosted.org/packages/3a/fa/f2f47b1109df2b5ecebc7c489ad7718a0ed4829e2c2492b255a8384575ad/atomium-0.10.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b2120ded92e22a5ee0bf25eccd03f18f", "sha256": "6e9a49ffd3cad2a889911c2b4f52f5f6bd39b3c924f29beef99fd9f173924c34" }, "downloads": -1, "filename": "atomium-0.10.1.tar.gz", "has_sig": false, "md5_digest": "b2120ded92e22a5ee0bf25eccd03f18f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33029, "upload_time": "2018-06-25T15:10:42", "url": "https://files.pythonhosted.org/packages/52/ce/021882b9af2c86f848f3469c74486c0e68b9408d860b8119583307849bb2/atomium-0.10.1.tar.gz" } ], "0.10.2": [ { "comment_text": "", "digests": { "md5": "1c14a511aa59e93e678d0ac8bd7a62b1", "sha256": "0ca0cbef93d197ee4c77325753ce5e8683493d51eda1c592e01b3ca84f9da867" }, "downloads": -1, "filename": "atomium-0.10.2-py3-none-any.whl", "has_sig": false, "md5_digest": "1c14a511aa59e93e678d0ac8bd7a62b1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 97043, "upload_time": "2018-07-29T10:14:34", "url": "https://files.pythonhosted.org/packages/35/7f/60d9bdbf2481284dfd0abe2eefed08d25c760cf89b89ccc0528657ee6a24/atomium-0.10.2-py3-none-any.whl" } ], "0.11.0": [ { "comment_text": "", "digests": { "md5": "8d0bcd2355597534f64860ce3be91c43", "sha256": "540e87f49b35e004275ec9038a4c514786709ab87425c8c614dab1dc7aa45d57" }, "downloads": -1, "filename": "atomium-0.11.0-py3-none-any.whl", "has_sig": false, "md5_digest": "8d0bcd2355597534f64860ce3be91c43", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 109204, "upload_time": "2018-08-22T17:46:09", "url": "https://files.pythonhosted.org/packages/de/04/1b0f6f91cce2e0964f43d06c2f2198309fd3c7cdeb7f9fa558c0d8825d58/atomium-0.11.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2b35080779fe79daa3765966d6d2fc1d", "sha256": "f81acbdc400692a3059b6ca83e3ca480e90c54e43d438a53ab1b4d89b748caec" }, "downloads": -1, "filename": "atomium-0.11.0.tar.gz", "has_sig": false, "md5_digest": "2b35080779fe79daa3765966d6d2fc1d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34797, "upload_time": "2018-08-22T17:46:07", "url": "https://files.pythonhosted.org/packages/12/bd/6c762d871f8963df8671afec6c129201136f6c59e880769f6cc7a57c016b/atomium-0.11.0.tar.gz" } ], "0.11.1": [ { "comment_text": "", "digests": { "md5": "ca5b0cffd00bbeb38e3152f1fecbcc7c", "sha256": "54ef5a3f0de5d50b138292fe67c99db3bdf35f88e0bbf9d196f8411930c75175" }, "downloads": -1, "filename": "atomium-0.11.1-py3-none-any.whl", "has_sig": false, "md5_digest": "ca5b0cffd00bbeb38e3152f1fecbcc7c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 109303, "upload_time": "2018-09-13T11:10:21", "url": "https://files.pythonhosted.org/packages/98/a5/421121bd9796b1afd5d9abd9e0dfa5985397fdf7a0e378cf2afa5784660d/atomium-0.11.1-py3-none-any.whl" } ], "0.12.0": [ { "comment_text": "", "digests": { "md5": "f7a00f4da9658d7f23cece08e9c83b2b", "sha256": "2c273d2b3970a3a24d15b7fc998ddb669412d8086302ec84359e9de4b80b50c6" }, "downloads": -1, "filename": "atomium-0.12.0-py3-none-any.whl", "has_sig": false, "md5_digest": "f7a00f4da9658d7f23cece08e9c83b2b", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 34623, "upload_time": "2019-01-02T16:01:42", "url": "https://files.pythonhosted.org/packages/ba/6c/99e9d766a2bd443073cedbe5a142d8d5e9e3a324d3bfa05e52ea893bd462/atomium-0.12.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "78830ee0f5c586736b8b2a34c8278645", "sha256": "237df12a1a3ace7517ff060ae1f04a72b1a59ac0b619def3b4a9a51a73ca8e92" }, "downloads": -1, "filename": "atomium-0.12.0.tar.gz", "has_sig": false, "md5_digest": "78830ee0f5c586736b8b2a34c8278645", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 36580, "upload_time": "2019-01-02T16:01:40", "url": "https://files.pythonhosted.org/packages/f2/f4/8691b10702cb4d8c62e329435da0eed1b45f55b246787989befb58e73697/atomium-0.12.0.tar.gz" } ], "0.12.1": [ { "comment_text": "", "digests": { "md5": "0666d8f91663d96e43283e568285e458", "sha256": "8e22f77acb590777e5ff361e2e4a156b77001700c1ee2569a152888ae06a5a87" }, "downloads": -1, "filename": "atomium-0.12.1-py3-none-any.whl", "has_sig": false, "md5_digest": "0666d8f91663d96e43283e568285e458", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 34628, "upload_time": "2019-01-13T12:34:46", "url": "https://files.pythonhosted.org/packages/d5/7e/f3666b83e05ec309908f3f937570db5e723a52a2bf8faa574413526a7130/atomium-0.12.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f52bfe192c57f0dd5e7681eb9ac603fb", "sha256": "451c940d1eb5ae7339d96092abf6671a1a2e3b147b02d39b702fb5c0a948e61b" }, "downloads": -1, "filename": "atomium-0.12.1.tar.gz", "has_sig": false, "md5_digest": "f52bfe192c57f0dd5e7681eb9ac603fb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 36569, "upload_time": "2019-01-13T12:34:44", "url": "https://files.pythonhosted.org/packages/e3/e4/08a40688b0b3add9b2bb5b011ac67ac696324cf3819db866b39dffd2e40b/atomium-0.12.1.tar.gz" } ], "0.12.2": [ { "comment_text": "", "digests": { "md5": "14a9cd56b9e3a9c1a2225775f223d6eb", "sha256": "17eed1e593607253e8a53198e5396e355fff5a0067171287d226226a600067b9" }, "downloads": -1, "filename": "atomium-0.12.2-py3-none-any.whl", "has_sig": false, "md5_digest": "14a9cd56b9e3a9c1a2225775f223d6eb", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 34777, "upload_time": "2019-02-04T13:26:45", "url": "https://files.pythonhosted.org/packages/d1/ca/5cb2db1496d84fea1fc16d35718f10be42f613f99a6baf6ba62b82766b03/atomium-0.12.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "994412e47e3e07a27e56dc64c94fb1e2", "sha256": "97a1b22cbad18205ef5db7314a2d0b2e39e60ab5f3bd952a7836b67dc54844f4" }, "downloads": -1, "filename": "atomium-0.12.2.tar.gz", "has_sig": false, "md5_digest": "994412e47e3e07a27e56dc64c94fb1e2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 36835, "upload_time": "2019-02-04T13:26:43", "url": "https://files.pythonhosted.org/packages/e3/6a/05ca66d767a7915a1fcf574b7d97f354337a881c4b1c8f47fbc15058e980/atomium-0.12.2.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "1004c269042c9c9bef992f6cbeec0ef1", "sha256": "7d5144651d79862c39a99b5f31e6fbfa526213b7a820be1b66198d50b5a11a9d" }, "downloads": -1, "filename": "atomium-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "1004c269042c9c9bef992f6cbeec0ef1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 12591, "upload_time": "2017-06-14T05:04:44", "url": "https://files.pythonhosted.org/packages/eb/a1/bd348b7eca14dffd6de3ff133795dec76e2efe33820b8ff64c9d54df4328/atomium-0.2.0-py3-none-any.whl" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "cb3d4427b97d04d88e852d083c7d5301", "sha256": "f111a1978690bd3b5bb6b4142424a53787bfc046e0b34aea58451611009ed983" }, "downloads": -1, "filename": "atomium-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "cb3d4427b97d04d88e852d083c7d5301", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 46710, "upload_time": "2017-08-11T11:36:36", "url": "https://files.pythonhosted.org/packages/4f/0f/04590b5314a7a25de6a7e7f00f00a6c2a49fd6f96019bd0ac7a23a539636/atomium-0.3.0-py3-none-any.whl" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "b945c52745f691833ab081fe2f91bbdd", "sha256": "237c55b363d805140e835c86311547c7c22d17a9a4037a6359a5e20bf93deab6" }, "downloads": -1, "filename": "atomium-0.4.0-py3-none-any.whl", "has_sig": false, "md5_digest": "b945c52745f691833ab081fe2f91bbdd", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 60767, "upload_time": "2017-08-26T12:52:48", "url": "https://files.pythonhosted.org/packages/4c/cd/fe8b60387517c325722221b906d88cefaf264486762ca47c0b83da60c338/atomium-0.4.0-py3-none-any.whl" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "0b2307770d5f92f876201538629c94dd", "sha256": "b7b368c7e916d40a45e7b023b0e15fde87c5c93ecab1f371bc9e40eaeb957442" }, "downloads": -1, "filename": "atomium-0.5.0-py3-none-any.whl", "has_sig": false, "md5_digest": "0b2307770d5f92f876201538629c94dd", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 63572, "upload_time": "2017-09-16T11:04:28", "url": "https://files.pythonhosted.org/packages/0d/ac/915c336ca4962fc05acccb820239ab3b843335677cfca3a964f0d3f215fb/atomium-0.5.0-py3-none-any.whl" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "84adcd564dac5b1f41c9f75a059ab15e", "sha256": "f1d374f7117b28d10cb08ed6278d7c8cceeec165a5af9aba7014c603dcd2d4bc" }, "downloads": -1, "filename": "atomium-0.6.0-py3-none-any.whl", "has_sig": false, "md5_digest": "84adcd564dac5b1f41c9f75a059ab15e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 74418, "upload_time": "2017-10-03T13:02:14", "url": "https://files.pythonhosted.org/packages/56/9b/ac8cb26c7d3d35fd51f993cef3f20a61d7d789f74ac5668d371105d8ddb4/atomium-0.6.0-py3-none-any.whl" } ], "0.7.0": [ { "comment_text": "", "digests": { "md5": "2f3e87840a0f3cca1793c24a3b826651", "sha256": "01f6b555ea4d2b71ac6e289477f2dc9506b1584ee29cb9feb0dae1d8f8c57098" }, "downloads": -1, "filename": "atomium-0.7.0-py3-none-any.whl", "has_sig": false, "md5_digest": "2f3e87840a0f3cca1793c24a3b826651", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 75163, "upload_time": "2017-11-02T13:45:25", "url": "https://files.pythonhosted.org/packages/30/e9/164db5a4f7c5df522d90359496fc83d45100f01b55c149b9136299b78eca/atomium-0.7.0-py3-none-any.whl" } ], "0.8.0": [ { "comment_text": "", "digests": { "md5": "23a7ec559b90360681799a047f63ab50", "sha256": "d3d8feee6d3bf03c02add55f81e19028f0bb8f6457d2fbe7699d60e1e7cfb355" }, "downloads": -1, "filename": "atomium-0.8.0-py3-none-any.whl", "has_sig": false, "md5_digest": "23a7ec559b90360681799a047f63ab50", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 76703, "upload_time": "2017-12-02T17:29:17", "url": "https://files.pythonhosted.org/packages/a9/99/80254ebffb5da4071af683e0387b9404227d7b7ea3d26612bd36e46914c4/atomium-0.8.0-py3-none-any.whl" } ], "0.9.0": [ { "comment_text": "", "digests": { "md5": "87e3620c55627c3a97787a848253d0d8", "sha256": "372ce3b580c2bcbd0726a925e6b841e5d4b70ba5ef41d7d8d3770ae0eb7222bf" }, "downloads": -1, "filename": "atomium-0.9.0.tar.gz", "has_sig": false, "md5_digest": "87e3620c55627c3a97787a848253d0d8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29644, "upload_time": "2018-04-10T15:21:17", "url": "https://files.pythonhosted.org/packages/36/20/61163a132a1466352edbade1c2781717244d553bc14c27c537708580a2df/atomium-0.9.0.tar.gz" } ], "0.9.1": [ { "comment_text": "", "digests": { "md5": "1ccb8a479b9068e6d31eb6d848dfa4e2", "sha256": "0d1380553593bdb5657f92fd0e1b5e162058330b9d7b09c424f36370c853624b" }, "downloads": -1, "filename": "atomium-0.9.1.tar.gz", "has_sig": false, "md5_digest": "1ccb8a479b9068e6d31eb6d848dfa4e2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29476, "upload_time": "2018-05-17T21:19:50", "url": "https://files.pythonhosted.org/packages/c7/f9/f94e57244039e3e3a895f42eddb66e5f1ceea5672dde27ad2564a09ede20/atomium-0.9.1.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "ff4bb9ba6321f3de49023c4bcdc283f2", "sha256": "4cdf81b15236950a8262375e9cb0c67a008bfd211cf22743e40b570de5d18f92" }, "downloads": -1, "filename": "atomium-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "ff4bb9ba6321f3de49023c4bcdc283f2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "!=2.*, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*", "size": 46668, "upload_time": "2019-06-23T14:53:06", "url": "https://files.pythonhosted.org/packages/e7/83/8329d9c250aa6ca19fd12bedef980d999de0e6ca8666c5516e9073f47765/atomium-1.0.0-py3-none-any.whl" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "d6fbb012b293d185ac87dbb38dd41f6c", "sha256": "67375476e547dd67061b05aa75845ee0e91f9dea1e9eaae18efc784df0a72b20" }, "downloads": -1, "filename": "atomium-1.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "d6fbb012b293d185ac87dbb38dd41f6c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "!=2.*, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*", "size": 46672, "upload_time": "2019-09-26T10:26:39", "url": "https://files.pythonhosted.org/packages/2a/7b/1081d6c7e6e96aa43ae5b7cd66e9ef3e6e66f06b9d587dfc0750512ff825/atomium-1.0.1-py3-none-any.whl" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "db59aa303aa1fa94e126ad5e6372947c", "sha256": "614a27037522a9ae33d5c1cb91de5b0b18e7e929036bc4fdf1e0fea70fd770de" }, "downloads": -1, "filename": "atomium-1.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "db59aa303aa1fa94e126ad5e6372947c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "!=2.*, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*", "size": 47379, "upload_time": "2019-10-01T14:14:16", "url": "https://files.pythonhosted.org/packages/a8/64/ee8ad0630ad00b2ce2a1d942ec251178a9d3911bdcb89e4e558b1e77154f/atomium-1.0.2-py3-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "db59aa303aa1fa94e126ad5e6372947c", "sha256": "614a27037522a9ae33d5c1cb91de5b0b18e7e929036bc4fdf1e0fea70fd770de" }, "downloads": -1, "filename": "atomium-1.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "db59aa303aa1fa94e126ad5e6372947c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "!=2.*, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*", "size": 47379, "upload_time": "2019-10-01T14:14:16", "url": "https://files.pythonhosted.org/packages/a8/64/ee8ad0630ad00b2ce2a1d942ec251178a9d3911bdcb89e4e558b1e77154f/atomium-1.0.2-py3-none-any.whl" } ] }