🌊 SST Prediction App 🌡️

Introduction

Welcome to the SST Prediction App! 🎉

This application enables users to predict Sea Surface Temperatures (SST) based on historical data. With a specialized ConvLSTM model, the app processes 5 days of SST data to predict the SST for the 6th day.

Model Overview:

🔧 Trained by Boris

Layer (type) Output Shape Param #
ConvLSTM2D (None, 401, 451, 32) 38,144
BatchNormalization (None, 401, 451, 32) 128
Dropout (None, 401, 451, 32) 0
Conv2D (None, 401, 451, 64) 18,496
BatchNormalization_1 (None, 401, 451, 64) 256
Dropout_1 (None, 401, 451, 64) 0
Conv2D_1 (None, 401, 451, 32) 18,464
BatchNormalization_2 (None, 401, 451, 32) 128
Dropout_2 (None, 401, 451, 32) 0
Conv2D_2 (None, 401, 451, 1) 289

Total params: 75,905
Trainable params: 75,649
Non-trainable params: 256

The data used hails from the MUR-JPL-L4-GLOB-v4.1 dataset on earthdata.nasa.gov.

Setup Steps 🚀:

  1. Clone the repo:
git clone https://github.com/NaNa7Miiii/upwelling_prediction.git
  1. Navigate to the directory:
cd upwelling_prediction
  1. Install the dependencies:
pip install -r requirements.txt
  1. Launch the app:
streamlit run app.py
  1. Please comment out this chunk of code which aims to create a .netrc file to access NASA's data, but if you want to deploy the repo in streamlit cloud please don't do anything on that:
NETRC_PATH = os.path.expanduser("~/.netrc")

def create_netrc(machine, login, password, path=NETRC_PATH):
    netrc_content = f"""
    machine {machine}
    login {login}
    password {password}
    """

    with open(path, "w") as file:
        file.write(netrc_content)

    os.chmod(path, 0o600)

secrets = st.secrets["earthdata_test"]
create_netrc(secrets["machine"], secrets["login"], secrets["password"])

After all that, you are ready to go!