Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 10 additions & 1 deletion .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
},
"metadata": {
"description": "Skills for grounding environmental and biological research terms to ontologies and extracting variables from ESS-DIVE",
"version": "0.2.3"
"version": "0.2.4"
},
"plugins": [
{
Expand Down Expand Up @@ -35,6 +35,15 @@
"skills": [
"./skills/essdive-search"
]
},
{
"name": "try-skills",
"description": "Skills for discovering datasets, traits, and species information from the TRY plant trait database",
"source": "./",
"strict": false,
"skills": [
"./skills/try-skills"
]
}
]
}
22 changes: 22 additions & 0 deletions bioepic_skills/test/test_try_parser.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
from bioepic_skills.try_parser import parse_try_species_text


def test_parse_try_species_text():
sample = (
"AccSpeciesID\tAccSpeciesName\tObsNum\tObsGRNum\tMeasNum\tMeasGRNum\tTraitNum\n"
"271060\tAa achalensis\t5\t\t5\t\t3\n"
"200002\tAa argyrolepis\t7\t\t9\t\t3\n"
)

records = parse_try_species_text(sample)

assert len(records) == 2
assert records[0].acc_species_id == 271060
assert records[0].acc_species_name == "Aa achalensis"
assert records[0].obs_num == 5
assert records[0].obs_gr_num is None
assert records[0].meas_num == 5
assert records[0].meas_gr_num is None
assert records[0].trait_num == 3
assert records[0].pub_num is None
assert records[0].acc_spec_num is None
18 changes: 18 additions & 0 deletions bioepic_skills/test/test_try_parser_datasets.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
from bioepic_skills.try_parser import parse_try_datasets_html_with_header


def test_parse_try_datasets_html_with_header():
html = """
<table>
<tr><th>DatasetID</th><th>Dataset</th><th>Description</th></tr>
<tr><td>1</td><td>Example</td><td>Example dataset</td></tr>
<tr><td>2</td><td>Second</td><td>Another dataset</td></tr>
</table>
"""

header, records = parse_try_datasets_html_with_header(html)

assert header == ["DatasetID", "Dataset", "Description"]
assert len(records) == 2
assert records[0]["DatasetID"] == "1"
assert records[0]["Dataset"] == "Example"
34 changes: 34 additions & 0 deletions bioepic_skills/test/test_try_parser_datasets_entries.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
from bioepic_skills.try_parser import parse_try_dataset_entries_html


def test_parse_try_dataset_entries_html():
html = """
<table>
<tr><td><b>Title: </b></td><td>TRY - Categorical Traits Dataset</td></tr>
<tr><td><b>TRY File Archive ID: </b></td><td>3</td></tr>
<tr><td><b>Rights of use: </b></td><td>Public, CC.BY.3.0</td></tr>
<tr><td><b>Publication Date: </b></td><td>2012-03-19</td></tr>
<tr><td><b>Version: </b></td><td>1.0</td></tr>
<tr><td><b>Author: </b></td><td>Jens Kattge</td></tr>
<tr><td><b>Contributors: </b></td><td>TRY Consortium</td></tr>
<tr><td><b>Reference to publication: </b></td><td>TRY - a global database</td></tr>
<tr><td><b>Reference to data package: </b></td><td>TRY File Archive</td></tr>
<tr><td><b>DOI: </b></td><td>10.17871/TRY.3</td></tr>
<tr><td><b>Format: </b></td><td>Zipped archive</td></tr>
<tr><td><b>File name: </b></td><td>TRY_Categorical_Traits.zip</td></tr>
<tr><td><b>Description: </b></td><td>Categorical traits</td></tr>
<tr><td><b>Geolocation: </b></td><td>Global</td></tr>
<tr><td><b>Temporal coverage: </b></td><td>Holocene</td></tr>
<tr><td><b>Taxonomic coverage: </b></td><td>terrestrial vascular plants</td></tr>
<tr><td><b>Field list: </b></td><td>AccSpeciesID, AccSpeciesName, Genus</td></tr>
</table>
"""

entries = parse_try_dataset_entries_html(html)

assert len(entries) == 1
entry = entries[0]
assert entry.title == "TRY - Categorical Traits Dataset"
assert entry.try_file_archive_id == "3"
assert entry.doi == "10.17871/TRY.3"
assert entry.field_list == ["AccSpeciesID", "AccSpeciesName", "Genus"]
8 changes: 8 additions & 0 deletions bioepic_skills/test/test_try_parser_species_list.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
from bioepic_skills.try_parser import parse_try_species_list_text


def test_parse_try_species_list_text():
sample = "\nAa achalensis\n\nAa argyrolepis\n"
species = parse_try_species_list_text(sample)

assert species == ["Aa achalensis", "Aa argyrolepis"]
29 changes: 29 additions & 0 deletions bioepic_skills/test/test_try_parser_traits.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
from bioepic_skills.try_parser import parse_try_traits_html


def test_parse_try_traits_html():
html = """
<table>
<tr>
<th>TraitID</th><th>Trait</th><th>ObsNum</th><th>ObsGRNum</th><th>PubNum</th><th>AccSpecNum</th>
</tr>
<tr>
<td>2957</td><td>Bark calcium (Ca) content per bark dry mass</td>
<td>30</td><td>30</td><td>30</td><td>5</td>
</tr>
<tr>
<td>617</td><td>Bark carbon (C) content per bark dry mass</td>
<td>772</td><td>534</td><td>772</td><td>274</td>
</tr>
</table>
"""

records = parse_try_traits_html(html)

assert len(records) == 2
assert records[0].trait_id == 2957
assert records[0].trait.startswith("Bark calcium")
assert records[0].obs_num == 30
assert records[0].obs_gr_num == 30
assert records[0].pub_num == 30
assert records[0].acc_spec_num == 5
Loading
Loading