-
Notifications
You must be signed in to change notification settings - Fork 1
01 ‐ RAD
The ISS analysis tool is a web application that provides analysts at Barrios, an aerospace company, with logistics optimization, usage forecasting, and prediction accuracy analysis surrounding consumable delivery to the International Space Station (ISS).
The system encompasses secure data input and transport via HTTP, data storage in a relational database, prediction accuracy analysis, logistics optimization analysis, and predictive modeling. All system functionality will be presented to users through a simplified and intuitive web-based interface.
- ISS: International Space Station
- IMS: Inventory Management System - Barrios' ISS inventory management datastore
- ORM: Object Relational Mapper - A framework-specific set of classes and methods for interacting with a database
- Django: A "full-stack" web framework written in Python
- HTMX: A client-side JavaScript library that enhances HTML for easy communication with the server
- PostgreSQL: A relational SQL database
- Pandas: A Python library for exploring and manipulating tabular data
- Prophet: A forecasting algorithm
The ISS analysis tool will give Barrios analysts the ability to quickly transform user-provided data into three types of analysis: prior prediction accuracy assessment, logistics optimization, and predictive modeling.
The current system is a simplified approach based on the requirements defined in iteration 2. With this iteration, the code's focus is basic file upload and user data persistence. Additional work is underway to prototype predictive modeling, optimization, and accuracy analysis functionality that will be integrated into the application during a future iteration.
The proposed system will use an HTTP server framework named Django to facilitate a basic Model-View-Controller application structure. With this structure, controllers will respond to HTTP requests sent from a browser-based HTML interface augmented with the HTMX library and coordinate the creation of optimization analysis and predictive modeling using the Pandas data library and the Prophet algorithm. The system will also facilitate uploading and storing client-generated data using PostgreSQL.
- Data upload, validation, and persistence functionality
- Accuracy analysis, logistics optimization, and predictive modeling algorithms
- Intuitive and aesthetically pleasing user interface
Interface:
- The web application should have an intuitive and appealing user interface that works on various screen sizes.
User management:
- Administrators should be able to create additional users with different levels of access.
Account management:
- Users should be able to log in, log out, and reset their passwords.
Ease of use:
- Users should be able to upload and verify data in a straightforward and intuitive way. Additionally, users should be able to view analyses in a high-level overview and have access to more detailed views of each analysis.
Data:
- User data should be persisted to the appropriate database table and stored as a redundant flat file on the filesystem.
Client performance:
- Consideration for browser performance and interface response times should be paramount. Undue amounts of JavaScript should be avoided.
- The display of large amounts of tabular data should be approached iteratively — using pagination or "infinite scrolling" to load smaller subsets of the data at a time.
- Visualizations should be lightweight.
Server performance:
- Persistence of user data should be fast, especially in the face of multi-gigabyte source uploads.
- Analysis functions should take every measure to perform as quickly as possible.
- The application will be easy to use on any modern web browser.
- Documentation of the underlying application code and application deployment guidance will be provided.
- Must work well in all modern browsers.
- The interface should be responsive.
- The interface should look good and communicate intention.
- The system will be deployed to cloud-based infrastructure using a containerized environment for the server.
- Could infrastructure must include a PostgreSQL database.
- The system should use open source libraries with permissive licensing.
- Client data should remain confidential
- Student should remain the intellectual property of the students
Initial Assumption: A Barrios analyst is logged into the analysis application and has the required permissions to upload files. The files to be uploaded are in CSV format.
Normal: The analyst presses the "Upload Data" button located in the left sidebar, then chooses a CSV file or a set of CSV files to upload to the application. Uploaded files are immediately validated against a set of "dictionaries" that match known Barrios datasets and inserted into the appropriate user data table. An error is returned to the user if the file does not match a known dictionary. An entry is then created in an upload table and each entry in the user data table is associated with that upload record.
After the upload and persistence process is completed, a list of links to file previews is presented to the user. Each link leads to a page with an HTML table representation of the data they uploaded.
Initial Assumption: A Barrios analyst is logged into the analysis application and has the required permissions to view and generate analyses.
Normal: The analyst chooses the type of analysis they want, either a forecast or an optimization, and the date range they wish to use for analysis. Their date-range selection will be limited to a range of historical data in the application's database for that type of analysis.
When they are done making their selections, the application will either return a stored analysis result based on their selection or generate the appropriate analysis and persist the results to the database.
Upload Data Use Case
Analysis Use Case
User Login Use Case
User Administration Use Case
User Sign-in
User Administration
File Upload
Request Analysis
User Registration
User Administration
Data Upload
Request Analysis
Prophet: A timeseries forecasting algorithm developed by Facebook/Meta Emmett: A Python web framework that provides routing (controllers), templating (views), and models. The framework also includes an "object relational mapper" for working with relational databases. Object Relational Mapper: Library with methods or functions for interacting with a database without the need for writing queries directly. Inventory Management System (IMS): The database/datastore used by Barrios for tracking logistics and consumables for the International Space Station.
Much of this iteration has been centered around exploring the client data, prototyping analysis functions, and implementing basic functionality.
- Implemented the beginnings of a file upload mechanism, which currently takes multipart form data, saves a file to the filesystem, and reads the field names of the provided tabular data. In the future, these field names will be used to determine which
UserData
table to save the user data to.
Data Controller - Upload Route
Prophet Algorithm - [Prototype Notebook]