Skip to content
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

sync: vfb_geppetto_application with vfb_geppetto_application-sync-635b #1021

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
60 commits
Select commit Hold shift + click to select a range
87a7f4a
Merge pull request #841 from VirtualFlyBrain/development-sync-7e2e
Robbie1977 Dec 18, 2020
bfd9be2
Merge branch 'development' into development-sync-39f5
Robbie1977 Dec 18, 2020
f46f39d
Merge pull request #848 from VirtualFlyBrain/development-sync-39f5
Robbie1977 Dec 18, 2020
caa8126
Merge pull request #854 from VirtualFlyBrain/development-sync-42d7
Robbie1977 Dec 22, 2020
99589bc
Merge pull request #860 from VirtualFlyBrain/development-sync-3068
Robbie1977 Dec 26, 2020
184eb49
Merge pull request #866 from VirtualFlyBrain/development-sync-8302
Robbie1977 Jan 1, 2021
09adfd5
Merge pull request #938 from VirtualFlyBrain/development-sync-49ed
Robbie1977 Jan 4, 2021
4102eba
Merge pull request #955 from VirtualFlyBrain/development-sync-a239
Robbie1977 Jan 7, 2021
3ac0b5e
Merge pull request #961 from VirtualFlyBrain/development-sync-6863
Robbie1977 Jan 7, 2021
db9a299
Merge pull request #973 from VirtualFlyBrain/development-sync-e09a
Robbie1977 Jan 14, 2021
a73a11c
Merge pull request #978 from VirtualFlyBrain/debug
Robbie1977 Jan 14, 2021
caa3977
Merge pull request #979 from VirtualFlyBrain/debug
Robbie1977 Jan 14, 2021
0fb0163
Merge pull request #980 from VirtualFlyBrain/debug
Robbie1977 Jan 14, 2021
a51d03b
Merge pull request #981 from VirtualFlyBrain/debug
Robbie1977 Jan 14, 2021
6416869
Merge pull request #989 from VirtualFlyBrain/development-sync-55cc
Robbie1977 Feb 6, 2021
824130f
Merge pull request #996 from VirtualFlyBrain/debug-sync-2355
Robbie1977 Feb 7, 2021
4622fb7
Merge pull request #995 from VirtualFlyBrain/development-sync-2355
Robbie1977 Feb 7, 2021
3ec759a
#775 fix layers components css issues
jrmartin Feb 10, 2021
bb2dd60
Remove alert statement from debug
jrmartin Feb 13, 2021
6ae37a6
#983 fix for eye icon to follow the instance behaviour, plus removed …
ddelpiano Feb 15, 2021
629881b
Merge pull request #1002 from VirtualFlyBrain/feature/983
Robbie1977 Feb 15, 2021
ae78aab
Merge pull request #1001 from VirtualFlyBrain/fix/remove_alert
Robbie1977 Feb 15, 2021
f2d2c01
Merge pull request #1003 from VirtualFlyBrain/development
Robbie1977 Feb 15, 2021
d42540b
Merge pull request #1000 from VirtualFlyBrain/feature/775
Robbie1977 Feb 15, 2021
4dd1b58
Merge pull request #1005 from VirtualFlyBrain/development
Robbie1977 Feb 15, 2021
c6352d3
stagger loading
Robbie1977 Feb 19, 2021
c9c7386
Merge pull request #1010 from VirtualFlyBrain/debug-sync-ec0d
Robbie1977 Feb 19, 2021
e4a4aee
batching into 10s
Robbie1977 Feb 19, 2021
c31d653
Merge branch 'debug' of https://github.com/VirtualFlyBrain/geppetto-v…
Robbie1977 Feb 19, 2021
0ca6cb4
Revert "batching into 10s"
Robbie1977 Feb 20, 2021
2a1d63d
Revert "stagger loading"
Robbie1977 Feb 20, 2021
e6181cb
adding loading message
Robbie1977 Feb 20, 2021
d77bd33
lint fix
Robbie1977 Feb 22, 2021
d2884b0
Revert "lint fix"
Robbie1977 Feb 22, 2021
ed40056
Revert "adding loading message"
Robbie1977 Feb 22, 2021
48bdb74
updating images of Class query to standard
Robbie1977 Feb 24, 2021
d859d0e
correcting for individual per line
Robbie1977 Feb 24, 2021
48cfcb1
restricting to images
Robbie1977 Feb 24, 2021
afe5cf8
simplifying
Robbie1977 Feb 24, 2021
f01bd0c
removing extras
Robbie1977 Feb 24, 2021
7071819
removing extra columns
Robbie1977 Feb 24, 2021
cb2b461
Revert "removing extras"
Robbie1977 Feb 24, 2021
50f8353
adding has_similar_morphology_to
Robbie1977 Feb 25, 2021
e3867b7
marking as manual query
Robbie1977 Feb 25, 2021
32562a3
removing old queries
Robbie1977 Feb 25, 2021
091f6c8
adding clarification
Robbie1977 Feb 25, 2021
3d355f3
adding extra space
Robbie1977 Feb 25, 2021
08d1d02
tweaking wording
Robbie1977 Feb 25, 2021
6f0b25e
logic fix
Robbie1977 Feb 25, 2021
8386cc2
logic fix
Robbie1977 Feb 25, 2021
cccd8ed
targeting fixed icon
Robbie1977 Feb 26, 2021
75184f3
id update for new query
Robbie1977 Feb 26, 2021
483ac05
syntax fix
Robbie1977 Feb 26, 2021
34599de
typo fix
Robbie1977 Feb 26, 2021
e0edf36
forcing reconnect
Robbie1977 Feb 26, 2021
883732a
using attempts to time reload
Robbie1977 Feb 26, 2021
f7c3ad5
adding better logging
Robbie1977 Feb 26, 2021
1d1c411
using full retries
Robbie1977 Feb 26, 2021
4b61f30
simplifying reload
Robbie1977 Feb 26, 2021
1607eb3
Merge pull request #1017 from VirtualFlyBrain/debug
Robbie1977 Feb 26, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 11 additions & 10 deletions components/VFBMain.js
Original file line number Diff line number Diff line change
Expand Up @@ -1490,15 +1490,16 @@ class VFBMain extends React.Component {
}.bind(this));

