chgibb / phat Goto Github PK
View Code? Open in Web Editor NEWPathogen-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
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
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.
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.
Issue with opening multiple files in the input window, some files will show 0 file size.
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.
Two need to be selected. Thought I fixed it.
Current generation algorithm is broken for references with only one contig. It fails to paint the figure. Add a special case for references containing only one contig.
The current low level test suite https://github.com/chgibb/PHAT/blob/master/src/tests.js is kind of a mess. It is also obviously built to test the same daisy chain process that we are trying to replace. This will need to be completely rewritten.
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.
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.
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.
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"
}
]
}
Note: Make sure input data is synchronized between instances. See the way QC window handles it's data.
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.
Some testing removing captions from the HTML markup appears to reduce some jank. Captions are still useful for usability. They should be inserted into the images themselves.
Should not trigger bowtie2 without a fasta selected.
@cgibb comment below because you know the issue better than I.
Visual indicators that a button was successfully pressed would be good for the user and potentially make the UI less confusing.
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.
Once the width of window becomes too small, the options of the panel will slide off.
Add descriptive labels to reflect function of buttons on the Alignment window. Change placeholder labels.
Dragging a local file or a PHAT icon to an open PHAT window will commandeer the window, displaying the image.
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.
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.
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
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.
[deleted]
Prototype user interface to generate a basic circular genome plot using Circos. Circos has already been integrated into PHAT.
https://github.com/chgibb/PHAT/tree/circosTesting
May require some UI/UX overhauls surrounding the way the Pathogen window displays alignment reports. May have to create a separate window for pileup viewing.
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).
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.