Cytoscape can read network/pathway files written in the following formats: * Simple interaction file (SIF or .sif format) * Nested network format (NNF or .nnf format) * Graph Markup Language (GML or .gml format) * XGMML (extensible graph markup and modelling language). * SBML * BioPAX * PSI-MI Level 1 and 2.5 * Delimited text * Excel Workbook (.xls) The SIF format specifies nodes and interactions only, while other formats store additional information about network layout and allow network data exchange with a variety of other network programs and data sources. Typically, SIF files are used to import interactions when building a network for the first time, since they are easy to create in a text editor or spreadsheet. Once the interactions have been loaded and network layout has been performed, the network may be saved to GML or XGMML format for interaction with other systems. All file types listed (except Excel) are text files and you can edit and view them in a regular text editor. == SIF Format == The simple interaction format is convenient for building a graph from a list of interactions. It also makes it easy to combine different interaction sets into a larger network, or add new interactions to an existing data set. The main disadvantage is that this format does not include any layout information, forcing Cytoscape to re-compute a new layout of the network each time it is loaded. Lines in the SIF file specify a source node, a relationship type (or edge type), and one or more target nodes: {{{ nodeA nodeB nodeC nodeA nodeD nodeE nodeF nodeB nodeG ... nodeY nodeZ }}} A more specific example is: {{{ node1 typeA node2 node2 typeB node3 node4 node5 node0 }}} The first line identifies two nodes, called node1 and node2, and a single relationship between node1 and node2 of type typeA. The second line specifies three new nodes, node3, node4, and node5; here "node2" refers to the same node as in the first line. The second line also specifies three relationships, all of type typeB and with node2 as the source, with node3, node4, and node5 as the targets. This second form is simply shorthand for specifying multiple relationships of the same type with the same source node. The third line indicates how to specify a node that has no relationships with other nodes. This form is not needed for nodes that do have relationships, since the specification of the relationship implicitly identifies the nodes as well. Duplicate entries are ignored. Multiple edges between the same nodes must have different edge types. For example, the following specifies two edges between the same pair of nodes, one of type xx and one of type yy: {{{ node1 xx node2 node1 xx node2 node1 yy node2 }}} Edges connecting a node to itself (self-edges) are also allowed: {{{ node1 xx node1 }}} Every node and edge in Cytoscape has an identifying name, most commonly used with the node and edge data attribute structures. Node names must be unique, as identically named nodes will be treated as identical nodes. The name of each node will be the name in this file by default (unless another string is mapped to display on the node using the visual mapper). This is discussed in the section on [[Cytoscape_User_Manual/Visual_Styles|visual styles]]. The name of each edge will be formed from the name of the source and target nodes plus the interaction type: for example, {{{sourceName (edgeType) targetName}}}. The tag can be any string. Whole words or concatenated words may be used to define types of relationships, e.g. geneFusion, cogInference, pullsDown, activates, degrades, inactivates, inhibits, phosphorylates, upRegulates, etc. Some common interaction types used in the Systems Biology community are as follows: {{{ pp .................. protein – protein interaction pd .................. protein -> DNA (e.g. transcription factor binding upstream of a regulating gene.) }}} Some less common interaction types used are: {{{ pr .................. protein -> reaction rc .................. reaction -> compound cr .................. compound -> reaction gl .................. genetic lethal relationship pm .................. protein-metabolite interaction mp .................. metabolite-protein interaction }}} === Delimiters === Whitespace (space or tab) is used to delimit the names in the simple interaction file format. However, in some cases spaces are desired in a node name or edge type. The standard is that, if the file contains any tab characters, then tabs are used to delimit the fields and spaces are considered part of the name. If the file contains no tabs, then any spaces are delimiters that separate names (and names cannot contain spaces). If your network unexpectedly contains no edges and node names that look like edge names, it probably means your file contains a stray tab that's fooling the parser. On the other hand, if your network has nodes whose names are half of a full name, then you probably meant to use tabs to separate node names with spaces. Networks in simple interactions format are often stored in files with a {{{.sif}}} extension, and Cytoscape recognizes this extension when browsing a directory for files of this type. 2.7 note : Cytoscape will use URL encode data in node/edge attribute files to properly preserve non-ASCII characters. If this presents a problem, there are two java system properties that can be used to turn off either or both of encoding or decoding :- Property "cytoscape.encode.attributes" can be set to "false" to turn off writing attribute files with URL encoding. Property "cytoscape.decode.attributes" can be set to "false" to turn off decoding during reading. Files using white space will still be read. == NNF == The NNF format is a very simple format that unlike SIF allows the optional assignment of single nested network per node. No other node attributes can be specified. There are only 2 possible line formats: * A node "node" contained in a "network:" {{{network node}}} * 2 nodes linked together contained in a network: {{{network node1 interaction node2}}} If a network name (first entry on a line) appeared previously as a node name (in columns 2 or 4), the network will be nested in the node with the same name. Also, if a name that has been previously defined as a network (by being listed in the first column), later appears as a node name (in columns 2 or 4), the previously defined network will be nested in the node with the same name. In summary: any time a name is used as both, a network name , and a node name, this implies that the network will be nested in the node of the same name. Additionally comments may be included on all lines. Comments start with a hash mark '#' and continue to the end of a line. Trailing comments (after data lines) and entirely blank lines anywhere are also permissible. Please '''note''' that if you load multiple NNF files in Cytoscape they will be treated like a single, long concatenated NNF file! If you need to embed spaces, tabs or backslashes in a name, you must escape it by preceding it with a backslash, so that, e.g. an embedded backslash becomes two backslashes, an embedded space a backslash followed by a space etc. === Examples === ==== Example 1 ==== {{attachment:NNFExample1.png}} {{{ Example_1 C Example_1 network1 network1 A pp B network1 B pp A Example_1 C pp B }}} ==== Example 2 ==== {{attachment:NNFExample2.png}} {{{ Example_2 M1 Example_2 M2 M1 A M2 B pp C Example_2 A pp B Example_2 M1 im M2 }}} ==== Example 3 ==== {{attachment:NNFExample3.png}} {{{ Example_3 M1 im M2 Example_3 M3 im M1 Example_3 M2 im M3 Example_3 C pp M3 Example_3 M2 pp C M1 A M2 A pp B M3 B pp C }}} ==== Example 4 ==== {{attachment:NNFExample4.png}} {{{ Example_4 M1 root M3 M1 A pp B M1 B pp A Example_4 C pp B M3 M2 M2 D M3 E pp F M3 D pp F M3 D pp E Example_4 D pp C Example_4 A pp M2 Example_4 B pp M3 Example_4 M2 pp B }}} ==== Example 5 ==== {{attachment:NNFExample5.png}} {{{ Example_5 M4 M4 D M4 M3 M3 M2 pp C M2 M1 pp B M1 A M4 C pp D }}} == GML Format == In contrast to SIF, GML is a rich graph format language supported by many other network visualization packages. The GML file format specification is available at: http://www.infosun.fmi.uni-passau.de/Graphlet/GML/ It is generally not necessary to modify the content of a GML file directly. Once a network is built in SIF format and then laid out, the layout is preserved by saving to and loading from GML. Visual attributes specified in a GML file will result in a new visual style named {{{Filename.style}}} when that GML file is loaded. == XGMML Format == XGMML is the XML evolution of GML and is based on the GML definition. In addition to network data, XGMML contains node/edge/network attributes. The XGMML file format specification is available at: http://www.cs.rpi.edu/~puninj/XGMML/ XGMML is now preferred to GML because it offers the flexibility associated with all XML document types. If you're unsure about which to use, choose XGMML. 2.7 note : There is a java system property "cytoscape.xgmml.repair.bare.ampersands" that can be set to "true" if you have experience trouble reading older files. This should only be used when an XGMML file or session cannot be read due improperly encoded ampersands, as it slows down the reading process, but this is still preferable to attempting to such files using manual editing. == SBML (Systems Biology Markup Language) Format == The Systems Biology Markup Language (SBML) is an XML format to describe biochemical networks. SBML file format specification is available at: http://sbml.org/documents/ == BioPAX (Biological PAthways eXchange) Format == BioPAX is an OWL (Web Ontology Language) document designed to exchange biological pathways data. The complete set of documents for this format is available at: http://www.biopax.org/index.html == PSI-MI Format == The PSI-MI format is a data exchange format for protein-protein interactions. It is an XML format used to describe PPI and associated data. PSI-MI XML format specification is available at: http://psidev.sourceforge.net/mi/xml/doc/user/ == Delimited Text Table and Excel Workbook == Cytoscape has native support for Microsoft Excel files (.xls) and delimited text files. The tables in these files can have network data and edge attributes. Users can specify columns containg source nodes, target nodes, interaction types, and edge attributes during file import. Some of the other network analysis tools, such as igraph (http://cneurocvs.rmki.kfki.hu/igraph/), has feature to export graph as simple text files. Cytoscape can read these text files and build networks from them. For more detail, please read the Import Free-Format Tables section section of the [[Cytoscape_User_Manual/Creating_Networks|Creating Networks]] chapter. {{attachment:huge_network_igraph.png}} '''Network generated by igraph's Watts-Strogatz small-world model (50k nodes and 250k esges) visualized by Cytoscape:''' You can import networks created by other applications using this Table Import feature. == Node Naming Issues in Cytoscape == Typically, genes are represented by nodes, and interactions (or other biological relationships) are represented by edges between nodes. For compactness, a gene also represents its corresponding protein. Nodes may also be used to represent compounds and reactions (or anything else) instead of genes. If a network of genes or proteins is to be integrated with Gene Ontology (GO) annotation or gene expression data, the gene names must exactly match the names specified in the other data files. We strongly encourage naming genes and proteins by their systematic ORF name or standard accession number; common names may be displayed on the screen for ease of interpretation, so long as these are available to the program in the annotation directory or in a node attribute file. Cytoscape ships with all yeast ORF-to-common name mappings in a synonym table within the {{{annotation/}}} directory. Other organisms will be supported in the future. Why do we recommend using standard gene names? All of the external data formats recognized by Cytoscape provide data associated with particular names of particular objects. For example, a network of protein-protein interactions would list the names of the proteins, and the attribute and expression data would likewise be indexed by the name of the object. The problem is in connecting data from different data sources that don't necessarily use the same name for the same object. For example, genes are commonly referred to by different names, including a formal "location on the chromosome" identifier and one or more common names that are used by ordinary researchers when talking about that gene. Additionally, database identifiers from every database where the gene is stored may be used to refer to a gene (e.g. protein accession numbers from Swiss-Prot). If one data source uses the formal name while a different data source used a common name or identifier, then Cytoscape must figure out that these two different names really refer to the same biological entity. Cytoscape has two strategies for dealing with this naming issue, one simple and one more complex. The simple strategy is to assume that every data source uses the same set of names for every object. If this is the case, then Cytoscape can easily connect all of the different data sources. To handle data sources with different sets of names, as is usually the case when manually integrating gene information from different sources, Cytoscape needs a data server that provides synonym information (see the chapter on [[Cytoscape_User_Manual/Annotation|Annotation]]). A synonym table gives a canonical name for each object in a given organism and one or more recognized synonyms for that object. Note that the synonym table itself defines which set of names are the "canonical" names. For example, in budding yeast, the ORF names are commonly used as the canonical names. If a synonym server is available, then by default Cytoscape will convert every name that appears in a data file to the associated canonical name. Unrecognized names will not be changed. This conversion of names to a common set allows Cytoscape to connect the genes present in different data sources, even if they have different names – as long as those names are recognized by the synonym server. For this to work, Cytoscape must also be provided with the species to which the objects belong, since the data server requires the species in order to uniquely identify the object referred to by a particular name. This is usually done in Cytoscape by specifying the species name on the command line with the –P option ({{{cytoscape.sh -P "defaultSpeciesName=Saccharomyces cerevisiae"}}}) or by editing the properties (under Edit → Preferences → Properties...). The automatic canonicalization of names can be turned off using the -P option ({{{cytoscape.sh -P canonicalizeName=false"}}}) or by editing the properties (under Edit → Preferences → Properties...). This canonicalization of names currently does not apply to expression data. Expression data should use the same names as the other data sources or use the canonical names as defined by the synonym table.