Coder Social home page Coder Social logo

wytamma / beastiary Goto Github PK

View Code? Open in Web Editor NEW
16.0 1.0 2.0 55.52 MB

Real time and remote MCMC trace monitoring with BEASTIARY.

Home Page: https://beastiary.wytamma.com

Python 17.59% HTML 2.49% JavaScript 2.75% Vue 41.21% Shell 0.29% TypeScript 12.67% CSS 0.23% OpenEdge ABL 22.77%
beast beast2 phylogenetics bayesian-inference revbayes mcmc monitoring

beastiary's Introduction

beastiary logo

PyPi tests cov docs Hits

Beastiary is designed for visualising and analysing MCMC trace files generated from Bayesian phylogenetic analyses. Beastiary works in real-time and on remote servers (e.g. a HPC). The goal of Beastiary is to be a beautiful and simple yet powerful tool for Bayesian phylogenetic inference. A beastiary (from bestiarum vocabulum) is a compendium of beasts.


Paper: Wirth & Duchene (2022)

Documentation: https://beastiary.wytamma.com

Source Code: https://github.com/Wytamma/beastiary


Install

pip install beastiary

Use

To start beastiary use the beastiary command.

beastiary

For more information read the docs.

Cite

Wytamma Wirth, Sebastian Duchene, Real-Time and Remote MCMC Trace Inspection with Beastiary, Molecular Biology and Evolution, Volume 39, Issue 5, May 2022, msac095, https://doi.org/10.1093/molbev/msac095

beastiary's People

Contributors

wytamma avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

esteinig wook2014

beastiary's Issues

Move calculateStats to worker thread

calculateStats is the main blocker and should be moved to the worker. Also need better management of workers so you don't create 1 per calculation. E.g. create a worker pool.

Add drag and drop option for static files.

Add an option to drag and drop files into Beastiary. The files will not be able to be tracked, however, it would allow you to statically examine files. The file would just load into the browser so no data transfer is required.

WebSockets for Continuous Data Transmission

Replace polling with web sockets e.g.

from fastapi import FastAPI, WebSocket

app = FastAPI()

@app.websocket("/data")
async def data_websocket(websocket: WebSocket):
    await websocket.accept()
    while True:
        data = await generate_data()  # Your function to get real-time data
        await websocket.send_json(data)
        await asyncio.sleep(1)  # Adjust based on desired update frequency

Add --watch to cli

Add an option to watch a folder. This will add files to beastiary when they are added to the folder. Might also need to handle patterns e.g. *.log

Add --host to cli

Add a --host or --share cli arg that sill proxy beastiary through a server so the analysis is publicly available.

SAWarning

SAWarning: Identity map already had an identity for (<class 'beastiary.models.sample.Sample'>, (116,), None), replacing it with newly flushed object. Are there load operations occurring inside of an event handler within the flush?
db.commit()

Fix docs website

The custom domain for the docs is reverting to my blog url...

Tree metrics

Mixing and convergence in tree space is an important requirement for effective Bayesian phylogenetic inference. The Beastiary backend should compute real-time convergence diagnostics (similar to RWTY) for assessing the adequacy with which the MCMC has sampled the phylogenetic tree topology space.

add file explorer

For security reasons browsers don't allow access to file paths. I think that means we can't have a drag and drop interface (although this wouldn't work on remote servers anyway). I think the best option would be to have a file explorer interface like the one in the vue ui.

Submit logfile at start up

Add the ability to pass beastiary a logfile path at start up, so that it is automatically added.

beastiary --logfile '/path/to/log'

Move byte caching to the trace model

Currently the byte of the last row read is used to keep track of the location in the log file. However, the byte could be tracked on the Trace model to save adding it to the last Sample read.

Add burnin

Add the ability to specific the amount of burnin

ESS

Ess calculation for each parameter

Add —version

import pkg_resources
version = pkg_resources.get_distribution('beastiary').version

Optimisation for large datasets

Beastiary will freeze if the dataset being loaded is very large (100,000 samples). Is there a way to optimise the loading time of large datasets?

Efficient Data Serialization

Binary Serialization: binary formats can significantly reduce the payload size. Consider using formats such as Apache Arrow or custom binary payloads for trace data.

Incorrect parsing of parameter names if space is present.

I found that if spaces are present in a parameter name, the name will be split and the additional words will be used to label the subsequent parameters.

In the attached log file and screenshot, the parameter "Current Tree" is split by Beastiary, with "Current" labelling the correct column and "Tree" labeling the adjacent column (which should be "Location.rates.California.NewYork"). All of the data in the log file is present, but the labels are incorrect from that point on.

image

sample.log

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.