GitHub repository: ProgrammingLife2017/Desoxyribonucleinezuur
Topics: dna, dna-sequences

Final release: tag_name: final
body: This is the final jar for this project. Unless someone else picks it up, this project will not be under active development anymore.
Final documents: tag_name: final_report
body: Final report, product vision, product planning.

The branch / commit that release refers to is unimportant.
Final Presentation Release: tag_name: FinalPresentation
body: Release for the final presentation
User testing release: tag_name: usertest
body: Application release and instructions attached.
Architecture design: tag_name: Architecturedesign
body: Final version of architecture design
Milestone 6 - semantic zooming: tag_name: milestone6
body: New:
- Dynamic loading works. Still some known (nut unresolved) bugs:
  - Edge thickness between subgraphs does not work.
  - SNPs do not work with dynamically loaded parts op the graph.
- `View -> Toggle SNPs` enables drawing SNPs as a single node.
- Clicked (or `shift`-clicked nodes are highlighted.
- Drawing performance improved by using a `Canvas`.
Final report draft: tag_name: final_report_draft
body: This is the draft for our final report. It is not finished yet, as the product isn't entirely finished either.
The commit / branch is meaningless, just look at the attached files.
Milestone 5: tag_name: milestone5
body: New features since milestone 4
 - minimap of the graph (can be toggled with ctrl+m)
 - Drawing speed back up to acceptable levels (last release was slow because of inefficient edge genome finding)
 - Annotations:
  - can be opened (file -> open GFF)
  - search with suggestions in opened annotations (left pane -> highlight -> search annotations)
    - selecting an annotation doesn't do anything yet.
  - Annotations are not drawn yet
 - caches in dedicated folder (`caches/`) with unique extension (.db.desoxyribonucleinezuur)
 - reduced memory footprint (We removed some classes and moved their functionality)
 - Progress bar is visible again.
 - dynamic loading has not been finished yet (separate release)

Note: There are 2 releases:
1 stable release from develop
 - The features of the develop branch are listed above

1 unstable release for dynamic loading
 - Dynamic loading only works to the right
 - layout is "suboptimal"
 - May stop loading on exceptions. This means that the graph becomes unresponsive, but you can still redraw it with the draw button.
Milestone 4: tag_name: milestone4
body: Changes (since milestone 3)

## Please delete all cache files of previous releases, before loading any new files.

### new features
improved caching:
cache now also stores genomes
original .gfa file is now needed on warm load.
cold load time is now slower.

better layout algorithm: Minimal edge crossing.

Drawing:
Node color depends on amount of genomes through node
Siblings of the center node are now also found

Higlights:
Nodes can be highlighted specified by a minimum and maximum genomes, or
nodes can be highlighted specified by genome.
Genome is searchable with regex suggestions.

On click:
Click or Shift+Click on nodes/edges gives information about the sequence in a panel to the right.
Able to compare two nodes/edges, by first clicking the first node and then shift-clicking the second node.
The segments can be copied to clipboard.

Zooming/Panning:
Is not yet dynamic.
It does however feel very intuitive.

### known issues

The progress bar fills twice now. Once for cold load parsing, and once for genome loading.
Progress has fallen of the screen. Increase window size to find it.
TB328 is very unpredictable. Performance varies by location (large variation).
Human is also difficult to draw, but it is possible.
Prefers genome selection with highlights over min max number of genomes.
The program does not detect moved files, so bookmarks and recent files don't work when you change/move the files they refer to.
edges might clip nodes
there are some edge crossings.
There might be duplicates in file -> open recent when opening other files with file -> open. This is only in-memory, so restarting the program fixes it.
When parsing fails on an outOfMemoryError, it does not give any error message
Tomato can be opened yet, but will take too long. Cache file is 10gb.
Milestone 3: tag_name: milestone3
body: Changes (since milestone 2)
 - improved caching: 
   - cache now also stores parents and children, 
   - original .gfa file is not needed on warm load.
   - cold load time improved.
 - better layout algorithm: layered graph drawing.
 - bookmarks can now be opened from a different file (opening a bookmark will open the file is if it is not already opened)
 - command line arguments:
   - `--file=<name>`: open file `name` on startup
   - `--clean`: clean start, discard the cache for the file you are opening and reparse the .gfa file.
 - opening a bookmark will draw it after loading the graph.
 - drawing a radius up to 500 is near-instant.
 - drawing radius can reach over 3000, but this takes a long time.
 - Note: drawing time is very much dependent on the centernode.
   - in TB328, centernode 10000 takes much longer than 20000 (with equal radius)
 - Fixed some old bugs, introduced some new ones.

Known issues:
 - bookmarks must have at least two characters
 - The program does not detect moved files, so bookmarks and recent files don't work when you change/move the files they refer to.
 - You can only zoom and pan with the mouse when the cursor is on a node or an edge.
 - The graph only shows ancestors / descendants from the centernode, so brothers/sisters etc. (nodes with the same parent as centernode) are not shown.
 - clicking on edges does not always give very useful information
 - clicking on a horizontal spot of edges does not show information
 - edges might clip nodes
 - there are some edge crossings.
 - There might be duplicates in `file -> open recent` when opening other files with `file -> open`. This is only in-memory, so restarting the program fixes it.
 - When parsing fails on an outOfMemoryError, it does not give any error message
   - on a related note, tomato cannot be opened yet.
Sprint 3: tag_name: sprint3
Milestone 2: tag_name: milestone2
body: - Bookmarks added (first open a file).
- Console toggleable file `File` menu.
- MapDB for GFA file caching.
- Improved usability for new users (see `Help -> Instructions`).
- To discard cache, remove `gfafilename.db`.
- Unfortunately, drawing lots of nodes seems to be broken. Please first try ten nodes before scaling up.
Sprint 2: tag_name: sprint2
body: - Visualization
- Sprint documents
- Static analysis

Run using `java -jar ProgrammingLife.jar`.
Use `File -> Open` to open a GFA file.
Enter an origin node ('Center node') and a number of children ('Max depth') and click 'Draw' to draw the specified portion of the graph.
Enter a number of children ('Max depth') and click 'Surprise me!' to pick a random origin node and draw.
Zoom and transpose by using the buttons on the sidebar.
Transpose by holding `alt` and dragging a node.
Milestone 1: tag_name: milestone1
body: **`alt+drag` on a node for scrolling**

- Graph vizualization
- Console window
- Improved parsing
Final version of the product planning and product vision: tag_name: Productplanning/vision
Architecture Design Draft: tag_name: Architecturedesigndraft
body: This tag shows that we put an architecture design draft in the documents folder
Drafts of the product vision and planning: tag_name: Product-vision/planning
body: title
first backlog: tag_name: backlogv0.1
body: This tag has our first vague version of a backlog document added.