def add_concepticon_names( dataset: pycldf.Wordlist, column_name: str = "Concepticon_Gloss", ): # Create a concepticonReference column try: dataset.add_columns("ParameterTable", column_name) dataset.write_metadata() except ValueError: pass write_back = [] for row in cli.tq( dataset["ParameterTable"], task="Write concepts with concepticon names to dataset", ): try: row[column_name] = concepticon.api.conceptsets[row[ dataset.column_names.parameters.concepticonReference]].gloss except KeyError: pass write_back.append(row) dataset.write(ParameterTable=write_back)
def reshape_dataset(dataset: pycldf.Wordlist, add_column: bool = True) -> pycldf.Dataset: # check for existing cognateset table if dataset.column_names.cognatesets is None: # Create a Cognateset Table dataset.add_component("CognatesetTable") # add a concept column to the cognateset table if add_column: if dataset.column_names.cognatesets.parameterReference is None: dataset.add_columns("CognatesetTable", "Core_Concept_ID") c = dataset["CognatesetTable"].tableSchema.columns[-1] c.datatype = dataset["ParameterTable", "ID"].datatype c.propertyUrl = URITemplate( "http://cldf.clld.org/v1.0/terms.rdf#parameterReference") fname = dataset.write_metadata() # Reload dataset with new column definitions dataset = pycldf.Wordlist.from_metadata(fname) return dataset