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!
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 ?
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
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