Skip to content

Commit

Permalink
initial redundancy removal after query #722
Browse files Browse the repository at this point in the history
  • Loading branch information
umut-er committed Jul 2, 2024
1 parent be4a2cd commit 2aba45b
Show file tree
Hide file tree
Showing 3 changed files with 129 additions and 37 deletions.
42 changes: 40 additions & 2 deletions app/js/app-utilities.js
Original file line number Diff line number Diff line change
Expand Up @@ -3802,8 +3802,13 @@ appUtilities.removeDisconnectedNodesAfterQuery = function( querySeedGenes ){
});

var cy = appUtilities.getActiveCy();
var chiseInstance = appUtilities.getActiveChiseInstance();
var nodesToDelete = cy.collection();
cy.nodes().forEach( (node, idx) => {
if(!isAggregateNode(node) && node.parent().length == 0 && node.connectedEdges().length == 0){
nodesToDelete.merge(node);
}

if(isAggregateNode(node) && node.children().connectedEdges().length != 0){
node.children().forEach( (node, idx) => {
if(node.connectedEdges().length == 0 && !isAggregateNode(node)){
Expand All @@ -3822,8 +3827,41 @@ appUtilities.removeDisconnectedNodesAfterQuery = function( querySeedGenes ){
})
}
});
cy.remove(nodesToDelete);
// cy.viewUtilities("get").highlight(nodesToDelete);
chiseInstance.deleteElesSimple(nodesToDelete);
}

appUtilities.removeDuplicateProcessesAfterQuery = function() {
var arrayEquality = function (arr1, arr2) {
if(arr1.length != arr2.length)
return false;

return arr1.every( (item, idx) => item == arr2[idx]);
}

var cy = appUtilities.getActiveCy();
var chiseInstance = appUtilities.getActiveChiseInstance();

var processes = cy.filter('node[class="process"],[class="omitted process"],[class="uncertain process"],[class="association"],[class="dissociation"]');
var nhoods = [];
var deletion = cy.collection();
processes.forEach( (process) => {
var curNHood = process.neighborhood().union(process);
var labelStrings = [];
curNHood.forEach( (item) => {
labelStrings.push(item.data("label") || item.data("class"));
});
labelStrings.sort();

for(let i = 0; i < nhoods.length; i++) {
if(arrayEquality(nhoods[i], labelStrings)){
deletion.merge(process);
break;
}
}
nhoods.push(labelStrings);
});

chiseInstance.deleteElesSimple(deletion);
}

module.exports = appUtilities;
20 changes: 20 additions & 0 deletions app/js/backbone-views.js
Original file line number Diff line number Diff line change
Expand Up @@ -2058,6 +2058,9 @@ var NeighborhoodQueryView = Backbone.View.extend({
var removeDisconnected = document.getElementById(
"query-neighborhood-checkbox"
).checked;
var removeRedundant = document.getElementById(
"query-neighborhood-redundant-checkbox"
).checked;

var geneSymbols = self.currentQueryParameters.geneSymbols.trim();
if (geneSymbols.length === 0) {
Expand Down Expand Up @@ -2183,6 +2186,8 @@ var NeighborhoodQueryView = Backbone.View.extend({
currentGeneralProperties.inferNestingOnLoad =
currentInferNestingOnLoad;

if(removeRedundant)
appUtilities.removeDuplicateProcessesAfterQuery();
if(removeDisconnected)
appUtilities.removeDisconnectedNodesAfterQuery(geneSymbolsArray);
neighborhoodQueryHighlighting();
Expand Down Expand Up @@ -2292,6 +2297,9 @@ var PathsBetweenQueryView = Backbone.View.extend({
var removeDisconnected = document.getElementById(
"query-pathsbetween-checkbox"
).checked;
var removeRedundant = document.getElementById(
"query-pathsbetween-redundant-checkbox"
).checked;

var geneSymbols = self.currentQueryParameters.geneSymbols.trim();
if (geneSymbols.length === 0) {
Expand Down Expand Up @@ -2416,6 +2424,8 @@ var PathsBetweenQueryView = Backbone.View.extend({
currentGeneralProperties.inferNestingOnLoad =
currentInferNestingOnLoad;

if(removeRedundant)
appUtilities.removeDuplicateProcessesAfterQuery();
if(removeDisconnected)
appUtilities.removeDisconnectedNodesAfterQuery(geneSymbolsArray);
pathsBetweenQueryHighlighting();
Expand Down Expand Up @@ -2529,6 +2539,9 @@ var PathsFromToQueryView = Backbone.View.extend({
var removeDisconnected = document.getElementById(
"query-pathsfromto-checkbox"
).checked;
var removeRedundant = document.getElementById(
"query-pathsfromto-redundant-checkbox"
).checked;

var sourceSymbols = self.currentQueryParameters.sourceSymbols.trim();
if (sourceSymbols.length === 0) {
Expand Down Expand Up @@ -2709,6 +2722,8 @@ var PathsFromToQueryView = Backbone.View.extend({
currentGeneralProperties.inferNestingOnLoad =
currentInferNestingOnLoad;

if(removeRedundant)
appUtilities.removeDuplicateProcessesAfterQuery();
if(removeDisconnected)
appUtilities.removeDisconnectedNodesAfterQuery(sourceSymbolsArray.concat(targetSymbolsArray));
pathsFromToQueryHighlighting();
Expand Down Expand Up @@ -2818,6 +2833,9 @@ var CommonStreamQueryView = Backbone.View.extend({
var removeDisconnected = document.getElementById(
"query-commonstream-checkbox"
).checked;
var removeRedundant = document.getElementById(
"query-commonstream-redundant-checkbox"
).checked;

var geneSymbols = self.currentQueryParameters.geneSymbols.trim();
if (geneSymbols.length === 0) {
Expand Down Expand Up @@ -2925,6 +2943,8 @@ var CommonStreamQueryView = Backbone.View.extend({
currentGeneralProperties.inferNestingOnLoad =
currentInferNestingOnLoad;

if(removeRedundant)
appUtilities.removeDuplicateProcessesAfterQuery();
if(removeDisconnected)
appUtilities.removeDisconnectedNodesAfterQuery(geneSymbolsArray);
commonStreamHighlighting();
Expand Down
104 changes: 69 additions & 35 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -3557,30 +3557,39 @@ <h4 class="modal-title">Neighborhood Query</h4>
<td style="padding-left: 40px;">
<table>
<tbody>
<caption style="text-align: left;"> Gene Symbols </caption>
<tr>
<td style="padding-left: 0px; padding-top: 0px">
<textarea id="query-neighborhood-gene-symbols" rows="4" cols="86" style="width: 200px;"><%= geneSymbols %></textarea>
<td>
</tr>
<caption style="text-align: left;"> Gene Symbols </caption>
<tr>
<td style="padding-left: 0px; padding-top: 0px">
<textarea id="query-neighborhood-gene-symbols" rows="5" cols="86" style="width: 200px;"><%= geneSymbols %></textarea>
<td>
</tr>
<tbody>
</table>
</td>

<td style="padding-right: 5px;">
<table frame="box" style="border-color: rgb(204, 204, 204)">
<tbody>
<caption style="text-align: left;">Stop Distance</caption>
<tr>
<td colspan=2>Length limit</td>
<td style="padding: 10px;"><input id="query-neighborhood-length-limit" type="text" min="1" class="sbgn-input-small layout-text integer-input" style="width: 90px;" value= <%= lengthLimit %> > </td>
</tr>
</tbody>
<tbody>
<caption style="text-align: left;">Stop Distance</caption>
<tr>
<td colspan=2>Length limit</td>
<td style="padding: 10px;"><input id="query-neighborhood-length-limit" type="text" min="1" class="sbgn-input-small layout-text integer-input" style="width: 90px;" value= <%= lengthLimit %> > </td>
</tr>
</tbody>
</table>

<table style="margin-top: 7px">
<tbody>
<tr>
<td class="caption-style-text" style="padding-left: 0;">Remove Disconnected Nodes:</td>
<td><input id="query-neighborhood-checkbox" type="checkbox" class="layout-text" checked></td>
</tr>
<tr>
<td class="caption-style-text" style="padding-left: 0;">Remove Redundant Nodes:</td>
<td><input id="query-neighborhood-redundant-checkbox" type="checkbox" class="layout-text" checked></td>
</tr>
</tbody>
</table>
<div style="padding-top: 17px; display: flex; flex-direction: row; column-gap: 5px;">
<div class="caption-style-text">Remove Disconnected Nodes:</div>
<input id="query-neighborhood-checkbox" type="checkbox" class="layout-text" style="margin: 0 0;" checked>
</div>
</td>

</tr>
Expand Down Expand Up @@ -3618,7 +3627,7 @@ <h4 class="modal-title">Paths Between Query</h4>
<caption style="text-align: left;"> Gene Symbols </caption>
<tr>
<td style="padding-left: 0px; padding-top: 0px">
<textarea id="query-pathsbetween-gene-symbols" rows="4" cols="86" style="width: 200px;"><%= geneSymbols %></textarea>
<textarea id="query-pathsbetween-gene-symbols" rows="5" cols="86" style="width: 200px;"><%= geneSymbols %></textarea>
<td>
</tr>
<tbody>
Expand All @@ -3635,10 +3644,18 @@ <h4 class="modal-title">Paths Between Query</h4>
</tr>
</tbody>
</table>
<div style="padding-top: 17px; display: flex; flex-direction: row; column-gap: 5px;">
<div class="caption-style-text">Remove Disconnected Nodes:</div>
<input id="query-pathsbetween-checkbox" type="checkbox" class="layout-text" style="margin: 0 0;" checked>
</div>
<table style="margin-top: 7px">
<tbody>
<tr>
<td class="caption-style-text" style="padding-left: 0;">Remove Disconnected Nodes:</td>
<td><input id="query-pathsbetween-checkbox" type="checkbox" class="layout-text" checked></td>
</tr>
<tr>
<td class="caption-style-text" style="padding-left: 0;">Remove Redundant Nodes:</td>
<td><input id="query-pathsbetween-redundant-checkbox" type="checkbox" class="layout-text" checked></td>
</tr>
</tbody>
</table>
</td>

</tr>
Expand All @@ -3654,7 +3671,7 @@ <h4 class="modal-title">Paths Between Query</h4>
</script>

<script type="text/template" id="query-pathsfromto-template">
<div class="modal-dialog sbgn-modal-dialog" style="width: 575px;">
<div class="modal-dialog sbgn-modal-dialog" style="width: 587px;">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">&times;</button>
Expand All @@ -3676,7 +3693,7 @@ <h4 class="modal-title">Paths From To Query</h4>
<caption style="text-align: left;"> Source Symbols </caption>
<tr>
<td style="padding-left: 0px; padding-top: 0px">
<textarea id="query-pathsfromto-source-symbols" rows="4" cols="80" style="width: 150px;"><%= sourceSymbols %></textarea>
<textarea id="query-pathsfromto-source-symbols" rows="5" cols="80" style="width: 150px;"><%= sourceSymbols %></textarea>
<td>
</tr>
<tbody>
Expand All @@ -3689,7 +3706,7 @@ <h4 class="modal-title">Paths From To Query</h4>
<caption style="text-align: left;"> Target Symbols </caption>
<tr>
<td style="padding-left: 0px; padding-top: 0px">
<textarea id="query-pathsfromto-target-symbols" rows="4" cols="80" style="width: 150px;"><%= targetSymbols %></textarea>
<textarea id="query-pathsfromto-target-symbols" rows="5" cols="80" style="width: 150px;"><%= targetSymbols %></textarea>
<td>
</tr>
<tbody>
Expand All @@ -3707,10 +3724,18 @@ <h4 class="modal-title">Paths From To Query</h4>
</tbody>
</table>

<div style="padding-top: 17px; display: flex; flex-direction: row; column-gap: 5px;">
<div class="caption-style-text">Remove Disconnected Nodes:</div>
<input id="query-pathsfromto-checkbox" type="checkbox" class="layout-text" style="margin: 0 0;" checked>
</div>
<table style="margin-top: 7px">
<tbody>
<tr>
<td class="caption-style-text" style="padding-left: 0;">Remove Disconnected Nodes:</td>
<td><input id="query-pathsfromto-checkbox" type="checkbox" class="layout-text" checked></td>
</tr>
<tr>
<td class="caption-style-text" style="padding-left: 0;">Remove Redundant Nodes:</td>
<td><input id="query-pathsfromto-redundant-checkbox" type="checkbox" class="layout-text" checked></td>
</tr>
</tbody>
</table>
</td>

</tr>
Expand All @@ -3726,7 +3751,7 @@ <h4 class="modal-title">Paths From To Query</h4>
</script>

<script type="text/template" id="query-commonstream-template">
<div class="modal-dialog sbgn-modal-dialog" style="width: 540px;">
<div class="modal-dialog sbgn-modal-dialog" style="width: 560px;">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">&times;</button>
Expand All @@ -3748,7 +3773,7 @@ <h4 class="modal-title">Common Stream Query</h4>
<caption style="text-align: left;"> Gene Symbols </caption>
<tr>
<td style="padding-left: 0px; padding-top: 0px">
<textarea id="query-commonstream-gene-symbols" rows="4" cols="86" style="width: 200px;"><%= geneSymbols %></textarea>
<textarea id="query-commonstream-gene-symbols" rows="5" cols="86" style="width: 200px;"><%= geneSymbols %></textarea>
<td>
</tr>
<tbody>
Expand All @@ -3765,10 +3790,19 @@ <h4 class="modal-title">Common Stream Query</h4>
</tr>
</tbody>
</table>
<div style="padding-top: 17px; display: flex; flex-direction: row; column-gap: 5px;">
<div class="caption-style-text">Remove Disconnected Nodes:</div>
<input id="query-commonstream-checkbox" type="checkbox" class="layout-text" style="margin: 0 0;" checked>
</div>

<table style="margin-top: 7px">
<tbody>
<tr>
<td class="caption-style-text" style="padding-left: 0;">Remove Disconnected Nodes:</td>
<td><input id="query-commonstream-checkbox" type="checkbox" class="layout-text" checked></td>
</tr>
<tr>
<td class="caption-style-text" style="padding-left: 0;">Remove Redundant Nodes:</td>
<td><input id="query-commonstream-redundant-checkbox" type="checkbox" class="layout-text" checked></td>
</tr>
</tbody>
</table>
</td>

</tr>
Expand Down

0 comments on commit 2aba45b

Please sign in to comment.