Code Monkey home page Code Monkey logo

chgibb / phat Goto Github PK

View Code? Open in Web Editor NEW
17.0 4.0 2.0 665.04 MB

Pathogen-Host Analysis Tool - A modern Next-Generation Sequencing (NGS) analysis platform

Home Page: https://chgibb.github.io/PHATDocs

License: GNU General Public License v3.0

Shell 1.15% HTML 0.32% Perl 0.87% Python 0.26% JavaScript 0.14% Batchfile 0.03% CSS 0.63% TypeScript 96.32% C 0.19% C# 0.09%
ngs alignment visualization analysis pathogen host next-generation-sequencing circos circos-graphs circos-plot

phat's Introduction

PHAT Input Reads Success

PHAT Output Align

PHAT Edited ContigPHAT Add Contig

PHAT Tool Bar

PHAT BLAST Run

PHAT BLAST Form

PHAT Action Shot 1

Documentation Quicklinks

  1. How to Get PHAT
  2. Working With PHAT Projects
  3. Inputting Files
  4. Running Quality Control (QC) Reports
  5. Running Alignments
  6. Reports and Analyses
  7. Circular Visualization
  8. BLASTing Alignments

Application Architecture

  1. Overview
  2. Contributing
  3. Repository Structure
  4. Performance

The Pathogen-Host Analysis Tool (PHAT) is an application for processing and analyzing next-generation sequencing (NGS) data as it relates to relationships between pathogen and host organisms. PHAT provides quality control (QC) reporting on sequence files, alignment of sequence files against reference files, single-nucleotide polymorphism (SNP) prediction, linear and circular alignment viewing, and Excel and comma separated values (CSV) output.

