About
This page provides several details about the web application.
Introduction
NetControl4BioMed is a free open-source web-based application (the second version of the software described here ), aimed primarily at applications in biomedicine and allowing for:
  • User-driven data protein-protein interaction network generation.
  • Network controllability analysis focused on highly personalized drug-repurposing and drug-therapy suggestions.
  • Cloud-based solution facilitating collaboration between users.
The new version offers greatly improved performance, allowing for the processing of larger networks, it expands on the datasets available to build and analyze the protein-protein interaction networks, and it offers support for collaboration through sharing networks and analyses.
Tutorial on PPI data
This is a short tutorial to get started with constructing a PPI (protein-protein interaction) network and analyzing it. In this tutorial, as a study case, we will construct a PPI network around the proteins of importance to the breast cancer cell-line HCC1500 (namely, the proteins corresponding to the mutated and the essential genes in the cell-line), which we will then analyze by identifying drug-targetable controlling proteins and their control paths to the proteins corresponding to the essential genes. Unlike in the case of generic networks, here you will need to provide a list of seed proteins, around which the application will generate the actual network. In order to upload it, you need to provide a list of edges in the network. The steps are mostly similar to the ones described above, however some additional input will be required, such as the databases in which to look up the interactions. From the main content page you can navigate to the PPI area of the application.
Navigating to the PPI area.
You can start the creation process network by navigating to the PPI networks overview page. You can load one of the available samples (including the one used in this tutorial) using the corresponding button on the network creation page.
You first need to assign a name to the network. It does not need to be unique, as a unique identifier will be assigned to it upon creation, but it's recommended to give each network a name that represents it. Furthermore, you can also add a fitting description, although it is not required.
Inputting the details for the PPI network.
If you are logged in, you have the possibility to make the network private (meaning that only you and the people you manually assign to it will have access to it) or public (anyone with its link or unique identifier, can access it). Unregistered users can only create public networks.
Setting the availability for the PPI network.
The main input that is required for a PPI network is the list of seed proteins (which are, in this case, protein identifiers) around which to build the network. Two consecutive proteins should be separated by a "line separator" (by default, "new line"). The separator can be configured, and the number of provided proteins will be updated automatically as you type.
Inputting the seed data for the PPI network.
Additionally (or as an alternative to providing them manually), you can also specify the ID of one or more protein collections (namely, containing cell-line or drug-target data) whose corresponding proteins will be used as additional seed proteins.
Choosing from the available additional seed data for the PPI network.
Inputting the additional seed data for the PPI network.
You also need to choose the databases to be used. The protein identifiers (for example, "EGFR" or "ENSG00000146648") that you will provide will be looked up in the specified protein databases (for example, for the two provided identifiers to be found, you would need to specify the IDs of the "HGNC" and "Ensembl" databases). If you are not sure, you can just input the IDs of all of the available databases, although this will increase the time it takes to generate the network. The available databases can be found here.
Choosing from the available protein databases for the PPI network.
Inputting the protein databases for the PPI network.
Once the corresponding proteins will have been found, the interactions between them will be looked up in the specified interaction databases (one interaction may appear in one or more of the databases). The available databases can be found here.
Choosing from the available interaction databases for the PPI network.
Inputting the interaction databases for the PPI network.
The actual interactions which will be included in the network depend on the chosen generation algorithm:
  • Neighbors, which considers all of the interactions containing the provided seed proteins.
  • Gap X, which considers all of the interactions between the provided seed proteins, with X or less intermediary proteins. A value of zero will only take into account the interactions between the provided seed proteins.
