[GSoC2013] iOS app for viewing of public/private results in the Virtual Cell

86 views
Skip to first unread message

Ankit Agarwal

unread,
Apr 13, 2013, 1:25:34 AM4/13/13
to vcell-...@googlegroups.com
Hey,

I am a 2nd Year Computer Science student from India.
I've been programming in PHP/MySQL since a long time and then I
started Objective C and started making iOS apps.

I am very interested in making the iOS app for viewing the results in
vcell software.
I have good experience with using various APIs which would make me a
good candidate for this project.

My first iOS project was a TV show managing app which took data from a
public API.
( source : https://github.com/aciidb0mb3r/AciidTv )

I would love some more information about this project.

Regards
--
Ankit

Jim Schaff

unread,
Apr 19, 2013, 3:53:27 PM4/19/13
to vcell-...@googlegroups.com
Hi Ankit,
We have a RESTful API under development which will provide a public Web API for querying progress and status of simulations, submitting simulations, editing parameter values, and retreiving time series simulation results (nonspatial only).
 
The transport-layer security and user authentication schemes will probably be TLS, and the application key and user authentication scheme has not yet been determined (maybe OAuth 2.0, or something simpler).
 
I'll start a new Thread with more details about the Web API status in an hour or so.
 
Thanks,
 
Jim Schaff.
Lead VCell Developer
 

Ankit Agarwal

unread,
Apr 19, 2013, 4:15:04 PM4/19/13
to vcell-...@googlegroups.com
Hi Jim,

Its great to hear from you. All this informations helps a lot. I am comfortable with using a REST API and OAuth or any other kind of authentication system.
As I mentioned earlier I've good experience in using APIs , I've also built some. I built an API for addic7ed.com (a famous subtitle site) which was then used on an android app (It is on google play , The app was also made by me)

It would be really helpful if you can tell me in detail the data returned by the API in the new thread which has to be displayed in the app and the data that has to be sent so I can have a rough idea how to proceed with the app and my timeline in the gsoc proposal.

Thanks
Ankit





 

--
You received this message because you are subscribed to the Google Groups "VCell Open Discussion Forum" group.
To unsubscribe from this group and stop receiving emails from it, send an email to vcell-discus...@googlegroups.com.
To post to this group, send email to vcell-...@googlegroups.com.
Visit this group at http://groups.google.com/group/vcell-discuss?hl=en-US.

For more options, visit https://groups.google.com/groups/opt_out.
 
 



--
Ankit

Ankit Agarwal

unread,
Apr 21, 2013, 1:36:16 AM4/21/13
to vcell-...@googlegroups.com
Hi,

This is a follow up email requesting more information about the API since the application period is going to start soon I wanted to prepare for my proposal. It would be really helpful if you could provide with more information or documentation link to the API so I can think of some ideas on how to proceed with the app interface.

Thanks
Ankit
--
Ankit

Jim Schaff

unread,
Apr 22, 2013, 8:13:08 AM4/22/13
to vcell-...@googlegroups.com
Hi Ankit,

I'm reposting another answer:

The apps primary focus is managing a user's simulations;

viewing status (waiting, queued, running (progress), completed, failed, stopped)
viewing simulated data
cloning a simulation with new parameter values
managing list of submitted simulation jobs viewing/starting/stopping a simulation
managing user's storage quotas (displaying usage, quota, and allowing simulation results to be deleted).

The initial JSON/HTML web API for retrieving simulation job status has been developed (using Restlet server-side framework).  A very simple Android app has been created (using the Restlet client-side framework) which only lists the simulations, and a small browser client is served up directly. (for more details including current API spec and screenshots, see posting https://groups.google.com/forum/?fromgroups=#!topic/vcell-discuss/y0_k5ufMm2k

Jim.

Ankit Agarwal

unread,
Apr 22, 2013, 9:03:03 AM4/22/13
to vcell-...@googlegroups.com
Hi Jim,

From what I understand the UI could look like this :

Two tabs :

First tab will have list of simulations which their status displayed. When user clicks a simulation he'll have option to view simulated data, clone it, start, stop it

Second tab will display usage, quota and simulation results which can be deleted.

Is this what you have in mind?

Thanks
Ankit

Jim Schaff

unread,
Apr 22, 2013, 10:09:33 AM4/22/13
to vcell-...@googlegroups.com
You are off to a good start, and based on what I told you so far, it sounded reasonable.  But let me elaborate on the VCell simulation concepts.

(a) There are generally several Simulations (identified by simID) belonging to the same Model (identified by ModelID).  

(b) Each Simulation is composed of one or more SimulationJobs (identified by (simID,JobID)) where there is one jobID for each parameter set within a Simulation.  Either a Simulation has either one parameter set (one value for each parameter) or specifies a parameter scan where some parameters have multiple values to simulate.  For a parameter scan, every unique combination of parameter values defines a separate parameter set - and is assigned a JobID (think of this as an parameter set index).  So for regular Simulations there is only one SimulationJob (JobID 0).  For parameter scans, there are multiple SimulationJobs.  Each SimulationJob is a separate simulation process which is managed by the VCell server.  Each SimulationJob has its own simulation results.  But the user does not directly manage the simulation jobs individually.

(c) VCell users request that Simulations (identified by simID) be created/destroyed/started/stopped, the VCell infrastructure manages the cluster processes and simulation result data for each SimulationJob. 

(d) each SimulationJob has its own data (or partial data if it is still running). SimulationJobs and their data are not individually started/stopped/deleted, only their parent Simulations.

(e) each SimulationJob within a Simulation has its own status (running, etc) ... but the overall Simulation status can be displayed.
 
I recommend creating a VCell account, run the Java client (using our quickstart guide, youtube videos, or tutorials to run a few simulations).  This way you'll see the current workflow a little better.  THe mobile-app workflow may be slightly different .. but the server-side capabilities will be the same.

As for the mobile-app organization, I will think about this further - but here are some initial thoughts on list of simulations:

1) "active simulation jobs" (waiting, queued, dispatched, running, (actions: view partial results, stop, delete results, clone & edit)
2) organized by "data" .. probably HERE you can manage quota (actions: view results, delete results, clone & edit)
3) organized by "model" (actions: start, stop, remove)

