Code Monkey home page Code Monkey logo

bandageng's Introduction

License GitHub release (latest by date) GitHub Downloads GitHub Workflow Status

BandageBandage-NG

IMPORTANT: This is a fork of original Bandage repo. It may contain new features, new bugs and otherwise be not compatible with the Bandage by Ryan Wick. The documentation, instructions, etc. might be incomplete, missed and inaccurate as well

Table of Contents

Intro

Bandage-NG is a GUI program that allows users to interact with the assembly graphs made by de novo assemblers such as SPAdes, MEGAHIT and others.

De novo assembly graphs contain not only assembled contigs but also the connections between those contigs, which were previously not easily accessible. Bandage visualises assembly graphs, with connections, using graph layout algorithms. Nodes in the drawn graph, which represent contigs, can be automatically labelled with their ID, length or depth. Users can interact with the graph by moving, labelling and colouring nodes. Sequence information can also be extracted directly from the graph viewer. By displaying connections between contigs, Bandage opens up new possibilities for analysing and improving de novo assemblies that are not possible by looking at contigs alone.

Help

Bandage-NG documentation is available on the Bandage-NG GitHub wiki.

Bandage-NG help tips are also built into the program. Throughout the UI, you will find these icons next to controls and settings: help text icon. Click them to see a description of that element of Bandage.

Prerequisites (for building from the source code)

  • Qt 6
  • CMake
  • C++17-compliant compiler

Pre-built binaries

Pre-built Linux and Mac binaries are available from Releases page.

Building from source

CMake

mkdir build
cd build
cmake ..
make

Contributing

New contributors are welcome! If you're interested or have ideas, please use Issues section in the repo.

Citation

TBD

Credits

Bandage-NG makes use of the OGDF library for performing graph layout algorithms. Big thanks goes out to the OGDF developers for their excellent work!

License

GNU General Public License, version 3

bandageng's People

Contributors

asl avatar epruesse avatar fadeevsergey avatar isovic avatar milt0n avatar natir avatar rchikhi avatar rrwick avatar snurk avatar ugadal avatar wafemand avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bandageng's Issues

Deprecate LastGraph

It worked fine, but it seems to be not used anymore and the codebase contains lots of special cases...

Question regarding command line options

Are any command line options supported? For example, to change defaults, etc. I tried --help but got the following. I am on Ubuntu 20.04.

./BandageNG-3b69a79-x86_64.AppImage --help
qt.qpa.plugin: Could not find the Qt platform plugin "minimal" in ""
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

Available platform plugins are: xcb.

Aborted (core dumped)

Allow +/- in oriented segment names

GFA grammar requires some lookahead. In particular, "+/-" are allowed in segment names. As a result we need to have some lookahead while parsing oriented segments from P lines.

After #46 we do allow "+/-" in segment names, however, such segments will not be able to participate in P lines due to absence of required lookahead

Support path annotations

@ekg Will it be possible for you to draft requirement here? Something more specific than just "use coordinates along the path", if anything?

Allow loading GFA files with mixed Segment/Link lines

Hi,

I have multiple GFA files where the S/L lines are mixed. For example:

H	VN:Z:1.0
S	1	GCGGTTCAGCAATTTCAGG
L	1	+	2	+	0M
L	1	+	3	+	0M
S	2	G
L	2	+	4	+	0M
S	3	C
L	3	+	4	+	0M
...

In order to open them with the new power-upped Bandage, I have to put all S lines first, then L lines, and then P lines. Else, I get this kind of error:

image

Is it possible to avoid such a constraint? The old Bandage can read S/L-mixed GFA files.

Support larger GFAs

Large genome / metagenome could generate very huge assembly graph. We need to see how to load them properly.

Few ideas straight from the head:

  • Switch to GFA parser from https://github.com/lh3/gfatools Our experience show that it's pretty efficient.
  • Some additional indexing could be done, so we won't need to keep the whole graph in the memory

Do not pass objects by value

In very many places, objects are passed by value, for example QString. It is necessary to pass a constant reference.