GEPPETTO.on(GEPPETTO.Events.Websocket_disconnected, function () {
if (GEPPETTO.MessageSocket.socketStatus === GEPPETTO.Resources.SocketStatus.CLOSE) {
window.ga('vfb.send', 'event', 'reload', 'websocket-disconnect', (window.location.pathname + window.location.search));
console.log("Reloading websocket connection by reloading page");

setTimeout(() => {
window.location.reload(true);
}, 5000);
} else {
console.log("%c Websocket reconnection in progress... ", 'background: #444; color: #bada55');
window.ga('vfb.send', 'event', 'disconnected', 'websocket-disconnect', (window.location.pathname + window.location.search));
if (GEPPETTO.MessageSocket.socketStatus != GEPPETTO.Resources.SocketStatus.OPEN) {
if (GEPPETTO.MessageSocket.attempts < 10) {
window.ga('vfb.send', 'event', 'reconnect-attempt:' + GEPPETTO.MessageSocket.attempts, 'websocket-disconnect', (window.location.pathname + window.location.search));
GEPPETTO.MessageSocket.reconnect();
} else {
window.ga('vfb.send', 'event', 'reconnect-failed-reloading', 'websocket-disconnect', (window.location.pathname + window.location.search));
console.log("%c Websocket reconnection failed reloading content... ", 'background: #444; color: #bada55');
window.location.reload();
}
}
});
}
Expand Down Expand Up @@ -1582,7 +1583,7 @@ class VFBMain extends React.Component {
}
}
}

