Skip to content

Commit

Permalink
Build the database and query for depressed dipole modes.
Browse files Browse the repository at this point in the history
  • Loading branch information
saravia committed Apr 8, 2016
1 parent f37b738 commit b88abcf
Show file tree
Hide file tree
Showing 13 changed files with 161 additions and 377 deletions.
6 changes: 4 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
# rgflags
Web frontend and database with seismic information about red-giant stars
rgflags
=======

Web frontend and database with seismic information about red-giant stars
4 changes: 2 additions & 2 deletions app.yaml
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
application: rgflags
version: 0-1-2
version: 0-2-0
runtime: python27
api_version: 1
threadsafe: true

handlers:

- url: /seeding/.*
- url: /_admin/.*
script: main.app
secure: always
login: admin
Expand Down
89 changes: 2 additions & 87 deletions index.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,90 +12,5 @@ indexes:

- kind: Star
properties:
- name: DeltaNu_c
- name: DeltaNu_p
- name: deprDipoles_p
- name: fastRot_p
- name: quarters
- name: DeltaNu_n

- kind: Star
properties:
- name: DeltaNu_c
- name: DeltaNu_p
- name: quarters
- name: DeltaNu_n

- kind: Star
properties:
- name: DeltaP_c
- name: DeltaP_p
- name: deprDipoles_p
- name: fastRot_p
- name: quarters
- name: DeltaP_n

- kind: Star
properties:
- name: DeltaP_c
- name: DeltaP_p
- name: evolState_c
- name: evolState_n
- name: evolState_p
- name: quarters
- name: DeltaP_n

- kind: Star
properties:
- name: DeltaP_c
- name: DeltaP_p
- name: fastRot_p
- name: DeltaP_n

- kind: Star
properties:
- name: DeltaP_c
- name: DeltaP_p
- name: quarters
- name: DeltaP_n

- kind: Star
properties:
- name: deprDipoles_p
- name: evolState_c
- name: evolState_n
- name: evolState_p
- name: numax_c
- name: numax_p
- name: quarters
- name: numax_n

- kind: Star
properties:
- name: deprDipoles_p
- name: fastRot_p
- name: numax_c
- name: numax_p
- name: quarters
- name: numax_n

- kind: Star
properties:
- name: fastRot_p
- name: numax_c
- name: numax_p
- name: quarters
- name: numax_n

- kind: Star
properties:
- name: numax_c
- name: numax_p
- name: numax_n

- kind: Star
properties:
- name: numax_c
- name: numax_p
- name: quarters
- name: numax_n
- name: deprDipoles
- name: KIC
2 changes: 2 additions & 0 deletions main.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@
Route('/', handler='src.frontend.RootPage'),
Route('/query_one', handler='src.starsdb.QueryOnePage'),
Route('/query_list', handler='src.starsdb.QueryListPage'),
Route('/_admin/build_db', handler='src.admin.DbAdmin:build_db', methods="POST"),
Route('/_admin/', handler='src.admin.MainPage')
]


Expand Down
2 changes: 1 addition & 1 deletion src/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
# __init__.py

__all__ = ["filters", "frontend", "generic", "starsdb"]
__all__ = ["admin", "filters", "frontend", "generic", "starsdb"]
48 changes: 48 additions & 0 deletions src/admin.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# admin.py

import csv, logging
import webapp2
from google.appengine.api import taskqueue
from generic import GenericPage
from starsdb import Star

DB_FILE = "db.csv"

def parse_TrueFalseNA(s):
assert(s in ["TRUE", "FALSE", "NA"])
return s


class MainPage(GenericPage):
def get(self):
kw = {"message" : self.request.get("message"),
"numstars" : Star.query().count()}
self.render("admin.html", **kw)

def post(self):
action = self.request.get("action")
if action == "build_db":
taskqueue.add(url = '/_admin/build_db')
self.redirect("/_admin/?message=Building database")

