Metadata-Version: 2.4
Name: samudra-ai
Version: 1.1.0
Summary: Paket Python untuk pengolahan koreksi bias model iklim global menggunakan deep learning CNN-BiLSTM.
Author-email: Adityo Wicaksono <adityo.wicaksono@bmkg.go.id>
License: MIT License
Project-URL: Homepage, https://github.com/adityoAJA/samudra-ai
Project-URL: Bug Tracker, https://github.com/adityoAJA/samudra-ai/issues
Classifier: Development Status :: 3 - Alpha
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Intended Audience :: Science/Research
Classifier: Topic :: Scientific/Engineering :: Atmospheric Science
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: xarray
Requires-Dist: numpy
Requires-Dist: pandas
Requires-Dist: tensorflow==2.16.1
Requires-Dist: scikit-learn
Requires-Dist: matplotlib
Requires-Dist: h5netcdf
Requires-Dist: cftime
Requires-Dist: scikit-image
Requires-Dist: joblib
Requires-Dist: seaborn
Requires-Dist: scipy
Requires-Dist: openpyxl
Dynamic: license-file

# samudra-ai
Paket Python untuk melakukan pengolahan koreksi bias model iklim global menggunakan arsitektur deep learning CNN-BiLSTM

# SamudraAI 🌊

![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)
[![PyPI version](https://badge.fury.io/py/samudra-ai.svg)](https://pypi.org/project/samudra-ai/)
[![Python](https://img.shields.io/pypi/pyversions/samudra-ai.svg)](https://pypi.org/project/samudra-ai/)

Paket Python untuk koreksi bias model iklim menggunakan arsitektur deep learning CNN-BiLSTM. 

**SamudraAI** memudahkan peneliti dan praktisi di bidang ilmu iklim untuk menerapkan metode koreksi bias yang canggih pada data GCM (General Circulation Model) menggunakan data observasi sebagai referensi.

## Fitur Utama

* 🧠 **Arsitektur CNN-BiLSTM**: Menggabungkan kemampuan ekstraksi fitur spasial dari CNN dengan pemahaman sekuens temporal dari LSTM.
* 📂 **Antarmuka Sederhana**: API yang bersih dan mudah digunakan, terinspirasi oleh `scikit-learn`.
* 🛠️ **Pra-pemrosesan Terintegrasi**: Fungsi bawaan untuk memuat, memotong, dan menormalisasi data iklim dalam format NetCDF.
* 💾 **Model Persistent**: Kemampuan untuk menyimpan model yang telah dilatih dan memuatnya kembali untuk inferensi di kemudian hari.

## Instalasi

Anda dapat menginstal SamudraAI langsung dari PyPI menggunakan pip:

```bash
pip install samudra-ai
```

## Cara Penggunaan Cepat (Quick Start)

Berikut adalah alur kerja dasar untuk menggunakan `SamudraAI`.

### 1. Siapkan Data Anda
Pastikan Anda memiliki data dalam format `xarray.DataArray`:
* `gcm_hist_data`: Data GCM historis (sebagai input `X`).
* `obs_data`: Data observasi/reanalysis (sebagai target `y`).
* `gcm_future_data`: Data GCM masa depan yang ingin dikoreksi.

```bash
### 2. import model
from samudra_ai import SamudraAI
from samudra_ai.data_loader import load_and_mask_dataset

### 3. Load GCM dan Observasi
gcm = load_and_mask_dataset("canesm5_historical_1993_2014.nc", "zos", (-15, 10), (90, 145), ("1993", "2014"))
obs = load_and_mask_dataset("cmems_obs_1993_2024.nc", "sla", (-15, 10), (90, 145), ("1993", "2014"))

### 4. Inisialisasi dan Training Model
model = SamudraAI(time_seq=9)
model.fit(gcm, obs, epochs=100)
model.plot_history(output_dir="hasil_plot/")

### 5. Simpan dan/atau muat ulang model
model.save("canesm5_model_final")
model = SamudraAI.load("canesm5_model_final")

### 6. Evaluasi Historical dan Simpan Hasil Koreksi
eval_df, corrected_hist = model.evaluate_and_plot(
    raw_gcm_data=gcm,
    ref_data=obs,
    var_name_ref="sla",
    output_dir="hasil_evaluasi/",
    save_corrected_path="canesm5_historical_terkoreksi.nc"
)

### 6. Koreksi Proyeksi SSP
ssp = load_and_mask_dataset("canesm5_ssp245_2015_2100.nc", "zos", (-15, 10), (90, 145), ("2025", "2100"))
corrected_proj = model.correction(ssp, save_path="canesm5_ssp245_terkoreksi.nc")
```

## Best Practice

* ✅ Disarankan menggunakan TensorFlow GPU untuk performa optimal
* ✅ Disarankan memiliki memory / RAM yang cukup untuk pengolahan data dengan resolusi tinggi dan luasan domain yang besar
* ✅ Jalankan pelatihan secara penuh di lingkungan lokal
* ⚠️ Hindari mencampur save/load model .keras antar environment yang berbeda
* ⚠️ Menggunakan Docker tetap bisa berjalan, namun proses save and load (penggunaan no.5) tidak bisa diproses karena perbedaan env
* 💡 Format .nc hasil koreksi bisa langsung digunakan untuk plotting dan analisis

## Lisensi

Proyek ini dilisensikan di bawah **MIT License**. Lihat file `LICENSE` untuk detailnya.
