PyPedia: using the wiki paradigm as crowd sourcing environment for bioinformatics protocols

Background Today researchers can choose from many bioinformatics protocols for all types of life sciences research, computational environments and coding languages. Although the majority of these are open source, few of them possess all virtues to maximize reuse and promote reproducible science. Wikipedia has proven a great tool to disseminate information and enhance collaboration between users with varying expertise and background to author qualitative content via crowdsourcing. However, it remains an open question whether the wiki paradigm can be applied to bioinformatics protocols. Results We piloted PyPedia, a wiki where each article is both implementation and documentation of a bioinformatics computational protocol in the python language. Hyperlinks within the wiki can be used to compose complex workflows and induce reuse. A RESTful API enables code execution outside the wiki. Initial content of PyPedia contains articles for population statistics, bioinformatics format conversions and genotype imputation. Use of the easy to learn wiki syntax effectively lowers the barriers to bring expert programmers and less computer savvy researchers on the same page. Conclusions PyPedia demonstrates how wiki can provide a collaborative development, sharing and even execution environment for biologists and bioinformaticians that complement existing resources, useful for local and multi-center research teams. Availability PyPedia is available online at: http://www.pypedia.com. The source code and installation instructions are available at: https://github.com/kantale/PyPedia_server. The PyPedia python library is available at: https://github.com/kantale/pypedia. PyPedia is open-source, available under the BSD 2-Clause License. Electronic supplementary material The online version of this article (doi:10.1186/s13029-015-0042-6) contains supplementary material, which is available to authorized users.


Reading a dataset
The data are in binary BED / BIM / FAM format. We can apply a reader to this data. Readers are python generators.
In [12]: from pypedia import genetic_association_test as gat We can create a more complex analysis, for example report all SNPs where they pass the hardy weinberg statistic (p-value>0.0001) and the p-value of the genotypic test for association with the phenotype is lower than 10ˆ-4. Of course, since this is a random assigned phenotype we expect the method to find a few SNPs. 5 Saving a method in pypedia.com Suppose that we have developed a function (or class) and we want to make it part of the pypedia collection. We can create and edit an article in the pypedia.com website as with any other wiki. Alternativelly we can use the pypedia library to complete this task. To do that we should already have an account in pypedia.com. Then we must declare our username and password locally: In [2]: pypedia.username='JohnDoe' pypedia.password='secretPassword' Then we can create a new article in pypedia.com by using our account. Some notes: • It is very important the name of the article (and the name of the function or class) to end in "user < Username >". (See supplementary file 2) • The first letter of the username should be in capital.
• In the documentation page we describe how to universally define these values (for security purposes).
For example: In [3]: pypedia.add('foo_user_JohnDoe') Article foo user JohnDoe saved Next: Edit the article online: http://www.pypedia.com/index.php/foo user JohnDoe Or edit the article locally: /Users/alexandroskanterakis/del/pypedia/pypCode/pyp foo user JohnDoe.py To push the changes to pypedia.com run: pypedia.push() As it is indicated in the output messages there two ways to continue. Either to edit the article online (http://www.pypedia.com/index.php/foo user JohnDoe) or open the the file pyp foo user JohnDoe.py with your favorite text editor, add the desired functionality and then type: In [4]: pypedia.push()

Additional information
Additional documentation and functionality of the pypedia library can be found here: http://www.pypedia.com/index.php/PyPedia:Documentation.