ps: For the case of QString, this will not improve the speed, since copy-on-write

Allow export of the graph layout to a tab-separated format

Hi,

it would be very nice to have as a feature the ability to export the generated graph layout without opening the GUI, that this with the command line interface. A generic and practical enough output format could be tab-separated output with these columns:

  • node identifier
  • x coordinate (of the midpoint of the node)
  • y coordinate (of the midpoint of the node)

Eventually, the coordinates of both ends of the nodes could be output. An additional column with the number of the connected component to which the node belongs would also be useful.

This would allow us using BandageNG layouts with other tools like gfaestus.

What do you think?

Make selection of paths better

Currently path selector is just plain combo box, which is quite ugly when we're having multiple paths. Redesign for better usability.

Application crash

When searching for an empty path in the graph, the application crashes

Minimap2 support

It's really great that Bandage gets a new life - thank you for taking that up.

As a possible enhancement, I suggest minimap2 support. Currently you can map the assembly using blast and display those super useful rainbow plots, but blast is getting a bit tired these days.

If you add this support, it would be useful to allow both mapping on the fly (like currently for Blast), as well as the use of a preexisting paf file written by minimap2.

update build instructions

Loving this! Just a reminder to update the build instructions to reflect the current setup and dependencies.

Blast query names overlapped

If several blast hits have the same center in the node then query names overlapped.

There are 5 hits on the screen.
image

Implement `bn:Z` tag

The old version of gfa builder could parse the bn:Z tag of the header (H line) which controls Bandage's options.

The new version doesn't support this because of using a third-party parser.

Blast parameters lead to invalid arg name error

I seem to get errors setting blastn parameters (and I tried many) on the current version (v0.9.5.1) on the mac binary, that claim the arg name is invalid. It seems to strip the leading '-'

Error: Invalid argument name: task blastn-short -word_size 4
Error:  (CArgException::eInvalidArg) Invalid argument name: task blastn-short -word_size 4

Passing with --task, \-task, or "-task " all lead to either invalid names or positional arg errors.

Trying the same files and blast params works fine on normal Bandage, so seems to be an error in BandageNG.

feature request: save load graph

Bandage is fantastic, I'm glad to hear you are continuing its development. I was wondering if it would be possible to implement a save/load feature? This would be useful for making figures for publications. It would be nice to be able to set a layout, add colors, blast hits etc. and then save the state so that it can be loaded again in the future.

Alternatively, a way to set the seed for the graph layout would be good as well in case I need to remake a figure but keep it looking the same. Thanks!

Cannot load a file containing segments without sequence

If I try to load a gfa file containing no sequence, I get the following error message:

image

Here is the beginning of the file I am trying to load:

H       VN:Z:1.0
S       0       *
S       1       *
S       2       *
S       3       *

According to the GFA specification, the sequence can be omitted and specified as *. The specification also says that, if the sequence is missing, "its length may be specified using the LN tag", but this is not required. The LN field is clearly described as optional, and the original Bandage has no problem loading this file.

GFA files without sequence are very useful to inspect an assembly without having to load a large file. This is useful for applications where the sequence is not needed, and one is interested only in the structure of the assembly graph.

Allow resizing text?

In shasta assembly graphs, the node size range goes from 1bp all the way to 100Mbp and the font size is often too small when looking at the graph from a zoom level that allows you to see the overall structure:

For example, here the middle bubble is 8.67Mbp:
image

It would be convenient for making figures/presentations to be able to read the labels directly.

Fix tests/bandagetests.cpp

  1. The signature of the getStartingNodes function has changed. The test is not compiled.
  2. linker problems
    ...

Hanging on graph load

Hi, I downloaded your AppImage release v0.9.5 and tried loading a human assembly graph generated by verkko (the current state of the art for contiguity/completeness) and it created this malformed UI element and has been running like this for about 10min without finishing

image

The static executable from conventional bandage has successfully loaded this graph in a minute or so.

Switch to cmake

Qt6 allows one to do everything in cmake. Switch from qmake to cmake.

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.