XlinkCyNET

Generate residue-to-residue connections provided by XL-MS in protein interaction networks
**XlinkCyNET** is an open-source Java plugin that generates residue-to-residue connections provided by XL-MS in protein interaction networks. Importantly, it provides an interactive interface for the exploration of cross-links and offers various options to display protein domains. Moreover, XlinkCyNET is integrated to ___PyMOL___, allowing to visualize all identified cross-links in the protein structure. The app works well in complex networks containing thousands of proteins. A [video](https://www.youtube.com/embed/uLuJ7RlFb3I?rel=0&amp;showinfo=0) demonstrating how the application works can be found on the [software website](https://www.theliulab.com/software/xlinkcynet).<br/> A detailed [tutorial](http://dx.doi.org/10.21203/rs.3.pex-1172/v1), which explains step by step the functionality of all parameters is available at *Protocol Exchange*. ***Please cite our paper:***<br/> Lima, DB, *et al.*, **[“XlinkCyNET: A Cytoscape Application for Visualization of Protein Interaction Networks Based on Cross-Linking Mass Spectrometry Identifications”](https://doi.org/10.1021/acs.jproteome.0c00957)**, Journal of Proteome Research (20): 1943–1950, 2021. ###Features &#8618; Visualize protein-protein interaction network based on cross-linking mass spectrometry data<br/> &#8618; Apply a residue-to-residue layout to a Cytoscape interaction network &#8618; Annotate protein domains to all nodes in the network &#8618; Map cross-links on high-resolution structures through PyMOL. <hr/> ###Input file <p>The input file must have the following columns, which should be assigned to the correct column type in Cytoscape.</p> *Required columns:* `gene_a` &#8594; represents the node name: *source node (Local)*, `gene_b` &#8594; represents the node name: *target node (Local)*, `protein_a` &#8594; represents the Uniprot protein accession number of protein a in the following format: db|Unique_Identifier|Entry_Name: *Source Node Attribute (Shared)*, `protein_b` &#8594; represents the Uniprot protein accession number of protein b in the following format: db|Unique_Identifier|Entry_Name: *Target Node Attribute (Shared)*, `length_protein_a` &#8594; represents the number of residues of protein a: *Source Node Attribute (Shared)*, `length_protein_b` &#8594; represents the number of residues of protein b: *Target Node Attribute (Shared)*, `crosslinks_ab` &#8594; represents all links (inter and intra) between protein *a* and *b*. The links must be separated by ‘*#*’: *Edge attribute (Shared)*, `crosslinks_ba` &#8594; represents all links (inter and intra) between protein *b* and *a*. The links must be separated by ‘*#*’: *Edge attribute (Shared)*, *Optional columns:* `ppi_score` &#8594; represents the score of the interaction between two proteins: *Edge attribute (Shared)*, `score_ab` &#8594; represents the score of each intra/interlink from protein *a* to protein *b*. The value must be separated by '#': *Edge attribute (Shared)*. *Example: 2.33e-24#3.67e-19#8.55e-7*, `score_ba` &#8594; represents the score of each intra/interlink from protein *b* to protein *a*. The value must be separated by '#': *Edge attribute (Shared)*. *Example: 2.33e-24#3.67e-19#8.55e-7*. Example file can be found [here](https://github.com/diogobor/XlinkCyNET/tree/master/example_data). <hr> ###Automation &#8618; XlinkCyNET supports Cytoscape Automation from both commands and CyREST by providing six different commands: <br/> <li>`applyRestoreStyle` <br/>attributes: <br/> &#8594; *nodesName*: Give the node(s) name, separated by comma, that will be expanded or restored. (type 'all' to set style to all nodes) <br/> &#8594; *proteinHorizontalExpansion*: Set whether the protein will be expanded horizontally or not. <br/> &#8594; *proteinScalingFactor*: Set a scale factor (between 0 and 1) to the protein length.</li><br/> <li>`loadProteinDomains`<br/>attributes: <br/> &#8594; *fileName* : Name of the protein domain file. (Supported formats: .tab and .csv)<br/>&#8594; *fromPfamServer*: Set which server the protein domains will be retrieved. (true = Pfam, false = Supfam)<br/> &#8594; *nodesName*: Give the node(s) name, separated by comma, to get domains. (type 'all' to get domains of all nodes)</li><br/> <li>`exportProteinDomains`<br/>attribute: <br/> &#8594; *fileName*: Name of the protein domain file. (Supported format: *.csv)</li><br/> <li>`setProteinDomainsColor`<br/>attributes: <br/> &#8594; *domainName*: Name of the protein domain to change the color.<br/> &#8594; *proteinDomainColor*: Set a color to a protein domain (*e.g., 'red' or '#FF0000' or 'FF0000'*)</li><br/> <li>`loadPTMs `<br/>attributes: <br/> &#8594; *fileName* : Name of the PTM(s) file. (Supported formats: .csv)<br/> &#8594; *nodesName*: Give the node(s) name, separated by comma, to find PTM(s). (type 'all' to get domains of all nodes)</li><br/> <li>`exportPTMs`<br/>attribute: <br/> &#8594; *fileName*: Name of the protein domain file. (Supported format: *.csv)</li><br/> <li>`loadMonolinks `<br/>attributes: <br/> &#8594; *fileName* : Name of the Monolinked peptide(s) file. (Supported formats: .csv)</li><br/> <li>`exportMonolinks`<br/>attribute: <br/> &#8594; *fileName*: Name of the protein domain file. (Supported format: *.csv)</li><br/> <li>`setParameters`<br/>attributes: <br/> &#8594; *displayInterlinks*: Display or hide all identified interlinks<br/> &#8594; *displayIntralinks*: Display or hide all identified intralinks<br/> &#8594; *displayMonolinks*: Display or hide all identified intralinked peptides<br/> &#8594; *displayPTM*: Display or hide all PTM(s)<br/> &#8594; *displayLinksLegend*: Display or hide the legends of all identified cross-links<br/> &#8594; *fontSizeLinksLegend*: Set the font size of the legend of all identified cross-links<br/> &#8594; *fontSizeNodesName*: Set the font size of the name of all nodes<br/> &#8594; *interlinksColor*: Set a color to all identified interlinks (*e.g., 'red' or '#FF0000' or 'FF0000'*)<br/> &#8594; *intralinksColor*: Set a color to all identified intralinks (*e.g., 'red' or '#FF0000' or 'FF0000'*)<br/> &#8594; *pTMColor*: Set a color to all post-translational modifications (*e.g., 'red' or '#FF0000' or 'FF0000'*)<br/> &#8594; *monoLinksPeptideColor*: Set a color to all identified intralinked peptides (*e.g., 'red' or '#FF0000' or 'FF0000'*)<br/> &#8594; *nodeBorderColor*: Set a color to all nodes borders (*e.g., 'red' or '#FF0000' or 'FF0000'*)<br/> &#8594; *opacityBorderNodes*: Set the opacity of the border of all nodes (range between 0 - transparent and 255 - opaque)<br/> &#8594; *opacityLinks*: Set the opacity of all identified cross-links (range between 0 - transparent and 255 - opaque)<br/> &#8594; *opacityLinksLegend*: Set the opacity of the legend of all identified cross-links (range between 0 - transparent and 255 - opaque)<br/> &#8594; *scoreInterlink*: Set the threshold score to interlinks. All interlinks that have a -log(score) above the threshold will be displayed.<br/> &#8594; *scoreIntralink*: Set the threshold score to intralinks. All intralinks that have a -log(score) above the threshold will be displayed.<br/> &#8594; *scorePPIlink*: Set the threshold score to PPI links. All PPI links that have a -log(score) above the threshold will be displayed.<br/> &#8594; *widthBorderNodes*: Set the width of the border of all nodes (range between 1 and 10)<br/> &#8594; *widthLinks*: Set the width of all identified cross-links (range between 1 and 10) </li><br/> <li>`readMe`</li> <hr/> <p>Don't hesitate to send us any comments, questions or bug reports to: <img src="http://diogobor.droppages.com/emailBorderless.png" alt="email"/></p> Any feedback is welcomed!<br/><br/> Have fun! :)

1.4.3

Works with Cytoscape 3.8

Release Notes

**Bug fixed**<br/> &#8618; Optimized method to restore nodes and edges.

1.4.2

Works with Cytoscape 3.8

Release Notes

**Bug fixed**<br/> &#8618; Optimized reading method when the number of cross-links is different from the number of cross-link scores.

1.4.1

Works with Cytoscape 3.8

Release Notes

**Bug fixed**<br/> &#8618; Optimized plotting when vertical proteins are displayed.

1.4

Works with Cytoscape 3.8

Release Notes

###Break changes<br/> &#8618; Bug fixed when more the one node with the same name was imported into the network. <br/>Now, ***at the import time***, it is necessary to set the required columns `crosslinks_ab` and `crosslinks_ba` as well as the optional columns `ppi_score`, `score_ab` and `score_ba` as **Edge Attribute**.

1.3.2

Works with Cytoscape 3.8

Release Notes

**Bug fixed**<br/> &#8618; Updated URL to retrieve protein domains from *Supfam* server

1.3.1

Works with Cytoscape 3.8

Release Notes

**Bug fixed**<br/> &#8618; Overlapping of some objects in the <i>Single node interface</i>.

1.3

Works with Cytoscape 3.8

Release Notes

**New:**<br/> &#8618; Display post-translational modifications. <br/> &#8618; Display mono-linked peptides throughout the protein. <br/>

1.2.5

Works with Cytoscape 3.8

Release Notes

**Bug fixed**<br/> &#8618; Load subnetworks method when other columns are already included.

1.2.4

Works with Cytoscape 3.8

Release Notes

**Optimization:**<br/> &#8618; Optimized refresh methods when some parameter is changed on *Settings Panel*. Now the layout is automatically updated. **Bug fixed**<br/> &#8618; PyMOL feature is fixed on Linux. The feature is compatible with Windows, Linux and MacOS operating systems.

1.2.3

Works with Cytoscape 3.8

Release Notes

**Optimization:**<br/> &#8618; Optimized method to align two protein sequences in order to figure out the chain in the PDB or CIF file.

1.2.2

Works with Cytoscape 3.8

Release Notes

**Optimization:**<br/> &#8618; Optimized method to retrieve PDB identifications. **Break changes**<br/> &#8618; In order to make more sense, we have changed the name of two columns of the input file. They are: **crosslinks_ab** and **cross_links_ba** instead of <i>pro_site_ab</i> and <i>pro_site_ba</i>. Now, the input files must have the following columns: <br/> *Required columns:* `gene_a` &#8594; represents the node name: *source node (Local)*, `gene_b` &#8594; represents the node name: *target node (Local)*, `protein_a` &#8594; represents the Uniprot protein accession number of protein a in the following format: db|Unique_Identifier|Entry_Name: *Source Node Attribute (Shared)*, `protein_b` &#8594; represents the Uniprot protein accession number of protein b in the following format: db|Unique_Identifier|Entry_Name: *Target Node Attribute (Shared)*, `length_protein_a` &#8594; represents the number of residues of protein a: *Source Node Attribute (Shared)*, `length_protein_b` &#8594; represents the number of residues of protein b: *Target Node Attribute (Shared)*, `crosslinks_ab` &#8594; represents all links (inter and intra) between protein *a* and *b*. The links must be separated by ‘*#*’: *Source Node Attribute (Shared)*, `crosslinks_ba` &#8594; represents all links (inter and intra) between protein *b* and *a*. The links must be separated by ‘*#*’: *Target Node Attribute (Shared)*, *Optional columns:* `ppi_score` &#8594; represents the score of the interaction between two proteins: *Edge attribute (Shared)*, `score_ab` &#8594; represents the score of each intra/interlink from protein *a* to protein *b*. The value must be separated by '#': *Source Node Attribute (Shared)*. *Example: 2.33e-24#3.67e-19#8.55e-7*, `score_ba` &#8594; represents the score of each intra/interlink from protein *b* to protein *a*. The value must be separated by '#': *Target Node Attribute (Shared)*. *Example: 2.33e-24#3.67e-19#8.55e-7*.

1.2.1

Works with Cytoscape 3.8

Release Notes

**Bug fixed**<br/> &#8618; It has fixed an issue in the method for importing protein domains when they have already stored in the table.

1.2

Works with Cytoscape 3.8

Release Notes

**New:**<br/> &#8618; XlinkCyNET now is integrated to PyMOL. The user can visualize protein structures with all identified cross-links.<br/> &#8618; XlinkCyNET generates *.pml (script file) with all identified cross-linked and call PyMOL directly from Cytoscape.

1.1.3

Works with Cytoscape 3.8

Release Notes

**New:**<br/> &#8618; Filter results by using protein-protein interaction (PPI) or inter/intralinks score. <br/> In this case, three more columns are required in the initial network: <br/> <li>`ppi_score`, which represents the score of the interaction between two proteins (PPI score).</li> <li>`score_ab`, which represents the score of each intra/interlink from protein *a* to protein *b*. The value must be separated by '#'. *Example: 2.33e-24#3.67e-19#8.55e-7*</li> <li>`score_ba`, which represents the score of each intra/interlink from protein *b* to protein *a*. The value must be separated by '#'. *Example: 2.33e-24#3.67e-19#8.55e-7*</li> &#8618; XlinkCyNET now supports Cytoscape Automation by providing six commands: <br/> <li>`readMe`</li> <li>`applyRestoreStyle`</li> <li>`setParameters`</li> <li>`loadProteinDomains`</li> <li>`exportProteinDomains`</li> <li>`setProteinDomainsColor`</li> <hr/> **Optimization:**<br/> &#8618; Optimized domains download method (Supfam or Pfam).

1.1.0

Works with Cytoscape 3.8

Release Notes

&#8618; Save *Settings* parameters in Cytoscape session <br/> &#8618; Updated *About* window

1.0.7

Works with Cytoscape 3.8

Release Notes

&#8618; Initial release.