render () {
if ((this.state.tutorialWidgetVisible == true) && (this.tutorialRender == undefined)) {
this.tutorialRender = <TutorialWidget tutorialHandler={this.tutorialHandler} ref="tutorialWidgetRef" />
Expand Down
1 change: 0 additions & 1 deletion components/interface/VFBGraph/VFBGraph.js
Original file line number Diff line number Diff line change
Expand Up @@ -367,7 +367,6 @@ class VFBGraph extends Component {
*/
queryResults (requestQuery, instance) {
if ( this.queryRequests.includes(instance.id) ) {
alert("yo")
return;
}

Expand Down
7 changes: 6 additions & 1 deletion components/interface/VFBListViewer/ListViewerControlsMenu.js
Original file line number Diff line number Diff line change
Expand Up @@ -209,6 +209,11 @@ class ListViewerControlsMenu extends Component {
// Replace buttons list in configuration with updated one
button.list = list;
}
if (self.props.instance.isVisible()) {
button.icon.props.className = "fa fa-eye";
} else {
button.icon.props.className = "fa fa-eye-slash";
}
});

return configuration;
Expand Down Expand Up @@ -249,4 +254,4 @@ function mapDispatchToProps (dispatch) {
return { setTermInfo: (instance, visible) => dispatch(setTermInfo(instance, visible )) }
}

export default connect(mapStateToProps, mapDispatchToProps)(ListViewerControlsMenu);
export default connect(mapStateToProps, mapDispatchToProps)(ListViewerControlsMenu);
1 change: 0 additions & 1 deletion components/interface/VFBListViewer/VFBListViewer.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import React, { Component } from 'react';
import ListViewer from '@geppettoengine/geppetto-ui/list-viewer/ListViewer';
import listViewerConf from '../../configuration/VFBListViewer/listViewerConfiguration';
import CircularProgress from '@material-ui/core/CircularProgress';
import { connect } from 'react-redux';

require('../../../css/VFBListViewer.less');
Expand Down
6 changes: 3 additions & 3 deletions components/interface/VFBToolbar/VFBToolBar.js
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ export default class VFBToolBar extends React.Component {
majorVersion = parseInt(navigator.appVersion,10);
}
// return as much of the log up to the last 10 events < 1000 characters:
var logLength = -50;
var logLength = -1;
var limitedLog = window.console.logs.slice(logLength).join('%0A').replace(
/\&/g,escape('&')
).replace(
Expand All @@ -160,8 +160,8 @@ export default class VFBToolBar extends React.Component {
).replace(
/\+/g,'%2B'
);
while (limitedLog.length > 1000 && logLength < 0) {
logLength += 1;
while (limitedLog.length < 1000 && logLength > -50) {
logLength -= 1;
limitedLog = window.console.logs.slice(logLength).join('%0A').replace(
/\&/g,escape('&')
).replace(
Expand Down
5 changes: 3 additions & 2 deletions css/VFBListViewer.less
Original file line number Diff line number Diff line change
Expand Up @@ -7,18 +7,19 @@
flex-direction: column;
.listviewer-container {
display: flex;
flex-direction: column;
flex-wrap: wrap;
overflow: none;
overflow: unset;
> div {
flex-grow: 2;
overflow : auto !important;
}
}

.griddle-filter {
padding: 0.5em;
background-color : #4f4f4f;
border : none !important;
width : 100%;
}

.griddle-filter::placeholder {
Expand Down
79 changes: 33 additions & 46 deletions model/vfb.xmi
Original file line number Diff line number Diff line change
Expand Up @@ -201,7 +201,7 @@
name="anat_image_query"
description="Get images for individual list"
runForCount="false"
query="&quot;statement&quot;: &quot;MATCH (primary:Individual) WHERE primary.short_form in {ARRAY_ID_RESULTS} WITH primary OPTIONAL MATCH (primary)&lt;-[:depicts]-(channel:Individual)-[irw:in_register_with]->(template:Individual)-[:depicts]->(template_anat:Individual) WITH template, channel, template_anat, irw, primary OPTIONAL MATCH (channel)-[:is_specified_output_of]->(technique:Class) WITH CASE WHEN channel IS NULL THEN [] ELSE collect ({ channel: { short_form: channel.short_form, label: coalesce(channel.label,''), iri: channel.iri, types: labels(channel), symbol: coalesce(channel.symbol[0], '')} , imaging_technique: { short_form: technique.short_form, label: coalesce(technique.label,''), iri: technique.iri, types: labels(technique), symbol: coalesce(technique.symbol[0], '')} ,image: { template_channel : { short_form: template.short_form, label: coalesce(template.label,''), iri: template.iri, types: labels(template), symbol: coalesce(template.symbol[0], '')} , template_anatomy: { short_form: template_anat.short_form, label: coalesce(template_anat.label,''), iri: template_anat.iri, types: labels(template_anat), symbol: coalesce(template_anat.symbol[0], '')} ,image_folder: COALESCE(irw.folder[0], ''), index: coalesce(apoc.convert.toInteger(irw.index[0]), []) + [] }}) END AS channel_image,primary OPTIONAL MATCH (primary)-[:INSTANCEOF]->(typ:Class) WITH CASE WHEN typ is null THEN [] ELSE collect ({ short_form: typ.short_form, label: coalesce(typ.label,''), iri: typ.iri, types: labels(typ), symbol: coalesce(typ.symbol[0], '')} ) END AS types,primary,channel_image RETURN { core : { short_form: primary.short_form, label: coalesce(primary.label,''), iri: primary.iri, types: labels(primary), symbol: coalesce(primary.symbol[0], '')} , description : coalesce(primary.description, []), comment : coalesce(primary.comment, []) } AS term, 'bac066c' AS version, 'anat_image_query' AS query, channel_image, types $EXTRA_RESULT_COLUMNS&quot;, &quot;parameters&quot; : { &quot;ARRAY_ID_RESULTS&quot; : $ARRAY_ID_RESULTS}"
query="&quot;statement&quot;: &quot;MATCH (primary:Individual) WHERE primary.short_form in {ARRAY_ID_RESULTS} WITH primary OPTIONAL MATCH (primary)&lt;-[&#xb4;:depicts]-(channel:Individual)-[irw:in_register_with]->(template:Individual)-[:depicts]->(template_anat:Individual) WITH template, channel, template_anat, irw, primary OPTIONAL MATCH (channel)-[:is_specified_output_of]->(technique:Class) WITH CASE WHEN channel IS NULL THEN [] ELSE collect ({ channel: { short_form: channel.short_form, label: coalesce(channel.label,''), iri: channel.iri, types: labels(channel), symbol: coalesce(channel.symbol[0], '')} , imaging_technique: { short_form: technique.short_form, label: coalesce(technique.label,''), iri: technique.iri, types: labels(technique), symbol: coalesce(technique.symbol[0], '')} ,image: { template_channel : { short_form: template.short_form, label: coalesce(template.label,''), iri: template.iri, types: labels(template), symbol: coalesce(template.symbol[0], '')} , template_anatomy: { short_form: template_anat.short_form, label: coalesce(template_anat.label,''), iri: template_anat.iri, types: labels(template_anat), symbol: coalesce(template_anat.symbol[0], '')} ,image_folder: COALESCE(irw.folder[0], ''), index: coalesce(apoc.convert.toInteger(irw.index[0]), []) + [] }}) END AS channel_image,primary OPTIONAL MATCH (primary)-[:INSTANCEOF]->(typ:Class) WITH CASE WHEN typ is null THEN [] ELSE collect ({ short_form: typ.short_form, label: coalesce(typ.label,''), iri: typ.iri, types: labels(typ), symbol: coalesce(typ.symbol[0], '')} ) END AS types,primary,channel_image RETURN { core : { short_form: primary.short_form, label: coalesce(primary.label,''), iri: primary.iri, types: labels(primary), symbol: coalesce(primary.symbol[0], '')} , description : coalesce(primary.description, []), comment : coalesce(primary.comment, []) } AS term, 'bac066c' AS version, 'anat_image_query' AS query, channel_image, types &quot;, &quot;parameters&quot; : { &quot;ARRAY_ID_RESULTS&quot; : $ARRAY_ID_RESULTS}"
countQuery="&quot;statement&quot;: &quot;MATCH(i:Individual) WHERE i.short_form IN {ARRAY_ID_RESULTS} RETURN count(i) as count&quot;, &quot;parameters&quot; : { &quot;ARRAY_ID_RESULTS&quot; : $ARRAY_ID_RESULTS}"/>
<queryChain
xsi:type="gep_2:ProcessQuery"
Expand Down Expand Up @@ -236,13 +236,13 @@
name="Fetch all example individuals for Class"
description="Fetch all example Individual instances of this Class or subclasses"
returnType="//@libraries.3/@types.0"
query="&quot;statement&quot;: &quot;MATCH p=(n:Class { short_form: {ID} } )&lt;-[r:expresses|SUBCLASSOF|INSTANCEOF*..]-(i:Individual)&lt;-[:depicts]-(j:Individual)-[k:in_register_with]->(m:Individual:Template) WITH i, k ORDER BY length(p) asc OPTIONAL MATCH (i)-[:INSTANCEOF]->(c:Class) RETURN distinct i.short_form as id, CASE WHEN not i.synonym is null THEN i.label+replace(' ('+reduce(a='',n in i.synonym|a+n+', ')+')',', )',')') ELSE i.label END as name, i.description[0] as def, COLLECT(DISTINCT c.label) as type, COLLECT(DISTINCT replace(k.folder[0],'http:','https:') + '/thumbnailT.png') as file&quot;, &quot;parameters&quot; : { &quot;ID&quot; : &quot;$ID&quot; }"
countQuery="&quot;statement&quot;: &quot;MATCH (n:VFB:Class { short_form: {ID} } )&lt;-[r:expresses|SUBCLASSOF|INSTANCEOF*..]-(i:Individual)&lt;-[:depicts]-(j:Individual)-[k:in_register_with]->(m:Individual:Template) RETURN count(i) as count&quot;, &quot;parameters&quot; : { &quot;ID&quot; : &quot;$ID&quot; }"/>
query="&quot;statement&quot;: &quot;MATCH (c:Class)&lt;-[:INSTANCEOF]-(primary:Individual)&lt;-[:depicts]-(channel:Individual)-[irw:in_register_with]->(template:Individual)-[:depicts]->(template_anat:Individual) WHERE c.short_form in [{ID}] WITH template, channel, template_anat, irw, primary OPTIONAL MATCH (channel)-[:is_specified_output_of]->(technique:Class) WITH CASE WHEN channel IS NULL THEN [] ELSE collect ({ channel: { short_form: channel.short_form, label: coalesce(channel.label,''), iri: channel.iri, types: labels(channel), symbol: coalesce(channel.symbol[0], '')} , imaging_technique: { short_form: technique.short_form, label: coalesce(technique.label,''), iri: technique.iri, types: labels(technique), symbol: coalesce(technique.symbol[0], '')} ,image: { template_channel : { short_form: template.short_form, label: coalesce(template.label,''), iri: template.iri, types: labels(template), symbol: coalesce(template.symbol[0], '')} , template_anatomy: { short_form: template_anat.short_form, label: coalesce(template_anat.label,''), iri: template_anat.iri, types: labels(template_anat), symbol: coalesce(template_anat.symbol[0], '')} ,image_folder: COALESCE(irw.folder[0], ''), index: coalesce(apoc.convert.toInteger(irw.index[0]), []) + [] }}) END AS channel_image,primary OPTIONAL MATCH (primary)-[:INSTANCEOF]->(typ:Class) WITH CASE WHEN typ is null THEN [] ELSE collect ({ short_form: typ.short_form, label: coalesce(typ.label,''), iri: typ.iri, types: labels(typ), symbol: coalesce(typ.symbol[0], '')} ) END AS types,primary,channel_image RETURN { core : { short_form: primary.short_form, label: coalesce(primary.label,''), iri: primary.iri, types: labels(primary), symbol: coalesce(primary.symbol[0], '')} , description : coalesce(primary.description, []), comment : coalesce(primary.comment, []) } AS term, 'm20210224' AS version, 'EXAMPLES_anat_image_query' AS query, channel_image, types&quot;, &quot;parameters&quot; : { &quot;ID&quot; : &quot;$ID&quot; }"
countQuery="&quot;statement&quot;: &quot;MATCH (c:Class)&lt;-[:INSTANCEOF]-(n:Individual)&lt;-[:depicts]-(channel:Individual)-[irw:in_register_with]->(template:Individual)-[:depicts]->(template_anat:Individual) WHERE c.short_form in [{ID}] RETURN count(n) AS count&quot;, &quot;parameters&quot; : { &quot;ID&quot; : &quot;$ID&quot; }"/>
<queryChain
xsi:type="gep_2:ProcessQuery"
name="Process Images"
returnType="//@libraries.3/@types.0"
queryProcessorId="vfbCreateResultListForIndividualsForQueryResultsQueryProcessor"/>
queryProcessorId="neo4jQueryProcessor"/>
</queries>
<queries
xsi:type="gep_2:CompoundQuery"
Expand Down Expand Up @@ -501,6 +501,26 @@
runForCount="false"
queryProcessorId="neo4jQueryProcessor"/>
</queries>
<queries
xsi:type="gep_2:CompoundQuery"
id="has_similar_morphology_to"
name="NBLAST similarity neo Query"
description="NBLAST similarity neo Query"
returnType="//@libraries.3/@types.0">
<queryChain
xsi:type="gep_2:SimpleQuery"
id="NBLAST_anat_image_query"
name="NBLAST_anat_image_query"
description="find has_similar_morphology_to relationships"
returnType="//@libraries.3/@types.0"
query="&quot;statement&quot;: &quot;MATCH (n:Individual)-[nblast:has_similar_morphology_to]-(primary:Individual) WHERE n.short_form in [{ID}] WITH primary, nblast OPTIONAL MATCH (primary)&lt;-[:depicts]-(channel:Individual)-[irw:in_register_with]->(template:Individual)-[:depicts]->(template_anat:Individual) WITH template, channel, template_anat, irw, primary, nblast OPTIONAL MATCH (channel)-[:is_specified_output_of]->(technique:Class) WITH CASE WHEN channel IS NULL THEN [] ELSE collect ({ channel: { short_form: channel.short_form, label: coalesce(channel.label,''), iri: channel.iri, types: labels(channel), symbol: coalesce(channel.symbol[0], '')} , imaging_technique: { short_form: technique.short_form, label: coalesce(technique.label,''), iri: technique.iri, types: labels(technique), symbol: coalesce(technique.symbol[0], '')} ,image: { template_channel : { short_form: template.short_form, label: coalesce(template.label,''), iri: template.iri, types: labels(template), symbol: coalesce(template.symbol[0], '')} , template_anatomy: { short_form: template_anat.short_form, label: coalesce(template_anat.label,''), iri: template_anat.iri, types: labels(template_anat), symbol: coalesce(template_anat.symbol[0], '')} ,image_folder: COALESCE(irw.folder[0], ''), index: coalesce(apoc.convert.toInteger(irw.index[0]), []) + [] }}) END AS channel_image,primary, nblast OPTIONAL MATCH (primary)-[:INSTANCEOF]->(typ:Class) WITH CASE WHEN typ is null THEN [] ELSE collect ({ short_form: typ.short_form, label: coalesce(typ.label,''), iri: typ.iri, types: labels(typ), symbol: coalesce(typ.symbol[0], '')} ) END AS types,primary,channel_image, nblast RETURN { core : { short_form: primary.short_form, label: coalesce(primary.label,''), iri: primary.iri, types: labels(primary), symbol: coalesce(primary.symbol[0], '')} , description : coalesce(primary.description, []), comment : coalesce(primary.comment, []) } AS term, nblast.NBLAST_score[0] as score, 'm20210225' AS version, 'NBLAST_anat_image_query' AS query, channel_image, types&quot;, &quot;parameters&quot; : { &quot;ID&quot; : &quot;$ID&quot; }"
countQuery="&quot;statement&quot;: &quot;MATCH (n:Individual)-[nblast:has_similar_morphology_to]-(primary:Individual) WHERE n.short_form in [{ID}] RETURN count(primary) AS count&quot;, &quot;parameters&quot; : { &quot;ID&quot; : &quot;$ID&quot; }"/>
<queryChain
xsi:type="gep_2:ProcessQuery"
name="Process Images"
returnType="//@libraries.3/@types.0"
queryProcessorId="neo4jQueryProcessor"/>
</queries>
<fetchVariableQuery
xsi:type="gep_2:CompoundQuery"
name="Compound query for collating term information"
Expand Down Expand Up @@ -822,30 +842,6 @@
description="Keep nothing slimply pass ids and scores"
queryProcessorId="nblastQueryProcessor"/>
</dataSources>
<dataSources
id="opencpuDataSource"
name="NBLAST Data Source (vfbnblast)"
dataSourceService="opencpuDataSource"
url="http://r.virtualflybrain.org/ocpu/library/vfbnblast/R/vfbnblast_neuron/json"
dependenciesLibrary="//@libraries.3"
targetLibrary="//@libraries.4">
<queries
xsi:type="gep_2:SimpleQuery"
id="vfbnblastSimilarTo"
name="VFB NBLAST similar to"
description="Find all similar to $NAME"
query="&quot;query&quot;:&quot;$ID&quot;,&quot;n&quot;:25"
countQuery="">
<matchingCriteria
type="//@libraries.3/@types.0 //@libraries.3/@types.2"/>
</queries>
<queries
xsi:type="gep_2:ProcessQuery"
id="nblastPassIdAndScores"
name="NBLAST pass ids and scores"
description="Keep nothing slimply pass ids and scores"
queryProcessorId="nblastQueryProcessor"/>
</dataSources>
<queries xsi:type="gep_2:CompoundRefQuery"
id="ListAllAvailableImages"
name="List all available images for class with examples"
Expand Down Expand Up @@ -1007,15 +1003,6 @@
<matchingCriteria
type="//@libraries.3/@types.1 //@libraries.3/@types.23"/>
</queries>
<queries xsi:type="gep_2:CompoundRefQuery"
id="SimilarTo"
name="NBLAST Similar to"
description="NBLAST Similar to $NAME"
returnType="//@libraries.3/@types.2"
queryChain="//@dataSources.4/@queries.0 //@dataSources.4/@queries.2 //@dataSources.0/@queries.1">
<matchingCriteria
type="//@libraries.3/@types.0 //@libraries.3/@types.2 //@libraries.3/@types.25"/>
</queries>
<queries xsi:type="gep_2:CompoundRefQuery"
id="targeting"
name="NBLAST GAL4 targeting"
Expand Down Expand Up @@ -1070,15 +1057,6 @@
<matchingCriteria
type="//@libraries.3/@types.20"/>
</queries>
<queries xsi:type="gep_2:CompoundRefQuery"
id="vfbSimilarTo"
name="VFB NBLAST Similar to"
description="NBLAST Similar to $NAME"
returnType="//@libraries.3/@types.2"
queryChain="//@dataSources.5/@queries.0 //@dataSources.4/@queries.2 //@dataSources.0/@queries.1">
<matchingCriteria
type="//@libraries.3/@types.40 //@libraries.3/@types.0 //@libraries.3/@types.2"/>
</queries>
<queries xsi:type="gep_2:CompoundRefQuery"
id="ref_neuron_region_connectivity_query"
name="Show connectivity to regions from Neuron X"
Expand All @@ -1095,4 +1073,13 @@
<matchingCriteria
type="//@libraries.3/@types.42"/>
</queries>
<queries xsi:type="gep_2:CompoundRefQuery"
id="SimilarMorphologyTo"
name="has_similar_morphology_to"
description="Neurons with similar morphology to $NAME [NBLAST mean score]"
returnType="//@libraries.3/@types.2"
queryChain="//@dataSources.0/@queries.17">
<matchingCriteria
type="//@libraries.3/@types.0 //@libraries.3/@types.2 //@libraries.3/@types.25"/>
</queries>
</gep:GeppettoModel>
2 changes: 1 addition & 1 deletion tests/jest/vfb/batch1/layer-component-tests.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ const openControls = async (page, text) => {
let elems = Array.from(document.querySelectorAll('.vfbListViewer .griddle-row'));
for (var i = 0; i < elems.length; i++) {
if (elems[i].innerText.includes(text)) {
elems[1].querySelector(".fa-eye").click()
elems[1].querySelector(".fa-angle-down").click()
break;
}
}
Expand Down
Loading