Jim.

Ankit Agarwal

unread,
Apr 22, 2013, 11:27:14 AM4/22/13
to vcell-...@googlegroups.com
Hi,

I am downloading the vcell software but here is what I understand with your last email.
I tried to construct a rough relationship model and attached it with the document.

So now what I have in mind is :

First Tab

All simJobs with their status listed grouped by their parent simulations. 
On tapping a simJob following options present to user :
(actions: view partial results, stop, delete results, clone & edit)
result: will show partial or complete results
stop: since you said individual jobs cant be stopped, this will stop the parent simulation?
delete result : again individual job result's cant be delete so will the parent be deleted?
clone and edit : clones the job parameters and allow editing 

Second Tab
List All completed Simulations
On tapping list all simJobs belonging to that simulation
action : view/delete results, clone and edit

Third Tab
List all models
actions: start, stop, remove the models

Am I closer to the version of app you have in mind?


--
You received this message because you are subscribed to the Google Groups "VCell Open Discussion Forum" group.
To unsubscribe from this group and stop receiving emails from it, send an email to vcell-discus...@googlegroups.com.
To post to this group, send email to vcell-...@googlegroups.com.
Visit this group at http://groups.google.com/group/vcell-discuss?hl=en-US.
For more options, visit https://groups.google.com/groups/opt_out.
 
 



--
Ankit

IMG_0728.jpg

Jim Schaff

unread,
Apr 22, 2013, 1:42:18 PM4/22/13
to vcell-...@googlegroups.com
Hi Ankit,
 
I am downloading the vcell software but here is what I understand with your last email.
I tried to construct a rough relationship model and attached it with the document.
 
Your relationship model is diagram sums it up pretty well ... I guess a picture is worth a thousand words.  Using the regular Java VCell client will be useful.
  
