Grassroots Infrastructure
The Grassroots Infrastructure is a suite of computing tools to help users and developers use scientific data infrastructure that can easily be interconnected.
study.h File Reference
#include <time.h>
#include "dfw_field_trial_service_data.h"
#include "dfw_field_trial_service_library.h"
#include "field_trial.h"
#include "location.h"
#include "jansson.h"
#include "key_value_pair.h"
#include "crop.h"
#include "person.h"
#include "typedefs.h"
#include "address.h"
#include "json_processor.h"
#include "statistics.h"
Include dependency graph for study.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  Study
 
struct  StudyNode
 

Macros

#define ST_UNKNOWN_DIRECTION_S   "Unknown"
 The value to specify that the aspect parameter is not set. More...
 

Functions

const STUDY_PREFIX char *ST_NAME_S STUDY_CONCAT_VAL (CONTEXT_PREFIX_SCHEMA_ORG_S, "name")
 
const STUDY_PREFIX char *ST_LOCATION_ID_S STUDY_VAL ("address_id")
 
const STUDY_PREFIX char *ST_LOCATION_S STUDY_VAL ("address")
 
const STUDY_PREFIX char *ST_CONTACT_S STUDY_VAL ("contact")
 
const STUDY_PREFIX char *ST_CURATOR_S STUDY_VAL ("curator")
 
const STUDY_PREFIX char *ST_CONTRIBUTORS_S STUDY_VAL ("contributors")
 
const STUDY_PREFIX char *ST_ASPECT_S STUDY_CONCAT_VAL (CONTEXT_PREFIX_NCI_THESAUSUS_ONTOLOGY_S, "C42677")
 
const STUDY_PREFIX char *ST_SLOPE_S STUDY_CONCAT_VAL (CONTEXT_PREFIX_ENVIRONMENT_ONTOLOGY_S, "00002000")
 
const STUDY_PREFIX char *ST_PARENT_FIELD_TRIAL_S STUDY_VAL ("parent_field_trial")
 
const STUDY_PREFIX char *ST_PLOTS_S STUDY_VAL ("plots")
 
const STUDY_PREFIX char *ST_NUMBER_OF_PLOTS_S STUDY_VAL ("number_of_plots")
 
const STUDY_PREFIX char *ST_DATA_LINK_S STUDY_CONCAT_VAL (CONTEXT_PREFIX_SCHEMA_ORG_S, "url")
 
const STUDY_PREFIX char *ST_FRICTIONLESS_DATA_LINK_S STUDY_CONCAT_VAL (CONTEXT_PREFIX_SCHEMA_ORG_S, "contentUrl")
 
const STUDY_PREFIX char *ST_HANDBOOK_DATA_LINK_S STUDY_VAL ("handbook")
 
const STUDY_PREFIX char *ST_CURRENT_CROP_S STUDY_VAL ("current_crop")
 
const STUDY_PREFIX char *ST_PREVIOUS_CROP_S STUDY_VAL ("previous_crop")
 
const STUDY_PREFIX char *ST_DESCRIPTION_S STUDY_CONCAT_VAL (CONTEXT_PREFIX_SCHEMA_ORG_S, "description")
 
const STUDY_PREFIX char *ST_DESIGN_S STUDY_VAL ("study_design")
 
const STUDY_PREFIX char *ST_GROWING_CONDITIONS_S STUDY_VAL ("growing_conditions")
 
const STUDY_PREFIX char *ST_PHENOTYPE_GATHERING_NOTES_S STUDY_VAL ("phenotype_gathering_notes")
 
const STUDY_PREFIX char *ST_NUMBER_OF_PLOT_ROWS_S STUDY_VAL ("num_rows")
 
const STUDY_PREFIX char *ST_NUMBER_OF_PLOT_COLUMN_S STUDY_VAL ("num_columns")
 
const STUDY_PREFIX char *ST_NUMBER_OF_REPLICATES_S STUDY_VAL ("num_replicates")
 
const STUDY_PREFIX char *ST_PLOT_LENGTH_S STUDY_VAL ("plot_length")
 
const STUDY_PREFIX char *ST_PLOT_WIDTH_S STUDY_VAL ("plot_width")
 
const STUDY_PREFIX char *ST_WEATHER_S STUDY_VAL ("weather")
 
const STUDY_PREFIX char *ST_SHAPE_S STUDY_VAL ("shape_data")
 
const STUDY_PREFIX char *ST_HAS_SHAPE_S STUDY_VAL ("has_shape_data")
 
const STUDY_PREFIX char *ST_SHAPE_NOTES_S STUDY_VAL ("shape_data_notes")
 
const STUDY_PREFIX char *ST_PLOT_H_GAP_S STUDY_VAL ("plot_horizontal_gap")
 
const STUDY_PREFIX char *ST_PLOT_V_GAP_S STUDY_VAL ("plot_vertical_gap")
 
const STUDY_PREFIX char *ST_PLOT_BLOCK_H_GAP_S STUDY_VAL ("plot_block_horizontal_gap")
 
const STUDY_PREFIX char *ST_PLOT_BLOCK_V_GAP_S STUDY_VAL ("plot_block_vertical_gap")
 
const STUDY_PREFIX char *ST_PLOT_ROWS_PER_BLOCK_S STUDY_VAL ("plot_block_rows")
 
const STUDY_PREFIX char *ST_PLOT_COLS_PER_BLOCK_S STUDY_VAL ("plot_block_columns")
 
const STUDY_PREFIX char *ST_TREATMENTS_S STUDY_VAL ("treatment_factors")
 
const STUDY_PREFIX char *ST_PHENOTYPES_S STUDY_VAL ("phenotypes")
 
const STUDY_PREFIX char *ST_ACCESSIONS_S STUDY_VAL ("accessions")
 
const STUDY_PREFIX char *ST_PHENOTYPE_STATISTICS_S STUDY_VAL ("statistics")
 
const STUDY_PREFIX char *ST_PHENOTYPE_DEFINITION_S STUDY_VAL ("definition")
 
const STUDY_PREFIX char *ST_HARVEST_YEAR_S STUDY_VAL ("harvest_year")
 
const STUDY_PREFIX char *ST_SOWING_YEAR_S STUDY_VAL ("sowing_year")
 
const STUDY_PREFIX char *ST_PLAN_CHANGES_S STUDY_VAL ("plan_changes")
 
const STUDY_PREFIX char *ST_PHYSICAL_SAMPLES_COLLECTED_S STUDY_VAL ("physical_samples_collected")
 
const STUDY_PREFIX char *ST_DATA_NOT_INCLUDED_S STUDY_VAL ("data_not_included")
 
const STUDY_PREFIX char *ST_PHOTO_URL_S STUDY_CONCAT_VAL (CONTEXT_PREFIX_SCHEMA_ORG_S, "image")
 
const STUDY_PREFIX char *ST_IMAGE_COLLECTION_NOTE_S STUDY_VAL ("image_collection_notes")
 
STUDY_PREFIX int32 ST_UNSET_PH STUDY_VAL (-1)
 
StudyAllocateStudy (bson_oid_t *id_p, const char *name_s, const char *data_url_s, const char *aspect_s, const char *slope_s, struct Location *location_p, FieldTrial *parent_field_trial_p, MEM_FLAG parent_field_trial_mem, Crop *current_crop_p, Crop *previous_crop_p, const char *description_s, const char *design_s, const char *growing_conditions_s, const char *phenotype_gathering_notes_s, const uint32 *num_rows_p, const uint32 *num_cols_p, const uint32 *num_replicates_p, const double64 *plot_width_p, const double64 *plot_length_p, const char *weather_s, const json_t *shape_p, const double64 *plot_horizontal_gap_p, const double64 *plot_vertical_gap_p, const uint32 *plot_rows_per_block_p, const uint32 *plot_columns_per_block_p, const double64 *plot_block_horizontal_gap_p, const double64 *plot_block_vertical_gap_p, Person *curator_p, Person *contact_p, const uint32 *sowing_year_p, const uint32 *harvest_year_p, const char *plan_changes_s, const char *physical_samples_collected_s, const char *data_not_included_s, const char *photo_url_s, const char *image_collection_notes_s, const char *gps_notes_s, const FieldTrialServiceData *data_p)
 
