Coder Social home page Coder Social logo

rrwick / bandage Goto Github PK

View Code? Open in Web Editor NEW
569.0 569.0 96.0 27.5 MB

a Bioinformatics Application for Navigating De novo Assembly Graphs Easily

Home Page: http://rrwick.github.io/Bandage/

License: GNU General Public License v3.0

C++ 97.62% QMake 0.73% Shell 1.07% Batchfile 0.16% C 0.42%

bandage's People

Contributors

epruesse avatar isovic avatar milt0n avatar natir avatar rchikhi avatar rrwick 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  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

bandage's Issues

problem building Bandage on OSX

Hi,
I'm trying to build Bandage on OSX (10.12) as per the instructions on https://github.com/rrwick/Bandage. At step 7 (Build the program: make), I get an error:

Undefined symbols for architecture x86_64:
"_main", referenced from:
start in crt1.10.6.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [qmake.app/Contents/MacOS/qmake] Error 1


I used homebrew to install Qt5.
Thanks!

compilation error:

Working under Ubuntu 16.04 and following the installation instructions for Ubuntu.
The build crashers with a "collect2: error: ld returned 1 exit status" and undefined references. I understand this could be typos in the code.
I also ran a "make clean" + "make" with the same result.
Below is the last part of the screen output (just before failing):

