Giter VIP home page Giter VIP logo

iago's People

Watchers

 avatar  avatar  avatar

iago's Issues

Add support for more simulation codes

Currently, we can understand CP2K log and input files. We should add the following codes: namd2, AMBER, gromacs.

Since the data structure in the database is already prepared this consists of the following steps:

  1. For each code, implement a "Reader" class that takes the input file and (optionally) the output file. Parse these text-based files using regular expressions or similar frameworks. Test files and guidance can be provided.
  2. Prepare unit tests that work on small test input and log files and compare the actual and expected output.

Optionally, suggest additional data special to the codes to be included in the database.

Use XYZ coordinates

CP2K may print the coordinates in XYZ format which does not contain information on the box size.
With ensembles NVE/NVT: this information are present in the input file.
With ensembles NPT: in another file.

Now: use DCD format only.

Link gromacs toolchain

For analysing atomistic trajectories, the gromacs code has well-tested and fast C++ implementations. We should leverage this by converting our trajectory data to their format (there are open-source libraries for that) and then feed it to their toolchain. Finally, the output (plain-text) has to be parsed back for storage in the database.

Steps:

  1. Understand the gromacs input requirements (guidance available).
  2. Write a python code to convert the file formats (using the MDAnalysis library).
  3. Write a wrapper for the various gromacs tools exposing their command line options in a python interface.
  4. Convert their output to the iago internal database structure.

Integration tests

Create integration tests for file access using the unit test framework.

Jupyter: need get_bucket before fetch_database

The documentation-Get Started need updated:
import iago
lg = iago.get_location_group()
lg.get_bucket_list()
db = lg.fetch_database('ubqTUTORIAL')


If do not have get_bucket_list() before fetch_database:
import iago
lg = iago.get_location_group()
\#lg.get_bucket_list()
db = lg.fetch_database('ubqTUTORIAL')
The error messages are the following:

AttributeError Traceback (most recent call last)
in ()
2 lg = iago.get_location_group()
3 #lg.get_bucket_list()
----> 4 db = lg.fetch_database('ubqTUTORIAL')

/scratch/xjiang/anaconda2/lib/python2.7/site-packages/iago/LocationProvider.pyc in fetch_database(self, bucket)
121
122 def fetch_database(self, bucket):
--> 123 row = self._get_bucket_from_name_or_id(bucket)
124 format = None
125 ephemeral = False

/scratch/xjiang/anaconda2/lib/python2.7/site-packages/iago/LocationProvider.pyc in _get_bucket_from_name_or_id(self, bucket)
108
109 def _get_bucket_from_name_or_id(self, bucket):
--> 110 if bucket in self._buckets.id.values:
111 rows = self._buckets[self._buckets.id == bucket]
112 elif bucket in self._buckets.name.values:

AttributeError: 'NoneType' object has no attribute 'id'

Visualise structures in jupyter notebooks

When investigating trajectories, it is often helpful to get a quick visualisation of parts of the system.

We should create a jupyter notebook widget that can show the 3D coordinates of atoms in space either as 3d rotatable frame or as projection on an arbitrary rotatable 2d plane. We should be able to update the geometry and show the video when the user seeks through the molecular dynamics data.

It is crucial that this visualisation is fast and interactive. We should support major browsers, but may focus on OpenGL if required.

Hide coordinate file reading

On the way towards windows support, alternatives for MDAnalysis have to be provided, e.g. mdtraj. For this, we need infrastructure...

Create a virtual file system to access remote storage

When accessing remote data, we need a possibility for sequential and random access for both binary and text files. For small files, transferring the whole file should be faster than seeking.

Common protocols are SFTP (paramiko) and HTTP (requests). Using rclone for further protocol support should be fine.

Steps:

  1. For each protocol, identify seek and stream access.
  2. Implement a wrapper class in python that behaves like a file object. Focus on read access first.
  3. Implement an open call that returns the wrapper object.

Recognise database file format

When using a JSON database, iago fails to recognise the desired output format which ultimately makes any analyser script to fail.

Add heuristic detection of underlying code per run

When analysing a bucket, we can have several runs prepared with different codes. iago has to tell them apart.

Steps:

  1. Analyser: make candidate file names configurable for user (for topology, input and log files)
  2. Parser: Discover files, pass first 50 lines to each available reader until one of them claims the file
  3. Reader: Add functionality to claim files for all available readers.

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.