class DbAdmin(GenericPage):
def build_db(self):
with open(DB_FILE, 'rb') as f:
reader = csv.reader(f)
header = reader.next()
for row in reader:
colnum = 0
for col in row:
if colnum == 0:
star = Star.query(Star.KIC == int(col)).get()
if not star:
star = Star(KIC = int(col))
else:
ppty = header[colnum]
if ppty == "depressed_l1":
star.deprDipoles = parse_TrueFalseNA(col)
else:
assert(False)
colnum +=1
star.put()
self.write('Done!')
2 changes: 1 addition & 1 deletion src/generic.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@

# You should change these if you are registering your own app on App Engine
APP_NAME = "RGFlags"
APP_VERSION = "0.1.2"
APP_VERSION = "0.2.0"
APP_URL = "https://rgflags.appspot.com"
ADMIN_EMAIL = "admin@rgflags.appspotmail.com"
APP_REPO = "https://github.molgen.mpg.de/MPS-SAGE/rgflags"
Expand Down
64 changes: 6 additions & 58 deletions src/starsdb.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,26 +29,8 @@ def parse_checkbox(s):
# n = number of times identified
# r = list of references that identified it
class Star(ndb.Model):
KIC = ndb.IntegerProperty(required = True)
quarters = ndb.IntegerProperty(required = True)
numax_p = ndb.BooleanProperty(default = False)
numax_c = ndb.IntegerProperty(default = False)
numax_n = ndb.IntegerProperty(default = False)
numax_r = ndb.StringProperty(repeated = True)
DeltaNu_p = ndb.BooleanProperty(default = False)
DeltaNu_c = ndb.IntegerProperty(default = False)
DeltaNu_n = ndb.IntegerProperty(default = False)
DeltaNu_r = ndb.StringProperty(repeated = True)
DeltaP_p = ndb.BooleanProperty(default = False)
DeltaP_c = ndb.IntegerProperty(default = False)
DeltaP_n = ndb.IntegerProperty(default = False)
DeltaP_r = ndb.StringProperty(repeated = True)
evolState_p = ndb.BooleanProperty(default = False)
evolState_c = ndb.IntegerProperty(default = False)
evolState_n = ndb.IntegerProperty(default = False)
evolState_r = ndb.StringProperty(repeated = True)
fastRot_p = ndb.BooleanProperty(default = False)
deprDipoles_p = ndb.BooleanProperty(default = False)
KIC = ndb.IntegerProperty(required = True)
deprDipoles = ndb.StringProperty(default = False)