g++ -Wl,-O1 -Wl,-rpath,/home/gbonilla/Software/BioTools/Anaconda/lib -o Bandage main.o settings.o globals.o graphlayoutworker.o debruijnnode.o debruijnedge.o graphicsitemnode.o graphicsitemedge.o mainwindow.o graphicsviewzoom.o settingsdialog.o mygraphicsview.o mygraphicsscene.o aboutdialog.o enteroneblastquerydialog.o blasthit.o blastqueries.o blastsearchdialog.o infotextwidget.o assemblygraph.o verticalscrollarea.o myprogressdialog.o nodewidthvisualaid.o verticallabel.o load.o image.o commoncommandlinefunctions.o mytablewidget.o buildblastdatabaseworker.o colourbutton.o blastquery.o runblastsearchworker.o blastsearch.o path.o pathspecifydialog.o graphlocation.o tablewidgetitemint.o tablewidgetitemdouble.o tablewidgetitemshown.o memory.o querypathspushbutton.o querypathsdialog.o blastquerypath.o blasthitfiltersdialog.o scinot.o changenodenamedialog.o querypathsequencecopybutton.o querypaths.o info.o reduce.o Graph.o GraphAttributes.o FMMMLayout.o geometry.o ClusterGraphAttributes.o FruchtermanReingold.o NMM.o GmlParser.o simple_graph_alg.o basic.o XmlParser.o String.o Hashing.o PoolMemoryAllocator.o GraphCopy.o CombinatorialEmbedding.o OgmlParser.o ClusterGraph.o Math.o EdgeAttributes.o NodeAttributes.o MAARPacking.o Multilevel.o numexcept.o Set.o Ogml.o DinoXmlParser.o DinoXmlScanner.o DinoTools.o DinoLineBuffer.o System.o QuadTreeNM.o QuadTreeNodeNM.o Constraint.o MultilevelGraph.o graphinfodialog.o tablewidgetitemname.o changenodedepthdialog.o qrc_images.o moc_graphlayoutworker.o moc_mainwindow.o moc_graphicsviewzoom.o moc_settingsdialog.o moc_mygraphicsview.o moc_mygraphicsscene.o moc_aboutdialog.o moc_enteroneblastquerydialog.o moc_blastquery.o moc_blastsearchdialog.o moc_infotextwidget.o moc_assemblygraph.o moc_verticalscrollarea.o moc_myprogressdialog.o moc_nodewidthvisualaid.o moc_verticallabel.o moc_mytablewidget.o moc_buildblastdatabaseworker.o moc_colourbutton.o moc_runblastsearchworker.o moc_pathspecifydialog.o moc_querypathspushbutton.o moc_querypathsdialog.o moc_blasthitfiltersdialog.o moc_changenodenamedialog.o moc_querypathsequencecopybutton.o moc_graphinfodialog.o moc_changenodedepthdialog.o -L/usr/lib -lQt5Svg -L/home/gbonilla/Software/BioTools/Anaconda/lib -lQt5Widgets -lQt5Gui -lQt5Core -lGL -lpthread ClusterGraphAttributes.o: In function void std::__cxx11::basic_string<char, std::char_traits, std::allocator >::_M_construct<char*>(char*, char*, std::forward_iterator_tag) [clone .isra.87]':
ClusterGraphAttributes.cpp:(.text+0x109): undefined reference to std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_create(unsigned long&, unsigned long)' ClusterGraphAttributes.o: In function ogdf::ClusterGraphAttributes::writeOGML(std::ostream&)':
ClusterGraphAttributes.cpp:(.text+0x7404): undefined reference to VTT for std::__cxx11::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >' ClusterGraphAttributes.cpp:(.text+0x7429): undefined reference to vtable for std::__cxx11::basic_ostringstream<char, std::char_traits, std::allocator >'
ClusterGraphAttributes.cpp:(.text+0x7481): undefined reference to vtable for std::__cxx11::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >' ClusterGraphAttributes.cpp:(.text+0x74aa): undefined reference to vtable for std::__cxx11::basic_stringbuf<char, std::char_traits, std::allocator >'
ClusterGraphAttributes.cpp:(.text+0x7564): undefined reference to vtable for std::__cxx11::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >' ClusterGraphAttributes.cpp:(.text+0x75bc): undefined reference to vtable for std::__cxx11::basic_ostringstream<char, std::char_traits, std::allocator >'
ClusterGraphAttributes.cpp:(.text+0x75e5): undefined reference to vtable for std::__cxx11::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >' ClusterGraphAttributes.cpp:(.text+0x82c3): undefined reference to std::__cxx11::basic_string<char, std::char_traits, std::allocator >::swap(std::__cxx11::basic_string<char, std::char_traits, std::allocator >&)'
ClusterGraphAttributes.cpp:(.text+0x840a): undefined reference to vtable for std::__cxx11::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >' ClusterGraphAttributes.cpp:(.text+0x8423): undefined reference to vtable for std::__cxx11::basic_ostringstream<char, std::char_traits, std::allocator >'
ClusterGraphAttributes.cpp:(.text+0x8435): undefined reference to vtable for std::__cxx11::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >' ClusterGraphAttributes.cpp:(.text+0x847e): undefined reference to VTT for std::__cxx11::basic_ostringstream<char, std::char_traits, std::allocator >'
ClusterGraphAttributes.cpp:(.text+0x84ba): undefined reference to vtable for std::__cxx11::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >' ClusterGraphAttributes.cpp:(.text+0x84d3): undefined reference to vtable for std::__cxx11::basic_ostringstream<char, std::char_traits, std::allocator >'
ClusterGraphAttributes.cpp:(.text+0x84e5): undefined reference to vtable for std::__cxx11::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >' ClusterGraphAttributes.cpp:(.text+0x8936): undefined reference to std::__cxx11::basic_string<char, std::char_traits, std::allocator >::swap(std::__cxx11::basic_string<char, std::char_traits, std::allocator >&)'
ClusterGraphAttributes.cpp:(.text+0x89a6): undefined reference to std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_assign(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' ClusterGraphAttributes.cpp:(.text+0x89d2): undefined reference to std::__cxx11::basic_ostringstream<char, std::char_traits, std::allocator >::~basic_ostringstream()'
ClusterGraphAttributes.cpp:(.text+0x89da): undefined reference to std::__cxx11::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >::~basic_ostringstream()' ClusterGraphAttributes.o: In function std::__cxx11::basic_stringbuf<char, std::char_traits, std::allocator >::~basic_stringbuf()':
ClusterGraphAttributes.cpp:(.text._ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEED2Ev[_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEED5Ev]+0x3): undefined reference to vtable for std::__cxx11::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >' ClusterGraphAttributes.o: In function std::__cxx11::basic_stringbuf<char, std::char_traits, std::allocator >::~basic_stringbuf()':
ClusterGraphAttributes.cpp:(.text._ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEED0Ev[_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEED5Ev]+0x3): undefined reference to vtable for std::__cxx11::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >' NMM.o: In function ogdf::NMM::init_binko(int)':
NMM.cpp:(.text+0x709d): undefined reference to __cxa_throw_bad_array_new_length' NMM.o: In function ogdf::NMM::form_multipole_expansion_of_subtree(ogdf::NodeArrayogdf::NodeAttributes&, ogdf::QuadTreeNM&, ogdf::Listogdf::QuadTreeNodeNM*&)':
NMM.cpp:(.text+0xb0e4): undefined reference to __cxa_throw_bad_array_new_length' NMM.cpp:(.text+0xb0fc): undefined reference to __cxa_throw_bad_array_new_length'
simple_graph_alg.o: In function ogdf::topologicalNumbering(ogdf::Graph const&, ogdf::NodeArray<int>&)': simple_graph_alg.cpp:(.text+0x20da): undefined reference to __cxa_throw_bad_array_new_length'
simple_graph_alg.o: In function ogdf::strongComponents(ogdf::Graph const&, ogdf::NodeArray<int>&)': simple_graph_alg.cpp:(.text+0x3473): undefined reference to __cxa_throw_bad_array_new_length'
simple_graph_alg.o:simple_graph_alg.cpp:(.text+0x3783): more undefined references to __cxa_throw_bad_array_new_length' follow collect2: error: ld returned 1 exit status Makefile:603: recipe for target 'Bandage' failed make: *** [Bandage] Error 1

image: Specify random seed value [feature request]

I'd like to specify the random seed value for Bandage image, so that I can reproducibly get the same image for a given graph. For example, if I create both a PNG file and a SVG file, I'd like them to be the same. A workaround for this example is to generate the SVG file and convert it to PNG.

Canu overlap length shows up as 0

First,: Thanks for creating this and so many other software that I use on a regular basis. My work has been made easier by these software.
I have been using bandage to visualize canu assemblies and it seems that the overlap length always show up as 0. I have been using the last release 0.81 version. Is this intentional or am i missing something. I did look at the commits made since that release but none looked like a fix for this issue.

Thanks
DB

Cannot save edited .fastg file into .gfa format when using Bandage on Windows and Ubuntu

Hi Ryan,
Thanks for your exited Bandage! It is really helpful when the first time someone shown me on a Mac system. But the problem is that I cannot use the function 'Save visible graph to GFA' on Windows or Ubuntu. I tried on four different computers including 32 bit and 64 bit of Windows 7 and Windows 10, and Ubuntu 14. Every time when I edited the graph, 'Merge all possible nodes', 'Save visible graph to GFA' and re-load the saved GFA file, the graph is just what it original is and cannot save what I edited. So I cannot output the sequence as one complete genome. While, the same data can be well edited in a Mac system. I do read all information in yoru website, but still cannot figure out how deal with this problem. Do you know what possible the reason is and what should I do?
Besides, I tried the version 0.7.1, but the the total length of my contigs reading in is shorter than it should be. It seems the nodes length are incorrect. However, the version 0.7.1 can save the edited fastg file into gfa file using ‘Save visible graph to GFA'.

Read Coverage vs. Read Count, when nodes exporting to .gfa from LastgGraph.

Hi Ryan,

First of all many I'd like to thanks you for this awesome tool. Now to the issue, while working on a LastGraph to GFA parser, when utilizing Bandage 7.1 to corroborate the specification of the connected components reported by the parser, we noticed that when exporting selected nodes from LastGraph file to GFA, the output file generated by Bandage reports appears to be an incorrect value in the GFA sequence's read count optional header.

From what I could gather the GFA sequence's read count (RC:i:###) is being retrieved using LastGraph's $COV_SHORT1 value from the NODE header, instead of the $NUMBER_OF_SHORT_READS value from the NR header.

LastGraph
NODE $NODE_ID $COV_SHORT1 $O_COV_SHORT1 $COV_SHORT2 $O_COV_SHORT2

NR $NODE_ID $NUMBER_OF_SHORT_READS

GFA
S RC i # reads assembled into the segment

L/S RC i # reads that support the segment/link

I'm an undergrad student currently working on my first semester of Bioinformatics research, so I might be mistaking the terms used in the documentation for the file formats. Anyways, I hope this is a useful contribution.

Double-click a GFA file to open it [macOS]

I associated the GFA file type with Bandage.app. I double clicked a GFA file. Bandage opens, but the selected graph is not loaded. I suspect this is because the Bandage.app/Contents/MacOS/Bandage executable needs to be launched with the Bandage load foo.gfa command, whereas macOS is probably launching it with simply Bandage foo.gfa (unconfirmed). open foo.gfa similarly does not work. Bandage load foo.gfa works as expected.

/usr/include shouldn't be in INCLUDEPATH

Using GCC 6.3.1 and Qt 5.8.0 on ArchLinux, compilation failed with :

fatal error: stdlib.h: No such file or directory

The error is related to QTBUG-53367. The bug report mention GCC 6.1.0 and Qt 5.6.0. The conclusion is that :

the problem are the broken qmake-based build systems of 3rd party applications, which somehow end up adding /usr/include to INCLUDEPATH. report bugs against these applications.
fix for them:
MY_EXTERNAL_INCLUDES -= $$QMAKE_DEFAULT_INCDIRS
INCLUDEPATH += $$MY_EXTERNAL_INCLUDES
note that -L switches added to LIBS also need filtering based on QMAKE_DEFAULT_LIBDIRS.

A quick git blame on the .pro reported no obvious reason for adding /usr/include to INCLUDEPATH (it's there since the initial commit)

Scaffold paths with gaps and non-adjacent edges

Hi!
Is it possible to add support for scaffold paths that contain gaps? E.g. SPAdes outputs .paths files in the following format:
NODE_1_length_237713_cov_242.866931
15366-;
13368-,15368-,13368-,14744+;
15696+,13092-,15690+,13092-;
15694+
where semicolon corresponds to a gap (consecutive edges may not be adjacent).
Thanks in advance!

Command line drawing

Hi,

is there a way to get the graph drawn without booting up GUI?
I usually run assemblies on server machines without GUI installed and I'd like to have it as part of a pipeline.

next release

Hi Ryan,

We'll release a software around next month where we'll need a feature that is present in the development branch of Bandage. By any chance, do you plan on making a Bandage release for a future version that includes changes in this branch? It'd help us to have released binaries because compiling Bandage from source is a bit difficult on some machines.

Best,
Rayan

Support GFA with sequences from a FASTA file [feature request]

The sequences of a GFA file may optionally be stored in an associated FASTA file. See https://github.com/pmelsted/GFA-spec/blob/master/GFA-spec.md#segment-line

ABySS for example stores the graph in scaffolds.gfa and the sequences in scaffolds.fa. The sequences of the segment records are *. I would like to be able to load the sequences from the associated FASTA file to support BLAST searches.

I don't know off the top of my head of a utility to load the GFA and FA files into a single GFA file with sequences, but I'll look.

Display the CIGAR string of an edge [feature request]

Also other properties, but I'm most interested in the CIGAR string to determine the amount by which two sequences overlap. It would also but neat to visualize the amount of overlap, but I'd be happy with a text display for now.

[FeatureRequest] in GFA, read sequence length from the LN tag

Bandage has been great with a few GFA graphs. Nonetheless, there is a small inconvenience in my case. My graphs don't contain sequences, but instead write the contig lengths to the LN:i: tag on the segment lines. For now, Bandage ignores the LN tag and considers all contigs to be 1bp. It would be good to recognize the LN tag. Thanks in advance.

Bandage can't find BLAST although it's installed

I have NCBI BLAST installed locally on my Linux computer, but Bandage can't find it.

$ which makeblastdb
/home/es249628/bin/ncbi-blast-2.4.0+/bin/makeblastdb
$ which blastn
/home/es249628/bin/ncbi-blast-2.4.0+/bin/blastn

Everytime I click 'Build BLAST database' button in the BLAST search window of Bandage, it gives me an error message: "The program makeblastdb was not found. Please install NCBI BLAST to use this feature."

I'm using Bandage_Ubuntu_static_v0_8_1.

When loading files, remember directory -- or add command-line argument

Would be great is Bandage could remember the folder of the last opened file, so that File->Load directly goes to it, instead of $HOME. Alternatively, "./Bandage file.fasta" could work too. Right now, it's a time-waster to navigate to the right folder whenever I want to reload a file.

Total length not accurate

Hi Ryan,

I just wanted to let you know that when you select a few consecutive nodes the "Total length" reported under "selected nodes" reflects the sum of the lengths of node labels, whereas it should be less - specifically you should deduct the overlap sizes. It looks like this is done correctly when such paths are copied to the clipboard, so I just wanted to suggest having these lengths match up to avoid confusion. I'm seeing this on 0.7.0, so hopefully it's not something you already took care of.

Thanks, R

Copy node to clipboard button

Hi,

I just noticed thst copy node to clipboard/save to fasta have disappeared. It was really useful to have and see them visually. Only after diggin in menus I noticed that I could use short cuts.

Please bring buttons back. It was really useful to have them visible on the right pane.

non unique labels can cause issues

Not sure whether this is a 'bug' but it has caused me issues. A FASTG file with multiple nodes with the same id causes Bandage to silently pick its favorites for inclusion (the last one read?). This means you can't just 'cat' multiple graph files together without renaming the nodes. One solution could be to warn the user if there are non-unique ids. Another would be to generate unique internal ids based on the unique combinations of length and coverage. Thanks

In this example, Bandage only loads the 26933 edge with length 155 but it is linked to 32917

EDGE_26933_length_1108_cov_2.35066:EDGE_26933_length_1108_cov_2.35066;
EDGE_26933_length_1108_cov_2.35066':EDGE_26933_length_1108_cov_2.35066',EDGE_32917_length_1362_cov_1.4664';
EDGE_32917_length_1362_cov_1.4664:EDGE_26933_length_1108_cov_2.35066;
EDGE_26933_length_155_cov_6.89286:EDGE_26933_length_155_cov_6.89286;
EDGE_26933_length_155_cov_6.89286':EDGE_26933_length_155_cov_6.89286';

Text boxes not accepting input

On 0.5.6 binaries for Linux over X11 connection, the "Node" text boxes (jump to, or build graph around) don't accept text, typed or pasted.

out of memory when writing svg, blank output when writing png

I'm attempting to generate an image for a moderate-sized graph. I've stripped the sequences out to try to make it easier.

I was able to render the graph on my laptop, but Bandage crashed when trying to save the image as an svg. I moved to a remote server but it seems like the problem persists:

-> % time Bandage image cerevisiae.no_seqs.gfa cerevisiae.no_seqs.gfa.svg
terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc
[2]    24897 abort      Bandage image cerevisiae.no_seqs.gfa cerevisiae.no_seqs.gfa.svg
Bandage image cerevisiae.no_seqs.gfa cerevisiae.no_seqs.gfa.svg  2140.16s user 31.24s system 99% cpu 36:12.28 total

Writing a .png seems to result in a blank image of the correct size but no error.

I'm happy to share the graph.

Top Menu Bar Missing in Ubuntu

Hi There,

I have installed Bandage in my Ubuntu machine and on my Mac.
It works fine on the Mac but when I launch the executables in Ubuntu the top menu bar with File and View options is missing.
I didn't get any errors while building the tool and QT5 seems to be installed fine too.

Any help would be appreciated.
Sej

Set colour changes others to grey

When I change the colour of a single segment using the Set colour button, the colours of all the other segments change to grey. I'd prefer that they retain their original random colours.

To obtain the current behaviour, I'd prefer to Select all then Set colour to grey, then select a single segment, and Set colour to a different colour.

visualizing inversions

This is a GFA produced by SGA on a small test set:

S       3       GGGTAGACACCACACCACAATGACCCGTTTGACAGCACCACACCAGTTGACAGTAGACGT
S       4       ACCACACCAGTTGACAGTAGACGTACCACCACACAGTGACGATGGGCGTTAGACGTAACAACCAGATTGAGACGGATGGGGACACCAGT
S       6       CAACCAGATTGAGACGGATGGGGACACCAGTGTCCCATTACAGTGACACGATTACCCCAGTAGACGATAGGACGATAGAGACGATAGGACAG
S       5       CAACCAGATTGAGACGGATGGGGACACCAGTATCCCATTACAGTGACACGATTACCCCAGTAGACGATAGGACGATAGAGACGATAGGACAG
S       2       GGGTAGACACCACACCACAATGACCCGTTTGACAGTACCACACCAGTTGACAGTAGACGT
S       7       TCCCATTACAGTGACACGATTACCCCAGTAGACGATAGGACGATAGAGACGATAGGACAGTCCGGTGTTTCCAGATGACGATGGCAGATGAACCACAGTAGACAGATTAGGATAG
S       1       ACGGGGTAGATTAGACGATTAGGACGATAGGACGGTTGAAAACAGTGGACGAGTAGACGATAGGAAAGGGGCGGGTAGACACCACACCACAATGACCCGTTTGACAG
L       3       +       4       +       24M
L       4       +       5       +       31M
L       4       +       6       +       31M
L       6       +       7       +       60M
L       5       +       7       +       60M
L       2       +       3       -       4M
L       2       +       4       +       24M
L       1       +       2       +       35M
L       1       +       3       +       35M

When visualized in bandage, you get this:

image

This hides an important feature of this graph. One of the two SNPs actually includes an inverting edge between its internal nodes.

vg's ugly but utilitarian viz demonstrates the problem. (Killing node labels to make it fit on screen.)

vg view -Fv graph.gfa | vg mod -K - | vg view -d - | dot -Tpng -o graph.png

screenshot from 2017-01-23 16-07-17

There is an inversion between nodes 2 and 3. vg shows this by switching from the top of the node to the bottom.

Could bandage provide a default way to see these inverting edges? This issue caused us a lot of confusion.

Starting Bandage using a symlink does not work

When running Bandage from the command line, using a symlink does not work. It gives the error message:

This application failed to start because it could not find or load the Qt platform plugin "cocoa".

Scale bar for figures generated via command line

Hi Ryan,
Thanks for this great tool! This is more of a feature request than an issue. I was wondering how difficult it would be to draw a scale bar in the graphs exported from Bandage. This would be really useful comparing multiple assemblies, where the zoom level is changing dependent on the drawn orientation of the visualization. It doesn't have to be fancy, just a solid bar depicting the length of say 10kb. Is there a setting I am missing? How difficult would this be?

Visualization of paths along nodes

Hi Ryan,

Do you have plans to implement a graphical way to visualize e.g. a contig as a line that goes along multiple nodes? e.g. using CSV information.

incomplete GUI

Hello
Having successfully installed bandage on windows, I then attempted the same on my Linux (Ubuntu) box.

$ ./Bandage

QXcbConnection: XCB error: 145 (Unknown), sequence: 158, resource id: 0, major code: 139 (Unknown), minor code: 20

The GUI opens and looks as it does in Windows except there is no top menu.

Any suggestions?

Thanks
Mark

Saving user configurations for sessions

Is it possible to create a user configuration file under the Bandage working directory (hence it does not depend on any specific OS) to store defaults such as a user's working directory, colour scheme and graphic parameters from the settings menue? Given frequent routine use by users for each project, this enhancement could benefit users in efficiency.

Thanks.

find SPAdes contig names

I'm using Bandage v0.8.1 with the file assembly_graph_with_scaffolds.gfa (formerly assembly_graph.gfa) produded by SPAdes (don't know when this file was introduced).

At the end of the file, the names of the contigs are listed in conjuction with the node numbers:

P	NODE_12_length_48543_cov_29.129936_1	2247097+,602318+,2267759+,2267751-	*
P	NODE_13_length_44834_cov_76.398234_1	2268031+	*

Unfortunately, I can search only for the node numbers (i. e. 2268031) but not for the node name (i. e. NODE_13_). It is a bit hard to match the graph with the assembly.

It would be great, if node names are searchable and can be shown on the graph, but only the prefix till length.

As an intermediate solution, I've created a CSV file for it.

KC field in GFA1 format

I wonder what value is expected from the assembler in the KC field of GFA1 format.
We were planning to report the total number of kmers, falling inside the edge, but it seems that it will break the current average coverage calculation in Bandage.
Moreover, the particular value of K will be necessary to get proper average value.
What do you think?
Maybe we should consider adding an "average coverage" field to GFA1?

Draw circular contigs from GFA assemblies [feature-request]

Hi,

Would it be possible to draw self loops in assemblies? This would help us a lot in bacterial assemblies to distinguish coverage limited partial assemblies from plasmids.

For example if I have the following GFA

H VN:Z:1.0
S 1 CGATGCAA
L 1 + 1 + 0M

The visualisation I seem to get is
screen shot 2016-05-17 at 1 47 59 pm

I was wondering if it would be possible to make these into a circular contig in such situations?

Thanks,
Govinda.

BLAST taxonomy hits for metagenomes

Would be helpful to be able to get taxonomy outputs from BLAST searches within Bandage for metagenomes, mainly. This would allow easy selection of contigs by taxonomic assignment but also detection of contaminants from the assembly.

Thanks!

'explode' nodes

Hi Ryan,

I love bandage, so thanks for that!

However, sometimes it can be quite difficult to see what is going on. e.g.
screen shot 2016-07-08 at 15 15 16

what would be great is if there were an 'explode' or 'repel' function that made the nodes all spread apart, kind of like this

screen shot 2016-07-08 at 15 17 17

I have no idea how difficult it would be to do that, but i think it would be quite useful.

Thanks again for developing a great tool.

Crash on a small FastG file

This small FastG crashes Bandage with a segfault when I draw the graph. Is it malformed? (assembled with k=21, exact overlaps of length 20)

>NODE_0_length_415_cov_0_ID_0;
CTCTAATAGGACCTCTTGCCCATCCGAGGCTTAAGCAGCGACTCCACATGGAGCGATGGGTCCTCAAGGC
AGTATAAAATGGACTGCTATCTAGGCGTTAAAGTAGTAGAACGAGGGTCGGGCGATTTGTTTTGGTAGTG
GTTATCGCATTGCAAGAACGTACGGACGGACAAAATGTCGGACACCGCCTTATCGGCTATACTAGTTAGA
GCCTCGCTTGGGTCTCTACATCCGCTGATACGCGCGAGCTCTCACCCACGACTGTACCCCGGTTAAGATT
TATAAACCATACATTTAACCCTTAGTCATAAGATGATACTTCATCTGCATGCGCGCATCTTCCTATTTTA
TGGTCTTAATTGAGTGTTCAGAGTTGGGGGTCACAGATGAGCGTTCCGATTGTCCTTTCCCAGGC
>NODE_0_length_415_cov_0_ID_0':NODE_29_length_41_cov_0_ID_29';
GCCTGGGAAAGGACAATCGGAACGCTCATCTGTGACCCCCAACTCTGAACACTCAATTAAGACCATAAAA
TAGGAAGATGCGCGCATGCAGATGAAGTATCATCTTATGACTAAGGGTTAAATGTATGGTTTATAAATCT
TAACCGGGGTACAGTCGTGGGTGAGAGCTCGCGCGTATCAGCGGATGTAGAGACCCAAGCGAGGCTCTAA
CTAGTATAGCCGATAAGGCGGTGTCCGACATTTTGTCCGTCCGTACGTTCTTGCAATGCGATAACCACTA
CCAAAACAAATCGCCCGACCCTCGTTCTACTACTTTAACGCCTAGATAGCAGTCCATTTTATACTGCCTT
GAGGACCCATCGCTCCATGTGGAGTCGCTGCTTAAGCCTCGGATGGGCAAGAGGTCCTATTAGAG
>NODE_29_length_41_cov_0_ID_29:NODE_0_length_415_cov_0_ID_0;
ATTTAGACCGTTCACTGAACCCTCTAATAGGACCTCTTGCC
>NODE_29_length_41_cov_0_ID_29';
GGCAAGAGGTCCTATTAGAGGGTTCAGTGAACGGTCTAAAT

Can annotation GFF3 be loaded?

Is it possible to load a GFF3 with the annotation of the assembly into Bandage? The idea would be to analyze regions in the graph corresponding to certain genomic features. Thanks

non-spades FASTG is not supported

The FASTQ parsing is currently tightly coupled with spades output. Simple nodes with no intra-sequence branching fail to load. It appears this is due to shapes-specific parsing of node names and explicit checks for + and - in assemblygraph.cpp

#FASTG:begin:version=1.0;
>ACCCTAACCCTAACCCTAACCCTAA_10020:CCCTAACCCTAACCCTAACCCTAAC_10021:start=10020,end=10020,weight=38,reference=1;
ACCCTAACCCTAACCCTAACCCTAA
>CCCTAACCCTAACCCTAACCCTAAC_10021:start=10021,end=10021,weight=38,reference=1;
CCCTAACCCTAACCCTAACCCTAAC
#FASTG:end;

Are there any plans to support any additional file formats (such as paired .fasta/.dot as used by ABySS )? What format would you recommend new assemblers export to?

Cheers
Daniel

Undo (Ctrl+Z) action

Hi! Thanks for this very nice piece of software.

Bandage really needs a "undo" action. Whenever I delete a node by mistake, or move a node by mistake, etc..

bandage_temp-#### files not removed after use

...during command line usage of blast on MacOSX.

It's not clear whether the blast databases can be recognized and re-used. In my case I wouldn't mind keeping them around since I'm BLASTing multiple assemblies against multiple reference genomes. But if they are not re-used it makes more sense to delete them or generate them in a tmp folder where they will be auto-cleaned up.

an example invocation:
Bandage reduce assembly_graph.fastg output.gfa --scope aroundblast --distance 10 --query blastfile.fna --evfilter 1e-100

Feature request: Color nodes by Paths (GFA)

Hi,
Bandage is a great tool.
I'd like to request one useful feature to be added for easier viewing: in case P-lines are specified in a GFA file, it would really come in handy to have an option to assign the same color to the nodes belonging to the same path, and different paths would be colored differently.
This would really help to e.g. visualize contig boundaries, as produced by an assembler.

Best regards,
Ivan.

Issue with temporary blast files when $TMPDIR has backslash in it

Due to university ActiveDirectory, students have usernames $USER like STUDENT\janedoe.

Some systems set TMPDIR=/tmp/$USER.

The system libraries you are using for temporary BLAST files use this variable.

But it needs to be treated literally, or the backslash escaped, otherwise it will become STUDENTanedoe and other inconsistencies will occur.

max BLAST hits too low

When trying to use a complete bacterial genome as the BLAST query against an assembled genome, Bandage only finds a maximum of 400 hits per query sequence. I don't know if this is a BLAST thing or a Bandage thing, but it would be useful to raise that to a much higher number. My workaround now is to split the query into artificial contigs so that no single contig is saturated.

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.