Choosing the algorithm for the PPI network.
Once all of the inputs have been successfully filled in, you can click the "Create" button.
Submitting the data to create the PPI network.
An error will immediately be returned if any of the provided data is missing and you will be prompted to change the corresponding inputs. Otherwise, the network will be defined and you will be redirected to its corresponding page. The next step is the actual network generation, which will be performed automatically in the background.
You can check the current status of the network at all times. If an error occurs during the generation, it will be shown in the message log, at the bottom of the page. Otherwise, the network was successfully generated and can now be checked, shared and used in analyses!
Checking the completed PPI network.
The completed network can be downloaded in a variety of formats for offline processing and visualization (for example, using Cytoscape ). Additionally, if the network is relatively small (for performance reasons, under 500 proteins), it can also be visualized in the browser. However, this can quickly become overwhelming even for smaller networks.
Please note that creating a network (or having access to one) is required in order to create an analysis!
Once a network has been generated, you can start its analysis by navigating to the Analyses overview page. You can load one of the available samples (including the one used in this tutorial) using the corresponding button on the network creation page. The control analysis uses the greedy algorithm described here or the genetic algorithm described here .
Similar as for a network, you first need to assign a name to the analysis. It does not need to be unique, as a unique identifier will be assigned to it upon creation, but it's recommended to give each analysis a name that represents it. Furthermore, you can also add a fitting description, although it is not required.
Inputting the details for the PPI analysis.
If you are logged in, you have the possibility to make the analysis private (meaning that only you and the people you manually assign to it will have access to it) or public (anyone with its link or unique identifier, can access it). Unregistered users can only create public analyses.
Setting the availability for the PPI analysis.
First, you need to provide the unique identifiers of the networks which will be used by the analysis. If more than one network is provided, then a combined network will be generated, containing every interaction of each network. You need to have access to the specified networks, in order to use them in an analysis. In this particular case, you should use the ID of the freshly constructed PPI network.
Inputting the network data for the PPI analysis.
Optionally, you can provide a set of source proteins to be used by the analysis. The source proteins represent proteins which are more likely to be chosen as controlling proteins. Two consecutive proteins should be separated by a "line separator" (by default, "new line"). The separator can be configured, and the number of provided proteins will be updated automatically as you type.
Inputting the source data for the PPI analysis.
Additionally (or as an alternative to providing them manually), you can also specify the ID of one or more protein collections (namely, containing drug-target data) whose corresponding proteins will be used as additional source proteins.
Choosing from the available additional source data for the PPI analysis.
Inputting the additional source data for the PPI analysis.
The actual way in which the provided source proteins will influence the analysis can be configured within the algorithm parameters. All source proteins that can not be found in the combined network will be ignored.
Next, you need to provide the set of target proteins to be used by the analysis. The target proteins represent the proteins which you want to control (for example, disease-specific essential proteins). Two consecutive proteins should be separated by a "line separator" (by default, "new line"). The separator can be configured, and the number of provided proteins will be updated automatically as you type.
Inputting the target data for the analysis.
Additionally (or as an alternative to providing them manually), you can also specify the ID of one or more protein collections (namely, containing cell-line data) whose corresponding proteins will be used as additional target proteins.
Choosing from the available additional target data for the PPI analysis.
Inputting the additional target data for the PPI analysis.
All target proteins that can not be found in the combined network will be ignored.
Lastly, the required parameters change depending on the type of the algorithm. The details of each parameter are provided on the analysis creation page.
Inputting the parameters for the PPI analysis algorithm.
Once all of the inputs have been successfully filled in, you can click the "Create" button.
Submitting the data to create the PPI analysis.
An error will immediately be returned if any of the provided data is missing and you will be prompted to change the corresponding inputs. Otherwise, the analysis will be defined and you will be redirected to its corresponding page. The next step is the generation of the combined network corresponding to the analysis, which will be performed automatically in the background.
You can check the current status of the analysis at all times. If an error occurs during its generation or its run, it will be shown in the message log, at the bottom of the page. Otherwise, the analysis was successfully generated and will be automatically started. You can track its progress on the corresponding page, and stop it at any time. Once the analysis has ended, its output can be viewed, checked and shared!
Checking the completed PPI analysis.
The completed analysis and its output can be downloaded in a variety of formats for offline processing and visualization (for example, using Cytoscape ). Additionally, if its corresponding network is relatively small (for performance reasons, under 500 proteins), it can also be visualized in the browser. However, this can quickly become overwhelming even for smaller networks.
As output, the analysis returns one or more sets of controlling proteins which are able to control all of the provided target proteins. These controlling sets can be separately inspected, visualized and downloaded.
Checking a control path returned by the PPI analysis.
Furthermore, you can view more details about each of the controlling proteins (or about each of the proteins in the control path). For example, you can check the data of the returned protein which controls the most target proteins, to see if there already exists a drug targeting it.
Tutorial on generic data
This is a short tutorial to get started with uploading a generic network and analyzing it. A generic network represents a network of no specific type. In this tutorial, we will upload and analyze a small randomly-generated generic network. In order to upload it, you need to provide a list of edges in the network. From the main content page you can navigate to the generic area of the application.
Navigating to the generic area.
You can start the creation process network by navigating to the generic networks overview page. You can load one of the available samples (including the one used in this tutorial) using the corresponding button on the network creation page.
You first need to assign a name to the network. It does not need to be unique, as a unique identifier will be assigned to it upon creation, but it's recommended to give each network a name that represents it. Furthermore, you can also add a fitting description, although it is not required.
Inputting the details for the generic network.
If you are logged in, you have the possibility to make the network private (meaning that only you and the people you manually assign to it will have access to it) or public (anyone with its link or unique identifier, can access it). Unregistered users can only create public networks.
Setting the availability for the generic network.
The only input that is required for a generic network is the list of edges. Each edge should contain exactly two nodes, separated by an "in-line separator" (by default, ";"). Two consecutive edges should be separated by a "line separator" (by default, "new line"). Both separators can be configured, and the number of provided edges will be updated automatically as you type.
Inputting the seed data for the generic network.
Once all of the inputs have been successfully filled in, you can click the "Create" button.
Submitting the data to create the generic network.
An error will immediately be returned if any of the provided data is missing and you will be prompted to change the corresponding inputs. Otherwise, the network will be defined and you will be redirected to its corresponding page. The next step is the actual network generation, which will be performed automatically in the background.
You can check the current status of the network at all times. If an error occurs during the generation, it will be shown in the message log, at the bottom of the page. Otherwise, the network was successfully generated and can now be checked, shared and used in analyses!
Checking the completed generic network.
The completed network can be downloaded in a variety of formats for offline processing and visualization (for example, using Cytoscape ). Additionally, if the network is relatively small (for performance reasons, under 500 nodes), it can also be visualized in the browser. However, this can quickly become overwhelming even for smaller networks.
Visualizing the generic network in-browser.
Once the network is ready, you can move on to analyzing it. Please note that creating a network (or having access to one) is required in order to create an analysis!
Please note that creating a network (or having access to one) is required in order to create an analysis!
Once a network has been generated, you can start its analysis by navigating to the Analyses overview page. You can load one of the available samples (including the one used in this tutorial) using the corresponding button on the analysis creation page. The control analysis uses the greedy algorithm described here or the genetic algorithm described here .
Similar as for a network, you first need to assign a name to the analysis. It does not need to be unique, as a unique identifier will be assigned to it upon creation, but it's recommended to give each analysis a name that represents it. Furthermore, you can also add a fitting description, although it is not required.
Inputting the details for the generic analysis.
If you are logged in, you have the possibility to make the analysis private (meaning that only you and the people you manually assign to it will have access to it) or public (anyone with its link or unique identifier, can access it). Unregistered users can only create public analyses.
Setting the availability for the generic analysis.
First, you need to provide the unique identifiers of the networks which will be used by the analysis. If more than one network is provided, then a combined network will be generated, containing every interaction of each network (however, in the case of generic networks, each is a separate entity, so the combined network will just contain separate connected components). You need to have access to the specified networks, in order to use them in an analysis. In this particular case, you should use the ID of the freshly constructed generic network.
Inputting the network data for the generic analysis.
Optionally, you can provide a set of source nodes to be used by the analysis. The source nodes represent nodes which are more likely to be chosen as controlling nodes. Two consecutive nodes should be separated by a "line separator" (by default, "new line"). The separator can be configured, and the number of provided nodes will be updated automatically as you type.
Inputting the source data for the generic analysis.
The actual way in which the provided source nodes will influence the analysis can be configured within the algorithm parameters. All source nodes that can not be found in the combined network will be ignored.
Next, you need to provide the set of target nodes to be used by the analysis. The target proteins represent the nodes which you want to control. Two consecutive nodes should be separated by a "line separator" (by default, "new line"). The separator can be configured, and the number of provided nodes will be updated automatically as you type.
Inputting the target data for the generic analysis.
All target nodes that can not be found in the combined network will be ignored.
Lastly, the required parameters change depending on the type of the algorithm. The details of each parameter are provided on the analysis creation page.
Inputting the parameters for the generic analysis algorithm.
Once all of the inputs have been successfully filled in, you can click the "Create" button.
Submitting the data to create the generic analysis.
An error will immediately be returned if any of the provided data is missing and you will be prompted to change the corresponding inputs. Otherwise, the analysis will be defined and you will be redirected to its corresponding page. The next step is the generation of the combined network corresponding to the analysis, which will be performed automatically in the background.
You can check the current status of the analysis at all times. If an error occurs during its generation or its run, it will be shown in the message log, at the bottom of the page. Otherwise, the analysis was successfully generated and will be automatically started. You can track its progress on the corresponding page, and stop it at any time. Once the analysis has ended, its output can be viewed, checked and shared!
Checking the completed generic analysis.
The completed analysis and its output can be downloaded in a variety of formats for offline processing and visualization (for example, using Cytoscape ). Additionally, if its corresponding network is relatively small (for performance reasons, under 500 nodes), it can also be visualized in the browser. However, this can quickly become overwhelming even for smaller networks.
Visualizing the generic analysis in-browser.
As output, the analysis returns one or more sets of controlling nodes which are able to control all of the provided target nodes. These controlling sets can be separately inspected, visualized and downloaded.
Checking a control path returned by the generic analysis.
Visualizing a control path returned by the generic analysis.
Acknowledgements
The logo was created by SmashIcons , downloaded from FlatIcon , and formatted using Real FavIcon Generator .
The icons used throughout the application were created by FontAwesome .
The entire front-end works and looks as it does thanks to JQuery and Bootstrap .
The client-side validation is performed using JQuery Validation and JQuery Validation Unobtrusive .
The graphs are drawn and styled using CytoscapeJS .
The tables are partly formatted using DataTables .
The QR code for two-factor authentication is generated using JQuery QR Code .
The background tasks are managed with the help of Hangfire .
The behind-the-scenes matrix operations are handled using MathNET Numerics .
The download of data is made possible also using Open XML .
The e-mail sending service is provided by SendGrid .