void FreeStudy (Study *study_p)
 
StudyNodeAllocateStudyNode (Study *study_p)
 
void FreeStudyNode (ListItem *node_p)
 
json_t * GetStudyAsJSON (Study *study_p, const ViewFormat format, JSONProcessor *processor_p, FieldTrialServiceData *data_p)
 
StudyGetStudyFromJSON (const json_t *json_p, const ViewFormat format, const FieldTrialServiceData *data_p)
 
StudyGetStudyWithParentTrialFromJSON (const json_t *json_p, FieldTrial *parent_trial_p, const ViewFormat format, const FieldTrialServiceData *data_p)
 
bool GetStudyPlots (Study *study_p, const ViewFormat format, FieldTrialServiceData *data_p)
 
OperationStatus SaveStudy (Study *study_p, ServiceJob *job_p, FieldTrialServiceData *data_p, const char *url_key_s)
 
StudyGetStudyByIdString (const char *study_id_s, const ViewFormat format, const FieldTrialServiceData *data_p)
 
StudyGetStudyById (bson_oid_t *st_id_p, const ViewFormat format, const FieldTrialServiceData *data_p)
 
bool HasStudyGotPlotLayoutDetails (const Study *study_p)
 
bool AddPhenotypesToJSON (const Study *study_p, json_t *study_json_p, const ViewFormat format, const FieldTrialServiceData *data_p)
 
bool AddPlotToStudy (Study *study_p, struct Plot *plot_p)
 
int64 GetNumberOfPlotsInStudy (const Study *study_p, const FieldTrialServiceData *data_p)
 
OperationStatus IndexStudy (Study *study_p, ServiceJob *job_p, const char *job_name_s, FieldTrialServiceData *data_p)
 
bool AddStudyContributor (Study *study_p, Person *person_p, MEM_FLAG mf)
 
bool IsMeasuredVariableOnStudy (const Study *const study_p, const char *mv_s)
 
bool AddPhenotypeStatisticsToStudy (Study *const study_p, const char *mv_s, const Statistics *stats_p)
 

Macro Definition Documentation

◆ ST_UNKNOWN_DIRECTION_S

#define ST_UNKNOWN_DIRECTION_S   "Unknown"

The value to specify that the aspect parameter is not set.

Function Documentation

◆ STUDY_CONCAT_VAL() [1/7]

const STUDY_PREFIX char* ST_NAME_S STUDY_CONCAT_VAL ( CONTEXT_PREFIX_SCHEMA_ORG_S  ,
"name"   
)

◆ STUDY_VAL() [1/41]

const STUDY_PREFIX char* ST_LOCATION_ID_S STUDY_VAL ( "address_id"  )

◆ STUDY_VAL() [2/41]

const STUDY_PREFIX char* ST_LOCATION_S STUDY_VAL ( "address"  )

◆ STUDY_VAL() [3/41]

const STUDY_PREFIX char* ST_CONTACT_S STUDY_VAL ( "contact"  )

◆ STUDY_VAL() [4/41]

const STUDY_PREFIX char* ST_CURATOR_S STUDY_VAL ( "curator"  )

◆ STUDY_VAL() [5/41]

const STUDY_PREFIX char* ST_CONTRIBUTORS_S STUDY_VAL ( "contributors"  )

◆ STUDY_CONCAT_VAL() [2/7]

const STUDY_PREFIX char* ST_ASPECT_S STUDY_CONCAT_VAL ( CONTEXT_PREFIX_NCI_THESAUSUS_ONTOLOGY_S  ,
"C42677"   
)

◆ STUDY_CONCAT_VAL() [3/7]

const STUDY_PREFIX char* ST_SLOPE_S STUDY_CONCAT_VAL ( CONTEXT_PREFIX_ENVIRONMENT_ONTOLOGY_S  ,
"00002000"   
)

◆ STUDY_VAL() [6/41]

const STUDY_PREFIX char* ST_PARENT_FIELD_TRIAL_S STUDY_VAL ( "parent_field_trial"  )

◆ STUDY_VAL() [7/41]

const STUDY_PREFIX char* ST_PLOTS_S STUDY_VAL ( "plots"  )

◆ STUDY_VAL() [8/41]

const STUDY_PREFIX char* ST_NUMBER_OF_PLOTS_S STUDY_VAL ( "number_of_plots"  )

◆ STUDY_CONCAT_VAL() [4/7]

const STUDY_PREFIX char* ST_DATA_LINK_S STUDY_CONCAT_VAL ( CONTEXT_PREFIX_SCHEMA_ORG_S  ,
"url"   
)

◆ STUDY_CONCAT_VAL() [5/7]

const STUDY_PREFIX char* ST_FRICTIONLESS_DATA_LINK_S STUDY_CONCAT_VAL ( CONTEXT_PREFIX_SCHEMA_ORG_S  ,
"contentUrl"   
)

◆ STUDY_VAL() [9/41]

const STUDY_PREFIX char* ST_HANDBOOK_DATA_LINK_S STUDY_VAL ( "handbook"  )

◆ STUDY_VAL() [10/41]

const STUDY_PREFIX char* ST_CURRENT_CROP_S STUDY_VAL ( "current_crop"  )

◆ STUDY_VAL() [11/41]

const STUDY_PREFIX char* ST_PREVIOUS_CROP_S STUDY_VAL ( "previous_crop"  )

◆ STUDY_CONCAT_VAL() [6/7]

const STUDY_PREFIX char* ST_DESCRIPTION_S STUDY_CONCAT_VAL ( CONTEXT_PREFIX_SCHEMA_ORG_S  ,
"description"   
)

◆ STUDY_VAL() [12/41]

const STUDY_PREFIX char* ST_DESIGN_S STUDY_VAL ( "study_design"  )

◆ STUDY_VAL() [13/41]

const STUDY_PREFIX char* ST_GROWING_CONDITIONS_S STUDY_VAL ( "growing_conditions"  )

◆ STUDY_VAL() [14/41]

const STUDY_PREFIX char* ST_PHENOTYPE_GATHERING_NOTES_S STUDY_VAL ( "phenotype_gathering_notes"  )

◆ STUDY_VAL() [15/41]

const STUDY_PREFIX char* ST_NUMBER_OF_PLOT_ROWS_S STUDY_VAL ( "num_rows"  )

◆ STUDY_VAL() [16/41]

const STUDY_PREFIX char* ST_NUMBER_OF_PLOT_COLUMN_S STUDY_VAL ( "num_columns"  )

◆ STUDY_VAL() [17/41]

const STUDY_PREFIX char* ST_NUMBER_OF_REPLICATES_S STUDY_VAL ( "num_replicates"  )

◆ STUDY_VAL() [18/41]

const STUDY_PREFIX char* ST_PLOT_LENGTH_S STUDY_VAL ( "plot_length"  )

◆ STUDY_VAL() [19/41]

const STUDY_PREFIX char* ST_PLOT_WIDTH_S STUDY_VAL ( "plot_width"  )

◆ STUDY_VAL() [20/41]

const STUDY_PREFIX char* ST_WEATHER_S STUDY_VAL ( "weather"  )

◆ STUDY_VAL() [21/41]

const STUDY_PREFIX char* ST_SHAPE_S STUDY_VAL ( "shape_data"  )

◆ STUDY_VAL() [22/41]

const STUDY_PREFIX char* ST_HAS_SHAPE_S STUDY_VAL ( "has_shape_data"  )

◆ STUDY_VAL() [23/41]

const STUDY_PREFIX char* ST_SHAPE_NOTES_S STUDY_VAL ( "shape_data_notes"  )

◆ STUDY_VAL() [24/41]

const STUDY_PREFIX char* ST_PLOT_H_GAP_S STUDY_VAL ( "plot_horizontal_gap"  )

◆ STUDY_VAL() [25/41]

const STUDY_PREFIX char* ST_PLOT_V_GAP_S STUDY_VAL ( "plot_vertical_gap"  )

◆ STUDY_VAL() [26/41]

const STUDY_PREFIX char* ST_PLOT_BLOCK_H_GAP_S STUDY_VAL ( "plot_block_horizontal_gap"  )

◆ STUDY_VAL() [27/41]

const STUDY_PREFIX char* ST_PLOT_BLOCK_V_GAP_S STUDY_VAL ( "plot_block_vertical_gap"  )

◆ STUDY_VAL() [28/41]

const STUDY_PREFIX char* ST_PLOT_ROWS_PER_BLOCK_S STUDY_VAL ( "plot_block_rows"  )

◆ STUDY_VAL() [29/41]

const STUDY_PREFIX char* ST_PLOT_COLS_PER_BLOCK_S STUDY_VAL ( "plot_block_columns"  )

◆ STUDY_VAL() [30/41]

const STUDY_PREFIX char* ST_TREATMENTS_S STUDY_VAL ( "treatment_factors"  )

◆ STUDY_VAL() [31/41]

const STUDY_PREFIX char* ST_PHENOTYPES_S STUDY_VAL ( "phenotypes"  )

◆ STUDY_VAL() [32/41]

const STUDY_PREFIX char* ST_ACCESSIONS_S STUDY_VAL ( "accessions"  )

◆ STUDY_VAL() [33/41]

const STUDY_PREFIX char* ST_PHENOTYPE_STATISTICS_S STUDY_VAL ( "statistics"  )

◆ STUDY_VAL() [34/41]

const STUDY_PREFIX char* ST_PHENOTYPE_DEFINITION_S STUDY_VAL ( "definition"  )

◆ STUDY_VAL() [35/41]

const STUDY_PREFIX char* ST_HARVEST_YEAR_S STUDY_VAL ( "harvest_year"  )

◆ STUDY_VAL() [36/41]

const STUDY_PREFIX char* ST_SOWING_YEAR_S STUDY_VAL ( "sowing_year"  )

◆ STUDY_VAL() [37/41]

const STUDY_PREFIX char* ST_PLAN_CHANGES_S STUDY_VAL ( "plan_changes"  )

◆ STUDY_VAL() [38/41]

const STUDY_PREFIX char* ST_PHYSICAL_SAMPLES_COLLECTED_S STUDY_VAL ( "physical_samples_collected"  )

◆ STUDY_VAL() [39/41]

const STUDY_PREFIX char* ST_DATA_NOT_INCLUDED_S STUDY_VAL ( "data_not_included"  )

◆ STUDY_CONCAT_VAL() [7/7]

const STUDY_PREFIX char* ST_PHOTO_URL_S STUDY_CONCAT_VAL ( CONTEXT_PREFIX_SCHEMA_ORG_S  ,
"image"   
)

◆ STUDY_VAL() [40/41]

const STUDY_PREFIX char* ST_IMAGE_COLLECTION_NOTE_S STUDY_VAL ( "image_collection_notes"  )

◆ STUDY_VAL() [41/41]

STUDY_PREFIX int32 ST_UNSET_PH STUDY_VAL ( 1)

◆ AllocateStudy()

Study* AllocateStudy ( bson_oid_t *  id_p,
const char *  name_s,
const char *  data_url_s,
const char *  aspect_s,
const char *  slope_s,
struct Location location_p,
FieldTrial parent_field_trial_p,
MEM_FLAG  parent_field_trial_mem,
Crop current_crop_p,
Crop previous_crop_p,
const char *  description_s,
const char *  design_s,
const char *  growing_conditions_s,
const char *  phenotype_gathering_notes_s,
const uint32 *  num_rows_p,
const uint32 *  num_cols_p,
const uint32 *  num_replicates_p,
const double64 *  plot_width_p,
const double64 *  plot_length_p,
const char *  weather_s,
const json_t *  shape_p,
const double64 *  plot_horizontal_gap_p,
const double64 *  plot_vertical_gap_p,
const uint32 *  plot_rows_per_block_p,
const uint32 *  plot_columns_per_block_p,
const double64 *  plot_block_horizontal_gap_p,
const double64 *  plot_block_vertical_gap_p,
Person curator_p,
Person contact_p,
const uint32 *  sowing_year_p,
const uint32 *  harvest_year_p,
const char *  plan_changes_s,
const char *  physical_samples_collected_s,
const char *  data_not_included_s,
const char *  photo_url_s,
const char *  image_collection_notes_s,
const char *  gps_notes_s,
const FieldTrialServiceData data_p 
)

◆ FreeStudy()

void FreeStudy ( Study study_p)

◆ AllocateStudyNode()

StudyNode* AllocateStudyNode ( Study study_p)

◆ FreeStudyNode()

void FreeStudyNode ( ListItem node_p)

◆ GetStudyAsJSON()

json_t* GetStudyAsJSON ( Study study_p,
const ViewFormat  format,
JSONProcessor processor_p,
FieldTrialServiceData data_p 
)

◆ GetStudyFromJSON()

Study* GetStudyFromJSON ( const json_t *  json_p,
const ViewFormat  format,
const FieldTrialServiceData data_p 
)

◆ GetStudyWithParentTrialFromJSON()

Study* GetStudyWithParentTrialFromJSON ( const json_t *  json_p,
FieldTrial parent_trial_p,
const ViewFormat  format,
const FieldTrialServiceData data_p 
)

◆ GetStudyPlots()

bool GetStudyPlots ( Study study_p,
const ViewFormat  format,
FieldTrialServiceData data_p 
)

◆ SaveStudy()

OperationStatus SaveStudy ( Study study_p,
ServiceJob job_p,
FieldTrialServiceData data_p,
const char *  url_key_s 
)

◆ GetStudyByIdString()

Study* GetStudyByIdString ( const char *  study_id_s,
const ViewFormat  format,
const FieldTrialServiceData data_p 
)

◆ GetStudyById()

Study* GetStudyById ( bson_oid_t *  st_id_p,
const ViewFormat  format,
const FieldTrialServiceData data_p 
)

◆ HasStudyGotPlotLayoutDetails()

bool HasStudyGotPlotLayoutDetails ( const Study study_p)

◆ AddPhenotypesToJSON()

bool AddPhenotypesToJSON ( const Study study_p,
json_t *  study_json_p,
const ViewFormat  format,
const FieldTrialServiceData data_p 
)

◆ AddPlotToStudy()

bool AddPlotToStudy ( Study study_p,
struct Plot plot_p 
)

◆ GetNumberOfPlotsInStudy()

int64 GetNumberOfPlotsInStudy ( const Study study_p,
const FieldTrialServiceData data_p 
)

◆ IndexStudy()

OperationStatus IndexStudy ( Study study_p,
ServiceJob job_p,
const char *  job_name_s,
FieldTrialServiceData data_p 
)

◆ AddStudyContributor()

bool AddStudyContributor ( Study study_p,
Person person_p,
MEM_FLAG  mf 
)

◆ IsMeasuredVariableOnStudy()

bool IsMeasuredVariableOnStudy ( const Study *const  study_p,
const char *  mv_s 
)

◆ AddPhenotypeStatisticsToStudy()

bool AddPhenotypeStatisticsToStudy ( Study *const  study_p,
const char *  mv_s,
const Statistics stats_p 
)