Giter Site home page Giter Site logo

pv's People

Contributors

aebrahim avatar ajfarkas avatar andreasprlic avatar aschwanb avatar biasmv avatar hainm avatar julianheinrich avatar kaulkie avatar smsaladi avatar tomck avatar vavrusa avatar wilzbach avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pv's Issues

Option fog is ignored

When initialising a new viewer, option fog is ignored. I always need to set pv_viewer.options('fog', false); after intialising.

pv_viewer = pv.Viewer(document.getElementById('pv'), {
width: 300, height: 300, antialias: true, quality : 'medium', fog:false
});

Support PDB Insertion codes

Insertion codes are currently ignored which leave gaps in the PDB.
1fiz is an example of a PDB with insertion codes at ~ residue 126 (among others).

You can see the problem when PV renders it here:
http://aquaria.ws/P29293/1fiz/A?viewer=webgl

You can also see here PV integrated with Aquaria! Sure beats Java3D for startup time and general Java woes.

Opacity of overlapping structures

Hi Marco,
I was playing with the new opacity settings, they will be really useful indeed. However I find that if I set the opacity of an overlapping structure to 0, the structures which lie behind the now transparent object are not visible

all visible
opacities set

zooming speed should be exponential

Zooming speed should follow an exponential function. The closer to the center the camera is positioned, the slower should the zooming happen. Also, it should not be possible to position the camera in front of center, e.g. the center point must always be visible on the screen.

load local pdbs

Without much coding is there a way to load custom pdbs from local files?

Support bond orders

It looks like bond objects only include two atoms and a mid point, and that it is not currently possible to render double, triple or aromatic bonds.

Could bond order please be added to bonds, with appropriate rendering options?

make fog adjustable

Per subject, the fog density as well as near and far offsets should be adjustable

instead of using _ for private functions create functions in module scope

Many places use _ as a prefix for private functions/methods. JavaScript optimizers/minifiers have to leave these identifiers as is (at least UglifyJS does). By moving these _ private methods to module functions, the names can be mangled and the minified file should get smaller.

Unfortunately, this can't be applied everywhere, for example when polymorphic behavior is required but it should buy us some space.

buffer allocators

Most of the render code uses buffer pools to manage typed arrays. The code also provides a fallback path for non-pooled allocation. That's bad as it requires manually checking for the presence of buffer pools:

 if (pool) {
  var array = pool.request(size); 
 } else {
   var array = new Float32Array(size); 
}

Instead, two types of allocators should be provided, one which just news the typed arrays, and another which uses a pool of buffers. The code simplifies to:

var array = allocator.request(size)

Relatively off topic

Hi Marco,

I'm the developer of Chemplore and I just discovered pv. I must say it's a very impressive work. Is there an email that I can reach you at?

Reza

when outline is on, structures are rendered in black on iPad

When outline mode is enabled, the structure is rendered in black on the iPad. this is due to problems with the z-buffer. When disabling outline mode, everything works as expected. I've tried to play around with gl.depthRange() to work around the problem. Unfortunately this degrades visual fidelity on non iPad devices.

better smoothing of strands

the strand smoothing schemes tried so far are all suboptimal and lead to strange artifacts. come up with a better smoothing scheme.

  • check what OpenAstexViewer is doing

implement balls and sticks render mode

per subject, implement the balls and sticks render mode. It does not need to be possible to display whole structures using balls and sticks, but at least it should be possible to show a few selected residues.

getting a residues colour

What is the best way to get the current colour of a residue ? I want to do this for selection, by highlighting the selected residue, then reverting to the original colour when the user selects something else. I need to get the original colour which is tricky.

I initially had this working by looking up the residue colour in the current colour scheme, but this doesn't handle custom renders that don't all occur in the 1 colour scheme (e.g. if there has been a custom render of residues by using the ResidueView or ChainView).

From what I can see, to find the colour for a given residue:

  1. I have to use the chain traces to find the trace and trace index of the given residue
  2. get access to the TraceVertexAssoc._perResidueColors and look up the colour from the trace index

Is this the easiest way? A helper method here would be good I think.

twist in chain

In the new rendering, there can be a twist in the chain. Example is 1ccn.1
old no twist
new with twist

support resizing of canvas

Allow the OpenGL canvas to be resized. Viewport and the projection matrix aspect ratio have to be updated accordingly.

cleanup src/viewer.js

The viewer class is getting quite big and is taking take of multiple aspects. The different aspects should be split into separate classes which the viewer is then using.

implement a vector pool for atom positions

creating the vec3 instances has a non-zero cost during PDB parsing. Benchmarking has revealed that it would be faster to create an ArrayBuffer and create FloatArrayViews to the buffer afterwards.

fit camera viewport to selection

Adjust the camera position and orientation such that a selection of atoms(or possibly even a selection of MeshGeom/LineGeom triangles) fill the screen optimally.

reuse of object ids

objects ids for color picking should be reusable. When an object is no longer used, the id be released and should become available or other objects.

The main difficulty is to come up with an efficient scheme for object ID reuse

Chains missing end residues

It looks like chains, or secondary structure do not reach to the end residues?
This example is 1ccn

Previously -
previously
Current code-
latest_code
Previously with sidechain -
previously with sidechain
Current with sidechain -
latest_code with sidechain

Coloring a specific chain

When coloring a specific chain of a protein structure( go.select({cname: 'A'}) ) it turn the whole structure into the given color. Coloring the whole structure green and than e.g chain B with yellow, chain A remains green and the rest is yellow.
Untill now, I did not managed to find the solution. I've tracked back the functions and probably the error originates in the last section of recolor function.

Selecting {'ZN', 'DC',' DA'}

Two letter names are not found, you need a space before the name:

select({'rname':' DC'}) requires a space before the DC

implement highlight shader

implement a special shader to quickly highlight parts of the structure without having to recalculate any geometry/change color information.

color by float property

Implement an operation to color structures by arbitrary float properties, either at the chain, residue or atom level.

remove CompositeGeom

The introduction of IndexedVertexArray made CompositeGeom more or less obsolete. Remove it

Touch control for phones and tablets

I've begin to implement the touch event handling to make the viewer usable for touch screen equipped devides. By now, it's not a purified code, but some features works on touch events as well. But it's a little messy.

rotate : one finger swipe
center : one finger double tap (not implemented)
translate : two finger swipe
rotate by Z: two finger rotate
zoom : pinch (not implemented)

cleanup scene.js and possibly split into multiple files

scene.js is getting quite big. There are a few redundancies here and there. Most notably there is some functionality in LineGeom and MeshGeom that could be moved to BaseGeom.

These redundancies should be removed and the file then possibly be split into multiple files, one for LineGeom, BaseGeom, MeshGeom, Label etc.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.