idf2table


Nameidf2table JSON
Version 0.1.7 PyPI version JSON
download
home_pageNone
SummaryConvertir des fichiers EnergyPlus IDF en DataFrames pandas
upload_time2025-10-30 17:00:30
maintainerNone
docs_urlNone
authorNone
requires_python>=3.12
licenseMIT
keywords building dataframe energyplus eppy idf pandas simulation
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # IDF2TABLE

**Convertir des fichiers EnergyPlus IDF en DataFrames pandas**

IDF2TABLE est un outil Python qui permet de convertir les objets issus de fichiers EnergyPlus IDF (Input Data File) en DataFrames pandas. Chaque ligne du DataFrame représente un objet IDF et chaque colonne représente un attribut de cet objet.

## ✨ Fonctionnalités

- 🔄 Conversion automatique des objets IDF en DataFrames pandas
- 📊 Support de tous les types d'objets EnergyPlus (Material, Zone, Construction, etc.)
- 🔍 Détection automatique du fichier IDD EnergyPlus
- 💾 Export des résultats en fichiers Excel
- 🎯 Interface simple et intuitive

## 📋 Prérequis

- **Python** >= 3.12
- **EnergyPlus** (pour le fichier IDD)
- Les autres dépendances sont installées automatiquement

## 🚀 Installation


## 📦 Dépendances

- **eppy** >= 0.5.66 : Manipulation des fichiers IDF EnergyPlus
- **pandas** >= 2.3.3 : Manipulation de DataFrames
- **openpyxl** >= 3.1.5 : Export Excel (inclus)

## 📦 Installation depuis PyPI

Une fois publié sur PyPI, vous pourrez installer le package avec :

```bash
# Installation standard
pip install idf2table

# Ou avec uv
uv pip install idf2table
```


### Installation depuis GitLab (recommandé)

Pour installer directement depuis le dépôt GitLab :

```bash
# Avec pip
pip install git+https://gitlab.plateforme-tipee.com/idf/idf2table.git

# Avec uv
uv pip install git+https://gitlab.plateforme-tipee.com/idf/idf2table.git
```

