-
Notifications
You must be signed in to change notification settings - Fork 13
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
FASTA / DNA sequence search API, display results in frontend #239
Comments
first part of : #239 : FASTA / DNA sequence search API, display results in frontend , in feature/backendBlast. feature.js : add Feature.dnaSequenceSearch(), dev_blastResult (dev test data). child-process.js : added, with childProcess() factored from dataset.js identity.js : add to comment. dnaSequenceSearch.bash : added (first 37 lines copied from uploadSpreadsheet.bash); just the outer frame, with some sample results to echo back; inner processing will be added as blast is installed. access.js : genericResolver() : add dnaSequenceSearch. sequence-search.js : added, with : classNames, actions: { inputIsActive, paste , } , dnaSequenceInputBound, dnaSequenceInput(), (inputIsActive(), paste() based on panel/feature-list.js, dnaSequenceInput based on featureNameList, classNames from panel/manage-base.js) blast-results.js : added (based on data-csv.js) auth.js : added dnaSequenceSearch(). controls.js : add apiServerSelectedOrPrimary() (factored from goto-feature-list.js : blocksUnique), used by dnaSequenceInput() left-panel.hbs : add tab : Sequence Search. sequence-search.hbs : added (framework based on left-panel.hbs) blast-results.hbs : added (parts based on data-csv.hbs) backend/ : 92a3300 4403 May 8 15:58 common/models/feature.js A 03638a8 5959 May 8 15:58 common/utilities/child-process.js e3fa7a3 1064 May 7 17:38 common/utilities/identity.js A 37e9617 1233 May 8 15:43 scripts/dnaSequenceSearch.bash 5538e71 4158 May 7 16:14 server/boot/access.js frontend/app/ : A 84d75da 2022 May 8 19:01 components/panel/sequence-search.js A 0487485 3878 May 8 19:35 components/panel/upload/blast-results.js abefab3 21394 May 7 20:05 services/auth.js 153a88a 1597 May 7 13:48 services/controls.js (edited comment) 29f5d29 4170 May 7 15:26 templates/components/panel/left-panel.hbs A 72967ab 1845 May 8 19:25 templates/components/panel/sequence-search.hbs A 5acd228 324 May 8 19:25 templates/components/panel/upload/blast-results.hbs
part of #239. feature.js : dnaSequenceSearch() : add params resultRows, addDataset, and pass to childProcess() : [parent, searchType, resultRows, addDataset]. child-process.js : childProcess() : add param moreParams - array of extra params, pass them on command line of child process after fileName, useFile. child.on(close ) : if result code 0, check .length of errors and warnings. dnaSequenceSearch.bash : added params parent, searchType, resultRows, addDataset. (resultRows is used in this commit). convert dev_blastResult from env var to function so that newline and tab can be output. factor to form datasetIdDir. Report (via stdio[3] Error:) errors detected at each step : cd, dbName, blastn. sequence-search.js : add resultRows, addDataset. add, copied from data-base.js : isProcessing, successMessage, errorMessage, warningMessage, progressMsg, setError(). add, copied from data-csv.js : newDatasetName, nameWarning, isDupName, onNameChange, onSelectChange. add datasetsToSearch(). paste() : use event.target.value as text promise reject : use setError(), copied from data-base.js. blast-results.js : table config options : drop minRows: 20 dataset.js : add hasTag(), based on block.js auth.js : dnaSequenceSearch() : add params resultRows, addDataset and pass in data. app.scss : adjust left margin of sequence-search : ul.config-list. left-panel.hbs : pass datasets to sequence-search. sequence-search.hbs : add, based on data-csv.hbs, parent select, dataset_new, panel-message, nameWarning, isProcessing. add inputs : resultRows, addDataset.
multiple output tabswhen user clicks sequence search:
|
Filtering the blast-results table :Motive : can get hits all over the place for some genes, but only 2-3 actual good matches
|
GUI refinements / adjustments
Either move ownership of the view flags from blast-results-view to blast-results or .search, so that switching between modal and left-panel does not refresh them, (71f1c13, d1bf486] :blast-results-view : set table height when changing tableModal )
implemented for add dataset in backend; for transient add in frontend : deferred to later branch :
From meeting, Jun15 :
deferred for a later branch :
(probably) for next phase :
|
To handle multiple parent / blastdb, pass dbName as a param in the curl request from blastn_requestThis part applies to either of the following options :
A couple of design options :
(not required because 1. worked)
Software for a RESTful web api server wrapping blast was not found, either in a container or otherwise. So continue to use blastServer.py
Related options : |
|
|
Performance improvementinvestigated the 2min time for blastn for a test case on pulses;
|
dataset tag on reference for genomes that have the blast db set up on the BE
taking some fasta input, calling blast on the BE, and getting the result in FE (8dc9fc8)
view returned data as a table (52413e1)
(? select entries to make a temporary dataset from)
66d59ba sequence search : view added dataset
acd77ec : ... if addDataset import jsonFile.
27e3a5d : add transient.js : with pushFeature(), pushData() ...
we probably want to limit it somehow
(resultRows )
blast output columns are
query ID, subject ID, % identity, length of HSP (hit), # mismatches, # gaps, query start, query end, subject start, subject end, e-value, score, query length, subject length
branch : feature/backendBlast
various sub-items :
option to load as dataset (name), (a27ca03,
input field for parent, pass as param (a27ca03)
currently the result is not displayed in the table when it arrives; switching to the search tab and back again is sufficient to update the display and show the result in the table
solved by adding a dependency on table (46f8c0c), instead of : x( try updateSettings({ data }) to trigger re-display; check when dataMatrix CP is evaluated)
(d245841 : show empty table initially)
toggle out table to dialog d99cf5f, cdcdcf4: added tooltips.
collapse button, put table above the inputs (datasetName, parent, namespace) and button. 6714328
no need for min rows 20 because not input (a27ca03)
💤 alternate icons for 2 search tabs
DNA Sequence Input -> FASTA input, e.g ..., refn URL.
(placeholder : whitespace not trimmed) (a27ca03)
[1-2H/1H] fileName (dnaSequence) - make this unique to handle parallel requests (d56e232)
[2H/1H] wrap with task to avoid accidental repeat (984d5a1)
description for :
Feature.remoteMethod('dnaSequenceSearch', {
description: "Returns features by their level in the feature hierarchy" (a27ca03)
actually fasta (for blastn) :
done in 1e7c0e9 :
may not be an issue; deferred to later branch :
later:
search selector in GUI : fixed at Blast until other options added. Done : a27ca03, e373614
💤 dataset (spreadsheet upload) can now use childProcess()
💤 show a list of user's blastResults in search tab - with a delete action
Could limit to e.g. 5 results, so users will remove unused results.
Extensions / for discussion
perhaps add a dataset tag for blast results, which might be useful in listing temporary datasets so the user has an easy way to clear them up
(related : added tag 'transient' for datasets which are pushed to store in frontend but not persisted to server & database)
[1-3H/1H] combine feature search and blast search into a single panel, with each part initially collapsed
(suggestion by J, meeting May27, decided meeting Jun04).
related : Fixes/tweaks to existing features #216 (comment)
4e9727e
Notes
💤 is used to indicate items which are not currently required, maybe in a later phase.
The text was updated successfully, but these errors were encountered: