Fichiers d’entrée

TraDSSAT est dotée de classes spécifiques pour lire et éditer les fichiers d’intrant de DSSAT. Chaque classe définie ses propres variables permises, autant que les paramètres de celles-ci. Tous les fichiers ont la même structure générale :

  1. Section (nommée ; l’entête commence avec un * ou un $ dans les fichiers de DSSAT)
  2. Variables d’entête de section (facultatif)
  3. Sous-section (numérotée ; l’entête commence avec un @ suivit des noms des variables dans un fichier DSSAT)
  4. Variables de sous-section

Les classes utilisées pour lire les fichiers d’entrée de DSSAT sont :

Vu que tous les fichiers d’entrée héritent de InpFile, la même interface s’applique pour la lecture, la modification et l’écriture de tous les fichiers d’entrée DSSAT.

Lecture de fichiers

Les fichiers d’entrée sont initialisés avec le chemin du fichier à lire.

from tradssat import WTHFile
wth = WTHFile('path/to/my/WTHR0001.WTH')

Les valeurs de toutes les variables peuvent ensuite être lues directement.

# Get solar radiation data time series
wth.get_value('SRAD')

# Conditions can also be set

# Only get data from 2 Jan, 2013.
wth.get_value('SRAD', cond={'DATE': '13002'})

# Only get data from dry days
wth.get_value('SRAD', cond={'RAIN': 0})

C’est aussi facile d’obtenir une liste de tous les noms de variable permis pour le type de fichier.

wth.variables()

Modification des fichiers

Vous pouvez changer les valeurs des variables, qu’il s’agisse du fichier en entier ou d’une section ou sous-section particulière, autant que selon une condition.

from tradssat import SoilFile
soil = SoilFile('path/to/my/file.SOL')

# Set all soils' SALB to 0.15
soil.set_value('SALB', 0.15)

# Only set soil IB00000002's SALB to 0.2
soil.set_value('SALB', 0.20, sect='IB00000002')

# Increase clay, but only for the first 5 cm of soil IB00000002
soil.set_value('SLCL', 0.50, sect='IB00000002', cond={'SLB': 5})

Vous pouvez aussi ajouter des rangées à des sous-sections spécifiques d’un fichier, ou bien enlever des rangées existantes. Les variables de sous-section non spécifiées dans vals seront assignée une valeur manquante (généralement -99).

# Add new soil layer
soil.add_row(
    sect='IB00000002', subsect=2, vals={'SLB': 180, 'SLLL': 0.260}
)

Vous pouvez sauvegarder les données en format json, ou bien écrire un fichier en format DSSAT sur le disque.

# Convert to dict...
json_d = soil.to_dict()

# ...or save to disk
wth.write('path/to/my/new/SOIL.SOL')