Spaces:
Running on CPU Upgrade
Running on CPU Upgrade
App: launch only when __main__; 2024 embeddings (extant/fossils), Euclidean NN, include predicted family in top 5; recompute script
Browse files- all_fossils_filtered_100.csv +0 -0
- app.py +125 -149
- closest_sample.py +204 -7
- fossil_responses_with_images.csv +0 -868
- fossils_paths.csv +0 -0
- recompute_embeddings_2024.py +100 -0
all_fossils_filtered_100.csv
DELETED
|
The diff for this file is too large to render.
See raw diff
|
|
|
app.py
CHANGED
|
@@ -225,13 +225,30 @@ def get_embeddings(input_image,model_name):
|
|
| 225 |
return None
|
| 226 |
|
| 227 |
|
| 228 |
-
def
|
| 229 |
-
|
| 230 |
-
|
| 231 |
-
|
| 232 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 233 |
return classes, paths, filenames
|
| 234 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 235 |
def generate_diagram_closest(input_image,model_name,top_k):
|
| 236 |
embedding = get_embeddings(input_image,model_name)
|
| 237 |
from closest_sample import get_diagram
|
|
@@ -486,7 +503,7 @@ def increase_brightness(img, value=30):
|
|
| 486 |
def update_display(image, specimen_id=""):
|
| 487 |
if image is None:
|
| 488 |
specimen_label = "**Specimen ID:** —"
|
| 489 |
-
return None, None, None, "Please upload or select an image first.", "Fossils 142", "Saliency", 10, 50, None, None, None, None, specimen_label
|
| 490 |
try:
|
| 491 |
print(f"DEBUG: update_display called with image type: {type(image)}")
|
| 492 |
if hasattr(image, 'shape'):
|
|
@@ -506,7 +523,7 @@ def update_display(image, specimen_id=""):
|
|
| 506 |
import traceback
|
| 507 |
traceback.print_exc()
|
| 508 |
specimen_label = "**Specimen ID:** —"
|
| 509 |
-
return None, None, None, f"Error processing image: {str(e)}", "Fossils 142", "Saliency", 10, 50, None, None, None, None, specimen_label
|
| 510 |
model_name = "Fossils 142"
|
| 511 |
|
| 512 |
# gr.Dropdown(
|
|
@@ -535,13 +552,11 @@ def update_display(image, specimen_id=""):
|
|
| 535 |
# gr.Slider(10,200,value=50,label="Number of Closest Samples for Distribution Chart",interactive=True,info="Choose between 10 and 200")
|
| 536 |
class_predicted = None
|
| 537 |
exp_gallery = None
|
| 538 |
-
# gr.Gallery(label="Explanation Heatmaps for top 5 predicted classes", show_label=False,elem_id="gallery",columns=[5], rows=[1],height='auto', allow_preview=True, preview=None)
|
| 539 |
closest_table = None
|
| 540 |
-
|
| 541 |
-
diagram= None
|
| 542 |
-
# gr.Image(label = 'Bar Chart')
|
| 543 |
specimen_label = f"**Specimen ID:** {specimen_id}" if specimen_id else "**Specimen ID:** — (uploaded image)"
|
| 544 |
-
return original_image,processed_image,processed_image,instruction,model_name,explain_method,sampling_size,top_k,class_predicted,exp_gallery,closest_table,diagram,specimen_label
|
| 545 |
def update_slider_visibility(explain_method):
|
| 546 |
bool = explain_method=="Rise"
|
| 547 |
return {sampling_size: gr.Slider(1, 5000, value=2000, label="Sampling Size in Rise", visible=bool, interactive=True)}
|
|
@@ -904,12 +919,20 @@ with gr.Blocks(theme='sudeepshouche/minimalist', css=custom_css) as demo:
|
|
| 904 |
# label_closest_image_4 = gr.Markdown('')
|
| 905 |
# closest_image_4 = gr.Image(label='Fifth Closest Image',image_mode='contain',width=200, height=200)
|
| 906 |
# find_closest_btn = gr.Button("Find Closest Images")
|
| 907 |
-
with gr.Accordion('Closest
|
| 908 |
-
gr.Markdown(
|
| 909 |
-
|
| 910 |
-
|
| 911 |
-
|
| 912 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 913 |
|
| 914 |
#segment_button.click(segment_image, inputs=input_image, outputs=segmented_image)
|
| 915 |
classify_image_button.click(classify_image, inputs=[original_image,model_name], outputs=class_predicted)
|
|
@@ -946,151 +969,104 @@ with gr.Blocks(theme='sudeepshouche/minimalist', css=custom_css) as demo:
|
|
| 946 |
generate_explanations.click(fn=update_exp_outputs, inputs=[original_image,model_name,explain_method,sampling_size,heatmap_alpha], outputs=[exp_gallery])
|
| 947 |
|
| 948 |
#find_closest_btn.click(find_closest, inputs=[input_image,model_name], outputs=[label_closest_image_0,label_closest_image_1,label_closest_image_2,label_closest_image_3,label_closest_image_4,closest_image_0,closest_image_1,closest_image_2,closest_image_3,closest_image_4])
|
| 949 |
-
def
|
| 950 |
-
|
| 951 |
-
|
| 952 |
-
|
|
|
|
| 953 |
table_html = """
|
| 954 |
<style>
|
| 955 |
-
.closest-images-table {
|
| 956 |
-
|
| 957 |
-
|
| 958 |
-
|
| 959 |
-
}
|
| 960 |
-
.
|
| 961 |
-
background-color: #f0f0f0;
|
| 962 |
-
padding: 12px;
|
| 963 |
-
text-align: left;
|
| 964 |
-
border: 1px solid #ddd;
|
| 965 |
-
font-weight: bold;
|
| 966 |
-
}
|
| 967 |
-
.closest-images-table td {
|
| 968 |
-
padding: 12px;
|
| 969 |
-
border: 1px solid #ddd;
|
| 970 |
-
vertical-align: middle;
|
| 971 |
-
}
|
| 972 |
-
.closest-images-table tr:nth-child(even) {
|
| 973 |
-
background-color: inherit;
|
| 974 |
-
}
|
| 975 |
-
.closest-images-table img {
|
| 976 |
-
max-width: 200px;
|
| 977 |
-
max-height: 200px;
|
| 978 |
-
object-fit: contain;
|
| 979 |
-
border-radius: 4px;
|
| 980 |
-
display: block;
|
| 981 |
-
margin: 0 auto;
|
| 982 |
-
}
|
| 983 |
-
.specimen-name {
|
| 984 |
-
font-size: 16px;
|
| 985 |
-
font-weight: bold;
|
| 986 |
-
color: #0066cc;
|
| 987 |
-
font-family: monospace;
|
| 988 |
-
}
|
| 989 |
-
.plant-family {
|
| 990 |
-
font-size: 14px;
|
| 991 |
-
font-weight: 500;
|
| 992 |
-
}
|
| 993 |
</style>
|
| 994 |
<table class="closest-images-table">
|
| 995 |
-
<thead>
|
| 996 |
-
<tr>
|
| 997 |
-
<th>Rank</th>
|
| 998 |
-
<th>Image</th>
|
| 999 |
-
<th>Plant Family</th>
|
| 1000 |
-
<th>Specimen Name</th>
|
| 1001 |
-
</tr>
|
| 1002 |
-
</thead>
|
| 1003 |
<tbody>
|
| 1004 |
"""
|
| 1005 |
-
|
| 1006 |
-
import os
|
| 1007 |
-
import base64
|
| 1008 |
-
from PIL import Image
|
| 1009 |
-
import numpy as np
|
| 1010 |
-
|
| 1011 |
for i in range(5):
|
| 1012 |
rank = i + 1
|
| 1013 |
-
# Handle image - convert to base64 for HTML display
|
| 1014 |
img_src = ""
|
| 1015 |
-
|
| 1016 |
-
|
| 1017 |
-
|
| 1018 |
-
|
| 1019 |
-
|
| 1020 |
-
|
| 1021 |
-
|
| 1022 |
-
|
| 1023 |
-
|
| 1024 |
-
|
| 1025 |
-
|
| 1026 |
-
|
| 1027 |
-
|
| 1028 |
-
|
| 1029 |
-
|
| 1030 |
-
|
| 1031 |
-
|
| 1032 |
-
|
| 1033 |
-
|
| 1034 |
-
|
| 1035 |
-
|
| 1036 |
-
|
| 1037 |
-
|
| 1038 |
-
|
| 1039 |
-
|
| 1040 |
-
|
| 1041 |
-
import io
|
| 1042 |
-
buffer = io.BytesIO()
|
| 1043 |
-
images[i].save(buffer, format='JPEG')
|
| 1044 |
-
img_base64 = base64.b64encode(buffer.getvalue()).decode('utf-8')
|
| 1045 |
-
img_src = f"data:image/jpeg;base64,{img_base64}"
|
| 1046 |
-
except Exception as e:
|
| 1047 |
-
print(f"Error converting PIL image: {e}")
|
| 1048 |
-
img_src = ""
|
| 1049 |
-
|
| 1050 |
-
plant_family = labels[i] if labels[i] else "Unknown"
|
| 1051 |
-
specimen_name = filenames[i] if (i < len(filenames) and filenames[i] and len(filenames[i]) > 0) else "N/A"
|
| 1052 |
-
|
| 1053 |
-
# Debug output
|
| 1054 |
-
print(f"DEBUG: Rank {rank} - Family: {plant_family}, Specimen: {specimen_name}, Image: {images[i]}")
|
| 1055 |
-
print(f"DEBUG: filenames array length: {len(filenames)}, filenames[{i}]: {filenames[i] if i < len(filenames) else 'OUT OF RANGE'}")
|
| 1056 |
-
|
| 1057 |
-
table_html += f"""
|
| 1058 |
-
<tr>
|
| 1059 |
-
<td style="text-align: center; font-weight: bold; width: 60px; font-size: 18px;">{rank}</td>
|
| 1060 |
-
<td style="text-align: center;">
|
| 1061 |
-
<img src="{img_src}" alt="Closest image {rank}" />
|
| 1062 |
-
<div style="margin-top: 8px; font-size: 12px; color: #666; word-break: break-all;">{specimen_name}</div>
|
| 1063 |
-
</td>
|
| 1064 |
-
<td class="plant-family">{plant_family}</td>
|
| 1065 |
-
<td class="specimen-name" style="word-break: break-all;">{specimen_name}</td>
|
| 1066 |
-
</tr>
|
| 1067 |
-
"""
|
| 1068 |
-
|
| 1069 |
-
table_html += """
|
| 1070 |
-
</tbody>
|
| 1071 |
-
</table>
|
| 1072 |
-
"""
|
| 1073 |
-
|
| 1074 |
return table_html
|
| 1075 |
|
| 1076 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1077 |
#classify_segmented_button.click(classify_image, inputs=[segmented_image,model_name], outputs=class_predicted)
|
| 1078 |
|
| 1079 |
generate_diagram.click(generate_diagram_closest, inputs=[original_image,model_name,top_k], outputs=diagram)
|
| 1080 |
|
| 1081 |
process_button.click(
|
| 1082 |
-
|
| 1083 |
-
|
| 1084 |
-
|
| 1085 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1086 |
|
| 1087 |
-
|
| 1088 |
-
|
| 1089 |
-
|
| 1090 |
-
|
| 1091 |
-
|
| 1092 |
-
|
| 1093 |
-
|
| 1094 |
-
|
| 1095 |
-
|
| 1096 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 225 |
return None
|
| 226 |
|
| 227 |
|
| 228 |
+
def _top_predicted_class(class_predicted):
|
| 229 |
+
"""Extract the top predicted class name from Gradio Label output (dict or list)."""
|
| 230 |
+
if not class_predicted:
|
| 231 |
+
return None
|
| 232 |
+
if isinstance(class_predicted, dict):
|
| 233 |
+
return next(iter(class_predicted), None)
|
| 234 |
+
if isinstance(class_predicted, list) and class_predicted:
|
| 235 |
+
item = class_predicted[0]
|
| 236 |
+
return item[0] if isinstance(item, (list, tuple)) else item
|
| 237 |
+
return None
|
| 238 |
+
|
| 239 |
+
|
| 240 |
+
def find_closest(input_image, model_name, predicted_class=None):
|
| 241 |
+
embedding = get_embeddings(input_image, model_name)
|
| 242 |
+
from closest_sample import get_images, get_images_fossils
|
| 243 |
+
classes, paths, filenames = get_images(embedding, model_name, predicted_class=predicted_class)
|
| 244 |
return classes, paths, filenames
|
| 245 |
|
| 246 |
+
|
| 247 |
+
def find_closest_fossils(input_image, model_name, predicted_class=None):
|
| 248 |
+
embedding = get_embeddings(input_image, model_name)
|
| 249 |
+
from closest_sample import get_images_fossils
|
| 250 |
+
return get_images_fossils(embedding, model_name, predicted_class=predicted_class)
|
| 251 |
+
|
| 252 |
def generate_diagram_closest(input_image,model_name,top_k):
|
| 253 |
embedding = get_embeddings(input_image,model_name)
|
| 254 |
from closest_sample import get_diagram
|
|
|
|
| 503 |
def update_display(image, specimen_id=""):
|
| 504 |
if image is None:
|
| 505 |
specimen_label = "**Specimen ID:** —"
|
| 506 |
+
return None, None, None, "Please upload or select an image first.", "Fossils 142", "Saliency", 10, 50, None, None, None, None, None, specimen_label
|
| 507 |
try:
|
| 508 |
print(f"DEBUG: update_display called with image type: {type(image)}")
|
| 509 |
if hasattr(image, 'shape'):
|
|
|
|
| 523 |
import traceback
|
| 524 |
traceback.print_exc()
|
| 525 |
specimen_label = "**Specimen ID:** —"
|
| 526 |
+
return None, None, None, f"Error processing image: {str(e)}", "Fossils 142", "Saliency", 10, 50, None, None, None, None, None, specimen_label
|
| 527 |
model_name = "Fossils 142"
|
| 528 |
|
| 529 |
# gr.Dropdown(
|
|
|
|
| 552 |
# gr.Slider(10,200,value=50,label="Number of Closest Samples for Distribution Chart",interactive=True,info="Choose between 10 and 200")
|
| 553 |
class_predicted = None
|
| 554 |
exp_gallery = None
|
|
|
|
| 555 |
closest_table = None
|
| 556 |
+
closest_fossils_table = None
|
| 557 |
+
diagram = None
|
|
|
|
| 558 |
specimen_label = f"**Specimen ID:** {specimen_id}" if specimen_id else "**Specimen ID:** — (uploaded image)"
|
| 559 |
+
return original_image, processed_image, processed_image, instruction, model_name, explain_method, sampling_size, top_k, class_predicted, exp_gallery, closest_table, closest_fossils_table, diagram, specimen_label
|
| 560 |
def update_slider_visibility(explain_method):
|
| 561 |
bool = explain_method=="Rise"
|
| 562 |
return {sampling_size: gr.Slider(1, 5000, value=2000, label="Sampling Size in Rise", visible=bool, interactive=True)}
|
|
|
|
| 919 |
# label_closest_image_4 = gr.Markdown('')
|
| 920 |
# closest_image_4 = gr.Image(label='Fifth Closest Image',image_mode='contain',width=200, height=200)
|
| 921 |
# find_closest_btn = gr.Button("Find Closest Images")
|
| 922 |
+
with gr.Accordion('Closest Extant Leaves'):
|
| 923 |
+
gr.Markdown(
|
| 924 |
+
"5 closest extant leaves (2024 dataset). **Ordered from most to least similar.** "
|
| 925 |
+
"Neighbors are chosen by *embedding* similarity (visual), not by predicted family; "
|
| 926 |
+
"if you ran **Classify Image** first, we try to include at least one from the top-predicted family when possible."
|
| 927 |
+
)
|
| 928 |
+
closest_table = gr.HTML(label="Closest Extant Table")
|
| 929 |
+
with gr.Accordion('Closest Fossils'):
|
| 930 |
+
gr.Markdown(
|
| 931 |
+
"5 closest fossil images (reference fossil dataset). **Ordered from most to least similar.** "
|
| 932 |
+
"Same logic: embedding similarity + at least one from predicted family when you have run Classify Image."
|
| 933 |
+
)
|
| 934 |
+
closest_fossils_table = gr.HTML(label="Closest Fossils Table")
|
| 935 |
+
find_closest_btn = gr.Button("Find Closest Images", icon="https://www.svgrepo.com/show/13672/play-button.svg")
|
| 936 |
|
| 937 |
#segment_button.click(segment_image, inputs=input_image, outputs=segmented_image)
|
| 938 |
classify_image_button.click(classify_image, inputs=[original_image,model_name], outputs=class_predicted)
|
|
|
|
| 969 |
generate_explanations.click(fn=update_exp_outputs, inputs=[original_image,model_name,explain_method,sampling_size,heatmap_alpha], outputs=[exp_gallery])
|
| 970 |
|
| 971 |
#find_closest_btn.click(find_closest, inputs=[input_image,model_name], outputs=[label_closest_image_0,label_closest_image_1,label_closest_image_2,label_closest_image_3,label_closest_image_4,closest_image_0,closest_image_1,closest_image_2,closest_image_3,closest_image_4])
|
| 972 |
+
def _closest_table_html(labels, images, filenames):
|
| 973 |
+
import os
|
| 974 |
+
import base64
|
| 975 |
+
import io
|
| 976 |
+
from PIL import Image
|
| 977 |
table_html = """
|
| 978 |
<style>
|
| 979 |
+
.closest-images-table { width: 100%; border-collapse: collapse; margin: 20px 0; }
|
| 980 |
+
.closest-images-table th { background-color: #f0f0f0; padding: 12px; text-align: left; border: 1px solid #ddd; font-weight: bold; }
|
| 981 |
+
.closest-images-table td { padding: 12px; border: 1px solid #ddd; vertical-align: middle; }
|
| 982 |
+
.closest-images-table img { max-width: 200px; max-height: 200px; object-fit: contain; border-radius: 4px; display: block; margin: 0 auto; }
|
| 983 |
+
.specimen-name { font-size: 16px; font-weight: bold; color: #0066cc; font-family: monospace; }
|
| 984 |
+
.plant-family { font-size: 14px; font-weight: 500; }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 985 |
</style>
|
| 986 |
<table class="closest-images-table">
|
| 987 |
+
<thead><tr><th>Rank (1 = most similar)</th><th>Image</th><th>Plant Family</th><th>Specimen Name</th></tr></thead>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 988 |
<tbody>
|
| 989 |
"""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 990 |
for i in range(5):
|
| 991 |
rank = i + 1
|
|
|
|
| 992 |
img_src = ""
|
| 993 |
+
if i < len(images):
|
| 994 |
+
if isinstance(images[i], str) and images[i] and os.path.exists(images[i]):
|
| 995 |
+
try:
|
| 996 |
+
with open(images[i], 'rb') as f:
|
| 997 |
+
img_src = f"data:image/jpeg;base64,{base64.b64encode(f.read()).decode('utf-8')}"
|
| 998 |
+
except Exception:
|
| 999 |
+
pass
|
| 1000 |
+
elif isinstance(images[i], np.ndarray):
|
| 1001 |
+
try:
|
| 1002 |
+
img = Image.fromarray(images[i])
|
| 1003 |
+
buf = io.BytesIO()
|
| 1004 |
+
img.save(buf, format='JPEG')
|
| 1005 |
+
img_src = f"data:image/jpeg;base64,{base64.b64encode(buf.getvalue()).decode('utf-8')}"
|
| 1006 |
+
except Exception:
|
| 1007 |
+
pass
|
| 1008 |
+
elif hasattr(images[i], 'save'):
|
| 1009 |
+
try:
|
| 1010 |
+
buf = io.BytesIO()
|
| 1011 |
+
images[i].save(buf, format='JPEG')
|
| 1012 |
+
img_src = f"data:image/jpeg;base64,{base64.b64encode(buf.getvalue()).decode('utf-8')}"
|
| 1013 |
+
except Exception:
|
| 1014 |
+
pass
|
| 1015 |
+
plant_family = labels[i] if i < len(labels) and labels[i] else "Unknown"
|
| 1016 |
+
specimen_name = filenames[i] if (i < len(filenames) and filenames[i]) else "N/A"
|
| 1017 |
+
table_html += f'<tr><td style="text-align: center; font-weight: bold; width: 60px; font-size: 18px;">{rank}</td><td style="text-align: center;"><img src="{img_src}" alt="Closest {rank}" /><div style="margin-top: 8px; font-size: 12px; color: #666; word-break: break-all;">{specimen_name}</div></td><td class="plant-family">{plant_family}</td><td class="specimen-name" style="word-break: break-all;">{specimen_name}</td></tr>'
|
| 1018 |
+
table_html += "</tbody></table>"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1019 |
return table_html
|
| 1020 |
|
| 1021 |
+
def update_closest_outputs(input_image, model_name, class_predicted):
|
| 1022 |
+
predicted_class = _top_predicted_class(class_predicted)
|
| 1023 |
+
extant_labels, extant_images, extant_filenames = find_closest(input_image, model_name, predicted_class=predicted_class)
|
| 1024 |
+
fossil_labels, fossil_images, fossil_filenames = find_closest_fossils(input_image, model_name, predicted_class=predicted_class)
|
| 1025 |
+
return _closest_table_html(extant_labels, extant_images, extant_filenames), _closest_table_html(fossil_labels, fossil_images, fossil_filenames)
|
| 1026 |
+
|
| 1027 |
+
find_closest_btn.click(fn=update_closest_outputs, inputs=[original_image, model_name, class_predicted], outputs=[closest_table, closest_fossils_table])
|
| 1028 |
#classify_segmented_button.click(classify_image, inputs=[segmented_image,model_name], outputs=class_predicted)
|
| 1029 |
|
| 1030 |
generate_diagram.click(generate_diagram_closest, inputs=[original_image,model_name,top_k], outputs=diagram)
|
| 1031 |
|
| 1032 |
process_button.click(
|
| 1033 |
+
fn=update_display,
|
| 1034 |
+
inputs=[input_image, specimen_id_state],
|
| 1035 |
+
outputs=[
|
| 1036 |
+
original_image,
|
| 1037 |
+
input_image,
|
| 1038 |
+
workbench_image,
|
| 1039 |
+
instruction_text,
|
| 1040 |
+
model_name,
|
| 1041 |
+
explain_method,
|
| 1042 |
+
sampling_size,
|
| 1043 |
+
top_k,
|
| 1044 |
+
class_predicted,
|
| 1045 |
+
exp_gallery,
|
| 1046 |
+
closest_table,
|
| 1047 |
+
closest_fossils_table,
|
| 1048 |
+
diagram,
|
| 1049 |
+
workbench_specimen_label,
|
| 1050 |
+
],
|
| 1051 |
+
)
|
| 1052 |
|
| 1053 |
+
|
| 1054 |
+
demo.queue() # manage multiple incoming requests
|
| 1055 |
+
|
| 1056 |
+
|
| 1057 |
+
def main():
|
| 1058 |
+
"""
|
| 1059 |
+
Entry point for running the Gradio app.
|
| 1060 |
+
|
| 1061 |
+
Kept separate so that other modules (e.g. embedding scripts) can safely
|
| 1062 |
+
import from this file (such as `get_model`) without launching the UI.
|
| 1063 |
+
"""
|
| 1064 |
+
if os.getenv("SYSTEM") == "spaces":
|
| 1065 |
+
demo.launch(width="40%", debug=True, prevent_thread_lock=False)
|
| 1066 |
+
# ,auth=(os.environ.get('USERNAME'), os.environ.get('PASSWORD'))
|
| 1067 |
+
else:
|
| 1068 |
+
demo.launch(debug=True, prevent_thread_lock=False)
|
| 1069 |
+
|
| 1070 |
+
|
| 1071 |
+
if __name__ == "__main__":
|
| 1072 |
+
main()
|
closest_sample.py
CHANGED
|
@@ -174,6 +174,68 @@ def pca_distance(pca, sample, embedding, top_k):
|
|
| 174 |
# Return exactly top_k neighbors (not top_k+1)
|
| 175 |
return filtered_indices[:top_k]
|
| 176 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 177 |
def return_paths(argsorted,files):
|
| 178 |
paths= []
|
| 179 |
for i in argsorted:
|
|
@@ -189,18 +251,42 @@ def download_public_image(url, destination_path):
|
|
| 189 |
else:
|
| 190 |
print(f"Failed to download image from bucket. Status code: {response.status_code}")
|
| 191 |
|
| 192 |
-
def get_images(embedding,model_name):
|
| 193 |
-
|
| 194 |
-
if model_name in ['Rock 170','Mummified 170']:
|
| 195 |
pca_fossils = load_pickle_safe('pca_fossils_170_finer.pkl')
|
| 196 |
pca_leaves = load_pickle_safe('pca_leaves_170_finer.pkl')
|
| 197 |
embedding_fossils = np.load('dataset/embedding_fossils_170_finer.npy')
|
| 198 |
-
#embedding_leaves = np.load('embedding_leaves.npy')
|
| 199 |
elif model_name in ['Fossils 142', 'Fossils BEiT']:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 200 |
pca_fossils = load_pickle_safe('pca_fossils_142_resnet.pkl')
|
| 201 |
pca_leaves = load_pickle_safe('pca_leaves_142_resnet.pkl')
|
| 202 |
embedding_fossils = np.load('dataset/embedding_fossils_142_finer.npy')
|
| 203 |
-
#embedding_leaves = np.load('embedding_leaves.npy')
|
| 204 |
else:
|
| 205 |
print(f'{model_name} not recognized')
|
| 206 |
raise ValueError(f'{model_name} not recognized')
|
|
@@ -236,7 +322,6 @@ def get_images(embedding,model_name):
|
|
| 236 |
# Extract the full specimen name from the original path using split('/')[-1]
|
| 237 |
# e.g., /gpfs/.../Fabaceae/Fabaceae_Robinia_lesquereuxi_Florissant_FLFO_002604B.jpg
|
| 238 |
# -> Fabaceae_Robinia_lesquereuxi_Florissant_FLFO_002604B.jpg (then remove extension)
|
| 239 |
-
import os
|
| 240 |
original_filename = path.split('/')[-1] # Get the last part of the path (filename)
|
| 241 |
full_specimen_name = os.path.splitext(original_filename)[0] # Remove extension
|
| 242 |
|
|
@@ -258,6 +343,83 @@ def get_images(embedding,model_name):
|
|
| 258 |
|
| 259 |
return classes, local_paths, filenames
|
| 260 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 261 |
def get_diagram(embedding,top_k,model_name):
|
| 262 |
|
| 263 |
if model_name in ['Rock 170','Mummified 170']:
|
|
@@ -266,10 +428,45 @@ def get_diagram(embedding,top_k,model_name):
|
|
| 266 |
embedding_fossils = np.load('dataset/embedding_fossils_170_finer.npy')
|
| 267 |
#embedding_leaves = np.load('embedding_leaves.npy')
|
| 268 |
elif model_name in ['Fossils 142', 'Fossils BEiT']:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 269 |
pca_fossils = load_pickle_safe('pca_fossils_142_resnet.pkl')
|
| 270 |
pca_leaves = load_pickle_safe('pca_leaves_142_resnet.pkl')
|
| 271 |
embedding_fossils = np.load('dataset/embedding_fossils_142_finer.npy')
|
| 272 |
-
#embedding_leaves = np.load('embedding_leaves.npy')
|
| 273 |
else:
|
| 274 |
print(f'{model_name} not recognized')
|
| 275 |
raise ValueError(f'{model_name} not recognized')
|
|
|
|
| 174 |
# Return exactly top_k neighbors (not top_k+1)
|
| 175 |
return filtered_indices[:top_k]
|
| 176 |
|
| 177 |
+
|
| 178 |
+
def pca_distance_simple(pca, sample, embedding, top_k):
|
| 179 |
+
"""
|
| 180 |
+
Nearest neighbors using plain Euclidean distance in embedding space
|
| 181 |
+
(no PCA projection), without fossils_pd filtering.
|
| 182 |
+
Used for 2024 Extant / fossil embeddings + paths list.
|
| 183 |
+
"""
|
| 184 |
+
sample = np.asarray(sample).reshape(-1)
|
| 185 |
+
embedding = np.asarray(embedding)
|
| 186 |
+
if embedding.ndim > 2:
|
| 187 |
+
embedding = embedding.reshape(-1, embedding.shape[-1])
|
| 188 |
+
embedding = _strip_label_column_if_present(embedding)
|
| 189 |
+
if embedding.ndim != 2:
|
| 190 |
+
raise ValueError(f"Expected 2D embedding array for neighbors, got shape {embedding.shape}")
|
| 191 |
+
# Euclidean distance in raw embedding space
|
| 192 |
+
distances = np.linalg.norm(embedding - sample, axis=1)
|
| 193 |
+
sorted_indices = np.argsort(distances)
|
| 194 |
+
return sorted_indices[:top_k]
|
| 195 |
+
|
| 196 |
+
|
| 197 |
+
def pca_distance_simple_with_predicted(
|
| 198 |
+
pca, sample, embedding, top_k, families, predicted_class
|
| 199 |
+
):
|
| 200 |
+
"""
|
| 201 |
+
Like pca_distance_simple (Euclidean in embedding space), but ensures at least one of the top_k is from
|
| 202 |
+
predicted_class when possible (so the top 5 can include the predicted family).
|
| 203 |
+
families: list of family label per embedding index; predicted_class: str or None.
|
| 204 |
+
"""
|
| 205 |
+
sample = np.asarray(sample).reshape(-1)
|
| 206 |
+
embedding = np.asarray(embedding)
|
| 207 |
+
if embedding.ndim > 2:
|
| 208 |
+
embedding = embedding.reshape(-1, embedding.shape[-1])
|
| 209 |
+
embedding = _strip_label_column_if_present(embedding)
|
| 210 |
+
if embedding.ndim != 2:
|
| 211 |
+
raise ValueError(f"Expected 2D embedding array for neighbors, got shape {embedding.shape}")
|
| 212 |
+
distances = np.linalg.norm(embedding - sample, axis=1)
|
| 213 |
+
sorted_indices = np.argsort(distances)
|
| 214 |
+
top_indices = list(sorted_indices[:top_k])
|
| 215 |
+
if not predicted_class or len(families) != len(distances):
|
| 216 |
+
return np.array(top_indices)
|
| 217 |
+
top_families = [families[i] for i in top_indices]
|
| 218 |
+
if predicted_class in top_families:
|
| 219 |
+
return np.array(top_indices)
|
| 220 |
+
in_class = [j for j in range(len(families)) if families[j] == predicted_class]
|
| 221 |
+
if not in_class:
|
| 222 |
+
return np.array(top_indices)
|
| 223 |
+
best_in_class = in_class[np.argmin(distances[in_class])]
|
| 224 |
+
# Replace worst of top_k with closest from predicted class, then re-sort by distance
|
| 225 |
+
result = top_indices[: top_k - 1] + [best_in_class]
|
| 226 |
+
result = [result[i] for i in np.argsort(distances[result])]
|
| 227 |
+
return np.array(result)
|
| 228 |
+
|
| 229 |
+
|
| 230 |
+
def _load_2024_paths(paths_txt):
|
| 231 |
+
"""Load paths from 2024 paths file (one path per line)."""
|
| 232 |
+
for candidate in (os.path.join(os.path.dirname(__file__), paths_txt), paths_txt):
|
| 233 |
+
if os.path.isfile(candidate):
|
| 234 |
+
with open(candidate, "r", encoding="utf-8") as f:
|
| 235 |
+
return [line.strip() for line in f if line.strip()]
|
| 236 |
+
return None
|
| 237 |
+
|
| 238 |
+
|
| 239 |
def return_paths(argsorted,files):
|
| 240 |
paths= []
|
| 241 |
for i in argsorted:
|
|
|
|
| 251 |
else:
|
| 252 |
print(f"Failed to download image from bucket. Status code: {response.status_code}")
|
| 253 |
|
| 254 |
+
def get_images(embedding, model_name, predicted_class=None):
|
| 255 |
+
if model_name in ['Rock 170', 'Mummified 170']:
|
|
|
|
| 256 |
pca_fossils = load_pickle_safe('pca_fossils_170_finer.pkl')
|
| 257 |
pca_leaves = load_pickle_safe('pca_leaves_170_finer.pkl')
|
| 258 |
embedding_fossils = np.load('dataset/embedding_fossils_170_finer.npy')
|
|
|
|
| 259 |
elif model_name in ['Fossils 142', 'Fossils BEiT']:
|
| 260 |
+
emb_2024_npy = os.path.join(os.path.dirname(__file__), "dataset", "embedding_fossils_142_2024.npy")
|
| 261 |
+
emb_2024_txt = "dataset/embedding_fossils_142_2024_paths.txt"
|
| 262 |
+
paths_2024 = _load_2024_paths(emb_2024_txt)
|
| 263 |
+
if paths_2024 and os.path.isfile(emb_2024_npy):
|
| 264 |
+
embedding_fossils_2024 = np.load(emb_2024_npy)
|
| 265 |
+
if len(paths_2024) == len(embedding_fossils_2024):
|
| 266 |
+
pca_fossils = load_pickle_safe('pca_fossils_142_resnet.pkl')
|
| 267 |
+
families = []
|
| 268 |
+
for path in paths_2024:
|
| 269 |
+
parts = [p for p in path.replace("\\", "/").split("/") if p]
|
| 270 |
+
families.append(parts[-2] if len(parts) >= 2 else "Unknown")
|
| 271 |
+
if predicted_class:
|
| 272 |
+
pca_d = pca_distance_simple_with_predicted(
|
| 273 |
+
pca_fossils, embedding, embedding_fossils_2024, 5, families, predicted_class
|
| 274 |
+
)
|
| 275 |
+
else:
|
| 276 |
+
pca_d = pca_distance_simple(pca_fossils, embedding, embedding_fossils_2024, top_k=5)
|
| 277 |
+
local_paths = []
|
| 278 |
+
classes = []
|
| 279 |
+
filenames = []
|
| 280 |
+
for i, idx in enumerate(pca_d):
|
| 281 |
+
path = paths_2024[idx]
|
| 282 |
+
local_paths.append(path if os.path.isfile(path) else "")
|
| 283 |
+
filenames.append(os.path.splitext(os.path.basename(path))[0])
|
| 284 |
+
parts = [p for p in path.replace("\\", "/").split("/") if p]
|
| 285 |
+
classes.append(parts[-2] if len(parts) >= 2 else "Unknown")
|
| 286 |
+
return classes, local_paths, filenames
|
| 287 |
pca_fossils = load_pickle_safe('pca_fossils_142_resnet.pkl')
|
| 288 |
pca_leaves = load_pickle_safe('pca_leaves_142_resnet.pkl')
|
| 289 |
embedding_fossils = np.load('dataset/embedding_fossils_142_finer.npy')
|
|
|
|
| 290 |
else:
|
| 291 |
print(f'{model_name} not recognized')
|
| 292 |
raise ValueError(f'{model_name} not recognized')
|
|
|
|
| 322 |
# Extract the full specimen name from the original path using split('/')[-1]
|
| 323 |
# e.g., /gpfs/.../Fabaceae/Fabaceae_Robinia_lesquereuxi_Florissant_FLFO_002604B.jpg
|
| 324 |
# -> Fabaceae_Robinia_lesquereuxi_Florissant_FLFO_002604B.jpg (then remove extension)
|
|
|
|
| 325 |
original_filename = path.split('/')[-1] # Get the last part of the path (filename)
|
| 326 |
full_specimen_name = os.path.splitext(original_filename)[0] # Remove extension
|
| 327 |
|
|
|
|
| 343 |
|
| 344 |
return classes, local_paths, filenames
|
| 345 |
|
| 346 |
+
|
| 347 |
+
def get_images_fossils(embedding, model_name, predicted_class=None):
|
| 348 |
+
"""
|
| 349 |
+
Use 2024 fossil embeddings (from fossils path) when available;
|
| 350 |
+
otherwise fall back to original finer.npy + fossils_pd + GCS. Fossils 142 / BEiT only.
|
| 351 |
+
When predicted_class is set, ensures at least one of the top 5 is from that family when possible.
|
| 352 |
+
"""
|
| 353 |
+
if model_name not in ['Fossils 142', 'Fossils BEiT']:
|
| 354 |
+
return ["—"] * 5, [""] * 5, [""] * 5
|
| 355 |
+
|
| 356 |
+
emb_fossils_npy = os.path.join(os.path.dirname(__file__), "dataset", "embedding_fossils_142_2024_fossils.npy")
|
| 357 |
+
emb_fossils_txt = "dataset/embedding_fossils_142_2024_fossils_paths.txt"
|
| 358 |
+
paths_fossils = _load_2024_paths(emb_fossils_txt)
|
| 359 |
+
if paths_fossils and os.path.isfile(emb_fossils_npy):
|
| 360 |
+
embedding_fossils_2024 = np.load(emb_fossils_npy)
|
| 361 |
+
if len(paths_fossils) == len(embedding_fossils_2024):
|
| 362 |
+
pca_fossils = load_pickle_safe('pca_fossils_142_resnet.pkl')
|
| 363 |
+
families = []
|
| 364 |
+
for path in paths_fossils:
|
| 365 |
+
parts = [p for p in path.replace("\\", "/").split("/") if p]
|
| 366 |
+
families.append(parts[-2] if len(parts) >= 2 else "Unknown")
|
| 367 |
+
if predicted_class:
|
| 368 |
+
pca_d = pca_distance_simple_with_predicted(
|
| 369 |
+
pca_fossils, embedding, embedding_fossils_2024, 5, families, predicted_class
|
| 370 |
+
)
|
| 371 |
+
else:
|
| 372 |
+
pca_d = pca_distance_simple(pca_fossils, embedding, embedding_fossils_2024, top_k=5)
|
| 373 |
+
local_paths = []
|
| 374 |
+
classes = []
|
| 375 |
+
filenames = []
|
| 376 |
+
for idx in pca_d:
|
| 377 |
+
path = paths_fossils[idx]
|
| 378 |
+
local_paths.append(path if os.path.isfile(path) else "")
|
| 379 |
+
filenames.append(os.path.splitext(os.path.basename(path))[0])
|
| 380 |
+
parts = [p for p in path.replace("\\", "/").split("/") if p]
|
| 381 |
+
classes.append(parts[-2] if len(parts) >= 2 else "Unknown")
|
| 382 |
+
return classes, local_paths, filenames
|
| 383 |
+
|
| 384 |
+
# Fallback: original fossil set + GCS
|
| 385 |
+
pca_fossils = load_pickle_safe('pca_fossils_142_resnet.pkl')
|
| 386 |
+
embedding_fossils = np.load('dataset/embedding_fossils_142_finer.npy')
|
| 387 |
+
pca_d = pca_distance(pca_fossils, embedding, embedding_fossils, top_k=5)
|
| 388 |
+
fossils_paths = fossils_pd['file_name'].values
|
| 389 |
+
paths = return_paths(pca_d, fossils_paths)
|
| 390 |
+
|
| 391 |
+
folder_florissant = 'https://storage.googleapis.com/serrelab/prj_fossils/2024/Florissant_Fossil_v2.0/'
|
| 392 |
+
folder_general = 'https://storage.googleapis.com/serrelab/prj_fossils/2024/General_Fossil_v2.0/'
|
| 393 |
+
|
| 394 |
+
local_paths = []
|
| 395 |
+
classes = []
|
| 396 |
+
filenames = []
|
| 397 |
+
for i, path in enumerate(paths):
|
| 398 |
+
local_file_path = f'fossil_image_{i}.jpg'
|
| 399 |
+
public_path = None
|
| 400 |
+
if 'Florissant_Fossil/512/full/jpg/' in path:
|
| 401 |
+
public_path = path.replace('/gpfs/data/tserre/irodri15/Fossils/new_data/leavesdb-v1_1/images/Fossil/Florissant_Fossil/512/full/jpg/', folder_florissant)
|
| 402 |
+
elif 'General_Fossil/512/full/jpg/' in path:
|
| 403 |
+
public_path = path.replace('/gpfs/data/tserre/irodri15/Fossils/new_data/leavesdb-v1_1/images/Fossil/General_Fossil/512/full/jpg/', folder_general)
|
| 404 |
+
else:
|
| 405 |
+
filenames.append("")
|
| 406 |
+
classes.append("Unknown")
|
| 407 |
+
local_paths.append("")
|
| 408 |
+
continue
|
| 409 |
+
original_filename = path.split('/')[-1]
|
| 410 |
+
full_specimen_name = os.path.splitext(original_filename)[0]
|
| 411 |
+
download_public_image(public_path, local_file_path)
|
| 412 |
+
filenames.append(full_specimen_name)
|
| 413 |
+
parts = [part for part in public_path.split('/') if part]
|
| 414 |
+
classes.append(parts[-2])
|
| 415 |
+
local_paths.append(local_file_path)
|
| 416 |
+
while len(classes) < 5:
|
| 417 |
+
classes.append("—")
|
| 418 |
+
local_paths.append("")
|
| 419 |
+
filenames.append("")
|
| 420 |
+
return classes, local_paths, filenames
|
| 421 |
+
|
| 422 |
+
|
| 423 |
def get_diagram(embedding,top_k,model_name):
|
| 424 |
|
| 425 |
if model_name in ['Rock 170','Mummified 170']:
|
|
|
|
| 428 |
embedding_fossils = np.load('dataset/embedding_fossils_170_finer.npy')
|
| 429 |
#embedding_leaves = np.load('embedding_leaves.npy')
|
| 430 |
elif model_name in ['Fossils 142', 'Fossils BEiT']:
|
| 431 |
+
emb_2024_npy = os.path.join(os.path.dirname(__file__), "dataset", "embedding_fossils_142_2024.npy")
|
| 432 |
+
emb_2024_txt = "dataset/embedding_fossils_142_2024_paths.txt"
|
| 433 |
+
paths_2024 = _load_2024_paths(emb_2024_txt)
|
| 434 |
+
if paths_2024 and os.path.isfile(emb_2024_npy):
|
| 435 |
+
embedding_fossils_2024 = np.load(emb_2024_npy)
|
| 436 |
+
if len(paths_2024) == len(embedding_fossils_2024):
|
| 437 |
+
pca_fossils = load_pickle_safe('pca_fossils_142_resnet.pkl')
|
| 438 |
+
pca_d = pca_distance_simple(pca_fossils, embedding, embedding_fossils_2024, top_k=top_k)
|
| 439 |
+
classes = []
|
| 440 |
+
for idx in pca_d:
|
| 441 |
+
path = paths_2024[idx]
|
| 442 |
+
parts = [p for p in path.replace("\\", "/").split("/") if p]
|
| 443 |
+
classes.append(parts[-2] if len(parts) >= 2 else "Unknown")
|
| 444 |
+
class_counts = Counter(classes)
|
| 445 |
+
if not class_counts:
|
| 446 |
+
fig, ax = plt.subplots()
|
| 447 |
+
ax.text(0.5, 0.5, "No valid neighbors available", ha="center", va="center")
|
| 448 |
+
ax.axis("off")
|
| 449 |
+
diagram_path = "class_distribution_chart.png"
|
| 450 |
+
plt.savefig(diagram_path)
|
| 451 |
+
plt.close()
|
| 452 |
+
return diagram_path
|
| 453 |
+
sorted_class_counts = sorted(class_counts.items(), key=lambda item: item[1], reverse=True)
|
| 454 |
+
sorted_classes, sorted_frequencies = zip(*sorted_class_counts)
|
| 455 |
+
colors = plt.cm.viridis(np.linspace(0, 1, len(sorted_classes)))
|
| 456 |
+
fig, ax = plt.subplots()
|
| 457 |
+
ax.bar(sorted_classes, sorted_frequencies, color=colors)
|
| 458 |
+
ax.set_xlabel('Plant Family')
|
| 459 |
+
ax.set_ylabel('Frequency')
|
| 460 |
+
ax.set_title('Distribution of Plant Family of '+str(top_k) +' Closest Samples')
|
| 461 |
+
ax.set_xticklabels(sorted_classes, rotation=45, ha='right')
|
| 462 |
+
diagram_path = 'class_distribution_chart.png'
|
| 463 |
+
plt.tight_layout()
|
| 464 |
+
plt.savefig(diagram_path)
|
| 465 |
+
plt.close()
|
| 466 |
+
return diagram_path
|
| 467 |
pca_fossils = load_pickle_safe('pca_fossils_142_resnet.pkl')
|
| 468 |
pca_leaves = load_pickle_safe('pca_leaves_142_resnet.pkl')
|
| 469 |
embedding_fossils = np.load('dataset/embedding_fossils_142_finer.npy')
|
|
|
|
| 470 |
else:
|
| 471 |
print(f'{model_name} not recognized')
|
| 472 |
raise ValueError(f'{model_name} not recognized')
|
fossil_responses_with_images.csv
DELETED
|
@@ -1,868 +0,0 @@
|
|
| 1 |
-
Serial Number,Fossil Name,User Selection,Image URL
|
| 2 |
-
2,CU_0387cu,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0387cu/image.jpg"", ""View Image"")"
|
| 3 |
-
3,FLFO_002787A,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_002787A/image.jpg"", ""View Image"")"
|
| 4 |
-
7,CU_0761cu,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0761cu/image.jpg"", ""View Image"")"
|
| 5 |
-
9,FLFO_010163A,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_010163A/image.jpg"", ""View Image"")"
|
| 6 |
-
10,CU_0814cu,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0814cu/image.jpg"", ""View Image"")"
|
| 7 |
-
11,CU_0301cu,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0301cu/image.jpg"", ""View Image"")"
|
| 8 |
-
13,CU_0803,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0803/image.jpg"", ""View Image"")"
|
| 9 |
-
16,FLFO_003196,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_003196/image.jpg"", ""View Image"")"
|
| 10 |
-
17,CU_0270,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0270/image.jpg"", ""View Image"")"
|
| 11 |
-
18,CU_0812,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0812/image.jpg"", ""View Image"")"
|
| 12 |
-
19,CU_0761cu1,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0761cu1/image.jpg"", ""View Image"")"
|
| 13 |
-
21,FLFO_004161B,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_004161B/image.jpg"", ""View Image"")"
|
| 14 |
-
22,FLFO_006644B,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_006644B/image.jpg"", ""View Image"")"
|
| 15 |
-
23,FLFO_010746,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_010746/image.jpg"", ""View Image"")"
|
| 16 |
-
24,FLFO_010417A,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_010417A/image.jpg"", ""View Image"")"
|
| 17 |
-
26,FLFO_010826,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_010826/image.jpg"", ""View Image"")"
|
| 18 |
-
27,FLFO_008595,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_008595/image.jpg"", ""View Image"")"
|
| 19 |
-
28,CU_0461cu,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0461cu/image.jpg"", ""View Image"")"
|
| 20 |
-
29,CU_0796,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0796/image.jpg"", ""View Image"")"
|
| 21 |
-
31,FLFO_010176A,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_010176A/image.jpg"", ""View Image"")"
|
| 22 |
-
33,FLFO_010071B,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_010071B/image.jpg"", ""View Image"")"
|
| 23 |
-
35,CU_1367,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_1367/image.jpg"", ""View Image"")"
|
| 24 |
-
36,FLFO_005584A,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_005584A/image.jpg"", ""View Image"")"
|
| 25 |
-
41,FLFO_006114B,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_006114B/image.jpg"", ""View Image"")"
|
| 26 |
-
42,FLFO_002447A,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_002447A/image.jpg"", ""View Image"")"
|
| 27 |
-
44,CU_0801,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0801/image.jpg"", ""View Image"")"
|
| 28 |
-
45,FLFO_003117,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_003117/image.jpg"", ""View Image"")"
|
| 29 |
-
46,FLFO_011541B,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_011541B/image.jpg"", ""View Image"")"
|
| 30 |
-
47,FLFO_002617A,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_002617A/image.jpg"", ""View Image"")"
|
| 31 |
-
48,CU_0217,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0217/image.jpg"", ""View Image"")"
|
| 32 |
-
49,FLFO_003490B,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_003490B/image.jpg"", ""View Image"")"
|
| 33 |
-
50,FLFO_006174B,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_006174B/image.jpg"", ""View Image"")"
|
| 34 |
-
51,FLFO_010122,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_010122/image.jpg"", ""View Image"")"
|
| 35 |
-
53,CU_0894,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0894/image.jpg"", ""View Image"")"
|
| 36 |
-
54,FLFO_008599B,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_008599B/image.jpg"", ""View Image"")"
|
| 37 |
-
55,CU_0206,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0206/image.jpg"", ""View Image"")"
|
| 38 |
-
57,CU_0489,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0489/image.jpg"", ""View Image"")"
|
| 39 |
-
59,CU_0761,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0761/image.jpg"", ""View Image"")"
|
| 40 |
-
60,FLFO_11115B,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_11115B/image.jpg"", ""View Image"")"
|
| 41 |
-
61,CU_0301,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0301/image.jpg"", ""View Image"")"
|
| 42 |
-
63,FLFO_003600B,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_003600B/image.jpg"", ""View Image"")"
|
| 43 |
-
64,FLFO_011061,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_011061/image.jpg"", ""View Image"")"
|
| 44 |
-
66,FLFO_005768B,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_005768B/image.jpg"", ""View Image"")"
|
| 45 |
-
68,FLFO_006046,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_006046/image.jpg"", ""View Image"")"
|
| 46 |
-
70,CU_0728,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0728/image.jpg"", ""View Image"")"
|
| 47 |
-
71,CU_0907,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0907/image.jpg"", ""View Image"")"
|
| 48 |
-
72,FLFO_003042B,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_003042B/image.jpg"", ""View Image"")"
|
| 49 |
-
79,FLFO_002682B,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_002682B/image.jpg"", ""View Image"")"
|
| 50 |
-
80,FLFO_002799B,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_002799B/image.jpg"", ""View Image"")"
|
| 51 |
-
83,FLFO_002826,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_002826/image.jpg"", ""View Image"")"
|
| 52 |
-
84,FLFO_010770B,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_010770B/image.jpg"", ""View Image"")"
|
| 53 |
-
85,CU_0662cu,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0662cu/image.jpg"", ""View Image"")"
|
| 54 |
-
87,FLFO_004161A,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_004161A/image.jpg"", ""View Image"")"
|
| 55 |
-
88,CU_0074,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0074/image.jpg"", ""View Image"")"
|
| 56 |
-
89,FLFO_008586A,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_008586A/image.jpg"", ""View Image"")"
|
| 57 |
-
94,FLFO_004598_2,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_004598_2/image.jpg"", ""View Image"")"
|
| 58 |
-
96,FLFO_005788,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_005788/image.jpg"", ""View Image"")"
|
| 59 |
-
98,CU_0683,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0683/image.jpg"", ""View Image"")"
|
| 60 |
-
99,FLFO_010321B 2,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_010321B 2/image.jpg"", ""View Image"")"
|
| 61 |
-
100,FLFO_011062,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_011062/image.jpg"", ""View Image"")"
|
| 62 |
-
101,CU_0730,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0730/image.jpg"", ""View Image"")"
|
| 63 |
-
102,FLFO_011121B,Plausible,
|
| 64 |
-
103,FLFO_010877B,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_010877B/image.jpg"", ""View Image"")"
|
| 65 |
-
104,FLFO_011049A_L1,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_011049A_L1/image.jpg"", ""View Image"")"
|
| 66 |
-
105,FLFO_010307,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_010307/image.jpg"", ""View Image"")"
|
| 67 |
-
106,CU_0512cu,Plausible,
|
| 68 |
-
107,CU_0755,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0755/image.jpg"", ""View Image"")"
|
| 69 |
-
109,CU_0731cu,Plausible,
|
| 70 |
-
110,FLFO_003351B,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_003351B/image.jpg"", ""View Image"")"
|
| 71 |
-
111,FLFO_010570B,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_010570B/image.jpg"", ""View Image"")"
|
| 72 |
-
112,CU_0819,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0819/image.jpg"", ""View Image"")"
|
| 73 |
-
114,CU_0888,Not Sure,
|
| 74 |
-
115,CU_0783cu,Not Sure,
|
| 75 |
-
116,CU_0662,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0662/image.jpg"", ""View Image"")"
|
| 76 |
-
117,FLFO_003166A,Not Sure,
|
| 77 |
-
118,FLFO_010901A,Not Sure,
|
| 78 |
-
119,CU_0901,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0901/image.jpg"", ""View Image"")"
|
| 79 |
-
120,FLFO_010347B,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_010347B/image.jpg"", ""View Image"")"
|
| 80 |
-
121,CU_0512,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0512/image.jpg"", ""View Image"")"
|
| 81 |
-
122,CU_0220,Not Sure,
|
| 82 |
-
123,FLFO_008529B,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_008529B/image.jpg"", ""View Image"")"
|
| 83 |
-
125,CU_0118cu,Not Sure,
|
| 84 |
-
126,CU_0503,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0503/image.jpg"", ""View Image"")"
|
| 85 |
-
127,FLFO_011579,Plausible,
|
| 86 |
-
128,FLFO_004784,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_004784/image.jpg"", ""View Image"")"
|
| 87 |
-
130,FLFO_003005,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_003005/image.jpg"", ""View Image"")"
|
| 88 |
-
131,FLFO_010038A,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_010038A/image.jpg"", ""View Image"")"
|
| 89 |
-
132,CU_0244,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0244/image.jpg"", ""View Image"")"
|
| 90 |
-
133,CU_0271,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0271/image.jpg"", ""View Image"")"
|
| 91 |
-
136,CU_0110,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0110/image.jpg"", ""View Image"")"
|
| 92 |
-
137,CU_0301cu2,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0301cu2/image.jpg"", ""View Image"")"
|
| 93 |
-
138,FLFO_003041A,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_003041A/image.jpg"", ""View Image"")"
|
| 94 |
-
139,FLFO_006832B,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_006832B/image.jpg"", ""View Image"")"
|
| 95 |
-
140,CU_0747,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0747/image.jpg"", ""View Image"")"
|
| 96 |
-
141,CU_0895,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0895/image.jpg"", ""View Image"")"
|
| 97 |
-
142,FLFO_002628A,Plausible,
|
| 98 |
-
143,CU_0846cu,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0846cu/image.jpg"", ""View Image"")"
|
| 99 |
-
145,CU_0904,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0904/image.jpg"", ""View Image"")"
|
| 100 |
-
146,CU_0386cu,Plausible,
|
| 101 |
-
147,FLFO_010814A,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_010814A/image.jpg"", ""View Image"")"
|
| 102 |
-
148,FLFO_010221,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_010221/image.jpg"", ""View Image"")"
|
| 103 |
-
151,FLFO_008997A,Not Sure,
|
| 104 |
-
152,CU_0884,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0884/image.jpg"", ""View Image"")"
|
| 105 |
-
153,FLFO_004720A,Not Sure,
|
| 106 |
-
154,FLFO_011092,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_011092/image.jpg"", ""View Image"")"
|
| 107 |
-
155,FLFO_010759,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_010759/image.jpg"", ""View Image"")"
|
| 108 |
-
158,FLFO_011121A,Not Sure,
|
| 109 |
-
159,CU_0487,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0487/image.jpg"", ""View Image"")"
|
| 110 |
-
160,CU_0663cu,Plausible,
|
| 111 |
-
161,CU_0751,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0751/image.jpg"", ""View Image"")"
|
| 112 |
-
162,FLFO_004637,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_004637/image.jpg"", ""View Image"")"
|
| 113 |
-
163,FLFO_009788,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_009788/image.jpg"", ""View Image"")"
|
| 114 |
-
165,CU_0755cu,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0755cu/image.jpg"", ""View Image"")"
|
| 115 |
-
166,CU_0084,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0084/image.jpg"", ""View Image"")"
|
| 116 |
-
167,FLFO_010011,Plausible,
|
| 117 |
-
169,CU_0154,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0154/image.jpg"", ""View Image"")"
|
| 118 |
-
173,FLFO_003260A,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_003260A/image.jpg"", ""View Image"")"
|
| 119 |
-
175,FLFO_005679,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_005679/image.jpg"", ""View Image"")"
|
| 120 |
-
176,FLFO_011453,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_011453/image.jpg"", ""View Image"")"
|
| 121 |
-
180,FLFO_009686,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_009686/image.jpg"", ""View Image"")"
|
| 122 |
-
182,FLFO_002799A,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_002799A/image.jpg"", ""View Image"")"
|
| 123 |
-
183,FLFO_002637B,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_002637B/image.jpg"", ""View Image"")"
|
| 124 |
-
184,CU_0209,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0209/image.jpg"", ""View Image"")"
|
| 125 |
-
186,CU_0177,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0177/image.jpg"", ""View Image"")"
|
| 126 |
-
187,FLFO_004762B,Not Sure,
|
| 127 |
-
188,FLFO_008995A,Plausible,
|
| 128 |
-
190,CU_0740,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0740/image.jpg"", ""View Image"")"
|
| 129 |
-
191,FLFO_010733B,Not Sure,
|
| 130 |
-
192,FLFO_003213,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_003213/image.jpg"", ""View Image"")"
|
| 131 |
-
193,FLFO_010159,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_010159/image.jpg"", ""View Image"")"
|
| 132 |
-
195,CU_0332,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0332/image.jpg"", ""View Image"")"
|
| 133 |
-
196,FLFO_003260B,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_003260B/image.jpg"", ""View Image"")"
|
| 134 |
-
197,FLFO_003388B,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_003388B/image.jpg"", ""View Image"")"
|
| 135 |
-
198,FLFO_010803A,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_010803A/image.jpg"", ""View Image"")"
|
| 136 |
-
199,FLFO_011542A,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_011542A/image.jpg"", ""View Image"")"
|
| 137 |
-
200,FLFO_002443A,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_002443A/image.jpg"", ""View Image"")"
|
| 138 |
-
201,FLFO_010863A,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_010863A/image.jpg"", ""View Image"")"
|
| 139 |
-
202,FLFO_006848B,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_006848B/image.jpg"", ""View Image"")"
|
| 140 |
-
205,FLFO_006733A,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_006733A/image.jpg"", ""View Image"")"
|
| 141 |
-
206,CU_0332cu,Not Sure,
|
| 142 |
-
207,FLFO_010168B_L2,Plausible,
|
| 143 |
-
208,FLFO_002741A,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_002741A/image.jpg"", ""View Image"")"
|
| 144 |
-
209,FLFO_002767B,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_002767B/image.jpg"", ""View Image"")"
|
| 145 |
-
210,CU_0864,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0864/image.jpg"", ""View Image"")"
|
| 146 |
-
211,CU_0510cu,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0510cu/image.jpg"", ""View Image"")"
|
| 147 |
-
212,FLFO_011049A_L2,Plausible,
|
| 148 |
-
213,CU_0479cu,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0479cu/image.jpg"", ""View Image"")"
|
| 149 |
-
215,CU_0190cu,Not Sure,
|
| 150 |
-
217,FLFO_011361B,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_011361B/image.jpg"", ""View Image"")"
|
| 151 |
-
218,FLFO_010863B,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_010863B/image.jpg"", ""View Image"")"
|
| 152 |
-
219,FLFO_011454B,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_011454B/image.jpg"", ""View Image"")"
|
| 153 |
-
223,CU_0442cu,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0442cu/image.jpg"", ""View Image"")"
|
| 154 |
-
224,FLFO_011036A,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_011036A/image.jpg"", ""View Image"")"
|
| 155 |
-
227,CU_0211,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0211/image.jpg"", ""View Image"")"
|
| 156 |
-
228,CU_0778cu,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0778cu/image.jpg"", ""View Image"")"
|
| 157 |
-
229,CU_0900,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0900/image.jpg"", ""View Image"")"
|
| 158 |
-
230,FLFO_010529A,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_010529A/image.jpg"", ""View Image"")"
|
| 159 |
-
232,CU_0756cu,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0756cu/image.jpg"", ""View Image"")"
|
| 160 |
-
234,FLFO_011095A,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_011095A/image.jpg"", ""View Image"")"
|
| 161 |
-
235,FLFO_005672B,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_005672B/image.jpg"", ""View Image"")"
|
| 162 |
-
236,FLFO_011023,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_011023/image.jpg"", ""View Image"")"
|
| 163 |
-
237,FLFO_010901B,Not Sure,
|
| 164 |
-
239,FLFO_010252A,Not Sure,
|
| 165 |
-
240,FLFO_010405,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_010405/image.jpg"", ""View Image"")"
|
| 166 |
-
241,FLFO_002901B,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_002901B/image.jpg"", ""View Image"")"
|
| 167 |
-
242,FLFO_010379B,Plausible,
|
| 168 |
-
245,FLFO_010809B,Plausible,
|
| 169 |
-
246,FLFO_011336,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_011336/image.jpg"", ""View Image"")"
|
| 170 |
-
247,FLFO_003572B,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_003572B/image.jpg"", ""View Image"")"
|
| 171 |
-
249,FLFO_010311B,Not Sure,
|
| 172 |
-
250,FLFO_006733B,Plausible,
|
| 173 |
-
252,CU_0478cu1,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0478cu1/image.jpg"", ""View Image"")"
|
| 174 |
-
253,CU_0789,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0789/image.jpg"", ""View Image"")"
|
| 175 |
-
254,FLFO_004609,Plausible,
|
| 176 |
-
255,FLFO_004603,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_004603/image.jpg"", ""View Image"")"
|
| 177 |
-
256,CU_0657,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0657/image.jpg"", ""View Image"")"
|
| 178 |
-
257,FLFO_009708A,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_009708A/image.jpg"", ""View Image"")"
|
| 179 |
-
258,FLFO_004565A,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_004565A/image.jpg"", ""View Image"")"
|
| 180 |
-
259,FLFO_010321B,Plausible,
|
| 181 |
-
260,CU_0410,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0410/image.jpg"", ""View Image"")"
|
| 182 |
-
261,FLFO_004015A,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_004015A/image.jpg"", ""View Image"")"
|
| 183 |
-
262,CU_0662cpt,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0662cpt/image.jpg"", ""View Image"")"
|
| 184 |
-
263,CU_0830,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0830/image.jpg"", ""View Image"")"
|
| 185 |
-
264,FLFO_011520A,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_011520A/image.jpg"", ""View Image"")"
|
| 186 |
-
265,FLFO_006114A,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_006114A/image.jpg"", ""View Image"")"
|
| 187 |
-
266,FLFO_003514,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_003514/image.jpg"", ""View Image"")"
|
| 188 |
-
267,FLFO_006872B,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_006872B/image.jpg"", ""View Image"")"
|
| 189 |
-
269,CU_0740cu,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0740cu/image.jpg"", ""View Image"")"
|
| 190 |
-
271,CU_0747cu1,Not Sure,
|
| 191 |
-
272,CU_0619,Plausible,
|
| 192 |
-
274,CU_0846,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0846/image.jpg"", ""View Image"")"
|
| 193 |
-
275,CU_0906,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0906/image.jpg"", ""View Image"")"
|
| 194 |
-
276,CU_0783,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0783/image.jpg"", ""View Image"")"
|
| 195 |
-
278,FLFO_011096B,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_011096B/image.jpg"", ""View Image"")"
|
| 196 |
-
279,FLFO_000126,Plausible,
|
| 197 |
-
280,FLFO_010973B,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_010973B/image.jpg"", ""View Image"")"
|
| 198 |
-
281,CU_0780,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0780/image.jpg"", ""View Image"")"
|
| 199 |
-
282,FLFO_004600,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_004600/image.jpg"", ""View Image"")"
|
| 200 |
-
285,FLFO_010576A,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_010576A/image.jpg"", ""View Image"")"
|
| 201 |
-
286,FLFO_003572A,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_003572A/image.jpg"", ""View Image"")"
|
| 202 |
-
288,FLFO_002438,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_002438/image.jpg"", ""View Image"")"
|
| 203 |
-
289,FLFO_004597,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_004597/image.jpg"", ""View Image"")"
|
| 204 |
-
290,FLFO_004895A,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_004895A/image.jpg"", ""View Image"")"
|
| 205 |
-
291,FLFO_006692,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_006692/image.jpg"", ""View Image"")"
|
| 206 |
-
292,FLFO_006146,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_006146/image.jpg"", ""View Image"")"
|
| 207 |
-
293,FLFO_004720B,Not Sure,
|
| 208 |
-
294,CU_0332cu-2,Not Sure,
|
| 209 |
-
295,CU_0652cu,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0652cu/image.jpg"", ""View Image"")"
|
| 210 |
-
296,FLFO_011094B,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_011094B/image.jpg"", ""View Image"")"
|
| 211 |
-
297,FLFO_002489A,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_002489A/image.jpg"", ""View Image"")"
|
| 212 |
-
298,CU_0801cu,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0801cu/image.jpg"", ""View Image"")"
|
| 213 |
-
299,FLFO_010262B,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_010262B/image.jpg"", ""View Image"")"
|
| 214 |
-
300,FLFO_008571A,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_008571A/image.jpg"", ""View Image"")"
|
| 215 |
-
301,CU_0657cu,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0657cu/image.jpg"", ""View Image"")"
|
| 216 |
-
302,FLFO_011130,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_011130/image.jpg"", ""View Image"")"
|
| 217 |
-
303,CU_0336cpt,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0336cpt/image.jpg"", ""View Image"")"
|
| 218 |
-
304,FLFO_006912B,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_006912B/image.jpg"", ""View Image"")"
|
| 219 |
-
305,CU_0739cu,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0739cu/image.jpg"", ""View Image"")"
|
| 220 |
-
306,FLFO_010168B_L1,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_010168B_L1/image.jpg"", ""View Image"")"
|
| 221 |
-
307,FLFO_003188,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_003188/image.jpg"", ""View Image"")"
|
| 222 |
-
308,CU_0833,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0833/image.jpg"", ""View Image"")"
|
| 223 |
-
309,FLFO_006940A,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_006940A/image.jpg"", ""View Image"")"
|
| 224 |
-
310,CU_0246,Not Sure,
|
| 225 |
-
311,FLFO_002581B,Plausible,
|
| 226 |
-
312,CU_0815,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0815/image.jpg"", ""View Image"")"
|
| 227 |
-
313,FLFO_010311A,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_010311A/image.jpg"", ""View Image"")"
|
| 228 |
-
314,FLFO_004935,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_004935/image.jpg"", ""View Image"")"
|
| 229 |
-
315,FLFO_004742A,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_004742A/image.jpg"", ""View Image"")"
|
| 230 |
-
316,CU_0179,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0179/image.jpg"", ""View Image"")"
|
| 231 |
-
317,FLFO_011745,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_011745/image.jpg"", ""View Image"")"
|
| 232 |
-
318,FLFO_008513,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_008513/image.jpg"", ""View Image"")"
|
| 233 |
-
320,CU_0721,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0721/image.jpg"", ""View Image"")"
|
| 234 |
-
322,FLFO_004794,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_004794/image.jpg"", ""View Image"")"
|
| 235 |
-
323,FLFO_002786B,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_002786B/image.jpg"", ""View Image"")"
|
| 236 |
-
326,FLFO_010576B,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_010576B/image.jpg"", ""View Image"")"
|
| 237 |
-
327,CU_1033cu,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_1033cu/image.jpg"", ""View Image"")"
|
| 238 |
-
328,CU_0833cu1,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0833cu1/image.jpg"", ""View Image"")"
|
| 239 |
-
330,FLFO_011199B,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_011199B/image.jpg"", ""View Image"")"
|
| 240 |
-
331,FLFO_004895B,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_004895B/image.jpg"", ""View Image"")"
|
| 241 |
-
332,FLFO_011094A,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_011094A/image.jpg"", ""View Image"")"
|
| 242 |
-
334,CU_0244cu,Not Sure,
|
| 243 |
-
335,FLFO_003350B,Not Sure,
|
| 244 |
-
336,FLFO_011450B,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_011450B/image.jpg"", ""View Image"")"
|
| 245 |
-
338,FLFO_002444B,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_002444B/image.jpg"", ""View Image"")"
|
| 246 |
-
339,FLFO_011655,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_011655/image.jpg"", ""View Image"")"
|
| 247 |
-
340,FLFO_006174A,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_006174A/image.jpg"", ""View Image"")"
|
| 248 |
-
341,CU_0118,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0118/image.jpg"", ""View Image"")"
|
| 249 |
-
342,FLFO_008586B,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_008586B/image.jpg"", ""View Image"")"
|
| 250 |
-
343,FLFO_002740B,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_002740B/image.jpg"", ""View Image"")"
|
| 251 |
-
344,FLFO_003351A,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_003351A/image.jpg"", ""View Image"")"
|
| 252 |
-
345,FLFO_006632B,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_006632B/image.jpg"", ""View Image"")"
|
| 253 |
-
346,CU_0814,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0814/image.jpg"", ""View Image"")"
|
| 254 |
-
348,FLFO_004844,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_004844/image.jpg"", ""View Image"")"
|
| 255 |
-
349,FLFO_002483,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_002483/image.jpg"", ""View Image"")"
|
| 256 |
-
350,FLFO_008564B,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_008564B/image.jpg"", ""View Image"")"
|
| 257 |
-
351,FLFO_000888,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_000888/image.jpg"", ""View Image"")"
|
| 258 |
-
353,FLFO_009791A,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_009791A/image.jpg"", ""View Image"")"
|
| 259 |
-
354,FLFO_006961B,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_006961B/image.jpg"", ""View Image"")"
|
| 260 |
-
355,CU_0673cu,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0673cu/image.jpg"", ""View Image"")"
|
| 261 |
-
357,FLFO_011691,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_011691/image.jpg"", ""View Image"")"
|
| 262 |
-
358,FLFO_011049B_L1,Not Sure,
|
| 263 |
-
359,CU_0772,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0772/image.jpg"", ""View Image"")"
|
| 264 |
-
360,FLFO_011100B,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_011100B/image.jpg"", ""View Image"")"
|
| 265 |
-
361,FLFO_008968A,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_008968A/image.jpg"", ""View Image"")"
|
| 266 |
-
362,FLFO_003952B,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_003952B/image.jpg"", ""View Image"")"
|
| 267 |
-
363,FLFO_003350A,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_003350A/image.jpg"", ""View Image"")"
|
| 268 |
-
364,CU_0754cu,Not Sure,
|
| 269 |
-
365,FLFO_003234,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_003234/image.jpg"", ""View Image"")"
|
| 270 |
-
366,CU_0741cu1,Not Sure,
|
| 271 |
-
367,FLFO_011658,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_011658/image.jpg"", ""View Image"")"
|
| 272 |
-
368,CU_0798cu,Not Sure,
|
| 273 |
-
370,CU_0882,Plausible,
|
| 274 |
-
371,FLFO_003551,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_003551/image.jpg"", ""View Image"")"
|
| 275 |
-
372,CU_0818,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0818/image.jpg"", ""View Image"")"
|
| 276 |
-
373,FLFO_005677B,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_005677B/image.jpg"", ""View Image"")"
|
| 277 |
-
374,FLFO_008529A,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_008529A/image.jpg"", ""View Image"")"
|
| 278 |
-
375,CU_0726,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0726/image.jpg"", ""View Image"")"
|
| 279 |
-
377,CU_0503cu,Plausible,
|
| 280 |
-
378,FLFO_010071A,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_010071A/image.jpg"", ""View Image"")"
|
| 281 |
-
380,CU_0742,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0742/image.jpg"", ""View Image"")"
|
| 282 |
-
381,FLFO_002767A,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_002767A/image.jpg"", ""View Image"")"
|
| 283 |
-
384,FLFO_003231B,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_003231B/image.jpg"", ""View Image"")"
|
| 284 |
-
385,FLFO_010744A,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_010744A/image.jpg"", ""View Image"")"
|
| 285 |
-
388,FLFO_010252B,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_010252B/image.jpg"", ""View Image"")"
|
| 286 |
-
389,FLFO_010052A,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_010052A/image.jpg"", ""View Image"")"
|
| 287 |
-
390,FLFO_002769B,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_002769B/image.jpg"", ""View Image"")"
|
| 288 |
-
391,CU_0513cu2,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0513cu2/image.jpg"", ""View Image"")"
|
| 289 |
-
394,FLFO_011511,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_011511/image.jpg"", ""View Image"")"
|
| 290 |
-
395,CU_0830cu,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0830cu/image.jpg"", ""View Image"")"
|
| 291 |
-
396,FLFO_010529B,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_010529B/image.jpg"", ""View Image"")"
|
| 292 |
-
397,FLFO_010656B,Plausible,
|
| 293 |
-
398,FLFO_003388A,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_003388A/image.jpg"", ""View Image"")"
|
| 294 |
-
399,CU_0207,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0207/image.jpg"", ""View Image"")"
|
| 295 |
-
400,FLFO_010790A,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_010790A/image.jpg"", ""View Image"")"
|
| 296 |
-
401,FLFO_008511B,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_008511B/image.jpg"", ""View Image"")"
|
| 297 |
-
402,CU_0769cu1,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0769cu1/image.jpg"", ""View Image"")"
|
| 298 |
-
403,FLFO_010459B,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_010459B/image.jpg"", ""View Image"")"
|
| 299 |
-
404,FLFO_006078,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_006078/image.jpg"", ""View Image"")"
|
| 300 |
-
406,FLFO_011235B,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_011235B/image.jpg"", ""View Image"")"
|
| 301 |
-
409,FLFO_006912A,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_006912A/image.jpg"", ""View Image"")"
|
| 302 |
-
410,CU_0491cu,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0491cu/image.jpg"", ""View Image"")"
|
| 303 |
-
411,FLFO_010656A,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_010656A/image.jpg"", ""View Image"")"
|
| 304 |
-
412,FLFO_002879A,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_002879A/image.jpg"", ""View Image"")"
|
| 305 |
-
413,CU_0820,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0820/image.jpg"", ""View Image"")"
|
| 306 |
-
414,CU_0510,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0510/image.jpg"", ""View Image"")"
|
| 307 |
-
416,CU_0197,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0197/image.jpg"", ""View Image"")"
|
| 308 |
-
417,FLFO_004929,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_004929/image.jpg"", ""View Image"")"
|
| 309 |
-
418,FLFO_011029,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_011029/image.jpg"", ""View Image"")"
|
| 310 |
-
420,FLFO_003301A,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_003301A/image.jpg"", ""View Image"")"
|
| 311 |
-
422,FLFO_003600A,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_003600A/image.jpg"", ""View Image"")"
|
| 312 |
-
424,FLFO_002901A,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_002901A/image.jpg"", ""View Image"")"
|
| 313 |
-
425,FLFO_008538B,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_008538B/image.jpg"", ""View Image"")"
|
| 314 |
-
427,CU_0401cu,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0401cu/image.jpg"", ""View Image"")"
|
| 315 |
-
428,FLFO_011305,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_011305/image.jpg"", ""View Image"")"
|
| 316 |
-
429,FLFO_006644A,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_006644A/image.jpg"", ""View Image"")"
|
| 317 |
-
433,CU_0489cu,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0489cu/image.jpg"", ""View Image"")"
|
| 318 |
-
434,CU_0805,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0805/image.jpg"", ""View Image"")"
|
| 319 |
-
438,FLFO_003492B,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_003492B/image.jpg"", ""View Image"")"
|
| 320 |
-
439,FLFO_011100A,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_011100A/image.jpg"", ""View Image"")"
|
| 321 |
-
441,CU_0189,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0189/image.jpg"", ""View Image"")"
|
| 322 |
-
442,FLFO_002786A,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_002786A/image.jpg"", ""View Image"")"
|
| 323 |
-
443,CU_0454,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0454/image.jpg"", ""View Image"")"
|
| 324 |
-
444,FLFO_011087B,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_011087B/image.jpg"", ""View Image"")"
|
| 325 |
-
445,CU_0654,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0654/image.jpg"", ""View Image"")"
|
| 326 |
-
447,CU_0729,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0729/image.jpg"", ""View Image"")"
|
| 327 |
-
448,FLFO_002420B,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_002420B/image.jpg"", ""View Image"")"
|
| 328 |
-
449,FLFO_002702,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_002702/image.jpg"", ""View Image"")"
|
| 329 |
-
450,FLFO_008590B,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_008590B/image.jpg"", ""View Image"")"
|
| 330 |
-
451,FLFO_008995B,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_008995B/image.jpg"", ""View Image"")"
|
| 331 |
-
452,CU_1032,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_1032/image.jpg"", ""View Image"")"
|
| 332 |
-
453,CU_0741,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0741/image.jpg"", ""View Image"")"
|
| 333 |
-
455,FLFO_004707B,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_004707B/image.jpg"", ""View Image"")"
|
| 334 |
-
456,CU_0770,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0770/image.jpg"", ""View Image"")"
|
| 335 |
-
458,CU_0896,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0896/image.jpg"", ""View Image"")"
|
| 336 |
-
463,CU_0329,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0329/image.jpg"", ""View Image"")"
|
| 337 |
-
464,CU_0901cpt,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0901cpt/image.jpg"", ""View Image"")"
|
| 338 |
-
465,FLFO_010650B,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_010650B/image.jpg"", ""View Image"")"
|
| 339 |
-
466,FLFO_003258,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_003258/image.jpg"", ""View Image"")"
|
| 340 |
-
467,CU_0686,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0686/image.jpg"", ""View Image"")"
|
| 341 |
-
468,CU_0409,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0409/image.jpg"", ""View Image"")"
|
| 342 |
-
469,CU_0122,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0122/image.jpg"", ""View Image"")"
|
| 343 |
-
470,FLFO_003490A,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_003490A/image.jpg"", ""View Image"")"
|
| 344 |
-
471,FLFO_002926A,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_002926A/image.jpg"", ""View Image"")"
|
| 345 |
-
472,FLFO_010329A,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_010329A/image.jpg"", ""View Image"")"
|
| 346 |
-
473,CU_0513,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0513/image.jpg"", ""View Image"")"
|
| 347 |
-
474,FLFO_002597,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_002597/image.jpg"", ""View Image"")"
|
| 348 |
-
475,CU_0198cpt,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0198cpt/image.jpg"", ""View Image"")"
|
| 349 |
-
476,CU_0440,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0440/image.jpg"", ""View Image"")"
|
| 350 |
-
477,FLFO_010463A,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_010463A/image.jpg"", ""View Image"")"
|
| 351 |
-
478,FLFO_010519A,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_010519A/image.jpg"", ""View Image"")"
|
| 352 |
-
479,FLFO_010163B,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_010163B/image.jpg"", ""View Image"")"
|
| 353 |
-
480,CU_0486,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0486/image.jpg"", ""View Image"")"
|
| 354 |
-
481,FLFO_009675,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_009675/image.jpg"", ""View Image"")"
|
| 355 |
-
483,FLFO_002728,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_002728/image.jpg"", ""View Image"")"
|
| 356 |
-
485,CU_1364,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_1364/image.jpg"", ""View Image"")"
|
| 357 |
-
486,CU_0902cu,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0902cu/image.jpg"", ""View Image"")"
|
| 358 |
-
487,FLFO_011019A,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_011019A/image.jpg"", ""View Image"")"
|
| 359 |
-
488,CU_0307,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0307/image.jpg"", ""View Image"")"
|
| 360 |
-
489,CU_0687,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0687/image.jpg"", ""View Image"")"
|
| 361 |
-
490,FLFO_009259,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_009259/image.jpg"", ""View Image"")"
|
| 362 |
-
491,CU_0448cu,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0448cu/image.jpg"", ""View Image"")"
|
| 363 |
-
494,CU_0754,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0754/image.jpg"", ""View Image"")"
|
| 364 |
-
495,FLFO_010423A,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_010423A/image.jpg"", ""View Image"")"
|
| 365 |
-
496,FLFO_011361A,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_011361A/image.jpg"", ""View Image"")"
|
| 366 |
-
497,CU_0745,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0745/image.jpg"", ""View Image"")"
|
| 367 |
-
498,FLFO_006940B,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_006940B/image.jpg"", ""View Image"")"
|
| 368 |
-
499,FLFO_010680B,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_010680B/image.jpg"", ""View Image"")"
|
| 369 |
-
500,CU_0641,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0641/image.jpg"", ""View Image"")"
|
| 370 |
-
502,FLFO_005584B,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_005584B/image.jpg"", ""View Image"")"
|
| 371 |
-
503,FLFO_011133A,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_011133A/image.jpg"", ""View Image"")"
|
| 372 |
-
504,FLFO_010409A,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_010409A/image.jpg"", ""View Image"")"
|
| 373 |
-
505,FLFO_002682A,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_002682A/image.jpg"", ""View Image"")"
|
| 374 |
-
506,CU_0461,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0461/image.jpg"", ""View Image"")"
|
| 375 |
-
507,FLFO_011133B,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_011133B/image.jpg"", ""View Image"")"
|
| 376 |
-
508,FLFO_011147B,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_011147B/image.jpg"", ""View Image"")"
|
| 377 |
-
510,FLFO_010562B,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_010562B/image.jpg"", ""View Image"")"
|
| 378 |
-
511,FLFO_008967,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_008967/image.jpg"", ""View Image"")"
|
| 379 |
-
512,FLFO_010168B_L3,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_010168B_L3/image.jpg"", ""View Image"")"
|
| 380 |
-
513,CU_0279,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0279/image.jpg"", ""View Image"")"
|
| 381 |
-
514,FLFO_010806A,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_010806A/image.jpg"", ""View Image"")"
|
| 382 |
-
515,FLFO_002741B,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_002741B/image.jpg"", ""View Image"")"
|
| 383 |
-
516,FLFO_010459A,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_010459A/image.jpg"", ""View Image"")"
|
| 384 |
-
519,FLFO_003152,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_003152/image.jpg"", ""View Image"")"
|
| 385 |
-
520,FLFO_010137,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_010137/image.jpg"", ""View Image"")"
|
| 386 |
-
521,FLFO_003175A,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_003175A/image.jpg"", ""View Image"")"
|
| 387 |
-
522,CU_0809,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0809/image.jpg"", ""View Image"")"
|
| 388 |
-
523,FLFO_011502B,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_011502B/image.jpg"", ""View Image"")"
|
| 389 |
-
527,FLFO_010699A,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_010699A/image.jpg"", ""View Image"")"
|
| 390 |
-
529,CU_0194cpt,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0194cpt/image.jpg"", ""View Image"")"
|
| 391 |
-
531,FLFO_003240,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_003240/image.jpg"", ""View Image"")"
|
| 392 |
-
532,FLFO_011080A,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_011080A/image.jpg"", ""View Image"")"
|
| 393 |
-
534,CU_0673,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0673/image.jpg"", ""View Image"")"
|
| 394 |
-
535,CU_0833cu,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0833cu/image.jpg"", ""View Image"")"
|
| 395 |
-
536,FLFO_004124A,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_004124A/image.jpg"", ""View Image"")"
|
| 396 |
-
537,FLFO_005677A,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_005677A/image.jpg"", ""View Image"")"
|
| 397 |
-
538,FLFO_011199A,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_011199A/image.jpg"", ""View Image"")"
|
| 398 |
-
539,FLFO_011115A,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_011115A/image.jpg"", ""View Image"")"
|
| 399 |
-
540,FLFO_003952A,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_003952A/image.jpg"", ""View Image"")"
|
| 400 |
-
542,CU_0301cu1,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0301cu1/image.jpg"", ""View Image"")"
|
| 401 |
-
543,CU_0512cu1,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0512cu1/image.jpg"", ""View Image"")"
|
| 402 |
-
545,CU_0511,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0511/image.jpg"", ""View Image"")"
|
| 403 |
-
547,FLFO_008571B,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_008571B/image.jpg"", ""View Image"")"
|
| 404 |
-
548,FLFO_004443B,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_004443B/image.jpg"", ""View Image"")"
|
| 405 |
-
549,FLFO_004708B,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_004708B/image.jpg"", ""View Image"")"
|
| 406 |
-
550,FLFO_010662A,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_010662A/image.jpg"", ""View Image"")"
|
| 407 |
-
551,FLFO_004519A,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_004519A/image.jpg"", ""View Image"")"
|
| 408 |
-
553,FLFO_002703,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_002703/image.jpg"", ""View Image"")"
|
| 409 |
-
555,FLFO_010650A,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_010650A/image.jpg"", ""View Image"")"
|
| 410 |
-
556,FLFO_009029B,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_009029B/image.jpg"", ""View Image"")"
|
| 411 |
-
557,FLFO_004838A,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_004838A/image.jpg"", ""View Image"")"
|
| 412 |
-
558,FLFO_010738A,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_010738A/image.jpg"", ""View Image"")"
|
| 413 |
-
559,FLFO_010780A,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_010780A/image.jpg"", ""View Image"")"
|
| 414 |
-
560,FLFO_011019B,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_011019B/image.jpg"", ""View Image"")"
|
| 415 |
-
562,CU_0752,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0752/image.jpg"", ""View Image"")"
|
| 416 |
-
563,FLFO_011025,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_011025/image.jpg"", ""View Image"")"
|
| 417 |
-
566,CU_0180,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0180/image.jpg"", ""View Image"")"
|
| 418 |
-
567,FLFO_011518,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_011518/image.jpg"", ""View Image"")"
|
| 419 |
-
568,FLFO_010897A,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_010897A/image.jpg"", ""View Image"")"
|
| 420 |
-
570,FLFO_009286,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_009286/image.jpg"", ""View Image"")"
|
| 421 |
-
571,FLFO_002623B,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_002623B/image.jpg"", ""View Image"")"
|
| 422 |
-
572,FLFO_005678,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_005678/image.jpg"", ""View Image"")"
|
| 423 |
-
574,FLFO_009680,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_009680/image.jpg"", ""View Image"")"
|
| 424 |
-
576,FLFO_010993B,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_010993B/image.jpg"", ""View Image"")"
|
| 425 |
-
577,FLFO_009859,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_009859/image.jpg"", ""View Image"")"
|
| 426 |
-
578,FLFO_010031,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_010031/image.jpg"", ""View Image"")"
|
| 427 |
-
580,FLFO_004519B,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_004519B/image.jpg"", ""View Image"")"
|
| 428 |
-
581,FLFO_010734B,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_010734B/image.jpg"", ""View Image"")"
|
| 429 |
-
582,FLFO_006872A,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_006872A/image.jpg"", ""View Image"")"
|
| 430 |
-
583,FLFO_010415A,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_010415A/image.jpg"", ""View Image"")"
|
| 431 |
-
584,CU_0448,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0448/image.jpg"", ""View Image"")"
|
| 432 |
-
586,CU_0198pt,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0198pt/image.jpg"", ""View Image"")"
|
| 433 |
-
587,FLFO_010052B 2,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_010052B 2/image.jpg"", ""View Image"")"
|
| 434 |
-
588,FLFO_003180A,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_003180A/image.jpg"", ""View Image"")"
|
| 435 |
-
590,FLFO_002868B,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_002868B/image.jpg"", ""View Image"")"
|
| 436 |
-
591,FLFO_002676B,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_002676B/image.jpg"", ""View Image"")"
|
| 437 |
-
592,FLFO_010347A,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_010347A/image.jpg"", ""View Image"")"
|
| 438 |
-
593,FLFO_002743A,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_002743A/image.jpg"", ""View Image"")"
|
| 439 |
-
595,FLFO_004608,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_004608/image.jpg"", ""View Image"")"
|
| 440 |
-
596,FLFO_008564A,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_008564A/image.jpg"", ""View Image"")"
|
| 441 |
-
597,CU_0810,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0810/image.jpg"", ""View Image"")"
|
| 442 |
-
598,FLFO_011181,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_011181/image.jpg"", ""View Image"")"
|
| 443 |
-
599,FLFO_002709,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_002709/image.jpg"", ""View Image"")"
|
| 444 |
-
602,CU_0214,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0214/image.jpg"", ""View Image"")"
|
| 445 |
-
603,CU_0652,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0652/image.jpg"", ""View Image"")"
|
| 446 |
-
604,CU_0247,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0247/image.jpg"", ""View Image"")"
|
| 447 |
-
606,FLFO_004708A,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_004708A/image.jpg"", ""View Image"")"
|
| 448 |
-
607,FLFO_011520B,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_011520B/image.jpg"", ""View Image"")"
|
| 449 |
-
901,FLFO_003420A,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_003420A/image.jpg"", ""View Image"")"
|
| 450 |
-
902,CU_0387,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0387/image.jpg"", ""View Image"")"
|
| 451 |
-
903,FLFO_000095,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_000095/image.jpg"", ""View Image"")"
|
| 452 |
-
904,CU_0157,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0157/image.jpg"", ""View Image"")"
|
| 453 |
-
905,FLFO_002638A,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_002638A/image.jpg"", ""View Image"")"
|
| 454 |
-
910,CU_0753,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0753/image.jpg"", ""View Image"")"
|
| 455 |
-
911,CU_0770cu,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0770cu/image.jpg"", ""View Image"")"
|
| 456 |
-
913,FLFO_010519B,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_010519B/image.jpg"", ""View Image"")"
|
| 457 |
-
914,CU_0743cu1,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0743cu1/image.jpg"", ""View Image"")"
|
| 458 |
-
915,CU_0122cu,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0122cu/image.jpg"", ""View Image"")"
|
| 459 |
-
917,FLFO_002489B,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_002489B/image.jpg"", ""View Image"")"
|
| 460 |
-
919,FLFO_008977,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_008977/image.jpg"", ""View Image"")"
|
| 461 |
-
920,CU_0693cu,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0693cu/image.jpg"", ""View Image"")"
|
| 462 |
-
922,CU_0192cu2,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0192cu2/image.jpg"", ""View Image"")"
|
| 463 |
-
927,CU_0798,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0798/image.jpg"", ""View Image"")"
|
| 464 |
-
928,FLFO_002869A,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_002869A/image.jpg"", ""View Image"")"
|
| 465 |
-
929,FLFO_010973A,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_010973A/image.jpg"", ""View Image"")"
|
| 466 |
-
930,FLFO_006689,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_006689/image.jpg"", ""View Image"")"
|
| 467 |
-
931,CU_0779,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0779/image.jpg"", ""View Image"")"
|
| 468 |
-
932,CU_0489cu1,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0489cu1/image.jpg"", ""View Image"")"
|
| 469 |
-
934,FLFO_010429,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_010429/image.jpg"", ""View Image"")"
|
| 470 |
-
938,CU_0902,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0902/image.jpg"", ""View Image"")"
|
| 471 |
-
939,FLFO_010308A,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_010308A/image.jpg"", ""View Image"")"
|
| 472 |
-
940,FLFO_006939B,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_006939B/image.jpg"", ""View Image"")"
|
| 473 |
-
942,CU_0752cu,Not Sure,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/CU_0752cu/image.jpg"", ""View Image"")"
|
| 474 |
-
943,FLFO_005672A,Plausible,"=HYPERLINK(""https://storage.googleapis.com/serrelab/fossil_lens/inference_concepts2/FLFO_005672A/image.jpg"", ""View Image"")"
|
| 475 |
-
945,FLFO_009700,Plausible,
|
| 476 |
-
949,FLFO_011574A,Plausible,
|
| 477 |
-
950,FLFO_009028,Plausible,
|
| 478 |
-
952,FLFO_010695,Plausible,
|
| 479 |
-
953,FLFO_009252A,Plausible,
|
| 480 |
-
956,FLFO_006246A,Not Sure,
|
| 481 |
-
960,FLFO_004112A,Not Sure,
|
| 482 |
-
962,FLFO_011657,Plausible,
|
| 483 |
-
964,FLFO_002771A,Not Sure,
|
| 484 |
-
965,FLFO_002921A,Plausible,
|
| 485 |
-
966,FLFO_010948,Not Sure,
|
| 486 |
-
967,FLFO_002586A,Plausible,
|
| 487 |
-
968,FLFO_002894B,Plausible,
|
| 488 |
-
969,FLFO_005783A,Plausible,
|
| 489 |
-
970,FLFO_003622,Plausible,
|
| 490 |
-
972,FLFO_004839A,Not Sure,
|
| 491 |
-
973,FLFO_010064B,Not Sure,
|
| 492 |
-
977,FLFO_002664,Not Sure,
|
| 493 |
-
979,FLFO_008986,Not Sure,
|
| 494 |
-
983,FLFO_009702,Not Sure,
|
| 495 |
-
986,FLFO_000441,Plausible,
|
| 496 |
-
987,FLFO_004466A,Not Sure,
|
| 497 |
-
991,FLFO_010895B,Not Sure,
|
| 498 |
-
993,FLFO_002600,Plausible,
|
| 499 |
-
994,FLFO_008554A_L1,Not Sure,
|
| 500 |
-
995,FLFO_008889B,Not Sure,
|
| 501 |
-
996,FLFO_008992A,Plausible,
|
| 502 |
-
997,FLFO_010977,Not Sure,
|
| 503 |
-
998,FLFO_010689A,Not Sure,
|
| 504 |
-
999,FLFO_011679B,Not Sure,
|
| 505 |
-
1000,FLFO_005644,Not Sure,
|
| 506 |
-
1001,FLFO_009054A-2,Plausible,
|
| 507 |
-
1002,FLFO_005553A,Not Sure,
|
| 508 |
-
1006,FLFO_004860B,Plausible,
|
| 509 |
-
1009,FLFO_008887,Not Sure,
|
| 510 |
-
1012,FLFO_008541A,Plausible,
|
| 511 |
-
1015,FLFO_003134,Plausible,
|
| 512 |
-
1017,FLFO_010756A,Not Sure,
|
| 513 |
-
1018,FLFO_002988,Not Sure,
|
| 514 |
-
1021,FLFO_004904,Not Sure,
|
| 515 |
-
1025,FLFO_011662A,Plausible,
|
| 516 |
-
1027,FLFO_011134,Plausible,
|
| 517 |
-
1029,FLFO_006854B,Plausible,
|
| 518 |
-
1030,FLFO_002627A,Plausible,
|
| 519 |
-
1039,FLFO_004854,Not Sure,
|
| 520 |
-
1041,FLFO_009591A,Plausible,
|
| 521 |
-
1053,FLFO_011122A,Not Sure,
|
| 522 |
-
1054,FLFO_009267B,Not Sure,
|
| 523 |
-
1055,FLFO_004641B,Not Sure,
|
| 524 |
-
1057,FLFO_006700B,Not Sure,
|
| 525 |
-
1058,FLFO_007123A_L,Not Sure,
|
| 526 |
-
1059,FLFO_011185,Not Sure,
|
| 527 |
-
1062,FLFO_004563,Not Sure,
|
| 528 |
-
1063,CU_0549,Plausible,
|
| 529 |
-
1064,FLFO_003279A,Not Sure,
|
| 530 |
-
1070,FLFO_002691B,Not Sure,
|
| 531 |
-
1072,FLFO_004454,Not Sure,
|
| 532 |
-
1073,FLFO_003137A,Plausible,
|
| 533 |
-
1074,FLFO_010388A,Not Sure,
|
| 534 |
-
1076,FLFO_004353A,Not Sure,
|
| 535 |
-
1077,FLFO_006428 Petiole,Not Sure,
|
| 536 |
-
1078,FLFO_009607,Not Sure,
|
| 537 |
-
1080,FLFO_004635A,Not Sure,
|
| 538 |
-
1081,FLFO_002450,Not Sure,
|
| 539 |
-
1085,FLFO_004554B,Not Sure,
|
| 540 |
-
1088,FLFO_010375B,Plausible,
|
| 541 |
-
1089,CU_0530cpt,Plausible,
|
| 542 |
-
1093,FLFO_009077A,Plausible,
|
| 543 |
-
1096,FLFO_009043,Plausible,
|
| 544 |
-
1099,FLFO_010162,Not Sure,
|
| 545 |
-
1101,CU_0331cu,Not Sure,
|
| 546 |
-
1102,FLFO_011265B,Plausible,
|
| 547 |
-
1103,FLFO_008570B,Not Sure,
|
| 548 |
-
1106,FLFO_008554A_L2,Not Sure,
|
| 549 |
-
1107,FLFO_010820,Plausible,
|
| 550 |
-
1108,FLFO_002897A,Not Sure,
|
| 551 |
-
1109,FLFO_003345,Not Sure,
|
| 552 |
-
1111,FLFO_004560,Plausible,
|
| 553 |
-
1112,FLFO_008840,Plausible,
|
| 554 |
-
1113,FLFO_010211A,Plausible,
|
| 555 |
-
1115,FLFO_006949B,Not Sure,
|
| 556 |
-
1116,FLFO_010797,Plausible,
|
| 557 |
-
1118,FLFO_006144A,Not Sure,
|
| 558 |
-
1119,FLFO_010110,Not Sure,
|
| 559 |
-
1120,FLFO_010727B,Plausible,
|
| 560 |
-
1124,CU_0310-1,Plausible,
|
| 561 |
-
1125,FLFO_011612,Not Sure,
|
| 562 |
-
1127,FLFO_010140,Not Sure,
|
| 563 |
-
1129,FLFO_002631A,Not Sure,
|
| 564 |
-
1130,FLFO_010872A,Not Sure,
|
| 565 |
-
1132,FLFO_006373B,Not Sure,
|
| 566 |
-
1135,FLFO_010342B,Plausible,
|
| 567 |
-
1136,FLFO_005578A,Not Sure,
|
| 568 |
-
1137,FLFO_000530,Not Sure,
|
| 569 |
-
1139,FLFO_003228B,Not Sure,
|
| 570 |
-
1140,FLFO_008822B,Plausible,
|
| 571 |
-
1145,FLFO_011391A,Not Sure,
|
| 572 |
-
1146,FLFO_011373_L,Plausible,
|
| 573 |
-
1149,FLFO_010088A,Plausible,
|
| 574 |
-
1152,FLFO_009747B,Not Sure,
|
| 575 |
-
1155,FLFO_006296_L1,Plausible,
|
| 576 |
-
1156,FLFO_004363,Plausible,
|
| 577 |
-
1157,FLFO_010849B,Not Sure,
|
| 578 |
-
1158,FLFO_005645,Not Sure,
|
| 579 |
-
1159,FLFO_009063,Plausible,
|
| 580 |
-
1164,FLFO_004839B,Not Sure,
|
| 581 |
-
1165,FLFO_009150B,Plausible,
|
| 582 |
-
1167,FLFO_009033,Plausible,
|
| 583 |
-
1169,FLFO_004690,Not Sure,
|
| 584 |
-
1170,FLFO_006424B,Plausible,
|
| 585 |
-
1171,FLFO_008557A,Plausible,
|
| 586 |
-
1173,FLFO_009715A,Not Sure,
|
| 587 |
-
1174,FLFO_011320,Plausible,
|
| 588 |
-
1175,FLFO_006866A,Plausible,
|
| 589 |
-
1176,FLFO_003339A,Not Sure,
|
| 590 |
-
1178,FLFO_011575B,Plausible,
|
| 591 |
-
1180,FLFO_003593A,Not Sure,
|
| 592 |
-
1182,FLFO_010953,Not Sure,
|
| 593 |
-
1183,FLFO_003811,Not Sure,
|
| 594 |
-
1185,FLFO_011463,Not Sure,
|
| 595 |
-
1189,FLFO_011501B,Plausible,
|
| 596 |
-
1190,FLFO_010942,Plausible,
|
| 597 |
-
1192,FLFO_000529,Not Sure,
|
| 598 |
-
1193,FLFO_002892A,Not Sure,
|
| 599 |
-
1196,FLFO_004931,Plausible,
|
| 600 |
-
1198,FLFO_008554B,Not Sure,
|
| 601 |
-
1199,FLFO_006120B,Not Sure,
|
| 602 |
-
1200,FLFO_002626B,Not Sure,
|
| 603 |
-
1201,FLFO_006726B,Not Sure,
|
| 604 |
-
1202,FLFO_003302,Not Sure,
|
| 605 |
-
1203,FLFO_006369B,Not Sure,
|
| 606 |
-
1205,FLFO_010740A,Not Sure,
|
| 607 |
-
1206,FLFO_010210B,Not Sure,
|
| 608 |
-
1207,FLFO_011200A,Not Sure,
|
| 609 |
-
1208,FLFO_010022A,Not Sure,
|
| 610 |
-
1210,FLFO_011120B,Not Sure,
|
| 611 |
-
1211,CU_0584,Not Sure,
|
| 612 |
-
1212,FLFO_004401,Not Sure,
|
| 613 |
-
1213,FLFO_010277B,Plausible,
|
| 614 |
-
1214,FLFO_004822,Not Sure,
|
| 615 |
-
1216,FLFO_011046B,Plausible,
|
| 616 |
-
1217,FLFO_010594,Plausible,
|
| 617 |
-
1218,FLFO_011152A,Not Sure,
|
| 618 |
-
1220,FLFO_004765A,Plausible,
|
| 619 |
-
1221,FLFO_009074,Not Sure,
|
| 620 |
-
1222,FLFO_009017,Not Sure,
|
| 621 |
-
1226,FLFO_002873A,Plausible,
|
| 622 |
-
1228,CU_1370,Not Sure,
|
| 623 |
-
1230,FLFO_002467B,Not Sure,
|
| 624 |
-
1231,FLFO_004242,Not Sure,
|
| 625 |
-
1236,FLFO_003412A,Plausible,
|
| 626 |
-
1237,FLFO_011360A,Not Sure,
|
| 627 |
-
1239,FLFO_009689,Not Sure,
|
| 628 |
-
1240,FLFO_011387,Not Sure,
|
| 629 |
-
1243,FLFO_011558,Not Sure,
|
| 630 |
-
1244,FLFO_004126B,Not Sure,
|
| 631 |
-
1245,FLFO_006296,Plausible,
|
| 632 |
-
1246,FLFO_011170,Not Sure,
|
| 633 |
-
1247,FLFO_010548B,Not Sure,
|
| 634 |
-
1248,FLFO_011037B,Not Sure,
|
| 635 |
-
1253,FLFO_010740B,Plausible,
|
| 636 |
-
1254,FLFO_010870A,Not Sure,
|
| 637 |
-
1257,FLFO_011004,Not Sure,
|
| 638 |
-
1258,FLFO_004671,Not Sure,
|
| 639 |
-
1259,FLFO_004334B,Plausible,
|
| 640 |
-
1260,FLFO_000440,Plausible,
|
| 641 |
-
1263,FLFO_000842,Not Sure,
|
| 642 |
-
1264,FLFO_003308,Not Sure,
|
| 643 |
-
1268,CU_0677cu,Not Sure,
|
| 644 |
-
1272,FLFO_004900,Not Sure,
|
| 645 |
-
1274,FLFO_009139_1,Plausible,
|
| 646 |
-
1275,FLFO_011046A,Plausible,
|
| 647 |
-
1276,FLFO_010720A,Not Sure,
|
| 648 |
-
1277,CU_0581,Not Sure,
|
| 649 |
-
1283,FLFO_010552A,Not Sure,
|
| 650 |
-
1284,FLFO_003235,Not Sure,
|
| 651 |
-
1285,FLFO_003248,Not Sure,
|
| 652 |
-
1287,FLFO_000536,Plausible,
|
| 653 |
-
1290,CU_0582,Not Sure,
|
| 654 |
-
1292,FLFO_009370,Not Sure,
|
| 655 |
-
1294,FLFO_008604B,Not Sure,
|
| 656 |
-
1296,FLFO_010591B,Not Sure,
|
| 657 |
-
1297,FLFO_004719A,Not Sure,
|
| 658 |
-
1298,FLFO_009697,Plausible,
|
| 659 |
-
1299,FLFO_002718,Plausible,
|
| 660 |
-
1301,FLFO_005647B,Plausible,
|
| 661 |
-
1302,FLFO_010088B,Plausible,
|
| 662 |
-
1304,FLFO_008991B,Plausible,
|
| 663 |
-
1305,FLFO_010548A,Not Sure,
|
| 664 |
-
1307,FLFO_011363,Plausible,
|
| 665 |
-
1309,FLFO_010095,Plausible,
|
| 666 |
-
1310,FLFO_010208,Plausible,
|
| 667 |
-
1316,FLFO_006956,Plausible,
|
| 668 |
-
1317,FLFO_008526A,Not Sure,
|
| 669 |
-
1318,CU_0296cptcu,Plausible,
|
| 670 |
-
1320,FLFO_011516A,Not Sure,
|
| 671 |
-
1322,FLFO_004112B,Plausible,
|
| 672 |
-
1324,FLFO_006361B,Not Sure,
|
| 673 |
-
1326,FLFO_008503B,Not Sure,
|
| 674 |
-
1329,FLFO_010342A_L2,Not Sure,
|
| 675 |
-
1330,FLFO_006648,Plausible,
|
| 676 |
-
1331,FLFO_002803A,Not Sure,
|
| 677 |
-
1332,FLFO_004278A,Plausible,
|
| 678 |
-
1334,FLFO_009979,Not Sure,
|
| 679 |
-
1335,FLFO_006152,Not Sure,
|
| 680 |
-
1338,FLFO_006176,Not Sure,
|
| 681 |
-
1339,FLFO_006861B,Not Sure,
|
| 682 |
-
1340,FLFO_002669,Not Sure,
|
| 683 |
-
1341,FLFO_003759,Not Sure,
|
| 684 |
-
1342,FLFO_008503A,Not Sure,
|
| 685 |
-
1346,FLFO_003287B,Plausible,
|
| 686 |
-
1347,FLFO_002866A,Plausible,
|
| 687 |
-
1349,CU_0320,Plausible,
|
| 688 |
-
1350,FLFO_003279B,Plausible,
|
| 689 |
-
1352,FLFO_002828,Plausible,
|
| 690 |
-
1354,FLFO_002768B,Not Sure,
|
| 691 |
-
1355,FLFO_009676,Plausible,
|
| 692 |
-
1361,FLFO_002940,Plausible,
|
| 693 |
-
1362,FLFO_010064A,Plausible,
|
| 694 |
-
1363,FLFO_008557B,Not Sure,
|
| 695 |
-
1364,FLFO_002724,Plausible,
|
| 696 |
-
1368,FLFO_011681,Not Sure,
|
| 697 |
-
1369,FLFO_006627,Plausible,
|
| 698 |
-
1370,FLFO_002739B,Plausible,
|
| 699 |
-
1372,FLFO_005710A,Not Sure,
|
| 700 |
-
1373,FLFO_010401A,Plausible,
|
| 701 |
-
1374,FLFO_009054B,Plausible,
|
| 702 |
-
1376,CU_0583,Not Sure,
|
| 703 |
-
1378,FLFO_008992B,Not Sure,
|
| 704 |
-
1381,FLFO_011107B,Not Sure,
|
| 705 |
-
1383,FLFO_005647A,Plausible,
|
| 706 |
-
1384,FLFO_006092B,Not Sure,
|
| 707 |
-
1385,FLFO_009594B,Plausible,
|
| 708 |
-
1387,FLFO_002439,Plausible,
|
| 709 |
-
1388,FLFO_010077B,Not Sure,
|
| 710 |
-
1391,FLFO_002602,Plausible,
|
| 711 |
-
1392,FLFO_009137B,Plausible,
|
| 712 |
-
1393,FLFO_008982B,Not Sure,
|
| 713 |
-
1394,FLFO_004835B,Plausible,
|
| 714 |
-
1395,FLFO_006142,Not Sure,
|
| 715 |
-
1396,FLFO_004615,Not Sure,
|
| 716 |
-
1397,FLFO_002583,Plausible,
|
| 717 |
-
1398,FLFO_002892B,Not Sure,
|
| 718 |
-
1399,FLFO_011050B_L2,Plausible,
|
| 719 |
-
1400,CU_0531cu1,Plausible,
|
| 720 |
-
1401,FLFO_002627B,Plausible,
|
| 721 |
-
1405,FLFO_010136,Not Sure,
|
| 722 |
-
1406,FLFO_010800B,Plausible,
|
| 723 |
-
1407,FLFO_006159_L2,Plausible,
|
| 724 |
-
1409,FLFO_009283,Plausible,
|
| 725 |
-
1412,FLFO_000838,Plausible,
|
| 726 |
-
1413,FLFO_009151B,Not Sure,
|
| 727 |
-
1416,FLFO_000523 2,Not Sure,
|
| 728 |
-
1417,FLFO_010076A,Not Sure,
|
| 729 |
-
1418,FLFO_011172,Plausible,
|
| 730 |
-
1420,FLFO_006846A,Plausible,
|
| 731 |
-
1424,FLFO_011201_2,Plausible,
|
| 732 |
-
1425,FLFO_010756B,Not Sure,
|
| 733 |
-
1427,FLFO_009050,Plausible,
|
| 734 |
-
1428,FLFO_010470B,Not Sure,
|
| 735 |
-
1429,FLFO_004340A,Not Sure,
|
| 736 |
-
1431,FLFO_009073,Plausible,
|
| 737 |
-
1433,FLFO_003412B,Plausible,
|
| 738 |
-
1435,FLFO_010211B,Not Sure,
|
| 739 |
-
1437,FLFO_010919B,Not Sure,
|
| 740 |
-
1438,FLFO_009079,Plausible,
|
| 741 |
-
1442,FLFO_004870,Plausible,
|
| 742 |
-
1444,FLFO_004852,Not Sure,
|
| 743 |
-
1445,FLFO_004350A,Not Sure,
|
| 744 |
-
1450,FLFO_006129,Plausible,
|
| 745 |
-
1453,FLFO_011002A,Not Sure,
|
| 746 |
-
1455,FLFO_006339,Plausible,
|
| 747 |
-
1456,FLFO_010180B,Plausible,
|
| 748 |
-
1460,FLFO_003414,Plausible,
|
| 749 |
-
1461,FLFO_001051,Plausible,
|
| 750 |
-
1462,FLFO_009591B,Plausible,
|
| 751 |
-
1463,CU_1362,Plausible,
|
| 752 |
-
1464,FLFO_010063B,Plausible,
|
| 753 |
-
1467,FLFO_002625A,Plausible,
|
| 754 |
-
1468,FLFO_004679A,Plausible,
|
| 755 |
-
1469,FLFO_005669B,Plausible,
|
| 756 |
-
1471,FLFO_0011648_1,Plausible,
|
| 757 |
-
1474,FLFO_003339B,Plausible,
|
| 758 |
-
1475,FLFO_000848,Not Sure,
|
| 759 |
-
1477,FLFO_000850,Plausible,
|
| 760 |
-
1478,FLFO_002390,Not Sure,
|
| 761 |
-
1483,FLFO_009833B,Plausible,
|
| 762 |
-
1487,FLFO_009372A,Plausible,
|
| 763 |
-
1488,FLFO_011128,Plausible,
|
| 764 |
-
1489,FLFO_009051B,Plausible,
|
| 765 |
-
1490,FLFO_008583B,Plausible,
|
| 766 |
-
1493,FLFO_003775,Plausible,
|
| 767 |
-
1500,FLFO_004864,Not Sure,
|
| 768 |
-
1501,FLFO_002698A,Plausible,
|
| 769 |
-
1502,FLFO_009715B,Plausible,
|
| 770 |
-
1503,FLFO_002467A,Plausible,
|
| 771 |
-
1505,FLFO_004778B,Plausible,
|
| 772 |
-
1509,FLFO_010209B,Plausible,
|
| 773 |
-
1510,FLFO_010947,Plausible,
|
| 774 |
-
1512,FLFO_011391B,Not Sure,
|
| 775 |
-
1513,FLFO_010552B,Not Sure,
|
| 776 |
-
1515,FLFO_008577A,Plausible,
|
| 777 |
-
1517,FLFO_004334A,Not Sure,
|
| 778 |
-
1518,CU_0123cu,Not Sure,
|
| 779 |
-
1520,FLFO_004776,Plausible,
|
| 780 |
-
1528,CU_0532,Plausible,
|
| 781 |
-
1534,FLFO_005646A,Plausible,
|
| 782 |
-
1535,CU_0331,Not Sure,
|
| 783 |
-
1536,FLFO_006421B,Plausible,
|
| 784 |
-
1538,FLFO_009256B,Not Sure,
|
| 785 |
-
1539,FLFO_009038,Plausible,
|
| 786 |
-
1542,FLFO_010361A,Not Sure,
|
| 787 |
-
1543,FLFO_009150A,Plausible,
|
| 788 |
-
1544,FLFO_003445B,Not Sure,
|
| 789 |
-
1546,FLFO_008983B,Not Sure,
|
| 790 |
-
1547,FLFO_011236_L,Plausible,
|
| 791 |
-
1548,FLFO_010206A,Not Sure,
|
| 792 |
-
1549,FLFO_009706A,Not Sure,
|
| 793 |
-
1551,FLFO_000522,Not Sure,
|
| 794 |
-
1552,FLFO_011037A,Not Sure,
|
| 795 |
-
1553,FLFO_011352B,Not Sure,
|
| 796 |
-
1554,FLFO_006695B,Not Sure,
|
| 797 |
-
1555,FLFO_010209A,Not Sure,
|
| 798 |
-
1556,FLFO_008541B,Plausible,
|
| 799 |
-
1557,FLFO_008876_L,Not Sure,
|
| 800 |
-
1558,FLFO_006699A,Plausible,
|
| 801 |
-
1559,FLFO_009315B,Plausible,
|
| 802 |
-
1561,FLFO_004781,Not Sure,
|
| 803 |
-
1562,FLFO_002625B,Not Sure,
|
| 804 |
-
1563,FLFO_002679B,Not Sure,
|
| 805 |
-
1566,FLFO_008961,Not Sure,
|
| 806 |
-
1567,FLFO_006144B,Not Sure,
|
| 807 |
-
1568,FLFO_011509,Not Sure,
|
| 808 |
-
1571,FLFO_010710A,Not Sure,
|
| 809 |
-
1572,FLFO_006339 copy,Plausible,
|
| 810 |
-
1575,FLFO_010218A,Plausible,
|
| 811 |
-
1576,FLFO_002694A,Not Sure,
|
| 812 |
-
1578,FLFO_011473,Plausible,
|
| 813 |
-
1579,CU_0546cu,Plausible,
|
| 814 |
-
1584,CU_0583cu,Plausible,
|
| 815 |
-
1585,FLFO_002458,Plausible,
|
| 816 |
-
1588,FLFO_002609A,Plausible,
|
| 817 |
-
1591,FLFO_003466A,Not Sure,
|
| 818 |
-
1594,FLFO_009023,Plausible,
|
| 819 |
-
1595,FLFO_006876B,Not Sure,
|
| 820 |
-
1599,FLFO_006369A,Not Sure,
|
| 821 |
-
1602,FLFO_010958B,Not Sure,
|
| 822 |
-
1603,FLFO_006428,Not Sure,
|
| 823 |
-
1604,FLFO_011575A,Not Sure,
|
| 824 |
-
1605,FLFO_004719B,Not Sure,
|
| 825 |
-
1606,FLFO_009016,Plausible,
|
| 826 |
-
1611,FLFO_008554B_L2,Not Sure,
|
| 827 |
-
1612,FLFO_008723,Plausible,
|
| 828 |
-
1613,FLFO_009069,Plausible,
|
| 829 |
-
1616,FLFO_010216,Plausible,
|
| 830 |
-
1617,FLFO_0011648,Not Sure,
|
| 831 |
-
1619,FLFO_009152,Plausible,
|
| 832 |
-
1632,FLFO_010470A,Not Sure,
|
| 833 |
-
1633,FLFO_009071,Not Sure,
|
| 834 |
-
1636,CU_0518,Plausible,
|
| 835 |
-
1640,FLFO_002894A,Plausible,
|
| 836 |
-
1644,FLFO_009057,Plausible,
|
| 837 |
-
1645,FLFO_009078,Plausible,
|
| 838 |
-
1647,FLFO_005690B,Not Sure,
|
| 839 |
-
1649,FLFO_009042,Plausible,
|
| 840 |
-
1651,FLFO_011174,Not Sure,
|
| 841 |
-
1655,FLFO_009012,Not Sure,
|
| 842 |
-
1658,FLFO_010895A,Not Sure,
|
| 843 |
-
1659,FLFO_008821B,Not Sure,
|
| 844 |
-
1660,FLFO_010640A,Not Sure,
|
| 845 |
-
1661,FLFO_010093B,Not Sure,
|
| 846 |
-
1665,FLFO_003771A,Not Sure,
|
| 847 |
-
1666,FLFO_006861A,Not Sure,
|
| 848 |
-
1667,FLFO_000844,Plausible,
|
| 849 |
-
1668,FLFO_009052B,Plausible,
|
| 850 |
-
1672,FLFO_009983,Not Sure,
|
| 851 |
-
1673,FLFO_008775,Plausible,
|
| 852 |
-
1675,FLFO_004624,Plausible,
|
| 853 |
-
1676,FLFO_011161A,Plausible,
|
| 854 |
-
1684,FLFO_011124B,Plausible,
|
| 855 |
-
1686,FLFO_010361B,Not Sure,
|
| 856 |
-
1689,FLFO_008888,Not Sure,
|
| 857 |
-
1690,FLFO_004847A,Not Sure,
|
| 858 |
-
1695,FLFO_010771A,Not Sure,
|
| 859 |
-
1698,CU_0310,Not Sure,
|
| 860 |
-
1699,FLFO_006373A,Not Sure,
|
| 861 |
-
1703,FLFO_010884,Not Sure,
|
| 862 |
-
1704,FLFO_003395B,Not Sure,
|
| 863 |
-
1708,FLFO_004819,Plausible,
|
| 864 |
-
1709,CU_0546,Plausible,
|
| 865 |
-
1711,FLFO_004337A,Not Sure,
|
| 866 |
-
1717,FLFO_009130B,Plausible,
|
| 867 |
-
1718,FLFO_002739A,Plausible,
|
| 868 |
-
1722,FLFO_003294A,Plausible,
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fossils_paths.csv
DELETED
|
The diff for this file is too large to render.
See raw diff
|
|
|
recompute_embeddings_2024.py
ADDED
|
@@ -0,0 +1,100 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import os
|
| 2 |
+
from typing import List
|
| 3 |
+
|
| 4 |
+
import numpy as np
|
| 5 |
+
from PIL import Image
|
| 6 |
+
|
| 7 |
+
from app import get_model
|
| 8 |
+
from inference_resnet_v2 import inference_resnet_embedding_v2
|
| 9 |
+
|
| 10 |
+
|
| 11 |
+
# Base directory containing 2024 data.
|
| 12 |
+
BASE_DIR = "/Users/pipe/Documents/Brown/Fossils/2024"
|
| 13 |
+
|
| 14 |
+
# Subfolders to use for fossil similarity embeddings (fossils path).
|
| 15 |
+
FOSSIL_ROOTS = [
|
| 16 |
+
os.path.join(BASE_DIR, "Florissant_Fossil_v2.0"),
|
| 17 |
+
os.path.join(BASE_DIR, "General_Fossil_v2.0"),
|
| 18 |
+
]
|
| 19 |
+
|
| 20 |
+
# Output locations (relative to fossil_app/ when run from there).
|
| 21 |
+
EMBEDDINGS_NPY = os.path.join("dataset", "embedding_fossils_142_2024_fossils.npy")
|
| 22 |
+
PATHS_TXT = os.path.join("dataset", "embedding_fossils_142_2024_fossils_paths.txt")
|
| 23 |
+
|
| 24 |
+
|
| 25 |
+
def iter_image_paths(roots: List[str]) -> List[str]:
|
| 26 |
+
"""Collect all image paths under the given roots."""
|
| 27 |
+
exts = (".jpg", ".jpeg", ".png", ".webp")
|
| 28 |
+
paths: List[str] = []
|
| 29 |
+
for root in roots:
|
| 30 |
+
if not os.path.isdir(root):
|
| 31 |
+
print(f"WARNING: root directory not found: {root}")
|
| 32 |
+
continue
|
| 33 |
+
for dirpath, _, filenames in os.walk(root):
|
| 34 |
+
for fn in filenames:
|
| 35 |
+
if not fn.lower().endswith(exts):
|
| 36 |
+
continue
|
| 37 |
+
|
| 38 |
+
stem, _ = os.path.splitext(fn)
|
| 39 |
+
stem_lower = stem.lower()
|
| 40 |
+
|
| 41 |
+
# Skip "unidentified" and "II." IDs if they appear
|
| 42 |
+
if stem_lower.startswith("unidentified") or stem.startswith("II."):
|
| 43 |
+
print(f"SKIP (unidentified / II.* ID): {os.path.join(dirpath, fn)}")
|
| 44 |
+
continue
|
| 45 |
+
|
| 46 |
+
# We are already scoping to Extant_Leaves via FOSSIL_ROOTS,
|
| 47 |
+
# so we accept all remaining JPG/PNG/WEBP files here.
|
| 48 |
+
paths.append(os.path.join(dirpath, fn))
|
| 49 |
+
return sorted(paths)
|
| 50 |
+
|
| 51 |
+
|
| 52 |
+
def load_image_rgb(path: str) -> np.ndarray:
|
| 53 |
+
"""Load an image from disk as RGB numpy array."""
|
| 54 |
+
img = Image.open(path).convert("RGB")
|
| 55 |
+
return np.array(img, dtype=np.uint8)
|
| 56 |
+
|
| 57 |
+
|
| 58 |
+
def main() -> None:
|
| 59 |
+
os.makedirs(os.path.dirname(EMBEDDINGS_NPY), exist_ok=True)
|
| 60 |
+
|
| 61 |
+
# Load the latest Fossils 142 model via the same helper the app uses.
|
| 62 |
+
model, n_classes = get_model("Fossils 142")
|
| 63 |
+
print(f"Loaded model for 'Fossils 142' with {n_classes} classes.")
|
| 64 |
+
|
| 65 |
+
image_paths = iter_image_paths(FOSSIL_ROOTS)
|
| 66 |
+
print(f"Found {len(image_paths)} images under {BASE_DIR}.")
|
| 67 |
+
if not image_paths:
|
| 68 |
+
print("No images found. Check BASE_DIR and FOSSIL_ROOTS paths.")
|
| 69 |
+
return
|
| 70 |
+
|
| 71 |
+
embeddings: List[np.ndarray] = []
|
| 72 |
+
|
| 73 |
+
# Open path mapping file for reproducibility.
|
| 74 |
+
with open(PATHS_TXT, "w", encoding="utf-8") as f_paths:
|
| 75 |
+
for idx, path in enumerate(image_paths):
|
| 76 |
+
if idx % 100 == 0:
|
| 77 |
+
print(f"[{idx}/{len(image_paths)}] Processing {path}")
|
| 78 |
+
try:
|
| 79 |
+
img = load_image_rgb(path)
|
| 80 |
+
emb = inference_resnet_embedding_v2(
|
| 81 |
+
img, model, size=384, n_classes=n_classes
|
| 82 |
+
)
|
| 83 |
+
embeddings.append(emb.astype(np.float32))
|
| 84 |
+
f_paths.write(path + "\n")
|
| 85 |
+
except Exception as e:
|
| 86 |
+
print(f"ERROR processing {path}: {e}")
|
| 87 |
+
|
| 88 |
+
if not embeddings:
|
| 89 |
+
print("No embeddings were computed.")
|
| 90 |
+
return
|
| 91 |
+
|
| 92 |
+
embs_arr = np.stack(embeddings, axis=0)
|
| 93 |
+
np.save(EMBEDDINGS_NPY, embs_arr)
|
| 94 |
+
print(f"Saved embeddings array {embs_arr.shape} to {EMBEDDINGS_NPY}")
|
| 95 |
+
print(f"Saved path list to {PATHS_TXT}")
|
| 96 |
+
|
| 97 |
+
|
| 98 |
+
if __name__ == "__main__":
|
| 99 |
+
main()
|
| 100 |
+
|