Nuclear data web portal tools
navigate the slides with left and right keys
This work was funded by the RCUK Energy Programme
[Grant number EP/P012450/1]
Live broadcast available on https://slides.com/shimwell/iaea/live
Motivation
Web based plotting
Client side: JavaScript,
React JS, HTML5
Rest APIs
Online databases
Storage buckets
Hosted containers
Virtual machines
Cloud computing
Web-apps
RESTful API
An Application Program Interface (API) that uses HTTP requests to access data
url = www.a_random_web_address.com
json_query = {'protons':3,
'neutrons':4,
'evaluation':'jeff3.2'
}
request = url + '?' + json_query
code awaiting request written in
Node.js, Python, Java 8, C# or Go
A JSON response
response = {'count':12}
RESTful API - counting entries
Demonstration of a RESTful API designed to count the number of matching entries in a database of cross sections
Python scripts + PyMongo library + zappa deployment + AWS
Deployment of with Zappa
RESTful API - matching entries
Demonstration of a RESTful API designed to return the matching entries in a database
Python scripts + PyMongo library + zappa deployment + AWS
Serverless computing
Available from public cloud providers
Cloud native apps using serverless functions
Online database
Adding to the database
Search for matching entries
Retrieving matching results
data = {"element_full": "antimony",
"element": "sb",
"nucleon_number": "118m",
"products": "nonelas",
"mt_number": "3",
"proton_number": "51",
"neutron_number": "67",
"incident_particle": "d",
"library": "tendl.2017"}
collection.insert(data)
search_dictionary={'element':'U'}
result = collection.find(search_dictionary)
{"results": [{"mt_number": "103", "proton_number": "92", "incident_particle": "h", "element": "u", "neutron_number": "135", "products": "p", "library": "tendl.2017", "nucleon_number": "227", "element_full": "uranium", "score": 0.0},
{"mt_number": "104", "proton_number": "92", "incident_particle": "h", "element": "u", "neutron_number": "135", "products": "d", "library": "tendl.2017", "nucleon_number": "227", "element_full": "uranium", "score": 0.0},
{"mt_number": "105", "proton_number": "92", "incident_particle": "h", "element": "u", "neutron_number": "135", "products": "t", "library": "tendl.2017", "nucleon_number": "227", "element_full": "uranium", "score": 0.0}...]}
....]
NoSQL databases gaining popularity in Web 2.0 due to ability to scale horizontally using clusters of machines and database "fragments"
Online database
Vertical Scaling
relational SQL databases
Horizontal Scaling
NoSQL
databases
Online database
Considerations:
JavaScript based web compatible plotting libraries.
Over 20 options including D3, Plotly, Chart.js, Fusion chart etc
Plotting libraries
Use of cloud functions together with NoSQL databases and online storage solutions.
A scalable solution
Current monthly cost £0.42
AWS Lambda costs
A world wide solution
Locate services at AWS nodes or edge locations
to achieve the lowest latency
Javascript and HTML based website that queries rest APIs to find and plot data
Rest API for searching database
Nuclear data cross sections
Database describing available nuclear data
Webpage graphical user interface
Plotting library
Putting everything together
Rest API for retrieving xs data
Rest API for counting matches
Putting everything together again
Using Dash the Plotly framework for creating web applications
Rest API for searching database
Nuclear data cross sections
Database describing available nuclear data
Web-app graphical user interface
Plotting library
Rest API for retrieving xs data
Rest API for counting matches
Putting everything together
alternative framework options
React makes it painless to create interactive UIs. Design simple views for each state in your application, and React will efficiently update and render just the right components when your data changes.
Build encapsulated components that manage their own state, then compose them to make complex UIs.
We don’t make assumptions about the rest of your technology stack, so you can develop new features in React without rewriting existing code.
React can also render on the server using Node and power mobile apps using React Native.
Database are capable of representing preprocessed collections of nuclear data
Nuclear data on the fly
Producing nuclear data for every possible temperature for all isotopes and all reactions would lead to a large database.
Generating nuclear data on the fly as specified by the user would be a more suitable solution and avoid searching a huge databases
Introducing OpenMC nuclear processing capabilities
Nuclear data on the fly
Containerized web-app with all the required software and data.
Nuclear data
Containerization
Putting everything together try 3
Conclusion