-
Notifications
You must be signed in to change notification settings - Fork 23
PyCon Sprint
Welcome to the BuddySuite sprint page for PyCon 2016. BuddySuite is a collection of four distinct modules designed to be 'one-stop-shop' command line tools for common biological data file manipulations (written in Python 3). To get an overview of the functionality, I recommend browsing the individual wikis for a couple of the tools (SeqBuddy, AlignBuddy, PhyloBuddy, and DatabaseBuddy).
While the software itself is targeted at computational biologists, a background in biology is not a prerequisite to participate in the sprint. Furthermore, the specific tasks outlined below span the range of necessary programming prowess, so there's plenty for everyone to sink their teeth into. The primary goal is to polish up the development branch for release of V1.2.
BuddySuite currently runs on Linux and Mac, but is poorly tested on Windows. If you're a Windows user, I highly recommend installing VirtualBox and creating a Linux virtual machine.
-
Fork the primary GitHub repository at https://github.com/biologyguy/BuddySuite/.
-
Clone the repository to your local machine
$: git clone https://github.com/<your github id>/BuddySuite.git
- Move into the repo and switch to the 'development' branch:
$: cd BuddySuite
$: git checkout develop
- Run BuddySuite_Installer.py
$: ./BuddySuite_installer.py
- Create BuddySuite sym-links to point at your development environment
$: ln -s /path/to/git/repo/workshop/SeqBuddy.py /usr/local/bin/sb
$: ln -s /path/to/git/repo/workshop/AlignBuddy.py /usr/local/bin/alb
$: ln -s /path/to/git/repo/workshop/PhyloBuddy.py /usr/local/bin/pb
$: ln -s /path/to/git/repo/workshop/DatabaseBuddy.py /usr/local/bin/db
- Read the developer page before doing anything else. It will explain how the project is organized and direct you to install a few more development version dependencies.
To access the development versions of the BuddySuite programs, use their shortcut names
$: sb -h
Program | shortcut |
---|---|
SeqBuddy | sb |
AlignBuddy | alb |
PhyloBuddy | pb |
DatabaseBuddy | db |
Click on the links in the above table for a detailed breakdown of the tools available within each module.
Skill level: Beginner — A great amount of care has been taken to build a comprehensive wiki for the BuddySuite, but documentation can almost always be made better! This task will involve systematically checking the wiki page for each function, ensuring that it is up to date, covers all major use cases, and is free of errors. This will be a great opportunity to learn how to use BuddySuite, as you'll need to kick the tires of each function.
Skill level: Beginner — RST info fields are being used for very basic in-line documentation, and at minimum every class/function/method should include a brief description and :param, :type, :return, and :rtype tags (maybe get fancy with :raises?). This is another excellent opportunity to familiarize yourself with the many features of the Suite.
Skill level: Intermediate (probably?) — This is actually something I've considered doing for quite a while, but have been putting if off for the stupid reason that I just haven't spent the time to learn how to do it. It would be awesome if users could simply $pip install buddysuite
, so if you have experience managing software on PyPi, I would love the help on this task.
This task could also involve moving the entire installation directory to site-packages, which would be more in line with convention, and probably needs to occur at some point anyway.
Skill level: Intermediate — There are several cases where sys.path has been hacked, and this nonsense needs to be fixed.
Skill level: Intermediate — BuddySuite already talks to a server to report crashes and usage statistics (opt-in functionality), but it does not currently inform the user if their version is out of date. This task will involve hacking the usage statistics function to also do a version check.
Skill level: Beginner/Intermediate/Advanced — This is high priority and I plan on closing it out before the end of the sprint. The Suite has good unit test coverage, but there are a few tricky places that need monkey patching (advanced sprinters) and many places that need to be switched to a new resource management class (less advanced). Details for how unit tests have been implemented can be found here.
Skill level: Toddler King Kong — Aside from getting the unit test issue sorted out, I'd be fine if the entire sprint devolved into us rampaging through BuddySuite with ridiculous edge cases in an attempt to find weaknesses. Bonus points if we can also fix those weaknesses.
Skill level: Beginner/Intermediate — I'm toying with the idea of breaking a PEP8 rule by moving certain imports into certain functions... Some heavy modules are required by a limited number of functions, which is slooooowwwing down execution time of the whole program. This will require some systematic analysis of every function to determine which modules are required where, and then some benchmarking. I'm also open to fancier performance ideas if anyone has them. Possible alternatives are py-demandimport and limp.
Skill level: Advanced — It would be nice to format the command line --help output to be a little more visually pleasing. This may involve monkey patching part of the standard library to reset margins and tabs to dynamically accommodate the size of the users terminal window.
Skill level: Advanced — This would be an ambitious task, and may require more-than-passing familiarity with BioPython. SeqBuddy currently handles a decent number of file formats, but chokes on anything that involves per-residue annotation. If anyone thinks they may be interested in looking at this, please get in touch with me ahead of time (I'll do some extra prep-work to maximize the impact of your valuable coding foo).
Skill level: Advanced — Supporting Windows has been a low priority because my target audience tends to be more Unix-oriented, but it would be nice to be fully cross-platform.