-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathdetails.html
More file actions
235 lines (185 loc) · 11.4 KB
/
details.html
File metadata and controls
235 lines (185 loc) · 11.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
<!DOCTYPE html>
<html>
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>Fossilized Containers</title>
<link rel="icon" href="img/small_logo.png">
<link href="stylesheets/external/bootstrap.min.css" rel="stylesheet">
<link href="stylesheets/styles.css" rel="stylesheet">
</head>
<body>
<nav class="navbar navbar-expand-md navbar-dark fixed-top bg-dark">
<img class="navbar-img" src="img/small_logo.png" />
<a class="navbar-brand" href="index.html">Fossilized Containers</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse justify-content-end" id="navbarNav">
<ul class="navbar-nav mr-right">
<li class="nav-item">
<a class="nav-link" href="index.html">Home</a>
</li>
<li class="nav-item ">
<a class="nav-link" href="team.html">The Team</a>
</li>
<li class="nav-item active">
<a class="nav-link" href="details.html">Project Details <span class="sr-only">(current)</span></a>
</li>
<li class="nav-item">
<a class="nav-link" href="solution.html">Our Solution</a>
</li>
<li class="nav-item">
<a class="nav-link" href="deliverables.html">Deliverables</a>
</li>
<li class="nav-item">
<a class="nav-link" href="https://www.youtube.com/watch?v=sbh140Ct-BA" target="_blank">Demo</a>
</li>
<li class="nav-item">
<a class="nav-link" href="https://github.com/FossilizedContainers" target="_blank">Codebase</a>
</li>
</ul>
</div>
</nav>
<main role="main">
<div class="container">
<div class="">
<div class="information">
<h1 class="display-4"> Project Description </h1>
<div class="row">
<div class="col-md-6">
<p class="text-justify">
Climate change is a pressing issue that researchers have been actively trying to combat in the past few decades. One field of research meant to aid this battle is paleoclimatology, the study of past climates. By
understanding
how climate has changed over the past several thousand years, scientists can predict and prepare for what will happen. With different types of data gathered all around the world, paleoclimatologists have been able to
create
climate reconstructions that can show temperatures of different regions across history. It is important for scientists to share these climate models amongst each other but it can become difficult with how complex the
models
can become.
</p>
</div>
<div class="col-md-6 align-items-center my-auto">
<img src="img/workflow.png" alt="There is not a simple way to share climate models">
</div>
</div>
<p class="text-justify">
Our client, Nicholas McKay, is an associate professor at NAU and a researcher in the Paleoclimate Dynamics Laboratory (PDL) working with these climate models.
PDL, along with collaborators at the University of Southern California, have worked to create a system that gathers reconstructions and provides constant updates. This is the Paleoclimate Reconstruction Storehouse,
otherwise
known as PReSto.
With PReSto, Dr. McKay and collaborators can accept different datasets and models from different researchers and submit them to their system. With the thousands of types of datasets, however, it is difficult for
researchers to
submit their code to PReSto without an existing standardized way to review them. Scientists use a multitude of programming languages, libraries, dependencies, and operating systems that are not guaranteed to work on
other
systems. Containerization is a way to package software so that it will be compatible across different host operating systems. It also allows users to test a model without having to install different libraries or
dependencies.
They simply need to build a container and run it to view the model.
</p>
<div class="align-items-center my-auto">
<img class="rounded mx-auto d-block mb-4 mt-2" src="img/paleo_graph.png" alt="">
</div>
<p class="text-justify">
A current problem within the research community is that not every climate scientist has the skillset to create their own containers since it is newer technology. Having scientists who are trying to contribute to PReSto learn
the intricacies of containerization is inefficient. PReSto aims to create a streamlined process so that scientists can contribute their models in a more efficient manner. We will create a command line interface, CLI, for
scientists interacting with PReSto so that they can submit their models in an efficient manner that is easily accessible and language agnostic. The CLI is
bundled within the Fossilized Controller, the overarching tool that helps scientists build and communicate with their containers. The tool will guide the user through the container creation process with prompts for
clarification. From there, they can run the models or send files with the help of adapter libraries. The libraries are added to the model code so that the Fossilized Controller can adequately communicate with the containers.
</p>
<h1 class="display-4"> Requirements </h1>
<p class="text-justify">
Our main high level requirements are to create a command line tool and to communicate with created containers
</p>
<h2>Functional Requirements</h2>
<div class="row">
<div class="col-md-6">
<ul>
<li>Command Line Interface (CLI)
<ul>
<li>Guide users through containerization process</li>
<li>Run containers with climate model parameters</li>
<li>Create containers</li>
<li>Run containers</li>
<li>Remove containesr</li>
<li>Collect climate model output</li>
</ul>
</li>
<li>Communicating With Containers
<ul>
<li>Send files to container</li>
<li>Receive files from container</li>
</ul>
</li>
<li>Adapter Libraries
<ul>
<li>R Library to connect CLI and containers</li>
<li>Python Library to connect CLI and containers</li>
</ul>
</li>
</ul>
</div>
<div class="col-md-6 align-items-center my-auto">
<img src="img/manage_containers.png" alt="Diagram showing the CLI spawning, running and destroying containers">
</div>
</div>
<h2>Non-Functional Requirements</h2>
<div class="row">
<div class="col-md-6">
<ul>
<li>Send Large Files
<ul>
<li>Send large files from CLI to container and vise versa</li>
<li>Handle at least 5735 kilobtyes (largest size of the largest set of LiPD files</li>
<li>Tested against files between 5,000 kilobtyes up to 10 gigabytes</li>
</ul>
</li>
<li>Appropriate Response Length
<ul>
<li>Send files to container</li>
<li>Receive files from container</li>
</ul>
</li>
</ul>
</div>
</div>
<h2>Constraints</h2>
<div class="row">
<ul>
<li>Integrating Software With Platforms
<ul>
<li>Controller interacts with Github</li>
<li>Controller interacts with Dockerhub</li>
</ul>
</li>
<li>Language Agnostic
<ul>
<li>Containerize any programming language</li>
</ul>
</li>
<li>LiPD Library
<ul>
<li>Must use the provided LiPD library to work with filetypes</li>
</ul>
</li>
<li>Compatible Across Different Systems
<ul>
<li>Run on Windows, Mac and Linux</li>
</ul>
</li>
</ul>
</div>
</div>
<!--
<img src="img/communicating_containers.png" alt="Diagram showing the CLI communicating with a Docker container">
<img src="img/adapter_library.png" alt="Diagram showing adapter libraries sending and receiving files">
-->
</div>
</div>
</div>
</main>
<!-- Bootstrap scripts -->
<script src="scripts/jquery-3.3.1.slim.min.js"></script>
<script src="scripts/popper.min.js"></script>
<script src="scripts/bootstrap.min.js"></script>
</body>
</html>