8311
Comment:
|
10007
|
Deletions are marked like this. | Additions are marked like this. |
Line 41: | Line 41: |
An inter-plugin communication module was developed to support !CyThesaurus plugin providing ID mapping services to other plugins. It is recommended that other plugins, who need to request ID mapping services from !CyThesaurus, include the package cytoscape-plugins-comm ([[http://chianti.ucsd.edu/svn/csplugins/trunk/soc/jgao/IDMapping/lib/cytoscape-plugins-comm.jar|.jar]], [[http://web.missouri.edu/~jg722/GSoC/cytoscape-plugins-comm-javadoc/|javadoc]], [[http://chianti.ucsd.edu/svn/csplugins/trunk/soc/jgao/PluginsCommunication/|src]]). The following services are supported. === Test request === Test if the services are available. {{{ #!java String sender = pluginName; String receiver = "CyThesaurus"; // plugin name when passing messages String msgType = Message.MSG_TYPE_TEST; // indicate what this message requests for String msgId = receiver + System.currentTimeMillis(); Message msg = new Message(msgId , sender, receiver, msgType , null); List<ResponseMessage> response = PluginsCommunicationSupport.sendMessageAndGetResponses(msg); if (!response.isEmpty()) { // the ID mapping services are available } }}} === ID mapping request === Request to mapping the IDs of source ID types in one attribute to the target ID types and save in the target attribute {{{ #!java String sender = pluginName; String receiver = "CyThesaurus"; String msgType = "REQUEST_MAPPING"; // request for ID mapping service String msgId = receiver + System.currentTimeMillis(); Map content = new HashMap(); content.put("NETWORK_ID", new String[]{"net1", "net2"}); // if NETWORK_ID is not specified, ID mapping will be performed on all networks in session // or content.put("NETWORK_ID", "net1"); content.put("SOURCE_ATTR", new String[]{"Attr1", "Attr2"}); // or content.put("SOURCE_ATTR", "ID"); content.put("SOURCE_ID_TYPE", new String[]{"Type1","Type2"}); // if SOURCE_ID_TYPE is not specified, all supported source id types will be used // or content.put("SOURCE_ID_TYPE", "Type1"); content.put("TARGET_ATTR", "tgtAttr"); // if TARGET_ATTR is not specified, a default one will be assigned content.put("TARGET_ID_TYPE", "tgtType"); |
An inter-plugin communication module was developed to support !CyThesaurus plugin providing ID mapping services to other plugins. It is recommended that other plugins, who need to request ID mapping services from !CyThesaurus, include the package cytoscape-plugins-comm ( [[attachment:cytoscape-plugins-comm.jar]], [[http://web.missouri.edu/~jg722/GSoC/cytoscape-plugins-comm-javadoc/|javadoc]], [[http://chianti.ucsd.edu/svn/csplugins/trunk/soc/jgao/PluginsCommunication/|src]]). The following services are supported. === Supported ID mapping services === 1. '''Test request''': Test if the services are available. {{{ #!java String sender = pluginName; String receiver = "CyThesaurus"; // plugin name when passing messages String msgType = Message.MSG_TYPE_TEST; // indicate what this message requests for String msgId = receiver + System.currentTimeMillis(); Message msg = new Message(msgId , sender, receiver, msgType , null); List<ResponseMessage> response = PluginsCommunicationSupport.sendMessageAndGetResponses(msg); if (!response.isEmpty()) { // the ID mapping services are available } }}} 1. '''ID mapping services list''': get all the ID mapping services {{{ #!java String receiver = "CyThesaurus"; // plugin name when passing messages Set<String> types = PluginsCommunicationSupport.getMessageTypes(receiver); if (!types.isEmpty()) { // the ID mapping services are available } else { // ID mapping services are unavailable } }}} 1. '''ID mapping request''': Request to mapping the IDs of source ID types in one attribute to the target ID types and save in the target attribute {{{ #!java String sender = pluginName; String receiver = "CyThesaurus"; String msgType = "REQUEST_MAPPING"; // request for ID mapping service String msgId = receiver + System.currentTimeMillis(); Map content = new HashMap(); content.put("NETWORK_ID", new String[]{"net1", "net2"}); // if NETWORK_ID is not specified, //ID mapping will be performed on all networks in session // or content.put("NETWORK_ID", "net1"); content.put("SOURCE_ATTR", new String[]{"Attr1", "Attr2"}); // or content.put("SOURCE_ATTR", "ID"); content.put("SOURCE_ID_TYPE", new String[]{"Type1","Type2"}); // if SOURCE_ID_TYPE is not specified, //all supported source id types will be used // or content.put("SOURCE_ID_TYPE", "Type1"); content.put("TARGET_ATTR", "tgtAttr"); // if TARGET_ATTR is not specified, a default one will be assigned content.put("TARGET_ID_TYPE", "tgtType"); |
Line 74: | Line 86: |
Message msg = new Message(msgId , sender, receiver, msgType , content); List<ResponseMessage> response = PluginsCommunicationSupport.sendMessageAndGetResponses(msg); if (!response.isEmpty()) { Map responseContent = (Map)response.getContent(); boolean succ = (Boolean) responseContent.get("SUCCESS"); String report = (String) responseContent.get("REPORT"); String tgtAttr= (String) responseContent.get("TARGET_ATTR"); if (succ) { // successfully mapped // report contains statistics } else { // failed // report contains error message } } else { // the ID mapping services are unavailable } }}} === ID mapping dialog request === Request to bring out the ID mapping main dialog {{{ #!java String sender = pluginName; String receiver = "CyThesaurus"; String msgType = "MAPPING_DIALOG"; // request for ID mapping main dialog String msgId = receiver + System.currentTimeMillis(); Message msg = new Message(msgId , sender, receiver, msgType , null); List<ResponseMessage> response = PluginsCommunicationSupport.sendMessageAndGetResponses(msg); if (!response.isEmpty()) { Map content = (Map)response.get(0).getContent(); boolean succ = (Boolean) content.get("SUCCESS"); if (succ) { // ID mapping was performed successfully } else { // ID mapping was not performed or failed } } else { // the ID mapping services are unavailable } }}} === ID mapping source config dialog request === Request to bring out the ID mapping source configuration dialog {{{ #!java String sender = pluginName; String receiver = "CyThesaurus"; String msgType = "MAPPING_SRC_CONFIG_DIALOG"; // request for ID mapping source configuration dialog String msgId = receiver + System.currentTimeMillis(); Message msg = new Message(msgId , sender, receiver, msgType , null); List<ResponseMessage> response = PluginsCommunicationSupport.sendMessageAndGetResponses(msg); if (!response.isEmpty()) { Map content = (Map)response.get(0).getContent(); boolean succ = (Boolean) content.get("SUCCESS"); if (succ) { // ID mapping sources were configured successfully } else { // ID mapping sources were not configured or failed } } else { // the ID mapping services are unavailable } }}} === ID mapping supported ID types fetching request === Request to fetch the supported source and target ID types {{{ #!java String sender = pluginName; String receiver = "CyThesaurus"; String msgType = "REQUEST_SUPPORTED_ID_TYPE"; // request for fetching supported ID types String msgId = receiver + System.currentTimeMillis(); Message msg = new Message(msgId , sender, receiver, msgType , null); List<ResponseMessage> response = PluginsCommunicationSupport.sendMessageAndGetResponses(msg); if (!response.isEmpty()) { Map content = (Map)response.get(0).getContent(); boolean succ = (Boolean) content.get("SUCCESS"); String report = (String) content.get("REPORT"); if (succ) { // successfully fetched // report contains statistics |
Message msg = new Message(msgId , sender, receiver, msgType , content); List<ResponseMessage> response = PluginsCommunicationSupport.sendMessageAndGetResponses(msg); if (!response.isEmpty()) { Map responseContent = (Map)response.getContent(); boolean succ = (Boolean) responseContent.get("SUCCESS"); String report = (String) responseContent.get("REPORT"); String tgtAttr= (String) responseContent.get("TARGET_ATTR"); if (succ) { // successfully mapped // report contains statistics } else { // failed // report contains error message } } else { // the ID mapping services are unavailable } }}} 1. '''ID mapping dialog request''': Request to bring out the ID mapping main dialog {{{ #!java String sender = pluginName; String receiver = "CyThesaurus"; String msgType = "MAPPING_DIALOG"; // request for ID mapping main dialog String msgId = receiver + System.currentTimeMillis(); Message msg = new Message(msgId , sender, receiver, msgType , null); List<ResponseMessage> response = PluginsCommunicationSupport.sendMessageAndGetResponses(msg); if (!response.isEmpty()) { Map content = (Map)response.get(0).getContent(); boolean succ = (Boolean) content.get("SUCCESS"); if (succ) { // ID mapping was performed successfully } else { // ID mapping was not performed or failed } } else { // the ID mapping services are unavailable } }}} 1. '''ID mapping source config dialog request''': Request to bring out the ID mapping source configuration dialog {{{ #!java String sender = pluginName; String receiver = "CyThesaurus"; String msgType = "MAPPING_SRC_CONFIG_DIALOG"; // request for ID mapping source configuration dialog String msgId = receiver + System.currentTimeMillis(); Message msg = new Message(msgId , sender, receiver, msgType , null); List<ResponseMessage> response = PluginsCommunicationSupport.sendMessageAndGetResponses(msg); if (!response.isEmpty()) { Map content = (Map)response.get(0).getContent(); boolean succ = (Boolean) content.get("SUCCESS"); if (succ) { // ID mapping sources were configured successfully } else { // ID mapping sources were not configured or failed } } else { // the ID mapping services are unavailable } }}} 1. '''ID mapping supported ID types fetching request''': Request to fetch the supported source and target ID types {{{ #!java String sender = pluginName; String receiver = "CyThesaurus"; String msgType = "REQUEST_SUPPORTED_ID_TYPE"; // request for fetching supported ID types String msgId = receiver + System.currentTimeMillis(); Message msg = new Message(msgId , sender, receiver, msgType , null); List<ResponseMessage> response = PluginsCommunicationSupport.sendMessageAndGetResponses(msg); if (!response.isEmpty()) { Map content = (Map)response.get(0).getContent(); boolean succ = (Boolean) content.get("SUCCESS"); String report = (String) content.get("REPORT"); if (succ) { // successfully fetched // report contains statistics |
Line 154: | Line 163: |
String[] supportedSrcIDTypes = (String[]) content.get("SRC_ID_TYPE"); String[] supportedTgtIDTypes = (String[]) content.get("TGT_ID_TYPE"); // do more things here ... } else { // failed // report contains error message } } else { // the ID mapping services are unavailable } }}} |
String[] supportedSrcIDTypes = (String[]) content.get("SRC_ID_TYPE"); String[] supportedTgtIDTypes = (String[]) content.get("TGT_ID_TYPE"); // do more things here ... } else { // failed // report contains error message } } else { // the ID mapping services are unavailable } }}} === Demo plugin to consume ID mapping services === * A demo plugin, who consumes ID mapping services provided by !CyThesaurus, is available for downloading ([[attachment:CyThesaurusServiceTester.jar]], [[attachment:TestCyThesurrusService.java]]). * To run the demo plugin, place both [[http://web.missouri.edu/~jg722/GSoC/CyThesaurus.jar|CyThesaurus.jar]] and [[attachment:CyThesaurusServiceTester.jar]] in the plugin folder of Cytoscape, then start Cytoscape. You will see a menu of ''Test !CyThesaurus Service'' in the ''Plugins'' menu. Click on the sub menus to request different services. * To request ''ID mapping service example'', you need to import the falFiltered.sif and load the ''!BioMart ID Mapping Service'' with the dataset of ''Saccharomyces cerevisiae genes (SGD1.01)''. You can achieve this by going through [[http://www.cytoscape.org/cgi-bin/moin.cgi/CyThesaurus_Plugin/ID_Mapping_Examples#BioMart_based|Webservice-based identifier mapping tutorial]]. |
[UNDER CONSTRUCTION]
Contents
Introduction
CyThesaurus is a Cytoscape plugin providing identifier mapping services based on various resources. Currently the plugin support ID mapping resources from delimited text, PGDB file and BioMart web service. This plugin utilized BridgeDb API.
Use Cases
5 related use cases have been identified on Bader Lab ID Mapping page. 2 of them are closely related to this project:
Unification during dataset merging: During a merge operation e.g. of two protein-protein interaction datasets from independently created databases, it is vital to recognize that two protein objects, one from each data source, represent the same protein molecule, even if the protein objects don’t share any database accession numbers. Unification requires knowledge of record type e.g. you cannot reliably use a gene ID to unify proteins (mostly because splice variants exist).
Identifier translation: Some analysis methods require specific translations from one set of identifiers to another. For instance, our 'activity centers' analysis requires translation from protein or gene identifiers in a pathway database to Affymetrix probe set identifiers or other gene expression array platform identifiers.
Supported ID Mapping Resources
File- based
Delimited text file
File format (e.g. http://tinyurl.com/mergesvn/testData/yeast_id_mapping.txt):
- Each column for one ID type
- Each row except the first one represents IDs of different types mapping to each other
- First row contains ID types
- Multiple IDs are allowed to be contained in one cell (One to many mapping, or IDs of the same type maps to each other). Use special character (e.g., ';', '/', etc, or user defined) to separate IDs.
RDB based
PGDB file
Gene database schema: http://www.bridgedb.org/wiki/GeneDatabaseLayout
Gene databases are available at http://bridgedb.org/data/gene_database/
Web service based
BioMart web service
BioMart web service has been utilized to provide ID mapping service in this plugin.
BridgeDb web service
Being developed.
PICR web service
Being developed.
Code Base
Currently the plugin is based on Cytoscape 2.6. Porting to Cytoscape 3.0 is in plan.
ID mapping service for other plugin
An inter-plugin communication module was developed to support CyThesaurus plugin providing ID mapping services to other plugins. It is recommended that other plugins, who need to request ID mapping services from CyThesaurus, include the package cytoscape-plugins-comm ( cytoscape-plugins-comm.jar, javadoc, src). The following services are supported.
Supported ID mapping services
Test request: Test if the services are available.
1 #!java 2 String sender = pluginName; 3 String receiver = "CyThesaurus"; // plugin name when passing messages 4 String msgType = Message.MSG_TYPE_TEST; // indicate what this message requests for 5 String msgId = receiver + System.currentTimeMillis(); 6 Message msg = new Message(msgId , sender, receiver, msgType , null); 7 List<ResponseMessage> response = PluginsCommunicationSupport.sendMessageAndGetResponses(msg); 8 if (!response.isEmpty()) { 9 // the ID mapping services are available 10 } 11
ID mapping services list: get all the ID mapping services
1 #!java 2 String receiver = "CyThesaurus"; // plugin name when passing messages 3 Set<String> types = PluginsCommunicationSupport.getMessageTypes(receiver); 4 if (!types.isEmpty()) { 5 // the ID mapping services are available 6 } else { 7 // ID mapping services are unavailable 8 } 9
ID mapping request: Request to mapping the IDs of source ID types in one attribute to the target ID types and save in the target attribute
1 #!java 2 String sender = pluginName; 3 String receiver = "CyThesaurus"; 4 String msgType = "REQUEST_MAPPING"; // request for ID mapping service 5 String msgId = receiver + System.currentTimeMillis(); 6 Map content = new HashMap(); 7 content.put("NETWORK_ID", new String[]{"net1", "net2"}); // if NETWORK_ID is not specified, 8 //ID mapping will be performed on all networks in session 9 // or content.put("NETWORK_ID", "net1"); 10 content.put("SOURCE_ATTR", new String[]{"Attr1", "Attr2"}); 11 // or content.put("SOURCE_ATTR", "ID"); 12 content.put("SOURCE_ID_TYPE", new String[]{"Type1","Type2"}); // if SOURCE_ID_TYPE is not specified, 13 //all supported source id types will be used 14 // or content.put("SOURCE_ID_TYPE", "Type1"); 15 content.put("TARGET_ATTR", "tgtAttr"); // if TARGET_ATTR is not specified, a default one will be assigned 16 content.put("TARGET_ID_TYPE", "tgtType"); 17 18 Message msg = new Message(msgId , sender, receiver, msgType , content); 19 List<ResponseMessage> response = PluginsCommunicationSupport.sendMessageAndGetResponses(msg); 20 if (!response.isEmpty()) { 21 Map responseContent = (Map)response.getContent(); 22 boolean succ = (Boolean) responseContent.get("SUCCESS"); 23 String report = (String) responseContent.get("REPORT"); 24 String tgtAttr= (String) responseContent.get("TARGET_ATTR"); 25 if (succ) { 26 // successfully mapped 27 // report contains statistics 28 } else { 29 // failed 30 // report contains error message 31 } 32 } else { 33 // the ID mapping services are unavailable 34 } 35
ID mapping dialog request: Request to bring out the ID mapping main dialog
1 #!java 2 String sender = pluginName; 3 String receiver = "CyThesaurus"; 4 String msgType = "MAPPING_DIALOG"; // request for ID mapping main dialog 5 String msgId = receiver + System.currentTimeMillis(); 6 Message msg = new Message(msgId , sender, receiver, msgType , null); 7 List<ResponseMessage> response = PluginsCommunicationSupport.sendMessageAndGetResponses(msg); 8 if (!response.isEmpty()) { 9 Map content = (Map)response.get(0).getContent(); 10 boolean succ = (Boolean) content.get("SUCCESS"); 11 if (succ) { 12 // ID mapping was performed successfully 13 } else { 14 // ID mapping was not performed or failed 15 } 16 } else { 17 // the ID mapping services are unavailable 18 } 19
ID mapping source config dialog request: Request to bring out the ID mapping source configuration dialog
1 #!java 2 String sender = pluginName; 3 String receiver = "CyThesaurus"; 4 String msgType = "MAPPING_SRC_CONFIG_DIALOG"; // request for ID mapping source configuration dialog 5 String msgId = receiver + System.currentTimeMillis(); 6 Message msg = new Message(msgId , sender, receiver, msgType , null); 7 List<ResponseMessage> response = PluginsCommunicationSupport.sendMessageAndGetResponses(msg); 8 if (!response.isEmpty()) { 9 Map content = (Map)response.get(0).getContent(); 10 boolean succ = (Boolean) content.get("SUCCESS"); 11 if (succ) { 12 // ID mapping sources were configured successfully 13 } else { 14 // ID mapping sources were not configured or failed 15 } 16 } else { 17 // the ID mapping services are unavailable 18 } 19
ID mapping supported ID types fetching request: Request to fetch the supported source and target ID types
1 #!java 2 String sender = pluginName; 3 String receiver = "CyThesaurus"; 4 String msgType = "REQUEST_SUPPORTED_ID_TYPE"; // request for fetching supported ID types 5 String msgId = receiver + System.currentTimeMillis(); 6 Message msg = new Message(msgId , sender, receiver, msgType , null); 7 List<ResponseMessage> response = PluginsCommunicationSupport.sendMessageAndGetResponses(msg); 8 if (!response.isEmpty()) { 9 Map content = (Map)response.get(0).getContent(); 10 boolean succ = (Boolean) content.get("SUCCESS"); 11 String report = (String) content.get("REPORT"); 12 if (succ) { 13 // successfully fetched 14 // report contains statistics 15 16 String[] supportedSrcIDTypes = (String[]) content.get("SRC_ID_TYPE"); 17 String[] supportedTgtIDTypes = (String[]) content.get("TGT_ID_TYPE"); 18 // do more things here ... 19 } else { 20 // failed 21 // report contains error message 22 } 23 } else { 24 // the ID mapping services are unavailable 25 } 26
Demo plugin to consume ID mapping services
A demo plugin, who consumes ID mapping services provided by CyThesaurus, is available for downloading (CyThesaurusServiceTester.jar, TestCyThesurrusService.java).
To run the demo plugin, place both CyThesaurus.jar and CyThesaurusServiceTester.jar in the plugin folder of Cytoscape, then start Cytoscape. You will see a menu of Test CyThesaurus Service in the Plugins menu. Click on the sub menus to request different services.
To request ID mapping service example, you need to import the falFiltered.sif and load the BioMart ID Mapping Service with the dataset of Saccharomyces cerevisiae genes (SGD1.01). You can achieve this by going through Webservice-based identifier mapping tutorial.