Package: romus
RomusRomus is a passion project of mine. I often have to deal with coding up simple conjugate models and gibbs samplers at work. This is useful for the variety of experimentation asks my data science team supports. I also use these models to help educate more junior data scientists about Bayesian statistics. This package is meant to serve a dual purpose as a tool for simple modeling and as an example for educational purposes.I'm open to all questions, feedback, commentary, and suggestions as long as they are constructive and polite! Discussions should always come in the form of git issues.AuthorsJames Montgomery-Initial Work-jamesmontgomery.usLicenseThis project is licensed under the MIT License - see theLICENSE.mdfile for detailsAbout the NameWhy call the package Romus? Romulus and Remus were a famous pair of twins whose myth is tied to the founding of Rome. Conjugate distributions (or distributions closed under sampling) are pairs of distributions who have a special relationship that is sometimes useful in machine learning and statistics. Therefore I thought it would be fun to name my package after a famous pair of twins!Getting StartedThese instructions will get you a copy of the project up and running on your local machine for development and testing purposes.InstallingFor a local installation, first git clone this repository. Then follow these instructions:pip install .To install frompypi:pip install -U romusTestingTesting is an important part of creating maintainable, production grade code. Below are instructions for running unit and style tests as well as installing the necessary testing packages. Tests have intentionally been separated from the installable pypi package for a variety of reasons.Make sure you have the required testing packages:pip install -r requirements_test.txtRunning the unit testsWe use the pytest framework for unit testing.pytest -vvl -s --cov romus --disable-pytest-warningsRunning the style testsHaving neat and legible code is important. Having documentation is also important. We use pylint as our style guide framework. Many of our naming conventions follow directly from the literary sources they come from. This makes it easier to read the mathematical equations and see how they translate into the code. This sometimes forces us to break pep8 conventions for naming.pylint romus --disable=invalid-nameContributor's GuideHere are some basic guidelines for contributing.Branch StrategyThis repository doesn't use a complicated branching strategy. Simply create a feature branch off of master. When the feature is ready to be integrated with master, submit a pull request. A pull request will re quire at least one peer review and approval from the repository owner.Style GuidePlease stick to pep8 standards when for your code. Use numpy style docstrings.Test RequirementsPlease use pytest as your testing suite. You code should have >= 80% coverage.Updating the DocsUpdating the documentation is simple. First, let auto-docs check for updates to the package structure.cd docs
sphinx-apidoc -o . ../romus/Finally, rebuild the html files.make htmlAcknowledgmentsA big thank you to Keegan Hines and Mack Sweeney both of who helped start me on my journey into Bayesian statistics.TODOThis package is still in the development phase. Here I list some tasks that are still left to be completed...Add ToC to READMEAdd gibbs samplers to packageAdd mixture conjugate models to packageFill out examplesFill out model specification docsFill out distributions docsUpdate docstringsmodule docstringsclass docstringsfunction docstringsType HintsProper TestUnits TestsSmoke TestsIntegration TestsAdd docsAdd branch protectionUseful ResourcesGeneralWikipediaConjugate CompedndiumMAS3301 Bayesian Statistics W4MAS3301 Bayesian Statistics W5MIT18-05S14 Reading15aConjugate families of distributionsDistribution SpecificThe Conjugate Prior for the Normal DistributionConjugate Bayesian analysis of the Gaussian distributionNotes on the Negative Binomial DistributionBeta-Binomial vs Hypergeometric