First Tab
All simJobs with their status listed grouped by their parent simulations. 
On tapping a simJob following options present to user :
(actions: view partial results, stop, delete results, clone & edit)
result: will show partial or complete results
stop: since you said individual jobs cant be stopped, this will stop the parent simulation? 
 
right.
 
delete result : again individual job result's cant be delete so will the parent be deleted?
 
right. 
 
clone and edit : clones the job parameters and allow editing 
 
right, cloning a SimulationJob would create a new Simulation with the parameter set from the SimulationJob and all other values from the parent Simulation remain the same (e.g. which solver, time step, etc).  This cloning would be an atomic operation on server ... a factory resource will return the URI of the newly created Simulation, you pass the old simID, new name and new parameter set (via json).
 
other possible navigation actions for Tab 1:
1)  jump to parent Simulation in Tab 2 (or Simulation Detail view)
2)  jump to parent Model in Tab 3 (or Model Detail view)
 
Second Tab
List All completed Simulations
On tapping list all simJobs belonging to that simulation
action : view/delete results, clone and edit
 
good.
 
Third Tab
List all models
actions: start, stop, remove the models
 
1) and change model permission (share model with list of other VCell users, or publicly with everyone).
2) option to display list of Simulations belonging to that model (Tab 2 with a filter) ??
3) option to display list of running simulations belonging to that model (Tab 1 with filter) ??

Am I closer to the version of app you have in mind
 
You are quite close I think ... but there is also the issue of authentication:
 
1) unauthenticated users could view public models, public Simulations, and view simulation results (no Tab 1)
.
2) authenticated users can view public models/results and also do all operations on the models/simulations that they own.  The server API will enforce authentication/authorization rules, but the client should reinforce it by not providing options that are not legal.
 
 
Thanks,
 
Jim.

Ankit Agarwal

unread,
Apr 22, 2013, 2:09:51 PM4/22/13
to vcell-...@googlegroups.com
Hi,
 
right, cloning a SimulationJob would create a new Simulation with the parameter set from the SimulationJob and all other values from the parent Simulation remain the same (e.g. which solver, time step, etc).  This cloning would be an atomic operation on server ... a factory resource will return the URI of the newly created Simulation, you pass the old simID, new name and new parameter set (via json).

Okay, This is what I imagined.
 
 
other possible navigation actions for Tab 1:
1)  jump to parent Simulation in Tab 2 (or Simulation Detail view)
2)  jump to parent Model in Tab 3 (or Model Detail view)
 

Doable

 
Third Tab
List all models
actions: start, stop, remove the models
 
1) and change model permission (share model with list of other VCell users, or publicly with everyone).
2) option to display list of Simulations belonging to that model (Tab 2 with a filter) ??
3) option to display list of running simulations belonging to that model (Tab 1 with filter) ??


1, 2, 3 all doable.
We can have filters in the tab 1 and 2 and when user selects a filter, a cancel button will appear in navigation bar to remove the filter.
 
You are quite close I think ... but there is also the issue of authentication:
 
1) unauthenticated users could view public models, public Simulations, and view simulation results (no Tab 1)
.
2) authenticated users can view public models/results and also do all operations on the models/simulations that they own.  The server API will enforce authentication/authorization rules, but the client should reinforce it by not providing options that are not legal.
 
When user is not authenticated Tab 1 will just show a login button.
On pressing illegal options the app can either show a warning "Please login to use this feature" or the option can just hidden.
In one of the thread I read that you're thinking to implement OAuth, I can work with that or any other Authentication method you prefer.


--
Ankit

Ankit Agarwal

unread,
Apr 30, 2013, 12:25:44 AM4/30/13
to vcell-...@googlegroups.com
Hi,

As per discussion in this thread, I've submitted my proposal. Please have a look at it and please let me know if I missed something or you need more information.

Thanks
Ankit
--
Ankit

Jim Schaff

unread,
May 1, 2013, 4:17:44 PM5/1/13
to vcell-...@googlegroups.com
Hi Ankit,
 
I've seen your application ... and will comment on it at the submission site in an hour or two. 
 
Thanks,
 
Jim Schaff.
Reply all
Reply to author
Forward
0 new messages