{ "info": { "author": "David Alber", "author_email": "alber.david@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 2.7" ], "description": "# Geneagrapher\nGeneagrapher is a tool for extracting information from the\n[Mathematics Geanealogy\nProject](https://www.genealogy.math.ndsu.nodak.edu/) to form a\ngeneagraphy. The output is a dot file, which can be used by\n[Graphviz](https://graphviz.org/) to visualize the tree.\n\n## Basic Concepts\nThe input to the Geneagrapher is a set of starting nodes. If you want\nto build the ancestor graph of C. Felix Klein, then C. Felix Klein is\nthe starting node for that graph. Multiple starting nodes may be\nprovided (to produce the combined ancestor graph for an academic\ndepartment, for instance).\n\nEach individual stored in the Mathematics Genealogy Project's website\nhas a unique integer as an identifier, and this identifier is what is\npassed to the Geneagrapher for starting nodes. The identifier is\nembedded in the URL for records in the Mathematics Genealogy Project\nwebsite. For example, [Carl\nGau\u00df](https://genealogy.math.ndsu.nodak.edu/id.php?id=18231) is ID\n18231 and [Leonhard\nEuler](https://genealogy.math.ndsu.nodak.edu/id.php?id=38586) is ID\n38586.\n\nBefore running the Geneagrapher, go to the [Mathematics Genealogy\nProject](https://genealogy.math.ndsu.nodak.edu/) and gather the\nidentifiers of the starting nodes for the graph you have in mind.\n\n## Installation\nGeneagrapher is installed by pip. If your system does not have pip,\nsee the instructions\n[here](https://pip.pypa.io/en/stable/installing/).\n\nOnce pip is available on your system, install Geneagrapher with:\n```\npip install geneagrapher\n```\n\n## Usage\nAfter installing the Geneagrapher, running\n\n```\nggrapher --help\n```\n\nshould produce\n\n```\nusage: ggrapher [-h] [--version] [-f FILE] [-a] [-d] [--disable-cache]\n [--cache-file FILE] [-v]\n ID [ID ...]\n\nCreate a Graphviz \"dot\" file for a mathematics genealogy, where ID is a record\nidentifier from the Mathematics Genealogy Project. Multiple IDs may be passed.\n\npositional arguments:\n ID mathematician record ID\n\noptional arguments:\n -h, --help show this help message and exit\n --version show program's version number and exit\n -f FILE, --file FILE write output to FILE [default: stdout]\n -a, --with-ancestors retrieve ancestors of IDs and include in graph\n -d, --with-descendants\n retrieve descendants of IDs and include in graph\n --disable-cache do not store records in local cache\n --cache-file FILE write cache to FILE [default: geneacache]\n -v, --verbose list nodes being retrieved\n```\n\nExplanations of some of the options are given below, followed by\nexamples.\n\n**-f FILE, --file=FILE**\n\nBy default, the Geneagrapher writes the data it generates to standard\noutput. If you want the data written to file, you need to redirect the\noutput or use the `-f` or `--file` switch. When one of these switches\nis used, the data is saved in the file name provided.\n\n**-a, --with-ancestors**\n\nWhen one of these switches is provided to the Geneagrapher, an\nancestor graph is generated. An ancestor graph starts with the\nstarting nodes and the works up to their advisors, their advisors'\nadvisors, and so on.\n\n**-d, --with-descendants**\n\nThese switches instruct the Geneagrapher to extract information about\nthe descendants of the starting nodes (i.e., their advisees, their\nadvisees' advisees, and so on).\n\n## Processing the Dot File\nTo process the generated dot file,\n[Graphviz](https://www.graphviz.org/) is needed. Graphviz installs\nseveral programs for processing dot files. For the Geneagrapher, I use\nthe dot program. Let's look at an example.\n\nIf the Geneagrapher has generated a file named \"graph.dot\", we can do\n\n```\ndot -Tpng graph.dot > graph.png\n```\n\nThis command produces a PNG file containing the graph. That's really\nall there is to it. Almost.\n\nBy default, `dot` renders an image with 96dpi. This can look a little\nblurry at 100% on high-resolution displays. You might want to increase\nthe resolution. You can do this with the `-Gdpi` flag. For instance,\nto produce a PNG with 150dpi, you can do\n\n```\ndot -Tpng -Gdpi=150 graph.dot > graph.png\n```\n\n## Examples\n_Note: the Mathematics Genealogy Project has added new data since the\nexamples below were constructed, so if re-run, the results will look\ndifferent. The commands, however, all remain correct._\n\n### Single Node Ancestry: Carl Gauß\nTo produce the ancestry dot file for Carl Gau\u00df and save it in the file\n'gauss.dot', run the command\n\n```\nggrapher -f gauss.dot -a 18231\n```\n\n![Gauss math genealogy](https://github.com/davidalber/geneagrapher/raw/master/images/gauss-geneagraph.png)\n\n### Multiple Node Ancestry: Friedrich Bessel and Christian Gerling\nTo produce the combined ancestry dot file for Friedrich Bessel and\nChristian Gerling and save it in the file 'bessel_gerling.dot', run\nthe command\n\n```\nggrapher -f bessel_gerling.dot -a 18603 29642\n```\n\n![Bessel-Gerling math genealogy](https://github.com/davidalber/geneagrapher/raw/master/images/bessel-gerling-geneagraph.png)\n\n### Single Node Descendant Graph: Haskell Curry\nTo produce the descendant dot file for Haskell Curry and save it in\nthe file 'curry.dot', run the command\n\n```\nggrapher -f curry.dot -d 7398\n```\n\n![Curry math genealogy descendants](https://github.com/davidalber/geneagrapher/raw/master/images/curry-geneagraph.png)\n\nNote that descendant graphs often have a lot of \"fan out\".\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/davidalber/geneagrapher", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "geneagrapher", "package_url": "https://pypi.org/project/geneagrapher/", "platform": "", "project_url": "https://pypi.org/project/geneagrapher/", "project_urls": { "Homepage": "https://github.com/davidalber/geneagrapher" }, "release_url": "https://pypi.org/project/geneagrapher/1.0/", "requires_dist": [ "beautifulsoup4 (==4.6.3)", "lxml (==4.2.5)" ], "requires_python": "", "summary": "Mathematical genealogy grapher.", "version": "1.0" }, "last_serial": 4346607, "releases": { "1.0": [ { "comment_text": "", "digests": { "md5": "ffb7e5b6683e566dc4eb100a94a7097e", "sha256": "d21369442413737fed0238c36a68bc8e1b248822c22a2c81588070d8f7d1374a" }, "downloads": -1, "filename": "geneagrapher-1.0-py2-none-any.whl", "has_sig": false, "md5_digest": "ffb7e5b6683e566dc4eb100a94a7097e", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 23483, "upload_time": "2018-10-06T06:24:09", "url": "https://files.pythonhosted.org/packages/17/48/0532ca504762615b12fca4b7172c6611186309f8286fa28a47bbb851d069/geneagrapher-1.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "70e5e32a827a6ea237db0493b000b5a0", "sha256": "2bcda3666136fd2810fa23c844a94a3008b745d6b7865544305d74ea58e1a837" }, "downloads": -1, "filename": "geneagrapher-1.0.tar.gz", "has_sig": false, "md5_digest": "70e5e32a827a6ea237db0493b000b5a0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20499, "upload_time": "2018-10-06T06:24:11", "url": "https://files.pythonhosted.org/packages/7f/b5/1f9162aeae55ec102d84fdb9edce19480954d182560559f410d0f0bedb52/geneagrapher-1.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "ffb7e5b6683e566dc4eb100a94a7097e", "sha256": "d21369442413737fed0238c36a68bc8e1b248822c22a2c81588070d8f7d1374a" }, "downloads": -1, "filename": "geneagrapher-1.0-py2-none-any.whl", "has_sig": false, "md5_digest": "ffb7e5b6683e566dc4eb100a94a7097e", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 23483, "upload_time": "2018-10-06T06:24:09", "url": "https://files.pythonhosted.org/packages/17/48/0532ca504762615b12fca4b7172c6611186309f8286fa28a47bbb851d069/geneagrapher-1.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "70e5e32a827a6ea237db0493b000b5a0", "sha256": "2bcda3666136fd2810fa23c844a94a3008b745d6b7865544305d74ea58e1a837" }, "downloads": -1, "filename": "geneagrapher-1.0.tar.gz", "has_sig": false, "md5_digest": "70e5e32a827a6ea237db0493b000b5a0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20499, "upload_time": "2018-10-06T06:24:11", "url": "https://files.pythonhosted.org/packages/7f/b5/1f9162aeae55ec102d84fdb9edce19480954d182560559f410d0f0bedb52/geneagrapher-1.0.tar.gz" } ] }