From 84dfc80af18484773a03d84f7e0796b5877236a6 Mon Sep 17 00:00:00 2001
From: "marcin p. joachimiak" <4625870+realmarcin@users.noreply.github.com>
Date: Mon, 14 Sep 2026 17:51:38 -0700
Subject: [PATCH 01/11] fix: bind graph source claims to generation receipts
Refs #917; full verified graph regeneration remains tracked separately.
---
pages/graph.html | 10 +-
pages/index.html | 4 +-
pages/traits/ecology/animal_pathogen.html | 4 +-
pages/traits/ecology/biofilm_formation.html | 4 +-
pages/traits/ecology/biosafety_level.html | 4 +-
pages/traits/ecology/biosafety_level_1.html | 4 +-
pages/traits/ecology/biosafety_level_2.html | 4 +-
pages/traits/ecology/biosafety_level_3.html | 4 +-
pages/traits/ecology/biosafety_level_4.html | 4 +-
pages/traits/ecology/biosafety_level_5.html | 4 +-
pages/traits/ecology/commensalism.html | 4 +-
pages/traits/ecology/endosymbiosis.html | 4 +-
pages/traits/ecology/free_living.html | 4 +-
pages/traits/ecology/gut_associated.html | 4 +-
pages/traits/ecology/habitat_association.html | 4 +-
pages/traits/ecology/host_associated.html | 4 +-
pages/traits/ecology/human_pathogen.html | 4 +-
pages/traits/ecology/mutualism.html | 4 +-
.../ecology/nitrogen_fixing_symbiosis.html | 4 +-
.../ecology/opportunistic_pathogen.html | 4 +-
pages/traits/ecology/parasitism.html | 4 +-
pages/traits/ecology/pathogenic_to_host.html | 4 +-
pages/traits/ecology/plant_pathogen.html | 4 +-
pages/traits/ecology/predatory_bacterium.html | 4 +-
.../ecology/rhizosphere_association.html | 4 +-
pages/traits/ecology/saprotrophy.html | 4 +-
pages/traits/ecology/soil_dwelling.html | 4 +-
pages/traits/ecology/symbiosis.html | 4 +-
pages/traits/environment/acidophilic.html | 4 +-
pages/traits/environment/acidotolerant.html | 4 +-
pages/traits/environment/aerobic.html | 4 +-
pages/traits/environment/aerotolerant.html | 4 +-
pages/traits/environment/alkalotolerant.html | 4 +-
pages/traits/environment/alkaphilic.html | 4 +-
pages/traits/environment/anaerobic.html | 4 +-
.../traits/environment/arsenic_tolerant.html | 4 +-
.../traits/environment/cadmium_tolerant.html | 4 +-
pages/traits/environment/capnophilic.html | 2 +-
pages/traits/environment/cobalt_tolerant.html | 4 +-
pages/traits/environment/copper_tolerant.html | 4 +-
...delta_phenotype_with_numerical_limits.html | 4 +-
.../environment/desiccation_tolerant.html | 4 +-
pages/traits/environment/euryhaline.html | 4 +-
.../extreme_hyperthermophilic.html | 4 +-
.../environment/extremely_halophilic.html | 4 +-
.../facultative_oxygen_preference.html | 4 +-
.../facultative_psychrophilic.html | 4 +-
.../facultatively_acidophilic.html | 4 +-
.../environment/facultatively_aerobic.html | 4 +-
.../environment/facultatively_alkaphilic.html | 4 +-
.../environment/facultatively_anaerobic.html | 4 +-
...range_phenotype_with_numerical_limits.html | 4 +-
.../traits/environment/haloalkaliphilic.html | 4 +-
pages/traits/environment/halophilic.html | 4 +-
.../environment/halophily_preference.html | 4 +-
pages/traits/environment/halotolerant.html | 4 +-
.../traits/environment/hyperthermophilic.html | 4 +-
.../ionizing_radiation_tolerant.html | 4 +-
.../traits/environment/mercury_tolerant.html | 4 +-
pages/traits/environment/mesophilic.html | 4 +-
pages/traits/environment/metal_tolerant.html | 4 +-
pages/traits/environment/microaerophilic.html | 4 +-
.../traits/environment/microaerotolerant.html | 4 +-
.../environment/moderately_halophilic.html | 4 +-
pages/traits/environment/nacl_delta.html | 4 +-
pages/traits/environment/nacl_delta_high.html | 4 +-
pages/traits/environment/nacl_delta_low.html | 4 +-
pages/traits/environment/nacl_delta_mid1.html | 4 +-
pages/traits/environment/nacl_delta_mid2.html | 4 +-
pages/traits/environment/nacl_optimum.html | 4 +-
.../traits/environment/nacl_optimum_high.html | 4 +-
.../traits/environment/nacl_optimum_low.html | 4 +-
.../traits/environment/nacl_optimum_mid1.html | 4 +-
.../traits/environment/nacl_optimum_mid2.html | 4 +-
pages/traits/environment/nacl_range.html | 4 +-
pages/traits/environment/nacl_range_high.html | 4 +-
pages/traits/environment/nacl_range_low.html | 4 +-
pages/traits/environment/nacl_range_mid1.html | 4 +-
pages/traits/environment/nacl_range_mid2.html | 4 +-
pages/traits/environment/neutrophilic.html | 4 +-
pages/traits/environment/non_halophilic.html | 4 +-
.../environment/obligately_acidophilic.html | 4 +-
.../environment/obligately_aerobic.html | 4 +-
.../environment/obligately_alkaphilic.html | 4 +-
.../environment/obligately_anaerobic.html | 4 +-
.../environment/obligately_piezophilic.html | 4 +-
...timum_phenotype_with_numerical_limits.html | 4 +-
.../traits/environment/oxygen_preference.html | 4 +-
pages/traits/environment/ph_delta.html | 4 +-
pages/traits/environment/ph_delta_high.html | 4 +-
pages/traits/environment/ph_delta_low.html | 4 +-
pages/traits/environment/ph_delta_mid1.html | 4 +-
pages/traits/environment/ph_delta_mid2.html | 4 +-
pages/traits/environment/ph_delta_mid3.html | 4 +-
.../traits/environment/ph_delta_very_low.html | 4 +-
.../environment/ph_growth_preference.html | 4 +-
pages/traits/environment/ph_optimum.html | 4 +-
pages/traits/environment/ph_optimum_high.html | 4 +-
pages/traits/environment/ph_optimum_low.html | 4 +-
pages/traits/environment/ph_optimum_mid1.html | 4 +-
pages/traits/environment/ph_optimum_mid2.html | 4 +-
.../ph_phenotype_with_numerical_limits.html | 4 +-
pages/traits/environment/ph_range.html | 4 +-
pages/traits/environment/ph_range_high.html | 4 +-
pages/traits/environment/ph_range_low.html | 4 +-
pages/traits/environment/ph_range_mid1.html | 4 +-
pages/traits/environment/ph_range_mid2.html | 4 +-
pages/traits/environment/ph_range_mid3.html | 4 +-
.../traits/environment/ph_range_very_low.html | 4 +-
pages/traits/environment/piezophilic.html | 4 +-
pages/traits/environment/piezotolerant.html | 4 +-
pages/traits/environment/pressure_delta.html | 4 +-
.../traits/environment/pressure_optimum.html | 4 +-
pages/traits/environment/pressure_range.html | 4 +-
pages/traits/environment/psychrophilic.html | 4 +-
pages/traits/environment/psychrotolerant.html | 4 +-
pages/traits/environment/radiotolerant.html | 4 +-
...inity_phenotype_with_numerical_limits.html | 4 +-
.../environment/slightly_halophilic.html | 4 +-
pages/traits/environment/stenohaline.html | 4 +-
.../environment/strictly_anaerobic.html | 4 +-
.../traits/environment/temperature_delta.html | 4 +-
.../environment/temperature_delta_high.html | 4 +-
.../environment/temperature_delta_low.html | 4 +-
.../environment/temperature_delta_mid1.html | 4 +-
.../environment/temperature_delta_mid2.html | 4 +-
.../temperature_delta_very_low.html | 4 +-
.../environment/temperature_optimum.html | 4 +-
.../environment/temperature_optimum_high.html | 4 +-
.../environment/temperature_optimum_low.html | 4 +-
.../environment/temperature_optimum_mid1.html | 4 +-
.../environment/temperature_optimum_mid2.html | 4 +-
.../environment/temperature_optimum_mid3.html | 4 +-
.../environment/temperature_optimum_mid4.html | 4 +-
.../temperature_optimum_very_low.html | 4 +-
...ature_phenotype_with_numerical_limits.html | 4 +-
.../environment/temperature_preference.html | 4 +-
.../traits/environment/temperature_range.html | 4 +-
.../environment/temperature_range_high.html | 4 +-
.../environment/temperature_range_low.html | 4 +-
.../environment/temperature_range_mid1.html | 4 +-
.../environment/temperature_range_mid2.html | 4 +-
.../environment/temperature_range_mid3.html | 4 +-
.../environment/temperature_range_mid4.html | 4 +-
.../temperature_range_very_low.html | 4 +-
pages/traits/environment/thermophilic.html | 4 +-
pages/traits/environment/thermotolerant.html | 4 +-
.../environment/uv_radiation_tolerant.html | 4 +-
pages/traits/environment/xerophilic.html | 4 +-
pages/traits/environment/zinc_tolerant.html | 4 +-
pages/traits/genomics/codon_usage_bias.html | 4 +-
pages/traits/genomics/crispr_cas_system.html | 4 +-
pages/traits/genomics/gc_content.html | 4 +-
pages/traits/genomics/gc_high.html | 4 +-
pages/traits/genomics/gc_low.html | 4 +-
pages/traits/genomics/gc_mid1.html | 4 +-
pages/traits/genomics/gc_mid2.html | 4 +-
pages/traits/genomics/gc_skew.html | 4 +-
pages/traits/genomics/genome_size.html | 4 +-
.../traits/genomics/genome_streamlining.html | 4 +-
pages/traits/genomics/genomic_island.html | 4 +-
.../genomics/mobile_genetic_element.html | 4 +-
pages/traits/genomics/pangenome_openness.html | 4 +-
pages/traits/genomics/plasmid_carriage.html | 4 +-
pages/traits/genomics/ploidy.html | 4 +-
pages/traits/genomics/prophage.html | 4 +-
.../restriction_modification_system.html | 4 +-
.../genomics/rrna_operon_copy_number.html | 4 +-
.../traits/genomics/transposable_element.html | 4 +-
pages/traits/metabolism/accumulates.html | 4 +-
.../acetoclastic_methanogenesis.html | 2 +-
pages/traits/metabolism/acetogenesis.html | 4 +-
.../acetone_butanol_ethanol_fermentation.html | 2 +-
.../metabolism/aerobic_respiration.html | 4 +-
.../anaerobic_ammonium_oxidation.html | 2 +-
.../anaerobic_oxidation_of_methane.html | 4 +-
.../metabolism/anaerobic_respiration.html | 4 +-
.../metabolism/anoxygenic_photosynthesis.html | 4 +-
.../aromatic_compound_degradation.html | 2 +-
.../aromatic_hydrocarbon_degradation.html | 2 +-
.../metabolism/arsenate_respiration.html | 2 +-
.../traits/metabolism/arsenite_oxidation.html | 2 +-
pages/traits/metabolism/assimilates.html | 4 +-
.../metabolism/biopolymer_degradation.html | 4 +-
pages/traits/metabolism/builds_acid_from.html | 4 +-
pages/traits/metabolism/builds_base_from.html | 4 +-
pages/traits/metabolism/builds_gas_from.html | 4 +-
.../metabolism/butanediol_fermentation.html | 2 +-
.../metabolism/butyric_acid_fermentation.html | 2 +-
.../metabolism/cable_bacteria_metabolism.html | 4 +-
.../calvin_benson_bassham_cycle.html | 4 +-
pages/traits/metabolism/capable_of.html | 4 +-
pages/traits/metabolism/carbon_fixation.html | 4 +-
pages/traits/metabolism/cellulolysis.html | 4 +-
pages/traits/metabolism/chitinolysis.html | 4 +-
.../metabolism/citrate_fermentation.html | 2 +-
.../traits/metabolism/compartmentalizes.html | 4 +-
.../complete_ammonia_oxidation.html | 2 +-
.../metabolism/dark_hydrogen_oxidation.html | 2 +-
.../dark_oxidation_of_sulfur_compounds.html | 2 +-
pages/traits/metabolism/degrades.html | 4 +-
pages/traits/metabolism/denitrification.html | 4 +-
...arboxylate_four_hydroxybutyrate_cycle.html | 4 +-
.../traits/metabolism/disproportionates.html | 4 +-
.../traits/metabolism/disproportionation.html | 4 +-
.../dissimilatory_iron_reduction.html | 4 +-
.../dissimilatory_manganese_reduction.html | 4 +-
.../dissimilatory_metal_reduction.html | 4 +-
...ilatory_nitrate_reduction_to_ammonium.html | 4 +-
.../dissimilatory_sulfate_reduction.html | 4 +-
.../metabolism/does_not_accumulate.html | 4 +-
.../metabolism/does_not_assimilate.html | 4 +-
.../metabolism/does_not_build_acid_from.html | 4 +-
.../metabolism/does_not_build_base_from.html | 4 +-
.../metabolism/does_not_build_gas_from.html | 4 +-
.../metabolism/does_not_compartmentalize.html | 4 +-
pages/traits/metabolism/does_not_degrade.html | 4 +-
.../metabolism/does_not_disproportionate.html | 4 +-
pages/traits/metabolism/does_not_export.html | 4 +-
pages/traits/metabolism/does_not_ferment.html | 4 +-
.../traits/metabolism/does_not_hydrolyze.html | 4 +-
pages/traits/metabolism/does_not_import.html | 4 +-
pages/traits/metabolism/does_not_oxidize.html | 4 +-
pages/traits/metabolism/does_not_produce.html | 4 +-
pages/traits/metabolism/does_not_reduce.html | 4 +-
.../traits/metabolism/does_not_sequester.html | 4 +-
.../metabolism/does_not_show_activity_of.html | 4 +-
.../traits/metabolism/does_not_transport.html | 4 +-
.../does_not_use_as_carbon_source.html | 4 +-
.../does_not_use_as_electron_acceptor.html | 4 +-
.../does_not_use_as_electron_donor.html | 4 +-
.../does_not_use_as_energy_source.html | 4 +-
.../does_not_use_as_nitrogen_source.html | 4 +-
.../does_not_use_as_sulfur_source.html | 4 +-
...es_not_use_for_aerobic_catabolization.html | 4 +-
.../does_not_use_for_aerobic_growth.html | 4 +-
..._not_use_for_anaerobic_catabolization.html | 4 +-
.../does_not_use_for_anaerobic_growth.html | 4 +-
..._use_for_anaerobic_growth_in_the_dark.html | 4 +-
...t_use_for_anaerobic_growth_with_light.html | 4 +-
.../metabolism/does_not_use_for_growth.html | 4 +-
.../does_not_use_for_respiration.html | 4 +-
.../metabolism/does_not_use_in_other_way.html | 4 +-
.../traits/metabolism/electron_transfer.html | 4 +-
.../metabolism/enzyme_activity_analyzed.html | 4 +-
.../metabolism/ethanol_fermentation.html | 4 +-
pages/traits/metabolism/exports.html | 4 +-
pages/traits/metabolism/fermentation.html | 4 +-
.../fermentative_hydrogen_production.html | 4 +-
pages/traits/metabolism/ferments.html | 4 +-
.../has_growth_nacl_observation.html | 4 +-
.../has_growth_oxygen_observation.html | 4 +-
.../metabolism/has_growth_ph_observation.html | 4 +-
.../has_growth_temperature_observation.html | 4 +-
.../has_nacl_delta_observation.html | 4 +-
.../metabolism/has_nacl_observation.html | 4 +-
pages/traits/metabolism/has_observation.html | 4 +-
.../has_optimum_nacl_observation.html | 4 +-
.../has_optimum_oxygen_observation.html | 4 +-
.../has_optimum_ph_observation.html | 4 +-
.../has_optimum_temperature_observation.html | 4 +-
.../has_oxygen_delta_observation.html | 4 +-
.../metabolism/has_oxygen_observation.html | 4 +-
.../metabolism/has_ph_delta_observation.html | 4 +-
.../traits/metabolism/has_ph_observation.html | 4 +-
pages/traits/metabolism/has_phenotype.html | 4 +-
pages/traits/metabolism/has_quality.html | 4 +-
.../has_range_nacl_observation.html | 4 +-
.../has_range_oxygen_observation.html | 4 +-
.../metabolism/has_range_ph_observation.html | 4 +-
.../has_range_temperature_observation.html | 4 +-
.../has_temperature_delta_observation.html | 4 +-
.../has_temperature_observation.html | 4 +-
pages/traits/metabolism/homoacetogenesis.html | 4 +-
.../metabolism/hydrocarbon_degradation.html | 2 +-
.../hydrogenotrophic_methanogenesis.html | 2 +-
pages/traits/metabolism/hydrolyzes.html | 4 +-
pages/traits/metabolism/imports.html | 4 +-
pages/traits/metabolism/iron_oxidation.html | 4 +-
.../is_not_required_for_growth.html | 4 +-
.../metabolism/lactic_acid_fermentation.html | 4 +-
.../traits/metabolism/lignin_degradation.html | 4 +-
pages/traits/metabolism/lipolysis.html | 2 +-
.../metabolism/manganese_oxidation.html | 4 +-
pages/traits/metabolism/metabolism.html | 4 +-
pages/traits/metabolism/methanogenesis.html | 4 +-
.../traits/metabolism/methanol_oxidation.html | 2 +-
.../methyl_based_methanogenesis.html | 2 +-
.../metabolism/mixed_acid_fermentation.html | 4 +-
.../traits/metabolism/nitrate_reduction.html | 2 +-
.../metabolism/nitrate_respiration.html | 2 +-
pages/traits/metabolism/nitrification.html | 2 +-
.../metabolism/nitrite_respiration.html | 2 +-
.../traits/metabolism/nitrogen_fixation.html | 4 +-
.../metabolism/nitrogen_respiration.html | 2 +-
.../organism_interacts_with_chemical.html | 4 +-
.../metabolism/oxidative_phosphorylation.html | 4 +-
pages/traits/metabolism/oxidizes.html | 4 +-
.../metabolism/oxygenic_photosynthesis.html | 4 +-
.../traits/metabolism/pectin_degradation.html | 2 +-
pages/traits/metabolism/photoferrotrophy.html | 2 +-
pages/traits/metabolism/photosynthesis.html | 4 +-
pages/traits/metabolism/phototrophy.html | 4 +-
pages/traits/metabolism/produces.html | 4 +-
.../propionic_acid_fermentation.html | 4 +-
pages/traits/metabolism/proteolysis.html | 4 +-
.../proteorhodopsin_phototrophy.html | 4 +-
pages/traits/metabolism/reduces.html | 4 +-
.../metabolism/reductive_tca_cycle.html | 4 +-
.../metabolism/requires_for_growth.html | 4 +-
pages/traits/metabolism/respiration.html | 4 +-
.../respiration_of_sulfur_compounds.html | 2 +-
pages/traits/metabolism/sequesters.html | 4 +-
.../traits/metabolism/shows_activity_of.html | 4 +-
.../traits/metabolism/starch_degradation.html | 4 +-
.../substrate_level_phosphorylation.html | 4 +-
pages/traits/metabolism/sulfur_oxidation.html | 4 +-
.../traits/metabolism/sulfur_respiration.html | 2 +-
pages/traits/metabolism/syntrophy.html | 4 +-
.../metabolism/thiosulfate_respiration.html | 2 +-
.../three_hydroxypropionate_bicycle.html | 4 +-
...propionate_four_hydroxybutyrate_cycle.html | 4 +-
pages/traits/metabolism/transports.html | 4 +-
.../metabolism/uses_as_carbon_source.html | 4 +-
.../metabolism/uses_as_electron_acceptor.html | 4 +-
.../metabolism/uses_as_electron_donor.html | 4 +-
.../metabolism/uses_as_energy_source.html | 4 +-
.../metabolism/uses_as_nitrogen_source.html | 4 +-
.../metabolism/uses_as_sulfur_source.html | 4 +-
.../uses_for_aerobic_catabolization.html | 4 +-
.../metabolism/uses_for_aerobic_growth.html | 4 +-
.../uses_for_anaerobic_catabolization.html | 4 +-
.../metabolism/uses_for_anaerobic_growth.html | 4 +-
...uses_for_anaerobic_growth_in_the_dark.html | 4 +-
.../uses_for_anaerobic_growth_with_light.html | 4 +-
pages/traits/metabolism/uses_for_growth.html | 4 +-
.../metabolism/uses_for_respiration.html | 4 +-
.../traits/metabolism/uses_in_other_way.html | 4 +-
.../metabolism/wood_ljungdahl_pathway.html | 4 +-
.../traits/metabolism/xylan_degradation.html | 4 +-
pages/traits/morphology/akinete.html | 2 +-
pages/traits/morphology/amphitrichous.html | 4 +-
.../traits/morphology/axially_filamented.html | 4 +-
pages/traits/morphology/bacillus_shaped.html | 4 +-
pages/traits/morphology/black_pigmented.html | 4 +-
pages/traits/morphology/branched_shaped.html | 4 +-
pages/traits/morphology/brown_pigmented.html | 4 +-
pages/traits/morphology/capsule.html | 4 +-
pages/traits/morphology/carboxysome.html | 4 +-
.../morphology/carotenoid_pigmentation.html | 4 +-
pages/traits/morphology/cell_length.html | 4 +-
.../traits/morphology/cell_length_large.html | 4 +-
.../traits/morphology/cell_length_medium.html | 4 +-
.../traits/morphology/cell_length_small.html | 4 +-
.../morphology/cell_length_very_small.html | 4 +-
pages/traits/morphology/cell_shape.html | 4 +-
pages/traits/morphology/cell_width.html | 4 +-
pages/traits/morphology/cell_width_large.html | 4 +-
.../traits/morphology/cell_width_medium.html | 4 +-
pages/traits/morphology/cell_width_small.html | 4 +-
.../morphology/cell_width_very_small.html | 4 +-
.../morphology/coccobacillus_shaped.html | 4 +-
pages/traits/morphology/coccus_shaped.html | 4 +-
pages/traits/morphology/cream_pigmented.html | 4 +-
pages/traits/morphology/crescent_shaped.html | 4 +-
pages/traits/morphology/curved_shaped.html | 4 +-
.../traits/morphology/diplococcus_shaped.html | 4 +-
pages/traits/morphology/disc_shaped.html | 4 +-
pages/traits/morphology/dumbbell_shaped.html | 4 +-
pages/traits/morphology/ellipsoidal.html | 4 +-
pages/traits/morphology/filament_shaped.html | 4 +-
.../morphology/flagellar_arrangement.html | 4 +-
pages/traits/morphology/flagellated.html | 4 +-
pages/traits/morphology/flask_shaped.html | 4 +-
pages/traits/morphology/fusiform_shaped.html | 4 +-
pages/traits/morphology/gas_vesicle.html | 4 +-
pages/traits/morphology/gliding.html | 4 +-
pages/traits/morphology/gram_negative.html | 4 +-
pages/traits/morphology/gram_positive.html | 4 +-
pages/traits/morphology/gram_stain.html | 4 +-
pages/traits/morphology/gram_variable.html | 4 +-
pages/traits/morphology/green_pigmented.html | 4 +-
pages/traits/morphology/helical_shaped.html | 4 +-
pages/traits/morphology/heterocyst.html | 4 +-
pages/traits/morphology/holdfast.html | 2 +-
.../morphology/intracellular_inclusion.html | 4 +-
pages/traits/morphology/irregular_shaped.html | 4 +-
.../morphology/lateral_flagellation.html | 2 +-
pages/traits/morphology/lophotrichous.html | 4 +-
pages/traits/morphology/magnetosome.html | 4 +-
pages/traits/morphology/monotrichous.html | 4 +-
pages/traits/morphology/motile.html | 4 +-
pages/traits/morphology/motility.html | 4 +-
pages/traits/morphology/mycelial_growth.html | 4 +-
pages/traits/morphology/non_motile.html | 4 +-
.../traits/morphology/non_spore_forming.html | 4 +-
pages/traits/morphology/orange_pigmented.html | 4 +-
pages/traits/morphology/oval_shaped.html | 4 +-
pages/traits/morphology/ovoid_shaped.html | 4 +-
pages/traits/morphology/peritrichous.html | 4 +-
pages/traits/morphology/pigmentation.html | 4 +-
pages/traits/morphology/pink_pigmented.html | 4 +-
.../traits/morphology/pleomorphic_shaped.html | 4 +-
.../traits/morphology/polar_flagellation.html | 2 +-
.../polyhydroxyalkanoate_granule.html | 4 +-
.../morphology/polyphosphate_granule.html | 4 +-
.../morphology/polytrichous_flagellation.html | 2 +-
pages/traits/morphology/prosthecate.html | 4 +-
pages/traits/morphology/red_pigmented.html | 4 +-
pages/traits/morphology/ring_shaped.html | 4 +-
pages/traits/morphology/rod_shaped.html | 4 +-
pages/traits/morphology/s_layer.html | 4 +-
.../morphology/sarcina_arrangement.html | 4 +-
pages/traits/morphology/sphere_shaped.html | 4 +-
pages/traits/morphology/spindle_shaped.html | 4 +-
pages/traits/morphology/spiral_shaped.html | 4 +-
.../traits/morphology/spirochete_shaped.html | 4 +-
pages/traits/morphology/spore_forming.html | 4 +-
pages/traits/morphology/spore_shaped.html | 4 +-
pages/traits/morphology/sporulation.html | 4 +-
pages/traits/morphology/square_shaped.html | 4 +-
.../staphylococcus_arrangement.html | 4 +-
pages/traits/morphology/star_shaped.html | 4 +-
.../morphology/streptococcus_arrangement.html | 4 +-
.../morphology/subpolar_flagellation.html | 2 +-
pages/traits/morphology/sulfur_globule.html | 4 +-
.../traits/morphology/swarming_motility.html | 4 +-
pages/traits/morphology/tailed_shaped.html | 4 +-
.../traits/morphology/tetrad_arrangement.html | 4 +-
.../traits/morphology/triangular_shaped.html | 4 +-
.../traits/morphology/twitching_motility.html | 4 +-
pages/traits/morphology/type_iv_pilus.html | 2 +-
pages/traits/morphology/vibrio_shaped.html | 4 +-
pages/traits/morphology/white_pigmented.html | 4 +-
pages/traits/morphology/yellow_pigmented.html | 4 +-
.../observation/growth_nacl_observation.html | 4 +-
.../growth_oxygen_observation.html | 4 +-
.../observation/growth_ph_observation.html | 4 +-
.../growth_temperature_observation.html | 4 +-
.../observation/nacl_delta_observation.html | 4 +-
.../traits/observation/nacl_observation.html | 4 +-
.../observation/nacl_range_observation.html | 4 +-
.../observation/optimum_nacl_observation.html | 4 +-
.../optimum_oxygen_observation.html | 4 +-
.../observation/optimum_ph_observation.html | 4 +-
.../optimum_temperature_observation.html | 4 +-
.../observation/oxygen_delta_observation.html | 4 +-
.../observation/oxygen_observation.html | 4 +-
.../observation/oxygen_range_observation.html | 4 +-
.../observation/ph_delta_observation.html | 4 +-
pages/traits/observation/ph_observation.html | 4 +-
.../observation/ph_range_observation.html | 4 +-
.../temperature_delta_observation.html | 4 +-
.../observation/temperature_observation.html | 4 +-
.../temperature_range_observation.html | 4 +-
pages/traits/other/catalase_negative.html | 2 +-
pages/traits/other/catalase_test.html | 2 +-
pages/traits/other/circular_colony.html | 2 +-
pages/traits/other/coagulase_negative.html | 2 +-
pages/traits/other/coagulase_positive.html | 2 +-
pages/traits/other/colony_morphology.html | 2 +-
pages/traits/other/colony_shape.html | 2 +-
pages/traits/other/epibiont_phenotype.html | 2 +-
pages/traits/other/filamentous_colony.html | 2 +-
.../traits/other/fried_egg_shaped_colony.html | 2 +-
pages/traits/other/generalist.html | 2 +-
pages/traits/other/hemolysis.html | 2 +-
pages/traits/other/hemolytic.html | 2 +-
pages/traits/other/indole_test.html | 2 +-
pages/traits/other/indole_test_negative.html | 2 +-
pages/traits/other/indole_test_positive.html | 2 +-
pages/traits/other/irregular_colony.html | 2 +-
pages/traits/other/methyl_red_test.html | 2 +-
.../other/methyl_red_test_negative.html | 2 +-
.../other/methyl_red_test_positive.html | 2 +-
pages/traits/other/non_hemolytic.html | 2 +-
pages/traits/other/osmotic_tolerance.html | 2 +-
pages/traits/other/oxidase_negative.html | 2 +-
pages/traits/other/oxidase_test.html | 2 +-
pages/traits/other/punctiform_colony.html | 2 +-
pages/traits/other/rhizoid_colony.html | 2 +-
pages/traits/other/specialist.html | 2 +-
pages/traits/other/urease_negative.html | 2 +-
pages/traits/other/urease_test.html | 2 +-
pages/traits/other/voges_proskauer_test.html | 2 +-
.../other/voges_proskauer_test_negative.html | 2 +-
.../other/voges_proskauer_test_positive.html | 2 +-
.../physiology/acid_phosphatase_activity.html | 2 +-
.../aerobic_anoxygenic_phototrophy.html | 2 +-
.../alanine_arylamidase_activity.html | 2 +-
.../alkaline_phosphatase_activity.html | 2 +-
.../alpha_chymotrypsin_activity.html | 2 +-
.../physiology/alpha_fucosidase_activity.html | 2 +-
.../alpha_galactosidase_activity.html | 2 +-
.../alpha_glucosidase_activity.html | 2 +-
.../alpha_mannosidase_activity.html | 2 +-
pages/traits/physiology/amylase_activity.html | 2 +-
.../physiology/antibiotic_resistance.html | 4 +-
.../arginine_arylamidase_activity.html | 2 +-
.../arginine_dihydrolase_activity.html | 2 +-
pages/traits/physiology/autotrophic.html | 4 +-
.../physiology/bacteriocin_production.html | 2 +-
.../beta_galactosidase_activity.html | 2 +-
.../physiology/beta_glucosidase_activity.html | 2 +-
.../beta_glucuronidase_activity.html | 2 +-
.../beta_n_acetylhexosaminidase_activity.html | 2 +-
pages/traits/physiology/bioluminescence.html | 4 +-
pages/traits/physiology/carboxydotrophic.html | 4 +-
.../physiology/carboxylesterase_activity.html | 2 +-
.../traits/physiology/caseinase_activity.html | 2 +-
.../traits/physiology/catalase_activity.html | 4 +-
.../physiology/chemoautolithotrophic.html | 4 +-
pages/traits/physiology/chemoautotrophic.html | 4 +-
.../traits/physiology/chemoheterotrophic.html | 4 +-
.../physiology/chemolithoautotrophic.html | 4 +-
.../physiology/chemolithoheterotrophic.html | 4 +-
.../traits/physiology/chemolithotrophic.html | 4 +-
.../physiology/chemoorganoheterotrophic.html | 4 +-
.../traits/physiology/chemoorganotrophic.html | 4 +-
pages/traits/physiology/chemotaxis.html | 4 +-
pages/traits/physiology/chemotrophic.html | 4 +-
.../traits/physiology/coagulase_activity.html | 2 +-
pages/traits/physiology/copiotrophic.html | 4 +-
.../cystine_arylamidase_activity.html | 2 +-
pages/traits/physiology/dnase_activity.html | 2 +-
pages/traits/physiology/dormancy.html | 4 +-
.../gamma_glutamyltransferase_activity.html | 2 +-
.../physiology/gelatinase_activity.html | 2 +-
...yl_glutamic_acid_arylamidase_activity.html | 2 +-
.../glycine_arylamidase_activity.html | 2 +-
pages/traits/physiology/heterotrophic.html | 4 +-
.../histidine_arylamidase_activity.html | 2 +-
pages/traits/physiology/hydrogenotrophic.html | 4 +-
.../physiology/lecithinase_activity.html | 2 +-
.../leucine_arylamidase_activity.html | 2 +-
.../leucyl_glycine_arylamidase_activity.html | 2 +-
pages/traits/physiology/lipase_activity.html | 2 +-
pages/traits/physiology/lithoautotrophic.html | 4 +-
.../traits/physiology/lithoheterotrophic.html | 4 +-
pages/traits/physiology/lithotrophic.html | 4 +-
.../lysine_decarboxylase_activity.html | 2 +-
pages/traits/physiology/magnetotaxis.html | 2 +-
pages/traits/physiology/methanotrophic.html | 4 +-
pages/traits/physiology/methylotrophic.html | 4 +-
pages/traits/physiology/mixotrophic.html | 4 +-
...endent_alcohol_dehydrogenase_activity.html | 2 +-
...hthol_as_bi_phosphohydrolase_activity.html | 2 +-
.../traits/physiology/natural_competence.html | 4 +-
.../physiology/nutrient_adaptation.html | 4 +-
pages/traits/physiology/oligotrophic.html | 4 +-
.../physiology/organoheterotrophic.html | 4 +-
pages/traits/physiology/organotrophic.html | 4 +-
.../ornithine_decarboxylase_activity.html | 2 +-
pages/traits/physiology/oxidase_activity.html | 4 +-
.../physiology/oxidative_stress_response.html | 4 +-
.../physiology/persister_cell_formation.html | 4 +-
.../phenylalanine_arylamidase_activity.html | 2 +-
pages/traits/physiology/photoautotrophic.html | 4 +-
.../traits/physiology/photoheterotrophic.html | 4 +-
.../physiology/photolithoautotrophic.html | 4 +-
.../traits/physiology/photolithotrophic.html | 4 +-
.../physiology/photoorganoheterotrophic.html | 4 +-
pages/traits/physiology/phototrophic.html | 4 +-
.../prolyl_aminopeptidase_activity.html | 2 +-
.../physiology/pyrazinamidase_activity.html | 2 +-
.../pyrrolidonyl_arylamidase_activity.html | 2 +-
pages/traits/physiology/quorum_sensing.html | 4 +-
.../serine_arylamidase_activity.html | 2 +-
.../physiology/siderophore_production.html | 2 +-
.../traits/physiology/spore_germination.html | 4 +-
pages/traits/physiology/stress_response.html | 4 +-
pages/traits/physiology/trophic_type.html | 4 +-
pages/traits/physiology/trypsin_activity.html | 2 +-
.../tyrosine_arylamidase_activity.html | 2 +-
pages/traits/physiology/urease_activity.html | 4 +-
.../valine_arylamidase_activity.html | 2 +-
.../viable_but_nonculturable_state.html | 4 +-
.../has_maximum_observed_value.html | 4 +-
.../has_minimum_observed_value.html | 4 +-
.../has_observed_spot_value.html | 4 +-
.../quantitative_property/has_value.html | 4 +-
.../has_value_comments.html | 4 +-
.../is_negative_data.html | 4 +-
.../observation_data_property.html | 4 +-
pages/traits/upper/biological_process.html | 4 +-
pages/traits/upper/chemical_entity.html | 4 +-
pages/traits/upper/enzyme.html | 4 +-
pages/traits/upper/material_entity.html | 4 +-
pages/traits/upper/microbe.html | 4 +-
pages/traits/upper/observation.html | 4 +-
pages/traits/upper/phenotype.html | 4 +-
pages/traits/upper/quality.html | 4 +-
pages/umap.html | 6 +-
scripts/build_embedding_index.py | 99 ++++++++++++-------
scripts/render_trait_pages.py | 57 +++++++++--
src/traitmech/templates/graph.html | 8 +-
src/traitmech/templates/index.html | 4 +-
src/traitmech/templates/trait.html | 4 +-
src/traitmech/templates/umap.html | 6 +-
tests/test_graph_projection_correctness.py | 87 ++++++++++++++++
600 files changed, 1287 insertions(+), 1132 deletions(-)
mode change 100644 => 100755 scripts/build_embedding_index.py
mode change 100644 => 100755 scripts/render_trait_pages.py
create mode 100644 tests/test_graph_projection_correctness.py
diff --git a/pages/graph.html b/pages/graph.html
index 34f920b97e..89f4cbd7d3 100644
--- a/pages/graph.html
+++ b/pages/graph.html
@@ -3,7 +3,7 @@
-Trait graph layout (sfdp) — TraitMech
+Trait graph layout — TraitMech
@@ -22,10 +22,10 @@
TraitMech › Graph layout
- Trait graph layout (sfdp)
- Graphviz sfdp force-directed layout over
- 477 METPO trait embeddings from kg-microbe's
- 2026-04-25 deepwalk (512-D, layout k=15). The 768 visible links are
+
Trait graph layout
+ Unverified projection over
+ 477 METPO trait embeddings. Projection: Unverified projection.
+ Source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded. The 768 visible links are
reciprocal relationships in the committed top-neighbor index. Hover for a
label; click to open the trait page.
diff --git a/pages/index.html b/pages/index.html
index 7010d23df1..2df64239f6 100644
--- a/pages/index.html
+++ b/pages/index.html
@@ -125,9 +125,9 @@ Record browser
🗺️
-
+
Embedding browser
-
Interactive PaCMAP of the trait embedding space with click-through to records.
+
Interactive Unverified projection of the trait embedding space with click-through to records.
💻
diff --git a/pages/traits/ecology/animal_pathogen.html b/pages/traits/ecology/animal_pathogen.html
index 6bfe8f83eb..d528130177 100644
--- a/pages/traits/ecology/animal_pathogen.html
+++ b/pages/traits/ecology/animal_pathogen.html
@@ -366,7 +366,7 @@
kg-microbe context
METPO:1004002 [-1.564, -64.092, -0.620, -28.964, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -374,7 +374,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/ecology/biofilm_formation.html b/pages/traits/ecology/biofilm_formation.html
index e80d63375d..f40c83f0db 100644
--- a/pages/traits/ecology/biofilm_formation.html
+++ b/pages/traits/ecology/biofilm_formation.html
@@ -388,7 +388,7 @@ kg-microbe context
METPO:1000059 [-2.682, -2.070, -3.656, -0.652, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -396,7 +396,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/ecology/biosafety_level.html b/pages/traits/ecology/biosafety_level.html
index 1cb11f5e06..79c85e3c88 100644
--- a/pages/traits/ecology/biosafety_level.html
+++ b/pages/traits/ecology/biosafety_level.html
@@ -358,7 +358,7 @@ kg-microbe context
METPO:1001101 [-2.107, -3.186, -2.412, +0.971, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -366,7 +366,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/ecology/biosafety_level_1.html b/pages/traits/ecology/biosafety_level_1.html
index 1e7b6343a3..e32d20e354 100644
--- a/pages/traits/ecology/biosafety_level_1.html
+++ b/pages/traits/ecology/biosafety_level_1.html
@@ -273,7 +273,7 @@ kg-microbe context
METPO:1001102 [+13.390, -49.149, -21.083, +19.067, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -281,7 +281,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/ecology/biosafety_level_2.html b/pages/traits/ecology/biosafety_level_2.html
index a87a2e14b7..47b2c30f2d 100644
--- a/pages/traits/ecology/biosafety_level_2.html
+++ b/pages/traits/ecology/biosafety_level_2.html
@@ -256,7 +256,7 @@ kg-microbe context
METPO:1001103 [+47.740, -114.909, +42.074, +68.627, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -264,7 +264,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/ecology/biosafety_level_3.html b/pages/traits/ecology/biosafety_level_3.html
index 0056fbc1bc..f8559abf93 100644
--- a/pages/traits/ecology/biosafety_level_3.html
+++ b/pages/traits/ecology/biosafety_level_3.html
@@ -258,7 +258,7 @@ kg-microbe context
METPO:1001104 [+22.599, -24.248, -48.083, +0.798, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -266,7 +266,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/ecology/biosafety_level_4.html b/pages/traits/ecology/biosafety_level_4.html
index cb224a4f4f..565264c2df 100644
--- a/pages/traits/ecology/biosafety_level_4.html
+++ b/pages/traits/ecology/biosafety_level_4.html
@@ -291,7 +291,7 @@ kg-microbe context
METPO:1001105 [-2.744, -3.128, -2.945, +1.660, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -299,7 +299,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/ecology/biosafety_level_5.html b/pages/traits/ecology/biosafety_level_5.html
index 24792d9e5b..4be41a58c8 100644
--- a/pages/traits/ecology/biosafety_level_5.html
+++ b/pages/traits/ecology/biosafety_level_5.html
@@ -154,7 +154,7 @@ kg-microbe context
METPO:1001106 [-1.943, -2.943, -2.758, +0.700, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -162,7 +162,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/ecology/commensalism.html b/pages/traits/ecology/commensalism.html
index 384ebc8f44..829774eaca 100644
--- a/pages/traits/ecology/commensalism.html
+++ b/pages/traits/ecology/commensalism.html
@@ -290,7 +290,7 @@ kg-microbe context
METPO:1000059 [-2.682, -2.070, -3.656, -0.652, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -298,7 +298,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/ecology/endosymbiosis.html b/pages/traits/ecology/endosymbiosis.html
index 5a0622cd86..d7812e5223 100644
--- a/pages/traits/ecology/endosymbiosis.html
+++ b/pages/traits/ecology/endosymbiosis.html
@@ -239,7 +239,7 @@ kg-microbe context
METPO:1000059 [-2.682, -2.070, -3.656, -0.652, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -247,7 +247,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/ecology/free_living.html b/pages/traits/ecology/free_living.html
index cd8326dd0c..d4117dc28c 100644
--- a/pages/traits/ecology/free_living.html
+++ b/pages/traits/ecology/free_living.html
@@ -265,7 +265,7 @@ kg-microbe context
METPO:1000059 [-2.682, -2.070, -3.656, -0.652, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -273,7 +273,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/ecology/gut_associated.html b/pages/traits/ecology/gut_associated.html
index e907853412..47354040c7 100644
--- a/pages/traits/ecology/gut_associated.html
+++ b/pages/traits/ecology/gut_associated.html
@@ -342,7 +342,7 @@ kg-microbe context
METPO:1000059 [-2.682, -2.070, -3.656, -0.652, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -350,7 +350,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/ecology/habitat_association.html b/pages/traits/ecology/habitat_association.html
index f20c2a7637..b0fdc7c50b 100644
--- a/pages/traits/ecology/habitat_association.html
+++ b/pages/traits/ecology/habitat_association.html
@@ -271,7 +271,7 @@ kg-microbe context
METPO:1000059 [-2.682, -2.070, -3.656, -0.652, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -279,7 +279,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/ecology/host_associated.html b/pages/traits/ecology/host_associated.html
index cb65b7b448..ae30f1b34f 100644
--- a/pages/traits/ecology/host_associated.html
+++ b/pages/traits/ecology/host_associated.html
@@ -307,7 +307,7 @@ kg-microbe context
METPO:1000059 [-2.682, -2.070, -3.656, -0.652, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -315,7 +315,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/ecology/human_pathogen.html b/pages/traits/ecology/human_pathogen.html
index 8bbc59c7a3..b340c782f9 100644
--- a/pages/traits/ecology/human_pathogen.html
+++ b/pages/traits/ecology/human_pathogen.html
@@ -324,7 +324,7 @@ kg-microbe context
METPO:1004004 [-23.400, -36.820, -39.335, +4.843, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -332,7 +332,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/ecology/mutualism.html b/pages/traits/ecology/mutualism.html
index 30571aee8a..56bd04d0a6 100644
--- a/pages/traits/ecology/mutualism.html
+++ b/pages/traits/ecology/mutualism.html
@@ -248,7 +248,7 @@ kg-microbe context
METPO:1000059 [-2.682, -2.070, -3.656, -0.652, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -256,7 +256,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/ecology/nitrogen_fixing_symbiosis.html b/pages/traits/ecology/nitrogen_fixing_symbiosis.html
index 9ce5cf8649..654a65bcb8 100644
--- a/pages/traits/ecology/nitrogen_fixing_symbiosis.html
+++ b/pages/traits/ecology/nitrogen_fixing_symbiosis.html
@@ -339,7 +339,7 @@ kg-microbe context
METPO:1000059 [-2.682, -2.070, -3.656, -0.652, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -347,7 +347,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/ecology/opportunistic_pathogen.html b/pages/traits/ecology/opportunistic_pathogen.html
index df1d20c40a..1413aabd00 100644
--- a/pages/traits/ecology/opportunistic_pathogen.html
+++ b/pages/traits/ecology/opportunistic_pathogen.html
@@ -273,7 +273,7 @@ kg-microbe context
METPO:1004000 [-1.432, -2.796, -2.792, +0.353, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -281,7 +281,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/ecology/parasitism.html b/pages/traits/ecology/parasitism.html
index 600d78b9e1..f14d4979bd 100644
--- a/pages/traits/ecology/parasitism.html
+++ b/pages/traits/ecology/parasitism.html
@@ -307,7 +307,7 @@ kg-microbe context
METPO:1000059 [-2.682, -2.070, -3.656, -0.652, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -315,7 +315,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/ecology/pathogenic_to_host.html b/pages/traits/ecology/pathogenic_to_host.html
index f8c19b1be3..ca8f061efa 100644
--- a/pages/traits/ecology/pathogenic_to_host.html
+++ b/pages/traits/ecology/pathogenic_to_host.html
@@ -341,7 +341,7 @@ kg-microbe context
METPO:1004000 [-1.432, -2.796, -2.792, +0.353, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -349,7 +349,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/ecology/plant_pathogen.html b/pages/traits/ecology/plant_pathogen.html
index e6971d8747..85cf9fd898 100644
--- a/pages/traits/ecology/plant_pathogen.html
+++ b/pages/traits/ecology/plant_pathogen.html
@@ -315,7 +315,7 @@ kg-microbe context
METPO:1004003 [+6.432, -2.221, -31.218, +2.228, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -323,7 +323,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/ecology/predatory_bacterium.html b/pages/traits/ecology/predatory_bacterium.html
index d83b48cfae..dc87722f5d 100644
--- a/pages/traits/ecology/predatory_bacterium.html
+++ b/pages/traits/ecology/predatory_bacterium.html
@@ -324,7 +324,7 @@ kg-microbe context
METPO:1000059 [-2.682, -2.070, -3.656, -0.652, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -332,7 +332,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/ecology/rhizosphere_association.html b/pages/traits/ecology/rhizosphere_association.html
index bbba82d4c6..96f7d8390d 100644
--- a/pages/traits/ecology/rhizosphere_association.html
+++ b/pages/traits/ecology/rhizosphere_association.html
@@ -256,7 +256,7 @@ kg-microbe context
METPO:1000059 [-2.682, -2.070, -3.656, -0.652, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -264,7 +264,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/ecology/saprotrophy.html b/pages/traits/ecology/saprotrophy.html
index fdcdc5002d..767e47b95e 100644
--- a/pages/traits/ecology/saprotrophy.html
+++ b/pages/traits/ecology/saprotrophy.html
@@ -275,7 +275,7 @@ kg-microbe context
METPO:1000059 [-2.682, -2.070, -3.656, -0.652, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -283,7 +283,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/ecology/soil_dwelling.html b/pages/traits/ecology/soil_dwelling.html
index ce616f5a6a..93fb27835b 100644
--- a/pages/traits/ecology/soil_dwelling.html
+++ b/pages/traits/ecology/soil_dwelling.html
@@ -358,7 +358,7 @@ kg-microbe context
METPO:1000059 [-2.682, -2.070, -3.656, -0.652, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -366,7 +366,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/ecology/symbiosis.html b/pages/traits/ecology/symbiosis.html
index ffbf69e645..d7a8744ffb 100644
--- a/pages/traits/ecology/symbiosis.html
+++ b/pages/traits/ecology/symbiosis.html
@@ -322,7 +322,7 @@ kg-microbe context
METPO:1000059 [-2.682, -2.070, -3.656, -0.652, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -330,7 +330,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/acidophilic.html b/pages/traits/environment/acidophilic.html
index ba827a9e51..f508bccb3a 100644
--- a/pages/traits/environment/acidophilic.html
+++ b/pages/traits/environment/acidophilic.html
@@ -309,7 +309,7 @@ kg-microbe context
METPO:1003003 [-2.194, -1.869, -2.537, -0.747, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -317,7 +317,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/acidotolerant.html b/pages/traits/environment/acidotolerant.html
index 99dc09727a..58b3370a35 100644
--- a/pages/traits/environment/acidotolerant.html
+++ b/pages/traits/environment/acidotolerant.html
@@ -273,7 +273,7 @@ kg-microbe context
METPO:1003008 [-2.269, -2.440, -2.363, -0.685, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -281,7 +281,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/aerobic.html b/pages/traits/environment/aerobic.html
index 8dc5e47c30..2492c1b72c 100644
--- a/pages/traits/environment/aerobic.html
+++ b/pages/traits/environment/aerobic.html
@@ -325,7 +325,7 @@ kg-microbe context
METPO:1000602 [-37.032, +29.784, -5.356, +74.090, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -333,7 +333,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/aerotolerant.html b/pages/traits/environment/aerotolerant.html
index f1a6583989..b742971518 100644
--- a/pages/traits/environment/aerotolerant.html
+++ b/pages/traits/environment/aerotolerant.html
@@ -256,7 +256,7 @@ kg-microbe context
METPO:1000609 [+0.004, -0.947, -1.036, -0.467, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -264,7 +264,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/alkalotolerant.html b/pages/traits/environment/alkalotolerant.html
index 5694ddba6a..f9d19e156c 100644
--- a/pages/traits/environment/alkalotolerant.html
+++ b/pages/traits/environment/alkalotolerant.html
@@ -290,7 +290,7 @@ kg-microbe context
METPO:1003009 [-2.574, -1.858, -2.415, -0.954, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -298,7 +298,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/alkaphilic.html b/pages/traits/environment/alkaphilic.html
index a2c511b5a6..22173fd951 100644
--- a/pages/traits/environment/alkaphilic.html
+++ b/pages/traits/environment/alkaphilic.html
@@ -303,7 +303,7 @@ kg-microbe context
METPO:1003002 [-2.640, -2.180, -1.907, -0.788, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -311,7 +311,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/anaerobic.html b/pages/traits/environment/anaerobic.html
index 178f440d2f..8550cc0fb9 100644
--- a/pages/traits/environment/anaerobic.html
+++ b/pages/traits/environment/anaerobic.html
@@ -299,7 +299,7 @@ kg-microbe context
METPO:1000603 [+295.383, -195.343, -25.409, +1.165, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -307,7 +307,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/arsenic_tolerant.html b/pages/traits/environment/arsenic_tolerant.html
index 1199f287db..5e582fee13 100644
--- a/pages/traits/environment/arsenic_tolerant.html
+++ b/pages/traits/environment/arsenic_tolerant.html
@@ -371,7 +371,7 @@ kg-microbe context
METPO:1000059 [-2.682, -2.070, -3.656, -0.652, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -379,7 +379,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/cadmium_tolerant.html b/pages/traits/environment/cadmium_tolerant.html
index aec597a397..24676b5150 100644
--- a/pages/traits/environment/cadmium_tolerant.html
+++ b/pages/traits/environment/cadmium_tolerant.html
@@ -277,7 +277,7 @@ kg-microbe context
METPO:1000059 [-2.682, -2.070, -3.656, -0.652, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -285,7 +285,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/capnophilic.html b/pages/traits/environment/capnophilic.html
index 9e170ece28..d2255059f1 100644
--- a/pages/traits/environment/capnophilic.html
+++ b/pages/traits/environment/capnophilic.html
@@ -73,7 +73,7 @@ Parent traits (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/environment/cobalt_tolerant.html b/pages/traits/environment/cobalt_tolerant.html
index 89a6678432..cd29213f1b 100644
--- a/pages/traits/environment/cobalt_tolerant.html
+++ b/pages/traits/environment/cobalt_tolerant.html
@@ -328,7 +328,7 @@ kg-microbe context
METPO:1000059 [-2.682, -2.070, -3.656, -0.652, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -336,7 +336,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/copper_tolerant.html b/pages/traits/environment/copper_tolerant.html
index 0a6d702f06..24e3619aba 100644
--- a/pages/traits/environment/copper_tolerant.html
+++ b/pages/traits/environment/copper_tolerant.html
@@ -286,7 +286,7 @@ kg-microbe context
METPO:1000059 [-2.682, -2.070, -3.656, -0.652, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -294,7 +294,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/delta_phenotype_with_numerical_limits.html b/pages/traits/environment/delta_phenotype_with_numerical_limits.html
index 181eee26cf..4b1fd7495d 100644
--- a/pages/traits/environment/delta_phenotype_with_numerical_limits.html
+++ b/pages/traits/environment/delta_phenotype_with_numerical_limits.html
@@ -277,7 +277,7 @@ kg-microbe context
METPO:1000534 [-3.799, -1.882, -3.281, +0.097, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -285,7 +285,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/desiccation_tolerant.html b/pages/traits/environment/desiccation_tolerant.html
index da6308ebbd..6e3899bafd 100644
--- a/pages/traits/environment/desiccation_tolerant.html
+++ b/pages/traits/environment/desiccation_tolerant.html
@@ -290,7 +290,7 @@ kg-microbe context
METPO:1000059 [-2.682, -2.070, -3.656, -0.652, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -298,7 +298,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/euryhaline.html b/pages/traits/environment/euryhaline.html
index f0739e50d5..9ad65ed553 100644
--- a/pages/traits/environment/euryhaline.html
+++ b/pages/traits/environment/euryhaline.html
@@ -349,7 +349,7 @@ kg-microbe context
METPO:1000627 [-3.209, -1.862, -0.407, -3.229, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -357,7 +357,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/extreme_hyperthermophilic.html b/pages/traits/environment/extreme_hyperthermophilic.html
index 09b9c8aa77..605c7a49d4 100644
--- a/pages/traits/environment/extreme_hyperthermophilic.html
+++ b/pages/traits/environment/extreme_hyperthermophilic.html
@@ -275,7 +275,7 @@ kg-microbe context
METPO:1000721 [-1.816, -2.651, -5.319, +2.332, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -283,7 +283,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/extremely_halophilic.html b/pages/traits/environment/extremely_halophilic.html
index c2ef763e33..c1b769778d 100644
--- a/pages/traits/environment/extremely_halophilic.html
+++ b/pages/traits/environment/extremely_halophilic.html
@@ -307,7 +307,7 @@ kg-microbe context
METPO:1000628 [-5.564, -4.889, -1.753, +2.203, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -315,7 +315,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/facultative_oxygen_preference.html b/pages/traits/environment/facultative_oxygen_preference.html
index da208ca67f..81cf094d9e 100644
--- a/pages/traits/environment/facultative_oxygen_preference.html
+++ b/pages/traits/environment/facultative_oxygen_preference.html
@@ -256,7 +256,7 @@ kg-microbe context
METPO:1000612 [+0.107, -1.436, -3.263, +2.339, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -264,7 +264,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/facultative_psychrophilic.html b/pages/traits/environment/facultative_psychrophilic.html
index 25fb634179..a39ca7e446 100644
--- a/pages/traits/environment/facultative_psychrophilic.html
+++ b/pages/traits/environment/facultative_psychrophilic.html
@@ -307,7 +307,7 @@ kg-microbe context
METPO:1000720 [-2.148, -2.202, -4.718, +2.478, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -315,7 +315,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/facultatively_acidophilic.html b/pages/traits/environment/facultatively_acidophilic.html
index 9f4a5ae72c..d9858cbf99 100644
--- a/pages/traits/environment/facultatively_acidophilic.html
+++ b/pages/traits/environment/facultatively_acidophilic.html
@@ -358,7 +358,7 @@ kg-microbe context
METPO:1003007 [-2.661, -2.047, -2.231, -0.786, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -366,7 +366,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/facultatively_aerobic.html b/pages/traits/environment/facultatively_aerobic.html
index 50abbc0c0e..209dd83133 100644
--- a/pages/traits/environment/facultatively_aerobic.html
+++ b/pages/traits/environment/facultatively_aerobic.html
@@ -292,7 +292,7 @@ kg-microbe context
METPO:1000608 [-151.729, -272.921, +66.702, -217.406, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -300,7 +300,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/facultatively_alkaphilic.html b/pages/traits/environment/facultatively_alkaphilic.html
index 98a1af987d..338a6cc1c3 100644
--- a/pages/traits/environment/facultatively_alkaphilic.html
+++ b/pages/traits/environment/facultatively_alkaphilic.html
@@ -292,7 +292,7 @@ kg-microbe context
METPO:1003005 [-2.320, -2.077, -2.647, -0.697, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -300,7 +300,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/facultatively_anaerobic.html b/pages/traits/environment/facultatively_anaerobic.html
index 1cb62db2bc..8d0ae6a668 100644
--- a/pages/traits/environment/facultatively_anaerobic.html
+++ b/pages/traits/environment/facultatively_anaerobic.html
@@ -258,7 +258,7 @@ kg-microbe context
METPO:1000605 [-3.711, -2.702, +1.434, -2.504, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -266,7 +266,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/growth_range_phenotype_with_numerical_limits.html b/pages/traits/environment/growth_range_phenotype_with_numerical_limits.html
index fda51cf61b..ace4fd7e48 100644
--- a/pages/traits/environment/growth_range_phenotype_with_numerical_limits.html
+++ b/pages/traits/environment/growth_range_phenotype_with_numerical_limits.html
@@ -328,7 +328,7 @@ kg-microbe context
METPO:1000535 [-2.537, -1.642, -2.853, +0.728, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -336,7 +336,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/haloalkaliphilic.html b/pages/traits/environment/haloalkaliphilic.html
index e4206af38c..dd1d45985a 100644
--- a/pages/traits/environment/haloalkaliphilic.html
+++ b/pages/traits/environment/haloalkaliphilic.html
@@ -315,7 +315,7 @@ kg-microbe context
METPO:1000621 [-2.095, -1.126, +0.094, -2.061, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -323,7 +323,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/halophilic.html b/pages/traits/environment/halophilic.html
index 0e0aa5b2bb..6244c6f0fa 100644
--- a/pages/traits/environment/halophilic.html
+++ b/pages/traits/environment/halophilic.html
@@ -315,7 +315,7 @@ kg-microbe context
METPO:1000620 [-1.039, -0.924, -1.635, -0.067, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -323,7 +323,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/halophily_preference.html b/pages/traits/environment/halophily_preference.html
index 6138d8c48a..5de2fbf674 100644
--- a/pages/traits/environment/halophily_preference.html
+++ b/pages/traits/environment/halophily_preference.html
@@ -368,7 +368,7 @@ kg-microbe context
METPO:1000629 [-3.748, -1.433, -0.015, -2.487, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -376,7 +376,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/halotolerant.html b/pages/traits/environment/halotolerant.html
index ae7a9c0aec..ce72adc4eb 100644
--- a/pages/traits/environment/halotolerant.html
+++ b/pages/traits/environment/halotolerant.html
@@ -315,7 +315,7 @@ kg-microbe context
METPO:1000622 [-1.440, -1.500, -3.854, +0.583, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -323,7 +323,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/hyperthermophilic.html b/pages/traits/environment/hyperthermophilic.html
index 22f58bb056..57b43f8c6d 100644
--- a/pages/traits/environment/hyperthermophilic.html
+++ b/pages/traits/environment/hyperthermophilic.html
@@ -307,7 +307,7 @@ kg-microbe context
METPO:1000617 [-1.374, -3.022, -1.424, +2.441, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -315,7 +315,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/ionizing_radiation_tolerant.html b/pages/traits/environment/ionizing_radiation_tolerant.html
index 10c65a38a7..8a728cb122 100644
--- a/pages/traits/environment/ionizing_radiation_tolerant.html
+++ b/pages/traits/environment/ionizing_radiation_tolerant.html
@@ -239,7 +239,7 @@ kg-microbe context
METPO:1000059 [-2.682, -2.070, -3.656, -0.652, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -247,7 +247,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/mercury_tolerant.html b/pages/traits/environment/mercury_tolerant.html
index 7747e869ab..97b2625345 100644
--- a/pages/traits/environment/mercury_tolerant.html
+++ b/pages/traits/environment/mercury_tolerant.html
@@ -303,7 +303,7 @@ kg-microbe context
METPO:1000059 [-2.682, -2.070, -3.656, -0.652, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -311,7 +311,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/mesophilic.html b/pages/traits/environment/mesophilic.html
index 47cfd7db8f..f96cfc757d 100644
--- a/pages/traits/environment/mesophilic.html
+++ b/pages/traits/environment/mesophilic.html
@@ -349,7 +349,7 @@ kg-microbe context
METPO:1000615 [+102.284, -178.453, -111.655, -113.199, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -357,7 +357,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/metal_tolerant.html b/pages/traits/environment/metal_tolerant.html
index 8a840f5472..bb2b5c96f2 100644
--- a/pages/traits/environment/metal_tolerant.html
+++ b/pages/traits/environment/metal_tolerant.html
@@ -277,7 +277,7 @@ kg-microbe context
METPO:1000059 [-2.682, -2.070, -3.656, -0.652, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -285,7 +285,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/microaerophilic.html b/pages/traits/environment/microaerophilic.html
index 0fb88e101a..ef2a7c14d7 100644
--- a/pages/traits/environment/microaerophilic.html
+++ b/pages/traits/environment/microaerophilic.html
@@ -292,7 +292,7 @@ kg-microbe context
METPO:1000604 [-7.958, +0.708, -1.624, -12.523, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -300,7 +300,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/microaerotolerant.html b/pages/traits/environment/microaerotolerant.html
index 8ecb9b1955..f985398108 100644
--- a/pages/traits/environment/microaerotolerant.html
+++ b/pages/traits/environment/microaerotolerant.html
@@ -298,7 +298,7 @@ kg-microbe context
METPO:1000610 [-1.136, -2.135, -2.147, +0.656, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -306,7 +306,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/moderately_halophilic.html b/pages/traits/environment/moderately_halophilic.html
index 3be7c9f52f..1878a202fb 100644
--- a/pages/traits/environment/moderately_halophilic.html
+++ b/pages/traits/environment/moderately_halophilic.html
@@ -307,7 +307,7 @@ kg-microbe context
METPO:1000623 [-94.883, -13.167, +11.221, +70.341, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -315,7 +315,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/nacl_delta.html b/pages/traits/environment/nacl_delta.html
index 8fa8a7e214..0ce8e449e3 100644
--- a/pages/traits/environment/nacl_delta.html
+++ b/pages/traits/environment/nacl_delta.html
@@ -281,7 +281,7 @@ kg-microbe context
METPO:1000335 [-3.596, -2.760, -3.043, +0.053, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -289,7 +289,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/nacl_delta_high.html b/pages/traits/environment/nacl_delta_high.html
index 6baf53ddaf..9fafb7d20d 100644
--- a/pages/traits/environment/nacl_delta_high.html
+++ b/pages/traits/environment/nacl_delta_high.html
@@ -341,7 +341,7 @@ kg-microbe context
METPO:1000482 [-0.207, -1.867, +0.267, +2.264, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -349,7 +349,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/nacl_delta_low.html b/pages/traits/environment/nacl_delta_low.html
index ec74a64a64..c61a414ae4 100644
--- a/pages/traits/environment/nacl_delta_low.html
+++ b/pages/traits/environment/nacl_delta_low.html
@@ -239,7 +239,7 @@ kg-microbe context
METPO:1000479 [-3.032, -4.103, -2.404, +1.560, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -247,7 +247,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/nacl_delta_mid1.html b/pages/traits/environment/nacl_delta_mid1.html
index 3ab7a3151d..0736815c4d 100644
--- a/pages/traits/environment/nacl_delta_mid1.html
+++ b/pages/traits/environment/nacl_delta_mid1.html
@@ -290,7 +290,7 @@ kg-microbe context
METPO:1000480 [-4.436, -1.982, -1.374, -0.530, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -298,7 +298,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/nacl_delta_mid2.html b/pages/traits/environment/nacl_delta_mid2.html
index 901866c336..429577e470 100644
--- a/pages/traits/environment/nacl_delta_mid2.html
+++ b/pages/traits/environment/nacl_delta_mid2.html
@@ -256,7 +256,7 @@ kg-microbe context
METPO:1000481 [-2.652, -0.385, +1.033, +2.032, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -264,7 +264,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/nacl_optimum.html b/pages/traits/environment/nacl_optimum.html
index 90e6048246..74dbc5674d 100644
--- a/pages/traits/environment/nacl_optimum.html
+++ b/pages/traits/environment/nacl_optimum.html
@@ -383,7 +383,7 @@ kg-microbe context
METPO:1000333 [-3.125, -1.042, -1.721, +1.474, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -391,7 +391,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/nacl_optimum_high.html b/pages/traits/environment/nacl_optimum_high.html
index 0fe44f1f20..a2142de9fd 100644
--- a/pages/traits/environment/nacl_optimum_high.html
+++ b/pages/traits/environment/nacl_optimum_high.html
@@ -275,7 +275,7 @@ kg-microbe context
METPO:1000468 [-2.565, -2.720, +0.941, +0.988, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -283,7 +283,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/nacl_optimum_low.html b/pages/traits/environment/nacl_optimum_low.html
index 2cf6365d52..4fdb01b292 100644
--- a/pages/traits/environment/nacl_optimum_low.html
+++ b/pages/traits/environment/nacl_optimum_low.html
@@ -277,7 +277,7 @@ kg-microbe context
METPO:1000465 [-1.310, -1.240, -3.413, +3.699, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -285,7 +285,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/nacl_optimum_mid1.html b/pages/traits/environment/nacl_optimum_mid1.html
index 74f9de2803..271560306c 100644
--- a/pages/traits/environment/nacl_optimum_mid1.html
+++ b/pages/traits/environment/nacl_optimum_mid1.html
@@ -260,7 +260,7 @@ kg-microbe context
METPO:1000466 [-2.252, -1.820, +0.770, +1.144, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -268,7 +268,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/nacl_optimum_mid2.html b/pages/traits/environment/nacl_optimum_mid2.html
index 5b13c0778a..311a054962 100644
--- a/pages/traits/environment/nacl_optimum_mid2.html
+++ b/pages/traits/environment/nacl_optimum_mid2.html
@@ -294,7 +294,7 @@ kg-microbe context
METPO:1000467 [-0.989, -0.801, -1.139, +3.616, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -302,7 +302,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/nacl_range.html b/pages/traits/environment/nacl_range.html
index d878b3115f..1fec177fd9 100644
--- a/pages/traits/environment/nacl_range.html
+++ b/pages/traits/environment/nacl_range.html
@@ -281,7 +281,7 @@ kg-microbe context
METPO:1000334 [-2.929, -1.954, -2.325, +0.965, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -289,7 +289,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/nacl_range_high.html b/pages/traits/environment/nacl_range_high.html
index 65503998f8..fc24b4195e 100644
--- a/pages/traits/environment/nacl_range_high.html
+++ b/pages/traits/environment/nacl_range_high.html
@@ -241,7 +241,7 @@ kg-microbe context
METPO:1000472 [+0.219, -2.224, +0.350, +2.763, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -249,7 +249,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/nacl_range_low.html b/pages/traits/environment/nacl_range_low.html
index 3c36b14013..8aec2288a6 100644
--- a/pages/traits/environment/nacl_range_low.html
+++ b/pages/traits/environment/nacl_range_low.html
@@ -243,7 +243,7 @@ kg-microbe context
METPO:1000469 [-3.957, -1.727, +0.312, +1.025, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -251,7 +251,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/nacl_range_mid1.html b/pages/traits/environment/nacl_range_mid1.html
index b862c7da38..0b2377dd6b 100644
--- a/pages/traits/environment/nacl_range_mid1.html
+++ b/pages/traits/environment/nacl_range_mid1.html
@@ -243,7 +243,7 @@ kg-microbe context
METPO:1000470 [-4.071, -1.891, -0.359, +0.724, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -251,7 +251,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/nacl_range_mid2.html b/pages/traits/environment/nacl_range_mid2.html
index 2b674416f9..358b9ff77a 100644
--- a/pages/traits/environment/nacl_range_mid2.html
+++ b/pages/traits/environment/nacl_range_mid2.html
@@ -277,7 +277,7 @@ kg-microbe context
METPO:1000471 [-2.730, -1.359, +0.847, +2.066, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -285,7 +285,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/neutrophilic.html b/pages/traits/environment/neutrophilic.html
index 5697eb2c9f..2ca88cbbec 100644
--- a/pages/traits/environment/neutrophilic.html
+++ b/pages/traits/environment/neutrophilic.html
@@ -277,7 +277,7 @@ kg-microbe context
METPO:1003001 [-2.302, -2.147, -2.266, -0.758, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -285,7 +285,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/non_halophilic.html b/pages/traits/environment/non_halophilic.html
index d35363ac0b..f7bd6a44c8 100644
--- a/pages/traits/environment/non_halophilic.html
+++ b/pages/traits/environment/non_halophilic.html
@@ -290,7 +290,7 @@ kg-microbe context
METPO:1000624 [-6.997, -46.693, +70.873, -15.746, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -298,7 +298,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/obligately_acidophilic.html b/pages/traits/environment/obligately_acidophilic.html
index dd37a8a76d..a1bf586657 100644
--- a/pages/traits/environment/obligately_acidophilic.html
+++ b/pages/traits/environment/obligately_acidophilic.html
@@ -341,7 +341,7 @@ kg-microbe context
METPO:1003006 [-2.557, -2.409, -2.459, -0.781, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -349,7 +349,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/obligately_aerobic.html b/pages/traits/environment/obligately_aerobic.html
index 6470f24a03..45e0da11ad 100644
--- a/pages/traits/environment/obligately_aerobic.html
+++ b/pages/traits/environment/obligately_aerobic.html
@@ -292,7 +292,7 @@ kg-microbe context
METPO:1000606 [-9.610, +1.401, -2.576, -1.238, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -300,7 +300,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/obligately_alkaphilic.html b/pages/traits/environment/obligately_alkaphilic.html
index 3a2760a6a6..1033acde7f 100644
--- a/pages/traits/environment/obligately_alkaphilic.html
+++ b/pages/traits/environment/obligately_alkaphilic.html
@@ -343,7 +343,7 @@ kg-microbe context
METPO:1003004 [-2.837, -2.238, -1.977, -0.877, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -351,7 +351,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/obligately_anaerobic.html b/pages/traits/environment/obligately_anaerobic.html
index 6cf5ea51a5..a7ec7989e6 100644
--- a/pages/traits/environment/obligately_anaerobic.html
+++ b/pages/traits/environment/obligately_anaerobic.html
@@ -335,7 +335,7 @@ kg-microbe context
METPO:1000607 [+2.697, -7.983, -23.900, +3.915, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -343,7 +343,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/obligately_piezophilic.html b/pages/traits/environment/obligately_piezophilic.html
index 622f7b93f3..8d43ffeccc 100644
--- a/pages/traits/environment/obligately_piezophilic.html
+++ b/pages/traits/environment/obligately_piezophilic.html
@@ -222,7 +222,7 @@ kg-microbe context
METPO:1000059 [-2.682, -2.070, -3.656, -0.652, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -230,7 +230,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/optimum_phenotype_with_numerical_limits.html b/pages/traits/environment/optimum_phenotype_with_numerical_limits.html
index bebfe46f43..e9f3344674 100644
--- a/pages/traits/environment/optimum_phenotype_with_numerical_limits.html
+++ b/pages/traits/environment/optimum_phenotype_with_numerical_limits.html
@@ -294,7 +294,7 @@ kg-microbe context
METPO:1000536 [-3.285, -0.855, -3.233, +0.883, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -302,7 +302,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/oxygen_preference.html b/pages/traits/environment/oxygen_preference.html
index c4d7afedd4..47ad42fc4d 100644
--- a/pages/traits/environment/oxygen_preference.html
+++ b/pages/traits/environment/oxygen_preference.html
@@ -338,7 +338,7 @@ kg-microbe context
METPO:1000601 [-1.145, -2.522, -2.827, -0.321, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -346,7 +346,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/ph_delta.html b/pages/traits/environment/ph_delta.html
index f8f37fb49b..b81fda5c8f 100644
--- a/pages/traits/environment/ph_delta.html
+++ b/pages/traits/environment/ph_delta.html
@@ -285,7 +285,7 @@ kg-microbe context
METPO:1000232 [-1.997, -1.168, -3.290, +0.199, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -293,7 +293,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/ph_delta_high.html b/pages/traits/environment/ph_delta_high.html
index 5848f7cfe0..e4f95270fc 100644
--- a/pages/traits/environment/ph_delta_high.html
+++ b/pages/traits/environment/ph_delta_high.html
@@ -290,7 +290,7 @@ kg-microbe context
METPO:1000478 [-0.781, -1.339, -0.603, +3.022, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -298,7 +298,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/ph_delta_low.html b/pages/traits/environment/ph_delta_low.html
index 2876135c6a..9c0a1c16b3 100644
--- a/pages/traits/environment/ph_delta_low.html
+++ b/pages/traits/environment/ph_delta_low.html
@@ -239,7 +239,7 @@ kg-microbe context
METPO:1000474 [-1.168, -0.624, -1.427, +0.785, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -247,7 +247,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/ph_delta_mid1.html b/pages/traits/environment/ph_delta_mid1.html
index b64c5ffcdd..a6f88a47b2 100644
--- a/pages/traits/environment/ph_delta_mid1.html
+++ b/pages/traits/environment/ph_delta_mid1.html
@@ -273,7 +273,7 @@ kg-microbe context
METPO:1000475 [-0.998, -0.536, -1.733, +2.157, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -281,7 +281,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/ph_delta_mid2.html b/pages/traits/environment/ph_delta_mid2.html
index 35813a22d4..020f391d65 100644
--- a/pages/traits/environment/ph_delta_mid2.html
+++ b/pages/traits/environment/ph_delta_mid2.html
@@ -256,7 +256,7 @@ kg-microbe context
METPO:1000476 [-2.192, -1.235, -2.140, +3.297, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -264,7 +264,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/ph_delta_mid3.html b/pages/traits/environment/ph_delta_mid3.html
index 7e7ac85fa4..533638eb7d 100644
--- a/pages/traits/environment/ph_delta_mid3.html
+++ b/pages/traits/environment/ph_delta_mid3.html
@@ -273,7 +273,7 @@ kg-microbe context
METPO:1000477 [-3.578, -1.920, -3.431, +0.231, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -281,7 +281,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/ph_delta_very_low.html b/pages/traits/environment/ph_delta_very_low.html
index f07b85df3f..d58bc96063 100644
--- a/pages/traits/environment/ph_delta_very_low.html
+++ b/pages/traits/environment/ph_delta_very_low.html
@@ -239,7 +239,7 @@ kg-microbe context
METPO:1000473 [+1.107, -0.229, -3.624, +2.954, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -247,7 +247,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/ph_growth_preference.html b/pages/traits/environment/ph_growth_preference.html
index 96219f3c7a..edc1ae68f9 100644
--- a/pages/traits/environment/ph_growth_preference.html
+++ b/pages/traits/environment/ph_growth_preference.html
@@ -338,7 +338,7 @@ kg-microbe context
METPO:1003000 [-4.334, -2.942, -3.256, -1.316, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -346,7 +346,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/ph_optimum.html b/pages/traits/environment/ph_optimum.html
index d2d52ef268..52b232d698 100644
--- a/pages/traits/environment/ph_optimum.html
+++ b/pages/traits/environment/ph_optimum.html
@@ -315,7 +315,7 @@ kg-microbe context
METPO:1000331 [-2.375, -0.997, -3.355, +0.508, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -323,7 +323,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/ph_optimum_high.html b/pages/traits/environment/ph_optimum_high.html
index e5050e0e5e..80ce8b8c4f 100644
--- a/pages/traits/environment/ph_optimum_high.html
+++ b/pages/traits/environment/ph_optimum_high.html
@@ -296,7 +296,7 @@ kg-microbe context
METPO:1000458 [-1.238, -0.414, -3.609, +2.089, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -304,7 +304,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/ph_optimum_low.html b/pages/traits/environment/ph_optimum_low.html
index 97685ca44d..65caf8cecb 100644
--- a/pages/traits/environment/ph_optimum_low.html
+++ b/pages/traits/environment/ph_optimum_low.html
@@ -255,7 +255,7 @@ kg-microbe context
METPO:1000455 [-1.126, -1.778, -1.235, -0.455, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -263,7 +263,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/ph_optimum_mid1.html b/pages/traits/environment/ph_optimum_mid1.html
index f12081b77b..2c908d0914 100644
--- a/pages/traits/environment/ph_optimum_mid1.html
+++ b/pages/traits/environment/ph_optimum_mid1.html
@@ -277,7 +277,7 @@ kg-microbe context
METPO:1000456 [-0.020, -0.772, -0.806, +1.582, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -285,7 +285,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/ph_optimum_mid2.html b/pages/traits/environment/ph_optimum_mid2.html
index a4ceca9abc..79c08ff240 100644
--- a/pages/traits/environment/ph_optimum_mid2.html
+++ b/pages/traits/environment/ph_optimum_mid2.html
@@ -279,7 +279,7 @@ kg-microbe context
METPO:1000457 [-2.141, -1.296, -1.380, +3.241, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -287,7 +287,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/ph_phenotype_with_numerical_limits.html b/pages/traits/environment/ph_phenotype_with_numerical_limits.html
index 22a16fe0d1..5415e79aae 100644
--- a/pages/traits/environment/ph_phenotype_with_numerical_limits.html
+++ b/pages/traits/environment/ph_phenotype_with_numerical_limits.html
@@ -362,7 +362,7 @@ kg-microbe context
METPO:1000531 [-2.393, -1.211, -4.380, +0.001, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -370,7 +370,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/ph_range.html b/pages/traits/environment/ph_range.html
index cfd4b265c3..46f1219e17 100644
--- a/pages/traits/environment/ph_range.html
+++ b/pages/traits/environment/ph_range.html
@@ -302,7 +302,7 @@ kg-microbe context
METPO:1000332 [-2.054, -2.222, -3.843, +1.421, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -310,7 +310,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/ph_range_high.html b/pages/traits/environment/ph_range_high.html
index 783e2b78f2..e21969cec8 100644
--- a/pages/traits/environment/ph_range_high.html
+++ b/pages/traits/environment/ph_range_high.html
@@ -279,7 +279,7 @@ kg-microbe context
METPO:1000464 [-2.572, -2.517, -2.299, +3.236, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -287,7 +287,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/ph_range_low.html b/pages/traits/environment/ph_range_low.html
index a8186abb9c..8b42c9c815 100644
--- a/pages/traits/environment/ph_range_low.html
+++ b/pages/traits/environment/ph_range_low.html
@@ -264,7 +264,7 @@ kg-microbe context
METPO:1000460 [-1.456, -1.684, -1.159, +1.360, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -272,7 +272,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/ph_range_mid1.html b/pages/traits/environment/ph_range_mid1.html
index 4d2b693d33..0319f22e22 100644
--- a/pages/traits/environment/ph_range_mid1.html
+++ b/pages/traits/environment/ph_range_mid1.html
@@ -262,7 +262,7 @@ kg-microbe context
METPO:1000461 [-1.688, -1.528, -1.234, +3.477, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -270,7 +270,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/ph_range_mid2.html b/pages/traits/environment/ph_range_mid2.html
index c6d23fa769..c65127fa52 100644
--- a/pages/traits/environment/ph_range_mid2.html
+++ b/pages/traits/environment/ph_range_mid2.html
@@ -281,7 +281,7 @@ kg-microbe context
METPO:1000462 [-1.204, -0.579, -2.315, +2.278, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -289,7 +289,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/ph_range_mid3.html b/pages/traits/environment/ph_range_mid3.html
index 4b22725e01..aaac303bbc 100644
--- a/pages/traits/environment/ph_range_mid3.html
+++ b/pages/traits/environment/ph_range_mid3.html
@@ -281,7 +281,7 @@ kg-microbe context
METPO:1000463 [-2.494, -1.885, -1.584, +2.458, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -289,7 +289,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/ph_range_very_low.html b/pages/traits/environment/ph_range_very_low.html
index 168d70743a..c04bbaebaf 100644
--- a/pages/traits/environment/ph_range_very_low.html
+++ b/pages/traits/environment/ph_range_very_low.html
@@ -249,7 +249,7 @@ kg-microbe context
METPO:1000459 [-0.855, -1.364, -1.665, +2.241, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -257,7 +257,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/piezophilic.html b/pages/traits/environment/piezophilic.html
index a31923a10d..c893f689d2 100644
--- a/pages/traits/environment/piezophilic.html
+++ b/pages/traits/environment/piezophilic.html
@@ -301,7 +301,7 @@ kg-microbe context
METPO:1000059 [-2.682, -2.070, -3.656, -0.652, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -309,7 +309,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/piezotolerant.html b/pages/traits/environment/piezotolerant.html
index 09d0f89783..d8771c6a61 100644
--- a/pages/traits/environment/piezotolerant.html
+++ b/pages/traits/environment/piezotolerant.html
@@ -256,7 +256,7 @@ kg-microbe context
METPO:1000059 [-2.682, -2.070, -3.656, -0.652, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -264,7 +264,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/pressure_delta.html b/pages/traits/environment/pressure_delta.html
index 951de6adbf..7bf1fcf275 100644
--- a/pages/traits/environment/pressure_delta.html
+++ b/pages/traits/environment/pressure_delta.html
@@ -287,7 +287,7 @@ kg-microbe context
METPO:1000059 [-2.682, -2.070, -3.656, -0.652, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -295,7 +295,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/pressure_optimum.html b/pages/traits/environment/pressure_optimum.html
index f6e656b894..34aeba8dff 100644
--- a/pages/traits/environment/pressure_optimum.html
+++ b/pages/traits/environment/pressure_optimum.html
@@ -230,7 +230,7 @@ kg-microbe context
METPO:1000059 [-2.682, -2.070, -3.656, -0.652, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -238,7 +238,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/pressure_range.html b/pages/traits/environment/pressure_range.html
index 25fb00181f..df6e520d6e 100644
--- a/pages/traits/environment/pressure_range.html
+++ b/pages/traits/environment/pressure_range.html
@@ -230,7 +230,7 @@ kg-microbe context
METPO:1000059 [-2.682, -2.070, -3.656, -0.652, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -238,7 +238,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/psychrophilic.html b/pages/traits/environment/psychrophilic.html
index 80283e1073..0d64d85db8 100644
--- a/pages/traits/environment/psychrophilic.html
+++ b/pages/traits/environment/psychrophilic.html
@@ -298,7 +298,7 @@ kg-microbe context
METPO:1000614 [-77.153, +7.937, -20.243, -1.295, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -306,7 +306,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/psychrotolerant.html b/pages/traits/environment/psychrotolerant.html
index b758aea2eb..3d6347b0af 100644
--- a/pages/traits/environment/psychrotolerant.html
+++ b/pages/traits/environment/psychrotolerant.html
@@ -247,7 +247,7 @@ kg-microbe context
METPO:1000618 [-0.575, -4.190, -4.805, +2.930, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -255,7 +255,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/radiotolerant.html b/pages/traits/environment/radiotolerant.html
index fcf3573156..fe7a0428ec 100644
--- a/pages/traits/environment/radiotolerant.html
+++ b/pages/traits/environment/radiotolerant.html
@@ -365,7 +365,7 @@ kg-microbe context
METPO:1000059 [-2.682, -2.070, -3.656, -0.652, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -373,7 +373,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/salinity_phenotype_with_numerical_limits.html b/pages/traits/environment/salinity_phenotype_with_numerical_limits.html
index 37d3ea824c..6ce91925c1 100644
--- a/pages/traits/environment/salinity_phenotype_with_numerical_limits.html
+++ b/pages/traits/environment/salinity_phenotype_with_numerical_limits.html
@@ -311,7 +311,7 @@ kg-microbe context
METPO:1000532 [-3.600, -2.074, -2.363, +0.233, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -319,7 +319,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/slightly_halophilic.html b/pages/traits/environment/slightly_halophilic.html
index cdecaf76a4..a93fa933e4 100644
--- a/pages/traits/environment/slightly_halophilic.html
+++ b/pages/traits/environment/slightly_halophilic.html
@@ -264,7 +264,7 @@ kg-microbe context
METPO:1000625 [-3.580, -0.620, -1.375, -1.507, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -272,7 +272,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/stenohaline.html b/pages/traits/environment/stenohaline.html
index a87a362a44..6eb8f4de09 100644
--- a/pages/traits/environment/stenohaline.html
+++ b/pages/traits/environment/stenohaline.html
@@ -383,7 +383,7 @@ kg-microbe context
METPO:1000626 [-3.586, -1.523, +0.846, -3.582, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -391,7 +391,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/strictly_anaerobic.html b/pages/traits/environment/strictly_anaerobic.html
index f489376da8..275a4e2e67 100644
--- a/pages/traits/environment/strictly_anaerobic.html
+++ b/pages/traits/environment/strictly_anaerobic.html
@@ -239,7 +239,7 @@ kg-microbe context
METPO:1000611 [-2.094, -2.231, -3.010, +0.611, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -247,7 +247,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/temperature_delta.html b/pages/traits/environment/temperature_delta.html
index 9c58a002b3..3479e29099 100644
--- a/pages/traits/environment/temperature_delta.html
+++ b/pages/traits/environment/temperature_delta.html
@@ -249,7 +249,7 @@ kg-microbe context
METPO:1000303 [-4.128, -0.585, -3.451, +0.762, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -257,7 +257,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/temperature_delta_high.html b/pages/traits/environment/temperature_delta_high.html
index e214a1113a..4950c0a8f9 100644
--- a/pages/traits/environment/temperature_delta_high.html
+++ b/pages/traits/environment/temperature_delta_high.html
@@ -341,7 +341,7 @@ kg-microbe context
METPO:1000487 [-0.692, +0.274, -0.785, +3.229, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -349,7 +349,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/temperature_delta_low.html b/pages/traits/environment/temperature_delta_low.html
index 4e39519cbf..8c94aed919 100644
--- a/pages/traits/environment/temperature_delta_low.html
+++ b/pages/traits/environment/temperature_delta_low.html
@@ -256,7 +256,7 @@ kg-microbe context
METPO:1000484 [+0.568, +2.604, -3.872, -0.321, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -264,7 +264,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/temperature_delta_mid1.html b/pages/traits/environment/temperature_delta_mid1.html
index 74dc0409ea..414564aed3 100644
--- a/pages/traits/environment/temperature_delta_mid1.html
+++ b/pages/traits/environment/temperature_delta_mid1.html
@@ -273,7 +273,7 @@ kg-microbe context
METPO:1000485 [+0.841, -0.698, +1.716, +3.076, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -281,7 +281,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/temperature_delta_mid2.html b/pages/traits/environment/temperature_delta_mid2.html
index a99990c643..4f0db15b4c 100644
--- a/pages/traits/environment/temperature_delta_mid2.html
+++ b/pages/traits/environment/temperature_delta_mid2.html
@@ -256,7 +256,7 @@ kg-microbe context
METPO:1000486 [-3.073, +0.032, -2.627, +2.668, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -264,7 +264,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/temperature_delta_very_low.html b/pages/traits/environment/temperature_delta_very_low.html
index 5848494eed..77d2020577 100644
--- a/pages/traits/environment/temperature_delta_very_low.html
+++ b/pages/traits/environment/temperature_delta_very_low.html
@@ -330,7 +330,7 @@ kg-microbe context
METPO:1000483 [-4.820, -3.932, -4.489, +2.974, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -338,7 +338,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/temperature_optimum.html b/pages/traits/environment/temperature_optimum.html
index 6917dd6401..180099cf02 100644
--- a/pages/traits/environment/temperature_optimum.html
+++ b/pages/traits/environment/temperature_optimum.html
@@ -270,7 +270,7 @@ kg-microbe context
METPO:1000304 [-3.535, +0.422, -2.014, +1.133, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -278,7 +278,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/temperature_optimum_high.html b/pages/traits/environment/temperature_optimum_high.html
index 72acbf2bb6..1c46ae6f57 100644
--- a/pages/traits/environment/temperature_optimum_high.html
+++ b/pages/traits/environment/temperature_optimum_high.html
@@ -360,7 +360,7 @@ kg-microbe context
METPO:1000447 [+1.114, +1.991, -0.944, +1.377, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -368,7 +368,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/temperature_optimum_low.html b/pages/traits/environment/temperature_optimum_low.html
index 5539a14269..ae45a3c0b8 100644
--- a/pages/traits/environment/temperature_optimum_low.html
+++ b/pages/traits/environment/temperature_optimum_low.html
@@ -294,7 +294,7 @@ kg-microbe context
METPO:1000442 [-5.433, -0.515, -1.647, +0.570, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -302,7 +302,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/temperature_optimum_mid1.html b/pages/traits/environment/temperature_optimum_mid1.html
index b76b5053cd..0dfe9609ee 100644
--- a/pages/traits/environment/temperature_optimum_mid1.html
+++ b/pages/traits/environment/temperature_optimum_mid1.html
@@ -277,7 +277,7 @@ kg-microbe context
METPO:1000443 [-2.358, -0.748, +0.437, +3.286, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -285,7 +285,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/temperature_optimum_mid2.html b/pages/traits/environment/temperature_optimum_mid2.html
index 40ae02ea3a..8fccd033b5 100644
--- a/pages/traits/environment/temperature_optimum_mid2.html
+++ b/pages/traits/environment/temperature_optimum_mid2.html
@@ -260,7 +260,7 @@ kg-microbe context
METPO:1000444 [-3.661, -4.062, -0.551, +2.283, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -268,7 +268,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/temperature_optimum_mid3.html b/pages/traits/environment/temperature_optimum_mid3.html
index 793bbf064d..6965af9c90 100644
--- a/pages/traits/environment/temperature_optimum_mid3.html
+++ b/pages/traits/environment/temperature_optimum_mid3.html
@@ -243,7 +243,7 @@ kg-microbe context
METPO:1000445 [-0.039, -2.246, -0.582, +1.156, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -251,7 +251,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/temperature_optimum_mid4.html b/pages/traits/environment/temperature_optimum_mid4.html
index ab75be8aab..54eed21b6c 100644
--- a/pages/traits/environment/temperature_optimum_mid4.html
+++ b/pages/traits/environment/temperature_optimum_mid4.html
@@ -311,7 +311,7 @@ kg-microbe context
METPO:1000446 [-0.375, -2.796, -0.478, +0.320, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -319,7 +319,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/temperature_optimum_very_low.html b/pages/traits/environment/temperature_optimum_very_low.html
index 26be32fe0a..b9997cea0a 100644
--- a/pages/traits/environment/temperature_optimum_very_low.html
+++ b/pages/traits/environment/temperature_optimum_very_low.html
@@ -383,7 +383,7 @@ kg-microbe context
METPO:1000441 [-4.303, -0.200, +0.305, +0.724, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -391,7 +391,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/temperature_phenotype_with_numerical_limits.html b/pages/traits/environment/temperature_phenotype_with_numerical_limits.html
index 4ce4d66499..03fa3e309e 100644
--- a/pages/traits/environment/temperature_phenotype_with_numerical_limits.html
+++ b/pages/traits/environment/temperature_phenotype_with_numerical_limits.html
@@ -277,7 +277,7 @@ kg-microbe context
METPO:1000533 [-3.985, -0.177, -3.580, +0.367, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -285,7 +285,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/temperature_preference.html b/pages/traits/environment/temperature_preference.html
index d763cc25b4..38455e5fb6 100644
--- a/pages/traits/environment/temperature_preference.html
+++ b/pages/traits/environment/temperature_preference.html
@@ -349,7 +349,7 @@ kg-microbe context
METPO:1000613 [-1.543, -2.658, -5.268, +1.287, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -357,7 +357,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/temperature_range.html b/pages/traits/environment/temperature_range.html
index 11c044ce68..d151f151d0 100644
--- a/pages/traits/environment/temperature_range.html
+++ b/pages/traits/environment/temperature_range.html
@@ -338,7 +338,7 @@ kg-microbe context
METPO:1000306 [-3.058, -0.353, -2.836, +1.133, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -346,7 +346,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/temperature_range_high.html b/pages/traits/environment/temperature_range_high.html
index 189df76df2..5d4cc616d2 100644
--- a/pages/traits/environment/temperature_range_high.html
+++ b/pages/traits/environment/temperature_range_high.html
@@ -275,7 +275,7 @@ kg-microbe context
METPO:1000454 [-0.542, -0.105, +0.004, +2.753, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -283,7 +283,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/temperature_range_low.html b/pages/traits/environment/temperature_range_low.html
index 81cc32bca9..3ee77bb67a 100644
--- a/pages/traits/environment/temperature_range_low.html
+++ b/pages/traits/environment/temperature_range_low.html
@@ -260,7 +260,7 @@ kg-microbe context
METPO:1000449 [-2.321, -1.131, -2.283, +3.294, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -268,7 +268,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/temperature_range_mid1.html b/pages/traits/environment/temperature_range_mid1.html
index 17d4e2cbbb..0adc3f0ece 100644
--- a/pages/traits/environment/temperature_range_mid1.html
+++ b/pages/traits/environment/temperature_range_mid1.html
@@ -260,7 +260,7 @@ kg-microbe context
METPO:1000450 [-1.575, -0.696, -2.370, +3.825, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -268,7 +268,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/temperature_range_mid2.html b/pages/traits/environment/temperature_range_mid2.html
index 8faf8a1d23..c2bb7a716f 100644
--- a/pages/traits/environment/temperature_range_mid2.html
+++ b/pages/traits/environment/temperature_range_mid2.html
@@ -294,7 +294,7 @@ kg-microbe context
METPO:1000451 [-1.548, -0.208, -2.721, +3.019, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -302,7 +302,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/temperature_range_mid3.html b/pages/traits/environment/temperature_range_mid3.html
index d39517122a..58662f0d2f 100644
--- a/pages/traits/environment/temperature_range_mid3.html
+++ b/pages/traits/environment/temperature_range_mid3.html
@@ -294,7 +294,7 @@ kg-microbe context
METPO:1000452 [-1.351, +1.368, -2.814, +2.551, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -302,7 +302,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/temperature_range_mid4.html b/pages/traits/environment/temperature_range_mid4.html
index 6d573ef1df..f99b26da75 100644
--- a/pages/traits/environment/temperature_range_mid4.html
+++ b/pages/traits/environment/temperature_range_mid4.html
@@ -311,7 +311,7 @@ kg-microbe context
METPO:1000453 [-2.152, +0.301, -2.280, +3.386, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -319,7 +319,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/temperature_range_very_low.html b/pages/traits/environment/temperature_range_very_low.html
index a1f464985b..052a98f69d 100644
--- a/pages/traits/environment/temperature_range_very_low.html
+++ b/pages/traits/environment/temperature_range_very_low.html
@@ -360,7 +360,7 @@ kg-microbe context
METPO:1000448 [-3.031, -0.161, -1.423, +4.596, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -368,7 +368,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/thermophilic.html b/pages/traits/environment/thermophilic.html
index 0029879f58..340b9acbab 100644
--- a/pages/traits/environment/thermophilic.html
+++ b/pages/traits/environment/thermophilic.html
@@ -281,7 +281,7 @@ kg-microbe context
METPO:1000616 [+21.170, -11.999, -10.457, +4.736, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -289,7 +289,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/thermotolerant.html b/pages/traits/environment/thermotolerant.html
index a999d910bb..c3cdb2445b 100644
--- a/pages/traits/environment/thermotolerant.html
+++ b/pages/traits/environment/thermotolerant.html
@@ -264,7 +264,7 @@ kg-microbe context
METPO:1000619 [-1.721, -2.562, -3.565, +2.040, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -272,7 +272,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/uv_radiation_tolerant.html b/pages/traits/environment/uv_radiation_tolerant.html
index 56dbdc72f5..a9e07ef799 100644
--- a/pages/traits/environment/uv_radiation_tolerant.html
+++ b/pages/traits/environment/uv_radiation_tolerant.html
@@ -273,7 +273,7 @@ kg-microbe context
METPO:1000059 [-2.682, -2.070, -3.656, -0.652, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -281,7 +281,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/xerophilic.html b/pages/traits/environment/xerophilic.html
index 460c9f9eb1..b3f8ca9b5a 100644
--- a/pages/traits/environment/xerophilic.html
+++ b/pages/traits/environment/xerophilic.html
@@ -239,7 +239,7 @@ kg-microbe context
METPO:1000059 [-2.682, -2.070, -3.656, -0.652, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -247,7 +247,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/environment/zinc_tolerant.html b/pages/traits/environment/zinc_tolerant.html
index 89414c2453..cb5a8c6fe1 100644
--- a/pages/traits/environment/zinc_tolerant.html
+++ b/pages/traits/environment/zinc_tolerant.html
@@ -362,7 +362,7 @@ kg-microbe context
METPO:1000059 [-2.682, -2.070, -3.656, -0.652, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -370,7 +370,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/genomics/codon_usage_bias.html b/pages/traits/genomics/codon_usage_bias.html
index e20d9a20f1..875ca928e7 100644
--- a/pages/traits/genomics/codon_usage_bias.html
+++ b/pages/traits/genomics/codon_usage_bias.html
@@ -228,7 +228,7 @@ kg-microbe context
METPO:1000188 [-0.956, -1.962, -3.148, +1.274, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -236,7 +236,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/genomics/crispr_cas_system.html b/pages/traits/genomics/crispr_cas_system.html
index 8856d377c5..d598833b66 100644
--- a/pages/traits/genomics/crispr_cas_system.html
+++ b/pages/traits/genomics/crispr_cas_system.html
@@ -320,7 +320,7 @@ kg-microbe context
METPO:1000188 [-0.956, -1.962, -3.148, +1.274, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -328,7 +328,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/genomics/gc_content.html b/pages/traits/genomics/gc_content.html
index 0d42b48d93..768da5ed3d 100644
--- a/pages/traits/genomics/gc_content.html
+++ b/pages/traits/genomics/gc_content.html
@@ -330,7 +330,7 @@ kg-microbe context
METPO:1000127 [-0.539, -1.149, -2.445, +1.588, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -338,7 +338,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/genomics/gc_high.html b/pages/traits/genomics/gc_high.html
index 2dc02371f1..ae30a35ce7 100644
--- a/pages/traits/genomics/gc_high.html
+++ b/pages/traits/genomics/gc_high.html
@@ -273,7 +273,7 @@ kg-microbe context
METPO:1000432 [+0.921, +1.707, +0.625, +3.297, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -281,7 +281,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/genomics/gc_low.html b/pages/traits/genomics/gc_low.html
index b0fc6eb491..7eabda810c 100644
--- a/pages/traits/genomics/gc_low.html
+++ b/pages/traits/genomics/gc_low.html
@@ -239,7 +239,7 @@ kg-microbe context
METPO:1000429 [-2.626, -2.012, +2.413, +3.679, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -247,7 +247,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/genomics/gc_mid1.html b/pages/traits/genomics/gc_mid1.html
index 38c9ca3b1b..48e8c3560f 100644
--- a/pages/traits/genomics/gc_mid1.html
+++ b/pages/traits/genomics/gc_mid1.html
@@ -222,7 +222,7 @@ kg-microbe context
METPO:1000430 [-2.804, -2.753, -0.396, +5.171, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -230,7 +230,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/genomics/gc_mid2.html b/pages/traits/genomics/gc_mid2.html
index 2972917f1d..135fae00b0 100644
--- a/pages/traits/genomics/gc_mid2.html
+++ b/pages/traits/genomics/gc_mid2.html
@@ -256,7 +256,7 @@ kg-microbe context
METPO:1000431 [-0.166, -0.334, -3.408, +1.036, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -264,7 +264,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/genomics/gc_skew.html b/pages/traits/genomics/gc_skew.html
index ce9e356f09..036d0d28bb 100644
--- a/pages/traits/genomics/gc_skew.html
+++ b/pages/traits/genomics/gc_skew.html
@@ -256,7 +256,7 @@ kg-microbe context
METPO:1000188 [-0.956, -1.962, -3.148, +1.274, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -264,7 +264,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/genomics/genome_size.html b/pages/traits/genomics/genome_size.html
index 8ecc9845d1..80d1d416a0 100644
--- a/pages/traits/genomics/genome_size.html
+++ b/pages/traits/genomics/genome_size.html
@@ -256,7 +256,7 @@ kg-microbe context
METPO:1000188 [-0.956, -1.962, -3.148, +1.274, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -264,7 +264,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/genomics/genome_streamlining.html b/pages/traits/genomics/genome_streamlining.html
index 2474d940e5..951a01accd 100644
--- a/pages/traits/genomics/genome_streamlining.html
+++ b/pages/traits/genomics/genome_streamlining.html
@@ -245,7 +245,7 @@ kg-microbe context
METPO:1000188 [-0.956, -1.962, -3.148, +1.274, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -253,7 +253,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/genomics/genomic_island.html b/pages/traits/genomics/genomic_island.html
index 6a002cf20c..ea719d569c 100644
--- a/pages/traits/genomics/genomic_island.html
+++ b/pages/traits/genomics/genomic_island.html
@@ -222,7 +222,7 @@ kg-microbe context
METPO:1000188 [-0.956, -1.962, -3.148, +1.274, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -230,7 +230,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/genomics/mobile_genetic_element.html b/pages/traits/genomics/mobile_genetic_element.html
index 81eb5bb2a3..aac835a04b 100644
--- a/pages/traits/genomics/mobile_genetic_element.html
+++ b/pages/traits/genomics/mobile_genetic_element.html
@@ -356,7 +356,7 @@ kg-microbe context
METPO:1000188 [-0.956, -1.962, -3.148, +1.274, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -364,7 +364,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/genomics/pangenome_openness.html b/pages/traits/genomics/pangenome_openness.html
index 0cf5440663..d110c348a1 100644
--- a/pages/traits/genomics/pangenome_openness.html
+++ b/pages/traits/genomics/pangenome_openness.html
@@ -273,7 +273,7 @@ kg-microbe context
METPO:1000188 [-0.956, -1.962, -3.148, +1.274, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -281,7 +281,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/genomics/plasmid_carriage.html b/pages/traits/genomics/plasmid_carriage.html
index 2877ab7425..be3af15978 100644
--- a/pages/traits/genomics/plasmid_carriage.html
+++ b/pages/traits/genomics/plasmid_carriage.html
@@ -256,7 +256,7 @@ kg-microbe context
METPO:1000188 [-0.956, -1.962, -3.148, +1.274, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -264,7 +264,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/genomics/ploidy.html b/pages/traits/genomics/ploidy.html
index c14ccb1434..ee18b1991b 100644
--- a/pages/traits/genomics/ploidy.html
+++ b/pages/traits/genomics/ploidy.html
@@ -246,7 +246,7 @@ kg-microbe context
METPO:1000188 [-0.956, -1.962, -3.148, +1.274, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -254,7 +254,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/genomics/prophage.html b/pages/traits/genomics/prophage.html
index 516f2fc40f..a6ee174e25 100644
--- a/pages/traits/genomics/prophage.html
+++ b/pages/traits/genomics/prophage.html
@@ -273,7 +273,7 @@ kg-microbe context
METPO:1000188 [-0.956, -1.962, -3.148, +1.274, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -281,7 +281,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/genomics/restriction_modification_system.html b/pages/traits/genomics/restriction_modification_system.html
index 4609470fb9..62538f2c71 100644
--- a/pages/traits/genomics/restriction_modification_system.html
+++ b/pages/traits/genomics/restriction_modification_system.html
@@ -303,7 +303,7 @@ kg-microbe context
METPO:1000188 [-0.956, -1.962, -3.148, +1.274, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -311,7 +311,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/genomics/rrna_operon_copy_number.html b/pages/traits/genomics/rrna_operon_copy_number.html
index 885e7e0dc4..11a58dc6a7 100644
--- a/pages/traits/genomics/rrna_operon_copy_number.html
+++ b/pages/traits/genomics/rrna_operon_copy_number.html
@@ -222,7 +222,7 @@ kg-microbe context
METPO:1000188 [-0.956, -1.962, -3.148, +1.274, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -230,7 +230,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/genomics/transposable_element.html b/pages/traits/genomics/transposable_element.html
index afeeb99312..b154aedbdf 100644
--- a/pages/traits/genomics/transposable_element.html
+++ b/pages/traits/genomics/transposable_element.html
@@ -241,7 +241,7 @@ kg-microbe context
METPO:1000188 [-0.956, -1.962, -3.148, +1.274, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -249,7 +249,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/accumulates.html b/pages/traits/metabolism/accumulates.html
index e5939c65f4..3ce7f52c8a 100644
--- a/pages/traits/metabolism/accumulates.html
+++ b/pages/traits/metabolism/accumulates.html
@@ -91,7 +91,7 @@ kg-microbe context
METPO:2000210 [-2.005, -0.815, -3.661, -0.676, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -99,7 +99,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/acetoclastic_methanogenesis.html b/pages/traits/metabolism/acetoclastic_methanogenesis.html
index 167b2d1d3f..81c6e74518 100644
--- a/pages/traits/metabolism/acetoclastic_methanogenesis.html
+++ b/pages/traits/metabolism/acetoclastic_methanogenesis.html
@@ -82,7 +82,7 @@ Synonyms (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/metabolism/acetogenesis.html b/pages/traits/metabolism/acetogenesis.html
index 3e497374dd..600f89e86f 100644
--- a/pages/traits/metabolism/acetogenesis.html
+++ b/pages/traits/metabolism/acetogenesis.html
@@ -439,7 +439,7 @@ kg-microbe context
METPO:1000845 [-0.195, -1.369, -0.856, +1.197, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -447,7 +447,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/acetone_butanol_ethanol_fermentation.html b/pages/traits/metabolism/acetone_butanol_ethanol_fermentation.html
index 8908597505..e93f94f50d 100644
--- a/pages/traits/metabolism/acetone_butanol_ethanol_fermentation.html
+++ b/pages/traits/metabolism/acetone_butanol_ethanol_fermentation.html
@@ -84,7 +84,7 @@ Synonyms (2)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/metabolism/aerobic_respiration.html b/pages/traits/metabolism/aerobic_respiration.html
index cd8af26bff..109dbbc3fc 100644
--- a/pages/traits/metabolism/aerobic_respiration.html
+++ b/pages/traits/metabolism/aerobic_respiration.html
@@ -295,7 +295,7 @@ kg-microbe context
METPO:1000801 [-0.171, -2.146, -1.478, +1.150, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -303,7 +303,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/anaerobic_ammonium_oxidation.html b/pages/traits/metabolism/anaerobic_ammonium_oxidation.html
index c3afe6bdaf..4ddf51b669 100644
--- a/pages/traits/metabolism/anaerobic_ammonium_oxidation.html
+++ b/pages/traits/metabolism/anaerobic_ammonium_oxidation.html
@@ -84,7 +84,7 @@ Synonyms (2)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/metabolism/anaerobic_oxidation_of_methane.html b/pages/traits/metabolism/anaerobic_oxidation_of_methane.html
index 1f42697a5b..5ad20b1ea5 100644
--- a/pages/traits/metabolism/anaerobic_oxidation_of_methane.html
+++ b/pages/traits/metabolism/anaerobic_oxidation_of_methane.html
@@ -314,7 +314,7 @@ kg-microbe context
METPO:1000802 [-0.426, -1.069, -1.023, +1.207, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -322,7 +322,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/anaerobic_respiration.html b/pages/traits/metabolism/anaerobic_respiration.html
index df95c8837f..2b5dad3727 100644
--- a/pages/traits/metabolism/anaerobic_respiration.html
+++ b/pages/traits/metabolism/anaerobic_respiration.html
@@ -420,7 +420,7 @@ kg-microbe context
METPO:1000802 [-0.426, -1.069, -1.023, +1.207, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -428,7 +428,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/anoxygenic_photosynthesis.html b/pages/traits/metabolism/anoxygenic_photosynthesis.html
index 10ddf75d98..97a1bac5c3 100644
--- a/pages/traits/metabolism/anoxygenic_photosynthesis.html
+++ b/pages/traits/metabolism/anoxygenic_photosynthesis.html
@@ -297,7 +297,7 @@ kg-microbe context
METPO:1000060 [-1.052, -1.766, -1.194, +0.291, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -305,7 +305,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/aromatic_compound_degradation.html b/pages/traits/metabolism/aromatic_compound_degradation.html
index 8b2090272f..42147c1986 100644
--- a/pages/traits/metabolism/aromatic_compound_degradation.html
+++ b/pages/traits/metabolism/aromatic_compound_degradation.html
@@ -91,7 +91,7 @@ Synonyms (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/metabolism/aromatic_hydrocarbon_degradation.html b/pages/traits/metabolism/aromatic_hydrocarbon_degradation.html
index ee0201aa64..df4d9913ff 100644
--- a/pages/traits/metabolism/aromatic_hydrocarbon_degradation.html
+++ b/pages/traits/metabolism/aromatic_hydrocarbon_degradation.html
@@ -84,7 +84,7 @@ Synonyms (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/metabolism/arsenate_respiration.html b/pages/traits/metabolism/arsenate_respiration.html
index 934af5c4f1..0bae8ee53f 100644
--- a/pages/traits/metabolism/arsenate_respiration.html
+++ b/pages/traits/metabolism/arsenate_respiration.html
@@ -84,7 +84,7 @@ Synonyms (2)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/metabolism/arsenite_oxidation.html b/pages/traits/metabolism/arsenite_oxidation.html
index 1e1dff07f9..7866962729 100644
--- a/pages/traits/metabolism/arsenite_oxidation.html
+++ b/pages/traits/metabolism/arsenite_oxidation.html
@@ -84,7 +84,7 @@ Synonyms (2)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/metabolism/assimilates.html b/pages/traits/metabolism/assimilates.html
index fa43d6f859..1d3a6d8303 100644
--- a/pages/traits/metabolism/assimilates.html
+++ b/pages/traits/metabolism/assimilates.html
@@ -89,7 +89,7 @@ kg-microbe context
METPO:2000002 [-1.321, -0.339, -2.420, -0.139, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -97,7 +97,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/biopolymer_degradation.html b/pages/traits/metabolism/biopolymer_degradation.html
index 4f29991b7c..1099e5646c 100644
--- a/pages/traits/metabolism/biopolymer_degradation.html
+++ b/pages/traits/metabolism/biopolymer_degradation.html
@@ -409,7 +409,7 @@ kg-microbe context
METPO:1000060 [-1.052, -1.766, -1.194, +0.291, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -417,7 +417,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/builds_acid_from.html b/pages/traits/metabolism/builds_acid_from.html
index f1fdeebb0a..b50dc01e5f 100644
--- a/pages/traits/metabolism/builds_acid_from.html
+++ b/pages/traits/metabolism/builds_acid_from.html
@@ -80,7 +80,7 @@ kg-microbe context
METPO:2000003 [-1.238, -0.104, -2.195, -0.166, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -88,7 +88,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/builds_base_from.html b/pages/traits/metabolism/builds_base_from.html
index 7c448a1b12..7a153cc7e2 100644
--- a/pages/traits/metabolism/builds_base_from.html
+++ b/pages/traits/metabolism/builds_base_from.html
@@ -80,7 +80,7 @@ kg-microbe context
METPO:2000004 [-1.245, -0.324, -2.328, -0.147, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -88,7 +88,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/builds_gas_from.html b/pages/traits/metabolism/builds_gas_from.html
index 8d5fc0aa23..fe0fa3fac6 100644
--- a/pages/traits/metabolism/builds_gas_from.html
+++ b/pages/traits/metabolism/builds_gas_from.html
@@ -80,7 +80,7 @@ kg-microbe context
METPO:2000005 [-1.262, -0.471, -2.520, -0.163, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -88,7 +88,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/butanediol_fermentation.html b/pages/traits/metabolism/butanediol_fermentation.html
index 38b1a0f061..50df4553e2 100644
--- a/pages/traits/metabolism/butanediol_fermentation.html
+++ b/pages/traits/metabolism/butanediol_fermentation.html
@@ -82,7 +82,7 @@ Synonyms (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/metabolism/butyric_acid_fermentation.html b/pages/traits/metabolism/butyric_acid_fermentation.html
index dfb2c2026c..5965ca8123 100644
--- a/pages/traits/metabolism/butyric_acid_fermentation.html
+++ b/pages/traits/metabolism/butyric_acid_fermentation.html
@@ -82,7 +82,7 @@ Synonyms (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/metabolism/cable_bacteria_metabolism.html b/pages/traits/metabolism/cable_bacteria_metabolism.html
index 72e1a7e6c4..fd87f53aba 100644
--- a/pages/traits/metabolism/cable_bacteria_metabolism.html
+++ b/pages/traits/metabolism/cable_bacteria_metabolism.html
@@ -446,7 +446,7 @@ kg-microbe context
METPO:1002003 [+0.053, -0.795, -1.040, -0.108, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -454,7 +454,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/calvin_benson_bassham_cycle.html b/pages/traits/metabolism/calvin_benson_bassham_cycle.html
index 541525a7b3..0c3beb0fca 100644
--- a/pages/traits/metabolism/calvin_benson_bassham_cycle.html
+++ b/pages/traits/metabolism/calvin_benson_bassham_cycle.html
@@ -390,7 +390,7 @@ kg-microbe context
METPO:1000060 [-1.052, -1.766, -1.194, +0.291, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -398,7 +398,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/capable_of.html b/pages/traits/metabolism/capable_of.html
index 92714ae23d..9d8442b721 100644
--- a/pages/traits/metabolism/capable_of.html
+++ b/pages/traits/metabolism/capable_of.html
@@ -78,7 +78,7 @@ kg-microbe context
METPO:2000103 [-0.096, -0.006, -0.056, -0.047, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -86,7 +86,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/carbon_fixation.html b/pages/traits/metabolism/carbon_fixation.html
index 3c43a47003..6b02aeb6a3 100644
--- a/pages/traits/metabolism/carbon_fixation.html
+++ b/pages/traits/metabolism/carbon_fixation.html
@@ -439,7 +439,7 @@ kg-microbe context
METPO:1000060 [-1.052, -1.766, -1.194, +0.291, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -447,7 +447,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/cellulolysis.html b/pages/traits/metabolism/cellulolysis.html
index f1aac1ead1..4f9d086d1a 100644
--- a/pages/traits/metabolism/cellulolysis.html
+++ b/pages/traits/metabolism/cellulolysis.html
@@ -441,7 +441,7 @@ kg-microbe context
METPO:1000060 [-1.052, -1.766, -1.194, +0.291, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -449,7 +449,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/chitinolysis.html b/pages/traits/metabolism/chitinolysis.html
index 6074624e22..5eb66a9c8c 100644
--- a/pages/traits/metabolism/chitinolysis.html
+++ b/pages/traits/metabolism/chitinolysis.html
@@ -350,7 +350,7 @@ kg-microbe context
METPO:1000060 [-1.052, -1.766, -1.194, +0.291, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -358,7 +358,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/citrate_fermentation.html b/pages/traits/metabolism/citrate_fermentation.html
index b5f8962ef7..709ff03992 100644
--- a/pages/traits/metabolism/citrate_fermentation.html
+++ b/pages/traits/metabolism/citrate_fermentation.html
@@ -73,7 +73,7 @@ Parent traits (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/metabolism/compartmentalizes.html b/pages/traits/metabolism/compartmentalizes.html
index 73893024fe..98004a9791 100644
--- a/pages/traits/metabolism/compartmentalizes.html
+++ b/pages/traits/metabolism/compartmentalizes.html
@@ -80,7 +80,7 @@ kg-microbe context
METPO:2000212 [-1.839, -0.962, -3.410, -0.263, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -88,7 +88,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/complete_ammonia_oxidation.html b/pages/traits/metabolism/complete_ammonia_oxidation.html
index dd7349fa6d..22362f1415 100644
--- a/pages/traits/metabolism/complete_ammonia_oxidation.html
+++ b/pages/traits/metabolism/complete_ammonia_oxidation.html
@@ -82,7 +82,7 @@ Synonyms (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/metabolism/dark_hydrogen_oxidation.html b/pages/traits/metabolism/dark_hydrogen_oxidation.html
index de152f353c..e0c5864aea 100644
--- a/pages/traits/metabolism/dark_hydrogen_oxidation.html
+++ b/pages/traits/metabolism/dark_hydrogen_oxidation.html
@@ -82,7 +82,7 @@ Synonyms (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/metabolism/dark_oxidation_of_sulfur_compounds.html b/pages/traits/metabolism/dark_oxidation_of_sulfur_compounds.html
index 42e404777a..a6525fec92 100644
--- a/pages/traits/metabolism/dark_oxidation_of_sulfur_compounds.html
+++ b/pages/traits/metabolism/dark_oxidation_of_sulfur_compounds.html
@@ -82,7 +82,7 @@ Synonyms (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/metabolism/degrades.html b/pages/traits/metabolism/degrades.html
index 0a9a7ff22d..20a0ac1f62 100644
--- a/pages/traits/metabolism/degrades.html
+++ b/pages/traits/metabolism/degrades.html
@@ -89,7 +89,7 @@ kg-microbe context
METPO:2000007 [-1.236, -0.298, -2.385, -0.099, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -97,7 +97,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/denitrification.html b/pages/traits/metabolism/denitrification.html
index 7c23ca0653..e5d61a1ce5 100644
--- a/pages/traits/metabolism/denitrification.html
+++ b/pages/traits/metabolism/denitrification.html
@@ -422,7 +422,7 @@ kg-microbe context
METPO:1000802 [-0.426, -1.069, -1.023, +1.207, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -430,7 +430,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/dicarboxylate_four_hydroxybutyrate_cycle.html b/pages/traits/metabolism/dicarboxylate_four_hydroxybutyrate_cycle.html
index c0b630ab4b..962eaa1fef 100644
--- a/pages/traits/metabolism/dicarboxylate_four_hydroxybutyrate_cycle.html
+++ b/pages/traits/metabolism/dicarboxylate_four_hydroxybutyrate_cycle.html
@@ -388,7 +388,7 @@ kg-microbe context
METPO:1000060 [-1.052, -1.766, -1.194, +0.291, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -396,7 +396,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/disproportionates.html b/pages/traits/metabolism/disproportionates.html
index 81e7b684ec..f68c25b0da 100644
--- a/pages/traits/metabolism/disproportionates.html
+++ b/pages/traits/metabolism/disproportionates.html
@@ -89,7 +89,7 @@ kg-microbe context
METPO:2000200 [-1.290, -0.244, -2.346, -0.220, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -97,7 +97,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/disproportionation.html b/pages/traits/metabolism/disproportionation.html
index b40af650e5..e7ea85a572 100644
--- a/pages/traits/metabolism/disproportionation.html
+++ b/pages/traits/metabolism/disproportionation.html
@@ -413,7 +413,7 @@ kg-microbe context
METPO:1000806 [-0.155, -1.068, -1.362, +0.081, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -421,7 +421,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/dissimilatory_iron_reduction.html b/pages/traits/metabolism/dissimilatory_iron_reduction.html
index 7afecbfe62..4cd465ea7e 100644
--- a/pages/traits/metabolism/dissimilatory_iron_reduction.html
+++ b/pages/traits/metabolism/dissimilatory_iron_reduction.html
@@ -322,7 +322,7 @@ kg-microbe context
METPO:1000802 [-0.426, -1.069, -1.023, +1.207, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -330,7 +330,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/dissimilatory_manganese_reduction.html b/pages/traits/metabolism/dissimilatory_manganese_reduction.html
index fe887d26af..a4c251a209 100644
--- a/pages/traits/metabolism/dissimilatory_manganese_reduction.html
+++ b/pages/traits/metabolism/dissimilatory_manganese_reduction.html
@@ -286,7 +286,7 @@ kg-microbe context
METPO:1000802 [-0.426, -1.069, -1.023, +1.207, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -294,7 +294,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/dissimilatory_metal_reduction.html b/pages/traits/metabolism/dissimilatory_metal_reduction.html
index a6b2143940..cb32af97c3 100644
--- a/pages/traits/metabolism/dissimilatory_metal_reduction.html
+++ b/pages/traits/metabolism/dissimilatory_metal_reduction.html
@@ -331,7 +331,7 @@ kg-microbe context
METPO:1000802 [-0.426, -1.069, -1.023, +1.207, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -339,7 +339,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/dissimilatory_nitrate_reduction_to_ammonium.html b/pages/traits/metabolism/dissimilatory_nitrate_reduction_to_ammonium.html
index 5ae2e6a3aa..650e268092 100644
--- a/pages/traits/metabolism/dissimilatory_nitrate_reduction_to_ammonium.html
+++ b/pages/traits/metabolism/dissimilatory_nitrate_reduction_to_ammonium.html
@@ -356,7 +356,7 @@ kg-microbe context
METPO:1000802 [-0.426, -1.069, -1.023, +1.207, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -364,7 +364,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/dissimilatory_sulfate_reduction.html b/pages/traits/metabolism/dissimilatory_sulfate_reduction.html
index b47b0db52a..9129150d47 100644
--- a/pages/traits/metabolism/dissimilatory_sulfate_reduction.html
+++ b/pages/traits/metabolism/dissimilatory_sulfate_reduction.html
@@ -396,7 +396,7 @@ kg-microbe context
METPO:1000802 [-0.426, -1.069, -1.023, +1.207, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -404,7 +404,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/does_not_accumulate.html b/pages/traits/metabolism/does_not_accumulate.html
index dc2b4179ab..0947551706 100644
--- a/pages/traits/metabolism/does_not_accumulate.html
+++ b/pages/traits/metabolism/does_not_accumulate.html
@@ -91,7 +91,7 @@ kg-microbe context
METPO:2000230 [-1.864, -0.661, -2.991, +0.368, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -99,7 +99,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/does_not_assimilate.html b/pages/traits/metabolism/does_not_assimilate.html
index 8785bb4c44..ddcfb81026 100644
--- a/pages/traits/metabolism/does_not_assimilate.html
+++ b/pages/traits/metabolism/does_not_assimilate.html
@@ -89,7 +89,7 @@ kg-microbe context
METPO:2000027 [-1.286, -0.307, -2.407, -0.248, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -97,7 +97,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/does_not_build_acid_from.html b/pages/traits/metabolism/does_not_build_acid_from.html
index 318888d7db..aab9d91c74 100644
--- a/pages/traits/metabolism/does_not_build_acid_from.html
+++ b/pages/traits/metabolism/does_not_build_acid_from.html
@@ -89,7 +89,7 @@ kg-microbe context
METPO:2000028 [-1.205, -0.280, -2.303, -0.240, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -97,7 +97,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/does_not_build_base_from.html b/pages/traits/metabolism/does_not_build_base_from.html
index d0fb7e783e..22e40c4199 100644
--- a/pages/traits/metabolism/does_not_build_base_from.html
+++ b/pages/traits/metabolism/does_not_build_base_from.html
@@ -89,7 +89,7 @@ kg-microbe context
METPO:2000029 [-1.324, -0.393, -2.396, -0.085, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -97,7 +97,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/does_not_build_gas_from.html b/pages/traits/metabolism/does_not_build_gas_from.html
index cf39e53628..09bf40e4c2 100644
--- a/pages/traits/metabolism/does_not_build_gas_from.html
+++ b/pages/traits/metabolism/does_not_build_gas_from.html
@@ -89,7 +89,7 @@ kg-microbe context
METPO:2000030 [-1.248, -0.258, -2.248, -0.246, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -97,7 +97,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/does_not_compartmentalize.html b/pages/traits/metabolism/does_not_compartmentalize.html
index 68b4536bbf..2e1f52bc57 100644
--- a/pages/traits/metabolism/does_not_compartmentalize.html
+++ b/pages/traits/metabolism/does_not_compartmentalize.html
@@ -80,7 +80,7 @@ kg-microbe context
METPO:2000232 [-1.896, -0.608, -2.676, +0.526, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -88,7 +88,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/does_not_degrade.html b/pages/traits/metabolism/does_not_degrade.html
index ad42973db0..551d8fb2c6 100644
--- a/pages/traits/metabolism/does_not_degrade.html
+++ b/pages/traits/metabolism/does_not_degrade.html
@@ -89,7 +89,7 @@ kg-microbe context
METPO:2000033 [-1.371, -0.337, -2.532, -0.027, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -97,7 +97,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/does_not_disproportionate.html b/pages/traits/metabolism/does_not_disproportionate.html
index 2c87a3fd00..81efcfca19 100644
--- a/pages/traits/metabolism/does_not_disproportionate.html
+++ b/pages/traits/metabolism/does_not_disproportionate.html
@@ -89,7 +89,7 @@ kg-microbe context
METPO:2000220 [-1.159, -0.182, -2.321, -0.260, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -97,7 +97,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/does_not_export.html b/pages/traits/metabolism/does_not_export.html
index 74a9847da0..77cd7f3e5d 100644
--- a/pages/traits/metabolism/does_not_export.html
+++ b/pages/traits/metabolism/does_not_export.html
@@ -80,7 +80,7 @@ kg-microbe context
METPO:2000229 [-0.866, -0.718, -2.686, -0.285, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -88,7 +88,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/does_not_ferment.html b/pages/traits/metabolism/does_not_ferment.html
index ae3a034665..d3708efddd 100644
--- a/pages/traits/metabolism/does_not_ferment.html
+++ b/pages/traits/metabolism/does_not_ferment.html
@@ -89,7 +89,7 @@ kg-microbe context
METPO:2000037 [-1.311, -0.384, -2.411, -0.128, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -97,7 +97,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/does_not_hydrolyze.html b/pages/traits/metabolism/does_not_hydrolyze.html
index 4957489f25..72ad61547d 100644
--- a/pages/traits/metabolism/does_not_hydrolyze.html
+++ b/pages/traits/metabolism/does_not_hydrolyze.html
@@ -89,7 +89,7 @@ kg-microbe context
METPO:2000039 [-1.344, -0.234, -2.324, -0.112, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -97,7 +97,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/does_not_import.html b/pages/traits/metabolism/does_not_import.html
index e2654fae75..b5deaee28e 100644
--- a/pages/traits/metabolism/does_not_import.html
+++ b/pages/traits/metabolism/does_not_import.html
@@ -80,7 +80,7 @@ kg-microbe context
METPO:2000228 [-0.937, -0.910, -2.615, -0.265, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -88,7 +88,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/does_not_oxidize.html b/pages/traits/metabolism/does_not_oxidize.html
index eb88c4c11e..a027e75a8a 100644
--- a/pages/traits/metabolism/does_not_oxidize.html
+++ b/pages/traits/metabolism/does_not_oxidize.html
@@ -89,7 +89,7 @@ kg-microbe context
METPO:2000042 [-1.206, -0.564, -2.510, -0.326, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -97,7 +97,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/does_not_produce.html b/pages/traits/metabolism/does_not_produce.html
index 3111a66f4f..ce1b677a1d 100644
--- a/pages/traits/metabolism/does_not_produce.html
+++ b/pages/traits/metabolism/does_not_produce.html
@@ -89,7 +89,7 @@ kg-microbe context
METPO:2000222 [-1.278, -0.385, -2.563, -0.283, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -97,7 +97,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/does_not_reduce.html b/pages/traits/metabolism/does_not_reduce.html
index 9dea158b02..1d8cd23c4e 100644
--- a/pages/traits/metabolism/does_not_reduce.html
+++ b/pages/traits/metabolism/does_not_reduce.html
@@ -89,7 +89,7 @@ kg-microbe context
METPO:2000044 [-1.399, -0.317, -2.415, -0.124, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -97,7 +97,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/does_not_sequester.html b/pages/traits/metabolism/does_not_sequester.html
index 7122954151..45951de425 100644
--- a/pages/traits/metabolism/does_not_sequester.html
+++ b/pages/traits/metabolism/does_not_sequester.html
@@ -80,7 +80,7 @@ kg-microbe context
METPO:2000231 [-1.833, -0.611, -2.662, +0.612, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -88,7 +88,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/does_not_show_activity_of.html b/pages/traits/metabolism/does_not_show_activity_of.html
index c28c7144d8..045604bbc1 100644
--- a/pages/traits/metabolism/does_not_show_activity_of.html
+++ b/pages/traits/metabolism/does_not_show_activity_of.html
@@ -89,7 +89,7 @@ kg-microbe context
METPO:2000303 [-1.154, -1.700, -0.583, -0.926, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -97,7 +97,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/does_not_transport.html b/pages/traits/metabolism/does_not_transport.html
index a7666b3572..39a1f0f03b 100644
--- a/pages/traits/metabolism/does_not_transport.html
+++ b/pages/traits/metabolism/does_not_transport.html
@@ -91,7 +91,7 @@ kg-microbe context
METPO:2000227 [-0.802, -0.930, -2.770, -0.508, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -99,7 +99,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/does_not_use_as_carbon_source.html b/pages/traits/metabolism/does_not_use_as_carbon_source.html
index e0e8d0a8c8..9e8a3e09b6 100644
--- a/pages/traits/metabolism/does_not_use_as_carbon_source.html
+++ b/pages/traits/metabolism/does_not_use_as_carbon_source.html
@@ -89,7 +89,7 @@ kg-microbe context
METPO:2000031 [-1.412, -0.334, -2.248, -0.175, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -97,7 +97,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/does_not_use_as_electron_acceptor.html b/pages/traits/metabolism/does_not_use_as_electron_acceptor.html
index 0a6f331f6e..983502a81f 100644
--- a/pages/traits/metabolism/does_not_use_as_electron_acceptor.html
+++ b/pages/traits/metabolism/does_not_use_as_electron_acceptor.html
@@ -89,7 +89,7 @@ kg-microbe context
METPO:2000034 [-1.270, -0.393, -2.494, -0.168, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -97,7 +97,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/does_not_use_as_electron_donor.html b/pages/traits/metabolism/does_not_use_as_electron_donor.html
index 76abbd3f67..93c14a7b1c 100644
--- a/pages/traits/metabolism/does_not_use_as_electron_donor.html
+++ b/pages/traits/metabolism/does_not_use_as_electron_donor.html
@@ -89,7 +89,7 @@ kg-microbe context
METPO:2000035 [-1.265, -0.214, -2.420, -0.186, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -97,7 +97,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/does_not_use_as_energy_source.html b/pages/traits/metabolism/does_not_use_as_energy_source.html
index e0ce527d7c..280c722f68 100644
--- a/pages/traits/metabolism/does_not_use_as_energy_source.html
+++ b/pages/traits/metabolism/does_not_use_as_energy_source.html
@@ -89,7 +89,7 @@ kg-microbe context
METPO:2000036 [-1.315, -0.164, -2.374, -0.206, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -97,7 +97,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/does_not_use_as_nitrogen_source.html b/pages/traits/metabolism/does_not_use_as_nitrogen_source.html
index 121e8c3378..18b077507c 100644
--- a/pages/traits/metabolism/does_not_use_as_nitrogen_source.html
+++ b/pages/traits/metabolism/does_not_use_as_nitrogen_source.html
@@ -89,7 +89,7 @@ kg-microbe context
METPO:2000040 [-1.154, -0.237, -2.451, -0.149, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -97,7 +97,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/does_not_use_as_sulfur_source.html b/pages/traits/metabolism/does_not_use_as_sulfur_source.html
index adcc68f4be..b15ceec745 100644
--- a/pages/traits/metabolism/does_not_use_as_sulfur_source.html
+++ b/pages/traits/metabolism/does_not_use_as_sulfur_source.html
@@ -89,7 +89,7 @@ kg-microbe context
METPO:2000047 [-1.291, -0.204, -2.374, -0.095, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -97,7 +97,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/does_not_use_for_aerobic_catabolization.html b/pages/traits/metabolism/does_not_use_for_aerobic_catabolization.html
index 1893756b0b..9cd59c7d11 100644
--- a/pages/traits/metabolism/does_not_use_for_aerobic_catabolization.html
+++ b/pages/traits/metabolism/does_not_use_for_aerobic_catabolization.html
@@ -89,7 +89,7 @@ kg-microbe context
METPO:2000021 [-1.263, -0.348, -2.310, -0.201, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -97,7 +97,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/does_not_use_for_aerobic_growth.html b/pages/traits/metabolism/does_not_use_for_aerobic_growth.html
index 30bdf8a782..7f86d9c471 100644
--- a/pages/traits/metabolism/does_not_use_for_aerobic_growth.html
+++ b/pages/traits/metabolism/does_not_use_for_aerobic_growth.html
@@ -89,7 +89,7 @@ kg-microbe context
METPO:2000022 [-1.206, -0.225, -2.389, -0.218, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -97,7 +97,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/does_not_use_for_anaerobic_catabolization.html b/pages/traits/metabolism/does_not_use_for_anaerobic_catabolization.html
index 26147fcbab..2f2b9763e0 100644
--- a/pages/traits/metabolism/does_not_use_for_anaerobic_catabolization.html
+++ b/pages/traits/metabolism/does_not_use_for_anaerobic_catabolization.html
@@ -89,7 +89,7 @@ kg-microbe context
METPO:2000023 [-1.179, -0.262, -2.266, -0.122, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -97,7 +97,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/does_not_use_for_anaerobic_growth.html b/pages/traits/metabolism/does_not_use_for_anaerobic_growth.html
index 69552cfce6..14ee668b55 100644
--- a/pages/traits/metabolism/does_not_use_for_anaerobic_growth.html
+++ b/pages/traits/metabolism/does_not_use_for_anaerobic_growth.html
@@ -89,7 +89,7 @@ kg-microbe context
METPO:2000024 [-1.267, -0.231, -2.365, -0.145, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -97,7 +97,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/does_not_use_for_anaerobic_growth_in_the_dark.html b/pages/traits/metabolism/does_not_use_for_anaerobic_growth_in_the_dark.html
index c4bfda8de6..e03ecd8f87 100644
--- a/pages/traits/metabolism/does_not_use_for_anaerobic_growth_in_the_dark.html
+++ b/pages/traits/metabolism/does_not_use_for_anaerobic_growth_in_the_dark.html
@@ -89,7 +89,7 @@ kg-microbe context
METPO:2000025 [-1.264, -0.144, -2.450, -0.129, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -97,7 +97,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/does_not_use_for_anaerobic_growth_with_light.html b/pages/traits/metabolism/does_not_use_for_anaerobic_growth_with_light.html
index 226d3ecbe7..b4298c4206 100644
--- a/pages/traits/metabolism/does_not_use_for_anaerobic_growth_with_light.html
+++ b/pages/traits/metabolism/does_not_use_for_anaerobic_growth_with_light.html
@@ -89,7 +89,7 @@ kg-microbe context
METPO:2000026 [-1.340, -0.140, -2.462, -0.066, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -97,7 +97,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/does_not_use_for_growth.html b/pages/traits/metabolism/does_not_use_for_growth.html
index 6295f9dbcb..f13eba8c98 100644
--- a/pages/traits/metabolism/does_not_use_for_growth.html
+++ b/pages/traits/metabolism/does_not_use_for_growth.html
@@ -89,7 +89,7 @@ kg-microbe context
METPO:2000038 [-1.373, -0.347, -2.345, -0.259, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -97,7 +97,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/does_not_use_for_respiration.html b/pages/traits/metabolism/does_not_use_for_respiration.html
index fab2079612..a83ba41765 100644
--- a/pages/traits/metabolism/does_not_use_for_respiration.html
+++ b/pages/traits/metabolism/does_not_use_for_respiration.html
@@ -89,7 +89,7 @@ kg-microbe context
METPO:2000046 [-1.171, -0.162, -2.417, -0.089, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -97,7 +97,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/does_not_use_in_other_way.html b/pages/traits/metabolism/does_not_use_in_other_way.html
index 559d8ed2a9..99afcf6929 100644
--- a/pages/traits/metabolism/does_not_use_in_other_way.html
+++ b/pages/traits/metabolism/does_not_use_in_other_way.html
@@ -89,7 +89,7 @@ kg-microbe context
METPO:2000041 [-1.399, -0.155, -2.247, -0.135, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -97,7 +97,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/electron_transfer.html b/pages/traits/metabolism/electron_transfer.html
index be05328472..a59bf13988 100644
--- a/pages/traits/metabolism/electron_transfer.html
+++ b/pages/traits/metabolism/electron_transfer.html
@@ -430,7 +430,7 @@ kg-microbe context
METPO:1000805 [-0.425, -0.393, -1.506, +0.156, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -438,7 +438,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/enzyme_activity_analyzed.html b/pages/traits/metabolism/enzyme_activity_analyzed.html
index bc8682f320..7731236d72 100644
--- a/pages/traits/metabolism/enzyme_activity_analyzed.html
+++ b/pages/traits/metabolism/enzyme_activity_analyzed.html
@@ -91,7 +91,7 @@ kg-microbe context
METPO:2000301 [-1.199, -1.757, -0.485, -1.099, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -99,7 +99,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/ethanol_fermentation.html b/pages/traits/metabolism/ethanol_fermentation.html
index 11bb52ff8f..f43e5c8f93 100644
--- a/pages/traits/metabolism/ethanol_fermentation.html
+++ b/pages/traits/metabolism/ethanol_fermentation.html
@@ -329,7 +329,7 @@ kg-microbe context
METPO:1002005 [-0.758, -6.428, +3.551, +10.454, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -337,7 +337,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/exports.html b/pages/traits/metabolism/exports.html
index db48f5fdd8..5af81d3e03 100644
--- a/pages/traits/metabolism/exports.html
+++ b/pages/traits/metabolism/exports.html
@@ -80,7 +80,7 @@ kg-microbe context
METPO:2000209 [-1.508, -0.086, -2.445, -0.073, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -88,7 +88,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/fermentation.html b/pages/traits/metabolism/fermentation.html
index fe20770574..45ce48f740 100644
--- a/pages/traits/metabolism/fermentation.html
+++ b/pages/traits/metabolism/fermentation.html
@@ -445,7 +445,7 @@ kg-microbe context
METPO:1002005 [-0.758, -6.428, +3.551, +10.454, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -453,7 +453,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/fermentative_hydrogen_production.html b/pages/traits/metabolism/fermentative_hydrogen_production.html
index 96166de4c7..579e19c1d5 100644
--- a/pages/traits/metabolism/fermentative_hydrogen_production.html
+++ b/pages/traits/metabolism/fermentative_hydrogen_production.html
@@ -269,7 +269,7 @@ kg-microbe context
METPO:1002005 [-0.758, -6.428, +3.551, +10.454, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -277,7 +277,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/ferments.html b/pages/traits/metabolism/ferments.html
index 401f926e62..42bfb2d3ae 100644
--- a/pages/traits/metabolism/ferments.html
+++ b/pages/traits/metabolism/ferments.html
@@ -89,7 +89,7 @@ kg-microbe context
METPO:2000011 [-1.137, -0.154, -2.250, -0.147, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -97,7 +97,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/has_growth_nacl_observation.html b/pages/traits/metabolism/has_growth_nacl_observation.html
index 9699f6f5c5..0d79e7509c 100644
--- a/pages/traits/metabolism/has_growth_nacl_observation.html
+++ b/pages/traits/metabolism/has_growth_nacl_observation.html
@@ -80,7 +80,7 @@ kg-microbe context
METPO:2000508 [+0.015, -0.081, +0.019, -0.018, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -88,7 +88,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/has_growth_oxygen_observation.html b/pages/traits/metabolism/has_growth_oxygen_observation.html
index f888ca15f6..2ef0573739 100644
--- a/pages/traits/metabolism/has_growth_oxygen_observation.html
+++ b/pages/traits/metabolism/has_growth_oxygen_observation.html
@@ -80,7 +80,7 @@ kg-microbe context
METPO:2000514 [+0.098, -0.086, +0.038, +0.073, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -88,7 +88,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/has_growth_ph_observation.html b/pages/traits/metabolism/has_growth_ph_observation.html
index 14cd144f58..7f58c53a7a 100644
--- a/pages/traits/metabolism/has_growth_ph_observation.html
+++ b/pages/traits/metabolism/has_growth_ph_observation.html
@@ -80,7 +80,7 @@ kg-microbe context
METPO:2000502 [+0.036, +0.084, +0.103, +0.076, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -88,7 +88,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/has_growth_temperature_observation.html b/pages/traits/metabolism/has_growth_temperature_observation.html
index 93d67b03af..c4822cd7be 100644
--- a/pages/traits/metabolism/has_growth_temperature_observation.html
+++ b/pages/traits/metabolism/has_growth_temperature_observation.html
@@ -80,7 +80,7 @@ kg-microbe context
METPO:2000054 [-0.079, -0.077, -0.022, -0.008, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -88,7 +88,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/has_nacl_delta_observation.html b/pages/traits/metabolism/has_nacl_delta_observation.html
index 7ef2f9195d..81d36d6e2a 100644
--- a/pages/traits/metabolism/has_nacl_delta_observation.html
+++ b/pages/traits/metabolism/has_nacl_delta_observation.html
@@ -80,7 +80,7 @@ kg-microbe context
METPO:2000510 [+0.104, +0.078, +0.108, +0.063, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -88,7 +88,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/has_nacl_observation.html b/pages/traits/metabolism/has_nacl_observation.html
index 06aca826f3..85ac163e34 100644
--- a/pages/traits/metabolism/has_nacl_observation.html
+++ b/pages/traits/metabolism/has_nacl_observation.html
@@ -95,7 +95,7 @@ kg-microbe context
METPO:2000506 [+0.093, -0.023, -0.063, +0.040, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -103,7 +103,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/has_observation.html b/pages/traits/metabolism/has_observation.html
index 4171deca27..7721d256bc 100644
--- a/pages/traits/metabolism/has_observation.html
+++ b/pages/traits/metabolism/has_observation.html
@@ -84,7 +84,7 @@ kg-microbe context
METPO:2000511 [-0.072, -0.027, +0.027, +0.075, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -92,7 +92,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/has_optimum_nacl_observation.html b/pages/traits/metabolism/has_optimum_nacl_observation.html
index a344a58c47..b686089094 100644
--- a/pages/traits/metabolism/has_optimum_nacl_observation.html
+++ b/pages/traits/metabolism/has_optimum_nacl_observation.html
@@ -80,7 +80,7 @@ kg-microbe context
METPO:2000507 [-0.083, +0.042, +0.104, +0.012, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -88,7 +88,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/has_optimum_oxygen_observation.html b/pages/traits/metabolism/has_optimum_oxygen_observation.html
index cdc25121ea..4f45dc3525 100644
--- a/pages/traits/metabolism/has_optimum_oxygen_observation.html
+++ b/pages/traits/metabolism/has_optimum_oxygen_observation.html
@@ -80,7 +80,7 @@ kg-microbe context
METPO:2000513 [+0.084, +0.077, -0.016, -0.000, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -88,7 +88,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/has_optimum_ph_observation.html b/pages/traits/metabolism/has_optimum_ph_observation.html
index d8f1a3d460..86a7f99c9d 100644
--- a/pages/traits/metabolism/has_optimum_ph_observation.html
+++ b/pages/traits/metabolism/has_optimum_ph_observation.html
@@ -80,7 +80,7 @@ kg-microbe context
METPO:2000501 [+0.022, +0.084, -0.038, -0.059, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -88,7 +88,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/has_optimum_temperature_observation.html b/pages/traits/metabolism/has_optimum_temperature_observation.html
index 188a1a7263..55d2b02a2b 100644
--- a/pages/traits/metabolism/has_optimum_temperature_observation.html
+++ b/pages/traits/metabolism/has_optimum_temperature_observation.html
@@ -80,7 +80,7 @@ kg-microbe context
METPO:2000053 [-0.086, -0.074, +0.082, -0.093, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -88,7 +88,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/has_oxygen_delta_observation.html b/pages/traits/metabolism/has_oxygen_delta_observation.html
index f30bb345d0..01dca0d5a0 100644
--- a/pages/traits/metabolism/has_oxygen_delta_observation.html
+++ b/pages/traits/metabolism/has_oxygen_delta_observation.html
@@ -80,7 +80,7 @@ kg-microbe context
METPO:2000516 [-0.097, +0.084, -0.075, -0.027, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -88,7 +88,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/has_oxygen_observation.html b/pages/traits/metabolism/has_oxygen_observation.html
index 2e90e4e634..cca1100788 100644
--- a/pages/traits/metabolism/has_oxygen_observation.html
+++ b/pages/traits/metabolism/has_oxygen_observation.html
@@ -95,7 +95,7 @@ kg-microbe context
METPO:2000512 [+0.090, +0.046, +0.005, -0.089, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -103,7 +103,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/has_ph_delta_observation.html b/pages/traits/metabolism/has_ph_delta_observation.html
index 8ee3e2a4a5..75c088ce1f 100644
--- a/pages/traits/metabolism/has_ph_delta_observation.html
+++ b/pages/traits/metabolism/has_ph_delta_observation.html
@@ -80,7 +80,7 @@ kg-microbe context
METPO:2000504 [-0.024, +0.031, -0.041, -0.020, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -88,7 +88,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/has_ph_observation.html b/pages/traits/metabolism/has_ph_observation.html
index d2cd7f236c..c5d91d591f 100644
--- a/pages/traits/metabolism/has_ph_observation.html
+++ b/pages/traits/metabolism/has_ph_observation.html
@@ -95,7 +95,7 @@ kg-microbe context
METPO:2000239 [-0.061, +0.077, -0.071, +0.026, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -103,7 +103,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/has_phenotype.html b/pages/traits/metabolism/has_phenotype.html
index d66fa286dd..da8313e833 100644
--- a/pages/traits/metabolism/has_phenotype.html
+++ b/pages/traits/metabolism/has_phenotype.html
@@ -85,7 +85,7 @@ kg-microbe context
METPO:2000102 [-0.520, -1.796, -1.085, +0.793, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -93,7 +93,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/has_quality.html b/pages/traits/metabolism/has_quality.html
index 41b75119e2..22b414167b 100644
--- a/pages/traits/metabolism/has_quality.html
+++ b/pages/traits/metabolism/has_quality.html
@@ -85,7 +85,7 @@ kg-microbe context
METPO:2000101 [-0.759, -1.885, -0.724, +0.560, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -93,7 +93,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/has_range_nacl_observation.html b/pages/traits/metabolism/has_range_nacl_observation.html
index 13a0dcdd48..35e782fb1a 100644
--- a/pages/traits/metabolism/has_range_nacl_observation.html
+++ b/pages/traits/metabolism/has_range_nacl_observation.html
@@ -80,7 +80,7 @@ kg-microbe context
METPO:2000509 [-0.060, -0.035, +0.101, +0.031, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -88,7 +88,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/has_range_oxygen_observation.html b/pages/traits/metabolism/has_range_oxygen_observation.html
index a722a2dd43..d91ff2ce02 100644
--- a/pages/traits/metabolism/has_range_oxygen_observation.html
+++ b/pages/traits/metabolism/has_range_oxygen_observation.html
@@ -80,7 +80,7 @@ kg-microbe context
METPO:2000515 [-0.032, +0.032, -0.020, -0.053, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -88,7 +88,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/has_range_ph_observation.html b/pages/traits/metabolism/has_range_ph_observation.html
index 24de0ede22..8bef59b89e 100644
--- a/pages/traits/metabolism/has_range_ph_observation.html
+++ b/pages/traits/metabolism/has_range_ph_observation.html
@@ -80,7 +80,7 @@ kg-microbe context
METPO:2000503 [+0.046, -0.047, +0.053, +0.056, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -88,7 +88,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/has_range_temperature_observation.html b/pages/traits/metabolism/has_range_temperature_observation.html
index c20a5f3667..796e8bcd82 100644
--- a/pages/traits/metabolism/has_range_temperature_observation.html
+++ b/pages/traits/metabolism/has_range_temperature_observation.html
@@ -80,7 +80,7 @@ kg-microbe context
METPO:2000055 [+0.074, +0.056, -0.073, -0.054, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -88,7 +88,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/has_temperature_delta_observation.html b/pages/traits/metabolism/has_temperature_delta_observation.html
index c636bb33e4..5363b61530 100644
--- a/pages/traits/metabolism/has_temperature_delta_observation.html
+++ b/pages/traits/metabolism/has_temperature_delta_observation.html
@@ -80,7 +80,7 @@ kg-microbe context
METPO:2000056 [+0.099, -0.056, +0.003, +0.031, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -88,7 +88,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/has_temperature_observation.html b/pages/traits/metabolism/has_temperature_observation.html
index 61eaef4d77..67a7751aa3 100644
--- a/pages/traits/metabolism/has_temperature_observation.html
+++ b/pages/traits/metabolism/has_temperature_observation.html
@@ -95,7 +95,7 @@ kg-microbe context
METPO:2000052 [-0.077, -0.027, +0.041, +0.010, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -103,7 +103,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/homoacetogenesis.html b/pages/traits/metabolism/homoacetogenesis.html
index ef751ee885..dc317a1f10 100644
--- a/pages/traits/metabolism/homoacetogenesis.html
+++ b/pages/traits/metabolism/homoacetogenesis.html
@@ -532,7 +532,7 @@ kg-microbe context
METPO:1000846 [-0.148, -0.934, -1.245, +0.063, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -540,7 +540,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/hydrocarbon_degradation.html b/pages/traits/metabolism/hydrocarbon_degradation.html
index b9d795861f..2f51957c2a 100644
--- a/pages/traits/metabolism/hydrocarbon_degradation.html
+++ b/pages/traits/metabolism/hydrocarbon_degradation.html
@@ -98,7 +98,7 @@ Cross-references
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/metabolism/hydrogenotrophic_methanogenesis.html b/pages/traits/metabolism/hydrogenotrophic_methanogenesis.html
index b44131bf00..ed28ff39fd 100644
--- a/pages/traits/metabolism/hydrogenotrophic_methanogenesis.html
+++ b/pages/traits/metabolism/hydrogenotrophic_methanogenesis.html
@@ -84,7 +84,7 @@ Synonyms (2)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/metabolism/hydrolyzes.html b/pages/traits/metabolism/hydrolyzes.html
index 9df8505d59..4522576c8c 100644
--- a/pages/traits/metabolism/hydrolyzes.html
+++ b/pages/traits/metabolism/hydrolyzes.html
@@ -89,7 +89,7 @@ kg-microbe context
METPO:2000013 [-1.446, -0.206, -2.474, +0.001, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -97,7 +97,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/imports.html b/pages/traits/metabolism/imports.html
index 1665da9da6..0e63e6f317 100644
--- a/pages/traits/metabolism/imports.html
+++ b/pages/traits/metabolism/imports.html
@@ -80,7 +80,7 @@ kg-microbe context
METPO:2000208 [-1.353, -0.126, -2.494, -0.028, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -88,7 +88,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/iron_oxidation.html b/pages/traits/metabolism/iron_oxidation.html
index 77f13b0105..bbbd0e4ff4 100644
--- a/pages/traits/metabolism/iron_oxidation.html
+++ b/pages/traits/metabolism/iron_oxidation.html
@@ -363,7 +363,7 @@ kg-microbe context
METPO:1000060 [-1.052, -1.766, -1.194, +0.291, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -371,7 +371,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/is_not_required_for_growth.html b/pages/traits/metabolism/is_not_required_for_growth.html
index d8c0c3c839..2105829e43 100644
--- a/pages/traits/metabolism/is_not_required_for_growth.html
+++ b/pages/traits/metabolism/is_not_required_for_growth.html
@@ -89,7 +89,7 @@ kg-microbe context
METPO:2000045 [-1.197, -0.313, -2.507, -0.156, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -97,7 +97,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/lactic_acid_fermentation.html b/pages/traits/metabolism/lactic_acid_fermentation.html
index b41a5b66fe..e0643a8b64 100644
--- a/pages/traits/metabolism/lactic_acid_fermentation.html
+++ b/pages/traits/metabolism/lactic_acid_fermentation.html
@@ -354,7 +354,7 @@ kg-microbe context
METPO:1002005 [-0.758, -6.428, +3.551, +10.454, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -362,7 +362,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/lignin_degradation.html b/pages/traits/metabolism/lignin_degradation.html
index b5e0664c3c..8e414b9884 100644
--- a/pages/traits/metabolism/lignin_degradation.html
+++ b/pages/traits/metabolism/lignin_degradation.html
@@ -382,7 +382,7 @@ kg-microbe context
METPO:1000060 [-1.052, -1.766, -1.194, +0.291, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -390,7 +390,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/lipolysis.html b/pages/traits/metabolism/lipolysis.html
index af7141f638..ef01386e66 100644
--- a/pages/traits/metabolism/lipolysis.html
+++ b/pages/traits/metabolism/lipolysis.html
@@ -73,7 +73,7 @@ Parent traits (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/metabolism/manganese_oxidation.html b/pages/traits/metabolism/manganese_oxidation.html
index 9f68550cb4..43714dbfe2 100644
--- a/pages/traits/metabolism/manganese_oxidation.html
+++ b/pages/traits/metabolism/manganese_oxidation.html
@@ -337,7 +337,7 @@ kg-microbe context
METPO:1000060 [-1.052, -1.766, -1.194, +0.291, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -345,7 +345,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/metabolism.html b/pages/traits/metabolism/metabolism.html
index d69cc64ec7..c73b08d7fa 100644
--- a/pages/traits/metabolism/metabolism.html
+++ b/pages/traits/metabolism/metabolism.html
@@ -441,7 +441,7 @@ kg-microbe context
METPO:1000060 [-1.052, -1.766, -1.194, +0.291, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -449,7 +449,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/methanogenesis.html b/pages/traits/metabolism/methanogenesis.html
index 45887d473c..2e587d3266 100644
--- a/pages/traits/metabolism/methanogenesis.html
+++ b/pages/traits/metabolism/methanogenesis.html
@@ -425,7 +425,7 @@ kg-microbe context
METPO:1000844 [+2.183, -3.599, -0.641, +0.610, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -433,7 +433,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/methanol_oxidation.html b/pages/traits/metabolism/methanol_oxidation.html
index 8fb2071027..e9d5630857 100644
--- a/pages/traits/metabolism/methanol_oxidation.html
+++ b/pages/traits/metabolism/methanol_oxidation.html
@@ -89,7 +89,7 @@ Cross-references
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/metabolism/methyl_based_methanogenesis.html b/pages/traits/metabolism/methyl_based_methanogenesis.html
index 4dfcdf779e..073d0def7a 100644
--- a/pages/traits/metabolism/methyl_based_methanogenesis.html
+++ b/pages/traits/metabolism/methyl_based_methanogenesis.html
@@ -84,7 +84,7 @@ Synonyms (2)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/metabolism/mixed_acid_fermentation.html b/pages/traits/metabolism/mixed_acid_fermentation.html
index 6f8db47dbf..9054a5b076 100644
--- a/pages/traits/metabolism/mixed_acid_fermentation.html
+++ b/pages/traits/metabolism/mixed_acid_fermentation.html
@@ -396,7 +396,7 @@ kg-microbe context
METPO:1002005 [-0.758, -6.428, +3.551, +10.454, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -404,7 +404,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/nitrate_reduction.html b/pages/traits/metabolism/nitrate_reduction.html
index 884beeac23..01a4fb245d 100644
--- a/pages/traits/metabolism/nitrate_reduction.html
+++ b/pages/traits/metabolism/nitrate_reduction.html
@@ -91,7 +91,7 @@ Synonyms (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/metabolism/nitrate_respiration.html b/pages/traits/metabolism/nitrate_respiration.html
index 62dfbe4afd..4c8bfa2de4 100644
--- a/pages/traits/metabolism/nitrate_respiration.html
+++ b/pages/traits/metabolism/nitrate_respiration.html
@@ -95,7 +95,7 @@ Synonyms (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/metabolism/nitrification.html b/pages/traits/metabolism/nitrification.html
index f9d5694c4d..9852ce6fb9 100644
--- a/pages/traits/metabolism/nitrification.html
+++ b/pages/traits/metabolism/nitrification.html
@@ -82,7 +82,7 @@ Children (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/metabolism/nitrite_respiration.html b/pages/traits/metabolism/nitrite_respiration.html
index 2648268a33..349b24e827 100644
--- a/pages/traits/metabolism/nitrite_respiration.html
+++ b/pages/traits/metabolism/nitrite_respiration.html
@@ -82,7 +82,7 @@ Synonyms (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/metabolism/nitrogen_fixation.html b/pages/traits/metabolism/nitrogen_fixation.html
index 8a12e5556e..35b8530db1 100644
--- a/pages/traits/metabolism/nitrogen_fixation.html
+++ b/pages/traits/metabolism/nitrogen_fixation.html
@@ -344,7 +344,7 @@ kg-microbe context
METPO:1000060 [-1.052, -1.766, -1.194, +0.291, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -352,7 +352,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/nitrogen_respiration.html b/pages/traits/metabolism/nitrogen_respiration.html
index f35e612bfc..9a31c2803c 100644
--- a/pages/traits/metabolism/nitrogen_respiration.html
+++ b/pages/traits/metabolism/nitrogen_respiration.html
@@ -95,7 +95,7 @@ Synonyms (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/metabolism/organism_interacts_with_chemical.html b/pages/traits/metabolism/organism_interacts_with_chemical.html
index 821a2f4ec3..507583ceab 100644
--- a/pages/traits/metabolism/organism_interacts_with_chemical.html
+++ b/pages/traits/metabolism/organism_interacts_with_chemical.html
@@ -194,7 +194,7 @@ kg-microbe context
METPO:2000001 [-2.274, -0.169, -3.849, -0.731, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -202,7 +202,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/oxidative_phosphorylation.html b/pages/traits/metabolism/oxidative_phosphorylation.html
index ad44b2ca0c..5d6fa01cd7 100644
--- a/pages/traits/metabolism/oxidative_phosphorylation.html
+++ b/pages/traits/metabolism/oxidative_phosphorylation.html
@@ -412,7 +412,7 @@ kg-microbe context
METPO:1000803 [-1.060, -0.950, -1.248, -0.351, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -420,7 +420,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/oxidizes.html b/pages/traits/metabolism/oxidizes.html
index 3dbcd58397..4df188a3e1 100644
--- a/pages/traits/metabolism/oxidizes.html
+++ b/pages/traits/metabolism/oxidizes.html
@@ -89,7 +89,7 @@ kg-microbe context
METPO:2000016 [-1.419, -0.244, -2.446, -0.185, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -97,7 +97,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/oxygenic_photosynthesis.html b/pages/traits/metabolism/oxygenic_photosynthesis.html
index d9593abf25..ec235c55ec 100644
--- a/pages/traits/metabolism/oxygenic_photosynthesis.html
+++ b/pages/traits/metabolism/oxygenic_photosynthesis.html
@@ -371,7 +371,7 @@ kg-microbe context
METPO:1000060 [-1.052, -1.766, -1.194, +0.291, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -379,7 +379,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/pectin_degradation.html b/pages/traits/metabolism/pectin_degradation.html
index e39a384f6f..775b52de2b 100644
--- a/pages/traits/metabolism/pectin_degradation.html
+++ b/pages/traits/metabolism/pectin_degradation.html
@@ -95,7 +95,7 @@ Cross-references
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/metabolism/photoferrotrophy.html b/pages/traits/metabolism/photoferrotrophy.html
index e2c7e339c2..2b592c9fce 100644
--- a/pages/traits/metabolism/photoferrotrophy.html
+++ b/pages/traits/metabolism/photoferrotrophy.html
@@ -253,7 +253,7 @@ Synonyms (2)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/metabolism/photosynthesis.html b/pages/traits/metabolism/photosynthesis.html
index 490a54eb08..e222d16dd4 100644
--- a/pages/traits/metabolism/photosynthesis.html
+++ b/pages/traits/metabolism/photosynthesis.html
@@ -363,7 +363,7 @@ kg-microbe context
METPO:1000060 [-1.052, -1.766, -1.194, +0.291, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -371,7 +371,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/phototrophy.html b/pages/traits/metabolism/phototrophy.html
index 7f907d5079..fbe7201575 100644
--- a/pages/traits/metabolism/phototrophy.html
+++ b/pages/traits/metabolism/phototrophy.html
@@ -348,7 +348,7 @@ kg-microbe context
METPO:1000060 [-1.052, -1.766, -1.194, +0.291, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -356,7 +356,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/produces.html b/pages/traits/metabolism/produces.html
index 3be9b7d9c8..8c9c35b39d 100644
--- a/pages/traits/metabolism/produces.html
+++ b/pages/traits/metabolism/produces.html
@@ -87,7 +87,7 @@ kg-microbe context
METPO:2000202 [-1.210, -0.273, -2.355, -0.086, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -95,7 +95,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/propionic_acid_fermentation.html b/pages/traits/metabolism/propionic_acid_fermentation.html
index ce755b0a53..9e8d31768d 100644
--- a/pages/traits/metabolism/propionic_acid_fermentation.html
+++ b/pages/traits/metabolism/propionic_acid_fermentation.html
@@ -405,7 +405,7 @@ kg-microbe context
METPO:1002005 [-0.758, -6.428, +3.551, +10.454, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -413,7 +413,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/proteolysis.html b/pages/traits/metabolism/proteolysis.html
index 8c0681cd49..027f6968e4 100644
--- a/pages/traits/metabolism/proteolysis.html
+++ b/pages/traits/metabolism/proteolysis.html
@@ -305,7 +305,7 @@ kg-microbe context
METPO:1000060 [-1.052, -1.766, -1.194, +0.291, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -313,7 +313,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/proteorhodopsin_phototrophy.html b/pages/traits/metabolism/proteorhodopsin_phototrophy.html
index 27c334bbf8..2f3d85fa96 100644
--- a/pages/traits/metabolism/proteorhodopsin_phototrophy.html
+++ b/pages/traits/metabolism/proteorhodopsin_phototrophy.html
@@ -286,7 +286,7 @@ kg-microbe context
METPO:1000060 [-1.052, -1.766, -1.194, +0.291, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -294,7 +294,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/reduces.html b/pages/traits/metabolism/reduces.html
index f0f35519f1..850352892a 100644
--- a/pages/traits/metabolism/reduces.html
+++ b/pages/traits/metabolism/reduces.html
@@ -89,7 +89,7 @@ kg-microbe context
METPO:2000017 [-1.152, -0.339, -2.249, -0.170, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -97,7 +97,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/reductive_tca_cycle.html b/pages/traits/metabolism/reductive_tca_cycle.html
index 879a04aea4..89b90741a9 100644
--- a/pages/traits/metabolism/reductive_tca_cycle.html
+++ b/pages/traits/metabolism/reductive_tca_cycle.html
@@ -357,7 +357,7 @@ kg-microbe context
METPO:1000060 [-1.052, -1.766, -1.194, +0.291, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -365,7 +365,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/requires_for_growth.html b/pages/traits/metabolism/requires_for_growth.html
index b67e47de93..e4d736386b 100644
--- a/pages/traits/metabolism/requires_for_growth.html
+++ b/pages/traits/metabolism/requires_for_growth.html
@@ -89,7 +89,7 @@ kg-microbe context
METPO:2000018 [-1.197, -0.079, -2.218, -0.073, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -97,7 +97,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/respiration.html b/pages/traits/metabolism/respiration.html
index a65183322f..f60ea9abb7 100644
--- a/pages/traits/metabolism/respiration.html
+++ b/pages/traits/metabolism/respiration.html
@@ -384,7 +384,7 @@ kg-microbe context
METPO:1000800 [-0.241, -1.847, -1.014, +1.020, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -392,7 +392,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/respiration_of_sulfur_compounds.html b/pages/traits/metabolism/respiration_of_sulfur_compounds.html
index bb94e377aa..608ac5f298 100644
--- a/pages/traits/metabolism/respiration_of_sulfur_compounds.html
+++ b/pages/traits/metabolism/respiration_of_sulfur_compounds.html
@@ -95,7 +95,7 @@ Synonyms (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/metabolism/sequesters.html b/pages/traits/metabolism/sequesters.html
index eadee083cd..6a8685dc46 100644
--- a/pages/traits/metabolism/sequesters.html
+++ b/pages/traits/metabolism/sequesters.html
@@ -80,7 +80,7 @@ kg-microbe context
METPO:2000211 [-1.868, -0.826, -3.392, -0.381, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -88,7 +88,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/shows_activity_of.html b/pages/traits/metabolism/shows_activity_of.html
index 56341bf16d..0dc5fcb848 100644
--- a/pages/traits/metabolism/shows_activity_of.html
+++ b/pages/traits/metabolism/shows_activity_of.html
@@ -89,7 +89,7 @@ kg-microbe context
METPO:2000302 [-1.251, -1.767, -0.586, -0.834, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -97,7 +97,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/starch_degradation.html b/pages/traits/metabolism/starch_degradation.html
index ebca2d7860..b588d47bfb 100644
--- a/pages/traits/metabolism/starch_degradation.html
+++ b/pages/traits/metabolism/starch_degradation.html
@@ -280,7 +280,7 @@ kg-microbe context
METPO:1000060 [-1.052, -1.766, -1.194, +0.291, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -288,7 +288,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/substrate_level_phosphorylation.html b/pages/traits/metabolism/substrate_level_phosphorylation.html
index 826166bf9f..6566b4a559 100644
--- a/pages/traits/metabolism/substrate_level_phosphorylation.html
+++ b/pages/traits/metabolism/substrate_level_phosphorylation.html
@@ -362,7 +362,7 @@ kg-microbe context
METPO:1000804 [+0.098, -0.513, -1.357, -0.315, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -370,7 +370,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/sulfur_oxidation.html b/pages/traits/metabolism/sulfur_oxidation.html
index 330c714bbc..ac210aae67 100644
--- a/pages/traits/metabolism/sulfur_oxidation.html
+++ b/pages/traits/metabolism/sulfur_oxidation.html
@@ -380,7 +380,7 @@ kg-microbe context
METPO:1000060 [-1.052, -1.766, -1.194, +0.291, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -388,7 +388,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/sulfur_respiration.html b/pages/traits/metabolism/sulfur_respiration.html
index a5f68d02ef..eb1e456f80 100644
--- a/pages/traits/metabolism/sulfur_respiration.html
+++ b/pages/traits/metabolism/sulfur_respiration.html
@@ -82,7 +82,7 @@ Synonyms (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/metabolism/syntrophy.html b/pages/traits/metabolism/syntrophy.html
index 79f2255941..fb936cdb68 100644
--- a/pages/traits/metabolism/syntrophy.html
+++ b/pages/traits/metabolism/syntrophy.html
@@ -430,7 +430,7 @@ kg-microbe context
METPO:1002006 [-0.312, -0.639, -1.585, +0.222, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -438,7 +438,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/thiosulfate_respiration.html b/pages/traits/metabolism/thiosulfate_respiration.html
index 260a7b3107..6753e928fd 100644
--- a/pages/traits/metabolism/thiosulfate_respiration.html
+++ b/pages/traits/metabolism/thiosulfate_respiration.html
@@ -82,7 +82,7 @@ Synonyms (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/metabolism/three_hydroxypropionate_bicycle.html b/pages/traits/metabolism/three_hydroxypropionate_bicycle.html
index f44d390c26..c99dc95a04 100644
--- a/pages/traits/metabolism/three_hydroxypropionate_bicycle.html
+++ b/pages/traits/metabolism/three_hydroxypropionate_bicycle.html
@@ -388,7 +388,7 @@ kg-microbe context
METPO:1000060 [-1.052, -1.766, -1.194, +0.291, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -396,7 +396,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/three_hydroxypropionate_four_hydroxybutyrate_cycle.html b/pages/traits/metabolism/three_hydroxypropionate_four_hydroxybutyrate_cycle.html
index 35799b77c4..fd1c396322 100644
--- a/pages/traits/metabolism/three_hydroxypropionate_four_hydroxybutyrate_cycle.html
+++ b/pages/traits/metabolism/three_hydroxypropionate_four_hydroxybutyrate_cycle.html
@@ -436,7 +436,7 @@ kg-microbe context
METPO:1000060 [-1.052, -1.766, -1.194, +0.291, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -444,7 +444,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/transports.html b/pages/traits/metabolism/transports.html
index 94e52c9745..6f39269c9d 100644
--- a/pages/traits/metabolism/transports.html
+++ b/pages/traits/metabolism/transports.html
@@ -91,7 +91,7 @@ kg-microbe context
METPO:2000207 [-1.261, -0.133, -2.951, -0.069, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -99,7 +99,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/uses_as_carbon_source.html b/pages/traits/metabolism/uses_as_carbon_source.html
index 4f41090844..af99b2fd3d 100644
--- a/pages/traits/metabolism/uses_as_carbon_source.html
+++ b/pages/traits/metabolism/uses_as_carbon_source.html
@@ -96,7 +96,7 @@ kg-microbe context
METPO:2000006 [-1.211, -0.216, -2.379, -0.057, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -104,7 +104,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/uses_as_electron_acceptor.html b/pages/traits/metabolism/uses_as_electron_acceptor.html
index cf363aa00b..bff4c9b13e 100644
--- a/pages/traits/metabolism/uses_as_electron_acceptor.html
+++ b/pages/traits/metabolism/uses_as_electron_acceptor.html
@@ -96,7 +96,7 @@ kg-microbe context
METPO:2000008 [-1.185, -0.120, -2.348, -0.244, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -104,7 +104,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/uses_as_electron_donor.html b/pages/traits/metabolism/uses_as_electron_donor.html
index 424b9cecbd..e8af6197a7 100644
--- a/pages/traits/metabolism/uses_as_electron_donor.html
+++ b/pages/traits/metabolism/uses_as_electron_donor.html
@@ -96,7 +96,7 @@ kg-microbe context
METPO:2000009 [-1.438, -0.144, -2.282, -0.128, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -104,7 +104,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/uses_as_energy_source.html b/pages/traits/metabolism/uses_as_energy_source.html
index 28122971b8..d0157c5ba9 100644
--- a/pages/traits/metabolism/uses_as_energy_source.html
+++ b/pages/traits/metabolism/uses_as_energy_source.html
@@ -96,7 +96,7 @@ kg-microbe context
METPO:2000010 [-1.190, -0.217, -2.451, -0.286, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -104,7 +104,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/uses_as_nitrogen_source.html b/pages/traits/metabolism/uses_as_nitrogen_source.html
index 46906db450..86fddb19f5 100644
--- a/pages/traits/metabolism/uses_as_nitrogen_source.html
+++ b/pages/traits/metabolism/uses_as_nitrogen_source.html
@@ -89,7 +89,7 @@ kg-microbe context
METPO:2000014 [-1.099, -0.147, -2.183, -0.040, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -97,7 +97,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/uses_as_sulfur_source.html b/pages/traits/metabolism/uses_as_sulfur_source.html
index 265eb7f762..f227c40ffd 100644
--- a/pages/traits/metabolism/uses_as_sulfur_source.html
+++ b/pages/traits/metabolism/uses_as_sulfur_source.html
@@ -89,7 +89,7 @@ kg-microbe context
METPO:2000020 [-1.201, -0.193, -2.383, -0.149, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -97,7 +97,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/uses_for_aerobic_catabolization.html b/pages/traits/metabolism/uses_for_aerobic_catabolization.html
index 0a2db37c9f..d2b7fe74d9 100644
--- a/pages/traits/metabolism/uses_for_aerobic_catabolization.html
+++ b/pages/traits/metabolism/uses_for_aerobic_catabolization.html
@@ -89,7 +89,7 @@ kg-microbe context
METPO:2000032 [-1.321, -0.211, -2.272, -0.219, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -97,7 +97,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/uses_for_aerobic_growth.html b/pages/traits/metabolism/uses_for_aerobic_growth.html
index 0b169874d4..405ee0c32c 100644
--- a/pages/traits/metabolism/uses_for_aerobic_growth.html
+++ b/pages/traits/metabolism/uses_for_aerobic_growth.html
@@ -89,7 +89,7 @@ kg-microbe context
METPO:2000043 [-1.276, -0.277, -2.261, -0.058, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -97,7 +97,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/uses_for_anaerobic_catabolization.html b/pages/traits/metabolism/uses_for_anaerobic_catabolization.html
index 477c8cfb87..86accbb4c9 100644
--- a/pages/traits/metabolism/uses_for_anaerobic_catabolization.html
+++ b/pages/traits/metabolism/uses_for_anaerobic_catabolization.html
@@ -89,7 +89,7 @@ kg-microbe context
METPO:2000048 [-1.167, -0.251, -2.436, -0.107, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -97,7 +97,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/uses_for_anaerobic_growth.html b/pages/traits/metabolism/uses_for_anaerobic_growth.html
index d4d0de0517..a9ec4f2825 100644
--- a/pages/traits/metabolism/uses_for_anaerobic_growth.html
+++ b/pages/traits/metabolism/uses_for_anaerobic_growth.html
@@ -89,7 +89,7 @@ kg-microbe context
METPO:2000049 [-1.232, -0.238, -2.354, -0.293, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -97,7 +97,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/uses_for_anaerobic_growth_in_the_dark.html b/pages/traits/metabolism/uses_for_anaerobic_growth_in_the_dark.html
index 80b5ea5c6d..566c9b1046 100644
--- a/pages/traits/metabolism/uses_for_anaerobic_growth_in_the_dark.html
+++ b/pages/traits/metabolism/uses_for_anaerobic_growth_in_the_dark.html
@@ -89,7 +89,7 @@ kg-microbe context
METPO:2000050 [-1.332, -0.290, -2.317, -0.177, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -97,7 +97,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/uses_for_anaerobic_growth_with_light.html b/pages/traits/metabolism/uses_for_anaerobic_growth_with_light.html
index c2eb3085ac..88395c8a51 100644
--- a/pages/traits/metabolism/uses_for_anaerobic_growth_with_light.html
+++ b/pages/traits/metabolism/uses_for_anaerobic_growth_with_light.html
@@ -89,7 +89,7 @@ kg-microbe context
METPO:2000051 [-1.056, -0.269, -2.485, -0.197, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -97,7 +97,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/uses_for_growth.html b/pages/traits/metabolism/uses_for_growth.html
index bbc89f5aad..e57e73aed5 100644
--- a/pages/traits/metabolism/uses_for_growth.html
+++ b/pages/traits/metabolism/uses_for_growth.html
@@ -89,7 +89,7 @@ kg-microbe context
METPO:2000012 [-1.291, -0.327, -2.398, -0.174, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -97,7 +97,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/uses_for_respiration.html b/pages/traits/metabolism/uses_for_respiration.html
index 3f1c6272aa..7b281ac3ca 100644
--- a/pages/traits/metabolism/uses_for_respiration.html
+++ b/pages/traits/metabolism/uses_for_respiration.html
@@ -89,7 +89,7 @@ kg-microbe context
METPO:2000019 [-1.331, -0.120, -2.402, -0.082, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -97,7 +97,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/uses_in_other_way.html b/pages/traits/metabolism/uses_in_other_way.html
index e61a2e6322..e0f7d72bc4 100644
--- a/pages/traits/metabolism/uses_in_other_way.html
+++ b/pages/traits/metabolism/uses_in_other_way.html
@@ -89,7 +89,7 @@ kg-microbe context
METPO:2000015 [-1.208, -0.160, -2.469, -0.205, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -97,7 +97,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/wood_ljungdahl_pathway.html b/pages/traits/metabolism/wood_ljungdahl_pathway.html
index 4e30400eb4..665de5333f 100644
--- a/pages/traits/metabolism/wood_ljungdahl_pathway.html
+++ b/pages/traits/metabolism/wood_ljungdahl_pathway.html
@@ -405,7 +405,7 @@ kg-microbe context
METPO:1000060 [-1.052, -1.766, -1.194, +0.291, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -413,7 +413,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/metabolism/xylan_degradation.html b/pages/traits/metabolism/xylan_degradation.html
index 89ca87dc89..eb84de7d5d 100644
--- a/pages/traits/metabolism/xylan_degradation.html
+++ b/pages/traits/metabolism/xylan_degradation.html
@@ -301,7 +301,7 @@ kg-microbe context
METPO:1000060 [-1.052, -1.766, -1.194, +0.291, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -309,7 +309,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/akinete.html b/pages/traits/morphology/akinete.html
index 578d790be5..3b10358b79 100644
--- a/pages/traits/morphology/akinete.html
+++ b/pages/traits/morphology/akinete.html
@@ -73,7 +73,7 @@ Parent traits (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/morphology/amphitrichous.html b/pages/traits/morphology/amphitrichous.html
index 3631f624d9..1375c61e1f 100644
--- a/pages/traits/morphology/amphitrichous.html
+++ b/pages/traits/morphology/amphitrichous.html
@@ -264,7 +264,7 @@ kg-microbe context
METPO:1000704 [-2.371, -2.707, -4.290, +4.186, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -272,7 +272,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/axially_filamented.html b/pages/traits/morphology/axially_filamented.html
index f1374358bd..7c852070a2 100644
--- a/pages/traits/morphology/axially_filamented.html
+++ b/pages/traits/morphology/axially_filamented.html
@@ -290,7 +290,7 @@ kg-microbe context
METPO:1000705 [-1.207, -3.411, -0.763, +0.835, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -298,7 +298,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/bacillus_shaped.html b/pages/traits/morphology/bacillus_shaped.html
index 666ac52830..8f1e5eecaa 100644
--- a/pages/traits/morphology/bacillus_shaped.html
+++ b/pages/traits/morphology/bacillus_shaped.html
@@ -290,7 +290,7 @@ kg-microbe context
METPO:1000667 [-93.971, +37.913, +150.959, -201.986, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -298,7 +298,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/black_pigmented.html b/pages/traits/morphology/black_pigmented.html
index 2f1f3a6b18..a4377c68fe 100644
--- a/pages/traits/morphology/black_pigmented.html
+++ b/pages/traits/morphology/black_pigmented.html
@@ -324,7 +324,7 @@ kg-microbe context
METPO:1003022 [-1.598, -1.748, -2.126, +1.386, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -332,7 +332,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/branched_shaped.html b/pages/traits/morphology/branched_shaped.html
index f81c813985..98f242ec67 100644
--- a/pages/traits/morphology/branched_shaped.html
+++ b/pages/traits/morphology/branched_shaped.html
@@ -309,7 +309,7 @@ kg-microbe context
METPO:1000687 [-3.113, -4.524, -0.722, -1.425, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -317,7 +317,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/brown_pigmented.html b/pages/traits/morphology/brown_pigmented.html
index bbf57b4817..5adbcb5e93 100644
--- a/pages/traits/morphology/brown_pigmented.html
+++ b/pages/traits/morphology/brown_pigmented.html
@@ -354,7 +354,7 @@ kg-microbe context
METPO:1003023 [-2.125, -1.589, -1.615, +1.116, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -362,7 +362,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/capsule.html b/pages/traits/morphology/capsule.html
index e2b5cb595e..d458b48851 100644
--- a/pages/traits/morphology/capsule.html
+++ b/pages/traits/morphology/capsule.html
@@ -265,7 +265,7 @@ kg-microbe context
METPO:1000059 [-2.682, -2.070, -3.656, -0.652, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -273,7 +273,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/carboxysome.html b/pages/traits/morphology/carboxysome.html
index 695a969dcd..c95bdacff3 100644
--- a/pages/traits/morphology/carboxysome.html
+++ b/pages/traits/morphology/carboxysome.html
@@ -344,7 +344,7 @@ kg-microbe context
METPO:1000059 [-2.682, -2.070, -3.656, -0.652, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -352,7 +352,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/carotenoid_pigmentation.html b/pages/traits/morphology/carotenoid_pigmentation.html
index 4946b799fb..7a02d6e45f 100644
--- a/pages/traits/morphology/carotenoid_pigmentation.html
+++ b/pages/traits/morphology/carotenoid_pigmentation.html
@@ -307,7 +307,7 @@ kg-microbe context
METPO:1003031 [-2.345, -1.877, -1.987, -1.228, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -315,7 +315,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/cell_length.html b/pages/traits/morphology/cell_length.html
index 8217e58523..3650401866 100644
--- a/pages/traits/morphology/cell_length.html
+++ b/pages/traits/morphology/cell_length.html
@@ -330,7 +330,7 @@ kg-microbe context
METPO:1000881 [-1.413, -1.159, -3.315, +0.964, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -338,7 +338,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/cell_length_large.html b/pages/traits/morphology/cell_length_large.html
index a4fce3461b..407c58eb85 100644
--- a/pages/traits/morphology/cell_length_large.html
+++ b/pages/traits/morphology/cell_length_large.html
@@ -273,7 +273,7 @@ kg-microbe context
METPO:1000886 [-0.375, -2.130, -2.643, +3.325, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -281,7 +281,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/cell_length_medium.html b/pages/traits/morphology/cell_length_medium.html
index 7ae8cf4a01..9698699cad 100644
--- a/pages/traits/morphology/cell_length_medium.html
+++ b/pages/traits/morphology/cell_length_medium.html
@@ -256,7 +256,7 @@ kg-microbe context
METPO:1000885 [-0.546, -0.957, -2.038, +2.464, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -264,7 +264,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/cell_length_small.html b/pages/traits/morphology/cell_length_small.html
index 0866ceed9c..b2c332841a 100644
--- a/pages/traits/morphology/cell_length_small.html
+++ b/pages/traits/morphology/cell_length_small.html
@@ -273,7 +273,7 @@ kg-microbe context
METPO:1000884 [-1.814, -0.837, -3.570, +2.198, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -281,7 +281,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/cell_length_very_small.html b/pages/traits/morphology/cell_length_very_small.html
index 04ca7e59a0..e3deb701d2 100644
--- a/pages/traits/morphology/cell_length_very_small.html
+++ b/pages/traits/morphology/cell_length_very_small.html
@@ -256,7 +256,7 @@ kg-microbe context
METPO:1000883 [-1.058, -2.584, -0.836, +2.454, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -264,7 +264,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/cell_shape.html b/pages/traits/morphology/cell_shape.html
index 40a7224a0f..10b734558c 100644
--- a/pages/traits/morphology/cell_shape.html
+++ b/pages/traits/morphology/cell_shape.html
@@ -401,7 +401,7 @@ kg-microbe context
METPO:1000666 [-5.052, -3.981, -3.909, -0.718, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -409,7 +409,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/cell_width.html b/pages/traits/morphology/cell_width.html
index ad201633b9..f45c46c846 100644
--- a/pages/traits/morphology/cell_width.html
+++ b/pages/traits/morphology/cell_width.html
@@ -262,7 +262,7 @@ kg-microbe context
METPO:1000882 [-1.477, -0.754, -1.899, +0.480, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -270,7 +270,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/cell_width_large.html b/pages/traits/morphology/cell_width_large.html
index fd651fc021..6f4c5ef751 100644
--- a/pages/traits/morphology/cell_width_large.html
+++ b/pages/traits/morphology/cell_width_large.html
@@ -290,7 +290,7 @@ kg-microbe context
METPO:1000890 [+0.641, -3.918, -1.937, +4.002, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -298,7 +298,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/cell_width_medium.html b/pages/traits/morphology/cell_width_medium.html
index cf26aadf74..ee8fbd4669 100644
--- a/pages/traits/morphology/cell_width_medium.html
+++ b/pages/traits/morphology/cell_width_medium.html
@@ -273,7 +273,7 @@ kg-microbe context
METPO:1000889 [-1.494, -2.132, -3.757, +2.828, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -281,7 +281,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/cell_width_small.html b/pages/traits/morphology/cell_width_small.html
index cabf86b773..4284e5a714 100644
--- a/pages/traits/morphology/cell_width_small.html
+++ b/pages/traits/morphology/cell_width_small.html
@@ -273,7 +273,7 @@ kg-microbe context
METPO:1000888 [-1.239, +0.787, -0.502, +4.802, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -281,7 +281,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/cell_width_very_small.html b/pages/traits/morphology/cell_width_very_small.html
index e88bc07239..4110ed3fc0 100644
--- a/pages/traits/morphology/cell_width_very_small.html
+++ b/pages/traits/morphology/cell_width_very_small.html
@@ -256,7 +256,7 @@ kg-microbe context
METPO:1000887 [-0.349, -0.753, -1.789, +1.274, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -264,7 +264,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/coccobacillus_shaped.html b/pages/traits/morphology/coccobacillus_shaped.html
index 5a163abab0..75f689c4a3 100644
--- a/pages/traits/morphology/coccobacillus_shaped.html
+++ b/pages/traits/morphology/coccobacillus_shaped.html
@@ -290,7 +290,7 @@ kg-microbe context
METPO:1000688 [-20.154, -47.811, +18.193, -1.988, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -298,7 +298,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/coccus_shaped.html b/pages/traits/morphology/coccus_shaped.html
index 152b040068..76557ee5a0 100644
--- a/pages/traits/morphology/coccus_shaped.html
+++ b/pages/traits/morphology/coccus_shaped.html
@@ -275,7 +275,7 @@ kg-microbe context
METPO:1000668 [+298.218, -515.508, -75.836, -35.326, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -283,7 +283,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/cream_pigmented.html b/pages/traits/morphology/cream_pigmented.html
index 917a848d38..7f8af9c53a 100644
--- a/pages/traits/morphology/cream_pigmented.html
+++ b/pages/traits/morphology/cream_pigmented.html
@@ -222,7 +222,7 @@ kg-microbe context
METPO:1003024 [-1.327, -0.484, -1.054, -1.119, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -230,7 +230,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/crescent_shaped.html b/pages/traits/morphology/crescent_shaped.html
index 54cb8ace09..d9127e2b6c 100644
--- a/pages/traits/morphology/crescent_shaped.html
+++ b/pages/traits/morphology/crescent_shaped.html
@@ -303,7 +303,7 @@ kg-microbe context
METPO:1000669 [-4.617, -3.346, -2.304, +0.470, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -311,7 +311,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/curved_shaped.html b/pages/traits/morphology/curved_shaped.html
index 3880cb94dc..72e1b91243 100644
--- a/pages/traits/morphology/curved_shaped.html
+++ b/pages/traits/morphology/curved_shaped.html
@@ -258,7 +258,7 @@ kg-microbe context
METPO:1000670 [-1.017, -1.801, -3.696, +0.440, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -266,7 +266,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/diplococcus_shaped.html b/pages/traits/morphology/diplococcus_shaped.html
index 2fb9d7e074..c6f845fcba 100644
--- a/pages/traits/morphology/diplococcus_shaped.html
+++ b/pages/traits/morphology/diplococcus_shaped.html
@@ -290,7 +290,7 @@ kg-microbe context
METPO:1000671 [-3.757, -1.830, -2.403, -0.453, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -298,7 +298,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/disc_shaped.html b/pages/traits/morphology/disc_shaped.html
index b7c412b4a4..f9502b5685 100644
--- a/pages/traits/morphology/disc_shaped.html
+++ b/pages/traits/morphology/disc_shaped.html
@@ -205,7 +205,7 @@ kg-microbe context
METPO:1000689 [-0.014, -3.804, -1.044, +0.754, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -213,7 +213,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/dumbbell_shaped.html b/pages/traits/morphology/dumbbell_shaped.html
index db827fa27f..bf342ad4db 100644
--- a/pages/traits/morphology/dumbbell_shaped.html
+++ b/pages/traits/morphology/dumbbell_shaped.html
@@ -275,7 +275,7 @@ kg-microbe context
METPO:1000672 [-3.439, -2.809, -2.204, +0.668, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -283,7 +283,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/ellipsoidal.html b/pages/traits/morphology/ellipsoidal.html
index 7c8eb6de41..c74f31187f 100644
--- a/pages/traits/morphology/ellipsoidal.html
+++ b/pages/traits/morphology/ellipsoidal.html
@@ -362,7 +362,7 @@ kg-microbe context
METPO:1000673 [-1.999, -1.383, -2.615, +0.176, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -370,7 +370,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/filament_shaped.html b/pages/traits/morphology/filament_shaped.html
index 8e724bc296..61865ec4e8 100644
--- a/pages/traits/morphology/filament_shaped.html
+++ b/pages/traits/morphology/filament_shaped.html
@@ -328,7 +328,7 @@ kg-microbe context
METPO:1000674 [+1.704, -8.992, +4.797, -2.737, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -336,7 +336,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/flagellar_arrangement.html b/pages/traits/morphology/flagellar_arrangement.html
index d0d43f0f6e..d92ac9c7db 100644
--- a/pages/traits/morphology/flagellar_arrangement.html
+++ b/pages/traits/morphology/flagellar_arrangement.html
@@ -279,7 +279,7 @@ kg-microbe context
METPO:1000704 [-2.371, -2.707, -4.290, +4.186, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -287,7 +287,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/flagellated.html b/pages/traits/morphology/flagellated.html
index d2f742ff9b..9920573f7f 100644
--- a/pages/traits/morphology/flagellated.html
+++ b/pages/traits/morphology/flagellated.html
@@ -380,7 +380,7 @@ kg-microbe context
METPO:1000704 [-2.371, -2.707, -4.290, +4.186, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -388,7 +388,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/flask_shaped.html b/pages/traits/morphology/flask_shaped.html
index 433b02d898..63ae192b64 100644
--- a/pages/traits/morphology/flask_shaped.html
+++ b/pages/traits/morphology/flask_shaped.html
@@ -241,7 +241,7 @@ kg-microbe context
METPO:1000675 [-2.136, -1.080, +0.747, -1.495, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -249,7 +249,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/fusiform_shaped.html b/pages/traits/morphology/fusiform_shaped.html
index 5951eb51b1..703937eb4f 100644
--- a/pages/traits/morphology/fusiform_shaped.html
+++ b/pages/traits/morphology/fusiform_shaped.html
@@ -273,7 +273,7 @@ kg-microbe context
METPO:1000690 [-2.797, -1.128, -4.645, -0.791, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -281,7 +281,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/gas_vesicle.html b/pages/traits/morphology/gas_vesicle.html
index f11134d4cd..55a1dd8858 100644
--- a/pages/traits/morphology/gas_vesicle.html
+++ b/pages/traits/morphology/gas_vesicle.html
@@ -378,7 +378,7 @@ kg-microbe context
METPO:1000059 [-2.682, -2.070, -3.656, -0.652, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -386,7 +386,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/gliding.html b/pages/traits/morphology/gliding.html
index 3687d84d67..565573595a 100644
--- a/pages/traits/morphology/gliding.html
+++ b/pages/traits/morphology/gliding.html
@@ -328,7 +328,7 @@ kg-microbe context
METPO:1000706 [-1.115, +0.741, -2.784, -0.615, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -336,7 +336,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/gram_negative.html b/pages/traits/morphology/gram_negative.html
index 51d9ee101c..80b3600dbf 100644
--- a/pages/traits/morphology/gram_negative.html
+++ b/pages/traits/morphology/gram_negative.html
@@ -326,7 +326,7 @@ kg-microbe context
METPO:1000699 [+365.243, +263.306, -35.927, -345.448, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -334,7 +334,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/gram_positive.html b/pages/traits/morphology/gram_positive.html
index 97c6ccadd5..96eff384d6 100644
--- a/pages/traits/morphology/gram_positive.html
+++ b/pages/traits/morphology/gram_positive.html
@@ -309,7 +309,7 @@ kg-microbe context
METPO:1000698 [+104.737, -799.711, +133.158, -97.829, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -317,7 +317,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/gram_stain.html b/pages/traits/morphology/gram_stain.html
index ae9431f271..a3e1210dd6 100644
--- a/pages/traits/morphology/gram_stain.html
+++ b/pages/traits/morphology/gram_stain.html
@@ -271,7 +271,7 @@ kg-microbe context
METPO:1000697 [-2.552, -2.118, -3.376, -0.738, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -279,7 +279,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/gram_variable.html b/pages/traits/morphology/gram_variable.html
index e022fc1db9..9e28e8e055 100644
--- a/pages/traits/morphology/gram_variable.html
+++ b/pages/traits/morphology/gram_variable.html
@@ -256,7 +256,7 @@ kg-microbe context
METPO:1000700 [-3.645, -2.566, -2.886, -0.695, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -264,7 +264,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/green_pigmented.html b/pages/traits/morphology/green_pigmented.html
index dcde9a5f02..508832f672 100644
--- a/pages/traits/morphology/green_pigmented.html
+++ b/pages/traits/morphology/green_pigmented.html
@@ -307,7 +307,7 @@ kg-microbe context
METPO:1003025 [-0.292, -0.545, -1.390, +0.056, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -315,7 +315,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/helical_shaped.html b/pages/traits/morphology/helical_shaped.html
index fc42c3e35c..08549f96d2 100644
--- a/pages/traits/morphology/helical_shaped.html
+++ b/pages/traits/morphology/helical_shaped.html
@@ -273,7 +273,7 @@ kg-microbe context
METPO:1000676 [-1.491, -3.251, -3.052, +1.582, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -281,7 +281,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/heterocyst.html b/pages/traits/morphology/heterocyst.html
index 949778341f..bf29d7f4a5 100644
--- a/pages/traits/morphology/heterocyst.html
+++ b/pages/traits/morphology/heterocyst.html
@@ -354,7 +354,7 @@ kg-microbe context
METPO:1000059 [-2.682, -2.070, -3.656, -0.652, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -362,7 +362,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/holdfast.html b/pages/traits/morphology/holdfast.html
index 54c101b0a8..6269afd672 100644
--- a/pages/traits/morphology/holdfast.html
+++ b/pages/traits/morphology/holdfast.html
@@ -82,7 +82,7 @@ Synonyms (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/morphology/intracellular_inclusion.html b/pages/traits/morphology/intracellular_inclusion.html
index fcb3fd1444..f4bb2d1412 100644
--- a/pages/traits/morphology/intracellular_inclusion.html
+++ b/pages/traits/morphology/intracellular_inclusion.html
@@ -292,7 +292,7 @@ kg-microbe context
METPO:1000059 [-2.682, -2.070, -3.656, -0.652, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -300,7 +300,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/irregular_shaped.html b/pages/traits/morphology/irregular_shaped.html
index fc034cb111..e2fd4c00f7 100644
--- a/pages/traits/morphology/irregular_shaped.html
+++ b/pages/traits/morphology/irregular_shaped.html
@@ -273,7 +273,7 @@ kg-microbe context
METPO:1000691 [-4.712, -0.924, -1.303, -1.253, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -281,7 +281,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/lateral_flagellation.html b/pages/traits/morphology/lateral_flagellation.html
index ae6bc2fd67..218fd3ed53 100644
--- a/pages/traits/morphology/lateral_flagellation.html
+++ b/pages/traits/morphology/lateral_flagellation.html
@@ -73,7 +73,7 @@ Parent traits (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/morphology/lophotrichous.html b/pages/traits/morphology/lophotrichous.html
index 7e00200195..957e6dc95a 100644
--- a/pages/traits/morphology/lophotrichous.html
+++ b/pages/traits/morphology/lophotrichous.html
@@ -247,7 +247,7 @@ kg-microbe context
METPO:1000704 [-2.371, -2.707, -4.290, +4.186, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -255,7 +255,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/magnetosome.html b/pages/traits/morphology/magnetosome.html
index df4dfba4d1..3968837a4b 100644
--- a/pages/traits/morphology/magnetosome.html
+++ b/pages/traits/morphology/magnetosome.html
@@ -386,7 +386,7 @@ kg-microbe context
METPO:1000059 [-2.682, -2.070, -3.656, -0.652, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -394,7 +394,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/monotrichous.html b/pages/traits/morphology/monotrichous.html
index 2a3b81de35..a4939f19f3 100644
--- a/pages/traits/morphology/monotrichous.html
+++ b/pages/traits/morphology/monotrichous.html
@@ -247,7 +247,7 @@ kg-microbe context
METPO:1000704 [-2.371, -2.707, -4.290, +4.186, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -255,7 +255,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/motile.html b/pages/traits/morphology/motile.html
index 46de2d6cab..fbe8d9aac8 100644
--- a/pages/traits/morphology/motile.html
+++ b/pages/traits/morphology/motile.html
@@ -507,7 +507,7 @@ kg-microbe context
METPO:1000702 [+24.397, -70.567, +20.807, -80.811, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -515,7 +515,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/motility.html b/pages/traits/morphology/motility.html
index d488319642..612109ec2f 100644
--- a/pages/traits/morphology/motility.html
+++ b/pages/traits/morphology/motility.html
@@ -318,7 +318,7 @@ kg-microbe context
METPO:1000701 [-1.722, -3.036, -3.705, +0.093, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -326,7 +326,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/mycelial_growth.html b/pages/traits/morphology/mycelial_growth.html
index 923d375123..7ca747a8b9 100644
--- a/pages/traits/morphology/mycelial_growth.html
+++ b/pages/traits/morphology/mycelial_growth.html
@@ -275,7 +275,7 @@ kg-microbe context
METPO:1000059 [-2.682, -2.070, -3.656, -0.652, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -283,7 +283,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/non_motile.html b/pages/traits/morphology/non_motile.html
index 5c89f30806..fa54529f4c 100644
--- a/pages/traits/morphology/non_motile.html
+++ b/pages/traits/morphology/non_motile.html
@@ -275,7 +275,7 @@ kg-microbe context
METPO:1000703 [+135.175, -208.275, +67.323, -38.317, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -283,7 +283,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/non_spore_forming.html b/pages/traits/morphology/non_spore_forming.html
index e02ab7efee..85b09c7157 100644
--- a/pages/traits/morphology/non_spore_forming.html
+++ b/pages/traits/morphology/non_spore_forming.html
@@ -292,7 +292,7 @@ kg-microbe context
METPO:1000872 [+88.853, -240.826, -35.218, -139.525, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -300,7 +300,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/orange_pigmented.html b/pages/traits/morphology/orange_pigmented.html
index 3fafb0a6b0..304ed18ce6 100644
--- a/pages/traits/morphology/orange_pigmented.html
+++ b/pages/traits/morphology/orange_pigmented.html
@@ -324,7 +324,7 @@ kg-microbe context
METPO:1003026 [-1.743, -2.814, -1.192, -0.288, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -332,7 +332,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/oval_shaped.html b/pages/traits/morphology/oval_shaped.html
index 1cead82fc4..5ade174121 100644
--- a/pages/traits/morphology/oval_shaped.html
+++ b/pages/traits/morphology/oval_shaped.html
@@ -354,7 +354,7 @@ kg-microbe context
METPO:1000678 [-12.940, -17.188, -48.453, +20.919, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -362,7 +362,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/ovoid_shaped.html b/pages/traits/morphology/ovoid_shaped.html
index dfdef9867c..6db10f96b0 100644
--- a/pages/traits/morphology/ovoid_shaped.html
+++ b/pages/traits/morphology/ovoid_shaped.html
@@ -373,7 +373,7 @@ kg-microbe context
METPO:1000677 [+1.410, -5.519, -0.585, +0.196, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -381,7 +381,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/peritrichous.html b/pages/traits/morphology/peritrichous.html
index e9524750c7..1708e7539f 100644
--- a/pages/traits/morphology/peritrichous.html
+++ b/pages/traits/morphology/peritrichous.html
@@ -247,7 +247,7 @@ kg-microbe context
METPO:1000704 [-2.371, -2.707, -4.290, +4.186, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -255,7 +255,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/pigmentation.html b/pages/traits/morphology/pigmentation.html
index c59768779e..d3229b60ab 100644
--- a/pages/traits/morphology/pigmentation.html
+++ b/pages/traits/morphology/pigmentation.html
@@ -342,7 +342,7 @@ kg-microbe context
METPO:1003021 [-2.062, -1.921, -1.630, -0.024, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -350,7 +350,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/pink_pigmented.html b/pages/traits/morphology/pink_pigmented.html
index dcdb29e989..3721d10f30 100644
--- a/pages/traits/morphology/pink_pigmented.html
+++ b/pages/traits/morphology/pink_pigmented.html
@@ -307,7 +307,7 @@ kg-microbe context
METPO:1003027 [-4.184, -3.258, -1.095, +0.518, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -315,7 +315,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/pleomorphic_shaped.html b/pages/traits/morphology/pleomorphic_shaped.html
index 7a1b470954..546408dae1 100644
--- a/pages/traits/morphology/pleomorphic_shaped.html
+++ b/pages/traits/morphology/pleomorphic_shaped.html
@@ -277,7 +277,7 @@ kg-microbe context
METPO:1000679 [-2.951, -6.268, -2.114, +1.959, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -285,7 +285,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/polar_flagellation.html b/pages/traits/morphology/polar_flagellation.html
index a3dc3f71b4..12c5df7f52 100644
--- a/pages/traits/morphology/polar_flagellation.html
+++ b/pages/traits/morphology/polar_flagellation.html
@@ -82,7 +82,7 @@ Synonyms (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/morphology/polyhydroxyalkanoate_granule.html b/pages/traits/morphology/polyhydroxyalkanoate_granule.html
index b1659d4c34..716e3a93a3 100644
--- a/pages/traits/morphology/polyhydroxyalkanoate_granule.html
+++ b/pages/traits/morphology/polyhydroxyalkanoate_granule.html
@@ -416,7 +416,7 @@ kg-microbe context
METPO:1000059 [-2.682, -2.070, -3.656, -0.652, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -424,7 +424,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/polyphosphate_granule.html b/pages/traits/morphology/polyphosphate_granule.html
index d1028fbfe2..16442039c9 100644
--- a/pages/traits/morphology/polyphosphate_granule.html
+++ b/pages/traits/morphology/polyphosphate_granule.html
@@ -271,7 +271,7 @@ kg-microbe context
METPO:1000059 [-2.682, -2.070, -3.656, -0.652, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -279,7 +279,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/polytrichous_flagellation.html b/pages/traits/morphology/polytrichous_flagellation.html
index 37be39330a..d99fa350d8 100644
--- a/pages/traits/morphology/polytrichous_flagellation.html
+++ b/pages/traits/morphology/polytrichous_flagellation.html
@@ -82,7 +82,7 @@ Synonyms (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/morphology/prosthecate.html b/pages/traits/morphology/prosthecate.html
index 47263f5714..fc80d52d9a 100644
--- a/pages/traits/morphology/prosthecate.html
+++ b/pages/traits/morphology/prosthecate.html
@@ -258,7 +258,7 @@ kg-microbe context
METPO:1000059 [-2.682, -2.070, -3.656, -0.652, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -266,7 +266,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/red_pigmented.html b/pages/traits/morphology/red_pigmented.html
index accc69cef1..34a79aa998 100644
--- a/pages/traits/morphology/red_pigmented.html
+++ b/pages/traits/morphology/red_pigmented.html
@@ -290,7 +290,7 @@ kg-microbe context
METPO:1003028 [-0.620, -1.473, -2.633, -0.182, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -298,7 +298,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/ring_shaped.html b/pages/traits/morphology/ring_shaped.html
index 7f0a864dfb..02de96a793 100644
--- a/pages/traits/morphology/ring_shaped.html
+++ b/pages/traits/morphology/ring_shaped.html
@@ -284,7 +284,7 @@ kg-microbe context
METPO:1000680 [-3.059, -2.534, -2.544, -0.510, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -292,7 +292,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/rod_shaped.html b/pages/traits/morphology/rod_shaped.html
index 9c4c9a7723..47c9891df1 100644
--- a/pages/traits/morphology/rod_shaped.html
+++ b/pages/traits/morphology/rod_shaped.html
@@ -309,7 +309,7 @@ kg-microbe context
METPO:1000681 [+3.060, +7.761, -10.358, +10.121, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -317,7 +317,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/s_layer.html b/pages/traits/morphology/s_layer.html
index 06fcb44e99..b19b88eafd 100644
--- a/pages/traits/morphology/s_layer.html
+++ b/pages/traits/morphology/s_layer.html
@@ -171,7 +171,7 @@ kg-microbe context
METPO:1000059 [-2.682, -2.070, -3.656, -0.652, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -179,7 +179,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/sarcina_arrangement.html b/pages/traits/morphology/sarcina_arrangement.html
index 653c7a2512..da1403891d 100644
--- a/pages/traits/morphology/sarcina_arrangement.html
+++ b/pages/traits/morphology/sarcina_arrangement.html
@@ -273,7 +273,7 @@ kg-microbe context
METPO:1000666 [-5.052, -3.981, -3.909, -0.718, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -281,7 +281,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/sphere_shaped.html b/pages/traits/morphology/sphere_shaped.html
index 78d25e182f..8ee5da45f0 100644
--- a/pages/traits/morphology/sphere_shaped.html
+++ b/pages/traits/morphology/sphere_shaped.html
@@ -292,7 +292,7 @@ kg-microbe context
METPO:1000683 [-4.221, -1.488, -1.716, +1.200, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -300,7 +300,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/spindle_shaped.html b/pages/traits/morphology/spindle_shaped.html
index e1e9a0c272..ca0cfdcee8 100644
--- a/pages/traits/morphology/spindle_shaped.html
+++ b/pages/traits/morphology/spindle_shaped.html
@@ -205,7 +205,7 @@ kg-microbe context
METPO:1000692 [-4.209, -2.313, -2.964, -1.593, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -213,7 +213,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/spiral_shaped.html b/pages/traits/morphology/spiral_shaped.html
index 6912003b2b..bbd1d90553 100644
--- a/pages/traits/morphology/spiral_shaped.html
+++ b/pages/traits/morphology/spiral_shaped.html
@@ -294,7 +294,7 @@ kg-microbe context
METPO:1000684 [+2.081, -74.961, -2.345, -78.220, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -302,7 +302,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/spirochete_shaped.html b/pages/traits/morphology/spirochete_shaped.html
index 76eb1f5145..af03b343c2 100644
--- a/pages/traits/morphology/spirochete_shaped.html
+++ b/pages/traits/morphology/spirochete_shaped.html
@@ -307,7 +307,7 @@ kg-microbe context
METPO:1000693 [-5.437, -1.510, -3.065, -0.024, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -315,7 +315,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/spore_forming.html b/pages/traits/morphology/spore_forming.html
index 7ba6e69dc5..486a01f9dc 100644
--- a/pages/traits/morphology/spore_forming.html
+++ b/pages/traits/morphology/spore_forming.html
@@ -407,7 +407,7 @@ kg-microbe context
METPO:1000871 [+10.788, -112.336, +60.034, -6.588, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -415,7 +415,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/spore_shaped.html b/pages/traits/morphology/spore_shaped.html
index 4deca4afd9..371da00432 100644
--- a/pages/traits/morphology/spore_shaped.html
+++ b/pages/traits/morphology/spore_shaped.html
@@ -456,7 +456,7 @@ kg-microbe context
METPO:1000682 [-1.729, -2.644, -1.494, +0.751, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -464,7 +464,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/sporulation.html b/pages/traits/morphology/sporulation.html
index a3ce8ef48d..0ffa5c0c56 100644
--- a/pages/traits/morphology/sporulation.html
+++ b/pages/traits/morphology/sporulation.html
@@ -486,7 +486,7 @@ kg-microbe context
METPO:1000870 [-1.554, -2.668, -2.202, -0.616, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -494,7 +494,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/square_shaped.html b/pages/traits/morphology/square_shaped.html
index 02279a5821..ad0ba8de3b 100644
--- a/pages/traits/morphology/square_shaped.html
+++ b/pages/traits/morphology/square_shaped.html
@@ -239,7 +239,7 @@ kg-microbe context
METPO:1000694 [-3.745, -0.587, -2.659, +0.960, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -247,7 +247,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/staphylococcus_arrangement.html b/pages/traits/morphology/staphylococcus_arrangement.html
index 9918236df1..5c4d2fa86f 100644
--- a/pages/traits/morphology/staphylococcus_arrangement.html
+++ b/pages/traits/morphology/staphylococcus_arrangement.html
@@ -239,7 +239,7 @@ kg-microbe context
METPO:1000666 [-5.052, -3.981, -3.909, -0.718, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -247,7 +247,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/star_shaped.html b/pages/traits/morphology/star_shaped.html
index 7e19f86798..265268e021 100644
--- a/pages/traits/morphology/star_shaped.html
+++ b/pages/traits/morphology/star_shaped.html
@@ -286,7 +286,7 @@ kg-microbe context
METPO:1000685 [-3.843, -0.979, -3.288, -0.575, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -294,7 +294,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/streptococcus_arrangement.html b/pages/traits/morphology/streptococcus_arrangement.html
index afb1b38276..79f50f914d 100644
--- a/pages/traits/morphology/streptococcus_arrangement.html
+++ b/pages/traits/morphology/streptococcus_arrangement.html
@@ -273,7 +273,7 @@ kg-microbe context
METPO:1000666 [-5.052, -3.981, -3.909, -0.718, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -281,7 +281,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/subpolar_flagellation.html b/pages/traits/morphology/subpolar_flagellation.html
index 1ed5faccea..38878409c6 100644
--- a/pages/traits/morphology/subpolar_flagellation.html
+++ b/pages/traits/morphology/subpolar_flagellation.html
@@ -73,7 +73,7 @@ Parent traits (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/morphology/sulfur_globule.html b/pages/traits/morphology/sulfur_globule.html
index 02c0ddab7e..f07c97a478 100644
--- a/pages/traits/morphology/sulfur_globule.html
+++ b/pages/traits/morphology/sulfur_globule.html
@@ -239,7 +239,7 @@ kg-microbe context
METPO:1000059 [-2.682, -2.070, -3.656, -0.652, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -247,7 +247,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/swarming_motility.html b/pages/traits/morphology/swarming_motility.html
index 192733621f..07200fb8db 100644
--- a/pages/traits/morphology/swarming_motility.html
+++ b/pages/traits/morphology/swarming_motility.html
@@ -222,7 +222,7 @@ kg-microbe context
METPO:1000702 [+24.397, -70.567, +20.807, -80.811, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -230,7 +230,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/tailed_shaped.html b/pages/traits/morphology/tailed_shaped.html
index f455f4ed9d..856b673cd9 100644
--- a/pages/traits/morphology/tailed_shaped.html
+++ b/pages/traits/morphology/tailed_shaped.html
@@ -337,7 +337,7 @@ kg-microbe context
METPO:1000695 [-2.811, -5.750, -3.599, -1.498, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -345,7 +345,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/tetrad_arrangement.html b/pages/traits/morphology/tetrad_arrangement.html
index db7f4be916..91062722d5 100644
--- a/pages/traits/morphology/tetrad_arrangement.html
+++ b/pages/traits/morphology/tetrad_arrangement.html
@@ -222,7 +222,7 @@ kg-microbe context
METPO:1000666 [-5.052, -3.981, -3.909, -0.718, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -230,7 +230,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/triangular_shaped.html b/pages/traits/morphology/triangular_shaped.html
index 2bb10d9402..e067053fe5 100644
--- a/pages/traits/morphology/triangular_shaped.html
+++ b/pages/traits/morphology/triangular_shaped.html
@@ -239,7 +239,7 @@ kg-microbe context
METPO:1000696 [-3.450, -2.250, -3.710, +1.379, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -247,7 +247,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/twitching_motility.html b/pages/traits/morphology/twitching_motility.html
index 2a8b2aa203..66a91de338 100644
--- a/pages/traits/morphology/twitching_motility.html
+++ b/pages/traits/morphology/twitching_motility.html
@@ -337,7 +337,7 @@ kg-microbe context
METPO:1000702 [+24.397, -70.567, +20.807, -80.811, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -345,7 +345,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/type_iv_pilus.html b/pages/traits/morphology/type_iv_pilus.html
index 845c097677..5a5ec346cc 100644
--- a/pages/traits/morphology/type_iv_pilus.html
+++ b/pages/traits/morphology/type_iv_pilus.html
@@ -91,7 +91,7 @@ Cross-references
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/morphology/vibrio_shaped.html b/pages/traits/morphology/vibrio_shaped.html
index f413884999..853db0ce33 100644
--- a/pages/traits/morphology/vibrio_shaped.html
+++ b/pages/traits/morphology/vibrio_shaped.html
@@ -309,7 +309,7 @@ kg-microbe context
METPO:1000686 [-5.914, -107.472, -126.065, -23.277, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -317,7 +317,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/white_pigmented.html b/pages/traits/morphology/white_pigmented.html
index 0cee8f9c0a..d19ad55509 100644
--- a/pages/traits/morphology/white_pigmented.html
+++ b/pages/traits/morphology/white_pigmented.html
@@ -290,7 +290,7 @@ kg-microbe context
METPO:1003029 [-3.308, -1.196, -0.658, -0.965, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -298,7 +298,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/morphology/yellow_pigmented.html b/pages/traits/morphology/yellow_pigmented.html
index f24eaf7134..ef261654c8 100644
--- a/pages/traits/morphology/yellow_pigmented.html
+++ b/pages/traits/morphology/yellow_pigmented.html
@@ -341,7 +341,7 @@ kg-microbe context
METPO:1003030 [-3.392, -1.132, -2.360, -0.296, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -349,7 +349,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/observation/growth_nacl_observation.html b/pages/traits/observation/growth_nacl_observation.html
index 2505f8c5c0..aaeb21d46f 100644
--- a/pages/traits/observation/growth_nacl_observation.html
+++ b/pages/traits/observation/growth_nacl_observation.html
@@ -78,7 +78,7 @@ kg-microbe context
METPO:1001007 [-0.011, +0.049, +0.018, +0.028, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -86,7 +86,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/observation/growth_oxygen_observation.html b/pages/traits/observation/growth_oxygen_observation.html
index 03e5237de7..282f8105ce 100644
--- a/pages/traits/observation/growth_oxygen_observation.html
+++ b/pages/traits/observation/growth_oxygen_observation.html
@@ -78,7 +78,7 @@ kg-microbe context
METPO:1001017 [+0.047, +0.021, -0.060, +0.053, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -86,7 +86,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/observation/growth_ph_observation.html b/pages/traits/observation/growth_ph_observation.html
index d412b7674d..b18bb97dd9 100644
--- a/pages/traits/observation/growth_ph_observation.html
+++ b/pages/traits/observation/growth_ph_observation.html
@@ -78,7 +78,7 @@ kg-microbe context
METPO:1001012 [-0.057, -0.036, +0.067, -0.097, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -86,7 +86,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/observation/growth_temperature_observation.html b/pages/traits/observation/growth_temperature_observation.html
index 36b070f603..1813bf684e 100644
--- a/pages/traits/observation/growth_temperature_observation.html
+++ b/pages/traits/observation/growth_temperature_observation.html
@@ -78,7 +78,7 @@ kg-microbe context
METPO:1001002 [-0.071, +0.010, -0.051, +0.079, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -86,7 +86,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/observation/nacl_delta_observation.html b/pages/traits/observation/nacl_delta_observation.html
index ba0ccb0b40..9b2be7c695 100644
--- a/pages/traits/observation/nacl_delta_observation.html
+++ b/pages/traits/observation/nacl_delta_observation.html
@@ -78,7 +78,7 @@ kg-microbe context
METPO:1001008 [+0.012, +0.090, -0.102, +0.057, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -86,7 +86,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/observation/nacl_observation.html b/pages/traits/observation/nacl_observation.html
index 9ea493ae38..7e926097b2 100644
--- a/pages/traits/observation/nacl_observation.html
+++ b/pages/traits/observation/nacl_observation.html
@@ -78,7 +78,7 @@ kg-microbe context
METPO:1001022 [-0.020, +0.028, +0.103, -0.032, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -86,7 +86,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/observation/nacl_range_observation.html b/pages/traits/observation/nacl_range_observation.html
index 7271714a2f..f51b087790 100644
--- a/pages/traits/observation/nacl_range_observation.html
+++ b/pages/traits/observation/nacl_range_observation.html
@@ -78,7 +78,7 @@ kg-microbe context
METPO:1001009 [+0.038, +0.034, -0.004, -0.016, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -86,7 +86,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/observation/optimum_nacl_observation.html b/pages/traits/observation/optimum_nacl_observation.html
index 1ecedff26a..7bba5144ca 100644
--- a/pages/traits/observation/optimum_nacl_observation.html
+++ b/pages/traits/observation/optimum_nacl_observation.html
@@ -78,7 +78,7 @@ kg-microbe context
METPO:1001010 [-0.000, -0.014, -0.034, +0.033, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -86,7 +86,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/observation/optimum_oxygen_observation.html b/pages/traits/observation/optimum_oxygen_observation.html
index c329a6ea9a..2fe636721d 100644
--- a/pages/traits/observation/optimum_oxygen_observation.html
+++ b/pages/traits/observation/optimum_oxygen_observation.html
@@ -78,7 +78,7 @@ kg-microbe context
METPO:1001016 [-0.008, -0.004, -0.101, +0.036, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -86,7 +86,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/observation/optimum_ph_observation.html b/pages/traits/observation/optimum_ph_observation.html
index 731c0ac434..8767ac40ce 100644
--- a/pages/traits/observation/optimum_ph_observation.html
+++ b/pages/traits/observation/optimum_ph_observation.html
@@ -78,7 +78,7 @@ kg-microbe context
METPO:1001013 [-0.043, -0.086, +0.078, +0.095, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -86,7 +86,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/observation/optimum_temperature_observation.html b/pages/traits/observation/optimum_temperature_observation.html
index 5b47657010..c12ee1e322 100644
--- a/pages/traits/observation/optimum_temperature_observation.html
+++ b/pages/traits/observation/optimum_temperature_observation.html
@@ -80,7 +80,7 @@ kg-microbe context
METPO:1001001 [+0.006, -0.057, +0.034, -0.042, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -88,7 +88,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/observation/oxygen_delta_observation.html b/pages/traits/observation/oxygen_delta_observation.html
index 3b60855f0d..3c60b45eef 100644
--- a/pages/traits/observation/oxygen_delta_observation.html
+++ b/pages/traits/observation/oxygen_delta_observation.html
@@ -78,7 +78,7 @@ kg-microbe context
METPO:1001019 [+0.020, -0.067, -0.058, -0.096, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -86,7 +86,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/observation/oxygen_observation.html b/pages/traits/observation/oxygen_observation.html
index 0a34dbaa19..0863732091 100644
--- a/pages/traits/observation/oxygen_observation.html
+++ b/pages/traits/observation/oxygen_observation.html
@@ -78,7 +78,7 @@ kg-microbe context
METPO:1001020 [-0.037, +0.082, -0.027, -0.036, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -86,7 +86,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/observation/oxygen_range_observation.html b/pages/traits/observation/oxygen_range_observation.html
index f25fd9ce51..a09a3a5616 100644
--- a/pages/traits/observation/oxygen_range_observation.html
+++ b/pages/traits/observation/oxygen_range_observation.html
@@ -78,7 +78,7 @@ kg-microbe context
METPO:1001018 [-0.108, -0.063, -0.077, -0.054, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -86,7 +86,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/observation/ph_delta_observation.html b/pages/traits/observation/ph_delta_observation.html
index 69071ae32b..d6228d267b 100644
--- a/pages/traits/observation/ph_delta_observation.html
+++ b/pages/traits/observation/ph_delta_observation.html
@@ -78,7 +78,7 @@ kg-microbe context
METPO:1001014 [-0.039, +0.044, +0.003, -0.059, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -86,7 +86,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/observation/ph_observation.html b/pages/traits/observation/ph_observation.html
index 09ef88c369..e82796eee4 100644
--- a/pages/traits/observation/ph_observation.html
+++ b/pages/traits/observation/ph_observation.html
@@ -78,7 +78,7 @@ kg-microbe context
METPO:1001023 [-0.057, +0.033, +0.080, -0.066, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -86,7 +86,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/observation/ph_range_observation.html b/pages/traits/observation/ph_range_observation.html
index c62d55f209..678a8f4286 100644
--- a/pages/traits/observation/ph_range_observation.html
+++ b/pages/traits/observation/ph_range_observation.html
@@ -78,7 +78,7 @@ kg-microbe context
METPO:1001015 [+0.081, -0.048, +0.008, +0.081, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -86,7 +86,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/observation/temperature_delta_observation.html b/pages/traits/observation/temperature_delta_observation.html
index 5f87198471..ab4709fc8a 100644
--- a/pages/traits/observation/temperature_delta_observation.html
+++ b/pages/traits/observation/temperature_delta_observation.html
@@ -78,7 +78,7 @@ kg-microbe context
METPO:1001004 [+0.079, -0.028, +0.092, -0.040, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -86,7 +86,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/observation/temperature_observation.html b/pages/traits/observation/temperature_observation.html
index 31d5c3c021..c79a88d899 100644
--- a/pages/traits/observation/temperature_observation.html
+++ b/pages/traits/observation/temperature_observation.html
@@ -78,7 +78,7 @@ kg-microbe context
METPO:1001021 [+0.090, -0.056, +0.002, +0.091, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -86,7 +86,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/observation/temperature_range_observation.html b/pages/traits/observation/temperature_range_observation.html
index 8391015fed..b42f309c90 100644
--- a/pages/traits/observation/temperature_range_observation.html
+++ b/pages/traits/observation/temperature_range_observation.html
@@ -78,7 +78,7 @@ kg-microbe context
METPO:1001003 [-0.085, -0.018, +0.035, -0.081, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -86,7 +86,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/other/catalase_negative.html b/pages/traits/other/catalase_negative.html
index 18587d1d7b..d20b533585 100644
--- a/pages/traits/other/catalase_negative.html
+++ b/pages/traits/other/catalase_negative.html
@@ -84,7 +84,7 @@ Synonyms (2)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/other/catalase_test.html b/pages/traits/other/catalase_test.html
index aaebd519b5..f820ca26e4 100644
--- a/pages/traits/other/catalase_test.html
+++ b/pages/traits/other/catalase_test.html
@@ -93,7 +93,7 @@ Synonyms (2)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/other/circular_colony.html b/pages/traits/other/circular_colony.html
index 45d3ce2619..27908931b7 100644
--- a/pages/traits/other/circular_colony.html
+++ b/pages/traits/other/circular_colony.html
@@ -82,7 +82,7 @@ Synonyms (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/other/coagulase_negative.html b/pages/traits/other/coagulase_negative.html
index 3b30113135..3b21b3e5a9 100644
--- a/pages/traits/other/coagulase_negative.html
+++ b/pages/traits/other/coagulase_negative.html
@@ -84,7 +84,7 @@ Synonyms (2)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/other/coagulase_positive.html b/pages/traits/other/coagulase_positive.html
index 06462cfc5f..9500d4c646 100644
--- a/pages/traits/other/coagulase_positive.html
+++ b/pages/traits/other/coagulase_positive.html
@@ -84,7 +84,7 @@ Synonyms (2)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/other/colony_morphology.html b/pages/traits/other/colony_morphology.html
index b307b3b207..cc1659f580 100644
--- a/pages/traits/other/colony_morphology.html
+++ b/pages/traits/other/colony_morphology.html
@@ -82,7 +82,7 @@ Children (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/other/colony_shape.html b/pages/traits/other/colony_shape.html
index 6a88db7030..fd10262aff 100644
--- a/pages/traits/other/colony_shape.html
+++ b/pages/traits/other/colony_shape.html
@@ -92,7 +92,7 @@ Children (6)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/other/epibiont_phenotype.html b/pages/traits/other/epibiont_phenotype.html
index 900c465838..06e64fdd84 100644
--- a/pages/traits/other/epibiont_phenotype.html
+++ b/pages/traits/other/epibiont_phenotype.html
@@ -84,7 +84,7 @@ Synonyms (2)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/other/filamentous_colony.html b/pages/traits/other/filamentous_colony.html
index f5b2b50dde..3a8e56c1ac 100644
--- a/pages/traits/other/filamentous_colony.html
+++ b/pages/traits/other/filamentous_colony.html
@@ -73,7 +73,7 @@ Parent traits (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/other/fried_egg_shaped_colony.html b/pages/traits/other/fried_egg_shaped_colony.html
index 838fd0f845..01bf13eaa7 100644
--- a/pages/traits/other/fried_egg_shaped_colony.html
+++ b/pages/traits/other/fried_egg_shaped_colony.html
@@ -82,7 +82,7 @@ Synonyms (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/other/generalist.html b/pages/traits/other/generalist.html
index 48ea74fe93..eafcac457c 100644
--- a/pages/traits/other/generalist.html
+++ b/pages/traits/other/generalist.html
@@ -73,7 +73,7 @@ Parent traits (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/other/hemolysis.html b/pages/traits/other/hemolysis.html
index fe16c85f9b..90de87cfe2 100644
--- a/pages/traits/other/hemolysis.html
+++ b/pages/traits/other/hemolysis.html
@@ -91,7 +91,7 @@ Synonyms (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/other/hemolytic.html b/pages/traits/other/hemolytic.html
index 1d295e1350..b0f1b8fb75 100644
--- a/pages/traits/other/hemolytic.html
+++ b/pages/traits/other/hemolytic.html
@@ -73,7 +73,7 @@ Parent traits (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/other/indole_test.html b/pages/traits/other/indole_test.html
index b4d8d0b4ae..b1e2ead5b7 100644
--- a/pages/traits/other/indole_test.html
+++ b/pages/traits/other/indole_test.html
@@ -84,7 +84,7 @@ Children (2)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/other/indole_test_negative.html b/pages/traits/other/indole_test_negative.html
index 7c8366c61a..909d861124 100644
--- a/pages/traits/other/indole_test_negative.html
+++ b/pages/traits/other/indole_test_negative.html
@@ -73,7 +73,7 @@ Parent traits (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/other/indole_test_positive.html b/pages/traits/other/indole_test_positive.html
index 75968d5e5c..224e5be3c3 100644
--- a/pages/traits/other/indole_test_positive.html
+++ b/pages/traits/other/indole_test_positive.html
@@ -82,7 +82,7 @@ Synonyms (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/other/irregular_colony.html b/pages/traits/other/irregular_colony.html
index 5c02f119c8..82debc1f03 100644
--- a/pages/traits/other/irregular_colony.html
+++ b/pages/traits/other/irregular_colony.html
@@ -73,7 +73,7 @@ Parent traits (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/other/methyl_red_test.html b/pages/traits/other/methyl_red_test.html
index d1c47cfc1f..c70bc5009a 100644
--- a/pages/traits/other/methyl_red_test.html
+++ b/pages/traits/other/methyl_red_test.html
@@ -84,7 +84,7 @@ Children (2)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/other/methyl_red_test_negative.html b/pages/traits/other/methyl_red_test_negative.html
index 0107444b66..5a7d1871c5 100644
--- a/pages/traits/other/methyl_red_test_negative.html
+++ b/pages/traits/other/methyl_red_test_negative.html
@@ -73,7 +73,7 @@ Parent traits (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/other/methyl_red_test_positive.html b/pages/traits/other/methyl_red_test_positive.html
index 3f20b4be5e..17697c7020 100644
--- a/pages/traits/other/methyl_red_test_positive.html
+++ b/pages/traits/other/methyl_red_test_positive.html
@@ -82,7 +82,7 @@ Synonyms (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/other/non_hemolytic.html b/pages/traits/other/non_hemolytic.html
index 1bcddd5040..fcdfda0c26 100644
--- a/pages/traits/other/non_hemolytic.html
+++ b/pages/traits/other/non_hemolytic.html
@@ -73,7 +73,7 @@ Parent traits (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/other/osmotic_tolerance.html b/pages/traits/other/osmotic_tolerance.html
index d6024a4ca3..cdfbf9ee19 100644
--- a/pages/traits/other/osmotic_tolerance.html
+++ b/pages/traits/other/osmotic_tolerance.html
@@ -82,7 +82,7 @@ Synonyms (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/other/oxidase_negative.html b/pages/traits/other/oxidase_negative.html
index 6d984b6208..95ae004e60 100644
--- a/pages/traits/other/oxidase_negative.html
+++ b/pages/traits/other/oxidase_negative.html
@@ -84,7 +84,7 @@ Synonyms (2)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/other/oxidase_test.html b/pages/traits/other/oxidase_test.html
index f99e39b109..aa1d401abe 100644
--- a/pages/traits/other/oxidase_test.html
+++ b/pages/traits/other/oxidase_test.html
@@ -93,7 +93,7 @@ Synonyms (2)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/other/punctiform_colony.html b/pages/traits/other/punctiform_colony.html
index 0a7a056185..ca48906473 100644
--- a/pages/traits/other/punctiform_colony.html
+++ b/pages/traits/other/punctiform_colony.html
@@ -73,7 +73,7 @@ Parent traits (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/other/rhizoid_colony.html b/pages/traits/other/rhizoid_colony.html
index e8db3b590b..b68d0a99e3 100644
--- a/pages/traits/other/rhizoid_colony.html
+++ b/pages/traits/other/rhizoid_colony.html
@@ -73,7 +73,7 @@ Parent traits (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/other/specialist.html b/pages/traits/other/specialist.html
index 4ef4075e7d..97326aeb66 100644
--- a/pages/traits/other/specialist.html
+++ b/pages/traits/other/specialist.html
@@ -73,7 +73,7 @@ Parent traits (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/other/urease_negative.html b/pages/traits/other/urease_negative.html
index 71f07bf7a7..b60b5d75d8 100644
--- a/pages/traits/other/urease_negative.html
+++ b/pages/traits/other/urease_negative.html
@@ -84,7 +84,7 @@ Synonyms (2)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/other/urease_test.html b/pages/traits/other/urease_test.html
index 890e09d1a2..a3858d9a68 100644
--- a/pages/traits/other/urease_test.html
+++ b/pages/traits/other/urease_test.html
@@ -93,7 +93,7 @@ Synonyms (2)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/other/voges_proskauer_test.html b/pages/traits/other/voges_proskauer_test.html
index 1ddef988dd..4658325b7a 100644
--- a/pages/traits/other/voges_proskauer_test.html
+++ b/pages/traits/other/voges_proskauer_test.html
@@ -84,7 +84,7 @@ Children (2)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/other/voges_proskauer_test_negative.html b/pages/traits/other/voges_proskauer_test_negative.html
index e9a61516a0..9d2b680253 100644
--- a/pages/traits/other/voges_proskauer_test_negative.html
+++ b/pages/traits/other/voges_proskauer_test_negative.html
@@ -73,7 +73,7 @@ Parent traits (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/other/voges_proskauer_test_positive.html b/pages/traits/other/voges_proskauer_test_positive.html
index ac1c91ee1e..2fea6bafcf 100644
--- a/pages/traits/other/voges_proskauer_test_positive.html
+++ b/pages/traits/other/voges_proskauer_test_positive.html
@@ -82,7 +82,7 @@ Synonyms (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/physiology/acid_phosphatase_activity.html b/pages/traits/physiology/acid_phosphatase_activity.html
index ed6cbd33a3..71286bf90a 100644
--- a/pages/traits/physiology/acid_phosphatase_activity.html
+++ b/pages/traits/physiology/acid_phosphatase_activity.html
@@ -73,7 +73,7 @@ Parent traits (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/physiology/aerobic_anoxygenic_phototrophy.html b/pages/traits/physiology/aerobic_anoxygenic_phototrophy.html
index 8c99b203f7..94d30363c4 100644
--- a/pages/traits/physiology/aerobic_anoxygenic_phototrophy.html
+++ b/pages/traits/physiology/aerobic_anoxygenic_phototrophy.html
@@ -225,7 +225,7 @@ Synonyms (4)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/physiology/alanine_arylamidase_activity.html b/pages/traits/physiology/alanine_arylamidase_activity.html
index a2691c9f2e..c7d53fa2e4 100644
--- a/pages/traits/physiology/alanine_arylamidase_activity.html
+++ b/pages/traits/physiology/alanine_arylamidase_activity.html
@@ -86,7 +86,7 @@ Synonyms (3)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/physiology/alkaline_phosphatase_activity.html b/pages/traits/physiology/alkaline_phosphatase_activity.html
index fcaac6a049..8e3a2a1eac 100644
--- a/pages/traits/physiology/alkaline_phosphatase_activity.html
+++ b/pages/traits/physiology/alkaline_phosphatase_activity.html
@@ -73,7 +73,7 @@ Parent traits (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/physiology/alpha_chymotrypsin_activity.html b/pages/traits/physiology/alpha_chymotrypsin_activity.html
index 975a142f13..2ef4fddbb4 100644
--- a/pages/traits/physiology/alpha_chymotrypsin_activity.html
+++ b/pages/traits/physiology/alpha_chymotrypsin_activity.html
@@ -82,7 +82,7 @@ Synonyms (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/physiology/alpha_fucosidase_activity.html b/pages/traits/physiology/alpha_fucosidase_activity.html
index 9a3afd3e40..ec45dad0a8 100644
--- a/pages/traits/physiology/alpha_fucosidase_activity.html
+++ b/pages/traits/physiology/alpha_fucosidase_activity.html
@@ -73,7 +73,7 @@ Parent traits (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/physiology/alpha_galactosidase_activity.html b/pages/traits/physiology/alpha_galactosidase_activity.html
index 237621a197..a28abad623 100644
--- a/pages/traits/physiology/alpha_galactosidase_activity.html
+++ b/pages/traits/physiology/alpha_galactosidase_activity.html
@@ -73,7 +73,7 @@ Parent traits (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/physiology/alpha_glucosidase_activity.html b/pages/traits/physiology/alpha_glucosidase_activity.html
index 06f60a8825..95ed7e4b2f 100644
--- a/pages/traits/physiology/alpha_glucosidase_activity.html
+++ b/pages/traits/physiology/alpha_glucosidase_activity.html
@@ -73,7 +73,7 @@ Parent traits (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/physiology/alpha_mannosidase_activity.html b/pages/traits/physiology/alpha_mannosidase_activity.html
index d284a541a0..e36df86b45 100644
--- a/pages/traits/physiology/alpha_mannosidase_activity.html
+++ b/pages/traits/physiology/alpha_mannosidase_activity.html
@@ -73,7 +73,7 @@ Parent traits (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/physiology/amylase_activity.html b/pages/traits/physiology/amylase_activity.html
index 87517fcb25..3a1fec3b2b 100644
--- a/pages/traits/physiology/amylase_activity.html
+++ b/pages/traits/physiology/amylase_activity.html
@@ -82,7 +82,7 @@ Synonyms (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/physiology/antibiotic_resistance.html b/pages/traits/physiology/antibiotic_resistance.html
index 24ea784364..b42f1d63b0 100644
--- a/pages/traits/physiology/antibiotic_resistance.html
+++ b/pages/traits/physiology/antibiotic_resistance.html
@@ -354,7 +354,7 @@ kg-microbe context
METPO:1000059 [-2.682, -2.070, -3.656, -0.652, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -362,7 +362,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/physiology/arginine_arylamidase_activity.html b/pages/traits/physiology/arginine_arylamidase_activity.html
index f6db14f6d0..710fcffa9e 100644
--- a/pages/traits/physiology/arginine_arylamidase_activity.html
+++ b/pages/traits/physiology/arginine_arylamidase_activity.html
@@ -90,7 +90,7 @@ Synonyms (5)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/physiology/arginine_dihydrolase_activity.html b/pages/traits/physiology/arginine_dihydrolase_activity.html
index 950d191a8b..4367282721 100644
--- a/pages/traits/physiology/arginine_dihydrolase_activity.html
+++ b/pages/traits/physiology/arginine_dihydrolase_activity.html
@@ -88,7 +88,7 @@ Synonyms (4)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/physiology/autotrophic.html b/pages/traits/physiology/autotrophic.html
index 6ad21290b2..cb6bf5186f 100644
--- a/pages/traits/physiology/autotrophic.html
+++ b/pages/traits/physiology/autotrophic.html
@@ -477,7 +477,7 @@ kg-microbe context
METPO:1000632 [-2.568, +0.105, -3.476, -0.957, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -485,7 +485,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/physiology/bacteriocin_production.html b/pages/traits/physiology/bacteriocin_production.html
index 821e92ef74..f2936149cb 100644
--- a/pages/traits/physiology/bacteriocin_production.html
+++ b/pages/traits/physiology/bacteriocin_production.html
@@ -80,7 +80,7 @@ Cross-references
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/physiology/beta_galactosidase_activity.html b/pages/traits/physiology/beta_galactosidase_activity.html
index 6efe3a6335..505b14afa4 100644
--- a/pages/traits/physiology/beta_galactosidase_activity.html
+++ b/pages/traits/physiology/beta_galactosidase_activity.html
@@ -73,7 +73,7 @@ Parent traits (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/physiology/beta_glucosidase_activity.html b/pages/traits/physiology/beta_glucosidase_activity.html
index cedbdca25c..e11f84ad87 100644
--- a/pages/traits/physiology/beta_glucosidase_activity.html
+++ b/pages/traits/physiology/beta_glucosidase_activity.html
@@ -73,7 +73,7 @@ Parent traits (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/physiology/beta_glucuronidase_activity.html b/pages/traits/physiology/beta_glucuronidase_activity.html
index 79ea088d3b..0304f6a85f 100644
--- a/pages/traits/physiology/beta_glucuronidase_activity.html
+++ b/pages/traits/physiology/beta_glucuronidase_activity.html
@@ -73,7 +73,7 @@ Parent traits (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/physiology/beta_n_acetylhexosaminidase_activity.html b/pages/traits/physiology/beta_n_acetylhexosaminidase_activity.html
index 67b33a335a..bf55c198d4 100644
--- a/pages/traits/physiology/beta_n_acetylhexosaminidase_activity.html
+++ b/pages/traits/physiology/beta_n_acetylhexosaminidase_activity.html
@@ -88,7 +88,7 @@ Synonyms (4)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/physiology/bioluminescence.html b/pages/traits/physiology/bioluminescence.html
index eb771f9b5c..6614ce037e 100644
--- a/pages/traits/physiology/bioluminescence.html
+++ b/pages/traits/physiology/bioluminescence.html
@@ -388,7 +388,7 @@ kg-microbe context
METPO:1000059 [-2.682, -2.070, -3.656, -0.652, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -396,7 +396,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/physiology/carboxydotrophic.html b/pages/traits/physiology/carboxydotrophic.html
index fe32f97ab9..176b949c21 100644
--- a/pages/traits/physiology/carboxydotrophic.html
+++ b/pages/traits/physiology/carboxydotrophic.html
@@ -422,7 +422,7 @@ kg-microbe context
METPO:1000633 [-2.124, -2.915, -5.468, -0.095, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -430,7 +430,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/physiology/carboxylesterase_activity.html b/pages/traits/physiology/carboxylesterase_activity.html
index ed43e42a5b..4950ae5976 100644
--- a/pages/traits/physiology/carboxylesterase_activity.html
+++ b/pages/traits/physiology/carboxylesterase_activity.html
@@ -82,7 +82,7 @@ Synonyms (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/physiology/caseinase_activity.html b/pages/traits/physiology/caseinase_activity.html
index 124fd3321d..1d7079dd32 100644
--- a/pages/traits/physiology/caseinase_activity.html
+++ b/pages/traits/physiology/caseinase_activity.html
@@ -82,7 +82,7 @@ Synonyms (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/physiology/catalase_activity.html b/pages/traits/physiology/catalase_activity.html
index acfcb9f500..73e5b4bf1d 100644
--- a/pages/traits/physiology/catalase_activity.html
+++ b/pages/traits/physiology/catalase_activity.html
@@ -354,7 +354,7 @@ kg-microbe context
METPO:1000059 [-2.682, -2.070, -3.656, -0.652, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -362,7 +362,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/physiology/chemoautolithotrophic.html b/pages/traits/physiology/chemoautolithotrophic.html
index c94215cb4e..add07f5f1a 100644
--- a/pages/traits/physiology/chemoautolithotrophic.html
+++ b/pages/traits/physiology/chemoautolithotrophic.html
@@ -388,7 +388,7 @@ kg-microbe context
METPO:1000634 [-0.916, -0.754, -3.630, +1.094, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -396,7 +396,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/physiology/chemoautotrophic.html b/pages/traits/physiology/chemoautotrophic.html
index 41efacbe5a..3791ffbcdb 100644
--- a/pages/traits/physiology/chemoautotrophic.html
+++ b/pages/traits/physiology/chemoautotrophic.html
@@ -456,7 +456,7 @@ kg-microbe context
METPO:1000635 [-0.624, -3.507, -4.293, +0.160, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -464,7 +464,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/physiology/chemoheterotrophic.html b/pages/traits/physiology/chemoheterotrophic.html
index 68fa09fffd..12775cb21d 100644
--- a/pages/traits/physiology/chemoheterotrophic.html
+++ b/pages/traits/physiology/chemoheterotrophic.html
@@ -424,7 +424,7 @@ kg-microbe context
METPO:1000636 [-2.849, -3.249, -2.560, +0.024, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -432,7 +432,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/physiology/chemolithoautotrophic.html b/pages/traits/physiology/chemolithoautotrophic.html
index 0938f5be0f..bc609ce91e 100644
--- a/pages/traits/physiology/chemolithoautotrophic.html
+++ b/pages/traits/physiology/chemolithoautotrophic.html
@@ -405,7 +405,7 @@ kg-microbe context
METPO:1000637 [-1.631, -1.052, -4.107, +0.857, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -413,7 +413,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/physiology/chemolithoheterotrophic.html b/pages/traits/physiology/chemolithoheterotrophic.html
index ca9a2fa5ed..a217c7f4af 100644
--- a/pages/traits/physiology/chemolithoheterotrophic.html
+++ b/pages/traits/physiology/chemolithoheterotrophic.html
@@ -456,7 +456,7 @@ kg-microbe context
METPO:1000638 [-3.114, -0.723, -4.275, +1.898, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -464,7 +464,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/physiology/chemolithotrophic.html b/pages/traits/physiology/chemolithotrophic.html
index 160ad8369d..d00c89c17b 100644
--- a/pages/traits/physiology/chemolithotrophic.html
+++ b/pages/traits/physiology/chemolithotrophic.html
@@ -405,7 +405,7 @@ kg-microbe context
METPO:1000639 [-0.145, -1.567, -3.045, -0.245, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -413,7 +413,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/physiology/chemoorganoheterotrophic.html b/pages/traits/physiology/chemoorganoheterotrophic.html
index 4e2be08d0e..8153be5599 100644
--- a/pages/traits/physiology/chemoorganoheterotrophic.html
+++ b/pages/traits/physiology/chemoorganoheterotrophic.html
@@ -456,7 +456,7 @@ kg-microbe context
METPO:1000640 [-0.994, -2.623, -3.294, +0.737, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -464,7 +464,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/physiology/chemoorganotrophic.html b/pages/traits/physiology/chemoorganotrophic.html
index 0c2250dbf1..f5ab438ee8 100644
--- a/pages/traits/physiology/chemoorganotrophic.html
+++ b/pages/traits/physiology/chemoorganotrophic.html
@@ -473,7 +473,7 @@ kg-microbe context
METPO:1000663 [-0.780, -1.684, -2.585, +1.757, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -481,7 +481,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/physiology/chemotaxis.html b/pages/traits/physiology/chemotaxis.html
index 7e771891b5..9dfd8be062 100644
--- a/pages/traits/physiology/chemotaxis.html
+++ b/pages/traits/physiology/chemotaxis.html
@@ -363,7 +363,7 @@ kg-microbe context
METPO:1000059 [-2.682, -2.070, -3.656, -0.652, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -371,7 +371,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/physiology/chemotrophic.html b/pages/traits/physiology/chemotrophic.html
index 072a387d1e..0e32ecc8cd 100644
--- a/pages/traits/physiology/chemotrophic.html
+++ b/pages/traits/physiology/chemotrophic.html
@@ -407,7 +407,7 @@ kg-microbe context
METPO:1000641 [-1.746, -0.197, -4.063, +1.592, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -415,7 +415,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/physiology/coagulase_activity.html b/pages/traits/physiology/coagulase_activity.html
index 223b05f0b5..a01a8ac435 100644
--- a/pages/traits/physiology/coagulase_activity.html
+++ b/pages/traits/physiology/coagulase_activity.html
@@ -95,7 +95,7 @@ Synonyms (2)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/physiology/copiotrophic.html b/pages/traits/physiology/copiotrophic.html
index eecc9b65ce..657187735c 100644
--- a/pages/traits/physiology/copiotrophic.html
+++ b/pages/traits/physiology/copiotrophic.html
@@ -330,7 +330,7 @@ kg-microbe context
METPO:1000642 [-0.599, -2.377, -5.129, +0.987, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -338,7 +338,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/physiology/cystine_arylamidase_activity.html b/pages/traits/physiology/cystine_arylamidase_activity.html
index 6266b37ba9..24d409d9b3 100644
--- a/pages/traits/physiology/cystine_arylamidase_activity.html
+++ b/pages/traits/physiology/cystine_arylamidase_activity.html
@@ -73,7 +73,7 @@ Parent traits (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/physiology/dnase_activity.html b/pages/traits/physiology/dnase_activity.html
index 513327fbce..6a05186a9e 100644
--- a/pages/traits/physiology/dnase_activity.html
+++ b/pages/traits/physiology/dnase_activity.html
@@ -82,7 +82,7 @@ Synonyms (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/physiology/dormancy.html b/pages/traits/physiology/dormancy.html
index 2e5f9ad793..449dfa34d3 100644
--- a/pages/traits/physiology/dormancy.html
+++ b/pages/traits/physiology/dormancy.html
@@ -331,7 +331,7 @@ kg-microbe context
METPO:1000059 [-2.682, -2.070, -3.656, -0.652, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -339,7 +339,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/physiology/gamma_glutamyltransferase_activity.html b/pages/traits/physiology/gamma_glutamyltransferase_activity.html
index fb1b1faa42..0f039a1dd9 100644
--- a/pages/traits/physiology/gamma_glutamyltransferase_activity.html
+++ b/pages/traits/physiology/gamma_glutamyltransferase_activity.html
@@ -86,7 +86,7 @@ Synonyms (3)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/physiology/gelatinase_activity.html b/pages/traits/physiology/gelatinase_activity.html
index 6bfc9998f5..a15a3e58f9 100644
--- a/pages/traits/physiology/gelatinase_activity.html
+++ b/pages/traits/physiology/gelatinase_activity.html
@@ -84,7 +84,7 @@ Synonyms (2)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/physiology/glutamyl_glutamic_acid_arylamidase_activity.html b/pages/traits/physiology/glutamyl_glutamic_acid_arylamidase_activity.html
index f775d90f50..19cba68afb 100644
--- a/pages/traits/physiology/glutamyl_glutamic_acid_arylamidase_activity.html
+++ b/pages/traits/physiology/glutamyl_glutamic_acid_arylamidase_activity.html
@@ -82,7 +82,7 @@ Synonyms (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/physiology/glycine_arylamidase_activity.html b/pages/traits/physiology/glycine_arylamidase_activity.html
index 6f1b841582..0b81811459 100644
--- a/pages/traits/physiology/glycine_arylamidase_activity.html
+++ b/pages/traits/physiology/glycine_arylamidase_activity.html
@@ -82,7 +82,7 @@ Synonyms (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/physiology/heterotrophic.html b/pages/traits/physiology/heterotrophic.html
index e36eae4def..0f26142678 100644
--- a/pages/traits/physiology/heterotrophic.html
+++ b/pages/traits/physiology/heterotrophic.html
@@ -392,7 +392,7 @@ kg-microbe context
METPO:1000644 [-2.157, -7.477, -8.079, -1.768, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -400,7 +400,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/physiology/histidine_arylamidase_activity.html b/pages/traits/physiology/histidine_arylamidase_activity.html
index c9dd291bc3..fc91ac94d3 100644
--- a/pages/traits/physiology/histidine_arylamidase_activity.html
+++ b/pages/traits/physiology/histidine_arylamidase_activity.html
@@ -82,7 +82,7 @@ Synonyms (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/physiology/hydrogenotrophic.html b/pages/traits/physiology/hydrogenotrophic.html
index 3e29e3a853..61943d103b 100644
--- a/pages/traits/physiology/hydrogenotrophic.html
+++ b/pages/traits/physiology/hydrogenotrophic.html
@@ -379,7 +379,7 @@ kg-microbe context
METPO:1000646 [-2.114, -2.957, -5.142, +0.724, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -387,7 +387,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/physiology/lecithinase_activity.html b/pages/traits/physiology/lecithinase_activity.html
index 3c0714862a..ff355fefc2 100644
--- a/pages/traits/physiology/lecithinase_activity.html
+++ b/pages/traits/physiology/lecithinase_activity.html
@@ -84,7 +84,7 @@ Synonyms (2)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/physiology/leucine_arylamidase_activity.html b/pages/traits/physiology/leucine_arylamidase_activity.html
index 55f6bfdee9..1776bd2ef4 100644
--- a/pages/traits/physiology/leucine_arylamidase_activity.html
+++ b/pages/traits/physiology/leucine_arylamidase_activity.html
@@ -73,7 +73,7 @@ Parent traits (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/physiology/leucyl_glycine_arylamidase_activity.html b/pages/traits/physiology/leucyl_glycine_arylamidase_activity.html
index 91ea5b481c..b7f0785576 100644
--- a/pages/traits/physiology/leucyl_glycine_arylamidase_activity.html
+++ b/pages/traits/physiology/leucyl_glycine_arylamidase_activity.html
@@ -84,7 +84,7 @@ Synonyms (2)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/physiology/lipase_activity.html b/pages/traits/physiology/lipase_activity.html
index be2a2134b9..7b72661dab 100644
--- a/pages/traits/physiology/lipase_activity.html
+++ b/pages/traits/physiology/lipase_activity.html
@@ -84,7 +84,7 @@ Synonyms (2)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/physiology/lithoautotrophic.html b/pages/traits/physiology/lithoautotrophic.html
index d04cafc00b..951942d0c5 100644
--- a/pages/traits/physiology/lithoautotrophic.html
+++ b/pages/traits/physiology/lithoautotrophic.html
@@ -422,7 +422,7 @@ kg-microbe context
METPO:1000647 [-1.104, -2.675, -4.383, +0.615, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -430,7 +430,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/physiology/lithoheterotrophic.html b/pages/traits/physiology/lithoheterotrophic.html
index 36957ad677..5b08530bf2 100644
--- a/pages/traits/physiology/lithoheterotrophic.html
+++ b/pages/traits/physiology/lithoheterotrophic.html
@@ -473,7 +473,7 @@ kg-microbe context
METPO:1000648 [-0.997, -3.520, -5.312, -0.246, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -481,7 +481,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/physiology/lithotrophic.html b/pages/traits/physiology/lithotrophic.html
index 975f9ea2a3..173ef0ed45 100644
--- a/pages/traits/physiology/lithotrophic.html
+++ b/pages/traits/physiology/lithotrophic.html
@@ -475,7 +475,7 @@ kg-microbe context
METPO:1000649 [-3.967, -1.575, -4.683, +0.255, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -483,7 +483,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/physiology/lysine_decarboxylase_activity.html b/pages/traits/physiology/lysine_decarboxylase_activity.html
index 4dcaa01cd2..9569adf621 100644
--- a/pages/traits/physiology/lysine_decarboxylase_activity.html
+++ b/pages/traits/physiology/lysine_decarboxylase_activity.html
@@ -73,7 +73,7 @@ Parent traits (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/physiology/magnetotaxis.html b/pages/traits/physiology/magnetotaxis.html
index 25eb7eb31b..a69aa69fad 100644
--- a/pages/traits/physiology/magnetotaxis.html
+++ b/pages/traits/physiology/magnetotaxis.html
@@ -82,7 +82,7 @@ Synonyms (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/physiology/methanotrophic.html b/pages/traits/physiology/methanotrophic.html
index e18b740d60..c8f718a49c 100644
--- a/pages/traits/physiology/methanotrophic.html
+++ b/pages/traits/physiology/methanotrophic.html
@@ -422,7 +422,7 @@ kg-microbe context
METPO:1000650 [-1.873, -2.718, -3.631, -1.154, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -430,7 +430,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/physiology/methylotrophic.html b/pages/traits/physiology/methylotrophic.html
index 1d62e1f336..babe9d6673 100644
--- a/pages/traits/physiology/methylotrophic.html
+++ b/pages/traits/physiology/methylotrophic.html
@@ -477,7 +477,7 @@ kg-microbe context
METPO:1000651 [-1.480, -2.354, -1.736, -0.358, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -485,7 +485,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/physiology/mixotrophic.html b/pages/traits/physiology/mixotrophic.html
index 5761af4520..bcf8ddcda4 100644
--- a/pages/traits/physiology/mixotrophic.html
+++ b/pages/traits/physiology/mixotrophic.html
@@ -388,7 +388,7 @@ kg-microbe context
METPO:1000652 [-1.472, -3.019, -4.301, +1.004, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -396,7 +396,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/physiology/nad_dependent_alcohol_dehydrogenase_activity.html b/pages/traits/physiology/nad_dependent_alcohol_dehydrogenase_activity.html
index a234374410..c69614f028 100644
--- a/pages/traits/physiology/nad_dependent_alcohol_dehydrogenase_activity.html
+++ b/pages/traits/physiology/nad_dependent_alcohol_dehydrogenase_activity.html
@@ -86,7 +86,7 @@ Synonyms (3)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/physiology/naphthol_as_bi_phosphohydrolase_activity.html b/pages/traits/physiology/naphthol_as_bi_phosphohydrolase_activity.html
index 3d55194d52..5634599f83 100644
--- a/pages/traits/physiology/naphthol_as_bi_phosphohydrolase_activity.html
+++ b/pages/traits/physiology/naphthol_as_bi_phosphohydrolase_activity.html
@@ -82,7 +82,7 @@ Synonyms (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/physiology/natural_competence.html b/pages/traits/physiology/natural_competence.html
index 365e9d063c..125469cbc7 100644
--- a/pages/traits/physiology/natural_competence.html
+++ b/pages/traits/physiology/natural_competence.html
@@ -354,7 +354,7 @@ kg-microbe context
METPO:1000059 [-2.682, -2.070, -3.656, -0.652, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -362,7 +362,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/physiology/nutrient_adaptation.html b/pages/traits/physiology/nutrient_adaptation.html
index 3a45c18305..2ed5e5ed76 100644
--- a/pages/traits/physiology/nutrient_adaptation.html
+++ b/pages/traits/physiology/nutrient_adaptation.html
@@ -258,7 +258,7 @@ kg-microbe context
METPO:1000731 [-0.684, -2.860, -4.946, +1.094, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -266,7 +266,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/physiology/oligotrophic.html b/pages/traits/physiology/oligotrophic.html
index 6fa750a8dd..3219c7ac5d 100644
--- a/pages/traits/physiology/oligotrophic.html
+++ b/pages/traits/physiology/oligotrophic.html
@@ -309,7 +309,7 @@ kg-microbe context
METPO:1000654 [-0.416, -2.511, -4.279, +1.100, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -317,7 +317,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/physiology/organoheterotrophic.html b/pages/traits/physiology/organoheterotrophic.html
index 899514f356..d2356685ab 100644
--- a/pages/traits/physiology/organoheterotrophic.html
+++ b/pages/traits/physiology/organoheterotrophic.html
@@ -388,7 +388,7 @@ kg-microbe context
METPO:1000664 [-0.481, -1.211, -3.077, -0.947, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -396,7 +396,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/physiology/organotrophic.html b/pages/traits/physiology/organotrophic.html
index fbd9fe3740..4b2973f988 100644
--- a/pages/traits/physiology/organotrophic.html
+++ b/pages/traits/physiology/organotrophic.html
@@ -373,7 +373,7 @@ kg-microbe context
METPO:1000655 [+0.165, -1.239, -2.986, +1.908, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -381,7 +381,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/physiology/ornithine_decarboxylase_activity.html b/pages/traits/physiology/ornithine_decarboxylase_activity.html
index 2a3ecdf10b..8b973c006a 100644
--- a/pages/traits/physiology/ornithine_decarboxylase_activity.html
+++ b/pages/traits/physiology/ornithine_decarboxylase_activity.html
@@ -73,7 +73,7 @@ Parent traits (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/physiology/oxidase_activity.html b/pages/traits/physiology/oxidase_activity.html
index 0f11b4d31e..1b61a5ef84 100644
--- a/pages/traits/physiology/oxidase_activity.html
+++ b/pages/traits/physiology/oxidase_activity.html
@@ -337,7 +337,7 @@ kg-microbe context
METPO:1000059 [-2.682, -2.070, -3.656, -0.652, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -345,7 +345,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/physiology/oxidative_stress_response.html b/pages/traits/physiology/oxidative_stress_response.html
index bee638fbab..c5f7a2a014 100644
--- a/pages/traits/physiology/oxidative_stress_response.html
+++ b/pages/traits/physiology/oxidative_stress_response.html
@@ -243,7 +243,7 @@ kg-microbe context
METPO:1000059 [-2.682, -2.070, -3.656, -0.652, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -251,7 +251,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/physiology/persister_cell_formation.html b/pages/traits/physiology/persister_cell_formation.html
index 780a1644e1..5c02d4c97e 100644
--- a/pages/traits/physiology/persister_cell_formation.html
+++ b/pages/traits/physiology/persister_cell_formation.html
@@ -343,7 +343,7 @@ kg-microbe context
METPO:1000059 [-2.682, -2.070, -3.656, -0.652, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -351,7 +351,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/physiology/phenylalanine_arylamidase_activity.html b/pages/traits/physiology/phenylalanine_arylamidase_activity.html
index fbc669a5b9..145d7dc5e2 100644
--- a/pages/traits/physiology/phenylalanine_arylamidase_activity.html
+++ b/pages/traits/physiology/phenylalanine_arylamidase_activity.html
@@ -82,7 +82,7 @@ Synonyms (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/physiology/photoautotrophic.html b/pages/traits/physiology/photoautotrophic.html
index 7c6fc0f88e..df3578f3f9 100644
--- a/pages/traits/physiology/photoautotrophic.html
+++ b/pages/traits/physiology/photoautotrophic.html
@@ -432,7 +432,7 @@ kg-microbe context
METPO:1000656 [-1.879, -5.853, -1.491, +0.710, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -440,7 +440,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/physiology/photoheterotrophic.html b/pages/traits/physiology/photoheterotrophic.html
index c4ae7a0e26..e70ec0eba0 100644
--- a/pages/traits/physiology/photoheterotrophic.html
+++ b/pages/traits/physiology/photoheterotrophic.html
@@ -433,7 +433,7 @@ kg-microbe context
METPO:1000657 [-0.306, -3.156, -1.761, +2.105, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -441,7 +441,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/physiology/photolithoautotrophic.html b/pages/traits/physiology/photolithoautotrophic.html
index e3e7c7ae5b..5ab769e42e 100644
--- a/pages/traits/physiology/photolithoautotrophic.html
+++ b/pages/traits/physiology/photolithoautotrophic.html
@@ -422,7 +422,7 @@ kg-microbe context
METPO:1000665 [-2.042, -2.782, -5.220, +0.946, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -430,7 +430,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/physiology/photolithotrophic.html b/pages/traits/physiology/photolithotrophic.html
index 4cc58575e7..022ca12e00 100644
--- a/pages/traits/physiology/photolithotrophic.html
+++ b/pages/traits/physiology/photolithotrophic.html
@@ -422,7 +422,7 @@ kg-microbe context
METPO:1000658 [-1.986, -2.827, -4.047, -0.222, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -430,7 +430,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/physiology/photoorganoheterotrophic.html b/pages/traits/physiology/photoorganoheterotrophic.html
index 56d85f4017..5efc8b5b0c 100644
--- a/pages/traits/physiology/photoorganoheterotrophic.html
+++ b/pages/traits/physiology/photoorganoheterotrophic.html
@@ -405,7 +405,7 @@ kg-microbe context
METPO:1000659 [-2.409, -2.535, -5.408, -0.103, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -413,7 +413,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/physiology/phototrophic.html b/pages/traits/physiology/phototrophic.html
index 970209e14f..4b326ea83f 100644
--- a/pages/traits/physiology/phototrophic.html
+++ b/pages/traits/physiology/phototrophic.html
@@ -390,7 +390,7 @@ kg-microbe context
METPO:1000660 [-2.096, -3.602, -1.726, +2.700, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -398,7 +398,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/physiology/prolyl_aminopeptidase_activity.html b/pages/traits/physiology/prolyl_aminopeptidase_activity.html
index 43decfe84f..f5b6492c80 100644
--- a/pages/traits/physiology/prolyl_aminopeptidase_activity.html
+++ b/pages/traits/physiology/prolyl_aminopeptidase_activity.html
@@ -88,7 +88,7 @@ Synonyms (4)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/physiology/pyrazinamidase_activity.html b/pages/traits/physiology/pyrazinamidase_activity.html
index 684de9e77e..423bd12124 100644
--- a/pages/traits/physiology/pyrazinamidase_activity.html
+++ b/pages/traits/physiology/pyrazinamidase_activity.html
@@ -88,7 +88,7 @@ Synonyms (4)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/physiology/pyrrolidonyl_arylamidase_activity.html b/pages/traits/physiology/pyrrolidonyl_arylamidase_activity.html
index 5eeeb8552b..c227bac8ea 100644
--- a/pages/traits/physiology/pyrrolidonyl_arylamidase_activity.html
+++ b/pages/traits/physiology/pyrrolidonyl_arylamidase_activity.html
@@ -73,7 +73,7 @@ Parent traits (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/physiology/quorum_sensing.html b/pages/traits/physiology/quorum_sensing.html
index 90c2e464b9..4a5fd67d0e 100644
--- a/pages/traits/physiology/quorum_sensing.html
+++ b/pages/traits/physiology/quorum_sensing.html
@@ -328,7 +328,7 @@ kg-microbe context
METPO:1000059 [-2.682, -2.070, -3.656, -0.652, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -336,7 +336,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/physiology/serine_arylamidase_activity.html b/pages/traits/physiology/serine_arylamidase_activity.html
index 60eaa33c6c..40d0baa983 100644
--- a/pages/traits/physiology/serine_arylamidase_activity.html
+++ b/pages/traits/physiology/serine_arylamidase_activity.html
@@ -82,7 +82,7 @@ Synonyms (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/physiology/siderophore_production.html b/pages/traits/physiology/siderophore_production.html
index d70bb537dd..0aa305e137 100644
--- a/pages/traits/physiology/siderophore_production.html
+++ b/pages/traits/physiology/siderophore_production.html
@@ -73,7 +73,7 @@ Parent traits (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/physiology/spore_germination.html b/pages/traits/physiology/spore_germination.html
index 01297c5766..fe51aa6bdb 100644
--- a/pages/traits/physiology/spore_germination.html
+++ b/pages/traits/physiology/spore_germination.html
@@ -227,7 +227,7 @@ kg-microbe context
METPO:1000059 [-2.682, -2.070, -3.656, -0.652, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -235,7 +235,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/physiology/stress_response.html b/pages/traits/physiology/stress_response.html
index 87c2a0feff..911e54aea1 100644
--- a/pages/traits/physiology/stress_response.html
+++ b/pages/traits/physiology/stress_response.html
@@ -346,7 +346,7 @@ kg-microbe context
METPO:1000059 [-2.682, -2.070, -3.656, -0.652, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -354,7 +354,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/physiology/trophic_type.html b/pages/traits/physiology/trophic_type.html
index cc3abc34d6..8ebe2fee5f 100644
--- a/pages/traits/physiology/trophic_type.html
+++ b/pages/traits/physiology/trophic_type.html
@@ -408,7 +408,7 @@ kg-microbe context
METPO:1000631 [-1.491, -2.608, -4.371, +0.721, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -416,7 +416,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/physiology/trypsin_activity.html b/pages/traits/physiology/trypsin_activity.html
index e5ed9f0ae3..19ba92d7b1 100644
--- a/pages/traits/physiology/trypsin_activity.html
+++ b/pages/traits/physiology/trypsin_activity.html
@@ -82,7 +82,7 @@ Synonyms (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/physiology/tyrosine_arylamidase_activity.html b/pages/traits/physiology/tyrosine_arylamidase_activity.html
index ed750f15cf..37cb4f9085 100644
--- a/pages/traits/physiology/tyrosine_arylamidase_activity.html
+++ b/pages/traits/physiology/tyrosine_arylamidase_activity.html
@@ -82,7 +82,7 @@ Synonyms (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/physiology/urease_activity.html b/pages/traits/physiology/urease_activity.html
index 0cb05666de..7c2578b5ec 100644
--- a/pages/traits/physiology/urease_activity.html
+++ b/pages/traits/physiology/urease_activity.html
@@ -405,7 +405,7 @@ kg-microbe context
METPO:1000059 [-2.682, -2.070, -3.656, -0.652, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -413,7 +413,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/physiology/valine_arylamidase_activity.html b/pages/traits/physiology/valine_arylamidase_activity.html
index 1fc1c4eb19..56cad7c335 100644
--- a/pages/traits/physiology/valine_arylamidase_activity.html
+++ b/pages/traits/physiology/valine_arylamidase_activity.html
@@ -73,7 +73,7 @@ Parent traits (1)
kg-microbe context
No kg-microbe node embedding for this METPO class
- in the 2026-04-25 deepwalk. Most unmatched terms are
+ in the Legacy graph artifact; source provenance not recorded deepwalk. Most unmatched terms are
DatatypeProperties (e.g. METPO:has_*_value) that the
graph encodes as edge attributes, not entity nodes.
diff --git a/pages/traits/physiology/viable_but_nonculturable_state.html b/pages/traits/physiology/viable_but_nonculturable_state.html
index f0a1e3cc60..6f8f0abe54 100644
--- a/pages/traits/physiology/viable_but_nonculturable_state.html
+++ b/pages/traits/physiology/viable_but_nonculturable_state.html
@@ -337,7 +337,7 @@ kg-microbe context
METPO:1000059 [-2.682, -2.070, -3.656, -0.652, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -345,7 +345,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/quantitative_property/has_maximum_observed_value.html b/pages/traits/quantitative_property/has_maximum_observed_value.html
index 6099d0c34e..0d8fd9e933 100644
--- a/pages/traits/quantitative_property/has_maximum_observed_value.html
+++ b/pages/traits/quantitative_property/has_maximum_observed_value.html
@@ -80,7 +80,7 @@ kg-microbe context
METPO:2000060 [+0.021, -0.024, +0.067, -0.021, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -88,7 +88,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/quantitative_property/has_minimum_observed_value.html b/pages/traits/quantitative_property/has_minimum_observed_value.html
index 0a908ebea8..e970a24523 100644
--- a/pages/traits/quantitative_property/has_minimum_observed_value.html
+++ b/pages/traits/quantitative_property/has_minimum_observed_value.html
@@ -80,7 +80,7 @@ kg-microbe context
METPO:2000059 [+0.064, -0.085, -0.018, -0.087, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -88,7 +88,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/quantitative_property/has_observed_spot_value.html b/pages/traits/quantitative_property/has_observed_spot_value.html
index 3be04f1b77..d165ff15ee 100644
--- a/pages/traits/quantitative_property/has_observed_spot_value.html
+++ b/pages/traits/quantitative_property/has_observed_spot_value.html
@@ -80,7 +80,7 @@ kg-microbe context
METPO:2000058 [-0.096, -0.065, -0.002, -0.079, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -88,7 +88,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/quantitative_property/has_value.html b/pages/traits/quantitative_property/has_value.html
index 68d8324111..bd8f30c5d6 100644
--- a/pages/traits/quantitative_property/has_value.html
+++ b/pages/traits/quantitative_property/has_value.html
@@ -71,7 +71,7 @@ kg-microbe context
METPO:2000071 [-0.023, -0.016, -0.102, +0.094, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -79,7 +79,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/quantitative_property/has_value_comments.html b/pages/traits/quantitative_property/has_value_comments.html
index bfc1742948..8dcc9d9ef1 100644
--- a/pages/traits/quantitative_property/has_value_comments.html
+++ b/pages/traits/quantitative_property/has_value_comments.html
@@ -80,7 +80,7 @@ kg-microbe context
METPO:2000061 [-0.054, +0.017, +0.025, -0.032, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -88,7 +88,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/quantitative_property/is_negative_data.html b/pages/traits/quantitative_property/is_negative_data.html
index 25513337c5..74b04edb19 100644
--- a/pages/traits/quantitative_property/is_negative_data.html
+++ b/pages/traits/quantitative_property/is_negative_data.html
@@ -80,7 +80,7 @@ kg-microbe context
METPO:2000062 [+0.056, -0.103, -0.000, +0.056, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -88,7 +88,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/quantitative_property/observation_data_property.html b/pages/traits/quantitative_property/observation_data_property.html
index 295f061907..32a40dcd3b 100644
--- a/pages/traits/quantitative_property/observation_data_property.html
+++ b/pages/traits/quantitative_property/observation_data_property.html
@@ -86,7 +86,7 @@ kg-microbe context
METPO:2000063 [-0.033, -0.105, +0.028, +0.087, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -94,7 +94,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/upper/biological_process.html b/pages/traits/upper/biological_process.html
index 9cb3597d4e..920191d929 100644
--- a/pages/traits/upper/biological_process.html
+++ b/pages/traits/upper/biological_process.html
@@ -248,7 +248,7 @@ kg-microbe context
METPO:1000630 [-0.906, -0.897, -0.035, -0.552, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -256,7 +256,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/upper/chemical_entity.html b/pages/traits/upper/chemical_entity.html
index 099059def4..9017be97ee 100644
--- a/pages/traits/upper/chemical_entity.html
+++ b/pages/traits/upper/chemical_entity.html
@@ -87,7 +87,7 @@ kg-microbe context
METPO:1000526 [+0.357, -0.541, +0.061, +0.848, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -95,7 +95,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/upper/enzyme.html b/pages/traits/upper/enzyme.html
index 47e51f0d7a..8e21bd2aaf 100644
--- a/pages/traits/upper/enzyme.html
+++ b/pages/traits/upper/enzyme.html
@@ -80,7 +80,7 @@ kg-microbe context
METPO:1000527 [+0.167, -0.909, -0.249, +1.095, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -88,7 +88,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/upper/material_entity.html b/pages/traits/upper/material_entity.html
index 179f4519a0..58d7321122 100644
--- a/pages/traits/upper/material_entity.html
+++ b/pages/traits/upper/material_entity.html
@@ -166,7 +166,7 @@ kg-microbe context
METPO:1000186 [+0.971, -0.795, +0.103, +1.493, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -174,7 +174,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/upper/microbe.html b/pages/traits/upper/microbe.html
index d5e4fee7ba..30d6296724 100644
--- a/pages/traits/upper/microbe.html
+++ b/pages/traits/upper/microbe.html
@@ -80,7 +80,7 @@ kg-microbe context
METPO:1000525 [+0.029, -0.773, +0.243, +1.218, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -88,7 +88,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/upper/observation.html b/pages/traits/upper/observation.html
index 29f432d074..607cbb2cd9 100644
--- a/pages/traits/upper/observation.html
+++ b/pages/traits/upper/observation.html
@@ -302,7 +302,7 @@ kg-microbe context
METPO:1001000 [-0.035, -0.074, +0.047, +0.096, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -310,7 +310,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/upper/phenotype.html b/pages/traits/upper/phenotype.html
index f8221dd676..2903d31cd2 100644
--- a/pages/traits/upper/phenotype.html
+++ b/pages/traits/upper/phenotype.html
@@ -406,7 +406,7 @@ kg-microbe context
METPO:1000059 [-2.682, -2.070, -3.656, -0.652, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -414,7 +414,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/traits/upper/quality.html b/pages/traits/upper/quality.html
index 6ea2ef5693..b57e3e4484 100644
--- a/pages/traits/upper/quality.html
+++ b/pages/traits/upper/quality.html
@@ -193,7 +193,7 @@ kg-microbe context
METPO:1000188 [-0.956, -1.962, -3.148, +1.274, …]
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe (2026-04-25).
+
Stored kg-microbe graph vector (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
@@ -201,7 +201,7 @@ kg-microbe context
Nearest neighbors in embedding space
Top-8 cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded).
diff --git a/pages/umap.html b/pages/umap.html
index d0acdfda3a..73f01d8855 100644
--- a/pages/umap.html
+++ b/pages/umap.html
@@ -23,8 +23,8 @@
TraitMech › Embedding space
Trait embedding space
- PaCMAP projection of 477 METPO trait
- embeddings from kg-microbe's 2026-04-25 deepwalk (512-D, n_neighbors=15).
+
Unverified projection of 477 METPO trait
+ embeddings. Source: Legacy graph artifact; source provenance not recorded; dimensions: unrecorded.
Hover for label, click to open the trait page.
@@ -45,7 +45,7 @@ Trait embedding space
diff --git a/scripts/build_embedding_index.py b/scripts/build_embedding_index.py
old mode 100644
new mode 100755
index 6934897c74..b9fcf91cbe
--- a/scripts/build_embedding_index.py
+++ b/scripts/build_embedding_index.py
@@ -2,17 +2,12 @@
"""Vendor a slim trait subset of kg-microbe's deepwalk embeddings + build a
METPO CURIE ↔ kg-microbe-node match table.
-Source priority
----------------
-1. ``../CommunityMech/CommunityMech/data/embeddings/DeepWalkSkipGramEnsmallen_degreenorm_embedding_512_v2_2026-04-25_*.tsv.gz``
- (5.7 GB, 512-D, latest; carries 380 METPO CURIEs DIRECTLY plus the legacy
- pre-METPO trait nodes for backward compatibility).
-2. Fallback to the 2024-09-25 200-D file if the 2026-04-25 one isn't present.
-
-The 2026-04-25 file is the first kg-microbe-derived embedding that ingests
-METPO. Direct CURIE lookup (METPO:1000602 → that row's 512 floats) is the
-primary match path; the alias-table + label-match fallback covers METPO
-classes whose CURIEs the embedding doesn't have but whose label does.
+Source selection
+----------------
+Explicit ``--src`` or ``KG_MICROBE_EMBEDDINGS`` takes precedence, then a local
+v3 2026-06-26 artifact, then the configured/sibling CommunityMech artifact.
+A missing selected source fails; legacy releases require an explicit path.
+No source/reducer provenance is inferred for old point arrays.
Bridge
------
@@ -40,6 +35,9 @@
import argparse
import csv
import gzip
+import hashlib
+import json
+import os
import re
import sys
from pathlib import Path
@@ -48,16 +46,21 @@
# Newest available kg-microbe-derived deepwalk: 512-D, 2026-06-26 (v3),
# includes METPO CURIEs directly. Source-of-truth for direct-METPO matching.
-DEFAULT_KGM_DEEPWALK = (
- REPO_ROOT.parent / "CommunityMech" / "CommunityMech" / "data" / "embeddings"
- / "DeepWalkSkipGramEnsmallen_degreenorm_embedding_512_v3_2026-06-26_12_55_27.tsv.gz"
-)
-# Fallback: 2024-09-25 200-D file (pre-METPO; only useful for legacy-prefix
-# trait nodes like `cell_shape:bacillus`).
-FALLBACK_KGM_DEEPWALK = (
- REPO_ROOT.parent / "kg-microbe-projects" / "taxa_media"
- / "DeepWalkSkipGramEnsmallen_degreenorm_embedding_200_1_wouniprot__2024-09-25_03_07_47.tsv.gz"
-)
+EMBEDDINGS_FILENAME = "DeepWalkSkipGramEnsmallen_degreenorm_embedding_512_v3_2026-06-26_12_55_27.tsv.gz"
+
+
+def default_deepwalk() -> Path:
+ override = os.environ.get("KG_MICROBE_EMBEDDINGS")
+ if override:
+ return Path(override).expanduser()
+ local = REPO_ROOT / "data" / "embeddings" / EMBEDDINGS_FILENAME
+ if local.is_file():
+ return local
+ community = Path(os.environ.get("COMMUNITYMECH_ROOT") or REPO_ROOT.parent / "CommunityMech")
+ return community / "data" / "embeddings" / EMBEDDINGS_FILENAME
+
+
+DEFAULT_KGM_DEEPWALK = default_deepwalk()
DEFAULT_KGM_ALIASES = (
REPO_ROOT.parent / "kg-microbe" / "mappings" / "canonical" / "metpo_alias_mappings.tsv"
)
@@ -143,8 +146,8 @@ def load_metpo_records(traits_dir: Path) -> list[tuple[str, str, list[str], str,
for path in sorted(traits_dir.rglob("*.yaml")):
try:
doc = yaml.safe_load(path.read_text())
- except Exception:
- continue
+ except (OSError, yaml.YAMLError) as error:
+ raise ValueError(f"Unable to read trait record: {path}") from error
if not isinstance(doc, dict):
continue
curie = (doc.get("identifier") or "").strip()
@@ -319,8 +322,8 @@ def compute_umap_and_neighbors(
return [], {}
elif method == "pacmap":
try:
- import pacmap # noqa: F401
- from sklearn.preprocessing import normalize # noqa: F401
+ import pacmap
+ from sklearn.preprocessing import normalize
except ImportError as e:
print(f" PaCMAP / scikit-learn not available: {e}; skipping projection",
file=sys.stderr)
@@ -328,7 +331,7 @@ def compute_umap_and_neighbors(
elif method == "sfdp":
try:
sys.path.insert(0, str(Path(__file__).resolve().parent))
- from sfdp_layout import sfdp_layout # noqa: F401
+ from sfdp_layout import sfdp_layout
except ImportError as e:
print(f" sfdp_layout / scikit-learn not available: {e}; skipping projection",
file=sys.stderr)
@@ -393,6 +396,7 @@ def compute_umap_and_neighbors(
"label": lbl,
"category": cat,
"match_method": match_by_curie[curie]["match_method"],
+ "kgm_nodes": match_by_curie[curie]["kgm_nodes"].split(";"),
"umap_x": float(coords[i, 0]),
"umap_y": float(coords[i, 1]),
})
@@ -402,6 +406,8 @@ def compute_umap_and_neighbors(
"label": record_by_curie[curies[j]][0],
"category": record_by_curie[curies[j]][2],
"similarity": float(sim[i, j]),
+ "match_method": match_by_curie[curies[j]]["match_method"],
+ "kgm_nodes": match_by_curie[curies[j]]["kgm_nodes"].split(";"),
}
for j in top_idx[i]
]
@@ -414,11 +420,36 @@ def compute_umap_and_neighbors(
def write_json(path: Path, payload) -> None:
- import json
path.parent.mkdir(parents=True, exist_ok=True)
path.write_text(json.dumps(payload, indent=2))
+
+def file_sha256(path: Path) -> str:
+ with path.open("rb") as stream:
+ return hashlib.file_digest(stream, "sha256").hexdigest()
+
+
+def write_projection_metadata(path: Path, source: Path, vectors, method: str,
+ match_table: Path, neighbors: Path) -> None:
+ """Bind newly generated outputs to the source actually selected by this run."""
+ dims = {len(vector) for vector in vectors.values()}
+ if len(dims) != 1:
+ raise ValueError("Graph vectors must have one nonempty dimension")
+ write_json(path.with_suffix(".metadata.json"), {
+ "schema_version": 1,
+ "embedding_family": "kg_microbe_deepwalk",
+ "source": {"filename": source.name, "sha256": file_sha256(source)},
+ "input_dimensions": next(iter(dims)),
+ "projection": {"method": method, "random_state": 42,
+ "normalization": "l2" if method in {"pacmap", "sfdp"} else "none"},
+ "match_table_sha256": file_sha256(match_table),
+ "outputs": {path.name: file_sha256(path), neighbors.name: file_sha256(neighbors)},
+ "coverage": {"projected": len(json.loads(path.read_text())),
+ "neighbor_records": len(json.loads(neighbors.read_text()))},
+ })
+
+
def main() -> int:
ap = argparse.ArgumentParser()
ap.add_argument("--src", type=Path, default=DEFAULT_KGM_DEEPWALK,
@@ -436,13 +467,9 @@ def main() -> int:
args = ap.parse_args()
src = args.src
- if not src.exists():
- if FALLBACK_KGM_DEEPWALK.exists():
- print(f" Primary embedding missing ({src}); using fallback {FALLBACK_KGM_DEEPWALK.name}")
- src = FALLBACK_KGM_DEEPWALK
- else:
- print(f"deepwalk source missing: {src}", file=sys.stderr)
- return 2
+ if not src.is_file():
+ print(f"Selected deepwalk source missing: {src}; pass --src for another release", file=sys.stderr)
+ return 2
print(f"[1/4] Vendoring slim deepwalk subset → {args.out_deepwalk}")
print(f" source: {src.name}")
@@ -474,8 +501,12 @@ def main() -> int:
umap_points, nn_map = compute_umap_and_neighbors(
metpo_records, rows, vectors, method=args.method
)
+ if not umap_points:
+ print("Projection produced no points; outputs were not published", file=sys.stderr)
+ return 2
write_json(args.umap_out, umap_points)
write_json(OUT_NN_JSON, nn_map)
+ write_projection_metadata(args.umap_out, src, vectors, args.method, args.out_match, OUT_NN_JSON)
print(f" {len(umap_points)} UMAP points → {args.umap_out.name}")
nn_with_data = sum(1 for v in nn_map.values() if v)
print(f" {nn_with_data} traits with ≥1 nearest neighbor → {OUT_NN_JSON.name}")
diff --git a/scripts/render_trait_pages.py b/scripts/render_trait_pages.py
old mode 100644
new mode 100755
index 8fa98749f7..dc65411d0d
--- a/scripts/render_trait_pages.py
+++ b/scripts/render_trait_pages.py
@@ -24,6 +24,8 @@
import argparse
import csv
import gzip
+import hashlib
+import json
import re
import shutil
import sys
@@ -33,7 +35,6 @@
import yaml
from jinja2 import Environment, FileSystemLoader, select_autoescape
-
from research_trait import is_pipeline_report
from trait_causal_graph import causal_graphs_for_template
@@ -49,7 +50,38 @@
NN_JSON = EMBED_DIR / "trait_nearest_neighbors.json"
DIM_PREVIEW = 4 # number of dims to show inline next to each kg-microbe node
-EMBEDDING_RELEASE = "2026-04-25"
+def load_projection_receipt(path: Path) -> dict:
+ """Display only metadata bound to the current map and neighbor bytes.
+
+ Old arrays have no generation receipt. Their current defaults are not
+ evidence about the algorithm, source release or dimension used before.
+ """
+ legacy = {"label": "Unverified projection", "method": "unknown",
+ "source": "Legacy graph artifact; source provenance not recorded",
+ "dimensions": "unrecorded", "verified": False}
+ try:
+ receipt = json.loads(path.with_suffix(".metadata.json").read_text())
+ source = receipt["source"]
+ dimensions = receipt["input_dimensions"]
+ method = receipt["projection"]["method"]
+ if (receipt["schema_version"] != 1 or method not in {"pacmap", "umap", "sfdp"}
+ or type(dimensions) is not int or dimensions < 1
+ or not isinstance(source["filename"], str) or not source["filename"]
+ or not re.fullmatch(r"[0-9a-f]{64}", source["sha256"])):
+ return legacy
+ # Include neighbor integrity so a newer neighbor run cannot silently
+ # borrow an older map's source claim on every trait page.
+ for output in (path, path.parent / "trait_nearest_neighbors.json"):
+ with output.open("rb") as stream:
+ digest = hashlib.file_digest(stream, "sha256").hexdigest()
+ if receipt["outputs"].get(output.name) != digest:
+ return legacy
+ return {"label": {"pacmap": "PaCMAP", "umap": "UMAP", "sfdp": "sfdp layout"}[method],
+ "method": method, "source": source["filename"],
+ "source_sha256": source["sha256"], "dimensions": dimensions, "verified": True}
+ except (OSError, ValueError, KeyError, TypeError, AttributeError):
+ return legacy
+
# Provider precedence for the deep-research lookup.
#
@@ -122,8 +154,8 @@ def load_traits() -> list[tuple[Path, dict]]:
for path in sorted(TRAITS_DIR.rglob("*.yaml")):
try:
doc = yaml.safe_load(path.read_text())
- except Exception:
- continue
+ except (OSError, yaml.YAMLError) as error:
+ raise ValueError(f"Unable to read trait record: {path}") from error
if isinstance(doc, dict):
out.append((path, doc))
return out
@@ -256,10 +288,10 @@ def load_node_dim_preview(needed_nodes: set[str]) -> dict[str, str]:
sid = parts[0]
if sid in needed_nodes:
dims = parts[1:1 + DIM_PREVIEW]
- if dims and dims[0] in ("0", "0.0", ""):
- # Header / index column? skip.
- if all(d.isdigit() for d in dims if d):
- continue
+ # Header / index column? skip.
+ if (dims and dims[0] in ("0", "0.0", "")
+ and all(d.isdigit() for d in dims if d)):
+ continue
preview = ", ".join(f"{float(d):+.3f}" for d in dims if d)
out[sid] = f"[{preview}, …]"
return out
@@ -370,6 +402,7 @@ def render_pages(args: argparse.Namespace) -> int:
metpo_version = load_metpo_version(RAW_OWL)
traits = load_traits()
match_table = load_match_table()
+ embedding_receipt = load_projection_receipt(UMAP_JSON)
# One value for every page in the run, derived from the data (#228).
corpus_stamp = corpus_timestamp(traits)
@@ -484,7 +517,8 @@ def render_pages(args: argparse.Namespace) -> int:
research_blob_url=(
f"{GH_BLOB_BASE}/{research_rel}" if research_rel else ""
),
- embedding_release=EMBEDDING_RELEASE,
+ embedding_release=embedding_receipt["source"],
+ embedding_dimensions=embedding_receipt["dimensions"],
metpo_version=metpo_version,
yaml_path=yaml_rel,
yaml_blob_url=f"{GH_BLOB_BASE}/{yaml_rel}",
@@ -534,6 +568,7 @@ def render_pages(args: argparse.Namespace) -> int:
title="Trait embedding space",
root="",
data_url="data/trait_umap.json",
+ projection=embedding_receipt,
href_by_id=_json.dumps({p["id"]: page_path.get(p["id"], "") for p in umap_points}),
n_points=len(umap_points),
metpo_version=metpo_version,
@@ -554,9 +589,10 @@ def render_pages(args: argparse.Namespace) -> int:
nn_by_curie, {point["id"] for point in graph_points}
)
graph_html = env.get_template("graph.html").render(
- title="Trait graph layout (sfdp)",
+ title="Trait graph layout",
root="",
data_url="data/trait_graph.json",
+ projection=load_projection_receipt(GRAPH_JSON),
href_by_id=_json.dumps({p["id"]: page_path.get(p["id"], "") for p in graph_points}),
graph_edges=_json.dumps(graph_edges),
n_points=len(graph_points),
@@ -578,6 +614,7 @@ def render_pages(args: argparse.Namespace) -> int:
embedded_count = sum(1 for v in match_table.values() if v["n_kgm_nodes"] > 0)
landing = env.get_template("index.html").render(
title="Microbial trait knowledge base",
+ projection_label=embedding_receipt["label"],
root="",
total_traits=len(traits),
embedded_count=embedded_count,
diff --git a/src/traitmech/templates/graph.html b/src/traitmech/templates/graph.html
index 67f1245f93..5811a39745 100644
--- a/src/traitmech/templates/graph.html
+++ b/src/traitmech/templates/graph.html
@@ -2,10 +2,10 @@
{% block content %}
TraitMech › Graph layout
- Trait graph layout (sfdp)
- Graphviz sfdp force-directed layout over
- {{ n_points }} METPO trait embeddings from kg-microbe's
- 2026-04-25 deepwalk (512-D, layout k=15). The {{ n_edges }} visible links are
+
Trait graph layout
+ {{ projection.label }} over
+ {{ n_points }} METPO trait embeddings. Projection: {{ projection.label }}.
+ Source: {{ projection.source }}; dimensions: {{ projection.dimensions }}. The {{ n_edges }} visible links are
reciprocal relationships in the committed top-neighbor index. Hover for a
label; click to open the trait page.
diff --git a/src/traitmech/templates/index.html b/src/traitmech/templates/index.html
index ffb21d0d6b..c0feaf13f2 100644
--- a/src/traitmech/templates/index.html
+++ b/src/traitmech/templates/index.html
@@ -125,9 +125,9 @@ Record browser
🗺️
-
+
Embedding browser
-
Interactive PaCMAP of the trait embedding space with click-through to records.
+
Interactive {{ projection_label }} of the trait embedding space with click-through to records.
💻
diff --git a/src/traitmech/templates/trait.html b/src/traitmech/templates/trait.html
index 0d8eaf3c04..db5c77be78 100644
--- a/src/traitmech/templates/trait.html
+++ b/src/traitmech/templates/trait.html
@@ -210,7 +210,7 @@
kg-microbe context
{{ node }}{% if node in node_dim_preview %} {{ node_dim_preview[node] }} {% endif %}
{% endfor %}
-
512-dim DeepWalkSkipGramEnsmallen embedding from kg-microbe ({{ embedding_release }}).
+
Stored kg-microbe graph vector (source: {{ embedding_release }}; dimensions: {{ embedding_dimensions }}).
{% else %}
No kg-microbe node embedding for this METPO class
in the {{ embedding_release }} deepwalk. Most unmatched terms are
@@ -223,7 +223,7 @@
kg-microbe context
Nearest neighbors in embedding space
Top-{{ nearest_neighbors|length }} cosine-similar METPO traits
- from the 2026-04-25 deepwalk (512-D).
+ from the stored graph vectors (source: {{ embedding_release }}; dimensions: {{ embedding_dimensions }}).
{% for nn in nearest_neighbors %}
diff --git a/src/traitmech/templates/umap.html b/src/traitmech/templates/umap.html
index 37d88f4b22..5e1f6623f4 100644
--- a/src/traitmech/templates/umap.html
+++ b/src/traitmech/templates/umap.html
@@ -3,8 +3,8 @@
TraitMech › Embedding space
Trait embedding space
- PaCMAP projection of {{ n_points }} METPO trait
- embeddings from kg-microbe's 2026-04-25 deepwalk (512-D, n_neighbors=15).
+
{{ projection.label }} of {{ n_points }} METPO trait
+ embeddings. Source: {{ projection.source }}; dimensions: {{ projection.dimensions }}.
Hover for label, click to open the trait page.
@@ -25,7 +25,7 @@ Trait embedding space
diff --git a/tests/test_graph_projection_correctness.py b/tests/test_graph_projection_correctness.py
new file mode 100644
index 0000000000..069dcb780b
--- /dev/null
+++ b/tests/test_graph_projection_correctness.py
@@ -0,0 +1,87 @@
+"""Selected graph sources and published receipts must be literal, not guessed."""
+import importlib.util
+import json
+import sys
+from pathlib import Path
+
+import pytest
+
+
+@pytest.fixture
+def builder():
+ path = Path(__file__).resolve().parents[1] / "scripts/build_embedding_index.py"
+ spec = importlib.util.spec_from_file_location("graph_builder_under_test", path)
+ module = importlib.util.module_from_spec(spec)
+ spec.loader.exec_module(module)
+ return module
+
+
+def test_explicit_missing_source_fails_without_fallback(builder, tmp_path, monkeypatch):
+ monkeypatch.setattr(sys, "argv", ["builder", "--src", str(tmp_path / "typo.gz"),
+ "--out-deepwalk", str(tmp_path / "out.gz")])
+ assert builder.main() == 2
+ assert not (tmp_path / "out.gz").exists()
+
+
+def test_configured_source_is_selected_even_if_missing(builder, tmp_path, monkeypatch):
+ missing = tmp_path / "selected.gz"
+ monkeypatch.setenv("KG_MICROBE_EMBEDDINGS", str(missing))
+ assert builder.default_deepwalk() == missing
+
+
+def test_current_local_and_configured_sibling_layout(builder, tmp_path, monkeypatch):
+ monkeypatch.delenv("KG_MICROBE_EMBEDDINGS", raising=False)
+ monkeypatch.setattr(builder, "REPO_ROOT", tmp_path / "TraitMech")
+ sibling = tmp_path / "CommunityMech"
+ monkeypatch.setenv("COMMUNITYMECH_ROOT", str(sibling))
+ assert builder.default_deepwalk() == sibling / "data/embeddings" / builder.EMBEDDINGS_FILENAME
+ local = builder.REPO_ROOT / "data/embeddings" / builder.EMBEDDINGS_FILENAME
+ local.parent.mkdir(parents=True)
+ local.write_bytes(b"source")
+ assert builder.default_deepwalk() == local
+
+
+def test_receipt_uses_actual_source_dimensions_and_output_digests(builder, tmp_path):
+ source = tmp_path / "explicit_legacy_graph.tsv.gz"
+ source.write_bytes(b"a caller-selected legacy artifact")
+ output = tmp_path / "map.json"
+ output.write_text('[{"id":"METPO:1"}]')
+ neighbors = tmp_path / "neighbors.json"
+ neighbors.write_text('{"METPO:1":[]}')
+ matches = tmp_path / "matches.tsv"
+ matches.write_text("match_method\nparent_proxy\n")
+ builder.write_projection_metadata(output, source, {"METPO:1": [1.] * 200}, "umap", matches, neighbors)
+ metadata = json.loads(output.with_suffix(".metadata.json").read_text())
+ assert metadata["source"] == {"filename": source.name, "sha256": builder.file_sha256(source)}
+ assert metadata["input_dimensions"] == 200
+ assert metadata["projection"]["method"] == "umap"
+ assert metadata["outputs"][output.name] == builder.file_sha256(output)
+ assert metadata["outputs"][neighbors.name] == builder.file_sha256(neighbors)
+
+
+def test_renderer_checks_receipt_and_labels_legacy_without_guessing(builder, tmp_path, monkeypatch):
+ import hashlib
+ path = Path(__file__).resolve().parents[1] / "scripts/render_trait_pages.py"
+ monkeypatch.syspath_prepend(str(path.parent))
+ spec = importlib.util.spec_from_file_location("graph_renderer_under_test", path)
+ renderer = importlib.util.module_from_spec(spec)
+ spec.loader.exec_module(renderer)
+ projection = tmp_path / "map.json"
+ projection.write_text("[]")
+ neighbors = tmp_path / "trait_nearest_neighbors.json"
+ neighbors.write_text("{}")
+ assert renderer.load_projection_receipt(projection)["verified"] is False
+ receipt = {"schema_version": 1, "input_dimensions": 200,
+ "source": {"filename": "actual_legacy_source.gz", "sha256": "a" * 64},
+ "projection": {"method": "umap"},
+ "outputs": {p.name: hashlib.sha256(p.read_bytes()).hexdigest() for p in (projection, neighbors)}}
+ projection.with_suffix(".metadata.json").write_text(json.dumps(receipt))
+ result = renderer.load_projection_receipt(projection)
+ assert result["label"] == "UMAP"
+ assert result["dimensions"] == 200
+ assert result["source"] == "actual_legacy_source.gz"
+ assert result["verified"] is True
+ neighbors.write_text('{"changed": []}')
+ assert renderer.load_projection_receipt(projection)["verified"] is False
+ projection.with_suffix(".metadata.json").write_text("broken")
+ assert renderer.load_projection_receipt(projection)["label"] == "Unverified projection"
From e278671dd99a5f2e261dc16e6132c25207ec5b2c Mon Sep 17 00:00:00 2001
From: "marcin p. joachimiak" <4625870+realmarcin@users.noreply.github.com>
Date: Mon, 14 Sep 2026 18:07:41 -0700
Subject: [PATCH 02/11] feat: export versioned semantic text for shared fleet
maps
---
docs/TEXT_MAP_INPUTS.md | 19 +++
justfile | 4 +
scripts/text_map_inputs.py | 7 +
src/traitmech/text_map_inputs.py | 215 +++++++++++++++++++++++++++++++
tests/test_text_map_inputs.py | 106 +++++++++++++++
5 files changed, 351 insertions(+)
create mode 100644 docs/TEXT_MAP_INPUTS.md
create mode 100755 scripts/text_map_inputs.py
create mode 100644 src/traitmech/text_map_inputs.py
create mode 100644 tests/test_text_map_inputs.py
diff --git a/docs/TEXT_MAP_INPUTS.md b/docs/TEXT_MAP_INPUTS.md
new file mode 100644
index 0000000000..6a98d00fff
--- /dev/null
+++ b/docs/TEXT_MAP_INPUTS.md
@@ -0,0 +1,19 @@
+# Common semantic text map inputs
+
+Includes all canonical trait YAML records. Stable record identifiers link to
+the exact existing category/stem page. Text includes label, definition, semantic
+category, synonyms, resolved parent labels and named canonical taxa. Citation,
+history, mapping status, ontology identifiers and curation discussions are
+excluded; graph structure and graph-source vectors remain a separate view.
+Parent labels come from the full corpus, so canary selection cannot alter text.
+
+Export with `just text-map-inputs --output data/text_map/inputs.jsonl`. Without `--output`, the command validates a preview. `--record` (repeatable repository-relative YAML path) and `--limit` explicitly select canary subsets; ordinary exports cover every eligible record.
+
+Each JSONL row has exactly `identifier`, `label`, `category`, `page`, `source_path`, `text`, `text_sha256`, and `adapter_version`. The text digest is SHA-256 over the exact UTF-8 text. Input order and text are deterministic; duplicate IDs and unreadable records fail. This adapter makes no model call. Common model/projection generation and publication require the fleet pipeline and full-input checks.
+
+Changing provenance-only fields leaves semantic text unchanged. Editing a selected semantic field changes its digest. This text view supplements the existing graph view; it does not alter graph aggregation or its scientific interpretation.
+
+The `page` field is relative to the directory containing the published map
+folder: from `text-map/index.html`, the shared renderer uses `../` plus `page`.
+This repository publishes the bundle at `pages/text-map/`, so record links omit
+the deployment wrapper `pages/` and resolve to its sibling record directories.
diff --git a/justfile b/justfile
index e6d0eaa59e..48074829ea 100644
--- a/justfile
+++ b/justfile
@@ -1191,3 +1191,7 @@ report-label-drift:
gen-discussions-data: (_require-claw "kg_microbe_discussions")
PYTHONPATH={{claw_src}} uv run python \
-m kg_microbe_discussions --config conf/discussions_config.yaml --output app/discussions
+
+# Full canonical semantic text by default; --record/--limit are explicit canaries.
+text-map-inputs *args:
+ uv run python scripts/text_map_inputs.py {{args}}
diff --git a/scripts/text_map_inputs.py b/scripts/text_map_inputs.py
new file mode 100755
index 0000000000..4c1fe69ff9
--- /dev/null
+++ b/scripts/text_map_inputs.py
@@ -0,0 +1,7 @@
+#!/usr/bin/env python3
+"""Export versioned semantic YAML text for the common fleet map."""
+
+from traitmech.text_map_inputs import main
+
+if __name__ == "__main__":
+ raise SystemExit(main())
diff --git a/src/traitmech/text_map_inputs.py b/src/traitmech/text_map_inputs.py
new file mode 100644
index 0000000000..175fed6633
--- /dev/null
+++ b/src/traitmech/text_map_inputs.py
@@ -0,0 +1,215 @@
+"""Versioned semantic YAML text for the common fleet map; no model calls.
+
+Includes all canonical trait YAML records. Stable record identifiers link to
+the exact existing category/stem page. Text includes label, definition, semantic
+category, synonyms, resolved parent labels and named canonical taxa. Citation,
+history, mapping status, ontology identifiers and curation discussions are
+excluded; graph structure and graph-source vectors remain a separate view.
+Parent labels come from the full corpus, so canary selection cannot alter text.
+"""
+from __future__ import annotations
+
+import argparse
+import hashlib
+import json
+import os
+import sys
+import tempfile
+from collections.abc import Iterator
+from contextlib import nullcontext
+from pathlib import Path
+from urllib.parse import quote
+
+import yaml
+
+REPO_ROOT = Path(__file__).resolve().parents[2]
+ADAPTER_VERSION = "traitmech-semantic-v1"
+RECORD_ROOTS = ('data/traits',)
+
+
+def clean(value: object) -> str:
+ return " ".join(str(value).split()) if value is not None else ""
+
+
+def enum_text(value: object) -> str:
+ return clean(value).lower().replace("_", " ")
+
+
+def label_of(value: object) -> str:
+ if isinstance(value, str):
+ return clean(value)
+ if not isinstance(value, dict):
+ return ""
+ return clean(value.get("preferred_term") or value.get("label") or value.get("name")
+ or (value.get("term") or {}).get("label"))
+
+
+def add(lines: list[str], label: str, value: object) -> None:
+ text = clean(value)
+ if text:
+ lines.append(f"{label}: {text}")
+
+
+def _load(path: Path) -> dict:
+ with path.open(encoding="utf-8") as stream:
+ # Both possible loaders are safe and never construct Python objects.
+ record = yaml.load(stream, Loader=getattr(yaml, "CSafeLoader", yaml.SafeLoader))
+ if not isinstance(record, dict):
+ raise TypeError(f"record is not a YAML mapping: {path}")
+ return record
+
+
+def _discover(directory: Path) -> Iterator[Path]:
+ with os.scandir(directory) as entries:
+ for entry in entries:
+ if entry.is_symlink():
+ raise ValueError(f"symlink in corpus: {entry.path}")
+ if entry.is_dir(follow_symlinks=False):
+ yield from _discover(Path(entry.path))
+ elif entry.name.endswith(".yaml") and entry.is_file(follow_symlinks=False):
+ yield Path(entry.path)
+
+
+def _record_path(root: Path, relative: str) -> Path:
+ path = Path(relative)
+ if path.is_absolute() or ".." in path.parts or path.suffix != ".yaml":
+ raise ValueError(f"not a repository-relative corpus YAML path: {relative}")
+ source = root / path
+ if not any(source.is_relative_to(root / directory) for directory in RECORD_ROOTS):
+ raise ValueError(f"record leaves the corpus: {relative}")
+ if any((root / Path(*path.parts[:length])).is_symlink() for length in range(1, len(path.parts) + 1)):
+ raise ValueError(f"symlink in corpus path: {relative}")
+ if not source.is_file():
+ raise ValueError(f"missing corpus record: {relative}")
+ return source
+
+
+
+def include_record(record: dict) -> bool:
+ return True
+
+
+def build_context(paths: list[Path]) -> dict:
+ context = {}
+ for path in sorted(paths):
+ record = _load(path)
+ identifier = record.get("identifier")
+ if identifier in context:
+ raise ValueError(f"duplicate trait identifier: {identifier}")
+ context[identifier] = clean(record.get("label"))
+ return context
+
+
+def record_details(record: dict, path: Path) -> tuple[str, str, str, str]:
+ return (record.get("identifier"), clean(record.get("label")),
+ clean(record.get("trait_category")) or "UNKNOWN",
+ "traits/" + quote(path.parent.name, safe="-._") + "/" + quote(path.stem, safe="-._") + ".html")
+
+
+def semantic_text(record: dict, context: dict | None = None) -> str:
+ context = context or {}
+ lines = []
+ add(lines, "name", record.get("label"))
+ add(lines, "definition", record.get("definition"))
+ add(lines, "trait category", enum_text(record.get("trait_category")))
+ add(lines, "synonyms", "; ".join(sorted({clean(item.get("synonym_text"))
+ for item in record.get("synonyms") or []} - {""})))
+ for label in sorted({context.get(parent, "") for parent in record.get("parent_traits") or []} - {""}):
+ add(lines, "broader trait", label)
+ for example in record.get("canonical_examples") or []:
+ add(lines, "example taxon", example.get("taxon_label"))
+ return "\n".join(lines) + "\n"
+
+
+
+def iter_inputs(root: Path = REPO_ROOT, *, records: list[str] | None = None,
+ limit: int | None = None) -> Iterator[dict]:
+ root = root.resolve()
+ if limit is not None and limit < 1:
+ raise ValueError("limit must be a positive integer")
+ paths = []
+ for directory in RECORD_ROOTS:
+ corpus = root / directory
+ if not corpus.is_dir() or any((root / Path(*Path(directory).parts[:length])).is_symlink()
+ for length in range(1, len(Path(directory).parts) + 1)):
+ raise ValueError(f"missing real corpus directory: {corpus}")
+ paths.extend(_discover(corpus))
+ context = build_context(paths)
+ selected = [_record_path(root, relative) for relative in records] if records else paths
+ if len(set(selected)) != len(selected):
+ raise ValueError("duplicate selected record path")
+ selected = sorted(selected)
+ identifiers = set()
+ count = 0
+ for path in selected:
+ record = _load(path)
+ if not include_record(record):
+ continue
+ identifier, label, category, page = record_details(record, path)
+ if not all(isinstance(value, str) and value.strip() for value in (identifier, label, category, page)):
+ raise ValueError(f"missing record identity, label, category or page: {path}")
+ if identifier in identifiers:
+ raise ValueError(f"duplicate record identifier: {identifier}")
+ identifiers.add(identifier)
+ text = semantic_text(record, context)
+ yield {"identifier": identifier, "label": label, "category": category, "page": page,
+ "source_path": path.relative_to(root).as_posix(), "text": text,
+ "text_sha256": hashlib.sha256(text.encode("utf-8")).hexdigest(),
+ "adapter_version": ADAPTER_VERSION}
+ count += 1
+ if limit is not None and count >= limit:
+ break
+
+
+def export_inputs(root: Path, output: Path | None, *, records: list[str] | None = None,
+ limit: int | None = None) -> dict:
+ destination = output.resolve() if output is not None else None
+ if destination is not None and destination.suffix != ".jsonl":
+ raise ValueError("output must have a .jsonl suffix")
+ temporary = None
+ digest = hashlib.sha256()
+ count = 0
+ try:
+ if destination is not None:
+ destination.parent.mkdir(parents=True, exist_ok=True)
+ with (tempfile.NamedTemporaryFile(mode="wb", prefix=".text-map-", dir=destination.parent,
+ delete=False) if destination is not None else nullcontext()) as handle:
+ if handle is not None:
+ temporary = Path(handle.name)
+ for record in iter_inputs(root, records=records, limit=limit):
+ data = (json.dumps(record, sort_keys=True, ensure_ascii=False) + "\n").encode("utf-8")
+ digest.update(data)
+ count += 1
+ if handle is not None:
+ handle.write(data)
+ if not count:
+ raise ValueError("selection contains no eligible corpus records")
+ if temporary is not None:
+ temporary.replace(destination)
+ return {"mode": "export" if destination else "preview",
+ "scope": "subset" if records or limit is not None else "full",
+ "records": count, "adapter_version": ADAPTER_VERSION,
+ "jsonl_sha256": digest.hexdigest(), "output": str(destination) if destination else None}
+ finally:
+ if temporary is not None:
+ temporary.unlink(missing_ok=True)
+
+
+def main(argv: list[str] | None = None) -> int:
+ parser = argparse.ArgumentParser(description=__doc__)
+ parser.add_argument("--root", type=Path, default=REPO_ROOT)
+ parser.add_argument("--output", type=Path, help="write JSONL atomically; otherwise validate a preview")
+ parser.add_argument("--record", action="append", help="repeat a repo-relative path for an explicit canary")
+ parser.add_argument("--limit", type=int, help="explicit canary limit; normal exports cover the full corpus")
+ args = parser.parse_args(argv)
+ try:
+ result = export_inputs(args.root, args.output, records=args.record, limit=args.limit)
+ except (OSError, ValueError, TypeError, yaml.YAMLError) as error:
+ print(f"text-map inputs refused: {error}", file=sys.stderr)
+ return 2
+ print(json.dumps(result, sort_keys=True))
+ return 0
+
+
+if __name__ == "__main__":
+ raise SystemExit(main())
diff --git a/tests/test_text_map_inputs.py b/tests/test_text_map_inputs.py
new file mode 100644
index 0000000000..1bb7535042
--- /dev/null
+++ b/tests/test_text_map_inputs.py
@@ -0,0 +1,106 @@
+"""Semantic adapter behavior, corpus boundaries, identity and atomic refusal."""
+import copy
+import hashlib
+import json
+from pathlib import Path
+
+import pytest
+import yaml
+
+from traitmech import text_map_inputs as adapter
+
+SOURCE = 'data/traits/ecology/example.yaml'
+RECORD = {'identifier': 'METPO:000001', 'label': 'Example trait', 'trait_category': 'ECOLOGY', 'definition': 'A biological adaptation', 'parent_traits': ['METPO:parent']}
+LABEL_FIELD = 'label'
+PAGE = 'traits/ecology/example.html'
+
+
+def fixture_tree(root):
+ for directory in adapter.RECORD_ROOTS:
+ (root / directory).mkdir(parents=True, exist_ok=True)
+ path = root / SOURCE
+ path.parent.mkdir(parents=True, exist_ok=True)
+ path.write_text(yaml.safe_dump(RECORD))
+ if adapter.ADAPTER_VERSION.startswith("traitmech-"):
+ parent = path.with_name("parent.yaml")
+ parent.write_text(yaml.safe_dump({"identifier": "METPO:parent", "label": "Resolved parent", "trait_category": "ECOLOGY"}))
+ return path
+
+
+def test_exact_contract_and_semantic_digest_ignores_provenance(tmp_path):
+ path = fixture_tree(tmp_path)
+ row = next(adapter.iter_inputs(tmp_path, records=[SOURCE]))
+ assert set(row) == {"identifier", "label", "category", "page", "source_path", "text", "text_sha256", "adapter_version"}
+ assert row["page"] == PAGE
+ assert row["source_path"] == SOURCE
+ assert row["text_sha256"] == hashlib.sha256(row["text"].encode("utf-8")).hexdigest()
+ assert "REJECTED_SENTINEL" not in row["text"]
+ record = copy.deepcopy(RECORD)
+ record.update({"curation_history": [{"notes": "PRIVATE_PROVENANCE_SENTINEL"}],
+ "references": [{"reference": "PMID:999999"}],
+ "evidence": [{"snippet": "PRIVATE_PROVENANCE_SENTINEL"}],
+ "notes": "PRIVATE_PROVENANCE_SENTINEL"})
+ path.write_text(yaml.safe_dump(record))
+ unchanged = next(adapter.iter_inputs(tmp_path, records=[SOURCE]))
+ assert unchanged["text_sha256"] == row["text_sha256"]
+ assert "PRIVATE_PROVENANCE_SENTINEL" not in unchanged["text"]
+ record[LABEL_FIELD] = "A different biological entity"
+ path.write_text(yaml.safe_dump(record))
+ changed = next(adapter.iter_inputs(tmp_path, records=[SOURCE]))
+ assert changed["text_sha256"] != row["text_sha256"]
+
+
+def test_canary_and_full_keep_identical_semantics(tmp_path):
+ fixture_tree(tmp_path)
+ full = list(adapter.iter_inputs(tmp_path))
+ subset = list(adapter.iter_inputs(tmp_path, records=[SOURCE]))
+ assert subset[0] == next(row for row in full if row["source_path"] == SOURCE)
+ if adapter.ADAPTER_VERSION.startswith("traitmech-"):
+ assert "Resolved parent" in subset[0]["text"]
+ assert "METPO:parent" not in subset[0]["text"]
+ result = adapter.export_inputs(tmp_path, tmp_path / "records.jsonl", limit=1)
+ assert result["records"] == 1 and result["scope"] == "subset"
+ result = adapter.export_inputs(tmp_path, None)
+ assert result["records"] == len(full) and result["scope"] == "full"
+
+
+def test_atomic_failure_preserves_previous_output(tmp_path):
+ path = fixture_tree(tmp_path)
+ output = tmp_path / "records.jsonl"
+ output.write_text("previous output")
+ broken = path.with_name("zz_broken.yaml")
+ broken.write_text("not: [valid YAML")
+ with pytest.raises(yaml.YAMLError):
+ adapter.export_inputs(tmp_path, output)
+ assert output.read_text() == "previous output"
+ assert not list(tmp_path.glob(".text-map-*"))
+
+
+def test_selection_cannot_escape_or_repeat(tmp_path):
+ fixture_tree(tmp_path)
+ for selection in (["../outside.yaml"], [SOURCE, SOURCE]):
+ with pytest.raises(ValueError):
+ list(adapter.iter_inputs(tmp_path, records=selection))
+ with pytest.raises(ValueError, match="positive"):
+ list(adapter.iter_inputs(tmp_path, limit=0))
+
+
+def test_symlinked_yaml_is_refused(tmp_path):
+ path = fixture_tree(tmp_path)
+ alias = path.with_name("alias.yaml")
+ alias.symlink_to(path)
+ with pytest.raises(ValueError, match="symlink"):
+ list(adapter.iter_inputs(tmp_path))
+
+
+
+def test_export_round_trip_and_map_sibling_route(tmp_path):
+ from urllib.parse import urljoin
+
+ fixture_tree(tmp_path)
+ output = tmp_path / "output.jsonl"
+ receipt = adapter.export_inputs(tmp_path, output, records=[SOURCE])
+ row = json.loads(output.read_text())
+ assert receipt["jsonl_sha256"] == hashlib.sha256(output.read_bytes()).hexdigest()
+ assert Path(row["source_path"]).suffix == ".yaml"
+ assert urljoin("https://example.test/deployment/text-map/index.html", "../" + row["page"]) == "https://example.test/deployment/" + PAGE
From e59c6a32ac92b5a9f907f307776d879b0566fa64 Mon Sep 17 00:00:00 2001
From: "marcin p. joachimiak" <4625870+realmarcin@users.noreply.github.com>
Date: Mon, 14 Sep 2026 18:52:52 -0700
Subject: [PATCH 03/11] feat: add verified BGE map and source-bound graph
generation
---
conf/text_map.yaml | 2 +
data/text_map/current.json | 1 +
.../index.html | 41 ++
.../manifest.json | 1 +
.../points.json | 1 +
docs/GRAPH_PROVENANCE.md | 24 +
justfile | 2 +-
scripts/build_embedding_index.py | 591 +++++++++------
scripts/embedding_pipeline.py | 685 ++++++++++++++++++
scripts/render_trait_pages.py | 43 +-
scripts/sfdp_layout.py | 58 +-
src/traitmech/graph_embedding_receipts.py | 497 +++++++++++++
src/traitmech/templates/index.html | 7 +
src/traitmech/text_map_site.py | 90 +++
tests/test_graph_projection_correctness.py | 44 +-
tests/test_graph_receipt_proxies.py | 48 ++
tests/test_graph_receipt_publication.py | 78 ++
tests/test_graph_sfdp_receipt.py | 24 +
tests/test_text_map_recipe.py | 43 ++
tests/test_text_map_site.py | 206 ++++++
20 files changed, 2217 insertions(+), 269 deletions(-)
create mode 100644 conf/text_map.yaml
create mode 100644 data/text_map/current.json
create mode 100644 data/text_map/d35a09079951043ef34efe99ffbb19a269377143e2bb50750942d2c24199a242/index.html
create mode 100644 data/text_map/d35a09079951043ef34efe99ffbb19a269377143e2bb50750942d2c24199a242/manifest.json
create mode 100644 data/text_map/d35a09079951043ef34efe99ffbb19a269377143e2bb50750942d2c24199a242/points.json
create mode 100644 docs/GRAPH_PROVENANCE.md
create mode 100644 scripts/embedding_pipeline.py
create mode 100644 src/traitmech/graph_embedding_receipts.py
create mode 100644 src/traitmech/text_map_site.py
create mode 100644 tests/test_graph_receipt_proxies.py
create mode 100644 tests/test_graph_receipt_publication.py
create mode 100644 tests/test_graph_sfdp_receipt.py
create mode 100644 tests/test_text_map_recipe.py
create mode 100644 tests/test_text_map_site.py
diff --git a/conf/text_map.yaml b/conf/text_map.yaml
new file mode 100644
index 0000000000..6038da6fd3
--- /dev/null
+++ b/conf/text_map.yaml
@@ -0,0 +1,2 @@
+# Shared BGE/PaCMAP map, checked against all current trait YAML.
+enabled: true
diff --git a/data/text_map/current.json b/data/text_map/current.json
new file mode 100644
index 0000000000..a38428d135
--- /dev/null
+++ b/data/text_map/current.json
@@ -0,0 +1 @@
+{"bundle":"d35a09079951043ef34efe99ffbb19a269377143e2bb50750942d2c24199a242","manifest_sha256":"bb0739839147f116bb97c890948d8c5055bf3703fbec11478dba06fadeba406d"}
diff --git a/data/text_map/d35a09079951043ef34efe99ffbb19a269377143e2bb50750942d2c24199a242/index.html b/data/text_map/d35a09079951043ef34efe99ffbb19a269377143e2bb50750942d2c24199a242/index.html
new file mode 100644
index 0000000000..5645e997fb
--- /dev/null
+++ b/data/text_map/d35a09079951043ef34efe99ffbb19a269377143e2bb50750942d2c24199a242/index.html
@@ -0,0 +1,41 @@
+
+
+traitmech semantic text map
+
+traitmech semantic text map Showing 590 of 590 input records.
+PaCMAP positions summarize similarity between record descriptions.
+Find a record
+Select a point to open its record.
+
+
+Map provenance and coverage
+
+
\ No newline at end of file
diff --git a/data/text_map/d35a09079951043ef34efe99ffbb19a269377143e2bb50750942d2c24199a242/manifest.json b/data/text_map/d35a09079951043ef34efe99ffbb19a269377143e2bb50750942d2c24199a242/manifest.json
new file mode 100644
index 0000000000..74888b9bd1
--- /dev/null
+++ b/data/text_map/d35a09079951043ef34efe99ffbb19a269377143e2bb50750942d2c24199a242/manifest.json
@@ -0,0 +1 @@
+{"coverage":{"displayed":590,"eligible":590,"maximum":50000,"omitted":0,"selection":"bottom-k-sha256(seed,identifier)","total":590},"encoder":{"dimension":1024,"dtype":"float32-le","format_version":1,"inference_device":"mps:0","library_versions":{"numpy":"2.3.5","sentence-transformers":"6.0.0","tokenizers":"0.23.2","torch":"2.14.0","transformers":"5.17.0"},"max_seq_length":512,"model":"BAAI/bge-large-en-v1.5","normalized":true,"pooling":"sentence-transformers-model","query_instruction":null,"revision":"d4aa6901d3a41ba39fb536a557fa166f842b0e09","truncation":"tail","weight_dtype":"torch.float32"},"encoder_profile_sha256":"3346a4c533aeac55dfcf54b6c4f3fb74e22f3ad4682c53f5215b539ac5ba0627","files":{"index.html":"cc39e898d76348fcb45432f38af1e628b23d918318e2c2ac4d287440977aa80f","points.json":"ddd42678d174e91aba8238d3446ecd914f571c389f38bd0a0888f9da84e3be62"},"format_version":1,"generated_at_utc":"2026-09-15T01:16:29.770509+00:00","inputs":{"adapter_version":"traitmech-semantic-v1","categories":{"ECOLOGY":26,"ENVIRONMENT":122,"GENOMICS":19,"METABOLISM":171,"MORPHOLOGY":95,"OBSERVATION":20,"OTHER":32,"PHYSIOLOGY":90,"QUANTITATIVE_PROPERTY":7,"UPPER":8},"corpus_sha256":"fcd15dd6bde48894c25e6b0694225fa0b5a1f4f8569e57f94913e4568d142a61","count":590,"input_sha256":"1552fb7c36265dd8f2f3bde9dd8d8eb73931eb85189375407d701097f14a8a8b","records_sha256":"763c77ddd5958988087dba9e9f8f6c0509897e8fc1c56efd09fde8bd639e3a64"},"projection":{"FP_ratio":2.0,"MN_ratio":0.5,"apply_pca":true,"dimensions":2,"distance":"euclidean","effective_pairs":{"further":30,"mid_near":8,"neighbors":15},"implementation":"pacmap.PaCMAP","initialization":"pca","iterations":[100,100,250],"knn_backend":"faiss","learning_rate":1.0,"library_versions":{"faiss-cpu":"1.15.0","numba":"0.63.1","numpy":"2.3.5","pacmap":"0.9.1","scikit-learn":"1.8.0"},"method":"pacmap","neighbors":15,"requested_neighbors":15,"seed":42},"representation":"semantic-text","source_vectors":{"dtype":"float32-le","order":"points.json","sha256":"9ebc3cef3947180dae66abeab53095f85eb512775d9ac685b5d00d2b89abb93d","shape":[590,1024],"storage":"local-profile-bound-cache"}}
diff --git a/data/text_map/d35a09079951043ef34efe99ffbb19a269377143e2bb50750942d2c24199a242/points.json b/data/text_map/d35a09079951043ef34efe99ffbb19a269377143e2bb50750942d2c24199a242/points.json
new file mode 100644
index 0000000000..8805cb21ef
--- /dev/null
+++ b/data/text_map/d35a09079951043ef34efe99ffbb19a269377143e2bb50750942d2c24199a242/points.json
@@ -0,0 +1 @@
+[{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000444","label":"temperature optimum mid2","page":"traits/environment/temperature_optimum_mid2.html","source_path":"data/traits/environment/temperature_optimum_mid2.yaml","text_sha256":"f2800eba460d7688fbe77261736ee72a68c03f8e7d91948d7955ee0ffc0938a9","x":-14.218796730041504,"y":-5.111743927001953},{"adapter_version":"traitmech-semantic-v1","category":"OBSERVATION","identifier":"METPO:1001018","label":"oxygen range observation","page":"traits/observation/oxygen_range_observation.html","source_path":"data/traits/observation/oxygen_range_observation.yaml","text_sha256":"62efbd155796c741fb801cf8d87d595e8815266ae525ef6adc108c6a1b49fd6b","x":-2.392249822616577,"y":-19.834503173828125},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000050","label":"uses for anaerobic growth in the dark","page":"traits/metabolism/uses_for_anaerobic_growth_in_the_dark.html","source_path":"data/traits/metabolism/uses_for_anaerobic_growth_in_the_dark.yaml","text_sha256":"70c01be6334956048e653f4087cb36fdba3c3a23cd646cb7b0cbb39ad77f889f","x":10.997217178344727,"y":-6.403480529785156},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:1005001","label":"nitrification","page":"traits/metabolism/nitrification.html","source_path":"data/traits/metabolism/nitrification.yaml","text_sha256":"df82a6fe1db9cdda08ee7fe5203d127a74b8ac447c9b0acd38700be947466637","x":5.647894859313965,"y":-5.608119010925293},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"traitmech:000142","label":"acid phosphatase activity","page":"traits/physiology/acid_phosphatase_activity.html","source_path":"data/traits/physiology/acid_phosphatase_activity.yaml","text_sha256":"b1b7ff7da74350e1c237bc2a746acc857e38ef520180deb9e7b8ab69d5d17d2a","x":7.772754669189453,"y":9.27340316772461},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000335","label":"NaCl delta","page":"traits/environment/nacl_delta.html","source_path":"data/traits/environment/nacl_delta.yaml","text_sha256":"77a0224dfb8eaba22260c9bc2c2578aa0d36973796982b03497d89d41a60a1ff","x":-15.371702194213867,"y":-3.432041645050049},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1000674","label":"filament shaped","page":"traits/morphology/filament_shaped.html","source_path":"data/traits/morphology/filament_shaped.yaml","text_sha256":"fc872ff744a52039ff9e6939a8df0a8a87a1ad2f0fae1ce0af577b998e5d87ba","x":-3.9137072563171387,"y":11.064099311828613},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000055","label":"has range temperature observation","page":"traits/metabolism/has_range_temperature_observation.html","source_path":"data/traits/metabolism/has_range_temperature_observation.yaml","text_sha256":"24c4dcfcbcdd64570040058e8d19181d017cea710a590bb9f46f24d2bf86c22b","x":-1.8775193691253662,"y":-19.922203063964844},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000515","label":"has range oxygen observation","page":"traits/metabolism/has_range_oxygen_observation.html","source_path":"data/traits/metabolism/has_range_oxygen_observation.yaml","text_sha256":"13ebb1a9b7278feb60558cd19b4d4c4360561a031bec0836b145d6bfe658ced0","x":-1.925081491470337,"y":-20.08735466003418},{"adapter_version":"traitmech-semantic-v1","category":"OTHER","identifier":"METPO:1007090","label":"coagulase positive","page":"traits/other/coagulase_positive.html","source_path":"data/traits/other/coagulase_positive.yaml","text_sha256":"533363952bd1595319cbae561c933c495d2faf1cc0fe68d09217634a8dc81abb","x":5.199120998382568,"y":9.162338256835938},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"traitmech:000116","label":"proteolysis","page":"traits/metabolism/proteolysis.html","source_path":"data/traits/metabolism/proteolysis.yaml","text_sha256":"cb6078a831f3639f618076bb423851b6f80acbffa50d19a0d384e6efc68a6182","x":8.116031646728516,"y":-4.2350754737854},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"METPO:1000658","label":"photolithotrophic","page":"traits/physiology/photolithotrophic.html","source_path":"data/traits/physiology/photolithotrophic.yaml","text_sha256":"9b9bf75f0e5b0c4c3ba30568355dc4f4e25efdca0caa2676206d8f4795dd7152","x":2.6788132190704346,"y":-4.819665431976318},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000210","label":"accumulates","page":"traits/metabolism/accumulates.html","source_path":"data/traits/metabolism/accumulates.yaml","text_sha256":"4a77533fde07aa8ba6fe87f6af517e58c2fd6ae351a5b589ddf5aa6600bd78b9","x":10.166918754577637,"y":-4.220099925994873},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"traitmech:000064","label":"S-layer","page":"traits/morphology/s_layer.html","source_path":"data/traits/morphology/s_layer.yaml","text_sha256":"cc60e786158d24227f7ba2b1576ae0fbd6f9c141a0560ad4f6717d6f056d1ee0","x":0.39744073152542114,"y":9.687511444091797},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000628","label":"extremely halophilic","page":"traits/environment/extremely_halophilic.html","source_path":"data/traits/environment/extremely_halophilic.yaml","text_sha256":"e5d62968195f5d3781ab6bebf991c33463eea043eb1000b0d9a29c2e8ba1c847","x":-13.393363952636719,"y":-2.4405696392059326},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"METPO:1000637","label":"chemolithoautotrophic","page":"traits/physiology/chemolithoautotrophic.html","source_path":"data/traits/physiology/chemolithoautotrophic.yaml","text_sha256":"a19865286cc580ccf38b820ed979fc75af073e0dd7f611de8554adc83c42d845","x":2.524416923522949,"y":-4.657318115234375},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000619","label":"thermotolerant","page":"traits/environment/thermotolerant.html","source_path":"data/traits/environment/thermotolerant.yaml","text_sha256":"c365b5b34015146909c1f7e35bed27a7c59bfcbfc2c446998f8a1cb8b2e91909","x":-12.495304107666016,"y":-3.4583404064178467},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"traitmech:000163","label":"pyrazinamidase activity","page":"traits/physiology/pyrazinamidase_activity.html","source_path":"data/traits/physiology/pyrazinamidase_activity.yaml","text_sha256":"f318c542cb41d365b96c4773874345f5b2fe082e4780d6c5237487f8bf39237e","x":8.477924346923828,"y":9.386983871459961},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"traitmech:000108","label":"dissimilatory manganese reduction","page":"traits/metabolism/dissimilatory_manganese_reduction.html","source_path":"data/traits/metabolism/dissimilatory_manganese_reduction.yaml","text_sha256":"496311af5ec417131cbe984d3a7615100e9cea7db4f8dd19e7528bd3351252a4","x":6.421833515167236,"y":-5.623813152313232},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"traitmech:000059","label":"amphitrichous","page":"traits/morphology/amphitrichous.html","source_path":"data/traits/morphology/amphitrichous.yaml","text_sha256":"5f73c9ea19204ad815c72adb669bdae46eb737dd58617560ae4597648b22fbe6","x":0.30537623167037964,"y":11.736774444580078},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1005021","label":"capnophilic","page":"traits/environment/capnophilic.html","source_path":"data/traits/environment/capnophilic.yaml","text_sha256":"1693860588a214290ce2111f31cddde8d16e09899c622ccf229bc02698dc0930","x":-12.505435943603516,"y":-3.770031452178955},{"adapter_version":"traitmech-semantic-v1","category":"ECOLOGY","identifier":"traitmech:000041","label":"mutualism","page":"traits/ecology/mutualism.html","source_path":"data/traits/ecology/mutualism.yaml","text_sha256":"110fd4c9783212881532e55519cba95a2b8f6e0bb6eb6903a4a46b98c8711ec6","x":1.647261619567871,"y":7.260867595672607},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000101","label":"has quality","page":"traits/metabolism/has_quality.html","source_path":"data/traits/metabolism/has_quality.yaml","text_sha256":"28b3599215368e6ef7e6252158900983d0866a6d7c5e7b4a305b550f779ddaf6","x":-2.4302916526794434,"y":-19.325626373291016},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000501","label":"has optimum pH observation","page":"traits/metabolism/has_optimum_ph_observation.html","source_path":"data/traits/metabolism/has_optimum_ph_observation.yaml","text_sha256":"87379c029c4e7835442f95d7d4bd7a3467804d0392cbe4a596746741f1e7230f","x":-1.887586236000061,"y":-20.199106216430664},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1003029","label":"white pigmented","page":"traits/morphology/white_pigmented.html","source_path":"data/traits/morphology/white_pigmented.yaml","text_sha256":"5390a6f438cd962194b55e25fbf91da0ba16cff115663b62b9451bf057d7e52e","x":2.7706449031829834,"y":9.855071067810059},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"traitmech:000129","label":"aromatic hydrocarbon degradation","page":"traits/metabolism/aromatic_hydrocarbon_degradation.html","source_path":"data/traits/metabolism/aromatic_hydrocarbon_degradation.yaml","text_sha256":"c0494ffd0417113b3c3d0fa8f34030ef6d229fef8c84d55b10a99d1c1a1c5a02","x":8.001434326171875,"y":-4.349959850311279},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"traitmech:000125","label":"sulfur respiration","page":"traits/metabolism/sulfur_respiration.html","source_path":"data/traits/metabolism/sulfur_respiration.yaml","text_sha256":"2d2a575e87662c35adab9bb8b4336c3f70b179c866b94dfe87d5537861386964","x":6.798122882843018,"y":-5.783524990081787},{"adapter_version":"traitmech-semantic-v1","category":"UPPER","identifier":"METPO:1000630","label":"biological process","page":"traits/upper/biological_process.html","source_path":"data/traits/upper/biological_process.yaml","text_sha256":"a434d0408394c184498c5ccad7968a4f389fb4bc5a0337f7d4b9e59246902f62","x":1.0874605178833008,"y":8.847125053405762},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1000671","label":"diplococcus shaped","page":"traits/morphology/diplococcus_shaped.html","source_path":"data/traits/morphology/diplococcus_shaped.yaml","text_sha256":"3f4b2c8924784789624dfd3ec2af287c587f2208e07d6b7737975c4187130370","x":-4.2335710525512695,"y":11.148963928222656},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"traitmech:000136","label":"gelatinase activity","page":"traits/physiology/gelatinase_activity.html","source_path":"data/traits/physiology/gelatinase_activity.yaml","text_sha256":"dd9b345a27960d2dc5b402b161e046577ffc315353f9c1e783f09474f6aa586b","x":7.8259477615356445,"y":9.306316375732422},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"traitmech:000007","label":"radiotolerant","page":"traits/environment/radiotolerant.html","source_path":"data/traits/environment/radiotolerant.yaml","text_sha256":"0c61040247bffe4b3eb7e4b80dfcc9bcc65babc0045783d535cc7b4268cd6823","x":-12.222738265991211,"y":-2.7506728172302246},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"traitmech:000150","label":"alpha-mannosidase activity","page":"traits/physiology/alpha_mannosidase_activity.html","source_path":"data/traits/physiology/alpha_mannosidase_activity.yaml","text_sha256":"3be098fe55e970c92288eda0f476e345be55dc87d9e1367b8fc5c26072d74894","x":7.991097450256348,"y":9.291299819946289},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000212","label":"compartmentalizes","page":"traits/metabolism/compartmentalizes.html","source_path":"data/traits/metabolism/compartmentalizes.yaml","text_sha256":"6c1aea57e12f2f4386d2a87dc77cd60ae5887682259356b3453d0e3c9a8090ce","x":10.423632621765137,"y":-3.9677512645721436},{"adapter_version":"traitmech-semantic-v1","category":"UPPER","identifier":"METPO:1000526","label":"chemical entity","page":"traits/upper/chemical_entity.html","source_path":"data/traits/upper/chemical_entity.yaml","text_sha256":"f679103bf6600d9fe89879ecb26563206056503cd474c4992412fd1daa0fcf46","x":10.172170639038086,"y":-4.291842460632324},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"traitmech:000062","label":"swarming motility","page":"traits/morphology/swarming_motility.html","source_path":"data/traits/morphology/swarming_motility.yaml","text_sha256":"57a7b9d60fc61bfad4794a82a95ab9c2bdfaab055748e072dd71f24c4eab3b06","x":1.2035106420516968,"y":11.549501419067383},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000231","label":"does not sequester","page":"traits/metabolism/does_not_sequester.html","source_path":"data/traits/metabolism/does_not_sequester.yaml","text_sha256":"56af7bea337330727d01541f51afba72a7ba9ccd27a0bccead6952a75981a55d","x":11.681803703308105,"y":-4.1914753913879395},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1000696","label":"triangular shaped","page":"traits/morphology/triangular_shaped.html","source_path":"data/traits/morphology/triangular_shaped.yaml","text_sha256":"c3f4b753337df665f17e4b72c013d9786ea0cda932a2165a6aece609ba617d37","x":-4.226372241973877,"y":11.164400100708008},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"traitmech:000170","label":"glycine arylamidase activity","page":"traits/physiology/glycine_arylamidase_activity.html","source_path":"data/traits/physiology/glycine_arylamidase_activity.yaml","text_sha256":"b647233da28153b7ee572165cb87898ae74270780cb6e3b3eb2609e2d2739fbc","x":9.44092082977295,"y":9.539861679077148},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"traitmech:000148","label":"beta-galactosidase activity","page":"traits/physiology/beta_galactosidase_activity.html","source_path":"data/traits/physiology/beta_galactosidase_activity.yaml","text_sha256":"8283c99caa441d3cec7e7e6826750b3987419b3094ee6b58fbcb74a20e68f0e4","x":7.89566707611084,"y":9.285658836364746},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"traitmech:000161","label":"alanine arylamidase activity","page":"traits/physiology/alanine_arylamidase_activity.html","source_path":"data/traits/physiology/alanine_arylamidase_activity.yaml","text_sha256":"f9383df859b7c24e33abe93cb09d156980e4a3b7980f7c8fb1ae2c9cff10983f","x":9.411160469055176,"y":9.53816032409668},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000227","label":"does not transport","page":"traits/metabolism/does_not_transport.html","source_path":"data/traits/metabolism/does_not_transport.yaml","text_sha256":"65f30793555f54a2c3d6327b410f94cd167d81549ededb5b6af93d3af457090e","x":11.508874893188477,"y":-4.263691425323486},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"traitmech:000186","label":"siderophore production","page":"traits/physiology/siderophore_production.html","source_path":"data/traits/physiology/siderophore_production.yaml","text_sha256":"c1788766fa4847214f79ea628623a1979d6bdc06dc334f76898ddaf7f51cb895","x":1.2844479084014893,"y":9.342395782470703},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1000669","label":"crescent shaped","page":"traits/morphology/crescent_shaped.html","source_path":"data/traits/morphology/crescent_shaped.yaml","text_sha256":"a862131a414621d8f93338316c5ef4b33b70ca66c2ab928f8de30ff05889b42f","x":-4.24243688583374,"y":11.164412498474121},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000239","label":"has pH observation","page":"traits/metabolism/has_ph_observation.html","source_path":"data/traits/metabolism/has_ph_observation.yaml","text_sha256":"ec408e5b985fd5f9f83d9dccc972fe0d6c1e7c7e8f2fa2c77d7c9bec93daa6f7","x":-1.8796250820159912,"y":-20.161392211914062},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"traitmech:000139","label":"lipase activity","page":"traits/physiology/lipase_activity.html","source_path":"data/traits/physiology/lipase_activity.yaml","text_sha256":"d425ce1bb2a85993f68be1de37aea6ad288d9afdbb0c7eeebcc18af6f21bc498","x":7.876404762268066,"y":9.295344352722168},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000044","label":"does not reduce","page":"traits/metabolism/does_not_reduce.html","source_path":"data/traits/metabolism/does_not_reduce.yaml","text_sha256":"cb53c8ed0d5990f416cd0539085189db8f86a8ec3a67122cf8901d3f32b3b693","x":11.706575393676758,"y":-4.31511926651001},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"traitmech:000159","label":"alpha-chymotrypsin activity","page":"traits/physiology/alpha_chymotrypsin_activity.html","source_path":"data/traits/physiology/alpha_chymotrypsin_activity.yaml","text_sha256":"89d7a8bc0c52c633148a3eac7897b8fc5603c87202cb5115eb0c2933adb2fc77","x":8.1290922164917,"y":9.340682029724121},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:1002006","label":"Syntrophy","page":"traits/metabolism/syntrophy.html","source_path":"data/traits/metabolism/syntrophy.yaml","text_sha256":"3621d2b627a9c7c4db0f6ce4e3cb955715c76f2229358436c6c67cc76a3d9b44","x":5.049654960632324,"y":-4.499991416931152},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000511","label":"has observation","page":"traits/metabolism/has_observation.html","source_path":"data/traits/metabolism/has_observation.yaml","text_sha256":"7047ddd04b502a7a59d1f79d52c2148ae93f13274635ecf34c072430c43968ab","x":-2.269596815109253,"y":-19.75255584716797},{"adapter_version":"traitmech-semantic-v1","category":"OBSERVATION","identifier":"METPO:1001004","label":"temperature delta observation","page":"traits/observation/temperature_delta_observation.html","source_path":"data/traits/observation/temperature_delta_observation.yaml","text_sha256":"8cefc9d6fdf77d2f5f84d0835bc3d1fc25f0fd03a54922d6c34e3d5d191873dc","x":-2.8476529121398926,"y":-19.660730361938477},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"traitmech:000153","label":"lysine decarboxylase activity","page":"traits/physiology/lysine_decarboxylase_activity.html","source_path":"data/traits/physiology/lysine_decarboxylase_activity.yaml","text_sha256":"de1b8e244d8103a883098afd700e1862330449c05f057aa639e5accb4ef3c93f","x":8.186800956726074,"y":9.353580474853516},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1000889","label":"cell width medium","page":"traits/morphology/cell_width_medium.html","source_path":"data/traits/morphology/cell_width_medium.yaml","text_sha256":"7576911b3417a21eef3758c4367fd98bb7037c62e594823278b55dd0fed598b0","x":-1.6253410577774048,"y":8.325114250183105},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1003004","label":"obligately alkaliphilic","page":"traits/environment/obligately_alkaphilic.html","source_path":"data/traits/environment/obligately_alkaphilic.yaml","text_sha256":"774bebc8be43a436c4f919971316077882567ea3477025b1cca2849ff86857c9","x":-12.647007942199707,"y":-3.6951744556427},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1003022","label":"black pigmented","page":"traits/morphology/black_pigmented.html","source_path":"data/traits/morphology/black_pigmented.yaml","text_sha256":"2ffaf74e055f7eb1a27069e399ad7c6e06024700d2189d861b0c1a3c5543bd0b","x":2.612718343734741,"y":9.816436767578125},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1003025","label":"green pigmented","page":"traits/morphology/green_pigmented.html","source_path":"data/traits/morphology/green_pigmented.yaml","text_sha256":"11d85555797ebfb7daabe875725761dd2c67c447570588a2283f054e765fbcdc","x":2.7121424674987793,"y":9.756269454956055},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000464","label":"pH range high","page":"traits/environment/ph_range_high.html","source_path":"data/traits/environment/ph_range_high.yaml","text_sha256":"1ae3bde3e181bcd2fe32c2c8f0626e4a95c847b38cda9455c12355790e0f4593","x":-14.610372543334961,"y":-4.019085884094238},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000471","label":"NaCl range mid2","page":"traits/environment/nacl_range_mid2.html","source_path":"data/traits/environment/nacl_range_mid2.yaml","text_sha256":"f20bdc15f862c0dc0cb7ab21783771dc85e654d477476528c4a72a2fbc5846dd","x":-15.243663787841797,"y":-3.543192148208618},{"adapter_version":"traitmech-semantic-v1","category":"OTHER","identifier":"METPO:1005011","label":"indole test positive","page":"traits/other/indole_test_positive.html","source_path":"data/traits/other/indole_test_positive.yaml","text_sha256":"2c1e560b5ebf5659a9675aaea8e5314b4b8cda405673d33cc907c14178a1142d","x":4.4590253829956055,"y":9.121193885803223},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1000890","label":"cell width large","page":"traits/morphology/cell_width_large.html","source_path":"data/traits/morphology/cell_width_large.yaml","text_sha256":"c738568a2e8b0fdc5adfff8b37f45b49da60e232f5e5a5d4f8fcadb9f02cae87","x":-1.5208282470703125,"y":8.261846542358398},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000476","label":"pH delta mid2","page":"traits/environment/ph_delta_mid2.html","source_path":"data/traits/environment/ph_delta_mid2.yaml","text_sha256":"5d8b4cda22b584990a1b8f677ecedd4ab172bb9670a7919be2993afe44babf5b","x":-15.320324897766113,"y":-4.244050979614258},{"adapter_version":"traitmech-semantic-v1","category":"ECOLOGY","identifier":"traitmech:000052","label":"gut-associated","page":"traits/ecology/gut_associated.html","source_path":"data/traits/ecology/gut_associated.yaml","text_sha256":"720efcf931f274140e2b80402727032f5c92e6362492dfaa7bb6ba54005b1d68","x":1.5848740339279175,"y":7.418646812438965},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000451","label":"temperature range mid2","page":"traits/environment/temperature_range_mid2.html","source_path":"data/traits/environment/temperature_range_mid2.yaml","text_sha256":"7831357bc46d7188abf2ad9c7c82a9015b2b5bc8196ef0f2920e76ee143010ff","x":-14.49859619140625,"y":-5.240829944610596},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"traitmech:000060","label":"peritrichous","page":"traits/morphology/peritrichous.html","source_path":"data/traits/morphology/peritrichous.yaml","text_sha256":"2a76dbfd3cb521baaf1fcce4fa22c8a88ce08dcf9bac94ca127d4221acf121b6","x":0.33794569969177246,"y":11.606746673583984},{"adapter_version":"traitmech-semantic-v1","category":"OBSERVATION","identifier":"METPO:1001003","label":"temperature range observation","page":"traits/observation/temperature_range_observation.html","source_path":"data/traits/observation/temperature_range_observation.yaml","text_sha256":"98a01c87ca681a78172e02e28b56c347da50a4c5db6f8593fc6c0cdf3ee8f9ac","x":-2.463101863861084,"y":-19.69754409790039},{"adapter_version":"traitmech-semantic-v1","category":"OTHER","identifier":"METPO:1007093","label":"epibiont phenotype","page":"traits/other/epibiont_phenotype.html","source_path":"data/traits/other/epibiont_phenotype.yaml","text_sha256":"ff42951c66578106ef6e84e6a9c07f688a31f8d677057b404121ee0fe6d4320a","x":1.2068703174591064,"y":7.958890438079834},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"traitmech:000134","label":"nitrate reduction","page":"traits/metabolism/nitrate_reduction.html","source_path":"data/traits/metabolism/nitrate_reduction.yaml","text_sha256":"50e7aaf4d6778390e3444546891b075202467b692408bd837e4ee46e6f612fd9","x":5.9398603439331055,"y":-5.581991672515869},{"adapter_version":"traitmech-semantic-v1","category":"OTHER","identifier":"METPO:1005027","label":"non-hemolytic","page":"traits/other/non_hemolytic.html","source_path":"data/traits/other/non_hemolytic.yaml","text_sha256":"f79ee216a6f693d68779a649371b2fbc4efa5cccf38297d1a069dc169f5c92d8","x":1.1537774801254272,"y":9.678910255432129},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1000888","label":"cell width small","page":"traits/morphology/cell_width_small.html","source_path":"data/traits/morphology/cell_width_small.yaml","text_sha256":"363d0495c5ce6f88233cc8f72d57fdc0a301cf8fcdc5248b8c37fe5a65d4b20b","x":-1.5442185401916504,"y":8.331839561462402},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"traitmech:000037","label":"phototrophy","page":"traits/metabolism/phototrophy.html","source_path":"data/traits/metabolism/phototrophy.yaml","text_sha256":"2e988f55de39e7cd7942471d28853d8908b5c88720f672ed94e463fbec04293a","x":3.836395263671875,"y":-5.097590923309326},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1000871","label":"spore forming","page":"traits/morphology/spore_forming.html","source_path":"data/traits/morphology/spore_forming.yaml","text_sha256":"f6fe886e98d42ed87553dcf2a63c5ba455147fe69fdf1afedb8d67df544bf52b","x":0.34508800506591797,"y":9.803512573242188},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"traitmech:000192","label":"methyl-based methanogenesis","page":"traits/metabolism/methyl_based_methanogenesis.html","source_path":"data/traits/metabolism/methyl_based_methanogenesis.yaml","text_sha256":"e322c5447e8316d05c17e3204e8ade6046dc2e09547da5e82f77a404842f82de","x":5.141814708709717,"y":-4.344141960144043},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"traitmech:000011","label":"xerophilic","page":"traits/environment/xerophilic.html","source_path":"data/traits/environment/xerophilic.yaml","text_sha256":"e97a856c79e705ece75bab5740497ea9e187b991eccfe68dfea55e6afe3a910c","x":-12.666606903076172,"y":-3.4199204444885254},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1000695","label":"tailed shaped","page":"traits/morphology/tailed_shaped.html","source_path":"data/traits/morphology/tailed_shaped.yaml","text_sha256":"6576afcfcc408cc1bdeab71c0cfc6a327b7d82e5ce2a991be0371fa18f3cedd9","x":-4.212811470031738,"y":11.172355651855469},{"adapter_version":"traitmech-semantic-v1","category":"OBSERVATION","identifier":"METPO:1001013","label":"optimum pH observation","page":"traits/observation/optimum_ph_observation.html","source_path":"data/traits/observation/optimum_ph_observation.yaml","text_sha256":"63f198c12d8399201650af5ebb0cc389be6cf020b5332f3f0f5aa0c8c2c77796","x":-2.8270435333251953,"y":-19.603904724121094},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"traitmech:000015","label":"cobalt tolerant","page":"traits/environment/cobalt_tolerant.html","source_path":"data/traits/environment/cobalt_tolerant.yaml","text_sha256":"a0cc521a1804998fe65638b1a8983217a9dbf7995c9c8a11c1be89dc35d557e9","x":-11.94519329071045,"y":-2.1945042610168457},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000023","label":"does not use for anaerobic catabolization","page":"traits/metabolism/does_not_use_for_anaerobic_catabolization.html","source_path":"data/traits/metabolism/does_not_use_for_anaerobic_catabolization.yaml","text_sha256":"926c7f070436e0e66b4bd6842589c654553e9193f678460841f3ab777e3ff699","x":11.34257984161377,"y":-5.964773178100586},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"traitmech:000152","label":"alpha-fucosidase activity","page":"traits/physiology/alpha_fucosidase_activity.html","source_path":"data/traits/physiology/alpha_fucosidase_activity.yaml","text_sha256":"5f07d259587cfb9d6e1cee7bd398c430839299a97d2f29b3a3acc9e6f0dc4ea4","x":7.862452030181885,"y":9.28675651550293},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"traitmech:000030","label":"dissimilatory nitrate reduction to ammonium","page":"traits/metabolism/dissimilatory_nitrate_reduction_to_ammonium.html","source_path":"data/traits/metabolism/dissimilatory_nitrate_reduction_to_ammonium.yaml","text_sha256":"91cd52119803d18ebadf1123e5272c1ef1e5ab6a3de673cefc18ebe7238f44dd","x":6.123510837554932,"y":-5.648997783660889},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000622","label":"halotolerant","page":"traits/environment/halotolerant.html","source_path":"data/traits/environment/halotolerant.yaml","text_sha256":"0f447a7492d403a63c73f6707af575424ac77a377888fc062af04d6373836419","x":-13.042109489440918,"y":-2.475268840789795},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1003027","label":"pink pigmented","page":"traits/morphology/pink_pigmented.html","source_path":"data/traits/morphology/pink_pigmented.yaml","text_sha256":"9e4fa1478f607f2a46c6152f547a5c9553035547e6106280d27467976ecf0e47","x":2.7023379802703857,"y":9.836957931518555},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1000870","label":"sporulation","page":"traits/morphology/sporulation.html","source_path":"data/traits/morphology/sporulation.yaml","text_sha256":"0b46dd5d42e0ddd80b9521576434bc6afa0654d5ec1c8a68e05195d16e96829e","x":0.5793089270591736,"y":9.701873779296875},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000304","label":"temperature optimum","page":"traits/environment/temperature_optimum.html","source_path":"data/traits/environment/temperature_optimum.yaml","text_sha256":"82bfc4f7cba9ed92f5595d202f534373743d7c774330c11e1ee702b4d2c4446b","x":-14.066279411315918,"y":-4.621598243713379},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000031","label":"does not use as carbon source","page":"traits/metabolism/does_not_use_as_carbon_source.html","source_path":"data/traits/metabolism/does_not_use_as_carbon_source.yaml","text_sha256":"2e24f9cd6a446ac842fed3c3ada4e05b8265a4658e8de86c023d921a1712a366","x":11.623960494995117,"y":-4.858890533447266},{"adapter_version":"traitmech-semantic-v1","category":"OBSERVATION","identifier":"METPO:1001022","label":"NaCl observation","page":"traits/observation/nacl_observation.html","source_path":"data/traits/observation/nacl_observation.yaml","text_sha256":"c6f41d13fe1057666857e9d5e48abeadfaa898d615d8628d51e094cee51a7bf4","x":-2.5995922088623047,"y":-19.819753646850586},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000615","label":"mesophilic","page":"traits/environment/mesophilic.html","source_path":"data/traits/environment/mesophilic.yaml","text_sha256":"8c4def78c7586ce088a9eeb2dba668afc1f906b2720491a13139551a9a6347a5","x":-13.377126693725586,"y":-4.641716480255127},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000508","label":"has growth NaCl observation","page":"traits/metabolism/has_growth_nacl_observation.html","source_path":"data/traits/metabolism/has_growth_nacl_observation.yaml","text_sha256":"904bb85e9baff924cdf8ceb11fd7b20b34e7e4cff693dca3690e46572e2bb176","x":-1.9130908250808716,"y":-20.182662963867188},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000232","label":"does not compartmentalize","page":"traits/metabolism/does_not_compartmentalize.html","source_path":"data/traits/metabolism/does_not_compartmentalize.yaml","text_sha256":"76ec3496b7685ee44bd9e90e54c62ee3105223ba619753cd08b53eb6f3559c85","x":11.688055038452148,"y":-4.0239481925964355},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1000685","label":"star shaped","page":"traits/morphology/star_shaped.html","source_path":"data/traits/morphology/star_shaped.yaml","text_sha256":"26e09eb0e6ee59f885d8ac438cc4ec4181bbbe1d099961010253c917491c0a56","x":-4.184884071350098,"y":11.167648315429688},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"METPO:1000631","label":"trophic type","page":"traits/physiology/trophic_type.html","source_path":"data/traits/physiology/trophic_type.yaml","text_sha256":"7bc86c126cf130bf241b5c927f188aac2c18ba41c13a5f0c46b0d601f6a6c407","x":3.0608396530151367,"y":-4.51809549331665},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000536","label":"optimum phenotype with numerical limits","page":"traits/environment/optimum_phenotype_with_numerical_limits.html","source_path":"data/traits/environment/optimum_phenotype_with_numerical_limits.yaml","text_sha256":"e2648937fd696770f13548164e56abab4fcb93a55994b1fcc1588db70b3eb6d5","x":-14.463865280151367,"y":-4.050973415374756},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000468","label":"NaCl optimum high","page":"traits/environment/nacl_optimum_high.html","source_path":"data/traits/environment/nacl_optimum_high.yaml","text_sha256":"875645a6d32e345d70633acbff4de0995c89262fa56caaab1ea360625266cff0","x":-14.764039039611816,"y":-2.8239433765411377},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"traitmech:000024","label":"3-hydroxypropionate/4-hydroxybutyrate cycle","page":"traits/metabolism/three_hydroxypropionate_four_hydroxybutyrate_cycle.html","source_path":"data/traits/metabolism/three_hydroxypropionate_four_hydroxybutyrate_cycle.yaml","text_sha256":"3f73dc95f144ef4bd112ef0277b6f5bc07ec0f341de2644e50646bc6d8cd95a0","x":4.647922992706299,"y":-4.108927249908447},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000614","label":"psychrophilic","page":"traits/environment/psychrophilic.html","source_path":"data/traits/environment/psychrophilic.yaml","text_sha256":"f01831f313c9ecb5f9944d3f1d9dcbe148f2071bf4c24338f8349916662010e7","x":-13.198387145996094,"y":-4.4987688064575195},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1000704","label":"flagellated","page":"traits/morphology/flagellated.html","source_path":"data/traits/morphology/flagellated.yaml","text_sha256":"06a2b6794c1b8f638f43225d2ee11488350d4bf003179f3f928965466f567199","x":0.8952043652534485,"y":11.645893096923828},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"traitmech:000056","label":"flagellar arrangement","page":"traits/morphology/flagellar_arrangement.html","source_path":"data/traits/morphology/flagellar_arrangement.yaml","text_sha256":"a04cc19a1ccde5c6bf2954a8898246acaa87864ae1490a3ee32b8015921ee5bf","x":0.31302183866500854,"y":11.54495906829834},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1003001","label":"neutrophilic","page":"traits/environment/neutrophilic.html","source_path":"data/traits/environment/neutrophilic.yaml","text_sha256":"4cd35fcadbc4ed6a559e2f4eddfecda3a00a617ac1b40e8df6c15917fd6752b4","x":-13.070205688476562,"y":-4.007989883422852},{"adapter_version":"traitmech-semantic-v1","category":"OTHER","identifier":"METPO:1005015","label":"methyl red test negative","page":"traits/other/methyl_red_test_negative.html","source_path":"data/traits/other/methyl_red_test_negative.yaml","text_sha256":"19260a9ca6092257333386647015291e6890308033b0511f51fdd82d18b6d06c","x":4.536843299865723,"y":9.114310264587402},{"adapter_version":"traitmech-semantic-v1","category":"GENOMICS","identifier":"traitmech:000095","label":"restriction-modification system","page":"traits/genomics/restriction_modification_system.html","source_path":"data/traits/genomics/restriction_modification_system.yaml","text_sha256":"f95fe2a51e8e42cbd83ea7de8dd964968fe8d08f0e79772db5b9944fe30764b5","x":-0.0678953006863594,"y":7.904185771942139},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"METPO:1000636","label":"chemoheterotrophic","page":"traits/physiology/chemoheterotrophic.html","source_path":"data/traits/physiology/chemoheterotrophic.yaml","text_sha256":"2b305b5b3f60cf0aac5b1529ba44aa697ef57de0215ae2a7a8bb2f259524d410","x":2.749006509780884,"y":-4.668056488037109},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"traitmech:000035","label":"anoxygenic photosynthesis","page":"traits/metabolism/anoxygenic_photosynthesis.html","source_path":"data/traits/metabolism/anoxygenic_photosynthesis.yaml","text_sha256":"ecdf2eff13700f10569839d3cb30df294c0f125378715d787abfdd9922582163","x":4.435180187225342,"y":-5.144719123840332},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"traitmech:000065","label":"prosthecate","page":"traits/morphology/prosthecate.html","source_path":"data/traits/morphology/prosthecate.yaml","text_sha256":"a5b4c19bc178d9b27bbae864dcbfd276a8dfeffa404bdc1fd9a56cabbf492280","x":0.22536960244178772,"y":9.924949645996094},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000617","label":"hyperthermophilic","page":"traits/environment/hyperthermophilic.html","source_path":"data/traits/environment/hyperthermophilic.yaml","text_sha256":"6fe1d777b9ef0a52de493a655803fa0f3205d7c69303861bd5dcadc9fa82d89c","x":-13.055305480957031,"y":-4.179505348205566},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1000693","label":"spirochete shaped","page":"traits/morphology/spirochete_shaped.html","source_path":"data/traits/morphology/spirochete_shaped.yaml","text_sha256":"cfaf74cd9f5fb1c1f77201ff057faca5d631287540e136140888540ba74cb232","x":-3.818239688873291,"y":10.981715202331543},{"adapter_version":"traitmech-semantic-v1","category":"OTHER","identifier":"METPO:1005025","label":"hemolysis","page":"traits/other/hemolysis.html","source_path":"data/traits/other/hemolysis.yaml","text_sha256":"60eea5298fbd223c0f2c91219e6316861d0e093eea2664f15077f17320ec0a21","x":8.04871940612793,"y":-4.002307415008545},{"adapter_version":"traitmech-semantic-v1","category":"GENOMICS","identifier":"traitmech:000091","label":"prophage","page":"traits/genomics/prophage.html","source_path":"data/traits/genomics/prophage.yaml","text_sha256":"e7c86349b2998f36b767b6b228f1f483fa701dfc3d8d7e3357a063b32957dae6","x":-0.2140464335680008,"y":7.943628311157227},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000603","label":"anaerobic","page":"traits/environment/anaerobic.html","source_path":"data/traits/environment/anaerobic.yaml","text_sha256":"401f0e594187c5ad9a8ba1c358c64fc903f6a13a6451e2186490f973954d8299","x":-11.13051986694336,"y":-4.101182460784912},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"traitmech:000081","label":"viable but nonculturable state","page":"traits/physiology/viable_but_nonculturable_state.html","source_path":"data/traits/physiology/viable_but_nonculturable_state.yaml","text_sha256":"a5bea609e28496ba54c182e429a43ff29f4553e5c6c64737c45a32c1ec0fee93","x":1.2269190549850464,"y":9.196920394897461},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000487","label":"temperature delta high","page":"traits/environment/temperature_delta_high.html","source_path":"data/traits/environment/temperature_delta_high.yaml","text_sha256":"cddddf2927974172655a004e56fd905f3aed8ae071e87a01e12e68614adb122d","x":-15.318862915039062,"y":-4.414632320404053},{"adapter_version":"traitmech-semantic-v1","category":"OTHER","identifier":"METPO:1007066","label":"filamentous colony","page":"traits/other/filamentous_colony.html","source_path":"data/traits/other/filamentous_colony.yaml","text_sha256":"f42fd230e8f63da08aea4dd27059c633ab1289b8201cbca699323245d5b8cf63","x":-0.44418030977249146,"y":10.068960189819336},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"traitmech:000107","label":"iron oxidation","page":"traits/metabolism/iron_oxidation.html","source_path":"data/traits/metabolism/iron_oxidation.yaml","text_sha256":"9c73b69c694c9ffccbc48ff1403e514a51eeff6cc40895638103204082c5df02","x":6.446713924407959,"y":-5.239542007446289},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"traitmech:000057","label":"monotrichous","page":"traits/morphology/monotrichous.html","source_path":"data/traits/morphology/monotrichous.yaml","text_sha256":"5b163f12b55144f26deb54f7b6b043eeae1c74278b874ad1f709a291e9c8ef44","x":0.38583701848983765,"y":11.702510833740234},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"METPO:1000635","label":"chemoautotrophic","page":"traits/physiology/chemoautotrophic.html","source_path":"data/traits/physiology/chemoautotrophic.yaml","text_sha256":"46fe96432280ccbb7ad79264c62f598d84120be18c9735a954dbe656a72f45c7","x":2.4505209922790527,"y":-4.695501327514648},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000455","label":"pH optimum low","page":"traits/environment/ph_optimum_low.html","source_path":"data/traits/environment/ph_optimum_low.yaml","text_sha256":"075ea3a4310d4c4c73242a5039f32338c2bf8bee81e62c9ed6f0252569db7ac5","x":-13.851638793945312,"y":-4.295804500579834},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"traitmech:000173","label":"glutamyl glutamic acid arylamidase activity","page":"traits/physiology/glutamyl_glutamic_acid_arylamidase_activity.html","source_path":"data/traits/physiology/glutamyl_glutamic_acid_arylamidase_activity.yaml","text_sha256":"8fc7ca5e4f87117d66a75a4e825c235733a88a32c268de54a5c777961c447811","x":9.343730926513672,"y":9.527595520019531},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"traitmech:000001","label":"piezophilic","page":"traits/environment/piezophilic.html","source_path":"data/traits/environment/piezophilic.yaml","text_sha256":"f5c79f3f6939c92b2ef2e7d05ca79b9b45e52386feba9d1a7722974dc76698f1","x":-13.162128448486328,"y":-4.033082008361816},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"traitmech:000180","label":"acetone-butanol-ethanol fermentation","page":"traits/metabolism/acetone_butanol_ethanol_fermentation.html","source_path":"data/traits/metabolism/acetone_butanol_ethanol_fermentation.yaml","text_sha256":"e250ca8172681c14f15dc0dfcfc7832103ad10545179b977d669f331e740c465","x":5.76904821395874,"y":-3.483595371246338},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000053","label":"has optimum temperature observation","page":"traits/metabolism/has_optimum_temperature_observation.html","source_path":"data/traits/metabolism/has_optimum_temperature_observation.yaml","text_sha256":"636670b106165df580e440d545f5b79706642bc5af058ef1cfeb842befb2e3b9","x":-1.7384850978851318,"y":-19.808156967163086},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1000872","label":"non-spore forming","page":"traits/morphology/non_spore_forming.html","source_path":"data/traits/morphology/non_spore_forming.yaml","text_sha256":"7c98622667f16d43cbe70a7d3203b3d176509ddb231cbe44185b1f2498be4e80","x":0.4429892301559448,"y":9.925028800964355},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000623","label":"moderately halophilic","page":"traits/environment/moderately_halophilic.html","source_path":"data/traits/environment/moderately_halophilic.yaml","text_sha256":"3d602f5d3e69ba3fafc335a3ea3dcd03dbb818c3c12939834282d14933cf9e11","x":-13.769229888916016,"y":-2.4779951572418213},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000447","label":"temperature optimum high","page":"traits/environment/temperature_optimum_high.html","source_path":"data/traits/environment/temperature_optimum_high.yaml","text_sha256":"072552bd3f26dc0623b8bbac91450d579265be67b6d9ac55ff1c4b5b55754690","x":-13.905353546142578,"y":-4.757752418518066},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000470","label":"NaCl range mid1","page":"traits/environment/nacl_range_mid1.html","source_path":"data/traits/environment/nacl_range_mid1.yaml","text_sha256":"43897da914cfbefaa91b0055e6cab6ab2c53f82ac391ea5f6e79cd4475e1a86d","x":-15.288802146911621,"y":-3.309115171432495},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:1000846","label":"Homoacetogenesis","page":"traits/metabolism/homoacetogenesis.html","source_path":"data/traits/metabolism/homoacetogenesis.yaml","text_sha256":"e8a1ac6648d70ed35e4613732631037a959dd06e6b4f0770112daa0a51fa3d4e","x":5.214122295379639,"y":-4.184131145477295},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000230","label":"does not accumulate","page":"traits/metabolism/does_not_accumulate.html","source_path":"data/traits/metabolism/does_not_accumulate.yaml","text_sha256":"bb3f1665684018d0bde53d5ba419f8b298f60c9ac0410d59b543736dea9400c8","x":11.694170951843262,"y":-4.281774520874023},{"adapter_version":"traitmech-semantic-v1","category":"OTHER","identifier":"METPO:1005018","label":"Voges-Proskauer test negative","page":"traits/other/voges_proskauer_test_negative.html","source_path":"data/traits/other/voges_proskauer_test_negative.yaml","text_sha256":"d532bd1ec078f627ccceed2e54e759f39da484f6fff8a953a530c42820c8e189","x":4.685164928436279,"y":9.114316940307617},{"adapter_version":"traitmech-semantic-v1","category":"UPPER","identifier":"METPO:1000188","label":"quality","page":"traits/upper/quality.html","source_path":"data/traits/upper/quality.yaml","text_sha256":"d1ccb5b0e5d385134c15adbc172034ed879ea37f0d141c9ee04935968b62f704","x":-2.3551759719848633,"y":-18.88323211669922},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000479","label":"NaCl delta low","page":"traits/environment/nacl_delta_low.html","source_path":"data/traits/environment/nacl_delta_low.yaml","text_sha256":"2c6c50bc5e203751aff6b51540e4674b0e8755db9b0b2d621a7ad2d76ff5b3d9","x":-15.429487228393555,"y":-3.5935990810394287},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000604","label":"microaerophilic","page":"traits/environment/microaerophilic.html","source_path":"data/traits/environment/microaerophilic.yaml","text_sha256":"23ccb37bf969f810a8850454f2ff2ff5dd234ea31d7c3d3e4c4c3fc16dd1d031","x":-11.4320068359375,"y":-4.08831262588501},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1000706","label":"gliding","page":"traits/morphology/gliding.html","source_path":"data/traits/morphology/gliding.yaml","text_sha256":"0b965d9ce442ded99f0f0266a81ccbf696c17d6e06c811fcac6fb503dc200100","x":1.3449525833129883,"y":11.464559555053711},{"adapter_version":"traitmech-semantic-v1","category":"OBSERVATION","identifier":"METPO:1001017","label":"growth oxygen observation","page":"traits/observation/growth_oxygen_observation.html","source_path":"data/traits/observation/growth_oxygen_observation.yaml","text_sha256":"ddf274257b2c8f0d2f42ed7cd2db061b1ed3b8a1812e2f94869885de49d08aa6","x":-2.42805814743042,"y":-19.79198455810547},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"METPO:1000632","label":"autotrophic","page":"traits/physiology/autotrophic.html","source_path":"data/traits/physiology/autotrophic.yaml","text_sha256":"19ccd4caca35a968a0b8d43cdb11605762917b050bb30c2da131a68c25c00d8c","x":2.904860734939575,"y":-4.716497421264648},{"adapter_version":"traitmech-semantic-v1","category":"GENOMICS","identifier":"traitmech:000099","label":"genome streamlining","page":"traits/genomics/genome_streamlining.html","source_path":"data/traits/genomics/genome_streamlining.yaml","text_sha256":"01263274d8013dcfb4ee9415ce0500f792f1faba40435457d30b677ff4a40c1e","x":-0.2641472816467285,"y":7.803054332733154},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1000678","label":"oval shaped","page":"traits/morphology/oval_shaped.html","source_path":"data/traits/morphology/oval_shaped.yaml","text_sha256":"f211676e1859c64a0203ea29b6fccaa414b4d50cad919f534e882c4b2c0e0595","x":-4.255364418029785,"y":11.16276741027832},{"adapter_version":"traitmech-semantic-v1","category":"GENOMICS","identifier":"METPO:1000431","label":"GC mid2","page":"traits/genomics/gc_mid2.html","source_path":"data/traits/genomics/gc_mid2.yaml","text_sha256":"c0ea488ae4e4ab41ccd88576980a956a2e89b8c335f57871e01694536e42c621","x":-0.13989903032779694,"y":7.779177665710449},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000609","label":"aerotolerant","page":"traits/environment/aerotolerant.html","source_path":"data/traits/environment/aerotolerant.yaml","text_sha256":"0e688c7df0a86f3854907aa04b00eb3c29fcd8d4ff377b772ef86b00aa98da1d","x":-11.418774604797363,"y":-3.973557472229004},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"traitmech:000166","label":"prolyl aminopeptidase activity","page":"traits/physiology/prolyl_aminopeptidase_activity.html","source_path":"data/traits/physiology/prolyl_aminopeptidase_activity.yaml","text_sha256":"91dabacbc3bd0e2332825cfdc1906e708eccc1683fc1e38171b49e4f76383655","x":8.597993850708008,"y":9.415729522705078},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1003021","label":"pigmentation","page":"traits/morphology/pigmentation.html","source_path":"data/traits/morphology/pigmentation.yaml","text_sha256":"3de2e9b3ac499bf090696c5cfb44ce33fa959a0a1e9920120004bfbc2993690b","x":2.611515998840332,"y":9.852520942687988},{"adapter_version":"traitmech-semantic-v1","category":"OTHER","identifier":"METPO:1005016","label":"Voges-Proskauer test","page":"traits/other/voges_proskauer_test.html","source_path":"data/traits/other/voges_proskauer_test.yaml","text_sha256":"e1dcd520f0bee7e8449c2de184a856a07e6fa5e4d55a28c1a9bfb33e8b582fd8","x":4.533249378204346,"y":9.108771324157715},{"adapter_version":"traitmech-semantic-v1","category":"OTHER","identifier":"METPO:1005012","label":"indole test negative","page":"traits/other/indole_test_negative.html","source_path":"data/traits/other/indole_test_negative.yaml","text_sha256":"c8c472e2a555263a94c4f9f8589eb2977bf5e251558fd2f67ed9d6c61cf4f28e","x":4.634005546569824,"y":9.130555152893066},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1003031","label":"carotenoid pigmentation","page":"traits/morphology/carotenoid_pigmentation.html","source_path":"data/traits/morphology/carotenoid_pigmentation.yaml","text_sha256":"ce75c81a26a46dc18181af434e67ead0571da743ff15469bfc4c407dd75094a6","x":2.589966297149658,"y":9.753023147583008},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000472","label":"NaCl range high","page":"traits/environment/nacl_range_high.html","source_path":"data/traits/environment/nacl_range_high.yaml","text_sha256":"d9c0f95a058cdebac9c8f8597ed9a7dda0ef3d8318bf22beb2f1e5f926f005d8","x":-14.869019508361816,"y":-2.854860782623291},{"adapter_version":"traitmech-semantic-v1","category":"OBSERVATION","identifier":"METPO:1001002","label":"growth temperature observation","page":"traits/observation/growth_temperature_observation.html","source_path":"data/traits/observation/growth_temperature_observation.yaml","text_sha256":"bef82b6c1df645afb0d32a7357d755c51ce2d2a1220e6d51b539dfc71cc27621","x":-2.578042507171631,"y":-19.659297943115234},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1000679","label":"pleomorphic shaped","page":"traits/morphology/pleomorphic_shaped.html","source_path":"data/traits/morphology/pleomorphic_shaped.yaml","text_sha256":"8b0fb866739bf8ed1aad49011fbcc70aac0a9dc5571b66416aad9f12bd18867a","x":-4.1848859786987305,"y":11.15335750579834},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000513","label":"has optimum oxygen observation","page":"traits/metabolism/has_optimum_oxygen_observation.html","source_path":"data/traits/metabolism/has_optimum_oxygen_observation.yaml","text_sha256":"6c3a9bcaa1f31a5b7ef832fd62402c9975fda7ac00521a173765791cb2ce6144","x":-1.8585447072982788,"y":-19.983774185180664},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000006","label":"uses as carbon source","page":"traits/metabolism/uses_as_carbon_source.html","source_path":"data/traits/metabolism/uses_as_carbon_source.yaml","text_sha256":"3d1399a92e846b3000ccb98726a76f69561d0d4354f5abc7f2cf5491dd8c2513","x":10.700387954711914,"y":-4.944304466247559},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000012","label":"uses for growth","page":"traits/metabolism/uses_for_growth.html","source_path":"data/traits/metabolism/uses_for_growth.yaml","text_sha256":"a87475a4ce6d20de6ae1e6e61d6f429c8ef5fd96051a06e603dc0d4b98e7cd94","x":10.820048332214355,"y":-5.663695335388184},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"METPO:1000639","label":"chemolithotrophic","page":"traits/physiology/chemolithotrophic.html","source_path":"data/traits/physiology/chemolithotrophic.yaml","text_sha256":"21243baae62afde76b9d00d8db803b1f68c263c545a9c4db8cc38e79abb6f772","x":2.574732780456543,"y":-4.616483211517334},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"METPO:1000638","label":"chemolithoheterotrophic","page":"traits/physiology/chemolithoheterotrophic.html","source_path":"data/traits/physiology/chemolithoheterotrophic.yaml","text_sha256":"25e9d25e63bb578ad91a5b0b585a31b3fb417f744de047af98338e745a54284f","x":2.5583527088165283,"y":-4.64975643157959},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"traitmech:000020","label":"Calvin-Benson-Bassham cycle","page":"traits/metabolism/calvin_benson_bassham_cycle.html","source_path":"data/traits/metabolism/calvin_benson_bassham_cycle.yaml","text_sha256":"000b5702a31233b65bbbc5b322d9cb3678e27b7e0389dabae7c8820ceec8e23a","x":4.442940711975098,"y":-4.703886032104492},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000720","label":"facultative psychrophilic","page":"traits/environment/facultative_psychrophilic.html","source_path":"data/traits/environment/facultative_psychrophilic.yaml","text_sha256":"aa7c9c3cb694aa6155af9e714d58c6dc7c47e1f4748e1f97943d0b694694294b","x":-13.112236976623535,"y":-4.641027450561523},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000045","label":"is not required for growth","page":"traits/metabolism/is_not_required_for_growth.html","source_path":"data/traits/metabolism/is_not_required_for_growth.yaml","text_sha256":"191e7f53c84de3ca5d6b1e0d5b587fc0b1c8e9b8e1289ea0b1837ee2a6283699","x":11.46355152130127,"y":-5.615067481994629},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000441","label":"temperature optimum very low","page":"traits/environment/temperature_optimum_very_low.html","source_path":"data/traits/environment/temperature_optimum_very_low.yaml","text_sha256":"d318139ab1ba4ea2517d2475b7be4b63bce958c93770dc5ac2d31ef0524f34a4","x":-13.839276313781738,"y":-4.941604137420654},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000475","label":"pH delta mid1","page":"traits/environment/ph_delta_mid1.html","source_path":"data/traits/environment/ph_delta_mid1.yaml","text_sha256":"a03dda67fabf04724586b183f6cb1dffcfc1bc969f2d1cf03e861e9bdb07bd38","x":-15.588094711303711,"y":-4.122288703918457},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"traitmech:000169","label":"tyrosine arylamidase activity","page":"traits/physiology/tyrosine_arylamidase_activity.html","source_path":"data/traits/physiology/tyrosine_arylamidase_activity.yaml","text_sha256":"72a7bc7b3c9ca381f57056844d0cfdac2c4769ece0023be56b95dbbceaf1cfff","x":9.372432708740234,"y":9.53165340423584},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"traitmech:000123","label":"nitrite respiration","page":"traits/metabolism/nitrite_respiration.html","source_path":"data/traits/metabolism/nitrite_respiration.yaml","text_sha256":"0cf4ef72dab5b03b73cc5a5b182ce60e7831406c809869372f4058c59e8e565b","x":6.162720203399658,"y":-5.730734825134277},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000301","label":"enzyme activity analyzed","page":"traits/metabolism/enzyme_activity_analyzed.html","source_path":"data/traits/metabolism/enzyme_activity_analyzed.yaml","text_sha256":"425e364eae723cb227f8a7d07629f49aeb77068a6f9098326d4ed0b41816f05f","x":9.997093200683594,"y":-3.6763336658477783},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"METPO:1000633","label":"carboxydotrophic","page":"traits/physiology/carboxydotrophic.html","source_path":"data/traits/physiology/carboxydotrophic.yaml","text_sha256":"06edd0a6292c7ac92abcaf1c4bced876136eaa95c4ff24f84de08a6fa57cc49d","x":3.001342296600342,"y":-4.49971866607666},{"adapter_version":"traitmech-semantic-v1","category":"OBSERVATION","identifier":"METPO:1001007","label":"growth NaCl observation","page":"traits/observation/growth_nacl_observation.html","source_path":"data/traits/observation/growth_nacl_observation.yaml","text_sha256":"95b1ad9a4a073bb21b613791eda60fba59b69ad3db3aed3edf4771bd94bd4482","x":-2.518733501434326,"y":-19.971019744873047},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"traitmech:000114","label":"lignin degradation","page":"traits/metabolism/lignin_degradation.html","source_path":"data/traits/metabolism/lignin_degradation.yaml","text_sha256":"590e53d39755a1ce69edfb25157eec340fc993d67081ab85adcb7d5b2d23d26d","x":8.125354766845703,"y":-4.375148773193359},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"traitmech:000106","label":"sulfur oxidation","page":"traits/metabolism/sulfur_oxidation.html","source_path":"data/traits/metabolism/sulfur_oxidation.yaml","text_sha256":"9209e681d868ce688d1fbb7e1609cba27b0589379764a404ff8e740c6420b0c8","x":6.6957688331604,"y":-5.283481597900391},{"adapter_version":"traitmech-semantic-v1","category":"ECOLOGY","identifier":"traitmech:000053","label":"biofilm formation","page":"traits/ecology/biofilm_formation.html","source_path":"data/traits/ecology/biofilm_formation.yaml","text_sha256":"6d8bf5c716fb613a31644d9a67f83fa0b15a2d435e8289a53f0242bd8b359f0d","x":0.9851582646369934,"y":8.98037052154541},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1000673","label":"ellipsoidal","page":"traits/morphology/ellipsoidal.html","source_path":"data/traits/morphology/ellipsoidal.yaml","text_sha256":"be24925c8bfb826c08a56286799567ff7ce6d6f6f536bfb571e26dfffd5ac2c4","x":-4.212048530578613,"y":11.148029327392578},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"traitmech:000141","label":"alkaline phosphatase activity","page":"traits/physiology/alkaline_phosphatase_activity.html","source_path":"data/traits/physiology/alkaline_phosphatase_activity.yaml","text_sha256":"fb4c41c402e7e17414d741063afd6449cbefba992c89037b263a162ebe36ecee","x":7.785543918609619,"y":9.2872953414917},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"traitmech:000014","label":"zinc tolerant","page":"traits/environment/zinc_tolerant.html","source_path":"data/traits/environment/zinc_tolerant.yaml","text_sha256":"26cfccbe978e2ceb53c41165c0ffbba35c0df1c24555fba02e8e66965aea5150","x":-11.988228797912598,"y":-2.143066883087158},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000618","label":"psychrotolerant","page":"traits/environment/psychrotolerant.html","source_path":"data/traits/environment/psychrotolerant.yaml","text_sha256":"467a11aa384854d041a2dfeee1d5b1190e83a73426cfe8bdc72ea36bb50f8747","x":-13.199183464050293,"y":-4.3929643630981445},{"adapter_version":"traitmech-semantic-v1","category":"OBSERVATION","identifier":"METPO:1001016","label":"optimum oxygen observation","page":"traits/observation/optimum_oxygen_observation.html","source_path":"data/traits/observation/optimum_oxygen_observation.yaml","text_sha256":"c2928e0794991dcb8f27fb69c8a46acb79f452314fb4b58d63c1b5ba884e9115","x":-2.5478742122650146,"y":-19.678607940673828},{"adapter_version":"traitmech-semantic-v1","category":"GENOMICS","identifier":"traitmech:000089","label":"mobile genetic element","page":"traits/genomics/mobile_genetic_element.html","source_path":"data/traits/genomics/mobile_genetic_element.yaml","text_sha256":"cec8f1d89e42a3be3d6959a82cb02878db6818950b50d324aba65caeacb723aa","x":-0.23082268238067627,"y":7.994186878204346},{"adapter_version":"traitmech-semantic-v1","category":"GENOMICS","identifier":"METPO:1000432","label":"GC high","page":"traits/genomics/gc_high.html","source_path":"data/traits/genomics/gc_high.yaml","text_sha256":"345065a615670ce3153615aafe32c468ee37c178199fa8d4281e19fa73277890","x":-0.24093514680862427,"y":7.853533744812012},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000102","label":"has phenotype","page":"traits/metabolism/has_phenotype.html","source_path":"data/traits/metabolism/has_phenotype.yaml","text_sha256":"b251479a6ba7e9c1cc55fae6f45a114299d527b52ae876151bf4abf8e9d3fd72","x":-2.473041296005249,"y":-19.516969680786133},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000605","label":"facultatively anaerobic","page":"traits/environment/facultatively_anaerobic.html","source_path":"data/traits/environment/facultatively_anaerobic.yaml","text_sha256":"ab10b4cc0d02e25fe2611b7c75cd4bc8f0b1ff5bc6238fdd5cb93b4c71f33ac2","x":-11.29687786102295,"y":-4.1297993659973145},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000532","label":"salinity phenotype with numerical limits","page":"traits/environment/salinity_phenotype_with_numerical_limits.html","source_path":"data/traits/environment/salinity_phenotype_with_numerical_limits.yaml","text_sha256":"3f5599f9022aa6a2edf52fc1b0313e4bb72dcffe8133d1308ce88279d49e1288","x":-14.791891098022461,"y":-3.588061809539795},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000208","label":"imports","page":"traits/metabolism/imports.html","source_path":"data/traits/metabolism/imports.yaml","text_sha256":"c943878ca40dc98ecf88cb7b815e867f74424348626070c55ff7f1f37c4fa07f","x":10.432085990905762,"y":-3.962122917175293},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1007006","label":"polytrichous flagellation","page":"traits/morphology/polytrichous_flagellation.html","source_path":"data/traits/morphology/polytrichous_flagellation.yaml","text_sha256":"82c5913308789909ccbf6b3451f5f0358940046af2bed27521dae5ed328d2aca","x":0.3558679223060608,"y":11.720355987548828},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000002","label":"assimilates","page":"traits/metabolism/assimilates.html","source_path":"data/traits/metabolism/assimilates.yaml","text_sha256":"ba269acac150581b44730e45142502f52474e2de85cb7ac55a153e1f780aa9af","x":9.921338081359863,"y":-4.447751522064209},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1003024","label":"cream pigmented","page":"traits/morphology/cream_pigmented.html","source_path":"data/traits/morphology/cream_pigmented.yaml","text_sha256":"685bd890721ea78bf4a9583d898d7d170da44ed7a6264d1b3d4c34d9a9e2943e","x":2.6042134761810303,"y":9.884377479553223},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000051","label":"uses for anaerobic growth with light","page":"traits/metabolism/uses_for_anaerobic_growth_with_light.html","source_path":"data/traits/metabolism/uses_for_anaerobic_growth_with_light.yaml","text_sha256":"91102d0fcdce6a7b7dbe10368b79273c3a4a149ae67b7b6968a4216b01eed0ca","x":10.99059009552002,"y":-6.24271821975708},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1000680","label":"ring shaped","page":"traits/morphology/ring_shaped.html","source_path":"data/traits/morphology/ring_shaped.yaml","text_sha256":"29311b334c0c52b255b85831fb0e78ce54f6d9f85b9ed5ace705f86aef2038a6","x":-4.20875883102417,"y":11.16179084777832},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000229","label":"does not export","page":"traits/metabolism/does_not_export.html","source_path":"data/traits/metabolism/does_not_export.yaml","text_sha256":"701eaea4587063292fbfcea8d5beef7f1c5a4882387a8fa20692a4a9e293ac54","x":11.540396690368652,"y":-4.264069080352783},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"traitmech:000182","label":"citrate fermentation","page":"traits/metabolism/citrate_fermentation.html","source_path":"data/traits/metabolism/citrate_fermentation.yaml","text_sha256":"fa31af129781e3f0741cff9bae38721690c97267fe0d436b6d24cbe712801c30","x":5.866125106811523,"y":-3.3631346225738525},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"METPO:1000647","label":"lithoautotrophic","page":"traits/physiology/lithoautotrophic.html","source_path":"data/traits/physiology/lithoautotrophic.yaml","text_sha256":"271e6b60f8c5383ea1ebb8edd722a12b34e015da6efd198849c45738d9f0612a","x":2.6466457843780518,"y":-4.712940216064453},{"adapter_version":"traitmech-semantic-v1","category":"OTHER","identifier":"METPO:1007091","label":"coagulase negative","page":"traits/other/coagulase_negative.html","source_path":"data/traits/other/coagulase_negative.yaml","text_sha256":"2daa833f3fe917a4e627e03c8c93fb0467d1d45ac518900475346473e1d4471d","x":4.923943519592285,"y":9.14027214050293},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000449","label":"temperature range low","page":"traits/environment/temperature_range_low.html","source_path":"data/traits/environment/temperature_range_low.yaml","text_sha256":"5c367d32c2657f3603ec0eab0022745f28a7c4abf75dca1e479120e317376e6e","x":-14.218239784240723,"y":-5.042745590209961},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000038","label":"does not use for growth","page":"traits/metabolism/does_not_use_for_growth.html","source_path":"data/traits/metabolism/does_not_use_for_growth.yaml","text_sha256":"a4ac92be3bfd853f7fca8376dba5a5c42ff1143539126118884e72ee34225ea1","x":11.470528602600098,"y":-5.589845657348633},{"adapter_version":"traitmech-semantic-v1","category":"ECOLOGY","identifier":"METPO:1004002","label":"animal pathogen","page":"traits/ecology/animal_pathogen.html","source_path":"data/traits/ecology/animal_pathogen.yaml","text_sha256":"f30eba2ece4e5ad382046063c7b89ee7c2ee5d5c69857c6e50b2b9ff34cf8c1a","x":1.5636755228042603,"y":7.990658283233643},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1000666","label":"cell shape","page":"traits/morphology/cell_shape.html","source_path":"data/traits/morphology/cell_shape.yaml","text_sha256":"9e01f812f6631fe6f4a7ab4b73702a9def9c973b75851870918c09195d9e1bb6","x":-2.6148550510406494,"y":10.098602294921875},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000613","label":"temperature preference","page":"traits/environment/temperature_preference.html","source_path":"data/traits/environment/temperature_preference.yaml","text_sha256":"905ec6ae3ce4c4d320870358fc29bc4b560b702ee98f2697f8ac530a194c5913","x":-13.64908504486084,"y":-4.5251641273498535},{"adapter_version":"traitmech-semantic-v1","category":"QUANTITATIVE_PROPERTY","identifier":"METPO:2000071","label":"has value","page":"traits/quantitative_property/has_value.html","source_path":"data/traits/quantitative_property/has_value.yaml","text_sha256":"9394ce0d51b0aaaab366401098f02569e18414f9ae9072e7ab0c46ab03430c5b","x":-2.2115478515625,"y":-19.050922393798828},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"traitmech:000004","label":"pressure optimum","page":"traits/environment/pressure_optimum.html","source_path":"data/traits/environment/pressure_optimum.yaml","text_sha256":"2d8bd7881bcf2a3a195fa7f4ee1c85f78e625de6388bc3915d6bb1f10c251e91","x":-13.810365676879883,"y":-3.7753517627716064},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"METPO:1000646","label":"hydrogenotrophic","page":"traits/physiology/hydrogenotrophic.html","source_path":"data/traits/physiology/hydrogenotrophic.yaml","text_sha256":"505d3db75e0efe6160253c6cdad87b6b5d31114da70ffbb45fc8b864dcd73772","x":3.266352891921997,"y":-4.356554985046387},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000032","label":"uses for aerobic catabolization","page":"traits/metabolism/uses_for_aerobic_catabolization.html","source_path":"data/traits/metabolism/uses_for_aerobic_catabolization.yaml","text_sha256":"28d0366ba93cab6da62b3d6fb53f6088d306b633dea402acc6f1de4fcc37d167","x":10.005273818969727,"y":-5.442630767822266},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:1000803","label":"Oxidative phosphorylation","page":"traits/metabolism/oxidative_phosphorylation.html","source_path":"data/traits/metabolism/oxidative_phosphorylation.yaml","text_sha256":"9773f1179554be36f5e79fec9c46032f35b9f5350c70710144629a8a3a6a7dac","x":6.547572612762451,"y":-4.925238132476807},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"traitmech:000137","label":"caseinase activity","page":"traits/physiology/caseinase_activity.html","source_path":"data/traits/physiology/caseinase_activity.yaml","text_sha256":"53aabbd90dece5dbbf7ae4cc693733f740b10156f876ad306b77ecf035ef9421","x":7.843617916107178,"y":9.29792594909668},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"traitmech:000017","label":"arsenic tolerant","page":"traits/environment/arsenic_tolerant.html","source_path":"data/traits/environment/arsenic_tolerant.yaml","text_sha256":"64685ce053a63b323eafcb155accbf6715b09f738dc2dfb42105440d9510b964","x":-11.890460968017578,"y":-2.204671621322632},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:1000844","label":"Methanogenesis","page":"traits/metabolism/methanogenesis.html","source_path":"data/traits/metabolism/methanogenesis.yaml","text_sha256":"af17307fc388fadf29eb090685a474f6a952757d4181cc410f0b5768f863e2b2","x":5.31302547454834,"y":-4.224012851715088},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"traitmech:000149","label":"alpha-galactosidase activity","page":"traits/physiology/alpha_galactosidase_activity.html","source_path":"data/traits/physiology/alpha_galactosidase_activity.yaml","text_sha256":"05d2ef3392b35484883353648783d5e1b04d90207d189e71918a3419b65299c1","x":7.934826850891113,"y":9.293591499328613},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"traitmech:000167","label":"arginine arylamidase activity","page":"traits/physiology/arginine_arylamidase_activity.html","source_path":"data/traits/physiology/arginine_arylamidase_activity.yaml","text_sha256":"1925fcf257bedde4f6ce1ffeab0ec62d0b14f137339fbe8eab6753b844e31152","x":9.221202850341797,"y":9.510107040405273},{"adapter_version":"traitmech-semantic-v1","category":"ECOLOGY","identifier":"traitmech:000051","label":"rhizosphere association","page":"traits/ecology/rhizosphere_association.html","source_path":"data/traits/ecology/rhizosphere_association.yaml","text_sha256":"e2a8e400984ddcfc083bb5972ba93bb50123143be98ef13913d2f5be9dda0244","x":1.4659701585769653,"y":7.414322853088379},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1000690","label":"fusiform shaped","page":"traits/morphology/fusiform_shaped.html","source_path":"data/traits/morphology/fusiform_shaped.yaml","text_sha256":"c2159a57674993b314c7e8e14b1e37445bfaa3f2d088a206f82eb8d16100d302","x":-4.212064266204834,"y":11.170744895935059},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"traitmech:000038","label":"photosynthesis","page":"traits/metabolism/photosynthesis.html","source_path":"data/traits/metabolism/photosynthesis.yaml","text_sha256":"18596bb20db2db34b70a23f562fdeafa7a2253706e041c0c2a6081dafd4d0397","x":4.142393589019775,"y":-5.149272918701172},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"traitmech:000158","label":"trypsin activity","page":"traits/physiology/trypsin_activity.html","source_path":"data/traits/physiology/trypsin_activity.yaml","text_sha256":"e1de435dce2f6617384058103a805332a8958fda3708e25f8debe97576666c65","x":8.033427238464355,"y":9.343818664550781},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"METPO:1000651","label":"methylotrophic","page":"traits/physiology/methylotrophic.html","source_path":"data/traits/physiology/methylotrophic.yaml","text_sha256":"9df6b703ab9c10c4e73d54027055729b79c0622a8e38aeb233bf57e7f6e00db5","x":3.435678720474243,"y":-4.278550624847412},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000047","label":"does not use as sulfur source","page":"traits/metabolism/does_not_use_as_sulfur_source.html","source_path":"data/traits/metabolism/does_not_use_as_sulfur_source.yaml","text_sha256":"261fdeb97dde1068dc145236641d12c820faad98b71d2ef44b432d4b8ca96847","x":11.484493255615234,"y":-5.229152679443359},{"adapter_version":"traitmech-semantic-v1","category":"ECOLOGY","identifier":"traitmech:000047","label":"habitat association","page":"traits/ecology/habitat_association.html","source_path":"data/traits/ecology/habitat_association.yaml","text_sha256":"00e9a1f3f4f738d76692e1107f23f501361a25b07fc986d325608e5323d2a1ed","x":1.5504566431045532,"y":7.299010276794434},{"adapter_version":"traitmech-semantic-v1","category":"UPPER","identifier":"METPO:1000527","label":"enzyme","page":"traits/upper/enzyme.html","source_path":"data/traits/upper/enzyme.yaml","text_sha256":"2ac18e58b05c924ef0e97f17abc82cea4d22de67f091d341b1e3a13e89ee745f","x":9.61552906036377,"y":-3.802607297897339},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:1002003","label":"Cable bacteria metabolism","page":"traits/metabolism/cable_bacteria_metabolism.html","source_path":"data/traits/metabolism/cable_bacteria_metabolism.yaml","text_sha256":"e694cd37f497ef2117dae336fa89f73ab4ffe82c0f5f820fea7b602b60562c32","x":6.6394758224487305,"y":-4.769670486450195},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"traitmech:000130","label":"aromatic compound degradation","page":"traits/metabolism/aromatic_compound_degradation.html","source_path":"data/traits/metabolism/aromatic_compound_degradation.yaml","text_sha256":"5120a26ac969122481473a39d9a93e11a02068a8ba96ac01b09f24c9a2f618c6","x":8.113740921020508,"y":-4.58970832824707},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"traitmech:000187","label":"complete ammonia oxidation","page":"traits/metabolism/complete_ammonia_oxidation.html","source_path":"data/traits/metabolism/complete_ammonia_oxidation.yaml","text_sha256":"d1a65aac507289983c53f7c35ab8a07ad38c6b55a765dcc40a3deb5ed40c8506","x":6.202573299407959,"y":-5.4371795654296875},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1000883","label":"cell length very small","page":"traits/morphology/cell_length_very_small.html","source_path":"data/traits/morphology/cell_length_very_small.yaml","text_sha256":"ab5ab57b1784aa3cfacb5e163fa6ebfd2ebe9d24dd7e1f779ccacbb96ab45af6","x":-1.5661604404449463,"y":8.283106803894043},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1000698","label":"gram positive","page":"traits/morphology/gram_positive.html","source_path":"data/traits/morphology/gram_positive.yaml","text_sha256":"38fd4d820f69050943b0125c2b1edface4173b4841c6008f3dea2fc6248e63b1","x":3.2532529830932617,"y":9.40599536895752},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"traitmech:000119","label":"tetrad arrangement","page":"traits/morphology/tetrad_arrangement.html","source_path":"data/traits/morphology/tetrad_arrangement.yaml","text_sha256":"886d10c140f4bdbc8d37a7b5d99cedfdf91c2f028a29b8c2d697342c20fcfb3d","x":0.24543249607086182,"y":11.416410446166992},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"traitmech:000005","label":"pressure range","page":"traits/environment/pressure_range.html","source_path":"data/traits/environment/pressure_range.yaml","text_sha256":"f847611fe808d5bdfcab1ad458d3d3f77bf3e1035c84855fc80b7c85881f44ae","x":-14.463984489440918,"y":-3.956792116165161},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"traitmech:000144","label":"valine arylamidase activity","page":"traits/physiology/valine_arylamidase_activity.html","source_path":"data/traits/physiology/valine_arylamidase_activity.yaml","text_sha256":"1b690e986a94899ad7c9f562aa01528b65bd744496811e44e81c929876d3909a","x":9.45254898071289,"y":9.543180465698242},{"adapter_version":"traitmech-semantic-v1","category":"ECOLOGY","identifier":"METPO:1001105","label":"biosafety level 4","page":"traits/ecology/biosafety_level_4.html","source_path":"data/traits/ecology/biosafety_level_4.yaml","text_sha256":"9bcce2b5a27c3ce463e684b43c432d5935e69a7cdb70865a9c730a3f8932702d","x":1.8639222383499146,"y":8.575117111206055},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1005036","label":"lateral flagellation","page":"traits/morphology/lateral_flagellation.html","source_path":"data/traits/morphology/lateral_flagellation.yaml","text_sha256":"f6a011a3540592fbdf0379cb2366e2d49d3d856a18fde9253f2538e70b56525f","x":0.6684140563011169,"y":11.683097839355469},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000481","label":"NaCl delta mid2","page":"traits/environment/nacl_delta_mid2.html","source_path":"data/traits/environment/nacl_delta_mid2.yaml","text_sha256":"fac3d71fd9470adc2c57eed743b0032de7f0ae5148d6d6fd5f5e9440adb70a61","x":-15.566564559936523,"y":-3.7449452877044678},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1000700","label":"gram variable","page":"traits/morphology/gram_variable.html","source_path":"data/traits/morphology/gram_variable.yaml","text_sha256":"80dfc500fc24a25f0c9fd2ed48a57e7a32f788744e8043a711a52c47e6f75a64","x":1.8772928714752197,"y":8.944826126098633},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"traitmech:000006","label":"pressure delta","page":"traits/environment/pressure_delta.html","source_path":"data/traits/environment/pressure_delta.yaml","text_sha256":"15015f68612d70ed9afda04a4dea6b67a51824eb911d88d6aa7eb4bd301a4ab3","x":-15.220954895019531,"y":-3.9135029315948486},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"traitmech:000120","label":"sarcina arrangement","page":"traits/morphology/sarcina_arrangement.html","source_path":"data/traits/morphology/sarcina_arrangement.yaml","text_sha256":"85e1b907a4fc4c799e0d2cdb342a4fa88ab183534e7d189fea160f1d8dade74b","x":0.24802574515342712,"y":10.990477561950684},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1000670","label":"curved shaped","page":"traits/morphology/curved_shaped.html","source_path":"data/traits/morphology/curved_shaped.yaml","text_sha256":"3ab898fc20cd8ef997fbb20248a5cac407325ae9e9be45e4968daaf697f1b9c3","x":-4.232510089874268,"y":11.15836238861084},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000453","label":"temperature range mid4","page":"traits/environment/temperature_range_mid4.html","source_path":"data/traits/environment/temperature_range_mid4.yaml","text_sha256":"24a539a4f4637328022d966ea957c578bb01a15e1e7488025fe3a16cce18d240","x":-14.466734886169434,"y":-5.171773910522461},{"adapter_version":"traitmech-semantic-v1","category":"ECOLOGY","identifier":"traitmech:000040","label":"symbiosis","page":"traits/ecology/symbiosis.html","source_path":"data/traits/ecology/symbiosis.yaml","text_sha256":"df52c3bbf556ec372ed6d608fd963141bf29f8b2448b4050e650c52c79d6967f","x":1.5973610877990723,"y":7.338514804840088},{"adapter_version":"traitmech-semantic-v1","category":"ECOLOGY","identifier":"traitmech:000055","label":"saprotrophy","page":"traits/ecology/saprotrophy.html","source_path":"data/traits/ecology/saprotrophy.yaml","text_sha256":"92fab1f1015b8125f8207ab687ed5efb15ed3b213dbf183084f2d1ab17258cc1","x":3.2668697834014893,"y":-4.079168319702148},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000054","label":"has growth temperature observation","page":"traits/metabolism/has_growth_temperature_observation.html","source_path":"data/traits/metabolism/has_growth_temperature_observation.yaml","text_sha256":"f771829239dc0a865bcd173aa32c6d833b62e8b615d522c3442af39343d0dc03","x":-1.7363749742507935,"y":-20.003395080566406},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"traitmech:000028","label":"ethanol fermentation","page":"traits/metabolism/ethanol_fermentation.html","source_path":"data/traits/metabolism/ethanol_fermentation.yaml","text_sha256":"5448f9f018bd36d5f14e22872c6e56e59ed18bfd7d21664a287101e888a1db1f","x":5.909164905548096,"y":-3.551969528198242},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"traitmech:000188","label":"anaerobic ammonium oxidation","page":"traits/metabolism/anaerobic_ammonium_oxidation.html","source_path":"data/traits/metabolism/anaerobic_ammonium_oxidation.yaml","text_sha256":"adb31bfeb9597f43e8bd1144e10ff5c2d2b5422795a5b47474ede92f5ea3e861","x":6.149896621704102,"y":-5.609415531158447},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"traitmech:000110","label":"biopolymer degradation","page":"traits/metabolism/biopolymer_degradation.html","source_path":"data/traits/metabolism/biopolymer_degradation.yaml","text_sha256":"72ee183cf4fd054331e7f518c25cab3b62f527ee1aa915e3c8ef3995ac7ca645","x":8.087315559387207,"y":-4.321447372436523},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"traitmech:000009","label":"UV radiation tolerant","page":"traits/environment/uv_radiation_tolerant.html","source_path":"data/traits/environment/uv_radiation_tolerant.yaml","text_sha256":"76edbabb771afc33af69c104945a43c6128b8da83b9b64c67ebdd08b4de7320e","x":-11.858020782470703,"y":-2.141932249069214},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000008","label":"uses as electron acceptor","page":"traits/metabolism/uses_as_electron_acceptor.html","source_path":"data/traits/metabolism/uses_as_electron_acceptor.yaml","text_sha256":"862f4693a83359a4bdb55c06f4ce03f6e46ab1add1e32418d94d08a7c944e3d7","x":10.472762107849121,"y":-5.092589378356934},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:1000805","label":"Electron transfer","page":"traits/metabolism/electron_transfer.html","source_path":"data/traits/metabolism/electron_transfer.yaml","text_sha256":"8fe965ca56a0ec3146137f71066d610b4242f0eecc42688905c942aad5d11e09","x":6.150710105895996,"y":-5.090455055236816},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000465","label":"NaCl optimum low","page":"traits/environment/nacl_optimum_low.html","source_path":"data/traits/environment/nacl_optimum_low.yaml","text_sha256":"d631bd5aefd92471c1b2422cbe6debdf166bbdd1d86bc7af12a11f863ed847d4","x":-14.926111221313477,"y":-3.082944393157959},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"traitmech:000027","label":"mixed-acid fermentation","page":"traits/metabolism/mixed_acid_fermentation.html","source_path":"data/traits/metabolism/mixed_acid_fermentation.yaml","text_sha256":"7b921e88b23fc870a079322d917236441666f415c1ee6a00b5456653a804a7ba","x":5.882266998291016,"y":-3.2885539531707764},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"traitmech:000138","label":"DNase activity","page":"traits/physiology/dnase_activity.html","source_path":"data/traits/physiology/dnase_activity.yaml","text_sha256":"cf4d4bf7e4d52bbfc79a476d076ac5ab9e26fec06f8e5e6a000d4b1dcf968175","x":7.772867202758789,"y":9.291447639465332},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000606","label":"obligately aerobic","page":"traits/environment/obligately_aerobic.html","source_path":"data/traits/environment/obligately_aerobic.yaml","text_sha256":"5909db55bc56dc8168d271623105e48e90a881cd9cf561e4d474ccaf7310d112","x":-11.427363395690918,"y":-4.064025402069092},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1000681","label":"rod shaped","page":"traits/morphology/rod_shaped.html","source_path":"data/traits/morphology/rod_shaped.yaml","text_sha256":"6c96344bfc75505e3b038bcfdde73eb539704b16a5b383868abdab2b745334b2","x":-4.135509967803955,"y":11.113096237182617},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"traitmech:000191","label":"acetoclastic methanogenesis","page":"traits/metabolism/acetoclastic_methanogenesis.html","source_path":"data/traits/metabolism/acetoclastic_methanogenesis.yaml","text_sha256":"11cf339ee05a06c092ac7b7666a09b4ac49483996d4c1eeee5b393b8ea78d098","x":4.958766460418701,"y":-4.208708763122559},{"adapter_version":"traitmech-semantic-v1","category":"GENOMICS","identifier":"traitmech:000092","label":"transposable element","page":"traits/genomics/transposable_element.html","source_path":"data/traits/genomics/transposable_element.yaml","text_sha256":"ff74f7f29628fee2c3f8ba5303b8b279791102f17a7b0a711463917f30dddf93","x":-0.29085299372673035,"y":7.797187805175781},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"traitmech:000154","label":"ornithine decarboxylase activity","page":"traits/physiology/ornithine_decarboxylase_activity.html","source_path":"data/traits/physiology/ornithine_decarboxylase_activity.yaml","text_sha256":"08b19677a88e1f8af2fd8e95d756b03176f8e0c02e9fcd22dcc2465a433f45de","x":8.199007987976074,"y":9.346370697021484},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1000702","label":"motile","page":"traits/morphology/motile.html","source_path":"data/traits/morphology/motile.yaml","text_sha256":"fd143d255458fbf886cfbf332c3a865ac08310966abd079ad971e5069cc0f14a","x":1.2611083984375,"y":11.514883995056152},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"traitmech:000164","label":"arginine dihydrolase activity","page":"traits/physiology/arginine_dihydrolase_activity.html","source_path":"data/traits/physiology/arginine_dihydrolase_activity.yaml","text_sha256":"ad84f8d27247a53cd95c471b5098c811abd7632bb8737aa02572c9c288a1d35c","x":8.259832382202148,"y":9.364194869995117},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000458","label":"pH optimum high","page":"traits/environment/ph_optimum_high.html","source_path":"data/traits/environment/ph_optimum_high.yaml","text_sha256":"fad84f7ed1107927d3d42f5012d10196f9916374e6ecd46f8121bd8809f106a2","x":-14.002092361450195,"y":-3.9964847564697266},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000601","label":"oxygen preference","page":"traits/environment/oxygen_preference.html","source_path":"data/traits/environment/oxygen_preference.yaml","text_sha256":"336d8bc4d181413a681d4b5da2642307ee64eff532ea8450bfc5b3aaa74bb88e","x":-11.543410301208496,"y":-4.012712001800537},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000484","label":"temperature delta low","page":"traits/environment/temperature_delta_low.html","source_path":"data/traits/environment/temperature_delta_low.yaml","text_sha256":"04fc92796703df140fd4f5fe1234f675d6592b706067f2a3076e5d0f79f94542","x":-15.572267532348633,"y":-4.477024555206299},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1003002","label":"alkaliphilic","page":"traits/environment/alkaphilic.html","source_path":"data/traits/environment/alkaphilic.yaml","text_sha256":"9f7c7a5c50ea7d37ed19d2b4f6dcade6a16f73c8f18b3f7f70c309c42ee48689","x":-12.999504089355469,"y":-3.572835683822632},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"traitmech:000133","label":"methanol oxidation","page":"traits/metabolism/methanol_oxidation.html","source_path":"data/traits/metabolism/methanol_oxidation.yaml","text_sha256":"eae4b1587ba035f3d92c3e141569836e0ee47063792ba7b609a07e3aca599453","x":6.726317882537842,"y":-4.770638942718506},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"traitmech:000018","label":"copper tolerant","page":"traits/environment/copper_tolerant.html","source_path":"data/traits/environment/copper_tolerant.yaml","text_sha256":"ca0401417a0b37592b81940ffe0efb0296be63a5ad5e628c403986479ece2133","x":-12.02499008178711,"y":-2.3481292724609375},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000046","label":"does not use for respiration","page":"traits/metabolism/does_not_use_for_respiration.html","source_path":"data/traits/metabolism/does_not_use_for_respiration.yaml","text_sha256":"9a3fe4122324b9c8f40cfa6c6bdc8afdc01366cb9956b7d0cb7329d8b98e1fdb","x":11.672202110290527,"y":-5.519221782684326},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000509","label":"has range NaCl observation","page":"traits/metabolism/has_range_nacl_observation.html","source_path":"data/traits/metabolism/has_range_nacl_observation.yaml","text_sha256":"88ae77935afdb449722b94b3a48b2100202645df6881f910bd5f5eb57b74dc4e","x":-2.0238635540008545,"y":-20.288333892822266},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:1000800","label":"respiration","page":"traits/metabolism/respiration.html","source_path":"data/traits/metabolism/respiration.yaml","text_sha256":"ac31103ab0e898dc25ddd3e5b7541f81c6973dfc7e0c05ff5019d1ab1718e2c7","x":6.401968955993652,"y":-5.327243804931641},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000056","label":"has temperature delta observation","page":"traits/metabolism/has_temperature_delta_observation.html","source_path":"data/traits/metabolism/has_temperature_delta_observation.yaml","text_sha256":"a399e5e3dfcf2642b1486df546bf2b2d43e26575ed792e7ead2a819a9469865a","x":-2.0477488040924072,"y":-19.80620765686035},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1003030","label":"yellow pigmented","page":"traits/morphology/yellow_pigmented.html","source_path":"data/traits/morphology/yellow_pigmented.yaml","text_sha256":"554ea10e6753ab00647456d1c7145d5f7c7f9128746bd60c4050b6dbc60d256a","x":2.7616562843322754,"y":9.744081497192383},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000486","label":"temperature delta mid2","page":"traits/environment/temperature_delta_mid2.html","source_path":"data/traits/environment/temperature_delta_mid2.yaml","text_sha256":"461614911c408fdd41ac117cca9b49938cbebb1eef6b647acce18a27f1919cbb","x":-15.2658109664917,"y":-4.626611232757568},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1000688","label":"coccobacillus shaped","page":"traits/morphology/coccobacillus_shaped.html","source_path":"data/traits/morphology/coccobacillus_shaped.yaml","text_sha256":"721940233a35d978bfaf43bc4f3385f563c7a340a8cd9f3568b377ec36264844","x":-4.185397624969482,"y":11.124919891357422},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000030","label":"does not build gas from","page":"traits/metabolism/does_not_build_gas_from.html","source_path":"data/traits/metabolism/does_not_build_gas_from.yaml","text_sha256":"35239aa0f3e16fad07bf03b2018d39b50bf3af1280d6bb297993cfbb8077470f","x":11.537601470947266,"y":-4.931832790374756},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"traitmech:000151","label":"beta-glucuronidase activity","page":"traits/physiology/beta_glucuronidase_activity.html","source_path":"data/traits/physiology/beta_glucuronidase_activity.yaml","text_sha256":"6f2d081cd9e41defac9894f8482ff226ab0195335737ea43d88ff2fe3808402a","x":7.997642993927002,"y":9.301630020141602},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"traitmech:000143","label":"leucine arylamidase activity","page":"traits/physiology/leucine_arylamidase_activity.html","source_path":"data/traits/physiology/leucine_arylamidase_activity.yaml","text_sha256":"c8a2923e90e5ceca83654e5060a1cebdd1eab586db8ffb97aa8dce8edd6be1b7","x":9.549995422363281,"y":9.555764198303223},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1005037","label":"subpolar flagellation","page":"traits/morphology/subpolar_flagellation.html","source_path":"data/traits/morphology/subpolar_flagellation.yaml","text_sha256":"dbf751f9fe39d269ce268ab1cfa60e23b5576261fc7a8d83d52fc92f804df15c","x":0.7696079015731812,"y":11.648238182067871},{"adapter_version":"traitmech-semantic-v1","category":"GENOMICS","identifier":"traitmech:000098","label":"genome size","page":"traits/genomics/genome_size.html","source_path":"data/traits/genomics/genome_size.yaml","text_sha256":"afffb29ec2cd8021a80893a44ca787cc53f7e0b5d8608454b87fbc445072ee96","x":-0.6164819598197937,"y":7.900821685791016},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"METPO:1000634","label":"chemoautolithotrophic","page":"traits/physiology/chemoautolithotrophic.html","source_path":"data/traits/physiology/chemoautolithotrophic.yaml","text_sha256":"e76fb285393cdef23a507578ca019e315ce1ad4920ebac901d03a0b91aba97df","x":2.422860622406006,"y":-4.667823314666748},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"traitmech:000121","label":"nitrogen respiration","page":"traits/metabolism/nitrogen_respiration.html","source_path":"data/traits/metabolism/nitrogen_respiration.yaml","text_sha256":"66e0cb9855a9d0a17e4b16119d523be7f6bbe5f52e0b31214e6186838ea33247","x":6.2810540199279785,"y":-5.682848930358887},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000331","label":"pH optimum","page":"traits/environment/ph_optimum.html","source_path":"data/traits/environment/ph_optimum.yaml","text_sha256":"f81166c620feef84df0b32d2f62bba0e6ae2f7227be66c16c5501f46f9014014","x":-14.307684898376465,"y":-3.9873855113983154},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"traitmech:000019","label":"carbon fixation","page":"traits/metabolism/carbon_fixation.html","source_path":"data/traits/metabolism/carbon_fixation.yaml","text_sha256":"9e0025f3f5eebffa83bec83110a757bd53cbe7cb93684b4e94e6fbcf6490e9c8","x":4.938020706176758,"y":-4.319964408874512},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000202","label":"produces","page":"traits/metabolism/produces.html","source_path":"data/traits/metabolism/produces.yaml","text_sha256":"5bee210dd1d7af1a8c47ae0edb75511a60b3afddb4f59e0a49e7da92a3743293","x":9.9542875289917,"y":-4.278194904327393},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000457","label":"pH optimum mid2","page":"traits/environment/ph_optimum_mid2.html","source_path":"data/traits/environment/ph_optimum_mid2.yaml","text_sha256":"01f393a4769afd44b532889a4579da3898dc92360cee37cdd776384e4f2249b5","x":-14.303204536437988,"y":-4.258813858032227},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000452","label":"temperature range mid3","page":"traits/environment/temperature_range_mid3.html","source_path":"data/traits/environment/temperature_range_mid3.yaml","text_sha256":"4eaa9f9adca151ae7803ce7e797451d2c20f39ca87a9a0d869921cba2fed3f8e","x":-14.438106536865234,"y":-5.119537353515625},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"METPO:1000644","label":"heterotrophic","page":"traits/physiology/heterotrophic.html","source_path":"data/traits/physiology/heterotrophic.yaml","text_sha256":"f83d3e5a384eb3a87c4c57f9186824b8ce1c177328189a13bed3079c337fde0a","x":2.9705233573913574,"y":-4.549492835998535},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:1000802","label":"Anaerobic respiration","page":"traits/metabolism/anaerobic_respiration.html","source_path":"data/traits/metabolism/anaerobic_respiration.yaml","text_sha256":"023ec19bf072e9377f94a32d17d00eb58208349b95c3222b54c6cf73566a32c0","x":6.29846715927124,"y":-5.831709384918213},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"traitmech:000178","label":"leucyl glycine arylamidase activity","page":"traits/physiology/leucyl_glycine_arylamidase_activity.html","source_path":"data/traits/physiology/leucyl_glycine_arylamidase_activity.yaml","text_sha256":"2f8ea6825a6ba634197c6add0ad72adef7a409eec6f8849b2c3c6c355c9ea1cb","x":9.429889678955078,"y":9.538203239440918},{"adapter_version":"traitmech-semantic-v1","category":"ECOLOGY","identifier":"METPO:1001101","label":"biosafety level","page":"traits/ecology/biosafety_level.html","source_path":"data/traits/ecology/biosafety_level.yaml","text_sha256":"26d7658589499ed0bf2e99305601f27e3703a55932b49b54bbc6562afd0aac21","x":1.6623799800872803,"y":8.590927124023438},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"traitmech:000189","label":"arsenite oxidation","page":"traits/metabolism/arsenite_oxidation.html","source_path":"data/traits/metabolism/arsenite_oxidation.yaml","text_sha256":"f6a17277f91d5062a8810a59eb199386392513854da22ec19972b70e9ce39d32","x":6.731272220611572,"y":-5.073300838470459},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000207","label":"transports","page":"traits/metabolism/transports.html","source_path":"data/traits/metabolism/transports.yaml","text_sha256":"e54e60dca5b1edd68f1781abad7be2960b28efa3195c826a11824a3e07686502","x":10.385077476501465,"y":-3.940505266189575},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1000672","label":"dumbbell shaped","page":"traits/morphology/dumbbell_shaped.html","source_path":"data/traits/morphology/dumbbell_shaped.yaml","text_sha256":"ab1211dccaca74552c4b278bb65e04b69331f93d71b61da74bd3a5e01fea725c","x":-4.177380084991455,"y":11.167488098144531},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"traitmech:000171","label":"histidine arylamidase activity","page":"traits/physiology/histidine_arylamidase_activity.html","source_path":"data/traits/physiology/histidine_arylamidase_activity.yaml","text_sha256":"b63b51fca77ec217ae8cf5d694b6c12b57c3dbb2e1ff47f4be972d8f2e221427","x":9.399445533752441,"y":9.53453254699707},{"adapter_version":"traitmech-semantic-v1","category":"OTHER","identifier":"METPO:1007080","label":"catalase test","page":"traits/other/catalase_test.html","source_path":"data/traits/other/catalase_test.yaml","text_sha256":"5894d2c43881b80f9b9eef7645ff7b08655b6f78fa0aa1cc3616092b621a2fe2","x":5.135756015777588,"y":9.131803512573242},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1003006","label":"obligately acidophilic","page":"traits/environment/obligately_acidophilic.html","source_path":"data/traits/environment/obligately_acidophilic.yaml","text_sha256":"122ffe94172111ecdb6b97ee5851a721dd388875f2159a19ace2f7b46efe29a8","x":-12.683453559875488,"y":-3.9635066986083984},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"traitmech:000022","label":"Wood-Ljungdahl pathway","page":"traits/metabolism/wood_ljungdahl_pathway.html","source_path":"data/traits/metabolism/wood_ljungdahl_pathway.yaml","text_sha256":"9c4584f28fd993377fe879d041eeffc91232f0ffdc22afb5a4acb54e72a12330","x":4.819919109344482,"y":-4.2692060470581055},{"adapter_version":"traitmech-semantic-v1","category":"GENOMICS","identifier":"traitmech:000097","label":"GC skew","page":"traits/genomics/gc_skew.html","source_path":"data/traits/genomics/gc_skew.yaml","text_sha256":"5558864f5452a3d1758ebc151b79fd52696b6ec9741f2273162515e675a2cd9e","x":-0.30902546644210815,"y":7.7547526359558105},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"METPO:1000642","label":"copiotrophic","page":"traits/physiology/copiotrophic.html","source_path":"data/traits/physiology/copiotrophic.yaml","text_sha256":"3b05f1e379a3a04a07c69f3f4a4521111fa90f2a9b06a1dfcacb693383826611","x":3.0842807292938232,"y":-4.265026092529297},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"traitmech:000026","label":"lactic acid fermentation","page":"traits/metabolism/lactic_acid_fermentation.html","source_path":"data/traits/metabolism/lactic_acid_fermentation.yaml","text_sha256":"9f8f24eadcb2efd8093532ad0bd89bfce420489f7498ffe4737695019a0e16fd","x":5.7514448165893555,"y":-3.318598747253418},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"traitmech:000073","label":"heterocyst","page":"traits/morphology/heterocyst.html","source_path":"data/traits/morphology/heterocyst.yaml","text_sha256":"38e8117814f3ffddab213eb53798f4a7aff6b7f198c35f330e8852926cc4622a","x":0.437677264213562,"y":9.56321907043457},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"traitmech:000008","label":"ionizing radiation tolerant","page":"traits/environment/ionizing_radiation_tolerant.html","source_path":"data/traits/environment/ionizing_radiation_tolerant.yaml","text_sha256":"cf1bf91ba904ab97689f1eb3b0bd9d520e1975a33e48465363e672096d2bd501","x":-11.943401336669922,"y":-2.201634407043457},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"traitmech:000103","label":"nitrogen fixation","page":"traits/metabolism/nitrogen_fixation.html","source_path":"data/traits/metabolism/nitrogen_fixation.yaml","text_sha256":"b99c8a291f2fc2fc00c65fe436945f8bf0722138ebd27efcd559e8b0f00491c3","x":5.486198425292969,"y":-5.1543426513671875},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1000677","label":"ovoid shaped","page":"traits/morphology/ovoid_shaped.html","source_path":"data/traits/morphology/ovoid_shaped.yaml","text_sha256":"9adf820f12b12d1c2840bc9d5fed01f5c2d810a7af13e1ebc93ec6f878387be4","x":-4.272999286651611,"y":11.151702880859375},{"adapter_version":"traitmech-semantic-v1","category":"ECOLOGY","identifier":"METPO:1001102","label":"biosafety level 1","page":"traits/ecology/biosafety_level_1.html","source_path":"data/traits/ecology/biosafety_level_1.yaml","text_sha256":"f509d118583245b16d0d258e12895ee01d687c22b48c1f3490c5348e0a27d45b","x":1.7240554094314575,"y":8.743863105773926},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1005032","label":"polar flagellation","page":"traits/morphology/polar_flagellation.html","source_path":"data/traits/morphology/polar_flagellation.yaml","text_sha256":"e6be67057e8d3f2289a2eb33f4dc7fb3dd536e3eafa6a6debfb48009835304d4","x":0.7259310483932495,"y":11.757054328918457},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1000692","label":"spindle shaped","page":"traits/morphology/spindle_shaped.html","source_path":"data/traits/morphology/spindle_shaped.yaml","text_sha256":"717f4380bf2159cab5842e90c1f7d34b9c6b701295b0ee51a2e3abd0b2ffec4d","x":-4.003222465515137,"y":11.114609718322754},{"adapter_version":"traitmech-semantic-v1","category":"GENOMICS","identifier":"METPO:1000429","label":"GC low","page":"traits/genomics/gc_low.html","source_path":"data/traits/genomics/gc_low.yaml","text_sha256":"c3157bbbf587dc02df2b2879c8a6e62215cb98a833b0d1f40a9f1c2853354e8a","x":-0.2095119208097458,"y":7.788612365722656},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000506","label":"has NaCl observation","page":"traits/metabolism/has_nacl_observation.html","source_path":"data/traits/metabolism/has_nacl_observation.yaml","text_sha256":"430d377a25f54ac4dcf8fff0ef8f8d432018f97b9467b55383416f5e3db096dc","x":-1.989466667175293,"y":-20.124937057495117},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000333","label":"NaCl optimum","page":"traits/environment/nacl_optimum.html","source_path":"data/traits/environment/nacl_optimum.yaml","text_sha256":"11739fbb346202008f2fba697c12314a60569db9d7fafbbbd2e163a78869d5e9","x":-14.82965087890625,"y":-3.3854827880859375},{"adapter_version":"traitmech-semantic-v1","category":"OBSERVATION","identifier":"METPO:1001023","label":"pH observation","page":"traits/observation/ph_observation.html","source_path":"data/traits/observation/ph_observation.yaml","text_sha256":"a45de3b48e1411164d7bee01e0560e28294a7fb755f9343ee4a9da34d3041908","x":-2.6727921962738037,"y":-19.670398712158203},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1000684","label":"spiral shaped","page":"traits/morphology/spiral_shaped.html","source_path":"data/traits/morphology/spiral_shaped.yaml","text_sha256":"fafb85711b66e5654beab431740fb299ebf103914be6b7bb3f6e7e9c4af33c73","x":-4.065756797790527,"y":11.084359169006348},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:1000801","label":"Aerobic respiration","page":"traits/metabolism/aerobic_respiration.html","source_path":"data/traits/metabolism/aerobic_respiration.yaml","text_sha256":"07b371edbd31f92fda020b1487db4bdc23b0d4000a20825aa60ee4330098a862","x":6.353587627410889,"y":-5.6745195388793945},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"traitmech:000002","label":"obligately piezophilic","page":"traits/environment/obligately_piezophilic.html","source_path":"data/traits/environment/obligately_piezophilic.yaml","text_sha256":"e6bc0e0e5d8f7b727f3aa1439f1c1f09637cdf65b2c49498c16693e7c6c7ed2f","x":-12.772314071655273,"y":-3.9849541187286377},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"traitmech:000069","label":"sulfur globule","page":"traits/morphology/sulfur_globule.html","source_path":"data/traits/morphology/sulfur_globule.yaml","text_sha256":"f4c6ea2afeda6e7e110cc20b972b694d48562be838caafd304da6495ad22cd5b","x":0.5653944611549377,"y":9.466947555541992},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"traitmech:000122","label":"nitrate respiration","page":"traits/metabolism/nitrate_respiration.html","source_path":"data/traits/metabolism/nitrate_respiration.yaml","text_sha256":"611032431bdfdcce9e1efc3fd50e27c5e7f6f15d994c5c79df1b91e298b0e773","x":6.210716247558594,"y":-5.788512706756592},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000629","label":"halophily preference","page":"traits/environment/halophily_preference.html","source_path":"data/traits/environment/halophily_preference.yaml","text_sha256":"a62efdf71e50171e9e8eddc44b751989b00a5bc8ef4bb860308cb5a18f416f9b","x":-13.402461051940918,"y":-2.549078941345215},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"traitmech:000190","label":"lipolysis","page":"traits/metabolism/lipolysis.html","source_path":"data/traits/metabolism/lipolysis.yaml","text_sha256":"4262263afb1069f0cf805ae9aabd0df3913e5edef8dd44f91462b93b2de7720f","x":7.656784534454346,"y":-4.292662143707275},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000616","label":"thermophilic","page":"traits/environment/thermophilic.html","source_path":"data/traits/environment/thermophilic.yaml","text_sha256":"d5faa3230957c2ee48e24cd0f1f0489181d51e56fca6e42b11e9c5a11ad37ca5","x":-13.093058586120605,"y":-4.364565849304199},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000611","label":"strictly anaerobic","page":"traits/environment/strictly_anaerobic.html","source_path":"data/traits/environment/strictly_anaerobic.yaml","text_sha256":"755f4d131d4766fa23c981ca0b0b713965866aa769cf5ac2eff18041fb34880c","x":-11.185258865356445,"y":-4.149878978729248},{"adapter_version":"traitmech-semantic-v1","category":"ECOLOGY","identifier":"METPO:1004004","label":"human pathogen","page":"traits/ecology/human_pathogen.html","source_path":"data/traits/ecology/human_pathogen.yaml","text_sha256":"98b5402e4b5b44b6b896ea961c7de67410ab246b6ff302efcfc2dc9a3a162e17","x":1.578843355178833,"y":8.30016803741455},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"traitmech:000021","label":"reductive tricarboxylic acid cycle","page":"traits/metabolism/reductive_tca_cycle.html","source_path":"data/traits/metabolism/reductive_tca_cycle.yaml","text_sha256":"0a72a59dbf023e24994a016e6aa5fc5b98f7ea7ee7f26e6e4115c5e3b7613c0c","x":4.731316089630127,"y":-4.272437572479248},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"traitmech:000086","label":"chemotaxis","page":"traits/physiology/chemotaxis.html","source_path":"data/traits/physiology/chemotaxis.yaml","text_sha256":"d61450f906e3fb0ac0b6363b46e1da27e34689ccaf7d7ea2a0d18a7a2fe67a43","x":1.196760654449463,"y":11.329785346984863},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"traitmech:000087","label":"natural competence","page":"traits/physiology/natural_competence.html","source_path":"data/traits/physiology/natural_competence.yaml","text_sha256":"c2363015eb327cdc14169c9320b7d7b6799e42dc02d2f81966d2e6f11e338406","x":0.6562617421150208,"y":8.298737525939941},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"traitmech:000155","label":"pyrrolidonyl arylamidase activity","page":"traits/physiology/pyrrolidonyl_arylamidase_activity.html","source_path":"data/traits/physiology/pyrrolidonyl_arylamidase_activity.yaml","text_sha256":"47879b006b152cb00ae22bba47a30a204808ac98fa57fadc55918c626457f919","x":9.453561782836914,"y":9.544380187988281},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"traitmech:000058","label":"lophotrichous","page":"traits/morphology/lophotrichous.html","source_path":"data/traits/morphology/lophotrichous.yaml","text_sha256":"93c3e2161e3e5285baec2d6f81f56f2476c35e4bb74cfe5c8e29ef97231975a6","x":0.27345722913742065,"y":11.585220336914062},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"traitmech:000003","label":"piezotolerant","page":"traits/environment/piezotolerant.html","source_path":"data/traits/environment/piezotolerant.yaml","text_sha256":"9fcea4a2a6c5d94d9783561d38f926e371706262a9e079537e5a91b9bd946c10","x":-12.579744338989258,"y":-3.3236265182495117},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000625","label":"slightly halophilic","page":"traits/environment/slightly_halophilic.html","source_path":"data/traits/environment/slightly_halophilic.yaml","text_sha256":"a08aa673d1994d60f5b09858206381e91cbbba2509c66a4be48c8a49ce7f77ef","x":-13.356450080871582,"y":-2.315171718597412},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000041","label":"does not use in other way","page":"traits/metabolism/does_not_use_in_other_way.html","source_path":"data/traits/metabolism/does_not_use_in_other_way.yaml","text_sha256":"dc07194b59d0fc067b632574635d094c1e9a732e153225cbcc2f218089f1f099","x":11.63663101196289,"y":-5.009822368621826},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000463","label":"pH range mid3","page":"traits/environment/ph_range_mid3.html","source_path":"data/traits/environment/ph_range_mid3.yaml","text_sha256":"b526d502000469b5a18a742f0736c45da344bf476e9d181fc63b620bd2063680","x":-14.917667388916016,"y":-4.208833694458008},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000103","label":"capable of","page":"traits/metabolism/capable_of.html","source_path":"data/traits/metabolism/capable_of.yaml","text_sha256":"17c91f97cca07e5ac43337c1b3a2e8cc2cbe6ffffd17db9bb131b4d80cde0294","x":9.853962898254395,"y":-4.210680961608887},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"traitmech:000033","label":"anaerobic oxidation of methane","page":"traits/metabolism/anaerobic_oxidation_of_methane.html","source_path":"data/traits/metabolism/anaerobic_oxidation_of_methane.yaml","text_sha256":"67ded7ba27e2bc39db377aee2a0ee5bcb809cf1c556e8c3457b72f4976ee75f4","x":6.164841175079346,"y":-5.1572585105896},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"traitmech:000036","label":"proteorhodopsin phototrophy","page":"traits/metabolism/proteorhodopsin_phototrophy.html","source_path":"data/traits/metabolism/proteorhodopsin_phototrophy.yaml","text_sha256":"b802189c8777a86062e9e1a67e82abac1c664dab69b497907f7c1e386a6b8cdd","x":3.9779531955718994,"y":-4.915462493896484},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1000682","label":"spore shaped","page":"traits/morphology/spore_shaped.html","source_path":"data/traits/morphology/spore_shaped.yaml","text_sha256":"da3f8d5749e4ba2644bde71ae56648673e034c4c12032c44fe3554d872c5be85","x":-3.8386423587799072,"y":11.026501655578613},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000483","label":"temperature delta very low","page":"traits/environment/temperature_delta_very_low.html","source_path":"data/traits/environment/temperature_delta_very_low.yaml","text_sha256":"6a14b7d293a0872a4457eaf3aaa84ef6d9a6465678b4864a4244bc6885025912","x":-15.37031078338623,"y":-4.7224836349487305},{"adapter_version":"traitmech-semantic-v1","category":"ECOLOGY","identifier":"traitmech:000048","label":"free-living","page":"traits/ecology/free_living.html","source_path":"data/traits/ecology/free_living.yaml","text_sha256":"6163e9d46989a69eafae3ef1c10ffe7888973c96ea31d8ad479e559090742f2f","x":1.5684411525726318,"y":7.444215297698975},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000459","label":"pH range very low","page":"traits/environment/ph_range_very_low.html","source_path":"data/traits/environment/ph_range_very_low.yaml","text_sha256":"1d155e996e503f497a0d22887b53f45274d9cbe472e9f9bd312eff51165b203c","x":-14.45273494720459,"y":-4.162643909454346},{"adapter_version":"traitmech-semantic-v1","category":"OTHER","identifier":"METPO:1007086","label":"oxidase negative","page":"traits/other/oxidase_negative.html","source_path":"data/traits/other/oxidase_negative.yaml","text_sha256":"750838b3cf2b6ab22f620c56d7a73bcdff7385236883917349141b2dce50136f","x":5.23177433013916,"y":9.142325401306152},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000018","label":"requires for growth","page":"traits/metabolism/requires_for_growth.html","source_path":"data/traits/metabolism/requires_for_growth.yaml","text_sha256":"a0893fc38f39507f8d390f9093e012796d107be316bdaf514e52fd58c08685d8","x":10.39334487915039,"y":-4.797617435455322},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000005","label":"builds gas from","page":"traits/metabolism/builds_gas_from.html","source_path":"data/traits/metabolism/builds_gas_from.yaml","text_sha256":"c6fe2280bd620f2a1660fbcb41182ae2fb11e7e06a9cb0888336294bbbddf60c","x":10.233373641967773,"y":-4.425828456878662},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000334","label":"NaCl range","page":"traits/environment/nacl_range.html","source_path":"data/traits/environment/nacl_range.yaml","text_sha256":"42252d1dfd15076eed41c41381c611e52bd815d5687c672013d69ba311c7b155","x":-15.159616470336914,"y":-3.27396297454834},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000456","label":"pH optimum mid1","page":"traits/environment/ph_optimum_mid1.html","source_path":"data/traits/environment/ph_optimum_mid1.yaml","text_sha256":"7c42cbf490664b67e0d9ac2a7c8bd1ae4e959acd3d07a2eb50f8e7d37470a8be","x":-14.470808029174805,"y":-4.118366718292236},{"adapter_version":"traitmech-semantic-v1","category":"ECOLOGY","identifier":"traitmech:000044","label":"nitrogen-fixing symbiosis","page":"traits/ecology/nitrogen_fixing_symbiosis.html","source_path":"data/traits/ecology/nitrogen_fixing_symbiosis.yaml","text_sha256":"1e4383f91f85debc4c714016a8afb8e0d4e5ad98a4a0fe6e4e31b8fdd15412bf","x":1.5116701126098633,"y":7.324589729309082},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"traitmech:000034","label":"oxygenic photosynthesis","page":"traits/metabolism/oxygenic_photosynthesis.html","source_path":"data/traits/metabolism/oxygenic_photosynthesis.yaml","text_sha256":"65349fb7fe7c3ca13ac013b60282ced8a7fc2d33c885bf4b833abbaa8713ba2f","x":3.981407642364502,"y":-5.384174346923828},{"adapter_version":"traitmech-semantic-v1","category":"OTHER","identifier":"METPO:1007062","label":"colony morphology","page":"traits/other/colony_morphology.html","source_path":"data/traits/other/colony_morphology.yaml","text_sha256":"dd4540ee6e1a8a6e2156f5d69821bee36cb5fc6f80b46a45833424ec031c8ac6","x":-0.6853618025779724,"y":9.993714332580566},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1000699","label":"gram negative","page":"traits/morphology/gram_negative.html","source_path":"data/traits/morphology/gram_negative.yaml","text_sha256":"71db01e4b41f7a007bbd067e7cfaa12bcc4264edbfaabe318d2855fb38387f1e","x":3.512996196746826,"y":9.178539276123047},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000535","label":"growth range phenotype with numerical limits","page":"traits/environment/growth_range_phenotype_with_numerical_limits.html","source_path":"data/traits/environment/growth_range_phenotype_with_numerical_limits.yaml","text_sha256":"1329f9f6a09ced02c0249fe60e99742431c9e0f94045094a2cccc4099ef08925","x":-14.77757740020752,"y":-3.9963274002075195},{"adapter_version":"traitmech-semantic-v1","category":"OTHER","identifier":"METPO:1007064","label":"circular colony","page":"traits/other/circular_colony.html","source_path":"data/traits/other/circular_colony.yaml","text_sha256":"7e319e711a0f1297176855cc1667759d8c97ec7f66ea24c984aaf8ea13989faf","x":-1.0929468870162964,"y":10.102622985839844},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000014","label":"uses as nitrogen source","page":"traits/metabolism/uses_as_nitrogen_source.html","source_path":"data/traits/metabolism/uses_as_nitrogen_source.yaml","text_sha256":"01789963c86d5e722af6d3533d93824f65c511f56413d53a5fecf42ca268f029","x":10.741487503051758,"y":-5.187063694000244},{"adapter_version":"traitmech-semantic-v1","category":"QUANTITATIVE_PROPERTY","identifier":"METPO:2000062","label":"is negative data","page":"traits/quantitative_property/is_negative_data.html","source_path":"data/traits/quantitative_property/is_negative_data.yaml","text_sha256":"afb233deb88f33eeb2b9dd810d4ae195a4a6960ea48bcab6ab34405cf1921cab","x":-2.119884967803955,"y":-19.085613250732422},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"traitmech:000061","label":"twitching motility","page":"traits/morphology/twitching_motility.html","source_path":"data/traits/morphology/twitching_motility.yaml","text_sha256":"708a8c9820149a93383722e637408f218b3356dfaf1f1ecfa1f264868f47a031","x":1.1635513305664062,"y":11.383291244506836},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000028","label":"does not build acid from","page":"traits/metabolism/does_not_build_acid_from.html","source_path":"data/traits/metabolism/does_not_build_acid_from.yaml","text_sha256":"91e1239448a62d94d8c89c8e8862a05697c29c09dff22cc17462f952b828dfe2","x":11.7800931930542,"y":-4.695298194885254},{"adapter_version":"traitmech-semantic-v1","category":"QUANTITATIVE_PROPERTY","identifier":"METPO:2000058","label":"has observed spot value","page":"traits/quantitative_property/has_observed_spot_value.html","source_path":"data/traits/quantitative_property/has_observed_spot_value.yaml","text_sha256":"78e6b6706e013de6a6c83c7f3d4df98a389bdb4801c8de73968c8f120262b05e","x":-2.014479875564575,"y":-19.409221649169922},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000721","label":"extreme hyperthermophilic","page":"traits/environment/extreme_hyperthermophilic.html","source_path":"data/traits/environment/extreme_hyperthermophilic.yaml","text_sha256":"f7db2d4c5d8c1e65fa0864ede7f110848156b104736ce0669e5677c51e3a4407","x":-13.237135887145996,"y":-4.245055198669434},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"traitmech:000112","label":"chitinolysis","page":"traits/metabolism/chitinolysis.html","source_path":"data/traits/metabolism/chitinolysis.yaml","text_sha256":"d4459b9545dc87a2aebc03881d6eb555f9ceacc74b6a3b867823c7a443380d25","x":8.298216819763184,"y":-4.2904486656188965},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000016","label":"oxidizes","page":"traits/metabolism/oxidizes.html","source_path":"data/traits/metabolism/oxidizes.yaml","text_sha256":"c8cd452ba32376a94b67dc84047201209bc598065dcbf7fe2699cf2d695c29bf","x":9.44976806640625,"y":-4.481117248535156},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"traitmech:000039","label":"dissimilatory metal reduction","page":"traits/metabolism/dissimilatory_metal_reduction.html","source_path":"data/traits/metabolism/dissimilatory_metal_reduction.yaml","text_sha256":"40e51c8571bcd982042169c4030e8ee3307ac0ac3efe2aba8cb212f6a9bf7cbb","x":6.246770858764648,"y":-5.557814121246338},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1000675","label":"flask shaped","page":"traits/morphology/flask_shaped.html","source_path":"data/traits/morphology/flask_shaped.yaml","text_sha256":"0a70ed4dc857275e908112440c96fc8b0d5aeac9ef64db9ce3fcced9bd4ff550","x":-4.278616905212402,"y":11.224157333374023},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000621","label":"haloalkaliphilic","page":"traits/environment/haloalkaliphilic.html","source_path":"data/traits/environment/haloalkaliphilic.yaml","text_sha256":"d9bea5c84e5dcdaaf5bc92dc2355e449db2e2e41b3f15310f3c87a6b334e7840","x":-12.936640739440918,"y":-2.5681488513946533},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"traitmech:000031","label":"dissimilatory iron reduction","page":"traits/metabolism/dissimilatory_iron_reduction.html","source_path":"data/traits/metabolism/dissimilatory_iron_reduction.yaml","text_sha256":"db91c1543e6f432f2cd3f976d736a320804e357fe10d1f6ab1194f7e9c7fe796","x":6.1729207038879395,"y":-5.537464141845703},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000461","label":"pH range mid1","page":"traits/environment/ph_range_mid1.html","source_path":"data/traits/environment/ph_range_mid1.yaml","text_sha256":"e2fcd7e5f96c12df1673fa46edbecf6d96a663d6caa8563420c33b88ab3a1e3d","x":-15.035737991333008,"y":-4.079249858856201},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1000882","label":"cell width","page":"traits/morphology/cell_width.html","source_path":"data/traits/morphology/cell_width.yaml","text_sha256":"180b1fb256665a93abc6bffd4fa69d2937f6219ff26d4faa1c5c74433ab90e50","x":-1.6600865125656128,"y":8.39484977722168},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000004","label":"builds base from","page":"traits/metabolism/builds_base_from.html","source_path":"data/traits/metabolism/builds_base_from.yaml","text_sha256":"dd7261a31389fc1cf3894eba09e0a04f6008fc446ab46c1eaaf090ff7c847f43","x":10.175198554992676,"y":-4.485625743865967},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000512","label":"has oxygen observation","page":"traits/metabolism/has_oxygen_observation.html","source_path":"data/traits/metabolism/has_oxygen_observation.yaml","text_sha256":"0c6b07103e2f3ed5f9235cc26a3c87aae6cb5f3b137f3737032195410844c773","x":-1.980309247970581,"y":-19.986618041992188},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000220","label":"does not disproportionate","page":"traits/metabolism/does_not_disproportionate.html","source_path":"data/traits/metabolism/does_not_disproportionate.yaml","text_sha256":"c6724d6f04759331bea0b92710c888ccba2757477617e04b096436a39b023e29","x":11.745917320251465,"y":-4.269803524017334},{"adapter_version":"traitmech-semantic-v1","category":"OTHER","identifier":"METPO:1005026","label":"hemolytic","page":"traits/other/hemolytic.html","source_path":"data/traits/other/hemolytic.yaml","text_sha256":"b195c9c1a649abf5fe5026477d0b4babdf1b26b36eef684263f97d3aaa5fa133","x":8.163857460021973,"y":-3.929753303527832},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"traitmech:000076","label":"oxidase activity","page":"traits/physiology/oxidase_activity.html","source_path":"data/traits/physiology/oxidase_activity.yaml","text_sha256":"399506551ca9877f718d06b8642c76fa1c92f7b9e3e0d3fa08e8db172a0341c8","x":7.197123050689697,"y":9.249152183532715},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1000703","label":"non motile","page":"traits/morphology/non_motile.html","source_path":"data/traits/morphology/non_motile.yaml","text_sha256":"ec5a6f275f6e37827bf1c799a72944c0ee1d29033784f66383a9c0f02d051a73","x":1.1892578601837158,"y":11.28803825378418},{"adapter_version":"traitmech-semantic-v1","category":"OTHER","identifier":"METPO:1007063","label":"colony shape","page":"traits/other/colony_shape.html","source_path":"data/traits/other/colony_shape.yaml","text_sha256":"f65dd6f3209b5973c9c14229f6f033f43ac29be7cc9fbfe221c32d7c9db09c66","x":-0.5105361938476562,"y":9.87952995300293},{"adapter_version":"traitmech-semantic-v1","category":"QUANTITATIVE_PROPERTY","identifier":"METPO:2000063","label":"observation data property","page":"traits/quantitative_property/observation_data_property.html","source_path":"data/traits/quantitative_property/observation_data_property.yaml","text_sha256":"e707c2ab7cfb1ccee51c4ac205c48ea610ccdb2005d4866bc3679527edf51102","x":-2.4093289375305176,"y":-19.531381607055664},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1000697","label":"gram stain","page":"traits/morphology/gram_stain.html","source_path":"data/traits/morphology/gram_stain.yaml","text_sha256":"5c0edfa29081ff9f1d012e7543014de0a796af9138d4909b58dac115dc98d376","x":1.7542165517807007,"y":9.357906341552734},{"adapter_version":"traitmech-semantic-v1","category":"GENOMICS","identifier":"traitmech:000101","label":"rRNA operon copy number","page":"traits/genomics/rrna_operon_copy_number.html","source_path":"data/traits/genomics/rrna_operon_copy_number.yaml","text_sha256":"27109d5ef70647c3a6b8a60fc73307fb8acb2e0ed7edbf60d6a95c20369668f9","x":0.17637678980827332,"y":8.1318359375},{"adapter_version":"traitmech-semantic-v1","category":"ECOLOGY","identifier":"traitmech:000045","label":"endosymbiosis","page":"traits/ecology/endosymbiosis.html","source_path":"data/traits/ecology/endosymbiosis.yaml","text_sha256":"ace08e7d6f12ac93c8a13a86468e9d42e02efadaba5d548323b9e14d33cdd57a","x":1.428668737411499,"y":7.534639835357666},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"METPO:1000649","label":"lithotrophic","page":"traits/physiology/lithotrophic.html","source_path":"data/traits/physiology/lithotrophic.yaml","text_sha256":"77085cf9793c2b3bff80d5d8f3130fdc7ebdde513f2d1142e08b2d962d009da9","x":2.690463066101074,"y":-4.616332530975342},{"adapter_version":"traitmech-semantic-v1","category":"UPPER","identifier":"METPO:1000059","label":"phenotype","page":"traits/upper/phenotype.html","source_path":"data/traits/upper/phenotype.yaml","text_sha256":"f3d5194ac71f6efac300575864f562a3a765be6c8e70209c2625b3a0ed826331","x":0.2647091746330261,"y":8.070070266723633},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1003023","label":"brown pigmented","page":"traits/morphology/brown_pigmented.html","source_path":"data/traits/morphology/brown_pigmented.yaml","text_sha256":"d10198c88bc81383994fc7e3142c1c65023694c879e4dc3c8de71e36db5099ff","x":2.6749300956726074,"y":9.857372283935547},{"adapter_version":"traitmech-semantic-v1","category":"GENOMICS","identifier":"traitmech:000096","label":"codon usage bias","page":"traits/genomics/codon_usage_bias.html","source_path":"data/traits/genomics/codon_usage_bias.yaml","text_sha256":"b30393d0b1919862cdad5868a32146960529933739f0c58efd333ca1aa706e1c","x":-0.3008325397968292,"y":7.7685770988464355},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000607","label":"obligately anaerobic","page":"traits/environment/obligately_anaerobic.html","source_path":"data/traits/environment/obligately_anaerobic.yaml","text_sha256":"a4ba0dec5286a4361d3e3de35e901ad1e80b1069dad99ad0aa48b5f3b8d533ad","x":-11.378250122070312,"y":-4.051515102386475},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"traitmech:000174","label":"naphthol-AS-BI-phosphohydrolase activity","page":"traits/physiology/naphthol_as_bi_phosphohydrolase_activity.html","source_path":"data/traits/physiology/naphthol_as_bi_phosphohydrolase_activity.yaml","text_sha256":"d2fff05075b011f93613a20f66578aecc73f12a8349456880f35278c1aa1c8cc","x":7.769083023071289,"y":9.268961906433105},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1003003","label":"acidophilic","page":"traits/environment/acidophilic.html","source_path":"data/traits/environment/acidophilic.yaml","text_sha256":"05aa161d658e72d3c57e205c942eb1912e341ad89d1cdaf1c725e51142f57c68","x":-13.047041893005371,"y":-3.9644110202789307},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000516","label":"has oxygen delta observation","page":"traits/metabolism/has_oxygen_delta_observation.html","source_path":"data/traits/metabolism/has_oxygen_delta_observation.yaml","text_sha256":"7c9cf9f5427b6fa1171a7f555360a96690d30bbb71e5eaef2f07bf7a546d2fe0","x":-2.251795530319214,"y":-20.01995849609375},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:1000806","label":"Disproportionation","page":"traits/metabolism/disproportionation.html","source_path":"data/traits/metabolism/disproportionation.yaml","text_sha256":"8dc966bb424dba7691c2d633c180aa58979c7b241a6b8e6504bff6b093e4823e","x":6.249913692474365,"y":-4.894359111785889},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"traitmech:000115","label":"starch degradation","page":"traits/metabolism/starch_degradation.html","source_path":"data/traits/metabolism/starch_degradation.yaml","text_sha256":"4255b22412b64c1b1b7da65acfd8a9bfc066f91dcaada262479d1665fdbf39a8","x":8.289098739624023,"y":-4.302764415740967},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000303","label":"temperature delta","page":"traits/environment/temperature_delta.html","source_path":"data/traits/environment/temperature_delta.yaml","text_sha256":"7cf6fda8708e70f5704d3e0d4681dfbcf8111bf1b5b79bbddbdf959193906810","x":-15.56137752532959,"y":-4.269968032836914},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"traitmech:000077","label":"urease activity","page":"traits/physiology/urease_activity.html","source_path":"data/traits/physiology/urease_activity.yaml","text_sha256":"f98388e8ebf4a823eace3471ca68d7c978ff1b674ec2c6f0671afa4d66572a17","x":7.741017818450928,"y":9.30350112915039},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000209","label":"exports","page":"traits/metabolism/exports.html","source_path":"data/traits/metabolism/exports.yaml","text_sha256":"1af56e21f33222b76ea5023d1935841535f17b4ad080c36ee1535ea0b186ba1e","x":10.266271591186523,"y":-4.2344512939453125},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"METPO:1000657","label":"photoheterotrophic","page":"traits/physiology/photoheterotrophic.html","source_path":"data/traits/physiology/photoheterotrophic.yaml","text_sha256":"b93875460acd52b289cc2c4c0ec2a46dcb568680b6a24dad4e6d4261e600530d","x":3.308506488800049,"y":-4.940351486206055},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1000701","label":"motility","page":"traits/morphology/motility.html","source_path":"data/traits/morphology/motility.yaml","text_sha256":"286f0257a4102c87fbc087c0526c8e1abeaa842023e6513684ed8d6cbf8a2a16","x":1.1219491958618164,"y":11.468134880065918},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000020","label":"uses as sulfur source","page":"traits/metabolism/uses_as_sulfur_source.html","source_path":"data/traits/metabolism/uses_as_sulfur_source.yaml","text_sha256":"36da541912f507f11a5b53665e808dc1a0bd1c595d35f88ba0a117fc0c7d0dec","x":10.246371269226074,"y":-5.108424186706543},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000052","label":"has temperature observation","page":"traits/metabolism/has_temperature_observation.html","source_path":"data/traits/metabolism/has_temperature_observation.yaml","text_sha256":"72cf0e8880a522af463098f705f34478dcb86100d2fcd7a87ce31e1c81db7927","x":-1.9557799100875854,"y":-19.822933197021484},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1003008","label":"acidotolerant","page":"traits/environment/acidotolerant.html","source_path":"data/traits/environment/acidotolerant.yaml","text_sha256":"6efd6f2a9ffd592432cc063496feeb34f623ee47e08314b3b21d7f1bb10ff602","x":-12.558713912963867,"y":-3.455317735671997},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"METPO:1000650","label":"methanotrophic","page":"traits/physiology/methanotrophic.html","source_path":"data/traits/physiology/methanotrophic.yaml","text_sha256":"41f0dca5386389150d765b3b8a5bc549367e91e55634fa0db22da89743e9664d","x":3.8687479496002197,"y":-4.252197742462158},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000010","label":"uses as energy source","page":"traits/metabolism/uses_as_energy_source.html","source_path":"data/traits/metabolism/uses_as_energy_source.yaml","text_sha256":"04363ffc4a1c7a81576e071d4cab194032b905554046a5c2cb1675925d4a6941","x":10.377464294433594,"y":-5.1444854736328125},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000017","label":"reduces","page":"traits/metabolism/reduces.html","source_path":"data/traits/metabolism/reduces.yaml","text_sha256":"1af51ecbaf4d654af601f8d8f4dd7d3cd69998b606007522eb59ee185225c10d","x":9.98979377746582,"y":-4.314426898956299},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1000668","label":"coccus shaped","page":"traits/morphology/coccus_shaped.html","source_path":"data/traits/morphology/coccus_shaped.yaml","text_sha256":"99f35bd2f89b0885e38e36923ff30ac19c522f19696004a84f5868d6b568cc0a","x":-4.281606197357178,"y":11.181167602539062},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"METPO:1000663","label":"chemoorganotrophic","page":"traits/physiology/chemoorganotrophic.html","source_path":"data/traits/physiology/chemoorganotrophic.yaml","text_sha256":"01db685d26760bb278a88f005203fc3ea55355fc6ed5c712467dc8ccfa79a1fd","x":2.571643829345703,"y":-4.62173318862915},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1000881","label":"cell length","page":"traits/morphology/cell_length.html","source_path":"data/traits/morphology/cell_length.yaml","text_sha256":"3dc08e386bad17ce2f3f699e1bf1a9fc3deb2c666d27f7dcd2b1e2e417a7b324","x":-1.377012848854065,"y":8.353293418884277},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"METPO:1000640","label":"chemoorganoheterotrophic","page":"traits/physiology/chemoorganoheterotrophic.html","source_path":"data/traits/physiology/chemoorganoheterotrophic.yaml","text_sha256":"1aa6ccec40364b15be758af3416e03a4719664ae490eb18cfa3512a68eecd9e6","x":2.535770893096924,"y":-4.640097618103027},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"traitmech:000078","label":"stress response","page":"traits/physiology/stress_response.html","source_path":"data/traits/physiology/stress_response.yaml","text_sha256":"427ea3e6c86d74b29c80c50217f9e2b682d3903e7895702cd8bad36f413f7df2","x":1.580987572669983,"y":9.087285995483398},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"traitmech:000181","label":"2,3-butanediol fermentation","page":"traits/metabolism/butanediol_fermentation.html","source_path":"data/traits/metabolism/butanediol_fermentation.yaml","text_sha256":"020fffb304542ff855d172017dee3a9266b1e9c0c4872ec9e9fad7e279d9d0ef","x":5.886116981506348,"y":-3.257699966430664},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000442","label":"temperature optimum low","page":"traits/environment/temperature_optimum_low.html","source_path":"data/traits/environment/temperature_optimum_low.yaml","text_sha256":"bebf90133dd2b9ceee56a9ca83bdcb98581a459f0c685b2ea5668c1c538a155e","x":-13.795124053955078,"y":-5.022008419036865},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"traitmech:000083","label":"spore germination","page":"traits/physiology/spore_germination.html","source_path":"data/traits/physiology/spore_germination.yaml","text_sha256":"39a89875b78513a08dca65d98cb1fe5696599184f6f9395d35bf3e604f217264","x":0.5777477025985718,"y":9.790873527526855},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"traitmech:000088","label":"antibiotic resistance","page":"traits/physiology/antibiotic_resistance.html","source_path":"data/traits/physiology/antibiotic_resistance.yaml","text_sha256":"1ac4f25d2326b650f09e0024662e8f04ce725c11119d23f83d02ed036c229133","x":1.3847094774246216,"y":8.828150749206543},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000627","label":"euryhaline","page":"traits/environment/euryhaline.html","source_path":"data/traits/environment/euryhaline.yaml","text_sha256":"6cd1778caad6a8bfdf60c77d1a4584279661ea948c88daba6f81562b78d77835","x":-13.094544410705566,"y":-2.4744133949279785},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"traitmech:000070","label":"gas vesicle","page":"traits/morphology/gas_vesicle.html","source_path":"data/traits/morphology/gas_vesicle.yaml","text_sha256":"91fa27f5723f722b42a608e3767b84e06f0660e203e78de4b099f57d8817252d","x":0.6071977615356445,"y":9.641897201538086},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"traitmech:000068","label":"polyphosphate granule","page":"traits/morphology/polyphosphate_granule.html","source_path":"data/traits/morphology/polyphosphate_granule.yaml","text_sha256":"7fb99e10838b548587374f87bbf630ff69ca6e0cfaf27213ceca156dcfc35bc6","x":1.190948247909546,"y":9.839118003845215},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000482","label":"NaCl delta high","page":"traits/environment/nacl_delta_high.html","source_path":"data/traits/environment/nacl_delta_high.yaml","text_sha256":"bc4c2e5365633e23c577390b2249d8a43dce910f82251753566e00b0f9c54aca","x":-15.354872703552246,"y":-3.4346556663513184},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000454","label":"temperature range high","page":"traits/environment/temperature_range_high.html","source_path":"data/traits/environment/temperature_range_high.yaml","text_sha256":"d591b700abdeb99f3cd5b70687d335f64502fb84df48aa2f01f8bde3b81c8883","x":-14.237948417663574,"y":-4.782974720001221},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000534","label":"delta phenotype with numerical limits","page":"traits/environment/delta_phenotype_with_numerical_limits.html","source_path":"data/traits/environment/delta_phenotype_with_numerical_limits.yaml","text_sha256":"49c7790f44519420bf1a84ac5a20913c453be89b63feb1d77bf7fcd0f21733e4","x":-15.261059761047363,"y":-4.021524429321289},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000448","label":"temperature range very low","page":"traits/environment/temperature_range_very_low.html","source_path":"data/traits/environment/temperature_range_very_low.yaml","text_sha256":"400b0c6949e2aa19c529e019c067959c2757f1023679863e9100bae62bf7da7b","x":-14.203216552734375,"y":-4.835953235626221},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"traitmech:000113","label":"xylan degradation","page":"traits/metabolism/xylan_degradation.html","source_path":"data/traits/metabolism/xylan_degradation.yaml","text_sha256":"5f8a0874e1b5b6b3a917fe1e471807f4ce2c93859f55f44c10414b2c64bb0f65","x":8.084391593933105,"y":-4.350555419921875},{"adapter_version":"traitmech-semantic-v1","category":"OTHER","identifier":"METPO:1007073","label":"osmotic tolerance","page":"traits/other/osmotic_tolerance.html","source_path":"data/traits/other/osmotic_tolerance.yaml","text_sha256":"bc2715a4934bd1050c6b7333eec2e136873ac4f5bc7b5c90c2f1e347fb0514db","x":-13.014263153076172,"y":-2.7699971199035645},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000503","label":"has range pH observation","page":"traits/metabolism/has_range_ph_observation.html","source_path":"data/traits/metabolism/has_range_ph_observation.yaml","text_sha256":"ee35edac90daec3532be920040411778caebd0216d9a006f0fab08f21ec2e389","x":-1.7560503482818604,"y":-20.147314071655273},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000502","label":"has growth pH observation","page":"traits/metabolism/has_growth_ph_observation.html","source_path":"data/traits/metabolism/has_growth_ph_observation.yaml","text_sha256":"b00afe48ad8683f9d547f1d9c1079e60c5d10050f4a93c395c8e073359f002bd","x":-1.9175772666931152,"y":-20.15254783630371},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000626","label":"stenohaline","page":"traits/environment/stenohaline.html","source_path":"data/traits/environment/stenohaline.yaml","text_sha256":"2cf34bd3b8b72971d01ebc40944759397dbca96b2c7af31401a924e952ce9adc","x":-13.27945613861084,"y":-2.3860511779785156},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"traitmech:000157","label":"beta-N-acetylhexosaminidase activity","page":"traits/physiology/beta_n_acetylhexosaminidase_activity.html","source_path":"data/traits/physiology/beta_n_acetylhexosaminidase_activity.yaml","text_sha256":"0500d76766fcb34d9cb47300991e450aed82ca9923d7ea6316da55b70220fbfd","x":8.147397994995117,"y":9.329447746276855},{"adapter_version":"traitmech-semantic-v1","category":"ECOLOGY","identifier":"traitmech:000054","label":"predatory bacterium","page":"traits/ecology/predatory_bacterium.html","source_path":"data/traits/ecology/predatory_bacterium.yaml","text_sha256":"ae2ca539dba10bb9c490f5494652d6c0386b4a56f319fb8d4de17542b4c7e0a4","x":1.346779465675354,"y":8.17338752746582},{"adapter_version":"traitmech-semantic-v1","category":"OTHER","identifier":"traitmech:000177","label":"specialist","page":"traits/other/specialist.html","source_path":"data/traits/other/specialist.yaml","text_sha256":"76889405d38fcdfddd559f38064e0270954da8e1230e1e1a32f38c74eac54604","x":0.8354772925376892,"y":7.942120552062988},{"adapter_version":"traitmech-semantic-v1","category":"OTHER","identifier":"METPO:1005017","label":"Voges-Proskauer test positive","page":"traits/other/voges_proskauer_test_positive.html","source_path":"data/traits/other/voges_proskauer_test_positive.yaml","text_sha256":"3a8afa833990e31954f6e1ef9808b9b11990d2d4c3fc8a82d69525eeb867070c","x":4.5697126388549805,"y":9.129770278930664},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"traitmech:000118","label":"staphylococcus arrangement","page":"traits/morphology/staphylococcus_arrangement.html","source_path":"data/traits/morphology/staphylococcus_arrangement.yaml","text_sha256":"ea0278585e621f5b3f855d7aac751fea043d5575add03b1bdf7e27f4867830d3","x":0.2853004038333893,"y":11.15206527709961},{"adapter_version":"traitmech-semantic-v1","category":"ECOLOGY","identifier":"METPO:1001104","label":"biosafety level 3","page":"traits/ecology/biosafety_level_3.html","source_path":"data/traits/ecology/biosafety_level_3.yaml","text_sha256":"3fd0ac6d5cbb663f063466c430b14cc25656b5f6d5b21b388fdc8a00ad4abf9f","x":1.8679226636886597,"y":8.651070594787598},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000473","label":"pH delta very low","page":"traits/environment/ph_delta_very_low.html","source_path":"data/traits/environment/ph_delta_very_low.yaml","text_sha256":"9c0170070355c0f7a85a0d126ae246721b5655ae263eeae42b4409fa48e38c0a","x":-15.39183235168457,"y":-4.105403423309326},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"METPO:1000659","label":"photoorganoheterotrophic","page":"traits/physiology/photoorganoheterotrophic.html","source_path":"data/traits/physiology/photoorganoheterotrophic.yaml","text_sha256":"16d3f2fb05394b45a11d880886655ccc52273425f39e8c259363e3e3a0880c0f","x":3.08489727973938,"y":-4.961772441864014},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000021","label":"does not use for aerobic catabolization","page":"traits/metabolism/does_not_use_for_aerobic_catabolization.html","source_path":"data/traits/metabolism/does_not_use_for_aerobic_catabolization.yaml","text_sha256":"0e3e7b9c3251c87ab012764c1ddead3e4c1aca031902fec5e863338057a63387","x":11.357125282287598,"y":-6.039764881134033},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"traitmech:000105","label":"dissimilatory sulfate reduction","page":"traits/metabolism/dissimilatory_sulfate_reduction.html","source_path":"data/traits/metabolism/dissimilatory_sulfate_reduction.yaml","text_sha256":"c2cbdd70a657e31db7e1f28e410edaf0fad7c41544ca29435db25f362ebcc497","x":6.529877662658691,"y":-5.984809398651123},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000466","label":"NaCl optimum mid1","page":"traits/environment/nacl_optimum_mid1.html","source_path":"data/traits/environment/nacl_optimum_mid1.yaml","text_sha256":"ce11c286f121ab3fa918490fa8fde30779c202d43197509ad5666086d30492b1","x":-15.054351806640625,"y":-3.1162843704223633},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000022","label":"does not use for aerobic growth","page":"traits/metabolism/does_not_use_for_aerobic_growth.html","source_path":"data/traits/metabolism/does_not_use_for_aerobic_growth.yaml","text_sha256":"83fd5083684a93e2a48cda3b1468ed104aa6f90dd9aad16fef3db70d34528cfb","x":11.379595756530762,"y":-5.975531101226807},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000446","label":"temperature optimum mid4","page":"traits/environment/temperature_optimum_mid4.html","source_path":"data/traits/environment/temperature_optimum_mid4.yaml","text_sha256":"d2d4dc0a1cffe4f0136f51a8c05d2d15fe482ea07d7676e078c4023a1842479d","x":-14.040533065795898,"y":-5.086159706115723},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000302","label":"shows activity of","page":"traits/metabolism/shows_activity_of.html","source_path":"data/traits/metabolism/shows_activity_of.yaml","text_sha256":"76cf82d726975844a8da1013ced077a8b147f33ffb0ffb8be912f8582fb7b1dc","x":10.058632850646973,"y":-3.9608945846557617},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000510","label":"has NaCl delta observation","page":"traits/metabolism/has_nacl_delta_observation.html","source_path":"data/traits/metabolism/has_nacl_delta_observation.yaml","text_sha256":"4690a7fdc63c014ea036cfba6cb0835ddfe6316740eb47ca58c989845c8a80a3","x":-2.3239500522613525,"y":-20.147851943969727},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"traitmech:000012","label":"metal tolerant","page":"traits/environment/metal_tolerant.html","source_path":"data/traits/environment/metal_tolerant.yaml","text_sha256":"a39f5d4d7339a707088730e32795c8967cd534e637317a352fb54d5d157ac3be","x":-11.972912788391113,"y":-2.25813889503479},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"traitmech:000071","label":"magnetosome","page":"traits/morphology/magnetosome.html","source_path":"data/traits/morphology/magnetosome.yaml","text_sha256":"da18a27949f63f1ba5a68d3a930e05b18cdf48c634fc0bb0dbf9787900995b30","x":0.7118955850601196,"y":9.538508415222168},{"adapter_version":"traitmech-semantic-v1","category":"OTHER","identifier":"METPO:1007068","label":"rhizoid colony","page":"traits/other/rhizoid_colony.html","source_path":"data/traits/other/rhizoid_colony.yaml","text_sha256":"1a9aeafb80249f58b14f4bb2f80fc1f843d5affd45c47a0b4624e2cf65e010b1","x":-0.5014766454696655,"y":10.047542572021484},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1003009","label":"alkalotolerant","page":"traits/environment/alkalotolerant.html","source_path":"data/traits/environment/alkalotolerant.yaml","text_sha256":"6cf8836febac713b8170024edd0b65e8dd9fdd98e772c1dbdf0390b6e27cb74e","x":-12.612133979797363,"y":-3.1624579429626465},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"traitmech:000195","label":"arsenate respiration","page":"traits/metabolism/arsenate_respiration.html","source_path":"data/traits/metabolism/arsenate_respiration.yaml","text_sha256":"ece016533a061ff79620699f4d51dd6b46d9091b8a542b225e2626cca938b5cb","x":6.367295265197754,"y":-5.719868183135986},{"adapter_version":"traitmech-semantic-v1","category":"OBSERVATION","identifier":"METPO:1001020","label":"oxygen observation","page":"traits/observation/oxygen_observation.html","source_path":"data/traits/observation/oxygen_observation.yaml","text_sha256":"99248cd40084ded3735ff0dba7fd50160dcceb731fcc1c008a445b9221168bba","x":-2.472456216812134,"y":-19.819602966308594},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000027","label":"does not assimilate","page":"traits/metabolism/does_not_assimilate.html","source_path":"data/traits/metabolism/does_not_assimilate.yaml","text_sha256":"99ffd34d0e9a069be49512279da0436229110eaf27220eff867a845f768ec98f","x":11.57037353515625,"y":-4.430692672729492},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000033","label":"does not degrade","page":"traits/metabolism/does_not_degrade.html","source_path":"data/traits/metabolism/does_not_degrade.yaml","text_sha256":"a24affc63fa05aec1ea0be3c58cc3745a300630dd2e1e2e069a88a965c6467ae","x":11.560835838317871,"y":-4.4261956214904785},{"adapter_version":"traitmech-semantic-v1","category":"OTHER","identifier":"METPO:1007065","label":"irregular colony","page":"traits/other/irregular_colony.html","source_path":"data/traits/other/irregular_colony.yaml","text_sha256":"5f6e5fd6f3f418adba629b426b9e110fcb0048c0fee60ecc3d8b48709206258b","x":-0.48411884903907776,"y":9.989398956298828},{"adapter_version":"traitmech-semantic-v1","category":"OBSERVATION","identifier":"METPO:1001014","label":"pH delta observation","page":"traits/observation/ph_delta_observation.html","source_path":"data/traits/observation/ph_delta_observation.yaml","text_sha256":"376c3525314e1693a0d1b2a026d2e86bc0fab673e6d6dcccfc6b2ea3254c3d60","x":-2.708753824234009,"y":-19.734262466430664},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000306","label":"temperature range","page":"traits/environment/temperature_range.html","source_path":"data/traits/environment/temperature_range.yaml","text_sha256":"405141a2f48a8148f291afb12237398a595babc45b2c82ab68a4bf2e047c518d","x":-14.683037757873535,"y":-4.58447265625},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1000687","label":"branched shaped","page":"traits/morphology/branched_shaped.html","source_path":"data/traits/morphology/branched_shaped.yaml","text_sha256":"7743db54e5dd2210cd6db55e6a69983c5763cf716e8189fee02f407f3785cab0","x":-4.102949619293213,"y":11.108638763427734},{"adapter_version":"traitmech-semantic-v1","category":"ECOLOGY","identifier":"METPO:1004003","label":"plant pathogen","page":"traits/ecology/plant_pathogen.html","source_path":"data/traits/ecology/plant_pathogen.yaml","text_sha256":"333980f3c83832f742e6dd2f873034e8b329c56987dbbef95961987d03278e88","x":1.6097452640533447,"y":8.038878440856934},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"METPO:1000648","label":"lithoheterotrophic","page":"traits/physiology/lithoheterotrophic.html","source_path":"data/traits/physiology/lithoheterotrophic.yaml","text_sha256":"d10f9fe7ff399cbf0f83b46d40ea7db7c77c45782b0d2dd301659f5da14910fa","x":2.660902261734009,"y":-4.714666843414307},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000037","label":"does not ferment","page":"traits/metabolism/does_not_ferment.html","source_path":"data/traits/metabolism/does_not_ferment.yaml","text_sha256":"1657fe15801b6db5b102caac6641beaa55fafb439195ed6c6b8fbdd3e5494294","x":11.719046592712402,"y":-4.635462760925293},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:1000845","label":"Acetogenesis","page":"traits/metabolism/acetogenesis.html","source_path":"data/traits/metabolism/acetogenesis.yaml","text_sha256":"b065afddb50488a6d8504136b215caa2fd9cdcd1c5a5630c93808da2b322c4a1","x":5.4006195068359375,"y":-3.7320711612701416},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000303","label":"does not show activity of","page":"traits/metabolism/does_not_show_activity_of.html","source_path":"data/traits/metabolism/does_not_show_activity_of.yaml","text_sha256":"8ddd8f618132e2e84e9ec770826026bd68de5de64a552ac807545eaeb6b99edc","x":11.172619819641113,"y":-4.234276294708252},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"traitmech:000126","label":"thiosulfate respiration","page":"traits/metabolism/thiosulfate_respiration.html","source_path":"data/traits/metabolism/thiosulfate_respiration.yaml","text_sha256":"402e0dc80b43ad3e9d14a6d7454dee976719c20e45f08f779074e7f44ade063a","x":6.571928024291992,"y":-5.849992752075195},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"traitmech:000111","label":"cellulolysis","page":"traits/metabolism/cellulolysis.html","source_path":"data/traits/metabolism/cellulolysis.yaml","text_sha256":"8a1e4987079bebd3fc0664570ca23c8f3cc71e63cc25e6a4fec1215f0735278d","x":8.241520881652832,"y":-4.277781963348389},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1000887","label":"cell width very small","page":"traits/morphology/cell_width_very_small.html","source_path":"data/traits/morphology/cell_width_very_small.yaml","text_sha256":"0d8f791fa6d38ead32e1b6cd69b786cf78420bd73d32f20b0050d68c197dc0b8","x":-1.549127221107483,"y":8.288758277893066},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000025","label":"does not use for anaerobic growth in the dark","page":"traits/metabolism/does_not_use_for_anaerobic_growth_in_the_dark.html","source_path":"data/traits/metabolism/does_not_use_for_anaerobic_growth_in_the_dark.yaml","text_sha256":"6092f25aa878f8c5289597bb10667f4a8eb7c308cf2241dbe23f8d4ad9d316b8","x":11.352129936218262,"y":-6.1313629150390625},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000624","label":"non halophilic","page":"traits/environment/non_halophilic.html","source_path":"data/traits/environment/non_halophilic.yaml","text_sha256":"5543b9102679bffac46557bc27d3a8502e545cb2e1f47d40ace84cf47c9e2795","x":-13.022778511047363,"y":-2.396627187728882},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1003026","label":"orange pigmented","page":"traits/morphology/orange_pigmented.html","source_path":"data/traits/morphology/orange_pigmented.yaml","text_sha256":"e9827fd5d9ed0784420fba9d4a80b820b982ac530799903169d475eb47bcac9e","x":2.7135519981384277,"y":9.809430122375488},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"METPO:1000652","label":"mixotrophic","page":"traits/physiology/mixotrophic.html","source_path":"data/traits/physiology/mixotrophic.yaml","text_sha256":"61f46ac5eb0ad5345e095d4273b57a542e827f0dee59c12f8c48cc7e93edf092","x":2.946934461593628,"y":-4.489974498748779},{"adapter_version":"traitmech-semantic-v1","category":"OBSERVATION","identifier":"METPO:1001012","label":"growth pH observation","page":"traits/observation/growth_ph_observation.html","source_path":"data/traits/observation/growth_ph_observation.yaml","text_sha256":"9bef28071fb1f5bac355984e9451a505a88884abd8b27f8c5dd7fc759954286c","x":-2.6988015174865723,"y":-19.594850540161133},{"adapter_version":"traitmech-semantic-v1","category":"ECOLOGY","identifier":"traitmech:000049","label":"host-associated","page":"traits/ecology/host_associated.html","source_path":"data/traits/ecology/host_associated.yaml","text_sha256":"7c98ab5023ac45d1678f497a65d28bf5935848056b1623d9583d7dde767b85d2","x":1.5711146593093872,"y":7.300313949584961},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000200","label":"disproportionates","page":"traits/metabolism/disproportionates.html","source_path":"data/traits/metabolism/disproportionates.yaml","text_sha256":"be3b325c0d3eeb49d50eb0fcde84948ee26969d216d3eceb707ae9b304f123f9","x":9.890510559082031,"y":-4.2273335456848145},{"adapter_version":"traitmech-semantic-v1","category":"OTHER","identifier":"METPO:1005013","label":"methyl red test","page":"traits/other/methyl_red_test.html","source_path":"data/traits/other/methyl_red_test.yaml","text_sha256":"099e2255d27f34b102887a4c79c4defd1529f29c4ef2386d5fbb4e4d6de3d9a4","x":4.413515567779541,"y":9.163995742797852},{"adapter_version":"traitmech-semantic-v1","category":"OTHER","identifier":"METPO:1005010","label":"indole test","page":"traits/other/indole_test.html","source_path":"data/traits/other/indole_test.yaml","text_sha256":"afecf04cae6a92c972d276f511eff9bc628dee3ec7004d3ade93ebf17b457b7c","x":4.518448829650879,"y":9.129440307617188},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"traitmech:000085","label":"bioluminescence","page":"traits/physiology/bioluminescence.html","source_path":"data/traits/physiology/bioluminescence.yaml","text_sha256":"33f09ff395db6f3de40b761047a843224654382ec055140da12584819fc3a384","x":1.7864389419555664,"y":9.364144325256348},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000620","label":"halophilic","page":"traits/environment/halophilic.html","source_path":"data/traits/environment/halophilic.yaml","text_sha256":"32adc988640f1a972a05e703e8ca086bd066eb1d7b8d25967abe4e8fa61cef32","x":-13.017711639404297,"y":-2.3762712478637695},{"adapter_version":"traitmech-semantic-v1","category":"OBSERVATION","identifier":"METPO:1001008","label":"NaCl delta observation","page":"traits/observation/nacl_delta_observation.html","source_path":"data/traits/observation/nacl_delta_observation.yaml","text_sha256":"cb36ddde049f5d87979b6e7c7f4c4cc5094372fe05eae8a78ddaae300e584d16","x":-2.8165557384490967,"y":-19.880006790161133},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1003007","label":"facultatively acidophilic","page":"traits/environment/facultatively_acidophilic.html","source_path":"data/traits/environment/facultatively_acidophilic.yaml","text_sha256":"b44d3206eb3b17e7c4c3246cd9856373ef0c5b9fb3eee05ae9a7c70c04fce1be","x":-12.949597358703613,"y":-3.9370079040527344},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000477","label":"pH delta mid3","page":"traits/environment/ph_delta_mid3.html","source_path":"data/traits/environment/ph_delta_mid3.yaml","text_sha256":"1036aad152695b2d7daf350dc964506d90389693b9e336afebdf1ab719a9a790","x":-15.411925315856934,"y":-4.0518879890441895},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"traitmech:000124","label":"respiration of sulfur compounds","page":"traits/metabolism/respiration_of_sulfur_compounds.html","source_path":"data/traits/metabolism/respiration_of_sulfur_compounds.yaml","text_sha256":"0bb90a03ab29b7b703dcc490f399a6e95c3f364b44614e4a630474bcc170f0d0","x":6.509250640869141,"y":-5.815633296966553},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000001","label":"organism interacts with chemical","page":"traits/metabolism/organism_interacts_with_chemical.html","source_path":"data/traits/metabolism/organism_interacts_with_chemical.yaml","text_sha256":"fc3b0687cd642f5f10bc13b9647267a574c46107873d749ffb61aa9d233fb025","x":10.242412567138672,"y":-4.663369655609131},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"traitmech:000176","label":"magnetotaxis","page":"traits/physiology/magnetotaxis.html","source_path":"data/traits/physiology/magnetotaxis.yaml","text_sha256":"f21611d96551a548eb2ff93cded301b6dd0f5e89dda25dec0a425e68b8c63e89","x":1.1246848106384277,"y":11.187078475952148},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1000689","label":"disc shaped","page":"traits/morphology/disc_shaped.html","source_path":"data/traits/morphology/disc_shaped.yaml","text_sha256":"50092a19791edc1e1e3203ff1a3863609a54e6856485f002ac2c127cdc910df5","x":-4.222553730010986,"y":11.166563987731934},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000485","label":"temperature delta mid1","page":"traits/environment/temperature_delta_mid1.html","source_path":"data/traits/environment/temperature_delta_mid1.yaml","text_sha256":"8d2c7e49f1cbfa792af3425e37f7225c375ad3f9d6b5baceebde7b23a62cd182","x":-15.622591018676758,"y":-4.58788537979126},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"traitmech:000082","label":"persister cell formation","page":"traits/physiology/persister_cell_formation.html","source_path":"data/traits/physiology/persister_cell_formation.yaml","text_sha256":"61eed957ff18dad2bd68f0253baa5995661291021ac299a0deb500ec41bfcbe2","x":0.45347124338150024,"y":9.459144592285156},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000026","label":"does not use for anaerobic growth with light","page":"traits/metabolism/does_not_use_for_anaerobic_growth_with_light.html","source_path":"data/traits/metabolism/does_not_use_for_anaerobic_growth_with_light.yaml","text_sha256":"de47dfde719e589a90d90370993e762a511d69ef42361a78bb89ee83d71d0152","x":11.411600112915039,"y":-6.239360809326172},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"traitmech:000109","label":"fermentative hydrogen production","page":"traits/metabolism/fermentative_hydrogen_production.html","source_path":"data/traits/metabolism/fermentative_hydrogen_production.yaml","text_sha256":"f6994fa132be15e709197fbfd4e5985fc19da359f9012fa27a170588a458e6ee","x":5.5854339599609375,"y":-3.586446523666382},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"traitmech:000184","label":"holdfast","page":"traits/morphology/holdfast.html","source_path":"data/traits/morphology/holdfast.yaml","text_sha256":"dd79ad3e7c52cf7b55bab8347f1d1a47f580bf85fb6b23a95dd0cee13d3b16d6","x":0.6749148964881897,"y":9.732020378112793},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:1002005","label":"Fermentation","page":"traits/metabolism/fermentation.html","source_path":"data/traits/metabolism/fermentation.yaml","text_sha256":"bf67ef9895980e87c9c69156a2d8f01c5dcdfdef5a19a03938cdfb3e858716d8","x":6.0972065925598145,"y":-3.704645872116089},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"traitmech:000185","label":"akinete","page":"traits/morphology/akinete.html","source_path":"data/traits/morphology/akinete.yaml","text_sha256":"15c684f7b9842d4da993b29bdf6eb84cd7fbef222112e900b821e1bf5e2a55aa","x":0.4832465350627899,"y":9.895297050476074},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"traitmech:000013","label":"cadmium tolerant","page":"traits/environment/cadmium_tolerant.html","source_path":"data/traits/environment/cadmium_tolerant.yaml","text_sha256":"1ce530f5f17164646a06f653ce990c169cf4602432b823e8c22d46ddff369fcb","x":-11.994425773620605,"y":-2.281475067138672},{"adapter_version":"traitmech-semantic-v1","category":"OBSERVATION","identifier":"METPO:1001015","label":"pH range observation","page":"traits/observation/ph_range_observation.html","source_path":"data/traits/observation/ph_range_observation.yaml","text_sha256":"49c0298b2a293cb341054c620a53cdcd92a20b9807eaa3aa17c6850ec2608fa0","x":-2.7991411685943604,"y":-19.74928855895996},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000443","label":"temperature optimum mid1","page":"traits/environment/temperature_optimum_mid1.html","source_path":"data/traits/environment/temperature_optimum_mid1.yaml","text_sha256":"a7026914a871b703e6fe2c0d6f6adb828240e32d60d2f5d05be4d96cc619ab6c","x":-14.125404357910156,"y":-5.111835956573486},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000048","label":"uses for anaerobic catabolization","page":"traits/metabolism/uses_for_anaerobic_catabolization.html","source_path":"data/traits/metabolism/uses_for_anaerobic_catabolization.yaml","text_sha256":"448713e6c38cec3ceab9134a7b8079c77a030d5e87565078f207be94e48f646e","x":10.365277290344238,"y":-6.14599084854126},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"traitmech:000183","label":"bacteriocin production","page":"traits/physiology/bacteriocin_production.html","source_path":"data/traits/physiology/bacteriocin_production.yaml","text_sha256":"ae9d859dde4adbfca3f77ca42766949cf6dca4bbcdbc8849369cf1cf1f9bff86","x":1.4212430715560913,"y":9.056412696838379},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000602","label":"aerobic","page":"traits/environment/aerobic.html","source_path":"data/traits/environment/aerobic.yaml","text_sha256":"9df217260719273a3a3a6d1b31af7207a5a1f9c527e27f529cf2e20fa218ee1f","x":-11.264642715454102,"y":-4.095033168792725},{"adapter_version":"traitmech-semantic-v1","category":"GENOMICS","identifier":"traitmech:000094","label":"CRISPR-Cas system","page":"traits/genomics/crispr_cas_system.html","source_path":"data/traits/genomics/crispr_cas_system.yaml","text_sha256":"8d1894c30503adcd248db2fb47e813fe4fdccc4980b9653a053caf13f023fd02","x":0.1584617644548416,"y":8.13843822479248},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000332","label":"pH range","page":"traits/environment/ph_range.html","source_path":"data/traits/environment/ph_range.yaml","text_sha256":"4652f6f9dbd6a8fd8c64aec3a7ba23f9a11f23a947aa1dfcbfef0ab75eb95d02","x":-14.714170455932617,"y":-3.887812614440918},{"adapter_version":"traitmech-semantic-v1","category":"ECOLOGY","identifier":"METPO:1001106","label":"biosafety level 5","page":"traits/ecology/biosafety_level_5.html","source_path":"data/traits/ecology/biosafety_level_5.yaml","text_sha256":"dae7b46a08b4f3769a2dcb8804f38165ed69801296459b559ad85670868169fd","x":1.5493180751800537,"y":8.741897583007812},{"adapter_version":"traitmech-semantic-v1","category":"OTHER","identifier":"METPO:1005040","label":"generalist","page":"traits/other/generalist.html","source_path":"data/traits/other/generalist.yaml","text_sha256":"4f16bccf333dc61e4dfea173bf2fa837fd765e9c64f0ea986e6936654ea7ef9d","x":1.0160784721374512,"y":7.715209484100342},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000507","label":"has optimum NaCl observation","page":"traits/metabolism/has_optimum_nacl_observation.html","source_path":"data/traits/metabolism/has_optimum_nacl_observation.yaml","text_sha256":"f2b2a101fe2f826102efa721ae391bb83584e0d5b4164f3a9f8992123c984e4a","x":-2.0424447059631348,"y":-20.165069580078125},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1000676","label":"helical shaped","page":"traits/morphology/helical_shaped.html","source_path":"data/traits/morphology/helical_shaped.yaml","text_sha256":"18e05cb00c797e5d89ca2f692afb7c2679789ed227fdeb332a60cc3f6b3ebb9d","x":-4.116263389587402,"y":11.12661075592041},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1000683","label":"sphere shaped","page":"traits/morphology/sphere_shaped.html","source_path":"data/traits/morphology/sphere_shaped.yaml","text_sha256":"2ad1035328c7f9939c06e16aaca20b099424b2050c93923bbdce405a0f449f96","x":-4.263732433319092,"y":11.181124687194824},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1000667","label":"bacillus shaped","page":"traits/morphology/bacillus_shaped.html","source_path":"data/traits/morphology/bacillus_shaped.yaml","text_sha256":"051e1a8b08e23d32f9b78c9253c86df3789cfd06399dc9200be1da973576f7af","x":-4.094903469085693,"y":11.082467079162598},{"adapter_version":"traitmech-semantic-v1","category":"GENOMICS","identifier":"METPO:1000430","label":"GC mid1","page":"traits/genomics/gc_mid1.html","source_path":"data/traits/genomics/gc_mid1.yaml","text_sha256":"9e8d07c452958a18f4d29cb453ce8a39aee66a17b8571f3e1dc4975d4623fedc","x":-0.19851155579090118,"y":7.787562370300293},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000474","label":"pH delta low","page":"traits/environment/ph_delta_low.html","source_path":"data/traits/environment/ph_delta_low.yaml","text_sha256":"296ecc40ceef94957b459e29d2999745a3fa206bc3ff94900f6d6f4cc56dfb56","x":-15.37767219543457,"y":-4.072194576263428},{"adapter_version":"traitmech-semantic-v1","category":"OTHER","identifier":"METPO:1005014","label":"methyl red test positive","page":"traits/other/methyl_red_test_positive.html","source_path":"data/traits/other/methyl_red_test_positive.yaml","text_sha256":"579042454e7525f4821587b08f6d829ae85726ae2ef0ee96d94202483cc925f2","x":4.215195178985596,"y":9.19649887084961},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"traitmech:000067","label":"polyhydroxyalkanoate granule","page":"traits/morphology/polyhydroxyalkanoate_granule.html","source_path":"data/traits/morphology/polyhydroxyalkanoate_granule.yaml","text_sha256":"049ad593647f11b27004e0f9bbb8c6a941c1c4f65096af8cc44a9328969f6d9b","x":0.6341458559036255,"y":9.376482963562012},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000015","label":"uses in other way","page":"traits/metabolism/uses_in_other_way.html","source_path":"data/traits/metabolism/uses_in_other_way.yaml","text_sha256":"865895219666be3cc95fa3f00061b7652d3357d72928166ec6e1d62338005b3a","x":10.61622142791748,"y":-5.2895965576171875},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000222","label":"does not produce","page":"traits/metabolism/does_not_produce.html","source_path":"data/traits/metabolism/does_not_produce.yaml","text_sha256":"3547bd11a32a0800df88b425522056beacdc980bb7db33e776de692679157220","x":11.686893463134766,"y":-4.5659027099609375},{"adapter_version":"traitmech-semantic-v1","category":"OBSERVATION","identifier":"METPO:1001010","label":"optimum NaCl observation","page":"traits/observation/optimum_nacl_observation.html","source_path":"data/traits/observation/optimum_nacl_observation.yaml","text_sha256":"ca38714c9cb838b5524917f741db61a8ea77cadec387a821b12c94d7e0467269","x":-2.714221954345703,"y":-19.8592472076416},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"traitmech:000193","label":"photoferrotrophy","page":"traits/metabolism/photoferrotrophy.html","source_path":"data/traits/metabolism/photoferrotrophy.yaml","text_sha256":"73045e47ff685ad8b32e29ab21cf50c18ba85fad893b380be8496235694fc74a","x":4.198585510253906,"y":-5.224302768707275},{"adapter_version":"traitmech-semantic-v1","category":"OTHER","identifier":"METPO:1007084","label":"catalase negative","page":"traits/other/catalase_negative.html","source_path":"data/traits/other/catalase_negative.yaml","text_sha256":"07138685fb0555e630f43d4ace5921a58eff9affff065c0b47b27535ca177452","x":5.0482587814331055,"y":9.12251091003418},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1000885","label":"cell length medium","page":"traits/morphology/cell_length_medium.html","source_path":"data/traits/morphology/cell_length_medium.yaml","text_sha256":"b541b3e6f64345e0a560379fcb8550e662f603ce527129ff279a311e8c1cb030","x":-1.5518068075180054,"y":8.42708683013916},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000478","label":"pH delta high","page":"traits/environment/ph_delta_high.html","source_path":"data/traits/environment/ph_delta_high.yaml","text_sha256":"9faeebefd46fdf0dacef0b77f1e5b6464442809d9104c564987736de3dca7627","x":-15.553067207336426,"y":-3.8850433826446533},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000469","label":"NaCl range low","page":"traits/environment/nacl_range_low.html","source_path":"data/traits/environment/nacl_range_low.yaml","text_sha256":"ecc367a3bd737c207d39de0e6aba09f5c4b36d28bac850c31d3f60550105b0b7","x":-15.051295280456543,"y":-3.116844892501831},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000531","label":"pH phenotype with numerical limits","page":"traits/environment/ph_phenotype_with_numerical_limits.html","source_path":"data/traits/environment/ph_phenotype_with_numerical_limits.yaml","text_sha256":"c57d989778cdfa5ba3ca0182747f4a0b4b0bf99375fa995d508e26d6e657eaa1","x":-14.767391204833984,"y":-3.830808639526367},{"adapter_version":"traitmech-semantic-v1","category":"QUANTITATIVE_PROPERTY","identifier":"METPO:2000059","label":"has minimum observed value","page":"traits/quantitative_property/has_minimum_observed_value.html","source_path":"data/traits/quantitative_property/has_minimum_observed_value.yaml","text_sha256":"de0752acc633c994ab5cf7e8604d0e33d54b754f0abe32c5806291f5bdc7922d","x":-1.974038004875183,"y":-19.492488861083984},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000462","label":"pH range mid2","page":"traits/environment/ph_range_mid2.html","source_path":"data/traits/environment/ph_range_mid2.yaml","text_sha256":"3cdc26411e554a5009446d071c21fb570c1831f287ba834ec57cee802e84f88e","x":-14.914608001708984,"y":-4.2690935134887695},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"traitmech:000175","label":"type IV pilus","page":"traits/morphology/type_iv_pilus.html","source_path":"data/traits/morphology/type_iv_pilus.yaml","text_sha256":"d26f596f0a331b2705e94578e920c9d617516940c4878b1b7e9c829efb87328a","x":0.4591137170791626,"y":9.808259963989258},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000533","label":"temperature phenotype with numerical limits","page":"traits/environment/temperature_phenotype_with_numerical_limits.html","source_path":"data/traits/environment/temperature_phenotype_with_numerical_limits.yaml","text_sha256":"613a52573278632645c69d218cee68f9cc81a3501d516f1d7566fce193be6466","x":-14.496789932250977,"y":-4.293572902679443},{"adapter_version":"traitmech-semantic-v1","category":"OBSERVATION","identifier":"METPO:1001001","label":"optimum temperature observation","page":"traits/observation/optimum_temperature_observation.html","source_path":"data/traits/observation/optimum_temperature_observation.yaml","text_sha256":"0b8f02e42f962281d0c04200c08e10cc2936fa6fec82ff364fdf2eb092a985aa","x":-2.08764910697937,"y":-19.673433303833008},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000003","label":"builds acid from","page":"traits/metabolism/builds_acid_from.html","source_path":"data/traits/metabolism/builds_acid_from.yaml","text_sha256":"d7450106e8e6b3f251ee8b137b5515059fe6c5722a747a1e44a089a72f012693","x":9.998866081237793,"y":-4.587926864624023},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000460","label":"pH range low","page":"traits/environment/ph_range_low.html","source_path":"data/traits/environment/ph_range_low.yaml","text_sha256":"b673edd2e03c7c3cf4624bf159adc213d57b9fe78f0f179ccccfb071c180584b","x":-14.420970916748047,"y":-4.139317035675049},{"adapter_version":"traitmech-semantic-v1","category":"OTHER","identifier":"METPO:1007088","label":"urease negative","page":"traits/other/urease_negative.html","source_path":"data/traits/other/urease_negative.yaml","text_sha256":"32c6b8095825623d4eacadf3bba8f757b476e498e6f2f2a9a41cd2a6be39746f","x":4.930837154388428,"y":9.11940860748291},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000445","label":"temperature optimum mid3","page":"traits/environment/temperature_optimum_mid3.html","source_path":"data/traits/environment/temperature_optimum_mid3.yaml","text_sha256":"74a0e5584216e31b51f1b9b70e2c291fb18df550a8ad7d308c564e5824239f84","x":-14.008853912353516,"y":-5.311712741851807},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"traitmech:000074","label":"mycelial growth","page":"traits/morphology/mycelial_growth.html","source_path":"data/traits/morphology/mycelial_growth.yaml","text_sha256":"ab6f0f5641cab1ef785c22f6cc4336194f9191840e3197fe1fa06bdbfb8a2272","x":0.49774929881095886,"y":9.500251770019531},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000040","label":"does not use as nitrogen source","page":"traits/metabolism/does_not_use_as_nitrogen_source.html","source_path":"data/traits/metabolism/does_not_use_as_nitrogen_source.yaml","text_sha256":"c006a43b45d0a9a957dac9ce7a3e2180b8bb07867cbf5059fefeefc01962d1c3","x":11.44455337524414,"y":-5.27351188659668},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"traitmech:000079","label":"oxidative stress response","page":"traits/physiology/oxidative_stress_response.html","source_path":"data/traits/physiology/oxidative_stress_response.yaml","text_sha256":"29f7ea69550e0d65778d43618cf9eab875aa97ae7809e7e89896249026937b30","x":4.930385112762451,"y":9.077664375305176},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"traitmech:000147","label":"cystine arylamidase activity","page":"traits/physiology/cystine_arylamidase_activity.html","source_path":"data/traits/physiology/cystine_arylamidase_activity.yaml","text_sha256":"2f99c9b7486b249f184bfa2f5fad241b33b11483f8fb27afe810e9beade8a932","x":9.357970237731934,"y":9.527043342590332},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"traitmech:000127","label":"hydrogenotrophic methanogenesis","page":"traits/metabolism/hydrogenotrophic_methanogenesis.html","source_path":"data/traits/metabolism/hydrogenotrophic_methanogenesis.yaml","text_sha256":"b044d5deebe390ef469f7b72419f0d0501df7c69f7144c7ea5ad2dbe0beb6d2d","x":4.603625297546387,"y":-4.135768890380859},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"traitmech:000072","label":"carboxysome","page":"traits/morphology/carboxysome.html","source_path":"data/traits/morphology/carboxysome.yaml","text_sha256":"dfeeb46d2fba94471feadd74a8c87dbd53943532062707f57614799bebf1c013","x":0.6086260080337524,"y":9.313319206237793},{"adapter_version":"traitmech-semantic-v1","category":"GENOMICS","identifier":"traitmech:000102","label":"pangenome openness","page":"traits/genomics/pangenome_openness.html","source_path":"data/traits/genomics/pangenome_openness.yaml","text_sha256":"b6157631844937f0d54b33582fe1370d1e1ae50a6a283465beda4dfb4efb866d","x":-0.16929395496845245,"y":7.909217834472656},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000211","label":"sequesters","page":"traits/metabolism/sequesters.html","source_path":"data/traits/metabolism/sequesters.yaml","text_sha256":"32ec058ecd5a6f28adb4d376eb47422c0e7e3f85911f860d8b2f5918a817a8d5","x":10.514749526977539,"y":-4.010112285614014},{"adapter_version":"traitmech-semantic-v1","category":"ECOLOGY","identifier":"METPO:1004000","label":"pathogenic to host","page":"traits/ecology/pathogenic_to_host.html","source_path":"data/traits/ecology/pathogenic_to_host.yaml","text_sha256":"9546e8b41bf10f89d48f492a18508bf8a759d70a1032aec57d3ee0918889e448","x":1.3559120893478394,"y":8.15952205657959},{"adapter_version":"traitmech-semantic-v1","category":"UPPER","identifier":"METPO:1000186","label":"material entity","page":"traits/upper/material_entity.html","source_path":"data/traits/upper/material_entity.yaml","text_sha256":"7ee50eeca004462b51c83c25e6184e22962bf810b5221734864616fec16818e0","x":9.786443710327148,"y":-3.858243703842163},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"METPO:1000731","label":"nutrient adaptation","page":"traits/physiology/nutrient_adaptation.html","source_path":"data/traits/physiology/nutrient_adaptation.yaml","text_sha256":"1b79e3e98525d74dd7029edbbfad62d6e997301ac0490865392cc86a341210fd","x":3.48683762550354,"y":-4.268148422241211},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"traitmech:000063","label":"capsule","page":"traits/morphology/capsule.html","source_path":"data/traits/morphology/capsule.yaml","text_sha256":"fff42eddd599eede9bbfdbfa46c41232bd3d52972d044ca1eca69486e92f2e86","x":0.34258201718330383,"y":9.607231140136719},{"adapter_version":"traitmech-semantic-v1","category":"OBSERVATION","identifier":"METPO:1001009","label":"NaCl range observation","page":"traits/observation/nacl_range_observation.html","source_path":"data/traits/observation/nacl_range_observation.yaml","text_sha256":"03634a2798272d423107925e69779122f1f15a5e51bfea3f20611f5d2249c457","x":-2.6919922828674316,"y":-19.873952865600586},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"traitmech:000179","label":"butyric acid fermentation","page":"traits/metabolism/butyric_acid_fermentation.html","source_path":"data/traits/metabolism/butyric_acid_fermentation.yaml","text_sha256":"46833f2bbca4465f5d22922fd32f0396778534faa414038f1d36f8a402053632","x":5.70584774017334,"y":-3.3681788444519043},{"adapter_version":"traitmech-semantic-v1","category":"OTHER","identifier":"METPO:1007069","label":"fried-egg-shaped colony","page":"traits/other/fried_egg_shaped_colony.html","source_path":"data/traits/other/fried_egg_shaped_colony.yaml","text_sha256":"bfe09a3edc27d5d02b21364d54b1d09d4b8316238a797b07db64664f158f1418","x":-0.5007842779159546,"y":10.005248069763184},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000608","label":"facultatively aerobic","page":"traits/environment/facultatively_aerobic.html","source_path":"data/traits/environment/facultatively_aerobic.yaml","text_sha256":"bf616eb4ba668d4e4007dd2d10ad88cc4aa553bcbead6c64d04816cb080d0d1f","x":-11.370169639587402,"y":-4.085811614990234},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1000694","label":"square shaped","page":"traits/morphology/square_shaped.html","source_path":"data/traits/morphology/square_shaped.yaml","text_sha256":"a5a8d024435519514b36d976b25ce20c4a370f83e2f8b4145ea234f165af1c36","x":-4.199704647064209,"y":11.136382102966309},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000043","label":"uses for aerobic growth","page":"traits/metabolism/uses_for_aerobic_growth.html","source_path":"data/traits/metabolism/uses_for_aerobic_growth.yaml","text_sha256":"74ae5ed1ee5541c31ebb2c22a4e9645f9a024b4ec627d2ef8322fd0b51228e04","x":10.987016677856445,"y":-5.985691547393799},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1000886","label":"cell length large","page":"traits/morphology/cell_length_large.html","source_path":"data/traits/morphology/cell_length_large.yaml","text_sha256":"0bcacdddb8cef3a3b3ce529ef713f14c4ff59e2db7eae1286381e3a51e769df4","x":-1.5449659824371338,"y":8.394085884094238},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"traitmech:000128","label":"hydrocarbon degradation","page":"traits/metabolism/hydrocarbon_degradation.html","source_path":"data/traits/metabolism/hydrocarbon_degradation.yaml","text_sha256":"7a0e9f98c03d6ac1cf093afa99634b339c75ba3c5745ae35d8707f2abfa65ba6","x":7.818578720092773,"y":-4.469213008880615},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"traitmech:000156","label":"carboxylesterase activity","page":"traits/physiology/carboxylesterase_activity.html","source_path":"data/traits/physiology/carboxylesterase_activity.yaml","text_sha256":"7c2eb6bb23fccb0b5a57e5963c6d928ae30db13bb71492de4776cd0dbd8e7948","x":7.7873663902282715,"y":9.289470672607422},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000036","label":"does not use as energy source","page":"traits/metabolism/does_not_use_as_energy_source.html","source_path":"data/traits/metabolism/does_not_use_as_energy_source.yaml","text_sha256":"47df038e6af0fdcdfcd338716500214eaa30f40cf44204697d3e5e160f0633ca","x":11.412036895751953,"y":-5.26873779296875},{"adapter_version":"traitmech-semantic-v1","category":"ECOLOGY","identifier":"traitmech:000046","label":"opportunistic pathogen","page":"traits/ecology/opportunistic_pathogen.html","source_path":"data/traits/ecology/opportunistic_pathogen.yaml","text_sha256":"66a4b8458d0788ec37fb5fa2243b948dc06db8190e0b215f99bf98b0aad84c60","x":1.582375407218933,"y":7.55599308013916},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"traitmech:000066","label":"intracellular inclusion","page":"traits/morphology/intracellular_inclusion.html","source_path":"data/traits/morphology/intracellular_inclusion.yaml","text_sha256":"e06e0729ba5257775916faa326e28cab7f7302212bebace7919ce89cf02b887f","x":0.4569281339645386,"y":9.601705551147461},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:1000804","label":"Substrate-level phosphorylation","page":"traits/metabolism/substrate_level_phosphorylation.html","source_path":"data/traits/metabolism/substrate_level_phosphorylation.yaml","text_sha256":"9612ba0e62a9183f997e55876005a4d0add657f4b3eeff5f584994e65cf1620f","x":6.25431489944458,"y":-4.260605812072754},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000034","label":"does not use as electron acceptor","page":"traits/metabolism/does_not_use_as_electron_acceptor.html","source_path":"data/traits/metabolism/does_not_use_as_electron_acceptor.yaml","text_sha256":"01176bcaa42624e1b82f68ac68ed5c71615a21f2de1d95b99e4f34fe2c4916ff","x":11.60856819152832,"y":-4.938406467437744},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000514","label":"has growth oxygen observation","page":"traits/metabolism/has_growth_oxygen_observation.html","source_path":"data/traits/metabolism/has_growth_oxygen_observation.yaml","text_sha256":"e88c97557010d7c1b2da511ccaeb6c6947d83b99d1199dcca1ccbd8ac2675cf6","x":-1.9312974214553833,"y":-20.017562866210938},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000450","label":"temperature range mid1","page":"traits/environment/temperature_range_mid1.html","source_path":"data/traits/environment/temperature_range_mid1.yaml","text_sha256":"8c4b20f2722337773725e6f45c3ef95a667c926aac65ef5ce69ec66f3fda17da","x":-14.331645011901855,"y":-5.2059831619262695},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1003028","label":"red pigmented","page":"traits/morphology/red_pigmented.html","source_path":"data/traits/morphology/red_pigmented.yaml","text_sha256":"7671e2029a2c91f022e6cb2289ae3eb71ee47d5547de6040dc084c738a11a016","x":2.8514978885650635,"y":9.7525053024292},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1003000","label":"pH growth preference","page":"traits/environment/ph_growth_preference.html","source_path":"data/traits/environment/ph_growth_preference.yaml","text_sha256":"6b6284e9ccbfb743f9416493a3a23b8bbb1ecdf85561e3c7bae50d7f292317cb","x":-13.160152435302734,"y":-3.8655903339385986},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"traitmech:000104","label":"denitrification","page":"traits/metabolism/denitrification.html","source_path":"data/traits/metabolism/denitrification.yaml","text_sha256":"ba821bcecff6e89ee7b5609a1a3c10148b58ce4d155e2d69feeee5ca8234097d","x":6.134596347808838,"y":-5.688381195068359},{"adapter_version":"traitmech-semantic-v1","category":"ECOLOGY","identifier":"traitmech:000050","label":"soil-dwelling","page":"traits/ecology/soil_dwelling.html","source_path":"data/traits/ecology/soil_dwelling.yaml","text_sha256":"a275c9ab29f89f45d51e066485b56e2a1d2af88f03c023e003ad88a0eed7fce4","x":1.520145297050476,"y":7.234741687774658},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000228","label":"does not import","page":"traits/metabolism/does_not_import.html","source_path":"data/traits/metabolism/does_not_import.yaml","text_sha256":"6a70be51867761b1ebac6f8a0af9cdce6606b0cf9661ed482ca6014c0f141e9c","x":11.52259349822998,"y":-4.17476224899292},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000049","label":"uses for anaerobic growth","page":"traits/metabolism/uses_for_anaerobic_growth.html","source_path":"data/traits/metabolism/uses_for_anaerobic_growth.yaml","text_sha256":"6bac51deef598be29a953cb5585524c4ccbeb8e23feb6c7630af851f2e444069","x":11.06223201751709,"y":-6.26937198638916},{"adapter_version":"traitmech-semantic-v1","category":"OBSERVATION","identifier":"METPO:1001019","label":"oxygen delta observation","page":"traits/observation/oxygen_delta_observation.html","source_path":"data/traits/observation/oxygen_delta_observation.yaml","text_sha256":"55b64a2c31fbcccfcf28bb952e9e1289848bdfe59184f3e019cd6e69ca6c896e","x":-2.7243802547454834,"y":-19.770734786987305},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000035","label":"does not use as electron donor","page":"traits/metabolism/does_not_use_as_electron_donor.html","source_path":"data/traits/metabolism/does_not_use_as_electron_donor.yaml","text_sha256":"b4ed9a416ec07428ebc0a5dd7a44e62f143b8e7af88b9efc28c8d088b8ea82d7","x":11.606648445129395,"y":-4.827671527862549},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"traitmech:000146","label":"beta-glucosidase activity","page":"traits/physiology/beta_glucosidase_activity.html","source_path":"data/traits/physiology/beta_glucosidase_activity.yaml","text_sha256":"9c1e7bb4ff17668e499e8e5b772a92a58702d06003962e10f0fe8440c46c8ac7","x":7.956802845001221,"y":9.293257713317871},{"adapter_version":"traitmech-semantic-v1","category":"ECOLOGY","identifier":"traitmech:000043","label":"parasitism","page":"traits/ecology/parasitism.html","source_path":"data/traits/ecology/parasitism.yaml","text_sha256":"b97f5f09c58a908f13b3c800224eacb26f494553aaffc8becc8ecbc16ada71f7","x":1.6081602573394775,"y":7.529460430145264},{"adapter_version":"traitmech-semantic-v1","category":"GENOMICS","identifier":"traitmech:000090","label":"plasmid carriage","page":"traits/genomics/plasmid_carriage.html","source_path":"data/traits/genomics/plasmid_carriage.yaml","text_sha256":"314a56b0000b036f637fa3a69ce3cfc76539e694d2c8704a3cbab9368690d770","x":-0.3318719267845154,"y":7.808778285980225},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:1000060","label":"metabolism","page":"traits/metabolism/metabolism.html","source_path":"data/traits/metabolism/metabolism.yaml","text_sha256":"e12e06144e49063997e859fa3e8843d6366e604a42e9b55e6799b266a98751c9","x":6.550899028778076,"y":-4.849509239196777},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"traitmech:000140","label":"lecithinase activity","page":"traits/physiology/lecithinase_activity.html","source_path":"data/traits/physiology/lecithinase_activity.yaml","text_sha256":"b40a84fa9d238fdb4023a929400881761fa4b037f6f7be61be1de91dc46722f2","x":7.710568904876709,"y":9.278422355651855},{"adapter_version":"traitmech-semantic-v1","category":"OBSERVATION","identifier":"METPO:1001021","label":"temperature observation","page":"traits/observation/temperature_observation.html","source_path":"data/traits/observation/temperature_observation.yaml","text_sha256":"407d012b8ddcfb89d02da9594ec89b6208cc64a2e15363ecf6fd0d3e27674e2a","x":-2.457695722579956,"y":-19.670047760009766},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000019","label":"uses for respiration","page":"traits/metabolism/uses_for_respiration.html","source_path":"data/traits/metabolism/uses_for_respiration.yaml","text_sha256":"01eb81fefc546c29240d2c89cbc70d136f9e8bfd2c69e9c3b0a79f9cdfe2ffe9","x":10.209403991699219,"y":-5.248442649841309},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"traitmech:000016","label":"mercury tolerant","page":"traits/environment/mercury_tolerant.html","source_path":"data/traits/environment/mercury_tolerant.yaml","text_sha256":"2ed2d777fdec798dc43a4cf6cd05744b50e8ccbb39aff1bd61a93e45731452eb","x":-11.906425476074219,"y":-2.2256767749786377},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"traitmech:000080","label":"dormancy","page":"traits/physiology/dormancy.html","source_path":"data/traits/physiology/dormancy.yaml","text_sha256":"e6956d3447e7a67fd3138520ad75d4f54a9b36a76df99e09483ba8ea7475f1b7","x":0.8884555101394653,"y":9.657233238220215},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000504","label":"has pH delta observation","page":"traits/metabolism/has_ph_delta_observation.html","source_path":"data/traits/metabolism/has_ph_delta_observation.yaml","text_sha256":"478ffa77ba89997f04f183cadc7c48f30132ce5c5d32fb7009a303f464c7b026","x":-2.1204450130462646,"y":-20.038755416870117},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000013","label":"hydrolyzes","page":"traits/metabolism/hydrolyzes.html","source_path":"data/traits/metabolism/hydrolyzes.yaml","text_sha256":"5c751096d3d2eabf14eb02d7fe8d39aecb187e86647ae5d5220f04a24ab0f9ae","x":9.500499725341797,"y":-4.3154425621032715},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"traitmech:000160","label":"gamma-glutamyltransferase activity","page":"traits/physiology/gamma_glutamyltransferase_activity.html","source_path":"data/traits/physiology/gamma_glutamyltransferase_activity.yaml","text_sha256":"47daf5dfb02cb9ba68e1649aefef834f5b812f5e185a55e76af8aa8bfcb53a59","x":8.0750150680542,"y":9.339098930358887},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"METPO:1000656","label":"photoautotrophic","page":"traits/physiology/photoautotrophic.html","source_path":"data/traits/physiology/photoautotrophic.yaml","text_sha256":"6d18fa204aebf5795b33864f36ff1895969e4f842811cbead98972f9964030be","x":3.513770341873169,"y":-5.015298366546631},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"traitmech:000194","label":"aerobic anoxygenic phototrophy","page":"traits/physiology/aerobic_anoxygenic_phototrophy.html","source_path":"data/traits/physiology/aerobic_anoxygenic_phototrophy.yaml","text_sha256":"a05ef0d9f25af939d5aa8736a3356d4113673271cb7cf586c9e4f4d8e428afdb","x":4.178591251373291,"y":-5.082931995391846},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000467","label":"NaCl optimum mid2","page":"traits/environment/nacl_optimum_mid2.html","source_path":"data/traits/environment/nacl_optimum_mid2.yaml","text_sha256":"adf8d179511747b598706240d2a886550a6dfda3d94d2173c498ef6281e8ea2a","x":-15.11678409576416,"y":-3.233550548553467},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"METPO:1000654","label":"oligotrophic","page":"traits/physiology/oligotrophic.html","source_path":"data/traits/physiology/oligotrophic.yaml","text_sha256":"08b98c275f408edb29baaab4213ad80fc2fdbeb081bfc933cb054e3db269677b","x":3.4367971420288086,"y":-4.045236110687256},{"adapter_version":"traitmech-semantic-v1","category":"ECOLOGY","identifier":"traitmech:000042","label":"commensalism","page":"traits/ecology/commensalism.html","source_path":"data/traits/ecology/commensalism.yaml","text_sha256":"c7fb6696f2cb936f9a150ba8d60c37a943c9dd6f1603a00fc4b3eb9a388359cb","x":1.593614935874939,"y":7.325958251953125},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"traitmech:000023","label":"3-hydroxypropionate bicycle","page":"traits/metabolism/three_hydroxypropionate_bicycle.html","source_path":"data/traits/metabolism/three_hydroxypropionate_bicycle.yaml","text_sha256":"692bbe7e36298c9f9bfd320ef22e5f8cf826dd0b1e3538c98cf791f50716adc9","x":4.837306976318359,"y":-4.145370960235596},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000039","label":"does not hydrolyze","page":"traits/metabolism/does_not_hydrolyze.html","source_path":"data/traits/metabolism/does_not_hydrolyze.yaml","text_sha256":"d366c5ae5dbc1304e77030531bb1f2975fcca8d38a802119c63359bec2fda191","x":11.675151824951172,"y":-4.5335774421691895},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000009","label":"uses as electron donor","page":"traits/metabolism/uses_as_electron_donor.html","source_path":"data/traits/metabolism/uses_as_electron_donor.yaml","text_sha256":"05bd31bc44a943a5c4ae6f092be0ce17201fb780d1c38a95c7b4c802eb6e329a","x":10.274086952209473,"y":-4.965864658355713},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"METPO:1007089","label":"coagulase activity","page":"traits/physiology/coagulase_activity.html","source_path":"data/traits/physiology/coagulase_activity.yaml","text_sha256":"02557450549ac0a737839427cfd87f2f1e43682fabd6351a8b46ba26b5c1f7b4","x":7.516531467437744,"y":9.281332015991211},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1003005","label":"facultatively alkaliphilic","page":"traits/environment/facultatively_alkaphilic.html","source_path":"data/traits/environment/facultatively_alkaphilic.yaml","text_sha256":"5dca817243e3be1f2a07fc1d3119bbaef5f908290688db4b4f17e1337297b7fe","x":-12.42997932434082,"y":-3.70733380317688},{"adapter_version":"traitmech-semantic-v1","category":"ECOLOGY","identifier":"METPO:1001103","label":"biosafety level 2","page":"traits/ecology/biosafety_level_2.html","source_path":"data/traits/ecology/biosafety_level_2.yaml","text_sha256":"210d2375ecde87ef4e71924da703b9bf497ac023b639aa3374b8bbf639e1778c","x":1.8278239965438843,"y":8.4761323928833},{"adapter_version":"traitmech-semantic-v1","category":"UPPER","identifier":"METPO:1000525","label":"microbe","page":"traits/upper/microbe.html","source_path":"data/traits/upper/microbe.yaml","text_sha256":"5de9ec2653860a312b01e9f9d4c6132679c1c82a4a8a87aa08e1a3c4bca840d9","x":1.0849847793579102,"y":8.31132984161377},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000011","label":"ferments","page":"traits/metabolism/ferments.html","source_path":"data/traits/metabolism/ferments.yaml","text_sha256":"a02a160d59c37a9395164e634675fdbaa973c612c118a27e086a24d0a5c7a287","x":9.681254386901855,"y":-4.377278804779053},{"adapter_version":"traitmech-semantic-v1","category":"GENOMICS","identifier":"traitmech:000093","label":"genomic island","page":"traits/genomics/genomic_island.html","source_path":"data/traits/genomics/genomic_island.yaml","text_sha256":"9d8d52fd2da85c5fd0cceed7eddb2dbf6b788c29e6c2c541bc8f34c02110f802","x":-0.15786364674568176,"y":7.797976493835449},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000610","label":"microaerotolerant","page":"traits/environment/microaerotolerant.html","source_path":"data/traits/environment/microaerotolerant.yaml","text_sha256":"b1fb59e0431a9073d7bf70d17656fb87d3d1174b64775df7781e554f0ff740f7","x":-11.545578956604004,"y":-3.7373692989349365},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000612","label":"facultative oxygen preference","page":"traits/environment/facultative_oxygen_preference.html","source_path":"data/traits/environment/facultative_oxygen_preference.yaml","text_sha256":"63af158149504611f869f21b8bd68397f26546a0ddd7e5b747868d653cf3204a","x":-11.323393821716309,"y":-4.053833484649658},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"traitmech:000145","label":"alpha-glucosidase activity","page":"traits/physiology/alpha_glucosidase_activity.html","source_path":"data/traits/physiology/alpha_glucosidase_activity.yaml","text_sha256":"ddabead94dc8d60d5bc92712ad1020e3d5a90cbecc9ccdafd7db21c00ca858cb","x":8.012117385864258,"y":9.296637535095215},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000007","label":"degrades","page":"traits/metabolism/degrades.html","source_path":"data/traits/metabolism/degrades.yaml","text_sha256":"bf0ff1ddc7b491920a4a8561d4c71eae3fc410009b0a530b363dc84e8f81fe26","x":9.150752067565918,"y":-4.316534996032715},{"adapter_version":"traitmech-semantic-v1","category":"OTHER","identifier":"METPO:1007081","label":"oxidase test","page":"traits/other/oxidase_test.html","source_path":"data/traits/other/oxidase_test.yaml","text_sha256":"df0cd93b5da67434ef31106bb211e9515c0e70d5bccf20ea83b18aaa76d83118","x":5.100769519805908,"y":9.129026412963867},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"METPO:1000660","label":"phototrophic","page":"traits/physiology/phototrophic.html","source_path":"data/traits/physiology/phototrophic.yaml","text_sha256":"cf7d846cc755917b47a96e05f9d38863314a61cb79a70a84ef36f7047bd092a2","x":3.199910879135132,"y":-4.831833362579346},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"traitmech:000084","label":"quorum sensing","page":"traits/physiology/quorum_sensing.html","source_path":"data/traits/physiology/quorum_sensing.yaml","text_sha256":"75ab2dd33d56bd8ea86f06d853c049d8a1c0972f8e155be9912a50c9d619a440","x":1.4050672054290771,"y":9.850746154785156},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000232","label":"pH delta","page":"traits/environment/ph_delta.html","source_path":"data/traits/environment/ph_delta.yaml","text_sha256":"b7e9f17a43c0e0781fa4f468cd34b5c950588ec6315534ea04b7ccfb5ab73eef","x":-15.39052677154541,"y":-3.902963638305664},{"adapter_version":"traitmech-semantic-v1","category":"GENOMICS","identifier":"METPO:1000127","label":"GC content","page":"traits/genomics/gc_content.html","source_path":"data/traits/genomics/gc_content.yaml","text_sha256":"3f11f5326ea325a55591090f418d8efd7dc3b3ee4e3f1b671ca9159e1553aeef","x":-0.2760498821735382,"y":7.634332180023193},{"adapter_version":"traitmech-semantic-v1","category":"QUANTITATIVE_PROPERTY","identifier":"METPO:2000060","label":"has maximum observed value","page":"traits/quantitative_property/has_maximum_observed_value.html","source_path":"data/traits/quantitative_property/has_maximum_observed_value.yaml","text_sha256":"94961d5cc5986010bec4c1ca0db7053f6c2640648a279b1cc3214bf281bdaebb","x":-2.1125905513763428,"y":-19.4254150390625},{"adapter_version":"traitmech-semantic-v1","category":"GENOMICS","identifier":"traitmech:000100","label":"ploidy","page":"traits/genomics/ploidy.html","source_path":"data/traits/genomics/ploidy.yaml","text_sha256":"3b4731a994fafc65fa811a43b2d148ca5ef609cadf727ce4754ef27b24d3c216","x":-0.16631381213665009,"y":7.913882732391357},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1000884","label":"cell length small","page":"traits/morphology/cell_length_small.html","source_path":"data/traits/morphology/cell_length_small.yaml","text_sha256":"400d2605334988d042cc17f884952bad6b06f94df8099e5d12c3842cbde7076e","x":-1.5599660873413086,"y":8.385930061340332},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"traitmech:000075","label":"catalase activity","page":"traits/physiology/catalase_activity.html","source_path":"data/traits/physiology/catalase_activity.yaml","text_sha256":"62f7d4a346b5c6b12c09a0ba25b4b0aaf3ea3f084e00e8c8bf0fee65a9e9cf14","x":6.519810199737549,"y":9.210511207580566},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1000686","label":"vibrio shaped","page":"traits/morphology/vibrio_shaped.html","source_path":"data/traits/morphology/vibrio_shaped.yaml","text_sha256":"e89045a98957225b695d3487f57186f3086558e27ebf16a116d1b1753512d550","x":-4.249497890472412,"y":11.166831970214844},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000042","label":"does not oxidize","page":"traits/metabolism/does_not_oxidize.html","source_path":"data/traits/metabolism/does_not_oxidize.yaml","text_sha256":"29d1e0bb1a96bf740ea6b04d3e4f07f79cb8aad120b4967af924ad90740f580b","x":11.695442199707031,"y":-4.593994140625},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"traitmech:000162","label":"amylase activity","page":"traits/physiology/amylase_activity.html","source_path":"data/traits/physiology/amylase_activity.yaml","text_sha256":"d5c4cb421ffe0b79a69ca604d838e8d13492334f9cef935e26ac8a6083503097","x":7.911439418792725,"y":9.30014419555664},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"traitmech:000165","label":"NAD-dependent alcohol dehydrogenase activity","page":"traits/physiology/nad_dependent_alcohol_dehydrogenase_activity.html","source_path":"data/traits/physiology/nad_dependent_alcohol_dehydrogenase_activity.yaml","text_sha256":"09638dad1675df6a7fb742a282e122e72371ff35c25959cd48e8ef94ade81af5","x":7.842563152313232,"y":9.25940227508545},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"traitmech:000135","label":"pectin degradation","page":"traits/metabolism/pectin_degradation.html","source_path":"data/traits/metabolism/pectin_degradation.yaml","text_sha256":"3f065721fb8b02714c16eae45d2e66e867f8c464eb1f21a4de25c02b8ff2082b","x":8.253016471862793,"y":-4.352791786193848},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"METPO:1000664","label":"organoheterotrophic","page":"traits/physiology/organoheterotrophic.html","source_path":"data/traits/physiology/organoheterotrophic.yaml","text_sha256":"b6176dc75166aabdc139c50caf2daaebd63c39d9ae494ecb61f16f87f07c0bb2","x":2.8957762718200684,"y":-4.482584476470947},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"traitmech:000131","label":"dark hydrogen oxidation","page":"traits/metabolism/dark_hydrogen_oxidation.html","source_path":"data/traits/metabolism/dark_hydrogen_oxidation.yaml","text_sha256":"f3bb21f31df7e89b11a06d046e47dd6ce28b46d53c9bfbf825729ad6859733c5","x":6.635128498077393,"y":-4.813906669616699},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"traitmech:000029","label":"propionic acid fermentation","page":"traits/metabolism/propionic_acid_fermentation.html","source_path":"data/traits/metabolism/propionic_acid_fermentation.yaml","text_sha256":"23725f60d884fee24ed092961040b56a705c65e763ad96bbd26a2f34361880b6","x":5.5549821853637695,"y":-3.447937250137329},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1000691","label":"irregular shaped","page":"traits/morphology/irregular_shaped.html","source_path":"data/traits/morphology/irregular_shaped.yaml","text_sha256":"908748baf4daa5a78a663952160eeb015459167fb0d93c068ea0a24a1f6db8ed","x":-3.919032096862793,"y":10.989350318908691},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"METPO:1000655","label":"organotrophic","page":"traits/physiology/organotrophic.html","source_path":"data/traits/physiology/organotrophic.yaml","text_sha256":"24a7b48b94619324754559de0cb27397cdfb39aff440c67c8c57eda2d654bce2","x":2.793717384338379,"y":-4.510611057281494},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"traitmech:000132","label":"dark oxidation of sulfur compounds","page":"traits/metabolism/dark_oxidation_of_sulfur_compounds.html","source_path":"data/traits/metabolism/dark_oxidation_of_sulfur_compounds.yaml","text_sha256":"3755a3038791f25434762ff233ca89a48e2c843ef716ca16c8400567e4685787","x":6.929476261138916,"y":-5.519293308258057},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"traitmech:000168","label":"phenylalanine arylamidase activity","page":"traits/physiology/phenylalanine_arylamidase_activity.html","source_path":"data/traits/physiology/phenylalanine_arylamidase_activity.yaml","text_sha256":"5ac88adc2e00ddc3df673ffdc7677ea7a308b208ffb9026a960a36495de5ebba","x":9.459418296813965,"y":9.54367733001709},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"METPO:1000665","label":"photolithoautotrophic","page":"traits/physiology/photolithoautotrophic.html","source_path":"data/traits/physiology/photolithoautotrophic.yaml","text_sha256":"fbdd4815aaaedf31c960f23c401a1c0187d00fd05e128e05b58f86dcc1ad4f70","x":2.810964345932007,"y":-4.789657115936279},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000029","label":"does not build base from","page":"traits/metabolism/does_not_build_base_from.html","source_path":"data/traits/metabolism/does_not_build_base_from.yaml","text_sha256":"da4346c63a684c70cd9ffd20fbdb5f3d3663d0a5262e30d6693c0c1f0eea86b0","x":11.589187622070312,"y":-4.754922866821289},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"traitmech:000117","label":"streptococcus arrangement","page":"traits/morphology/streptococcus_arrangement.html","source_path":"data/traits/morphology/streptococcus_arrangement.yaml","text_sha256":"5aefc051bfe76bbe8ce3ebcaf2c527b85ec3696fa16d55e63a10c4d6ff7c2310","x":0.2125472128391266,"y":10.687810897827148},{"adapter_version":"traitmech-semantic-v1","category":"QUANTITATIVE_PROPERTY","identifier":"METPO:2000061","label":"has value comments","page":"traits/quantitative_property/has_value_comments.html","source_path":"data/traits/quantitative_property/has_value_comments.yaml","text_sha256":"6dd2c58a38970a0d45ff4537cca02af3fdf9bf4c30aa1ff0ef9c3a836b75b673","x":-2.097883939743042,"y":-19.022369384765625},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"traitmech:000172","label":"serine arylamidase activity","page":"traits/physiology/serine_arylamidase_activity.html","source_path":"data/traits/physiology/serine_arylamidase_activity.yaml","text_sha256":"05c5faaf8e27c1a78dec0fbf7963d31fdbeab9215dbaa293eb6a1f0a1bee2f34","x":9.399986267089844,"y":9.536328315734863},{"adapter_version":"traitmech-semantic-v1","category":"UPPER","identifier":"METPO:1001000","label":"observation","page":"traits/upper/observation.html","source_path":"data/traits/upper/observation.yaml","text_sha256":"2f88455dd0ddbf1fdae347d0d83407f609ad34ef975b461551f0b31520d35593","x":-2.248331308364868,"y":-19.360464096069336},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"traitmech:000010","label":"desiccation tolerant","page":"traits/environment/desiccation_tolerant.html","source_path":"data/traits/environment/desiccation_tolerant.yaml","text_sha256":"49f59b35521c44eb67cdeaa64cf015c3cb41cea072b3fd87dcacd0b57612c0dc","x":-12.050228118896484,"y":-2.49018931388855},{"adapter_version":"traitmech-semantic-v1","category":"PHYSIOLOGY","identifier":"METPO:1000641","label":"chemotrophic","page":"traits/physiology/chemotrophic.html","source_path":"data/traits/physiology/chemotrophic.yaml","text_sha256":"515c5dec6dfced8bc56ce751eca4b4c86830fa7251bdd660c1d1022012902575","x":2.466118812561035,"y":-4.605922698974609},{"adapter_version":"traitmech-semantic-v1","category":"OTHER","identifier":"METPO:1007082","label":"urease test","page":"traits/other/urease_test.html","source_path":"data/traits/other/urease_test.yaml","text_sha256":"ecdfd108daf07e2e2d248b12a8735312964f15f7f869c18dbe09aaf29f48e4cf","x":4.960689067840576,"y":9.14401626586914},{"adapter_version":"traitmech-semantic-v1","category":"MORPHOLOGY","identifier":"METPO:1000705","label":"axially filamented","page":"traits/morphology/axially_filamented.html","source_path":"data/traits/morphology/axially_filamented.yaml","text_sha256":"3c40553fc10a569f4003dfdf4ab20130bc397d722721d3fcf6e818904d760562","x":0.7900215983390808,"y":11.54912281036377},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"traitmech:000025","label":"dicarboxylate/4-hydroxybutyrate cycle","page":"traits/metabolism/dicarboxylate_four_hydroxybutyrate_cycle.html","source_path":"data/traits/metabolism/dicarboxylate_four_hydroxybutyrate_cycle.yaml","text_sha256":"86cee7f5a0cfdb041242dda43580e94b2329bd0893e5d5436e49c939bbe6423b","x":4.565250396728516,"y":-4.236157417297363},{"adapter_version":"traitmech-semantic-v1","category":"ENVIRONMENT","identifier":"METPO:1000480","label":"NaCl delta mid1","page":"traits/environment/nacl_delta_mid1.html","source_path":"data/traits/environment/nacl_delta_mid1.yaml","text_sha256":"290500d764083805d9390641d33b19e6eee896c5177ada23d4262df5a81d1f13","x":-15.485164642333984,"y":-3.631303310394287},{"adapter_version":"traitmech-semantic-v1","category":"OTHER","identifier":"METPO:1007067","label":"punctiform colony","page":"traits/other/punctiform_colony.html","source_path":"data/traits/other/punctiform_colony.yaml","text_sha256":"b14eea90e086723dc3f802cf43bcf68be5018847143fdfaaf7ae85539ebdf4e5","x":-0.45687904953956604,"y":9.892577171325684},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"METPO:2000024","label":"does not use for anaerobic growth","page":"traits/metabolism/does_not_use_for_anaerobic_growth.html","source_path":"data/traits/metabolism/does_not_use_for_anaerobic_growth.yaml","text_sha256":"17523e77645dbdba8e6e0f78ac5af56b256ca9c0468f8c66ec757814df0ea0b0","x":11.32761001586914,"y":-6.054926872253418},{"adapter_version":"traitmech-semantic-v1","category":"METABOLISM","identifier":"traitmech:000032","label":"manganese oxidation","page":"traits/metabolism/manganese_oxidation.html","source_path":"data/traits/metabolism/manganese_oxidation.yaml","text_sha256":"09b78b72d6f891b6ba34b664984411b18811c75990421bbee49458128fb8b281","x":6.832780361175537,"y":-5.162868022918701}]
diff --git a/docs/GRAPH_PROVENANCE.md b/docs/GRAPH_PROVENANCE.md
new file mode 100644
index 0000000000..c971242c64
--- /dev/null
+++ b/docs/GRAPH_PROVENANCE.md
@@ -0,0 +1,24 @@
+# TraitMech trait graph provenance
+
+Graph maps retain their KG-Microbe DeepWalk features and domain matching policies. The fleet's common BGE text map is a separate view. This work follows #917.
+
+Run `python scripts/build_embedding_index.py --src /path/to/source.tsv.gz --kgm-aliases /path/to/metpo_alias_mappings.tsv --method pacmap`. For the retained graph layout add `--method sfdp --umap-out data/embeddings/trait_graph.json`. `--method umap` is an explicit alternative.
+
+The slim source, match TSV, selected projection and nearest-neighbor JSON are staged together. Their destinations (`--out-deepwalk`, `--out-match`, `--umap-out`, `--out-neighbors`) must be distinct siblings, so the projection's `.metadata.json` can validate the complete generation. Default names are `deepwalk_traits.tsv.gz`, `metpo_to_kgm_node.tsv`, `trait_umap.json`, and `trait_nearest_neighbors.json` under `data/embeddings`.
+
+The source scan retains only direct/parent CURIEs and record/alias label candidates. Every trait has a projected or omitted ledger entry. Parent-proxy source IDs, mean weights, exact normalized reducer matrix and cosine nearest-neighbor matrix are recorded separately. Generating the alternate projection from identical inputs preserves the shared artifact bytes; both receipts must validate afterward.
+
+New generation reads the selected TSV or TSV.gz stream directly and hashes the exact bytes while parsing. Old basename/size/mtime pickle caches are ignored, including when `force_reload` is false. The scan is streaming and retains only required node vectors; the full source file is still read once per generation. Do not infer source identity by hashing a different file beside old coordinates.
+
+Schema-v2 receipts bind the full corpus, matching/omission ledger, ordered reducer matrix, actual algorithm/normalization/settings and installed backend versions to checksums of every output. PaCMAP records fitted pair counts. The sfdp backend, where available, records the symmetric union-kNN construction, DOT checksum, Graphviz version and command arguments. Failed generation leaves previous outputs unchanged; publication rolls back ordinary write failures. A process kill can leave a `.graph-recovery-*` directory for recovery and is not claimed to be an atomic website deployment.
+
+Validate a completed generation with:
+
+```python
+from pathlib import Path
+from traitmech.graph_embedding_receipts import load_receipt
+
+receipt = load_receipt(Path("path/to/projection.metadata.json"))
+```
+
+This verifies all sibling artifacts declared by the receipt. It is not a tool for attaching newly guessed provenance to legacy arrays. Full published artifacts must be regenerated from reviewed current inputs before the graph correction is considered complete.
diff --git a/justfile b/justfile
index 48074829ea..062fb08b4a 100644
--- a/justfile
+++ b/justfile
@@ -1194,4 +1194,4 @@ gen-discussions-data: (_require-claw "kg_microbe_discussions")
# Full canonical semantic text by default; --record/--limit are explicit canaries.
text-map-inputs *args:
- uv run python scripts/text_map_inputs.py {{args}}
+ uv run python scripts/text_map_inputs.py "$@"
diff --git a/scripts/build_embedding_index.py b/scripts/build_embedding_index.py
index b9fcf91cbe..3841091f3b 100755
--- a/scripts/build_embedding_index.py
+++ b/scripts/build_embedding_index.py
@@ -30,6 +30,7 @@
just build-embeddings # uses defaults
python3 scripts/build_embedding_index.py --src
"""
+
from __future__ import annotations
import argparse
@@ -40,13 +41,25 @@
import os
import re
import sys
+import tempfile
from pathlib import Path
+from traitmech.graph_embedding_receipts import (
+ GraphSource,
+ corpus_receipt,
+ make_receipt,
+ matrix_receipt,
+ projection_receipt,
+ publish_artifacts,
+)
+
REPO_ROOT = Path(__file__).resolve().parent.parent
# Newest available kg-microbe-derived deepwalk: 512-D, 2026-06-26 (v3),
# includes METPO CURIEs directly. Source-of-truth for direct-METPO matching.
-EMBEDDINGS_FILENAME = "DeepWalkSkipGramEnsmallen_degreenorm_embedding_512_v3_2026-06-26_12_55_27.tsv.gz"
+EMBEDDINGS_FILENAME = (
+ "DeepWalkSkipGramEnsmallen_degreenorm_embedding_512_v3_2026-06-26_12_55_27.tsv.gz"
+)
def default_deepwalk() -> Path:
@@ -70,14 +83,30 @@ def default_deepwalk() -> Path:
# kept for older embeddings but not present in the 2026-04-25 file.
_TRAIT_PREFIXES: tuple[str, ...] = (
"METPO:", # primary anchor in 2026-04-25 file
- "cell_shape:", "cell_length:", "cell_width:",
- "gram_stain:", "motility:",
- "gc:", "NaCl_opt:", "NaCl_range:", "NaCl_delta:",
- "pH_opt:", "pH_range:", "pH_delta:",
- "temp_opt:", "temp_range:", "temp_delta:", "temperature:",
- "oxygen:", "trophic_type:", "salinity:",
- "pathogen:", "pigment:", "production:",
- "carbon_substrates:", "isolation_source:",
+ "cell_shape:",
+ "cell_length:",
+ "cell_width:",
+ "gram_stain:",
+ "motility:",
+ "gc:",
+ "NaCl_opt:",
+ "NaCl_range:",
+ "NaCl_delta:",
+ "pH_opt:",
+ "pH_range:",
+ "pH_delta:",
+ "temp_opt:",
+ "temp_range:",
+ "temp_delta:",
+ "temperature:",
+ "oxygen:",
+ "trophic_type:",
+ "salinity:",
+ "pathogen:",
+ "pigment:",
+ "production:",
+ "carbon_substrates:",
+ "isolation_source:",
"assay:",
"BSL:",
"PATO:",
@@ -100,25 +129,26 @@ def _normalise(s: str) -> str:
return s.strip("_")
-def vendor_slim_deepwalk(src: Path, dst: Path) -> tuple[int, set[str]]:
- """Copy only trait-relevant rows from ``src`` to ``dst`` (gzipped TSV).
- Returns (n_rows, set of kg-microbe node ids carried)."""
+def vendor_slim_deepwalk(src: Path, dst: Path, *, node_filter=None, return_receipt=False):
+ """Parse source bytes and retain only requested trait/proxy candidates."""
+ source = GraphSource(
+ src,
+ _TRAIT_PREFIXES,
+ node_filter=node_filter,
+ filter_name="trait-record-parent-alias-label-candidates-v1" if node_filter else None,
+ )
dst.parent.mkdir(parents=True, exist_ok=True)
- n_rows = 0
- nodes: set[str] = set()
- with gzip.open(src, "rt", encoding="utf-8") as fin, \
- gzip.open(dst, "wt", encoding="utf-8") as fout:
- # Pass-through header.
- header = fin.readline()
- fout.write(header)
- for line in fin:
- tab = line.find("\t")
- sid = line[:tab] if tab > 0 else line.strip()
- if sid.startswith(_TRAIT_PREFIXES):
- fout.write(line)
- n_rows += 1
- nodes.add(sid)
- return n_rows, nodes
+ nodes = set()
+ with dst.open("wb") as raw, gzip.GzipFile(fileobj=raw, mode="wb", mtime=0) as output:
+ for node, vector in source:
+ if not nodes:
+ output.write(
+ ("node_id\t" + "\t".join(f"d{i}" for i in range(len(vector))) + "\n").encode()
+ )
+ output.write((node + "\t" + "\t".join(repr(value) for value in vector) + "\n").encode())
+ nodes.add(node)
+ result = (len(nodes), nodes)
+ return (*result, source.receipt) if return_receipt else result
def load_alias_table(path: Path) -> dict[str, str]:
@@ -140,26 +170,33 @@ def load_alias_table(path: Path) -> dict[str, str]:
def load_metpo_records(traits_dir: Path) -> list[tuple[str, str, list[str], str, list[str]]]:
"""Return list of (curie, label, synonyms, category_dir, parents) tuples for
every seeded TraitRecord. ``parents`` is the record's ``parent_traits`` CURIE
- list (used by the parent-proxy match tier). Skips files that fail to parse."""
+ list (used by the parent-proxy match tier). Invalid records fail generation."""
import yaml # lazy import; only this script needs it
+
out: list[tuple[str, str, list[str], str, list[str]]] = []
+ seen = set()
for path in sorted(traits_dir.rglob("*.yaml")):
try:
doc = yaml.safe_load(path.read_text())
except (OSError, yaml.YAMLError) as error:
raise ValueError(f"Unable to read trait record: {path}") from error
if not isinstance(doc, dict):
- continue
+ raise TypeError(f"Trait record is not a mapping: {path}")
curie = (doc.get("identifier") or "").strip()
label = (doc.get("label") or "").strip()
if not curie:
- continue
+ raise ValueError(f"Trait record has no identifier: {path}")
+ if curie in seen:
+ raise ValueError(f"Duplicate trait identifier: {curie}")
+ seen.add(curie)
synonyms = []
- for s in (doc.get("synonyms") or []):
+ for s in doc.get("synonyms") or []:
txt = (s.get("synonym_text") or "").strip()
if txt:
synonyms.append(txt)
- parents = [p.strip() for p in (doc.get("parent_traits") or []) if isinstance(p, str) and p.strip()]
+ parents = [
+ p.strip() for p in (doc.get("parent_traits") or []) if isinstance(p, str) and p.strip()
+ ]
category_dir = path.parent.name
out.append((curie, label, synonyms, category_dir, parents))
return out
@@ -171,20 +208,18 @@ def build_match_table(
alias_table: dict[str, str],
) -> list[dict[str, str]]:
"""Match each record to ≥0 kg-microbe trait nodes via, in order:
- 1. direct_metpo — the record's own CURIE is in the deepwalk.
- 2. alias_table — reverse alias lookup (METPO → known label → node).
- 3. label_match — normalised label / synonym matches a node value-form.
- 4. parent_proxy — for records whose own CURIE is absent (synthetic
- ``traitmech:`` traits, or METPO classes minted after the deepwalk
- run), walk ``parent_traits`` transitively to the nearest ancestor
- whose CURIE *is* in the deepwalk and borrow its embedding. The trait
- is positioned with its semantic parent rather than dropped entirely.
+ 1. direct_metpo — the record's own CURIE is in the deepwalk.
+ 2. alias_table — reverse alias lookup (METPO → known label → node).
+ 3. label_match — normalised label / synonym matches a node value-form.
+ 4. parent_proxy — for records whose own CURIE is absent (synthetic
+ ``traitmech:`` traits, or METPO classes minted after the deepwalk
+ run), walk ``parent_traits`` transitively to the nearest ancestor
+ whose CURIE *is* in the deepwalk and borrow its embedding. The trait
+ is positioned with its semantic parent rather than dropped entirely.
"""
# Parent map for the proxy tier: curie -> list of parent curies (may chain
# traitmech: -> traitmech: -> METPO:).
- parent_map: dict[str, list[str]] = {
- curie: parents for curie, _, _, _, parents in metpo_records
- }
+ parent_map: dict[str, list[str]] = {curie: parents for curie, _, _, _, parents in metpo_records}
def resolve_parent_proxy(curie: str) -> str | None:
"""BFS up the parent chain to the first ancestor CURIE in the deepwalk."""
@@ -199,6 +234,7 @@ def resolve_parent_proxy(curie: str) -> str | None:
return p
queue.extend(parent_map.get(p, []))
return None
+
# Build reverse alias index: METPO CURIE -> set of acceptable normalised labels
metpo_to_norm_labels: dict[str, set[str]] = {}
for norm, curie in alias_table.items():
@@ -252,14 +288,16 @@ def resolve_parent_proxy(curie: str) -> str | None:
candidates.add(proxy)
method = "parent_proxy"
- rows.append({
- "metpo_curie": curie,
- "label": label,
- "category": category,
- "match_method": method or "no_match",
- "kgm_nodes": ";".join(sorted(candidates)),
- "n_kgm_nodes": str(len(candidates)),
- })
+ rows.append(
+ {
+ "metpo_curie": curie,
+ "label": label,
+ "category": category,
+ "match_method": method or "no_match",
+ "kgm_nodes": ";".join(sorted(candidates)),
+ "n_kgm_nodes": str(len(candidates)),
+ }
+ )
return rows
@@ -293,130 +331,157 @@ def load_embedding_vectors(slim_deepwalk: Path) -> dict[str, list[float]]:
def compute_umap_and_neighbors(
- metpo_records: list[tuple[str, str, list[str], str]],
- match_rows: list[dict[str, str]],
- vectors: dict[str, list[float]],
- method: str = "pacmap",
-) -> tuple[list[dict], dict[str, list[dict]]]:
- """Project the matched-record embeddings to 2-D and compute k nearest
- neighbors per record. Returns (umap_points, nn_per_curie).
-
- ``method`` selects the 2-D reducer: ``"pacmap"`` (default; PCA-init,
- fixed seed, L2-normalised rows to mirror cosine geometry), ``"umap"``
- (legacy UMAP path), or ``"sfdp"`` (Graphviz force-directed layout of a
- mutual-kNN graph over the embeddings). The output JSON keys
- (umap_x / umap_y) are unchanged regardless of reducer.
-
- Records without an embedding are NOT in the UMAP output (they have no
- coordinates) but still appear in nn_per_curie as []."""
- try:
- import numpy as np
- except ImportError as e:
- print(f" numpy not available: {e}; skipping projection", file=sys.stderr)
- return [], {}
- if method == "umap":
- try:
- import umap as _umap
- except ImportError as e:
- print(f" UMAP not available: {e}; skipping projection", file=sys.stderr)
- return [], {}
- elif method == "pacmap":
- try:
- import pacmap
- from sklearn.preprocessing import normalize
- except ImportError as e:
- print(f" PaCMAP / scikit-learn not available: {e}; skipping projection",
- file=sys.stderr)
- return [], {}
- elif method == "sfdp":
- try:
- sys.path.insert(0, str(Path(__file__).resolve().parent))
- from sfdp_layout import sfdp_layout
- except ImportError as e:
- print(f" sfdp_layout / scikit-learn not available: {e}; skipping projection",
- file=sys.stderr)
- return [], {}
- else:
- print(f" Unknown reducer method {method!r}; skipping projection", file=sys.stderr)
- return [], {}
-
- # Index match table by curie
- match_by_curie = {r["metpo_curie"]: r for r in match_rows}
- record_by_curie = {c: (lbl, syn, cat) for c, lbl, syn, cat, _par in metpo_records}
-
- # Build matrix: take ANY matched node's vector for each METPO record;
- # when multiple nodes match, average them.
- curies: list[str] = []
- matrix: list[list[float]] = []
- for r in match_rows:
- nodes = [n.strip() for n in r["kgm_nodes"].split(";") if n.strip()]
- vecs = [vectors[n] for n in nodes if n in vectors]
- if not vecs:
- continue
- n = len(vecs[0])
- avg = [sum(v[i] for v in vecs) / len(vecs) for i in range(n)]
- curies.append(r["metpo_curie"])
- matrix.append(avg)
-
+ metpo_records, match_rows, vectors, method="pacmap", *, receipt_details=None
+):
+ """Keep the matched/proxy graph construction; receipt the actual reducer inputs."""
+ import numpy as np
+ from sklearn import config_context
+ from sklearn.neighbors import NearestNeighbors
+ from sklearn.preprocessing import normalize
+
+ match_by_curie = {row["metpo_curie"]: row for row in match_rows}
+ record_by_curie = {
+ curie: (label, synonyms, category) for curie, label, synonyms, category, _ in metpo_records
+ }
+ curies, matrix, ledger = [], [], []
+ for row in match_rows:
+ curie = row["metpo_curie"]
+ if curie not in record_by_curie:
+ raise ValueError(f"Matched trait is outside the corpus: {curie}")
+ nodes = [node.strip() for node in row["kgm_nodes"].split(";") if node.strip()]
+ found = [node for node in nodes if node in vectors]
+ ledger.append(
+ {
+ "identifier": curie,
+ "source_nodes": found,
+ "missing_nodes": [node for node in nodes if node not in vectors],
+ "status": "projected" if found else "no_vectors",
+ "match_method": row["match_method"],
+ "aggregation_method": "mean",
+ "weight_per_source": 1 / len(found) if found else 0,
+ }
+ )
+ if found:
+ matrix.append(np.mean([vectors[node] for node in found], axis=0))
+ curies.append(curie)
if len(matrix) < 5:
- print(f" Only {len(matrix)} matched embeddings — projection skipped", file=sys.stderr)
- return [], {}
-
- arr = np.array(matrix, dtype=float)
- if method == "umap":
- print(f" Running UMAP on {arr.shape[0]} × {arr.shape[1]} matrix")
- reducer = _umap.UMAP(
- n_components=2, n_neighbors=min(15, len(matrix) - 1), random_state=42
+ raise ValueError(
+ f"Only {len(matrix)} matched embeddings; trait projection requires at least five"
+ )
+ arr = np.asarray(matrix, dtype=np.float64)
+ if method == "pacmap":
+ import pacmap
+
+ parameters = {
+ "n_components": 2,
+ "random_state": 42,
+ "n_neighbors": None,
+ "MN_ratio": 0.5,
+ "FP_ratio": 2.0,
+ "distance": "euclidean",
+ "lr": 1.0,
+ "num_iters": (100, 100, 250),
+ "apply_pca": True,
+ "knn_backend": "faiss",
+ }
+ actual = normalize(arr.astype("float32"))
+ vectors_receipt = matrix_receipt(actual, curies)
+ reducer = pacmap.PaCMAP(**parameters)
+ coords = reducer.fit_transform(actual, init="pca")
+ projection = projection_receipt(
+ method, parameters, reducer=reducer, normalization="l2", initialization="pca"
)
+ elif method == "umap":
+ import umap
+
+ parameters = {
+ "n_components": 2,
+ "n_neighbors": min(15, len(matrix) - 1),
+ "random_state": 42,
+ "metric": "euclidean",
+ }
+ vectors_receipt = matrix_receipt(arr, curies, dtype="float64-le")
+ reducer = umap.UMAP(**parameters)
coords = reducer.fit_transform(arr)
+ projection = projection_receipt(method, parameters, reducer=reducer, normalization="none")
elif method == "sfdp":
- print(f" Running sfdp force-directed layout on {arr.shape[0]} × {arr.shape[1]} matrix")
- coords = sfdp_layout(arr, k=15, seed=42)
- else: # pacmap (default)
- from sklearn.preprocessing import normalize
- print(f" Running PaCMAP on {arr.shape[0]} × {arr.shape[1]} matrix")
- X = normalize(arr.astype("float32"))
- coords = pacmap.PaCMAP(n_components=2, random_state=42).fit_transform(X, init="pca")
-
- # Cosine-style nearest neighbors via L2 normalisation + dot product.
- norms = np.linalg.norm(arr, axis=1, keepdims=True)
- norms[norms == 0] = 1.0
- normed = arr / norms
- sim = normed @ normed.T
- np.fill_diagonal(sim, -1.0)
- k = min(UMAP_NEAREST_K, len(matrix) - 1)
- top_idx = np.argsort(-sim, axis=1)[:, :k]
-
- umap_points: list[dict] = []
- nn_map: dict[str, list[dict]] = {}
+ sys.path.insert(0, str(Path(__file__).resolve().parent))
+ from sfdp_layout import sfdp_layout
+
+ coords, graph = sfdp_layout(arr, k=15, seed=42, return_receipt=True, record_ids=curies)
+ vectors_receipt = graph.pop("matrix")
+ projection = projection_receipt(
+ method, {"k": 15, "seed": 42}, normalization="l2", graph=graph
+ )
+ else:
+ raise ValueError(f"Unknown trait projection: {method}")
+ if np.asarray(coords).shape != (len(curies), 2) or not np.isfinite(coords).all():
+ raise ValueError(
+ "Trait projection did not return finite coordinates for every selected record"
+ )
+ # Chunked exact cosine neighbors avoid an all-pairs matrix, including for
+ # future corpus growth. Self is excluded explicitly even among proxy ties.
+ normed = normalize(arr)
+ nearest_matrix = matrix_receipt(normed, curies, dtype="float64-le")
+ k = min(UMAP_NEAREST_K, len(curies) - 1)
+ with config_context(working_memory=64):
+ distances, indices = (
+ NearestNeighbors(n_neighbors=k + 1, metric="cosine", algorithm="brute")
+ .fit(normed)
+ .kneighbors(normed)
+ )
+ ledger_by_curie = {row["identifier"]: row for row in ledger}
+ points, neighbors = [], {}
for i, curie in enumerate(curies):
- lbl, _, cat = record_by_curie.get(curie, ("", [], "OTHER"))
- umap_points.append({
- "id": curie,
- "label": lbl,
- "category": cat,
- "match_method": match_by_curie[curie]["match_method"],
- "kgm_nodes": match_by_curie[curie]["kgm_nodes"].split(";"),
- "umap_x": float(coords[i, 0]),
- "umap_y": float(coords[i, 1]),
- })
- nn_map[curie] = [
+ label, _, category = record_by_curie[curie]
+ points.append(
{
- "id": curies[j],
- "label": record_by_curie[curies[j]][0],
- "category": record_by_curie[curies[j]][2],
- "similarity": float(sim[i, j]),
- "match_method": match_by_curie[curies[j]]["match_method"],
- "kgm_nodes": match_by_curie[curies[j]]["kgm_nodes"].split(";"),
+ "id": curie,
+ "label": label,
+ "category": category,
+ "match_method": match_by_curie[curie]["match_method"],
+ "kgm_nodes": ledger_by_curie[curie]["source_nodes"],
+ "umap_x": float(coords[i, 0]),
+ "umap_y": float(coords[i, 1]),
}
- for j in top_idx[i]
- ]
-
- # Records without embeddings still get an entry (empty list) so the renderer
- # can distinguish "no embedding" from "no neighbors found".
- for curie, _, _, _, _ in metpo_records:
- nn_map.setdefault(curie, [])
- return umap_points, nn_map
+ )
+ neighbors[curie] = []
+ for distance, j in zip(distances[i], indices[i], strict=True):
+ if j == i:
+ continue
+ other = curies[j]
+ neighbors[curie].append(
+ {
+ "id": other,
+ "label": record_by_curie[other][0],
+ "category": record_by_curie[other][2],
+ "similarity": float(1 - distance),
+ "match_method": match_by_curie[other]["match_method"],
+ "kgm_nodes": [
+ node
+ for node in match_by_curie[other]["kgm_nodes"].split(";")
+ if node in vectors
+ ],
+ }
+ )
+ if len(neighbors[curie]) == k:
+ break
+ for curie in record_by_curie:
+ neighbors.setdefault(curie, [])
+ if receipt_details is not None:
+ receipt_details.update(
+ matrix=vectors_receipt,
+ projection=projection,
+ ledger=ledger,
+ nearest_neighbors={
+ "metric": "cosine",
+ "k": k,
+ "implementation": "sklearn.neighbors.NearestNeighbors",
+ "working_memory_mib": 64,
+ "matrix": nearest_matrix,
+ },
+ )
+ return points, neighbors
def write_json(path: Path, payload) -> None:
@@ -424,92 +489,150 @@ def write_json(path: Path, payload) -> None:
path.write_text(json.dumps(payload, indent=2))
-
def file_sha256(path: Path) -> str:
with path.open("rb") as stream:
return hashlib.file_digest(stream, "sha256").hexdigest()
-def write_projection_metadata(path: Path, source: Path, vectors, method: str,
- match_table: Path, neighbors: Path) -> None:
- """Bind newly generated outputs to the source actually selected by this run."""
- dims = {len(vector) for vector in vectors.values()}
- if len(dims) != 1:
- raise ValueError("Graph vectors must have one nonempty dimension")
- write_json(path.with_suffix(".metadata.json"), {
- "schema_version": 1,
- "embedding_family": "kg_microbe_deepwalk",
- "source": {"filename": source.name, "sha256": file_sha256(source)},
- "input_dimensions": next(iter(dims)),
- "projection": {"method": method, "random_state": 42,
- "normalization": "l2" if method in {"pacmap", "sfdp"} else "none"},
- "match_table_sha256": file_sha256(match_table),
- "outputs": {path.name: file_sha256(path), neighbors.name: file_sha256(neighbors)},
- "coverage": {"projected": len(json.loads(path.read_text())),
- "neighbor_records": len(json.loads(neighbors.read_text()))},
- })
+def write_projection_metadata(
+ path: Path,
+ source=None,
+ vectors=None,
+ method=None,
+ match_table=None,
+ neighbors=None,
+ *,
+ generation_receipt=None,
+ staged=None,
+):
+ """Output-only source labels cannot establish provenance; stage a real generation."""
+ if generation_receipt is None or staged is None:
+ raise ValueError(
+ "Output-only provenance is unsupported; regenerate from the actual graph source"
+ )
+ return publish_artifacts(staged, path.with_suffix(".metadata.json"), generation_receipt)
def main() -> int:
ap = argparse.ArgumentParser()
- ap.add_argument("--src", type=Path, default=DEFAULT_KGM_DEEPWALK,
- help="path to the source deepwalk .tsv.gz")
+ ap.add_argument(
+ "--src", type=Path, default=DEFAULT_KGM_DEEPWALK, help="path to the source deepwalk .tsv.gz"
+ )
ap.add_argument("--kgm-aliases", type=Path, default=DEFAULT_KGM_ALIASES)
ap.add_argument("--out-deepwalk", type=Path, default=OUT_DEEPWALK)
ap.add_argument("--out-match", type=Path, default=OUT_MATCH)
- ap.add_argument("--umap-out", type=Path, default=OUT_UMAP_JSON,
- help="output path for the 2-D projection JSON "
- "(default: data/embeddings/trait_umap.json). Use a "
- "separate path (e.g. trait_graph.json) for --method sfdp "
- "so the pacmap default output is not overwritten.")
- ap.add_argument("--method", choices=["pacmap", "umap", "sfdp"], default="pacmap",
- help="2-D reducer for the trait projection (default: pacmap)")
+ ap.add_argument(
+ "--umap-out",
+ type=Path,
+ default=OUT_UMAP_JSON,
+ help="output path for the 2-D projection JSON "
+ "(default: data/embeddings/trait_umap.json). Use a "
+ "separate path (e.g. trait_graph.json) for --method sfdp "
+ "so the pacmap default output is not overwritten.",
+ )
+ ap.add_argument(
+ "--method",
+ choices=["pacmap", "umap", "sfdp"],
+ default="pacmap",
+ help="2-D reducer for the trait projection (default: pacmap)",
+ )
+ ap.add_argument(
+ "--out-neighbors",
+ type=Path,
+ default=OUT_NN_JSON,
+ help="Neighbor JSON destination; all graph outputs must share one directory",
+ )
args = ap.parse_args()
src = args.src
if not src.is_file():
- print(f"Selected deepwalk source missing: {src}; pass --src for another release", file=sys.stderr)
+ print(
+ f"Selected deepwalk source missing: {src}; pass --src for another release",
+ file=sys.stderr,
+ )
return 2
- print(f"[1/4] Vendoring slim deepwalk subset → {args.out_deepwalk}")
- print(f" source: {src.name}")
- n_rows, nodes = vendor_slim_deepwalk(src, args.out_deepwalk)
- metpo_count = sum(1 for n in nodes if n.startswith("METPO:"))
- print(f" {n_rows} trait-relevant rows carried; {len(nodes)} unique node ids "
- f"(METPO:* = {metpo_count})")
-
- print(f"[2/4] Loading metpo alias table → {args.kgm_aliases}")
+ destinations = [args.out_deepwalk, args.out_match, args.umap_out, args.out_neighbors]
+ if len({path.parent.resolve() for path in destinations}) != 1:
+ ap.error("graph outputs must share one directory for complete receipt validation")
+ if len({path.name for path in destinations}) != len(destinations):
+ ap.error("graph output filenames must be distinct")
+
+ corpus_paths = sorted(TRAITS_DIR.rglob("*.yaml"))
+ corpus = corpus_receipt(corpus_paths, TRAITS_DIR)
+ records = load_metpo_records(TRAITS_DIR)
+ alias_receipt = {
+ "filename": args.kgm_aliases.name,
+ "sha256": file_sha256(args.kgm_aliases) if args.kgm_aliases.is_file() else None,
+ }
aliases = load_alias_table(args.kgm_aliases)
- print(f" {len(aliases)} alias rows loaded")
-
- print(f"[3/4] Building METPO ↔ kg-microbe match table → {args.out_match}")
- metpo_records = load_metpo_records(TRAITS_DIR)
- rows = build_match_table(metpo_records, nodes, aliases)
- write_match_table(rows, args.out_match)
-
- matched = sum(1 for r in rows if int(r["n_kgm_nodes"]) > 0)
- print(f" {len(rows)} TraitRecords; {matched} matched ≥1 kg-microbe node "
- f"({matched / max(len(rows), 1) * 100:.1f}% coverage)")
- by_method: dict[str, int] = {}
- for r in rows:
- by_method[r["match_method"]] = by_method.get(r["match_method"], 0) + 1
- for m, n in sorted(by_method.items(), key=lambda x: -x[1]):
- print(f" {m:<15} {n}")
-
- print(f"[4/4] 2-D projection ({args.method}) + nearest neighbors")
- vectors = load_embedding_vectors(args.out_deepwalk)
- umap_points, nn_map = compute_umap_and_neighbors(
- metpo_records, rows, vectors, method=args.method
+ curies = {row[0] for row in records}
+ direct_candidates = curies | {parent for row in records for parent in row[4]}
+ labels = {
+ _normalise(label) for _, label, synonyms, _, _ in records for label in [label, *synonyms]
+ }
+ labels.update(norm for norm, curie in aliases.items() if curie in curies)
+ labels.discard("")
+
+ def candidate(node):
+ return (
+ node in direct_candidates
+ or _normalise(node) in labels
+ or _normalise(node.split(":", 1)[-1]) in labels
+ )
+
+ args.umap_out.parent.mkdir(parents=True, exist_ok=True)
+ with tempfile.TemporaryDirectory(prefix=".trait-graph-", dir=args.umap_out.parent) as temporary:
+ stage = Path(temporary)
+ slim, match_path = stage / args.out_deepwalk.name, stage / args.out_match.name
+ _, nodes, source_receipt = vendor_slim_deepwalk(
+ src, slim, node_filter=candidate, return_receipt=True
+ )
+ matches = build_match_table(records, nodes, aliases)
+ write_match_table(matches, match_path)
+ vectors = load_embedding_vectors(slim)
+ details = {}
+ points, neighbors = compute_umap_and_neighbors(
+ records, matches, vectors, method=args.method, receipt_details=details
+ )
+ staged_map, staged_neighbors = stage / args.umap_out.name, stage / args.out_neighbors.name
+ write_json(staged_map, points)
+ write_json(staged_neighbors, neighbors)
+ receipt = make_receipt(
+ source=source_receipt,
+ corpus=corpus,
+ ledger=details["ledger"],
+ matrix=details["matrix"],
+ projection=details["projection"],
+ coverage={
+ "eligible": len(records),
+ "projected": len(points),
+ "omitted": len(records) - len(points),
+ "neighbor_records": len(neighbors),
+ },
+ auxiliary={"aliases": alias_receipt},
+ )
+ receipt["nearest_neighbors"] = details["nearest_neighbors"]
+ if corpus_receipt(sorted(TRAITS_DIR.rglob("*.yaml")), TRAITS_DIR) != corpus:
+ raise ValueError("Trait corpus changed during graph generation")
+ if (file_sha256(args.kgm_aliases) if args.kgm_aliases.is_file() else None) != alias_receipt[
+ "sha256"
+ ]:
+ raise ValueError("Alias table changed during graph generation")
+ write_projection_metadata(
+ args.umap_out,
+ generation_receipt=receipt,
+ staged={
+ args.out_deepwalk: slim,
+ args.out_match: match_path,
+ args.umap_out: staged_map,
+ args.out_neighbors: staged_neighbors,
+ },
+ )
+ print(
+ f"{len(points)} verified {args.method} points and {len(neighbors)} neighbor records published"
)
- if not umap_points:
- print("Projection produced no points; outputs were not published", file=sys.stderr)
- return 2
- write_json(args.umap_out, umap_points)
- write_json(OUT_NN_JSON, nn_map)
- write_projection_metadata(args.umap_out, src, vectors, args.method, args.out_match, OUT_NN_JSON)
- print(f" {len(umap_points)} UMAP points → {args.umap_out.name}")
- nn_with_data = sum(1 for v in nn_map.values() if v)
- print(f" {nn_with_data} traits with ≥1 nearest neighbor → {OUT_NN_JSON.name}")
+
return 0
diff --git a/scripts/embedding_pipeline.py b/scripts/embedding_pipeline.py
new file mode 100644
index 0000000000..1a97ec400d
--- /dev/null
+++ b/scripts/embedding_pipeline.py
@@ -0,0 +1,685 @@
+#!/usr/bin/env python3
+"""Build provenance-bound semantic-text maps from a Mech's JSONL adapter.
+
+Inspection and verification use the standard library. Model inference and
+projection are explicit operations with separately installed dependencies.
+"""
+from __future__ import annotations
+
+import argparse
+import contextlib
+import datetime as dt
+import hashlib
+import heapq
+import importlib.metadata
+import json
+import math
+import os
+import re
+import shutil
+import sqlite3
+import struct
+import sys
+import tempfile
+from pathlib import Path
+from urllib.parse import unquote, urlsplit
+
+FORMAT_VERSION = 1
+MODEL = "BAAI/bge-large-en-v1.5"
+MODEL_REVISION = "d4aa6901d3a41ba39fb536a557fa166f842b0e09"
+MODEL_DIMENSION = 1024
+MAX_SEQ_LENGTH = 512
+REQUIRED_FIELDS = (
+ "identifier", "label", "category", "page", "source_path", "text",
+ "text_sha256", "adapter_version",
+)
+
+
+class ContractError(ValueError):
+ """Malformed input or an unverified artifact; never a successful map."""
+
+
+def canonical(value: object) -> bytes:
+ return json.dumps(value, sort_keys=True, separators=(",", ":"),
+ ensure_ascii=False, allow_nan=False).encode("utf-8")
+
+
+def digest_file(path: Path) -> str:
+ digest = hashlib.sha256()
+ with path.open("rb") as stream:
+ for chunk in iter(lambda: stream.read(1024 * 1024), b""):
+ digest.update(chunk)
+ return digest.hexdigest()
+
+
+def framed_update(digest, *values: str) -> None:
+ for value in values:
+ encoded = value.encode("utf-8")
+ digest.update(struct.pack(">Q", len(encoded)))
+ digest.update(encoded)
+
+
+def local_link(value: str) -> bool:
+ if not isinstance(value, str) or not value.strip():
+ return False
+ parsed = urlsplit(value)
+ decoded = unquote(parsed.path)
+ return bool(value) and not (
+ parsed.scheme or parsed.netloc or decoded.startswith("/")
+ or "\\" in decoded or ".." in decoded.split("/")
+ or any(ord(char) < 32 for char in unquote(value))
+ )
+
+
+def records(path: Path, *, raw_digest=None):
+ """Read one adapter record at a time; no YAML or biological policy here."""
+ with path.open("rb") as stream:
+ for number, line in enumerate(stream, 1):
+ if raw_digest is not None:
+ raw_digest.update(line)
+ try:
+ record = json.loads(line.decode("utf-8"))
+ except (ValueError, UnicodeError) as exc:
+ raise ContractError(f"invalid JSONL record at line {number}") from exc
+ if not isinstance(record, dict) or any(
+ not isinstance(record.get(key), str) or not record[key].strip()
+ for key in REQUIRED_FIELDS
+ ):
+ raise ContractError(f"line {number}: required fields must be nonempty strings")
+ if not local_link(record["page"]) or not local_link(record["source_path"]):
+ raise ContractError(f"line {number}: page and source paths must be local")
+ if record["text_sha256"] != hashlib.sha256(record["text"].encode()).hexdigest():
+ raise ContractError(f"line {number}: text checksum mismatch")
+ yield record
+
+
+def inspect_inputs(path: Path) -> dict:
+ """Validate full ordered inputs, using disk for duplicate detection."""
+ content = hashlib.sha256()
+ display = hashlib.sha256()
+ raw = hashlib.sha256()
+ counts: dict[str, int] = {}
+ versions: set[str] = set()
+ count = 0
+ with tempfile.TemporaryDirectory(prefix="embedding-inputs-") as tmp:
+ with sqlite3.connect(str(Path(tmp) / "ids.sqlite")) as db:
+ db.execute("CREATE TABLE ids (id TEXT PRIMARY KEY)")
+ for record in records(path, raw_digest=raw):
+ try:
+ db.execute("INSERT INTO ids VALUES (?)", (record["identifier"],))
+ except sqlite3.IntegrityError as exc:
+ raise ContractError(f"duplicate identifier: {record['identifier']}") from exc
+ framed_update(content, record["identifier"], record["text"])
+ framed_update(display, canonical(record).decode())
+ counts[record["category"]] = counts.get(record["category"], 0) + 1
+ versions.add(record["adapter_version"])
+ count += 1
+ if not count:
+ raise ContractError("adapter input contains no records")
+ if len(versions) != 1:
+ raise ContractError("adapter versions must agree within one input")
+ if digest_file(path) != raw.hexdigest():
+ raise ContractError("adapter input changed while inspecting; rerun")
+ return {"count": count, "corpus_sha256": content.hexdigest(),
+ "records_sha256": display.hexdigest(), "input_sha256": raw.hexdigest(),
+ "categories": counts, "adapter_version": versions.pop()}
+
+
+def encoder_profile(*, library_versions: dict | None = None, device: str = "cpu") -> dict:
+ return {"format_version": FORMAT_VERSION, "model": MODEL,
+ "revision": MODEL_REVISION, "dimension": MODEL_DIMENSION,
+ "normalized": True, "dtype": "float32-le", "max_seq_length": MAX_SEQ_LENGTH,
+ "pooling": "sentence-transformers-model", "truncation": "tail",
+ "inference_device": device, "weight_dtype": "torch.float32",
+ "query_instruction": None, "library_versions": library_versions or {}}
+
+
+def validate_profile(profile: dict) -> None:
+ if not isinstance(profile, dict) or not re.fullmatch(
+ r"[0-9a-f]{40}", str(profile.get("revision", ""))
+ ):
+ raise ContractError("encoder profile must identify an immutable model revision")
+ if (type(profile.get("format_version")) is not int
+ or profile["format_version"] != FORMAT_VERSION
+ or not isinstance(profile.get("model"), str) or not profile["model"]
+ or type(profile.get("dimension")) is not int or profile["dimension"] < 2
+ or profile.get("normalized") is not True or profile.get("dtype") != "float32-le"
+ or type(profile.get("max_seq_length")) is not int
+ or profile["max_seq_length"] < 1
+ or profile.get("pooling") != "sentence-transformers-model"
+ or profile.get("truncation") != "tail"
+ or not re.fullmatch(r"cpu|mps(?::\d+)?|cuda(?::\d+)?",
+ str(profile.get("inference_device", "")))
+ or profile.get("weight_dtype") != "torch.float32"
+ or "query_instruction" not in profile or profile["query_instruction"] is not None):
+ raise ContractError("invalid encoder profile")
+ validate_versions(profile.get("library_versions"), "encoder")
+ canonical(profile)
+
+
+def validate_versions(value, context: str) -> None:
+ if (not isinstance(value, dict) or not value
+ or any(not isinstance(name, str) or not name.strip()
+ or not isinstance(version, str) or not version.strip()
+ for name, version in value.items())):
+ raise ContractError(f"{context} requires recorded software versions")
+
+
+def profile_id(profile: dict) -> str:
+ validate_profile(profile)
+ return hashlib.sha256(canonical(profile)).hexdigest()
+
+
+def vector_bytes(vector, dimension: int) -> bytes:
+ values = [float(value) for value in vector]
+ if len(values) != dimension or not all(math.isfinite(value) for value in values):
+ raise ContractError("vector dimension or finiteness check failed")
+ norm = math.sqrt(sum(value * value for value in values))
+ if not 0.999 <= norm <= 1.001:
+ raise ContractError("embedding vector must have unit norm")
+ return struct.pack("<" + "f" * dimension, *values)
+
+
+def unpack_vector(blob: bytes, dimension: int):
+ if len(blob) != dimension * 4:
+ raise ContractError("cached vector byte length does not match its dimension")
+ values = struct.unpack("<" + "f" * dimension, blob)
+ vector_bytes(values, dimension)
+ return values
+
+
+@contextlib.contextmanager
+def cache_connection(path: Path, *, writable: bool = False):
+ if writable:
+ path.parent.mkdir(parents=True, exist_ok=True)
+ connection = sqlite3.connect(path, timeout=30)
+ connection.execute("PRAGMA synchronous=FULL")
+ connection.execute("CREATE TABLE IF NOT EXISTS profiles (id TEXT PRIMARY KEY, json TEXT)")
+ connection.execute("""CREATE TABLE IF NOT EXISTS vectors (
+ profile TEXT, identifier TEXT, text_sha256 TEXT, vector BLOB, vector_sha256 TEXT,
+ PRIMARY KEY (profile, identifier, text_sha256))""")
+ else:
+ connection = sqlite3.connect(path.resolve().as_uri() + "?mode=ro", uri=True)
+ try:
+ yield connection
+ finally:
+ connection.close()
+
+
+def cached_vector(db, key: str, record: dict, dimension: int):
+ row = db.execute(
+ "SELECT vector, vector_sha256 FROM vectors "
+ "WHERE profile=? AND identifier=? AND text_sha256=?",
+ (key, record["identifier"], record["text_sha256"]),
+ ).fetchone()
+ if row is None:
+ return None
+ blob, checksum = row
+ if hashlib.sha256(blob).hexdigest() != checksum:
+ raise ContractError("cached vector checksum mismatch")
+ unpack_vector(blob, dimension)
+ return blob
+
+
+def populate_cache(input_path: Path, cache_path: Path, profile: dict, encoder,
+ *, batch_size: int = 64) -> dict:
+ """Reuse exact records and atomically commit each verified encoded batch."""
+ if batch_size < 1:
+ raise ContractError("batch size must be positive")
+ identity = inspect_inputs(input_path)
+ key = profile_id(profile)
+ encoded_count = reused = 0
+ pending = []
+ with cache_connection(cache_path, writable=True) as db:
+ previous = db.execute("SELECT json FROM profiles WHERE id=?", (key,)).fetchone()
+ if previous is not None and previous[0] != canonical(profile).decode():
+ raise ContractError("cache profile metadata is inconsistent with its identity")
+
+ def save_batch():
+ nonlocal encoded_count
+ vectors = encoder([record["text"] for record in pending])
+ if len(vectors) != len(pending):
+ raise ContractError("encoder returned the wrong number of vectors")
+ # Validate the WHOLE batch before starting its transaction.
+ blobs = [vector_bytes(vector, profile["dimension"]) for vector in vectors]
+ with db:
+ db.execute("INSERT OR IGNORE INTO profiles VALUES (?, ?)",
+ (key, canonical(profile).decode()))
+ for record, blob in zip(pending, blobs, strict=True):
+ db.execute("INSERT OR REPLACE INTO vectors VALUES (?, ?, ?, ?, ?)",
+ (key, record["identifier"], record["text_sha256"], blob,
+ hashlib.sha256(blob).hexdigest()))
+ encoded_count += len(pending)
+ pending.clear()
+
+ for record in records(input_path):
+ if cached_vector(db, key, record, profile["dimension"]) is not None:
+ reused += 1
+ else:
+ pending.append(record)
+ if len(pending) == batch_size:
+ save_batch()
+ if pending:
+ save_batch()
+ if digest_file(input_path) != identity["input_sha256"]:
+ raise ContractError("adapter input changed while embedding; rerun")
+ return {**identity, "profile_id": key, "encoded": encoded_count, "reused": reused}
+
+
+def versions(names: tuple[str, ...]) -> dict[str, str]:
+ return {name: importlib.metadata.version(name) for name in names}
+
+
+def local_encoder(device: str | None = None):
+ from sentence_transformers import SentenceTransformer
+
+ model = SentenceTransformer(MODEL, revision=MODEL_REVISION,
+ trust_remote_code=False, device=device)
+ model.max_seq_length = MAX_SEQ_LENGTH
+ model.tokenizer.truncation_side = "right"
+ profile = encoder_profile(library_versions=versions(
+ ("sentence-transformers", "transformers", "tokenizers", "torch", "numpy")
+ ), device=str(model.device))
+ if str(next(model.parameters()).dtype) != profile["weight_dtype"]:
+ raise ContractError("model weights must use the declared float32 precision")
+ if model.get_sentence_embedding_dimension() != MODEL_DIMENSION:
+ raise ContractError("model returned an unexpected embedding dimension")
+
+ def encode(texts):
+ return model.encode(texts, batch_size=len(texts), normalize_embeddings=True,
+ convert_to_numpy=True, show_progress_bar=False)
+
+ return profile, encode
+
+
+def select_records(input_path: Path, maximum: int, seed: int) -> list[dict]:
+ if maximum < 3:
+ raise ContractError("map selection maximum must be at least three")
+ # Bottom-k hashes are deterministic, bounded and independent of input order.
+ def ranked():
+ for record in records(input_path):
+ key = hashlib.sha256(canonical([seed, record["identifier"]])).digest()
+ yield key, record["identifier"], record
+ return [record for _, _, record in heapq.nsmallest(maximum, ranked())]
+
+
+def atomic_json(path: Path, value: dict) -> None:
+ path.parent.mkdir(parents=True, exist_ok=True)
+ descriptor, filename = tempfile.mkstemp(prefix="." + path.name + ".", dir=path.parent)
+ temporary = Path(filename)
+ try:
+ with os.fdopen(descriptor, "wb") as stream:
+ stream.write(canonical(value) + b"\n")
+ stream.flush()
+ os.fsync(stream.fileno())
+ os.replace(temporary, path)
+ finally:
+ temporary.unlink(missing_ok=True)
+
+
+def build_map(input_path: Path, cache_path: Path, output: Path, profile: dict,
+ *, maximum: int = 50000, seed: int = 42, neighbors: int = 15,
+ projector=None, projection_versions: dict | None = None,
+ title: str = "Semantic text map") -> dict:
+ import numpy as np
+
+ inputs = inspect_inputs(input_path)
+ key = profile_id(profile)
+ selected = select_records(input_path, maximum, seed)
+ if len(selected) < 3:
+ raise ContractError("PaCMAP map requires at least three input records")
+ if neighbors < 1:
+ raise ContractError("neighbors must be positive")
+ neighbor_count = min(neighbors, len(selected) - 1)
+ matrix = np.empty((len(selected), profile["dimension"]), dtype=" dict:
+ if bundle.is_symlink() or (bundle / "manifest.json").is_symlink():
+ raise ContractError("bundle and manifest must not be symbolic links")
+ manifest = json.loads((bundle / "manifest.json").read_text())
+ if not isinstance(manifest, dict) or manifest.get("format_version") != FORMAT_VERSION:
+ raise ContractError("unsupported map bundle format")
+ if (manifest.get("representation") != "semantic-text"
+ or any(not isinstance(manifest.get(name), dict) for name in
+ ("encoder", "inputs", "files", "coverage", "projection", "source_vectors"))):
+ raise ContractError("invalid map bundle metadata")
+ if manifest.get("encoder_profile_sha256") != profile_id(manifest["encoder"]):
+ raise ContractError("encoder profile checksum mismatch")
+ expected = {"points.json", "index.html"}
+ if set(manifest.get("files", {})) != expected:
+ raise ContractError("bundle must contain exactly the required artifact checksums")
+ for filename, checksum in manifest["files"].items():
+ path = bundle / filename
+ if path.is_symlink() or digest_file(path) != checksum:
+ raise ContractError(f"artifact checksum mismatch: {filename}")
+ if input_path is not None and inspect_inputs(input_path) != manifest["inputs"]:
+ raise ContractError("map is stale relative to current adapter input")
+ points = json.loads((bundle / "points.json").read_text())
+ if not isinstance(points, list) or len(points) < 3:
+ raise ContractError("map points must contain at least three records")
+ coverage = manifest["coverage"]
+ projection = manifest["projection"]
+ if (projection.get("method") != "pacmap" or projection.get("dimensions") != 2
+ or type(projection.get("seed")) is not int
+ or type(projection.get("neighbors")) is not int
+ or not 1 <= projection["neighbors"] < len(points)
+ or type(projection.get("requested_neighbors")) is not int
+ or projection["requested_neighbors"] < 1
+ or projection.get("initialization") != "pca"
+ or projection.get("MN_ratio") != 0.5 or projection.get("FP_ratio") != 2.0
+ or projection.get("distance") != "euclidean"
+ or projection.get("learning_rate") != 1.0
+ or projection.get("iterations") != [100, 100, 250]
+ or projection.get("apply_pca") is not True
+ or projection.get("knn_backend") != "faiss"):
+ raise ContractError("invalid PaCMAP projection metadata")
+ validate_versions(projection.get("library_versions"), "projection")
+ if projection.get("implementation") == "pacmap.PaCMAP":
+ pairs = projection.get("effective_pairs")
+ if (not isinstance(pairs, dict)
+ or any(type(pairs.get(name)) is not int or not 0 <= pairs[name] < len(points)
+ for name in ("neighbors", "mid_near", "further"))
+ or pairs["neighbors"] != projection["neighbors"] or pairs["further"] < 1):
+ raise ContractError("invalid effective PaCMAP pair counts")
+ elif projection.get("implementation") != "injected-projector":
+ raise ContractError("unidentified projection implementation")
+ if (not isinstance(points, list) or len(points) < 3
+ or any(type(coverage.get(name)) is not int for name in
+ ("displayed", "eligible", "total", "omitted", "maximum"))
+ or not 3 <= len(points) <= coverage["maximum"]
+ or coverage["omitted"] < 0
+ or coverage.get("selection") != "bottom-k-sha256(seed,identifier)"):
+ raise ContractError("invalid map selection coverage")
+ source_vectors = manifest["source_vectors"]
+ if (source_vectors.get("shape") != [len(points), manifest["encoder"]["dimension"]]
+ or source_vectors.get("dtype") != "float32-le"
+ or source_vectors.get("order") != "points.json"
+ or source_vectors.get("storage") != "local-profile-bound-cache"
+ or not re.fullmatch(r"[0-9a-f]{64}", str(source_vectors.get("sha256", "")))):
+ raise ContractError("invalid source vector receipt")
+ for row in points:
+ if (not isinstance(row, dict)
+ or any(not isinstance(row.get(name), str) or not row[name].strip()
+ for name in REQUIRED_FIELDS if name != "text")
+ or not local_link(row["page"]) or not local_link(row["source_path"])
+ or not re.fullmatch(r"[0-9a-f]{64}", row["text_sha256"])
+ or not all(type(row.get(name)) in (int, float) and math.isfinite(row[name])
+ for name in ("x", "y"))):
+ raise ContractError("invalid map coordinate or record metadata")
+ if (coverage["displayed"] != len(points)
+ or coverage["total"] != manifest["inputs"]["count"]
+ or coverage["eligible"] != coverage["total"]
+ or coverage["omitted"] != coverage["total"] - len(points)
+ or len({row["identifier"] for row in points}) != len(points)):
+ raise ContractError("map coverage or identifiers are inconsistent")
+ if input_path is not None:
+ selected = select_records(input_path, coverage["maximum"], projection["seed"])
+ expected = [{key: row[key] for key in REQUIRED_FIELDS if key != "text"}
+ for row in selected]
+ observed = [{key: row[key] for key in REQUIRED_FIELDS if key != "text"}
+ for row in points]
+ if observed != expected:
+ raise ContractError("map records differ from the declared input selection")
+ if cache_path is not None:
+ digest = hashlib.sha256()
+ with cache_connection(cache_path) as db:
+ profile_row = db.execute("SELECT json FROM profiles WHERE id=?",
+ (manifest["encoder_profile_sha256"],)).fetchone()
+ if profile_row is None or profile_row[0] != canonical(manifest["encoder"]).decode():
+ raise ContractError("cache does not contain the exact encoder profile")
+ for row in points:
+ blob = cached_vector(db, manifest["encoder_profile_sha256"], row,
+ manifest["encoder"]["dimension"])
+ if blob is None:
+ raise ContractError("source vector is missing from the verified cache")
+ digest.update(blob)
+ if digest.hexdigest() != source_vectors["sha256"]:
+ raise ContractError("map source vector receipt differs from the cache")
+ return manifest
+
+
+def current_bundle(output: Path) -> Path:
+ pointer = json.loads((output / "current.json").read_text())
+ if not re.fullmatch(r"[0-9a-f]{64}", str(pointer.get("bundle", ""))):
+ raise ContractError("invalid current bundle identifier")
+ bundle = output / pointer["bundle"]
+ if bundle.is_symlink() or digest_file(bundle / "manifest.json") != pointer["manifest_sha256"]:
+ raise ContractError("active manifest checksum mismatch")
+ return bundle
+
+
+def stage_map(output: Path, published_dir: Path, *, input_path: Path,
+ expected_bundle: str | None = None) -> dict:
+ """Stage a verified map into a site build, restoring old files on exceptions.
+
+ The caller owns the repository/build lock. The site's later deployment is
+ its publication boundary; the two directory renames are not a live-server
+ transaction. An interrupted machine may leave a named recovery directory.
+ Policy-checking callers pass the generation name they approved at preflight;
+ both the selection and its content identity must still match before writes.
+ """
+ source = current_bundle(output)
+ if expected_bundle is not None and source.name != expected_bundle:
+ raise ContractError("map generation changed after site preflight")
+ manifest = validate_bundle(source, input_path=input_path)
+ if hashlib.sha256(canonical(manifest)).hexdigest() != source.name:
+ raise ContractError("map manifest differs from its immutable generation identity")
+ if manifest["projection"]["implementation"] != "pacmap.PaCMAP":
+ raise ContractError("site publication requires the actual PaCMAP implementation")
+ if (published_dir.is_symlink()
+ or (published_dir.exists() and not published_dir.is_dir())
+ or source.resolve().is_relative_to(published_dir.resolve())
+ or published_dir.resolve().is_relative_to(output.resolve())
+ or input_path.resolve().is_relative_to(published_dir.resolve())):
+ raise ContractError("unsafe map staging destination")
+ published_dir.parent.mkdir(parents=True, exist_ok=True)
+ temporary = Path(tempfile.mkdtemp(prefix=".text-map-stage-", dir=published_dir.parent))
+ backup = None
+ try:
+ for name in ("index.html", "points.json", "manifest.json"):
+ shutil.copyfile(source / name, temporary / name)
+ copied = validate_bundle(temporary, input_path=input_path)
+ if copied != manifest:
+ raise ContractError("map source changed during site staging")
+ if published_dir.exists():
+ backup = Path(tempfile.mkdtemp(prefix=".text-map-recovery-", dir=published_dir.parent))
+ backup.rmdir()
+ os.rename(published_dir, backup)
+ try:
+ os.rename(temporary, published_dir)
+ except BaseException:
+ if backup is not None:
+ os.rename(backup, published_dir)
+ raise
+ if backup is not None:
+ shutil.rmtree(backup)
+ return manifest
+ finally:
+ if temporary.exists():
+ shutil.rmtree(temporary)
+
+
+def render_html(title: str, points: list[dict], total: int) -> str:
+ import html
+
+ payload = canonical(points).decode().replace("<", "\\u003c").replace("&", "\\u0026")
+ # The site adapter publishes this directory at text-map/. Record pages are
+ # relative to the site root, one level above this self-contained page.
+ return f'''
+
+{html.escape(title)}
+
+{html.escape(title)} Showing {len(points):,} of {total:,} input records.
+PaCMAP positions summarize similarity between record descriptions.
+Find a record
+Select a point to open its record.
+
+
+Map provenance and coverage
+
+'''
+
+
+def main(argv=None) -> int:
+ parser = argparse.ArgumentParser(description=__doc__)
+ sub = parser.add_subparsers(dest="command", required=True)
+ inspect_parser = sub.add_parser("inspect")
+ inspect_parser.add_argument("--input", type=Path, required=True)
+ embed_parser = sub.add_parser("embed")
+ embed_parser.add_argument("--input", type=Path, required=True)
+ embed_parser.add_argument("--cache", type=Path, required=True)
+ embed_parser.add_argument("--profile-output", type=Path, required=True)
+ embed_parser.add_argument("--batch-size", type=int, default=64)
+ embed_parser.add_argument("--device", choices=("cpu", "mps", "cuda"))
+ project_parser = sub.add_parser("project")
+ for name in ("input", "cache", "profile", "output"):
+ project_parser.add_argument("--" + name, type=Path, required=True)
+ project_parser.add_argument("--max-points", type=int, default=50000)
+ project_parser.add_argument("--seed", type=int, default=42)
+ project_parser.add_argument("--neighbors", type=int, default=15)
+ project_parser.add_argument("--title", default="Semantic text map")
+ check_parser = sub.add_parser("check")
+ check_parser.add_argument("--output", type=Path, required=True)
+ check_parser.add_argument("--input", type=Path)
+ check_parser.add_argument("--cache", type=Path)
+ stage_parser = sub.add_parser("stage")
+ stage_parser.add_argument("--output", type=Path, required=True)
+ stage_parser.add_argument("--input", type=Path, required=True)
+ stage_parser.add_argument("--published-dir", type=Path, required=True)
+ stage_parser.add_argument("--expected-bundle")
+ args = parser.parse_args(argv)
+ try:
+ if args.command == "inspect":
+ result = inspect_inputs(args.input)
+ elif args.command == "embed":
+ inspect_inputs(args.input) # fail before loading model weights
+ profile, encoder = local_encoder(args.device)
+ result = populate_cache(args.input, args.cache, profile, encoder,
+ batch_size=args.batch_size)
+ atomic_json(args.profile_output, profile)
+ elif args.command == "project":
+ profile = json.loads(args.profile.read_text())
+ result = build_map(args.input, args.cache, args.output, profile,
+ maximum=args.max_points, seed=args.seed,
+ neighbors=args.neighbors, title=args.title)
+ elif args.command == "check":
+ result = validate_bundle(current_bundle(args.output), input_path=args.input,
+ cache_path=args.cache)
+ else:
+ result = stage_map(args.output, args.published_dir, input_path=args.input,
+ expected_bundle=args.expected_bundle)
+ print(json.dumps(result, indent=2, allow_nan=False))
+ return 0
+ except (ContractError, OSError, ValueError, KeyError, sqlite3.Error,
+ importlib.metadata.PackageNotFoundError) as exc:
+ print(f"embedding-pipeline: {exc}", file=sys.stderr)
+ return 1
+
+
+if __name__ == "__main__":
+ raise SystemExit(main())
diff --git a/scripts/render_trait_pages.py b/scripts/render_trait_pages.py
index dc65411d0d..d14979e5ff 100755
--- a/scripts/render_trait_pages.py
+++ b/scripts/render_trait_pages.py
@@ -29,6 +29,7 @@
import re
import shutil
import sys
+import tempfile
from collections import defaultdict
from datetime import datetime, timezone
from pathlib import Path
@@ -37,6 +38,7 @@
from jinja2 import Environment, FileSystemLoader, select_autoescape
from research_trait import is_pipeline_report
from trait_causal_graph import causal_graphs_for_template
+from traitmech.text_map_site import prepare_text_map
REPO_ROOT = Path(__file__).resolve().parent.parent
TRAITS_DIR = REPO_ROOT / "data" / "traits"
@@ -64,18 +66,30 @@ def load_projection_receipt(path: Path) -> dict:
source = receipt["source"]
dimensions = receipt["input_dimensions"]
method = receipt["projection"]["method"]
- if (receipt["schema_version"] != 1 or method not in {"pacmap", "umap", "sfdp"}
+ if (receipt["schema_version"] not in {1, 2} or method not in {"pacmap", "umap", "sfdp"}
or type(dimensions) is not int or dimensions < 1
or not isinstance(source["filename"], str) or not source["filename"]
or not re.fullmatch(r"[0-9a-f]{64}", source["sha256"])):
return legacy
- # Include neighbor integrity so a newer neighbor run cannot silently
- # borrow an older map's source claim on every trait page.
- for output in (path, path.parent / "trait_nearest_neighbors.json"):
- with output.open("rb") as stream:
- digest = hashlib.file_digest(stream, "sha256").hexdigest()
- if receipt["outputs"].get(output.name) != digest:
+ if receipt["schema_version"] == 2:
+ from traitmech.graph_embedding_receipts import validate_receipt
+
+ outputs = receipt["outputs"]
+ required = {path.name, "trait_nearest_neighbors.json", "deepwalk_traits.tsv.gz",
+ "metpo_to_kgm_node.tsv"}
+ if (not isinstance(outputs, dict) or not required.issubset(outputs)
+ or any(not isinstance(name, str) or Path(name).name != name
+ or name in {".", ".."} for name in outputs)):
return legacy
+ validate_receipt(receipt, {name: path.parent / name for name in outputs})
+ else:
+ # The older receipt binds the projection and nearest neighbors.
+ # Its metadata must not be borrowed by a later neighbor run.
+ for output in (path, path.parent / "trait_nearest_neighbors.json"):
+ with output.open("rb") as stream:
+ digest = hashlib.file_digest(stream, "sha256").hexdigest()
+ if receipt["outputs"].get(output.name) != digest:
+ return legacy
return {"label": {"pacmap": "PaCMAP", "umap": "UMAP", "sfdp": "sfdp layout"}[method],
"method": method, "source": source["filename"],
"source_sha256": source["sha256"], "dimensions": dimensions, "verified": True}
@@ -386,6 +400,18 @@ def research_answer(text: str) -> list[str]:
def render_pages(args: argparse.Namespace) -> int:
+ # Finish full-input/policy validation and artifact staging before --clean
+ # can remove any existing pages. The temporary copy survives pointer swaps.
+ with prepare_text_map(REPO_ROOT) as ready:
+ if ready is None or args.dry_run:
+ return _render_pages(args)
+ with tempfile.TemporaryDirectory(prefix="traitmech-site-map-") as directory:
+ staging = Path(directory)
+ ready.stage(staging)
+ return _render_pages(args, staged_text_map=staging / "text-map")
+
+
+def _render_pages(args: argparse.Namespace, *, staged_text_map: Path | None = None) -> int:
# Output root is a parameter, not the module constant, so the staleness gate
# can render into a temp dir and diff (#230). Checking must never dirty the
# tree — that is half of what #214 was about — and this function wipes and
@@ -415,6 +441,8 @@ def render_pages(args: argparse.Namespace) -> int:
shutil.rmtree(pages_dir)
pages_dir.mkdir(parents=True, exist_ok=True)
+ if staged_text_map is not None:
+ shutil.copytree(staged_text_map, pages_dir / "text-map", dirs_exist_ok=True)
(pages_dir / "category").mkdir(exist_ok=True)
(pages_dir / "assets").mkdir(exist_ok=True)
shutil.copyfile(TEMPLATES_DIR / "style.css", pages_dir / "assets" / "style.css")
@@ -614,6 +642,7 @@ def render_pages(args: argparse.Namespace) -> int:
embedded_count = sum(1 for v in match_table.values() if v["n_kgm_nodes"] > 0)
landing = env.get_template("index.html").render(
title="Microbial trait knowledge base",
+ text_map_enabled=staged_text_map is not None,
projection_label=embedding_receipt["label"],
root="",
total_traits=len(traits),
diff --git a/scripts/sfdp_layout.py b/scripts/sfdp_layout.py
index 9ed2c158b3..f7f650a8ab 100644
--- a/scripts/sfdp_layout.py
+++ b/scripts/sfdp_layout.py
@@ -1,39 +1,83 @@
-"""Force-directed 2D layout of a mutual-kNN graph over embeddings, via Graphviz sfdp.
+"""Force-directed 2D layout of a symmetric union-kNN graph over embeddings, via Graphviz sfdp.
Self-contained: scikit-learn (kNN) + the `sfdp` binary (Graphviz). No pygraphviz/
pydot needed. Deterministic-ish via -Gstart=. Rows are L2-normalized so the
Euclidean kNN mirrors the cosine metric used elsewhere. Output row order == input.
"""
+
+import hashlib
import subprocess
+
import numpy as np
-from sklearn.preprocessing import normalize
from sklearn.neighbors import kneighbors_graph
+from sklearn.preprocessing import normalize
+
+from traitmech.graph_embedding_receipts import matrix_receipt
-def sfdp_layout(matrix, k=15, seed=42, sfdp_bin="sfdp"):
+def sfdp_layout(matrix, k=15, seed=42, sfdp_bin="sfdp", *, return_receipt=False, record_ids=None):
"""Return an (n, 2) float32 array of 2D coordinates for the rows of `matrix`."""
matrix = normalize(np.asarray(matrix, dtype="float32"))
n = matrix.shape[0]
if n == 0:
return np.zeros((0, 2), dtype="float32")
+ requested_k = k
k = min(k, max(1, n - 1))
A = kneighbors_graph(matrix, n_neighbors=k, mode="connectivity")
A = A.maximum(A.T) # symmetric union-kNN graph
coo = A.tocoo()
- edges = {(min(i, j), max(i, j)) for i, j in zip(coo.row.tolist(), coo.col.tolist()) if i != j}
- dot = "\n".join(["graph G {"] + [f"{i};" for i in range(n)]
- + [f"{i}--{j};" for i, j in edges] + ["}"])
+ edges = {
+ (min(i, j), max(i, j))
+ for i, j in zip(coo.row.tolist(), coo.col.tolist(), strict=True)
+ if i != j
+ }
+ dot = "\n".join(
+ ["graph G {"]
+ + [f"{i};" for i in range(n)]
+ + [f"{i}--{j};" for i, j in sorted(edges)]
+ + ["}"]
+ )
out = subprocess.run(
[sfdp_bin, "-Tplain", f"-Gstart={seed}", "-Goverlap=prism", "-Gsmoothing=triangle"],
- input=dot, capture_output=True, text=True, timeout=900,
+ input=dot,
+ capture_output=True,
+ text=True,
+ timeout=900,
+ check=False,
)
if out.returncode != 0:
raise RuntimeError(f"sfdp failed (is graphviz installed?): {out.stderr[:300]}")
xy = np.zeros((n, 2), dtype="float32")
+ seen = set()
for ln in out.stdout.splitlines():
if ln.startswith("node "):
p = ln.split()
idx = int(p[1])
+ if idx in seen or not 0 <= idx < n:
+ raise ValueError("sfdp returned an invalid or repeated node")
+ seen.add(idx)
xy[idx, 0] = float(p[2])
xy[idx, 1] = float(p[3])
+ if len(seen) != n or not np.isfinite(xy).all():
+ raise ValueError("sfdp did not return finite coordinates for every node")
+ if return_receipt:
+ version = subprocess.run(
+ [sfdp_bin, "-V"], capture_output=True, text=True, check=True
+ ).stderr.strip()
+ if not version:
+ raise ValueError("sfdp did not identify its Graphviz version")
+ graph = {
+ "construction": "symmetric_union_knn",
+ "metric": "euclidean",
+ "requested_k": requested_k,
+ "effective_k": k,
+ "edges": len(edges),
+ "dot_sha256": hashlib.sha256(dot.encode()).hexdigest(),
+ "graphviz_version": version,
+ "arguments": ["-Tplain", f"-Gstart={seed}", "-Goverlap=prism", "-Gsmoothing=triangle"],
+ "matrix": matrix_receipt(
+ matrix, record_ids if record_ids is not None else [str(i) for i in range(n)]
+ ),
+ }
+ return xy, graph
return xy
diff --git a/src/traitmech/graph_embedding_receipts.py b/src/traitmech/graph_embedding_receipts.py
new file mode 100644
index 0000000000..9fe0553a5c
--- /dev/null
+++ b/src/traitmech/graph_embedding_receipts.py
@@ -0,0 +1,497 @@
+"""Source-bound receipts for graph maps. Standard library; no legacy cache loading.
+
+Consumers own matching, aggregation and projection. Verified generation reads
+the source stream directly and stages new outputs; historical arrays cannot
+acquire provenance by passing an old cache to this module.
+"""
+
+from __future__ import annotations
+
+import gzip
+import hashlib
+import importlib.metadata
+import io
+import json
+import math
+import os
+import re
+import shutil
+import struct
+import tempfile
+from pathlib import Path
+
+SCHEMA_VERSION = 2
+
+
+def canonical(value: object) -> bytes:
+ return json.dumps(
+ value, sort_keys=True, separators=(",", ":"), ensure_ascii=False, allow_nan=False
+ ).encode("utf-8")
+
+
+def file_sha256(path: Path) -> str:
+ with Path(path).open("rb") as stream:
+ return hashlib.file_digest(stream, "sha256").hexdigest()
+
+
+def _frame(digest, value: str) -> None:
+ payload = value.encode("utf-8")
+ digest.update(struct.pack(">Q", len(payload)))
+ digest.update(payload)
+
+
+class _HashingReader(io.RawIOBase):
+ def __init__(self, stream):
+ self.stream = stream
+ self.digest = hashlib.sha256()
+ self.count = 0
+
+ def readable(self):
+ return True
+
+ def readinto(self, buffer):
+ data = self.stream.read(len(buffer))
+ buffer[: len(data)] = data
+ self.digest.update(data)
+ self.count += len(data)
+ return len(data)
+
+
+class GraphSource:
+ """Read selected node vectors while hashing the exact source bytes consumed.
+
+ Exhaust the iterator before using ``receipt``. Empty selection is recorded;
+ malformed selected rows, repeated IDs, inconsistent dimensions and nonfinite
+ values are errors. No basename/mtime cache or pickle is consulted.
+ """
+
+ def __init__(self, path: Path, prefixes, *, node_ids=None, node_filter=None, filter_name=None):
+ self.path = Path(path)
+ self.prefixes = tuple(sorted({p.rstrip(":") for p in prefixes}))
+ self.node_ids = None if node_ids is None else frozenset(node_ids)
+ if (node_filter is None) != (filter_name is None):
+ raise ValueError("a graph node filter requires an explicit policy name")
+ self.node_filter = node_filter
+ self.filter_name = filter_name
+ self.receipt = None
+ self._started = False
+
+ def __iter__(self):
+ if self._started:
+ raise ValueError("graph source reader is single-use")
+ self._started = True
+ seen = set()
+ dimension = None
+ lines = 0
+ with self.path.open("rb") as raw:
+ before = os.fstat(raw.fileno())
+ meter = _HashingReader(raw)
+ binary = (
+ gzip.GzipFile(fileobj=meter, mode="rb")
+ if self.path.suffix == ".gz"
+ else io.BufferedReader(meter)
+ )
+ with io.TextIOWrapper(binary, encoding="utf-8") as stream:
+ for line in stream:
+ lines += 1
+ node, separator, rest = line.rstrip("\r\n").partition("\t")
+ if not any(node.startswith(prefix + ":") for prefix in self.prefixes):
+ continue
+ if self.node_ids is not None and node not in self.node_ids:
+ continue
+ if self.node_filter is not None and not self.node_filter(node):
+ continue
+ if node in seen:
+ raise ValueError(f"duplicate selected graph node: {node}")
+ if not separator:
+ raise ValueError(f"missing vector for selected graph node: {node}")
+ try:
+ vector = [float(value) for value in rest.split("\t")]
+ except ValueError as error:
+ raise ValueError(f"malformed graph vector for {node}") from error
+ if (
+ len(vector) < 2
+ or not all(math.isfinite(v) for v in vector)
+ or not any(vector)
+ ):
+ raise ValueError(f"invalid graph vector for {node}")
+ if dimension is None:
+ dimension = len(vector)
+ if len(vector) != dimension:
+ raise ValueError(f"inconsistent graph vector dimension for {node}")
+ seen.add(node)
+ yield node, vector
+ after = os.fstat(raw.fileno())
+ if (before.st_dev, before.st_ino, before.st_size, before.st_mtime_ns) != (
+ after.st_dev,
+ after.st_ino,
+ after.st_size,
+ after.st_mtime_ns,
+ ) or meter.count != before.st_size:
+ raise ValueError("graph source changed or was not completely consumed")
+ self.receipt = {
+ "filename": self.path.name,
+ "sha256": meter.digest.hexdigest(),
+ "bytes": meter.count,
+ "physical_lines": lines,
+ "parser": "graph-tsv-numeric-v1",
+ "prefixes": list(self.prefixes),
+ "selection": "prefixes" if self.node_ids is None else "explicit-node-ids",
+ "filter_policy": self.filter_name,
+ "requested_node_ids_sha256": None
+ if self.node_ids is None
+ else hashlib.sha256(canonical(sorted(self.node_ids))).hexdigest(),
+ "selected_nodes": len(seen),
+ "dimensions": dimension,
+ "selected_node_ids_sha256": hashlib.sha256(canonical(sorted(seen))).hexdigest(),
+ "lineage": "parsed-source-bytes",
+ }
+
+
+def corpus_receipt(paths, root: Path) -> dict:
+ root = Path(root).resolve()
+ digest = hashlib.sha256()
+ entries = []
+ for path in sorted(Path(p) for p in paths):
+ if path.is_symlink():
+ raise ValueError(f"corpus symlink refused: {path}")
+ relative = path.resolve().relative_to(root).as_posix()
+ checksum = file_sha256(path)
+ _frame(digest, relative)
+ _frame(digest, checksum)
+ entries.append({"path": relative, "sha256": checksum})
+ if not entries or len({e["path"] for e in entries}) != len(entries):
+ raise ValueError("corpus must contain unique input files")
+ return {"count": len(entries), "sha256": digest.hexdigest(), "files": entries}
+
+
+def matrix_receipt(rows, identifiers, *, dtype="float32-le") -> dict:
+ formats = {"float32-le": "f", "float64-le": "d"}
+ if dtype not in formats:
+ raise ValueError("unsupported graph vector storage dtype")
+ ids = list(identifiers)
+ if len(set(ids)) != len(ids):
+ raise ValueError("duplicate projected record identity")
+ digest = hashlib.sha256()
+ dimension = None
+ count = 0
+ for identifier, row in zip(ids, rows, strict=True):
+ count += 1
+ if not isinstance(identifier, str) or not identifier:
+ raise ValueError("projected record identity must be nonempty")
+ values = [float(v) for v in row]
+ if len(values) < 2 or not all(math.isfinite(v) for v in values) or not any(values):
+ raise ValueError("projected vectors must be finite and nonzero")
+ dimension = len(values) if dimension is None else dimension
+ if len(values) != dimension:
+ raise ValueError("projected vectors have inconsistent dimensions")
+ digest.update(struct.pack("<" + formats[dtype] * dimension, *values))
+ if count < 1:
+ raise ValueError("projection requires at least one graph vector")
+ return {
+ "sha256": digest.hexdigest(),
+ "shape": [count, dimension],
+ "dtype": dtype,
+ "row_ids": ids,
+ "row_ids_sha256": hashlib.sha256(canonical(ids)).hexdigest(),
+ }
+
+
+def software_versions(*names) -> dict:
+ return {name: importlib.metadata.version(name) for name in names}
+
+
+def projection_receipt(
+ method, parameters, *, normalization, initialization=None, reducer=None, graph=None
+) -> dict:
+ if method not in {"pacmap", "umap", "sfdp"}:
+ raise ValueError(f"unknown projection method: {method}")
+ result = {
+ "method": method,
+ "parameters": parameters,
+ "normalization": normalization,
+ "initialization": initialization,
+ }
+ if method == "pacmap":
+ result.update(
+ implementation="pacmap.PaCMAP",
+ effective_pairs={
+ "neighbors": int(reducer.n_neighbors),
+ "mid_near": int(reducer.n_MN),
+ "further": int(reducer.n_FP),
+ },
+ library_versions=software_versions(
+ "pacmap", "numpy", "numba", "scikit-learn", "faiss-cpu"
+ ),
+ )
+ elif method == "umap":
+ result.update(
+ implementation="umap.UMAP",
+ effective_neighbors=int(reducer._n_neighbors),
+ library_versions=software_versions("umap-learn", "numpy", "numba", "scikit-learn"),
+ )
+ else:
+ if not graph:
+ raise ValueError("sfdp requires actual graph/backend provenance")
+ result.update(
+ implementation="graphviz.sfdp",
+ graph=graph,
+ library_versions=software_versions("numpy", "scikit-learn"),
+ )
+ canonical(result)
+ return result
+
+
+def make_receipt(*, source, corpus, ledger, matrix, projection, coverage, auxiliary=None):
+ if not source or source.get("lineage") != "parsed-source-bytes":
+ raise ValueError("graph provenance requires a freshly parsed source receipt")
+ if (
+ coverage.get("projected") != matrix["shape"][0]
+ or coverage.get("eligible", 0) < coverage["projected"]
+ ):
+ raise ValueError("graph coverage is inconsistent with projected vectors")
+ result = {
+ "schema_version": SCHEMA_VERSION,
+ "embedding_family": "kg_microbe_deepwalk",
+ "source": source,
+ "corpus": corpus,
+ "auxiliary_inputs": auxiliary or {},
+ "matching": {"sha256": hashlib.sha256(canonical(ledger)).hexdigest(), "rows": ledger},
+ "matrix": matrix,
+ "input_dimensions": matrix["shape"][1],
+ "projection": projection,
+ "coverage": coverage,
+ }
+ _validate_core(result)
+ return result
+
+
+def _validate_core(receipt):
+ def checksum(value):
+ return isinstance(value, str) and re.fullmatch(r"[0-9a-f]{64}", value)
+
+ source, matrix = receipt["source"], receipt["matrix"]
+ corpus, matching, projection = receipt["corpus"], receipt["matching"], receipt["projection"]
+ if (
+ receipt.get("schema_version") != SCHEMA_VERSION
+ or receipt.get("embedding_family") != "kg_microbe_deepwalk"
+ or source.get("lineage") != "parsed-source-bytes"
+ or not checksum(source.get("sha256"))
+ or type(source.get("bytes")) is not int
+ or source["bytes"] < 1
+ or not isinstance(source.get("filename"), str)
+ or not source["filename"]
+ or not checksum(corpus.get("sha256"))
+ or type(corpus.get("count")) is not int
+ or corpus["count"] < 1
+ or corpus.get("count") != len(corpus.get("files", []))
+ ):
+ raise ValueError("invalid graph source or corpus receipt")
+ corpus_digest = hashlib.sha256()
+ corpus_paths = []
+ for entry in corpus["files"]:
+ name = entry.get("path")
+ if (
+ not isinstance(name, str)
+ or not name
+ or Path(name).is_absolute()
+ or ".." in Path(name).parts
+ or not checksum(entry.get("sha256"))
+ ):
+ raise ValueError("invalid graph corpus input identity")
+ corpus_paths.append(name)
+ _frame(corpus_digest, name)
+ _frame(corpus_digest, entry["sha256"])
+ if len(set(corpus_paths)) != len(corpus_paths) or corpus_digest.hexdigest() != corpus["sha256"]:
+ raise ValueError("graph corpus ledger checksum mismatch")
+ shape = matrix.get("shape")
+ ids = matrix.get("row_ids")
+ if (
+ not isinstance(shape, list)
+ or len(shape) != 2
+ or any(type(size) is not int for size in shape)
+ or shape[0] < 1
+ or shape[1] < 2
+ or not isinstance(ids, list)
+ or len(ids) != shape[0]
+ or any(not isinstance(identifier, str) or not identifier for identifier in ids)
+ or len(set(ids)) != len(ids)
+ or not checksum(matrix.get("sha256"))
+ or matrix.get("dtype") not in {"float32-le", "float64-le"}
+ or hashlib.sha256(canonical(ids)).hexdigest() != matrix.get("row_ids_sha256")
+ or receipt.get("input_dimensions") != shape[1]
+ ):
+ raise ValueError("invalid ordered graph matrix receipt")
+ rows = matching.get("rows")
+ if (
+ not isinstance(rows, list)
+ or hashlib.sha256(canonical(rows)).hexdigest() != matching.get("sha256")
+ or any(
+ not isinstance(row, dict)
+ or not isinstance(row.get("identifier"), str)
+ or not row["identifier"]
+ or not isinstance(row.get("source_nodes"), list)
+ or any(not isinstance(node, str) or not node for node in row["source_nodes"])
+ or not isinstance(row.get("status"), str)
+ or (row["status"] == "projected" and not row["source_nodes"])
+ for row in rows
+ )
+ or len({row["identifier"] for row in rows}) != len(rows)
+ or {row["identifier"] for row in rows if row["status"] == "projected"} != set(ids)
+ ):
+ raise ValueError("invalid graph matching ledger")
+ coverage = receipt["coverage"]
+ if (
+ type(coverage.get("projected")) is not int
+ or coverage["projected"] != shape[0]
+ or type(coverage.get("eligible")) is not int
+ or coverage["eligible"] < shape[0]
+ or coverage["eligible"] != len(rows)
+ or projection.get("method") not in {"pacmap", "umap", "sfdp"}
+ or not isinstance(projection.get("parameters"), dict)
+ or projection.get("normalization") not in {"l2", "none"}
+ or not isinstance(projection.get("library_versions"), dict)
+ or not projection["library_versions"]
+ or any(
+ not isinstance(version, str) or not version
+ for version in projection["library_versions"].values()
+ )
+ ):
+ raise ValueError("invalid graph coverage or reducer provenance")
+ method = projection["method"]
+ if method == "pacmap":
+ pairs = projection.get("effective_pairs", {})
+ if (
+ projection.get("implementation") != "pacmap.PaCMAP"
+ or set(pairs) != {"neighbors", "mid_near", "further"}
+ or any(type(count) is not int or count < 0 for count in pairs.values())
+ or pairs["neighbors"] < 1
+ or pairs["further"] < 1
+ ):
+ raise ValueError("invalid effective PaCMAP reducer provenance")
+ elif method == "umap":
+ if (
+ projection.get("implementation") != "umap.UMAP"
+ or type(projection.get("effective_neighbors")) is not int
+ or projection["effective_neighbors"] < 1
+ ):
+ raise ValueError("invalid effective UMAP reducer provenance")
+ else:
+ graph = projection.get("graph", {})
+ if (
+ projection.get("implementation") != "graphviz.sfdp"
+ or graph.get("construction") != "symmetric_union_knn"
+ or not checksum(graph.get("dot_sha256"))
+ or not graph.get("graphviz_version")
+ or not graph.get("arguments")
+ or type(graph.get("effective_k")) is not int
+ or graph["effective_k"] < 1
+ or type(graph.get("edges")) is not int
+ or graph["edges"] < 1
+ ):
+ raise ValueError("invalid actual sfdp graph provenance")
+ canonical(receipt)
+
+
+def validate_receipt(receipt, files: dict[str, Path]) -> None:
+ if receipt.get("schema_version") != SCHEMA_VERSION:
+ raise ValueError("unsupported graph receipt schema")
+ _validate_core(receipt)
+ if receipt["source"].get("lineage") != "parsed-source-bytes":
+ raise ValueError("unverified graph source lineage")
+ if set(receipt.get("outputs", {})) != set(files):
+ raise ValueError("graph output set differs from the receipt")
+ if (
+ hashlib.sha256(canonical(receipt["matching"]["rows"])).hexdigest()
+ != receipt["matching"]["sha256"]
+ ):
+ raise ValueError("graph matching receipt checksum mismatch")
+ for name, path in files.items():
+ if Path(path).is_symlink() or file_sha256(path) != receipt["outputs"][name]:
+ raise ValueError(f"graph output checksum mismatch: {name}")
+
+
+def load_receipt(path: Path) -> dict:
+ path = Path(path)
+ if path.is_symlink():
+ raise ValueError("symlinked graph receipt refused")
+ receipt = json.loads(path.read_text())
+ names = receipt.get("outputs", {})
+ if (
+ not isinstance(names, dict)
+ or not names
+ or any(not isinstance(name, str) or not name or Path(name).name != name for name in names)
+ ):
+ raise ValueError("graph receipt outputs must name sibling artifacts")
+ validate_receipt(receipt, {name: path.parent / name for name in names})
+ return receipt
+
+
+def publish_artifacts(staged: dict[Path, Path], receipt_path: Path, receipt: dict) -> dict:
+ """Promote generated files and their receipt, restoring originals on errors.
+
+ Caller owns the repository lock. Receipts are promoted last. A process kill
+ may leave a recovery directory; retain it instead of claiming atomic live
+ serving. All artifacts must have distinct basenames for unambiguous checks.
+ """
+ receipt_path = Path(receipt_path)
+ destinations = [Path(path) for path in staged]
+ if (
+ not destinations
+ or receipt_path.is_symlink()
+ or len({p.name for p in destinations}) != len(destinations)
+ or any(p.parent.resolve() != receipt_path.parent.resolve() for p in destinations)
+ or receipt_path.resolve() in {path.resolve() for path in destinations}
+ or any(p.is_symlink() for p in destinations)
+ ):
+ raise ValueError("graph artifacts must have distinct, non-symlinked sibling destinations")
+ metadata = {
+ **receipt,
+ "outputs": {target.name: file_sha256(origin) for target, origin in staged.items()},
+ }
+ validate_receipt(metadata, {target.name: origin for target, origin in staged.items()})
+ receipt_path.parent.mkdir(parents=True, exist_ok=True)
+ recovery = Path(tempfile.mkdtemp(prefix=".graph-recovery-", dir=receipt_path.parent))
+ changes = []
+ success = False
+ try:
+ receipt_stage = recovery / "new-receipt.json"
+ receipt_stage.write_bytes(canonical(metadata) + b"\n")
+ for index, (target, origin) in enumerate([*staged.items(), (receipt_path, receipt_stage)]):
+ target = Path(target)
+ target.parent.mkdir(parents=True, exist_ok=True)
+ backup = recovery / f"previous-{index}"
+ existed = target.exists()
+ if existed:
+ shutil.copyfile(target, backup)
+ changes.append((target, backup if existed else None))
+ # Stage in each destination filesystem before atomic replacement.
+ fd, temporary_name = tempfile.mkstemp(prefix=".graph-publish-", dir=target.parent)
+ os.close(fd)
+ temporary = Path(temporary_name)
+ try:
+ shutil.copyfile(origin, temporary)
+ expected = (
+ file_sha256(receipt_stage)
+ if target == receipt_path
+ else metadata["outputs"][target.name]
+ )
+ if file_sha256(temporary) != expected:
+ raise ValueError(
+ f"staged graph artifact changed during publication: {target.name}"
+ )
+ os.replace(temporary, target)
+ finally:
+ temporary.unlink(missing_ok=True)
+ success = True
+ except BaseException:
+ for target, backup in reversed(changes):
+ if backup is None:
+ target.unlink(missing_ok=True)
+ else:
+ os.replace(backup, target)
+ raise
+ finally:
+ if success or not any(recovery.glob("previous-*")):
+ shutil.rmtree(recovery)
+ return metadata
diff --git a/src/traitmech/templates/index.html b/src/traitmech/templates/index.html
index c0feaf13f2..9f4f6239c0 100644
--- a/src/traitmech/templates/index.html
+++ b/src/traitmech/templates/index.html
@@ -117,6 +117,13 @@ TraitMech
+ {% if text_map_enabled %}
+
+ Semantic text map
+
+ Traits grouped by their biological descriptions, using the fleet's pinned BGE text model and PaCMAP.
+
+ {% endif %}
🔎
diff --git a/src/traitmech/text_map_site.py b/src/traitmech/text_map_site.py
new file mode 100644
index 0000000000..4a85523c3a
--- /dev/null
+++ b/src/traitmech/text_map_site.py
@@ -0,0 +1,90 @@
+"""Prepare a configured common text map before a site build can change files.
+
+All artifact validation and atomic publication belong to CLAW's shared runtime.
+This adapter only supplies fresh full-corpus semantic inputs and site policy.
+"""
+
+from __future__ import annotations
+
+import importlib.util
+import tempfile
+from collections.abc import Iterator
+from contextlib import contextmanager
+from dataclasses import dataclass
+from pathlib import Path
+from types import ModuleType
+
+import yaml
+
+from traitmech.text_map_inputs import export_inputs
+
+
+@dataclass
+class PreparedTextMap:
+ pipeline: ModuleType
+ source: Path
+ inputs: Path
+ expected_bundle: str
+
+ def stage(self, site: Path) -> None:
+ self.pipeline.stage_map(
+ self.source,
+ site / "text-map",
+ input_path=self.inputs,
+ expected_bundle=self.expected_bundle,
+ )
+
+
+def load_pipeline(root: Path) -> ModuleType:
+ path = root / "scripts" / "embedding_pipeline.py"
+ if not path.is_file() or path.is_symlink():
+ raise ValueError("enabled text map requires the CLAW-governed scripts/embedding_pipeline.py")
+ spec = importlib.util.spec_from_file_location("traitmech_embedding_pipeline", path)
+ if spec is None or spec.loader is None:
+ raise ValueError("cannot load the CLAW embedding pipeline")
+ module = importlib.util.module_from_spec(spec)
+ spec.loader.exec_module(module)
+ if not callable(getattr(module, "stage_map", None)):
+ raise ValueError("CLAW embedding pipeline does not provide validated map staging")
+ return module
+
+
+@contextmanager
+def prepare_text_map(root: Path) -> Iterator[PreparedTextMap | None]:
+ config = root / "conf" / "text_map.yaml"
+ if config.is_symlink():
+ raise ValueError("text map configuration must not be a symlink")
+ if not config.is_file():
+ raise ValueError("text map enablement requires conf/text_map.yaml")
+ settings = yaml.safe_load(config.read_text(encoding="utf-8"))
+ if (
+ not isinstance(settings, dict)
+ or set(settings) != {"enabled"}
+ or type(settings["enabled"]) is not bool
+ ):
+ raise ValueError("text map configuration must contain only an explicit enabled boolean")
+ if not settings["enabled"]:
+ yield None
+ return
+ source = root / "data" / "text_map"
+ if source.is_symlink() or not (source / "current.json").is_file():
+ raise ValueError("enabled text map requires data/text_map/current.json")
+ pipeline = load_pipeline(root)
+ with tempfile.TemporaryDirectory(prefix="traitmech-text-map-") as directory:
+ inputs = Path(directory) / "inputs.jsonl"
+ receipt = export_inputs(root, inputs)
+ if receipt["scope"] != "full":
+ raise ValueError("site publication requires fresh full-corpus inputs")
+ bundle = pipeline.current_bundle(source)
+ manifest = pipeline.validate_bundle(bundle, input_path=inputs)
+ if manifest["projection"]["implementation"] != "pacmap.PaCMAP":
+ raise ValueError("site publication requires the actual PaCMAP implementation")
+ profile = manifest["encoder"]
+ if (
+ profile["model"] != pipeline.MODEL
+ or profile["revision"] != pipeline.MODEL_REVISION
+ or profile["dimension"] != pipeline.MODEL_DIMENSION
+ or profile["max_seq_length"] != pipeline.MAX_SEQ_LENGTH
+ ):
+ raise ValueError("common semantic map requires the pinned fleet BGE encoder profile")
+ yield PreparedTextMap(pipeline, source, inputs, bundle.name)
diff --git a/tests/test_graph_projection_correctness.py b/tests/test_graph_projection_correctness.py
index 069dcb780b..ee84ae5e67 100644
--- a/tests/test_graph_projection_correctness.py
+++ b/tests/test_graph_projection_correctness.py
@@ -1,4 +1,5 @@
"""Selected graph sources and published receipts must be literal, not guessed."""
+
import importlib.util
import json
import sys
@@ -17,8 +18,11 @@ def builder():
def test_explicit_missing_source_fails_without_fallback(builder, tmp_path, monkeypatch):
- monkeypatch.setattr(sys, "argv", ["builder", "--src", str(tmp_path / "typo.gz"),
- "--out-deepwalk", str(tmp_path / "out.gz")])
+ monkeypatch.setattr(
+ sys,
+ "argv",
+ ["builder", "--src", str(tmp_path / "typo.gz"), "--out-deepwalk", str(tmp_path / "out.gz")],
+ )
assert builder.main() == 2
assert not (tmp_path / "out.gz").exists()
@@ -41,26 +45,21 @@ def test_current_local_and_configured_sibling_layout(builder, tmp_path, monkeypa
assert builder.default_deepwalk() == local
-def test_receipt_uses_actual_source_dimensions_and_output_digests(builder, tmp_path):
- source = tmp_path / "explicit_legacy_graph.tsv.gz"
- source.write_bytes(b"a caller-selected legacy artifact")
- output = tmp_path / "map.json"
- output.write_text('[{"id":"METPO:1"}]')
- neighbors = tmp_path / "neighbors.json"
- neighbors.write_text('{"METPO:1":[]}')
- matches = tmp_path / "matches.tsv"
- matches.write_text("match_method\nparent_proxy\n")
- builder.write_projection_metadata(output, source, {"METPO:1": [1.] * 200}, "umap", matches, neighbors)
- metadata = json.loads(output.with_suffix(".metadata.json").read_text())
- assert metadata["source"] == {"filename": source.name, "sha256": builder.file_sha256(source)}
- assert metadata["input_dimensions"] == 200
- assert metadata["projection"]["method"] == "umap"
- assert metadata["outputs"][output.name] == builder.file_sha256(output)
- assert metadata["outputs"][neighbors.name] == builder.file_sha256(neighbors)
+def test_output_only_metadata_cannot_bless_old_coordinates(builder, tmp_path):
+ with pytest.raises(ValueError, match="Output-only provenance"):
+ builder.write_projection_metadata(
+ tmp_path / "old-map.json",
+ tmp_path / "new-source.gz",
+ {"METPO:1": [1.0] * 200},
+ "pacmap",
+ tmp_path / "matches.tsv",
+ tmp_path / "neighbors.json",
+ )
def test_renderer_checks_receipt_and_labels_legacy_without_guessing(builder, tmp_path, monkeypatch):
import hashlib
+
path = Path(__file__).resolve().parents[1] / "scripts/render_trait_pages.py"
monkeypatch.syspath_prepend(str(path.parent))
spec = importlib.util.spec_from_file_location("graph_renderer_under_test", path)
@@ -71,10 +70,15 @@ def test_renderer_checks_receipt_and_labels_legacy_without_guessing(builder, tmp
neighbors = tmp_path / "trait_nearest_neighbors.json"
neighbors.write_text("{}")
assert renderer.load_projection_receipt(projection)["verified"] is False
- receipt = {"schema_version": 1, "input_dimensions": 200,
+ receipt = {
+ "schema_version": 1,
+ "input_dimensions": 200,
"source": {"filename": "actual_legacy_source.gz", "sha256": "a" * 64},
"projection": {"method": "umap"},
- "outputs": {p.name: hashlib.sha256(p.read_bytes()).hexdigest() for p in (projection, neighbors)}}
+ "outputs": {
+ p.name: hashlib.sha256(p.read_bytes()).hexdigest() for p in (projection, neighbors)
+ },
+ }
projection.with_suffix(".metadata.json").write_text(json.dumps(receipt))
result = renderer.load_projection_receipt(projection)
assert result["label"] == "UMAP"
diff --git a/tests/test_graph_receipt_proxies.py b/tests/test_graph_receipt_proxies.py
new file mode 100644
index 0000000000..9d026e897a
--- /dev/null
+++ b/tests/test_graph_receipt_proxies.py
@@ -0,0 +1,48 @@
+"""Omitted records cannot shift the per-point graph node provenance."""
+
+import sys
+import types
+
+import numpy as np
+
+from scripts.build_embedding_index import compute_umap_and_neighbors
+
+
+def test_missing_first_trait_does_not_shift_proxy_or_point_source_nodes(monkeypatch):
+ class Reducer:
+ def __init__(self, **kwargs):
+ self.n_neighbors, self.n_MN, self.n_FP = 1, 0, 1
+
+ def fit_transform(self, values, **kwargs):
+ return values[:, :2]
+
+ monkeypatch.setitem(sys.modules, "pacmap", types.SimpleNamespace(PaCMAP=Reducer))
+ records = [("METPO:missing", "Missing", [], "fixture", [])]
+ records.extend((f"METPO:{i}", f"Trait {i}", [], "fixture", []) for i in range(6))
+ records.append(("METPO:proxy", "Proxy", [], "fixture", ["METPO:1"]))
+ matches = [
+ {
+ "metpo_curie": curie,
+ "kgm_nodes": ""
+ if curie == "METPO:missing"
+ else "METPO:1"
+ if curie == "METPO:proxy"
+ else curie,
+ "match_method": "parent_proxy" if curie == "METPO:proxy" else "direct_metpo",
+ }
+ for curie, *_ in records
+ ]
+ vectors = {f"METPO:{i}": np.array([i + 1, 2, 3.0]) for i in range(6)}
+ details = {}
+ points, neighbors = compute_umap_and_neighbors(
+ records, matches, vectors, receipt_details=details
+ )
+ by_id = {row["id"]: row for row in points}
+ assert by_id["METPO:0"]["kgm_nodes"] == ["METPO:0"]
+ assert by_id["METPO:proxy"]["kgm_nodes"] == ["METPO:1"]
+ assert by_id["METPO:proxy"]["match_method"] == "parent_proxy"
+ assert neighbors["METPO:missing"] == []
+ assert len(details["ledger"]) == 8 and len(points) == 7
+ assert details["ledger"][0]["status"] == "no_vectors"
+ for curie, rows in neighbors.items():
+ assert all(row["id"] != curie for row in rows)
diff --git a/tests/test_graph_receipt_publication.py b/tests/test_graph_receipt_publication.py
new file mode 100644
index 0000000000..cb4ebfe88b
--- /dev/null
+++ b/tests/test_graph_receipt_publication.py
@@ -0,0 +1,78 @@
+"""The rendered source claim covers the whole graph output generation."""
+from __future__ import annotations
+
+import gzip
+import importlib.util
+import json
+from pathlib import Path
+
+import pytest
+from traitmech import graph_embedding_receipts as receipts
+
+
+@pytest.fixture
+def renderer(monkeypatch):
+ script = Path(__file__).resolve().parents[1] / "scripts/render_trait_pages.py"
+ monkeypatch.syspath_prepend(str(script.parent))
+ spec = importlib.util.spec_from_file_location("trait_receipt_renderer_review", script)
+ module = importlib.util.module_from_spec(spec)
+ spec.loader.exec_module(module)
+ return module
+
+
+@pytest.fixture
+def generation(tmp_path):
+ raw = tmp_path / "graph.tsv.gz"
+ raw.write_bytes(gzip.compress(b"node\td1\td2\nMETPO:1\t1\t0\nMETPO:2\t0\t1\nMETPO:3\t1\t1\n", mtime=0))
+ reader = receipts.GraphSource(raw, ["METPO"])
+ vectors = dict(reader)
+ corpus = tmp_path / "trait.yaml"
+ corpus.write_text("identifier: METPO:1\nlabel: fixture\n")
+ metadata = receipts.make_receipt(
+ source=reader.receipt, corpus=receipts.corpus_receipt([corpus], tmp_path),
+ ledger=[{"identifier": identifier, "source_nodes": [identifier], "status": "projected"}
+ for identifier in vectors],
+ matrix=receipts.matrix_receipt(vectors.values(), vectors),
+ projection={"method": "pacmap", "parameters": {"n_components": 2},
+ "normalization": "none", "initialization": "pca",
+ "implementation": "pacmap.PaCMAP", "library_versions": {"fixture": "1"},
+ "effective_pairs": {"neighbors": 1, "mid_near": 0, "further": 1}},
+ coverage={"eligible": 3, "projected": 3},
+ )
+ staged = tmp_path / "staged"
+ staged.mkdir()
+ contents = {"deepwalk_traits.tsv.gz": raw.read_bytes(),
+ "metpo_to_kgm_node.tsv": b"metpo_id\tkgm_node\nMETPO:1\tMETPO:1\n",
+ "trait_umap.json": b'[{"id":"METPO:1","x":0,"y":0}]',
+ "trait_nearest_neighbors.json": b'{"METPO:1": []}'}
+ for name, value in contents.items():
+ (staged / name).write_bytes(value)
+ projection = tmp_path / "trait_umap.json"
+ receipts.publish_artifacts({tmp_path / name: staged / name for name in contents},
+ projection.with_suffix(".metadata.json"), metadata)
+ return projection, contents
+
+
+def test_renderer_accepts_complete_current_graph_receipt(renderer, generation):
+ projection, _ = generation
+ result = renderer.load_projection_receipt(projection)
+ assert result["verified"] is True
+ assert result["label"] == "PaCMAP" and result["source"] == "graph.tsv.gz"
+ assert result["dimensions"] == 2
+
+
+@pytest.mark.parametrize("name", ["deepwalk_traits.tsv.gz", "metpo_to_kgm_node.tsv",
+ "trait_umap.json", "trait_nearest_neighbors.json"])
+def test_changed_generation_member_cannot_borrow_old_source_claim(renderer, generation, name):
+ projection, _ = generation
+ (projection.parent / name).write_bytes(b"a later generation")
+ assert renderer.load_projection_receipt(projection)["verified"] is False
+
+
+def test_receipt_cannot_omit_a_required_generation_member(renderer, generation):
+ projection, _ = generation
+ sidecar = projection.with_suffix(".metadata.json")
+ metadata = json.loads(sidecar.read_text())
+ metadata["outputs"].pop("metpo_to_kgm_node.tsv")
+ sidecar.write_text(json.dumps(metadata))
+ assert renderer.load_projection_receipt(projection)["verified"] is False
diff --git a/tests/test_graph_sfdp_receipt.py b/tests/test_graph_sfdp_receipt.py
new file mode 100644
index 0000000000..a44e90c308
--- /dev/null
+++ b/tests/test_graph_sfdp_receipt.py
@@ -0,0 +1,24 @@
+"""Graphviz must return one finite coordinate per actual projected row."""
+
+import shutil
+
+import numpy as np
+import pytest
+
+from scripts.sfdp_layout import sfdp_layout
+
+
+@pytest.mark.skipif(
+ shutil.which("sfdp") is None, reason="Graphviz sfdp is an optional graph backend"
+)
+def test_real_sfdp_returns_all_rows_and_actual_graph_receipt():
+ matrix = np.random.default_rng(42).normal(size=(12, 5))
+ points, graph = sfdp_layout(
+ matrix, k=3, return_receipt=True, record_ids=[f"row:{i}" for i in range(12)]
+ )
+ assert points.shape == (12, 2) and np.isfinite(points).all()
+ assert graph["construction"] == "symmetric_union_knn"
+ assert graph["effective_k"] == 3 and graph["edges"] > 0
+ assert "graphviz" in graph["graphviz_version"].lower()
+ assert graph["matrix"]["shape"] == [12, 5]
+ assert graph["matrix"]["row_ids"][0] == "row:0"
diff --git a/tests/test_text_map_recipe.py b/tests/test_text_map_recipe.py
new file mode 100644
index 0000000000..43c10782dd
--- /dev/null
+++ b/tests/test_text_map_recipe.py
@@ -0,0 +1,43 @@
+"""Exercise the actual just recipe without resolving dependencies or running a model."""
+
+from __future__ import annotations
+
+import json
+import os
+import shutil
+import subprocess
+from pathlib import Path
+
+import pytest
+
+REPO = Path(__file__).resolve().parents[1]
+
+
+@pytest.mark.skipif(shutil.which("just") is None, reason="the just developer tool is required")
+def test_recipe_preserves_quoted_path_arguments(tmp_path):
+ tools = tmp_path / "tools"
+ tools.mkdir()
+ receipt = tmp_path / "argv.json"
+ uv = tools / "uv"
+ uv.write_text(
+ "#!/usr/bin/env python3\n"
+ "import json, os, sys\n"
+ "with open(os.environ['TEXT_MAP_ARGV_RECEIPT'], 'w') as output:\n"
+ " json.dump(sys.argv[1:], output)\n"
+ )
+ uv.chmod(0o755)
+ args = [
+ "--output",
+ str(tmp_path / "output folder" / "inputs.jsonl"),
+ "--record",
+ "data/example/a record.yaml",
+ "--limit",
+ "3",
+ ]
+ env = dict(
+ os.environ, PATH=str(tools) + os.pathsep + os.environ["PATH"], TEXT_MAP_ARGV_RECEIPT=str(receipt)
+ )
+ subprocess.run(
+ ["just", "text-map-inputs", *args], cwd=REPO, env=env, check=True, capture_output=True, text=True
+ )
+ assert json.loads(receipt.read_text()) == ["run", "python", "scripts/text_map_inputs.py", *args]
diff --git a/tests/test_text_map_site.py b/tests/test_text_map_site.py
new file mode 100644
index 0000000000..166e720d10
--- /dev/null
+++ b/tests/test_text_map_site.py
@@ -0,0 +1,206 @@
+"""Publication requires an explicit switch and current validated full inputs."""
+
+from __future__ import annotations
+
+import json
+from pathlib import Path
+from types import SimpleNamespace
+
+import pytest
+from jinja2 import Environment, FileSystemLoader
+
+from traitmech import text_map_site as site
+
+
+def configure(root: Path, value="false"):
+ config = root / "conf" / "text_map.yaml"
+ config.parent.mkdir(parents=True, exist_ok=True)
+ config.write_text(f"enabled: {value}\n")
+
+
+def fake_pipeline():
+ calls = []
+ profile = {
+ "model": "BAAI/bge-large-en-v1.5",
+ "revision": "d4aa6901d3a41ba39fb536a557fa166f842b0e09",
+ "dimension": 1024,
+ "max_seq_length": 512,
+ }
+ manifest = {"encoder": profile, "projection": {"implementation": "pacmap.PaCMAP"}}
+
+ def validate(bundle, *, input_path):
+ assert json.loads(input_path.read_text()) == {"test": "fresh full inputs"}
+ calls.append(("validate", bundle, input_path))
+ return manifest
+
+ def stage(output, published_dir, *, input_path, expected_bundle):
+ assert json.loads(input_path.read_text()) == {"test": "fresh full inputs"}
+ calls.append(("stage", output, published_dir, expected_bundle))
+ return manifest
+
+ pipeline = SimpleNamespace(
+ MODEL=profile["model"],
+ MODEL_REVISION=profile["revision"],
+ MODEL_DIMENSION=1024,
+ MAX_SEQ_LENGTH=512,
+ current_bundle=lambda output: output / ("a" * 64),
+ validate_bundle=validate,
+ stage_map=stage,
+ )
+ return pipeline, calls, manifest
+
+
+def enable_fixture(root, monkeypatch):
+ configure(root, "true")
+ source = root / "data" / "text_map"
+ source.mkdir(parents=True)
+ (source / "current.json").write_text("{}")
+ pipeline, calls, manifest = fake_pipeline()
+ monkeypatch.setattr(site, "load_pipeline", lambda _root: pipeline)
+
+ def export(actual_root, output, **kwargs):
+ assert actual_root == root
+ assert not kwargs, "publication cannot request a canary or limited input set"
+ output.write_text(json.dumps({"test": "fresh full inputs"}))
+ return {"scope": "full"}
+
+ monkeypatch.setattr(site, "export_inputs", export)
+ return pipeline, calls, manifest
+
+
+def test_disabled_map_requires_no_runtime_or_artifact(tmp_path, monkeypatch):
+ configure(tmp_path)
+ monkeypatch.setattr(site, "load_pipeline", lambda _root: pytest.fail("disabled map loaded runtime"))
+ with site.prepare_text_map(tmp_path) as ready:
+ assert ready is None
+
+
+def test_enabled_map_missing_bundle_fails(tmp_path):
+ configure(tmp_path, "true")
+ with pytest.raises(ValueError, match="current.json"), site.prepare_text_map(tmp_path):
+ pass
+
+
+def test_enabled_map_missing_shared_runtime_fails(tmp_path):
+ configure(tmp_path, "true")
+ source = tmp_path / "data" / "text_map"
+ source.mkdir(parents=True)
+ (source / "current.json").write_text("{}")
+ with pytest.raises(ValueError, match="CLAW-governed"), site.prepare_text_map(tmp_path):
+ pass
+
+
+@pytest.mark.parametrize("value", ["1", "'true'", "null", "[]"])
+def test_enablement_requires_an_actual_boolean(tmp_path, value):
+ configure(tmp_path, value)
+ with pytest.raises(ValueError, match="enabled boolean"), site.prepare_text_map(tmp_path):
+ pass
+
+
+def test_enabled_map_uses_fresh_full_inputs_and_canonical_stage(tmp_path, monkeypatch):
+ _, calls, _ = enable_fixture(tmp_path, monkeypatch)
+ with site.prepare_text_map(tmp_path) as ready:
+ inputs = ready.inputs
+ ready.stage(tmp_path / "published")
+ assert calls[-1] == (
+ "stage",
+ tmp_path / "data" / "text_map",
+ tmp_path / "published" / "text-map",
+ "a" * 64,
+ )
+ assert not inputs.exists()
+ assert calls[0][0] == "validate"
+
+
+def test_legacy_encoder_cannot_be_published_as_the_common_space(tmp_path, monkeypatch):
+ _, _, manifest = enable_fixture(tmp_path, monkeypatch)
+ manifest["encoder"] = {"model": "MiniLM", "revision": "0" * 40, "dimension": 384}
+ with pytest.raises(ValueError, match="pinned fleet BGE"), site.prepare_text_map(tmp_path):
+ pass
+
+
+def test_injected_projector_cannot_reach_the_site_build(tmp_path, monkeypatch):
+ _, _, manifest = enable_fixture(tmp_path, monkeypatch)
+ manifest["projection"]["implementation"] = "injected-projector"
+ with pytest.raises(ValueError, match="actual PaCMAP"), site.prepare_text_map(tmp_path):
+ pass
+
+
+def test_subset_receipt_cannot_reach_publication(tmp_path, monkeypatch):
+ enable_fixture(tmp_path, monkeypatch)
+ monkeypatch.setattr(site, "export_inputs", lambda _root, _output: {"scope": "subset"})
+ with pytest.raises(ValueError, match="full-corpus"), site.prepare_text_map(tmp_path):
+ pass
+
+
+def test_navigation_is_conditional_and_retains_specialty_maps():
+ templates = Path(__file__).resolve().parents[1] / "src" / "traitmech" / "templates"
+ env = Environment(loader=FileSystemLoader(str(templates)))
+ template = env.get_template("index.html")
+ context = {"root": "", "category_counts": {}, "projection_label": "PaCMAP"}
+ disabled = template.render(text_map_enabled=False, **context)
+ enabled = template.render(text_map_enabled=True, **context)
+ assert "Explore shared BGE map" not in disabled
+ assert 'href="text-map/"' in enabled
+ assert 'href="umap.html"' in enabled and 'href="graph.html"' in enabled
+
+
+def test_invalid_map_preflight_preserves_existing_pages_before_clean(tmp_path, monkeypatch):
+ monkeypatch.syspath_prepend(str(Path(__file__).resolve().parents[1] / "scripts"))
+ import render_trait_pages as render
+
+ configure(tmp_path, "true")
+ published = tmp_path / "published"
+ published.mkdir()
+ old = published / "index.html"
+ old.write_text("existing published site")
+ monkeypatch.setattr(render, "REPO_ROOT", tmp_path)
+ with pytest.raises(ValueError, match="current.json"):
+ render.render_pages(SimpleNamespace(out=published, clean=True, dry_run=False))
+ assert old.read_text() == "existing published site"
+
+
+def test_staging_failure_precedes_renderer_mutation(tmp_path, monkeypatch):
+ monkeypatch.syspath_prepend(str(Path(__file__).resolve().parents[1] / "scripts"))
+ import render_trait_pages as render
+
+ pipeline, _, _ = enable_fixture(tmp_path, monkeypatch)
+ def refuse(*args, **kwargs):
+ raise ValueError("generation changed")
+ monkeypatch.setattr(pipeline, "stage_map", refuse)
+ monkeypatch.setattr(render, "REPO_ROOT", tmp_path)
+ monkeypatch.setattr(render, "_render_pages", lambda *a, **kw: pytest.fail("renderer wrote too early"))
+ with pytest.raises(ValueError, match="generation changed"):
+ render.render_pages(SimpleNamespace(out=tmp_path / "pages", clean=True, dry_run=False))
+ assert not (tmp_path / "pages").exists()
+
+
+def test_pointer_change_does_not_replace_the_preflight_generation(tmp_path, monkeypatch):
+ pipeline, _, _ = enable_fixture(tmp_path, monkeypatch)
+ published = tmp_path / "published" / "text-map"
+ published.mkdir(parents=True)
+ old = published / "index.html"
+ old.write_text("previously published map")
+ seen = []
+
+ def checked_stage(output, published_dir, *, input_path, expected_bundle):
+ seen.append(expected_bundle)
+ if pipeline.current_bundle(output).name != expected_bundle:
+ raise ValueError("current map differs from preflight generation")
+ (published_dir / "index.html").write_text("replacement map")
+
+ monkeypatch.setattr(pipeline, "stage_map", checked_stage)
+ with site.prepare_text_map(tmp_path) as ready:
+ monkeypatch.setattr(pipeline, "current_bundle", lambda output: output / ("b" * 64))
+ with pytest.raises(ValueError, match="preflight generation"):
+ ready.stage(tmp_path / "published")
+ assert seen == ["a" * 64]
+ assert old.read_text() == "previously published map"
+
+
+def test_common_map_rejects_an_alternate_window_with_other_bge_fields_valid(tmp_path, monkeypatch):
+ _, calls, manifest = enable_fixture(tmp_path, monkeypatch)
+ manifest["encoder"]["max_seq_length"] = 256
+ with pytest.raises(ValueError, match="pinned fleet BGE"), site.prepare_text_map(tmp_path):
+ pytest.fail("different input window was approved as the common BGE map")
+ assert not any(call[0] == "stage" for call in calls)
From 090b1bba7d48cd4103ef2dd9c8de89c651db54c1 Mon Sep 17 00:00:00 2001
From: "marcin p. joachimiak" <4625870+realmarcin@users.noreply.github.com>
Date: Mon, 14 Sep 2026 18:53:16 -0700
Subject: [PATCH 04/11] chore: pin governed embedding runtime to CLAW dbac7dd
---
conf/embedding-runtime/README.md | 47 ++
conf/embedding-runtime/pyproject.toml | 17 +
conf/embedding-runtime/uv.lock | 915 ++++++++++++++++++++++
scripts/.vendored_canon_ref | 2 +-
scripts/embedding_pipeline.py | 495 ++++++++----
src/traitmech/graph_embedding_receipts.py | 23 +-
6 files changed, 1323 insertions(+), 176 deletions(-)
create mode 100644 conf/embedding-runtime/README.md
create mode 100644 conf/embedding-runtime/pyproject.toml
create mode 100644 conf/embedding-runtime/uv.lock
diff --git a/conf/embedding-runtime/README.md b/conf/embedding-runtime/README.md
new file mode 100644
index 0000000000..b5c9f2af25
--- /dev/null
+++ b/conf/embedding-runtime/README.md
@@ -0,0 +1,47 @@
+# Optional text-map runtime
+
+This governed Python 3.13 environment is for explicit local embedding and
+PaCMAP builds. Normal tests, record validation and Pages rendering do not
+install it. The lock pins numerical/model dependencies independently of a
+Mech's curation environment; the encoder and map receipts record actual
+installed library versions as well.
+
+From a Mech repository root, export current semantic input with its domain
+adapter, inspect it, and then explicitly run inference and projection:
+
+```bash
+uv run python scripts/text_map_inputs.py --output workspace/text-map-inputs.jsonl
+uv run python scripts/embedding_pipeline.py inspect --input workspace/text-map-inputs.jsonl
+uv run --locked --project conf/embedding-runtime python scripts/embedding_pipeline.py embed --input workspace/text-map-inputs.jsonl --cache workspace/text-map-vectors.sqlite --profile-output workspace/text-map-profile.json --device cpu
+uv run --locked --project conf/embedding-runtime python scripts/embedding_pipeline.py project --input workspace/text-map-inputs.jsonl --cache workspace/text-map-vectors.sqlite --profile workspace/text-map-profile.json --output data/text_map
+uv run python scripts/embedding_pipeline.py check --output data/text_map --input workspace/text-map-inputs.jsonl --cache workspace/text-map-vectors.sqlite
+```
+
+Run one small explicit `--limit` adapter canary first, with separate output and
+cache paths. Verify its vector count, finite coordinates, source receipt,
+rendered page and repeat-run cache reuse before a full build. A canary is not a
+complete-corpus artifact and cannot satisfy an enabled site's full-input check.
+
+The default display limit is 50,000 records selected deterministically. All
+input records must have a verified cache entry; the map reports omitted display
+records. No all-pairs similarity matrix is allocated.
+
+Model weights are downloaded only by the explicit `embed` command. A cached
+model can be used with `HF_HUB_OFFLINE=1 TRANSFORMERS_OFFLINE=1`. There are no
+provider API calls. Old unpinned vector caches are not assigned this profile.
+
+The existing site renderer stages a validated bundle at `text-map/` only after
+the repository enables it in `conf/text_map.yaml`. Its normal Python environment
+runs this verification without importing Torch, NumPy or PaCMAP. The build must
+fail if an enabled map is absent, stale or invalid. Preflight checks the exact
+BGE model/revision, 1024 dimensions and the fleet's 512-token window. The staging
+call passes the approved generation name through `expected_bundle`, rejecting
+a different pointer or altered generation before changing site files.
+Site deployment remains the
+publication boundary. A machine interruption during directory staging may
+leave `.text-map-recovery-*` beside the destination; preserve it for recovery.
+
+The runtime has been exercised on macOS Apple Silicon. Platform-specific model
+wheels may constrain where heavy builds run; the standard-library verifier is
+independent of those wheels. Cross-platform reproducibility is not implied by
+the lock or a fixed random seed.
diff --git a/conf/embedding-runtime/pyproject.toml b/conf/embedding-runtime/pyproject.toml
new file mode 100644
index 0000000000..6805290760
--- /dev/null
+++ b/conf/embedding-runtime/pyproject.toml
@@ -0,0 +1,17 @@
+[project]
+name = "mech-embedding-runtime"
+version = "1.0.0"
+requires-python = ">=3.13,<3.14"
+dependencies = [
+ "sentence-transformers==6.0.0",
+ "transformers==5.17.0",
+ "torch==2.14.0",
+ "pacmap==0.9.1",
+ "numpy==2.3.5",
+ "numba==0.63.1",
+ "scikit-learn==1.8.0",
+ "PyYAML==6.0.3",
+]
+
+[tool.uv]
+package = false
diff --git a/conf/embedding-runtime/uv.lock b/conf/embedding-runtime/uv.lock
new file mode 100644
index 0000000000..1e355a2923
--- /dev/null
+++ b/conf/embedding-runtime/uv.lock
@@ -0,0 +1,915 @@
+version = 1
+revision = 1
+requires-python = "==3.13.*"
+
+[[package]]
+name = "annotated-doc"
+version = "0.0.5"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/5a/8e/38aa427ed5402449e226975b649c5dc73ccadfefeb95e6aecb8f8ea4b6b6/annotated_doc-0.0.5.tar.gz", hash = "sha256:c7e58ce09192557605d8bbd92836d7e1d520ac9580096042c0bfd197efacf1bb", size = 10758 }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/3e/30/e900b21425a860e195f32e37657aa1f7c7f2b1bfb26f03ca209b90933c06/annotated_doc-0.0.5-py3-none-any.whl", hash = "sha256:117bac03a25ede5df5440e855b32d556049ca169ead221505badf432fed4b101", size = 5302 },
+]
+
+[[package]]
+name = "anyio"
+version = "4.15.1"
+source = { registry = "https://pypi.org/simple" }
+dependencies = [
+ { name = "idna" },
+ { name = "typing-extensions" },
+]
+sdist = { url = "https://files.pythonhosted.org/packages/a9/d2/f4d173e22df740bc37b1db102b386ba719b66e95b0f0d751f556b387e6d2/anyio-4.15.1.tar.gz", hash = "sha256:9f28306018cbd6d329e64a36d58256edff76dd996fe423bc957326e578b82a94", size = 276966 }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/12/b8/4bd346e22b28902df4d651910f5242c28d84e4a5c2435ca5c3f797ed7e2e/anyio-4.15.1-py3-none-any.whl", hash = "sha256:6152fdbbf9a77fdec97731721bebf7c4c44f7c29b424b0065826173efc7ed101", size = 132079 },
+]
+
+[[package]]
+name = "certifi"
+version = "2026.7.22"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/a3/c2/24167ea9858356b47a87a50d39908bfdb72ceeefe0041586e704e5376b3a/certifi-2026.7.22.tar.gz", hash = "sha256:741e2c3b351ddf169a738da9f2c048608ff7f2c5cc02f1ebc6b118bb090d5d55", size = 138112 }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/0b/a7/71ac2cff56fec219ed242bb11b8efb69fcc4bec75db06fb7bfe35de520e6/certifi-2026.7.22-py3-none-any.whl", hash = "sha256:62f22742b58a1a33014a2b6b706588a8d7e2a88ae7bd1a6ebe8c992928483775", size = 136983 },
+]
+
+[[package]]
+name = "click"
+version = "8.5.0"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/c7/0e/7fa0ef50764b67090eca4114772a2abf8b6148198475e54c660b97caeee6/click-8.5.0.tar.gz", hash = "sha256:ba0d2089de75ea0310e2dde03160e6ca10009947fb95a182f9b54021bb272e34", size = 382235 }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/58/50/6c0d534c5f134586a8e1ba4e330569e32f057e33372ae556463212fb4cd3/click-8.5.0-py3-none-any.whl", hash = "sha256:255bc9599cf7748b4b1a446ccc735421bd08a2ae529a8b88597d3de5664ee360", size = 125251 },
+]
+
+[[package]]
+name = "cloudpickle"
+version = "3.1.2"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/27/fb/576f067976d320f5f0114a8d9fa1215425441bb35627b1993e5afd8111e5/cloudpickle-3.1.2.tar.gz", hash = "sha256:7fda9eb655c9c230dab534f1983763de5835249750e85fbcef43aaa30a9a2414", size = 22330 }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/88/39/799be3f2f0f38cc727ee3b4f1445fe6d5e4133064ec2e4115069418a5bb6/cloudpickle-3.1.2-py3-none-any.whl", hash = "sha256:9acb47f6afd73f60dc1df93bb801b472f05ff42fa6c84167d25cb206be1fbf4a", size = 22228 },
+]
+
+[[package]]
+name = "colorama"
+version = "0.4.6"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697 }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335 },
+]
+
+[[package]]
+name = "cuda-bindings"
+version = "13.4.1"
+source = { registry = "https://pypi.org/simple" }
+dependencies = [
+ { name = "cuda-pathfinder" },
+]
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/38/cf/165b4d449f94956c2a60930cf5dfeb27132ead60a7e7f2c37819df1cba07/cuda_bindings-13.4.1-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b601c0cbf0dffb648f68e56a60b320738a20210293f33896a1964a6438cc65f1", size = 6313772 },
+ { url = "https://files.pythonhosted.org/packages/d9/f9/cf021d1560541caa1f35f3e7e311d2678dbacb4fa6a4573b63470fe1ae00/cuda_bindings-13.4.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0e2c357698588b06ebd65811ee2013b6650dd0a10d16d899924aabad0d606d76", size = 6924300 },
+]
+
+[[package]]
+name = "cuda-pathfinder"
+version = "1.8.1"
+source = { registry = "https://pypi.org/simple" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/9d/e6/22df83f82f9bc26cb1c42265cf14d34d4908dba2a0f261bd7b28244acb00/cuda_pathfinder-1.8.1-py3-none-any.whl", hash = "sha256:ae0137ff9e56ea97499bcbf54f5f2778ec25f3266715ac86da192a795af982a8", size = 62552 },
+]
+
+[[package]]
+name = "cuda-toolkit"
+version = "13.0.3.0"
+source = { registry = "https://pypi.org/simple" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/d1/c7/a79086a62c98befcdb8349656c6f114e2db3b8b2422f6e25c97a7f2a9a3c/cuda_toolkit-13.0.3.0-py2.py3-none-any.whl", hash = "sha256:d693caaa261214ddd7dbb60d68e71cbed884e68c2be7509778f3051da0b91c3f", size = 2512 },
+]
+
+[package.optional-dependencies]
+cublas = [
+ { name = "nvidia-cublas", marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux') or (platform_machine == 'AMD64' and sys_platform == 'win32')" },
+ { name = "nvidia-cuda-nvrtc", marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux') or (platform_machine == 'AMD64' and sys_platform == 'win32')" },
+]
+cudart = [
+ { name = "nvidia-cuda-runtime", marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux') or (platform_machine == 'AMD64' and sys_platform == 'win32')" },
+]
+cufft = [
+ { name = "nvidia-cufft", marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux') or (platform_machine == 'AMD64' and sys_platform == 'win32')" },
+ { name = "nvidia-nvjitlink", marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux') or (platform_machine == 'AMD64' and sys_platform == 'win32')" },
+]
+cufile = [
+ { name = "nvidia-cufile", marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux')" },
+]
+cupti = [
+ { name = "nvidia-cuda-cupti", marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux') or (platform_machine == 'AMD64' and sys_platform == 'win32')" },
+]
+curand = [
+ { name = "nvidia-curand", marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux') or (platform_machine == 'AMD64' and sys_platform == 'win32')" },
+]
+cusolver = [
+ { name = "nvidia-cublas", marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux') or (platform_machine == 'AMD64' and sys_platform == 'win32')" },
+ { name = "nvidia-cusolver", marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux') or (platform_machine == 'AMD64' and sys_platform == 'win32')" },
+ { name = "nvidia-cusparse", marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux') or (platform_machine == 'AMD64' and sys_platform == 'win32')" },
+ { name = "nvidia-nvjitlink", marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux') or (platform_machine == 'AMD64' and sys_platform == 'win32')" },
+]
+cusparse = [
+ { name = "nvidia-cusparse", marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux') or (platform_machine == 'AMD64' and sys_platform == 'win32')" },
+ { name = "nvidia-nvjitlink", marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux') or (platform_machine == 'AMD64' and sys_platform == 'win32')" },
+]
+nvjitlink = [
+ { name = "nvidia-nvjitlink", marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux') or (platform_machine == 'AMD64' and sys_platform == 'win32')" },
+]
+nvrtc = [
+ { name = "nvidia-cuda-nvrtc", marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux') or (platform_machine == 'AMD64' and sys_platform == 'win32')" },
+]
+nvtx = [
+ { name = "nvidia-nvtx", marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux') or (platform_machine == 'AMD64' and sys_platform == 'win32')" },
+]
+
+[[package]]
+name = "faiss-cpu"
+version = "1.15.0"
+source = { registry = "https://pypi.org/simple" }
+dependencies = [
+ { name = "numpy" },
+ { name = "packaging" },
+]
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/59/68/20e91694ad9a8b2bb48af956899e52b645cb1501e7e2ec31cb733da4d4c5/faiss_cpu-1.15.0-cp310-abi3-macosx_14_0_arm64.whl", hash = "sha256:50ea471ef1f4f3580eda8ab0ec9727d4bf65fd71c444bf306ce7cdbba8a42b21", size = 4904897 },
+ { url = "https://files.pythonhosted.org/packages/d2/cd/ef4cf498977c4a84af7a8920bc97ca49fc19060c8464c63fab58847b4692/faiss_cpu-1.15.0-cp310-abi3-macosx_15_0_x86_64.whl", hash = "sha256:dd383bb1ce06fabcff5785f998f253aa88f88dcbe1fe36c922417cd6666dd896", size = 7087977 },
+ { url = "https://files.pythonhosted.org/packages/94/c8/88b072bf55714405d0d7e11c12349510f15a69ae56033b1cd894fb2be7d6/faiss_cpu-1.15.0-cp310-abi3-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5d0a2d5d33fe023e263d0d355a837f20db67578e3be27fc5f4012a273274abf6", size = 9835009 },
+ { url = "https://files.pythonhosted.org/packages/c8/3b/8878dbfc78a0084bbd408b34827a58b530be98132fcf620b7e15f9191614/faiss_cpu-1.15.0-cp310-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ec9b29aae29e428c085c2d49dbb02e4673cdea75db418d420f9e60e0b4184498", size = 18764625 },
+ { url = "https://files.pythonhosted.org/packages/db/2a/654116e6ee2808562a6b2a11c396bdb46d45689e3bf7206ee99400589cab/faiss_cpu-1.15.0-cp310-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:30da3029952f0de69f16ce31946fd63fc3e292c867749bbcd2c0a0f09fd06f65", size = 11413863 },
+ { url = "https://files.pythonhosted.org/packages/9d/8c/0a0f09659c1972aa83b9820cd3dd7f68f6678cfcfebde542e1c23d7d8663/faiss_cpu-1.15.0-cp310-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:88fbe1acac6978869063cb2f9477f85718da596a6e0a17751618f9c756bce255", size = 19470092 },
+ { url = "https://files.pythonhosted.org/packages/96/74/4a70395a6e07036628a1bd0b3f709101a6aecfa6a746db13b6e7921cf291/faiss_cpu-1.15.0-cp313-cp313-win_amd64.whl", hash = "sha256:22dddb013e764aad66dac6cd15b49c7598d60339e0591b73b5e081629419c21b", size = 16251914 },
+]
+
+[[package]]
+name = "filelock"
+version = "3.32.6"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/38/46/126b1831dca12060d4a8296bf9c4fe5c93c4f22197fa239cb0cc82042bba/filelock-3.32.6.tar.gz", hash = "sha256:a3f55a18af3652a94d8f47d6055df434f254ca1d02ef2524850c6d249ca2512c", size = 225172 }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/cc/06/4f138f618dbea66803291274f228f01daf29f306fe8b96bc30dab765df75/filelock-3.32.6-py3-none-any.whl", hash = "sha256:3f16ecd0117feae0dfc147e8c62eb5daeccd8bd800378c3ddf416de9b4feb6b1", size = 100189 },
+]
+
+[[package]]
+name = "fsspec"
+version = "2026.7.0"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/00/78/f34251dadb8f3921264a1d9b8946f5e542014ee2614b285261b4e40e6775/fsspec-2026.7.0.tar.gz", hash = "sha256:c803c40f4cf860b49dea58ee3e1c33cb9c790520e233537e1340049f89b82a88", size = 317040 }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/fd/3c/6a2bf344106328fd04963664a60b9bb6496fc25df8e962fcdc1367285fb9/fsspec-2026.7.0-py3-none-any.whl", hash = "sha256:b57ddbafedfaef7018c1ecab32aa200a9d7ca26b77965f64e48b70061249d279", size = 206583 },
+]
+
+[[package]]
+name = "h11"
+version = "0.16.0"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/01/ee/02a2c011bdab74c6fb3c75474d40b3052059d95df7e73351460c8588d963/h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1", size = 101250 }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86", size = 37515 },
+]
+
+[[package]]
+name = "hf-xet"
+version = "1.6.0"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/1b/ab/522a2ab67f27971a9d48ca666d4fca85ef7d5282d142e31fd087e27b1bbe/hf_xet-1.6.0.tar.gz", hash = "sha256:2e58454a340b3556dfa4972d5451aff4fba8dd42a236600ba1a1d2b1514f0fef", size = 920527 }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/a2/50/7afa2c9c787405864fc47a0d1bbc02c62e9101947ed43c1f43899fc7d91d/hf_xet-1.6.0-cp38-abi3-macosx_10_12_x86_64.whl", hash = "sha256:633dc0cd71d32da58ab8c03ad38e2fac452c15c2b0a2866ebf6ededfe0a5061d", size = 4071729 },
+ { url = "https://files.pythonhosted.org/packages/4b/69/55b8dcf636142ae660fec1869fcac14c4da2e8412e14d6eee1523be77e9f/hf_xet-1.6.0-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:f0906082d9932ae0c0057fa194041c22b4e2cdb46b2592ef3b91f020d62a081a", size = 3876287 },
+ { url = "https://files.pythonhosted.org/packages/67/4e/a28359bf1c1ecf11eba22123168c138698f7cb576ac678f5a2e16cd5da08/hf_xet-1.6.0-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d62671bb130879cef0ee4c9ebe47a14af6c66ec53e6d84dc15936e5ffdfac82f", size = 4464663 },
+ { url = "https://files.pythonhosted.org/packages/9a/69/1f0cbc2fb22ae6082d094f743d1b8945a3f36f6089cb95f42b7ee348cda7/hf_xet-1.6.0-cp38-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:0e6e21fa3cdfcdcd76748564bf593870a5e013f47d97cf10aed63aa222cff5b7", size = 4262538 },
+ { url = "https://files.pythonhosted.org/packages/d1/3a/4f4f2301ade26e404462d3336fa11f7958d914cabbabdd6e03c3c5d5658c/hf_xet-1.6.0-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:4fc74352a17015bd0ee90038bc9efe38db894cde45f268b6712b04fce8cd0acb", size = 4460520 },
+ { url = "https://files.pythonhosted.org/packages/ab/5f/311725e2a905534dfee2dcb5b08414f249147f1f12252bfc2bd24caa075c/hf_xet-1.6.0-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:8fb4f71cba6129110c3374a33f919001ff130488fc23553698e34cc1c2a1198c", size = 4675937 },
+ { url = "https://files.pythonhosted.org/packages/98/b7/8c59a66d15205024662f1d66968136f13893f96df1ddc5087e2e281fc95f/hf_xet-1.6.0-cp38-abi3-win_amd64.whl", hash = "sha256:fb4fadde1b2b70bf4c0c14a6dccbe7194b1c28947fefd5bbe3fed9d940676c3b", size = 4033128 },
+ { url = "https://files.pythonhosted.org/packages/73/63/ca511b6f802f28cf3489b280fe77475bcca8de85e81a6299d7916b5b5555/hf_xet-1.6.0-cp38-abi3-win_arm64.whl", hash = "sha256:3dc3e35441ba395006af5aaacc40ef2e603c51ef46c3530b9156185f00935ea3", size = 3859359 },
+]
+
+[[package]]
+name = "httpcore"
+version = "1.0.9"
+source = { registry = "https://pypi.org/simple" }
+dependencies = [
+ { name = "certifi" },
+ { name = "h11" },
+]
+sdist = { url = "https://files.pythonhosted.org/packages/06/94/82699a10bca87a5556c9c59b5963f2d039dbd239f25bc2a63907a05a14cb/httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8", size = 85484 }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55", size = 78784 },
+]
+
+[[package]]
+name = "httpx"
+version = "0.28.1"
+source = { registry = "https://pypi.org/simple" }
+dependencies = [
+ { name = "anyio" },
+ { name = "certifi" },
+ { name = "httpcore" },
+ { name = "idna" },
+]
+sdist = { url = "https://files.pythonhosted.org/packages/b1/df/48c586a5fe32a0f01324ee087459e112ebb7224f646c0b5023f5e79e9956/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc", size = 141406 }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517 },
+]
+
+[[package]]
+name = "huggingface-hub"
+version = "1.31.0"
+source = { registry = "https://pypi.org/simple" }
+dependencies = [
+ { name = "click" },
+ { name = "filelock" },
+ { name = "fsspec" },
+ { name = "hf-xet", marker = "platform_machine == 'AMD64' or platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'arm64' or platform_machine == 'x86_64'" },
+ { name = "httpx" },
+ { name = "packaging" },
+ { name = "pyyaml" },
+ { name = "tqdm" },
+ { name = "typing-extensions" },
+]
+sdist = { url = "https://files.pythonhosted.org/packages/9b/f0/61159db90b5cd275d55516fe27920828e7d3be4053fdbdb27c3f70e5f1ef/huggingface_hub-1.31.0.tar.gz", hash = "sha256:f8e9e710a210613fa5d0f26bba6da05ef4aef9fba5a0f23f508f5ac4d08b6f90", size = 968039 }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/c3/7f/3f886a625043b77312b80da2f2bf00b5ecbf5a73061af1aa0259cd258c9d/huggingface_hub-1.31.0-py3-none-any.whl", hash = "sha256:9dbb6a503cbe2494ea666695207e7262d410659e09134059deb83e5480864667", size = 798313 },
+]
+
+[[package]]
+name = "idna"
+version = "3.19"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/5f/f7/abb373e5757eaec4b922b92f97ec8d6d7e057cf06778247604fbc4e7c3f3/idna-3.19.tar.gz", hash = "sha256:5e0811a4383b21dc5838069f801c4fb62113b7447663d2530d2bd6e77b49bf15", size = 215237 }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/57/b0/0e52c878c53f245edd3a11020f20979b3f490f245af532c7cae3027754b5/idna-3.19-py3-none-any.whl", hash = "sha256:815e7be7a7806d54abb586dc943addc79e8b2ee16915059658cbeff4b1b43bf4", size = 68550 },
+]
+
+[[package]]
+name = "jinja2"
+version = "3.1.6"
+source = { registry = "https://pypi.org/simple" }
+dependencies = [
+ { name = "markupsafe" },
+]
+sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115 }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899 },
+]
+
+[[package]]
+name = "joblib"
+version = "1.6.0"
+source = { registry = "https://pypi.org/simple" }
+dependencies = [
+ { name = "cloudpickle" },
+]
+sdist = { url = "https://files.pythonhosted.org/packages/d5/1d/537ab090f302b838943a1b56497dd53059b9a9b46a074936470173a2e207/joblib-1.6.0.tar.gz", hash = "sha256:2ccc96785b12046c08fd6d55839c12857831b54a3c1673ffadd2f04bfc4eda03", size = 327903 }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/18/53/84099323c2ec4be98d935f63c033ac4151ee83836ca1050ede3b3aadf155/joblib-1.6.0-py3-none-any.whl", hash = "sha256:3dbbf9f6e4b592a2357b854608e980fe6390d131d7a82f011a377ef2ebef7aba", size = 306115 },
+]
+
+[[package]]
+name = "llvmlite"
+version = "0.46.0"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/74/cd/08ae687ba099c7e3d21fe2ea536500563ef1943c5105bf6ab4ee3829f68e/llvmlite-0.46.0.tar.gz", hash = "sha256:227c9fd6d09dce2783c18b754b7cd9d9b3b3515210c46acc2d3c5badd9870ceb", size = 193456 }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/e6/ff/3eba7eb0aed4b6fca37125387cd417e8c458e750621fce56d2c541f67fa8/llvmlite-0.46.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:30b60892d034bc560e0ec6654737aaa74e5ca327bd8114d82136aa071d611172", size = 37232767 },
+ { url = "https://files.pythonhosted.org/packages/0e/54/737755c0a91558364b9200702c3c9c15d70ed63f9b98a2c32f1c2aa1f3ba/llvmlite-0.46.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:6cc19b051753368a9c9f31dc041299059ee91aceec81bd57b0e385e5d5bf1a54", size = 56275176 },
+ { url = "https://files.pythonhosted.org/packages/e6/91/14f32e1d70905c1c0aa4e6609ab5d705c3183116ca02ac6df2091868413a/llvmlite-0.46.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bca185892908f9ede48c0acd547fe4dc1bafefb8a4967d47db6cf664f9332d12", size = 55128629 },
+ { url = "https://files.pythonhosted.org/packages/4a/a7/d526ae86708cea531935ae777b6dbcabe7db52718e6401e0fb9c5edea80e/llvmlite-0.46.0-cp313-cp313-win_amd64.whl", hash = "sha256:67438fd30e12349ebb054d86a5a1a57fd5e87d264d2451bcfafbbbaa25b82a35", size = 38138941 },
+]
+
+[[package]]
+name = "markdown-it-py"
+version = "4.2.0"
+source = { registry = "https://pypi.org/simple" }
+dependencies = [
+ { name = "mdurl" },
+]
+sdist = { url = "https://files.pythonhosted.org/packages/06/ff/7841249c247aa650a76b9ee4bbaeae59370dc8bfd2f6c01f3630c35eb134/markdown_it_py-4.2.0.tar.gz", hash = "sha256:04a21681d6fbb623de53f6f364d352309d4094dd4194040a10fd51833e418d49", size = 82454 }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/b3/81/4da04ced5a082363ecfa159c010d200ecbd959ae410c10c0264a38cac0f5/markdown_it_py-4.2.0-py3-none-any.whl", hash = "sha256:9f7ebbcd14fe59494226453aed97c1070d83f8d24b6fc3a3bcf9a38092641c4a", size = 91687 },
+]
+
+[[package]]
+name = "markupsafe"
+version = "3.0.3"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/7e/99/7690b6d4034fffd95959cbe0c02de8deb3098cc577c67bb6a24fe5d7caa7/markupsafe-3.0.3.tar.gz", hash = "sha256:722695808f4b6457b320fdc131280796bdceb04ab50fe1795cd540799ebe1698", size = 80313 }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/38/2f/907b9c7bbba283e68f20259574b13d005c121a0fa4c175f9bed27c4597ff/markupsafe-3.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e1cf1972137e83c5d4c136c43ced9ac51d0e124706ee1c8aa8532c1287fa8795", size = 11622 },
+ { url = "https://files.pythonhosted.org/packages/9c/d9/5f7756922cdd676869eca1c4e3c0cd0df60ed30199ffd775e319089cb3ed/markupsafe-3.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:116bb52f642a37c115f517494ea5feb03889e04df47eeff5b130b1808ce7c219", size = 12029 },
+ { url = "https://files.pythonhosted.org/packages/00/07/575a68c754943058c78f30db02ee03a64b3c638586fba6a6dd56830b30a3/markupsafe-3.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:133a43e73a802c5562be9bbcd03d090aa5a1fe899db609c29e8c8d815c5f6de6", size = 24374 },
+ { url = "https://files.pythonhosted.org/packages/a9/21/9b05698b46f218fc0e118e1f8168395c65c8a2c750ae2bab54fc4bd4e0e8/markupsafe-3.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ccfcd093f13f0f0b7fdd0f198b90053bf7b2f02a3927a30e63f3ccc9df56b676", size = 22980 },
+ { url = "https://files.pythonhosted.org/packages/7f/71/544260864f893f18b6827315b988c146b559391e6e7e8f7252839b1b846a/markupsafe-3.0.3-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:509fa21c6deb7a7a273d629cf5ec029bc209d1a51178615ddf718f5918992ab9", size = 21990 },
+ { url = "https://files.pythonhosted.org/packages/c2/28/b50fc2f74d1ad761af2f5dcce7492648b983d00a65b8c0e0cb457c82ebbe/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a4afe79fb3de0b7097d81da19090f4df4f8d3a2b3adaa8764138aac2e44f3af1", size = 23784 },
+ { url = "https://files.pythonhosted.org/packages/ed/76/104b2aa106a208da8b17a2fb72e033a5a9d7073c68f7e508b94916ed47a9/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:795e7751525cae078558e679d646ae45574b47ed6e7771863fcc079a6171a0fc", size = 21588 },
+ { url = "https://files.pythonhosted.org/packages/b5/99/16a5eb2d140087ebd97180d95249b00a03aa87e29cc224056274f2e45fd6/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8485f406a96febb5140bfeca44a73e3ce5116b2501ac54fe953e488fb1d03b12", size = 23041 },
+ { url = "https://files.pythonhosted.org/packages/19/bc/e7140ed90c5d61d77cea142eed9f9c303f4c4806f60a1044c13e3f1471d0/markupsafe-3.0.3-cp313-cp313-win32.whl", hash = "sha256:bdd37121970bfd8be76c5fb069c7751683bdf373db1ed6c010162b2a130248ed", size = 14543 },
+ { url = "https://files.pythonhosted.org/packages/05/73/c4abe620b841b6b791f2edc248f556900667a5a1cf023a6646967ae98335/markupsafe-3.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:9a1abfdc021a164803f4d485104931fb8f8c1efd55bc6b748d2f5774e78b62c5", size = 15113 },
+ { url = "https://files.pythonhosted.org/packages/f0/3a/fa34a0f7cfef23cf9500d68cb7c32dd64ffd58a12b09225fb03dd37d5b80/markupsafe-3.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:7e68f88e5b8799aa49c85cd116c932a1ac15caaa3f5db09087854d218359e485", size = 13911 },
+ { url = "https://files.pythonhosted.org/packages/e4/d7/e05cd7efe43a88a17a37b3ae96e79a19e846f3f456fe79c57ca61356ef01/markupsafe-3.0.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:218551f6df4868a8d527e3062d0fb968682fe92054e89978594c28e642c43a73", size = 11658 },
+ { url = "https://files.pythonhosted.org/packages/99/9e/e412117548182ce2148bdeacdda3bb494260c0b0184360fe0d56389b523b/markupsafe-3.0.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3524b778fe5cfb3452a09d31e7b5adefeea8c5be1d43c4f810ba09f2ceb29d37", size = 12066 },
+ { url = "https://files.pythonhosted.org/packages/bc/e6/fa0ffcda717ef64a5108eaa7b4f5ed28d56122c9a6d70ab8b72f9f715c80/markupsafe-3.0.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4e885a3d1efa2eadc93c894a21770e4bc67899e3543680313b09f139e149ab19", size = 25639 },
+ { url = "https://files.pythonhosted.org/packages/96/ec/2102e881fe9d25fc16cb4b25d5f5cde50970967ffa5dddafdb771237062d/markupsafe-3.0.3-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8709b08f4a89aa7586de0aadc8da56180242ee0ada3999749b183aa23df95025", size = 23569 },
+ { url = "https://files.pythonhosted.org/packages/4b/30/6f2fce1f1f205fc9323255b216ca8a235b15860c34b6798f810f05828e32/markupsafe-3.0.3-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:b8512a91625c9b3da6f127803b166b629725e68af71f8184ae7e7d54686a56d6", size = 23284 },
+ { url = "https://files.pythonhosted.org/packages/58/47/4a0ccea4ab9f5dcb6f79c0236d954acb382202721e704223a8aafa38b5c8/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9b79b7a16f7fedff2495d684f2b59b0457c3b493778c9eed31111be64d58279f", size = 24801 },
+ { url = "https://files.pythonhosted.org/packages/6a/70/3780e9b72180b6fecb83a4814d84c3bf4b4ae4bf0b19c27196104149734c/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:12c63dfb4a98206f045aa9563db46507995f7ef6d83b2f68eda65c307c6829eb", size = 22769 },
+ { url = "https://files.pythonhosted.org/packages/98/c5/c03c7f4125180fc215220c035beac6b9cb684bc7a067c84fc69414d315f5/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8f71bc33915be5186016f675cd83a1e08523649b0e33efdb898db577ef5bb009", size = 23642 },
+ { url = "https://files.pythonhosted.org/packages/80/d6/2d1b89f6ca4bff1036499b1e29a1d02d282259f3681540e16563f27ebc23/markupsafe-3.0.3-cp313-cp313t-win32.whl", hash = "sha256:69c0b73548bc525c8cb9a251cddf1931d1db4d2258e9599c28c07ef3580ef354", size = 14612 },
+ { url = "https://files.pythonhosted.org/packages/2b/98/e48a4bfba0a0ffcf9925fe2d69240bfaa19c6f7507b8cd09c70684a53c1e/markupsafe-3.0.3-cp313-cp313t-win_amd64.whl", hash = "sha256:1b4b79e8ebf6b55351f0d91fe80f893b4743f104bff22e90697db1590e47a218", size = 15200 },
+ { url = "https://files.pythonhosted.org/packages/0e/72/e3cc540f351f316e9ed0f092757459afbc595824ca724cbc5a5d4263713f/markupsafe-3.0.3-cp313-cp313t-win_arm64.whl", hash = "sha256:ad2cf8aa28b8c020ab2fc8287b0f823d0a7d8630784c31e9ee5edea20f406287", size = 13973 },
+]
+
+[[package]]
+name = "mdurl"
+version = "0.1.2"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729 }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979 },
+]
+
+[[package]]
+name = "mech-embedding-runtime"
+version = "1.0.0"
+source = { virtual = "." }
+dependencies = [
+ { name = "numba" },
+ { name = "numpy" },
+ { name = "pacmap" },
+ { name = "pyyaml" },
+ { name = "scikit-learn" },
+ { name = "sentence-transformers" },
+ { name = "torch" },
+ { name = "transformers" },
+]
+
+[package.metadata]
+requires-dist = [
+ { name = "numba", specifier = "==0.63.1" },
+ { name = "numpy", specifier = "==2.3.5" },
+ { name = "pacmap", specifier = "==0.9.1" },
+ { name = "pyyaml", specifier = "==6.0.3" },
+ { name = "scikit-learn", specifier = "==1.8.0" },
+ { name = "sentence-transformers", specifier = "==6.0.0" },
+ { name = "torch", specifier = "==2.14.0" },
+ { name = "transformers", specifier = "==5.17.0" },
+]
+
+[[package]]
+name = "mpmath"
+version = "1.3.0"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/e0/47/dd32fa426cc72114383ac549964eecb20ecfd886d1e5ccf5340b55b02f57/mpmath-1.3.0.tar.gz", hash = "sha256:7a28eb2a9774d00c7bc92411c19a89209d5da7c4c9a9e227be8330a23a25b91f", size = 508106 }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/43/e3/7d92a15f894aa0c9c4b49b8ee9ac9850d6e63b03c9c32c0367a13ae62209/mpmath-1.3.0-py3-none-any.whl", hash = "sha256:a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c", size = 536198 },
+]
+
+[[package]]
+name = "networkx"
+version = "3.6.1"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/6a/51/63fe664f3908c97be9d2e4f1158eb633317598cfa6e1fc14af5383f17512/networkx-3.6.1.tar.gz", hash = "sha256:26b7c357accc0c8cde558ad486283728b65b6a95d85ee1cd66bafab4c8168509", size = 2517025 }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/9e/c9/b2622292ea83fbb4ec318f5b9ab867d0a28ab43c5717bb85b0a5f6b3b0a4/networkx-3.6.1-py3-none-any.whl", hash = "sha256:d47fbf302e7d9cbbb9e2555a0d267983d2aa476bac30e90dfbe5669bd57f3762", size = 2068504 },
+]
+
+[[package]]
+name = "numba"
+version = "0.63.1"
+source = { registry = "https://pypi.org/simple" }
+dependencies = [
+ { name = "llvmlite" },
+ { name = "numpy" },
+]
+sdist = { url = "https://files.pythonhosted.org/packages/dc/60/0145d479b2209bd8fdae5f44201eceb8ce5a23e0ed54c71f57db24618665/numba-0.63.1.tar.gz", hash = "sha256:b320aa675d0e3b17b40364935ea52a7b1c670c9037c39cf92c49502a75902f4b", size = 2761666 }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/57/f7/e19e6eff445bec52dde5bed1ebb162925a8e6f988164f1ae4b3475a73680/numba-0.63.1-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:0bd4fd820ef7442dcc07da184c3f54bb41d2bdb7b35bacf3448e73d081f730dc", size = 2680954 },
+ { url = "https://files.pythonhosted.org/packages/e9/6c/1e222edba1e20e6b113912caa9b1665b5809433cbcb042dfd133c6f1fd38/numba-0.63.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:53de693abe4be3bd4dee38e1c55f01c55ff644a6a3696a3670589e6e4c39cde2", size = 3809736 },
+ { url = "https://files.pythonhosted.org/packages/76/0a/590bad11a8b3feeac30a24d01198d46bdb76ad15c70d3a530691ce3cae58/numba-0.63.1-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:81227821a72a763c3d4ac290abbb4371d855b59fdf85d5af22a47c0e86bf8c7e", size = 3508854 },
+ { url = "https://files.pythonhosted.org/packages/4e/f5/3800384a24eed1e4d524669cdbc0b9b8a628800bb1e90d7bd676e5f22581/numba-0.63.1-cp313-cp313-win_amd64.whl", hash = "sha256:eb227b07c2ac37b09432a9bda5142047a2d1055646e089d4a240a2643e508102", size = 2750228 },
+]
+
+[[package]]
+name = "numpy"
+version = "2.3.5"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/76/65/21b3bc86aac7b8f2862db1e808f1ea22b028e30a225a34a5ede9bf8678f2/numpy-2.3.5.tar.gz", hash = "sha256:784db1dcdab56bf0517743e746dfb0f885fc68d948aba86eeec2cba234bdf1c0", size = 20584950 }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/db/69/9cde09f36da4b5a505341180a3f2e6fadc352fd4d2b7096ce9778db83f1a/numpy-2.3.5-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:d0f23b44f57077c1ede8c5f26b30f706498b4862d3ff0a7298b8411dd2f043ff", size = 16728251 },
+ { url = "https://files.pythonhosted.org/packages/79/fb/f505c95ceddd7027347b067689db71ca80bd5ecc926f913f1a23e65cf09b/numpy-2.3.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:aa5bc7c5d59d831d9773d1170acac7893ce3a5e130540605770ade83280e7188", size = 12254652 },
+ { url = "https://files.pythonhosted.org/packages/78/da/8c7738060ca9c31b30e9301ee0cf6c5ffdbf889d9593285a1cead337f9a5/numpy-2.3.5-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:ccc933afd4d20aad3c00bcef049cb40049f7f196e0397f1109dba6fed63267b0", size = 5083172 },
+ { url = "https://files.pythonhosted.org/packages/a4/b4/ee5bb2537fb9430fd2ef30a616c3672b991a4129bb1c7dcc42aa0abbe5d7/numpy-2.3.5-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:afaffc4393205524af9dfa400fa250143a6c3bc646c08c9f5e25a9f4b4d6a903", size = 6622990 },
+ { url = "https://files.pythonhosted.org/packages/95/03/dc0723a013c7d7c19de5ef29e932c3081df1c14ba582b8b86b5de9db7f0f/numpy-2.3.5-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9c75442b2209b8470d6d5d8b1c25714270686f14c749028d2199c54e29f20b4d", size = 14248902 },
+ { url = "https://files.pythonhosted.org/packages/f5/10/ca162f45a102738958dcec8023062dad0cbc17d1ab99d68c4e4a6c45fb2b/numpy-2.3.5-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:11e06aa0af8c0f05104d56450d6093ee639e15f24ecf62d417329d06e522e017", size = 16597430 },
+ { url = "https://files.pythonhosted.org/packages/2a/51/c1e29be863588db58175175f057286900b4b3327a1351e706d5e0f8dd679/numpy-2.3.5-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ed89927b86296067b4f81f108a2271d8926467a8868e554eaf370fc27fa3ccaf", size = 16024551 },
+ { url = "https://files.pythonhosted.org/packages/83/68/8236589d4dbb87253d28259d04d9b814ec0ecce7cb1c7fed29729f4c3a78/numpy-2.3.5-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:51c55fe3451421f3a6ef9a9c1439e82101c57a2c9eab9feb196a62b1a10b58ce", size = 18533275 },
+ { url = "https://files.pythonhosted.org/packages/40/56/2932d75b6f13465239e3b7b7e511be27f1b8161ca2510854f0b6e521c395/numpy-2.3.5-cp313-cp313-win32.whl", hash = "sha256:1978155dd49972084bd6ef388d66ab70f0c323ddee6f693d539376498720fb7e", size = 6277637 },
+ { url = "https://files.pythonhosted.org/packages/0c/88/e2eaa6cffb115b85ed7c7c87775cb8bcf0816816bc98ca8dbfa2ee33fe6e/numpy-2.3.5-cp313-cp313-win_amd64.whl", hash = "sha256:00dc4e846108a382c5869e77c6ed514394bdeb3403461d25a829711041217d5b", size = 12779090 },
+ { url = "https://files.pythonhosted.org/packages/8f/88/3f41e13a44ebd4034ee17baa384acac29ba6a4fcc2aca95f6f08ca0447d1/numpy-2.3.5-cp313-cp313-win_arm64.whl", hash = "sha256:0472f11f6ec23a74a906a00b48a4dcf3849209696dff7c189714511268d103ae", size = 10194710 },
+ { url = "https://files.pythonhosted.org/packages/13/cb/71744144e13389d577f867f745b7df2d8489463654a918eea2eeb166dfc9/numpy-2.3.5-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:414802f3b97f3c1eef41e530aaba3b3c1620649871d8cb38c6eaff034c2e16bd", size = 16827292 },
+ { url = "https://files.pythonhosted.org/packages/71/80/ba9dc6f2a4398e7f42b708a7fdc841bb638d353be255655498edbf9a15a8/numpy-2.3.5-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5ee6609ac3604fa7780e30a03e5e241a7956f8e2fcfe547d51e3afa5247ac47f", size = 12378897 },
+ { url = "https://files.pythonhosted.org/packages/2e/6d/db2151b9f64264bcceccd51741aa39b50150de9b602d98ecfe7e0c4bff39/numpy-2.3.5-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:86d835afea1eaa143012a2d7a3f45a3adce2d7adc8b4961f0b362214d800846a", size = 5207391 },
+ { url = "https://files.pythonhosted.org/packages/80/ae/429bacace5ccad48a14c4ae5332f6aa8ab9f69524193511d60ccdfdc65fa/numpy-2.3.5-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:30bc11310e8153ca664b14c5f1b73e94bd0503681fcf136a163de856f3a50139", size = 6721275 },
+ { url = "https://files.pythonhosted.org/packages/74/5b/1919abf32d8722646a38cd527bc3771eb229a32724ee6ba340ead9b92249/numpy-2.3.5-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1062fde1dcf469571705945b0f221b73928f34a20c904ffb45db101907c3454e", size = 14306855 },
+ { url = "https://files.pythonhosted.org/packages/a5/87/6831980559434973bebc30cd9c1f21e541a0f2b0c280d43d3afd909b66d0/numpy-2.3.5-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ce581db493ea1a96c0556360ede6607496e8bf9b3a8efa66e06477267bc831e9", size = 16657359 },
+ { url = "https://files.pythonhosted.org/packages/dd/91/c797f544491ee99fd00495f12ebb7802c440c1915811d72ac5b4479a3356/numpy-2.3.5-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:cc8920d2ec5fa99875b670bb86ddeb21e295cb07aa331810d9e486e0b969d946", size = 16093374 },
+ { url = "https://files.pythonhosted.org/packages/74/a6/54da03253afcbe7a72785ec4da9c69fb7a17710141ff9ac5fcb2e32dbe64/numpy-2.3.5-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:9ee2197ef8c4f0dfe405d835f3b6a14f5fee7782b5de51ba06fb65fc9b36e9f1", size = 18594587 },
+ { url = "https://files.pythonhosted.org/packages/80/e9/aff53abbdd41b0ecca94285f325aff42357c6b5abc482a3fcb4994290b18/numpy-2.3.5-cp313-cp313t-win32.whl", hash = "sha256:70b37199913c1bd300ff6e2693316c6f869c7ee16378faf10e4f5e3275b299c3", size = 6405940 },
+ { url = "https://files.pythonhosted.org/packages/d5/81/50613fec9d4de5480de18d4f8ef59ad7e344d497edbef3cfd80f24f98461/numpy-2.3.5-cp313-cp313t-win_amd64.whl", hash = "sha256:b501b5fa195cc9e24fe102f21ec0a44dffc231d2af79950b451e0d99cea02234", size = 12920341 },
+ { url = "https://files.pythonhosted.org/packages/bb/ab/08fd63b9a74303947f34f0bd7c5903b9c5532c2d287bead5bdf4c556c486/numpy-2.3.5-cp313-cp313t-win_arm64.whl", hash = "sha256:a80afd79f45f3c4a7d341f13acbe058d1ca8ac017c165d3fa0d3de6bc1a079d7", size = 10262507 },
+]
+
+[[package]]
+name = "nvidia-cublas"
+version = "13.1.1.3"
+source = { registry = "https://pypi.org/simple" }
+dependencies = [
+ { name = "nvidia-cuda-nvrtc" },
+]
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/a7/a1/0bd24ee8c8d03adac032fd2909426a00c88f8c57961b1277ded97f91119f/nvidia_cublas-13.1.1.3-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:b7a210458267ac818974c53038fbec2e969d5c99f305ab15c72522fa9f001dd5", size = 542848918 },
+ { url = "https://files.pythonhosted.org/packages/3b/cd/154ca20c38269e05eff77c1464e6c1da89f50a6390b565e9d82e06bc11e1/nvidia_cublas-13.1.1.3-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:37936a16db8fe4ac1f065c2139360608a543a09275cb1a1af612e08cfa065436", size = 423138758 },
+]
+
+[[package]]
+name = "nvidia-cuda-cupti"
+version = "13.0.85"
+source = { registry = "https://pypi.org/simple" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/2a/2a/80353b103fc20ce05ef51e928daed4b6015db4aaa9162ed0997090fe2250/nvidia_cuda_cupti-13.0.85-py3-none-manylinux_2_25_aarch64.whl", hash = "sha256:796bd679890ee55fb14a94629b698b6db54bcfd833d391d5e94017dd9d7d3151", size = 10310827 },
+ { url = "https://files.pythonhosted.org/packages/33/6d/737d164b4837a9bbd202f5ae3078975f0525a55730fe871d8ed4e3b952b0/nvidia_cuda_cupti-13.0.85-py3-none-manylinux_2_25_x86_64.whl", hash = "sha256:4eb01c08e859bf924d222250d2e8f8b8ff6d3db4721288cf35d14252a4d933c8", size = 10715597 },
+]
+
+[[package]]
+name = "nvidia-cuda-nvrtc"
+version = "13.0.88"
+source = { registry = "https://pypi.org/simple" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/c3/68/483a78f5e8f31b08fb1bb671559968c0ca3a065ac7acabfc7cee55214fd6/nvidia_cuda_nvrtc-13.0.88-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:ad9b6d2ead2435f11cbb6868809d2adeeee302e9bb94bcf0539c7a40d80e8575", size = 90215200 },
+ { url = "https://files.pythonhosted.org/packages/b7/dc/6bb80850e0b7edd6588d560758f17e0550893a1feaf436807d64d2da040f/nvidia_cuda_nvrtc-13.0.88-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d27f20a0ca67a4bb34268a5e951033496c5b74870b868bacd046b1b8e0c3267b", size = 43015449 },
+]
+
+[[package]]
+name = "nvidia-cuda-runtime"
+version = "13.0.96"
+source = { registry = "https://pypi.org/simple" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/87/4f/17d7b9b8e285199c58ce28e31b5c5bbaa4d8271af06a89b6405258245de2/nvidia_cuda_runtime-13.0.96-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ef9bcbe90493a2b9d810e43d249adb3d02e98dd30200d86607d8d02687c43f55", size = 2261060 },
+ { url = "https://files.pythonhosted.org/packages/2e/24/d1558f3b68b1d26e706813b1d10aa1d785e4698c425af8db8edc3dced472/nvidia_cuda_runtime-13.0.96-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7f82250d7782aa23b6cfe765ecc7db554bd3c2870c43f3d1821f1d18aebf0548", size = 2243632 },
+]
+
+[[package]]
+name = "nvidia-cudnn-cu13"
+version = "9.24.0.43"
+source = { registry = "https://pypi.org/simple" }
+dependencies = [
+ { name = "nvidia-cublas" },
+]
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/ca/30/7c257e3d5cb4fecb147b93895c66e29c93f8e76d74b45bb418ff0587c4ec/nvidia_cudnn_cu13-9.24.0.43-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:a6812a554a1ff0413e9c52b84c26c050380649ab9615f9c16bded368ce9f421f", size = 650976863 },
+ { url = "https://files.pythonhosted.org/packages/5c/ba/791cffd048fe5b044e620df55267e3e95c0e6e07d50b41e377c03dfc910f/nvidia_cudnn_cu13-9.24.0.43-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:71f181cd810e90f9b6023b01186fe82d13d65f0ec098581ee201d39fad769e4b", size = 553099438 },
+]
+
+[[package]]
+name = "nvidia-cufft"
+version = "12.0.0.61"
+source = { registry = "https://pypi.org/simple" }
+dependencies = [
+ { name = "nvidia-nvjitlink" },
+]
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/8b/ae/f417a75c0259e85c1d2f83ca4e960289a5f814ed0cea74d18c353d3e989d/nvidia_cufft-12.0.0.61-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2708c852ef8cd89d1d2068bdbece0aa188813a0c934db3779b9b1faa8442e5f5", size = 214053554 },
+ { url = "https://files.pythonhosted.org/packages/a8/2f/7b57e29836ea8714f81e9898409196f47d772d5ddedddf1592eadb8ab743/nvidia_cufft-12.0.0.61-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:6c44f692dce8fd5ffd3e3df134b6cdb9c2f72d99cf40b62c32dde45eea9ddad3", size = 214085489 },
+]
+
+[[package]]
+name = "nvidia-cufile"
+version = "1.15.1.6"
+source = { registry = "https://pypi.org/simple" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/3f/70/4f193de89a48b71714e74602ee14d04e4019ad36a5a9f20c425776e72cd6/nvidia_cufile-1.15.1.6-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:08a3ecefae5a01c7f5117351c64f17c7c62efa5fffdbe24fc7d298da19cd0b44", size = 1223672 },
+ { url = "https://files.pythonhosted.org/packages/ab/73/cc4a14c9813a8a0d509417cf5f4bdaba76e924d58beb9864f5a7baceefbf/nvidia_cufile-1.15.1.6-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:bdc0deedc61f548bddf7733bdc216456c2fdb101d020e1ab4b88d232d5e2f6d1", size = 1136992 },
+]
+
+[[package]]
+name = "nvidia-curand"
+version = "10.4.0.35"
+source = { registry = "https://pypi.org/simple" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/1e/72/7c2ae24fb6b63a32e6ae5d241cc65263ea18d08802aaae087d9f013335a2/nvidia_curand-10.4.0.35-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:133df5a7509c3e292aaa2b477afd0194f06ce4ea24d714d616ff36439cee349a", size = 61962106 },
+ { url = "https://files.pythonhosted.org/packages/a5/9f/be0a41ca4a4917abf5cb9ae0daff1a6060cc5de950aec0396de9f3b52bc5/nvidia_curand-10.4.0.35-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:1aee33a5da6e1db083fe2b90082def8915f30f3248d5896bcec36a579d941bfc", size = 59544258 },
+]
+
+[[package]]
+name = "nvidia-cusolver"
+version = "12.0.4.66"
+source = { registry = "https://pypi.org/simple" }
+dependencies = [
+ { name = "nvidia-cublas" },
+ { name = "nvidia-cusparse" },
+ { name = "nvidia-nvjitlink" },
+]
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/c8/c3/b30c9e935fc01e3da443ec0116ed1b2a009bb867f5324d3f2d7e533e776b/nvidia_cusolver-12.0.4.66-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:02c2457eaa9e39de20f880f4bd8820e6a1cfb9f9a34f820eb12a155aa5bc92d2", size = 223467760 },
+ { url = "https://files.pythonhosted.org/packages/5f/67/cba3777620cdacb99102da4042883709c41c709f4b6323c10781a9c3aa34/nvidia_cusolver-12.0.4.66-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:0a759da5dea5c0ea10fd307de75cdeb59e7ea4fcb8add0924859b944babf1112", size = 200941980 },
+]
+
+[[package]]
+name = "nvidia-cusparse"
+version = "12.6.3.3"
+source = { registry = "https://pypi.org/simple" }
+dependencies = [
+ { name = "nvidia-nvjitlink" },
+]
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/f8/94/5c26f33738ae35276672f12615a64bd008ed5be6d1ebcb23579285d960a9/nvidia_cusparse-12.6.3.3-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:80bcc4662f23f1054ee334a15c72b8940402975e0eab63178fc7e670aa59472c", size = 162155568 },
+ { url = "https://files.pythonhosted.org/packages/fa/18/623c77619c31d62efd55302939756966f3ecc8d724a14dab2b75f1508850/nvidia_cusparse-12.6.3.3-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2b3c89c88d01ee0e477cb7f82ef60a11a4bcd57b6b87c33f789350b59759360b", size = 145942937 },
+]
+
+[[package]]
+name = "nvidia-cusparselt-cu13"
+version = "0.8.1"
+source = { registry = "https://pypi.org/simple" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/46/e1/cdc1797eadf82d3a9a575a19b33fdc871a97edbec42c00b5b5e914f4aff4/nvidia_cusparselt_cu13-0.8.1-py3-none-manylinux2014_aarch64.whl", hash = "sha256:4dca476c50bf4780d46cd0bfbd82e2bc10a08e4fef7950917ce8d7578d22a23f", size = 221051344 },
+ { url = "https://files.pythonhosted.org/packages/34/7d/2661f2fb3ac4302f3a246f5fc030213ac60c1fe0bce84f9783dbd831dbb7/nvidia_cusparselt_cu13-0.8.1-py3-none-manylinux2014_x86_64.whl", hash = "sha256:786ce87568c303fadb5afcc7102d454cd3040d75f6f8626f5db460d1871f4dd0", size = 170148586 },
+]
+
+[[package]]
+name = "nvidia-nccl-cu13"
+version = "2.30.7"
+source = { registry = "https://pypi.org/simple" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/d1/21/a73174c6157101bdf1ffc22b517f76ff0082613989dd9bc8f43e8034caac/nvidia_nccl_cu13-2.30.7-py3-none-manylinux_2_18_aarch64.whl", hash = "sha256:ca786ffa5a647c75d4d1f5cc72a6c4f537947e2ba8823d7c8aaf768e7a7b9f77", size = 215983881 },
+ { url = "https://files.pythonhosted.org/packages/3f/34/c500f90c7ae641b8e0f98965b36b8a7ac79cc8b296e8d251fe3eb592ee54/nvidia_nccl_cu13-2.30.7-py3-none-manylinux_2_18_x86_64.whl", hash = "sha256:cefa7fdb9710efd0f39c5f1be1d61ff6fc9a996c451265bd7fbdcf9455ed4b50", size = 215965170 },
+]
+
+[[package]]
+name = "nvidia-nvjitlink"
+version = "13.4.52"
+source = { registry = "https://pypi.org/simple" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/7f/c1/091f198d7f87e31d67fa9680eec8f8e4c6f889881f729b759db36ff01612/nvidia_nvjitlink-13.4.52-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:90401db7e5a580a5067a468b3086e0b65f3b96ab3c42524afd741efc8a0e150a", size = 42452221 },
+ { url = "https://files.pythonhosted.org/packages/7e/a9/225ff51e80de170be880cb88e992193bc8134a51059cc0a3952f967f62c5/nvidia_nvjitlink-13.4.52-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:3a589e3732140839349545efd0db67426523459b12e6952c3c73b6d55900f200", size = 40419746 },
+]
+
+[[package]]
+name = "nvidia-nvshmem-cu13"
+version = "3.4.5"
+source = { registry = "https://pypi.org/simple" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/dc/0f/05cc9c720236dcd2db9c1ab97fff629e96821be2e63103569da0c9b72f19/nvidia_nvshmem_cu13-3.4.5-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:6dc2a197f38e5d0376ad52cd1a2a3617d3cdc150fd5966f4aee9bcebb1d68fe9", size = 60215947 },
+ { url = "https://files.pythonhosted.org/packages/3c/35/a9bf80a609e74e3b000fef598933235c908fcefcef9026042b8e6dfde2a9/nvidia_nvshmem_cu13-3.4.5-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:290f0a2ee94c9f3687a02502f3b9299a9f9fe826e6d0287ee18482e78d495b80", size = 60412546 },
+]
+
+[[package]]
+name = "nvidia-nvtx"
+version = "13.0.85"
+source = { registry = "https://pypi.org/simple" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/c2/f3/d86c845465a2723ad7e1e5c36dcd75ddb82898b3f53be47ebd429fb2fa5d/nvidia_nvtx-13.0.85-py3-none-manylinux1_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:4936d1d6780fbe68db454f5e72a42ff64d1fd6397df9f363ae786930fd5c1cd4", size = 148047 },
+ { url = "https://files.pythonhosted.org/packages/a8/64/3708a90d1ebe202ffdeb7185f878a3c84d15c2b2c31858da2ce0583e2def/nvidia_nvtx-13.0.85-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cb7780edb6b14107373c835bf8b72e7a178bac7367e23da7acb108f973f157a6", size = 148878 },
+]
+
+[[package]]
+name = "packaging"
+version = "26.3"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/7d/fa/3944b40b07da9ce895c0e6303a5ab7d53da063554f534556b134a54d6093/packaging-26.3.tar.gz", hash = "sha256:94edc256424af38762eb31306eed28beb9f0efc50a8837492c9d6fd6004aed79", size = 313412 }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/63/34/ba1c580383c9eada3711951fef0795c80b829a078d72188184bcab9dd527/packaging-26.3-py3-none-any.whl", hash = "sha256:d7193f7c8e4e93f444fde0262bf90af30e16fa0ad0ad44cb553c87339b23cd1c", size = 129956 },
+]
+
+[[package]]
+name = "pacmap"
+version = "0.9.1"
+source = { registry = "https://pypi.org/simple" }
+dependencies = [
+ { name = "faiss-cpu" },
+ { name = "numba" },
+ { name = "numpy" },
+ { name = "scikit-learn" },
+]
+sdist = { url = "https://files.pythonhosted.org/packages/88/5c/0b00087c7a7ee264e1e4ad6ddc6e38d9a55f29a05e17aa770d97dbdbaf77/pacmap-0.9.1.tar.gz", hash = "sha256:ec31ea3e316b9ad6294c5bc8a8e8b45a658b00d7f59799b960db16469095e35e", size = 24500 }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/41/07/b58bb68a18b8b354bab18185dd5c3e903be94ab4e9861d179c6b9bc3333c/pacmap-0.9.1-py3-none-any.whl", hash = "sha256:c5448d6ae51ad66eeff4760dfc8091d496b7c2cf7dc19b5c2ea48f928d150417", size = 25312 },
+]
+
+[[package]]
+name = "pygments"
+version = "2.21.0"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/49/2e/ced460408999b33da6b31b0021b0f37d329e202d4169aeb164493778f25b/pygments-2.21.0.tar.gz", hash = "sha256:610ca751c9bc2492b38eb9a38a7fbc93edbbb2d7182edaf34e66ae493dee5c8c", size = 5005329 }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/71/46/17f022dd3e953bf20a04a028a21ec746d942f8d2af30fa0f124fa0e6a684/pygments-2.21.0-py3-none-any.whl", hash = "sha256:2363c69b61c4a97c838da3b130dcd6468f4848992b21a82f2a63ec34377137d9", size = 1250147 },
+]
+
+[[package]]
+name = "pyyaml"
+version = "6.0.3"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f", size = 130960 }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/d1/11/0fd08f8192109f7169db964b5707a2f1e8b745d4e239b784a5a1dd80d1db/pyyaml-6.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8da9669d359f02c0b91ccc01cac4a67f16afec0dac22c2ad09f46bee0697eba8", size = 181669 },
+ { url = "https://files.pythonhosted.org/packages/b1/16/95309993f1d3748cd644e02e38b75d50cbc0d9561d21f390a76242ce073f/pyyaml-6.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2283a07e2c21a2aa78d9c4442724ec1eb15f5e42a723b99cb3d822d48f5f7ad1", size = 173252 },
+ { url = "https://files.pythonhosted.org/packages/50/31/b20f376d3f810b9b2371e72ef5adb33879b25edb7a6d072cb7ca0c486398/pyyaml-6.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee2922902c45ae8ccada2c5b501ab86c36525b883eff4255313a253a3160861c", size = 767081 },
+ { url = "https://files.pythonhosted.org/packages/49/1e/a55ca81e949270d5d4432fbbd19dfea5321eda7c41a849d443dc92fd1ff7/pyyaml-6.0.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a33284e20b78bd4a18c8c2282d549d10bc8408a2a7ff57653c0cf0b9be0afce5", size = 841159 },
+ { url = "https://files.pythonhosted.org/packages/74/27/e5b8f34d02d9995b80abcef563ea1f8b56d20134d8f4e5e81733b1feceb2/pyyaml-6.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0f29edc409a6392443abf94b9cf89ce99889a1dd5376d94316ae5145dfedd5d6", size = 801626 },
+ { url = "https://files.pythonhosted.org/packages/f9/11/ba845c23988798f40e52ba45f34849aa8a1f2d4af4b798588010792ebad6/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f7057c9a337546edc7973c0d3ba84ddcdf0daa14533c2065749c9075001090e6", size = 753613 },
+ { url = "https://files.pythonhosted.org/packages/3d/e0/7966e1a7bfc0a45bf0a7fb6b98ea03fc9b8d84fa7f2229e9659680b69ee3/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:eda16858a3cab07b80edaf74336ece1f986ba330fdb8ee0d6c0d68fe82bc96be", size = 794115 },
+ { url = "https://files.pythonhosted.org/packages/de/94/980b50a6531b3019e45ddeada0626d45fa85cbe22300844a7983285bed3b/pyyaml-6.0.3-cp313-cp313-win32.whl", hash = "sha256:d0eae10f8159e8fdad514efdc92d74fd8d682c933a6dd088030f3834bc8e6b26", size = 137427 },
+ { url = "https://files.pythonhosted.org/packages/97/c9/39d5b874e8b28845e4ec2202b5da735d0199dbe5b8fb85f91398814a9a46/pyyaml-6.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:79005a0d97d5ddabfeeea4cf676af11e647e41d81c9a7722a193022accdb6b7c", size = 154090 },
+ { url = "https://files.pythonhosted.org/packages/73/e8/2bdf3ca2090f68bb3d75b44da7bbc71843b19c9f2b9cb9b0f4ab7a5a4329/pyyaml-6.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:5498cd1645aa724a7c71c8f378eb29ebe23da2fc0d7a08071d89469bf1d2defb", size = 140246 },
+]
+
+[[package]]
+name = "regex"
+version = "2026.9.10"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/b9/5c/f403115361de25809e8f785686ec7096e30fef73be9ae35aa51da4e80abb/regex-2026.9.10.tar.gz", hash = "sha256:1e321e2c84f0e52c457f5ea5944f796d6e8e09cb99738ea98dcc1bfe402a128d", size = 417072 }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/20/90/d4452bf1ef7dbe406980e8b921a257024482203c1dafac535eae207611bc/regex-2026.9.10-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ef5a059ea1c6ee5d1c7e99a2484e628608d010921efe876c6f0e2029d2f35eca", size = 496408 },
+ { url = "https://files.pythonhosted.org/packages/6a/35/c763c6424a0f99d021d46dc1f9065147bb5a40c2b2cdf28d2ebdbcd96508/regex-2026.9.10-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:dce932f8e3ba936475ea3d0d8b59f7b050a9e206e994f53f8fd80299871e87da", size = 296931 },
+ { url = "https://files.pythonhosted.org/packages/fa/68/241f88458b17c46ed2f80147a60a03b2ada7fb815c23b6bc76c298abb0a5/regex-2026.9.10-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d8c668af8f7bdb1d18739c27d30cd9f4b371495a883f75a002fb7a39d740fecd", size = 291741 },
+ { url = "https://files.pythonhosted.org/packages/90/9e/974d6de404c63e2d09525f4ddb99874c7ab8e1f781ccbe0dd3e26fa6f6e5/regex-2026.9.10-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6aebdd9a946de328b3f6f61dbf48dd064a36eb6dddf96e34ae6651d37f6e9383", size = 800088 },
+ { url = "https://files.pythonhosted.org/packages/9e/fd/3875b73f9e7ba3321dcaa02c19f650c05c61345328acf84599ac6f45ceed/regex-2026.9.10-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f2374c27deb189b282ec7e16106752c22ad39b056bbd8018960b1e4cc95d67a1", size = 871212 },
+ { url = "https://files.pythonhosted.org/packages/c5/f5/2358e791c0e171194dd6a8b97b520579098a21397fb79dbe6b7edc9e3fa7/regex-2026.9.10-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:e0dc78251154b66dc60211563fc115345da332eaa881e4e2523fb1edae3772f4", size = 919752 },
+ { url = "https://files.pythonhosted.org/packages/20/3b/000c79c3f9c06b7542225a5d3a7f9a85405da7224b3b9af94a491d07abea/regex-2026.9.10-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bafa41b0dd63669e5c0f8adf3d24819efeb73c847f492eb011212eb352e69041", size = 804578 },
+ { url = "https://files.pythonhosted.org/packages/30/6d/195eedb1de87f26639191e7487e41eb81e2ce255bc7563a64f3f5a95eb08/regex-2026.9.10-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:ebb2ba68e4641a994061f70bf44ed448fba0b9b1d18c94ffb9efc1cca805b39b", size = 777345 },
+ { url = "https://files.pythonhosted.org/packages/79/11/11fe2b313fcd92cb75c583648f2746031b9f4da9e9ed4241204a5e8b3721/regex-2026.9.10-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:048a89ee797db10160bd2bd519286577a6b43a100279bd4b7d8456a3d69c80a0", size = 790556 },
+ { url = "https://files.pythonhosted.org/packages/7a/c0/07ec9b4c43b0e16d62454971a5ab3886eccb0bfa161300a02d801ab28620/regex-2026.9.10-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:79e9432995e14c749d34209413de5e621ec8e67789bf4f46dbfabea9d06a2406", size = 865572 },
+ { url = "https://files.pythonhosted.org/packages/19/07/43bc9a9cf9fc8e37d2ba47980dfe4a6e151d2cf3ab969e0031e2a9b21484/regex-2026.9.10-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:5847e22bbf959764d776937d791d034cc2d19b787e361c88d97e859e8dc68502", size = 767971 },
+ { url = "https://files.pythonhosted.org/packages/9c/49/3b9286a3a94f3c89ed4ddbe74e72bdde21c1a5eadd520d5f4ed4a61936cb/regex-2026.9.10-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:c103b3b14e011774af4fb7e4617ad4d72b9171905cd3b231a70a4efd76e477d7", size = 858835 },
+ { url = "https://files.pythonhosted.org/packages/4a/9e/e5d27ce9fee8e3ef95f886c7b6ecec211efa4cfc18bd73bd5cf26cca4741/regex-2026.9.10-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6b34a778c695d24e77c140e3b4c95da69282e34f2f6b02b55656aa4a0379f643", size = 791793 },
+ { url = "https://files.pythonhosted.org/packages/63/03/c28a6bebedc3e2d86ee27ec2de16f7ec0419dcd10e771d43dcc9c58a2e99/regex-2026.9.10-cp313-cp313-win32.whl", hash = "sha256:7abb38b8c40f3a235235a44da452c64b7b5c1d650ec6351027db0e090804f2e5", size = 267298 },
+ { url = "https://files.pythonhosted.org/packages/cd/fd/5c85fa6cfb8e034080bda5a72fa0a4df2b7777a35eb7e73c2799c2adda7a/regex-2026.9.10-cp313-cp313-win_amd64.whl", hash = "sha256:20e8bfb07ad79a282f8b95b56fe67f9750b1b7f775724e4ba1f23cb296115ce4", size = 277894 },
+ { url = "https://files.pythonhosted.org/packages/c1/28/f5a25f6f65501675977fda35d9f61abb1468c4b87c0f73e536d8b21a60b8/regex-2026.9.10-cp313-cp313-win_arm64.whl", hash = "sha256:3bdeed3318a8eb2bbadc9c56347e0ff651639e934a47e168d05a3b12929fd0e7", size = 277436 },
+]
+
+[[package]]
+name = "rich"
+version = "15.0.0"
+source = { registry = "https://pypi.org/simple" }
+dependencies = [
+ { name = "markdown-it-py" },
+ { name = "pygments" },
+]
+sdist = { url = "https://files.pythonhosted.org/packages/c0/8f/0722ca900cc807c13a6a0c696dacf35430f72e0ec571c4275d2371fca3e9/rich-15.0.0.tar.gz", hash = "sha256:edd07a4824c6b40189fb7ac9bc4c52536e9780fbbfbddf6f1e2502c31b068c36", size = 230680 }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/82/3b/64d4899d73f91ba49a8c18a8ff3f0ea8f1c1d75481760df8c68ef5235bf5/rich-15.0.0-py3-none-any.whl", hash = "sha256:33bd4ef74232fb73fe9279a257718407f169c09b78a87ad3d296f548e27de0bb", size = 310654 },
+]
+
+[[package]]
+name = "safetensors"
+version = "0.8.0"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/45/06/f955dbbb1859e3bd23c8ac6141af5106e7ad5fedec4a3a6e3d60f94b7001/safetensors-0.8.0.tar.gz", hash = "sha256:fabaf3e0f18a6618d9b36560682562157f77c2b71fcffc7b432be2baed9d753d", size = 325846 }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/39/a0/f718cda65b05407d228f97602cf60dca269c979867aa5beb25410de26cd3/safetensors-0.8.0-cp310-abi3-macosx_10_12_x86_64.whl", hash = "sha256:c554f85858e05226d3c2828e32395e677434685d6d94594a41643361c5e837f0", size = 473568 },
+ { url = "https://files.pythonhosted.org/packages/f5/b1/fa7c600e7dceae12e9606c7578cbc9ff1e1ed55844883ee5c92205e86226/safetensors-0.8.0-cp310-abi3-macosx_11_0_arm64.whl", hash = "sha256:c80201d22cbf405b80647a60ada77bba06c8fba2da2743ba1e89cdcc39a81f25", size = 484562 },
+ { url = "https://files.pythonhosted.org/packages/09/7d/65a7de0af421317bb36a067241e4235fff194eed60b961ed6d3f59a3fc60/safetensors-0.8.0-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7a46e5ff292c356d6991e60942ba7f79817682d3a2cef0702136448cb9c4d235", size = 502844 },
+ { url = "https://files.pythonhosted.org/packages/91/4f/3175c9d75634e0e0dda0082794193521035edd7c70a6f212bf33ca06ddf4/safetensors-0.8.0-cp310-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4124502b78f03534117c848f87a39b8f31e577b15eff423bf8bfb95f2a8c30d0", size = 511823 },
+ { url = "https://files.pythonhosted.org/packages/20/87/846c289e7aa2299eff406335717cf43ce8777194ece8aad75772e0411615/safetensors-0.8.0-cp310-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7bc0a787ba8a35be368ee3574edfa2b1ad389eebd0a72e482ae275490e3f6c98", size = 633461 },
+ { url = "https://files.pythonhosted.org/packages/76/22/8d64d9df2c45d5ded401df889d0ad90882804ca172d79ec4f0df8f727fe0/safetensors-0.8.0-cp310-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:040070828e36dc8e122178bbbd5830ff9e97920affb84cbe0f46442497bed358", size = 545148 },
+ { url = "https://files.pythonhosted.org/packages/28/50/f203ff3a3ddfe19308efc83c5a3a29ed02bf786732ec35e68bf9162f3365/safetensors-0.8.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd6f3f93c9a0a7cc2788ee63fb763353d4bd2e89b0751bc78fcf7dda00bea774", size = 516040 },
+ { url = "https://files.pythonhosted.org/packages/46/fb/cdaed17ceb2948784fd9c36b6fd3e951b608547cea81a48e8ee6f8cfdfcb/safetensors-0.8.0-cp310-abi3-manylinux_2_31_riscv64.whl", hash = "sha256:fcdd41ec4628fee5799f807c73c353629130fbd942aa23d83c623dd6c9d52d78", size = 513832 },
+ { url = "https://files.pythonhosted.org/packages/0d/49/1e15de264dcc3b77943d2d0c56a95809956883b1c2d6d585c792523f180b/safetensors-0.8.0-cp310-abi3-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8e9f537aa183a38ace122d27303dcd986b26bd2a7591f9181d7f0c396f4677ca", size = 559930 },
+ { url = "https://files.pythonhosted.org/packages/2a/43/bf38443278eab4b1be1fce2931e2b012ad9cb7df52ada751d0aab8f7659a/safetensors-0.8.0-cp310-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:87eec7ffed2b809f05a398a8becb7d013f19f7837cd15d9748580d6cf30dbaf4", size = 678670 },
+ { url = "https://files.pythonhosted.org/packages/72/e3/68cd3fa5b48488e84add63e04cb12f3bc28ae4638c06d4508c6e88823d0e/safetensors-0.8.0-cp310-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:4a95ae2b05d7726d751da4ebf626a2ca782b706e101bd894c95bc2450b1cffcc", size = 786679 },
+ { url = "https://files.pythonhosted.org/packages/29/4b/1c19c509d56e01f4fbb3d0a2e597450f6cc04d1d56cf52defb0a62dfd715/safetensors-0.8.0-cp310-abi3-musllinux_1_2_i686.whl", hash = "sha256:3ae091f16662658bdc019a4ff6cb4c085bb7d725eb5978b183ffd265863b6d2d", size = 765683 },
+ { url = "https://files.pythonhosted.org/packages/27/43/41c1621732edd934d868a00d1b891584c892a7b62a9aab82ea5a0a5623ee/safetensors-0.8.0-cp310-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:8e080062fcde23be189565e1c3305d16751a218ecf9412c8601e64204eb6f846", size = 722361 },
+ { url = "https://files.pythonhosted.org/packages/8e/3f/73ccf82579412b4a71c4ca673f10b5f1f888d7cf5af7fe24f27d30307be4/safetensors-0.8.0-cp310-abi3-win32.whl", hash = "sha256:2ddf52eac562eda224f99acfa7889d02968c1fd59a5b011ae7d8137c37e9c02d", size = 342401 },
+ { url = "https://files.pythonhosted.org/packages/1b/6d/3fba214c1e5e0f69991677ec3bc17023f0421776975e1de0c682dca475e2/safetensors-0.8.0-cp310-abi3-win_amd64.whl", hash = "sha256:096ec1a98435df7beb08853bb5aa9081a84f23d0adc67ed1a0a10550f608373f", size = 355540 },
+ { url = "https://files.pythonhosted.org/packages/8d/fc/7eedc3510d97878876e32774eebbeb61c43f148a96e915c84229a3e967aa/safetensors-0.8.0-cp310-abi3-win_arm64.whl", hash = "sha256:f7838e5135a406ad3e02efdcb8cf2e5397d368b0154537c4fec682dbc544d452", size = 340500 },
+]
+
+[[package]]
+name = "scikit-learn"
+version = "1.8.0"
+source = { registry = "https://pypi.org/simple" }
+dependencies = [
+ { name = "joblib" },
+ { name = "numpy" },
+ { name = "scipy" },
+ { name = "threadpoolctl" },
+]
+sdist = { url = "https://files.pythonhosted.org/packages/0e/d4/40988bf3b8e34feec1d0e6a051446b1f66225f8529b9309becaeef62b6c4/scikit_learn-1.8.0.tar.gz", hash = "sha256:9bccbb3b40e3de10351f8f5068e105d0f4083b1a65fa07b6634fbc401a6287fd", size = 7335585 }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/03/aa/e22e0768512ce9255eba34775be2e85c2048da73da1193e841707f8f039c/scikit_learn-1.8.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0d6ae97234d5d7079dc0040990a6f7aeb97cb7fa7e8945f1999a429b23569e0a", size = 8513770 },
+ { url = "https://files.pythonhosted.org/packages/58/37/31b83b2594105f61a381fc74ca19e8780ee923be2d496fcd8d2e1147bd99/scikit_learn-1.8.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:edec98c5e7c128328124a029bceb09eda2d526997780fef8d65e9a69eead963e", size = 8044458 },
+ { url = "https://files.pythonhosted.org/packages/2d/5a/3f1caed8765f33eabb723596666da4ebbf43d11e96550fb18bdec42b467b/scikit_learn-1.8.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:74b66d8689d52ed04c271e1329f0c61635bcaf5b926db9b12d58914cdc01fe57", size = 8610341 },
+ { url = "https://files.pythonhosted.org/packages/38/cf/06896db3f71c75902a8e9943b444a56e727418f6b4b4a90c98c934f51ed4/scikit_learn-1.8.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8fdf95767f989b0cfedb85f7ed8ca215d4be728031f56ff5a519ee1e3276dc2e", size = 8900022 },
+ { url = "https://files.pythonhosted.org/packages/1c/f9/9b7563caf3ec8873e17a31401858efab6b39a882daf6c1bfa88879c0aa11/scikit_learn-1.8.0-cp313-cp313-win_amd64.whl", hash = "sha256:2de443b9373b3b615aec1bb57f9baa6bb3a9bd093f1269ba95c17d870422b271", size = 7989409 },
+ { url = "https://files.pythonhosted.org/packages/49/bd/1f4001503650e72c4f6009ac0c4413cb17d2d601cef6f71c0453da2732fc/scikit_learn-1.8.0-cp313-cp313-win_arm64.whl", hash = "sha256:eddde82a035681427cbedded4e6eff5e57fa59216c2e3e90b10b19ab1d0a65c3", size = 7619760 },
+ { url = "https://files.pythonhosted.org/packages/d2/7d/a630359fc9dcc95496588c8d8e3245cc8fd81980251079bc09c70d41d951/scikit_learn-1.8.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:7cc267b6108f0a1499a734167282c00c4ebf61328566b55ef262d48e9849c735", size = 8826045 },
+ { url = "https://files.pythonhosted.org/packages/cc/56/a0c86f6930cfcd1c7054a2bc417e26960bb88d32444fe7f71d5c2cfae891/scikit_learn-1.8.0-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:fe1c011a640a9f0791146011dfd3c7d9669785f9fed2b2a5f9e207536cf5c2fd", size = 8420324 },
+ { url = "https://files.pythonhosted.org/packages/46/1e/05962ea1cebc1cf3876667ecb14c283ef755bf409993c5946ade3b77e303/scikit_learn-1.8.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:72358cce49465d140cc4e7792015bb1f0296a9742d5622c67e31399b75468b9e", size = 8680651 },
+ { url = "https://files.pythonhosted.org/packages/fe/56/a85473cd75f200c9759e3a5f0bcab2d116c92a8a02ee08ccd73b870f8bb4/scikit_learn-1.8.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:80832434a6cc114f5219211eec13dcbc16c2bac0e31ef64c6d346cde3cf054cb", size = 8925045 },
+ { url = "https://files.pythonhosted.org/packages/cc/b7/64d8cfa896c64435ae57f4917a548d7ac7a44762ff9802f75a79b77cb633/scikit_learn-1.8.0-cp313-cp313t-win_amd64.whl", hash = "sha256:ee787491dbfe082d9c3013f01f5991658b0f38aa8177e4cd4bf434c58f551702", size = 8507994 },
+ { url = "https://files.pythonhosted.org/packages/5e/37/e192ea709551799379958b4c4771ec507347027bb7c942662c7fbeba31cb/scikit_learn-1.8.0-cp313-cp313t-win_arm64.whl", hash = "sha256:bf97c10a3f5a7543f9b88cbf488d33d175e9146115a451ae34568597ba33dcde", size = 7869518 },
+]
+
+[[package]]
+name = "scipy"
+version = "1.18.1"
+source = { registry = "https://pypi.org/simple" }
+dependencies = [
+ { name = "numpy" },
+]
+sdist = { url = "https://files.pythonhosted.org/packages/7e/74/66de6258867beb2ef08f35f9f2ac017a52cacd5081714d239ff1a442d458/scipy-1.18.1.tar.gz", hash = "sha256:52c4b7422442aba924d03ad4019852b08a92e64ea187b933135687bfe2747307", size = 30781235 }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/b6/55/4540ee0f9c42a9ad7109d0d1a8cc70de54c3572b01c6693a2b1c70e90ceb/scipy-1.18.1-cp313-cp313-macosx_10_15_x86_64.whl", hash = "sha256:3ab3523da44749156e1f68b464dc56af11ae4cbc5c739a49d05f32b982eca9f3", size = 31089958 },
+ { url = "https://files.pythonhosted.org/packages/2a/f5/769f36d14922b8071a43e95d24d18b6bdafad10d7f5cf647867e1ac052bc/scipy-1.18.1-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:e6fb6a55cc0ba97b59a1f288fb86dc6fce8bdfc0fffcbfd015e3a954bf2a2d93", size = 28715106 },
+ { url = "https://files.pythonhosted.org/packages/9a/d7/21d890274f75ea37a8209d5519e72da3da90302e3b9fb8397a0918386a62/scipy-1.18.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:ea324d9dd34c38bfb9bec8ca4d1b407db97dbb74029f566b8e322b1b6fe56fe6", size = 20456846 },
+ { url = "https://files.pythonhosted.org/packages/ec/01/798430ecea2e78ec7c02663d5f71c007bb6abeca931080debd40d7fa55ea/scipy-1.18.1-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:75b00eb8fb802090aa903f4ea1c7f5a584779f967361e68b7e98e531cc2d7174", size = 23087986 },
+ { url = "https://files.pythonhosted.org/packages/e6/5f/4634e9d35c68496e4e34cb6946eafab044458e6cedab42b40b6588e475b6/scipy-1.18.1-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d416b16cccfd70fbf62400e84d0bb2f4e6af519a45557f1692c749b37f14b315", size = 33998146 },
+ { url = "https://files.pythonhosted.org/packages/41/48/6450ed9243315322bbc19ac57b9b70d66a20bf1d38d124c96bc4bf6af9ea/scipy-1.18.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fdaf5ea890a6183d0565f51a61799d67081bd5b1cf03c5f4b3fd3732108625c9", size = 35312578 },
+ { url = "https://files.pythonhosted.org/packages/00/bd/bf5a4be6a3525676499f6dff307991739ff6fdcad1481b1aeb6745339f58/scipy-1.18.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c825cef2f49e46753726a7181a8e199804a912b29519ada542c6ebc654951899", size = 35612621 },
+ { url = "https://files.pythonhosted.org/packages/bd/4e/3c45c33e00a77996c4b1cb707929f833ba7b1d522ee29f882512c330676d/scipy-1.18.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e3b417bf8c2c7c16e8f58ad91db17783ec911ac16e7b50eb6eab6e809b4f5b07", size = 37457323 },
+ { url = "https://files.pythonhosted.org/packages/93/0e/e0348fbc0dbab65c114cf78957e7dfeb49f8e8b556b4d930cc12ff195e18/scipy-1.18.1-cp313-cp313-win_amd64.whl", hash = "sha256:559ed65f60c1af5a03f3912605a1b5114f522c7c32fb23c3376ae8f03219fe28", size = 36622841 },
+ { url = "https://files.pythonhosted.org/packages/50/a8/6a77f5f267c555108f0a864b6db714363dab567a8266422a79a385f9232b/scipy-1.18.1-cp313-cp313-win_arm64.whl", hash = "sha256:cd479fc04dd9401e3b4f49e76518768ef99c4f517a98c284eb091fd725719adf", size = 24399315 },
+]
+
+[[package]]
+name = "sentence-transformers"
+version = "6.0.0"
+source = { registry = "https://pypi.org/simple" }
+dependencies = [
+ { name = "huggingface-hub" },
+ { name = "numpy" },
+ { name = "scikit-learn" },
+ { name = "scipy" },
+ { name = "tokenizers" },
+ { name = "torch" },
+ { name = "tqdm" },
+ { name = "transformers" },
+ { name = "typing-extensions" },
+]
+sdist = { url = "https://files.pythonhosted.org/packages/e7/43/6b53e6a2098440ce21478742facbc058f1a66ba2cb80b24bdc64942e1e2c/sentence_transformers-6.0.0.tar.gz", hash = "sha256:9e8c2c24f3b1c7473cd5f519a3d3cff60daaeb95533b82d045ffb43ee5f2dac4", size = 575048 }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/04/fe/9d19b01fe87945f9455c617bf5d33dfbf29fe06ab6580bc0bea06080c788/sentence_transformers-6.0.0-py3-none-any.whl", hash = "sha256:b974ac67523ea2a955afa87b1024129305472bd884367dcc969261cb086790e9", size = 739640 },
+]
+
+[[package]]
+name = "setuptools"
+version = "84.0.0"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/6d/44/f5da03a8ef95d369145c5bb53050e7877c9f3d312e128605fd9504829143/setuptools-84.0.0.tar.gz", hash = "sha256:f4695c21257f0d9b537ec2692c941d02ee143b7cc1276941349a546573b2ef73", size = 1168449 }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/95/9c/c510029fc6ef33a6275cd2c5d3cecd6613dfd6aa401d57c54f1c18852ccf/setuptools-84.0.0-py3-none-any.whl", hash = "sha256:51a52592b3b99e102b609654876bd65f19f999935166d1352678931132b0c670", size = 818216 },
+]
+
+[[package]]
+name = "shellingham"
+version = "1.5.4"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/58/15/8b3609fd3830ef7b27b655beb4b4e9c62313a4e8da8c676e142cc210d58e/shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de", size = 10310 }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686", size = 9755 },
+]
+
+[[package]]
+name = "sympy"
+version = "1.14.0"
+source = { registry = "https://pypi.org/simple" }
+dependencies = [
+ { name = "mpmath" },
+]
+sdist = { url = "https://files.pythonhosted.org/packages/83/d3/803453b36afefb7c2bb238361cd4ae6125a569b4db67cd9e79846ba2d68c/sympy-1.14.0.tar.gz", hash = "sha256:d3d3fe8df1e5a0b42f0e7bdf50541697dbe7d23746e894990c030e2b05e72517", size = 7793921 }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/a2/09/77d55d46fd61b4a135c444fc97158ef34a095e5681d0a6c10b75bf356191/sympy-1.14.0-py3-none-any.whl", hash = "sha256:e091cc3e99d2141a0ba2847328f5479b05d94a6635cb96148ccb3f34671bd8f5", size = 6299353 },
+]
+
+[[package]]
+name = "threadpoolctl"
+version = "3.6.0"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/b7/4d/08c89e34946fce2aec4fbb45c9016efd5f4d7f24af8e5d93296e935631d8/threadpoolctl-3.6.0.tar.gz", hash = "sha256:8ab8b4aa3491d812b623328249fab5302a68d2d71745c8a4c719a2fcaba9f44e", size = 21274 }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/32/d5/f9a850d79b0851d1d4ef6456097579a9005b31fea68726a4ae5f2d82ddd9/threadpoolctl-3.6.0-py3-none-any.whl", hash = "sha256:43a0b8fd5a2928500110039e43a5eed8480b918967083ea48dc3ab9f13c4a7fb", size = 18638 },
+]
+
+[[package]]
+name = "tokenizers"
+version = "0.23.2"
+source = { registry = "https://pypi.org/simple" }
+dependencies = [
+ { name = "huggingface-hub" },
+]
+sdist = { url = "https://files.pythonhosted.org/packages/18/1e/bc6587c5ab643b2e17776cace9070a2ae73549c86bffac9934a600bf3c31/tokenizers-0.23.2.tar.gz", hash = "sha256:7f0f085686b9de0d0079e6f874ae053600db64c5d13049e0bbc0119926d25aac", size = 385745 }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/4d/ed/8a443528baa6fac8dfe8c3b75b038c63ac92bb539bcabe311e227c718173/tokenizers-0.23.2-cp310-abi3-macosx_10_12_x86_64.whl", hash = "sha256:85a9a357a3764aecc904ee76bdaf8cf1ad8e5a67a1b929a487c4a39b49ed0e90", size = 3148852 },
+ { url = "https://files.pythonhosted.org/packages/67/49/22da045a91732384d3a3771816bf188dc5a1f702c32e635afa7c679c0bef/tokenizers-0.23.2-cp310-abi3-macosx_11_0_arm64.whl", hash = "sha256:986670e43691469dcee610ea0f846f91a8f84e91fc6f7a48d4c064414c0ec2bf", size = 3101593 },
+ { url = "https://files.pythonhosted.org/packages/2e/4d/8f569ed49372a3ed8e57099bd515055fd48d7c95912c4307cda6973c2168/tokenizers-0.23.2-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a37039b5dfc4af84eb3ef0a92f4307e28936c8f9adccba2629d36f652e9bf7a2", size = 3516830 },
+ { url = "https://files.pythonhosted.org/packages/2a/de/e2f14c8919d5bf51874051d00d6c7b7e0e8bde6c6a2dbeddda7f642896ff/tokenizers-0.23.2-cp310-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7b7e37ba198f24150f523e1242e83c4970de4a525480586be5dcc24d9add32c5", size = 3407975 },
+ { url = "https://files.pythonhosted.org/packages/c5/bd/93c69152d02ef06ce47aed8b2bf4952dcf733c935a62791873932b2934d9/tokenizers-0.23.2-cp310-abi3-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43e4f2071e3cc8d5d86421c874aebc82659bb51a68bcdef5a0da75ee89511ccb", size = 3748165 },
+ { url = "https://files.pythonhosted.org/packages/2d/b7/56b84b80bc96942bba8eb23751a9e8a1fce4faaf4390425e7083f721c98c/tokenizers-0.23.2-cp310-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:325fee2e0418a9dc6c9ecf736a5f5f0db7875183ace9549ae339da76f7a1fbb7", size = 4024165 },
+ { url = "https://files.pythonhosted.org/packages/9b/8a/0175e216f005c2fe08238292663aa41e4c802b216e71047a69a0e9fc6fa3/tokenizers-0.23.2-cp310-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:950d7c9426fa72406a0ffeacdbc0bb9985f5db20eb8b263f29c79aaf83105703", size = 3591899 },
+ { url = "https://files.pythonhosted.org/packages/2c/ca/ca6b93c7820df123b2662a9469e8facc826ccc94e98fdd0d615f6431e73a/tokenizers-0.23.2-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:41c2f84d172449b4dadb9cdc508e3e364076613c35b16e76ecfe47a60d1e3305", size = 3386843 },
+ { url = "https://files.pythonhosted.org/packages/e9/a4/4f9106d317b14a80aefea9f0e3a8d07ef25f856a7607eb7f5ab894281fcb/tokenizers-0.23.2-cp310-abi3-manylinux_2_31_riscv64.whl", hash = "sha256:12f0835dc2ee694746a76adf7b1567d4346a4a502ebe93fb1f5f80ea49799b78", size = 3577314 },
+ { url = "https://files.pythonhosted.org/packages/8d/6a/1552b70fb0d9ab074fd3fc961435d01364e79c9058481822c3af6e8d402c/tokenizers-0.23.2-cp310-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:eb2f9c8a24da020ea8c11a01a19c1c2547912d92121ae4a01cfbca46125dee40", size = 9967367 },
+ { url = "https://files.pythonhosted.org/packages/06/01/3ccb3a956c7528b2507b8a9714155c4baf86af593039db6ea375dd0c96c3/tokenizers-0.23.2-cp310-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:f486f402f6f9abee5bb032553736813af0c710a86b2e0ca592634c55cea1f835", size = 9811886 },
+ { url = "https://files.pythonhosted.org/packages/fa/73/7038e612d48bda1599457f712f6bd3854eae1a9dc9c13aa47f835349db48/tokenizers-0.23.2-cp310-abi3-musllinux_1_2_i686.whl", hash = "sha256:bef235815a067b2648caf6dcc7a71091b0b0fff9ee8057f6451eb9335fae52ef", size = 10146224 },
+ { url = "https://files.pythonhosted.org/packages/b5/d8/8e9e4e0b287a338d8f88976729628c9d22e8a54cfaf9777018a7f7cb58a0/tokenizers-0.23.2-cp310-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:5c56bda1511921587789163e524d196ed8284174ac23abd7685d5ea8da6c4718", size = 10256304 },
+ { url = "https://files.pythonhosted.org/packages/f3/1f/c79a01f671a49728ebb0b61f7ff9ea45663b66cab40bc0858e9859b25c16/tokenizers-0.23.2-cp310-abi3-win32.whl", hash = "sha256:debf978920d93ba9c219bd67cc4bbfaf912c9039e41e7a28b91ec15e3728c95a", size = 2592809 },
+ { url = "https://files.pythonhosted.org/packages/db/f7/0a69ac6b82dbccf3f71add938a161c497952749294b8dd6dfe03a819dc40/tokenizers-0.23.2-cp310-abi3-win_amd64.whl", hash = "sha256:2e96f5699d5249c9c64aa8412e044f727aae3a4098cf830f9901ec1afc361cde", size = 2863236 },
+ { url = "https://files.pythonhosted.org/packages/d7/b0/dee84cb44175be1b4c35bd2f770727494e78f0bb38e571a623ade94dbebb/tokenizers-0.23.2-cp310-abi3-win_arm64.whl", hash = "sha256:e49c394456dd9985787fec76132438ba3fb8911f857b1bf3d40119f9292d41aa", size = 2729352 },
+]
+
+[[package]]
+name = "torch"
+version = "2.14.0"
+source = { registry = "https://pypi.org/simple" }
+dependencies = [
+ { name = "cuda-bindings", marker = "sys_platform == 'linux'" },
+ { name = "cuda-toolkit", extra = ["cublas", "cudart", "cufft", "cufile", "cupti", "curand", "cusolver", "cusparse", "nvjitlink", "nvrtc", "nvtx"], marker = "sys_platform == 'linux'" },
+ { name = "filelock" },
+ { name = "fsspec" },
+ { name = "jinja2" },
+ { name = "networkx" },
+ { name = "nvidia-cudnn-cu13", marker = "sys_platform == 'linux'" },
+ { name = "nvidia-cusparselt-cu13", marker = "sys_platform == 'linux'" },
+ { name = "nvidia-nccl-cu13", marker = "sys_platform == 'linux'" },
+ { name = "nvidia-nvshmem-cu13", marker = "sys_platform == 'linux'" },
+ { name = "setuptools" },
+ { name = "sympy" },
+ { name = "triton", marker = "sys_platform == 'linux'" },
+ { name = "typing-extensions" },
+]
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/ca/40/0db773452c2a62b37761d3f418acf933d381f9e87077036fb57c2a386c37/torch-2.14.0-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:9d4b1022a5d9b71282ec67ad0d9e7235870096b8a246dc1c32d6ea1fc83dc998", size = 127311393 },
+ { url = "https://files.pythonhosted.org/packages/13/36/537fd9da2adad49e7b2bb20741398625bee548493158274e87369a8eed56/torch-2.14.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:731b9ebdea402b8b1996d4c2ae613b16660e559b19e47bdc45d970568bc91c53", size = 454010525 },
+ { url = "https://files.pythonhosted.org/packages/21/f1/39bd13b21f57d1982b7f3ddf663f01c7266e2957714880744eba9e8c8d11/torch-2.14.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:84bf384779a10c02fc3c6bdbab71a9cb66b0dd93c652d1ed5d6dfc0cb37e5962", size = 554619993 },
+ { url = "https://files.pythonhosted.org/packages/89/a8/683d9c44737554b67ca76dd2db4f42258a0f014246cb511293e51e0154bd/torch-2.14.0-cp313-cp313-win_amd64.whl", hash = "sha256:0e7cf18cb0d8bd666b6120932e29c7aef3502b61a08b44da4839580c539a7cdb", size = 124113865 },
+]
+
+[[package]]
+name = "tqdm"
+version = "4.70.1"
+source = { registry = "https://pypi.org/simple" }
+dependencies = [
+ { name = "colorama", marker = "sys_platform == 'win32'" },
+]
+sdist = { url = "https://files.pythonhosted.org/packages/0d/ea/b2a5bd54b28a324dae8211928b2d730b6547500342c7e6c6dea08bd0a485/tqdm-4.70.1.tar.gz", hash = "sha256:cefd0eca11b2a37a3aee776544d4f4ae913f02688135b5556b8788dfa474afc4", size = 171846 }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/a7/03/921a3d3c75785aca9ebfbfcabfbc3a1be12e2ab5265deb026d55a5a3f83e/tqdm-4.70.1-py3-none-any.whl", hash = "sha256:c293e525e6fef9c20e8728fd4612df02a0aa31bb5fe91ecd93e123b1b7bffa73", size = 80199 },
+]
+
+[[package]]
+name = "transformers"
+version = "5.17.0"
+source = { registry = "https://pypi.org/simple" }
+dependencies = [
+ { name = "huggingface-hub" },
+ { name = "numpy" },
+ { name = "packaging" },
+ { name = "pyyaml" },
+ { name = "regex" },
+ { name = "safetensors" },
+ { name = "tokenizers" },
+ { name = "tqdm" },
+ { name = "typer" },
+]
+sdist = { url = "https://files.pythonhosted.org/packages/0e/9e/750649904a065007a838981785b2bd8d9ff26154c6c341ac67d0b7f82c68/transformers-5.17.0.tar.gz", hash = "sha256:a153be279169b55b92d8000bf4af294aed684503d091cca7804da2dd8a9de000", size = 9817878 }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/e8/d0/c502b60d684adbd98a8dc7d5bb866842772b816ac4354e4608be240041ae/transformers-5.17.0-py3-none-any.whl", hash = "sha256:78ec1ce21579b38dfb83950a0658cd119f87212a2fcfdff478096ce9d6c03801", size = 12295140 },
+]
+
+[[package]]
+name = "triton"
+version = "3.8.0"
+source = { registry = "https://pypi.org/simple" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/87/4d/4c564374bcdadb166fccbf3e45aee0d4a473f88d341761bd2fefe3b8e8c1/triton-3.8.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b7004666652f500ed854a86988e4b3d69d247188b5d2092b5df1e44f4a954099", size = 226476793 },
+ { url = "https://files.pythonhosted.org/packages/b0/b6/3394d5548404c1cabd1dadadd28d0b3f9478db1dff8180da53bb3f0a1e19/triton-3.8.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1f0497218e26b7d79773ad9c2a3fa3b539ee69f587a13fac2e552b1d322a8015", size = 247975122 },
+]
+
+[[package]]
+name = "typer"
+version = "0.27.2"
+source = { registry = "https://pypi.org/simple" }
+dependencies = [
+ { name = "annotated-doc" },
+ { name = "colorama", marker = "sys_platform == 'win32'" },
+ { name = "rich" },
+ { name = "shellingham" },
+]
+sdist = { url = "https://files.pythonhosted.org/packages/16/f7/57713ba479fd405eb76de31404b2c744c289e336b2d999511ebf51e496f7/typer-0.27.2.tar.gz", hash = "sha256:269b7eb9d3c202ca84b4bc9618cb04ebb43d3d4d1e567e4c768607232c05f945", size = 204045 }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/dc/bf/205d0004930ede8f542fb58f601526fccf4ae7626075ca1e6c4de5d3d652/typer-0.27.2-py3-none-any.whl", hash = "sha256:b3a5fc4342d5fc8fda8fc3010b1cf117e9249aab7fae800c2eff62fd3842d97d", size = 123130 },
+]
+
+[[package]]
+name = "typing-extensions"
+version = "4.16.0"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/f6/cc/6253133b5bb138fc3306cebfbda2c520f545d36b5be2c7255cc528bb45d6/typing_extensions-4.16.0.tar.gz", hash = "sha256:dc983d19a509c94dba722ee6abd33940f7c05a89e243c47e907eb4db6f1a43e5", size = 113555 }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl", hash = "sha256:481caa481374e813c1b176ada14e97f1f67a4539ce9cfeb3f350d78d6370c2e8", size = 45571 },
+]
diff --git a/scripts/.vendored_canon_ref b/scripts/.vendored_canon_ref
index c6a87246d8..6aa11e9567 100644
--- a/scripts/.vendored_canon_ref
+++ b/scripts/.vendored_canon_ref
@@ -1 +1 @@
-c8b8f89ecf29574d7e24f6c65cfd925aefbdd007
+dbac7ddc8f1351493b90c6dc8850319769fdf620
diff --git a/scripts/embedding_pipeline.py b/scripts/embedding_pipeline.py
index 1a97ec400d..de15231f1d 100644
--- a/scripts/embedding_pipeline.py
+++ b/scripts/embedding_pipeline.py
@@ -4,6 +4,7 @@
Inspection and verification use the standard library. Model inference and
projection are explicit operations with separately installed dependencies.
"""
+
from __future__ import annotations
import argparse
@@ -30,8 +31,14 @@
MODEL_DIMENSION = 1024
MAX_SEQ_LENGTH = 512
REQUIRED_FIELDS = (
- "identifier", "label", "category", "page", "source_path", "text",
- "text_sha256", "adapter_version",
+ "identifier",
+ "label",
+ "category",
+ "page",
+ "source_path",
+ "text",
+ "text_sha256",
+ "adapter_version",
)
@@ -40,8 +47,9 @@ class ContractError(ValueError):
def canonical(value: object) -> bytes:
- return json.dumps(value, sort_keys=True, separators=(",", ":"),
- ensure_ascii=False, allow_nan=False).encode("utf-8")
+ return json.dumps(
+ value, sort_keys=True, separators=(",", ":"), ensure_ascii=False, allow_nan=False
+ ).encode("utf-8")
def digest_file(path: Path) -> str:
@@ -65,8 +73,11 @@ def local_link(value: str) -> bool:
parsed = urlsplit(value)
decoded = unquote(parsed.path)
return bool(value) and not (
- parsed.scheme or parsed.netloc or decoded.startswith("/")
- or "\\" in decoded or ".." in decoded.split("/")
+ parsed.scheme
+ or parsed.netloc
+ or decoded.startswith("/")
+ or "\\" in decoded
+ or ".." in decoded.split("/")
or any(ord(char) < 32 for char in unquote(value))
)
@@ -101,37 +112,53 @@ def inspect_inputs(path: Path) -> dict:
counts: dict[str, int] = {}
versions: set[str] = set()
count = 0
- with tempfile.TemporaryDirectory(prefix="embedding-inputs-") as tmp:
- with sqlite3.connect(str(Path(tmp) / "ids.sqlite")) as db:
- db.execute("CREATE TABLE ids (id TEXT PRIMARY KEY)")
- for record in records(path, raw_digest=raw):
- try:
- db.execute("INSERT INTO ids VALUES (?)", (record["identifier"],))
- except sqlite3.IntegrityError as exc:
- raise ContractError(f"duplicate identifier: {record['identifier']}") from exc
- framed_update(content, record["identifier"], record["text"])
- framed_update(display, canonical(record).decode())
- counts[record["category"]] = counts.get(record["category"], 0) + 1
- versions.add(record["adapter_version"])
- count += 1
+ with (
+ tempfile.TemporaryDirectory(prefix="embedding-inputs-") as tmp,
+ sqlite3.connect(str(Path(tmp) / "ids.sqlite")) as db,
+ ):
+ db.execute("CREATE TABLE ids (id TEXT PRIMARY KEY)")
+ for record in records(path, raw_digest=raw):
+ try:
+ db.execute("INSERT INTO ids VALUES (?)", (record["identifier"],))
+ except sqlite3.IntegrityError as exc:
+ raise ContractError(f"duplicate identifier: {record['identifier']}") from exc
+ framed_update(content, record["identifier"], record["text"])
+ framed_update(display, canonical(record).decode())
+ counts[record["category"]] = counts.get(record["category"], 0) + 1
+ versions.add(record["adapter_version"])
+ count += 1
if not count:
raise ContractError("adapter input contains no records")
if len(versions) != 1:
raise ContractError("adapter versions must agree within one input")
if digest_file(path) != raw.hexdigest():
raise ContractError("adapter input changed while inspecting; rerun")
- return {"count": count, "corpus_sha256": content.hexdigest(),
- "records_sha256": display.hexdigest(), "input_sha256": raw.hexdigest(),
- "categories": counts, "adapter_version": versions.pop()}
+ return {
+ "count": count,
+ "corpus_sha256": content.hexdigest(),
+ "records_sha256": display.hexdigest(),
+ "input_sha256": raw.hexdigest(),
+ "categories": counts,
+ "adapter_version": versions.pop(),
+ }
def encoder_profile(*, library_versions: dict | None = None, device: str = "cpu") -> dict:
- return {"format_version": FORMAT_VERSION, "model": MODEL,
- "revision": MODEL_REVISION, "dimension": MODEL_DIMENSION,
- "normalized": True, "dtype": "float32-le", "max_seq_length": MAX_SEQ_LENGTH,
- "pooling": "sentence-transformers-model", "truncation": "tail",
- "inference_device": device, "weight_dtype": "torch.float32",
- "query_instruction": None, "library_versions": library_versions or {}}
+ return {
+ "format_version": FORMAT_VERSION,
+ "model": MODEL,
+ "revision": MODEL_REVISION,
+ "dimension": MODEL_DIMENSION,
+ "normalized": True,
+ "dtype": "float32-le",
+ "max_seq_length": MAX_SEQ_LENGTH,
+ "pooling": "sentence-transformers-model",
+ "truncation": "tail",
+ "inference_device": device,
+ "weight_dtype": "torch.float32",
+ "query_instruction": None,
+ "library_versions": library_versions or {},
+ }
def validate_profile(profile: dict) -> None:
@@ -139,29 +166,43 @@ def validate_profile(profile: dict) -> None:
r"[0-9a-f]{40}", str(profile.get("revision", ""))
):
raise ContractError("encoder profile must identify an immutable model revision")
- if (type(profile.get("format_version")) is not int
- or profile["format_version"] != FORMAT_VERSION
- or not isinstance(profile.get("model"), str) or not profile["model"]
- or type(profile.get("dimension")) is not int or profile["dimension"] < 2
- or profile.get("normalized") is not True or profile.get("dtype") != "float32-le"
- or type(profile.get("max_seq_length")) is not int
- or profile["max_seq_length"] < 1
- or profile.get("pooling") != "sentence-transformers-model"
- or profile.get("truncation") != "tail"
- or not re.fullmatch(r"cpu|mps(?::\d+)?|cuda(?::\d+)?",
- str(profile.get("inference_device", "")))
- or profile.get("weight_dtype") != "torch.float32"
- or "query_instruction" not in profile or profile["query_instruction"] is not None):
+ if (
+ type(profile.get("format_version")) is not int
+ or profile["format_version"] != FORMAT_VERSION
+ or not isinstance(profile.get("model"), str)
+ or not profile["model"]
+ or type(profile.get("dimension")) is not int
+ or profile["dimension"] < 2
+ or profile.get("normalized") is not True
+ or profile.get("dtype") != "float32-le"
+ or type(profile.get("max_seq_length")) is not int
+ or profile["max_seq_length"] < 1
+ or profile.get("pooling") != "sentence-transformers-model"
+ or profile.get("truncation") != "tail"
+ or not re.fullmatch(
+ r"cpu|mps(?::\d+)?|cuda(?::\d+)?", str(profile.get("inference_device", ""))
+ )
+ or profile.get("weight_dtype") != "torch.float32"
+ or "query_instruction" not in profile
+ or profile["query_instruction"] is not None
+ ):
raise ContractError("invalid encoder profile")
validate_versions(profile.get("library_versions"), "encoder")
canonical(profile)
def validate_versions(value, context: str) -> None:
- if (not isinstance(value, dict) or not value
- or any(not isinstance(name, str) or not name.strip()
- or not isinstance(version, str) or not version.strip()
- for name, version in value.items())):
+ if (
+ not isinstance(value, dict)
+ or not value
+ or any(
+ not isinstance(name, str)
+ or not name.strip()
+ or not isinstance(version, str)
+ or not version.strip()
+ for name, version in value.items()
+ )
+ ):
raise ContractError(f"{context} requires recorded software versions")
@@ -221,8 +262,9 @@ def cached_vector(db, key: str, record: dict, dimension: int):
return blob
-def populate_cache(input_path: Path, cache_path: Path, profile: dict, encoder,
- *, batch_size: int = 64) -> dict:
+def populate_cache(
+ input_path: Path, cache_path: Path, profile: dict, encoder, *, batch_size: int = 64
+) -> dict:
"""Reuse exact records and atomically commit each verified encoded batch."""
if batch_size < 1:
raise ContractError("batch size must be positive")
@@ -243,12 +285,21 @@ def save_batch():
# Validate the WHOLE batch before starting its transaction.
blobs = [vector_bytes(vector, profile["dimension"]) for vector in vectors]
with db:
- db.execute("INSERT OR IGNORE INTO profiles VALUES (?, ?)",
- (key, canonical(profile).decode()))
+ db.execute(
+ "INSERT OR IGNORE INTO profiles VALUES (?, ?)",
+ (key, canonical(profile).decode()),
+ )
for record, blob in zip(pending, blobs, strict=True):
- db.execute("INSERT OR REPLACE INTO vectors VALUES (?, ?, ?, ?, ?)",
- (key, record["identifier"], record["text_sha256"], blob,
- hashlib.sha256(blob).hexdigest()))
+ db.execute(
+ "INSERT OR REPLACE INTO vectors VALUES (?, ?, ?, ?, ?)",
+ (
+ key,
+ record["identifier"],
+ record["text_sha256"],
+ blob,
+ hashlib.sha256(blob).hexdigest(),
+ ),
+ )
encoded_count += len(pending)
pending.clear()
@@ -273,21 +324,30 @@ def versions(names: tuple[str, ...]) -> dict[str, str]:
def local_encoder(device: str | None = None):
from sentence_transformers import SentenceTransformer
- model = SentenceTransformer(MODEL, revision=MODEL_REVISION,
- trust_remote_code=False, device=device)
+ model = SentenceTransformer(
+ MODEL, revision=MODEL_REVISION, trust_remote_code=False, device=device
+ )
model.max_seq_length = MAX_SEQ_LENGTH
model.tokenizer.truncation_side = "right"
- profile = encoder_profile(library_versions=versions(
- ("sentence-transformers", "transformers", "tokenizers", "torch", "numpy")
- ), device=str(model.device))
+ profile = encoder_profile(
+ library_versions=versions(
+ ("sentence-transformers", "transformers", "tokenizers", "torch", "numpy")
+ ),
+ device=str(model.device),
+ )
if str(next(model.parameters()).dtype) != profile["weight_dtype"]:
raise ContractError("model weights must use the declared float32 precision")
if model.get_sentence_embedding_dimension() != MODEL_DIMENSION:
raise ContractError("model returned an unexpected embedding dimension")
def encode(texts):
- return model.encode(texts, batch_size=len(texts), normalize_embeddings=True,
- convert_to_numpy=True, show_progress_bar=False)
+ return model.encode(
+ texts,
+ batch_size=len(texts),
+ normalize_embeddings=True,
+ convert_to_numpy=True,
+ show_progress_bar=False,
+ )
return profile, encode
@@ -295,11 +355,13 @@ def encode(texts):
def select_records(input_path: Path, maximum: int, seed: int) -> list[dict]:
if maximum < 3:
raise ContractError("map selection maximum must be at least three")
+
# Bottom-k hashes are deterministic, bounded and independent of input order.
def ranked():
for record in records(input_path):
key = hashlib.sha256(canonical([seed, record["identifier"]])).digest()
yield key, record["identifier"], record
+
return [record for _, _, record in heapq.nsmallest(maximum, ranked())]
@@ -317,10 +379,19 @@ def atomic_json(path: Path, value: dict) -> None:
temporary.unlink(missing_ok=True)
-def build_map(input_path: Path, cache_path: Path, output: Path, profile: dict,
- *, maximum: int = 50000, seed: int = 42, neighbors: int = 15,
- projector=None, projection_versions: dict | None = None,
- title: str = "Semantic text map") -> dict:
+def build_map(
+ input_path: Path,
+ cache_path: Path,
+ output: Path,
+ profile: dict,
+ *,
+ maximum: int = 50000,
+ seed: int = 42,
+ neighbors: int = 15,
+ projector=None,
+ projection_versions: dict | None = None,
+ title: str = "Semantic text map",
+) -> dict:
import numpy as np
inputs = inspect_inputs(input_path)
@@ -347,17 +418,29 @@ def build_map(input_path: Path, cache_path: Path, output: Path, profile: dict,
projection_details = {"implementation": "injected-projector", "effective_pairs": None}
if projector is None:
import pacmap
+
projection_versions = versions(("pacmap", "numpy", "numba", "scikit-learn", "faiss-cpu"))
- reducer = pacmap.PaCMAP(n_components=2, n_neighbors=neighbor_count,
- MN_ratio=0.5, FP_ratio=2.0, random_state=seed,
- distance="euclidean", lr=1.0, num_iters=(100, 100, 250),
- apply_pca=True, knn_backend="faiss")
+ reducer = pacmap.PaCMAP(
+ n_components=2,
+ n_neighbors=neighbor_count,
+ MN_ratio=0.5,
+ FP_ratio=2.0,
+ random_state=seed,
+ distance="euclidean",
+ lr=1.0,
+ num_iters=(100, 100, 250),
+ apply_pca=True,
+ knn_backend="faiss",
+ )
coordinates = reducer.fit_transform(matrix, init="pca")
neighbor_count = int(reducer.n_neighbors)
projection_details = {
"implementation": "pacmap.PaCMAP",
- "effective_pairs": {"neighbors": neighbor_count,
- "mid_near": int(reducer.n_MN), "further": int(reducer.n_FP)},
+ "effective_pairs": {
+ "neighbors": neighbor_count,
+ "mid_near": int(reducer.n_MN),
+ "further": int(reducer.n_FP),
+ },
}
else:
coordinates = projector(matrix, seed=seed, neighbors=neighbor_count)
@@ -371,54 +454,82 @@ def build_map(input_path: Path, cache_path: Path, output: Path, profile: dict,
try:
map_rows = []
for record, xy in zip(selected, coordinates, strict=True):
- map_rows.append({name: record[name] for name in REQUIRED_FIELDS if name != "text"}
- | {"x": float(xy[0]), "y": float(xy[1])})
+ map_rows.append(
+ {name: record[name] for name in REQUIRED_FIELDS if name != "text"}
+ | {"x": float(xy[0]), "y": float(xy[1])}
+ )
(stage / "points.json").write_bytes(canonical(map_rows) + b"\n")
- (stage / "index.html").write_text(render_html(title, map_rows, inputs["count"]),
- encoding="utf-8")
+ (stage / "index.html").write_text(
+ render_html(title, map_rows, inputs["count"]), encoding="utf-8"
+ )
manifest = {
- "format_version": FORMAT_VERSION, "representation": "semantic-text",
+ "format_version": FORMAT_VERSION,
+ "representation": "semantic-text",
"generated_at_utc": dt.datetime.now(dt.timezone.utc).isoformat(),
- "encoder": profile, "encoder_profile_sha256": key, "inputs": inputs,
- "projection": {"method": "pacmap", "dimensions": 2, "seed": seed,
- "requested_neighbors": neighbors, "neighbors": neighbor_count,
- "MN_ratio": 0.5, "FP_ratio": 2.0, "distance": "euclidean",
- "learning_rate": 1.0, "iterations": [100, 100, 250],
- "apply_pca": True, "knn_backend": "faiss",
- "initialization": "pca", "library_versions": projection_versions or {},
- **projection_details},
- "coverage": {"total": inputs["count"], "eligible": inputs["count"],
- "displayed": len(selected), "omitted": inputs["count"] - len(selected),
- "selection": "bottom-k-sha256(seed,identifier)", "maximum": maximum},
- "source_vectors": {"sha256": vector_checksum,
- "shape": list(matrix.shape), "dtype": "float32-le",
- "order": "points.json", "storage": "local-profile-bound-cache"},
- "files": {name: digest_file(stage / name)
- for name in ("points.json", "index.html")},
+ "encoder": profile,
+ "encoder_profile_sha256": key,
+ "inputs": inputs,
+ "projection": {
+ "method": "pacmap",
+ "dimensions": 2,
+ "seed": seed,
+ "requested_neighbors": neighbors,
+ "neighbors": neighbor_count,
+ "MN_ratio": 0.5,
+ "FP_ratio": 2.0,
+ "distance": "euclidean",
+ "learning_rate": 1.0,
+ "iterations": [100, 100, 250],
+ "apply_pca": True,
+ "knn_backend": "faiss",
+ "initialization": "pca",
+ "library_versions": projection_versions or {},
+ **projection_details,
+ },
+ "coverage": {
+ "total": inputs["count"],
+ "eligible": inputs["count"],
+ "displayed": len(selected),
+ "omitted": inputs["count"] - len(selected),
+ "selection": "bottom-k-sha256(seed,identifier)",
+ "maximum": maximum,
+ },
+ "source_vectors": {
+ "sha256": vector_checksum,
+ "shape": list(matrix.shape),
+ "dtype": "float32-le",
+ "order": "points.json",
+ "storage": "local-profile-bound-cache",
+ },
+ "files": {name: digest_file(stage / name) for name in ("points.json", "index.html")},
}
(stage / "manifest.json").write_bytes(canonical(manifest) + b"\n")
validate_bundle(stage, input_path=input_path)
bundle = hashlib.sha256(canonical(manifest)).hexdigest()
destination = output / bundle
os.rename(stage, destination)
- atomic_json(output / "current.json", {"bundle": bundle,
- "manifest_sha256": digest_file(destination / "manifest.json")})
+ atomic_json(
+ output / "current.json",
+ {"bundle": bundle, "manifest_sha256": digest_file(destination / "manifest.json")},
+ )
return {"bundle": str(destination), "coverage": manifest["coverage"]}
finally:
if stage.exists():
shutil.rmtree(stage)
-def validate_bundle(bundle: Path, *, input_path: Path | None = None,
- cache_path: Path | None = None) -> dict:
+def validate_bundle(
+ bundle: Path, *, input_path: Path | None = None, cache_path: Path | None = None
+) -> dict:
if bundle.is_symlink() or (bundle / "manifest.json").is_symlink():
raise ContractError("bundle and manifest must not be symbolic links")
manifest = json.loads((bundle / "manifest.json").read_text())
if not isinstance(manifest, dict) or manifest.get("format_version") != FORMAT_VERSION:
raise ContractError("unsupported map bundle format")
- if (manifest.get("representation") != "semantic-text"
- or any(not isinstance(manifest.get(name), dict) for name in
- ("encoder", "inputs", "files", "coverage", "projection", "source_vectors"))):
+ if manifest.get("representation") != "semantic-text" or any(
+ not isinstance(manifest.get(name), dict)
+ for name in ("encoder", "inputs", "files", "coverage", "projection", "source_vectors")
+ ):
raise ContractError("invalid map bundle metadata")
if manifest.get("encoder_profile_sha256") != profile_id(manifest["encoder"]):
raise ContractError("encoder profile checksum mismatch")
@@ -436,77 +547,103 @@ def validate_bundle(bundle: Path, *, input_path: Path | None = None,
raise ContractError("map points must contain at least three records")
coverage = manifest["coverage"]
projection = manifest["projection"]
- if (projection.get("method") != "pacmap" or projection.get("dimensions") != 2
- or type(projection.get("seed")) is not int
- or type(projection.get("neighbors")) is not int
- or not 1 <= projection["neighbors"] < len(points)
- or type(projection.get("requested_neighbors")) is not int
- or projection["requested_neighbors"] < 1
- or projection.get("initialization") != "pca"
- or projection.get("MN_ratio") != 0.5 or projection.get("FP_ratio") != 2.0
- or projection.get("distance") != "euclidean"
- or projection.get("learning_rate") != 1.0
- or projection.get("iterations") != [100, 100, 250]
- or projection.get("apply_pca") is not True
- or projection.get("knn_backend") != "faiss"):
+ if (
+ projection.get("method") != "pacmap"
+ or projection.get("dimensions") != 2
+ or type(projection.get("seed")) is not int
+ or type(projection.get("neighbors")) is not int
+ or not 1 <= projection["neighbors"] < len(points)
+ or type(projection.get("requested_neighbors")) is not int
+ or projection["requested_neighbors"] < 1
+ or projection.get("initialization") != "pca"
+ or projection.get("MN_ratio") != 0.5
+ or projection.get("FP_ratio") != 2.0
+ or projection.get("distance") != "euclidean"
+ or projection.get("learning_rate") != 1.0
+ or projection.get("iterations") != [100, 100, 250]
+ or projection.get("apply_pca") is not True
+ or projection.get("knn_backend") != "faiss"
+ ):
raise ContractError("invalid PaCMAP projection metadata")
validate_versions(projection.get("library_versions"), "projection")
if projection.get("implementation") == "pacmap.PaCMAP":
pairs = projection.get("effective_pairs")
- if (not isinstance(pairs, dict)
- or any(type(pairs.get(name)) is not int or not 0 <= pairs[name] < len(points)
- for name in ("neighbors", "mid_near", "further"))
- or pairs["neighbors"] != projection["neighbors"] or pairs["further"] < 1):
+ if (
+ not isinstance(pairs, dict)
+ or any(
+ type(pairs.get(name)) is not int or not 0 <= pairs[name] < len(points)
+ for name in ("neighbors", "mid_near", "further")
+ )
+ or pairs["neighbors"] != projection["neighbors"]
+ or pairs["further"] < 1
+ ):
raise ContractError("invalid effective PaCMAP pair counts")
elif projection.get("implementation") != "injected-projector":
raise ContractError("unidentified projection implementation")
- if (not isinstance(points, list) or len(points) < 3
- or any(type(coverage.get(name)) is not int for name in
- ("displayed", "eligible", "total", "omitted", "maximum"))
- or not 3 <= len(points) <= coverage["maximum"]
- or coverage["omitted"] < 0
- or coverage.get("selection") != "bottom-k-sha256(seed,identifier)"):
+ if (
+ not isinstance(points, list)
+ or len(points) < 3
+ or any(
+ type(coverage.get(name)) is not int
+ for name in ("displayed", "eligible", "total", "omitted", "maximum")
+ )
+ or not 3 <= len(points) <= coverage["maximum"]
+ or coverage["omitted"] < 0
+ or coverage.get("selection") != "bottom-k-sha256(seed,identifier)"
+ ):
raise ContractError("invalid map selection coverage")
source_vectors = manifest["source_vectors"]
- if (source_vectors.get("shape") != [len(points), manifest["encoder"]["dimension"]]
- or source_vectors.get("dtype") != "float32-le"
- or source_vectors.get("order") != "points.json"
- or source_vectors.get("storage") != "local-profile-bound-cache"
- or not re.fullmatch(r"[0-9a-f]{64}", str(source_vectors.get("sha256", "")))):
+ if (
+ source_vectors.get("shape") != [len(points), manifest["encoder"]["dimension"]]
+ or source_vectors.get("dtype") != "float32-le"
+ or source_vectors.get("order") != "points.json"
+ or source_vectors.get("storage") != "local-profile-bound-cache"
+ or not re.fullmatch(r"[0-9a-f]{64}", str(source_vectors.get("sha256", "")))
+ ):
raise ContractError("invalid source vector receipt")
for row in points:
- if (not isinstance(row, dict)
- or any(not isinstance(row.get(name), str) or not row[name].strip()
- for name in REQUIRED_FIELDS if name != "text")
- or not local_link(row["page"]) or not local_link(row["source_path"])
- or not re.fullmatch(r"[0-9a-f]{64}", row["text_sha256"])
- or not all(type(row.get(name)) in (int, float) and math.isfinite(row[name])
- for name in ("x", "y"))):
+ if (
+ not isinstance(row, dict)
+ or any(
+ not isinstance(row.get(name), str) or not row[name].strip()
+ for name in REQUIRED_FIELDS
+ if name != "text"
+ )
+ or not local_link(row["page"])
+ or not local_link(row["source_path"])
+ or not re.fullmatch(r"[0-9a-f]{64}", row["text_sha256"])
+ or not all(
+ type(row.get(name)) in (int, float) and math.isfinite(row[name])
+ for name in ("x", "y")
+ )
+ ):
raise ContractError("invalid map coordinate or record metadata")
- if (coverage["displayed"] != len(points)
- or coverage["total"] != manifest["inputs"]["count"]
- or coverage["eligible"] != coverage["total"]
- or coverage["omitted"] != coverage["total"] - len(points)
- or len({row["identifier"] for row in points}) != len(points)):
+ if (
+ coverage["displayed"] != len(points)
+ or coverage["total"] != manifest["inputs"]["count"]
+ or coverage["eligible"] != coverage["total"]
+ or coverage["omitted"] != coverage["total"] - len(points)
+ or len({row["identifier"] for row in points}) != len(points)
+ ):
raise ContractError("map coverage or identifiers are inconsistent")
if input_path is not None:
selected = select_records(input_path, coverage["maximum"], projection["seed"])
- expected = [{key: row[key] for key in REQUIRED_FIELDS if key != "text"}
- for row in selected]
- observed = [{key: row[key] for key in REQUIRED_FIELDS if key != "text"}
- for row in points]
+ expected = [{key: row[key] for key in REQUIRED_FIELDS if key != "text"} for row in selected]
+ observed = [{key: row[key] for key in REQUIRED_FIELDS if key != "text"} for row in points]
if observed != expected:
raise ContractError("map records differ from the declared input selection")
if cache_path is not None:
digest = hashlib.sha256()
with cache_connection(cache_path) as db:
- profile_row = db.execute("SELECT json FROM profiles WHERE id=?",
- (manifest["encoder_profile_sha256"],)).fetchone()
+ profile_row = db.execute(
+ "SELECT json FROM profiles WHERE id=?", (manifest["encoder_profile_sha256"],)
+ ).fetchone()
if profile_row is None or profile_row[0] != canonical(manifest["encoder"]).decode():
raise ContractError("cache does not contain the exact encoder profile")
for row in points:
- blob = cached_vector(db, manifest["encoder_profile_sha256"], row,
- manifest["encoder"]["dimension"])
+ blob = cached_vector(
+ db, manifest["encoder_profile_sha256"], row, manifest["encoder"]["dimension"]
+ )
if blob is None:
raise ContractError("source vector is missing from the verified cache")
digest.update(blob)
@@ -525,8 +662,9 @@ def current_bundle(output: Path) -> Path:
return bundle
-def stage_map(output: Path, published_dir: Path, *, input_path: Path,
- expected_bundle: str | None = None) -> dict:
+def stage_map(
+ output: Path, published_dir: Path, *, input_path: Path, expected_bundle: str | None = None
+) -> dict:
"""Stage a verified map into a site build, restoring old files on exceptions.
The caller owns the repository/build lock. The site's later deployment is
@@ -543,11 +681,13 @@ def stage_map(output: Path, published_dir: Path, *, input_path: Path,
raise ContractError("map manifest differs from its immutable generation identity")
if manifest["projection"]["implementation"] != "pacmap.PaCMAP":
raise ContractError("site publication requires the actual PaCMAP implementation")
- if (published_dir.is_symlink()
- or (published_dir.exists() and not published_dir.is_dir())
- or source.resolve().is_relative_to(published_dir.resolve())
- or published_dir.resolve().is_relative_to(output.resolve())
- or input_path.resolve().is_relative_to(published_dir.resolve())):
+ if (
+ published_dir.is_symlink()
+ or (published_dir.exists() and not published_dir.is_dir())
+ or source.resolve().is_relative_to(published_dir.resolve())
+ or published_dir.resolve().is_relative_to(output.resolve())
+ or input_path.resolve().is_relative_to(published_dir.resolve())
+ ):
raise ContractError("unsafe map staging destination")
published_dir.parent.mkdir(parents=True, exist_ok=True)
temporary = Path(tempfile.mkdtemp(prefix=".text-map-stage-", dir=published_dir.parent))
@@ -582,7 +722,7 @@ def render_html(title: str, points: list[dict], total: int) -> str:
payload = canonical(points).decode().replace("<", "\\u003c").replace("&", "\\u0026")
# The site adapter publishes this directory at text-map/. Record pages are
# relative to the site root, one level above this self-contained page.
- return f'''
+ return f"""
{html.escape(title)}