cytoscape 3 (systems bioinformatics workshop 2012)
DESCRIPTION
Slide for http://baliga.systemsbiology.net/events/workshop2012/TRANSCRIPT
Cytoscape 3Architecture, Current Status, and Future Plan
Keiichiro OnoUniversity of California, San Diego
Trey Ideker Lab
Who am I?- Keiichiro Ono
- Cytoscape Core Developer since 2005- University of California, San Diego Trey
Ideker Lab
Outline
- Why Cytoscape 3?- Architecture- Current Status- Future Plan
Quick Introduction to Cytoscape
- Open source platform for biological network- data integration- analysis- visualization
ENSG00000234012PIK3CA
KLHDC8B
CCNA1
ATRX
ABL1
LDB2
MSH3
DUSP3
LSP1
BACH1
MED1
KPNA3
HRAS
BUB1
PTEN
FAM175A
CDK8
ARIH1
UBE2N
CHGA
ELAC2
FBXW4
FGF11
EP400UBA1
GTF2F1
HERC2
POLR2A
FBXO10 FBXW11
CSNK2B
TOP2A
TAF10
HIST2H2AC
FEN1
MZT2B
UBE4B
XRCC1
DEPDC1B
TPX2
MAP3K1
DAPK1
MLH1
CDC6
GTF2E1
RNF40
PAXIP1
TRIM28
NCOA2
RPS6KB2
HSD17B1
FOS
NBN
TAF2G
PLK1FBXO4
AURKA
BRD7
EZH1
PSMD14
SMAD2
RAD23B
GCGRVAT1
MAGED2
MGMT
EDIL3
UBE2L3
STAT5A
ERCC5
CTBP1
YY1NPM1
LAT DNAH8 ENSG00000137337VCPNF1 XRCC6
EXO1
BIRC5
NEK2
YRDC
PLK3
RNF2
JUN
DNAJA3
CDK1
CREBBPCCNA2
ORC2L
WWP2UBE2D3
FANCG
ID4
GPR3SMAD4H2AFX
CDC25C
TRRAP
NEK10
XRCC3
ACACA
ORC3L
C11orf30
GMNN
C17orf70 CASP3
PGR
CHGB
9606.ENSP00000358154
RNASEL
RCHY1UIMC1
CDK13
RARB
BLM
NFKB1
CDK7
FANCD2
HSD17B1P1
FAM175B
ERBB2
POLL
RAD54B
GTF2H4
PMS2
STK11
RNF11
SMAD3
TFDP2
RFC1
CCNB1
SMURF2
RAD51
TP53
SUMO1
DPPA3AR
MCM4
PRC1
PSMC3IPZCCHC8
SCG2
C5orf4
RAD50
INSC
FANCI
Brca1
LIG3
TP53BP1COBRA1 TUBG1
RND2
HDAC2
CDK2BRAP
BRCC1
BRCA1
BARD1
LMO4
RBBP7
EP300
BRCA1
MAP3K3
RBBP8CLSPN
RNF53
BRIP1
BAP1
DCLRE1C
RBBP4
FANCFMYC
FANCE
FANCC
DDB2
FANCL FGFR2
CHD8
RAD17
WHSC2
KIAA1182
MED13
E2F4
HIST1H4ANUFIP1
RNF53
BRE
CREB1
RASSF1
TADA3
NBR2
NFYA
CTCF
BMI1XPAENSG00000204435
TSC1
POU4F1
EREGPARP1KPNA6
SIRT1DLK1
ASPM
IFI16DHX9
FHL2
WDR48
H2AFY
KIF11C19orf62
RAD52XRCC2
STAT3
ARNT
SRC
AKT1
E2F1
ATRIP
CCNE1
IFI27
RPA2
DMC1
FHIT
CDKL4 MZT1
GNA11
ENSG00000182481
PIK3R1
XPC
RB1
TERF1
MNAT1
SP1
FBXO21
ZNF350
CYP17A1
FBXO7CSTF2
GADD45A
PCNA
SMAD1
RAD51C HOXA5
MAP4K4
FBXO9
TRAF7
OPCML
SMARCA2
XRCC4
CSNK2A1
CCNB2
GLI1
KIF1B
HSD17B2
PSAP
MAP2K1
RPA1
WWP1
ANTXR1
PALB2
BRCC3
PEG3
FBXL7
JUND
WNT2B
AP2B1
FLI1
TOPBP1
ECHDC1
JAK1
MSH2
KPNA1NME1
STAT1
DNMT1PARK2
OTUB1
FANCB
TSPAN9
DCUN1D1
FBXO25
MED17
CDC25A
PARP2
RNF31
ELK4
TOX3
ECT2
CDK4
PPP1CA
SMARCB1
SMARCC2
FBXO11
HYRC
GSTP1
SMC1A
CYP19A1
CAND1 KAT5UBE2E1
CHD4
RRM1
RFC2
TIPARP
BUB1B
CDH1
TUBGCP4
MED23
CDKN2A
MED24
CHTF18
C19orf40
RBL2
SPO11
DPH1
NR1H2
POLR2K
MKI67
PIAS4
E2F6 CDK5
BRCA2
CCND1
JAK2
MDC1KAT2A
BATF
MAD2L1
UBE3A
RAD51L3
CHEK1
RAD54L
ATRG5A
LIG4
CCND3
SUPT3H
FBXL5
CBLL1
RAD51AP1 PIAS1
ATF1
ATM
RNF20
FBXO8FANCM
MPP3
TWSG1
POU4F2
TUBGCP6
FBXL4
DDX5
KRT5
TUBGCP5
KPNA4
MCPH1
IFI35
HNRNPA1
RPL31
ERCC3
FBXO24
USF2
RELA
MSH6
SUMO2
CNR1
MDM2
PMS1
RNF8
SUGT1
UBA52
ELK1
MELK
UBB
RBMXL2
LMO7
WT1 UBC
NBR1
PPP1R3A
ERCC4
RBL1
ERCC1
XRCC5
UBE2I
MRE11A
RNF144B
ETS1WRN
ESR1
NMI
SHFM1
EZH2
ERCC2
TUBB2A
MAP3K4
POU2F1HIC1
PML
DCAF11
CDKN1AAPLP2CDC45
TSPAN17
NUP153
EGFR
FBXL3
CTCFL
SMARCE1
GATA3
CHEK2
TOP3AEIF4G1
HSPA8
DDB1
PAX6
KRT14
TERF2
CSTF1PPT1
NCOA3
CDK16
SMARCA4
SMARCD2SMARCC1
DHFR
TUBA4A
IGF1R
RNF168
BRCA1 PPM1D
JUNB
MED21FANCA
AKAP10
HMMRCDKN1B
NUSAP1
RAD9A
Plugins Apps
AllegroMCODE APCluster APID2NET BioQualiPlugin BLAST2SimilarityGraph BNMatch CABIN CalculateNodeDegree CentiScaPe ChemViz clusterExplorerPlugin clusterMaker ClusterONE ClusterViz COMA CommFinder CyClus3D CyOog cytoHubba Cytomcl DualLayout dynamicXpr EnhancedSearch EnrichmentMap ExprEssence GraMoFoNe GraphletCounter HiderSlider jActiveModules mcl-new MCODE MINE NeMo NetAtlas NetCirChro netMatch NetworkAnalyzer NetworkEvolut ion OmicsAnalyzer OmicsViz OrthoNets PanGIA Per turbat ionAna lyzer P innac leZ RandomNetworks RDFScsape Reactome F Is RemainingDegreeDistribution ReOrientPlugin ShortestPath Plugin SimTrek structureViz TransClust VennDiagramGenerator VistaClaraPlugin WordCloud BiNoM bioCycPlugin Biogr idPlugin BiomartCl ient BioNetBui lder BisoGenet ConsensusPathDBplugin CoryneRegNetLoader CyThesaurus-ID-Mapping CytoSQL DroID Genoscape GPML-Plugin GraphMLReader IntActWSClient iRefScape KGMLReader MetScape MiMIplugin NCBIClient NCBIEntrezGeneUserInterface Pathintegrator PhosphositePlus Web Service Client Module PICRClient PSICQUICUniversalClient ReConn SessionForWeb SFLDLoader StringWSClient Superpathways-Plugin 3DScape Agi lentLiteratureSearch Cytoprophet DisGeNET DomainGraph ExpressionCorrelation GeneMANIA MetaNetter MONET BiNGO BubbleRouter ClueGO CommonAttributes DisplayNetworkFromFlatFile FluxViz FunNetViz HyperEdgeEditor PiNGO CyGoose CytoscapeRPC GroovyScriptingEngine JavaScriptEngine MiSink PythonScriptingEngine RubyScriptingEngine ScriptEngineManager addParentNeighbors AdvancedNetworkMerge batchTool BiLayout commandTool coreCommands CyAnimator edgeLengthPlugin edgeLister EpiTrace FERN FM3 GoogleChartFunctions GroupTool MetaNodePlugin2 Multi levelLayoutPlugin NamedSelection NatureProtocolsWorkflow NeighborHighlight NetLink nodeCharts PhyloTree VennDiagrams
140+ Apps
- One of the most successful applications in systems biology field
- Large user/developer community
Why Cytoscape 3?
C
Problems
Problems
- Apps can’t use conflicting libraries
?!Apache httpcomponents-client-4.1.2 GA
App 1
Apache httpcomponents-client-4.0.3
App 2
Problems
- Apps can’t publish their API
public int calculateDegree()
App 1
public void setNodeSizeByDegree()
App 2
No clean way to access!
Why these are serious?- Reinventing the wheel
- Even if other apps have nice features, there is no standard way to access those (programmatically)
- Crash!- Cytoscape will be unstable if plugins have
conflicting libraries
Backward Compatibility
- Cytoscape core updates break plugins- No clear definition of API- Versioning
AllegroMCODE APCluster APID2NET BioQualiPlugin BLAST2SimilarityGraph BNMatch CABIN CalculateNodeDegree CentiScaPe ChemViz clusterExplorerPlugin clusterMaker ClusterONE ClusterViz COMA CommFinder CyClus3D CyOog cytoHubba Cytomcl DualLayout dynamicXpr EnhancedSearch EnrichmentMap ExprEssence GraMoFoNe GraphletCounter HiderSlider jActiveModules mcl-new MCODE MINE NeMo NetAtlas NetCirChro netMatch NetworkAnalyzer NetworkEvolution OmicsAnalyzer OmicsViz OrthoNets PanGIA PerturbationAnalyzer PinnacleZ RandomNetworks RDFScsape Reactome FIs RemainingDegreeDistribution ReOrientPlugin ShortestPath Plugin SimTrek structureViz TransClust VennDiagramGenerator VistaClaraPlugin WordCloud BiNoM bioCycPlugin BiogridPlugin BiomartClient BioNetBuilder BisoGenet ConsensusPathDBplugin CoryneRegNetLoader CyThesaurus-ID-Mapping CytoSQL DroID Genoscape GPML-Plugin GraphMLReader IntActWSClient iRefScape KGMLReader MetScape MiMIplugin NCBIClient NCBIEntrezGeneUserInterface Pathintegrator PhosphositePlus Web Service Client Module PICRClient PSICQUICUniversalClient ReConn SessionForWeb SFLDLoader StringWSClient Superpathways-Plugin 3DScape AgilentLiteratureSearch Cytoprophet DisGeNET DomainGraph ExpressionCorrelation GeneMANIA MetaNetter MONET BiNGO BubbleRouter ClueGO CommonAttributes DisplayNetworkFromFlatFile FluxViz FunNetViz HyperEdgeEditor PiNGO CyGoose CytoscapeRPC GroovyScriptingEngine JavaScriptEngine MiSink PythonScriptingEngine RubyScriptingEngine ScriptEngineManager addParentNeighbors AdvancedNetworkMerge batchTool BiLayout commandTool coreCommands CyAnimator edgeLengthPlugin edgeLister EpiTrace FERN FM3 GoogleChartFunctions GroupTool MetaNodePlugin2 Multi levelLayoutPlugin NamedSelection NatureProtocolsWorkflow NeighborHighlight NetLink nodeCharts PhyloTree VennDiagrams
Solutions
- OSGi- Enforce modularity
- Semantic Versioning- Manage the changes
- Maven- Organize build/release process
Architecture
Overview
Java Virtual Machine
OSGi Framework
Cytoscape API Bundle A
Cytoscape API Bundle B
Cytoscape API Bundle CLib 1 Lib 2
Cytoscape Impl Bundle A Cytoscape Impl Bundle CCytoscape Impl Bundle B
App 1 App 2 App YApp X
OSGi Framework
−Provides runtime container
−Defines module boundaries
−Provides micro service architecture
Collection of Modules
OSGi Module
= Bundle
= JAR + Metadata
Defines what packages are visible from othersExport-Packages: org.cytocape.model
Defines which modules are required to use thisImport-Packages: org.cytoscape.events
Module X Module YModule Z
API 1
API 2
API 3
Defines public API
OSGi Service
= Shared Java Object Instances
OSGi Service
xyz IMPLxyz API
abc IMPL
abc API
Your App
IMPL modules register instances of service interfaces with the Service Registry
Service Registry
Apps depend on classes and service interfaces defined in the API
Apps get on instances of services interfaces from the Service Registry usingONLY the service interfaces!
IMPL modules create instances of service interfaces defined in the API
Cytoscape +
OSGi
Semantic Versioning
- Version number has meaning!
- major.minor.patch- patch - backwards compatible bug fixes
- minor - backwards compatible new features
- major - backwards incompatible changes
Maven
- Build tool- Manages dependencies
- Cytoscape Maven Repository
Summary
- OSGi enforces you to use modular design- Semantic versioning defines how and
when changes happen- Maven provides easy access to correct
version of libraries in the build process
Designing your Apps for 3
Design Guidelines for App Developers
- Define API as a collection of interfaces- Do not publish implementation details- Export useful objects as OSGi services
Future Plan
What can we do with 3?
- Use Cytoscape modules as a building blocks of other applications
- Add/replace modules- New rendering engines- Graph database backend
Upcoming Projects- New Rendering Engine- Smart Zooming (like Google Map)- Headless/command-line Mode
- Run Cytoscape 3 on clouds- R/Matlab Integration- Graph Database Integration (Neo4j via
Tinkerpop Blueprints)- Publish to cytoscape.js
Release Schedule- Milestone 5 Released - For app developers- User Beta - Late September- User Beta 2- 3.0 Final Release
- At Cytoscape Retreat 2012 @UCSF- December 13, 14
Where to Start?
- http://wiki.cytoscape.org/Cytoscape_3- http://code.cytoscape.org
NIH GM070743-01
P01 HG005062
P41 RR031228