###########################
Expand All @@ -64,44 +46,10 @@ def post(self):
class QueryListPage(GenericPage):
def post(self):
kw = {
"quarters_p" : parse_checkbox(self.request.get("quarters_p")),
"quarters" : int(self.request.get("quarters")),
"numax_p" : parse_checkbox(self.request.get("numax_p")),
"numax_c" : parse_pip_disp(self.request.get("numax_c")),
"numax_n" : int(self.request.get("numax_n")),
"DeltaNu_p" : parse_checkbox(self.request.get("DeltaNu_p")),
"DeltaNu_c" : parse_pip_disp(self.request.get("DeltaNu_c")),
"DeltaNu_n" : int(self.request.get("DeltaNu_n")),
"DeltaP_p" : parse_checkbox(self.request.get("DeltaP_p")),
"DeltaP_c" : parse_pip_disp(self.request.get("DeltaP_c")),
"DeltaP_n" : int(self.request.get("DeltaP_n")),
"evolState_p" : parse_checkbox(self.request.get("evolState_p")),
"evolState_c" : parse_pip_disp(self.request.get("evolState_c")),
"evolState_n" : int(self.request.get("evolState_n")),
"fastRot_p" : parse_checkbox(self.request.get("fastRot_p")),
"deprDipoles_p" : parse_checkbox(self.request.get("deprDipoles_p"))
"deprDipoles_p" : parse_checkbox(self.request.get("deprDipoles_p")),
"deprDipoles" : self.request.get("deprDipoles_c")
}
stars = Star.query()
if kw["quarters_p"]:
stars = stars.filter(Star.quarters == kw["quarters"])
if kw["numax_p"]:
stars = stars.filter(Star.numax_p == True)
stars = stars.filter(Star.numax_c == kw["numax_c"])
stars = stars.filter(Star.numax_n == kw["numax_n"])
if kw["DeltaNu_p"]:
stars = stars.filter(Star.DeltaNu_p == True)
stars = stars.filter(Star.DeltaNu_c == kw["DeltaNu_c"])
stars = stars.filter(Star.DeltaNu_n == kw["DeltaNu_n"])
if kw["DeltaP_p"]:
stars = stars.filter(Star.DeltaP_p == True)
stars = stars.filter(Star.DeltaP_c == kw["DeltaP_c"])
stars = stars.filter(Star.DeltaP_n == kw["DeltaP_n"])
if kw["evolState_p"]:
stars = stars.filter(Star.evolState_p == True)
stars = stars.filter(Star.evolState_c == kw["evolState_c"])
stars = stars.filter(Star.evolState_n == kw["evolState_n"])
if kw["fastRot_p"]:
stars = stars.filter(Star.fastRot_p == True)
stars = Star.query().order(Star.KIC)
if kw["deprDipoles_p"]:
stars = stars.filter(Star.deprDipoles_p == True)
stars = stars.filter(Star.deprDipoles == kw["deprDipoles"])
self.render("query_many.html", stars = stars.iter())
87 changes: 87 additions & 0 deletions templates/admin.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="stylesheet" href="/css/base.css">
<!-- jquery -->
<script src="https://code.jquery.com/jquery-1.10.1.min.js"></script>
<!-- Bootstrap -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css"
integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap-theme.min.css"
integrity="sha384-fLW2N01lMqjakBkx3l/M9EahuwpSfeNvV63J5ezn3uZzapT0u7EYsXMjQV+0En5r" crossorigin="anonymous">
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" crossorigin="anonymous"></script>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<!-- Mathjax -->
<script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
<script type="text/javascript">
MathJax.Hub.Config({
"tex2jax": { inlineMath: [ [ '$', '$' ] ], processEscapes: true },
TeX: {equationNumbers: {autoNumber: "AMS"} }
});
</script>
</head>

<body>
<div id="wrap">
<!-- NAVBAR -->
<nav class="navbar navbar-inverse navbar-static-top" role="navigation" id="navbar">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="/" aria-label="Return to the root page">{{APP_NAME}}</a>
</div>

<div class="collapse navbar-collapse navbar-ex1-collapse">
<ul class="nav navbar-nav navbar-right">
<li id="signin-navbar"><a href="/login">Sign in</a></li>
<li id="signup-navbar"><a href="/signup">Sign up</a></li>
</ul>
</div>
</div>
</nav>

<!-- CONTENT -->
<div id="main-content" style="margin:0 20px;">
<h1 class="text-center">Admin Page</h1>

{% if message %}<div class="alert alert-info alert-dismissible" role="alert">
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
{{message}}</div>
{% endif %}

<div class="row">
<div class="col-md-6">
<h2>Summary</h2>
<table class="table table-striped">
<tbody>
<tr>
<td>Stars</td>
<td>{{numstars}}</td>
</tr>
<tr>
<td>Properties</td>
<td>NA</td>
</tr>
</tbody>
</table>
</div>

<div class="col-md-6">
<h2>Available jobs</h2>

<form method="post">
<input type="hidden" value="build_db" name="action" />
<button formaction="/_admin/" type="submit"
class="btn btn-default">Build the database from "db.csv"</button>
</form>
</div>
</div>
</div>
</div>
</body>
</html>
2 changes: 1 addition & 1 deletion templates/base.html
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="stylesheet" href="css/base.css">
<link rel="stylesheet" href="/css/base.css">
<!-- Bootstrap -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css"
integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">
Expand Down
Loading

0 comments on commit b88abcf

Please sign in to comment.