**Note :** Si le dépôt est privé, vous devrez peut-être vous authentifier :
- Utiliser un [token d'accès GitLab](https://gitlab.plateforme-tipee.com/-/user_settings/personal_access_tokens)
- Ou utiliser : `pip install git+https://<username>:<token>@gitlab.plateforme-tipee.com/idf/idf2table.git`

### Installation locale (mode développement)

Pour contribuer au projet ou utiliser le code local :

**Mode développement (depuis le répertoire du projet) :**

```bash
# Cloner le dépôt
git clone https://gitlab.plateforme-tipee.com/idf/idf2table.git
cd idf2table

# Installer en mode éditable avec uv
uv sync
# Le module est installé en mode éditable
```

**Installation en tant que package local :**

```bash
# Avec uv
uv pip install -e .

# Avec pip
pip install -e .
```

### Dépendances

Les dépendances suivantes seront installées automatiquement :
- `eppy >= 0.5.66` : Manipulation des fichiers IDF
- `pandas >= 2.3.3` : DataFrames
- `openpyxl >= 3.1.5` : Export Excel (inclus)

## ⚙️ Configuration du fichier IDD

Le fichier IDD (Input Data Dictionary) est nécessaire pour interpréter les fichiers IDF. IDF2TABLE le cherche automatiquement dans cet ordre :

1. Variable d'environnement `ENERGYPLUS_IDD`
2. Emplacements standards selon le système d'exploitation :
   - **Windows** : `C:\EnergyPlusV9-4-0\Energy+.idd` ou `C:\Program Files\EnergyPlusV9-4-0\Energy+.idd`
   - **macOS** : `/Applications/EnergyPlus-9-4-0/Energy+.idd`
   - **Linux** : `./EnergyPlus-9.4.0-998c4b761e-Linux-Ubuntu18.04-x86_64/Energy+.idd`

### Définir manuellement le chemin IDD

```bash
export ENERGYPLUS_IDD=/chemin/vers/Energy+.idd
```

## 📖 Utilisation

### En tant que module Python

```python
from idf2table import idf_to_table, find_idd
from eppy.modeleditor import IDF

# Configurer le fichier IDD
idd_path = find_idd()
IDF.setiddname(str(idd_path))

# Charger le fichier IDF
idf = IDF('data/OPIO_run.idf')

# Convertir les objets Material en DataFrame
materials_df = idf_to_table(idf, "Material")

print(materials_df.head())
```

### Utilisation simplifiée (chemin de fichier direct)

```python
from idf2table import idf_to_table

# Le fichier IDD sera trouvé automatiquement
materials_df = idf_to_table('data/OPIO_run.idf', "Material")
```

### En ligne de commande (CLI)
# Exporter la géométrie IDF en Wavefront OBJ

```bash
# Export des BuildingSurface:Detailed
idf2table export-obj data/OPIO_run.idf --obj out/model.obj

# Inclure fenêtres/portes et ombrages, générer un MTL et inverser les normales
idf2table export-obj data/OPIO_run.idf --obj out/model.obj \
  --with-fenestration --with-shading --mtl out/model.mtl --flip-normals
```

### API d'export OBJ

```python
from idf2table.obj_export import export_idf_to_obj, ObjExportOptions

opts = ObjExportOptions(include_fenestration=True, include_shading=True, write_mtl=True, mtl_path="out/model.mtl")
export_idf_to_obj("data/OPIO_run.idf", "out/model.obj", options=opts)
```

Une fois le module installé, vous disposez d'une commande `idf2table` avec des sous-commandes :

```bash
# Afficher l'aide générale
idf2table --help

# 1) Convertir un type d'objet en DataFrame (sous-commande: table)
idf2table table data/OPIO_run.idf Material

# Exporter en Excel
idf2table table data/OPIO_run.idf Material --output materials.xlsx

# Exporter en CSV
idf2table table data/OPIO_run.idf Material --csv

# Spécifier un fichier IDD personnalisé
idf2table table data/OPIO_run.idf Material --idd /path/to/Energy+.idd

# 2) Appliquer des mises à jour depuis un Excel/CSV (sous-commande: apply)
idf2table apply data/OPIO_run.idf --excel updates.xlsx --save data/OPIO_run_updated.idf

# Utiliser une feuille nommée
idf2table apply data/OPIO_run.idf --excel updates.xlsx --sheet MA_FEUILLE --save out.idf

# Exemple avec CSV
idf2table apply data/OPIO_run.idf --excel updates.csv --save out.idf
```

### Exemples de types d'objets

```python
from idf2table import idf_to_table

# Avec un objet IDF déjà chargé
from eppy.modeleditor import IDF
from idf2table import find_idd

idd_path = find_idd()
IDF.setiddname(str(idd_path))
idf = IDF('data/OPIO_run.idf')

# Matériaux
materials_df = idf_to_table(idf, "Material")

# Zones
zones_df = idf_to_table(idf, "Zone")

# Surfaces de bâtiment
surfaces_df = idf_to_table(idf, "BuildingSurface:Detailed")

# Constructions
constructions_df = idf_to_table(idf, "Construction")

# Propriétés HAMT (Heat And Moisture Transfer)
hamt_df = idf_to_table(idf, "MaterialProperty:HeatAndMoistureTransfer:SorptionIsotherm")
```

### Lister tous les types d'objets disponibles

```python
from idf2table import find_idd
from eppy.modeleditor import IDF

idd_path = find_idd()
IDF.setiddname(str(idd_path))
idf = IDF('data/OPIO_run.idf')

# Afficher tous les types d'objets disponibles
print(list(idf.idfobjects.keys()))
```

### Export en Excel

**Avec pandas :**

```python
from idf2table import idf_to_table

materials_df = idf_to_table('data/OPIO_run.idf', "Material")
materials_df.to_excel('materials.xlsx', index=False)
```

**Ou avec la CLI :**

```bash
idf2table data/OPIO_run.idf Material --output materials.xlsx
```

## 📚 API
### Mise à jour IDF depuis Excel/CSV

#### Format attendu (tableau « large » exporté par `idf_to_table`)

- Colonnes obligatoires: `key`, `Name`
- Toutes les autres colonnes sont interprétées comme des champs à mettre à jour

Exemple minimal:

| key      | Name                     | Conductivity | Density |
|----------|--------------------------|--------------|---------|
| Material | MyMaterial               | 0.038        | 50      |
| Material | AnotherMaterial          | 0.040        | 25      |

Notes:
- La colonne `key` correspond au type d’objet (ex: `Material`, `Construction`)
- La colonne `Name` correspond au nom d’objet IDF
- Les fichiers `.csv` sont également acceptés

Note: les fichiers `.csv` sont également acceptés (mêmes colonnes).

#### API Python

```python
from idf2table import find_idd
from idf2table.core import apply_updates_from_excel
from eppy.modeleditor import IDF

idd = find_idd(); IDF.setiddname(str(idd))
idf = IDF('data/OPIO_run.idf')

# Appliquer les updates depuis Excel
idf = apply_updates_from_excel(idf, 'updates.xlsx', save_to='data/OPIO_run_updated.idf')
```

### `idf_to_table(idf, object_type, idd_file=None)`

Convertit tous les objets d'un type donné en DataFrame pandas.

**Paramètres :**

| Paramètre | Type | Description |
|-----------|------|-------------|
| `idf` | `IDF` ou `str` | Objet IDF ou chemin vers le fichier `.idf` |
| `object_type` | `str` | Type d'objet à convertir (ex: `"Material"`, `"Zone"`) |
| `idd_file` | `str`, optionnel | Chemin vers le fichier IDD. Si non fourni, recherche automatique |

**Retourne :**

- `pd.DataFrame` : DataFrame où chaque ligne = un objet, chaque colonne = un attribut

**Exemple de résultat :**

```
   key              Name Roughness  Thickness  Conductivity  Density  Specific_Heat  ...
0  Material  MATERIAL_1     Rough        0.1         0.038     50.0         1540.0  ...
1  Material  MATERIAL_2     Rough       0.12           2.0   2400.0          880.0  ...
```

### `find_idd()`

Trouve automatiquement le fichier IDD EnergyPlus.

**Retourne :**

- `Path` : Chemin vers le fichier IDD trouvé

**Lève :**

- `FileNotFoundError` : Si aucun fichier IDD n'est trouvé

**Exemple :**

```python
from main import find_idd

try:
    idd_path = find_idd()
    print(f"IDD trouvé : {idd_path}")
except FileNotFoundError as e:
    print(f"Erreur : {e}")
```

### Interface en ligne de commande

Après installation, utilisez la commande `idf2table` :

```bash
idf2table <idf_file> <object_type> [options]
```

**Options :**

| Option | Description |
|--------|-------------|
| `--idd IDD` | Chemin vers le fichier IDD (optionnel) |
| `--output OUTPUT, -o OUTPUT` | Chemin de sortie pour le fichier Excel (optionnel) |
| `--csv` | Sauvegarder en CSV au lieu d'Excel |

**Exemples :**

```bash
# Affichage simple
idf2table data/OPIO_run.idf Material

# Avec sauvegarde Excel
idf2table data/OPIO_run.idf Material --output materials.xlsx

# Sauvegarde en CSV
idf2table data/OPIO_run.idf Material --csv
```

## 💡 Exemples complets

### Exemple 1 : Analyse des matériaux

```python
from idf2table import idf_to_table, find_idd
from eppy.modeleditor import IDF
import pandas as pd

# Configuration
idd_path = find_idd()
IDF.setiddname(str(idd_path))
idf = IDF('data/OPIO_run.idf')

# Conversion
materials_df = idf_to_table(idf, "Material")

# Analyse
print(f"Nombre de matériaux : {len(materials_df)}")
print(f"\nColonnes disponibles : {list(materials_df.columns)}")
print("\nMatériaux les plus isolants (faible conductivité) :")
print(materials_df.nsmallest(5, 'Conductivity')[['Name', 'Conductivity', 'Thickness']])
```

### Exemple 2 : Export multiple

```python
from idf2table import idf_to_table, find_idd
from eppy.modeleditor import IDF

# Configuration
idd_path = find_idd()
IDF.setiddname(str(idd_path))
idf = IDF('data/OPIO_run.idf')

# Convertir plusieurs types d'objets
object_types = ["Material", "Construction", "Zone"]

for obj_type in object_types:
    df = idf_to_table(idf, obj_type)
    df.to_excel(f"export_{obj_type}.xlsx", index=False)
    print(f"✓ {obj_type} : {len(df)} objets exportés")
```

### Exemple 3 : Utilisation en ligne de commande

```bash
# Convertir Material
idf2table data/OPIO_run.idf Material

# Convertir plusieurs types d'objets
for obj_type in Material Construction Zone; do
    idf2table data/OPIO_run.idf $obj_type --output ${obj_type}.xlsx
done
```

## 🗂️ Structure du projet

```
IDF2TABLE/
├── idf2table/               # Module principal
│   ├── __init__.py          # Exports publics du module
│   ├── core.py              # Fonctions principales (idf_to_table, find_idd)
│   └── cli.py               # Interface en ligne de commande
├── main.py                  # Script d'exemple
├── data/                    # Fichiers IDF
│   ├── OPIO_run.idf
│   └── OPIO_run_hamt.idf
├── pyproject.toml           # Configuration du projet
├── uv.lock                  # Lock file des dépendances
└── README.md                # Documentation
```

## 📦 Dépendances

- **eppy** >= 0.5.66 : Manipulation des fichiers IDF EnergyPlus
- **pandas** >= 2.3.3 : Manipulation de DataFrames
- **openpyxl** >= 3.1.5 : Export Excel (inclus)

## 📦 Installation depuis PyPI

Une fois publié sur PyPI, vous pourrez installer le package avec :

```bash
# Installation standard
pip install idf2table

# Ou avec uv
uv pip install idf2table
```

### Publier sur PyPI

Pour publier votre package sur PyPI, suivez les instructions détaillées dans [DEPLOYMENT.md](DEPLOYMENT.md).

**Résumé rapide :**

```bash
# 1. Installer les outils
uv add --dev build twine

# 2. Construire le package
uv run python -m build

# 3. Vérifier le package
uv run twine check dist/*

# 4. Publier sur TestPyPI (recommandé d'abord)
uv run twine upload --repository testpypi dist/*

# 5. Publier sur PyPI
uv run twine upload dist/*
```

Vous aurez besoin d'un token API PyPI : [https://pypi.org/manage/account/](https://pypi.org/manage/account/)

## ⚠️ Notes importantes

- ✅ Le type d'objet peut être spécifié en **minuscules, majuscules ou casse mixte** (ex: `"Material"`, `"MATERIAL"`, `"material"`)
- ❌ Si aucun objet du type spécifié n'est trouvé, une `ValueError` est levée avec la liste des types disponibles
- 📋 Si aucun objet n'est trouvé (liste vide), un DataFrame vide est retourné
- 🧹 Les valeurs de type string sont automatiquement nettoyées (espaces supprimés)
- 📝 Le DataFrame inclut toujours une colonne `key` indiquant le type d'objet

## 🤝 Contribution

Les contributions sont les bienvenues ! N'hésitez pas à ouvrir une issue ou une pull request.

## 📄 Licence

[À compléter selon vos besoins]

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "idf2table",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.12",
    "maintainer_email": null,
    "keywords": "building, dataframe, energyplus, eppy, idf, pandas, simulation",
    "author": null,
    "author_email": "TIPEE <contact@plateforme-tipee.com>",
    "download_url": "https://files.pythonhosted.org/packages/b0/2d/32dad21ef6217d3aa202f22c15c86e7f0a2760c27a0177480fe5f8b0d701/idf2table-0.1.7.tar.gz",
    "platform": null,
    "description": "# IDF2TABLE\n\n**Convertir des fichiers EnergyPlus IDF en DataFrames pandas**\n\nIDF2TABLE est un outil Python qui permet de convertir les objets issus de fichiers EnergyPlus IDF (Input Data File) en DataFrames pandas. Chaque ligne du DataFrame repr\u00e9sente un objet IDF et chaque colonne repr\u00e9sente un attribut de cet objet.\n\n## \u2728 Fonctionnalit\u00e9s\n\n- \ud83d\udd04 Conversion automatique des objets IDF en DataFrames pandas\n- \ud83d\udcca Support de tous les types d'objets EnergyPlus (Material, Zone, Construction, etc.)\n- \ud83d\udd0d D\u00e9tection automatique du fichier IDD EnergyPlus\n- \ud83d\udcbe Export des r\u00e9sultats en fichiers Excel\n- \ud83c\udfaf Interface simple et intuitive\n\n## \ud83d\udccb Pr\u00e9requis\n\n- **Python** >= 3.12\n- **EnergyPlus** (pour le fichier IDD)\n- Les autres d\u00e9pendances sont install\u00e9es automatiquement\n\n## \ud83d\ude80 Installation\n\n\n## \ud83d\udce6 D\u00e9pendances\n\n- **eppy** >= 0.5.66 : Manipulation des fichiers IDF EnergyPlus\n- **pandas** >= 2.3.3 : Manipulation de DataFrames\n- **openpyxl** >= 3.1.5 : Export Excel (inclus)\n\n## \ud83d\udce6 Installation depuis PyPI\n\nUne fois publi\u00e9 sur PyPI, vous pourrez installer le package avec :\n\n```bash\n# Installation standard\npip install idf2table\n\n# Ou avec uv\nuv pip install idf2table\n```\n\n\n### Installation depuis GitLab (recommand\u00e9)\n\nPour installer directement depuis le d\u00e9p\u00f4t GitLab :\n\n```bash\n# Avec pip\npip install git+https://gitlab.plateforme-tipee.com/idf/idf2table.git\n\n# Avec uv\nuv pip install git+https://gitlab.plateforme-tipee.com/idf/idf2table.git\n```\n\n**Note :** Si le d\u00e9p\u00f4t est priv\u00e9, vous devrez peut-\u00eatre vous authentifier :\n- Utiliser un [token d'acc\u00e8s GitLab](https://gitlab.plateforme-tipee.com/-/user_settings/personal_access_tokens)\n- Ou utiliser : `pip install git+https://<username>:<token>@gitlab.plateforme-tipee.com/idf/idf2table.git`\n\n### Installation locale (mode d\u00e9veloppement)\n\nPour contribuer au projet ou utiliser le code local :\n\n**Mode d\u00e9veloppement (depuis le r\u00e9pertoire du projet) :**\n\n```bash\n# Cloner le d\u00e9p\u00f4t\ngit clone https://gitlab.plateforme-tipee.com/idf/idf2table.git\ncd idf2table\n\n# Installer en mode \u00e9ditable avec uv\nuv sync\n# Le module est install\u00e9 en mode \u00e9ditable\n```\n\n**Installation en tant que package local :**\n\n```bash\n# Avec uv\nuv pip install -e .\n\n# Avec pip\npip install -e .\n```\n\n### D\u00e9pendances\n\nLes d\u00e9pendances suivantes seront install\u00e9es automatiquement :\n- `eppy >= 0.5.66` : Manipulation des fichiers IDF\n- `pandas >= 2.3.3` : DataFrames\n- `openpyxl >= 3.1.5` : Export Excel (inclus)\n\n## \u2699\ufe0f Configuration du fichier IDD\n\nLe fichier IDD (Input Data Dictionary) est n\u00e9cessaire pour interpr\u00e9ter les fichiers IDF. IDF2TABLE le cherche automatiquement dans cet ordre :\n\n1. Variable d'environnement `ENERGYPLUS_IDD`\n2. Emplacements standards selon le syst\u00e8me d'exploitation :\n   - **Windows** : `C:\\EnergyPlusV9-4-0\\Energy+.idd` ou `C:\\Program Files\\EnergyPlusV9-4-0\\Energy+.idd`\n   - **macOS** : `/Applications/EnergyPlus-9-4-0/Energy+.idd`\n   - **Linux** : `./EnergyPlus-9.4.0-998c4b761e-Linux-Ubuntu18.04-x86_64/Energy+.idd`\n\n### D\u00e9finir manuellement le chemin IDD\n\n```bash\nexport ENERGYPLUS_IDD=/chemin/vers/Energy+.idd\n```\n\n## \ud83d\udcd6 Utilisation\n\n### En tant que module Python\n\n```python\nfrom idf2table import idf_to_table, find_idd\nfrom eppy.modeleditor import IDF\n\n# Configurer le fichier IDD\nidd_path = find_idd()\nIDF.setiddname(str(idd_path))\n\n# Charger le fichier IDF\nidf = IDF('data/OPIO_run.idf')\n\n# Convertir les objets Material en DataFrame\nmaterials_df = idf_to_table(idf, \"Material\")\n\nprint(materials_df.head())\n```\n\n### Utilisation simplifi\u00e9e (chemin de fichier direct)\n\n```python\nfrom idf2table import idf_to_table\n\n# Le fichier IDD sera trouv\u00e9 automatiquement\nmaterials_df = idf_to_table('data/OPIO_run.idf', \"Material\")\n```\n\n### En ligne de commande (CLI)\n# Exporter la g\u00e9om\u00e9trie IDF en Wavefront OBJ\n\n```bash\n# Export des BuildingSurface:Detailed\nidf2table export-obj data/OPIO_run.idf --obj out/model.obj\n\n# Inclure fen\u00eatres/portes et ombrages, g\u00e9n\u00e9rer un MTL et inverser les normales\nidf2table export-obj data/OPIO_run.idf --obj out/model.obj \\\n  --with-fenestration --with-shading --mtl out/model.mtl --flip-normals\n```\n\n### API d'export OBJ\n\n```python\nfrom idf2table.obj_export import export_idf_to_obj, ObjExportOptions\n\nopts = ObjExportOptions(include_fenestration=True, include_shading=True, write_mtl=True, mtl_path=\"out/model.mtl\")\nexport_idf_to_obj(\"data/OPIO_run.idf\", \"out/model.obj\", options=opts)\n```\n\nUne fois le module install\u00e9, vous disposez d'une commande `idf2table` avec des sous-commandes :\n\n```bash\n# Afficher l'aide g\u00e9n\u00e9rale\nidf2table --help\n\n# 1) Convertir un type d'objet en DataFrame (sous-commande: table)\nidf2table table data/OPIO_run.idf Material\n\n# Exporter en Excel\nidf2table table data/OPIO_run.idf Material --output materials.xlsx\n\n# Exporter en CSV\nidf2table table data/OPIO_run.idf Material --csv\n\n# Sp\u00e9cifier un fichier IDD personnalis\u00e9\nidf2table table data/OPIO_run.idf Material --idd /path/to/Energy+.idd\n\n# 2) Appliquer des mises \u00e0 jour depuis un Excel/CSV (sous-commande: apply)\nidf2table apply data/OPIO_run.idf --excel updates.xlsx --save data/OPIO_run_updated.idf\n\n# Utiliser une feuille nomm\u00e9e\nidf2table apply data/OPIO_run.idf --excel updates.xlsx --sheet MA_FEUILLE --save out.idf\n\n# Exemple avec CSV\nidf2table apply data/OPIO_run.idf --excel updates.csv --save out.idf\n```\n\n### Exemples de types d'objets\n\n```python\nfrom idf2table import idf_to_table\n\n# Avec un objet IDF d\u00e9j\u00e0 charg\u00e9\nfrom eppy.modeleditor import IDF\nfrom idf2table import find_idd\n\nidd_path = find_idd()\nIDF.setiddname(str(idd_path))\nidf = IDF('data/OPIO_run.idf')\n\n# Mat\u00e9riaux\nmaterials_df = idf_to_table(idf, \"Material\")\n\n# Zones\nzones_df = idf_to_table(idf, \"Zone\")\n\n# Surfaces de b\u00e2timent\nsurfaces_df = idf_to_table(idf, \"BuildingSurface:Detailed\")\n\n# Constructions\nconstructions_df = idf_to_table(idf, \"Construction\")\n\n# Propri\u00e9t\u00e9s HAMT (Heat And Moisture Transfer)\nhamt_df = idf_to_table(idf, \"MaterialProperty:HeatAndMoistureTransfer:SorptionIsotherm\")\n```\n\n### Lister tous les types d'objets disponibles\n\n```python\nfrom idf2table import find_idd\nfrom eppy.modeleditor import IDF\n\nidd_path = find_idd()\nIDF.setiddname(str(idd_path))\nidf = IDF('data/OPIO_run.idf')\n\n# Afficher tous les types d'objets disponibles\nprint(list(idf.idfobjects.keys()))\n```\n\n### Export en Excel\n\n**Avec pandas :**\n\n```python\nfrom idf2table import idf_to_table\n\nmaterials_df = idf_to_table('data/OPIO_run.idf', \"Material\")\nmaterials_df.to_excel('materials.xlsx', index=False)\n```\n\n**Ou avec la CLI :**\n\n```bash\nidf2table data/OPIO_run.idf Material --output materials.xlsx\n```\n\n## \ud83d\udcda API\n### Mise \u00e0 jour IDF depuis Excel/CSV\n\n#### Format attendu (tableau \u00ab large \u00bb export\u00e9 par `idf_to_table`)\n\n- Colonnes obligatoires: `key`, `Name`\n- Toutes les autres colonnes sont interpr\u00e9t\u00e9es comme des champs \u00e0 mettre \u00e0 jour\n\nExemple minimal:\n\n| key      | Name                     | Conductivity | Density |\n|----------|--------------------------|--------------|---------|\n| Material | MyMaterial               | 0.038        | 50      |\n| Material | AnotherMaterial          | 0.040        | 25      |\n\nNotes:\n- La colonne `key` correspond au type d\u2019objet (ex: `Material`, `Construction`)\n- La colonne `Name` correspond au nom d\u2019objet IDF\n- Les fichiers `.csv` sont \u00e9galement accept\u00e9s\n\nNote: les fichiers `.csv` sont \u00e9galement accept\u00e9s (m\u00eames colonnes).\n\n#### API Python\n\n```python\nfrom idf2table import find_idd\nfrom idf2table.core import apply_updates_from_excel\nfrom eppy.modeleditor import IDF\n\nidd = find_idd(); IDF.setiddname(str(idd))\nidf = IDF('data/OPIO_run.idf')\n\n# Appliquer les updates depuis Excel\nidf = apply_updates_from_excel(idf, 'updates.xlsx', save_to='data/OPIO_run_updated.idf')\n```\n\n### `idf_to_table(idf, object_type, idd_file=None)`\n\nConvertit tous les objets d'un type donn\u00e9 en DataFrame pandas.\n\n**Param\u00e8tres :**\n\n| Param\u00e8tre | Type | Description |\n|-----------|------|-------------|\n| `idf` | `IDF` ou `str` | Objet IDF ou chemin vers le fichier `.idf` |\n| `object_type` | `str` | Type d'objet \u00e0 convertir (ex: `\"Material\"`, `\"Zone\"`) |\n| `idd_file` | `str`, optionnel | Chemin vers le fichier IDD. Si non fourni, recherche automatique |\n\n**Retourne :**\n\n- `pd.DataFrame` : DataFrame o\u00f9 chaque ligne = un objet, chaque colonne = un attribut\n\n**Exemple de r\u00e9sultat :**\n\n```\n   key              Name Roughness  Thickness  Conductivity  Density  Specific_Heat  ...\n0  Material  MATERIAL_1     Rough        0.1         0.038     50.0         1540.0  ...\n1  Material  MATERIAL_2     Rough       0.12           2.0   2400.0          880.0  ...\n```\n\n### `find_idd()`\n\nTrouve automatiquement le fichier IDD EnergyPlus.\n\n**Retourne :**\n\n- `Path` : Chemin vers le fichier IDD trouv\u00e9\n\n**L\u00e8ve :**\n\n- `FileNotFoundError` : Si aucun fichier IDD n'est trouv\u00e9\n\n**Exemple :**\n\n```python\nfrom main import find_idd\n\ntry:\n    idd_path = find_idd()\n    print(f\"IDD trouv\u00e9 : {idd_path}\")\nexcept FileNotFoundError as e:\n    print(f\"Erreur : {e}\")\n```\n\n### Interface en ligne de commande\n\nApr\u00e8s installation, utilisez la commande `idf2table` :\n\n```bash\nidf2table <idf_file> <object_type> [options]\n```\n\n**Options :**\n\n| Option | Description |\n|--------|-------------|\n| `--idd IDD` | Chemin vers le fichier IDD (optionnel) |\n| `--output OUTPUT, -o OUTPUT` | Chemin de sortie pour le fichier Excel (optionnel) |\n| `--csv` | Sauvegarder en CSV au lieu d'Excel |\n\n**Exemples :**\n\n```bash\n# Affichage simple\nidf2table data/OPIO_run.idf Material\n\n# Avec sauvegarde Excel\nidf2table data/OPIO_run.idf Material --output materials.xlsx\n\n# Sauvegarde en CSV\nidf2table data/OPIO_run.idf Material --csv\n```\n\n## \ud83d\udca1 Exemples complets\n\n### Exemple 1 : Analyse des mat\u00e9riaux\n\n```python\nfrom idf2table import idf_to_table, find_idd\nfrom eppy.modeleditor import IDF\nimport pandas as pd\n\n# Configuration\nidd_path = find_idd()\nIDF.setiddname(str(idd_path))\nidf = IDF('data/OPIO_run.idf')\n\n# Conversion\nmaterials_df = idf_to_table(idf, \"Material\")\n\n# Analyse\nprint(f\"Nombre de mat\u00e9riaux : {len(materials_df)}\")\nprint(f\"\\nColonnes disponibles : {list(materials_df.columns)}\")\nprint(\"\\nMat\u00e9riaux les plus isolants (faible conductivit\u00e9) :\")\nprint(materials_df.nsmallest(5, 'Conductivity')[['Name', 'Conductivity', 'Thickness']])\n```\n\n### Exemple 2 : Export multiple\n\n```python\nfrom idf2table import idf_to_table, find_idd\nfrom eppy.modeleditor import IDF\n\n# Configuration\nidd_path = find_idd()\nIDF.setiddname(str(idd_path))\nidf = IDF('data/OPIO_run.idf')\n\n# Convertir plusieurs types d'objets\nobject_types = [\"Material\", \"Construction\", \"Zone\"]\n\nfor obj_type in object_types:\n    df = idf_to_table(idf, obj_type)\n    df.to_excel(f\"export_{obj_type}.xlsx\", index=False)\n    print(f\"\u2713 {obj_type} : {len(df)} objets export\u00e9s\")\n```\n\n### Exemple 3 : Utilisation en ligne de commande\n\n```bash\n# Convertir Material\nidf2table data/OPIO_run.idf Material\n\n# Convertir plusieurs types d'objets\nfor obj_type in Material Construction Zone; do\n    idf2table data/OPIO_run.idf $obj_type --output ${obj_type}.xlsx\ndone\n```\n\n## \ud83d\uddc2\ufe0f Structure du projet\n\n```\nIDF2TABLE/\n\u251c\u2500\u2500 idf2table/               # Module principal\n\u2502   \u251c\u2500\u2500 __init__.py          # Exports publics du module\n\u2502   \u251c\u2500\u2500 core.py              # Fonctions principales (idf_to_table, find_idd)\n\u2502   \u2514\u2500\u2500 cli.py               # Interface en ligne de commande\n\u251c\u2500\u2500 main.py                  # Script d'exemple\n\u251c\u2500\u2500 data/                    # Fichiers IDF\n\u2502   \u251c\u2500\u2500 OPIO_run.idf\n\u2502   \u2514\u2500\u2500 OPIO_run_hamt.idf\n\u251c\u2500\u2500 pyproject.toml           # Configuration du projet\n\u251c\u2500\u2500 uv.lock                  # Lock file des d\u00e9pendances\n\u2514\u2500\u2500 README.md                # Documentation\n```\n\n## \ud83d\udce6 D\u00e9pendances\n\n- **eppy** >= 0.5.66 : Manipulation des fichiers IDF EnergyPlus\n- **pandas** >= 2.3.3 : Manipulation de DataFrames\n- **openpyxl** >= 3.1.5 : Export Excel (inclus)\n\n## \ud83d\udce6 Installation depuis PyPI\n\nUne fois publi\u00e9 sur PyPI, vous pourrez installer le package avec :\n\n```bash\n# Installation standard\npip install idf2table\n\n# Ou avec uv\nuv pip install idf2table\n```\n\n### Publier sur PyPI\n\nPour publier votre package sur PyPI, suivez les instructions d\u00e9taill\u00e9es dans [DEPLOYMENT.md](DEPLOYMENT.md).\n\n**R\u00e9sum\u00e9 rapide :**\n\n```bash\n# 1. Installer les outils\nuv add --dev build twine\n\n# 2. Construire le package\nuv run python -m build\n\n# 3. V\u00e9rifier le package\nuv run twine check dist/*\n\n# 4. Publier sur TestPyPI (recommand\u00e9 d'abord)\nuv run twine upload --repository testpypi dist/*\n\n# 5. Publier sur PyPI\nuv run twine upload dist/*\n```\n\nVous aurez besoin d'un token API PyPI : [https://pypi.org/manage/account/](https://pypi.org/manage/account/)\n\n## \u26a0\ufe0f Notes importantes\n\n- \u2705 Le type d'objet peut \u00eatre sp\u00e9cifi\u00e9 en **minuscules, majuscules ou casse mixte** (ex: `\"Material\"`, `\"MATERIAL\"`, `\"material\"`)\n- \u274c Si aucun objet du type sp\u00e9cifi\u00e9 n'est trouv\u00e9, une `ValueError` est lev\u00e9e avec la liste des types disponibles\n- \ud83d\udccb Si aucun objet n'est trouv\u00e9 (liste vide), un DataFrame vide est retourn\u00e9\n- \ud83e\uddf9 Les valeurs de type string sont automatiquement nettoy\u00e9es (espaces supprim\u00e9s)\n- \ud83d\udcdd Le DataFrame inclut toujours une colonne `key` indiquant le type d'objet\n\n## \ud83e\udd1d Contribution\n\nLes contributions sont les bienvenues ! N'h\u00e9sitez pas \u00e0 ouvrir une issue ou une pull request.\n\n## \ud83d\udcc4 Licence\n\n[\u00c0 compl\u00e9ter selon vos besoins]\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Convertir des fichiers EnergyPlus IDF en DataFrames pandas",
    "version": "0.1.7",
    "project_urls": {
        "Documentation": "https://gitlab.plateforme-tipee.com/idf/idf2table/-/blob/main/README.md",
        "Homepage": "https://gitlab.plateforme-tipee.com/idf/idf2table",
        "Issues": "https://gitlab.plateforme-tipee.com/idf/idf2table/-/issues",
        "Repository": "https://gitlab.plateforme-tipee.com/idf/idf2table.git"
    },
    "split_keywords": [
        "building",
        " dataframe",
        " energyplus",
        " eppy",
        " idf",
        " pandas",
        " simulation"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "95bb7d41982ae9af864f9bf5b7c0392b60500e2841765eef09b96ce39f99e2bd",
                "md5": "3fc8918927372de146de830aaf8171f5",
                "sha256": "dfb7f4b77521da5841116f3d32a49988d558c151ab0be3f0e66cdbc0817b3b22"
            },
            "downloads": -1,
            "filename": "idf2table-0.1.7-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "3fc8918927372de146de830aaf8171f5",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.12",
            "size": 14482,
            "upload_time": "2025-10-30T17:00:28",
            "upload_time_iso_8601": "2025-10-30T17:00:28.255958Z",
            "url": "https://files.pythonhosted.org/packages/95/bb/7d41982ae9af864f9bf5b7c0392b60500e2841765eef09b96ce39f99e2bd/idf2table-0.1.7-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "b02d32dad21ef6217d3aa202f22c15c86e7f0a2760c27a0177480fe5f8b0d701",
                "md5": "c0f59bda87e79fccc4eb46eb61c05ecd",
                "sha256": "f86e4da6dfb1b7e881f0e5f90c177fc86911d995fa160fcfe6f4eb5b270f8e8c"
            },
            "downloads": -1,
            "filename": "idf2table-0.1.7.tar.gz",
            "has_sig": false,
            "md5_digest": "c0f59bda87e79fccc4eb46eb61c05ecd",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.12",
            "size": 217538,
            "upload_time": "2025-10-30T17:00:30",
            "upload_time_iso_8601": "2025-10-30T17:00:30.699368Z",
            "url": "https://files.pythonhosted.org/packages/b0/2d/32dad21ef6217d3aa202f22c15c86e7f0a2760c27a0177480fe5f8b0d701/idf2table-0.1.7.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-10-30 17:00:30",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "idf2table"
}
        
Elapsed time: 0.54824s