How to use Cytoscape to analyze molecular relationships between genes
1
0
Entering edit mode
3.9 years ago

Hi, I am interested in using Cytoscape to analyze molecular relationships between genes, and I have been reading the tutorials on the Cytoscape website, but am unsure how to use Cytoscape for "one-to-many" comparisons.

For example, each gene is typically assigned as a "node", with "edges" that correspond interactions with other genes. Cytoscape used "Attributes" to map node or edge names to specific data values. In a simple "one-to-one" comparison, you might have a list of 10 genes with their expression values, such that the attribute for each gene would be 1) the name of the gene and 2) the expression value. It looks clear how Cytoscape would use these types of data to construct the interaction network.

However, I have multiple data values for each gene (node), e.g. for Gene X, I will have data values that indicate the predicted interactions between Gene X and all other genes in the analysis. It isn't clear to me how to use attributes or other Cytoscape features to translate this type of "one-to-many" data set into the format that Cytoscape can read.

My goal is to have a certain number of genes as the nodes, with edges connecting each gene to any other gene that it is predicted to interact with, just like the canonical gene interaction analysis plots that Cytoscape and similar software produce.

Please let me know if anyone has advice on how to properly use "one-to-many" data as input for Cytoscape.

Thanks!

cytoscape gene interaction analysis • 922 views
ADD COMMENT
0
Entering edit mode

so if I understand this correctly, for every gene you have values in between this gene to all other genes. One possibility that I can think on the top of my head would be to make these "values" as the weights of your edges? For the purpose of visualization, you can use these "weights" to construct a spring embedded layout. Just a curious question for the values : for any nodes i,j in the dataset and a being the "value" - is aij == aji ?

ADD REPLY
0
Entering edit mode

Thanks for your response. I'm not sure if I understand your question, but are you asking if the values that represent the interactions between two genes equal and reciprocal? For example, would the value (edge) between genes A and B (nodes) also be the same as the value between genes B and A?

If that is your question, the answer is no. Each pairwise interaction between genes could be unique, although depending on how we calculate the value based on the input data, there could be values that are the same, either between different pairs of interacting genes, or between the same pair. Do you think that complicates the analysis? My guess is that each "edge" between two "nodes" has to have a single value, whereas the analysis I want to do actually requires two values (e.g. one value represents the regulation of gene B by gene A, and the other value represents the regulation of gene A by gene B).

Thanks again

ADD REPLY
0
Entering edit mode

ah, okay. I had imagined that the two values shared between two nodes would be the same, which does not seem to be the case. If I had such "values", the very first thing that I would do in network construction is to use these values as weights of my edges to visualize if the network has any clusters (nodes with lower/higher "values" among themselves would cluster together, as an example?). Optionally, what I would also consider doing is filtering the "values" for certain threshold (i.e if the "value" between two nodes is above a certain threshold, only then connect them with an edge). That being said, I am not sure what is the cleanest way to do this when you have two edges in between two nodes

ADD REPLY
0
Entering edit mode
3.9 years ago
scooter ▴ 620

Greetings, Cytoscape can support multiple attributes on either nodes or edges. In your case, it sounds like you have a situation where you have (for example) a node that links to several other nodes and that link has multiple attributes, so something like this:

source,target,attr1,attr2 node1,node2,0.1,0.2 node1,node3,0.01,0.0 node1,node4,0.5,0.0 node2,node3,0,0.1 ...

Alternatively, if you have, for example, your values represent two different relationships or two different directions, you could split them up:

source,target,attr node1,node2,0.1 node2,node1,0.2 node1,node3,0.01 node1,node4,0.5 node3,node2,0.1

Note that I dropped edges with a 0 values -- you may or may not what to do that. Cytoscape's underlying model is a multigraph, so you can have as many edges between two nodes as you want.

-- scooter

ADD COMMENT

Login before adding your answer.

Traffic: 2214 users visited in the last hour
Help About
FAQ
Access RSS
API
Stats

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.

Powered by the version 2.3.6