Doc de la bibliothèque python construite pour aider à l'exploration lors du datasprint PORTIC 2021

Objectif de la bibliothèque

Information sur les données

Concernant les clients web pour l'accès aux données, vous pourrez également accéder par vos propres moyens à partir des sources existantes :

Installer la bibliothèque

La bibliothèque est installée localement par le script install.sh, mais vous pouvez également l'installer depuis une copie du répertoire github via pip install -e lib). Ne pas oublier de la réinstaller après un git pull dans le cas où elle aurait changé.

Sommaire des fonctions proposées

Fonctions principales (donnent accès aux données de base directement utilisables pour l'étude) :

Portic:

Toflit :

Fonctions secondaires (plutôt pour aider à paramétrer les fonctions principales, nourrir des fonctions de visualisation, ...)

Utils :

Portic:

Toflit :

Principe généraux d'utilisation du client

Les fonctions Portic et Toflit sont appelées respectivement depuis portic_client et toflit_client. Les fonctions utils sont appelables directement.

Si des paramètres spécifiques peuvent être utilisés, ils sont décrit dans la doc spécifique à chaque fonction.

Imports et bootstrapping des clients

Méthodes pour l'accès à PORTIC

pouvant être appelées depuis portic_client

Paramètres généraux pouvant être appliqués à (presque) toutes ces méthodes :

nom type valeurs défault description
params liste de chaînes ('all', ... tous les noms de params)  all  attributs à intégrer dans la réponse
format chaîne ('json','csv')  json  format de la réponse
shortenfields booléen  (true, false) false  permet de raccourcir les noms des attributs et donc d'alléger la taille du JSON téléchargé.
both_to booléen  (true,false)  false  permet de récupérer les données concernant l'arrivée d'un voyage en plus des données du départ (données par défaut).
 date  string format YYYY  (...années)  1787  pour filtrer les données sur une année donnée. L'année de la date d'arrivée ou de la date de départ doit commencer par ces 4 digits : 1787 ou 1789 par exemple. Exemple : http://data.portic.fr/api/pointcalls/?format=json&date=1789 
 zipped  booléen  (true, false)  false ...

portic_client.get_pointcalls(year=1787, kwargs)

Synopsis: récupère une liste de pointcalls selon les filtres et les paramètres spécifés.


Paramètres de requête spécifiques :

nom type valeurs défault description
start_year <int/string> année de début
end_year <int/string> année de fin
year <int/string> année exacte (l'emporte sur début/fin)

+ tous les noms de propriétés des pointcalls pouvant être donnés en paramètres pour faire office de filtres (accepte une valeur unique, ou une liste de valeurs possibles pour que l'objet filtré soit valide - ex pointcall_admirality='La Rochelle')

Exemple : je veux tous les pointcalls concernant le datasprint

portic_client.get_fieldnames(API='any')

Synopsis: Récupère les noms des variables Portic et leur description (pratique quand on ne sait plus ce qu'une colonne/propriété signifie)

Paramètres de requête spécifiques :

nom type valeurs défault description
API 'pointcalls' 'travels' 'any' 'any' type de fieldnames à récupérer

Exemple :

portic_client.get_flows(kwargs)

Synopsis:

Retourne une liste de flux, c'est-à-dire de voyages liés à des ports spécifiques, soit en y entrant (direction "in"), soit en en sortant (direction "out"), soit en ayant navigué autour (direction "in-out")

Attention, les flux sont reconstruits d'après plusieurs pointcalls en fonction de leur incertitude, et sont peu complets pour les données du datasprint. Il vaut mieux raisonner avec les pointcalls par défaut.


Paramètres de requête spécifiques :

nom type valeurs défault description
ports list(string) UHGS_id 4326 liste des ids de ports à filtrer (séparés par des virgules)

+ tous les noms de propriétés des flows portic pouvant être donnés en paramètres pour faire office de filtres (accepte une valeur unique, ou une liste de valeurs possibles pour que l'objet filtré soit valide)

Exemple : tous les flux passant par Bordeaux (A0180923) ou Boulogne sur Mer (A0152606) ; on filtre les résultats sur les localisations de départ et d'arrivée, et la distance entre ces 2 points

portic_client.get_travels(kwargs)

Synopsis:

Récupère les données de trajectoires calculées.

possibilité de filtrer à une valeur ou une liste de valeurs par attribut


Paramètres de requête spécifiques :

nom type valeurs défault description

Exemple : tous les voyages au départ d'un port rattaché à la direction des Fermes de La Rochelle, dont le port d'attache du navire est Dieppe et Noirmoutier, et son pavillon français, ...

portic_client.get_departures_details(lon=None, lat=None, radius=None, kwargs)

Synopsis:

Récupère tous les ports aux alentours d'un point géographique donné.


Paramètres de requête spécifiques :

nom type valeurs défault description
lon flottant (minLon,maxLon) ? longitude du centre de la zone à requêter
lat flottant (minLat,maxLat) ? latitude du centre de la zone à requêter
radius flottant (0,?) 100 ? rayon en kilomètres

Exemple : coordonnées de tous les ports recensés par Portic dans un rayon de 30km autour du port de La Rochelle

portic_client.get_destinations_aggregated(lon=None, lat=None, radius=None, kwargs)

Synopsis:

Retourne une aggrégation des amirautés de départ de voyages qui arrivent dans des points situés dans le voisinage (voir paramètre radius) du point requêté.

'label': amirauté de départ

'value': nombre de voyages partis de cette amirauté


Paramètres de requête spécifiques :

nom type valeurs défault description
lon flottant (minLon,maxLon) ? longitude du centre de la zone à requêter
lat flottant (minLat,maxLat) ? latitude du centre de la zone à requêter
radius flottant (0,?) 100 ? rayon en kilomètres

Exemple : amirautés qui envoient des bateaux autour de l'ile de Ré (à 10km à la ronde), et nombre de bateaux envoyés

portic_client.get_ports(srid=None)

Synopsis: Retourne une liste de ports_points au format JSON


Paramètres de requête spécifiques :

nom type valeurs défault description
srid int --- --- identifiant de référence spatiale unique associé à un système de coordonnées, une tolérance et une résolution spécifiques

Exemple : description du port d'srid 4326 au format JSON

Méthodes pour l'accès à TOFLIT

pouvant être appelées depuis toflit_client :

toflit_client.get_flows(start_year=None, end_year=None, year=None, params=None, kwargs)

Synopsis : récupère les flux toflit18 tels que présentés au format CSV, avec possibilités de filtrage avancé.

Paramètres de requête spécifiques :

nom type valeurs défault description
start_year <int/string> None année de début
end_year <int/string> None année de fin
year <int/string> None année exacte (l'emporte sur fin/début)
params list toutes les colonnes propriétés à renvoyer

+ tous les noms de propriétés des flux pouvant être donnés en paramètres pour faire office de filtres (accepte une valeur unique, ou une liste de valeurs possibles pour que l'objet filtré soit valide)

Exemple : tous les flows toflit de 1780 à 1790, enregistrés dans la direction des Fermes de La Rochelle, et où le produit commercé est du vin (on filtre le résultat sur certains params seulement)

toflit_client.get_customs_regions()

Synopsis :

Récupère toutes les customs region (direction des Fermes) de la base


Exemple

toflit_client.get_product_classifications()

Synopsis :

Récupère les classifications de produits


Exemple : on récupère la classification source (commenter la ligne resp['children']=None pour avoir les classifications filles)

toflit_client.get_partner_classifications()

Synopsis :

Récupère les classifications de partenaires


Exemple : on récupère toute l'arborescence de classifications (décommenter la ligne resp['children']=None pour n'avoir que la classification source)

toflit_client.get_classification_groups(classification="product_simplification", kwargs)

Synopsis :

Récupère l'ensemble des catégories associées à une classification en particulier (sans le détail des valeurs)


Exemple : récupération des 5 premières catégories de la classification partner grouping

toflit_client.get_classification_search(classification='product_revolutionempire', kwargs)

Synopsis :

Récupère le détail des groupements associés à une classification en particulier.


Paramètre d'URL classification : le nom de la classification préfixé par son type (ex. "product_simplification", ou "partner_source")


Exemple : produits sources recouverts par 2 catégories de product orthographic

toflit_client.get_locations(classification='partner_orthographic', kwargs)

Synopsis :

Récupère le réseau des lieux (directions et partenaires) et le montant de leurs échanges


Paramètre classification : l'id de la classification de partenaire à utiliser


Paramètres de requête spécifiques :

nom type valeurs défault description
dateMin entier (années) ? année de début
dateMax entier (années) ? année de fin
kind string ('total', 'import', 'export') 'total' type de flux
sourceType string (types de source) ? id du type de source à utiliser
product liste d'objets (objects avec {{"id","name","value"}) None liste des produits à filtrer
productClassification string (ids de classification) None Classification de produit à utiliser pour le filtre

Exemple

toflit_client.get_flows_per_year(type, kwargs)

Synopsis :

Récupère les flux par année par direction ou par type de source


Paramètre type : le type de flux 'direction' ou 'sourceType'


Paramètres de requête spécifiques :

nom type valeurs défault description
dateMin entier (années) ? année de début
dateMax entier (années) ? année de fin
kind string ('total', 'import', 'export') 'total' type de flux
sourceType string (types de source) ? id du type de source à utiliser
partner liste d'objets (objects avec {"name","id"}) None les partenaires commerciaux à prendre en compte (e.g. {name: 'Alsace', id: 'Alsace~partner_orthographic'})
partnerClassification string (ids de classification) None Classification de partenaire à utiliser pour le filtre
product liste d'objets (objects avec {{"id","name","value"}) None liste des produits à filtrer
productClassification string (ids de classification) None Classification de produit à utiliser pour le filtre
direction chaîne (noms de direction) '$all$' nom de la direction à filtrer

Exemple

toflit_client.get_time_series(kwargs)

Synopsis :

Récupère des séries temporelles à propos des flux de marchandises


Paramètres de requête spécifiques :

nom type valeurs défault description
dateMin entier (années) ? année de début
dateMax entier (années) ? année de fin
kind string ('total', 'import', 'export') 'total' type de flux
sourceType string (types de source) ? id du type de source à utiliser
partner liste d'objets (objects avec {"name","id"}) None les partenaires commerciaux à prendre en compte (e.g. {name: 'Alsace', id: 'Alsace~partner_orthographic'})
partnerClassification string (ids de classification) None Classification de partenaire à utiliser pour le filtre
product liste d'objets (objects avec {{"id","name","value"}) None liste des produits à filtrer
productClassification string (ids de classification) None Classification de produit à utiliser pour le filtre
direction chaîne (noms de direction) '$all$' nom de la direction à filtrer

Exemple

toflit_client.get_sources_types()

Synopsis :

Récupère les types de sources disponibles


Exemple

Utils

nest_toflit18_flow(flow)

Synopsis: Cette fonction organise un flux toflit18 tel que reçu depuis les données en csv sous la forme d un ensemble de clés thématiques qui contiennent chacun les propriétés correspondantes.


Exemple :

nest_portic_pointcall(pointcall)

Synopsis: Cette fonction organise un pointcall portic tel que reçu depuis les données en csv sous la forme d un ensemble de clés thématiques qui contiennent chacun les propriétés correspondantes.


Exemple :

build_cooccurence_graph(data, key_1, key_2, **kwargs)

Synopsis : Cette fonction prend un ensemble de dict (data) et deux noms de clés présents dans chaque dict. Elle renvoie un graphe networkx de coocurrence entre les dicts.


Paramètres de requête spécifiques (**kwargs) :

nom type valeurs défault description
color_1 code rgb (string?) rgb(0, 255, 0) couleur des noeuds de type 1
color_2 code rgb (string?) rgb(255, 0, 0) couleur des noeuds de type 2
node_min_size int 1 taille min des noeuds
node_min_size int 10 taille max des noeuds

Exemple :

get_online_csv(url)

Synopsis: Cette fonction permet de récupérer le contenu d'un csv en ligne. Pour les google spreadsheets: fichier > publier sur le web > format csv > copier le lien.

Bien mettre l'url sous forme de string dans les params

get_pointcalls_commodity_purposes_as_toflit_product(pointcalls, product_classification="product_simplification")

Synopsis : Cette fonction prend en entrée une liste de pointcalls et un nom de classification de produits ("product_simplification" par défaut). Elle renvoie en sortie la liste des dict de pointcalls enrichis avec une propriété "commodity_purposes" qui ont les propriétés existantes de PORTIC pour commodity_purpose[2,3,4] + une propriété "commodity_as_toflit qui donne la valeur correspondante dans toflit18.

get_pointcalls_port_as_toflit_partner(pointcalls, product_classification="partner_simplification")

Synopsis : Cette fonction prend en entrée une liste de pointcalls et un nom de classification de partenaire ("partner_simplification" par défaut). Elle renvoie en sortie la liste des dict de pointcalls enrichis avec une propriété "pointcall_as_toflit_partner".

get_pointcalls_homeport_as_toflit_partner(pointcalls, product_classification="partner_simplification")

Synopsis : Cette fonction prend en entrée une liste de pointcalls et un nom de classification de partenaire ("partner_simplification" par défaut). Elle renvoie en sortie la liste des dict de pointcalls enrichis avec une propriété "homeport_as_toflit_partner".