PHAT is under development in the Zehbe Lab (https://www.zehbelab.com/) at the Thunder Bay Regional Health Research Institute (TBRHRI) and Lakehead University (LU) under the supervison of Dr. Ingeborg Zehbe. This work is supported by a Natural Sciences and Engineering Research Council of Canada (NSERC) Discovery grant to Dr. Ingeborg Zehbe (#RGPIN-2015-03855) and a NSERC Alexander Graham Bell Canada Graduate Scholarship-Doctoral (CGS-D) to Robert Jackson (#454402-2014).

Project Supervisor/Principal Investigator: Dr. Ingeborg Zehbe, LU/TBRHRI Research Chair & Senior Scientist
Project Lead/Biologist: Robert Jackson, PhD Biotech Candidate
Project Lead/Software Developer: Chris Gibb, HBSc Comp Sci Student
Team Members: Mitchell Pynn, Shane Liu, Jeremy Braun, Nick Catanzaro, Zachary Moorman

How to Cite PHAT:

Gibb CM, Jackson R, Mohammed S, Fiaidhi J, Zehbe I. Pathogen-Host Analysis Tool (PHAT): an integrative platform to analyze next-generation sequencing data. Bioinformatics. 2018. DOI: 10.1093/bioinformatics/bty1003

Github All Releases

Build Statuses master beta stable
Windows AppVeyor branch AppVeyor branch AppVeyor branch
Linux Build Status Build Status Build Status

phat's People

Contributors

chgibb avatar dependabot[bot] avatar greenkeeper[bot] avatar ncatanzaro avatar pynner avatar robjackson28 avatar scsliu0 avatar zamoorma avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar

Forkers

xtmgah altingia

phat's Issues

Change All Relative Paths in Dynamically Generated HTML to Absolute Paths

Due to Browserify's path resolution, all paths used in dynamically generated HTML should be prefixed by process.cwd() in order to make them absolute paths and prevent paths from being automatically expanded on by Browserify. This behaviour prevents actual deployment of any build as all expanded paths expand into an absolute path into the project directory where the project was built in.

  • Prefix paths directly with process.cwd()
  • Use fsAccess in order to modify the path string. This would likely be a better solution. Though, would require splitting of fsAccess out of each window/module and into it's own module file.
  • Manual testing for any fix will be very difficult due the nature of the error. Constant deletion/renaming of the project directory will be required in order to ensure that any expanded paths pointing into it are broken.

Fix icon

@cgibb comment below because you know the issue better than I.

Move Precompiled Third Party Binary Dependencies Into Another Repository

Currently all third party binary dependencies are located under the forDist folder which eventually gets deployed with the application on build. This is configured for Linux only at the moment. These could be broken off into their own repo(s) in order to streamline cloning and installing. Could also be further sorted in forDist by platform, with the dependencies for the correct platform being copied out on install and the rest being deleted. This would increase cloning time but would reduce the dependency on more repositories.

Error opening Output window

Error:
	Uncaught TypeError: QCClass is not a constructor
Line:
	10141
File:
	file://<<PHAT FOLDER>>/phat-linux-x64/resources/app/outputRenderer.js

Cloning and running dev, then opening Output without supplying an input will result in the above error.

Closing Window Before Spawned Process has Exited Throws Exception

Closing a window before any processes it has spawned have exited causes the main process to throw an exception. It can also result in artifacts being left on the file system. This can be demonstrated by generating a QC report and quickly closing the QC window. An error will be displayed, and the generated QC report will be left in the same directory as the fastq for which it was triggered.

Write Platform Agnostic File Copier Application

Replace QCReportCopy with something cross platform and invocable through existing process spawning infrastructure. Would remove the dependence on DMD to build as well as allow us to more easily resolve #95

Discuss UI Changes and Mockup Designs

Some UI improvements where made on 14 January 2017. @scs97liu has stated he will look to recreate some icons and improve on other UI elements. I suggest we all be active in the process.

Split Building Into Packaging And Building Scripts

Create a package.bash script to create the app package for each platform and copy over platform specific dependencies. Keep build.bash only for building and copying first party code. This will allow for hot reloading and shorter build times(but will likely take awhile to initially generate the app package).

Investigate Executing Operations in Separate fork()ed process

https://github.com/chgibb/PHAT/tree/atomicOperations

Current implementation will have operations executing within the main process. Some research should be done in executing each operation in a separate process using https://nodejs.org/api/child_process.html#child_process_child_process_fork_modulepath_args_options

There is some potential that many long running operations with a lot of updates may clutter the event loop and therefore cause window jank. This needs to be investigated.

The current API shape should be general enough to make this fairly easy to implement. Cache integration would need to be considered. An associated bootstrap script would need to be written for each operation in order to hook into the code cache for the operation.

Implement Fasta Indexing Operation

Reimplement fasta indexing as an atomic operation. Should also roll the functionality in the ManagedFasta class in parsing and extracting contig information for rendering the fasta as a circular figure.

Cannot Index Reference On an External Device

The callback implemented in src/req/renderer/input/replyFromSamTools.js makes use of Node's fs.renameSync method in order to move the indexed reference into the application.
https://nodejs.org/api/fs.html#fs_fs_renamesync_oldpath_newpath
fs.renameSync is simply a wrapper for:
http://man7.org/linux/man-pages/man2/rename.2.html

A different approach is needed in order to support references loaded from other devices as well as cross platform compatibility.

Make Configurable JSON File of External Executables With Platform Mappings

Currently the job management engine simply passes the name of the process given in the request straight to Node's child_process.spawn method. Some kind of mapping (preferably with JSON) should be made in order to ensure cross platform support. Such as mapping from "fastqc" (for linux) to "./perl.exe","FastQC/fastqc" for Windows. Should also include enhanced error strings on spawn failures for systems which don't include things such as Java.

Potentially should also have some kind of shebang resolution and mapping. Could invalidate the need for some of the above. Could read the Linux shebang on Windows and map to the proper process.

Requires some testing of child_process.spawn on Windows. Whether the method will auto resolve the .exe file extension needs to be tested. If it does, it will invalidate most of this,

Rough idea:

{
    "platMaps":
    [
        {
           "processName": "QCReportCopy",
            "linux": "QCReportCopy",
            "win32": "QCReportCopy.exe",
           "error": "PHAT is missing a vital component. QC report generation will not work correctly."
        }
    ]
    "shebangs":
    [
        {
            "Regex": "perl",
            "linux": "perl",
            "win32": "./perl.exe"
        }
    ]
}

Prepare For Data Club Group Presentation

@jsbrn @pynner @scs97liu

As you guys know, as part of your internship, you are each expected to give a brief presentation outlining your work with TBRHRI. The presentation will be worth 25% of your final mark. @RobJackson28 and I have decided that we will do a group presentation format to be held during our weekly meeting on 8 March.

We will all get roughly 10 minutes of time to present. I will likely take a little bit less, deferring to give each of you more time as I am not being marked.

I would like each of you to begin to compile some notes about your contributions thus far and try to frame your contributions in a coherent, chronological way. We want to tell a story. I will begin by introducing the project, it's inception, goals and initial development. Each of you will then in turn present your contributions as well as demo(s) and future direction.

We will hash out details during our regular meeting on 18 February.

Apparently Github doesn't support attachments. Rob drew a whiteboard flowchart describing the direction the presentation should take. I'll post it in Slack.

If you have questions please post them here so we can keep our discussion on this topic centralised.

Add button to clear selected files in Input window

I found that, while testing the indexing button, I needed a way to remove and re-add files, so that I could try again. Currently it keeps track of the files you've "imported" between sessions. While that is expected behavior, I feel a button would still be handy.

Fix PileupJS Installation on Windows

Default build script supplied by Pileup is broken on Windows. A few of its NPM dependencies are also not supported on Windows. These fixes can be contributed back to the original project.

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.