Name | TRYpros JSON |
Version |
0.2.5
JSON |
| download |
home_page | None |
Summary | A collection of possibly useful functions to process data from the TRY Plant Database, supporting a recommended data processing pipeline. |
upload_time | 2024-12-21 17:15:21 |
maintainer | None |
docs_url | None |
author | None |
requires_python | None |
license | None |
keywords |
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# TRYpros - TRY Plant Database - Data Buddy
This package comprises some functions that can support extraction of trait values, geo-location information (latitude, longitude) and measurement years associated with geo-referenced plant trait data in the TRY Plant Database (Kattge, J, Bönisch, G, Díaz, S, et al. TRY plant trait database – enhanced coverage and open access. Glob Change Biol. 2020; 26: 119– 188. https://doi.org/10.1111/gcb.14904).
TRYpros was developed to support the Data Processing Pipeline as described in section 2. below. Section 1 provides a quick description of the intended purpose of all the functions provided by the TRYpros.
To install this package, type: `pip install TRYpros`.
## 1. TRYpros Functions
Following is a list of function names with a brief description of their intended use. Details like their input parameters and outputs can be learned by examining the doc-strings corresponding to each function. This can be fetched by using the python command `help([function name])`.
* `load_trait_table`: Load the trait table .tsv file downloaded from TRY.
* `search_trait_table`: Search trait names in the trait table and return trait ids with names containing words in the list of words to match.
* `is_float`: Check whether or not a string is that of a floating point number.
* `is_lat_lon_valid_terrestrial`: Check if a given latitude and longitude corresponds to a position on land.
* `search_covariates`: Search all co-variate variable names to identify those with names containing words in the given word search list.
* `get_chunk_count`: Given a chunk_size and path to downloaded raw data, return the no. od chunks the data will be divided into for loaded if chunk_size == specified chunk size.
* `load_big_data`: Load raw data as downloaded from TRY.
* `get_form`: Get the general form of the data with some predefined symbol like "@" replacing all numbers in the value.
* `standardize_data`: Clean and standardize data by perform a list of processing steps including data frame pre-processing, unit standardization, value standardization, and value transformation.
* `get_data_trait`: Extract trait data related to specific TraitIDs and separate it into standardized and non-standardized trait data.
* `display_units_forms`: Display units and value forms associated with each value in the dataset.
* `agg_mean_mode`: Trait value aggregation function that picks the trait with greatest priority over others and when there are multiple rows with the same priority while combining the dataset grouped by year, species, latitude and longitude, computes mean over all trait values with the same priority if the feature is numeric or mode if it is categorical. This function is designed for use with the `combine_data(...)` function.
* `agg_concat_str`: Trait value aggregation function that concatenates all strings in the StdValue column with a space between all words to reduce data when there are multiple rows after grouping by year, species, latitude and longitude, computes mean during data combining. This function is designed for use with the `combine_data(...)` function.
* `avg_first_last_year`: This function replaces instances of first and last year of sampling in the given dictionary containing latitude and longitude data with the mean year in between.
* `view_context`: Display unique combinations of column values in a given data frame that may contain useful context information about key dataset values.
* `get_vals_with_form`: Search dataset and return values with given form.
* `get_data_latlon_ids`: Return all data IDs in co-variate data related to latitude and longitude data.
* `get_data_latlon`: Return all data related to chosen latitude and longitude related DataIDs and separate it into standardized and non-standardized data.
* `value_transformation_latlon`: Convert latitude and longitude values expressed in varying notations complete with cardinal direction where application to decimal degrees.
* `value_transformation_year`: Extracts year data from date values.
* `get_data_year_ids`: Return all data IDs in co-variate with date related information.
* `get_data_year`: Return all data related to chosen date related DataIDs and separate them into standardized and non-standardized data.
* `combine_data`: Combine trait data + latitude and longitude data + year data.
* `extract_year`: Given a string containing either a single date or a date range, return the year, or mean year from it.
* `save_data`: Save given data frame at specified location as a .csv file.
* `wgs84_m_utm_to_decimal_degrees`: Given a UTM northing, easting, hemisphere and zone, return the decimal degree equivalent latitude and longitude.
* `nztm_to_decimal_degrees`: Given a New Zealand Transverse Mercator easting and northing value, returns the equivalent in decimal degree latitude and longitude.
* `map_plot`: Plot data from the "latitude" and "longitude" columns that are assumed to be a part of the data frame on a world map.
* `get_utm_data`: Extracts rows wherein latitude and longitude data is expressed in the UTM and/or WGS form.
* `value_transformation_trait`: Converts all non-std values to be in standard form.
## 2. Data Processing Pipeline.
The TRY Database integrates plant trait data from several hundreds of trait datasets. As there is constant acquisition of trait datasets, new versions of the TRY database are released on a regular basis. Currently, TRY version 6 is available, which is based on more than 700 contributed datasets and provides 15 million trait records for 305,000 plant taxa (mostly species) and 2661 traits, of which geo-referenced data is available for 2136 traits.
Official Website of the TRY Project: https://www.try-db.org/TryWeb/Home.php
Following subsections describe suggested steps that can be followed to extract desired data alongside location and date related information from TRY in a semi-automated manner.
Broadly speaking, all steps involved in this proposed TRY data processing pipeline, are as follows.
1. Feature Selection
2. Get TraitIDs
3. Request Data
4. Process Data
1. Load Data
2. Process Trait Data
1. TraitID Prioritization & Data Extraction
2. Manual Investigation
3. Function Definition
4. Function Application
3. Extract Location
1. DataID Selection & Data Extraction
2. Manual Investigation
3. Function Definition
4. Function Application
4. Extract Years
1. DataID Selection & Data Extraction
2. Manual Investigation
3. Function Definition
4. Function Application
5. Combine Data
6. Save Processed Data.
### 2.1. Select Features
In TRY, for each plant feature, there may be multiple traits that record information related to it. For example, trait IDs 3115 as well as 125 are both record data related to the same feature, Specific Leaf Area. Thus, the first step, is to determine the features of interest, for which data is available in TRY.
The trait table that can be found at https://www.try-db.org/de/TabDetails.php, contains the following information associated with each trait in the database. This table can be explored to determine desired features. If you already have a good idea of what feature(s) you're interested in, then this manual exploratory step can be skipped.
* `ObsNum`: Number of observations.
* `ObsGRNum`: Number of geo-referenced observations.
* `PubNum`: Number of public observations.
* `AccSpecNum`: Number of accepted species.
Once you've downloaded the trait table and saved it as a .tsv file, it can be loaded in, using the `load_trait_table(...)` function.
### 2.2 Get TraitIDs
Once you're settled on what plant features you'd like data for, the next step is to identify what TraitIDs in TRY have data related to each feature. The `search_trait_table(...)` function can be used to do this.
### 2.3. Request Data
For each feature, a request may be made for all associated traits corresponding to all available species (or, specific species as listed in the species list, also available on the TRY website) through the TRY website. Each request gets assigned a unique request ID and upon review, a download link will be available.
The downloaded table will contain both trait related data (identified using a `TraitID` in addition to a `DataID`) as well as covariate data (meta data related to trait data observations identified using a `DataID` only).
Trait and covariate variable names as entered for TRY cataloging may be found in columns `TraitName` and `DataName`. Original name of the variable as in the source dataset may be found within the `OriglName` column. The name and ID of the source dataset may be found within the `Dataset` and `DatasetID` column respectively.
All data associated with each row if present, can be found in one or more of the following columns.
* `StdValue`: Standardized value available for standardized traits.
* `StdValueStr`: Standardized entries for textual metadata.
* `OrigValueStr`: Original (non-standardized) value as text string.
The units for these values may be found in the columns below.
* `UnitName`: Standard unit available for standardized traits.
* `OrigUnitStr`: Original (non-standardized) unit as text string.
Following are some general observations based on investigation of data associated to TraitID 38: Plant woodiness, as fetched on 27 nov 2024.
* There are rows whereing both `StdValue` and `StdValueStr` values are present. In all these cases, it seems that values in both columns are equivalent.
* A standasrdized value (at least one of `StdValue` or `StdValueStr`) is only available for a small portion of the raw dataset.
* For a small portion of rows, there is no information at all (`StdValueStr` == `StdValue` == `OrigValueStr` == NaN). These rows are less uable and may be dropped.
* Every row has a `DataID`, but not every row has a `TraitID`.
* Upon manual examination of rows with a `DataID` but no `TraitID`, it seems that while there are a few "plant trait" related data variables this appears to be a small proportion of the subset of rows and thus may be ignored without greatly reducing the no. of available usable data points. The effort needed to find and separate these rows and process them is likely not worth the amount of useful information this can yield.
* Of all the data points in the dataset, the no. of rows with either a standardized or non-standardized value for a TraitID are only a small portion. Of these, only an even smaller portion has associated latitude and longitude and/or year information.
### 2.4. Process Data
Of all the TraitIDs in TRY, some are "standardized", meaning that their "StdValue" or "StdValueStr" columns are populated with standardized versions of values in their "OrigValueStr" column such that all these values are expressed using the same notation, and in the same standard unit as would be present in the "UnitName" column. Not every TraitID is standardized. Many, are not, and thus, would need to be standardized to match their standardized counterparts wherever possible, in order for the data to be consistent, unambiguous and therefore, at its most useful. Some of the data values, may also be the result of data entry error, or invalid. These must also be screened for and filtered. These are some of the activities that shall comprise data processing.
#### 2.4.1. Load Data
This step involves loading all (standardized and non-standardized, trait and co-variate data) data associated with each data request as downloaded from the TRY database. The `load_big_data(...)` function can be used to do this.
#### 2.4.2. Process Trait Data
This step involves cleaning and standardizing trait data values such that all values are expressed in the simplest, most useful, and unambiguous form in the same unit throughout the data frame.
##### 2.4.2.1. TraitID Prioritization & Data Extraction
It is possible that not all TraitIDs in the downloaded data is later deemed to be useful, in this case, it is important to keep and prioritize those TraitIDs whose values should be considered over others if more that one trait values turns out to be associated with the same data point (location, measurement year, and species combination). The `get_data_trait(...)` function can be used to load data related to specific prioritized TraitIDs.
##### 2.4.2.2. Manual Investigation
This stage involves manual examination of the data in order to determine the dataset-specific processing steps that shall be required.
Following are some common questions that may be useful to find answers to, as part of this step.
* Are values numeric/categorical? What forms are they in? - Examine column "value_form". The TRYpros function from called `manual_investigation` can be used to print a quick overview.
* What do raw values look like? - Examine columns "StdValue"/"StdValueStr" for standardized data (std) and "OrigValueStr" for non-standardized data (non_std).
* Do columns "Comment", "UnitName" (std) / "OrigUnitStr" (non_std), "OriglName" provide useful context information?
* What preprocessing steps, if any, are required?
* Is unit form standardization required?
* Is value form standardization required?
* Is value conversion required?
Throughout, it is advised that observations be noted down for future reference and decision review. Also, apart from aforementioned questions, other questions unique to each feature dataset may also need to be answered through data exploration in order to define suitable processing functions in the next step.
##### 2.4.2.3. Function Definition
At this stage, you may define functions that contribute towards the following 4 optional processing steps.
* Preprocessing: Preprocessing steps to be applied to the dataset before next steps.
* Unit standardization: A function that replaces invalid or ambiguous units.
* Value form standardization: A function that replaces invalid or ambiguous value forms.
* Value transformation: Ensuring that `StdValue` is populated with values,
such that all of them are expressed in the standard unit.
##### 2.4.2.4. Function Application
This step involves applying functions defined in the previous step. The `standardize_data(...)` and `value_transformation_trait(...)` functions may be used here.
#### 2.4.3. Extract Locations
Latitude and longitude information is considered co-variate data and in TRY, there are many DataIDs associated with them. Location information is often very important for projects working with plant trait data. If you do not need to extract location data, you may simply stop at the previous step and save the resulting data after the previous standardization step.
##### 2.4.3.1. DataID Selection & Data Extraction
Not all latitude and longitude related DataIDs may be relevant to your project. Thus, it is important to determine which location related DataIDs in the downloaded data, you'd like to keep. Functions `get_data_ids_latlon(...)` and `get_data_latlon(...)` may be used to extract data related to desired DataIDs only.
##### 2.4.3.2. Manual Investigation
Some geo-location related DataIDs are standardized and presented in decimal degrees but for other DataIDs, they may be non-standardized and presented in multiple various units. This demands processing and standardization. Thus, manual investigation is required to investigate the latitude and longitude values and to determine what, if any, processing steps may need to be defined.
##### 2.4.3.3. Function Definition
Much like with trait data, this step involved defining any required preprocessing, unit standardization, value form standardization, and/or value transformation functions.
##### 2.4.3.4. Function Application
Once again, this stage is defined by applying all defined functions.
#### 2.4.4. Extract Years
Knowing the date on which data was collected (at least the year) can be very important for projects working with plant trait information as many related factors like climatic conditions, respiration rate, greenness, etc., can vary greatly between years. TRYpros provides an `extract_year(...)` function that can be used in the value transformation function to extract years from dates. This pipeline focuses on extracting the "year" only, from dates, however a similar approach may be followed with different functions informed by data exploration if you require extraction of dates at a finer scale.
##### 2.4.4.1. DataID Selection & Data Extraction
Date related information is available in TRY, also as co-variate data and once again, not all DataIDs may be important. Thus functions `get_data_ids_year(...)` and `get_data_year(...)` may be used to select and extract date (in this case, year) related data, that is most desirable.
##### 2.4.4.2. Manual Investigation
Much like with trait and geo-location data before, this step involves manually exploring the dataset to inform processing function definition.
##### 2.4.4.3. Function Definition
Yet again, this step encompasses definition of preprocessing, unit standardization, value form standardization, and/or value transformation functions.
##### 2.4.4.4. Function Application
Here, defined functions are applied to the data.
#### 2.4.5. Combine Data
This step involves combining treated trait, geo-location, and year related data obtained so far, to produce a single processed data data frame. The `combine_data(...)` function can be used to do this.
#### 2.4.6. Save Processed Data
Finally, processed data so obtained that shall contain columns like [year, latitude, longitude, species_id, feature_value] can be saved as a .csv file using the `save_data(...)` function.
### 3. Example: Pipeline In Action
The following Jupyter Notebook style template gives an example of how the aforementioned functions may be used.
```
# Imports
import TRYpros
...
```
#### 3.1. Load Data
```
# Load data.
data_path = "./path/to/data.txt"
data_raw, trait_id_list = TRYpros.load_big_data(
data_path,
drop_cols=[ # Drop less useful columns.
"LastName", "FirstName", "Dataset", "Reference", "Replicates",
"SpeciesName", "AccSpeciesName", "ValueKindName",
"OrigUncertaintyStr", "UncertaintyName", "RelUncertaintyPercent"
]
)
```
#### 3.2. Process Trait Data
##### 3.2.1. Trait ID Prioritization & Data Extraction
```
# Data Extraction.
data_trait, data_covariate = TRYpros.get_data_trait(
data_raw,
priority = {TraitID: priority} # Assign priorities for each desired TraitID.
)
```
##### 3.2.2. Manual Investigation
```
# Are values numeric/categorical? What forms are they in?
TRYpros.display_units_forms(data_trait, "trait")
```
```
# View context.
TRYpros.view_context(data_trait["non_std"])
```
```
# View all forms.
for f in data_trait["non_std"].value_form.unique():
print(f)
```
```
# View data with specific forms.
spec_form = TRYpros.get_vals_with_form(
data_trait["non_std"],
[] # Change to inspect different forms.
)
print("Unique Values:", spec_form.OrigValueStr.unique())
spec_form[["OriglName", "Comment", "OrigUnitStr"]].drop_duplicates()
```
```
# More questions like the following.
# * What do raw values look like? - Examine
# columns "StdValue"/"StdValueStr" for standardized data (std)
# and "OrigValueStr" for non-standardized data (non_std).
# * Do columns "Comment", "UnitName" (std) / "OrigUnitStr" (non_std),
# "OriglName" provide useful context information?
# * What preprocessing steps, if any, are required?
# * Is unit form standardization required?
# * Is value form standardization required?
# * Is value conversion required?
```
##### 3.2.3. Function Definition
```
# Preprocessing?
# Unit standardization?
# Value form standardization?
# Value transformation?
```
##### 3.2.4. Function Application
```
# Apply defined functions using the "TRYpros.standardize_data(...)" function.
data_trait = TRYpros.standardize_data(
data = data_trait,
preprocessing_steps = [],
unit_std = None,
value_form_std = None,
value_trans = None
)
```
#### 3.3. Extract Locations
##### 3.3.1. DataID Selection & Data Extraction
```
# Data ID Selection
data_latlon = TRYpros.get_data_latlon_ids(data_covariate)
```
```
# Data Extraction
# Tweak latitude and longitude, std and non_std data ids if necessary.
data_latlon = TRYpros.get_data_latlon(data_latlon, data_covariate)
```
##### 3.3.2. Manual Investigation
```
# What do value units and forms look like?
TRYpros.display_units_forms(data_latlon, "latlon")
```
```
# Combine latitude and longitude non_std data for easier investigation.
data_latlon_std = pd.concat([
data_latlon["latitude"]["data"]["std"],
data_latlon["longitude"]["data"]["std"]
]).drop_duplicates()
data_latlon_non_std = pd.concat([
data_latlon["latitude"]["data"]["non_std"],
data_latlon["longitude"]["data"]["non_std"]
]).drop_duplicates()
```
```
# View context.
TRYpros.view_context(data_latlon_non_std)
```
```
# View UTM data.
data_utm = TRYpros.get_utm_data(data_latlon)
data_utm[["OriglName", "DataName", "Comment", "DatasetID"]].drop_duplicates()
```
```
# View data with specific forms.
spec_form = TRYpros.get_vals_with_form(
data_latlon_non_std,
[] # Change to inspect different forms.
)
print("Unique Values:", spec_form.OrigValueStr.unique())
spec_form[["OriglName", "Comment", "OrigUnitStr"]].drop_duplicates()
```
```
# More questions.
```
##### 3.3.3. Function Definition
```
# Preprocessing? E.g: TRYpros.avg_min_max_latlon(...)
# Unit standardization?
# Value form standardization?
# Value transformation? E.g. TRYpros.value_transformation_latlon(...)
```
##### 3.3.4. Function Application
```
# Standardize non-standardized location values.
data_latlon = TRYpros.standardize_data(
data = data_latlon,
preprocessing_steps = [],
unit_std = None,
value_form_std = None,
value_trans = None
)
```
#### 3.4. Extract Years
##### 3.4.1. DataID Selection & Data Extraction
```
# Identify DataIDs to consider.
data_year = TRYpros.get_data_year_ids(data_covariate)
```
```
# Data Extraction.
# Tweak std and non_std data ids if required.
data_year = TRYpros.get_data_year(data_year, data_covariate)
```
##### 3.4.2. Manual Investigation
```
# What do value units and forms look like?
TRYpros.display_units_forms(data_year, "date")
```
```
# More questions.
```
##### 3.4.3. Function Definition
```
# Preprocessing? E.g: TRYpros.avg_first_last_year(...)
# Unit standardization?
# Value form standardization?
# Value transformation? E.g: TRYpros.value_transformation_year(...)
```
##### 3.4.4. Function Application
```
# Apply defined functions using the "TRYpros.standardize_data(...)" function.
data_year = TRYpros.standardize_data(
data = data_year,
preprocessing_steps = [],
unit_std = None,
value_form_std = None,
value_trans = TRYpros.value_transformation_year
)
```
#### 3.5. Combine Data
```
# Combines location and year data with trait data.
feature_name = "feature_name"
feature_std_unit = "unit name or ''"
data_processed = TRYpros.combine_data(
data_trait, data_latlon, data_year,
feature_name = feature_name,
feature_std_unit = feature_std_unit,
trait_value_agg = TRYpros.agg_mean_mode # Or other agg functions like TRYpros.agg_concat_str(...)
)
```
```
# # View processed data.
data_processed
```
#### 3.6. Save Processed Data
```
# Save data.
TRYpros.save_data(
data = data_processed,
dest_fold = "../../data/try/processed",
feature_name = feature_name,
feature_unit = feature_std_unit
)
```
```
# View data distribution on map.
TRYpros.map_plot(data_processed, title=f"TRY Data Distribution: {feature_name}")
```
## 4. TRY - Complete Standard Reference
Kattge, J., G. Bönisch, S. Díaz, S. Lavorel, I. C. Prentice, P. Leadley, S. Tautenhahn, G. D. A. Werner, T.
Aakala, M. Abedi, A. T. R. Acosta, G. C. Adamidis, K. Adamson, M. Aiba, C. H. Albert, J. M. Alcántara, C.
Alcázar C, I. Aleixo, H. Ali, B. Amiaud, C. Ammer, M. M. Amoroso, M. Anand, C. Anderson, N. Anten, J.
Antos, D. M. G. Apgaua, T.-L. Ashman, D. H. Asmara, G. P. Asner, M. Aspinwall, O. Atkin, I. Aubin, L.
Baastrup-Spohr, K. Bahalkeh, M. Bahn, T. Baker, W. J. Baker, J. P. Bakker, D. Baldocchi, J. Baltzer, A.
Banerjee, A. Baranger, J. Barlow, D. R. Barneche, Z. Baruch, D. Bastianelli, J. Battles, W. Bauerle, M.
Bauters, E. Bazzato, M. Beckmann, H. Beeckman, C. Beierkuhnlein, R. Bekker, G. Belfry, M. Belluau, M.
Beloiu, R. Benavides, L. Benomar, M. L. Berdugo-Lattke, E. Berenguer, R. Bergamin, J. Bergmann, M.
Bergmann Carlucci, L. Berner, M. Bernhardt-Römermann, C. Bigler, A. D. Bjorkman, C. Blackman, C.
Blanco, B. Blonder, D. Blumenthal, K. T. Bocanegra-González, P. Boeckx, S. Bohlman, K. Böhning- Gaese,
L. Boisvert-Marsh, W. Bond, B. Bond-Lamberty, A. Boom, C. C. F. Boonman, K. Bordin, E. H. Boughton,
V. Boukili, D. M. J. S. Bowman, S. Bravo, M. R. Brendel, M. R. Broadley, K. A. Brown, H. Bruelheide, F.
Brumnich, H. H. Bruun, D. Bruy, S. W. Buchanan, S. F. Bucher, N. Buchmann, R. Buitenwerf, D. E. Bunker,
J. Bürger, S. Burrascano, D. F. R. P. Burslem, B. J. Butterfield, C. Byun, M. Marques, M. C. Scalon, M.
Caccianiga, M. Cadotte, M. Cailleret, J. Camac, J. J. Camarero, C. Campany, G. Campetella, J. A. Campos,
L. Cano-Arboleda, R. Canullo, M. Carbognani, F. Carvalho, F. Casanoves, B. Castagneyrol, J. A. Catford,
J. Cavender-Bares, B. E. L. Cerabolini, M. Cervellini, E. Chacón-Madrigal, K. Chapin, F. S. Chapin, S. Chelli,
S.-C. Chen, A. Chen, P. Cherubini, F. Chianucci, B. Choat, K.-S. Chung, M. Chytrý, D. Ciccarelli, L. Coll, C.
G. Collins, L. Conti, D. Coomes, J. H. C. Cornelissen, W. K. Cornwell, P. Corona, M. Coyea, J. Craine, D.
Craven, J. P. G. M. Cromsigt, A. Csecserits, K. Cufar, M. Cuntz, A. C. da Silva, K. M. Dahlin, M. Dainese, I.
Dalke, M. Dalle Fratte, A. T. Dang-Le, J. Danihelka, M. Dannoura, S. Dawson, A. J. de Beer, A. De Frutos,
J. R. De Long, B. Dechant, S. Delagrange, N. Delpierre, G. Derroire, A. S. Dias, M. H. Diaz-Toribio, P. G.
Dimitrakopoulos, M. Dobrowolski, D. Doktor, P. Dřevojan, N. Dong, J. Dransfield, S. Dressler, L. Duarte,
E. Ducouret, S. Dullinger, W. Durka, R. Duursma, O. Dymova, A. E- Vojtkó, R. L. Eckstein, H. Ejtehadi, J.
Elser, T. Emilio, K. Engemann, M. B. Erfanian, A. Erfmeier, A. Esquivel-Muelbert, G. Esser, M. Estiarte, T.
F. Domingues, W. F. Fagan, J. Fagúndez, D. S. Falster, Y. Fan, J. Fang, E. Farris, F. Fazlioglu, Y. Feng, F.
Fernandez-Mendez, C. Ferrara, J. Ferreira, A. Fidelis, B. Finegan, J. Firn, T. J. Flowers, D. F. B. Flynn, V.
Fontana, E. Forey, C. Forgiarini, L. François, M. Frangipani, D. Frank, C. Frenette-Dussault, G. T. Freschet,
E. L. Fry, N. M. Fyllas, G. G. Mazzochini, S. Gachet, R. Gallagher, G. Ganade, F. Ganga, P. García-Palacios,
V. Gargaglione, E. Garnier, J. L. Garrido, A. L. de Gasper, G. Gea-Izquierdo, D. Gibson, A. N. Gillison, A.
Giroldo, M.-C. Glasenhardt, S. Gleason, M. Gliesch, E. Goldberg, B. Göldel, E. Gonzalez-Akre, J. L.
Gonzalez-Andujar, A. González-Melo, A. González-Robles, B. J. Graae, E. Granda, S. Graves, W. A. Green,
T. Gregor, N. Gross, G. R. Guerin, A. Günther, A. G. Gutiérrez, L. Haddock, A. Haines, J. Hall, A.
Hambuckers, W. Han, S. P. Harrison, W. Hattingh, J. E. Hawes, T. He, P. He, J. M. Heberling, A. Helm, S.
Hempel, J. Hentschel, B. Hérault, A.-M. Hereş, K. Herz, M. Heuertz, T. Hickler, P. Hietz, P. Higuchi, A. L.
Hipp, A. Hirons, M. Hock, J. A. Hogan, K. Holl, O. Honnay, D. Hornstein, E. Hou, N. Hough-Snee, K. A.
Hovstad, T. Ichie, B. Igić, E. Illa, M. Isaac, M. Ishihara, L. Ivanov, L. Ivanova, C. M. Iversen, J. Izquierdo, R.
B. Jackson, B. Jackson, H. Jactel, A. M. Jagodzinski, U. Jandt, S. Jansen, T. Jenkins, A. Jentsch, J. R. P.
Jespersen, G.-F. Jiang, J. L. Johansen, D. Johnson, E. J. Jokela, C. A. Joly, G. J. Jordan, G. S. Joseph, D.
Junaedi, R. R. Junker, E. Justes, R. Kabzems, J. Kane, Z. Kaplan, T. Kattenborn, L. Kavelenova, E. Kearsley,
A. Kempel, T. Kenzo, A. Kerkhoff, M. I. Khalil, N. L. Kinlock, W. D. Kissling, K. Kitajima, T. Kitzberger, R.
Kjøller, T. Klein, M. Kleyer, J. Klimešová, J. Klipel, B. Kloeppel, S. Klotz, J. M. H. Knops, T. Kohyama, F.
Koike, J. Kollmann, B. Komac, K. Komatsu, C. König, N. J. B. Kraft, K. Kramer, H. Kreft, I. Kühn, D.
Kumarathunge, J. Kuppler, H. Kurokawa, Y. Kurosawa, S. Kuyah, J.-P. Laclau, B. Lafleur, E. Lallai, E. Lamb,
A. Lamprecht, D. J. Larkin, D. Laughlin, Y. Le Bagousse-Pinguet, G. le Maire, P. C. le Roux, E. le Roux, T.
Lee, F. Lens, S. L. Lewis, B. Lhotsky, Y. Li, X. Li, J. W. Lichstein, M. Liebergesell, J. Y. Lim, Y.-S. Lin, J. C.
Linares, C. Liu, D. Liu, U. Liu, S. Livingstone, J. Llusià, M. Lohbeck, Á. López-García, G. Lopez-Gonzalez, Z.
Lososová, F. Louault, B. A. Lukács, P. Lukeš, Y. Luo, M. Lussu, S. Ma, C. Maciel Rabelo Pereira, M. Mack,
V. Maire, A. Mäkelä, H. Mäkinen, A. C. M. Malhado, A. Mallik, P. Manning, S. Manzoni, Z. Marchetti, L.
Marchino, V. Marcilio-Silva, E. Marcon, M. Marignani, L. Markesteijn, A. Martin, C. Martínez-Garza, J.
Martínez- Vilalta, T. Mašková, K. Mason, N. Mason, T. J. Massad, J. Masse, I. Mayrose, J. McCarthy, M.
L. McCormack, K. McCulloh, I. R. McFadden, B. J. McGill, M. Y. McPartland, J. S. Medeiros, B. Medlyn, P.
Meerts, Z. Mehrabi, P. Meir, F. P. L. Melo, M. Mencuccini, C. Meredieu, J. Messier, I. Mészáros, J.
Metsaranta, S. T. Michaletz, C. Michelaki, S. Migalina, R. Milla, J. E. D. Miller, V. Minden, R. Ming, K.
Mokany, A. T. Moles, A. Molnár V, J. Molofsky, M. Molz, R. A. Montgomery, A. Monty, L. Moravcová, A.
Moreno-Martínez, M. Moretti, A. S. Mori, S. Mori, D. Morris, J. Morrison, L. Mucina, S. Mueller, C. D.
Muir, S. C. Müller, F. Munoz, I. H. Myers-Smith, R. W. Myster, M. Nagano, S. Naidu, A. Narayanan, B.
Natesan, L. Negoita, A. S. Nelson, E. L. Neuschulz, J. Ni, G. Niedrist, J. Nieto, Ü. Niinemets, R. Nolan, H.
Nottebrock, Y. Nouvellon, A. Novakovskiy, The Nutrient Network, K. O. Nystuen, A. O Grady, K. O Hara,
A. O Reilly-Nugent, S. Oakley, W. Oberhuber, T. Ohtsuka, R. Oliveira, K. Öllerer, M. E. Olson, V.
Onipchenko, Y. Onoda, R. E. Onstein, J. C. Ordonez, N. Osada, I. Ostonen, G. Ottaviani, S. Otto, G. E.
Overbeck, W. A. Ozinga, A. T. Pahl, C. E. T. Paine, R. J. Pakeman, A. C. Papageorgiou, E. Parfionova, M.
Pärtel, M. Patacca, S. Paula, J. Paule, H. Pauli, J. G. Pausas, B. Peco, J. Penuelas, A. Perea, P. L. Peri, A. C.
Petisco-Souza, A. Petraglia, A. M. Petritan, O. L. Phillips, S. Pierce, V. D. Pillar, J. Pisek, A. Pomogaybin,
H. Poorter, A. Portsmuth, P. Poschlod, C. Potvin, D. Pounds, A. S. Powell, S. A. Power, A. Prinzing, G.
Puglielli, P. Pyšek, V. Raevel, A. Rammig, J. Ransijn, C. A. Ray, P. B. Reich, M. Reichstein, D. E. B. Reid, M.
Réjou-Méchain, V. R. de Dios, S. Ribeiro, S. Richardson, K. Riibak, M. C. Rillig, F. Riviera, E. M. R. Robert,
S. Roberts, B. Robroek, A. Roddy, A. V. Rodrigues, A. Rogers, E. Rollinson, V. Rolo, C. Römermann, D.
Ronzhina, C. Roscher, J. A. Rosell, M. F. Rosenfield, C. Rossi, D. B. Roy, S. Royer-Tardif, N. Rüger, R. Ruiz-
Peinado, S. B. Rumpf, G. M. Rusch, M. Ryo, L. Sack, A. Saldaña, B. Salgado-Negret, R. Salguero-Gomez,
I. Santa-Regina, A. C. Santacruz-García, J. Santos, J. Sardans, B. Schamp, M. Scherer- Lorenzen, M.
Schleuning, B. Schmid, M. Schmidt, S. Schmitt, J. V. Schneider, S. D. Schowanek, J. Schrader, F. Schrodt,
B. Schuldt, F. Schurr, G. Selaya Garvizu, M. Semchenko, C. Seymour, J. C. Sfair, J. M. Sharpe, C. S.
Sheppard, S. Sheremetiev, S. Shiodera, B. Shipley, T. A. Shovon, A. Siebenkäs, C. Sierra, V. Silva, M. Silva,
T. Sitzia, H. Sjöman, M. Slot, N. G. Smith, D. Sodhi, P. Soltis, D. Soltis, B. Somers, G. Sonnier, M. V.
Sørensen, E. E. Sosinski Jr, N. A. Soudzilovskaia, A. F. Souza, M. Spasojevic, M. G. Sperandii, A. B. Stan,
J. Stegen, K. Steinbauer, J. G. Stephan, F. Sterck, D. B. Stojanovic, T. Strydom, M. L. Suarez, J.-C. Svenning,
I. Svitková, M. Svitok, M. Svoboda, E. Swaine, N. Swenson, M. Tabarelli, K. Takagi, U. Tappeiner, R. Tarifa,
S. Tauugourdeau, C. Tavsanoglu, M. te Beest, L. Tedersoo, N. Thiffault, D. Thom, E. Thomas, K.
Thompson, P. E. Thornton, W. Thuiller, L. Tichý, D. Tissue, M. G. Tjoelker, D. Y. P. Tng, J. Tobias, P. Török,
T. Tarin, J. M. Torres-Ruiz, B. Tóthmérész, M. Treurnicht, V. Trivellone, F. Trolliet, V. Trotsiuk, J. L.
Tsakalos, I. Tsiripidis, N. Tysklind, T. Umehara, V. Usoltsev, M. Vadeboncoeur, J. Vaezi, F. Valladares, J.
Vamosi, P. M. van Bodegom, M. van Breugel, E. Van Cleemput, M. van de Weg, S. van der Merwe, F.
van der Plas, M. T. van der Sande, M. van Kleunen, K. Van Meerbeek, M. Vanderwel, K. A. Vanselow, A.
Vårhammar, L. Varone, M. Y. Vasquez Valderrama, K. Vassilev, M. Vellend, E. J. Veneklaas, H. Verbeeck,
K. Verheyen, A. Vibrans, I. Vieira, J. Villacís, C. Violle, P. Vivek, K. Wagner, M. Waldram, A. Waldron, A.
P. Walker, M. Waller, G. Walther, H. Wang, F. Wang, W. Wang, H. Watkins, J. Watkins, U. Weber, J. T.
Weedon, L. Wei, P. Weigelt, E. Weiher, A. W. Wells, C. Wellstein, E. Wenk, M. Westoby, A. Westwood,
P. J. White, M. Whitten, M. Williams, D. E. Winkler, K. Winter, C. Womack, I. J. Wright, S. J. Wright, J.
Wright, B. X. Pinho, F. Ximenes, T. Yamada, K. Yamaji, R. Yanai, N. Yankov, B. Yguel, K. J. Zanini, A. E.
Zanne, D. Zelený, Y.-P. Zhao, J. Zheng, J. Zheng, K. Ziemińska, C. R. Zirbel, G. Zizka, I. C. Zo-Bi, G. Zotz and
C. Wirth (2020) TRY plant trait database – enhanced coverage and open access. Global Change Biology
26: 119 – 188. https://doi.org/10.1111/gcb.14904
Raw data
{
"_id": null,
"home_page": null,
"name": "TRYpros",
"maintainer": null,
"docs_url": null,
"requires_python": null,
"maintainer_email": "Gayathri Girish Nair <ggn1@tcd.ie>",
"keywords": null,
"author": null,
"author_email": "Gayathri Girish Nair <ggn1@tcd.ie>",
"download_url": "https://files.pythonhosted.org/packages/98/a7/4af2dde66e0747009a7ef59f66b1983e15f5da4c37fa0bdd22abfc2c7820/trypros-0.2.5.tar.gz",
"platform": null,
"description": "# TRYpros - TRY Plant Database - Data Buddy\nThis package comprises some functions that can support extraction of trait values, geo-location information (latitude, longitude) and measurement years associated with geo-referenced plant trait data in the TRY Plant Database (Kattge, J, B\u00f6nisch, G, D\u00edaz, S, et al. TRY plant trait database \u2013 enhanced coverage and open access. Glob Change Biol. 2020; 26: 119\u2013 188. https://doi.org/10.1111/gcb.14904).\n\nTRYpros was developed to support the Data Processing Pipeline as described in section 2. below. Section 1 provides a quick description of the intended purpose of all the functions provided by the TRYpros.\n\nTo install this package, type: `pip install TRYpros`.\n\n## 1. TRYpros Functions\nFollowing is a list of function names with a brief description of their intended use. Details like their input parameters and outputs can be learned by examining the doc-strings corresponding to each function. This can be fetched by using the python command `help([function name])`. \n* `load_trait_table`: Load the trait table .tsv file downloaded from TRY.\n* `search_trait_table`: Search trait names in the trait table and return trait ids with names containing words in the list of words to match.\n* `is_float`: Check whether or not a string is that of a floating point number.\n* `is_lat_lon_valid_terrestrial`: Check if a given latitude and longitude corresponds to a position on land.\n* `search_covariates`: Search all co-variate variable names to identify those with names containing words in the given word search list.\n* `get_chunk_count`: Given a chunk_size and path to downloaded raw data, return the no. od chunks the data will be divided into for loaded if chunk_size == specified chunk size.\n* `load_big_data`: Load raw data as downloaded from TRY.\n* `get_form`: Get the general form of the data with some predefined symbol like \"@\" replacing all numbers in the value.\n* `standardize_data`: Clean and standardize data by perform a list of processing steps including data frame pre-processing, unit standardization, value standardization, and value transformation.\n* `get_data_trait`: Extract trait data related to specific TraitIDs and separate it into standardized and non-standardized trait data.\n* `display_units_forms`: Display units and value forms associated with each value in the dataset.\n* `agg_mean_mode`: Trait value aggregation function that picks the trait with greatest priority over others and when there are multiple rows with the same priority while combining the dataset grouped by year, species, latitude and longitude, computes mean over all trait values with the same priority if the feature is numeric or mode if it is categorical. This function is designed for use with the `combine_data(...)` function.\n* `agg_concat_str`: Trait value aggregation function that concatenates all strings in the StdValue column with a space between all words to reduce data when there are multiple rows after grouping by year, species, latitude and longitude, computes mean during data combining. This function is designed for use with the `combine_data(...)` function.\n* `avg_first_last_year`: This function replaces instances of first and last year of sampling in the given dictionary containing latitude and longitude data with the mean year in between.\n* `view_context`: Display unique combinations of column values in a given data frame that may contain useful context information about key dataset values.\n* `get_vals_with_form`: Search dataset and return values with given form.\n* `get_data_latlon_ids`: Return all data IDs in co-variate data related to latitude and longitude data.\n* `get_data_latlon`: Return all data related to chosen latitude and longitude related DataIDs and separate it into standardized and non-standardized data.\n* `value_transformation_latlon`: Convert latitude and longitude values expressed in varying notations complete with cardinal direction where application to decimal degrees.\n* `value_transformation_year`: Extracts year data from date values.\n* `get_data_year_ids`: Return all data IDs in co-variate with date related information.\n* `get_data_year`: Return all data related to chosen date related DataIDs and separate them into standardized and non-standardized data.\n* `combine_data`: Combine trait data + latitude and longitude data + year data.\n* `extract_year`: Given a string containing either a single date or a date range, return the year, or mean year from it.\n* `save_data`: Save given data frame at specified location as a .csv file.\n* `wgs84_m_utm_to_decimal_degrees`: Given a UTM northing, easting, hemisphere and zone, return the decimal degree equivalent latitude and longitude.\n* `nztm_to_decimal_degrees`: Given a New Zealand Transverse Mercator easting and northing value, returns the equivalent in decimal degree latitude and longitude.\n* `map_plot`: Plot data from the \"latitude\" and \"longitude\" columns that are assumed to be a part of the data frame on a world map.\n* `get_utm_data`: Extracts rows wherein latitude and longitude data is expressed in the UTM and/or WGS form.\n* `value_transformation_trait`: Converts all non-std values to be in standard form.\n\n## 2. Data Processing Pipeline.\nThe TRY Database integrates plant trait data from several hundreds of trait datasets. As there is constant acquisition of trait datasets, new versions of the TRY database are released on a regular basis. Currently, TRY version 6 is available, which is based on more than 700 contributed datasets and provides 15 million trait records for 305,000 plant taxa (mostly species) and 2661 traits, of which geo-referenced data is available for 2136 traits.\n\nOfficial Website of the TRY Project: https://www.try-db.org/TryWeb/Home.php\n\nFollowing subsections describe suggested steps that can be followed to extract desired data alongside location and date related information from TRY in a semi-automated manner. \n\nBroadly speaking, all steps involved in this proposed TRY data processing pipeline, are as follows.\n1. Feature Selection\n2. Get TraitIDs\n3. Request Data\n4. Process Data\n 1. Load Data\n 2. Process Trait Data\n 1. TraitID Prioritization & Data Extraction\n 2. Manual Investigation\n 3. Function Definition\n 4. Function Application\n 3. Extract Location\n 1. DataID Selection & Data Extraction\n 2. Manual Investigation\n 3. Function Definition\n 4. Function Application\n 4. Extract Years\n 1. DataID Selection & Data Extraction\n 2. Manual Investigation\n 3. Function Definition\n 4. Function Application\n 5. Combine Data\n 6. Save Processed Data.\n\n### 2.1. Select Features\nIn TRY, for each plant feature, there may be multiple traits that record information related to it. For example, trait IDs 3115 as well as 125 are both record data related to the same feature, Specific Leaf Area. Thus, the first step, is to determine the features of interest, for which data is available in TRY.\n\nThe trait table that can be found at https://www.try-db.org/de/TabDetails.php, contains the following information associated with each trait in the database. This table can be explored to determine desired features. If you already have a good idea of what feature(s) you're interested in, then this manual exploratory step can be skipped.\n* `ObsNum`: Number of observations.\n* `ObsGRNum`: Number of geo-referenced observations.\n* `PubNum`: Number of public observations.\n* `AccSpecNum`: Number of accepted species.\n\nOnce you've downloaded the trait table and saved it as a .tsv file, it can be loaded in, using the `load_trait_table(...)` function.\n\n### 2.2 Get TraitIDs\nOnce you're settled on what plant features you'd like data for, the next step is to identify what TraitIDs in TRY have data related to each feature. The `search_trait_table(...)` function can be used to do this.\n\n### 2.3. Request Data\nFor each feature, a request may be made for all associated traits corresponding to all available species (or, specific species as listed in the species list, also available on the TRY website) through the TRY website. Each request gets assigned a unique request ID and upon review, a download link will be available.\n\nThe downloaded table will contain both trait related data (identified using a `TraitID` in addition to a `DataID`) as well as covariate data (meta data related to trait data observations identified using a `DataID` only).\n\nTrait and covariate variable names as entered for TRY cataloging may be found in columns `TraitName` and `DataName`. Original name of the variable as in the source dataset may be found within the `OriglName` column. The name and ID of the source dataset may be found within the `Dataset` and `DatasetID` column respectively.\n\nAll data associated with each row if present, can be found in one or more of the following columns.\n* `StdValue`: Standardized value available for standardized traits.\n* `StdValueStr`: Standardized entries for textual metadata.\n* `OrigValueStr`: Original (non-standardized) value as text string.\n\nThe units for these values may be found in the columns below.\n* `UnitName`: Standard unit available for standardized traits.\n* `OrigUnitStr`: Original (non-standardized) unit as text string.\n\nFollowing are some general observations based on investigation of data associated to TraitID 38: Plant woodiness, as fetched on 27 nov 2024.\n* There are rows whereing both `StdValue` and `StdValueStr` values are present. In all these cases, it seems that values in both columns are equivalent.\n* A standasrdized value (at least one of `StdValue` or `StdValueStr`) is only available for a small portion of the raw dataset.\n* For a small portion of rows, there is no information at all (`StdValueStr` == `StdValue` == `OrigValueStr` == NaN). These rows are less uable and may be dropped.\n* Every row has a `DataID`, but not every row has a `TraitID`.\n* Upon manual examination of rows with a `DataID` but no `TraitID`, it seems that while there are a few \"plant trait\" related data variables this appears to be a small proportion of the subset of rows and thus may be ignored without greatly reducing the no. of available usable data points. The effort needed to find and separate these rows and process them is likely not worth the amount of useful information this can yield.\n* Of all the data points in the dataset, the no. of rows with either a standardized or non-standardized value for a TraitID are only a small portion. Of these, only an even smaller portion has associated latitude and longitude and/or year information.\n\n### 2.4. Process Data\nOf all the TraitIDs in TRY, some are \"standardized\", meaning that their \"StdValue\" or \"StdValueStr\" columns are populated with standardized versions of values in their \"OrigValueStr\" column such that all these values are expressed using the same notation, and in the same standard unit as would be present in the \"UnitName\" column. Not every TraitID is standardized. Many, are not, and thus, would need to be standardized to match their standardized counterparts wherever possible, in order for the data to be consistent, unambiguous and therefore, at its most useful. Some of the data values, may also be the result of data entry error, or invalid. These must also be screened for and filtered. These are some of the activities that shall comprise data processing.\n\n#### 2.4.1. Load Data\nThis step involves loading all (standardized and non-standardized, trait and co-variate data) data associated with each data request as downloaded from the TRY database. The `load_big_data(...)` function can be used to do this.\n\n#### 2.4.2. Process Trait Data\nThis step involves cleaning and standardizing trait data values such that all values are expressed in the simplest, most useful, and unambiguous form in the same unit throughout the data frame.\n\n##### 2.4.2.1. TraitID Prioritization & Data Extraction\nIt is possible that not all TraitIDs in the downloaded data is later deemed to be useful, in this case, it is important to keep and prioritize those TraitIDs whose values should be considered over others if more that one trait values turns out to be associated with the same data point (location, measurement year, and species combination). The `get_data_trait(...)` function can be used to load data related to specific prioritized TraitIDs.\n\n##### 2.4.2.2. Manual Investigation\nThis stage involves manual examination of the data in order to determine the dataset-specific processing steps that shall be required.\n\nFollowing are some common questions that may be useful to find answers to, as part of this step. \n* Are values numeric/categorical? What forms are they in? - Examine column \"value_form\". The TRYpros function from called `manual_investigation` can be used to print a quick overview.\n* What do raw values look like? - Examine columns \"StdValue\"/\"StdValueStr\" for standardized data (std) and \"OrigValueStr\" for non-standardized data (non_std).\n* Do columns \"Comment\", \"UnitName\" (std) / \"OrigUnitStr\" (non_std), \"OriglName\" provide useful context information?\n* What preprocessing steps, if any, are required?\n* Is unit form standardization required?\n* Is value form standardization required?\n* Is value conversion required?\n\nThroughout, it is advised that observations be noted down for future reference and decision review. Also, apart from aforementioned questions, other questions unique to each feature dataset may also need to be answered through data exploration in order to define suitable processing functions in the next step.\n\n##### 2.4.2.3. Function Definition\nAt this stage, you may define functions that contribute towards the following 4 optional processing steps.\n* Preprocessing: Preprocessing steps to be applied to the dataset before next steps.\n* Unit standardization: A function that replaces invalid or ambiguous units.\n* Value form standardization: A function that replaces invalid or ambiguous value forms.\n* Value transformation: Ensuring that `StdValue` is populated with values, \n such that all of them are expressed in the standard unit.\n\n##### 2.4.2.4. Function Application\nThis step involves applying functions defined in the previous step. The `standardize_data(...)` and `value_transformation_trait(...)` functions may be used here.\n\n#### 2.4.3. Extract Locations\nLatitude and longitude information is considered co-variate data and in TRY, there are many DataIDs associated with them. Location information is often very important for projects working with plant trait data. If you do not need to extract location data, you may simply stop at the previous step and save the resulting data after the previous standardization step.\n\n##### 2.4.3.1. DataID Selection & Data Extraction\nNot all latitude and longitude related DataIDs may be relevant to your project. Thus, it is important to determine which location related DataIDs in the downloaded data, you'd like to keep. Functions `get_data_ids_latlon(...)` and `get_data_latlon(...)` may be used to extract data related to desired DataIDs only.\n\n##### 2.4.3.2. Manual Investigation\nSome geo-location related DataIDs are standardized and presented in decimal degrees but for other DataIDs, they may be non-standardized and presented in multiple various units. This demands processing and standardization. Thus, manual investigation is required to investigate the latitude and longitude values and to determine what, if any, processing steps may need to be defined.\n\n##### 2.4.3.3. Function Definition\nMuch like with trait data, this step involved defining any required preprocessing, unit standardization, value form standardization, and/or value transformation functions.\n\n##### 2.4.3.4. Function Application\nOnce again, this stage is defined by applying all defined functions.\n\n#### 2.4.4. Extract Years\nKnowing the date on which data was collected (at least the year) can be very important for projects working with plant trait information as many related factors like climatic conditions, respiration rate, greenness, etc., can vary greatly between years. TRYpros provides an `extract_year(...)` function that can be used in the value transformation function to extract years from dates. This pipeline focuses on extracting the \"year\" only, from dates, however a similar approach may be followed with different functions informed by data exploration if you require extraction of dates at a finer scale.\n\n##### 2.4.4.1. DataID Selection & Data Extraction\nDate related information is available in TRY, also as co-variate data and once again, not all DataIDs may be important. Thus functions `get_data_ids_year(...)` and `get_data_year(...)` may be used to select and extract date (in this case, year) related data, that is most desirable.\n\n##### 2.4.4.2. Manual Investigation\nMuch like with trait and geo-location data before, this step involves manually exploring the dataset to inform processing function definition.\n\n##### 2.4.4.3. Function Definition\nYet again, this step encompasses definition of preprocessing, unit standardization, value form standardization, and/or value transformation functions.\n\n##### 2.4.4.4. Function Application\nHere, defined functions are applied to the data.\n\n#### 2.4.5. Combine Data\nThis step involves combining treated trait, geo-location, and year related data obtained so far, to produce a single processed data data frame. The `combine_data(...)` function can be used to do this.\n\n#### 2.4.6. Save Processed Data\nFinally, processed data so obtained that shall contain columns like [year, latitude, longitude, species_id, feature_value] can be saved as a .csv file using the `save_data(...)` function.\n\n### 3. Example: Pipeline In Action\nThe following Jupyter Notebook style template gives an example of how the aforementioned functions may be used.\n```\n# Imports\nimport TRYpros\n...\n```\n#### 3.1. Load Data\n```\n# Load data.\ndata_path = \"./path/to/data.txt\"\ndata_raw, trait_id_list = TRYpros.load_big_data(\n data_path,\n drop_cols=[ # Drop less useful columns.\n \"LastName\", \"FirstName\", \"Dataset\", \"Reference\", \"Replicates\",\n \"SpeciesName\", \"AccSpeciesName\", \"ValueKindName\",\n \"OrigUncertaintyStr\", \"UncertaintyName\", \"RelUncertaintyPercent\"\n ]\n)\n```\n#### 3.2. Process Trait Data\n##### 3.2.1. Trait ID Prioritization & Data Extraction\n```\n# Data Extraction.\ndata_trait, data_covariate = TRYpros.get_data_trait(\n data_raw,\n priority = {TraitID: priority} # Assign priorities for each desired TraitID.\n)\n```\n##### 3.2.2. Manual Investigation\n```\n# Are values numeric/categorical? What forms are they in?\nTRYpros.display_units_forms(data_trait, \"trait\")\n```\n```\n# View context.\nTRYpros.view_context(data_trait[\"non_std\"])\n```\n```\n# View all forms.\nfor f in data_trait[\"non_std\"].value_form.unique(): \n print(f)\n```\n```\n# View data with specific forms.\nspec_form = TRYpros.get_vals_with_form(\n data_trait[\"non_std\"], \n [] # Change to inspect different forms.\n)\nprint(\"Unique Values:\", spec_form.OrigValueStr.unique())\nspec_form[[\"OriglName\", \"Comment\", \"OrigUnitStr\"]].drop_duplicates()\n```\n```\n# More questions like the following.\n# * What do raw values look like? - Examine \n# columns \"StdValue\"/\"StdValueStr\" for standardized data (std) \n# and \"OrigValueStr\" for non-standardized data (non_std).\n# * Do columns \"Comment\", \"UnitName\" (std) / \"OrigUnitStr\" (non_std), \n# \"OriglName\" provide useful context information?\n# * What preprocessing steps, if any, are required?\n# * Is unit form standardization required?\n# * Is value form standardization required?\n# * Is value conversion required?\n```\n##### 3.2.3. Function Definition\n```\n# Preprocessing?\n# Unit standardization?\n# Value form standardization?\n# Value transformation?\n```\n##### 3.2.4. Function Application\n```\n# Apply defined functions using the \"TRYpros.standardize_data(...)\" function.\ndata_trait = TRYpros.standardize_data(\n data = data_trait,\n preprocessing_steps = [],\n unit_std = None,\n value_form_std = None,\n value_trans = None\n)\n```\n#### 3.3. Extract Locations\n##### 3.3.1. DataID Selection & Data Extraction\n```\n# Data ID Selection\ndata_latlon = TRYpros.get_data_latlon_ids(data_covariate)\n```\n```\n# Data Extraction\n# Tweak latitude and longitude, std and non_std data ids if necessary.\ndata_latlon = TRYpros.get_data_latlon(data_latlon, data_covariate)\n```\n##### 3.3.2. Manual Investigation\n```\n# What do value units and forms look like?\nTRYpros.display_units_forms(data_latlon, \"latlon\")\n```\n```\n# Combine latitude and longitude non_std data for easier investigation.\ndata_latlon_std = pd.concat([\n data_latlon[\"latitude\"][\"data\"][\"std\"], \n data_latlon[\"longitude\"][\"data\"][\"std\"]\n]).drop_duplicates()\ndata_latlon_non_std = pd.concat([\n data_latlon[\"latitude\"][\"data\"][\"non_std\"], \n data_latlon[\"longitude\"][\"data\"][\"non_std\"]\n]).drop_duplicates()\n```\n```\n# View context.\nTRYpros.view_context(data_latlon_non_std)\n```\n```\n# View UTM data.\ndata_utm = TRYpros.get_utm_data(data_latlon)\ndata_utm[[\"OriglName\", \"DataName\", \"Comment\", \"DatasetID\"]].drop_duplicates()\n```\n```\n# View data with specific forms.\nspec_form = TRYpros.get_vals_with_form(\n data_latlon_non_std, \n [] # Change to inspect different forms.\n)\nprint(\"Unique Values:\", spec_form.OrigValueStr.unique())\nspec_form[[\"OriglName\", \"Comment\", \"OrigUnitStr\"]].drop_duplicates()\n```\n```\n# More questions.\n```\n##### 3.3.3. Function Definition\n```\n# Preprocessing? E.g: TRYpros.avg_min_max_latlon(...)\n# Unit standardization?\n# Value form standardization?\n# Value transformation? E.g. TRYpros.value_transformation_latlon(...)\n```\n##### 3.3.4. Function Application\n```\n# Standardize non-standardized location values.\ndata_latlon = TRYpros.standardize_data(\n data = data_latlon,\n preprocessing_steps = [],\n unit_std = None,\n value_form_std = None,\n value_trans = None\n)\n```\n#### 3.4. Extract Years \n##### 3.4.1. DataID Selection & Data Extraction\n```\n# Identify DataIDs to consider.\ndata_year = TRYpros.get_data_year_ids(data_covariate)\n```\n```\n# Data Extraction.\n# Tweak std and non_std data ids if required.\ndata_year = TRYpros.get_data_year(data_year, data_covariate)\n```\n##### 3.4.2. Manual Investigation\n```\n# What do value units and forms look like?\nTRYpros.display_units_forms(data_year, \"date\")\n```\n```\n# More questions.\n```\n##### 3.4.3. Function Definition\n```\n# Preprocessing? E.g: TRYpros.avg_first_last_year(...)\n# Unit standardization?\n# Value form standardization?\n# Value transformation? E.g: TRYpros.value_transformation_year(...)\n```\n##### 3.4.4. Function Application\n```\n# Apply defined functions using the \"TRYpros.standardize_data(...)\" function.\ndata_year = TRYpros.standardize_data(\n data = data_year,\n preprocessing_steps = [],\n unit_std = None,\n value_form_std = None,\n value_trans = TRYpros.value_transformation_year\n)\n```\n#### 3.5. Combine Data\n```\n# Combines location and year data with trait data.\nfeature_name = \"feature_name\"\nfeature_std_unit = \"unit name or ''\"\ndata_processed = TRYpros.combine_data(\n data_trait, data_latlon, data_year,\n feature_name = feature_name, \n feature_std_unit = feature_std_unit,\n trait_value_agg = TRYpros.agg_mean_mode # Or other agg functions like TRYpros.agg_concat_str(...)\n)\n```\n```\n# # View processed data.\ndata_processed\n```\n#### 3.6. Save Processed Data\n```\n# Save data.\nTRYpros.save_data(\n data = data_processed, \n dest_fold = \"../../data/try/processed\",\n feature_name = feature_name,\n feature_unit = feature_std_unit\n)\n```\n```\n# View data distribution on map.\nTRYpros.map_plot(data_processed, title=f\"TRY Data Distribution: {feature_name}\")\n```\n\n## 4. TRY - Complete Standard Reference\nKattge, J., G. B\u00f6nisch, S. D\u00edaz, S. Lavorel, I. C. Prentice, P. Leadley, S. Tautenhahn, G. D. A. Werner, T.\nAakala, M. Abedi, A. T. R. Acosta, G. C. Adamidis, K. Adamson, M. Aiba, C. H. Albert, J. M. Alc\u00e1ntara, C.\nAlc\u00e1zar C, I. Aleixo, H. Ali, B. Amiaud, C. Ammer, M. M. Amoroso, M. Anand, C. Anderson, N. Anten, J.\nAntos, D. M. G. Apgaua, T.-L. Ashman, D. H. Asmara, G. P. Asner, M. Aspinwall, O. Atkin, I. Aubin, L.\nBaastrup-Spohr, K. Bahalkeh, M. Bahn, T. Baker, W. J. Baker, J. P. Bakker, D. Baldocchi, J. Baltzer, A.\nBanerjee, A. Baranger, J. Barlow, D. R. Barneche, Z. Baruch, D. Bastianelli, J. Battles, W. Bauerle, M.\nBauters, E. Bazzato, M. Beckmann, H. Beeckman, C. Beierkuhnlein, R. Bekker, G. Belfry, M. Belluau, M.\nBeloiu, R. Benavides, L. Benomar, M. L. Berdugo-Lattke, E. Berenguer, R. Bergamin, J. Bergmann, M.\nBergmann Carlucci, L. Berner, M. Bernhardt-R\u00f6mermann, C. Bigler, A. D. Bjorkman, C. Blackman, C.\nBlanco, B. Blonder, D. Blumenthal, K. T. Bocanegra-Gonz\u00e1lez, P. Boeckx, S. Bohlman, K. B\u00f6hning- Gaese,\nL. Boisvert-Marsh, W. Bond, B. Bond-Lamberty, A. Boom, C. C. F. Boonman, K. Bordin, E. H. Boughton,\nV. Boukili, D. M. J. S. Bowman, S. Bravo, M. R. Brendel, M. R. Broadley, K. A. Brown, H. Bruelheide, F.\nBrumnich, H. H. Bruun, D. Bruy, S. W. Buchanan, S. F. Bucher, N. Buchmann, R. Buitenwerf, D. E. Bunker,\nJ. B\u00fcrger, S. Burrascano, D. F. R. P. Burslem, B. J. Butterfield, C. Byun, M. Marques, M. C. Scalon, M.\nCaccianiga, M. Cadotte, M. Cailleret, J. Camac, J. J. Camarero, C. Campany, G. Campetella, J. A. Campos,\nL. Cano-Arboleda, R. Canullo, M. Carbognani, F. Carvalho, F. Casanoves, B. Castagneyrol, J. A. Catford,\nJ. Cavender-Bares, B. E. L. Cerabolini, M. Cervellini, E. Chac\u00f3n-Madrigal, K. Chapin, F. S. Chapin, S. Chelli,\nS.-C. Chen, A. Chen, P. Cherubini, F. Chianucci, B. Choat, K.-S. Chung, M. Chytr\u00fd, D. Ciccarelli, L. Coll, C.\nG. Collins, L. Conti, D. Coomes, J. H. C. Cornelissen, W. K. Cornwell, P. Corona, M. Coyea, J. Craine, D.\nCraven, J. P. G. M. Cromsigt, A. Csecserits, K. Cufar, M. Cuntz, A. C. da Silva, K. M. Dahlin, M. Dainese, I.\nDalke, M. Dalle Fratte, A. T. Dang-Le, J. Danihelka, M. Dannoura, S. Dawson, A. J. de Beer, A. De Frutos,\nJ. R. De Long, B. Dechant, S. Delagrange, N. Delpierre, G. Derroire, A. S. Dias, M. H. Diaz-Toribio, P. G.\nDimitrakopoulos, M. Dobrowolski, D. Doktor, P. D\u0159evojan, N. Dong, J. Dransfield, S. Dressler, L. Duarte,\nE. Ducouret, S. Dullinger, W. Durka, R. Duursma, O. Dymova, A. E- Vojtk\u00f3, R. L. Eckstein, H. Ejtehadi, J.\nElser, T. Emilio, K. Engemann, M. B. Erfanian, A. Erfmeier, A. Esquivel-Muelbert, G. Esser, M. Estiarte, T.\nF. Domingues, W. F. Fagan, J. Fag\u00fandez, D. S. Falster, Y. Fan, J. Fang, E. Farris, F. Fazlioglu, Y. Feng, F.\nFernandez-Mendez, C. Ferrara, J. Ferreira, A. Fidelis, B. Finegan, J. Firn, T. J. Flowers, D. F. B. Flynn, V.\nFontana, E. Forey, C. Forgiarini, L. Fran\u00e7ois, M. Frangipani, D. Frank, C. Frenette-Dussault, G. T. Freschet,\nE. L. Fry, N. M. Fyllas, G. G. Mazzochini, S. Gachet, R. Gallagher, G. Ganade, F. Ganga, P. Garc\u00eda-Palacios,\nV. Gargaglione, E. Garnier, J. L. Garrido, A. L. de Gasper, G. Gea-Izquierdo, D. Gibson, A. N. Gillison, A.\nGiroldo, M.-C. Glasenhardt, S. Gleason, M. Gliesch, E. Goldberg, B. G\u00f6ldel, E. Gonzalez-Akre, J. L.\nGonzalez-Andujar, A. Gonz\u00e1lez-Melo, A. Gonz\u00e1lez-Robles, B. J. Graae, E. Granda, S. Graves, W. A. Green,\nT. Gregor, N. Gross, G. R. Guerin, A. G\u00fcnther, A. G. Guti\u00e9rrez, L. Haddock, A. Haines, J. Hall, A.\nHambuckers, W. Han, S. P. Harrison, W. Hattingh, J. E. Hawes, T. He, P. He, J. M. Heberling, A. Helm, S.\nHempel, J. Hentschel, B. H\u00e9rault, A.-M. Here\u015f, K. Herz, M. Heuertz, T. Hickler, P. Hietz, P. Higuchi, A. L.\nHipp, A. Hirons, M. Hock, J. A. Hogan, K. Holl, O. Honnay, D. Hornstein, E. Hou, N. Hough-Snee, K. A.\nHovstad, T. Ichie, B. Igi\u0107, E. Illa, M. Isaac, M. Ishihara, L. Ivanov, L. Ivanova, C. M. Iversen, J. Izquierdo, R.\nB. Jackson, B. Jackson, H. Jactel, A. M. Jagodzinski, U. Jandt, S. Jansen, T. Jenkins, A. Jentsch, J. R. P.\nJespersen, G.-F. Jiang, J. L. Johansen, D. Johnson, E. J. Jokela, C. A. Joly, G. J. Jordan, G. S. Joseph, D.\nJunaedi, R. R. Junker, E. Justes, R. Kabzems, J. Kane, Z. Kaplan, T. Kattenborn, L. Kavelenova, E. Kearsley,\nA. Kempel, T. Kenzo, A. Kerkhoff, M. I. Khalil, N. L. Kinlock, W. D. Kissling, K. Kitajima, T. Kitzberger, R.\nKj\u00f8ller, T. Klein, M. Kleyer, J. Klime\u0161ov\u00e1, J. Klipel, B. Kloeppel, S. Klotz, J. M. H. Knops, T. Kohyama, F.\nKoike, J. Kollmann, B. Komac, K. Komatsu, C. K\u00f6nig, N. J. B. Kraft, K. Kramer, H. Kreft, I. K\u00fchn, D.\nKumarathunge, J. Kuppler, H. Kurokawa, Y. Kurosawa, S. Kuyah, J.-P. Laclau, B. Lafleur, E. Lallai, E. Lamb,\nA. Lamprecht, D. J. Larkin, D. Laughlin, Y. Le Bagousse-Pinguet, G. le Maire, P. C. le Roux, E. le Roux, T.\nLee, F. Lens, S. L. Lewis, B. Lhotsky, Y. Li, X. Li, J. W. Lichstein, M. Liebergesell, J. Y. Lim, Y.-S. Lin, J. C.\nLinares, C. Liu, D. Liu, U. Liu, S. Livingstone, J. Llusi\u00e0, M. Lohbeck, \u00c1. L\u00f3pez-Garc\u00eda, G. Lopez-Gonzalez, Z.\nLososov\u00e1, F. Louault, B. A. Luk\u00e1cs, P. Luke\u0161, Y. Luo, M. Lussu, S. Ma, C. Maciel Rabelo Pereira, M. Mack,\nV. Maire, A. M\u00e4kel\u00e4, H. M\u00e4kinen, A. C. M. Malhado, A. Mallik, P. Manning, S. Manzoni, Z. Marchetti, L.\nMarchino, V. Marcilio-Silva, E. Marcon, M. Marignani, L. Markesteijn, A. Martin, C. Mart\u00ednez-Garza, J.\nMart\u00ednez- Vilalta, T. Ma\u0161kov\u00e1, K. Mason, N. Mason, T. J. Massad, J. Masse, I. Mayrose, J. McCarthy, M.\nL. McCormack, K. McCulloh, I. R. McFadden, B. J. McGill, M. Y. McPartland, J. S. Medeiros, B. Medlyn, P.\nMeerts, Z. Mehrabi, P. Meir, F. P. L. Melo, M. Mencuccini, C. Meredieu, J. Messier, I. M\u00e9sz\u00e1ros, J.\nMetsaranta, S. T. Michaletz, C. Michelaki, S. Migalina, R. Milla, J. E. D. Miller, V. Minden, R. Ming, K.\nMokany, A. T. Moles, A. Moln\u00e1r V, J. Molofsky, M. Molz, R. A. Montgomery, A. Monty, L. Moravcov\u00e1, A.\nMoreno-Mart\u00ednez, M. Moretti, A. S. Mori, S. Mori, D. Morris, J. Morrison, L. Mucina, S. Mueller, C. D.\nMuir, S. C. M\u00fcller, F. Munoz, I. H. Myers-Smith, R. W. Myster, M. Nagano, S. Naidu, A. Narayanan, B.\nNatesan, L. Negoita, A. S. Nelson, E. L. Neuschulz, J. Ni, G. Niedrist, J. Nieto, \u00dc. Niinemets, R. Nolan, H.\nNottebrock, Y. Nouvellon, A. Novakovskiy, The Nutrient Network, K. O. Nystuen, A. O Grady, K. O Hara,\nA. O Reilly-Nugent, S. Oakley, W. Oberhuber, T. Ohtsuka, R. Oliveira, K. \u00d6llerer, M. E. Olson, V.\nOnipchenko, Y. Onoda, R. E. Onstein, J. C. Ordonez, N. Osada, I. Ostonen, G. Ottaviani, S. Otto, G. E.\nOverbeck, W. A. Ozinga, A. T. Pahl, C. E. T. Paine, R. J. Pakeman, A. C. Papageorgiou, E. Parfionova, M.\nP\u00e4rtel, M. Patacca, S. Paula, J. Paule, H. Pauli, J. G. Pausas, B. Peco, J. Penuelas, A. Perea, P. L. Peri, A. C.\nPetisco-Souza, A. Petraglia, A. M. Petritan, O. L. Phillips, S. Pierce, V. D. Pillar, J. Pisek, A. Pomogaybin,\nH. Poorter, A. Portsmuth, P. Poschlod, C. Potvin, D. Pounds, A. S. Powell, S. A. Power, A. Prinzing, G.\nPuglielli, P. Py\u0161ek, V. Raevel, A. Rammig, J. Ransijn, C. A. Ray, P. B. Reich, M. Reichstein, D. E. B. Reid, M.\nR\u00e9jou-M\u00e9chain, V. R. de Dios, S. Ribeiro, S. Richardson, K. Riibak, M. C. Rillig, F. Riviera, E. M. R. Robert,\nS. Roberts, B. Robroek, A. Roddy, A. V. Rodrigues, A. Rogers, E. Rollinson, V. Rolo, C. R\u00f6mermann, D.\nRonzhina, C. Roscher, J. A. Rosell, M. F. Rosenfield, C. Rossi, D. B. Roy, S. Royer-Tardif, N. R\u00fcger, R. Ruiz-\nPeinado, S. B. Rumpf, G. M. Rusch, M. Ryo, L. Sack, A. Salda\u00f1a, B. Salgado-Negret, R. Salguero-Gomez,\nI. Santa-Regina, A. C. Santacruz-Garc\u00eda, J. Santos, J. Sardans, B. Schamp, M. Scherer- Lorenzen, M.\nSchleuning, B. Schmid, M. Schmidt, S. Schmitt, J. V. Schneider, S. D. Schowanek, J. Schrader, F. Schrodt,\nB. Schuldt, F. Schurr, G. Selaya Garvizu, M. Semchenko, C. Seymour, J. C. Sfair, J. M. Sharpe, C. S.\nSheppard, S. Sheremetiev, S. Shiodera, B. Shipley, T. A. Shovon, A. Siebenk\u00e4s, C. Sierra, V. Silva, M. Silva,\nT. Sitzia, H. Sj\u00f6man, M. Slot, N. G. Smith, D. Sodhi, P. Soltis, D. Soltis, B. Somers, G. Sonnier, M. V.\nS\u00f8rensen, E. E. Sosinski Jr, N. A. Soudzilovskaia, A. F. Souza, M. Spasojevic, M. G. Sperandii, A. B. Stan,\nJ. Stegen, K. Steinbauer, J. G. Stephan, F. Sterck, D. B. Stojanovic, T. Strydom, M. L. Suarez, J.-C. Svenning,\nI. Svitkov\u00e1, M. Svitok, M. Svoboda, E. Swaine, N. Swenson, M. Tabarelli, K. Takagi, U. Tappeiner, R. Tarifa,\nS. Tauugourdeau, C. Tavsanoglu, M. te Beest, L. Tedersoo, N. Thiffault, D. Thom, E. Thomas, K.\nThompson, P. E. Thornton, W. Thuiller, L. Tich\u00fd, D. Tissue, M. G. Tjoelker, D. Y. P. Tng, J. Tobias, P. T\u00f6r\u00f6k,\nT. Tarin, J. M. Torres-Ruiz, B. T\u00f3thm\u00e9r\u00e9sz, M. Treurnicht, V. Trivellone, F. Trolliet, V. Trotsiuk, J. L.\nTsakalos, I. Tsiripidis, N. Tysklind, T. Umehara, V. Usoltsev, M. Vadeboncoeur, J. Vaezi, F. Valladares, J.\nVamosi, P. M. van Bodegom, M. van Breugel, E. Van Cleemput, M. van de Weg, S. van der Merwe, F.\nvan der Plas, M. T. van der Sande, M. van Kleunen, K. Van Meerbeek, M. Vanderwel, K. A. Vanselow, A.\nV\u00e5rhammar, L. Varone, M. Y. Vasquez Valderrama, K. Vassilev, M. Vellend, E. J. Veneklaas, H. Verbeeck,\nK. Verheyen, A. Vibrans, I. Vieira, J. Villac\u00eds, C. Violle, P. Vivek, K. Wagner, M. Waldram, A. Waldron, A.\nP. Walker, M. Waller, G. Walther, H. Wang, F. Wang, W. Wang, H. Watkins, J. Watkins, U. Weber, J. T.\nWeedon, L. Wei, P. Weigelt, E. Weiher, A. W. Wells, C. Wellstein, E. Wenk, M. Westoby, A. Westwood,\nP. J. White, M. Whitten, M. Williams, D. E. Winkler, K. Winter, C. Womack, I. J. Wright, S. J. Wright, J.\nWright, B. X. Pinho, F. Ximenes, T. Yamada, K. Yamaji, R. Yanai, N. Yankov, B. Yguel, K. J. Zanini, A. E.\nZanne, D. Zelen\u00fd, Y.-P. Zhao, J. Zheng, J. Zheng, K. Ziemi\u0144ska, C. R. Zirbel, G. Zizka, I. C. Zo-Bi, G. Zotz and\nC. Wirth (2020) TRY plant trait database \u2013 enhanced coverage and open access. Global Change Biology\n26: 119 \u2013 188. https://doi.org/10.1111/gcb.14904\n",
"bugtrack_url": null,
"license": null,
"summary": "A collection of possibly useful functions to process data from the TRY Plant Database, supporting a recommended data processing pipeline.",
"version": "0.2.5",
"project_urls": null,
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "eae74e5ae28346a9ab85ca31330c59ee02b6b0aea35bbccb9180e67e492363a2",
"md5": "b44cc74d46a599773f495c7660790925",
"sha256": "ca309e73b3425cc6cf17c916b34b31eff0c17126a30bcd74c659a2ca951db95a"
},
"downloads": -1,
"filename": "TRYpros-0.2.5-py3-none-any.whl",
"has_sig": false,
"md5_digest": "b44cc74d46a599773f495c7660790925",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 30263,
"upload_time": "2024-12-21T17:15:19",
"upload_time_iso_8601": "2024-12-21T17:15:19.577526Z",
"url": "https://files.pythonhosted.org/packages/ea/e7/4e5ae28346a9ab85ca31330c59ee02b6b0aea35bbccb9180e67e492363a2/TRYpros-0.2.5-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "98a74af2dde66e0747009a7ef59f66b1983e15f5da4c37fa0bdd22abfc2c7820",
"md5": "a83afeb5bccecb97ec33189ac6723ab5",
"sha256": "69ecbcfa24ad7293def7ee010baa2d24b0d640c89151f0efbf5d03f59a0c6b98"
},
"downloads": -1,
"filename": "trypros-0.2.5.tar.gz",
"has_sig": false,
"md5_digest": "a83afeb5bccecb97ec33189ac6723ab5",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 53488,
"upload_time": "2024-12-21T17:15:21",
"upload_time_iso_8601": "2024-12-21T17:15:21.834045Z",
"url": "https://files.pythonhosted.org/packages/98/a7/4af2dde66e0747009a7ef59f66b1983e15f5da4c37fa0bdd22abfc2c7820/trypros-0.2.5.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-12-21 17:15:21",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "trypros"
}