Top Banner
Biological Modeling, Powered by AngularJS Gil Fink CEO and Senior Consultant, sparXys @gilfink
44

Biological modeling, powered by angular js

Feb 11, 2017

Download

Software

Gil Fink
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Biological modeling, powered by angular js

Biological Modeling, Powered by AngularJS

Gil Fink CEO and Senior Consultant, sparXys @gilfink

Page 2: Biological modeling, powered by angular js

This session is about working with graphics

Page 3: Biological modeling, powered by angular js

But…

Page 4: Biological modeling, powered by angular js

I’m not a graphics designer

Page 5: Biological modeling, powered by angular js
Page 6: Biological modeling, powered by angular js

This is how I draw toilets…

Page 7: Biological modeling, powered by angular js
Page 8: Biological modeling, powered by angular js

I wish…

Page 9: Biological modeling, powered by angular js
Page 10: Biological modeling, powered by angular js

And somebody let me speak about graphics…

Page 11: Biological modeling, powered by angular js
Page 12: Biological modeling, powered by angular js

Ok, so let’s get serious!

Page 13: Biological modeling, powered by angular js

About Me • sparXys CEO and senior consultant

• Microsoft MVP

• Co-author of Pro Single Page Application

Development (Apress)

• Angular up conference and GDG Rashlatz Meetup

co-organizer

Page 14: Biological modeling, powered by angular js

Agenda • SVG in a Nutshell

• SVG + AngularJS = <3

• Use Case: Biological Modeling

Page 15: Biological modeling, powered by angular js

SVG in a Nutshell • Graphics model in the browser

• Create and draw 2D vector graphics using HTML

• Support for: o Full DOM access

o Document structure, scripting, styling, paths, shapes, colors, transforms,

gradients, patterns, masking, clipping, markers, linking and views

Page 16: Biological modeling, powered by angular js

2D Vector Graphics

<svg width="400" height="200" xmlns="http://www.w3.org/2000/svg"> <rect fill="red" x="20" y="20" width="100" height="75" /> <rect fill="blue" x="50" y="50" width="100" height="75" /> </svg>

Page 17: Biological modeling, powered by angular js

SVG Demo

Page 18: Biological modeling, powered by angular js

SVG + AngularJS = <3

Combining SVG and AngularJS isn’t hard

SVG elements are part of the DOM!

Page 19: Biological modeling, powered by angular js

SVG + AngularJS 1 Caveats

• In directives that generate SVG, use

templateNamespace in the DDO:

• Set SVG attributes using ng-attr- prefix:

<circle ng-attr-cx="{{radius}}" ng-attr-cy="{{radius}}" ng-attr-r="{{radius}}"/>

templateNamespace: 'svg'

Page 20: Biological modeling, powered by angular js

SVG & AngularJS 1 Directive Demo

Page 21: Biological modeling, powered by angular js

SVG + Angular 2 Caveats • In components that generate SVG, use svg: prefix

when using SVG elements:

• Set SVG attributes using attr. prefix:

• Remember:

SVG cannot accept elements it doesn't recognize! o Don’t create your own named components, use named attributes instead

<svg:circle [attr.cx]="radius" [attr.cy]="radius" [attr.r]="radius"/>

<svg:circle cx="10" cy="10" r="30"/>

Page 22: Biological modeling, powered by angular js

SVG + Angular 2 Component Demo

Page 23: Biological modeling, powered by angular js

Use Case Using SVG + AngularJS for Biological Modeling

Page 24: Biological modeling, powered by angular js

Biology Disclaimer

Page 25: Biological modeling, powered by angular js

Biology 101 • Plasmids - small DNA molecules represented as a

circle with annotations

Page 26: Biological modeling, powered by angular js

Biology 101 • Sequence – primary structure of a biological

molecule written in characters (A, T, G, C)

Page 27: Biological modeling, powered by angular js

Customer Needs • Synchronize plasmid and sequence views

• Fast scrolling

• Sequence and plasmid selection

• Annotation layers

Page 28: Biological modeling, powered by angular js

Lazy Developer

Page 29: Biological modeling, powered by angular js

Are there any JavaScript libraries for plasmids or

sequences? Preferable with AngularJS support?

Page 30: Biological modeling, powered by angular js

Maybe in BioJS? http://www.biojs.io/

Page 31: Biological modeling, powered by angular js

AngularPlasmid • DNA plasmid visualization component using

AngularJS and SVG

• http://angularplasmid.vixis.com/index.php

<plasmid sequencelength='1000'> <plasmidtrack radius='50'> <tracklabel text='Demo'></tracklabel> <trackscale interval='100' showlabels='1'></trackscale> <trackmarker start='212' end='345'></trackmarker> <trackmarker start='530' end='650'> <markerlabel text='Ecol'></markerlabel> </trackmarker> <trackmarker start='677' end='820'></trackmarker> </plasmidtrack> </plasmid>

Page 32: Biological modeling, powered by angular js

Problems We Faced • Generating the plasmid dynamically from specific

files o Solved by dynamically adding AngularPlasmid elements

o Then, we use the $compile service

• Adding selection to the plasmid o Solved by adding our own implementation

Page 33: Biological modeling, powered by angular js

Demo AngularPlasmid + $compile

Page 34: Biological modeling, powered by angular js

No DNA sequence library

Page 35: Biological modeling, powered by angular js

Building the Sequence – The Naïve Way

• Let AngularJS generate the whole sequence o Use ng-repeat, SVG and browser scrolling

• Add annotation layers with SVG

• The problem is…

Page 36: Biological modeling, powered by angular js
Page 37: Biological modeling, powered by angular js

What’s the problem?

Page 38: Biological modeling, powered by angular js
Page 39: Biological modeling, powered by angular js

Can we do better? Maybe infinite scrolling?

Not good enough!

Page 40: Biological modeling, powered by angular js

Virtual Scrolling • Generate only the current viewport

• Good reading reference: o http://blog.stackfull.com/2013/02/angularjs-virtual-scrolling-part-1/

o http://blog.stackfull.com/2013/03/angularjs-virtual-scrolling-part-2/

Page 41: Biological modeling, powered by angular js

Front-end Architecture

AngularPlasmid

Each row is a directive

Page 42: Biological modeling, powered by angular js

Demo Genome Viewer

Page 43: Biological modeling, powered by angular js

Summary • SVG is one of the options to create graphics in

the browser

• SVG and AngularJS can work well together

• You can create sophisticated modeling using SVG and AngularJS

Page 44: Biological modeling, powered by angular js

Thank You!