linkml-store 0.2.6__py3-none-any.whl → 0.2.10rc1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of linkml-store might be problematic. Click here for more details.
- linkml_store/api/client.py +2 -3
- linkml_store/api/collection.py +63 -8
- linkml_store/api/database.py +20 -3
- linkml_store/api/stores/duckdb/duckdb_collection.py +168 -4
- linkml_store/api/stores/duckdb/duckdb_database.py +5 -5
- linkml_store/api/stores/filesystem/__init__.py +1 -1
- linkml_store/api/stores/filesystem/filesystem_database.py +1 -1
- linkml_store/api/stores/mongodb/mongodb_collection.py +132 -15
- linkml_store/api/stores/mongodb/mongodb_database.py +2 -1
- linkml_store/api/stores/neo4j/neo4j_database.py +1 -1
- linkml_store/api/stores/solr/solr_collection.py +107 -18
- linkml_store/cli.py +201 -21
- linkml_store/index/implementations/llm_indexer.py +13 -6
- linkml_store/index/indexer.py +9 -5
- linkml_store/inference/implementations/llm_inference_engine.py +15 -13
- linkml_store/inference/implementations/rag_inference_engine.py +13 -10
- linkml_store/inference/implementations/sklearn_inference_engine.py +7 -1
- linkml_store/inference/inference_config.py +2 -1
- linkml_store/inference/inference_engine.py +1 -1
- linkml_store/plotting/__init__.py +5 -0
- linkml_store/plotting/cli.py +172 -0
- linkml_store/plotting/heatmap.py +356 -0
- linkml_store/utils/dat_parser.py +95 -0
- linkml_store/utils/enrichment_analyzer.py +217 -0
- linkml_store/utils/format_utils.py +124 -3
- linkml_store/utils/llm_utils.py +4 -2
- linkml_store/utils/object_utils.py +9 -3
- linkml_store/utils/pandas_utils.py +1 -1
- linkml_store/utils/sql_utils.py +1 -1
- linkml_store/utils/vector_utils.py +3 -10
- {linkml_store-0.2.6.dist-info → linkml_store-0.2.10rc1.dist-info}/METADATA +3 -1
- {linkml_store-0.2.6.dist-info → linkml_store-0.2.10rc1.dist-info}/RECORD +35 -30
- {linkml_store-0.2.6.dist-info → linkml_store-0.2.10rc1.dist-info}/WHEEL +1 -1
- {linkml_store-0.2.6.dist-info → linkml_store-0.2.10rc1.dist-info}/LICENSE +0 -0
- {linkml_store-0.2.6.dist-info → linkml_store-0.2.10rc1.dist-info}/entry_points.txt +0 -0
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import csv
|
|
2
2
|
import gzip
|
|
3
|
+
import hashlib
|
|
3
4
|
import io
|
|
4
5
|
import json
|
|
5
6
|
import logging
|
|
@@ -29,13 +30,24 @@ class Format(Enum):
|
|
|
29
30
|
JSONL = "jsonl"
|
|
30
31
|
YAML = "yaml"
|
|
31
32
|
YAMLL = "yamll"
|
|
33
|
+
TOML = "toml"
|
|
32
34
|
TSV = "tsv"
|
|
33
35
|
CSV = "csv"
|
|
34
36
|
XML = "xml"
|
|
37
|
+
TURTLE = "turtle"
|
|
38
|
+
RDFXML = "rdfxml"
|
|
39
|
+
TEXT = "text"
|
|
40
|
+
TEXTLINES = "textlines"
|
|
35
41
|
OBO = "obo"
|
|
42
|
+
FASTA = "fasta"
|
|
43
|
+
GMT = "gmt"
|
|
44
|
+
DAT = "dat"
|
|
45
|
+
MARKDOWN = "markdown"
|
|
36
46
|
PKL = "pkl"
|
|
37
47
|
PYTHON = "python"
|
|
38
48
|
PARQUET = "parquet"
|
|
49
|
+
HDF5 = "hdf5"
|
|
50
|
+
NETCDF = "netcdf"
|
|
39
51
|
FORMATTED = "formatted"
|
|
40
52
|
TABLE = "table"
|
|
41
53
|
XLSX = "xlsx"
|
|
@@ -55,7 +67,12 @@ class Format(Enum):
|
|
|
55
67
|
".yamll": cls.YAMLL,
|
|
56
68
|
".tsv": cls.TSV,
|
|
57
69
|
".csv": cls.CSV,
|
|
70
|
+
".txt": cls.TEXT,
|
|
58
71
|
".xml": cls.XML,
|
|
72
|
+
".owx": cls.XML,
|
|
73
|
+
".owl": cls.RDFXML,
|
|
74
|
+
".ttl": cls.TURTLE,
|
|
75
|
+
".md": cls.MARKDOWN,
|
|
59
76
|
".py": cls.PYTHON,
|
|
60
77
|
".parquet": cls.PARQUET,
|
|
61
78
|
".pq": cls.PARQUET,
|
|
@@ -122,12 +139,25 @@ def clean_nested_structure(obj):
|
|
|
122
139
|
else:
|
|
123
140
|
return clean_pandas_value(obj)
|
|
124
141
|
|
|
142
|
+
|
|
125
143
|
def process_file(
|
|
126
|
-
f: IO,
|
|
144
|
+
f: IO,
|
|
145
|
+
format: Format,
|
|
146
|
+
expected_type: Optional[Type] = None,
|
|
147
|
+
header_comment_token: Optional[str] = None,
|
|
148
|
+
format_options: Optional[Dict[str, Any]] = None,
|
|
127
149
|
) -> List[Dict[str, Any]]:
|
|
128
150
|
"""
|
|
129
151
|
Process a single file and return a list of objects.
|
|
152
|
+
|
|
153
|
+
:param f: The file object.
|
|
154
|
+
:param format: The format of the file.
|
|
155
|
+
:param expected_type: The expected type of the objects.
|
|
156
|
+
:param header_comment_token: Token used for header comments to be skipped
|
|
157
|
+
:return:
|
|
130
158
|
"""
|
|
159
|
+
if format_options is None:
|
|
160
|
+
format_options = {}
|
|
131
161
|
if format == Format.YAMLL:
|
|
132
162
|
format = Format.YAML
|
|
133
163
|
expected_type = list
|
|
@@ -142,6 +172,14 @@ def process_file(
|
|
|
142
172
|
objs = [obj for obj in objs if obj is not None]
|
|
143
173
|
else:
|
|
144
174
|
objs = yaml.safe_load(f)
|
|
175
|
+
elif format == Format.TOML:
|
|
176
|
+
import toml
|
|
177
|
+
|
|
178
|
+
objs = toml.load(f)
|
|
179
|
+
if not isinstance(objs, list):
|
|
180
|
+
objs = [objs]
|
|
181
|
+
elif format == Format.TEXTLINES:
|
|
182
|
+
objs = f.readlines()
|
|
145
183
|
elif format in [Format.TSV, Format.CSV]:
|
|
146
184
|
if header_comment_token:
|
|
147
185
|
while True:
|
|
@@ -160,14 +198,82 @@ def process_file(
|
|
|
160
198
|
elif format == Format.XLSX:
|
|
161
199
|
xls = pd.ExcelFile(f)
|
|
162
200
|
objs = {sheet: clean_nested_structure(xls.parse(sheet).to_dict(orient="records")) for sheet in xls.sheet_names}
|
|
201
|
+
elif format == Format.TEXT:
|
|
202
|
+
txt = f.read()
|
|
203
|
+
objs = [
|
|
204
|
+
{
|
|
205
|
+
"name": Path(f.name).name,
|
|
206
|
+
"path": f.name,
|
|
207
|
+
"content": txt,
|
|
208
|
+
"size": len(txt),
|
|
209
|
+
"lines": txt.count("\n") + 1,
|
|
210
|
+
"md5": hashlib.md5(txt.encode()).hexdigest(),
|
|
211
|
+
}
|
|
212
|
+
]
|
|
213
|
+
elif format == Format.GMT:
|
|
214
|
+
objs = []
|
|
215
|
+
lib_name = Path(f.name).name
|
|
216
|
+
for line in f:
|
|
217
|
+
parts = line.strip().split("\t")
|
|
218
|
+
desc = parts[1]
|
|
219
|
+
objs.append(
|
|
220
|
+
{
|
|
221
|
+
"library": lib_name,
|
|
222
|
+
"uid": f"{lib_name}.{parts[0]}",
|
|
223
|
+
"name": parts[0],
|
|
224
|
+
"description": desc if desc else None,
|
|
225
|
+
"genes": parts[2:],
|
|
226
|
+
}
|
|
227
|
+
)
|
|
228
|
+
elif format == Format.FASTA:
|
|
229
|
+
objs = []
|
|
230
|
+
current_obj = None
|
|
231
|
+
for line in f:
|
|
232
|
+
line = line.strip()
|
|
233
|
+
if line.startswith(">"):
|
|
234
|
+
if current_obj:
|
|
235
|
+
objs.append(current_obj)
|
|
236
|
+
current_obj = {"id": line[1:], "sequence": ""}
|
|
237
|
+
else:
|
|
238
|
+
current_obj["sequence"] += line
|
|
239
|
+
if current_obj:
|
|
240
|
+
objs.append(current_obj)
|
|
163
241
|
elif format == Format.OBO:
|
|
164
242
|
blocks = split_document(f.read(), "\n\n")
|
|
165
243
|
id_pattern = re.compile(r"id: (\S+)")
|
|
244
|
+
|
|
166
245
|
def get_id(block):
|
|
167
246
|
m = id_pattern.search(block)
|
|
168
247
|
return m.group(1) if m else None
|
|
248
|
+
|
|
169
249
|
objs = [{"id": get_id(block), "content": block} for block in blocks]
|
|
170
250
|
objs = [obj for obj in objs if obj["id"]]
|
|
251
|
+
elif format == Format.DAT:
|
|
252
|
+
from linkml_store.utils.dat_parser import parse_sib_format
|
|
253
|
+
|
|
254
|
+
_, objs = parse_sib_format(f.read())
|
|
255
|
+
elif format in (Format.RDFXML, Format.TURTLE):
|
|
256
|
+
import lightrdf
|
|
257
|
+
|
|
258
|
+
parser = lightrdf.Parser()
|
|
259
|
+
objs = []
|
|
260
|
+
ext_fmt = "rdfxml"
|
|
261
|
+
if format == Format.TURTLE:
|
|
262
|
+
ext_fmt = "ttl"
|
|
263
|
+
bytesio = io.BytesIO(f.read().encode("utf-8"))
|
|
264
|
+
buffer = io.BufferedReader(bytesio)
|
|
265
|
+
for s, p, o in parser.parse(buffer, base_iri=None, format=ext_fmt):
|
|
266
|
+
obj = {
|
|
267
|
+
"subject": s,
|
|
268
|
+
"predicate": p,
|
|
269
|
+
"object": o,
|
|
270
|
+
}
|
|
271
|
+
if format_options.get("pivot", False):
|
|
272
|
+
obj = {
|
|
273
|
+
"subject": s,
|
|
274
|
+
p: o,
|
|
275
|
+
}
|
|
276
|
+
objs.append(obj)
|
|
171
277
|
elif format == Format.PARQUET:
|
|
172
278
|
import pyarrow.parquet as pq
|
|
173
279
|
|
|
@@ -202,6 +308,7 @@ def load_objects(
|
|
|
202
308
|
:param compression: The compression type. Supports 'gz' for gzip and 'tgz' for tar.gz.
|
|
203
309
|
:param expected_type: The target type to load the objects into, e.g. list
|
|
204
310
|
:param header_comment_token: Token used for header comments to be skipped
|
|
311
|
+
:param select_query: JSONPath query to select specific objects from the loaded data.
|
|
205
312
|
:return: A list of dictionaries representing the loaded objects.
|
|
206
313
|
"""
|
|
207
314
|
if isinstance(file_path, Path):
|
|
@@ -290,7 +397,8 @@ def write_output(
|
|
|
290
397
|
|
|
291
398
|
|
|
292
399
|
def render_output(
|
|
293
|
-
data: Union[List[Dict[str, Any]], Dict[str, Any], pd.DataFrame
|
|
400
|
+
data: Union[List[Dict[str, Any]], Dict[str, Any], pd.DataFrame, List[BaseModel]],
|
|
401
|
+
format: Optional[Union[Format, str]] = Format.YAML,
|
|
294
402
|
) -> str:
|
|
295
403
|
"""
|
|
296
404
|
Render output data in JSON, JSONLines, YAML, CSV, or TSV format.
|
|
@@ -323,6 +431,12 @@ def render_output(
|
|
|
323
431
|
if isinstance(data, pd.DataFrame):
|
|
324
432
|
data = data.to_dict(orient="records")
|
|
325
433
|
|
|
434
|
+
if isinstance(data, BaseModel):
|
|
435
|
+
data = data.model_dump()
|
|
436
|
+
|
|
437
|
+
if data and isinstance(data, list) and isinstance(data[0], BaseModel):
|
|
438
|
+
data = [d.model_dump() if isinstance(d, BaseModel) else d for d in data]
|
|
439
|
+
|
|
326
440
|
if isinstance(data, dict) and format in [Format.TSV, Format.CSV]:
|
|
327
441
|
data = [data]
|
|
328
442
|
|
|
@@ -335,8 +449,15 @@ def render_output(
|
|
|
335
449
|
return "\n".join(json.dumps(obj) for obj in data)
|
|
336
450
|
elif format == Format.PYTHON:
|
|
337
451
|
return str(data)
|
|
452
|
+
elif format == Format.MARKDOWN:
|
|
453
|
+
|
|
454
|
+
def as_markdown(obj: dict):
|
|
455
|
+
return "## Object\n\n" + "\n".join([f" * {k}: {v}" for k, v in obj.items()])
|
|
456
|
+
|
|
457
|
+
return "\n\n".join([as_markdown(obj) for obj in data]) if isinstance(data, list) else as_markdown(data)
|
|
338
458
|
elif format == Format.TABLE:
|
|
339
459
|
from tabulate import tabulate
|
|
460
|
+
|
|
340
461
|
return tabulate(pd.DataFrame(data), headers="keys", tablefmt="psql")
|
|
341
462
|
elif format == Format.YAML:
|
|
342
463
|
if isinstance(data, list):
|
|
@@ -401,4 +522,4 @@ def split_document(doc: str, delimiter: str):
|
|
|
401
522
|
:param delimiter: The delimiter.
|
|
402
523
|
:return: The parts of the document.
|
|
403
524
|
"""
|
|
404
|
-
return doc.split(delimiter)
|
|
525
|
+
return doc.split(delimiter)
|
linkml_store/utils/llm_utils.py
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import logging
|
|
2
|
-
from typing import Callable, List, Optional
|
|
2
|
+
from typing import TYPE_CHECKING, Callable, List, Optional
|
|
3
3
|
|
|
4
4
|
if TYPE_CHECKING:
|
|
5
5
|
import tiktoken
|
|
@@ -76,6 +76,7 @@ def render_formatted_text(
|
|
|
76
76
|
return text
|
|
77
77
|
if not values:
|
|
78
78
|
raise ValueError(f"Cannot fit text into token limit: {text_length} > {token_limit}")
|
|
79
|
+
# remove last element and try again
|
|
79
80
|
return render_formatted_text(render_func, values[0:-1], encoding=encoding, token_limit=token_limit)
|
|
80
81
|
|
|
81
82
|
|
|
@@ -104,6 +105,7 @@ def get_token_limit(model_name: str) -> int:
|
|
|
104
105
|
|
|
105
106
|
def parse_yaml_payload(yaml_str: str, strict=False) -> Optional[dict]:
|
|
106
107
|
import yaml
|
|
108
|
+
|
|
107
109
|
if "```" in yaml_str:
|
|
108
110
|
yaml_str = yaml_str.split("```")[1].strip()
|
|
109
111
|
if yaml_str.startswith("yaml"):
|
|
@@ -114,4 +116,4 @@ def parse_yaml_payload(yaml_str: str, strict=False) -> Optional[dict]:
|
|
|
114
116
|
if strict:
|
|
115
117
|
raise e
|
|
116
118
|
logger.error(f"Error parsing YAML: {yaml_str}\n{e}")
|
|
117
|
-
return None
|
|
119
|
+
return None
|
|
@@ -83,15 +83,21 @@ def object_path_get(obj: Union[BaseModel, Dict[str, Any]], path: str, default_va
|
|
|
83
83
|
'NA'
|
|
84
84
|
"""
|
|
85
85
|
if isinstance(obj, BaseModel):
|
|
86
|
-
obj = obj.
|
|
86
|
+
obj = obj.model_dump()
|
|
87
87
|
parts = path.split(".")
|
|
88
88
|
for part in parts:
|
|
89
89
|
if "[" in part:
|
|
90
90
|
key, index = part[:-1].split("[")
|
|
91
91
|
index = int(index)
|
|
92
|
-
obj
|
|
92
|
+
if key in obj and obj[key] is not None:
|
|
93
|
+
obj = obj[key][index]
|
|
94
|
+
else:
|
|
95
|
+
return default_value
|
|
93
96
|
else:
|
|
94
|
-
|
|
97
|
+
if isinstance(obj, list):
|
|
98
|
+
obj = [v1.get(part, default_value) for v1 in obj]
|
|
99
|
+
else:
|
|
100
|
+
obj = obj.get(part, default_value)
|
|
95
101
|
return obj
|
|
96
102
|
|
|
97
103
|
|
|
@@ -56,7 +56,7 @@ def nested_objects_to_dataframe(data: List[Dict[str, Any]]) -> pd.DataFrame:
|
|
|
56
56
|
|
|
57
57
|
|
|
58
58
|
def facet_summary_to_dataframe_unmelted(
|
|
59
|
-
facet_summary: Dict[Union[str, Tuple[str, ...]], List[Tuple[Union[str, Tuple[str, ...]], int]]]
|
|
59
|
+
facet_summary: Dict[Union[str, Tuple[str, ...]], List[Tuple[Union[str, Tuple[str, ...]], int]]],
|
|
60
60
|
) -> pd.DataFrame:
|
|
61
61
|
rows = []
|
|
62
62
|
|
linkml_store/utils/sql_utils.py
CHANGED
|
@@ -116,7 +116,7 @@ def facet_count_sql(query: Query, facet_column: Union[str, Tuple[str, ...]], mul
|
|
|
116
116
|
modified_where = " AND ".join(conditions)
|
|
117
117
|
|
|
118
118
|
def make_col_safe(col):
|
|
119
|
-
return '"' + quoted_name(col, True) + '"' if
|
|
119
|
+
return '"' + quoted_name(col, True) + '"' if " " in col else col
|
|
120
120
|
|
|
121
121
|
if isinstance(facet_column, str):
|
|
122
122
|
facet_column = make_col_safe(facet_column)
|
|
@@ -8,6 +8,7 @@ logger = logging.getLogger(__name__)
|
|
|
8
8
|
|
|
9
9
|
LOL = List[List[float]]
|
|
10
10
|
|
|
11
|
+
|
|
11
12
|
def pairwise_cosine_similarity(vector1: np.array, vector2: np.array) -> float:
|
|
12
13
|
"""
|
|
13
14
|
Calculate the cosine similarity between two vectors.
|
|
@@ -77,9 +78,7 @@ def top_matches(cosine_similarity_matrix: np.ndarray) -> Tuple[np.ndarray, np.nd
|
|
|
77
78
|
return top_match_indices, top_match_values
|
|
78
79
|
|
|
79
80
|
|
|
80
|
-
def top_n_matches(
|
|
81
|
-
cosine_similarity_matrix: np.ndarray, n: int = 10
|
|
82
|
-
) -> Tuple[np.ndarray, np.ndarray]:
|
|
81
|
+
def top_n_matches(cosine_similarity_matrix: np.ndarray, n: int = 10) -> Tuple[np.ndarray, np.ndarray]:
|
|
83
82
|
# Find the indices that would sort each row in descending order
|
|
84
83
|
sorted_indices = np.argsort(-cosine_similarity_matrix, axis=1)
|
|
85
84
|
|
|
@@ -136,10 +135,7 @@ def mmr_diversified_search(
|
|
|
136
135
|
max_sim_to_selected = max(
|
|
137
136
|
[
|
|
138
137
|
np.dot(document_vectors[idx], document_vectors[s])
|
|
139
|
-
/ (
|
|
140
|
-
np.linalg.norm(document_vectors[idx])
|
|
141
|
-
* np.linalg.norm(document_vectors[s])
|
|
142
|
-
)
|
|
138
|
+
/ (np.linalg.norm(document_vectors[idx]) * np.linalg.norm(document_vectors[s]))
|
|
143
139
|
for s in selected_indices
|
|
144
140
|
]
|
|
145
141
|
)
|
|
@@ -160,6 +156,3 @@ def mmr_diversified_search(
|
|
|
160
156
|
selected_indices.add(best_index)
|
|
161
157
|
|
|
162
158
|
return result_indices
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: linkml-store
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.10rc1
|
|
4
4
|
Summary: linkml-store
|
|
5
5
|
License: MIT
|
|
6
6
|
Author: Author 1
|
|
@@ -24,6 +24,7 @@ Provides-Extra: map
|
|
|
24
24
|
Provides-Extra: mongodb
|
|
25
25
|
Provides-Extra: neo4j
|
|
26
26
|
Provides-Extra: pyarrow
|
|
27
|
+
Provides-Extra: rdf
|
|
27
28
|
Provides-Extra: renderer
|
|
28
29
|
Provides-Extra: scipy
|
|
29
30
|
Provides-Extra: tests
|
|
@@ -39,6 +40,7 @@ Requires-Dist: h5py ; extra == "h5py"
|
|
|
39
40
|
Requires-Dist: jinja2 (>=3.1.4,<4.0.0)
|
|
40
41
|
Requires-Dist: jsonlines (>=4.0.0,<5.0.0)
|
|
41
42
|
Requires-Dist: jsonpatch (>=1.33)
|
|
43
|
+
Requires-Dist: lightrdf ; extra == "rdf"
|
|
42
44
|
Requires-Dist: linkml (>=1.8.0) ; extra == "validation"
|
|
43
45
|
Requires-Dist: linkml-runtime (>=1.8.0)
|
|
44
46
|
Requires-Dist: linkml_map ; extra == "map"
|
|
@@ -1,71 +1,76 @@
|
|
|
1
1
|
linkml_store/__init__.py,sha256=jlU6WOUAn8cKIhzbTULmBTWpW9gZdEt7q_RI6KZN1bY,118
|
|
2
2
|
linkml_store/api/__init__.py,sha256=3CelcFEFz0y3MkQAzhQ9JxHIt1zFk6nYZxSmYTo8YZE,226
|
|
3
|
-
linkml_store/api/client.py,sha256
|
|
4
|
-
linkml_store/api/collection.py,sha256=
|
|
3
|
+
linkml_store/api/client.py,sha256=I2kCSMQ-HS0EByJHfewsRbunNYfuZ9JoZv8AXj7Ho48,12970
|
|
4
|
+
linkml_store/api/collection.py,sha256=zmMGequFf9WmoNgkd1_cuydInRe_aTqJvmuybizKjO8,43118
|
|
5
5
|
linkml_store/api/config.py,sha256=pOz210JIwkEEXtfjcsZBp1UEedkBu8RkH62Qa1b4exI,5777
|
|
6
|
-
linkml_store/api/database.py,sha256=
|
|
6
|
+
linkml_store/api/database.py,sha256=W0ootSLm4MGTHexR-De_GvBFlsio00KwkoNksSbpmso,30442
|
|
7
7
|
linkml_store/api/queries.py,sha256=tx9fgGY5fC_2ZbIvg4BqTK_MXJwA_DI4mxr8HdQ6Vos,2075
|
|
8
8
|
linkml_store/api/stores/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
9
9
|
linkml_store/api/stores/chromadb/__init__.py,sha256=e9BkOPuPnVQKA5PRKDulag59yGNHDP3U2_DnPSrFAKM,132
|
|
10
10
|
linkml_store/api/stores/chromadb/chromadb_collection.py,sha256=RQUZx5oeotkzNihg-dlSevkiTiKY1d9x0bS63HF80W4,4270
|
|
11
11
|
linkml_store/api/stores/chromadb/chromadb_database.py,sha256=dZA3LQE8-ZMhJQOzsUFyxehnKpFF7adR182aggfkaFY,3205
|
|
12
12
|
linkml_store/api/stores/duckdb/__init__.py,sha256=rbQSDgNg-fdvi6-pHGYkJTST4p1qXUZBf9sFSsO3KPk,387
|
|
13
|
-
linkml_store/api/stores/duckdb/duckdb_collection.py,sha256=
|
|
14
|
-
linkml_store/api/stores/duckdb/duckdb_database.py,sha256=
|
|
13
|
+
linkml_store/api/stores/duckdb/duckdb_collection.py,sha256=AW7YhHdegHdbcAB1Lnr1WNI9VUAxRyMd3oHMnzfsLuQ,15057
|
|
14
|
+
linkml_store/api/stores/duckdb/duckdb_database.py,sha256=R2NB9r5WgYc5CTKaiXwK_BS-C0RO6WLTlG8EooCzTuk,10886
|
|
15
15
|
linkml_store/api/stores/duckdb/mappings.py,sha256=tDce3W1Apwammhf4LS6cRJ0m4NiJ0eB7vOI_4U5ETY8,148
|
|
16
|
-
linkml_store/api/stores/filesystem/__init__.py,sha256=
|
|
16
|
+
linkml_store/api/stores/filesystem/__init__.py,sha256=rD6nsZLkMphS4EQSrGtjirYD32ENRIqv7Kllm5CLBMY,346
|
|
17
17
|
linkml_store/api/stores/filesystem/filesystem_collection.py,sha256=9gqY2KRZsn_RWk4eKkxFd3_wcxs5YaXvcBI7GGJBMGE,6751
|
|
18
|
-
linkml_store/api/stores/filesystem/filesystem_database.py,sha256=
|
|
18
|
+
linkml_store/api/stores/filesystem/filesystem_database.py,sha256=Ich707bWzgeq3tdv37wLLkM4Kb3lr4w3T1iftvbMqdw,2883
|
|
19
19
|
linkml_store/api/stores/hdf5/__init__.py,sha256=l4cIh3v7P0nPbwGIsfuCMD_serQ8q8c7iuUA9W2Jb4o,97
|
|
20
20
|
linkml_store/api/stores/hdf5/hdf5_collection.py,sha256=mnpLMYehn3PuaIjp2dXrIWu8jh-bdQ84X2Ku83jMdEY,3805
|
|
21
21
|
linkml_store/api/stores/hdf5/hdf5_database.py,sha256=EZbjrpaqiNDEFvoD5dZNcGBXA8z6HRNL81emueTZWNw,2714
|
|
22
22
|
linkml_store/api/stores/mongodb/__init__.py,sha256=OSFCr7RQlDEe-O-Y0P_i912oAMK-L3pC7Cnj7sxlwAk,510
|
|
23
|
-
linkml_store/api/stores/mongodb/mongodb_collection.py,sha256=
|
|
24
|
-
linkml_store/api/stores/mongodb/mongodb_database.py,sha256=
|
|
23
|
+
linkml_store/api/stores/mongodb/mongodb_collection.py,sha256=lR18BdaVUbuJDIltuL42MnGJWyMa28XFi_x1PHb3u0M,14884
|
|
24
|
+
linkml_store/api/stores/mongodb/mongodb_database.py,sha256=Lr47vVaJv_cgTCc2ArEma9R5T0agR_haaCJB6BageyI,4112
|
|
25
25
|
linkml_store/api/stores/neo4j/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
26
26
|
linkml_store/api/stores/neo4j/neo4j_collection.py,sha256=a-Az5_ypdBMgeNyhrTW7q-ik-vYPCDDONIK7N_CDA9c,17449
|
|
27
|
-
linkml_store/api/stores/neo4j/neo4j_database.py,sha256=
|
|
27
|
+
linkml_store/api/stores/neo4j/neo4j_database.py,sha256=QN6-iSshQwTk0GWDANmSCs8b_Oqd-KI5gI90nq82HWM,5574
|
|
28
28
|
linkml_store/api/stores/solr/__init__.py,sha256=aAfnaN9mZOiIDj1NYz0Ll9fZF2gG7UU_vhP4SNCL2d8,36
|
|
29
|
-
linkml_store/api/stores/solr/solr_collection.py,sha256=
|
|
29
|
+
linkml_store/api/stores/solr/solr_collection.py,sha256=rSCh9wzmP2ijD7St6xjhTKFeKszUBRg5ZvJjvvLkvLE,8869
|
|
30
30
|
linkml_store/api/stores/solr/solr_database.py,sha256=TFjqbY7jAkdrhAchbNg0E-mChSP7ogNwFExslbvX7Yo,2877
|
|
31
31
|
linkml_store/api/stores/solr/solr_utils.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
32
32
|
linkml_store/api/types.py,sha256=3aIQtDFMvsSmjuN5qrR2vNK5sHa6yzD_rEOPA6tHwvg,176
|
|
33
|
-
linkml_store/cli.py,sha256=
|
|
33
|
+
linkml_store/cli.py,sha256=OJbzxNlqHERUMrqMiznRjA_3tp5eXBA3w7cex0nVPhM,37663
|
|
34
34
|
linkml_store/constants.py,sha256=x4ZmDsfE9rZcL5WpA93uTKrRWzCD6GodYXviVzIvR38,112
|
|
35
35
|
linkml_store/graphs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
36
36
|
linkml_store/graphs/graph_map.py,sha256=bYRxv8n1YPnFqE9d6JKNmRawb8EAhsPlHhBue0gvtZE,712
|
|
37
37
|
linkml_store/index/__init__.py,sha256=6SQzDe-WZSSqbGNsbCDfyPTyz0s9ISDKw1dm9xgQuT4,1396
|
|
38
38
|
linkml_store/index/implementations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
39
|
-
linkml_store/index/implementations/llm_indexer.py,sha256=
|
|
39
|
+
linkml_store/index/implementations/llm_indexer.py,sha256=gGyl4j7AF72CyfJLKAMOUJOPhHwptS_0k8mcJ-t76zU,5911
|
|
40
40
|
linkml_store/index/implementations/simple_indexer.py,sha256=KnkFJtXTHnwjhD_D6ZK2rFhBID1dgCedcOVPEWAY2NU,1282
|
|
41
|
-
linkml_store/index/indexer.py,sha256=
|
|
41
|
+
linkml_store/index/indexer.py,sha256=YK715LJtoJY0fUaHBsS0kJs-Vs3sOug7biouIsfQsTo,7654
|
|
42
42
|
linkml_store/inference/__init__.py,sha256=b8NAFNZjOYU_8gOvxdyCyoiHOOl5Ai2ckKs1tv7ZkkY,342
|
|
43
43
|
linkml_store/inference/evaluation.py,sha256=YDFYaEu2QLSfFq4oyARrnKfTiPLtNF8irhhspgVDfdY,6013
|
|
44
44
|
linkml_store/inference/implementations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
45
|
-
linkml_store/inference/implementations/llm_inference_engine.py,sha256=
|
|
46
|
-
linkml_store/inference/implementations/rag_inference_engine.py,sha256=
|
|
45
|
+
linkml_store/inference/implementations/llm_inference_engine.py,sha256=qoMrzsEE5zDTHc6Y1nBQcSOYDjJETRqsZL7Zl7p3hLg,5407
|
|
46
|
+
linkml_store/inference/implementations/rag_inference_engine.py,sha256=xdf1WJ-e0G34Y_F4h4UzkLNF2TZjSfdNIUiYTP7xiZU,11276
|
|
47
47
|
linkml_store/inference/implementations/rule_based_inference_engine.py,sha256=0IEY_fsHJPJy6QKbYQU_qE87RRnPOXQxPuJKXCQG8jU,6250
|
|
48
|
-
linkml_store/inference/implementations/sklearn_inference_engine.py,sha256=
|
|
49
|
-
linkml_store/inference/inference_config.py,sha256=
|
|
50
|
-
linkml_store/inference/inference_engine.py,sha256=
|
|
48
|
+
linkml_store/inference/implementations/sklearn_inference_engine.py,sha256=_PiZom5i3ki9SmdqwF7SipHeLPK-Ai-vEiiuOfgNWd4,13516
|
|
49
|
+
linkml_store/inference/inference_config.py,sha256=bbYiWf9eYdjEDzpMK-k5AfrhyzZlotVxPLZtjnVsA5Q,2283
|
|
50
|
+
linkml_store/inference/inference_engine.py,sha256=r5Adx1ZOfe4eJ9XgMEYgXb9XhSDCzq7t4Sdvn4EXOUQ,7191
|
|
51
51
|
linkml_store/inference/inference_engine_registry.py,sha256=6o66gvBYBwdeAKm62zqqvfaBlcopVP_cla3L6uXGsHA,3015
|
|
52
|
+
linkml_store/plotting/__init__.py,sha256=8Wjpwjhtp1-Ci_B2gRVUZ8EI_hGxpuhXQPlUny5ZWC0,84
|
|
53
|
+
linkml_store/plotting/cli.py,sha256=rPTPwracoRq80vjMGeFghUf9r6MMYpibZ62fW85NrsI,7482
|
|
54
|
+
linkml_store/plotting/heatmap.py,sha256=uXnIpQyIPHGAk_sgSKKPWZpbBm8nuLEjQrfAJgIsMCc,13594
|
|
52
55
|
linkml_store/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
53
56
|
linkml_store/utils/change_utils.py,sha256=O2rvSvgTKB60reLLz9mX5OWykAA_m93bwnUh5ZWa0EY,471
|
|
57
|
+
linkml_store/utils/dat_parser.py,sha256=BY4QOQ5YSv6u5SIEXN5bLWCjcynBaC9Tndze0FwOP3M,3047
|
|
58
|
+
linkml_store/utils/enrichment_analyzer.py,sha256=KLVdw0zqnWKdfCiUwSuBm8f5g5gppiADIysHamMcnSg,7707
|
|
54
59
|
linkml_store/utils/file_utils.py,sha256=rQ7-XpmI6_Kx_dhEnI98muFRr0MmgI_kZ_9cgJBf_0I,1411
|
|
55
|
-
linkml_store/utils/format_utils.py,sha256=
|
|
60
|
+
linkml_store/utils/format_utils.py,sha256=ZKMNUYOTcKEWx0s5GBZSbe7-ncfHgiQ63jdig2tbxCg,16743
|
|
56
61
|
linkml_store/utils/io.py,sha256=JHUrWDtlZC2jtN_PQZ4ypdGIyYlftZEN3JaCvEPs44w,884
|
|
57
|
-
linkml_store/utils/llm_utils.py,sha256=
|
|
62
|
+
linkml_store/utils/llm_utils.py,sha256=N_Xo1CRPYfN1nKw_UUOxGJyl1IK2N8lJ6Zrh8mcZF8g,3536
|
|
58
63
|
linkml_store/utils/mongodb_utils.py,sha256=Rl1YmMKs1IXwSsJIViSDChbi0Oer5cBnMmjka2TeQS8,4665
|
|
59
64
|
linkml_store/utils/neo4j_utils.py,sha256=y3KPmDZ8mQmePgg0lUeKkeKqzEr2rV226xxEtHc5pRg,1266
|
|
60
|
-
linkml_store/utils/object_utils.py,sha256=
|
|
61
|
-
linkml_store/utils/pandas_utils.py,sha256=
|
|
65
|
+
linkml_store/utils/object_utils.py,sha256=s6GIcfEODI8oALL_-ohtTlW_jwCRL48KaP1FGp4YS9M,6596
|
|
66
|
+
linkml_store/utils/pandas_utils.py,sha256=ttkXGCJZcNhmy72SkY4ZfKbC-lyscpI74YLKznJ8AfM,3183
|
|
62
67
|
linkml_store/utils/patch_utils.py,sha256=q-h_v68okyruzdPTEHCe0WubbQHKpi1qy5bJ9vFWDo8,4823
|
|
63
68
|
linkml_store/utils/query_utils.py,sha256=HWt46BsGWoIGiNBTtvpXGY6onPRWsQky6eu_9cYqbvo,3440
|
|
64
69
|
linkml_store/utils/schema_utils.py,sha256=iJiZxo5NGr7v87h4DV6V9DrDOZHSswMRuf0N4V2rVtg,646
|
|
65
70
|
linkml_store/utils/sklearn_utils.py,sha256=itPpcrsbbyOazdjmivaaZ1lyZeytm0a0hJ2AS8ziUgg,7590
|
|
66
|
-
linkml_store/utils/sql_utils.py,sha256=
|
|
71
|
+
linkml_store/utils/sql_utils.py,sha256=GF4s51BP3WmnYuBgtUiwo3uXvYX_ypyrknk4a6tIoSE,6210
|
|
67
72
|
linkml_store/utils/stats_utils.py,sha256=4KqBb1bqDgAmq-1fJLLu5B2paPgoZZc3A-gnyVam4bI,1799
|
|
68
|
-
linkml_store/utils/vector_utils.py,sha256=
|
|
73
|
+
linkml_store/utils/vector_utils.py,sha256=ZJPRWz64jHMbH5sV1CaCZAAvA_kS1gTjhjnwLRXjKT8,5354
|
|
69
74
|
linkml_store/webapi/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
70
75
|
linkml_store/webapi/html/__init__.py,sha256=hwp5eeBJKH65Bvv1x9Z4vsT1tLSYtb9Dq4I9r1kL1q0,69
|
|
71
76
|
linkml_store/webapi/html/base.html.j2,sha256=hoiV2uaSxxrQp7VuAZBOHueH7czyJMYcPBRN6dZFYhk,693
|
|
@@ -74,8 +79,8 @@ linkml_store/webapi/html/database_details.html.j2,sha256=qtXdavbZb0mohiObI9dvJtk
|
|
|
74
79
|
linkml_store/webapi/html/databases.html.j2,sha256=a9BCWQYfPeFhdUd31CWhB0yWhTIFXQayO08JgjyqKoc,294
|
|
75
80
|
linkml_store/webapi/html/generic.html.j2,sha256=KtLaO2HUEF2Opq-OwHKgRKetNWe8IWc6JuIkxRPsywk,1018
|
|
76
81
|
linkml_store/webapi/main.py,sha256=B0Da575kKR7X88N9ykm99Dem8FyBAW9f-w3A_JwUzfw,29165
|
|
77
|
-
linkml_store-0.2.
|
|
78
|
-
linkml_store-0.2.
|
|
79
|
-
linkml_store-0.2.
|
|
80
|
-
linkml_store-0.2.
|
|
81
|
-
linkml_store-0.2.
|
|
82
|
+
linkml_store-0.2.10rc1.dist-info/LICENSE,sha256=77mDOslUnalYnuq9xQYZKtIoNEzcH9mIjvWHOKjamnE,1086
|
|
83
|
+
linkml_store-0.2.10rc1.dist-info/METADATA,sha256=ApfUFD87aguIxXb20QF_lPRSxenx0KhkHp9Ruw-l-3Y,7029
|
|
84
|
+
linkml_store-0.2.10rc1.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
|
85
|
+
linkml_store-0.2.10rc1.dist-info/entry_points.txt,sha256=gWxVsHqx-t-UKWFHFzawQTvs4is4vC1rCF5AeKyqWWk,101
|
|
86
|
+
linkml_store-0.2.10rc1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|