severo HF staff commited on
Commit
0fd80de
1 Parent(s): 52d6c73

add comments + fix typos

Browse files
Files changed (1) hide show
  1. app.py +23 -6
app.py CHANGED
@@ -1,3 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  from functools import lru_cache
2
 
3
  import gradio as gr
@@ -14,16 +29,18 @@ paths = fs.glob(set_path)
14
  files = {path: h5py.File(fs.open(path, "rb", cache_type="none"), "r") for path in paths}
15
 
16
  def get_scalar_fields(path: str) -> list[str]:
 
17
  return list(files[path]["t0_fields"].keys())
18
 
19
  def get_trajectories(path: str, field: str) -> list[int]:
 
20
  return list(range(len(files[path]["t0_fields"][field])))
21
 
22
  @lru_cache(maxsize=4)
23
  def get_images(path: str, scalar_field: str, trajectory: int) -> list[Image.Image]:
24
- #The data is of shape (n_trajectories, n_timesteps, x, y)
25
  out = files[path]["t0_fields"][scalar_field][trajectory]
26
- out = np.log(out)
27
  out = (out - out.min()) / (out.max() - out.min())
28
  out = np.uint8(cm.RdBu_r(out) * 255)
29
  return [Image.fromarray(img) for img in out]
@@ -36,11 +53,11 @@ with gr.Blocks() as demo:
36
  gr.Markdown(f"# 💠 HDF5 Viewer for the [{repo_id}](https://huggingface.co/datasets/{repo_id}) Dataset 🌊")
37
  gr.Markdown(f"Showing files at `{set_path}`")
38
  with gr.Row():
39
- files_dropdown = gr.Dropdown(choices=paths, value=paths[0], label="file", scale=4)
40
- scalar_fields_dropdown = gr.Dropdown(choices=default_scalar_fields, value=default_scalar_fields[0], label="scalar field")
41
- trajectory_dropdown = gr.Dropdown(choices=default_trajectories, value=default_trajectories[0], label="sample")
42
  gallery = gr.Gallery(default_images, preview=True, selected_index=len(default_images) // 2)
43
- gr.Markdown("_Tip: click on the image to go forward or backards_")
44
 
45
  @files_dropdown.select(inputs=[files_dropdown], outputs=[scalar_fields_dropdown, trajectory_dropdown, gallery])
46
  def _update_file(path: str):
 
1
+ # All the datasets will use the same format: a collection of HDF5 files with data cubes
2
+ # in t0_fields: scalar fields, like density, pressure, energy
3
+ # the data is of shape (n_trajectories, n_time_steps, x, y)
4
+ # in t1_fields: vector fields, like velocity (size=2 => vx, vy)
5
+ # the data is of shape (n_trajectories, n_time_steps, x, y, vx/vy)
6
+ # in t2_fields: tensor fields, like ???
7
+ # the data is of shape (n_trajectories, n_time_steps, x, y, d1, d2), with d1, d2 in [0, 1]
8
+ # ie, instead of 1 additional dimension for velocity: a (2,2) matrix where each component
9
+ # (0,0),(1,0),(0,1),(1,1) can be plotted
10
+ # Size:
11
+ # - n_trajectories: 8 to 256
12
+ # - n_time_steps: 101
13
+ # - x: 128 to 512
14
+ # - y: 128 to 512
15
+ # - physical fields: 2 to 8 (density, pressure, energy, velocity…)
16
  from functools import lru_cache
17
 
18
  import gradio as gr
 
29
  files = {path: h5py.File(fs.open(path, "rb", cache_type="none"), "r") for path in paths}
30
 
31
  def get_scalar_fields(path: str) -> list[str]:
32
+ # TODO: support t1_fields (vector) and t2_fields (tensor)
33
  return list(files[path]["t0_fields"].keys())
34
 
35
  def get_trajectories(path: str, field: str) -> list[int]:
36
+ # The first dimension is the trajectory (8 to 256)
37
  return list(range(len(files[path]["t0_fields"][field])))
38
 
39
  @lru_cache(maxsize=4)
40
  def get_images(path: str, scalar_field: str, trajectory: int) -> list[Image.Image]:
41
+ # The data is of shape (n_trajectories, n_time_steps, x, y)
42
  out = files[path]["t0_fields"][scalar_field][trajectory]
43
+ out = np.log(out) # not sure why
44
  out = (out - out.min()) / (out.max() - out.min())
45
  out = np.uint8(cm.RdBu_r(out) * 255)
46
  return [Image.fromarray(img) for img in out]
 
53
  gr.Markdown(f"# 💠 HDF5 Viewer for the [{repo_id}](https://huggingface.co/datasets/{repo_id}) Dataset 🌊")
54
  gr.Markdown(f"Showing files at `{set_path}`")
55
  with gr.Row():
56
+ files_dropdown = gr.Dropdown(choices=paths, value=paths[0], label="File", scale=4)
57
+ scalar_fields_dropdown = gr.Dropdown(choices=default_scalar_fields, value=default_scalar_fields[0], label="Physical field")
58
+ trajectory_dropdown = gr.Dropdown(choices=default_trajectories, value=default_trajectories[0], label="Trajectory")
59
  gallery = gr.Gallery(default_images, preview=True, selected_index=len(default_images) // 2)
60
+ gr.Markdown("_Tip: click on the image to go forward or backwards_")
61
 
62
  @files_dropdown.select(inputs=[files_dropdown], outputs=[scalar_fields_dropdown, trajectory_dropdown, gallery])
63
  def _update_file(path: str):